首頁 >後端開發 >Python教學 >Pandas 如何有效計算分組資料框中的術語數?

Pandas 如何有效計算分組資料框中的術語數?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-28 02:36:09899瀏覽

How Can Pandas Efficiently Count Terms within Grouped DataFrames?

對分組DataFrame 中的術語進行計數:Pandas 解決方案

本文解決了對組內的術語進行計數並在DataFrame 中計數總結結果的挑戰。使用 Pandas,可以優雅地解決此任務,而無需訴諸低效率的循環。考慮以下 DataFrame:

df = pd.DataFrame([
    (1, 1, 'term1'),
    (1, 2, 'term2'),
    (1, 1, 'term1'),
    (1, 1, 'term2'),
    (2, 2, 'term3'),
    (2, 3, 'term1'),
    (2, 2, 'term1')
])

目標是按「id」和「group」進行分組並計算每個「term」的出現次數。為了實現這一點,Pandas 提供了一個簡潔的解決方案:

df.groupby(['id', 'group', 'term']).size().unstack(fill_value=0)

此操作按'id'、'group' 和'term' 列對DataFrame 進行分組,計算每個唯一組合的出現次數,並傳回一個匯總了具有多索引列和名為「size」的單值列(包含計數)的DataFrame。 「unstack」函數將DataFrame 重塑為寬格式,每個唯一術語以一列表示,如下所示:

id  group term   size
1   1     term1  3
    1     term2  2
    2     term3  1
2   2     term1  3

時序分析

對於更大的資料集,了解該解決方案的效能特徵至關重要。為了評估這一點,請考慮使用以下程式碼產生一個包含100 萬行的DataFrame:

df = pd.DataFrame(dict(id=np.random.choice(100, 1000000),
                       group=np.random.choice(20, 1000000),
                       term=np.random.choice(10, 1000000)))

分析分組和計數操作表明它甚至可以有效地處理大型資料集:

df.groupby(['id', 'group', 'term']).size().unstack(fill_value=0)

這種效能歸功於Pandas 底層分組和聚合機制的最佳化性質,使其成為高效處理大型資料集的優秀工具。

以上是Pandas 如何有效計算分組資料框中的術語數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn