最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pandas中g(shù)roupby+agg的兩種寫(xiě)法區(qū)別小結(jié)

 更新時(shí)間:2026年01月07日 10:49:19   作者:司徒軒宇  
Pandas中g(shù)roupby+agg操作存在兩種常見(jiàn)寫(xiě)法,第一種會(huì)將分組字段轉(zhuǎn)為MultiIndex,導(dǎo)致后續(xù)處理困難,第二種通過(guò)as_index=False保持分組字段為普通列,更適用于工程場(chǎng)景,兩種寫(xiě)法核心區(qū)別在于索引類型、列名控制和擴(kuò)展性,下面就來(lái)詳細(xì)的介紹一下

在使用 Pandas 做數(shù)據(jù)統(tǒng)計(jì)時(shí),groupby + agg 是繞不開(kāi)的操作。

但很多人(包括我自己)在實(shí)際項(xiàng)目中都會(huì)遇到一個(gè)問(wèn)題:

為什么明明只是做個(gè)統(tǒng)計(jì),結(jié)果 DataFrame 卻變成了 MultiIndex,
后面 merge、導(dǎo) Excel、畫(huà)圖全都開(kāi)始報(bào)錯(cuò)?

追根溯源,問(wèn)題往往出在:
?? groupby + agg 的寫(xiě)法選錯(cuò)了

本文結(jié)合真實(shí)工程經(jīng)驗(yàn),詳細(xì)講清楚 Pandas 中 agg 的兩種常見(jiàn)寫(xiě)法,以及為什么在工程場(chǎng)景下強(qiáng)烈推薦其中一種。

一、一個(gè)非常真實(shí)的使用場(chǎng)景

假設(shè)你在做檢測(cè)評(píng)測(cè)統(tǒng)計(jì),有如下數(shù)據(jù):

classpart1TPFPFNGT_count
cowv015106
cowv014015
dogv023214

目標(biāo)是:

按 class + part1 統(tǒng)計(jì) TP / FP / FN / GT 數(shù)量

二、第一種寫(xiě)法:很多人最常用,但最容易踩坑

groupby_df = df.groupby(['class', 'part1']).agg(
    {'TP': 'sum', 'FP': 'sum', 'FN': 'sum', 'GT_count': 'sum'}
)

這段代碼有問(wèn)題嗎?
沒(méi)有。

但它返回的結(jié)果結(jié)構(gòu)是:

  • class 和 part1 變成了 MultiIndex
  • 統(tǒng)計(jì)結(jié)果才是列

也就是說(shuō),你拿到的是一張 多級(jí)索引 DataFrame。

MultiIndex 在工程中會(huì)帶來(lái)什么問(wèn)題?

以下問(wèn)題你大概率都會(huì)遇到:

  • 導(dǎo)出 Excel 前必須 reset_index()
  • 和其他表 merge 時(shí)經(jīng)常報(bào)錯(cuò)
  • 新同事很難快速理解數(shù)據(jù)結(jié)構(gòu)
  • 后面再算指標(biāo)時(shí)代碼變得很別扭

?? 分析階段還能接受,工程階段非常痛苦

三、第二種寫(xiě)法:Pandas 官方推薦(強(qiáng)烈建議)

groupby_df = (
    df.groupby(['class', 'part1'], as_index=False)
    .agg(
        TP=('TP', 'sum'),
        FP=('FP', 'sum'),
        FN=('FN', 'sum'),
        GT=('GT_count', 'sum'),
    )
)

返回結(jié)果是什么樣?

class | part1 | TP | FP | FN | GT

  • 分組字段是普通列
  • 沒(méi)有 MultiIndex
  • 看起來(lái)就是一張“標(biāo)準(zhǔn)統(tǒng)計(jì)表”

四、兩種寫(xiě)法的核心區(qū)別對(duì)比

對(duì)比點(diǎn)第一種寫(xiě)法第二種寫(xiě)法
分組字段位置Index普通列
索引類型MultiIndex普通 Index
是否需要 reset_index
列名是否可控
擴(kuò)展復(fù)雜統(tǒng)計(jì)不優(yōu)雅非常自然
工程實(shí)用性較低很高

五、真實(shí)項(xiàng)目中的差距會(huì)越來(lái)越大

當(dāng)統(tǒng)計(jì)需求升級(jí),比如你還想算:

  • 平均置信度
  • 唯一 track 數(shù)

第一種寫(xiě)法會(huì)越來(lái)越臃腫:

df.groupby(['class', 'part1']).agg({
    'TP': 'sum',
    'FP': 'sum',
    'FN': 'sum',
    'score': 'mean',
    'track_id': 'nunique'
})

而第二種寫(xiě)法依然清晰:

df.groupby(['class', 'part1'], as_index=False).agg(
    TP=('TP', 'sum'),
    FP=('FP', 'sum'),
    FN=('FN', 'sum'),
    avg_score=('score', 'mean'),
    track_cnt=('track_id', 'nunique'),
)

到此這篇關(guān)于Pandas中g(shù)roupby+agg的兩種寫(xiě)法區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)Pandas中g(shù)roupby+agg 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

安溪县| 济宁市| 延寿县| 东城区| 刚察县| 新和县| 大城县| 漳平市| 工布江达县| 宝山区| 平泉县| 锦州市| 贵州省| 松桃| 遵义县| 龙口市| 桓台县| 吉水县| 河津市| 卫辉市| 定西市| 龙井市| 蓬溪县| 麻江县| 新丰县| 长乐市| 新郑市| 吉安市| 沈阳市| 和政县| 神木县| 阿勒泰市| 额济纳旗| 玛曲县| 达州市| 通榆县| 中宁县| 澳门| 濮阳县| 南郑县| 当涂县|