Pandas玩转数据透视表,用它就够了!

简说Python

共 2138字,需浏览 5分钟

 ·

2022-03-08 14:53

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

导入示例数据

首先导入演示的数据集。

import pandas as pd

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

参数说明

3305ed86fc8c00fafe51bb6d3b38a25b.webp

主要参数:

  • 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)
c489dedd020be74ce0e77361a0439aa0.webp

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

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

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

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

添加columns参数,对列分组。

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

对于上面结果中的空值,使用fill_value参数统一填充为0

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

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

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

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

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

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

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

以上就是pandas数据透视的常用操作了,使用起来也是十分简单,大家可以自己练习一下,如果文章对你有帮助,请点赞支持一下哦!

你的每一个点赞、在看,每一条留言,每一次转发,都对我很重要,感谢支持。

好的,那么下期见,我是爱猫爱技术,更爱思思的老表⁽⁽ଘ( ˙꒳˙ )ଓ⁾⁾

近期阅读学习推荐

服务器被黑客攻击,用来挖矿!怎么办?

怎么才能写出好看的Python代码?这五个工具你得用上

建议收藏:12个Pandas数据处理高频操作

如何找到我

浏览 38
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报