pandas基础(part5)--透视表与交叉表
生活随笔
收集整理的這篇文章主要介紹了
pandas基础(part5)--透视表与交叉表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
學習筆記,這個筆記以例子為主。
開發工具:Spyder
文章目錄
- Pandas透視表
- Pandas交叉表
Pandas透視表
透視表(pivot table)是各種電子表格程序和其他數據分析軟件中一種常見的數據匯總工具。它根據一個或多個鍵對數據進行分組聚合,并對每個分組進行數據匯總。
- 語法
接下來,我們用幾個例子來學習如何用pandas來制作想要的數據透視表。
首先,我們來康康接下來幾個例子所要使用的數據:
代碼:
import pandas as pdleftD = {'name':['Ada', 'Tom','Black', 'Jack', 'Lee', 'Yellow', 'Blue', 'Peter', 'Green', 'Trump'],'age':[9, 9, 10, 10, 10, 10, 8, 9, 7, 8],'weight':[8, 4, 5, 6, 10, 10, 4, 5, 4, 8],'gender':['M', 'F', 'M', 'M', 'M', 'F', 'M', 'M', 'M', 'F'],'Bunny_id':[1, 2, 3, 4, 2, 4, 3, 1, 4, 5]}rightD = {'Bunny_id':[1, 2, 3, 4, 5],'foods':['A', 'B', 'C', 'D', 'E']}df_leftD = pd.DataFrame(leftD) df_rightD = pd.DataFrame(rightD)df = pd.merge(df_leftD, df_rightD, how = 'outer') print(df)數據:
Bunny_id age gender name weight foods 0 1 9 M Ada 8 A 1 1 9 M Peter 5 A 2 2 9 F Tom 4 B 3 2 10 M Lee 10 B 4 3 10 M Black 5 C 5 3 8 M Blue 4 C 6 4 10 M Jack 6 D 7 4 10 F Yellow 10 D 8 4 7 M Green 4 D 9 5 8 F Trump 8 E- 例子1
代碼:
#以Bunny_id做分組匯總數據,默認統計所有列的均值 print(df.pivot_table(index=['Bunny_id']))結果:
age weight Bunny_id 1 9.0 6.500000 2 9.5 7.000000 3 9.0 4.500000 4 9.0 6.666667 5 8.0 8.000000由結果可知,由于除了Bunny_id這個變量以外,只有age和weight為數值型變量,故pandas計算了age和weight的均值。
- 例子2
代碼:
#以Bunny_id與gender做分組匯總數據,默認統計所有列的最大值 print(df.pivot_table(index=['Bunny_id', 'gender'], aggfunc='max'))結果:
age foods name weight Bunny_id gender 1 M 9 A Peter 8 2 F 9 B Tom 4M 10 B Lee 10 3 M 10 C Blue 5 4 F 10 D Yellow 10M 10 D Jack 6 5 F 8 E Trump 8由結果可知,pandas先按照Bunny_id進行分組,再按照gender進行分組。最后對分組結果,分別計算age、foods、name、weight的最大值。
- 例子3
代碼:
#以Bunny_id與gender做分組匯總數據,統計age列的均值 print(df.pivot_table(index=['Bunny_id', 'gender'], values=['age']))結果:
age Bunny_id gender 1 M 9.0 2 F 9.0M 10.0 3 M 9.0 4 F 10.0M 8.5 5 F 8.0由結果可知,pandas先對Bunny_id和gender進行分組,并只顯示age的分組平均值。
- 例子4
代碼:
#以Bunny_id與gender做分組匯總數據,針對weight的每個值列級分組,統計age列的均值。 print(df.pivot_table(index=['Bunny_id', 'gender'], values=['age'], columns=['weight']))結果;
age weight 4 5 6 8 10 Bunny_id gender 1 M NaN 9.0 NaN 9.0 NaN 2 F 9.0 NaN NaN NaN NaNM NaN NaN NaN NaN 10.0 3 M 8.0 10.0 NaN NaN NaN 4 F NaN NaN NaN NaN 10.0M 7.0 NaN 10.0 NaN NaN 5 F NaN NaN NaN 8.0 NaN由結果可知,Bunny_id和gender的組合作為行,weight作為列,共同構造了二維表,表中值為每個分組中age的平均值,如果對應分組沒有值,則該位置用NaN代替。
Pandas交叉表
交叉表(cross-tabulation, 簡稱crosstab)是一種用于計算分組頻率的特殊透視表
- 語法
- 例子(接上面透視表案例中的數據)
代碼:
print(pd.crosstab(df.gender, df.foods))結果:
foods A B C D E gender F 0 1 0 1 1 M 2 1 2 2 0總結
以上是生活随笔為你收集整理的pandas基础(part5)--透视表与交叉表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这哪是NBA球场!简直就是黑科技实验室啊
- 下一篇: flash铅笔工具如何使用