PROJECT 02入门
基于购物车的复购行为与商品关联预测
Shopping Cart Repeat Purchase Analysis
通过 groupby 聚合与特征构造,分析用户复购行为并预测商品关联购买概率。
groupby 聚合特征构造复购率计算关联分析pivot_table
项目背景
某生鲜电商平台希望提升用户复购率。通过分析用户购物车数据,识别高频复购商品组合,为精准推荐和促销活动提供数据支撑。
模拟数据集
user_id,product_name,category,purchase_date,quantity,price,is_repeat
U001,有机鸡蛋,生鲜,2024-01-05,2,29.9,False
U001,有机鸡蛋,生鲜,2024-01-19,2,29.9,True
U001,全麦面包,烘焙,2024-01-05,1,18.5,False
U001,全麦面包,烘焙,2024-01-22,1,18.5,True
U002,进口牛奶,乳品,2024-01-03,3,45.0,False
U002,进口牛奶,乳品,2024-01-17,3,45.0,True
U002,希腊酸奶,乳品,2024-01-10,2,35.8,False
U003,三文鱼,海鲜,2024-01-08,1,89.0,False
U003,三文鱼,海鲜,2024-01-22,1,89.0,True
U003,虾仁,海鲜,2024-01-08,1,55.0,False代码练习区
在下方编辑器中编写你的 Pandas 代码。可记录笔记、编写伪代码,参考答案在下方。
pandas_exercise.py
Loading...
参考答案
reference_solution.py
import pandas as pd
import numpy as np
df = pd.read_csv('cart_data.csv')
df['purchase_date'] = pd.to_datetime(df['purchase_date'])
# 1. 用户维度聚合
user_stats = df.groupby('user_id').agg(
total_orders=('product_name', 'count'),
unique_products=('product_name', 'nunique'),
total_spent=('price', lambda x: (x * df.loc[x.index, 'quantity']).sum()),
repeat_rate=('is_repeat', 'mean'),
avg_order_interval=('purchase_date', lambda x: (x.max() - x.min()).days / max(x.nunique() - 1, 1))
).reset_index()
# 2. 商品复购率
product_repeat = df.groupby('product_name').agg(
total_purchases=('user_id', 'count'),
repeat_purchases=('is_repeat', 'sum'),
unique_buyers=('user_id', 'nunique')
).reset_index()
product_repeat['repeat_rate'] = product_repeat['repeat_purchases'] / product_repeat['total_purchases']
# 3. 商品关联分析 (共同购买矩阵)
cart_pairs = df.groupby(['user_id', 'purchase_date'])['product_name'].apply(list).reset_index()
# 构建共现矩阵...
# 4. 复购预测特征
df['days_since_first'] = (df['purchase_date'] - df['purchase_date'].min()).dt.days
df['is_weekend'] = df['purchase_date'].dt.dayofweek >= 5业务解读
复购率是电商核心指标。生鲜品类天然具有高频复购特征,通过识别复购周期可以优化补货提醒推送时机。商品关联分析(购物篮分析)可用于 '猜你喜欢' 和凑单推荐,提升客单价。