BizThinkFrame
← 全部文章
数据实练 · 10 分钟阅读

用公开交易数据完成一次 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 日。

换成你的问题,试一次

从一份可检查的提纲开始

练习材料

相关方法

RFM分析 →帕雷托分析 →

把你的材料,也整理清楚。

申请工作台内测 →

接着探索

新用户不再回来时先用哪个框架看看观察窗口与分母如何影响另一组数据SWOT 之后如何用交叉 SWOT 形成行动候选把客户观察转成有待验证的行动方向