用公开交易数据完成一次 RFM 客户分析
真实数据、清洗口径、六个客户与完整派生结果
本文目录
RFM 把客户的交易历史整理为三个角度:最近一次购买距今多久、购买过多少次、累计购买多少金额。做完以后,你能区分“最近来过一次的大单客户”和“多次购买但已经很久没来的客户”,再决定需要继续了解什么。
本文使用公开数据实际计算,提供六个客户的练习材料与全体客户的派生结果。重点是口径和解释,暂不把三个指标压成一个总分。
先了解这份数据可以回答什么
UCI 的 Online Retail 数据集记录了一家英国非实体店零售企业在 2010 年 12 月 1 日至 2011 年 12 月 9 日的交易,商品以礼品为主,客户中也有批发采购者。每行是订单明细,包含订单号、商品、数量、时间、单价和客户编号。数据来源
这是历史教学数据,不代表当前电商市场。它没有本练习所需的完整获客成本、利润、客户意愿或未购买者记录。因此,我们能描述观察期内的购买行为,不能直接推算客户终身价值或认定某人已经流失。
清洗选择会改变答案
原始文件共有 541,909 行。本次按下表顺序筛选,每一行的排除数量都基于上一步剩余数据,因此不会重复计数。
| 步骤 | 排除行数 | 理由 |
|---|---|---|
| 排除缺少客户编号的行 | 135,080 | 无法稳定归入客户 |
| 排除订单号以 C 开头的取消记录 | 8,905 | 本练习只观察正向购买 |
| 排除剩余数量不大于零的行 | 0 | 该条件在前面步骤后没有新增记录 |
| 排除剩余单价不大于零的行 | 40 | 不进入本次金额计算 |
| 最终保留 | 397,884 | 覆盖 4,338 个客户、18,532 个不同订单号 |
本次保留原表中完全相同的行。原表有 5,268 行被识别为完全重复,但没有唯一明细行编号,不能仅凭字段相同确认都是重复录入。这是一个需要显式记录的分析选择;换成去重口径时,应重新计算并比较结果。
金额使用保留行的“数量 × 单价”求和,称为正向采购金额。因为取消记录没有用于冲减原交易,这个金额不是净销售额,更不是利润。也没有另行识别和剔除运费、手工调整等商品代码,所以不要将它表述为纯商品收入。
固定分析时点再计算三个指标
将参考日期固定为 2011 年 12 月 10 日,即数据最后一天的次日。日期按原数据的日历日期处理,不另做时区转换。复现时不能改成今天,否则 R 会全部变大。
- R,Recency:参考日期减去该客户最近一次有效购买的日历日期,单位为天,越小表示购买越近。
- F,Frequency:有效订单号的去重计数。一张订单有很多商品明细,仍然只算一次购买。
- M,Monetary:所有保留明细的数量乘单价后求和,币种为英镑。计算保留原精度,展示时再四舍五入。
例如客户 12347 有 182 行有效明细,但只对应 7 个不同订单号。最后购买日期为 12 月 7 日,所以 R 为 3 天,F 为 7,M 为 4,310.00 英镑。
从六个客户读出不同的问题
以下六个固定编号为便于手算而选取,并非随机样本。结果按前述口径从原始记录计算。
| 客户编号 | R 天 | F 次 | M 英镑 |
|---|---|---|---|
| 12347 | 3 | 7 | 4,310.00 |
| 12348 | 76 | 4 | 1,797.24 |
| 12349 | 19 | 1 | 1,757.55 |
| 12350 | 311 | 1 | 334.40 |
| 12352 | 37 | 8 | 2,506.04 |
| 12353 | 205 | 1 | 89.00 |
12349 的金额接近 12348,但只有一张订单。仅按金额归为同一组,会丢失购买频率差异。12352 有 8 次购买,却比 12347 更久没有出现,值得进一步了解其正常采购周期。
12350 已经 311 天没有记录,也不能直接判定流失。可能是一次性采购,也可能是季节需求,或交易发生在这个数据集之外。框架帮助我们提出问题,不会自动补齐客户背景。
先用透明条件提出调查对象
为了练习,可以暂时定义两组:R 不超过 30 天且 F 至少 5 次;R 超过 90 天且 F 至少 5 次。本次分别得到 787 个和 71 个客户。两组互不重叠,但没有覆盖所有客户。
30 天、90 天和 5 次都是本次人为设定的演示阈值,未经业务验证。它们只帮助观察近期重复购买者与间隔较长的重复购买者。真正用于经营时,还需要结合采购周期、季节、客户类型和后续观察调整。
对完整客户结果按 M 降序排序,取人数向上取整后的前 20%,即 868 个客户,他们贡献了约 74.62% 的正向采购金额。这个实际计算也提醒我们:帕雷托分析要观察集中程度,不能预先要求数据一定符合 80/20。
下载材料并复现
先下载 六个客户的原始明细,按相同规则整理,再对照 六个客户的 RFM 结果。该原始子集有 402 行,包含仍需要筛选的记录,不能直接把行数当作购买次数。
完整派生数据见 全部客户 RFM,分析口径和数值见 计算摘要。需要从原表重跑时,使用 复现说明 中的脚本与公开下载地址。
在站内阅读 RFM 分析,将你准备使用的观察期、客户定义、R/F/M 口径和下一步调查写进练习提纲。需要复算数据时,可以使用上面的材料包与脚本。
数据署名:Chen, D. (2015). Online Retail. UCI Machine Learning Repository. DOI 10.24432/C5BW33,CC BY 4.0。本文派生文件由原表筛选和聚合生成,计算于 2026 年 10 月 3 日。
从一份可检查的提纲开始
练习材料
- 数据来源与复现说明MD · 2 KB
- 分析口径与计算摘要JSON · 3 KB
- 全部客户的 RFM 结果CSV · 194 KB
- 六个客户的 RFM 结果CSV · 1 KB
- 六个客户的原始明细CSV · 36 KB
- 可复算的 Python 脚本PY · 5 KB