线上平台用户分类分析¶
一、业务背景¶
某线上平台发现最近一年各类营销活动的效果不佳,且总体销售额没有明显的增长。据了解,以往的营销活动面向所有用户,部分用户无论有无营销活 动均稳定的消费,而有些用户很长时间未消费可能已转变为流失人群。平台逐渐意识到用户分类的重要性。实现用户分类后,可针对不同用户实施组合促销、会员卡充值、满减等营销活动。
二、数据说明¶
- 案例中提供的数据为某电商平台的销售数据,数据来源于脱敏后的公开数据集
- 数据表主要字段截图
- 主要字段含义:
transid:订单id
cumid: 用户id
trandatetime: 交易日期
amount :订单金额
type_label:订单标签
transtype :交易类型,与订单标签相对应
交易日期为明显的字符串格式,需要进行数据转换,为了便于后续操作,生成新表¶
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;
- 一个月内有多少用户有购买行为,占总的用户比重,确定时间窗口是否有分析意义
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% 说明足以覆盖比较多的用户,该时间节点选取比较合理
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;
- F 值有多种,可见测算指标有意义
c.订单是有状态的,最近一个月的订单是否要考虑订单的状态¶
select distinct type_label from rfmlabel;
- 订单的状态有4种,我们选择正常、特价订单,便于精准分析意向购买人群
select
*
from rfmlabel_new
where trandatetime>date_sub('2010-09-26',interval 1 month) and type_label in ('正常','特价');
四、数据的统计分析¶
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;
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;
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;
e.数据可视化¶
import pandas as pd
import matplotlib.pyplot as plt
plt.style.use("seaborn-v0_8")
plt.rcParams["font.family"]='SimHei'
user_value=pd.read_csv(".\shuju.csv")
user_value.sort_values(by='销售金额',ascending=False,inplace=True)
user_value.set_index('用户价值',inplace=True)
user_value
| 用户数量 | 销售金额 | 占比 | |
|---|---|---|---|
| 用户价值 | |||
| 重要价值用户 | 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% |
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()
五、用户价值(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 服务体系;
- 设计「一般 → 重要」的升级培育链路,疏通腰部堵点;
- 对低价值流失群体改用自动化触达,释放预算。
一句话总结:把最多的资源,给最值得的人;让沉睡的高价值用户醒来,让活跃的低价值用户长大。