Pandas 库是用于数据分析的流行 Python 包。 Pandas 中处理数据集时,结构将是二维的,由行和列组成,也称为dataframe。 然而,数据分析的一个重要部分是对这些数据进行分组、汇总、聚合和计算统计的过程。

Pandas 数据透视表提供了一个强大的工具来使用 python 执行这些分析技术。

如果你是excel用户,那么可能已经熟悉数据透视表的概念。 Pandas 数据透视表的工作方式与 Excel 等电子表格工具中的数据透视表非常相似。 数据透视表函数接受一个df,一些参数详细说明了您希望数据采用的形状,并且输出是以数据透视表的形式汇总数据。

在下面的文章中,我将通过代码示例简要介绍 Pandas 数据透视表工具。

数据

在本教程中,我将使用一个名为“autos”的数据集。 该数据集包含有关汽车的一系列特征,例如品牌、价格、马力和每公里油耗等。

数据可以从 openml 下载。 或者可以使用 scikit-learn API 将代码直接导入到代码中,如下所示。

import pandas as pd
import numpy as np
from sklearn.datasets import fetch_openmlX,y = fetch_openml("autos", version=1, as_frame=True, return_X_y=True)
data = X
data['target'] = y

透视表剖析

Pandas 数据透视表具有三个主要元素。 索引指定行级分组,列指定列级分组和值,这些值是您要汇总的数值。

用于创建上述数据透视表的代码如下所示。 在 pivot_table 函数中,我们指定要汇总的df,然后是值、索引和列的列名。 此外,我们指定了我们想要使用的计算类型,我们以计算平均值为例。

pivot = np.round(pd.pivot_table(data, values='price', index='num-of-doors', columns='fuel-type', aggfunc=np.mean),2)

数据透视表可以是多级的。 我们可以使用多个索引和列级分组来创建更强大的数据集摘要。

pivot = np.round(pd.pivot_table(data, values='price', index=['num-of-doors', 'body-style'], columns=['fuel-type', 'fuel-system'], aggfunc=np.mean,fill_value=0),2)

可视化

Pandas 数据透视表可与 Pandas 绘图功能结合使用,以创建有用的数据可视化。

只需将 .plot() 添加到数据透视表代码的末尾即可创建数据图。 例如,下面的代码创建了一个条形图,显示了按品牌和门数划分的平均汽车价格。

np.round(pd.pivot_table(data, values='price', index=['make'], columns=['num-of-doors'], aggfunc=np.mean,fill_value=0),2).plot.barh(figsize=(10,7),title='Mean car price by make and number of doors')

计算和统计

数据透视表函数中的 aggfunc 参数可以进行一项或多项标准计算。

以下代码计算body-style和num-of-doors的平均价格和中位数价格。

np.round(pd.pivot_table(data, values='price', index=['body-style'], columns=['num-of-doors'], aggfunc=[np.mean, np.median],fill_value=0),2)

要将总计添加到列和行,可以简单地添加参数 margins=True 实现并且您可以使用 margins_name 为总计指定一个名称。

np.round(pd.pivot_table(data, values='price', index=['body-style'], columns=['num-of-doors'], aggfunc=[np.sum],fill_value=0,margins=True, margins_name='Total'),2)

样式

在汇总数据时,样式很重要。 我们希望确保数据透视表提供的模式和见解易于阅读和理解。 在本文前面部分使用的数据透视表中,应用了很少的样式,因此,这些表不容易理解或没有视觉上的重点。

我们可以使用另一种 Pandas 方法,称为样式方法,使表格看起来更漂亮,更容易从中得出见解。 下面的代码为此数据透视表中使用的每个值添加了适当的格式和度量单位。 现在更容易区分这两列并理解数据告诉您的内容。

pivot = np.round(pd.pivot_table(data, values=['price', 'horsepower'], index=['make'], aggfunc=np.mean,fill_value=0),2)pivot.style.format({'price':'${0:,.0f}','horsepower':'{0:,.0f}hp'})

我们可以使用styler组合不同的格式,并使用 Pandas 内置样式以一种好的方式汇总数据。 在下面显示的代码和数据透视表中,我们按价格从高到低对汽车制造商进行了排序,为数字添加了适当的格式,并添加了一个覆盖两列值的条形图。 这使得很容易得出结论,例如哪种品牌的汽车最贵,以及马力与每种品牌的价格之间的关系。

pivot = np.round(pd.pivot_table(data, values=['price', 'horsepower'], index=['make'], aggfunc=np.mean,fill_value=0),2)pivot = pivot.reindex(pivot['price'].sort_values(ascending=False).index).nlargest(10, 'price')pivot.style.format({'price':'${0:,.0f}','horsepower':'{0:,.0f}hp'}).bar(color='#d65f5f')

总结

数据透视表自 90 年代初开始使用,微软于 1994 年为著名的 Excel 版本“数据透视表”申请了专利。它们今天仍在广泛使用,因为它们是分析数据的强大工具。 Pandas 数据透视表将这个工具从电子表格中带到了 python 用户的手中。

本指南简要介绍了 Pandas 中数据透视表工具的使用。 它旨在为初学者提供一个快速教程来启动和运行,但我建议深入研究 Pandas 文档,其中提供了有关此功能的更深入指南。

作者:Rebecca Vickery

5分钟了解Pandas的透视表相关推荐

  1. pandas pivot_table透视表、crosstab交叉表、aggfunc函数详解及实战

    pandas pivot_table透视表.crosstab交叉表详解及实战 pivot_table透视表.crosstab交叉表的本质是一样的,都是通过对表格的透视或者重新排布.人为设置信息的行和列 ...

  2. Pandas简明教程:八、Pandas数据透视表

    透视表(pivot)是由微软发明的一个概念,1993年微软注册了PivotTable这一商标,而他们又在2020年正式撤销了注册. 关于透视表的话题随便搜搜就是一大堆,而有些地方可能都吹得很神了.透视 ...

  3. pandas 数据透视表

    pandas 数据透视表及逆透视 主要参数说明 pd.pivot_table(df,index= [] ,columns= [] ,values = [] , aggfunc={"Quant ...

  4. 对比Excel,学习pandas数据透视表

    Excel中做数据透视表 ① 选中整个数据源: ② 依次点击"插入"-"数据透视表" ③ 选择在Excel中的哪个位置,插入数据透视表 ④ 然后根据实际需求,从 ...

  5. python数据透视、有的value不能同时输出_python – Pandas数据透视表ValueError:索引包含重复的条目,无法重新整形...

    我有一个如下所示的数据帧(前3行): Sample_Name Sample_ID Sample_Type IS Component_Name IS_Name Component_Group_Name ...

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

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

  7. Pandas中透视表和交叉表

    文章目录 一. 什么是透视表? 二.为什么要使用pivot_table? 三.pivot_table api认识 四.如何使用pivot_table? 4.1 读取数据 4.2 使用index参数 4 ...

  8. pandas数据透视表

    pivot_table创建数据透视表 类似excel的数据透视表,可以实现一些groupby完成不了的操作 常用参数使用 # 第一个参数data表示我们要传入的数据,index表示索引,columns ...

  9. Pandas数据分析15——pandas数据透视表和交叉表

    参考书目:<深入浅出Pandas:利用Python进行数据处理与分析> pandas对数据框也可以像excel一样进行数据透视表整合之类的操作.主要是针对分类数据进行操作,还可以计算数值型 ...

  10. python数据透视表计数去除重复_如何从pandas数据透视表中删除重复值?

    因此,我试图将excel的一组指令复制到python中.问题是我对excel和正在发生的事情知之甚少.在 我有一个数据帧:no. name corrected no. corrected name 0 ...

最新文章

  1. svcagent32.exe,javaM.exe木马查杀解决方案 (转Ad0.cn)
  2. php读取 rss pubdate,PHP产生RSS pubDate所需日期时间格式的方法
  3. UVa12326 Yummy Triangular Pizza(dfs)
  4. Jquery Easy UI Datagrid 上下移动批量保存数据
  5. 沉浸式技术immersive technology
  6. java二维数组高纬低纬_2018-05-17 第十一天
  7. 2018 Multi-University Training Contest 9 杭电多校第九场 (有坑待补)
  8. 机器学习:从入门到第一个模型
  9. nmon Analyser分析仪
  10. 設置Linux保留物理內存並使用 (1)
  11. android中一些常用的VIEW动作类型
  12. 百度语音识别技术突破 巨头崛起
  13. 翻译spring4.2官方文档(3)
  14. oracle random函数用法,Oracle随机函数的用法
  15. Docker 镜像加速器
  16. Android自定义一个属于自己的刻度尺
  17. 生物医学数据大爆炸,大数据“挖掘机”哪家强?
  18. 必做作业三_ShareX结构化原型设计
  19. badatatable转成json_数据表转换成json(DatatableToJson)
  20. chrome插件安装

热门文章

  1. SpringBoot专栏:集成定时ScheduledTasks任务,刷新概念了_14讲
  2. 数据建模 - 概念模型,逻辑模型,物理模型 的区别以及建模方式
  3. LED设备驱动二之重要代码和调试问题分析
  4. 使用Javascript 实现 分享到 新浪微博 QQ 空间等
  5. 《宏观经济学》 学习笔记
  6. 第二工业大学计算机应用大专录取分,二工大| 2018年上海第二工业大学专科层次依法自主招生各专业最低录取分数线...
  7. (翻译)反馈循环模式(Feedback loops)
  8. 【C语言】有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出,问最后留下的人是原来第几号。
  9. httpclient.execute长时间停滞问题
  10. python中交集并集用什么符号表示_python交集和补集的符号_python数组并集交集补集...