特征加工方法之RFM

文章介绍了如何在pyspark环境中利用DataFrame处理数据,构建RFM模型来分析顾客的购买行为。通过对最近购买时间(Recency)、购买频率(Frequency)和购买金额(Monetary)的计算,将顾客分为不同群体,以便制定针对性的营销策略。
摘要由CSDN通过智能技术生成

RFM模型是指根据最近购买时间(Recency)、购买频率(Frequency)和购买金额(Monetary)等指标对顾客进行分类的一种营销分析模型。在pyspark中,我们可以使用DataFrame进行数据处理和分析。

以下是一个简单的RFM模型示例,假设我们有一个顾客购买记录的DataFrame,结构如下:

+--------+----------+-------+--------+
|   Date | Customer |Amount | Product|
+--------+----------+-------+--------+
|2021-01-01|     A     | 100   |   X     |
|2021-01-05|     B     | 50    |   Y     |
|2021-01-08|     A     | 80    |   Z     |
|2021-01-10|     C     | 150   |   X     |
|2021-01-15|     B     | 120   |   Z     |
|2021-02-01|     A     | 200   |   Y     |
|2021-02-05|     C     | 90    |   X     |
|2021-02-10|     B     | 70    |   Y     |
|2021-02-12|     A     | 50    |   Z     |
|2021-02-15|     A     | 120   |   X     |
+--------+----------+-------+--------+

我们可以根据顾客的购买行为计算出他们的RFM三个指标作为特征,具体代码如下:

import pyspark.sql.functions as F

# 计算每个顾客的Recency指标
recency_df = df.groupBy("Customer").agg(
    F.max("Date").alias("last_date"),
    F.datediff(F.current_date(), F.max("Date")).alias("recency")
)

# 计算每个顾客的Frequency指标
frequency_df = df.groupBy("Customer").agg(
    F.countDistinct("Date").alias("frequency")
)

# 计算每个顾客的Monetary指标
monetary_df = df.groupBy("Customer").agg(
    F.sum("Amount").alias("monetary")
)

# 将三个指标合并到一张表中
rfm_df = recency_df.join(frequency_df, "Customer").join(monetary_df, "Customer")

rfm_df.show()

# 输出结果
+--------+----------+-------+--------+
|Customer| last_date|recency|frequency|monetary|
+--------+----------+-------+---------+-------+
|       A|2021-02-15|     11|        4|    550|
|       B|2021-02-10|     16|        3|    240|
|       C|2021-02-05|     21|        2|    240|
+--------+----------+-------+---------+-------+

通过计算每个顾客的Recency、Frequency和Monetary指标,我们将顾客分为了三个群体,并可以根据不同的RFM群体制定营销策略,例如:

  • RFM群体为"111":最近购买、购买频率和购买金额都很高的顾客,应该推送高价值商品或优惠券等奖励。

  • RFM群体为"311":最近购买虽然不太新,但购买频率和金额都很高的顾客,应该推送商品组合或打包促销等奖励。

  • RFM群体为"333":最近购买较旧且购买频率和金额都不高的顾客,需要加强促销、提供个性化推荐等手段来留住这部分客户。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值