rfm模型python_数据分析实战——用RFM模型分析客户价值
时间: 2023-10-23 17:10:45 浏览: 167
RFM模型是一种常用的客户价值分析模型,通过对客户的最近一次购买时间(Recency)、购买频率(Frequency)和购买金额(Monetary)进行评估,将客户分为不同的价值层次,从而制定不同的营销策略。
在Python中,我们可以使用Pandas和Numpy等库进行RFM模型的分析。以下是一个简单的RFM模型分析步骤:
1. 数据预处理:将原始数据导入Pandas DataFrame中,并对数据进行清洗和转换。
2. 计算RFM指标:通过对每个客户的购买时间、频率和金额进行计算,得到每个客户的RFM指标。
3. 分组划分:将客户按照RFM指标进行分组,一般采用分位数法,将客户分为高、中、低三个层次。
4. 客户价值评估:根据客户的RFM组合,对客户进行价值评估,制定相应的营销策略。
下面是一个简单的RFM模型分析代码示例:
```
import pandas as pd
import numpy as np
# 1. 数据预处理
df = pd.read_csv('customer_data.csv')
df['date'] = pd.to_datetime(df['date'])
# 2. 计算RFM指标
today = pd.to_datetime('today')
df_rfm = df.groupby('customer_id').agg({
'date': lambda x: (today - x.max()).days,
'customer_id': 'count',
'amount': 'sum'
})
df_rfm.rename(columns={'date': 'recency',
'customer_id': 'frequency',
'amount': 'monetary'}, inplace=True)
# 3. 分组划分
quantiles = df_rfm.quantile(q=[0.25, 0.5, 0.75])
def r_score(x):
if x <= quantiles['recency'][0.25]:
return 4
elif x <= quantiles['recency'][0.5]:
return 3
elif x <= quantiles['recency'][0.75]:
return 2
else:
return 1
def fm_score(x, c):
if x <= quantiles[c][0.25]:
return 1
elif x <= quantiles[c][0.5]:
return 2
elif x <= quantiles[c][0.75]:
return 3
else:
return 4
df_rfm['r_score'] = df_rfm['recency'].apply(lambda x: r_score(x))
df_rfm['f_score'] = df_rfm['frequency'].apply(lambda x: fm_score(x, 'frequency'))
df_rfm['m_score'] = df_rfm['monetary'].apply(lambda x: fm_score(x, 'monetary'))
df_rfm['rfm_score'] = df_rfm['r_score'] * 100 + df_rfm['f_score'] * 10 + df_rfm['m_score']
# 4. 客户价值评估
def label_customer(x):
if x >= 111 and x <= 444:
return '重要保持客户'
elif x >= 445 and x <= 754:
return '重要发展客户'
elif x >= 755 and x <= 944:
return '一般保持客户'
else:
return '一般挽留客户'
df_rfm['customer_label'] = df_rfm['rfm_score'].apply(lambda x: label_customer(x))
```
以上代码中,我们先将原始数据读入Pandas DataFrame中,然后计算出每个客户的RFM指标,并按照分位数法进行分组划分,最后根据客户的RFM组合确定其价值层次。
通过RFM模型的分析,我们可以更好地理解客户的行为习惯和价值特征,从而制定更加精准有效的营销策略。
阅读全文