Python数据分析:pandas透视表pivot_table核心参数详解
本文详解Python中pandas库的pivot_table函数,通过index、values、columns及aggfunc四大核心参数,演示如何对Excel数据进行动态分组、汇总与计算。涵盖均值、求和等多种统计方式,帮助开发者高效完成数据清洗与分析任务。
数据透视表是一种支持动态排列与分类汇总的表格格式。在Python的数据分析生态中,这一功能由非标准库pandas提供的pivot_table模块实现。
pivot_table允许用户灵活定制数据分析需求以进行汇总。尽管Excel中早已内置了数据透视表工具,但将其引入Python语言后,为数据分析师提供了更为强大的自动化处理便利。
pivot_table函数包含四个关键参数:index、values、columns和aggfunc。通过配置这些参数的不同属性,可以满足多样化的数据分析需求。
由于pivot_table属于pandas库的功能,使用前需确保已安装该库。通常采用pip工具进行安装,具体命令如下:
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple/
首先,利用传统的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透视表相关内容,可搜索本站往期文章或继续浏览后续文章,感谢支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









