更多文章可关注微信公众号:Excelwork
习惯了使用Excel中的透视表功能,在使用Python处理数据时,我们也希望也能快速的进行排列、计算数据,以供我们完成快速观察、分析数据。在pandas库中,pivot_table函数可以帮助我们完成相关工作。
其语法如下:
pandas.pivot_tatle
(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All', observed=False)
data为我们分析的数据集
values表示被统计的数据列(一列或多列)
index根据索引进行分组
columns表示按列字段进行分组
aggfunc表示对数据汇总使用的函数,默认取均值(可以是函数、函数列表、字典)
margins默认False,表示不输出汇总项,同Excel透视表的汇总项
数据样例如下:
01 简单应用
计算各销售区域平均营销费用,aggfunc参数按默认即可:
p=pd.pivot_table(data,values='营销费用:万',columns='销售区域')
结果如下:
02 按索引分组
计算各销售区域平均营销费用,将columns参数改为index:
p2=pd.pivot_table(data,values='营销费用:万',index='销售区域')
结果如下:
03 输出总计
计算各销售区域平均营销费用,将columns参数改为index,增加margins参数,等于True:
p3=pd.pivot_table(data,values='营销费用:万',index='销售区域',margins=True)
结果如下:
04 按字段列表分组
计算各销售区域、各类别的平均营销费用:
p4=pd.pivot_table(data,values='营销费用:万',index=['销售区域','类别'])
结果如下:
05 设置函数
计算营销费用和销售费用总和,通过给aggfunc参数选择sum函数即可:
p5=pd.pivot_table(data,values=['营销费用:万','销售金额:万'],columns='销售区域',aggfunc=np.sum)
结果如下:
06 设置函数列表
这里仅为举例子需要,比如对营销费用求和,对销售金额取均值,则需要给aggfunc传入函数列表:
p6=pd.pivot_table(data,values=['营销费用:万','销售金额:万'],index='销售区域',aggfunc=[np.sum,np.average])
结果如下: