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

请求协助:用Power BI DAX分析最热销的5种产品组合

解决方案

1. 数据预处理(解决OrderID不唯一问题)

首先按OrderID分组,将同一订单内的产品合并为有序的产品组合(避免"A+B"和"B+A"被算作不同组合)。以Python pandas为例:

import pandas as pd

# 假设已将数据集导入为DataFrame(列包含OrderID、ProductName)
# df = pd.read_csv("你的数据集路径")

# 按OrderID分组,对每个订单的产品去重后排序,再用分隔符连接成组合
df['Product_Combination'] = df.groupby('OrderID')['ProductName'].transform(
    lambda x: ', '.join(sorted(x.unique()))
)

# 去重,保留每个OrderID对应的唯一组合
unique_order_combinations = df[['OrderID', 'Product_Combination']].drop_duplicates()

2. 统计Top5产品组合

统计各组合的出现频次,筛选排名前5的组合:

# 统计组合频次
combination_counts = unique_order_combinations['Product_Combination'].value_counts().reset_index()
combination_counts.columns = ['Product_Combination', 'Order_Count']

# 提取Top5组合
top5_combinations = combination_counts.head(5)

3. 生成目标样式图表

用matplotlib绘制和示例图一致的横向条形图:

import matplotlib.pyplot as plt

plt.figure(figsize=(10, 6))
# 绘制横向条形图
bars = plt.barh(top5_combinations['Product_Combination'], top5_combinations['Order_Count'], color='#2e8b57')

# 在条形上标注订单数量
for bar in bars:
    width = bar.get_width()
    plt.text(width + 1, bar.get_y() + bar.get_height()/2,
             f'{int(width)}', ha='left', va='center', fontweight='bold')

# 设置图表样式
plt.title('Top 5 Most Purchased Product Combinations', fontsize=14, pad=15)
plt.xlabel('Number of Orders', fontsize=12)
plt.ylabel('Product Combination', fontsize=12)
plt.gca().invert_yaxis()  # 让排名第一的组合显示在最上方
plt.tick_params(axis='both', labelsize=10)
plt.tight_layout()
plt.show()

关键注意点

  • 排序产品名称:确保同一组产品无论下单顺序如何,都被识别为同一个组合,避免统计偏差
  • 去重OrderID:原数据OrderID不唯一,必须先保留每个订单的唯一组合,再统计频次

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:45:38