在Pandas中识别多类客户群体并计算指标遇阻求助
客户群体分类实现方案
数据预处理
首先确保日期列是可计算的datetime类型:
import pandas as pd # 转换日期格式 df['date'] = pd.to_datetime(df['date'])
计算客户核心统计指标
先按邮箱分组,提取每个客户的关键时间与购买数据:
# 以数据中最新订单日期为基准计算时间区间 latest_date = df['date'].max() one_year_ago = latest_date - pd.DateOffset(years=1) last_month_start = latest_date - pd.DateOffset(months=1) current_month_start = latest_date.replace(day=1) # 分组统计客户指标 cust_stats = df.groupby('email').agg( first_purchase=('date', 'min'), last_purchase=('date', 'max'), orders_last_12m=('order_id', lambda x: x[df.loc[x.index, 'date'] >= one_year_ago].count()) ).reset_index()
生成各类客户Series
1. 老客户(过去12个月内有1次购买记录)
old_cust = cust_stats[ cust_stats['orders_last_12m'] == 1 ]['email'].reset_index(drop=True)
2. 新客户(首次购买发生在上个月)
new_cust = cust_stats[ (cust_stats['first_purchase'] >= last_month_start) & (cust_stats['first_purchase'] <= latest_date) ]['email'].reset_index(drop=True)
3. 重复客户(过去12个月内购买次数超过1次)
repeat_cust = cust_stats[ cust_stats['orders_last_12m'] > 1 ]['email'].reset_index(drop=True)
4. 流失客户(过去12个月内无任何购买记录)
churned_cust = cust_stats[ cust_stats['last_purchase'] < one_year_ago ]['email'].reset_index(drop=True)
5. 复购客户(流失客户在当月产生购买记录)
# 筛选当月有购买的客户 current_month_buyers = df[df['date'] >= current_month_start]['email'].unique() # 取流失客户与当月购买客户的交集 returning_cust = pd.Series( list(set(churned_cust) & set(current_month_buyers)), name='email' ).reset_index(drop=True)
注意事项
- 时间区间以数据内最新订单日期为基准,若需固定统计日期,直接替换
latest_date为目标日期即可。 - 假设
order_id唯一对应单次购买,无需额外去重处理。
内容的提问来源于stack exchange,提问作者MSasta
相关产品推荐
相关产品推荐

