RFM模型介绍

RFM模型介绍

做用户价值分析,应用最广泛的模型是RFM模型。

1.R

R(recency)指最近一次消费时间与截至时间的间隔。通常情况下,最近一次消费时间与截至时间的间隔越短,客户对即时提供的商品服务也最有可能感兴趣。

最近一次消费时间与截至时间的间隔不仅能够确定促销客户群体提供依据,还能够从中得到企业发展的趋势。如果分析报告显示距最近一次消费时间很近的客户在增加,则表明该公司是一个稳步上升的公司。反之,距离最近一次消费时间很近的客户越来越少,则说明该公司需要找出问题所在,及时调整运营策略。

2.F

F(Frequency)指客户在某段时间内的消费次数。消费频率越高的客户也是满意率最高的客户,其忠诚度越高,客户价值越大,增加顾客的购买次数意味着从竞争对手那里抢的市场占有率,赚取营业额。商家所需要做的,是通过各种营销方式不断刺激啊顾客消费,提高他们的消费频率,提升店铺的复购率。

3.M

M(Monetary)指顾客在某段时间内的消费金额。消费金额越大的顾客,他们的消费能力自然也就越大,这就是所谓“20%的顾客贡献了80%的销售额”的二八法则。这批顾客自然也是商家在进行运营活动时需要特别照顾的群体,尤其是在商家前期准备不足的时候。不过需要注意的是,不论采用哪种营销方式,以不对顾客造成骚扰为前提,否则只会产生负面效应。

在RFM模型理论中,最近一次消费时间与截至时间的间、消费频率、消费金额是测算顾客价值最重要的特征。这三个特征对营销活动具有十分重要的意义。其中,最近一次消费时间与截至时间的间隔是最有力的特征。

有时候RFM模型不一定满足需求那我们可以在次基础上可以增加特征。所选择的特征需要根据所在行业和需求进行调整补充。

### RFM模型的代码实现 RFM模型的核心在于对客户数据中的三个关键指标进行提取和计算:最近一次消费时间(Recency)、消费频率(Frequency)以及消费金额(Monetary Value)。下面是一个完整的基于Python的RFM模型代码实现,适用于常见的交易数据集。 #### 数据准备 假设我们有一个包含以下列的数据集: - `CustomerID`:客户的唯一标识符。 - `OrderDate`:订单日期。 - `AmountSpent`:每次交易的金额。 这些数据通常可以从企业的销售数据库中获取。 --- #### Python代码实现 ```python import pandas as pd from datetime import timedelta, datetime # 创建示例数据 data = { 'CustomerID': ['Cust1', 'Cust2', 'Cust1', 'Cust3', 'Cust2', 'Cust4', 'Cust1'], 'OrderDate': [ '2023-09-01', '2023-08-15', '2023-07-20', '2023-06-10', '2023-05-01', '2023-04-15', '2023-03-01' ], 'AmountSpent': [100, 200, 150, 300, 250, 400, 50] } df = pd.DataFrame(data) # 将OrderDate转换为datetime格式 df['OrderDate'] = pd.to_datetime(df['OrderDate']) # 定义当前日期(通常是运行代码时的实际日期) current_date = df['OrderDate'].max() + timedelta(days=1) # 假设今天是最后订单日的下一天 # 计算RFMrfm_df = ( df.groupby('CustomerID') .agg( Recency=(lambda x: (current_date - x['OrderDate'].max()).dt.days), # 最近一次购买距今天数 Frequency=('OrderDate', 'nunique'), # 购买次数 MonetaryValue=('AmountSpent', 'sum') # 总消费金额 ) ).reset_index() # 打印RFM结果 print(rfm_df) ``` --- #### 输出解释 上述代码会生成一个包含每个客户RFM值的结果表。例如: | CustomerID | Recency | Frequency | MonetaryValue | |------------|---------|-----------|---------------| | Cust1 | 62 | 3 | 300 | | Cust2 | 78 | 2 | 450 | | Cust3 | 92 | 1 | 300 | | Cust4 | 108 | 1 | 400 | 其中: - **Recency** 表示该客户最后一次购买距离当前日期的天数。 - **Frequency** 是该客户总的购买次数。 - **MonetaryValue** 是该客户总消费金额。 --- #### 进一步扩展:RFM评分与分组 为了更方便地分析客户价值,可以将每个维度分成若干等级(如五级),并赋予相应的分数。 ```python # 对RFM值进行打分(反向打分:R越小越好;F&M越大越好) quantiles = rfm_df.quantile(q=[0.2, 0.4, 0.6, 0.8]) quantiles = quantiles.to_dict() def calculate_r_score(x): if x <= quantiles['Recency'][0.2]: return 5 elif x <= quantiles['Recency'][0.4]: return 4 elif x <= quantiles['Recency'][0.6]: return 3 elif x <= quantiles['Recency'][0.8]: return 2 else: return 1 def calculate_fm_score(x, col_name): if x >= quantiles[col_name][0.8]: return 5 elif x >= quantiles[col_name][0.6]: return 4 elif x >= quantiles[col_name][0.4]: return 3 elif x >= quantiles[col_name][0.2]: return 2 else: return 1 # 应用评分函数 rfm_df['R_Score'] = rfm_df['Recency'].apply(calculate_r_score) rfm_df['F_Score'] = rfm_df['Frequency'].apply(lambda x: calculate_fm_score(x, 'Frequency')) rfm_df['M_Score'] = rfm_df['MonetaryValue'].apply(lambda x: calculate_fm_score(x, 'MonetaryValue')) # 合并RFM综合得分 rfm_df['RFM_Score'] = rfm_df[['R_Score', 'F_Score', 'M_Score']].sum(axis=1) # 打印最终结果 print(rfm_df) ``` 通过这种方式,可以获得每个客户的综合RFM得分,并据此划分客户群体。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值