Pandas 透视表功能及透视数据筛选提取(筛选提取)

透视出来的数据如何按需求筛选呢?

别急,上一篇文章讲了pandas 里面的透视表制作,就像Excel一样,透视表可以筛选,可以提取,别急,pivot_table也可以,让我慢慢道来。

一. 筛选提取实例

透视一层的数据就没的必要筛选,所以这里的筛选指的都是2层透视以上的。
首先看一个透视表

aa=pd.pivot_table(data1,values=['消费','展现量'],index=['业态','城市'],aggfunc={ '消费':'sum','展现量':'count'})
aa.head(20)
				展现量	消费
业态	城市		
融资	上海	677	1.165594e+06
		北京	539	9.218017e+05
		成都	566	1.285583e+06
		杭州	376	3.617674e+05
		武汉	395	4.748063e+05
		重庆	524	8.546292e+05
认证	成都	27	3.448020e+03
资质	上海	858	5.413939e+04
		东莞	221	1.079273e+04
		企业服务研究院	76	4.427083e+04
		北京	1200	1.651653e+05
		宜昌	280	8.869690e+03
		广州	871	9.633184e+04
		成都	833	1.249824e+05
		杭州	715	6.051889e+04
		武汉	861	7.227470e+04
		深圳	666	6.583873e+04
		郑州	377	3.735482e+04
		重庆	859	9.472752e+04
		长沙	775	4.942042e+04
  1. 需求:只看资质业态的数据
aa.loc[pd.IndexSlice['资质']]
		展现量	消费
城市		
上海	858	54139.388288
东莞	221	10792.732777
企业服务研究院	76	44270.830000
北京	1200	165165.305125
宜昌	280	8869.689556
广州	871	96331.844330
成都	833	124982.446914
杭州	715	60518.890780
武汉	861	72274.697308
深圳	666	65838.728904
郑州	377	37354.815461
重庆	859	94727.515453
长沙	775	49420.415103
  1. 需求:只看杭州地区的数据
aa.loc[pd.IndexSlice[:,"杭州"],]
				展现量	消费
业态	城市		
互联网	杭州	807	84936.879896
工商	杭州	447	39121.500000
法律	杭州	275	217838.180000
综合	杭州	362	76875.420000
融资	杭州	376	361767.429167
资质	杭州	715	60518.890780
  1. 需求:只看消费数据
aa.loc[pd.IndexSlice[:,:],'消费'].head()
业态    城市  
互联网  上海       88684.016736
       上海平台       116.420000
       广州      107888.500000
       广州平台        85.190000
       成都      104646.559016
Name: 消费, dtype: float64

二. 总结

筛选提取方法好几种,但是我平时用的多的就是这一种:
loc+pd.IndexSlice
loc[row,column]:
row代表行数,这里用索引的层级代替
columns代表列名,多个也是[]括起来
pd.IndexSlice[levels]:层级,就是透视的层级,全选用‘:’代替,每一层级间用‘,’分开,顺序不那个乱了
例如:

aa.loc[pd.IndexSlice['融资',:],['消费','展现量']].head()

				消费			展现量
业态	城市		
融资	上海	1.165594e+06	677
		北京	9.218017e+05	539
		成都	1.285583e+06	566
		杭州	3.617674e+05	376
		武汉	4.748063e+05	395
    原文作者:小陈步吃人
    原文地址: https://blog.csdn.net/Itsme_MrJJ/article/details/108517600
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞