数据分析之RFM模型

该博客介绍了RFM模型在客户分析中的使用,包括从CSV文件中提取数据,计算R(最近一次购买时间),F(购买频率)和M(购买金额)值,对用户进行标签分类。接着,博主展示了评分算法,通过设置不同评分区间对R、F、M进行打分,进一步细化客户分类,并比较了均值算法与评分算法的差异。最后,通过图表展示了各类客户数量及其分布情况,强调了评分算法在提高统计精确性方面的作用。
摘要由CSDN通过智能技术生成

在这里插入图片描述
一.均值 RFM模型算法
从csv文件中读取相应的数据

data=pd.read_csv('./dataset.csv',encoding='ISO-8859-1')

#读取2014年的客户信息

data_14=data[data['Order-year']==2014]
data_14

2.获取相应的列

data_14 = data_14[['CustomerID','OrderDate','Sales']]
data_14 

CustomerID为用户id
OrderDate为下单日期
Sales 为销售金额

3.复制数据(以免修改时改变原有数据)

customerdf=data_14.copy()
customerdf

4.设置CustomerID为索引

customerdf.set_index('CustomerID',drop=True,inplace=True)

5添加交易次数字段(后期计算F时方便)

customerdf['orders']=1
customerdf

6做透视表
最后一次购买时间 购买次数 购买总金额

rfmdf=customerdf.pivot_table(
    index=['CustomerID'],
    values=['OrderDate','orders','Sales'],
    aggfunc={
        'OrderDate':'max',
        'orders':'sum',
        'Sales':'sum'
    }
)

aggfunc为各个字段的设置运算 OrderDate 取出最大值,orders为下单次数去和,Sales求每个用户的销售总金额
7. 每一位用户的 R F M
用相同的的标准减去每一位用户最后购买的时间即可算出R,标准一样,则R标准一样

rfmdf['R']=(rfmdf.OrderDate.max()-rfmdf.OrderDate).dt.days
rfmdf.rename(columns={'Sales':'M','orders':'F'},inplace=True)
rfmdf

rfmdf.OrderDate.max()为整个2014年下单日期的最大值,此值可任意选择,选定一个值,则求出的每一列的值都是标准值.
8用户打标签算法

判断结果返回字符串.以便后面将其拼接,整型数字无法拼接
def rfm_func(x):
#与均值的差设置成0和1状态
    res=x.apply(lambda x:'1'if x>0 else '0')
    label=res.R+res.F+res.M
    d={
        '011':'重要价值客户', 
        '111':'重要唤回客户',
        '001':'重要深耕客户',
        '101':'重要挽留客户',
        '010':'潜力客户',
        '110':'一般维持客户',
        '000':'新客户',
        '100':'流失客户'
    }
    result=d[label]
    return result

9.将RFM进行连接,每个RFM之分别于均值做差,然后用函数将每个用户打上标签

rfmdf['label']=rfmdf[['R','F','M']].apply(lambda x:x-x.mean()).apply(rfm_func,axis=1)

10.计算每种客户类型的数量

rfmdf.groupby('label').count()

在这里插入图片描述

11.将每种客户类型作为横坐标,客户类型的值即数量作为纵坐标进行绘图

rfmdf.label.value_counts().plot.bar(figsize=(20,8),fontsize=15)

在这里插入图片描述
二 RFM评分算法
注:均值算法将最大值和最小值的误差拉小,从而使得整个统计误差变大.
评分算法就是为每个用户根据一定的区间为其用户进行打分,使得整体统计精确值提升.
在这里插入图片描述
1.统计表的基本信息

customer_grade_df = rfmdf[['R','F','M']]
customer_grade_df.describe()

在这里插入图片描述
2.设置打分区间

#1.1 F值区间打分 F值越大,分越高
section_list_F=[0,5,10,15,20,50]
grade_F=pd.cut(customer_grade_df['F'],bins=section_list_F,labels=[1,2,3,4,5])
grade_F
customer_grade_df['F_S']=grade_F.values
#1.2 M值区间打分 M值越大,分越高
section_list_M=[0,500,1000,5000,10000,30000]
grade_M=pd.cut(customer_grade_df['M'],bins=section_list_M,labels=[1,2,3,4,5])
grade_M
customer_grade_df['M_S']=grade_M.values
#1.3 R值区间打分  R值越小,分越高
section_list_R=[-1,32,93,186,270,365]
grade_R=pd.cut(customer_grade_df['R'],bins=section_list_R,labels=[5,4,3,2,1])
grade_R
customer_grade_df['R_S']=grade_R.values
customer_grade_df

注意:每个RFM的区间的设定是根据上表的最大值和最小值设定的,一定要将字段的数值都包含在内,否则会使整个统计值出现误差
在这里插入图片描述
3.查看表的基本信息

customer_grade_df.describe()
#可以查到R_S,F_S,M_S 不是浮点型数字,是个category类型 
#无法进行计算,需要进行转换,这是由于pandas库cut函数导致
customer_grade_df.info()  

在这里插入图片描述
4.修改category类型为int64

rfm_score_grade=pd.DataFrame(customer_grade_df[['R_S','F_S','M_S']],dtype=np.int64)
rfm_score_grade.dtypes

在这里插入图片描述
5.根据打分情况,给用户打标签(同均值算法一样)

def rfm_score_func(x):
    level=x.apply(lambda x: '1'if x>=0 else '0')
    label = level.R_S+level.F_S+level.M_S
    d={
        '011':'重要价值客户', 
        '111':'重要唤回客户',
        '001':'重要深耕客户',
        '101':'重要挽留客户',
        '010':'潜力客户',
        '110':'一般维持客户',
        '000':'新客户',
        '100':'流失客户'
    }
    result=d[label]
    return result
rfm_score_grade['RFM']=rfm_score_grade[['R_S','F_S','M_S']].apply(lambda x:x-x.mean()).apply(rfm_score_func,axis=1 )
rfm_score_grade

在这里插入图片描述

6.计算每种每种类型客户的数量

rfm_score_grade.groupby('RFM').count()

在这里插入图片描述
7. 绘图

rfm_score_grade.RFM.value_counts().plot.bar(figsize=(20,8),fontsize=16)

在这里插入图片描述

三 类比均值算法图和评分算法图,由此可看出 均值误差大
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于RFM模型的电商零售数据分析是指通过对顾客的最近购买时间(Recency)、购买频率(Frequency)和购买金额(Monetary)进行综合评估,对顾客进行划分和分析,以便针对不同的顾客采取相应的营销策略。 首先,通过对电商零售数据的RFM指标进行计算,可以得到每个顾客的RFM得分,这些得分反映了顾客在购买行为上的表现。然后,可以根据RFM得分将所有顾客分为不同的等级,如重要客户、潜在高价值客户、一般客户和低价值客户等。 其次,对于重要客户,电商可以针对性地提供更加个性化和高价值的服务,如独享折扣、VIP礼遇、定制化需求满足等,以提高他们的忠诚度和购买频率。 对于潜在高价值客户,电商可以通过精准广告投放、提供专属优惠码等方式,吸引他们成为实际的高价值客户。 对于一般客户,电商可以通过提供一些基本的会员权益,如免费配送、生日特权等,激发他们的购买欲望,同时也提高他们的忠诚度。 对于低价值客户,电商可以通过促销活动、打折等方式吸引他们重新购买,或者通过精细化营销策略,将其转化为高价值客户。 此外,通过RFM模型数据分析,还可以发现购买时间、购买频率和购买金额之间的关系,找到不同类型的顾客在这些指标上的差异,并据此进行精细化的目标市场划分,更好地满足顾客需求。 综上所述,基于RFM模型的电商零售数据分析可以帮助电商更好地了解和管理顾客,制定个性化的营销策略,提高销售业绩和顾客满意度。 ### 回答2: 基于RFM模型的电商零售数据分析是一种常见的方法,用于评估和细分客户群体。 首先,RFM模型代表了最近购买(Recency)、购买频率(Frequency)和购买金额(Monetary)这三个指标。这些指标可以帮助电商零售商了解客户的购买行为和价值。 通过分析最近购买的时间,我们可以了解客户的活跃度和忠诚度。购买频率可以告诉我们客户的购买行为习惯,例如他们是经常购买还是偶尔购买。购买金额可以揭示客户的消费水平和偏好。 利用RFM模型,我们可以将客户细分为不同的群体。例如,我们可以识别出高价值客户,即最近购买、购买频率和购买金额都高的客户。这些客户通常是电商零售商的重要利润来源。另一方面,低价值客户则可能是需要关注的潜在客户。 通过深入分析RFM模型,我们可以得出以下结论:1)购买频率是提高客户价值的关键因素,因为它可以促使客户不断回购和增加购买次数;2)最近购买是与客户忠诚度直接相关的因素,因为较长时间没有购买可能表示客户对该品牌或产品的兴趣下降;3)购买金额与客户的消费能力和购买行为相关,因此对于客户的细分和个性化推荐非常重要。 综上所述,基于RFM模型的电商零售数据分析可以帮助电商零售商更好地了解客户,并制定相应的营销策略,提高客户忠诚度和购买行为,从而实现销售增长和利润提升。 ### 回答3: RFM模型是一种常用的电商零售数据分析模型,它基于顾客的最近购买时间(Recency)、购买频率(Frequency)和购买金额(Monetary)三个维度进行分析,可以帮助企业识别出高价值的顾客群体。 首先,通过对顾客最近一次购买时间的分析,可以确定哪些顾客是近期活跃的,比如最近3个月内购买过商品的顾客,这些顾客具有较高的购买潜力和忠诚度,可以进行精准的市场推广和个性化营销。 其次,通过对顾客购买频率的分析,可以识别出经常购买的忠诚客户和不太活跃的潜在客户。经常购买的忠诚客户可以通过专属折扣、会员权益等方式进行奖励和留存,而不太活跃的潜在客户可以通过精准的优惠券、活动邀请等方式进行再度唤回。 最后,通过对顾客购买金额的分析,可以判断顾客的消费水平和支付能力。高消费的顾客通常购买力强,可以成为品牌重点培养的VIP客户,可以提供个性化的服务和高端产品推荐,以增强顾客满意度和留存率。 在电子商务中,RFM模型还可以与其他模型结合使用,比如与用户行为分析模型、推荐算法等,进一步优化个性化推荐、购物车留存等各个环节。 总结来说,基于RFM模型的电商零售数据分析可以帮助企业了解顾客的购买行为和价值,以制定精准的营销策略,提高销售额,提升顾客满意度和忠诚度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值