打开官方文档:https://help.fanruan.com/finebi/doc-view-1727.html
在这里搜索"RFM分析",然后点击搜索。
之后就会跳转到这个页面。可以跟着做一做。
介绍
RFM分析是一个比较经典的分析模型,从三个指标来分析数据,通过结果给客户打标签。下面部分,概念、解决的问题,以及预期效果,均从官方文档里的RMF分析引入过来。
概念
RFM 分析是美国数据库营销研究所提出的一种简单实用客户分析方法,发现客户数据中有三个神奇的要素:
-
最近一次消费时间(R):客户距离最近的一次采购时间的间隔。
-
最近一段时间内消费频次(F):指客户在限定的期间内所购买的次数。
-
最近一段时间内消费金额(M):客户的消费能力,通常以客户单次的平均消费金额作为衡量指标。
这三个要素构成了数据分析最好的指标。
解决的问题
RFM 分析就是通过三个关键指标对客户进行观察和分类,判断每类细分用户的价值。针对不同的特征的客户进行相应的营销策略。
预期效果
RFM 分析后,将客户划分为了不同分类,数据分析效果如下图所示:

数据清洗
数据获取
接下来我们来实现上面的效果。首先是数据获取。鼠标往下滚一滚,可以看到这里有一个压缩包,把它下载下来,解压,一会在新建分析主题的时候就可以把里面的数据全部上传上去。
上传数据
新建分析主题,命名为RFM分析,上传刚刚下载的数据,点击确定。
分析过滤
注意,因为我们最重要分析的只有这三个指标,一个是间隔,一个是次数,还有一个是金额。跟这个内容不搭边的就可以给它去掉。
首先看一下数据,这里有个 DATE,根据日期我们可以计算当前的购买时间间隔,这个是很有必要的。第二个 COMPANY,表示的是地区,地区是不需要的,我们要的是给客户打标签,所以这个字段也是不需要的。第三个,CUSTOMERNAME,客户的名字,我们需要保留。第四个,CUSTOMERTYPE,客户类型,这个也不需要,既不是频率,也不是间隔,也不是金额,所以这个字段也不需要。后面 AMOUNT,这个是购买的商品数量,所以这个也不需要。所以最后只保留DATE、CUSTOMERNAME,以及MONEY这三个字段就可以了。
我们找到字段设置,除了那三个字段,其他的全部取消勾选,然后点击确定。

这样就可以了。
计算字段
首先要搞清楚,这三个指标分别计算的是什么。
R:客户距离最近的一次采购时间的间隔
F:客户在限定的期间内所购买的次数
M:客户单次的平均消费金额
目前,有了这个数据之后,可以对它进行分组。现在,我们希望把客户作为维度来分析,比如这个客户最近一次的购买时间是什么时候,以及客户当前的购买次数是多少次。
分组汇总
F:客户在限定的期间内所购买的次数
现在我们有所有的数据,而且每一个客户是有多条记录的。
每一次记录其实就是购买次数。比如这个沈阳泓道食品有限公司广州线的购买次数就是 342。
所以接下来我们要对它进行分组汇总。
我们要看的是每个客户,所以要把客户名称放在分组里,这样同一个客户,它的数据就不会重复了。这是第一个分组的字段。
汇总的字段。首先,要知道当前客户的购买次数,购买次数实际就是用户名称的统计数量,所以在汇总的地方拖入的依然是客户名字。
拖入进去之后默认是去重计数,点击字段右侧倒三角,改为记录个数就可以。
因为这个数据是一整个购买记录,只要有一条数据就表示一次购买。所以这里先对客户姓名记录个数。
客户消费金额
接下来,是要去计算单次的平均消费金额。所以,金额拖入到汇总里面。
先把总金额拿过来,之后就可以计算单次客户平均消费金额。注意,在这里并不是单次平均,而是求和,后面会将单次客户平均消费金额计算出来。
R:客户距离最近的一次采购时间的间隔
我们还要拿到最近一次购买的时间间隔。把 DATE 拖进来,拖进来之后是要它最晚的时间。
除了最晚时间,其他的都不需要,因为分析的就是最近一次购买的时间间隔。
M:客户单次的平均消费金额
现在这是三个指标了,初次之外,再拖入一个MONEY,把这个MONEY改为平均值。
这就是平均单次的消费金额。
现在这些是我们目前处理好的。
更改字段名称
上述处理全部完成之后,可以将字段改个名字,方便后续进行区分。
首先,"CUSTOMERNAME" -> "客户名称"。
"CUSTOMERNAME1" -> "消费次数"。
"MONEY" -> "用户消费总金额"。
"DATE" -> "最近一次消费时间"。
"MONEY1" -> "平均单次消费金额"。
最后,全部字段的整体情况如下。这就是源数据通过处理得到的内容。
判定规则
接下来应该怎么做?我们回到文档里面。文档地址:https://help.fanruan.com/finebi/doc-view-703.html?source=4
用鼠标滚轮滚动,我们去看它最后。它在最后是需要给客户打上标签的。而且它在打标签的时候是根据数字组合来判断的。
它的数字只有 1 和 0。鼠标滚轮继续滚一下,找到它的参考表。在 2.5 划分客户类型这里。我们可以看到这个表格。这是打上标记的规则。
解释一下前两行:意思是,如果是 111,就是重要价值客户,如果是 101,就是重要发展客户。表格的其他行内容以此类推。其中,111、101 等是向量。我们需要根据向量值给客户打上标签。
但是现在有问题。我们现在计算的这些内容,都是数值,后续需要将这些内容转换为向量 0 或 1。接下来需要设定,什么情况下转换为 0,什么情况下转换为 1。这个时候就需要一个参考的依据。思路:转换的时候应该要根据某个规则来确定到底转换后是 1 还是 0。
比如我们计算的消费金额、次数,时间间隔,这些数值肯定都不是 0/1,但是我们最终是要把它转换成 0/1 的。这个时候就需要某一个规则,这个规则如下:
python
规则:二分法
就是把我们的内容分为两种情况,要么是 0,要么是 1。这是分的结果。依据是什么?
我们拿单个客户的指标,和所有客户的平均指标来做对比。比如,我们拿到了所有客户的平均购买次数是 100 次,而这个客户总计购买次数是 80 次,该客户的 80 次明显 < 客户的平均购买次数 100 次,此时应该标记 1 还是标记为 0?这个时候就要参考一下表格了。
我们来看这张表,如果三个都是 1,就表示是重要价值客户,而三个都是 0,就表示都是一般挽留客户。说明一个问题,1 就是积极的, 0 就是消极的。正向和负向。
通过观察划分规则,发现 1 表示正向,0 表示负向。所以,当所有客户的平均购买次数是 100 次,但是这个客户只购买了 80 次,这个时候要把该客户的 R 标记为 0。购买次数肯定是越高越好。综上,我们得出以下判定规则。
R 指标判定规则
客户距离最近的一次采购时间的间隔。
间隔肯定是越短越好。作为平台一定是希望客户购买时间间隔短一些,肯定是值越小越好。所以小于总体平均就是 1,大于就是 0。
F 指标判定规则
限定的期间内所购买的次数。
次数是越多越好。大于平均购买次数就是 1,小于平均购买次数就是 0。
M 指标判定规则
客户单次的平均消费金额。
肯定是越大越好,所以跟 F 一样。大于总体平均消费金额就是 1,小于总体平均消费金额就是 0。
指标计算
最近一次消费时间距今天数
之前我们已经处理完成了数据,而且也计算出了一些内容。回到 finebi 当中。有了单次平均的消费金额,还可以计算一下时间间隔。已经知道了最近一次的消费时间,距离当前的时间间隔是多少呢?可以采用获取时间差的方法。
起个名字,叫"最近一次消费时间距今天数",就是最近一次消费距离当前过了多少天。用当前时间减去这一个字段的值就可以了,单位改成天。点击确定。这一列就生成好啦。

现在每个客户的消费时间距离当前的时间就已经计算完毕了。
用户平均消费金额
平均消费金额 = 总金额/总次数
现在,还可以计算一下所有用户他们的消费总金额。因为是拿单个客户的,和所有客户平均的来比,所以要先求出总的消费金额。使用新增汇总列,列名命名为"所有用户消费的总金额"。等于用户的消费金额,求一个和就行。点击确定。

然后得去计算一下所有用户他们的平均消费金额。所以还得知道左右用户他们的总消费次数。再去用金额除以次数就可以得到总体平均的消费金额了。先计算一下消费总次数,点击新增汇总列,列名命名为"消费总次数"。对消费次数进行求和的操作,点击确定。

现在这俩都有了,那么所有用户他们的平均消费金额就可以求出来了。点击新增公式列,列名命名为"用户平均消费金额",所有用户消费的总金额/消费总次数,点击确定。

这就是用户的平均消费金额了。
用户平均消费次数
接下来我们要去计算用户的平均消费次数,因为现在拿到的是它的总次数,现在计算一下平均消费次数。点击新增汇总列,命名为"平均消费频次"。对这个消费次数求平均值,点击确定。

这样,用户的平均消费次数就有了。
平均间隔天数
之前,我们已经拿到了最近一次购买相隔的天数,还要计算一下平均的天数。点击新增汇总列,列名命名为"最近一次消费距今天平均数",选择最近一次消费时间距今天数,汇总方式选择平均。

点击确定之后,平均间隔天数就生成出来了。
所有用户的这些指标我们都求出来了,求出来之后,要拿单个用户的指标和所有的平均的指标进行比较就可以了。
指标评价
次均消费金额评价(M)
最终是要把它变成 0/1,我们要做一个判断。点击新增公式列,列名命名为"次均消费金额评价"。
公式为:IF(平均单次消费金额 > 用户平均消费金额, 1, 0),如果平均单次消费金额大于用户平均消费金额,就标记为 1,否则标记为 0。

这里的 0 和 1 可以带引号也可以不带,不带的话就是整数,带就是字符串。本次不带引号了。后面变成 111,000 这些,要用到字符串的拼接。
这是第一个,次均消费金额评价。
消费次数评价(F)
点击新增公式列,列名命名为"消费次数评价"。次数肯定是越多越好,如果当前的消费次数 > 平均消费频次,就标记为 1,否则标记为 0。公式为:IF(消费次数>平均消费频次, 1, 0),点击确定。

这是消费次数评价。还有一个,间隔天数。
最近一次消费距今天数评价(R)
间隔时间要越短越好。点击新增汇总列,列名命名为:"最近一次消费距今天数评价"。如果最近一次消费距今天数 < 最近一次消费距今天平均数,就是 1 ,否则就是 0,公式为:IF(最近一次消费时间距今天数 < 最近一次消费距今天平均数, 1, 0)。点击确定。

组合成向量(RFM)
现在,这三个指标都有了对应的评价,现在要把这三列的评价变成向量的形式。现在要把它们仨组合起来。不能直接用加号,加号就直接计算了。要用新增公式列。点击新增公式列。
命名为"RFM",使用 CONCATENATE 函数,按照 RFM 的顺序来。公式为:CONCATENATE(最近一次消费距今天数评价, 消费次数评价, 次均消费金额评价),点击确定。

这个就是组合之后的向量。有了这个向量之后就可以给客户打上标签。
判定客户类型
用新增赋值列,列名命名为"客户类型",按照 RFM 列来赋值。赋值的时候参考这个表。
按照表分组之后点击确定。
之后就成功为客户打上了标签。
前面数据已经处理完毕,最后就是可视化。可视化的过程参照官方文档操作即可。
网址:https://help.fanruan.com/finebi/doc-view-703.html?source=4