python pandas 某列取出某值_Python数据透视功能之 pivot_table()介绍

共850字,阅读时间3分钟

回顾

昨天总结了Pandas的顶层函数:pivot(),变化长格式数据为宽格式,详细可以回看: ce7191e47808ee4ef39b720cb1b56ccd.png深入Python数据分析:宽表如何重构为长表 

6a513819323529ea7f35972a3c2f63c0.png 深入Python数据分析:数据由长格式变为宽格式

pivot_table

pivot()函数没有数据聚合功能,要想实现此功能,需要调用Pandas包中的第三个顶层函数:pivot_table(),在pandas中的工程位置如下所示:

pandas

  |

pivot_table()

如下,构造一个df实例:

f8096c7fe63252cd0d70fab0aebd1ef3.png

调用如下操作:

6c641be372c241d9324673dd8cfd5945.png

参数index指明A和B为行索引,columns指明C列取值为列,聚合函数为求和,values是在两个轴(index和columns)确定后的取值用D列。得到结果如下:

1859883a24b4760b45eec384f2c423cf.png

其中聚合函数可以更加丰富的扩展,使用多个。如下所示,两个轴的交叉值选用D和E,聚合在D列使用np.mean(), 对E列使用np.sum, np.mean, np.max, np.min

204dbf61b14eaf1bf05e762bfa0aa443.png

得到结果如下所示:

11eeb8d566030b7156be61eb06f57bfe.png

函数原型

2a60c64c38bb2edf669936a8a4a02807.png

fill_value: 空值的填充值;

dropna: 如果某列元素都为np.nan, 是否丢弃;

margins: 汇总列, margins_name: 汇总名称

margins参数默认为False,如果设置为True,会得到每列的汇总,如下df实例

a2b6067b1122c6b00a0bc4ea64ad4c47.png

设置margins为True,汇总行索引为名称自定义为self_name:

5cec238a1547522a3fa0ee5ed68d5b53.png

注意

margins设置为True后,目前pandas 0.22.3版本只支持聚合函数为单个元素,不支持为list的情况,如下:

8f7fdf166f9d38f85ecec5a7c5366409.png

会报出异常:

0f805de792a803288bfe769ab9ce03f6.png

透过pivot_table聚合功能源码(如下所示),我们发现它本身是通过调用groupby()及其agg()实现的。

grouped = data.groupby(keys, observed=False)agged = grouped.agg(aggfunc)

总结

其他使用细节,会以后慢慢补充,pivot_table功能类似于excel中的数据透视表,在做数据分析时经常会用到。大家不妨平时中多使用现成的API,加速工作效率。


版权声明:本文为weixin_39574246原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。