在資料分析中,經常需要將資料分組並統計特定值或術語的出現次數。使用 Pandas 中的 groupby 和 size 函數可以輕鬆實現這種類型的聚合。
問題:
假設您有一個包含以下列的 DataFrame df:id、群組和術語。目標是計算 id 和 group 的每個組合中每個唯一術語的出現次數,而不使用迴圈。
解決方案:
為了實現這一點,我們可以使用以下步驟:
產生的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') ], columns=['id', 'group', 'term']) result = df.groupby(['id', 'group', 'term']).size().unstack(fill_value=0) print(result)
輸出:
term1 term2 term3 id group 1 1 2 1 2 2 2 1 3 1 0
效能:
對於大型資料集, groupby 和size 操作的計算成本可能很高。以下程式碼提供了對具有 1,000,000 行的 DataFrame 進行分組和計數的計時統計資訊:
df = pd.DataFrame(dict(id=np.random.choice(100, 1000000), group=np.random.choice(20, 1000000), term=np.random.choice(10, 1000000))) %timeit df.groupby(['id', 'group', 'term']).size().unstack(fill_value=0)
以上是如何在不使用迴圈的情況下按 ID 和群組有效地對 Pandas DataFrames 中術語的出現次數進行分組和計數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!