pandas pivot_table 活学活用实例教程

pandas pivot_table 活学活用实例教程

pandas pivot_table 活学活用实例教程

导入相关数据分析的库
import pandas as pd
import numpy as np
import  matplotlib.pyplot as  plt
import time
df=pd.read_excel("all_data_meituan.xlsx")
df=df[['commentTime','menu','readCnt','star','userId','userLevel','zanCnt']].dropna()
# 这里去掉缺失值,因为后面的透视表中的处理都是直接去除缺失值(dropna=True),这边我们先处理掉,以免与后面的结果发生了矛盾,还要分析问题在哪里。
df.head() # 看出前5行
commentTimemenureadCntstaruserIduserLevelzanCnt
01525875708515单人午晚餐254344029175449712
115278532916582人午晚餐72934082929713020
215228139437112人午晚餐31787503821709042
31525165942926单人午晚餐10334206772620551
41526546884897单人午晚餐5658309397489430
首先进行commentTime时间进行数据预处理

def convertTime(x):
    y=time.localtime(x/1000)
    z=time.strftime("%Y-%m-%d %H:%M:%S",y)
    return z
df["commentTime"]=df["commentTime"].apply(convertTime)

df.head()
commentTimemenureadCntstaruserIduserLevelzanCnt
02018-05-09 22:21:48单人午晚餐254344029175449712
12018-06-01 19:41:312人午晚餐72934082929713020
22018-04-04 11:52:232人午晚餐31787503821709042
32018-05-01 17:12:22单人午晚餐10334206772620551
42018-05-17 16:48:04单人午晚餐5658309397489430
查看数据类型信息
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 17223 entries, 0 to 199
Data columns (total 7 columns):
commentTime    17223 non-null object
menu           17223 non-null object
readCnt        17223 non-null int64
star           17223 non-null int64
userId         17223 non-null int64
userLevel      17223 non-null int64
zanCnt         17223 non-null int64
dtypes: int64(5), object(2)
memory usage: 1.1+ MB
最简单的透视表
# 下面使用pandas中我们在前面的数据分析中未使用到的一个大的模块,透视表pivot_table
pd.pivot_table(df,index=['menu'])
readCntstaruserIduserLevelzanCnt
menu
2人午晚餐1592.57604737.4044503.195518e+082.2697640.073691
4人午/晚自助1378.81783737.3118282.507373e+082.5654650.041746
6人午/晚自助999.23274242.1499013.469539e+083.1301780.047337
单人下午自助烤肉3722.08294234.1627543.821938e+081.6541470.574335
单人午/晚自助1618.22388142.9850752.580148e+082.5970150.000000
单人午晚餐1733.29795937.3571433.197547e+082.3933670.105867
周一至周五自助烤肉/周六日及节假日自助烤肉2选1137.88516741.0047852.346154e+082.4736840.000000
周一至周五自助烤肉,免费WiFi74.18181850.0000003.153784e+080.5454550.000000
学生专享午晚自助1501.58605038.6694473.725546e+082.3097040.090599
直接敲击该函数在notebook中可以查看该函数的参数
# 查看函数的参数以及默认参数,其中aggfunc意思是透视表使用的聚类分析方法,这种简单的透视表我们可以通过groupby实现,df.groupby('menu').mean()
#  这里针对的数值型字段,比如我们在预处理中的评论时间字段并没有出现求平均的结果 
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得到的结果一样,可以这样说,pivot_table是高级版本的groupby,提供了很多groupby不能实现的功能
# 多索引,通过列表传入
pd.pivot_table(df,index=['menu','star'])
# 发现一个问题,star索引列中的数据显示不全,有的menu评分不全,不过这并不影响我们进行分析
# 加入star列类型是int类型的话,会有显示不全的信息,但是将star列转化为category类之后,数据显示完整,后文有示例
# 发现每个menu重的点赞的平均数在评分位10分的最高,也就是浏览评论数据的人中给10分的评价点赞数最多,很可能是因为一针见血的指出了该品类的真相。。
readCntuserIduserLevelzanCnt
menustar
2人午晚餐103209.7629182.658655e+082.3069910.486322
201332.6341463.405706e+082.0844280.026266
30453.6808193.168836e+082.0319680.011489
401387.5654593.124086e+082.2581360.059172
502770.6221043.345696e+082.5564670.099421
4人午/晚自助102894.9694661.837606e+081.1908400.305344
20989.5294127.500110e+072.0588240.000000
30608.1388892.855711e+082.4699070.000000
401413.6086962.492934e+082.8333330.014493
501651.9253732.624418e+082.8358210.037313
6人午/晚自助102880.0000001.417346e+083.0000001.000000
301382.4375003.574079e+082.3214290.133929
40475.0140853.931602e+083.6197180.000000
501066.4734693.220952e+083.2204080.004082
单人下午自助烤肉103316.0816338.303536e+081.4081632.244898
201674.0000000.000000e+000.0000000.000000
303483.1730773.891840e+081.4230770.682692
404040.0347221.299745e+081.8333330.034722
504223.0177513.738496e+082.1242600.000000
单人午/晚自助302424.0000000.000000e+000.0000000.000000
401600.0370372.413956e+082.3703700.000000
501366.0000003.589771e+083.6666670.000000
单人午晚餐102107.8113211.450798e+082.2452830.754717
202236.2382553.244870e+082.5268460.473154
30566.4279842.748531e+082.1539090.011523
402247.6928813.391905e+082.4379140.084437
502288.4519673.638373e+082.5882890.071363
周一至周五自助烤肉/周六日及节假日自助烤肉2选1201313.0000005.211120e+082.0000000.000000
3071.2608702.453638e+082.1956520.000000
4083.0606061.129387e+082.4848480.000000
5079.6321842.883081e+082.6666670.000000
周一至周五自助烤肉,免费WiFi5074.1818183.153784e+080.5454550.000000
学生专享午晚自助101331.1089115.364212e+081.0000000.207921
201602.9057593.906107e+082.3717280.104712
30731.2211723.847745e+081.8090740.102079
401091.9947592.895067e+082.6792450.046122
502424.1112404.336949e+082.3476250.115875
特定列的统计
# 上面的分析中包含了多列的平均值,假如我们只想看其中的readCnt 列,可以传入values参数
pd.pivot_table(df,index=['menu','star'],values='readCnt')
readCnt
menustar
2人午晚餐103209.762918
201332.634146
30453.680819
401387.565459
502770.622104
4人午/晚自助102894.969466
20989.529412
30608.138889
401413.608696
501651.925373
6人午/晚自助102880.000000
301382.437500
40475.014085
501066.473469
单人下午自助烤肉103316.081633
201674.000000
303483.173077
404040.034722
504223.017751
单人午/晚自助302424.000000
401600.037037
501366.000000
单人午晚餐102107.811321
202236.238255
30566.427984
402247.692881
502288.451967
周一至周五自助烤肉/周六日及节假日自助烤肉2选1201313.000000
3071.260870
4083.060606
5079.632184
周一至周五自助烤肉,免费WiFi5074.181818
学生专享午晚自助101331.108911
201602.905759
30731.221172
401091.994759
502424.111240
规定特定的聚合函数
#  此时,我们也会考虑,这个地方是不是只能是平均值,回答当然是no,还可以通过aggfunc传入其他的参数,以获得不同的结果,例如
# 我们可以通过传入np.sum,函数,求总和
pd.pivot_table(df,index=['menu','star'],values='readCnt',aggfunc=np.sum)
readCnt
menustar
2人午晚餐101056012
20710294
30908269
403751977
505740729
4人午/晚自助10379241
2067288
30262716
40585234
50885432
6人午/晚自助1023040
30154833
4067452
50261286
单人下午自助烤肉10324976
2033480
30724500
40581765
50713690
单人午/晚自助3024240
4043201
5040980
单人午晚餐10223428
20666399
30688210
402715213
502501278
周一至周五自助烤肉/周六日及节假日自助烤肉2选12013130
303278
405482
506928
周一至周五自助烤肉,免费WiFi501632
学生专享午晚自助10134442
20306155
30386816
401041763
502092008
传入多个聚合函数
#  aggfunc 可以传入多个参数
pd.pivot_table(df,index=['menu','star'],values='readCnt',aggfunc=[np.sum,len])
sumlen
readCntreadCnt
menustar
2人午晚餐101056012329
20710294533
309082692002
4037519772704
5057407292072
4人午/晚自助10379241131
206728868
30262716432
40585234414
50885432536
6人午/晚自助10230408
30154833112
4067452142
50261286245
单人下午自助烤肉1032497698
203348020
30724500208
40581765144
50713690169
单人午/晚自助302424010
404320127
504098030
单人午晚餐10223428106
20666399298
306882101215
4027152131208
5025012781093
周一至周五自助烤肉/周六日及节假日自助烤肉2选1201313010
30327846
40548266
50692887
周一至周五自助烤肉,免费WiFi50163222
学生专享午晚自助10134442101
20306155191
30386816529
401041763954
502092008863
#  aggfunc 可以传入多个参数
pd.pivot_table(df,index=['menu','star'],values='readCnt',aggfunc=[np.sum,len,np.mean])
sumlenmean
readCntreadCntreadCnt
menustar
2人午晚餐1010560123293209.762918
207102945331332.634146
309082692002453.680819
40375197727041387.565459
50574072920722770.622104
4人午/晚自助103792411312894.969466
206728868989.529412
30262716432608.138889
405852344141413.608696
508854325361651.925373
6人午/晚自助102304082880.000000
301548331121382.437500
4067452142475.014085
502612862451066.473469
单人下午自助烤肉10324976983316.081633
2033480201674.000000
307245002083483.173077
405817651444040.034722
507136901694223.017751
单人午/晚自助3024240102424.000000
4043201271600.037037
5040980301366.000000
单人午晚餐102234281062107.811321
206663992982236.238255
306882101215566.427984
40271521312082247.692881
50250127810932288.451967
周一至周五自助烤肉/周六日及节假日自助烤肉2选12013130101313.000000
3032784671.260870
4054826683.060606
5069288779.632184
周一至周五自助烤肉,免费WiFi5016322274.181818
学生专享午晚自助101344421011331.108911
203061551911602.905759
30386816529731.221172
4010417639541091.994759
5020920088632424.111240
传入columns参数
# 同时我们可以利用columns传入参数,通常传入的都是category类型的字段,这样可以分析针对这个字段下,values对应列的各个aggfunc函数,例如
pd.pivot_table(df,index=['menu','star'],values='readCnt',columns='userLevel',aggfunc=[np.sum,len])
sumlen
userLevel01234560123456
menustar
2人午晚餐10258020.017404.0556200.0167428.056960.0NaNNaN50.019.0100.0100.060.0NaNNaN
20139630.070824.0291639.0143281.064920.0NaNNaN105.048.0157.0143.080.0NaNNaN
30136235.044579.074229.0384310.0256611.010165.02140.0508.0232.0350.0620.0204.068.020.0
40943979.0143525.01037331.0555754.01050919.012825.07644.0479.0282.0678.0694.0481.078.012.0
501028106.0910589.0194753.01339691.02190625.09505.067460.0207.0237.0441.0725.0351.067.044.0
4人午/晚自助10225540.0NaN137293.016408.0NaNNaNNaN60.0NaN57.014.0NaNNaNNaN
2020628.0NaNNaN15860.030800.0NaNNaN28.0NaNNaN20.020.0NaNNaN
3064636.0NaN36427.0133200.018794.09659.0NaN72.0NaN133.0138.058.031.0NaN
40272260.0NaN158807.056781.044983.0NaN52403.020.0NaN146.0137.098.0NaN13.0
50564533.0NaN25130.0201899.077930.010240.05700.079.0NaN95.0205.090.047.020.0
6人午/晚自助10NaNNaNNaN23040.0NaNNaNNaNNaNNaNNaN8.0NaNNaNNaN
307800.0NaN22551.081846.042636.0NaNNaN20.0NaN35.038.019.0NaNNaN
40NaNNaN7345.011150.028780.020177.0NaNNaNNaN27.039.037.039.0NaN
507560.0NaN11476.0122220.038064.013086.068880.018.0NaN38.098.056.015.020.0
单人下午自助烤肉10NaN196536.0NaN128440.0NaNNaNNaNNaN78.0NaN20.0NaNNaNNaN
2033480.0NaNNaNNaNNaNNaNNaN20.0NaNNaNNaNNaNNaNNaN
30615033.0NaN68015.0472.040980.0NaNNaN101.0NaN65.02.040.0NaNNaN
40322580.028460.014442.0205620.010663.0NaNNaN40.020.016.060.08.0NaNNaN
5022500.0NaN657928.018242.015020.0NaNNaN20.0NaN108.021.020.0NaNNaN
单人午/晚自助3024240.0NaNNaNNaNNaNNaNNaN10.0NaNNaNNaNNaNNaNNaN
40NaNNaN40681.02520.0NaNNaNNaNNaNNaN17.010.0NaNNaNNaN
50NaNNaNNaN10760.030220.0NaNNaNNaNNaNNaN10.020.0NaNNaN
单人午晚餐1089260.0NaNNaN75968.038200.020000.0NaN40.0NaNNaN36.020.010.0NaN
2026710.051900.0359680.051328.0166447.010334.0NaN30.040.080.040.0107.01.0NaN
30122043.045679.0111660.0195120.0167446.046262.0NaN289.096.0289.0267.0228.046.0NaN
40160276.0210574.0108343.01961559.0116063.0158398.0NaN185.081.0263.0450.0157.072.0NaN
50423175.0532911.081259.01174165.080857.0200272.08639.0145.0129.0200.0357.0108.0127.027.0
周一至周五自助烤肉/周六日及节假日自助烤肉2选120NaNNaN13130.0NaNNaNNaNNaNNaNNaN10.0NaNNaNNaNNaN
30369.0NaN2144.0765.0NaNNaNNaN3.0NaN28.015.0NaNNaNNaN
401967.0NaNNaNNaN3515.0NaNNaN25.0NaNNaNNaN41.0NaNNaN
501602.0NaN1387.02148.0840.0951.0NaN18.0NaN15.028.012.014.0NaN
周一至周五自助烤肉,免费WiFi50420.01212.0NaNNaNNaNNaNNaN10.012.0NaNNaNNaNNaNNaN
学生专享午晚自助1067546.040276.06538.020082.0NaNNaNNaN37.042.07.015.0NaNNaNNaN
2089080.0NaN54380.0147675.0NaN15020.0NaN40.0NaN40.091.0NaN20.0NaN
3038524.0175981.0119230.043321.04340.05420.0NaN134.077.0134.0144.020.020.0NaN
4095021.056070.0290879.0193114.0379548.027131.0NaN105.049.0209.0346.0174.071.0NaN
50102935.0NaN812392.0302126.0734360.08620.0131575.0189.0NaN269.0210.0136.040.019.0
生成的DataFrame可以导出excel或csv文件
# pd.pivot_table(df,index=['menu','star'],values='readCnt',columns='userLevel',aggfunc=[np.sum,len]).to_excel('pivot_table.xlsx')
# 这里生成的是DataFrame结构,可以直接将结果导出生成excel或者csv文件
修改index中的数据类型,显示完整的索引列
#  我们可以总结一下,index中一般是category类型,columns也是category类型,当然可以是能够代表category的数值,比如这里的离散数值,
#  values中一般是数值类型,aggfunc针对values中的值进行计算,这里我们可以
# 更改index与columns中的字段,并通过数据类型的变换,则可以将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])
sumlen
star10203040501020304050
menuuserLevel
2人午晚餐0258020.0139630.0136235.0943979.01028106.050.0105.0508.0479.0207.0
117404.070824.044579.0143525.0910589.019.048.0232.0282.0237.0
2556200.0291639.074229.01037331.0194753.0100.0157.0350.0678.0441.0
3167428.0143281.0384310.0555754.01339691.0100.0143.0620.0694.0725.0
456960.064920.0256611.01050919.02190625.060.080.0204.0481.0351.0
5NaNNaN10165.012825.09505.0NaNNaN68.078.067.0
6NaNNaN2140.07644.067460.0NaNNaN20.012.044.0
4人午/晚自助0225540.020628.064636.0272260.0564533.060.028.072.020.079.0
1NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
2137293.0NaN36427.0158807.025130.057.0NaN133.0146.095.0
316408.015860.0133200.056781.0201899.014.020.0138.0137.0205.0
4NaN30800.018794.044983.077930.0NaN20.058.098.090.0
5NaNNaN9659.0NaN10240.0NaNNaN31.0NaN47.0
6NaNNaNNaN52403.05700.0NaNNaNNaN13.020.0
6人午/晚自助0NaNNaN7800.0NaN7560.0NaNNaN20.0NaN18.0
1NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
2NaNNaN22551.07345.011476.0NaNNaN35.027.038.0
323040.0NaN81846.011150.0122220.08.0NaN38.039.098.0
4NaNNaN42636.028780.038064.0NaNNaN19.037.056.0
5NaNNaNNaN20177.013086.0NaNNaNNaN39.015.0
6NaNNaNNaNNaN68880.0NaNNaNNaNNaN20.0
单人下午自助烤肉0NaN33480.0615033.0322580.022500.0NaN20.0101.040.020.0
1196536.0NaNNaN28460.0NaN78.0NaNNaN20.0NaN
2NaNNaN68015.014442.0657928.0NaNNaN65.016.0108.0
3128440.0NaN472.0205620.018242.020.0NaN2.060.021.0
4NaNNaN40980.010663.015020.0NaNNaN40.08.020.0
5NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
6NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
单人午/晚自助0NaNNaN24240.0NaNNaNNaNNaN10.0NaNNaN
1NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
.................................
5NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
6NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
单人午晚餐089260.026710.0122043.0160276.0423175.040.030.0289.0185.0145.0
1NaN51900.045679.0210574.0532911.0NaN40.096.081.0129.0
2NaN359680.0111660.0108343.081259.0NaN80.0289.0263.0200.0
375968.051328.0195120.01961559.01174165.036.040.0267.0450.0357.0
438200.0166447.0167446.0116063.080857.020.0107.0228.0157.0108.0
520000.010334.046262.0158398.0200272.010.01.046.072.0127.0
6NaNNaNNaNNaN8639.0NaNNaNNaNNaN27.0
周一至周五自助烤肉/周六日及节假日自助烤肉2选10NaNNaN369.01967.01602.0NaNNaN3.025.018.0
1NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
2NaN13130.02144.0NaN1387.0NaN10.028.0NaN15.0
3NaNNaN765.0NaN2148.0NaNNaN15.0NaN28.0
4NaNNaNNaN3515.0840.0NaNNaNNaN41.012.0
5NaNNaNNaNNaN951.0NaNNaNNaNNaN14.0
6NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
周一至周五自助烤肉,免费WiFi0NaNNaNNaNNaN420.0NaNNaNNaNNaN10.0
1NaNNaNNaNNaN1212.0NaNNaNNaNNaN12.0
2NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
3NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
4NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
5NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
6NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
学生专享午晚自助067546.089080.038524.095021.0102935.037.040.0134.0105.0189.0
140276.0NaN175981.056070.0NaN42.0NaN77.049.0NaN
26538.054380.0119230.0290879.0812392.07.040.0134.0209.0269.0
320082.0147675.043321.0193114.0302126.015.091.0144.0346.0210.0
4NaNNaN4340.0379548.0734360.0NaNNaN20.0174.0136.0
5NaN15020.05420.027131.08620.0NaN20.020.071.040.0
6NaNNaNNaNNaN131575.0NaNNaNNaNNaN19.0

63 rows × 10 columns

传入fill_value参数处理缺失值
# 上面的例子虽然将index显示完整了,但是仍然有很多缺失值NaN(not a number),显示在这里给人感觉不舒服的话,可以在参数中传入fill_value,例如
pd.pivot_table(df,index=['userLevel','menu'],values='readCnt',columns='star',aggfunc=[np.sum,len],fill_value=0)
sumlen
star10203040501020304050
userLevelmenu
02人午晚餐258020139630136235943979102810650105508479207
4人午/晚自助22554020628646362722605645336028722079
6人午/晚自助007800075600020018
单人下午自助烤肉033480615033322580225000201014020
单人午/晚自助002424000001000
单人午晚餐89260267101220431602764231754030289185145
周一至周五自助烤肉/周六日及节假日自助烤肉2选100369196716020032518
周一至周五自助烤肉,免费WiFi0000420000010
学生专享午晚自助675468908038524950211029353740134105189
12人午晚餐1740470824445791435259105891948232282237
4人午/晚自助0000000000
6人午/晚自助0000000000
单人下午自助烤肉196536002846007800200
单人午/晚自助0000000000
单人午晚餐051900456792105745329110409681129
周一至周五自助烤肉/周六日及节假日自助烤肉2选10000000000
周一至周五自助烤肉,免费WiFi00001212000012
学生专享午晚自助40276017598156070042077490
22人午晚餐556200291639742291037331194753100157350678441
4人午/晚自助1372930364271588072513057013314695
6人午/晚自助002255173451147600352738
单人下午自助烤肉006801514442657928006516108
单人午/晚自助000406810000170
单人午晚餐035968011166010834381259080289263200
周一至周五自助烤肉/周六日及节假日自助烤肉2选101313021440138701028015
周一至周五自助烤肉,免费WiFi0000000000
学生专享午晚自助653854380119230290879812392740134209269
32人午晚餐1674281432813843105557541339691100143620694725
4人午/晚自助1640815860133200567812018991420138137205
6人午/晚自助230400818461115012222080383998
.................................
周一至周五自助烤肉/周六日及节假日自助烤肉2选100765021480015028
周一至周五自助烤肉,免费WiFi0000000000
学生专享午晚自助20082147675433211931143021261591144346210
42人午晚餐5696064920256611105091921906256080204481351
4人午/晚自助030800187944498377930020589890
6人午/晚自助0042636287803806400193756
单人下午自助烤肉004098010663150200040820
单人午/晚自助000030220000020
单人午晚餐382001664471674461160638085720107228157108
周一至周五自助烤肉/周六日及节假日自助烤肉2选100035158400004112
周一至周五自助烤肉,免费WiFi0000000000
学生专享午晚自助0043403795487343600020174136
52人午晚餐001016512825950500687867
4人午/晚自助0096590102400031047
6人午/晚自助00020177130860003915
单人下午自助烤肉0000000000
单人午/晚自助0000000000
单人午晚餐2000010334462621583982002721014672127
周一至周五自助烤肉/周六日及节假日自助烤肉2选10000951000014
周一至周五自助烤肉,免费WiFi0000000000
学生专享午晚自助0150205420271318620020207140
62人午晚餐00214076446746000201244
4人午/晚自助0005240357000001320
6人午/晚自助000068880000020
单人下午自助烤肉0000000000
单人午/晚自助0000000000
单人午晚餐00008639000027
周一至周五自助烤肉/周六日及节假日自助烤肉2选10000000000
周一至周五自助烤肉,免费WiFi0000000000
学生专享午晚自助0000131575000019

63 rows × 10 columns

设添加margins参数,定margin_name名称
pd.pivot_table(df,index=['userLevel','menu'],values='readCnt',columns='star',aggfunc=[len],fill_value=0,margins=True,margins_name='总计')
# 显示总计
len
star1020304050总计
userLevelmenu
02人午晚餐501055084792071349.0
4人午/晚自助6028722079259.0
6人午/晚自助002001838.0
单人下午自助烤肉0201014020181.0
单人午/晚自助00100010.0
单人午晚餐4030289185145689.0
周一至周五自助烤肉/周六日及节假日自助烤肉2选1003251846.0
周一至周五自助烤肉,免费WiFi00001010.0
学生专享午晚自助3740134105189505.0
12人午晚餐1948232282237818.0
4人午/晚自助00000NaN
6人午/晚自助00000NaN
单人下午自助烤肉780020098.0
单人午/晚自助00000NaN
单人午晚餐0409681129346.0
周一至周五自助烤肉/周六日及节假日自助烤肉2选100000NaN
周一至周五自助烤肉,免费WiFi00001212.0
学生专享午晚自助42077490168.0
22人午晚餐1001573506784411726.0
4人午/晚自助57013314695431.0
6人午/晚自助00352738100.0
单人下午自助烤肉006516108189.0
单人午/晚自助00017017.0
单人午晚餐080289263200832.0
周一至周五自助烤肉/周六日及节假日自助烤肉2选10102801553.0
周一至周五自助烤肉,免费WiFi00000NaN
学生专享午晚自助740134209269659.0
32人午晚餐1001436206947252282.0
4人午/晚自助1420138137205514.0
6人午/晚自助80383998183.0
.....................
周一至周五自助烤肉,免费WiFi00000NaN
学生专享午晚自助1591144346210806.0
42人午晚餐60802044813511176.0
4人午/晚自助020589890266.0
6人午/晚自助00193756112.0
单人下午自助烤肉004082068.0
单人午/晚自助00002020.0
单人午晚餐20107228157108620.0
周一至周五自助烤肉/周六日及节假日自助烤肉2选1000411253.0
周一至周五自助烤肉,免费WiFi00000NaN
学生专享午晚自助0020174136330.0
52人午晚餐00687867213.0
4人午/晚自助003104778.0
6人午/晚自助000391554.0
单人下午自助烤肉00000NaN
单人午/晚自助00000NaN
单人午晚餐1014672127256.0
周一至周五自助烤肉/周六日及节假日自助烤肉2选100001414.0
周一至周五自助烤肉,免费WiFi00000NaN
学生专享午晚自助020207140151.0
62人午晚餐0020124476.0
4人午/晚自助000132033.0
6人午/晚自助00002020.0
单人下午自助烤肉00000NaN
单人午/晚自助00000NaN
单人午晚餐00002727.0
周一至周五自助烤肉/周六日及节假日自助烤肉2选100000NaN
周一至周五自助烤肉,免费WiFi00000NaN
学生专享午晚自助00001919.0
总计773112045545659511717223.0

64 rows × 6 columns

aggfunc传入字典,规定单个字段对应的聚合函数
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函数传入一个字典,规定单个字段对应的聚合函数
readCntstar
sumlen
userLevel01234560123456
menu
2人午晚餐250597011869212154152259046436200353249577244134981817262282117621376
4人午/晚自助11475970357657424148172507198995810325904315142667833
6人午/晚自助1536004137223825610948033263688803801001831125420
单人下午自助烤肉9935932249967403853527746666300181981891036800
单人午/晚自助2424004068113280302200010017202000
单人午晚餐82146484106466094234581405690134352668639689346832115062025627
周一至周五自助烤肉/周六日及节假日自助烤肉2选13938016661291343559510460534353140
周一至周五自助烤肉,免费WiFi420121200000101200000
学生专享午晚自助393106272327128341970631811182485619113157550516865980633015119
可以使用query 进行查询数据

table=pd.pivot_table(df,index=['menu'],columns=["userLevel"],values=["readCnt",'star'],
               aggfunc={"star":len,"readCnt":[np.sum]})
table
readCntstar
sumlen
userLevel01234560123456
menu
2人午晚餐2505970.01186921.02154152.02590464.03620035.032495.077244.01349.0818.01726.02282.01176.0213.076.0
4人午/晚自助1147597.0NaN357657.0424148.0172507.019899.058103.0259.0NaN431.0514.0266.078.033.0
6人午/晚自助15360.0NaN41372.0238256.0109480.033263.068880.038.0NaN100.0183.0112.054.020.0
单人下午自助烤肉993593.0224996.0740385.0352774.066663.0NaNNaN181.098.0189.0103.068.0NaNNaN
单人午/晚自助24240.0NaN40681.013280.030220.0NaNNaN10.0NaN17.020.020.0NaNNaN
单人午晚餐821464.0841064.0660942.03458140.0569013.0435266.08639.0689.0346.0832.01150.0620.0256.027.0
周一至周五自助烤肉/周六日及节假日自助烤肉2选13938.0NaN16661.02913.04355.0951.0NaN46.0NaN53.043.053.014.0NaN
周一至周五自助烤肉,免费WiFi420.01212.0NaNNaNNaNNaNNaN10.012.0NaNNaNNaNNaNNaN
学生专享午晚自助393106.0272327.01283419.0706318.01118248.056191.0131575.0505.0168.0659.0806.0330.0151.019.0
高级的透视表查询语句
table.query("menu==['2人午晚餐','单人午晚餐']")
readCntstar
sumlen
userLevel01234560123456
menu
2人午晚餐2505970.01186921.02154152.02590464.03620035.032495.077244.01349.0818.01726.02282.01176.0213.076.0
单人午晚餐821464.0841064.0660942.03458140.0569013.0435266.08639.0689.0346.0832.01150.0620.0256.027.0

至此,pandas中的透视表的功能实例实现完成

posted on 2018-08-20 23:51 多一点 阅读(...) 评论(...) 编辑 收藏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值