pandas 交叉表與透視表

2021-09-24 14:25:24 字數 3066 閱讀 4038

利用pivot_table函式可以實現透視表,pivot_table()函式的常用引數及其使用格式如下。

pands.pivot_table(data, values=none, index=none, columns=none, aggfunc='mean',fill_value=none, margins=false, dropna=true, margins_name=ca

引數名稱

說明data

接收dataframe。表示建立表的資料。無缺省。

values

接收字串。用於指定想要聚合的資料欄位名,預設使用全部資料。預設為none。

index

接收string或list。表示行分組鍵。預設為none。

columns

接收string或list。表示列分組鍵。預設為none。

aggfunc

接收functions。表示聚合函式。預設為mean。

margins

接收boolearn。表示彙總(total)功能的開關,設為true後結果集中會出現名為「all」的行

和列。預設為true

dropna

接收boolearn。表示是否刪掉全為nan的列。預設為false

pivot_table函式主要的引數調節

在不特殊指定聚合函式aggfunc時,會預設使用numpy.mean進行聚合運算,numpy.mean會自動過濾

掉非數值型別資料。可以通過指定aggfunc引數修改聚合函式。

和groupby方法分組的時候相同,pivot_table函式在建立透視表的時候分組鍵index可以有多個。

通過設定columns引數可以指定列分組。

當全部資料列數很多時,若只想要顯示某列,可以通過指定values引數來實現。

當某些資料不存在時,會自動填充nan,因此可以指定fill_value引數,表示當存在缺失值時,以指定數

值進行填充。

可以更改margins引數,檢視彙總資料。

crosstab函式

交叉表是一種特殊的透視表,主要用於計算分組頻率。利用pandas提供的crosstab函式可以製作交叉表,

crosstab函式的常用引數和使用格式如下。

ø 由於交叉表是透視表的一種,其引數基本保持一致,不同之處在於crosstab函式中的index,columns,

values填入的都是對應的從dataframe中取出的某一列。

pandas.crosstab(index, columns, values=none, rownames=none, colnames=none,

aggfunc=none, margins=false, dropna=true, normalize=false)

crosstab的常用引數及其說明

引數名稱

說明index

接收string或list。表示行索引鍵。無缺省。

columns

接收string或list。表示列索引鍵。無缺省

values

接收array。表示聚合資料。預設為none

aggfunc

接收function。表示聚合函式。預設為none。

rownames

表示行分組鍵名。無缺省。

colnames

表示列分組鍵名。無缺省

dropna

接收boolearn。表示是否刪掉全為nan的。預設為false。

margins

接收boolearn。預設為true。彙總(total)功能的開關,設為true

後結果集中會出現名為「all」的行和列。

normalize

接收boolearn。表示是否對值進行標準化。預設為false

import pandas as pd

import numpy as np

detail = pd.read_excel('./meal_order_detail.xlsx')

###data 用於建立表的資料

data = detail[['order_id', 'dishes_id', 'dishes_name', 'counts', 'amounts']]

##data 用於建立表的資料

# values 關心的資料,用於統計分析的資料

# index 按照這個進行 行分組

# aggfunc ----->可以指定統計函式

# fill_value----->可以指定空值填充型別

# margins----->每統計完一次,行的統計和

###按照order_id 進行 行分組,統計amounts 和counts的均值

res= pd.pivot_table(data,values=['amounts','counts'],index='order_id')

print(res)

###按照dishes_name 進行列分組,統計amounts 和counts的均值

res = pd.pivot_table(data, values=['amounts', 'counts'], columns='dishes_name', aggfunc='max')

print(res)

###按照dishes_name 進行列分組,按照order_id 進行 行分組 ,統計amounts 和counts的均值

res = pd.pivot_table(data, values=['amounts', 'counts'], columns='dishes_name', index='order_id', fill_value=0)

print(res)

###建立交叉表

###必須指定 index,columns,values,aggfunc

##可以只傳行和列,用於統計兩列資料的頻率

res = pd.crosstab(index=detail['order_id'],columns=detail['amounts'],dropna=true,margins=true)

print(res)

Pandas透視表和交叉表

透視表 透視表 pivot table 是各種電子 程式和其他資料分析軟體中一種常見的資料彙總工具。它根據乙個或多個鍵對資料進行聚合,並根據行和列上得分組建將資料分配到各個矩形區域中。在python和pandas中,可以通過本章所介紹的groupby功能以及 能夠利用層次化索引的 重塑運算製作透視表...

pandas基礎 part5 透視表與交叉表

學習筆記,這個筆記以例子為主。開發工具 spyder 透視表 pivot table 是各種電子 程式和其他資料分析軟體中一種常見的資料彙總工具。它根據乙個或多個鍵對資料進行分組聚合,並對每個分組進行資料彙總。以a與b做分組彙總資料,針對d的每個值列級分組統計,統計每個分組下c列的最大值,並新增行 ...

pandas 資料透視表

import numpy as np import pandas as pd df pd.dataframe dfout 38 a b c d e 0 foo one small 1 2 1 foo one large 2 4 2 foo one large 2 5 3 foo two small ...