线上平台用户分类分析¶

一、业务背景¶

某线上平台发现最近一年各类营销活动的效果不佳,且总体销售额没有明显的增长。据了解,以往的营销活动面向所有用户,部分用户无论有无营销活 动均稳定的消费,而有些用户很长时间未消费可能已转变为流失人群。平台逐渐意识到用户分类的重要性。实现用户分类后,可针对不同用户实施组合促销、会员卡充值、满减等营销活动。

二、数据说明¶

  1. 案例中提供的数据为某电商平台的销售数据,数据来源于脱敏后的公开数据集
  2. 数据表主要字段截图

image.png

  1. 主要字段含义:
    transid:订单id
    cumid: 用户id
    trandatetime: 交易日期
    amount :订单金额
    type_label:订单标签
    transtype :交易类型,与订单标签相对应

三、分析思路¶

1.数据清洗¶

交易日期为明显的字符串格式,需要进行数据转换,为了便于后续操作,生成新表¶

create table rfmlabel_new as 
    select 
        transid,
        cumid, 
        str_to_date(trandatetime,'%d%b%y:%H:%i:%s') as trandatetime,
        amount,
        type_label,
        transtype 
    from rfmlabel;

image.png

2. 确定数据分析的窗口期:¶

(1)根据业务需求¶

这里为模拟数据所以不作考虑

(2)数据窗口期选择 :¶

a. 尽可能覆盖多的用户(70%)¶

  • 假设窗口期是一个月:
  • 确定分析时间节点: 确定分析时间节点是2020-09-26
select max(trandatetime) from rfmlabel_new;

image.png

  • 一个月内有多少用户有购买行为,占总的用户比重,确定时间窗口是否有分析意义
select count(distinct cumid) as 总人数 from rfmlabel_new;
select count(distinct cumid) 月内用户 from rfmlabel_new where trandatetime>date_sub('2010-09-26',interval 1 month)
- 计算占比  965/1200--> 80%   说明足以覆盖比较多的用户,该时间节点选取比较合理

image.png image-2.png

b.指标可计算有意义(F不能都为1)¶

  select 
    cishu,
    count(*) 
  from 
	(select 
        cumid,
        count(transid) as cishu 
	from rfmlabel_new 
	where trandatetime>date_sub('2010-09-26',interval 1 month)
	group by cumid)as 次数表 
  group by cishu; 

image.png

  • F 值有多种,可见测算指标有意义

c.订单是有状态的,最近一个月的订单是否要考虑订单的状态¶

select distinct type_label from rfmlabel;

image.png

  • 订单的状态有4种,我们选择正常、特价订单,便于精准分析意向购买人群
select 
    * 
from rfmlabel_new 
where trandatetime>date_sub('2010-09-26',interval 1 month) and type_label in ('正常','特价');

image.png

四、数据的统计分析¶

1. 计算每个顾客的RFM值¶

R=分析日期-最近一次购买日期   
F=订单编号计数    
M=订单金额合计
  select 
	cumid,
        timestampdiff(day,max(trandatetime),'2010-09-26') as R,
        count(transid) as F,
        sum(amount) as M
   from rfmlabel_new 
   where trandatetime>date_sub('2010-09-26',interval 1 month) and type_label in ('正常','特价')
   group by cumid;

image.png

2.对指标进行分类分析¶

a.对R、F、M各指标进行二分类¶

R-->(远近)  F-->(高低)  M-->(高低)

#### b.二分类的阈值确定

  • 作为连续型变量考虑用均值作为阈值
  • 二分类口径:
    R(远近)-------->如果用户R的值大于所有R的均值,则分类为为远,否则为近
    F(高低)-------->如果用户F的值大于所有F的均值,则分类为为高,否则为低
    M(高低)-------->如果用户M的值大于所有M的均值,则分类为为高,否则为低

c.查找分析¶

create table RFM as 
with 指标表 as 
(select 
cumid,
timestampdiff(day,max(trandatetime),'2010-09-26') as R,
count(transid) as F,
sum(amount) as M
from rfmlabel_new where trandatetime>date_sub('2010-09-26',interval 1 month) and type_label in ('正常','特价')
group by cumid),
分类表 as 
(select *,
if(R>avg(R) over(),'远','近') as R指标,
if(F>avg(F) over(),'高','低') as F指标,
if(M>avg(M) over(),'高','低') as M指标
from 指标表),
用户价值表 as 
(select *,
 concat(R指标,F指标,M指标) as RFM标签,
case 
   when concat(R指标,F指标,M指标)='近高高' then '重要价值用户'
   when concat(R指标,F指标,M指标)='近低高' then '重要发展用户'
   when concat(R指标,F指标,M指标)='远高高' then '重要保持用户'
   when concat(R指标,F指标,M指标)='远低高' then '重要挽留用户'
   when concat(R指标,F指标,M指标)='近高低' then '一般价值用户'
   when concat(R指标,F指标,M指标)='近低低' then '一般发展用户'
   when concat(R指标,F指标,M指标)='远高低' then '一般保持用户'
   else '一般挽留用户'
end as 用户价值
from 分类表)
select * from 用户价值表;  
select * from RFM;

image-2.png

d.统计用户分类中各用户数量及其占比¶

select
    用户价值,
    count(cumid) as 用户数量,
    sum(M) 销售金额,
    concat(round(count(cumid) / sum(count(cumid)) over() *100,2) ,'%')as 占比
from rfm
group by 用户价值
order by 用户数量 desc;

image-2.png

e.数据可视化¶

In [57]:
import pandas as pd
import matplotlib.pyplot as plt
plt.style.use("seaborn-v0_8")            
plt.rcParams["font.family"]='SimHei' 
In [37]:
user_value=pd.read_csv(".\shuju.csv")
user_value.sort_values(by='销售金额',ascending=False,inplace=True)
user_value.set_index('用户价值',inplace=True)
user_value
Out[37]:
用户数量 销售金额 占比
用户价值
重要价值用户 132 71761 19.70%
一般挽留用户 219 34923 32.69%
重要保持用户 53 24039 7.91%
一般发展用户 153 22577 22.84%
重要挽留用户 41 15946 6.12%
重要发展用户 25 8990 3.73%
一般价值用户 37 7950 5.52%
一般保持用户 10 2429 1.49%
In [58]:
user_value["销售金额"].plot(kind="bar", alpha=0.5,legend=True,title='用户价值分布图',color='#FF7F00')
user_value["用户数量"].plot(secondary_y=True, color="g", rot=45, legend=True)  
plt.tight_layout()
No description has been provided for this image

五、用户价值(RFM)分层分析报告¶

1、分析背景与方法¶

本报告基于 RFM 模型(最近消费时间 R、消费频次 F、消费金额 M),将全量用户划分为 8 类价值群体,并结合销售金额与用户数量进行双维度评估,目的是回答三个问题:钱从哪来、人在哪流失、预算该往哪投。

  • 评估样本:剔除不符合要求用户后共 670 名用户,贡献销售金额 188,615 元。
  • 分层逻辑:以 R、F、M 三项指标的中位数为界,组合出「重要 / 一般」×「价值 / 发展 / 保持 / 挽留」8 类。

2、数据全景¶

用户价值 用户数量 用户数占比 销售金额 销售额占比 人均贡献
重要价值用户 132 19.70% 71,761 38.05% 543.6
一般挽留用户 219 32.69% 34,923 18.52% 159.5
重要保持用户 53 7.91% 24,039 12.75% 453.6
一般发展用户 153 22.84% 22,577 11.97% 147.6
重要挽留用户 41 6.12% 15,946 8.45% 388.9
重要发展用户 25 3.73% 8,990 4.77% 359.6
一般价值用户 37 5.52% 7,950 4.21% 214.9
一般保持用户 10 1.49% 2,429 1.29% 242.9
合计 670 100% 188,615 100% 281.5

注:人均贡献 = 销售金额 ÷ 用户数量,反映单客消费力;因四舍五入,占比列合计约为 100%。

3、核心发现¶

1. 典型的「二八效应」:少数高价值用户撑起大盘。 「重要」四类用户合计 251 人(37.5%),却贡献了 120,736 元、占销售额 64.0%;其中仅「重要价值用户」132 人(19.7%)就贡献 38.0% 的销售额。头部集中度高,核心用户的留存直接决定业绩基本盘。

2. 「人多 ≠ 钱多」:人数峰值与销售峰值不在同一群体。 人数最多的群体是一般挽留用户(219 人,32.7%),而销售最高的群体是重要价值用户(71,761 元)。这说明单纯看用户规模会严重误判价值——必须做价值分层,而非按人头平均投入。

3. 「重要 / 一般」本质是消费力分层,且分层有效。 「重要」群体人均贡献普遍在 359~544 元,「一般」群体仅 148~243 元,两者存在清晰断层。模型成功把「高客单」与「低客单」用户区分开,可作为差异化运营的可靠依据。

4. 存在一座「沉睡金矿」:重要保持用户。 该群体仅 53 人,但人均贡献高达 453.6 元(全榜第二),特征是「曾经高价值、近期沉默」。激活一名此类用户的回报,远高于拉新一名低价值用户,是性价比最高的增长机会。

5. 腰部臃肿、升级链路不畅。 「一般挽留 + 一般发展」合计 372 人(55.5%),超过半数用户停留在低消费力层级,且人均贡献垫底。这提示「一般 → 重要」的用户培育 / 升级路径可能存在堵点,是中长期需打通的结构性问题。

4、分层运营策略¶

用户群体 特征画像 运营目标 关键动作 投入优先级
重要价值用户 高客单·高频·近期活跃 守住核心资产 VIP 专属权益、1v1 客服、新品优先、防流失预警 ★★★★★
重要保持用户 高客单·近期沉默 唤醒沉睡金矿 大额定向召回券、专属关怀、爆品提醒 ★★★★★
重要发展用户 高客单·低频 提频 会员积分加速、组合 / 交叉推荐、复购提醒 ★★★★
重要挽留用户 高客单·流失边缘 紧急挽留 流失原因调研、挽回礼包、限时权益 ★★★★
一般价值用户 中客单·活跃 提客单 满减门槛设计、向上销售、套餐组合 ★★★
一般发展用户 低客单·活跃 规模化培育 自动化营销、习惯养成、提频提额任务 ★★★
一般挽留用户 低客单·流失边缘 低成本试探 自动化触达,能救则救,不重投入 ★★
一般保持用户 低客单·沉默 象征性维护 低频自动触达,几乎不投人工预算 ★

重点群体展开:

  • 重要价值用户(守):贡献近四成销售额,是「不能丢」的资产。重点不在促销,而在体验与情感维系,避免被竞品挖角。
  • 重要保持用户(醒):人均第二高却已沉默,是本次分析最值得立即行动的机会点。建议作为本月召回专项,ROI 预期最高。
  • 一般挽留用户(有选择):人数最多(219 人)但人均最低(159.5 元)且濒临流失,属「量大但价值低」群体。清醒的资源观是不在此重投,用自动化手段批量试探,尽可能进行转化,提高客户消费金额,,但不宜投入过大,把省下的预算转投高价值群体。

5、资源分配建议¶

将营销预算与人力向「重要保持 / 重要发展 / 重要挽留」三类倾斜——它们人均贡献高、提升空间大,是「投入产出比」最优的杠杆点;对「一般挽留 / 一般保持」严格控制投入,以自动化、低成本方式覆盖即可。整体遵循「按价值分配资源,而非按人数分配资源」的原则。

6、结论与下一步行动¶

(1). 结论:用户结构呈「头部集中 + 腰部臃肿」特征,37.5% 的高价值用户贡献 64% 销售额;最大隐患是过半用户停留在低价值层级,最大机会是唤醒高人均的沉睡用户。
(2). 下一步行动:

  • 立即启动「重要保持用户」召回专项,可发放大额优惠券,);
  • 为「重要价值用户」建立防流失预警与 VIP 服务体系;
  • 设计「一般 → 重要」的升级培育链路,疏通腰部堵点;
  • 对低价值流失群体改用自动化触达,释放预算。

一句话总结:把最多的资源,给最值得的人;让沉睡的高价值用户醒来,让活跃的低价值用户长大。