Python学习笔记——第十弹透视表功能⑤

280 阅读2分钟

「这是我参与11月更文挑战的第23天,活动详情查看:2021最后一次更文挑战」。

该功能的实现和Excel的给同时大同小异。透视表也是实现数据的汇总统计。例如,按照某个分组变量统计商品的平均价格、销售数量、最大利润等,或者按照某两个分组变量构成统计学中的列联表(技术统计),甚至是基于多个分组变量统计各组合下的均值、中位数,总和等。如果你使用Excel,只需要简单的拖拉拽就可以迅速形成一张统计表。

Python中,pandas模块提供了实现透视表功能的pivot_table函数,该函数简单易用,与Excel的曹邹思想完全一致。以下是该函数的参数含义:

                aggfunc='mean',fill_value=None,margins=False,
                dropna=True,margins_name='All')

data:指定需要构造透视表的数据。

values:指定需要拉入“数值”框的字段列表。

index:指定需要拉入“行标签”框的字段列表。

columns:指定需要拉入“列标签”框的字段列表。

aggfunc:指定数值统计函数,默认为攻击均值,也可以指定numpy模块中的其他统计函数。

fill_value:指定一个标量,用于填充缺失值。

margins:bool类型参数,是否需要显示行或列的总计值,默认为False.

dropna:bool类型参数,是否需要删除整列为缺失的字段,默认为True.

margins_name:指定行或列的总计名称,默认为All。

举例子:

pd.pivot_table(r'C:\Users\Administrator\Desktop\diamonds.csv',sep=',')
pd.pivot_table(data=diamonds,index='color',values='price',
                dropna=True,margins_name='总计')

结果就是基于单个分组变量color的汇总统计(price的均值),返回结果属于pandas模块中的序列类型,该结果与Excel形成的透视表完全一致。

构造两个分组变量的列联表代码:

#导入numpy模块
import numpy as np
pd.pivot_table(data=diamonds,index='clarity',columns='cut',values='carat',
              aggfunc=nplsize, margins=True,margins_name='总计')