Python制作数据分析透视表的方法详解
作者:Sir 老王
透视表是一种可以对数据动态排布并且分类汇总的表格格式,在常用的python的数据分析非标准库pandas中体现为pivot_table模块。
pivot_table数据透视表可以灵活的定制数据分析需求进行汇总,当然在Excel办公操作中早就存在了数据透视表的工具。如今,数据透视表被应用在python语言中更是给我们带来了大大地便利。
pivot_table有四个最重要的参数index、values、columns、aggfunc,通过设置不同的参数属性从而完成不同的数据分析需求。
pivot_table是pandas非标准库下面的数据透视表模块,因此需要安装pandas非标准库。按照以往的惯例还是采用pip的方式来进行安装即可。
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple/
首先,使用传统的excel读取函数read_excel将Excel文件中的数据读取出来,读取数据返回的是Dataframe格式的数据。
import pandas as pd # 导入pandas模块 df = pd.read_excel('C:/test/data.xlsx') # 读取Excel数据文件 print(df.tail()) # 打印部分结果 # 名称 年龄 班级 成绩 表现 # 21 Python 集中营 24 1739 111 A+ # 22 Python 集中营 25 1740 112 A+ # 23 Python 集中营 26 1741 113 A+ # 24 Python 集中营 27 1742 114 A+ # 25 Python 集中营 28 1743 115 A+
1、pivot_table函数index属性
我们通过pandas的read_excel函数已经将Excel数据文件读取并返回DataFrame数据对象。接下来通过数据透视表的方式来进行数据汇总,先来看看使用index属性是如何汇总结果的。
print(pd.pivot_table(df, index=[u'名称'])) # 年龄 成绩 班级 # 名称 # Python 集中营 15.5 102.5 1730.5
上面我们只指定了一个索引'名称'字段,从结果可以看出pivot_table函数自动将名称为'Python 集中营'的值汇总了一下,并且将其他的数字属性的字段全部计算得到了均值。
print(pd.pivot_table(df, index=[u'名称', u'表现'])) # 年龄 成绩 班级 # 名称 表现 # Python 集中营 A+ 15.5 102.5 1730.5
若是我们使用了两个或是两个以上的字段作为index的值则实际上会进行两次或两次以上的分组,这里体现为先对'名称'字段进行分组、其次再对'表现'字段进行分组。
2、pivot_table函数values属性
values属性即在使用时将指定的字段显示出来,因为有的情况下并不需要将所有的字段都展示出来往往可能用到的是其中的几个字段的值来参与运算。
print(pd.pivot_table(df, index=[u'表现'], values=[u'班级', u'成绩'])) # 成绩 班级 # 表现 # A+ 102.5 1730.5
需要注意的是values属性只能用来指定具有数字属性的字段,可能为了能够更好的实现分组统计的效果吧!
3、pivot_table函数aggfunc属性
aggfunc属性则是对计算方式的设置,也可以同时设置好几种计算方式将结果展示出来。在前面的统计中并没有设置,默认则是使用均值的算法来统计汇总信息的。
下面设置两种的计算方式来统计我们之前的结果,一种还是均值、另一种则是求和的方式将两种计算模式下的结果都统计出来。
print(pd.pivot_table(df, index=[u'名称'], values=[u'年龄', u'成绩'], aggfunc=['mean', 'sum'])) # mean sum # 年龄 成绩 年龄 成绩 # 名称 # Python 集中营 15.5 102.5 403 2665
可以发现汇总结果分别汇总出来了年龄和成绩的平均值、总和,效果还是相当理想的。
4、pivot_table函数columns属性
columns属性主要用来显示字符类型的字段的,若是字段对应的所在行没有值时则可以使用fill_value函数来填充默认值使数据变得完整,一般来说columns和fill_value是搭配使用的。
print(pd.pivot_table(df, index=[u'名称'], values=[u'年龄', u'成绩'], aggfunc=['mean', 'sum'], columns=[u'表现'], fill_value=0)) # mean sum # 年龄 成绩 年龄 成绩 # 表现 A+ A+ A+ A+ # 名称 # Python 集中营 15.5 102.5 403 2665
到此这篇关于Python制作数据分析透视表的方法详解的文章就介绍到这了,更多相关Python透视表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!