好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Python+Pandas实现数据透视表

大家好,我是丁小杰。

对于数据透视表,相信对于 Excel 比较熟悉的小伙伴都知道如何使用它,并了解它的强大之处,而在 pandas 中要实现数据透视就要用到 pivot_table 了。

导入示例数据

首先导入演示的数据集。

import?pandas?as?pd

df?=?pd.read_csv('销售目标.csv')
df.head()

参数说明

主要参数:

data :待操作的 DataFrame values :被聚合操作的列,可选项 index :行分组键,作为结果 DataFrame 的行索引 columns :列分组键,作为结果 DataFrame 的列索引 aggfunc :聚合函数/函数列表,默认 numpy.mean 这里要注意如果 aggfunc 中存在函数列表,则返回的 DataFrame 中会显示函数名称 fill_value :默认 None,可设定缺省值 dropna :默认 True,如果列的所有值都是 NaN,将被删除;False 则保留 margins :默认 False,设置为 True 可以添加行/列的总计 margins_name :默认显示 'ALL',当  margins = True  时,可以设定 margins  行/列的名称

常用操作

使用 pivot_table 时必须要指定 index ,因为计算时要根据 index 进行聚合。

pd.pivot_table(df.head(20),
???????????????index='订单日期',
???????????????aggfunc=np.sum)

通过指定 value 来选择被聚合的列。

pd.pivot_table(df.head(20),
???????????????values='销售目标',
???????????????index='订单日期',
???????????????aggfunc=np.sum)

当只指定 index 进行聚合时,其实用 groupby 可以实现同样的效果。

df.head(20).groupby(['订单日期'])['销售目标'].sum().reset_index()

添加 columns 参数,对列分组。

pd.pivot_table(df.head(10),
???????????????values='销售目标',
???????????????index=['订单日期',?'类别'],
???????????????columns='细分',
???????????????aggfunc=np.sum)

pd.pivot_table(df.head(10),
???????????????values='销售目标',
???????????????index=['订单日期',?'类别'],
???????????????columns=['细分'],
???????????????aggfunc=np.sum,
???????????????fill_value=0)

现在按年份来统计销售数据,注意此时的 aggfunc 参数,当参数值包含列表时,在结果 DataFrame 中就会显示函数名称。

pd.pivot_table(df,
???????????????values='销售目标',
???????????????index=['年份',?'类别'],
???????????????columns='细分',
???????????????aggfunc=[np.sum])

如果需要添加合计列,只需指定 margins=True 即可,同时根据需要指定合计名称。

pd.pivot_table(df,
???????????????values='销售目标',
???????????????index=['年份',?'类别'],
???????????????columns='细分',
???????????????aggfunc=np.sum,
???????????????margins=True,
??????????????margins_name='合计')

当然与 groupby 类似,对于计算函数我们可以同时指定多种方式。

pd.pivot_table(df,
???????????????values='销售目标',
???????????????index=['年份',?'类别'],
???????????????columns=['细分'],
???????????????aggfunc={'销售目标':?[max,?np.sum]},
???????????????fill_value=0)

到此这篇关于Python+Pandas实现数据透视表的文章就介绍到这了,更多相关Python 数据透视表内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

查看更多关于Python+Pandas实现数据透视表的详细内容...

  阅读:42次