Python中将超市交易数据按交易号分组为索引列的方法求助
合并超市交易数据实现单交易行购物篮格式
我已经将名为“grocery store transactions”的CSV文件加载到Python中,代码如下:
txns = pd.read_csv('transactions.csv') txns.head(10)
当前超市交易数据中,涉及多件商品的交易分散在多行。我的目标是将交易号列设为索引列,让每行代表一个唯一交易号,并汇总该交易下的所有关联商品,以开展购物篮分析,现寻求实现方法。
解决方案
假设你的交易号列名为transaction_id,商品名列名为product_name(替换成你实际的列名即可),用Pandas的分组聚合就能快速实现需求:
1. 把商品汇总为列表(适合后续购物篮分析工具)
这种格式可以直接对接mlxtend等库的关联规则算法:
# 按交易号分组,将同交易的商品合并成列表 basket = txns.groupby('transaction_id')['product_name'].agg(list).reset_index() # 将交易号设为索引 basket.set_index('transaction_id', inplace=True)
2. 用分隔符拼接商品为字符串(直观文本格式)
如果需要更易读的文本展示,可用逗号或其他分隔符拼接:
# 按交易号分组,用逗号分隔商品 basket = txns.groupby('transaction_id')['product_name'].agg(', '.join).reset_index() # 设置交易号为索引 basket.set_index('transaction_id', inplace=True)
3. 验证处理结果
执行完后用head()检查数据格式:
basket.head()
额外提示
- 先确认
transaction_id是唯一的交易标识,避免分组错误 - 若数据有缺失值,先清理:
txns = txns.dropna(subset=['transaction_id', 'product_name']) - 用列表格式的数据做购物篮分析时,可通过
mlxtend.preprocessing.TransactionEncoder转换为One-Hot编码后,再用Apriori算法挖掘关联规则
内容的提问来源于stack exchange,提问作者DataScience_2367
相关产品推荐
相关产品推荐

