You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas统计所有商品组合的购买频次?

统计所有商品组合的用户购买频次

需求说明

需要统计所有可能的商品组合对应的独立购买用户数,涵盖单个商品、两两组合、多商品组合等所有非空商品子集的用户购买频次。

交易数据示例

userid    product
u1        A
u1        B
u1        C
u2        A
u2        C

期望统计结果

combination  count_of_distinct_users
A            2
B            1
C            2
A, B         1
A, C         2
B, C         1 
A, B, C      1

实现方案(Python示例)

通过以下步骤完成统计:

  1. 按用户分组,收集每个用户购买的商品集合
  2. 为每个用户的商品集合生成所有非空子集
  3. 统计每个子集对应的独立用户数

代码实现:

import itertools
from collections import defaultdict

# 模拟交易数据
transactions = [
    ("u1", "A"),
    ("u1", "B"),
    ("u1", "C"),
    ("u2", "A"),
    ("u2", "C"),
]

# 按用户分组,整理每个用户的购买商品集合
user_product_sets = defaultdict(set)
for user_id, product in transactions:
    user_product_sets[user_id].add(product)

# 统计各商品组合的用户数
combo_count = defaultdict(int)
for products in user_product_sets.values():
    # 生成当前用户商品集合的所有非空子集
    for subset_len in range(1, len(products) + 1):
        # 对子集元素排序,保证组合格式统一(如避免出现B,A这类与A,B重复的组合)
        for subset in itertools.combinations(sorted(products), subset_len):
            combo_key = ", ".join(subset)
            combo_count[combo_key] += 1

# 按组合长度、组合内容排序后输出
sorted_combos = sorted(combo_count.items(), key=lambda x: (len(x[0].split(", ")), x[0]))
print("combination  count_of_distinct_users")
for combo, count in sorted_combos:
    print(f"{combo:<12} {count}")

运行上述代码即可得到与期望一致的统计结果。

内容的提问来源于stack exchange,提问作者dimitris_ps

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 17:25:25