📅  最后修改于: 2023-12-03 15:36:37.117000             🧑  作者: Mango
RFM 分析是一种客户细分分析方法,主要用于识别顾客的消费习惯、客户活跃程度、转化率等,以此帮助企业更好地了解客户需求、制定客户维护策略和提高销售额。
通过 RFM 模型往往可以将客户分类为 VIP 用户、高消费、高频率等类型,以此来针对不同的客户群体制定相应的营销策略。
在进行 RFM 分析前,需要先准备好一份包含每个顾客消费数据的表格,表格中至少需要包含顾客 ID、购买时间、订单金额等信息。
对于数据集的清洗包括去除无效数据、处理缺失值等操作,这些操作可以使用 pandas 库来完成。
import pandas as pd
# 读取数据
df = pd.read_csv('customer_data.csv')
# 去除无效数据
df.dropna(inplace=True)
# 处理日期格式
df['date'] = pd.to_datetime(df['date'])
计算 R、F、M 值是 RFM 分析的核心步骤,下面演示如何使用 pandas、numpy 等库来计算 R、F、M 值。
计算 R 值:
# 获取最后一次购买时间
last_date = df['date'].max()
# 计算每个用户最近一次购买时间距今天的天数
df['recency'] = (last_date - df['date']).dt.days
计算 F 值:
# 统计每个用户购买的次数
frequency = df.groupby('customer_id').count()['order_id']
df = df.merge(frequency, on='customer_id', how='left')
df.rename(columns={'order_id_y': 'frequency', 'order_id_x': 'order_id'}, inplace=True)
计算 M 值:
# 统计每个用户总消费金额
monetary = df.groupby('customer_id').sum()['total']
df = df.merge(monetary, on='customer_id', how='left')
df.rename(columns={'total_y': 'monetary', 'total_x': 'total'}, inplace=True)
得到了 R、F、M 值之后,我们可以对每个顾客进行打分,以便更好地进行客户细分。
# 计算 R、F、M 的四分位数
r_quantile = df['recency'].quantile([0.25, 0.5, 0.75])
f_quantile = df['frequency'].quantile([0.25, 0.5, 0.75])
m_quantile = df['monetary'].quantile([0.25, 0.5, 0.75])
# 对 R、F、M 进行打分
def r_score(x):
if x <= r_quantile[0.25]:
return 4
elif x <= r_quantile[0.5]:
return 3
elif x <= r_quantile[0.75]:
return 2
else:
return 1
def fm_score(x):
if x <= f_quantile[0.25]:
return 1
elif x <= f_quantile[0.5]:
return 2
elif x <= f_quantile[0.75]:
return 3
else:
return 4
df['r_score'] = df['recency'].apply(r_score)
df['f_score'] = df['frequency'].apply(fm_score)
df['m_score'] = df['monetary'].apply(fm_score)
使用 Python 可以很方便地进行 RFM 分析,可以通过 matplotlib、seaborn 等库来可视化分析结果。
import matplotlib.pyplot as plt
# 分析 R、F、M 分布情况
plt.subplot(3, 1, 1)
df['recency'].plot.hist(bins=30)
plt.xlabel('Recency')
plt.subplot(3, 1, 2)
df['frequency'].plot.hist(bins=30)
plt.xlabel('Frequency')
plt.subplot(3, 1, 3)
df['monetary'].plot.hist(bins=30)
plt.xlabel('Monetary')
plt.show()
import seaborn as sns
# 绘制 R-F、R-M、F-M 热力图
sns.scatterplot(x='recency', y='frequency', data=df)
plt.show()
sns.scatterplot(x='recency', y='monetary', data=df)
plt.show()
sns.scatterplot(x='frequency', y='monetary', data=df)
plt.show()
RFM 分析可以帮助企业更好地了解客户需求和消费习惯,制定更有针对性的营销策略,提高品牌知名度和销售额。在 Python 中,使用 pandas、numpy、matplotlib、seaborn 等库进行 RFM 分析非常方便,代码简洁易懂,是一种高效的数据分析方法。