如何统计Pandas数据框中产品选择组合的出现频率?
Pandas统计产品选择组合及对应选中列的实现
步骤1:准备环境与模拟数据
先给数据框添加列名(方便后续识别选中的产品),模拟代码如下:
import pandas as pd import numpy as np # 生成模拟数据并添加列名 df = pd.DataFrame(np.random.randint(2, size=(566,8)), columns=[f"产品{i+1}" for i in range(8)])
步骤2:统计各选择组合的出现次数
两种简洁实现方式:
方式一:用value_counts()快速统计
# 按行去重并统计次数,转换为数据框格式 combination_counts = df.value_counts().reset_index(name="出现次数")
方式二:用groupby分组统计
# 按所有列分组,统计每组行数 combination_counts = df.groupby(list(df.columns)).size().reset_index(name="出现次数")
步骤3:提取对应选中的产品列
通过apply遍历每行,筛选出值为1的列名,组成选中产品列表:
combination_counts["选中的产品列"] = combination_counts.apply( lambda row: [col for col in df.columns if row[col] == 1], axis=1 )
步骤4:整理并查看结果
如果只需要核心信息(选中产品+出现次数),可以筛选列并排序:
# 按出现次数降序排列,展示关键列 final_result = combination_counts[["选中的产品列", "出现次数"]].sort_values(by="出现次数", ascending=False) print(final_result)
说明
- 如果你的原始数据框没有列名,先执行
df.columns = [f"产品_{i}" for i in range(df.shape[1])]给列命名,否则选中列会显示索引数字 value_counts()默认按出现次数降序排列,比groupby写法更简洁,适合快速统计
内容的提问来源于stack exchange,提问作者lopusfx
相关产品推荐
相关产品推荐

