詳解python中g(shù)roupby函數(shù)通俗易懂
一、groupby 能做什么?
python中g(shù)roupby函數(shù)主要的作用是進(jìn)行數(shù)據(jù)的分組以及分組后地組內(nèi)運(yùn)算!
對(duì)于數(shù)據(jù)的分組和分組運(yùn)算主要是指groupby函數(shù)的應(yīng)用,具體函數(shù)的規(guī)則如下:
df[](指輸出數(shù)據(jù)的結(jié)果屬性名稱(chēng)).groupby([df[屬性],df[屬性])(指分類(lèi)的屬性,數(shù)據(jù)的限定定語(yǔ),可以有多個(gè)).mean()(對(duì)于數(shù)據(jù)的計(jì)算方式——函數(shù)名稱(chēng))
舉例如下:
print(df["評(píng)分"].groupby([df["地區(qū)"],df["類(lèi)型"]]).mean()) #上面語(yǔ)句的功能是輸出表格所有數(shù)據(jù)中不同地區(qū)不同類(lèi)型的評(píng)分?jǐn)?shù)據(jù)平均值
二、單類(lèi)分組
A.groupby("性別")

首先,我們有一個(gè)變量A,數(shù)據(jù)類(lèi)型是DataFrame
想要按照【性別】進(jìn)行分組
得到的結(jié)果是一個(gè)Groupby對(duì)象,還沒(méi)有進(jìn)行任何的運(yùn)算。
describe()
描述組內(nèi)數(shù)據(jù)的基本統(tǒng)計(jì)量
A.groupby("性別").describe().unstack()

* 只有數(shù)字類(lèi)型的列數(shù)據(jù)才會(huì)計(jì)算統(tǒng)計(jì)
* 示例里面數(shù)字類(lèi)型的數(shù)據(jù)有兩列 【班級(jí)】和【身高】
但是,我們并不需要統(tǒng)計(jì)班級(jí)的均值等信息,只需要【身高】,所以做一下小的改動(dòng):
A.groupby("性別")["身高"].describe().unstack()

unstack()
索引重排
上面的例子里面用到了一個(gè)小的技巧,讓運(yùn)算結(jié)果更便于對(duì)比查看,感興趣的同學(xué)可以自行去除unstack,比較一下顯示的效果
三、多類(lèi)分組
A.groupby( ["班級(jí)","性別"])

單獨(dú)用groupby,我們得到的還是一個(gè) Groupby 對(duì)象。
mean()
組內(nèi)均值計(jì)算
DataFrame的很多函數(shù)可以直接運(yùn)用到Groupby對(duì)象上。

上圖截自 pandas 官網(wǎng) document,這里就不一一細(xì)說(shuō)。
我們還可以一次運(yùn)用多個(gè)函數(shù)計(jì)算
A.groupby( ["班級(jí)","性別"]).agg([np.sum, np.mean, np.std]) # 一次計(jì)算了三個(gè)

agg()
分組多個(gè)運(yùn)算
四、時(shí)間分組
時(shí)間序列可以直接作為index,或者有一列是時(shí)間序列,差別不是很大。
這里僅僅演示,某一列為時(shí)間序列。
為A 新增一列【生日】,由于分隔符 “/” 的問(wèn)題,我們查看列屬性,【生日】的屬性并不是日期類(lèi)型

我們想做的是:
1、按照【生日】的【年份】進(jìn)行分組,看看有多少人是同齡?
A["生日"] = pd.to_datetime(A["生日"],format ="%Y/%m/%d") # 轉(zhuǎn)化為時(shí)間格式 A.groupby(A["生日"].apply(lambda x:x.year)).count() # 按照【生日】的【年份】分組
進(jìn)一步,我們想選拔:
2、同一年作為一個(gè)小組,小組內(nèi)生日靠前的那一位作為小隊(duì)長(zhǎng):
A.sort_values("生日", inplace=True) # 按時(shí)間排序
A.groupby(A["生日"].apply(lambda x:x.year),as_index=False).first()

as_index=False
保持原來(lái)的數(shù)據(jù)索引結(jié)果不變
first()
保留第一個(gè)數(shù)據(jù)
Tail(n=1)
保留最后n個(gè)數(shù)據(jù)
再進(jìn)一步:
3、想要找到哪個(gè)月只有一個(gè)人過(guò)生日
A.groupby(A["生日"].apply(lambda x:x.month),as_index=False) # 到這里是按月分組 A.groupby(A["生日"].apply(lambda x:x.month),as_index=False).filter(lambda x: len(x)==1)

filter()
對(duì)分組進(jìn)行過(guò)濾,保留滿足()條件的分組
以上就是 groupby 最經(jīng)常用到的功能了。
用 first(),tail()截取每組前后幾個(gè)數(shù)據(jù)
用 apply()對(duì)每組進(jìn)行(自定義)函數(shù)運(yùn)算
用 filter()選取滿足特定條件的分組
到此這篇關(guān)于詳解python中g(shù)roupby函數(shù)通俗易懂的文章就介紹到這了,更多相關(guān)python groupby函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python技巧分享之groupby基礎(chǔ)用法詳解
- python?groupby函數(shù)實(shí)現(xiàn)分組選取最大值與最小值
- Python?groupby函數(shù)圖文詳解
- python groupby函數(shù)實(shí)現(xiàn)分組后選取最值
- python groupby 函數(shù) as_index詳解
- Python DataFrame.groupby()聚合函數(shù),分組級(jí)運(yùn)算
- Python中的groupby分組功能的實(shí)例代碼
- Python在groupby分組后提取指定位置記錄方法
- Python正則表達(dá)式中g(shù)roup與groups的用法詳解
相關(guān)文章
Python保存dict字典類(lèi)型數(shù)據(jù)到Mysql并自動(dòng)創(chuàng)建表與列
這篇文章主要介紹了Python保存dict字典類(lèi)型數(shù)據(jù)到Mysql并自動(dòng)創(chuàng)建表與列,字典是另一種可變?nèi)萜髂P?,且可存?chǔ)任意類(lèi)型對(duì)象,想了解更多內(nèi)容的小伙伴可以和小編一起進(jìn)入下面文章學(xué)習(xí)更多內(nèi)容,希望對(duì)你有所幫助2022-02-02
教你用Python爬取英雄聯(lián)盟皮膚原畫(huà)
今天給大家?guī)?lái)的是關(guān)于Python的相關(guān)知識(shí),文章圍繞著用Python爬取英雄聯(lián)盟皮膚原畫(huà)展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
python 虛擬環(huán)境的創(chuàng)建與使用方法
本文先介紹虛擬環(huán)境的基礎(chǔ)知識(shí)以及使用方法,然后再深入介紹虛擬環(huán)境背后的工作原理,需要的朋友可以參考下2021-06-06
Python數(shù)據(jù)可視化實(shí)踐之使用Matplotlib繪制圖表
數(shù)據(jù)可視化是數(shù)據(jù)分析的重要環(huán)節(jié),通過(guò)將數(shù)據(jù)轉(zhuǎn)化為圖形,可以更直觀地展示數(shù)據(jù)特征和規(guī)律。Python中的Matplotlib庫(kù)是一個(gè)強(qiáng)大的數(shù)據(jù)可視化工具,本文將帶您了解Matplotlib的基本使用方法,以及如何繪制常見(jiàn)的圖表2023-05-05
Python圖像處理利Pillow庫(kù)使用實(shí)戰(zhàn)指南
Pillow庫(kù)是Python編程中用于圖像處理的重要工具,作為Python?Imaging?Library(PIL)的一個(gè)分支,Pillow庫(kù)提供了豐富的功能和易用的API,用于處理圖像的各種操作2023-12-12
keras的get_value運(yùn)行越來(lái)越慢的解決方案
這篇文章主要介紹了keras的get_value運(yùn)行越來(lái)越慢的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05

