转载:案例用Excel对会员客户交易数据进行RFM分析

案例:用Excel对会员客户交易数据进行RFM分析

背景:

一个会员服务的企业,有近1年约1200个会员客户的收银数据。由于公司想针对不同类别不活跃客户进行激活促销;同时,为回馈重点客户,也计划推出一系列针对重点客户的优惠活动,希望保留这些客户,维持其活跃度。因此希望利用该数据进行客户分类研究。

分析:

根据客户的需求,RFM模型相对简单并且直接,按照R(Recency-近度)、F(Frequency-频度)和M(Monetary-额度)三个维度进行细分客户群体。由于该客户的数量较少(约1200个),所以,采用3x3x3=27个魔方(1200/27=44左右)较为合适,虽然平均每类客户数量较少,考虑到集中度分布情况,数量多的分类也能够有200-300左右,适合针对会员客户进行短期的电话、短信营销或者信函营销的数量。

RFM模型原理:

RFM模型是一个简单的根据客户的活跃程度和交易金额贡献所做的分类。因为操作简单,所以,较为常用。

近度R:R代表客户最近的活跃时间距离数据采集点的时间距离,R越大,表示客户越久未发生交易,R越小,表示客户越近有交易发生。R越大则客户越可能会“沉睡”,流失的可能性越大。在这部分客户中,可能有些优质客户,值得公司通过一定的营销手段进行激活。

频度F:F代表客户过去某段时间内的活跃频率。F越大,则表示客户同本公司的交易越频繁,不仅仅给公司带来人气,也带来稳定的现金流,是非常忠诚的客户;F越小,则表示客户不够活跃,且可能是竞争对手的常客。针对F较小、且消费额较大的客户,需要推出一定的竞争策略,将这批客户从竞争对手中争取过来。

额度M:表示客户每次消费金额的多少,可以用最近一次消费金额,也可以用过去的平均消费金额,根据分析的目的不同,可以有不同的标识方法。一般来讲,单次交易金额较大的客户,支付能力强,价格敏感度低,是较为优质的客户,而每次交易金额很小的客户,可能在支付能力和支付意愿上较低。当然,也不是绝对的。

RFM的分析工具有很多,可以使用SPSS或者SAS进行建模分析,然后深度挖掘。IBM SPSS还有个Modeler,有专门的RFM挖掘算法供使用。本文为了普及,介绍使用Excel(2007版)做初步的RFM分析。

操作步骤:

第一步:数据的清洗

原始数据集:数据请参考附件Excel(模拟数据.xlsx)。大家可以下载练习。该数据集共有26600多条数据,包含记录ID(数据库的primarykey)、客户编号、收银时间、销售金额、销售类型共5个字段

通过简单的筛选,可以看到,在交易金额中有0消费额,有负数消费额,继续查看交易类型,发现为“赠送”和“退货”所造成。这些数据在本次分析中用不到,所以在数据处理时需要通过筛选除去。

Excel操作:

鼠标点击第一行的行标“1”以选中第一行

菜单栏点击“数据”,快捷按钮栏点选“筛选”

鼠标点击“销售类型”筛选下拉按钮,可以看到所有数据集中有的销售类型

点选“销售金额”字段的小角标也可以看到有负数出现。

第二步:数据处理

根据分析需要,R用客户最后成交时间跟数据采集点时间的时间差(天数)作为计量标准;F根据数据集中每个会员客户的交易次数作为计量标准(1年的交易次数);M以客户平均的交易额为计量标准。通过Excel的透视表即可计算以上RFM数据。

Excel操作:

菜单栏点击“插入”

快捷按钮栏点击“透视表”

选择数据区域,确认所有的数据都被选择

选择在“新工作表”中插入数据,然后点击“确定”

将“客户编号”拖入“行标签”栏

将“收银时间”、“记录ID”、“交易金额”拖入数值计算栏

点击“收银时间”数值计算栏按钮,选择“值字段设置”

在“计算类型”中选择“最大值”

在对话框左下角,点击“数字格式”,设定时间格式为:yyyy-mm-dd,然后“确定”

点击“销售金额”数值计算栏按钮,选择“值字段设置”

在“计算类型”中选择“平均值”,然后“确定”

在“记录ID”数值计算按钮栏,选择“值字段设置”

在“计算类型”中选择“计数”,然后“确定”

在透视表顶部筛选项“销售类型”处,点击下拉按钮小角标,在“选择多项”前的小方框中打勾,然后点掉“退货”和“赠送”前的勾,然后“确定”会得到如下结果。

以上我们得到了:

1)F值:客户这1年共消费了多少次

2)M值:客户每次交易的平均消费金额

但是,R值还需要做些处理。目前R值只得到的是客户最近一次消费日期,需要计算距离数据采集日期的天数。

Excel操作:

鼠标拉选列标签ABCD,选中透视表所在的四列

按ctrl^C(复制),点击“开始”菜单栏下,快捷按钮栏“粘帖”下的小下拉三角标,选择“粘帖值”【或者点“选择性粘帖”,然后选择粘帖值】,用单纯的数据形式覆盖原有透视表。

在C1单元格中输入数据采集日期2010-09-27,格式为yyyy-mm-dd

然后选中C1单元格,复制其中内容

选中B5:B1204【快捷操作:点中B5,同时按住Shift^Ctrl后点击向下箭头,松开ctrl键,继续按住shift键,按一次向上箭头,取消数据最后一行的汇总数据】

点击“开始”菜单栏下快捷按钮栏上的“粘帖”按钮下方的下拉箭头,选择“选择性粘帖”,在对话框中勾选“减”,然后“确定”

在不取消目前选择的情况下,选择“开始”菜单栏下快捷按钮栏上的格式化下拉菜单,选择“数字”

因为得到的数据为最后交易日期减去数据采集日期的天数,是负值,所以,还需要处理。

在D1单元格中输入-1

然后ctrl^C复制D1单元格中的值(-1)

然后选中B5:B1204【快捷操作同上】

“开始”-“粘帖”下拉按钮-“选择性粘帖”-在计算部分选择“乘”,然后点击“确定”

最后得到:

到此,我们得到R,F,M针对每个客户编号的值

第三步:数据分析

R-score, F-score, M-score的值,为了对客户根据R,F,M进行三等分,我们需要计算数据的极差(最大值和最小值的差),通过对比R(或者F,M)值和极差三等分距,来确定R(或者F,M)的R-score, F-score, M-score。

所以先计算R、F、M的最大值、最小值、极差三等分距

Excel操作:

F1到H1代表R\F\M的最大值,利用公式“=max(B5:B1204)”计算,(计算F时B换成C,M时B换成D即可)

F2到H2代表R\F\M的最小值,利用公式“=min(B5:B1204)”计算(计算F时B换成C,M时B换成D即可)

F3到H3代表R\F\M的极差三等分距,利用公式“=(F1-F2)/3”计算(计算F时F换成G,M时F换成H即可)

【以上快捷操作可用,先输入F1,F2,F3单元格里的公式,选择F1:F3三个单元格,然后拉动右下角的黑色小十字叉,向右拖动复制F列公式到G和H列即可】

R-score的计算公式为:

E5单元格内输入:“=IF(ROUNDUP((B5-$F$2)/$F$3,0)=0,1,ROUNDUP((B5-$F$2)/$F$3,0)) ”

之所以使用IF判断函数,主要是考虑到当R值为最小值时,roundup(B5,0)为0,用if函数判断如果为0,则强制为1。

之所以用$F$2锁定引用的单元格,是为了后续的公式复制,最小值和极差三等分距不会发生相对引用而变化位置【锁定引用单元格除了手工添加$符号外,快捷方式是选中引用的单元格按F4快捷键,此处都比较麻烦,手工输入$符号还快些】

【另外一种简单的处理方式就是直接用公式“=ROUNDUP((B5-$F$2)/$F$3,0)”,然后用ctrl^H快捷操作,将0值替换成1即可,这个替换需要将公式复制-快捷粘帖为数值后进行】

F-score和M-score如法炮制。

F5单元格公式为:=IF(ROUNDUP((C5-$G$2)/$G$3,0)=0,1,ROUNDUP((C5-$G$2)/$G$3,0))

G5单元格公式为:=IF(ROUNDUP((D5-$H$2)/$H$3,0)=0,1,ROUNDUP((D5-$H$2)/$H$3,0))

RFM-score的计算,利用分别乘以100-10-1然后相加的方式,让R、F、M分别为一个三位数字的三个百分位、十分位和个位表达,该三位数的三个位代表了3x3x3=27魔方三个维度上的坐标。

H5单元格的公式为: =E5*100+F5*10+G5

选中E4到H4区域,双击右下角小黑色十字叉,复制E4到H4公式到所有客户数据中

得到结果如下:

接下来的步骤就是统计各个魔方上的客户数量

再次利用透视表形成统计结果

Excel操作:

“插入”菜单栏下快捷按钮栏按“透视表”,在数据表区域中选择A4:H1204【确认这个选择,自动跳出来的区域要改一下的哦】,然后点击“确定”

将RFM-Score拖入“行标签”中,将“客户编号”拖入“数值计算”栏中,点击“数值计算”栏中的“客户编号”项,选择“字段数值设置”,选择计算方法为“计数”,得到处理结果如下:

第四步:数据分析结果解读和可视化

得到这个分析结果,利用Excel的条件格式功能可以对得到的数据分析结果做简单的视觉化。

Excel操作:

将透视表中B列拉宽(如上图)

选中B5:B22列

“开始”菜单栏下快捷按钮栏点击“条件格式”下拉菜单中选择“数据条”,然后选择一个颜色即可

通过条形图的视觉化,可以直观地对比哪类客户数量较多。

随后会附上该操作步骤的视频教程,敬请期待;

转载:案例用Excel对会员客户交易数据进行RFM分析

时间: 2024-10-10 05:12:34

转载:案例用Excel对会员客户交易数据进行RFM分析的相关文章

多线程十大经典案例之一 双线程读写队列数据

本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5136035 转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8646902 欢迎关注微博:http://weibo.com/MoreWindows 在<秒杀多线程系列>的前十五篇中介绍多线程的相关概念,多线程同步互斥问题<秒杀多线程第四篇一个经典的多线程同步问题>及解决多线程同步互斥的常用方法

秒杀多线程第十六篇 多线程十大经典案例之一 双线程读写队列数据

版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5136035 转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8646902 欢迎关注微博:http://weibo.com/MoreWindows 在<秒杀多线程系列>的前十五篇中介绍多线程的相关概念,多线程同步互斥问题<秒杀多

转载︱案例 基于贪心算法的特征选择

转载︱案例 基于贪心算法的特征选择 用GA算法设计22个地点之间最短旅程-R语言实现 -------------------------------------------------------- greedy Algorithm Feature Selection 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑, 它所做出的是在某种意义上的局部最优解.贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心 策

利用java反射机制实现读取excel表格中的数据

如果直接把excel表格中的数据导入数据库,首先应该将excel中的数据读取出来. 为了实现代码重用,所以使用了Object,而最终的结果是要获取一个list如List<User>.List<Book>等,所以需要使用泛型机制去实现.下面会给出代码,可能会稍微复杂一点,但注释很清晰,希望大家耐心阅读. 在上代码之前简单说一下思路: 1.excel表格必须有表头,且表头中各列的值要与实体类的属性相同: 2.先读取表头信息,然后获取表头列数,接着确定需要使用的set方法的名称,并存到数

Excel格式导入导出数据(单语言版本)

Excel格式导入导出数据(单语言版本) 可以使用常用的excel格式导入导出相关数据,包含: 1. 商品分类: 2. 筛选组: 3. 筛选: 4. 商品资料: 5. 商品附加图片资料,(不包含图片本身的上传或抓取): 6. 商品选项: 7. 商品属性: 8. 产品特价数据: 9. 商品折扣数据: 10. 商品奖励积分数据: 特色: 1. 常用excel软件编辑商品数据后导入: 2. 导出的文件名称包含日期和时间,便于备份存档: 3. 由于涉及到服务器的内存,以及数据的多寡,可以将数据按照商品I

在 SQL Server 中查询EXCEL 表中的数据遇到的各种问题

原文:在 SQL Server 中查询EXCEL 表中的数据遇到的各种问题 SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\KK.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$] 问题: 消息 15281,级别 16,状态 1,第 1 行 SQL Server 阻止了对组件 'Ad Hoc Di

将Excel上千条数据写入到数据库中

简要说明:因工作需要,需要一张Excel表格中的所有数据导入到数据库中.如下表,当然这只是一部分,一共一千多条. 前期处理: 首先要保证上图中的Excel表格中的数据不能为空,如果有为空的数据,可以稍微进行处理,比如将所有为空的数据替换成加一个空格.(我的这个解析器只能解析Microsoft Excel 97-2003 工作表 (.xls)这个格式的表格,如果不是这个形式的需要进行转化.) 然后就是找一个添加页面,添加一个上传附件的功能,即添加一个type类型为file的input标签.比如 <

Java -&gt; 把Excel表格中的数据写入数据库与从数据库中读出到本地 (未完善)

写入: private void insertFile(HttpServletRequest request, HttpServletResponse response) throws IOException { String path_member = request.getParameter("path_member"); List list = this.insert("f:/tmp001.xls", "gs_sale_members");

桌面支持--Excel表格里的数据全部变成了时间或者日期格式的时候怎么办???

20150601 问题描述:Excel表格里的数据全部变成了时间或者日期格式的时候怎么办??? 解决办法: 1. 打开Excel,任意选中一单元格,单击鼠标右键,选择设置单元格格式. 2. 在数字自定义类型中,找到如图中前缀为[$-F400]的类型格式(或者类似的比如[$-F800]),点击删除.3. 保存,大功告成!再次打开,世界清静了.