You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 15:27:21