RFM分析用于根据客户的购买行为来了解和细分客户。RFM代表最近一次消费 (Recency)、消费频率 (Frequency)和消费金额 (Monetary),这是三个关键指标,可提供有关客户参与度、忠诚度和企业价值的信息。本文将带您完成使用Python进行RFM分析的任务。
RFM分析:概述
RFM分析是数据科学专业人员使用的一个概念,特别是在营销领域,用于根据客户的购买行为来理解和细分客户。
使用RFM分析,企业可以评估客户的:
- Recency(他们最后一次购买的日期)
- Frequency(购买的频率)
- Monetary(购买的金额)
这是提供有关客户参与度、忠诚度和对企业价值的信息的三个关键指标。
要使用Python执行RFM分析,我们需要一个包含客户ID、购买日期和交易金额的数据集。有了这些信息,我们可以计算每个客户的RFM值,并分析他们的模式和行为。
使用Python进行RFM分析
import pandas as pd
import plotly.express as px
import plotly.io as pio
import plotly.graph_objects as go
pio.templates.default = "plotly_white"
data = pd.read_csv("rfm_data.csv")
print(data.head())
输出
CustomerID PurchaseDate TransactionAmount ProductInformation OrderID \
0 8814 2023-04-11 943.31 Product C 890075
1 2188 2023-04-11 463.70 Product A 176819
2 4608 2023-04-11 80.28 Product A 340062
3 2559 2023-04-11 221.29 Product A 239145
4 9482 2023-04-11 739.56 Product A 194545
Location
0 Tokyo
1 London
2 New York
3 London
4 Paris
计算RFM值
from datetime import datetime
# Convert 'PurchaseDate' to datetime
data['PurchaseDate'] = pd.to_datetime(data['PurchaseDate'])
# Calculate Recency
data['Recency'] = (datetime.now().date() - data['PurchaseDate'].dt.date).dt.days
# Calculate Frequency
frequency_data = data.groupby('CustomerID')['OrderID'].count().reset_index()
frequency_data.rename(columns={
'OrderID': 'Frequency'}, inplace=True)
data = data.merge(frequency_data, on='CustomerID', how='left')
# Calculate Monetary Value
monetary_data = data.groupby('CustomerID')['TransactionAmount'].sum().reset_index()
monetary_data.rename(columns={
'TransactionAmount': 'MonetaryValue'}, inplace=True)
data = data.merge(monetary_data, on='CustomerID', how='left')
为了计算最近时间,我们从当前日期中减去购买日期,并使用datetime.now().date()函数提取天数。它给出了自客户上次购买以来的天数,代表了他们的最近价值。
然后,我们计算了每个客户的频率。我们按“CustomerID”对数据进行分组,并计算唯一“OrderID”值的数量,以确定每个客户的购买次数。它给出了频率值,代表每个客户的购买总数。
最后,我们计算了每个客户的货币价值。我们按“CustomerID”对数据进行分组,并对“TransactionAmount”值进行求和,以计算每个客户的总支出。它为我们提供货币价值,代表每个客户的总货币贡献。
通过执行这些计算,我们现在为每个客户提供了必要的RFM值,这是了解RFM分析中客户行为和细分的重要指标。
在继续之前,让我们看看结果数据:
print(data.head())
输出
CustomerID PurchaseDate TransactionAmount ProductInformation OrderID \
0 8814 2023-04-11 943.31 Product C 890075
1 2188 2023-04-11