0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

數(shù)據(jù)處理中pandas的groupby小技巧

數(shù)據(jù)分析與開發(fā) ? 來源:Python數(shù)據(jù)科學(xué) ? 作者:東哥起飛 ? 2021-04-09 11:34 ? 次閱讀

pandas的groupby是數(shù)據(jù)處理中一個(gè)非常強(qiáng)大的功能。雖然很多同學(xué)已已經(jīng)非常熟悉了,但有些小技巧還是要和大家普及一下的。為了給大家演示,我們采用一個(gè)公開的數(shù)據(jù)集進(jìn)行說明。

import pandas as pd

iris = pd.read_csv

隨機(jī)采樣5條,數(shù)據(jù)是長這樣子的。

》》》 iris.sample(5)

sepal_length sepal_width petal_length petal_width species

95 5.7 3.0 4.2 1.2 versicolor

71 6.1 2.8 4.0 1.3 versicolor

133 6.3 2.8 5.1 1.5 virginica

4 5.0 3.6 1.4 0.2 setosa

33 5.5 4.2 1.4 0.2 setosa

因?yàn)槭欠纸M功能,所以被分的對(duì)象肯定是類別型的。在這個(gè)數(shù)據(jù)里,這里我們就以species進(jìn)行分組舉例。

首先,以species分組創(chuàng)建一個(gè)groupby的object。這里單獨(dú)生成groupby對(duì)象是因?yàn)楹竺鏁?huì)反復(fù)用到,其實(shí)用的熟練了直接鏈接起來就可以了。

iris_gb = iris.groupby(‘species’)

一、創(chuàng)建頻率表假如我想知道每個(gè)species類中的數(shù)量有多少,那么直接使用groupby的size函數(shù)即可,如下。

》》》 iris_gb.size()

species

setosa 50

versicolor 50

virginica 50

dtype: int64

二、計(jì)算常用的描述統(tǒng)計(jì)量比如,我想要按組計(jì)算均值,那么就用mean()函數(shù)。

》》》 # 計(jì)算均值

》》》 iris_gb.mean()

sepal_length sepal_width petal_length petal_width

species

setosa 5.006 3.428 1.462 0.246

versicolor 5.936 2.770 4.260 1.326

virginica 6.588 2.974 5.552 2.026

默認(rèn)情況下如果沒有限制,那么mean()函數(shù)將對(duì)所有變量特征計(jì)算均值。如果我希望只計(jì)算某一個(gè)變量的均值,可以指定該變量,如下所示。

》》》 # 單列

》》》 iris_gb[‘sepal_length’].mean()

species

setosa 5.006

versicolor 5.936

virginica 6.588

Name: sepal_length, dtype: float64

》》》 # 雙列

》》》 iris_gb[[‘sepal_length’, ‘petal_length’]].mean()

sepal_length petal_length

species

setosa 5.006 1.462

versicolor 5.936 4.260

virginica 6.588 5.552

同理,其它描述性統(tǒng)計(jì)量min、max()、medianhe和std都是一樣的用法。

三、查找最大值(最小值)索引如果我們要查找每個(gè)組的最大值或最小值的索引時(shí),有一個(gè)方便的功能可以直接使用。

》》》 iris_gb.idxmax()

sepal_length sepal_width petal_length petal_width

species

setosa 14 15 24 43

versicolor 50 85 83 70

virginica 131 117 118 100

如何應(yīng)用呢?

比如我們想查找每組sepal_length最大值對(duì)應(yīng)的整條記錄時(shí),就可以這樣用。注意,這里是整條記錄,相當(dāng)于按sepal_length最大值這個(gè)條件進(jìn)行了篩選。

》》》 sepal_largest = iris.loc[iris_gb[‘sepal_length’].idxmax()]

》》》 sepal_largest

sepal_length sepal_width petal_length petal_width species

14 5.8 4.0 1.2 0.2 setosa

50 7.0 3.2 4.7 1.4 versicolor

131 7.9 3.8 6.4 2.0 virginica

四、Groupby之后重置索引很多時(shí)候,我們?cè)趃roupby處理后還要進(jìn)行其他操作。也就是說,我們想重置分組索引以使其成為正常的行和列。

第一種方法可能大家常用,就是通過reset_index()讓亂序索引重置。

》》》 iris_gb.max().reset_index()

species sepal_length sepal_width petal_length petal_width

0 setosa 5.8 4.4 1.9 0.6

1 versicolor 7.0 3.4 5.1 1.8

2 virginica 7.9 3.8 6.9 2.5

但其實(shí),還有一個(gè)看上去更加友好的用法??梢栽趃roupby的時(shí)候就設(shè)置as_index參數(shù),也可以達(dá)到同樣效果。

》》》 iris.groupby(‘species’, as_index=False).max()

species sepal_length sepal_width petal_length petal_width

0 setosa 5.8 4.4 1.9 0.6

1 versicolor 7.0 3.4 5.1 1.8

2 virginica 7.9 3.8 6.9 2.5

五、多種統(tǒng)計(jì)量匯總上面都是單個(gè)統(tǒng)計(jì)量的操作,那如果我想同時(shí)操作好幾個(gè)呢?

groupby還有一個(gè)超級(jí)棒的用法就是和聚合函數(shù)agg連起來使用。

》》》 iris_gb[[‘sepal_length’, ‘petal_length’]].agg([“min”, “mean”])

sepal_length petal_length

min mean min mean

species

setosa 4.3 5.006 1.0 1.462

versicolor 4.9 5.936 3.0 4.260

virginica 4.9 6.588 4.5 5.552

在agg里面,我們只要列出統(tǒng)計(jì)量的名稱即可,便可同時(shí)對(duì)每個(gè)列進(jìn)行多維度統(tǒng)計(jì)。

六、特定列的聚合我們也看到了,上面是的多個(gè)操作對(duì)于每個(gè)列都是一樣的。實(shí)際使用過程中,我們可能對(duì)于每個(gè)列的需求都是不一樣的。

所以在這種情況下,我們可以通過為不同的列單獨(dú)設(shè)置不同的統(tǒng)計(jì)量。

》》》 iris_gb.agg({“sepal_length”: [“min”, “max”], “petal_length”: [“mean”, “std”]})

sepal_length petal_length

min max mean std

species

setosa 4.3 5.8 1.462 0.173664

versicolor 4.9 7.0 4.260 0.469911

virginica 4.9 7.9 5.552 0.551895

7、NamedAgg命名統(tǒng)計(jì)量現(xiàn)在我又有新的想法了。上面的多級(jí)索引看起來有點(diǎn)不太友好,我想把每個(gè)列下面的統(tǒng)計(jì)量和列名分別合并起來??梢允褂肗amedAgg來完成列的命名。

》》》 iris_gb.agg(

。。. sepal_min=pd.NamedAgg(column=“sepal_length”, aggfunc=“min”),

。。. sepal_max=pd.NamedAgg(column=“sepal_length”, aggfunc=“max”),

。。. petal_mean=pd.NamedAgg(column=“petal_length”, aggfunc=“mean”),

。。. petal_std=pd.NamedAgg(column=“petal_length”, aggfunc=“std”)

。。. )

sepal_min sepal_max petal_mean petal_std

species

setosa 4.3 5.8 1.462 0.173664

versicolor 4.9 7.0 4.260 0.469911

virginica 4.9 7.9 5.552 0.551895

因?yàn)镹amedAgg是一個(gè)元組,所以我們也可以直接賦值元組給新的命名,效果一樣,但看上去更簡(jiǎn)潔。

iris_gb.agg(

sepal_min=(“sepal_length”, “min”),

sepal_max=(“sepal_length”, “max”),

petal_mean=(“petal_length”, “mean”),

petal_std=(“petal_length”, “std”)

八、使用自定義函數(shù)上面agg聚合函數(shù)中我們都是通過添加一個(gè)統(tǒng)計(jì)量名稱來完成操作的,除此之外我們也可直接給一個(gè)功能對(duì)象。

》》》 iris_gb.agg(pd.Series.mean)

sepal_length sepal_width petal_length petal_width

species

setosa 5.006 3.428 1.462 0.246

versicolor 5.936 2.770 4.260 1.326

virginica 6.588 2.974 5.552 2.026

不僅如此,名稱和功能對(duì)象也可一起使用。

iris_gb.agg([“min”, pd.Series.mean])

更騷的是,我們還可以自定義函數(shù),也都是可以的。

》》》 def double_length(x):

。。. return 2*x.mean()

。。.

》》》 iris_gb.agg(double_length)

sepal_length sepal_width petal_length petal_width

species

setosa 10.012 6.856 2.924 0.492

versicolor 11.872 5.540 8.520 2.652

virginica 13.176 5.948 11.104 4.052

當(dāng)然如果想更簡(jiǎn)潔,也可以使用lambda函數(shù)??傊?,用法非常靈活,可以自由組合搭配。

iris_gb.agg(lambda x: x.mean())

以上就是使用groupby過程中可能會(huì)用到的8個(gè)操作,如果你熟練使用起來會(huì)發(fā)現(xiàn)這個(gè)功能是真的很強(qiáng)大。

原文標(biāo)題:Pandas 100 個(gè)騷操作:groupby 8 個(gè)常用技巧!

文章出處:【微信公眾號(hào):數(shù)據(jù)分析與開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4277

    瀏覽量

    62325
  • 數(shù)據(jù)處理
    +關(guān)注

    關(guān)注

    0

    文章

    572

    瀏覽量

    28509

原文標(biāo)題:Pandas 100 個(gè)騷操作:groupby 8 個(gè)常用技巧!

文章出處:【微信號(hào):DBDevs,微信公眾號(hào):數(shù)據(jù)分析與開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA在數(shù)據(jù)處理的應(yīng)用實(shí)例

    FPGA(現(xiàn)場(chǎng)可編程門陣列)在數(shù)據(jù)處理領(lǐng)域有著廣泛的應(yīng)用,其高度的靈活性和并行處理能力使其成為許多高性能數(shù)據(jù)處理系統(tǒng)的核心組件。以下是一些FPGA在數(shù)據(jù)處理
    的頭像 發(fā)表于 10-25 09:21 ?136次閱讀

    實(shí)時(shí)數(shù)據(jù)處理的邊緣計(jì)算應(yīng)用

    實(shí)時(shí)數(shù)據(jù)處理的邊緣計(jì)算應(yīng)用廣泛,涵蓋了多個(gè)行業(yè)和領(lǐng)域。以下是一些典型的應(yīng)用場(chǎng)景: 一、工業(yè)制造 在工業(yè)制造領(lǐng)域,邊緣計(jì)算技術(shù)被廣泛應(yīng)用于生產(chǎn)線上的設(shè)備監(jiān)控、數(shù)據(jù)處理和實(shí)時(shí)控制。通過在生產(chǎn)線上安裝
    的頭像 發(fā)表于 10-24 14:11 ?238次閱讀

    康謀分享 | ADTF過濾器全面解析:構(gòu)建、配置與數(shù)據(jù)處理應(yīng)用

    在ADTF(AutomotiveDataandTime-TriggeredFramework),過濾器(Filter)扮演著數(shù)據(jù)處理的核心角色。過濾器是處理數(shù)據(jù)流的基本單元,它們接收
    的頭像 發(fā)表于 09-18 09:42 ?2415次閱讀
    康謀分享 | ADTF過濾器全面解析:構(gòu)建、配置與<b class='flag-5'>數(shù)據(jù)處理</b>應(yīng)用

    邊緣計(jì)算物聯(lián)網(wǎng)關(guān)如何優(yōu)化數(shù)據(jù)處理流程

    在物聯(lián)網(wǎng)技術(shù)日新月異的今天,數(shù)據(jù)的產(chǎn)生、傳輸與處理已成為推動(dòng)行業(yè)智能化轉(zhuǎn)型的關(guān)鍵。邊緣計(jì)算物聯(lián)網(wǎng)關(guān),作為這一生態(tài)系統(tǒng)的核心組件,正以其獨(dú)特的優(yōu)勢(shì),在數(shù)據(jù)處理效率、實(shí)時(shí)性、安全性及成本
    的頭像 發(fā)表于 07-30 17:27 ?306次閱讀
    邊緣計(jì)算物聯(lián)網(wǎng)關(guān)如何優(yōu)化<b class='flag-5'>數(shù)據(jù)處理</b>流程

    巖土工程監(jiān)測(cè)振弦采集儀數(shù)據(jù)處理與解讀的挑戰(zhàn)與方法

    巖土工程監(jiān)測(cè)振弦采集儀數(shù)據(jù)處理與解讀的挑戰(zhàn)與方法 巖土工程監(jiān)測(cè)是確保工程安全的重要環(huán)節(jié),而振弦采集儀是巖土工程監(jiān)測(cè)中常用的一種設(shè)備。振弦采集儀通過測(cè)量土體的振動(dòng)響應(yīng),可以獲取土體的力學(xué)性質(zhì)和結(jié)構(gòu)
    的頭像 發(fā)表于 06-03 13:59 ?248次閱讀
    巖土工程監(jiān)測(cè)<b class='flag-5'>中</b>振弦采集儀<b class='flag-5'>數(shù)據(jù)處理</b>與解讀的挑戰(zhàn)與方法

    振弦采集儀在巖土工程監(jiān)測(cè)數(shù)據(jù)處理與結(jié)果展示

    振弦采集儀在巖土工程監(jiān)測(cè)數(shù)據(jù)處理與結(jié)果展示 河北穩(wěn)控科技振弦采集儀是巖土工程監(jiān)測(cè)中常用的一種設(shè)備,用于采集地下土體振動(dòng)信號(hào),通過對(duì)數(shù)據(jù)處理與結(jié)果的展示,可以有效地評(píng)估土體的動(dòng)力特
    的頭像 發(fā)表于 05-14 16:41 ?248次閱讀
    振弦采集儀在巖土工程監(jiān)測(cè)<b class='flag-5'>中</b>的<b class='flag-5'>數(shù)據(jù)處理</b>與結(jié)果展示

    工程監(jiān)測(cè)振弦采集儀在振動(dòng)監(jiān)測(cè)的應(yīng)用與數(shù)據(jù)處理技術(shù)

    工程監(jiān)測(cè)振弦采集儀在振動(dòng)監(jiān)測(cè)的應(yīng)用與數(shù)據(jù)處理技術(shù) 振弦采集儀是一種用于振動(dòng)監(jiān)測(cè)和分析的儀器設(shè)備。它采用振弦傳感器作為振動(dòng)信號(hào)的采集元件,可以實(shí)時(shí)測(cè)量結(jié)構(gòu)物或設(shè)備的振動(dòng)狀態(tài),并將采集到的振動(dòng)數(shù)據(jù)進(jìn)行
    的頭像 發(fā)表于 04-07 13:59 ?497次閱讀
    工程監(jiān)測(cè)振弦采集儀在振動(dòng)監(jiān)測(cè)<b class='flag-5'>中</b>的應(yīng)用與<b class='flag-5'>數(shù)據(jù)處理</b>技術(shù)

    巖土工程監(jiān)測(cè)振弦采集儀的操作方法及數(shù)據(jù)處理技術(shù)

    巖土工程監(jiān)測(cè)振弦采集儀的操作方法及數(shù)據(jù)處理技術(shù) 振弦采集儀是巖土工程監(jiān)測(cè)中常用的一種儀器,用于測(cè)量地下土層的動(dòng)力特性和地下水位等參數(shù)。下面是振弦采集儀的操作方法及數(shù)據(jù)處理技術(shù): 巖土工程監(jiān)測(cè)
    的頭像 發(fā)表于 03-15 13:31 ?237次閱讀
    巖土工程監(jiān)測(cè)<b class='flag-5'>中</b>振弦采集儀的操作方法及<b class='flag-5'>數(shù)據(jù)處理</b>技術(shù)

    工程監(jiān)測(cè)領(lǐng)域振弦采集儀的數(shù)據(jù)處理與分析方法探討

    工程監(jiān)測(cè)領(lǐng)域振弦采集儀的數(shù)據(jù)處理與分析方法探討 在工程監(jiān)測(cè)領(lǐng)域,振弦采集儀是常用的一種設(shè)備,用于測(cè)量和記錄結(jié)構(gòu)物的振動(dòng)數(shù)據(jù)。數(shù)據(jù)處理和分析是使用振弦采集儀得到的數(shù)據(jù)的重要環(huán)節(jié),可以幫助
    的頭像 發(fā)表于 01-10 14:44 ?389次閱讀
    工程監(jiān)測(cè)領(lǐng)域振弦采集儀的<b class='flag-5'>數(shù)據(jù)處理</b>與分析方法探討

    工程監(jiān)測(cè)振弦采集儀的數(shù)據(jù)處理方法研究

    工程監(jiān)測(cè)振弦采集儀的數(shù)據(jù)處理方法研究 工程監(jiān)測(cè)振弦采集儀的數(shù)據(jù)處理方法研究是針對(duì)振弦采集儀所采集到的數(shù)據(jù)進(jìn)行分析和
    的頭像 發(fā)表于 01-09 15:10 ?324次閱讀
    工程監(jiān)測(cè)<b class='flag-5'>中</b>振弦采集儀的<b class='flag-5'>數(shù)據(jù)處理</b>方法研究

    數(shù)據(jù)處理

    初學(xué)者想請(qǐng)教一下大家,采集的噪聲信號(hào),想要對(duì)采集到的數(shù)據(jù)累計(jì)到一定數(shù)量再進(jìn)行處理,計(jì)劃每隔0.2秒進(jìn)行一次數(shù)據(jù)處理,(得到均方根值等一些特征值)請(qǐng)問大家有什么方法可以實(shí)現(xiàn)
    發(fā)表于 01-07 10:11

    配網(wǎng)行波故障預(yù)警與定位裝置的數(shù)據(jù)處理

    今天江蘇宇拓電力來為大家說明一下配網(wǎng)行波故障預(yù)警與定位裝置的數(shù)據(jù)處理。 一、引言 隨著電力系統(tǒng)規(guī)模的擴(kuò)大和復(fù)雜性的增加,對(duì)配電網(wǎng)的可靠性和穩(wěn)定性提出了更高的要求。在此背景下,配網(wǎng)行波故障預(yù)警與定位
    的頭像 發(fā)表于 12-22 11:51 ?1328次閱讀

    Python利用pandas讀寫Excel文件

    使用pandas模塊讀取Excel文件可以更為方便和快捷。pandas可以將Excel文件讀取為一個(gè)DataFrame對(duì)象,方便進(jìn)行數(shù)據(jù)處理和分析。
    的頭像 發(fā)表于 12-16 11:22 ?1246次閱讀
    Python利用<b class='flag-5'>pandas</b>讀寫Excel文件

    數(shù)據(jù)處理器:DPU編程入門》+初步熟悉這本書的結(jié)構(gòu)和主要內(nèi)容

    大幅度提高計(jì)算速度和效率,以滿足這些增長的計(jì)算需求。 其次,網(wǎng)絡(luò)和數(shù)據(jù)處理的緊密結(jié)合是DPU演進(jìn)的另一個(gè)核心驅(qū)動(dòng)力。在當(dāng)前的計(jì)算架構(gòu),數(shù)據(jù)處理和網(wǎng)絡(luò)功能通常是分開的,這可能導(dǎo)致延遲增加、數(shù)據(jù)
    發(fā)表于 12-08 18:03

    使用pandas進(jìn)行數(shù)據(jù)選擇和過濾的基本技術(shù)和函數(shù)

    Python pandas庫提供了幾種選擇和過濾數(shù)據(jù)的方法,如loc、iloc、[]括號(hào)操作符、query、isin、between等等
    的頭像 發(fā)表于 12-01 10:14 ?324次閱讀
    使用<b class='flag-5'>pandas</b>進(jìn)行<b class='flag-5'>數(shù)據(jù)</b>選擇和過濾的基本技術(shù)和函數(shù)