📊 第12章 Python 实现客户价值分析
📄 一句话概括

重要价值客户占 7.67% 的人数,贡献 49.05% 的金额;流失客户占 15.92%,只贡献 4.83%。 四类客户对应四套花钱办法——如果处置办法一样,这次分群等于白做。 方法的局限要写在报告里:只有三个维度、M 不看时间、没有预测能力。

📝 本章和前面几章的关系

上一篇把名单定下来了,这一篇把它变成结论和动作,再给第 12 章和四个项目收尾。 这一篇的核心是一张表:人数占比对金额占比。

一、两个占比一对比,故事就出来了

类别 人数占比 金额占比 平均 R 平均 F
重要价值 7.67% 49.05% 57 29.0
潜力 41.50% 33.06% 113 7.5
一般 34.92% 13.06% 310 4.9
流失 15.92% 4.83% 569 4.4

这张表是整章的结论。人数占比和金额占比一对比,故事自己就出来了。 重要价值客户只占 7.67%,却贡献了 49.05% 的金额——将近一半的钱来自不到一成人。 流失客户占 15.92%,只贡献 4.83%。他们已经用脚投票了。

潜力客户 41.50% 的人贡献 33.06% 的钱,人数和金额的比例接近,说明这一堆「够活跃但还不够值钱」。

二、四类客户,四套花钱办法

类别 特征 该做什么
重要价值 来得勤、买得多、最近还来 重点维护、专属客服
潜力 最近来过,买得还不多 推高客单、交叉销售
一般 偶尔来,金额不高 低成本触达
流失 很久没来,本来就买得少 低成本召回,不行就放

四个类别对应四种花钱方式,这才是客户分群的目的。 如果四类客户的处置办法一模一样,那这个分群等于白做——只是把名单换了个颜色。 算一笔账:重要价值客户 92 人,平均 M 25865 元。流失一个,等于丢掉两万五。

所以维护他们的预算该按「挽回成本」算,而不是按人头平均分。这就是分群带来的第一个改变。

三、这套方法的局限,要写进报告

第一,只有 R、F、M 三个维度。品类偏好、渠道来源、获客成本,一个都没进来。 第二,M 用的是累计金额,没考虑时间。五年前花十万和去年花十万,被当成一样。 第三,没有预测能力。它说的是「现在像谁」,不是「以后会怎样」。

想补第三点,得用第 8 章的分类模型:拿「是否流失」当标签训练一遍,输出的是概率。 想补第一点,得把品类、渠道这些列拼进来——特征工程永远是下一步。 主动写出局限,比等人问出来强。一份报告的可信度,往往就在这几句话上。

四、第 12 章小结:这一章真正教的是什么

技术上有三件:命名聚合算 RFM、标准化之后聚类、按均值给簇起名。 方法上有两件更要紧:「越小越好」的指标要翻方向,聚类结果要拿外部标准验一次。 业务上有一件:模型的输出要能翻译成动作。说不清「这堆人该怎么办」,分群就没完成。

这三层缺一层,项目都只能算做了一半。技术做得再漂亮,说不清动作也是白做。

五、四个项目,一套流程

第 9 章连数据库,第 10 章读 Excel 做预测,第 11 章带图表模块,第 12 章做客户分群。 四个项目,同一套流程:取数、洗数、统计、建模、出结论。变的是数据形状和问题类型。 第 9 章的重点是「数据不在手边」,第 10 章是「怎么评分」,第 11 章是「怎么选特征」。

这一章的重点是「怎么把模型输出翻译成业务动作」——聚类给堆号,人给名字和策略。 四件事凑齐,一个数据分析项目才算完整。少一件,都只是半成品。 全书正文到此结束。最后一篇附录是 PyCharm 快捷键速查,纯查表用,不涉及分析。

六、动手 Demo:客户价值结果分析

把四类客户的人数占比、金额占比、平均 R 和平均 F 摆在一张表里。 这张表就是整章的结论,也是写报告时唯一必须带上的那张表。

import pandas as pd
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler

rfm = pd.read_csv("rfm.csv", index_col=0)
Z = StandardScaler().fit_transform(rfm[ ["R", "F", "M"]].values.astype(float))
Z[:, 0] = -Z[:, 0]
rfm["簇"] = KMeans(n_clusters=4, n_init=10, random_state=42).fit_predict(Z)

g = rfm.groupby("簇").agg(平均M=("M", "mean"))
by_m = list(g.sort_values("平均M", ascending=False).index)
NAME = {by_m[0]: "重要价值客户", by_m[1]: "潜力客户",
        by_m[2]: "一般客户", by_m[3]: "流失客户"}
rfm["类别"] = rfm["簇"].map(NAME)

a = rfm.groupby("类别").agg(人数=("R", "size"), 金额=("M", "sum"),
                           平均R=("R", "mean"), 平均F=("F", "mean"))
a["人数占比"] = a["人数"] / len(rfm) * 100
a["金额占比"] = a["金额"] / rfm["M"].sum() * 100
print(a.sort_values("金额占比", ascending=False).round(2).to_string())

实跑输出:

--------------------------------------------------------------------
客户价值结果分析
--------------------------------------------------------------------

  ① 人数占比与金额占比,两个都要看
  --------------------------------------------------------------------

| 类别 | 人数占比 | 金额占比 | 平均 R | 平均 F |
|---|---|---|---|---|
| 重要价值客户 | 7.67% | 49.05% | 57 | 29.0 |
| 潜力客户 | 41.50% | 33.06% | 113 | 7.5 |
| 一般客户 | 34.92% | 13.06% | 310 | 4.9 |
| 流失客户 | 15.92% | 4.83% | 569 | 4.4 |

  这张表是整章的结论。人数占比和金额占比一对比,故事就出来了。
  重要价值客户只占 7.67%,却贡献了 49.05% 的金额。
  流失客户占 15.92%,只贡献 4.83%。

  ② 每类该怎么对待
  --------------------------------------------------------------------

| 类别 | 特征 | 该做什么 |
|---|---|---|
| 重要价值 | 来得勤、买得多、最近还来 | 重点维护,专属客服,别让他走 |
| 潜力 | 最近来过,但买得还不多 | 推高客单,交叉销售 |
| 一般 | 偶尔来,金额不高 | 低成本触达,别投太多钱 |
| 流失 | 很久没来,本来买得也少 | 低成本召回,不行就放掉 |

  四个类别对应四种花钱方式,这才是客户分群的目的。
  如果四类客户的处置办法一模一样,那这个分群等于白做。

  ③ 这套方法的局限
  --------------------------------------------------------------------
  第一,只有 R、F、M 三个维度。品类偏好、渠道来源、获客成本,一个都没进来。
  第二,M 用的是累计金额,没考虑时间。五年前花十万和去年花十万,被当成一样。
  第三,没有预测。它说的是「现在像谁」,不是「以后会怎样」。
  想补第三点,得用第 8 章的分类模型:拿「是否流失」当标签训练一遍。
  想补第一点,得把品类、渠道这些列拼进来——特征工程永远是下一步。

  ④ 第 12 章小结,也是四个项目的收尾
  --------------------------------------------------------------------
  第 9 章连数据库,第 10 章读 Excel 做预测,第 11 章带图表模块,第 12 章做客户分群。
  四个项目,同一套流程:取数、洗数、统计、建模、出结论。变的是数据形状和问题类型。
  第 9 章的重点是「数据不在手边」,第 10 章是「怎么评分」,第 11 章是「怎么选特征」。
  这一章的重点是「怎么把模型的输出翻译成业务动作」——聚类给堆号,人给名字和策略。
  四件事凑齐,一个数据分析项目才算完整。少一件,都只是半成品。
  ! 全书最后一篇是附录:PyCharm 快捷键速查,纯查表用,不涉及分析。

两个占比的分母不一样:人数除以客户数,金额除以总金额。写成同一个分母是最常见的错。 sort_values("金额占比") 让表按重要性从上往下排,老板第一眼看到的就是最值钱那类。 平均 R 和平均 F 放进来是为了让读者能自己复核「为什么这堆叫重要价值」——结论要能被检查。

30 秒实验

  1. 把「重要价值」和「流失」两类的平均 R 相减,看差多少天。
  2. 算一算:如果流失客户里有 20% 能被召回,金额能多多少?
  3. 想一想:如果公司只有 1000 块预算,你会全花在重要价值客户身上吗?为什么?

常见误区

  1. 两个占比用同一个分母:人数占比和金额占比的分母不同,搞混了整张表就没意义。
  2. 四类客户给同一套策略:那样分群等于白做,只是把名单换个颜色。
  3. 不写局限:只有三维度、M 不看时间、没有预测能力,这三条必须交代。
  4. 把分群当终点:分群只是起点,后面还有预算怎么分、动作怎么落地、效果怎么量。
自测三问(点开对答案) 1. 为什么「两个占比」这张表是整章的结论? —— 它把人数和金额放在一起看,一眼能看出「谁撑起了收入」,也一眼能看出「谁已经走了」。 2. 重要价值客户只有 92 人,为什么值得单独维护? —— 他们贡献了 49.05% 的金额,平均每人 25865 元。流失一个的损失,抵得上几十个一般客户。 3. 这套 RFM 分群最大的局限是什么? —— 只有三个维度、M 不看时间、没有预测能力。它描述「现在像谁」,不说「以后会怎样」。

正文到此结束。最后是附录:PyCharm 常用快捷键速查,纯查表用。

相关笔记