一、图解Pandas透视表、交叉表

终于开始Pandas进阶内容的写作了。相信很多人都应该知道透视表,在Excel会经常去制作它,来实现数据的分组汇总统计。在Pandas中,我们把它称之为pivot_table。

透视表的制作灵活性高,可以随意定制我们想要的的计算统计要求,一般在制作报表神器的时候常用。

下面通过具体的例子来对比Excel和Pandas中透视表的实现方法。

二、Excel透视表

下面是在Excel表格中使用消费数据制作的透视表(部分数据截图),我们统计的是不同性别不同日期下的消费金额和小费,同时还显示了总计的数据。

那如果是使用pandas该如何来实现呢???

三、透视表参数

pandas中实现透视表使用的是:pandas.pivot_table

pd.pivot_table(data,  # 制作透视表的数据values=None,  # 值index=None,  # 行索引columns=None,  # 列属性aggfunc='mean',   # 使用的函数,默认是均值fill_value=None,  # 缺失值填充margins=False, # 是否显示总计dropna=True,   # 缺失值处理margins_name='All', # 总计显示为Allobserved=False,  sort=True  # 排序功能  版本1.3.0才有)

最重要的参数还是:values、index、columns、aggfunce,甚至包含margins、margins_name

附上官网学习地址:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.pivot_table.html

四、透视表参数详解

4.1参数index

index表示的是我们生成透视表指定的行索引

1、单层索引

2、多层行索引

4.2参数values

在上面index参数的使用中,我们没有指定values参数,pandas会默认将全部的数值型数据进行透视表的计算,现在指定参数计算的数据:

  • 带上values,只会显示我们指定的数据

  • 不带上values,数值型的数据汇总结果全部显示

4.3参数columns

columns是一个显示列属性信息的参数

如果我们将day放在index参数中,会是什么样子呢?

相当于是:将上面的宽表格式转成了下面的长表格式

再对比下两种不同的形式:

4.4参数aggfunc

aggfunc是一个很灵活的参数,它是用来指定我们汇总想用哪种函数,默认是均值mean,我们也可以使用求和sum、最值max等。多个函数需要放在一个列表中。

我们将默认求平均mean的情况与求和的情况进行对比:

均值和sum求和之间的关系:

我们可以在aggfunc函数中指定多个函数,将这些函数放在同一个列表中:

  • 求和:np.sum

  • 求均值:mean

  • 求个数:size

再看一个例子:

4.5参数margins、margins_name

这两个参数的作用是对透视表中的分组数据进行汇总显示。需要注意的是:只有margins=True,参数margins_name的设置才会生效。

修改汇总显示的名字:

如果有列字段,也会显示汇总的数据:

五、交叉表crosstab

交叉表可以理解成一种特殊的透视表,专门用于计算分组的频率。

5.1参数

交叉表中每个参数的解释,很多还是和透视表相同的:

pandas.crosstab(index, # 行索引,必须是数组结构数据,或者Series,或者是二者的列表形式columns, # 列字段;数据要求同上values=None,  # 待透视的数据rownames=None,  # 行列名字colnames=None,  aggfunc=None,  # 透视的函数margins=False,  # 汇总及名称设置margins_name='All', dropna=True, # 舍弃缺失值normalize=False  # 数据归一化;可以是布尔值、all、index、columns、或者{0,1})

对最后一个参数的解释:如何选择归一化的标准

  • If passed ‘all’ or True, will normalize over all values:使用all,对全部的数值型数据归一化

  • If passed ‘index’ will normalize over each row:使用index,仅在行上归一化

  • If passed ‘columns’ will normalize over each column:使用columns,仅在列上归一化

  • If margins is True, will also normalize margin values:如果margins=True,总计值也会参与归一化

5.2参数使用

当然,有时候透视表和交叉表是可以实现相同的功能:

六、groupby实现

其实透视表或者交叉表的本质还是分组汇总统计结果,我们也可以利用groupby来实现:

1、先分组统计

2、轴旋转unstack

上面的结果格式上不是很友好,使用的是多层次索引,我们使用轴旋转函数unstack将行转成列:

七、groupby和透视表比较

最后再用一个例子来比较下groupby和透视表:

八、备忘录

这个网上非常流行的一张图解Pandas透视表函数的图形,它利用一份简单的数据,清晰明了地讲解了pivot_table函数的每个参数的含义,保存备用!

网络图


以上就是本文的全部内容,欢迎在评论区与我进行讨论~

推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

  • 1).卧槽!Pdf转Word用Python轻松搞定!

  • 2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃

  • 3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密

  • 4).80行代码!用Python做一个哆来A梦分身

  • 5).你必须掌握的20个python代码,短小精悍,用处无穷

  • 6).30个Python奇淫技巧集

  • 7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货

  • 8).再见Python!我要学Go了!2500字深度分析!

  • 9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片

点阅读原文,领AI全套资料

一文让你吃透!图解 pandas 透视表、交叉表!相关推荐

  1. 【Python】开启Pandas进阶:图解Pandas透视表、交叉表

    一.图解Pandas透视表.交叉表 终于开始Pandas进阶内容的写作了.相信很多人都应该知道透视表,在Excel会经常去制作它,来实现数据的分组汇总统计.在Pandas中,我们把它称之为pivot_ ...

  2. pandas高级处理-交叉表与透视表

    pandas高级处理-交叉表与透视表 1 交叉表与透视表什么作用  [就是探究两列数据之间的关系] 探究股票的涨跌与星期几有关? 以下图当中表示,week代表星期几,1,0代表这一天股票的涨跌幅是好还 ...

  3. Pandas数据处理_分组聚合_透视表交叉表

    1.分组聚合 1.1拆分数据 groupby方法的参数及其说明: #该方法提供的是分组聚合步骤中的拆分功能, #能根据索引或字段对数据进行分组.其常用参数与使用格式如下:DataFrame.group ...

  4. python 数据分析(六)astype('category')按类别分组 + 分组聚合操作 + 透视表 + 交叉表 + excel表的数据处理

    文章目录 一.按照类别单独分类astype() 1. astype()用法 二.时间操作 1. 第一种:直接利用to_datetime() 2. 第二种:Series.dt 三.分组聚合操作 1. 分 ...

  5. crosstab交叉表_数据透视之交叉表 crosstab()

    共1866字,阅读时间4分钟  点击上方蓝色字体关注公众号 1 回顾 昨天总结了Python的69个内置函数,回看:  Python 69个内置函数分类总结  这些内置函数无论何时,我们都可以任意调用 ...

  6. pandas基础(part5)--透视表与交叉表

    学习笔记,这个笔记以例子为主. 开发工具:Spyder 文章目录 Pandas透视表 Pandas交叉表 Pandas透视表 透视表(pivot table)是各种电子表格程序和其他数据分析软件中一种 ...

  7. 第2关:Pandas创建透视表和交叉表

    任务描述 本关任务:使用Pandas加载tip.csv文件中的数据集,分别用透视表和交叉表统计顾客在每种用餐时间.每个星期下的小费总和情况. 相关知识 透视表 透视表是各种电子表格程序和其他数据分析软 ...

  8. 【Python】数据分析.pandas.透视表与交叉表

    文章目录 数据分析-pandas.透视表与交叉表 一.透视表 二.交叉表 三.任务实现 数据分析-pandas.透视表与交叉表 一.透视表 数据透视表是数据分析中常见的工具之一,根据一个或多个键值对数 ...

  9. Pandas 统计分析基础 笔记5 _任务4.5 创建透视表与交叉表

    文章目录 pandas__任务4.5 创建透视表与交叉表 4.5 创建透视表与交叉表 代码4-67 使用订单号作为透视表索引制作透视表 代码 4-68 修改聚合函数后的透视表 代码 4-69 使用订单 ...

最新文章

  1. php ajax mysql 分页查询_基于PHP_MySql_Ajax的分页技术方案
  2. 树上分块 - Successor HDU - 4366
  3. 算法--生成m个指定范围的不重复随机数的三种方法分析(Java实现)
  4. 还是俄罗斯方块之android版
  5. WeakHashMap和Java引用类型详细解析
  6. LeetCode:Count Primes
  7. Java基础笔记 – Annotation注解的介绍和使用 自定义注解
  8. 切 5G 的蛋糕?先练好内功吧
  9. DJ 算法的队列优先优化
  10. matlab2016b慢,Matlab 2016a/b中调用GPU速度巨慢的解决办法
  11. 你有没有思考过,特斯拉为什么先进?
  12. 计算机辅助设计及工程分析的特点,EDA技术的简单介绍及特点分析
  13. SuiteCRM图片上传(自定义控制器)
  14. mt6573集成MCP nandflash的详细方法
  15. Flutter 项目实战 应用图标启动页三
  16. manjaro yay安装企业微信
  17. openwrt 怎么进入串口_OpenWrt路由器读取串口数据,建立tcp服务
  18. english words
  19. hutool生成二维码
  20. 100英寸的电视机尺寸到底有多大?需要多少钱?

热门文章

  1. Compator/Comparable的比较
  2. 年后跳槽如何准备?(前端方向)
  3. C++计算矩阵对角线和的程序
  4. 金融危机,教你从网络上找到一份好兼职
  5. GB28181开发(二) pjsip库SDP协议扩展
  6. Github每日精选(第21期):开源文件同步syncthing
  7. python输出图片到word_python将文本转换成图片输出的方法
  8. 持续集成、持续交付、持续部署
  9. Kubernetes 在本来生活网的落地实践
  10. unittest使用详解