20、pandas的透视表pivot_table

20、pandas的透视表pivot_table,第1张

透视表pivot_table()是非常强大的汇总运算函数。 在SQL语句和excel中透视表也是非常普遍的。

pivot_table()的主要参数有:

源数据:

使用pivot_table()进行透视表 *** 作:

values是要进行汇总、统计等运算的列,可以是多个(list格式);

index是作为新表的列名,可以是多个(list格式);

columns是作为新表的列名,可以是多个(list格式);

aggfunc是做汇总的统计运算方法,常用的简单运算都可以,也可以是多种方法(每个不同的列指定一种方法),这样就可以免去了多次使用透视表在进行合并的麻烦。

使用多种计算方法:

# 有趣的是 多个汇总方法如果用aggfunc=['sum','count'],就会报错 。而如果用numpy库的方法就正常(没有count函数)。

在不同的列使用不同的运算方法,可以使 用字典的形式 表明汇总方法:

不过这个跟excel的透视表相比还是缺少了一个汇总行,我们可以 使用margins=True来添加行列合计 :

还可以使用margins_name=' '来修改汇总行列的名称,当然了也可以使用rename()来修改:

fill_value = 0 是用来填充缺失值、空值。

dropna=True 是跳过整行都是空缺值的行。

这样我们就把pivot_table()的参数都介绍了,pivot_table是经常使用的一个函数,结合简单的计算函数一起使用会有很好的效果。

我们还可以把经过pivot_table()处理过的数据导出到电脑的excel文件里:

其实Pandas有pivot、pivot_table两个函数来做数据透视,作用是一样的,只是pivot_table算是pivot的增强版,pivot_table对数据格式要求不高,而且支持aggfunc、fillvalue等参数,所以这里主要介绍pivot_table。

不过这里提一下,在使用 pivot 函数过程中可能会经常碰到一些异常,比如下面这个:

这就是刚才说的, pivot 函数对数据有些要求,这时可以尝试使用 pivot_table

values、index、columns参数都比较好理解,就是指定index作为纵轴索引、columns作为横轴索引来观察指定的values值,另外aggfunc指定的是均值函数(mean),下面边用边深入理解。

index、columns参数必须传一个,否则会报以下错误:

只传index时

只传columns时

兄台不知道是否有疑问,原来数据中class、student这两列去哪里了???为啥只剩grades了???

我的理解是被忽略掉了,因为这两列不是数字,mean函数作用不了,为了更好理解我把默认的mean函数换成其他函数,慢慢往下看:

可以看到其实aggfunc接受的参数是一个Pandas中的Series对象,那我们把Series转成列表看下里面是啥.

搜德斯捏!!!原来就是通过指定维度后透视得到的值的列表,或者你可以理解是通过lookup来得到的一列值。所以mean函数在作用于class、student这两列是字符串元素的列表肯定是不对的,所以被过滤掉了。

基于上面的数据集,做些小需求来更深入理解 pivot_table 函数

(1)统计各个班级(class)的平均分

(2)统计各个班级(class)的平均分以及班级学生人数

(3)统计各个班级(class)的各个科目(subject)的平均分

(7)统计各个学生(student)的最高分,最低分,平均分

上面是多级索引,可能你想去掉grades这一级, 可以参考下面方法

stack()是行转列, 把grades从column变成了index, 再reset_index去掉grades

(8)获取各个学生(student)的最高分的level, 其中划分方式是: "C" <80 <= "B" <90 <= "A"


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11553242.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存