一步一步教你PowerBI数据分析:制作客户RFM数据分析
客户分析就是根据客户信息数据来分析客户特征,评估客户价值,从而为客户制订相应的营销策略与资源配置。通过合理、系统的客户分析,企业可以知道不同的客户有着什么样的需求,分析客户消费特征与商务效益的关系,使运营策略得到最优的规划;更为重要的是可以发现潜在客户,从而进一步扩大商业规模,使企业得到快速的发展。
企业客户分析可以从以下几个方面入手,对客户数据信息展开分析:
1、分析客户个性化需求
“以客户为中心”的个性化服务越来越受到重视。实施CRM的一个重要目标就是能够分析出客户的个性化需求,并对这种需求采取相应措施,同时分析不同客户对企业效益的不同影响,以便做出正确的决策。这些都使得客户分析成为企业实施CRM时不可缺少的组成部分。
2、分析客户行为
企业可以利用收集到的信息,跟踪并分析每一个客户的信息,不仅知道什么样的客户有什么样的需求,同时还能观察和分析客户行为对企业收益的影响,使企业与客户的关系及企业利润得到最优化。
3、分析有价值的信息
利用客户分析系统,企业不再只依靠经验来推测,而是利用科学的手段和方法,收集、分析和利用各种客户信息,从而轻松的获得有价值的信息。如企业的哪些产品最受欢迎,原因是什么,有什么回头客,哪些客户是最赚钱的客户,售后服务有哪些问题等。客户分析将帮助 企业充分利用其客户关系资源,在新经济时代从容自由地面对客户。
目前国内企业对客户的分析还很欠缺,分析手段较为简单,而简单的统计方法虽然可以在一定程度上得出分析结果,但因为不同企业发展中存在一定的不平衡性,利用简单的统计模式得出的结论容易有较大的误差,难以满足企业的特殊需求。因而企业需要有更加完善、合理的客户分析方案,进一步提高客户分析的合理性、一致性,并能在对 潜在客户的培养和发现中提供更多的决策支持。
本文将使用客户RFM模型来衡量客户价值,当然仅一个模型也无法完整并系统的分析客户,还是需要结合CRM系统中的数据,切勿过度依赖该模型来分析客户价值。该模型仅供决策参考。接下来我们来看一下RFM模型是什么?

RFM分析(Recency,Frequency,Monetary)是用来细分用户和衡量客户价值的一个重要工具,就是根据客户活跃程度和交易金额的贡献,进行客户价值细分的一种方法。
RFM的含义:
R(Recency):客户最近一次交易时间的间隔。R值越大,表示客户交易发生的日期越久,反之则表示客户交易发生的日期越近。
F(Frequency):客户在最近一段时间内交易的次数。F值越大,表示客户交易越频繁,反之则表示客户交易不够活跃。
M(Monetary):客户在最近一段时间内交易的金额。M值越大,表示客户价值越高,反之则表示客户价值越低。
本文中通过分析某个店铺客户消费数据,将会员分为以下8种,以便有针对性的做营销决策,实现精细化运营:

一、RFM数据源
我们准备的数据源中有很多的字段,由RFM模型的含义可知。我们需要通过订单日期判断R值,订单ID判断F值,销售额判断M值,客户ID是基础数据,其他的字段就是冗余字段

二、RFM值
1、确定R值
确定R值为指定日期和最近购买日期之间的差异天数,计算每个客户的最近一次消费日期。再根据截止日期的时间和最后一个交易日期的差值
RFM R =
AVERAGEX( DISTINCT('维度_客户'[客户名称]) ,
CALCULATE(
AVERAGEX( '事实_订单', DATEDIFF( [订单日期] , LASTDATE( '维度_RFM日期'[Date] ) , DAY ) ) ,
TREATAS( VALUES( '维度_RFM日期'[Date] ) , '事实_订单'[订单日期])
)
)
R最大值
RFM R MAX =
MAXX( ALL('维度_客户'[客户名称]) ,
CALCULATE(
AVERAGEX( '事实_订单' , DATEDIFF( [订单日期] , LASTDATE( '维度_RFM日期'[Date] ) , DAY ) ) ,
TREATAS( VALUES( '维度_RFM日期'[Date] ) , '事实_订单'[订单日期])
)
)
R最小值
RFM R MIN =
MINX( ALL( '维度_客户'[客户名称]) ,
CALCULATE(
AVERAGEX( '事实_订单' , DATEDIFF( [订单日期] , LASTDATE( '维度_RFM日期'[Date] ) , DAY ) ) ,
TREATAS( VALUES( '维度_RFM日期'[Date] ) , '事实_订单'[订单日期] )
)
R平均值
RFM R AVG = CALCULATE( [RFM R] , ALL('维度_客户') )
2、确定F值
交易次数值需要感觉非重复计数获得,这里根据虚拟关系筛选计数顾客交易次数
RFM F =
AVERAGEX( DISTINCT('维度_客户'[客户名称]) ,
CALCULATE('度量值'[顾客交易次数] , TREATAS( VALUES('维度_RFM日期'[Date]) , '事实_订单'[订单日期]))
)
F最大值
RFM F MAX =
MAXX( ALL('维度_客户'[客户名称]) ,
CALCULATE('度量值'[顾客交易次数] , TREATAS( VALUES('维度_RFM日期'[Date]) , '事实_订单'[订单日期]))
)
F最小值
RFM F MIN = MINX( ALL('维度_客户'[客户名称]) , CALCULATE('度量值'[顾客交易次数] , TREATAS( VALUES('维度_RFM日期'[Date]) , '事实_订单'[订单日期])))
F平均值
RFM F AVG = CALCULATE( [RFM F] , ALL('维度_客户') )
3、确定M值
M值为每个客户共享的销售金额
RFM M = AVERAGEX( DISTINCT( '维度_客户'[客户名称]) , CALCULATE('度量值'[销售金额], TREATAS( VALUES( '维度_RFM日期'[Date] ) , '事实_订单'[订单日期] ) ))
M最大值
RFM M MAX = MAXX( ALL( '维度_客户'[客户名称]) , CALCULATE('度量值'[销售金额], TREATAS( VALUES( '维度_RFM日期'[Date] ) , '事实_订单'[订单日期] ) ))
M最小值
RFM M MIN = MINX( ALL('维度_客户'[客户名称]) , CALCULATE('度量值'[销售金额], TREATAS( VALUES( '维度_RFM日期'[Date] ) , '事实_订单'[订单日期]) ))
M平均值
RFM M AVG = CALCULATE( [RFM M] , ALL( '维度_客户' ) )
三、确定客户类型
确定RFM值后,我们将R、F、M分别与平均值比较,计数出RFM的得分情况
RFM R 分数 = IF( NOT ISBLANK( [RFM R] ) , DIVIDE( [RFM R MAX] - [RFM R] , [RFM R MAX] - [RFM R MIN] ) * 100 )
RFM F 分数 = IF( NOT ISBLANK( [RFM F] ) , DIVIDE( [RFM F] - [RFM F MIN] , [RFM F MAX] - [RFM F MIN] ) * 100 )
RFM M 分数 = IF( NOT ISBLANK( [RFM M] ) , DIVIDE( [RFM M] - [RFM M MIN] , [RFM M MAX] - [RFM M MIN] ) * 100 )
四、新建辅助表
1、新建RFM分类表
可以直接输入数据,也可以通过Excel导入数据。

2、新建权重参数表
权重参数从0到100进行设定
参数_RFM R权重 = GENERATESERIES(0, 100, 1)
参数_RFM F权重 = GENERATESERIES(0, 100, 1)
参数_RFM M权重 = GENERATESERIES(0, 100, 1)
3、新建TOP参数表
参数_RFM TOP X = GENERATESERIES(0, 100, 1)
五、制作可视化报告
1、制作表格,拖放已经计算好的数据

2、制作客户RFM权重占比环形图

3、制作客户分类占比环形图

4、制作客户RFM得分排名条形图

5、制作切片器
切片器拖放辅助表中的权重R\F\M字段和TopX字段,并设置显示格式为下拉。日期切片器直接设置开启滑块

六、总结
客户RFM分析首先需要根据订单数据来计算RFM的值,其次通过辅助表进行补充动态设定的参数。再次通过RFM的值和最大值、最小值对比使用平均函数进行计算出RFM得分情况。通过辅助表客户分类维度,来确定客户所属分类。该模型可以动态根据企业对R,F,M设定不同的权重来计算客户的价值。
对于销售分析的指标的分析模型还有动态ABC分析模型,在后续得文章中会给大家展现。

一步一步教你PowerBI数据分析:制作客户RFM数据分析的更多相关文章
- 一步一步教你PowerBI利用爬虫获取天气数据分析
对于爬虫大家应该不会陌生,我们首先来看一下爬虫的定义:网络爬虫是一种自动获取网页内容的程序,是搜索引擎的重要组成部分.网络爬虫为搜索引擎从万维网下载网页,自动获取网页内容的应用程序.看到定义我们应该已 ...
- 使用Python一步一步地来进行数据分析总结
原文链接:Step by step approach to perform data analysis using Python译文链接:使用Python一步一步地来进行数据分析--By Michae ...
- 一步一步教你如何在linux下配置apache+tomcat(转)
一步一步教你如何在linux下配置apache+tomcat 一.安装前准备. 1. 所有组件都安装到/usr/local/e789目录下 2. 解压缩命令:tar —vxzf 文件名(. ...
- 一步一步教你将普通的wifi路由器变为智能广告路由器
一步一步教你将普通的wifi路由器变为智能广告路由器 相信大家对WiFi智能广告路由器已经不再陌生了,现在很多公共WiFi上网,都需要登录并且验证,这也就是WiFi广告路由器的最重要的功能.大致就是下 ...
- 一步一步教你使用Git
一步一步教你使用Git 互联网给我们带来方便的同时,也时常让我们感到困惑.随便搜搜就出一大堆结果,然而总是有大量的重复和错误.小妖发出的内容,都是自己实测过的,有问题请留言. 现在,你已经安装了Git ...
- 使用WPF教你一步一步实现连连看
使用WPF教你一步一步实现连连看(一) 第一步: 问题,怎样动态的建立一个10*10的grid(布局) for (int i = 0; i < 10; i++){ RowDefinition r ...
- 一步一步教你用 Vue.js + Vuex 制作专门收藏微信公众号的 app
一步一步教你用 Vue.js + Vuex 制作专门收藏微信公众号的 app 转载 作者:jrainlau 链接:https://segmentfault.com/a/1190000005844155 ...
- Ace教你一步一步做Android新闻客户端(一)
复制粘贴了那么多博文很不好意思没点自己原创的也说不出去,现在写一篇一步一步教你做安卓新闻客户端,借此机会也是让自己把相关的技术再复习一遍,大神莫笑,专门做给新手看. 手里存了两篇,一个包括软件视图 和 ...
- 一步一步教你实现iOS音频频谱动画(二)
如果你想先看看最终效果再决定看不看文章 -> bilibili 示例代码下载 第一篇:一步一步教你实现iOS音频频谱动画(一) 本文是系列文章中的第二篇,上篇讲述了音频播放和频谱数据计算,本篇讲 ...
随机推荐
- SpringBoot事件监听机制源码分析(上) SpringBoot源码(九)
SpringBoot中文注释项目Github地址: https://github.com/yuanmabiji/spring-boot-2.1.0.RELEASE 本篇接 SpringApplicat ...
- 软件包管理rpm和yum
rpm的使用: 安装的包相关包信息会保存在/var/lib/rpm目录下的文件中 安装参数: -i install安装 -v 显示详细信息 -h 打印####号 -V 校验软件包,会到/var/lib ...
- matlab计算LZ复杂度
我这个计算得14通道,每个通道截取3000个数据得复杂度,最后将计算得出得数据存储到本地txt文档中 function LZC(data) % 计算一维信号的复杂度 % data时间序列 % lzc: ...
- Python中有许多HTTP客户端,但使用最广泛且最容易的是requests
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:北京尚脑软件测试 PS:如有需要Python学习资料的小伙伴可以加点击 ...
- 负载均衡服务之HAProxy基础入门
首先我们来了解下haproxy是干嘛的?haproxy是一个法国人名叫Willy Tarreau开发的一个开源软件:这款软件主要用于解决客户端10000以上的同时连接的高性能的TCP和HTTP负载均衡 ...
- stand up meeting 12/28/2015
part 组员 今日工作 工作耗时/h 明日计划 工作耗时/h UI 冯晓云 解决生词本显示[阅读页面]的滑动条和PDF的滑动条冲突 ...
- T - Nash Matrix CodeForces - 1316D
题意: 输入n行数,没行由2*n个数,表示一个坐标(x,y). 如果x和y==-1表示从该点(i,j)出发,按照构造的前移动不会停下. 否则就要到点(x,y)处停下. 题解: 首先处理-1 枚举每个 ...
- jmeter 聚合报告参数解释
label:每个请求的名称 样本:发送给服务器的请求数量 平均值:平均响应时间,默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以T ...
- JSP中引用CSS样式文件却无法显示的问题解决方案
你也遇到过这种问题吗,CSS写好了,JSP写好了,在JSP中调用CSS文件,路径检查后也正确,但是无法显示渲染后的页面 原因:罪魁祸首就是过滤器响应数据的时候,响应头设置为了“text/html”,但 ...
- ubuntu(Linux)下,查看CPU性能集合
CPU: 详细:cat /proc/cpuinfo型号:grep "model name" /proc/cpuinfo |awk -F ':' '{print $NF}'数量:ls ...