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

2022年05月11日 阅读数:3
这篇文章主要向大家介绍Pandas玩转数据透视表,用它就够了~,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

你们好,我是丁小杰。

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

导入示例数据

首先导入演示的数据集。web

import pandas as pd

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

参数说明

主要参数:svg

  • 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能够实现一样的效果。ui

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

添加columns参数,对列分组。spa

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

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

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

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

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

若是须要添加合计列,只需指定margins=True便可,同时根据须要指定合计名称。blog

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)

以上就是pandas数据透视的经常使用操做了,使用起来也是十分简单,你们能够本身练习一下,若是文章对你有帮助,请点赞支持一下哦!


对于刚入门 Python 或是想要入门 Python 的朋友,能够经过关注公众号“Python新视野”,一块儿交流学习,都是重新手走过来的,有时候一个简单的问题卡好久,但可能别人的一点拨就会恍然大悟,由衷的但愿你们可以共同进步。

👇🏻 关注公众号卡片,回复“交流群”,一块儿学习Python👇🏻