一步一步教你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音频频谱动画(一) 本文是系列文章中的第二篇,上篇讲述了音频播放和频谱数据计算,本篇讲 ...
随机推荐
- AJ学IOS 之微博项目实战(9)微博模型之时间相关重要操作,判断刚刚,昨天,今年等等
AJ分享,必须精品 一:效果 二:实现代码 /** 1.今年 1> 今天 * 1分内: 刚刚 * 1分~59分内:xx分钟前 * 大于60分钟:xx小时前 2> 昨天 * 昨天 xx:xx ...
- ajax按楼层加载数据
代码如下: <!doctype html> <html> <head> <meta charset="utf-8"> <tit ...
- Obtain The String CodeForces - 1295C binary_search+思维
妈耶,,,被B题卡到哭,C题一发就过了... 字符串问题.首先用vector记录每个字符出现的位置,然后对字符串t的每个字符,用二分查找函数查找,注意用upper_bound查找,对于字符i,首先用变 ...
- 国产操作系统深度deepin V20体验
1. 安装系统 国产操作系统deepin V20 bata版本已经发布.本人第一时间安装和体验.在犹豫很久之后,因为受到最新内核,高版本的bash和Python的诱惑,字体更加和谐等因素,选择升级系统 ...
- 深入理解Java线程状态转移
目录 前言 状态转移图 1.0 新建态到就绪态 1.1 就绪态到运行态 1.2 运行态到就绪态 1.2.1 时间片用完 1.2.2 t1.yield() .Thread.yield(); 1.3 运行 ...
- shift后门
shift快捷 Windows的粘滞键------C:\windows\system32\sethc.exe,它本是为不方便按组合键的人设计的 Windows系统按5下shift后,Windows就执 ...
- WPF中在Gmap.net中将Marker动起来
前一段时间说过一篇绘制极坐标的,这段时间对它进行了改造已经今非昔比了,功能实现了很多,我目的是让Marker动起来,然后还会绘制Route,上篇也就是简单的绘制了Route,没有关于Marker的相关 ...
- EF多租户实例:演变为读写分离
前言 我又来写关于多租户的内容了,这个系列真够漫长的. 如无意外这篇随笔是最后一篇了.内容是讲关于如何利用我们的多租户库简单实现读写分离. 分析 对于读写分离,其实有很多种实现方式,但是总体可以分以下 ...
- react: typescript system params method optimize
import * as _ from "lodash"; import paramCache from "../common/param-cache" impo ...
- 44道JavaScript送命题
很久以前看过一个老外写的帖子,JavaScript Puzzlers!,直译就是JavaScript难题,里面列举了100道JavaScript选择题,大部分都是让人摸不着头脑的题目,需要仔细琢磨一番 ...