詳解python中g(shù)roupby函數(shù)通俗易懂
一、groupby 能做什么?
python中g(shù)roupby函數(shù)主要的作用是進(jìn)行數(shù)據(jù)的分組以及分組后地組內(nèi)運算!
對于數(shù)據(jù)的分組和分組運算主要是指groupby函數(shù)的應(yīng)用,具體函數(shù)的規(guī)則如下:
df[](指輸出數(shù)據(jù)的結(jié)果屬性名稱).groupby([df[屬性],df[屬性])(指分類的屬性,數(shù)據(jù)的限定定語,可以有多個).mean()(對于數(shù)據(jù)的計算方式——函數(shù)名稱)
舉例如下:
print(df["評分"].groupby([df["地區(qū)"],df["類型"]]).mean()) #上面語句的功能是輸出表格所有數(shù)據(jù)中不同地區(qū)不同類型的評分?jǐn)?shù)據(jù)平均值
二、單類分組
A.groupby("性別")
首先,我們有一個變量A,數(shù)據(jù)類型是DataFrame
想要按照【性別】進(jìn)行分組
得到的結(jié)果是一個Groupby對象,還沒有進(jìn)行任何的運算。
describe()
描述組內(nèi)數(shù)據(jù)的基本統(tǒng)計量
A.groupby("性別").describe().unstack()
* 只有數(shù)字類型的列數(shù)據(jù)才會計算統(tǒng)計
* 示例里面數(shù)字類型的數(shù)據(jù)有兩列 【班級】和【身高】
但是,我們并不需要統(tǒng)計班級的均值等信息,只需要【身高】,所以做一下小的改動:
A.groupby("性別")["身高"].describe().unstack()
unstack()
索引重排
上面的例子里面用到了一個小的技巧,讓運算結(jié)果更便于對比查看,感興趣的同學(xué)可以自行去除unstack,比較一下顯示的效果
三、多類分組
A.groupby( ["班級","性別"])
單獨用groupby,我們得到的還是一個 Groupby 對象。
mean()
組內(nèi)均值計算
DataFrame的很多函數(shù)可以直接運用到Groupby對象上。
上圖截自 pandas 官網(wǎng) document,這里就不一一細(xì)說。
我們還可以一次運用多個函數(shù)計算
A.groupby( ["班級","性別"]).agg([np.sum, np.mean, np.std]) # 一次計算了三個
agg()
分組多個運算
四、時間分組
時間序列可以直接作為index,或者有一列是時間序列,差別不是很大。
這里僅僅演示,某一列為時間序列。
為A 新增一列【生日】,由于分隔符 “/” 的問題,我們查看列屬性,【生日】的屬性并不是日期類型
我們想做的是:
1、按照【生日】的【年份】進(jìn)行分組,看看有多少人是同齡?
A["生日"] = pd.to_datetime(A["生日"],format ="%Y/%m/%d") # 轉(zhuǎn)化為時間格式 A.groupby(A["生日"].apply(lambda x:x.year)).count() # 按照【生日】的【年份】分組
進(jìn)一步,我們想選拔:
2、同一年作為一個小組,小組內(nèi)生日靠前的那一位作為小隊長:
A.sort_values("生日", inplace=True) # 按時間排序 A.groupby(A["生日"].apply(lambda x:x.year),as_index=False).first()
as_index=False
保持原來的數(shù)據(jù)索引結(jié)果不變
first()
保留第一個數(shù)據(jù)
Tail(n=1)
保留最后n個數(shù)據(jù)
再進(jìn)一步:
3、想要找到哪個月只有一個人過生日
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()
對分組進(jìn)行過濾,保留滿足()條件的分組
以上就是 groupby 最經(jīng)常用到的功能了。
用 first(),tail()截取每組前后幾個數(shù)據(jù)
用 apply()對每組進(jìn)行(自定義)函數(shù)運算
用 filter()選取滿足特定條件的分組
到此這篇關(guān)于詳解python中g(shù)roupby函數(shù)通俗易懂的文章就介紹到這了,更多相關(guān)python groupby函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pytorch報錯問題:ValueError: num_samples should be
這篇文章主要介紹了pytorch報錯問題:ValueError: num_samples should be a positive integer value, but got num_samples=0的解決方案,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02Python實現(xiàn)帶參數(shù)與不帶參數(shù)的多重繼承示例
這篇文章主要介紹了Python實現(xiàn)帶參數(shù)與不帶參數(shù)的多重繼承,結(jié)合具體實例形式對比分析了Python實現(xiàn)帶參數(shù)與不帶參數(shù)的多重繼承相關(guān)操作技巧,需要的朋友可以參考下2018-01-01Python面向?qū)ο蟪绦蛟O(shè)計之私有屬性及私有方法示例
這篇文章主要介紹了Python面向?qū)ο蟪绦蛟O(shè)計之私有屬性及私有方法,結(jié)合實例形式分析了Python私有屬性及私有方法的相關(guān)使用方法及操作注意事項,需要的朋友可以參考下2019-04-04python神經(jīng)網(wǎng)絡(luò)tfrecords文件的寫入讀取及內(nèi)容解析
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)tfrecords文件的寫入讀取及內(nèi)容解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05