
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"
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)