学习处理购物篮数据,分析商品关联关系
使用 market_basket 数据集,包含交易ID和商品组合信息。
购物篮分析(Market Basket Analysis)是一种数据分析技术,用于发现顾客购买行为模式,特别是哪些商品经常一起被购买。
购物篮分析的应用场景:
使用 str.split() 将字符串拆分成列表,便于逐个处理商品。
# 拆分商品字符串 df['items_list'] = df['items'].str.split(',') print(df[['transaction_id', 'items_list']].head())
使用 str.contains() 检查字符串是否包含特定内容。
# 查找包含 Bread 的交易 contains_bread = df[df['items'].str.contains('Bread', na=False) print(f'包含 Bread 的交易数: {len(contains_bread)}')
通过拆分后的列表长度计算每笔交易的商品数量。
# 计算每笔交易的商品数量 df['item_count'] = df['items'].str.split(',').apply(len) print(df[['transaction_id', 'item_count']].head())
Python 的 collections.Counter 是统计频率的利器。
from collections import Counter # 统计各商品出现次数 all_items = [] for items in df['items'].str.split(','): all_items.extend(items) item_counts = Counter(all_items) for item, count in item_counts.most_common(): print(f'{item}: {count}次')
找出出现次数超过特定阈值的商品。
# 找出出现次数超过3次的商品 frequent_items = {item: count for item, count in item_counts.items() if count > 3} print("高频商品:") print(frequent_items)
使用布尔索引筛选满足条件的交易。
# 查找同时包含 Bread 和 Milk 的交易 both = df[(df['items'].str.contains('Bread')) & (df['items'].str.contains('Milk'))] print(f'同时包含 Bread 和 Milk 的交易数: {len(both)}')
统计商品组合的出现频率,发现关联关系。
# 统计商品组合频率 pair_counts = Counter() for items in df['items'].str.split(','): for i in range(len(items)): for j in range(i+1, len(items)): pair = tuple(sorted([items[i], items[j]])) pair_counts[pair] += 1 print("商品组合频率:") for pair, count in pair_counts.most_common(5): print(f'{pair}: {count}次')
在下方代码编辑器中编写并运行完整的购物篮分析代码:
在下方代码编辑器中编写并运行完整的购物篮分析代码: