📜  使用Python进行 RFM 分析分析(1)

📅  最后修改于: 2023-12-03 15:36:37.117000             🧑  作者: Mango

使用Python进行 RFM 分析分析

什么是 RFM 分析

RFM 分析是一种客户细分分析方法,主要用于识别顾客的消费习惯、客户活跃程度、转化率等,以此帮助企业更好地了解客户需求、制定客户维护策略和提高销售额。

  • R(Recency)表示客户最近一次购买的时间,通常用天数来计算。
  • F(Frequency)代表客户在一段时间内购买的频率。
  • M(Monetary)表示客户在一段时间内总的消费金额。

通过 RFM 模型往往可以将客户分类为 VIP 用户、高消费、高频率等类型,以此来针对不同的客户群体制定相应的营销策略。

如何使用 Python 进行 RFM 分析
数据准备

在进行 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 值

计算 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)
RFM 打分

得到了 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)
RFM 分析

使用 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()

RFM_hist.png

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_heatmap.png

结论

RFM 分析可以帮助企业更好地了解客户需求和消费习惯,制定更有针对性的营销策略,提高品牌知名度和销售额。在 Python 中,使用 pandas、numpy、matplotlib、seaborn 等库进行 RFM 分析非常方便,代码简洁易懂,是一种高效的数据分析方法。