按 Pandas 数据框中的术语计数进行分组
问题:
给定一个数据框以下列:id、group 和 term。目标是确定每个术语在 id 和 group 的每个唯一组合中出现的次数。
解决方案:
要避免使用循环,请使用 groupby 和Pandas 中的 size 函数:
df.groupby(['id', 'group', 'term']).size().unstack(fill_value=0)
groupby 函数按指定列(id、group 和term),而 size 函数计算每个组合的出现次数。 unstack 函数会生成一个更具视觉吸引力的表格,其中计数以矩阵形式排列。
结果是一个具有多索引列的表格,其中前两个级别代表 id 和 group 的组合,第三个级别代表 id 和 group 的组合对应于该术语。表中的每个单元格显示特定术语在相应 ID 和组中出现的次数。
时间:
对于大型数据集(例如 1,000,000 行) ,性能非常出色:
df = pd.DataFrame(dict(id=np.random.choice(100, 1000000), group=np.random.choice(20, 1000000), term=np.random.choice(10, 1000000)))
使用上述方法,经过的时间约为1秒。
以上是如何有效地计算 Pandas DataFrame 中组内术语的出现次数?的详细内容。更多信息请关注PHP中文网其他相关文章!