使用Python进行RFM分析

本文详细展示了如何通过Python进行RFM分析,包括数据预处理、RFM值计算、客户细分和行为模式洞察。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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             
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python收藏家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值