Pandas 可视化图表之pivot_table透视图

前言

续前几篇文章,应朋友帮忙,拿C#写了个简单操作Excel数据的小工具,了解过Python基础语法之后,拿Python重新实现了一遍,主要用到了几个库,比如Pandas,PyQt5,logging,coloredlogs等。回溯C#代码逻辑与Python代码逻辑,发现Python操作起来简单很多很多,尤其有了利器Pandas之后,代码变得异常简单。

后面小工具又有了新需求,希望把Excel里面的某些数据统计生成可视化图表。于是重读Pandas十分钟入门,发现又有了新感悟,原来可以更加简单。之前的思路是对DataFrame进行各种groupby,得到需要的Series,然后拼装成生成图表需要的DataFrame。思路大致方向应该没错,只是没想到原来有更简便的方法,那就是pivot_table,可以理解成Excel里面的透视图。这个强大的api几乎能满足大多数对数据进行各种骚操作,比如分组,筛选,统计等。

话不多说,开始正文。。。。

pandas.pivot_table介绍

pandas.pivot_table(data, values=None, index=None, columns=None, aggfunc=‘mean’, fill_value=None, margins=False, dropna=True, margins_name=‘All’, observed=False)→ ‘DataFrame’

Parameters说明

data:DataFrame结构的原始数据

values:需要进行聚合的列,aggfunc参数指定了聚合方式,默认聚合方式是mean(与average的区别可以自行搜索),也可以指定聚合函数。可选参数

index:需要用来分组并索引成行的列,最终将被当做索引(行)。如果传进来是数组,将会在行上生成多层索引。

columns:需要用来分组并索引成列的列,最终将被当做列的索引。如果传进来是数组,同样将会在列上生成多层索引。***Note:***注意与参数“values”的区别,“values”指定的列并不会去分组,只会用聚合函数去生成最终的列。而“columns”指定的列会进行分组,并作用于values指定的列。

aggfunc:聚合函数。可以是聚合函数列表或者字典。默认聚合方式是mean。如果用聚合函数列表的话,会对每一个索引列,根据聚合函数列表分别生成对应的列。如果是聚合函数字典,可以是“列名:聚合函数”,对于指定的列进行对应的聚合。

fill_values:用来替换NaN的值,标量,默认是 None。

margins:是否显示汇总(会增加label:All)。布尔值,默认是False。

dropna:是否丢弃全部是NaN的列。布尔值, 默认是True。

margins_name:汇总的名称。字符串,默认是 ‘All’。与***margins***参数配合使用。

observed:当Grouper是Categoricals分类者时,是否只显示Grouper中定义的freq的数据。True就只显示间隔频率的数据。False就显示全部Grouper的数据。默认是 False。如果Grouper不是Categoricals,此参数无意义。

Changed in version 0.25.0.


***Note:***这里说一下“observed”这个参数,根据我自己的理解,是这样的。在指定Grouper的freq参数时会设置一个间隔,如果这里observed设置为True,则只显示满足间隔条件的数据,其他不满足间隔条件的将不会显示。但是当observed设置为False时,则会显示全部数据。一般这个间隔指的是Date类型的数据,比如每个月第一天,或者每周末等等这些间隔。如果理解有误,欢迎批评指正!不胜感激!!!


Returns:返回DataFrame类型的数据表。

PS:不得不感叹Pandas的强大,如果从某个点去研究Pandas,可能会慢慢触及到其他方面,而且它提供的功能真的很强大,只有想不到没有做不到。

pandas.pivot_table图解

有大神总结了一张图,非常清晰的解释了pivot_table的各个参数的作用域。再次奉上,多谢这位大神!

在这里插入图片描述

参考链接

  • https://www.cnblogs.com/onemorepoint/p/8425300.html
  • https://nbviewer.jupyter.org/url/pbpython.com/extras/Pandas-Pivot-Table-Explained.ipynb
  • https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.pivot_table.html
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值