對分組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中文網其他相關文章!