前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python做RFM代码太复杂,使用Tableau多简单!

python做RFM代码太复杂,使用Tableau多简单!

作者头像
朱小五
发布2020-05-19 10:30:49
1.4K0
发布2020-05-19 10:30:49
举报
文章被收录于专栏:凹凸玩数据

关于RFM模型的介绍和pyhton实现过程见之前发过的文章!

《用python轻松实现数据分析中的RFM建模》

本文旨在通过2015-2018的客户订单分析,了解各大区销售经营情况、不同偏好,并通过RFM模型来进行客户价值分类,实现定向营销。

现在开始手把手教学RFM实战的软件操作:

1、数据表的介绍

  数据已经提供了,该数据是2015-2018的客户订单经过脱敏后得到的数据,共包含了8987条记录,该数据的字段很多,但是对于RFM建模,我们只需要“客户名称”、“销售额”、“日期”,就可以完成RFM模型的构建。下面我们只截图展示表中的部分数据。

2、计算RFM的值(MySQL)

  其实RFM的值,我们这里利用一个SQL语句就可以解决,但是我们为了更细致的讲解RFM值的计算过程,这里分开进行 一一叙述。

① R值的计算

  • R值(近度) = (当前时间-最后一次消费时间)
  • 当前时间:我们指定是“2019-04-01”,因为这是分析以前的数据,所以当前时间是那个时候的某个时间。
代码语言:javascript
复制
select 
        客户名称,
        max(日期) 最后一次消费时间,
        datediff("2019-04-01",max(日期)) R值
from dingdan
group by 客户名称;

结果如下:

② F值的计算

  • F值(频度) =(客户购买的频次)
  • 这里的购买频次以天为单位,即使一天买了多单,这一天的频次就是1。
代码语言:javascript
复制
select 
        客户名称,
        count(distinct(日期)) F值   # 注意这里的去重操作
from dingdan
group by 客户名称;

结果如下:

③ M值的计算

  • M值(额度) = (一段时间的总额或平均额)
代码语言:javascript
复制
select 
        客户名称,
        count(distinct(日期)) F值,
        sum(销售额) 总额,
        round(sum(销售额)/count(distinct(日期)),2) M值
from dingdan
group by 客户名称;

结果如下:

④ 其实RFM值一个SQL语句就可以解决

代码语言:javascript
复制
select 
        客户名称,
        datediff("2019-04-01",max(日期)) R值,
        count(distinct(日期)) F值,
        sum(销售额) 总额,
        round(sum(销售额)/count(distinct(日期)),2) M值
from dingdan
group by 客户名称;

结果如下:

3、Tableau中进行RFM值的计算

① 连接MySQL数据库

② 新建“自定义SQL”,获取我们用于分析的数据源

③ 在工作表中,完成如下一系列操作

④ 创建“计算字段”,计算R_SCORE

  注意:我们这里采用5级打分规则(业内一般都是这样打分的),但是分段标准是根据实际业务为驱动,进行讨论后得出。

  同理,我们可以计算出“F_SCORE”和“M_SCORE”,操作如上,这里就不详细进行说明。F_SCORE的计算如下:

M_SCORE的计算如下:

4、用户分类

① 创建“计算字段”,计算RFM的平均值

R_SCORE的平均值:

F_SCORE的平均值:

M_SCORE的平均值:

② 创建“计算字段”,进行RFM值高低的判断

  分别将“R_SCORE”、“F_SCORE”、“M_SCORE”和“R平均值”、“F平均值”、“M平均值”进行一一比较,大于平均值就是1,否则为0。R值高低的判断

F值高低的判断

M值高低的判断

③ 创建“计算字段”,进行客户价值判断(最麻烦)

代码语言:javascript
复制
IIF([R值高低的判断]=1 and [F值高低的判断]=1 and [M值高低的判断]=1,'重要价值客户',
    IIF([R值高低的判断]=0 and [F值高低的判断]=1 and [M值高低的判断]=1,'重要唤回客户',
    IIF([R值高低的判断]=1 and [F值高低的判断]=0 and [M值高低的判断]=1,'重要深耕客户',
    IIF([R值高低的判断]=0 and [F值高低的判断]=0 and [M值高低的判断]=1,'重要挽留客户',
    IIF([R值高低的判断]=1 and [F值高低的判断]=1 and [M值高低的判断]=0,'潜力客户',
    IIF([R值高低的判断]=1 and [F值高低的判断]=0 and [M值高低的判断]=0,'新客户',
    IIF([R值高低的判断]=0 and [F值高低的判断]=1 and [M值高低的判断]=0,'一般维持客户',
    IIF([R值高低的判断]=0 and [F值高低的判断]=0 and [M值高低的判断]=0,'流失客户','错误检测'))))))))

5、可视化展示

① 用户清单——文本表的展示

上表由于“客户”太多,怎么设置“分页显示”呢?(一个牛逼操作)

Ⅰ 创建“计算字段”,为表添加一个“编号”列
Ⅱ 点击鼠标右键,将“编号”转换为离散
Ⅲ 将“编号”拖动到行中
Ⅳ 创建“计算字段”,为表添加一个“页码”
Ⅴ 点击鼠标右键,将“页码”转换为离散
Ⅵ 当出现如下页面,完成如下操作
Ⅶ 当出现如下页面,完成如下操作
Ⅷ 当出现如下页面,完成如下操作
Ⅸ 效果展示

注意:使用同样的操作,我们还可以添加一个“客户名单”筛选器,效果如下。

② 客户价值分布

怎么将上述标签,改成百分比展示呢?

效果如下:

③ 各类型客户总交易额占比

怎么给这个饼图添加百分比标签呢?(这个技巧需要注意)

Ⅰ 完成如下1,2,3处的操作
Ⅱ 这一步很关键,有点技巧,按住CTRL键,将“总和(总额)”拖动到标签中

怎么讲这个饼图变为圆环图呢?(圆环图更好看一些),这里虽然有些难度,但是留给大家自己下去思考一下,实在不会可以问我。

④ 不同类型客户的人均消费

⑤ RF分布——M客户流失

  只要是做RFM分析,业内人士都喜欢拿RF值去看M,或者拿FM值去看R,或者拿RM值去看F,下面我们简单举一个例子,通过RF值去看M。

⑥ 忠诚度对比

  这里说的“忠诚度”,指的就是某个用户老来买,说明很喜欢这个产品,对该产品忠诚度较高,即“忠诚度”的衡量使用的是“F值(频度)”。

6、可视化大屏的布局展示

① 当出现如下界面,完成如下操作

② 给可视化大屏添加一个“背景效果”

③ 给可视化大屏取一个名字

(这里有一个技巧)

④ 拖动并布局

最后将之前做好的一个个图形,按住shift键,将其一个个拖动到右侧进行布局。

⑤ 进行多表联动的操作

Ⅰ 按照下图,完成如下操作
Ⅱ 接下来就是在下图中进行操作
Ⅲ 最终的交互效果如下
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 凹凸数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、数据表的介绍
  • 2、计算RFM的值(MySQL)
    • ① R值的计算
      • ② F值的计算
        • ③ M值的计算
          • ④ 其实RFM值一个SQL语句就可以解决
          • 3、Tableau中进行RFM值的计算
            • ① 连接MySQL数据库
              • ② 新建“自定义SQL”,获取我们用于分析的数据源
                • ③ 在工作表中,完成如下一系列操作
                  • ④ 创建“计算字段”,计算R_SCORE
                  • 4、用户分类
                    • ① 创建“计算字段”,计算RFM的平均值
                      • ② 创建“计算字段”,进行RFM值高低的判断
                        • ③ 创建“计算字段”,进行客户价值判断(最麻烦)
                        • 5、可视化展示
                          • ① 用户清单——文本表的展示
                            • Ⅰ 创建“计算字段”,为表添加一个“编号”列
                            • Ⅱ 点击鼠标右键,将“编号”转换为离散
                            • Ⅲ 将“编号”拖动到行中
                            • Ⅳ 创建“计算字段”,为表添加一个“页码”
                            • Ⅴ 点击鼠标右键,将“页码”转换为离散
                            • Ⅵ 当出现如下页面,完成如下操作
                            • Ⅶ 当出现如下页面,完成如下操作
                            • Ⅷ 当出现如下页面,完成如下操作
                            • Ⅸ 效果展示
                          • ② 客户价值分布
                            • ③ 各类型客户总交易额占比
                              • Ⅰ 完成如下1,2,3处的操作
                              • Ⅱ 这一步很关键,有点技巧,按住CTRL键,将“总和(总额)”拖动到标签中
                            • ④ 不同类型客户的人均消费
                              • ⑤ RF分布——M客户流失
                                • ⑥ 忠诚度对比
                                • 6、可视化大屏的布局展示
                                  • ① 当出现如下界面,完成如下操作
                                    • ② 给可视化大屏添加一个“背景效果”
                                      • ③ 给可视化大屏取一个名字
                                        • ④ 拖动并布局
                                          • ⑤ 进行多表联动的操作
                                            • Ⅰ 按照下图,完成如下操作
                                            • Ⅱ 接下来就是在下图中进行操作
                                            • Ⅲ 最终的交互效果如下
                                        相关产品与服务
                                        云数据库 MySQL
                                        腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                                        领券
                                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档