记录第 17 天(2):pd.pivot_table
2020-09-22 本文已影响0人
哼哼哼哼哼哼哼哼哼哼哼哼哼哼哼
最近有一些数据分析任务,所以重温了下pd.pivot_table。
pivot_table 和Excel中的数据透视表本质是一样的,都是通过行字段和列字段对值字段进行分类汇总,可选项包括汇总方式,空值的填写方式和是否需要总计行/列,具体为:
数据源: data,首位参数;
行字段: index,先后顺序代表层级关系;
列字段: columns,先后顺序代表层级关系;
值字段: values,如果有多个,代表针对不同的值分别进行分类汇总;
汇总方式: aggfunc,包括:count, sum, min, max,mean, median, std, var;
合计行列:margins: True/False;
合计行列名:margins_name;
空值填充:fill_value
pivot_table 所生成的也是一个 data frame 型数据,因此后续对它的微调主要采用 data frame 的方式进行行:
重排序(直接指定): pd. reindex;
重排序(按值排序): pd. sort._values
排序完成后我碰到了个问题,由于之前用 margins 参数在 pivot_table 中生成了合计行,因此在进行 sort_values时合计行因为数值是最大的,就跑到了最上面,而我想按照惯例把合计行放到最下面。想到的办法是先得到一个不含合计行的 index ,然后再把“合计”单独加到index 的末尾,最后再用这个index 来索引原pivot_tabel,得到一个总计行在最后的新pivot_tabel。期间用到的方法如下:
Series 转为数组: pd.tolist;
数组添加元素:list_1+ list_2