请求协助:用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
相关产品推荐
相关产品推荐

