一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

pandas pivot

 北方的白樺林 2018-12-23

pandas pivot_table 活學(xué)活用實例教程

導(dǎo)入相關(guān)數(shù)據(jù)分析的庫

import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport time
df=pd.read_excel('all_data_meituan.xlsx')df=df[['commentTime','menu','readCnt','star','userId','userLevel','zanCnt']].dropna()# 這里去掉缺失值,因為后面的透視表中的處理都是直接去除缺失值(dropna=True),這邊我們先處理掉,以免與后面的結(jié)果發(fā)生了矛盾,還要分析問題在哪里。df.head() # 看出前5行
commentTime menu readCnt star userId userLevel zanCnt
0 1525875708515 單人午晚餐 25434 40 291754497 1 2
1 1527853291658 2人午晚餐 7293 40 829297130 2 0
2 1522813943711 2人午晚餐 31787 50 38217090 4 2
3 1525165942926 單人午晚餐 10334 20 67726205 5 1
4 1526546884897 單人午晚餐 5658 30 93974894 3 0

首先進行commentTime時間進行數(shù)據(jù)預(yù)處理

def convertTime(x): y=time.localtime(x/1000) z=time.strftime('%Y-%m-%d %H:%M:%S',y) return zdf['commentTime']=df['commentTime'].apply(convertTime)df.head()
commentTime menu readCnt star userId userLevel zanCnt
0 2018-05-09 22:21:48 單人午晚餐 25434 40 291754497 1 2
1 2018-06-01 19:41:31 2人午晚餐 7293 40 829297130 2 0
2 2018-04-04 11:52:23 2人午晚餐 31787 50 38217090 4 2
3 2018-05-01 17:12:22 單人午晚餐 10334 20 67726205 5 1
4 2018-05-17 16:48:04 單人午晚餐 5658 30 93974894 3 0

查看數(shù)據(jù)類型信息

df.info()
class 'pandas.core.frame.DataFrame'>Int64Index: 17223 entries, 0 to 199Data columns (total 7 columns):commentTime 17223 non-null objectmenu 17223 non-null objectreadCnt 17223 non-null int64star 17223 non-null int64userId 17223 non-null int64userLevel 17223 non-null int64zanCnt 17223 non-null int64dtypes: int64(5), object(2)memory usage: 1.1+ MB

最簡單的透視表

# 下面使用pandas中我們在前面的數(shù)據(jù)分析中未使用到的一個大的模塊,透視表pivot_tablepd.pivot_table(df,index=['menu'])
readCnt star userId userLevel zanCnt
menu
2人午晚餐 1592.576047 37.404450 3.195518e+08 2.269764 0.073691
4人午/晚自助 1378.817837 37.311828 2.507373e+08 2.565465 0.041746
6人午/晚自助 999.232742 42.149901 3.469539e+08 3.130178 0.047337
單人下午自助烤肉 3722.082942 34.162754 3.821938e+08 1.654147 0.574335
單人午/晚自助 1618.223881 42.985075 2.580148e+08 2.597015 0.000000
單人午晚餐 1733.297959 37.357143 3.197547e+08 2.393367 0.105867
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 137.885167 41.004785 2.346154e+08 2.473684 0.000000
周一至周五自助烤肉,免費WiFi 74.181818 50.000000 3.153784e+08 0.545455 0.000000
學(xué)生專享午晚自助 1501.586050 38.669447 3.725546e+08 2.309704 0.090599

直接敲擊該函數(shù)在notebook中可以查看該函數(shù)的參數(shù)

# 查看函數(shù)的參數(shù)以及默認參數(shù),其中aggfunc意思是透視表使用的聚類分析方法,這種簡單的透視表我們可以通過groupby實現(xiàn),df.groupby('menu').mean()# 這里針對的數(shù)值型字段,比如我們在預(yù)處理中的評論時間字段并沒有出現(xiàn)求平均的結(jié)果 pd.pivot_table
function pandas.core.reshape.pivot.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')>

多個索引列

# 實際上單個索引的pivot_table 與groupby得到的結(jié)果一樣,可以這樣說,pivot_table是高級版本的groupby,提供了很多groupby不能實現(xiàn)的功能# 多索引,通過列表傳入pd.pivot_table(df,index=['menu','star'])# 發(fā)現(xiàn)一個問題,star索引列中的數(shù)據(jù)顯示不全,有的menu評分不全,不過這并不影響我們進行分析# 加入star列類型是int類型的話,會有顯示不全的信息,但是將star列轉(zhuǎn)化為category類之后,數(shù)據(jù)顯示完整,后文有示例# 發(fā)現(xiàn)每個menu重的點贊的平均數(shù)在評分位10分的最高,也就是瀏覽評論數(shù)據(jù)的人中給10分的評價點贊數(shù)最多,很可能是因為一針見血的指出了該品類的真相。。
readCnt userId userLevel zanCnt
menu star
2人午晚餐 10 3209.762918 2.658655e+08 2.306991 0.486322
20 1332.634146 3.405706e+08 2.084428 0.026266
30 453.680819 3.168836e+08 2.031968 0.011489
40 1387.565459 3.124086e+08 2.258136 0.059172
50 2770.622104 3.345696e+08 2.556467 0.099421
4人午/晚自助 10 2894.969466 1.837606e+08 1.190840 0.305344
20 989.529412 7.500110e+07 2.058824 0.000000
30 608.138889 2.855711e+08 2.469907 0.000000
40 1413.608696 2.492934e+08 2.833333 0.014493
50 1651.925373 2.624418e+08 2.835821 0.037313
6人午/晚自助 10 2880.000000 1.417346e+08 3.000000 1.000000
30 1382.437500 3.574079e+08 2.321429 0.133929
40 475.014085 3.931602e+08 3.619718 0.000000
50 1066.473469 3.220952e+08 3.220408 0.004082
單人下午自助烤肉 10 3316.081633 8.303536e+08 1.408163 2.244898
20 1674.000000 0.000000e+00 0.000000 0.000000
30 3483.173077 3.891840e+08 1.423077 0.682692
40 4040.034722 1.299745e+08 1.833333 0.034722
50 4223.017751 3.738496e+08 2.124260 0.000000
單人午/晚自助 30 2424.000000 0.000000e+00 0.000000 0.000000
40 1600.037037 2.413956e+08 2.370370 0.000000
50 1366.000000 3.589771e+08 3.666667 0.000000
單人午晚餐 10 2107.811321 1.450798e+08 2.245283 0.754717
20 2236.238255 3.244870e+08 2.526846 0.473154
30 566.427984 2.748531e+08 2.153909 0.011523
40 2247.692881 3.391905e+08 2.437914 0.084437
50 2288.451967 3.638373e+08 2.588289 0.071363
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 20 1313.000000 5.211120e+08 2.000000 0.000000
30 71.260870 2.453638e+08 2.195652 0.000000
40 83.060606 1.129387e+08 2.484848 0.000000
50 79.632184 2.883081e+08 2.666667 0.000000
周一至周五自助烤肉,免費WiFi 50 74.181818 3.153784e+08 0.545455 0.000000
學(xué)生專享午晚自助 10 1331.108911 5.364212e+08 1.000000 0.207921
20 1602.905759 3.906107e+08 2.371728 0.104712
30 731.221172 3.847745e+08 1.809074 0.102079
40 1091.994759 2.895067e+08 2.679245 0.046122
50 2424.111240 4.336949e+08 2.347625 0.115875

特定列的統(tǒng)計

# 上面的分析中包含了多列的平均值,假如我們只想看其中的readCnt 列,可以傳入values參數(shù)pd.pivot_table(df,index=['menu','star'],values='readCnt')
readCnt
menu star
2人午晚餐 10 3209.762918
20 1332.634146
30 453.680819
40 1387.565459
50 2770.622104
4人午/晚自助 10 2894.969466
20 989.529412
30 608.138889
40 1413.608696
50 1651.925373
6人午/晚自助 10 2880.000000
30 1382.437500
40 475.014085
50 1066.473469
單人下午自助烤肉 10 3316.081633
20 1674.000000
30 3483.173077
40 4040.034722
50 4223.017751
單人午/晚自助 30 2424.000000
40 1600.037037
50 1366.000000
單人午晚餐 10 2107.811321
20 2236.238255
30 566.427984
40 2247.692881
50 2288.451967
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 20 1313.000000
30 71.260870
40 83.060606
50 79.632184
周一至周五自助烤肉,免費WiFi 50 74.181818
學(xué)生專享午晚自助 10 1331.108911
20 1602.905759
30 731.221172
40 1091.994759
50 2424.111240

規(guī)定特定的聚合函數(shù)

# 此時,我們也會考慮,這個地方是不是只能是平均值,回答當然是no,還可以通過aggfunc傳入其他的參數(shù),以獲得不同的結(jié)果,例如# 我們可以通過傳入np.sum,函數(shù),求總和pd.pivot_table(df,index=['menu','star'],values='readCnt',aggfunc=np.sum)
readCnt
menu star
2人午晚餐 10 1056012
20 710294
30 908269
40 3751977
50 5740729
4人午/晚自助 10 379241
20 67288
30 262716
40 585234
50 885432
6人午/晚自助 10 23040
30 154833
40 67452
50 261286
單人下午自助烤肉 10 324976
20 33480
30 724500
40 581765
50 713690
單人午/晚自助 30 24240
40 43201
50 40980
單人午晚餐 10 223428
20 666399
30 688210
40 2715213
50 2501278
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 20 13130
30 3278
40 5482
50 6928
周一至周五自助烤肉,免費WiFi 50 1632
學(xué)生專享午晚自助 10 134442
20 306155
30 386816
40 1041763
50 2092008

傳入多個聚合函數(shù)

# aggfunc 可以傳入多個參數(shù)pd.pivot_table(df,index=['menu','star'],values='readCnt',aggfunc=[np.sum,len])
sum len
readCnt readCnt
menu star
2人午晚餐 10 1056012 329
20 710294 533
30 908269 2002
40 3751977 2704
50 5740729 2072
4人午/晚自助 10 379241 131
20 67288 68
30 262716 432
40 585234 414
50 885432 536
6人午/晚自助 10 23040 8
30 154833 112
40 67452 142
50 261286 245
單人下午自助烤肉 10 324976 98
20 33480 20
30 724500 208
40 581765 144
50 713690 169
單人午/晚自助 30 24240 10
40 43201 27
50 40980 30
單人午晚餐 10 223428 106
20 666399 298
30 688210 1215
40 2715213 1208
50 2501278 1093
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 20 13130 10
30 3278 46
40 5482 66
50 6928 87
周一至周五自助烤肉,免費WiFi 50 1632 22
學(xué)生專享午晚自助 10 134442 101
20 306155 191
30 386816 529
40 1041763 954
50 2092008 863
# aggfunc 可以傳入多個參數(shù)pd.pivot_table(df,index=['menu','star'],values='readCnt',aggfunc=[np.sum,len,np.mean])
sum len mean
readCnt readCnt readCnt
menu star
2人午晚餐 10 1056012 329 3209.762918
20 710294 533 1332.634146
30 908269 2002 453.680819
40 3751977 2704 1387.565459
50 5740729 2072 2770.622104
4人午/晚自助 10 379241 131 2894.969466
20 67288 68 989.529412
30 262716 432 608.138889
40 585234 414 1413.608696
50 885432 536 1651.925373
6人午/晚自助 10 23040 8 2880.000000
30 154833 112 1382.437500
40 67452 142 475.014085
50 261286 245 1066.473469
單人下午自助烤肉 10 324976 98 3316.081633
20 33480 20 1674.000000
30 724500 208 3483.173077
40 581765 144 4040.034722
50 713690 169 4223.017751
單人午/晚自助 30 24240 10 2424.000000
40 43201 27 1600.037037
50 40980 30 1366.000000
單人午晚餐 10 223428 106 2107.811321
20 666399 298 2236.238255
30 688210 1215 566.427984
40 2715213 1208 2247.692881
50 2501278 1093 2288.451967
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 20 13130 10 1313.000000
30 3278 46 71.260870
40 5482 66 83.060606
50 6928 87 79.632184
周一至周五自助烤肉,免費WiFi 50 1632 22 74.181818
學(xué)生專享午晚自助 10 134442 101 1331.108911
20 306155 191 1602.905759
30 386816 529 731.221172
40 1041763 954 1091.994759
50 2092008 863 2424.111240

傳入columns參數(shù)

# 同時我們可以利用columns傳入?yún)?shù),通常傳入的都是category類型的字段,這樣可以分析針對這個字段下,values對應(yīng)列的各個aggfunc函數(shù),例如pd.pivot_table(df,index=['menu','star'],values='readCnt',columns='userLevel',aggfunc=[np.sum,len])
sum len
userLevel 0 1 2 3 4 5 6 0 1 2 3 4 5 6
menu star
2人午晚餐 10 258020.0 17404.0 556200.0 167428.0 56960.0 NaN NaN 50.0 19.0 100.0 100.0 60.0 NaN NaN
20 139630.0 70824.0 291639.0 143281.0 64920.0 NaN NaN 105.0 48.0 157.0 143.0 80.0 NaN NaN
30 136235.0 44579.0 74229.0 384310.0 256611.0 10165.0 2140.0 508.0 232.0 350.0 620.0 204.0 68.0 20.0
40 943979.0 143525.0 1037331.0 555754.0 1050919.0 12825.0 7644.0 479.0 282.0 678.0 694.0 481.0 78.0 12.0
50 1028106.0 910589.0 194753.0 1339691.0 2190625.0 9505.0 67460.0 207.0 237.0 441.0 725.0 351.0 67.0 44.0
4人午/晚自助 10 225540.0 NaN 137293.0 16408.0 NaN NaN NaN 60.0 NaN 57.0 14.0 NaN NaN NaN
20 20628.0 NaN NaN 15860.0 30800.0 NaN NaN 28.0 NaN NaN 20.0 20.0 NaN NaN
30 64636.0 NaN 36427.0 133200.0 18794.0 9659.0 NaN 72.0 NaN 133.0 138.0 58.0 31.0 NaN
40 272260.0 NaN 158807.0 56781.0 44983.0 NaN 52403.0 20.0 NaN 146.0 137.0 98.0 NaN 13.0
50 564533.0 NaN 25130.0 201899.0 77930.0 10240.0 5700.0 79.0 NaN 95.0 205.0 90.0 47.0 20.0
6人午/晚自助 10 NaN NaN NaN 23040.0 NaN NaN NaN NaN NaN NaN 8.0 NaN NaN NaN
30 7800.0 NaN 22551.0 81846.0 42636.0 NaN NaN 20.0 NaN 35.0 38.0 19.0 NaN NaN
40 NaN NaN 7345.0 11150.0 28780.0 20177.0 NaN NaN NaN 27.0 39.0 37.0 39.0 NaN
50 7560.0 NaN 11476.0 122220.0 38064.0 13086.0 68880.0 18.0 NaN 38.0 98.0 56.0 15.0 20.0
單人下午自助烤肉 10 NaN 196536.0 NaN 128440.0 NaN NaN NaN NaN 78.0 NaN 20.0 NaN NaN NaN
20 33480.0 NaN NaN NaN NaN NaN NaN 20.0 NaN NaN NaN NaN NaN NaN
30 615033.0 NaN 68015.0 472.0 40980.0 NaN NaN 101.0 NaN 65.0 2.0 40.0 NaN NaN
40 322580.0 28460.0 14442.0 205620.0 10663.0 NaN NaN 40.0 20.0 16.0 60.0 8.0 NaN NaN
50 22500.0 NaN 657928.0 18242.0 15020.0 NaN NaN 20.0 NaN 108.0 21.0 20.0 NaN NaN
單人午/晚自助 30 24240.0 NaN NaN NaN NaN NaN NaN 10.0 NaN NaN NaN NaN NaN NaN
40 NaN NaN 40681.0 2520.0 NaN NaN NaN NaN NaN 17.0 10.0 NaN NaN NaN
50 NaN NaN NaN 10760.0 30220.0 NaN NaN NaN NaN NaN 10.0 20.0 NaN NaN
單人午晚餐 10 89260.0 NaN NaN 75968.0 38200.0 20000.0 NaN 40.0 NaN NaN 36.0 20.0 10.0 NaN
20 26710.0 51900.0 359680.0 51328.0 166447.0 10334.0 NaN 30.0 40.0 80.0 40.0 107.0 1.0 NaN
30 122043.0 45679.0 111660.0 195120.0 167446.0 46262.0 NaN 289.0 96.0 289.0 267.0 228.0 46.0 NaN
40 160276.0 210574.0 108343.0 1961559.0 116063.0 158398.0 NaN 185.0 81.0 263.0 450.0 157.0 72.0 NaN
50 423175.0 532911.0 81259.0 1174165.0 80857.0 200272.0 8639.0 145.0 129.0 200.0 357.0 108.0 127.0 27.0
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 20 NaN NaN 13130.0 NaN NaN NaN NaN NaN NaN 10.0 NaN NaN NaN NaN
30 369.0 NaN 2144.0 765.0 NaN NaN NaN 3.0 NaN 28.0 15.0 NaN NaN NaN
40 1967.0 NaN NaN NaN 3515.0 NaN NaN 25.0 NaN NaN NaN 41.0 NaN NaN
50 1602.0 NaN 1387.0 2148.0 840.0 951.0 NaN 18.0 NaN 15.0 28.0 12.0 14.0 NaN
周一至周五自助烤肉,免費WiFi 50 420.0 1212.0 NaN NaN NaN NaN NaN 10.0 12.0 NaN NaN NaN NaN NaN
學(xué)生專享午晚自助 10 67546.0 40276.0 6538.0 20082.0 NaN NaN NaN 37.0 42.0 7.0 15.0 NaN NaN NaN
20 89080.0 NaN 54380.0 147675.0 NaN 15020.0 NaN 40.0 NaN 40.0 91.0 NaN 20.0 NaN
30 38524.0 175981.0 119230.0 43321.0 4340.0 5420.0 NaN 134.0 77.0 134.0 144.0 20.0 20.0 NaN
40 95021.0 56070.0 290879.0 193114.0 379548.0 27131.0 NaN 105.0 49.0 209.0 346.0 174.0 71.0 NaN
50 102935.0 NaN 812392.0 302126.0 734360.0 8620.0 131575.0 189.0 NaN 269.0 210.0 136.0 40.0 19.0

生成的DataFrame可以導(dǎo)出excel或csv文件

# pd.pivot_table(df,index=['menu','star'],values='readCnt',columns='userLevel',aggfunc=[np.sum,len]).to_excel('pivot_table.xlsx')# 這里生成的是DataFrame結(jié)構(gòu),可以直接將結(jié)果導(dǎo)出生成excel或者csv文件

修改index中的數(shù)據(jù)類型,顯示完整的索引列

# 我們可以總結(jié)一下,index中一般是category類型,columns也是category類型,當然可以是能夠代表category的數(shù)值,比如這里的離散數(shù)值,# values中一般是數(shù)值類型,aggfunc針對values中的值進行計算,這里我們可以# 更改index與columns中的字段,并通過數(shù)據(jù)類型的變換,則可以將index中顯示不全的信息顯示完整。df['menu']=df['menu'].astype('category')df['userLevel']=df['userLevel'].astype('category')df['star']=df['star'].astype('category')pd.pivot_table(df,index=['menu','userLevel'],values='readCnt',columns='star',aggfunc=[np.sum,len])
sum len
star 10 20 30 40 50 10 20 30 40 50
menu userLevel
2人午晚餐 0 258020.0 139630.0 136235.0 943979.0 1028106.0 50.0 105.0 508.0 479.0 207.0
1 17404.0 70824.0 44579.0 143525.0 910589.0 19.0 48.0 232.0 282.0 237.0
2 556200.0 291639.0 74229.0 1037331.0 194753.0 100.0 157.0 350.0 678.0 441.0
3 167428.0 143281.0 384310.0 555754.0 1339691.0 100.0 143.0 620.0 694.0 725.0
4 56960.0 64920.0 256611.0 1050919.0 2190625.0 60.0 80.0 204.0 481.0 351.0
5 NaN NaN 10165.0 12825.0 9505.0 NaN NaN 68.0 78.0 67.0
6 NaN NaN 2140.0 7644.0 67460.0 NaN NaN 20.0 12.0 44.0
4人午/晚自助 0 225540.0 20628.0 64636.0 272260.0 564533.0 60.0 28.0 72.0 20.0 79.0
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 137293.0 NaN 36427.0 158807.0 25130.0 57.0 NaN 133.0 146.0 95.0
3 16408.0 15860.0 133200.0 56781.0 201899.0 14.0 20.0 138.0 137.0 205.0
4 NaN 30800.0 18794.0 44983.0 77930.0 NaN 20.0 58.0 98.0 90.0
5 NaN NaN 9659.0 NaN 10240.0 NaN NaN 31.0 NaN 47.0
6 NaN NaN NaN 52403.0 5700.0 NaN NaN NaN 13.0 20.0
6人午/晚自助 0 NaN NaN 7800.0 NaN 7560.0 NaN NaN 20.0 NaN 18.0
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN 22551.0 7345.0 11476.0 NaN NaN 35.0 27.0 38.0
3 23040.0 NaN 81846.0 11150.0 122220.0 8.0 NaN 38.0 39.0 98.0
4 NaN NaN 42636.0 28780.0 38064.0 NaN NaN 19.0 37.0 56.0
5 NaN NaN NaN 20177.0 13086.0 NaN NaN NaN 39.0 15.0
6 NaN NaN NaN NaN 68880.0 NaN NaN NaN NaN 20.0
單人下午自助烤肉 0 NaN 33480.0 615033.0 322580.0 22500.0 NaN 20.0 101.0 40.0 20.0
1 196536.0 NaN NaN 28460.0 NaN 78.0 NaN NaN 20.0 NaN
2 NaN NaN 68015.0 14442.0 657928.0 NaN NaN 65.0 16.0 108.0
3 128440.0 NaN 472.0 205620.0 18242.0 20.0 NaN 2.0 60.0 21.0
4 NaN NaN 40980.0 10663.0 15020.0 NaN NaN 40.0 8.0 20.0
5 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
6 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
單人午/晚自助 0 NaN NaN 24240.0 NaN NaN NaN NaN 10.0 NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ...
5 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
6 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
單人午晚餐 0 89260.0 26710.0 122043.0 160276.0 423175.0 40.0 30.0 289.0 185.0 145.0
1 NaN 51900.0 45679.0 210574.0 532911.0 NaN 40.0 96.0 81.0 129.0
2 NaN 359680.0 111660.0 108343.0 81259.0 NaN 80.0 289.0 263.0 200.0
3 75968.0 51328.0 195120.0 1961559.0 1174165.0 36.0 40.0 267.0 450.0 357.0
4 38200.0 166447.0 167446.0 116063.0 80857.0 20.0 107.0 228.0 157.0 108.0
5 20000.0 10334.0 46262.0 158398.0 200272.0 10.0 1.0 46.0 72.0 127.0
6 NaN NaN NaN NaN 8639.0 NaN NaN NaN NaN 27.0
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 0 NaN NaN 369.0 1967.0 1602.0 NaN NaN 3.0 25.0 18.0
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN 13130.0 2144.0 NaN 1387.0 NaN 10.0 28.0 NaN 15.0
3 NaN NaN 765.0 NaN 2148.0 NaN NaN 15.0 NaN 28.0
4 NaN NaN NaN 3515.0 840.0 NaN NaN NaN 41.0 12.0
5 NaN NaN NaN NaN 951.0 NaN NaN NaN NaN 14.0
6 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
周一至周五自助烤肉,免費WiFi 0 NaN NaN NaN NaN 420.0 NaN NaN NaN NaN 10.0
1 NaN NaN NaN NaN 1212.0 NaN NaN NaN NaN 12.0
2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
5 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
6 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
學(xué)生專享午晚自助 0 67546.0 89080.0 38524.0 95021.0 102935.0 37.0 40.0 134.0 105.0 189.0
1 40276.0 NaN 175981.0 56070.0 NaN 42.0 NaN 77.0 49.0 NaN
2 6538.0 54380.0 119230.0 290879.0 812392.0 7.0 40.0 134.0 209.0 269.0
3 20082.0 147675.0 43321.0 193114.0 302126.0 15.0 91.0 144.0 346.0 210.0
4 NaN NaN 4340.0 379548.0 734360.0 NaN NaN 20.0 174.0 136.0
5 NaN 15020.0 5420.0 27131.0 8620.0 NaN 20.0 20.0 71.0 40.0
6 NaN NaN NaN NaN 131575.0 NaN NaN NaN NaN 19.0

63 rows × 10 columns

傳入fill_value參數(shù),處理缺失值

# 上面的例子雖然將index顯示完整了,但是仍然有很多缺失值NaN(not a number),顯示在這里給人感覺不舒服的話,可以在參數(shù)中傳入fill_value,例如pd.pivot_table(df,index=['userLevel','menu'],values='readCnt',columns='star',aggfunc=[np.sum,len],fill_value=0)
sum len
star 10 20 30 40 50 10 20 30 40 50
userLevel menu
0 2人午晚餐 258020 139630 136235 943979 1028106 50 105 508 479 207
4人午/晚自助 225540 20628 64636 272260 564533 60 28 72 20 79
6人午/晚自助 0 0 7800 0 7560 0 0 20 0 18
單人下午自助烤肉 0 33480 615033 322580 22500 0 20 101 40 20
單人午/晚自助 0 0 24240 0 0 0 0 10 0 0
單人午晚餐 89260 26710 122043 160276 423175 40 30 289 185 145
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 0 0 369 1967 1602 0 0 3 25 18
周一至周五自助烤肉,免費WiFi 0 0 0 0 420 0 0 0 0 10
學(xué)生專享午晚自助 67546 89080 38524 95021 102935 37 40 134 105 189
1 2人午晚餐 17404 70824 44579 143525 910589 19 48 232 282 237
4人午/晚自助 0 0 0 0 0 0 0 0 0 0
6人午/晚自助 0 0 0 0 0 0 0 0 0 0
單人下午自助烤肉 196536 0 0 28460 0 78 0 0 20 0
單人午/晚自助 0 0 0 0 0 0 0 0 0 0
單人午晚餐 0 51900 45679 210574 532911 0 40 96 81 129
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 0 0 0 0 0 0 0 0 0 0
周一至周五自助烤肉,免費WiFi 0 0 0 0 1212 0 0 0 0 12
學(xué)生專享午晚自助 40276 0 175981 56070 0 42 0 77 49 0
2 2人午晚餐 556200 291639 74229 1037331 194753 100 157 350 678 441
4人午/晚自助 137293 0 36427 158807 25130 57 0 133 146 95
6人午/晚自助 0 0 22551 7345 11476 0 0 35 27 38
單人下午自助烤肉 0 0 68015 14442 657928 0 0 65 16 108
單人午/晚自助 0 0 0 40681 0 0 0 0 17 0
單人午晚餐 0 359680 111660 108343 81259 0 80 289 263 200
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 0 13130 2144 0 1387 0 10 28 0 15
周一至周五自助烤肉,免費WiFi 0 0 0 0 0 0 0 0 0 0
學(xué)生專享午晚自助 6538 54380 119230 290879 812392 7 40 134 209 269
3 2人午晚餐 167428 143281 384310 555754 1339691 100 143 620 694 725
4人午/晚自助 16408 15860 133200 56781 201899 14 20 138 137 205
6人午/晚自助 23040 0 81846 11150 122220 8 0 38 39 98
... ... ... ... ... ... ... ... ... ... ...
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 0 0 765 0 2148 0 0 15 0 28
周一至周五自助烤肉,免費WiFi 0 0 0 0 0 0 0 0 0 0
學(xué)生專享午晚自助 20082 147675 43321 193114 302126 15 91 144 346 210
4 2人午晚餐 56960 64920 256611 1050919 2190625 60 80 204 481 351
4人午/晚自助 0 30800 18794 44983 77930 0 20 58 98 90
6人午/晚自助 0 0 42636 28780 38064 0 0 19 37 56
單人下午自助烤肉 0 0 40980 10663 15020 0 0 40 8 20
單人午/晚自助 0 0 0 0 30220 0 0 0 0 20
單人午晚餐 38200 166447 167446 116063 80857 20 107 228 157 108
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 0 0 0 3515 840 0 0 0 41 12
周一至周五自助烤肉,免費WiFi 0 0 0 0 0 0 0 0 0 0
學(xué)生專享午晚自助 0 0 4340 379548 734360 0 0 20 174 136
5 2人午晚餐 0 0 10165 12825 9505 0 0 68 78 67
4人午/晚自助 0 0 9659 0 10240 0 0 31 0 47
6人午/晚自助 0 0 0 20177 13086 0 0 0 39 15
單人下午自助烤肉 0 0 0 0 0 0 0 0 0 0
單人午/晚自助 0 0 0 0 0 0 0 0 0 0
單人午晚餐 20000 10334 46262 158398 200272 10 1 46 72 127
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 0 0 0 0 951 0 0 0 0 14
周一至周五自助烤肉,免費WiFi 0 0 0 0 0 0 0 0 0 0
學(xué)生專享午晚自助 0 15020 5420 27131 8620 0 20 20 71 40
6 2人午晚餐 0 0 2140 7644 67460 0 0 20 12 44
4人午/晚自助 0 0 0 52403 5700 0 0 0 13 20
6人午/晚自助 0 0 0 0 68880 0 0 0 0 20
單人下午自助烤肉 0 0 0 0 0 0 0 0 0 0
單人午/晚自助 0 0 0 0 0 0 0 0 0 0
單人午晚餐 0 0 0 0 8639 0 0 0 0 27
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 0 0 0 0 0 0 0 0 0 0
周一至周五自助烤肉,免費WiFi 0 0 0 0 0 0 0 0 0 0
學(xué)生專享午晚自助 0 0 0 0 131575 0 0 0 0 19

63 rows × 10 columns

設(shè)添加margins參數(shù),定margin_name名稱

pd.pivot_table(df,index=['userLevel','menu'],values='readCnt',columns='star',aggfunc=[len],fill_value=0,margins=True,margins_name='總計')# 顯示總計
len
star 10 20 30 40 50 總計
userLevel menu
0 2人午晚餐 50 105 508 479 207 1349.0
4人午/晚自助 60 28 72 20 79 259.0
6人午/晚自助 0 0 20 0 18 38.0
單人下午自助烤肉 0 20 101 40 20 181.0
單人午/晚自助 0 0 10 0 0 10.0
單人午晚餐 40 30 289 185 145 689.0
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 0 0 3 25 18 46.0
周一至周五自助烤肉,免費WiFi 0 0 0 0 10 10.0
學(xué)生專享午晚自助 37 40 134 105 189 505.0
1 2人午晚餐 19 48 232 282 237 818.0
4人午/晚自助 0 0 0 0 0 NaN
6人午/晚自助 0 0 0 0 0 NaN
單人下午自助烤肉 78 0 0 20 0 98.0
單人午/晚自助 0 0 0 0 0 NaN
單人午晚餐 0 40 96 81 129 346.0
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 0 0 0 0 0 NaN
周一至周五自助烤肉,免費WiFi 0 0 0 0 12 12.0
學(xué)生專享午晚自助 42 0 77 49 0 168.0
2 2人午晚餐 100 157 350 678 441 1726.0
4人午/晚自助 57 0 133 146 95 431.0
6人午/晚自助 0 0 35 27 38 100.0
單人下午自助烤肉 0 0 65 16 108 189.0
單人午/晚自助 0 0 0 17 0 17.0
單人午晚餐 0 80 289 263 200 832.0
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 0 10 28 0 15 53.0
周一至周五自助烤肉,免費WiFi 0 0 0 0 0 NaN
學(xué)生專享午晚自助 7 40 134 209 269 659.0
3 2人午晚餐 100 143 620 694 725 2282.0
4人午/晚自助 14 20 138 137 205 514.0
6人午/晚自助 8 0 38 39 98 183.0
... ... ... ... ... ... ...
周一至周五自助烤肉,免費WiFi 0 0 0 0 0 NaN
學(xué)生專享午晚自助 15 91 144 346 210 806.0
4 2人午晚餐 60 80 204 481 351 1176.0
4人午/晚自助 0 20 58 98 90 266.0
6人午/晚自助 0 0 19 37 56 112.0
單人下午自助烤肉 0 0 40 8 20 68.0
單人午/晚自助 0 0 0 0 20 20.0
單人午晚餐 20 107 228 157 108 620.0
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 0 0 0 41 12 53.0
周一至周五自助烤肉,免費WiFi 0 0 0 0 0 NaN
學(xué)生專享午晚自助 0 0 20 174 136 330.0
5 2人午晚餐 0 0 68 78 67 213.0
4人午/晚自助 0 0 31 0 47 78.0
6人午/晚自助 0 0 0 39 15 54.0
單人下午自助烤肉 0 0 0 0 0 NaN
單人午/晚自助 0 0 0 0 0 NaN
單人午晚餐 10 1 46 72 127 256.0
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 0 0 0 0 14 14.0
周一至周五自助烤肉,免費WiFi 0 0 0 0 0 NaN
學(xué)生專享午晚自助 0 20 20 71 40 151.0
6 2人午晚餐 0 0 20 12 44 76.0
4人午/晚自助 0 0 0 13 20 33.0
6人午/晚自助 0 0 0 0 20 20.0
單人下午自助烤肉 0 0 0 0 0 NaN
單人午/晚自助 0 0 0 0 0 NaN
單人午晚餐 0 0 0 0 27 27.0
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 0 0 0 0 0 NaN
周一至周五自助烤肉,免費WiFi 0 0 0 0 0 NaN
學(xué)生專享午晚自助 0 0 0 0 19 19.0
總計 773 1120 4554 5659 5117 17223.0

64 rows × 6 columns

aggfunc傳入字典,規(guī)定單個字段對應(yīng)的聚合函數(shù)

df['star']=df['star'].astype('int')pd.pivot_table(df,index=['menu'],columns=['userLevel'],values=['readCnt','star'], aggfunc={'star':len,'readCnt':[np.sum]},fill_value=0)# 可以aggfunc函數(shù)傳入一個字典,規(guī)定單個字段對應(yīng)的聚合函數(shù)
readCnt star
sum len
userLevel 0 1 2 3 4 5 6 0 1 2 3 4 5 6
menu
2人午晚餐 2505970 1186921 2154152 2590464 3620035 32495 77244 1349 818 1726 2282 1176 213 76
4人午/晚自助 1147597 0 357657 424148 172507 19899 58103 259 0 431 514 266 78 33
6人午/晚自助 15360 0 41372 238256 109480 33263 68880 38 0 100 183 112 54 20
單人下午自助烤肉 993593 224996 740385 352774 66663 0 0 181 98 189 103 68 0 0
單人午/晚自助 24240 0 40681 13280 30220 0 0 10 0 17 20 20 0 0
單人午晚餐 821464 841064 660942 3458140 569013 435266 8639 689 346 832 1150 620 256 27
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 3938 0 16661 2913 4355 951 0 46 0 53 43 53 14 0
周一至周五自助烤肉,免費WiFi 420 1212 0 0 0 0 0 10 12 0 0 0 0 0
學(xué)生專享午晚自助 393106 272327 1283419 706318 1118248 56191 131575 505 168 659 806 330 151 19

可以使用query 進行查詢數(shù)據(jù)

table=pd.pivot_table(df,index=['menu'],columns=['userLevel'],values=['readCnt','star'], aggfunc={'star':len,'readCnt':[np.sum]})table
readCnt star
sum len
userLevel 0 1 2 3 4 5 6 0 1 2 3 4 5 6
menu
2人午晚餐 2505970.0 1186921.0 2154152.0 2590464.0 3620035.0 32495.0 77244.0 1349.0 818.0 1726.0 2282.0 1176.0 213.0 76.0
4人午/晚自助 1147597.0 NaN 357657.0 424148.0 172507.0 19899.0 58103.0 259.0 NaN 431.0 514.0 266.0 78.0 33.0
6人午/晚自助 15360.0 NaN 41372.0 238256.0 109480.0 33263.0 68880.0 38.0 NaN 100.0 183.0 112.0 54.0 20.0
單人下午自助烤肉 993593.0 224996.0 740385.0 352774.0 66663.0 NaN NaN 181.0 98.0 189.0 103.0 68.0 NaN NaN
單人午/晚自助 24240.0 NaN 40681.0 13280.0 30220.0 NaN NaN 10.0 NaN 17.0 20.0 20.0 NaN NaN
單人午晚餐 821464.0 841064.0 660942.0 3458140.0 569013.0 435266.0 8639.0 689.0 346.0 832.0 1150.0 620.0 256.0 27.0
周一至周五自助烤肉/周六日及節(jié)假日自助烤肉2選1 3938.0 NaN 16661.0 2913.0 4355.0 951.0 NaN 46.0 NaN 53.0 43.0 53.0 14.0 NaN
周一至周五自助烤肉,免費WiFi 420.0 1212.0 NaN NaN NaN NaN NaN 10.0 12.0 NaN NaN NaN NaN NaN
學(xué)生專享午晚自助 393106.0 272327.0 1283419.0 706318.0 1118248.0 56191.0 131575.0 505.0 168.0 659.0 806.0 330.0 151.0 19.0

高級的透視表查詢語句

table.query('menu==['2人午晚餐','單人午晚餐']')
readCnt star
sum len
userLevel 0 1 2 3 4 5 6 0 1 2 3 4 5 6
menu
2人午晚餐 2505970.0 1186921.0 2154152.0 2590464.0 3620035.0 32495.0 77244.0 1349.0 818.0 1726.0 2282.0 1176.0 213.0 76.0
單人午晚餐 821464.0 841064.0 660942.0 3458140.0 569013.0 435266.0 8639.0 689.0 346.0 832.0 1150.0 620.0 256.0 27.0

至此,pandas中的透視表的功能實例實現(xiàn)完成

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    97精品人妻一区二区三区麻豆| 91偷拍视频久久精品| 91人人妻人人爽人人狠狠| 亚洲午夜福利不卡片在线| 91麻豆精品欧美视频| 一区二区福利在线视频| 久久国产亚洲精品赲碰热| 国产精品一区二区丝袜| 色婷婷视频在线精品免费观看 | 欧美日韩国产二三四区| 激情少妇一区二区三区| 国产成人综合亚洲欧美日韩| 日本一级特黄大片国产| 国产精品二区三区免费播放心 | 亚洲五月婷婷中文字幕| 九九视频通过这里有精品| 人妻久久这里只有精品| 国产成人午夜在线视频| 99热在线播放免费观看| 精品丝袜一区二区三区性色| 日韩人妻免费视频一专区| 亚洲丁香婷婷久久一区| 成人综合网视频在线观看| 人妻少妇av中文字幕乱码高清| 99国产高清不卡视频| 国产日产欧美精品视频| 91日韩欧美国产视频| 草草草草在线观看视频| 殴美女美女大码性淫生活在线播放| 太香蕉久久国产精品视频| 熟女高潮一区二区三区| 91日韩在线观看你懂的| 亚洲av熟女一区二区三区蜜桃| 欧美日韩精品视频在线| 亚洲欧洲一区二区中文字幕| 蜜桃臀欧美日韩国产精品| 日韩精品中文字幕亚洲| 99热在线精品视频观看| 精品欧美国产一二三区| 午夜福利激情性生活免费视频| 五月激情婷婷丁香六月网|