左手pandas右手Python,带你学习数据透视表

Python Pandas 高级数据操作 数据透视表 可以使用自定义函数来执行更复杂的聚合操作。通常通过 groupby 方法结合 apply 函数来实现。apply 函数可以对分组数据应用任意函数,从而实现灵活的数据处理。需要定义一个自定义函数,该函数将对分组的数据进行操作。这个函数可以执行任何计算,从简单的数学运算到复杂的逻辑。可以使用 groupby 方法对数据进行分组,并使用 apply 方法应用自定义函数。Python pandas.DataFrame.pivot_table函数方法的使用。 阅读详情

数据透视表是数据分析工作中经常会用到的一种工具。Excel本身具有强大的透视表功能,Python中pandas也有透视表的实现。本文使用两个工具对同一数据源进行相同的处理,旨在通过对比的方式,帮助读者加深对数据透视表的理解。

数据源简介:

本文数据源来自网络,很多介绍pandas的文章都使用了该数据。这是一份销售数据,数据样例如下:

640?wx_fmt=png

在分析之前,需要确保你安装了pandas(最好使用jupyter)和Excel(2016版)。接下来每一个环节,我们都将使用二者实现同样的效果。Python代码的部分,我都做了详细的注释,Excel操作流程我也做了比较详细的说明。后台回复“透视表”可以获得数据和代码。

处理过程
目标1:读取数据,查看数据样例

1.pandas实现

#导入必要的包
import pandas as pd
import numpy as np                                                                                                                               
#读取Excel格式的数据
df = pd.read_excel('salesfunnel.xlsx')

#查看数据的前5行,如果要查看多行,可以用df.head(num),num为行数
df.head()

运行效果如下:

640?wx_fmt=png

2.excel实现

直接打开文件即可查看数据。

目标2:使用行索引,查看每一个Name的Quality,price汇总数据

1.pandas实现

pd.pivot_table(df, index=['Name'])

运行结果:

640?wx_fmt=png

当我们只指定index时,就是指定了行标签,pivot_table函数会默认按照平均值,汇总所有的数值字段。由于Account字段被pandas“理解”成了数值类型的(可以通过df.dtypes查看),所以结果中出现了Account列。上面的结果表示每个Name的Account,Price,Quantity的平均值。

2.Excel实现

选中数据区域,插入,数据透视表,将Name字段拉倒“行”区域,Account,Price,Quantity拉入“值”区域,并将三者的字段汇总方式设置为平均值。整个步骤的流程及运行结果如下图所示:

640?wx_fmt=png

640?wx_fmt=png

可以看到Excel默认会有一个汇总行。以Quantity为例,它的“总计”值是所有的Quantity求和之后,除以Name的个数。如果想用Pandas实现这种效果,可以加入margins=True参数,效果如下,出现了All行,由于Account和Price是整数,所以all行也是整数,Quantity是小数,相应的All行也是小数。Excel的总计行也可以在“设计”选项卡,“总计”,“对行和列禁用去掉”。

640?wx_fmt=png
目标3:使用多个行索引,查看每个Manager的每个Rep对应的Account,Price,Quantity汇总值

1.pandas实现

pd.pivot_table(df, index=['Manager', 'Rep'], margins=True)

运行效果如下:

640?wx_fmt=png

2.Excel实现

在前面基础上,将Manager,Rep拉到“行”的位置即可。效果如下图,可以看到,在关键的数值上,两个结果是一致的,只是在形式上有所不同。

640?wx_fmt=png

为了在形式上更接近pandas的结果,可以设置透视表的布局。选择“设计”选项卡,报表布局,选择“大纲形式显示”即可,效果如上图所示。

仔细观察,发现excel里对每一个Manager都做了汇总。这个可以通过“设计”选项卡,“分类汇总”,“不显示分类汇总”去掉。pandas如何实现分类汇总,这个暂时还没有找到相关资料。

目标4:设置我们关心的汇总字段,此处设置price,去掉Account和Quantity

1.pandas实现

pd.pivot_table(df, index=['Manager', 'Rep'], values=['Price'], margins=True)

结果如下图左侧所示:

640?wx_fmt=png

2.Excel实现

Excel中只需要在上面的基础上,在“值”的地方删掉Account,Quality即可。效果如上图右侧图所示。

目标5:实现对Price的求和

1.Pandas实现

pd.pivot_table(df, index=['Manager', 'Rep'], values=['Price'], aggfunc=np.sum,  margins=True)

效果如下图左图所示:

640?wx_fmt=png

2.Excel实现

需要在上一步的基础上,将Price的值字段设置改成求和即可,如上图右图中图所示。结果如上图中间所示。

注:Pandas可以同时对一个字段进行多种汇总操作,(Excel貌似不行)

pd.pivot_table(df, index=['Manager', 'Rep'], values=['Price'], aggfunc=[np.sum, np.size] margins=True)#np.size可以换成len,效果一致
640?wx_fmt=png
目标6: 使用列索引,查看不同产品的数据情况

1、pandas实现

pd.pivot_table(df, index=['Manager', 'Rep'], columns=['Product'], values=['Price'], aggfunc=np.sum, margins=True)

结果如下图所示:

640?wx_fmt=png

2.Excel实现

在上面的基础上,将Product拉到“列”的位置即可。

640?wx_fmt=png

可以看到,有些位置没有对应的值,Pandas默认用NaN填充,Excel则采用置空处理。Pandas可以增加fill_value参数设置为0。(Excel貌似不可以设置)

pd.pivot_table(df, index=['Manager', 'Rep'], columns=['Product'], values=['Price'], aggfunc=np.sum, margins=True, fill_value=0)
640?wx_fmt=png
目标7:使用行索引和列索引,同时查看多个字段(Price,Quality)的汇总值

1.Pandas实现

pd.pivot_table(df, index=['Manager', 'Rep'], columns=['Product'], values=['Price', 'Quantity'], aggfunc=np.sum, margins=True, fill_value=0)
640?wx_fmt=png

2.Excel实现

在上面的基础上,只需在“值”的位置加入Quantity,并将值字段设置为“求和”即可。值得一提的是,可以通过“列”的位置,“数值”和“Product”的上下关系,控制显示的格式,下面显示的结果和pandas的结果一致,读者可以调整下看看效果。

640?wx_fmt=png
目标8:行列索引的转换,把Product由列索引改为行索引

1.pandas实现

pd.pivot_table(df, index=['Manager', 'Rep', 'Product'], values=['Price', 'Quantity'], aggfunc=np.sum, margins=True, fill_value=0)
640?wx_fmt=png

2.Excel实现

在上一步的基础上,将Product从“列”位置拖到“行”位置即可。

640?wx_fmt=png
目标9:对Price和Quantity使用不同的汇总方式

1.pandas实现

通过字典的方式,为不同的字段传入不同的聚合函数。

pd.pivot_table(df, index=['Manager', 'Rep'], columns=['Product'], values=['Price', 'Quantity'], aggfunc={'Price': np.sum, 'Quantity': np.size}, margins=True, fill_value=0)
640?wx_fmt=png

2.Excel 实现

只需在目标7的基础上,将Price和Quantity的值字段设置成相应的聚合方式即可。如下图所示。

640?wx_fmt=png

注:同一个字段可以用列表方式传多个函数。

pd.pivot_table(df, index=['Manager', 'Rep'], columns=['Product'], values=['Quantity', 'Price'], aggfunc={'Quantity':np.size, 'Price': [np.sum, np.mean] }, fill_value=0)
640?wx_fmt=png
目标10:实现透视表筛选功能,只查看Debra Henley的数据

1.pandas实现

table = pd.pivot_table(df, index=['Manager', 'Rep'], columns=['Product'], values=['Price', 'Quantity'], aggfunc={'Price': np.sum, 'Quantity': np.size}, margins=True, fill_value=0)
table.query('Manager == ["Debra Henley"]')

使用query传入筛选的参数即可,列表里可以传入多个参数,如 table.query('Rep == ["Craig Booker", "John Smith"]')

2.excel实现

做好的数据透视表,具有行和列的筛选功能。我们在9的基础上,对manager进行筛选,保留Debra Henley即可。效果如下所示:

640?wx_fmt=png

640?wx_fmt=png

也可以将manager字段拉到“筛选器”的位置来实现,再选择Manager的值为Debra Henley即可。

640?wx_fmt=png
小结与备忘:

index-对应透视表的“行”,columns对应透视表的列,values对应透视表的‘值’,aggfunc对应值的汇总方式。用图形表示如下:

640?wx_fmt=jpeg

后台回复“透视表”,可获得本文代码与数据。本文参考链接:

https://www.cnblogs.com/onemorepoint/p/8425300.html

excel数据透视表与python中pandas使用pivot 文章目录Excel数据透视表操作数据透视表基本原理python中使用pandas的pivot函数 数据透视表是数据分析时的大招,可快速分类统计需要二次加工的信息,并生成相应的统计结果。下面通过一个实例直观体验一下。 Excel数据透视表操作 现在我们需要统计一个销售数据,想直到每种产品类别每个月的销售额是多少: 当然,我们可以采用筛选的方法,逐一筛选出每个产品类型的数据并进行求和,然而这种操作可能... 阅读详情

相关推荐

python数据分析基础010 -利用pandas带你玩转excel表格(终篇)

带你玩转excel表格,建议收藏!!

苏凉.py的博客 4764

pandas实现分类汇总--小计,总计

有一批数据需要分类汇总和总计,看了一下pandas的groupby,可以实现。具体思路:先分组,分组后计算改分类的汇总小计,然后对dataframe进行拼接;分类汇总计算好了之后,计算总体的汇总,然后在进行拼接 具体代码: def gen_pivot_table(): df = pd.read_excel(os.path.join(BASE_DIR, EXCEL_FILE_FROM)) last_total_df = calculation_total(df, ["页面展示pv", "页面

python_tty的专栏 1万+

sales-funnel.xlsx

pivot_table数据资源,可以用于参考pivot_table的练习资源,非常不错的的表格,大家可以下载

利用excel与Pandas完成实现数据透视表(文末赠书)

文末赠书 数据透视表是一种分类汇总数据的方法。本文章将会介绍如何用Pandas完成数据透视表的制作和常用操作。1,制作数据透视表制作数据透视表的时候,要确定这几个部分:行字段、列字段、数据区,汇总函数。数据透视表的结构如图1所示。图1数据透视表的结构Excel制作数据透视表很简单,选中表格数据,并点击工具栏上的“数据透视表”菜单即可,如图2所示。图2 Excel制作数据透视表...

Python数据之道 1327

Unity游戏开发:从零开始适配Nintendo Switch的完整指南

本文详细介绍了如何使用Unity进行Nintendo Switch游戏开发的完整流程,包括开发环境搭建、Unity工程适配、手柄与硬件特性开发、存储与性能优化等关键步骤。特别强调了Switch SDK的配置、输入系统改造和内存优化技巧,帮助开发者高效完成跨平台适配。

vodka的博客 1069

Matlab TreeBagger实战:用随机森林预测房价的5个关键步骤(附完整代码)

本文详细介绍了使用Matlab的TreeBagger工具包构建随机森林模型预测房价的完整流程。通过波士顿房价数据集实战,涵盖数据预处理、模型构建、参数调优、特征重要性分析及高级应用(如分位数回归)等5个关键步骤,并附有完整代码,帮助读者快速掌握这一强大的回归分析工具。

ol789012的博客 444

Pandas实现excel的透视表

代码】Pandas实现excel的透视表。

小橙子的博客 966

从药企研发视角:如何用GNN提升分子水溶性预测准确率?PyTorch+ESOL全案例

本文从药企研发的实际需求出发,详细介绍了如何利用图神经网络(GNN)技术,结合PyTorch框架和ESOL数据集,构建并优化分子水溶性预测模型。通过完整的代码案例,深入探讨了分子图数据处理、GNN架构设计、超参数调优以及模型评估与解释等关键环节,旨在帮助研发团队提升预测准确率,从而更高效地筛选和优化候选药物分子。

weixin_29054399的博客 292

一行Pandas代码制作数据分析透视表,太牛了!

相信大家都用在Excel当中使用过数据透视表(一种可以对数据动态排布并且分类汇总的表格格式),也体验过它的强大功能,在Pandas模块当中被称作是pivot_table,今天小编就和大家来详细聊聊该函数的主要用途。导入模块和读取数据那我们第一步仍然是导入模块并且来读取数据,数据集是北美咖啡的销售数据,包括了咖啡的品种、销售的地区、销售的利润和成本、销量以及日期等等impo...

小詹学python的博客 773

SAP中MRP运行计划行超限问题的分析与解决

SAP中基于生产性物料的采购特点,通常会采用采购计划协议的方式进行采购。其具体的采购计划通常来自于成品计划独立需求,然后通过物料清单,经由MRP跑出。 在采购计划协议中的计划行中,存在一个计划行号,随着MRP在不断跑出新的计划行,该行号资源会消耗完。当计划行号消耗完后,MRP不会再跑出新的计划行。且在MD04或MD02中看不到类似提示信息。此时可以通过MD05来查看是否出现类似下图的提示信息。 ...

专注SAP应用技术文章写作,致力于拉近用户与系统间的距离; 3845

uniapp [安卓苹果App端] - 详细实现自定义水印相机功能,调用手机摄像头打开相机并在周围悬挂自定义水印,使用相机拍照后添加水印文字或样式,uniapp APP端水印相机完整源码,兼容强大可靠

uni-app,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果app,水印相机,uniapp水印相机,Uniapp安卓app实现水印相机,uniapp苹果ios水印相机,打开系统相机拍照添加水印,地点打卡相机,水印相机(水印照片,图片加水印),uniapp自定义水印相机,制作水印相机给图片添加水印并且保存图片至本地,uniapp拍照图片加水印,水印相机功能,手机调起摄像头拍照时自动插入文字、图片动态水印效果,支持水印显示拍摄者当前城市定位、自由调整水印大小和位置,手机拍照时

🏆 前端领域优质创作者 1万+

左手pandas右手Python,带你学习数据透视表!

第一时间获取价值内容 数据透视表是数据分析工作中经常会用到的一种工具。 Excel本身具有强大的透视表功能,Python中pandas也有透视表的实现。 本文使用两个工具对同一数据源进行相同的处理,旨在通过对比的方式,帮助读者加深对数据透视表的理解。 数据源简介: 本文数据源来自网络,很多介绍pandas的文章都使用了该数据。 这是一份销售数据,数据样例如下: Py...

Pythoncxy的博客 464

YOLOv13改进策略【Backbone/轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块

本文记录的是。StarNet设计简洁,没有复杂的设计和精细调整的超参数,仅是一个 4 阶段的分层架构。并且其中能够在低维空间计算的同时考虑极高维的特征这一特性,进而提高模型精度。本文在替换骨干网络中配置了原论文中的starnet_s1starnet_s2starnet_s3和starnet_s4七种模型,以满足不同的需求。

Limiiiing的博客 671

左手pandas右手Excel,带你学习数据透视表

作者:程恒超来源:超哥的杂货铺左手pandas右手Excel,带你学习数据透视表数据透视表是数据分析工作中经常会用到的一种工具。Excel本身具有强大的透视表功能,Pyt...

大邓和他的Python 213

深入理解 Terraform 中的资源更新与管理

摘要:本文探讨Terraform处理AWS安全组名称变更时的行为。当修改不可变属性(如安全组名称)时,Terraform会创建新资源并删除旧资源。通过状态文件比对所需状态与实际状态,Terraform对不可变属性采用"先创建后删除"策略,对可变属性则直接更新。实例演示了修改安全组名称和关联EC2实例时的处理过程,强调理解资源属性可变性对基础设施管理的重要性。(149字)

2501_90323865的博客 471

YOLOv11改进策略【注意力机制篇】| SE、CBAM、ECA、CA、Swin Transformer等注意力机制全面解析与应用

本文详细介绍了五种主流的注意力机制及其在YOLOv11中的应用。通过合理的模块选择和位置部署,注意力机制能够显著提升目标检测性能。

QQ_778132974的博客 876

左手Python右手Excel,玩转数据透视表哪家强?

形象点来说, 数据透视表就像一个万花筒,通过旋转这个特别的万花筒,可以从中获得不断变化的事物细节,但是事物的本身其实并未发生变化,数据透视表这个特别的万花筒只是一个工具,只不过通过该工具可以获得普通事物的独特视图。简单来说,数据透视表可以从不同角度对相同的数据进行处理和分析,以查看不同层面的数据结果,从而得到想要的数据信息。在上图中每一列的第一个单元格内容都为该列的数据分类,在生成数据透视表后,这些数据就是我们所说的字段。接下来是年份的设置,大家可以看到最终的结果图是将年份内容设置到了列上。

Python宋宋的专栏 582

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

对比excel,学习pandas数据透视表

1、excel中做数据透视表 1)步骤如下 ① 选中整个数据源; ② 依次点击“插入”—“数据透视表” ③ 选择在Excel中的哪个位置,插入数据透视表 ④ 然后根据实际需求,从不同维度展示结果 ⑤ 结果如下 2、pandas中使用pivot_table()做数据透视表 1)语法格式 pd.pivot_table(data,index=None,columns=None, ...

数据分析与统计学之美 1923

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【Python篇】详细学习 pandas 和 xlrd:从零开始

在数据处理和分析中,Excel 文件是最常见的数据格式之一。Python 提供了强大的库pandas,可以轻松地处理 Excel 文件中的数据。同时,我们还可以使用xlrd来读取 Excel 文件,尤其是较旧格式的.xls文件。本篇博客将从零开始,带你学习如何使用pandas和xlrd来读取、处理、修改和保存 Excel 文件的数据。我们将详细讲解每一步,并附带代码示例和输出结果。

半截诗的博客~ 5072

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

利用excel与Pandas完成实现数据透视表

数据透视表是一种分类汇总数据的方法。本文章将会介绍如何用Pandas完成数据透视表的制作和常用操作。

2401_86168842的博客 1159
上一篇: 薅羊毛 | Python 带你抢视频红包,不放过一个红包!
下一篇: 官宣!VS Code Python 全新功能在 PyCon China 全球首发!
菜鸟学Python
博客等级 码龄9年 8063粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值