在数据分析中,经常需要对数据进行分组并统计特定值或术语的出现次数。使用 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中文网其他相关文章!