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.pswp.cn/news/259794.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259794.shtml
英文地址,請注明出處:http://en.pswp.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;會有…