精华内容
下载资源
问答
  • RFM分析的时候要知道RFM分析的数据格式有两种:  一种是交易数据,也就是每次交易占用一行,关键变量是客户ID、交易日期和交易金额;  另一种是客户数据,就是每个客户占用一行,关键变量是客户ID、交易金额、...
  • RFM集群
  • RFM分析方法

    2021-04-16 10:13:35
    RFM分析方法RFM分析方法RFM指标介绍RFM指标作用如何使用RFM分析方法如何精细化运营如何给R、F、M打分-采用数据分组确定分组的范围和标准利用VLOOKUP匹配函数函数 RFM分析方法 RFM指标介绍 R:最近一次消费时间间隔...

    RFM分析方法

    RFM指标介绍

    • R:最近一次消费时间间隔(Recency) R越小用户价值越高
    • F:消费频率(Frequency) F越大用户价值越高
    • M:消费金额(Montary) M越大用户价值越高

    RFM指标作用

    根据RFM指标可以将用户分成8类
    在这里插入图片描述
    用户分类规则如下:
    在这里插入图片描述

    如何使用RFM分析方法

    1.计算R、F、M值
    2.给R、F、M按价值打分(根据业务灵活确定打分规则,R值越小分越高,例如从按价值从低到高1-5分)
    3.计算价值平均值
    4.用户分类 (高于平均值记为高)
    5.和用户分类规则比较,得出用户分类

    如何精细化运营

    • 重要价值用户,RFM三个值都很高,提供VIP服务
    • 重要发展用户,F低,RM高,提高消费频率
    • 重要保持用户,R低,FM高,提高复购率
    • 重要挽留客户,RF低,M高,主动联系用户,挽回用户。

    如何给R、F、M打分-采用数据分组

    确定分组的范围和标准

    确定阈值(覆盖范围的最低值) 分值 分组范围

    利用VLOOKUP匹配函数函数

    VLOOKUP(lookup_value,table_arry,col_index_num,range_lookup)
    lookup_value 要在表格或区域的第一列中查找的值
    table_arry:包含数据的单元格区域 第一列是lookup_value
    col_index_num:希望返回匹配值的序列号,参数为1时返回table_arry的第一列的值
    range_lookup:近似匹配1 精确匹配0

    展开全文
  • 如何用Python进行RFM分析

    千次阅读 2020-09-25 08:58:49
    本文节选自《谁说菜鸟不会数据分析(Python篇)》RFM分析,是根据客户活跃程度和交易金额贡献,进行客户价值细分的一种客户细分方法。RFM分析,主要由三个指标组成,分别为R(Recen...

    本文节选自

    《谁说菜鸟不会数据分析(Python篇)》

    RFM分析,是根据客户活跃程度和交易金额贡献,进行客户价值细分的一种客户细分方法。RFM分析,主要由三个指标组成,分别为R(Recency)近度、F(Frequency)频度、M(Monetary)额度组成。

    • R表示近度(Recency):也就是客户最近一次交易时间到现在的间隔,注意,R是最近一次交易时间到现在的间隔,而不是最近一次的交易时间,R越大,表示客户越久未发生交易,R越小,表示客户越近有交易发生。

    • F表示频度(Frequency):也就是客户在最近一段时间内交易的次数,F越大,表示客户交易越频繁,F越小,表示客户不够活跃。

    • M表示额度(Monetary):也就是客户在最近一段时间内交易的金额,M越大,表示客户价值越高,M越小,表示客户价值越低。

    下面是一张经典RFM客户细分模型图,如下图所示。

    R分值、F分值和M分值三个指标构成了一个三维立方图,在各自维度上,根据得分值又可以分为高和低两个分类,最终三个指标,每个指标分为高低两类,两两组合,就细分为八大客户群体。

    例如R分值高,F分值高,M分值高的客户为重要价值客户,R、F、M三个分值都低的客户为潜在客户,其他类型客户以此类推进行解读即可。

    RFM分析步骤如下图所示。

    STEP01 数据准备

    下面通过一个案例学习RFM分析的使用,首先将数据导入到data变量,代码如下:

    import pandas
    data = pandas.read_csv(
        'D:/RFM分析.csv',
        engine='python')
    

    -----------------

    长按识别下方二维码,关注公众号

    回复“RFM”获取案例数据

    执行代码,即可得到data数据框,如下图所示。

    可以看到,第一列为订单ID,第二列为客户ID,第三列为交易日期,第四列为交易金额。这个数据格式,也是RFM分析要求的基本数据格式。

    根据交易日期,计算出交易日期距离指定日期的间隔天数,代码如下:

    # 将交易日期处理为日期数据类型
    data['DealDateTime'] = pandas.to_datetime(
        data.DealDateTime,
        format='%Y/%m/%d'
    )
    # 假设2015-10-1是计算当天,求交易日期至计算当天的距离天数
    data['Days'] = pandas.to_datetime('2015-10-1') - data['DealDateTime']
    # 从时间距离中获取天数
    data['Days'] = data['Days'].dt.days
    

    执行代码,即可得到交易日期距离指定日期的天数,如下图所示。

    STEP02 计算R、F、M

    数据准备好后,接下来就可以计算每个客户的最近消费距离R、消费频率F以及消费总额M,计算方法如下:

    • 最近消费距离R:使用CustomerID作为分组列,距离指定日期间隔天数Days作为统计列,统计函数使用最小值函数min,即可得到每个客户的最近消费距离R。

    • 消费频率F:使用CustomerID作为分组列,OrderID作为统计列,统计函数使用计数函数count。

    • 消费总额M:使用CustomerID作为分组列,订单金额Sales作为统计列,统计函数使用求和函数sum。

    代码如下:

    # 统计每个客户距离指定日期有多久没有消费了,即找出最小的最近消费距离
    R = data.groupby(
        by=['CustomerID'],
        as_index=False
    )['Days'].agg('min')
    # 统计每个客户交易的总次数,即对订单ID计数
    F = data.groupby(
        by=['CustomerID'],
        as_index=False
    )['OrderID'].agg('count')
    # 统计每个客户交易的总额,即对每次的交易金额求和
    M = data.groupby(
        by=['CustomerID'],
        as_index=False
    )['Sales'].agg('sum')
    

    执行代码,得到的结果如下图所示。

    接下来使用merge方法,将R、F、M三个数据框关联起来,因为它们拥有共同的列名CustomerID,并且CustomerID就是连接条件,在这种情况下,on参数可以省略不写,代码如下:

    # 将R、F、M三个数据框关联,merge默认内连接,可省略,两表on条件的关联列名均为CustomerID,同样可省略
    RFMData = R.merge(F).merge(M)
    # 修改列名
    RFMData.columns = ['CustomerID', 'R', 'F', 'M']
    

    执行代码,得到的结果如下图所示。

    STEP03 将R、F、M分组打分赋值

    各个客户的R、F、M数据计算好后,接下来就可以对R、F、M这三个列进行分组打分赋值得到对应的R分值、F分值、M分值。

    分组标准可以按照平均值、业务经验等标准进行划分。如果没有特别的标准,通常采用平均值进行划分。

    本例将R、F、M三列分别按照各自的平均值划分为2个组,并赋值1分、2分。

    • R分值(R_S):定义为距离指定日期越近,R_S越大,R>=平均值,R_S为1,R<平均值,R_S为2。

    • F分值(F_S):定义为交易频率越高,F_S越大,F<=平均值,F_S为1,F>平均值,F_S为2。

    • M分值(M_S):定义为交易金额越高,M_S越大,M<=平均值,M_S为1,M>平均值,M_S为2。

    在Python中,可以使用数据框的loc属性将符合条件的数据行进行打分赋值,代码如下:

    # 判断R列是否大于等于R列的平均值,使用loc将符合条件R_S列的值赋值为1
    RFMData.loc[RFMData['R'] >= RFMData.R.mean(), 'R_S'] = 1
    # 判断R列是否小于R列的平均值,使用loc将符合条件R_S列的值赋值为2
    RFMData.loc[RFMData['R'] < RFMData.R.mean(), 'R_S'] = 2
    #同R_S赋值方法,对F_S、M_S进行赋值,但与R相反,F、M均为越大越好
    RFMData.loc[RFMData['F'] <= RFMData.F.mean(), 'F_S'] = 1
    RFMData.loc[RFMData['F'] > RFMData.F.mean(), 'F_S'] = 2
    RFMData.loc[RFMData['M'] <= RFMData.M.mean(), 'M_S'] = 1
    RFMData.loc[RFMData['M'] > RFMData.M.mean(), 'M_S'] = 2
    

    执行代码,R_S、F_S、M_S的分组分值就计算出来了,如下图所示。

    STEP04 计算RFM综合分值

    得到R_S、F_S、M_S的分组分值后,接下来就可以计算RFM综合分值。RFM综合分值计算公式如下所示。

    RFM = 100╳R_S + 10╳F_S + 1╳M_S

    为什么设置R_S的权重为100,F_S的权重为10,M_S的权重为1呢?

    这样设置相当分别为百位、十位、个位的组合,以确保RFM综合分值顺序与RFM客户细分模型的分类顺序一致。

    RFM综合分值计算的代码如下:

    # 计算RFM综合分值
    RFMData['RFM'] = 100*RFMData.R_S+10*RFMData.F_S+1*RFMData.M_S
    

    执行代码,得到的RFM综合分值如下图所示。

    STEP05 客户分类

    接下来根据RFM客户细分模型,将客户细分为八种不同的类型。本例采用与RFM综合分值客户类型的对应关系表匹配合并的方式实现客户分类。

    首先将各个RFM综合分值与客户类型的对应关系定义为一个数据框。

    然后再使用merge中的内连接inner方法,将RFMData数据框与刚定义的RFM综合分值客户类型的对应关系表,根据关联列名RFM匹配合并为一个数据框,这样就完成了客户分类的操作,代码如下:

    # 定义RFM综合分值与客户类型的对应关系表
    CustomerType = pandas.DataFrame(
        data={
            'RFM': [111,112,121,122,211,212,221,222]
            'Type': ['潜在客户','重点挽留客户','一般保持客户','重点保持客户',
             '一般发展客户','重点发展客户','一般价值客户','高价值客户']
        }
    )
    # 将RFMData与RFM综合分值客户类型的对应关系表合并为一个数据框
    # merge默认内连接,可省略,两表on条件的关联列名均为RFM,同样可省略
    RFMData = RFMData.merge(CustomerType)
    

    执行代码,得到的数据如下图所示。

    可以看到,最后一列数据,就是对每个客户细分的客户类型。

    最后,我们来看看,每个类别的客户数是多少,代码如下:

    # 按RFM、Type进行分组统计客户数
    RFMData.groupby(
        by=['RFM','Type'] 
    )['CustomerID'].agg('count')
    

    执行代码,就可以得到各个客户类型的客户数了。

    后续就可以对不同的客户群体,有针对性地采取相应运营策略进行推广、管理,进而提升客户价值和营收水平。

    -----------------

    长按识别下方二维码,并关注公众号


    1.回复“PY”领取1GB Python数据分析资料

    2.回复“BG”领取5GB 名企数据分析报告

    展开全文
  • 数据分析之RFM分析

    2019-12-31 09:42:12
    概念:RFM分析是根据客户活跃程度和交易金额贡献,进行客户价值细分的一种方法. #R(Recency):近度,客户最近一次交易时间的间隔。R越大,表示客户越久未发生交易,R越小,表示客户越近有交易发生 #F...
    # -*- coding: utf-8 -*-
    #1. 概念:RFM分析是根据客户活跃程度和交易金额贡献,进行客户价值细分的一种方法.
    #R(Recency):近度,客户最近一次交易时间的间隔。R越大,表示客户越久未发生交易,R越小,表示客户越近有交易发生
    #F(Frequency):频度,客户在最近一段时间内交易的次数。F越大,表示客户交易越平凡,F越小,表示客户不够活跃
    #M(Monetary):额度,客户在最近一段时间内交易的金额。M越大,表示客户价值越高,M越小,表示客户价值越低

    #2. RFM分析过程
    #2.1 计算RFM各项分值
    #R_S,距离当前日期越近,得分越高,最高5分,最低1分
    #F_S,交易频率越高,得分越高,最高5分,最低1分
    #M_S,交易金额越高,得分越高,最高5分,最低1分

    #2.2 汇总RFM分值
    #RFM = 100*R_S + 10*F_S + 1*M_S (业务专家得出的结论,可以看出不同项的权重不一样)

    #2.3 根据RFM分值对客户分类

    #3. RFM分析前提
    #3.1 最近有过交易行为的客户,再次发生交易的可能性要高于最近没有交易行为的客户;
    #3.2 交易频率较高的客户比交易频率较低的客户,更有可能再次发生交易行为;
    #3.3 过去所有交易总金额较多的客户,比交易总金额较少的客户,更有消费积极性

    #python中没有计算RFM的包,因为我们需要手工实现

    import numpy
    import pandas

    data = pandas.read_csv("D:/workspaces/python/pythonStudy/30.csv")

    #30.csv包括列:OrderID、CustomerID、DealDateTime成交日期、Sales订单金额,下载地址:https://pan.baidu.com/s/1vIFHvVRHXNr_gCmOpns8Tg
    #计算最近一次消费距离今天的距离:
    data['DealDateTime'] = pandas.to_datetime(
        data.DealDateTime,
        format='%Y/%m/%d'
    )

    data['DateDiff'] = pandas.to_datetime(
        'today'
    ) - data['DealDateTime']

    #得到每笔交易记录距离当前日期的天数
    data['DateDiff'] = data['DateDiff'].dt.days

    #得到每个用户的最近一笔交易距离今天的日期天数(使用用户id进行分组,然后得到订单距离当前日期的最小值)
    R_Agg = data.groupby(
                         by=['CustomerID']
                         )['DateDiff'].agg({
                             'RecencyAgg':numpy.min
                         })
    #距离计算结束

    #计算每个用户的交易订单数量(使用用户id进行分组,然后得到每个分组的记录数量)
    F_Agg = data.groupby(
                         by=['CustomerID']
                         )['OrderID'].agg({
                         'FrequencyAgg':numpy.size
                         })

    #计算每个用户的消费总额(使用用户id进行分组,然后对订单金额进行求和)
    M_Agg = data.groupby(
                         by=['CustomerID']
                         )['Sales'].agg({
                             'MonetaryAgg':numpy.sum
                         })

    #将三个数据整合起来:
    aggData = R_Agg.join(F_Agg).join(M_Agg) #得到了一个新的数据框,包含三列

    #对aggData的每个列都需要进行对应的排序分组,为每个组给一个得分值(1-5分)

    #计算R得分情况:
    #计算各分位值,用于确定分组界限
    bins = aggData.RecencyAgg.quantile(
    q = [0,0.2,0.4,0.6,0.8,1],#将0-1分位5部分
    interpolation='nearest'
    )

    bins[0] = 0 #避免最小值不闭合的错误,将最小值设置为0
    labels = [5,4,3,2,1] #定义每个区间的得分,以标签的形式实现。近度越小,得分越高
    R_S = pandas.cut(
                     aggData.RecencyAgg,
                     bins,
                     labels = labels
                     )
    #计算F得分情况:
    bins = aggData.FrequencyAgg.quantile(
                                         q = [0,0.2,0.4,0.6,0.8,1],#将0-1分位5部分
                                         interpolation='nearest'
                                         )
    bins[0] = 0
    labels = [1,2,3,4,5] #频率越高,得分越高
    F_S = pandas.cut(
                     aggData.FrequencyAgg,
                     bins,
                     labels = labels
                     )

    #计算M得分情况:
    bins = aggData.MonetaryAgg.quantile(
                                         q = [0,0.2,0.4,0.6,0.8,1],#将0-1分位5部分
                                         interpolation='nearest'
                                         )
    bins[0] = 0
    labels = [1,2,3,4,5] #额度越高,得分越高
    M_S = pandas.cut(
                     aggData.MonetaryAgg,
                     bins,
                     labels = labels
                     )

    #将各得分值作为新的列赋值回去
    aggData['R_S'] = R_S
    aggData['F_S'] = F_S
    aggData['M_S'] = M_S

    #根据RFM的经验公式计算RFM的值
    aggData['RFM'] = 100*R_S.astype(int) + 10*F_S.astype(int)+1*M_S.astype(int)

    #将用户分为8类
    #计算分位值,值越大,表示用户越重要
    bins = aggData.RFM.quantile(
                                q = [0,0.125,0.25,0.375,0.5,0.625,0.75,0.875,1],
                                interpolation='nearest'
                                )
    bins[0] = 0
    labels = [1,2,3,4,5,6,7,8]
    aggData['level'] = pandas.cut(
        aggData.RFM,
        bins,
        labels = labels


    #验证每种用户大概是如何分布的:
    aggData = aggData.reset_index() #重置行索引(从0开始),之前的索引列变为CustomerID

    aggData.sort(
                 ['level','RFM'],
                 ascending=[1,1]
                 )

    #观察每个level的用户的数量:
    aggData.groupby(
                    by = ['level']
                    )['CustomerID'].agg({
                        'size':numpy.size
                    })
    展开全文
  • 这时候就可以用RFM分析方法把用户分为8类,对不同价值的用户使用不同的运营决策,把公司有限的资源发挥到最大的效果,这就是我们常常听到的精细化运营(表2-15)。例如第1类是重要价值用户,这类用户最近一次消费...

    例如店铺某个月收入大幅下跌,通过分析,发现原来店铺几个重要的用户被竞争对手挖走了,而这几个用户贡献了店铺80%的收入。出现这个问题,是因为该店铺没有对用户分类,对全部用户采取的都是一样的运营决策。怎么对用户分类,识别出有价值的用户呢?这时候就可以用RFM分析方法把用户分为8类,对不同价值的用户使用不同的运营决策,把公司有限的资源发挥到最大的效果,这就是我们常常听到的精细化运营(表2-15)。例如第1类是重要价值用户,这类用户最近一次消费时间较近,消费频率也高,消费金额也高,要提供VIP服务。

    总结下前面的内容,用RFM对用户分类的过程如下(图2-136):(1)使用原始数据计算出R、F、M值;(2)给R、F、M值按价值打分,例如按价值从低到高分为1~5分;(3)计算价值的平均值,如果某个指标的得分比价值的平均值低,标记为“低”。如果某个指标的得分比价值的平均值高,标记为“高”;(4)和用户分类规则表比较,得出用户分类。

    展开全文
  • 通过RFM分析法,对客户进行观察和分类,得以针对不同的特征的客户进行响应的营销策略。 实验原理 RFM 分析是美国数据库营销研究所提出的一种简单实用客户分析方法,发现客户数据中有三个神奇的要素: 最近一次...
  • RFM分析模型01 | RFM定义02 | RFM模型03 | 场景构建04 | tableau案例 01 | RFM定义 数据分析的主要任务就是通过数据驱动来优化业务,以实现帮助业务挣钱。实现方式主要是通过对数据的分析,针对性地优化业务中的...
  • 这一部分是RFM分析,运行时间过久 from numpy import percentile import pandas as pd import matplotlib import time import matplotlib.pyplot as plt #显示所有列 pd.set_option('display.max_columns', None)...
  • 项目描述:本项目对2020年某家公司各个门店的电子产品(手机,平板等)的销售数据进行了深入的挖掘,对会员进行了RFM分析,寻找到了门店销量起伏的原因;通过分析挖掘,找出门店的长处与短板,并给予参考建议。 ...
  • 对用户群体进行价值细分,哪些是重要用户,哪些是要重点挽留的用户,对不同价值区的用户制定不同的营销方案,从而进行精准运营,这是进行RFM分析的意义。今天来聊一聊用Excel进行RFM分析的方...
  • python笔记30:数据分析之RFM分析-附件资源
  • tableau进行客户RFM分析

    2020-10-06 20:54:48
    原始数据及twbx: ...提取码:5hrs 1.数据预处理 数据源: ...购买点生命周期(日):IIF(DATEDIFF('day',[会员创建日期],[销售日期])>=0,DATEDIFF('day',[会员创建日期],[销售日期]),NULL) ...2.图表分析 ...
  • spss RFM 分析

    2019-12-25 18:38:39
    用来查看每个 RFM 汇总得分的客户数量分布是否均匀 分箱计数用交叉表显示 交易金额均值在 R 和 S 绘制的矩阵图上的图形化表示,用颜色深浅表示交易金额均值大小,颜色越深,说明在相应矩阵块内的客户交易金额...
  • easyRFM - 通过 R 进行 RFM 分析的简单方法 牧山浩二 概述 关于 RFM 分析RFM 是一种用于分析客户价值的方法。 它常用于数据库营销和直销,并在零售和专业服务行业受到特别关注。 RFM 代表 最近 - 客户最近多久...
  • RFM分析(Recency,Frequency,Monetary)

    千次阅读 2019-05-13 20:14:42
    通过RFM方法,我们根据用户的属性数据分析,对用户进行了归类。在推送、转化等很多过程中,可以更加精准化,不至于出现用户反感的情景,更重要的是,对产品转化等商业价值也有...RFM分析(Recency,Frequency,Mone...
  • Python数据分析 1 案例 CDnow网站的用户购买行为分析 1.1 数据介绍 数据来源于CDnow网站的用户购买记录,字段包括用户ID,订单日期,订单数量和订单金额。 字段名 说明 user_id 用户ID order_dt 订单日期 ...
  • 如何在Python中实现RFM分析

    万次阅读 热门讨论 2017-07-14 15:33:13
    RFM分析 RFM分析是根据客户活跃程度和交易金额贡献,进行客户价值细分的一种方法; 可以通过R,F,M三个维度,将客户划分为8种类型。 RFM分析过程 1.计算RFM各项分值 R_S,距离当前日期越近,得分越高,最高5...
  • RFM分析介绍

    千次阅读 2018-04-05 10:33:32
    在介绍RFM分析之前,我们先简单了解一下探索性分析。所谓探索性分析,主要是运用一些分析方法从大量的数据中发现未知且具有价值信息的过程。对于初步探索性分析而言,数据可视化是一个非常便捷、快速、有效的方法,...
  • RFM分析在零售业应用最广泛,是对客户的购买行为做特征分析, 其中: R:recency,表示客户购买的时间距离当前时间(或某一时间点)有多久; F:frequency,表示客户在该时间内购买的次数; M:monetary,表示客户在...
  • PowerBI应用案例:用户RFM分析

    千次阅读 2020-03-14 16:13:16
    RFM模型是用户运营中的重要模型,使用该模型,对用户进行分类,针对不同的客户推行不同的策略,实现精准化运营,以期获取最大的转化率。模型的三个指标: R(Recency)最近一次消费时间:表示用户最近一次消费距离...
  • SPSS工具:RFM分析--客户分析

    千次阅读 2018-09-14 12:16:29
    这是我最喜欢且是实践过的一个分析方法。但是要注意,这种分析不一定要按照下面来,但是思想核心是一样的。要懂得根据业务变通,航空公司的客户分析和其他业务分析都不一样,你选择几个变量,几个类要根据业务出发,...
  • df.event_time.min()) 2020-11-21 10:10:30+00:00 1970-01-01 00:33:40+00:00 # 提取日期中的月份 df['month'] = df.event_time.dt.month 用户消费趋势分析 df_month = df.loc[df.event_time.dt.year == 2020].group...
  • RFM模型是衡量客户价值和客户创利能力的重要工具和手段。该模型通过一个客户的近期购买行为、购买的总体频率以及花了多少钱三项指标来描述该客户的价值状况。...对于RFM 客户分析模型来说,只要数据中有客户名,消费日
  • 如何用Excel2010进行RFM分析 背景一个会员服务的企业有近1年约1200个会员客户的收银数据由于公司想针对不同类别不活跃客户进行激活促销同时为回馈重点客户也计划推出一系列针对重点客户的优惠活动希望保留这些客户...
  • 基于RFM分析的促销组合策略优化模型 CRM客户关系管理,销售营销分析可以参考
  • 使用SPSS_Statistics建模分析工具,对RFM建模分析的操作方法和步骤说明。
  • 所以本次分析的目的是对该电商的客户进行分类,以让业务部门可以对不同的顾客有不一样的促销方式(marketing initiatives or offer),以增大销量。 实验内容: 数据预处理: 1.导入观察数据: #import all ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,148
精华内容 2,059
关键字:

rfm分析