pandas合并groupby_pandas实践之GroupBy()

21084bb7b7cb67e45a123ac8b9b14ba6.png


官网地址:https://pandas.pydata.org/docs/reference/groupby.html

pandas中对数据进行分组操作的方法,官方有很详细的教程。下面的案例是真实遇到的问题,看一看用pandas是如何解决的。


2c2b426d758bb8ad27222b3292af739f.png构造数据
import pandas as pdimport numpy as npdf = pd.DataFrame(data={    "boss":["A"]*3+["B"]*3+["C"]*4,    "owner":["A1","A1","A2","B1","B2","B2","C1","C1","C2","C2"],    "month":[1,2,1,1,1,2,1,2,1,2],    "fk_money":[10,20,30,40,50,60,70,80,90,100],})

2c2b426d758bb8ad27222b3292af739f.png数据展示
bossownermonthfk_money
0AA1110
1AA1220
2AA2130
3BB1140
4BB2150
5‍‍BB2260
6CC1170
7CC1280
8CC2190
9CC22100

解释:比如第一条数据,老板A手下的业务员A1,在第1个月的放款金额为10万。


2c2b426d758bb8ad27222b3292af739f.png问题一、老板手下的业务员在哪个月的放款金额最多?

解决思路:

  • 按照owner分组,降序排列,取第一个数据
result1_df = df.sort_values(by="fk_money",ascending=False).groupby(by="owner").head(1)result1_df
bossownermonthfk_money
9CC22100
7CC1280
5BB2260
3BB1140
2AA2130
1AA1220

解释:老板C手下的业务员C2在第2个月的放款金额最大为100万。

拓展:如何取第二大的数据?

  • GroupBy.nth(),取每一组第n行的数据,n从0开始,0代表第一行。

  • 没有第n行的时候,不取。
result1_df = df.sort_values(by="fk_money",ascending=False).groupby(by="owner",as_index=False).nth(1)result1_df
ownerbossmonthfk_money
A1A110
B1B150
C1C170
C2C190
2c2b426d758bb8ad27222b3292af739f.png问题二、业务员每月放款金额占比情况?

解决思路:

  1. 计算出每个业务员总的放款金额owner_total_fk_money

  2. 将df与计算好的owner_total_fk_money合并

  3. fk_money除以owner_total_fk_money得到需要的数据

### 代码实现:owner_total_fk_money = df.groupby(by="owner",as_index=False).agg({"fk_money":"sum"})
result1_df = pd.merge(df,owner_total_fk_money,on="owner",how="left",suffixes=("","_total"))
result1_df["rate"] = (result1_df["fk_money"]/result1_df["fk_money_total"]).map(lambda x:"{:.2%}".format(x))result1_df
bossownermonthfk_moneyfk_money_totalrate
0AA11103033.33%
1AA12203066.67%
2AA213030100.00%
3BB114040100.00%
4BB215011045.45%
5BB226011054.55%
6CC117015046.67%
7CC128015053.33%
8CC219019047.37%
9CC2210019052.63%
解释:A1业务员在第一个月放款10万,占其总放款(30万)比例为33.33%,第二个月放款20万,占比为66.67%
2c2b426d758bb8ad27222b3292af739f.png问题三、每个老板手下业务员放款占比?

解决思路:

  1. 需要知道每个老板总的放款金额,boss_df

  2. 需要知道每个业务员的放款金额,owner_df

  3. 按照boss字段合并boss_df和owner_df

  4. 业务员的放款金额除以每个老板总的放款金额

# 计算每一个boss的总fk_moneyboss_df = df.groupby(by="boss",as_index=False).agg({"fk_money":"sum"})
# 计算每一个owner的总fk_moneyowner_df = df.groupby(by=["boss","owner"],as_index=False).agg({"fk_money":"sum"})
# 合并owner_df和boss_dfresult2_df = pd.merge(owner_df,boss_df,on="boss",how="left",suffixes=("_owner","_boss"))
result2_df["占比"] = (result_df["fk_money_owner"]/result_df["fk_money_boss"]).map(lambda x:"{:.2%}".format(x)result2_df
bossownerfk_money_ownerfk_money_bossreate
0AA1306050.00%
1AA2306050.00%
2BB14015026.67%
3BB211015073.33%
4CC115034044.12%
5CC219034055.88%

解释:老板A手下的A1占总放款金额(60万)比例为50%。

----END----

78caab2377e580957334773cfc673be2.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259794.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自学 web 前端人怎么找工作?

1,你做过的项目可以体现你的价值。2,你的个人博客可以反映你的思考。3,你的GitHub页面可以展示你的项目。4,你项目中的代码可以看出你编程的风格。1,2,3,4之间有交集。当你能证明,你…

《Breakfast At Tiffanys》

"生活中似乎有些男性想象着能拯救和引导一个年轻美丽纯洁善良却迷茫的女子,有些女性也想象着能用自己的善良与包容来安慰一个才华横溢却饱经苦闷与贫穷的男子,老实说,这很有成就感。虽然我的语气有些讽刺,但我相信在这些“光…

项目不需要SVN控制的时候,该怎么办

今天要用一个项目,当项目不需要SVN控制的时候,我们一般怎么办哪?可能很多人设置Windows显示隐藏文件,然后将项目中的所有.svn文件删除。下面,从网上找了个非常简单的方法第一步:建立一个名字叫做remove-svn…

erdas遥感图像几何校正_定量/高光谱遥感之—光谱分析技术

文章转载自微信公众号CSDN,作者冰清-小魔鱼,版权归原作者及刊载媒体所有。在定量遥感或者高光谱遥感中,信息提取主要用到光谱/波谱分析技术。本专题对光谱/波谱分析中涉及的流程及一些技术进行讲解,包括以下内容:基本概…

Zipkin-1.19.0学习系列1:java范例

2019独角兽企业重金招聘Python工程师标准>>> 官网地址: https://github.com/openzipkin/zipkin http://zipkin.io/ https://www.oschina.net/p/zipkin 截止到2017/1/4为止,最新版本为: Zipkin 1.19 下载地址: https://github.com/openzipkin/zipkin/arc…

PageRank算法

1. PageRank算法概述 PageRank,即网页排名,又称网页级别、Google左側排名或佩奇排名。 是Google创始人拉里佩奇和谢尔盖布林于1997年构建早期的搜索系统原型时提出的链接分析算法,自从Google在商业上获得空前的成功后,该算法也成为其他搜索引…

linux中_在 Linux 桌面中开始使用 Lumina | Linux 中国

本文是 24 天 Linux 桌面特别系列的一部分。Lumina 桌面是让你使用快速、合理的基于 Fluxbox 桌面的捷径,它具有你无法缺少的所有功能。-- Seth Kenlon多年来,有一个名为 PC-BSD 的基于 FreeBSD 的桌面操作系统(OS)。它旨在作为一个常规使用的系统&#…

弹体飞行姿态仿真软件程序代写

题目弹体飞行姿态仿真软件毕业设计的任务和要求(1)掌握查阅参考文献的方法 (2)对弹体飞行运行学模型有所研究 (3)在给定初始俯仰角、加速度、弹体质量等参数的前提下,完成弹体飞行轨迹的绘制及不…

Asp.net中实现同一用户名同时登陆,注销先前用户(转)

Web 项目中经常遇到的问题就是同一用户名多次登陆的问题,相应的解决办法也很多,总结起来不外乎这几种解决办法:将登陆后的用户名放到数据库表中;登陆后的用 户名放到Session中;登陆后的用户名放到Application中&#x…

hdu 2612 Find a way (广搜)

Problem DescriptionPass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year, yifenfei have many people to meet. Especially a good friend Merceki.Yifenfei’s home is at the countryside, but Merceki’s home is in t…

使用Notepad++开发C#,一个复杂点的csscript脚本

使用Notepad开发C#,一个复杂点的csscript脚本: 12345678910111213141516171819//css_dir ....lib;//css_ref Geb.Image.dll;//css_ref Geb.Image.ShapeAnalysis.dll;//css_ref Geb.Utils.dll;//css_ref Geb.Utils.WinForm.dll;//css_co /unsafe; using S…

正则表达式里转义字符_五分钟搞定正则表达式,如果没搞定,再加两分钟

五分钟搞定正则表达式,如果没搞定,再加两分钟【这是 ZY 第 18 篇原创文章】 文章概览一、正则表达式介绍正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE&#xf…

百度富文本编辑器,改变图片上传存储路径

我用的是最新版! 找到以下2个关键文件: YourPath.../Ueditor/php/config.json YourPath.../Ueditor/php/Uploader.class.php config.json找到如下代码: "imagePathFormat": "...(这里不用管)",//找到imagePathFormat所在…

如何手动给Docker容器设置静态IP

2019独角兽企业重金招聘Python工程师标准>>> 要点: 1.首先需要在宿主机上虚拟出来一个真实可用桥接网卡比如br0 2.docker启动的时候默认使用br0进行桥接网络 3.创建docker容器的时候使用--netnone模式 4.手动为每个创建的容器生成静态ip。但是ip每次在重…

获取滚动条宽度代码(记录)

1.创建一个嵌套节点&#xff0c;让外层节点产生滚动条。 2.用offsetWidth - clientWidth 即可获得滚动条宽度。 为了避免页面抖动&#xff0c;可以设置外层元素position:absolute和visibility:hidden 代码如下&#xff1a; 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHT…

的函数原型_JS基础函数、对象和原型、原型链的关系

JS的原型、原型链一直是比较难理解的内容&#xff0c;不少初学者甚至有一定经验的老鸟都不一定能完全说清楚&#xff0c;更多的"很可能"是一知半解&#xff0c;而这部分内容又是JS的核心内容&#xff0c;想要技术进阶的话肯定不能对这个概念一知半解&#xff0c;碰到…

python字符串基本操作

直接上图&#xff1a; ispace()是否为空格 isupper()与islower是否为大写或小写 isdigit是否为数字 isalpha是否为字母 isalnum()是否为字母与数字混合体 startswith()与endswith()判断是否以什么开始&#xff0c;以什么结尾转载于:https://www.cnblogs.com/bestSmile/p/405550…

迁移学习自我学习

最近在看Ng的深度学习教程&#xff0c;看到self-taught learning的时候&#xff0c;对一些概念感到很陌生。作为还清技术债的一个环节&#xff0c;用半个下午的时间简单搜了下几个名词&#xff0c;以后如果会用到的话再深入去看。 监督学习在前一篇博客中讨论过了&#xff0c;这…

堰流实验报告思考题_堰流流量系数测定实验

二、实验操作部分1&#xff0e;实验操作过程(可用图表示)2&#xff0e;实验数据、表格及数据处理3&#xff0e;结论1.实验步骤(1)放水之前&#xff0c;用活动测针测出堰前槽底高程▽低和堰顶高程▽堰顶&#xff0c;堰高P▽堰顶-▽底。(2)关闭首部的泄水阀&#xff0c;打开进水阀…

WCF全双工以及用户名密码验证

WCF是支持TCP双向连接的&#xff0c;支持Server和Client之间互发协议&#xff0c;通过 订阅-发布 的全双工形式实现&#xff0c;全双工的用户名密码验证需要X509证书加密&#xff0c;单工模式的用户名密码验证时&#xff0c;X509证书是可选的。 在全双工模式下&#xff0c;会有…