利用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 ...