数据汇总是指基于已有的明细数据做进一步的统计计算,这是数据分析过程中必备的基础知识,也是学习或工作中经常使用到的知识点,类似于Excel中透视表说完成的数据汇总以及数据库中实现的分组聚合。
Pandas模块既提供了Excel透视表的功能,也提供了数据库中的分组聚合功能。
一、透视表功能
该功能的主要目的就是实现数据的汇总统计,例如按照某个分组变量统计商品的平均价格、销售数量、最大利润等,或者按照某两个分组变量构成统计学中的列联表(计数统计),甚至基于多个分组变量统计各组合下的均值、中位数、总和等。
Pandas模块中的pivot_table函数就是实现透视表功能的强大函数,该函数简单易用,与Excel操作思想完全一致。
pd.pivot_table(data,values=None,index=None,columns=None,aggfunc='mean',fill_value=None,margins=False,dropna=True,margins_name='All')
pivot_table函数的参数说明如下:
- data:指定需要构造透视表的数据集
- values:指定需要拉入“数值”框的变量列表
- index:指定需要拉入“行标签”框的变量列表
- columns:指定需要拉入“列标签”框的变量列表
- aggfunc:指定数组的统计函数,默认为统计均值,也可以指定numpy模块中的其他统计函数(numpy是Python中一个专门用于角数值运算的模块)
- fill_value:指定一个标量,用于填充缺失值
- margins:bool类型参数,是否需要显示行或列的总计值,默认为False
- dropna:bool类型参数,是否需要删除整列为缺失的变量,默认为False
- margins_name:指定行或列的踪迹名称,默认为All
以下列数据来看看单个分组变量的均值统计:
import pandas as pd
path = r'C:\Users\lin-a\Desktop\【数据分析从入门到进阶】配套数据\第5章\datas\diamonds.csv'
diamonds = pd.read_table(path,sep=',')
diamonds
carat | cut | color | clarity | depth | face_width | price | x | y | z | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0.23 | Ideal | E | SI2 | 61.5 | 55.0 | 326 | 3.95 | 3.98 | 2.43 |
1 | 0.21 | Premium | E | SI1 | 59.8 | 61.0 | 326 | 3.89 | 3.84 | 2.31 |
2 | 0.23 | Good | E | VS1 | 56.9 | 65.0 | 327 | 4.05 | 4.07 | 2.31 |
3 | 0.29 | Premium | I | VS2 | 62.4 | 58.0 | 334 | 4.20 | 4.23 | 2.63 |
4 | 0.31 | Good | J | SI2 | 63.3 | 58.0 | 335 | 4.34 | 4.35 | 2.75 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
53935 | 0.72 | Ideal | D | SI1 | 60.8 | 57.0 | 2757 | 5.75 | 5.76 | 3.50 |
53936 | 0.72 | Good | D | SI1 |