powerbi 实现 RFM用户模型

一、 项目名称:电商行业用户画像搭建
二、 项目背景:某线上母婴平台发现最近一年各类营销活动的效果不佳,且总
体销售额没有明显的增长。据了解,以往的营销活动面向所有用户,部分
用户无论有无营销活动均稳定的消费,而有些用户很常时间未消费可能已
转变为流失人群。
三、 分析目的和价值
平台逐渐意识到用户分类的重要性。实现用户分类后,可针对不同用户实
施组合促销、会员卡充值、满减等营销活动。
四、 分析要求

以 2019 年 8 月 3 日为分析时点统计每个用户的 R 值、F 值、M 值
运用平均值作为 RFM 各维度对应高低程度的判断值
使用判断函数或查找函数划分出不同的用户类别
根据帕累托分析识别核心类别用户
 数据说明
作业中提供的数据为 2019 年 1 月至 7 月某母婴电商平台的销售数据,其
中,流水号为购物篮编号,一次购物产生一个购物篮编号,一个购物篮内
可添加多个商品。
注:R、F、M 每个维度下划分为两个程度,用户分类如下表

 

 

 

 

 Powerbi 查看地址:https://app.powerbi.com/view?r=eyJrIjoiZDRjMzdjN2EtNzkxYy00Y2NiLWI3MzItNTFiNDc1Y2MzMDE0IiwidCI6ImE0NmQwMTZhLTA1NTQtNGE0Yy05OTM5LTgxMWQwM2U0Yzk1YyIsImMiOjEwfQ%3D%3D

### 如何在 Power BI实现 RFM 分析 RFM(Recency, Frequency, Monetary)分析是一种用于客户细分的强大工具,它通过客户的近购买时间、购买频率以及消费金额来评估其价值。以下是关于如何在 Power BI实现 RFM 分析的具体方法: #### 数据准备 为了执行 RFM 分析,在导入数据之前,需确保交易记录表包含以下字段: - **CustomerID**: 客户唯一标识符。 - **OrderDate**: 订单日期。 - **SalesAmount**: 销售额。 这些字段对于计算 R(近一次购买)、F(购买频率)和 M(总消费金额)至关重要[^1]。 #### 创建度量值 利用 DAX (Data Analysis Expressions),可以创建必要的列和度量值来进行 RFM 分析。 ##### 1. Recency (R): 近一次购买的时间间隔 ```DAX Recency = VAR LatestDate = MAX('Transaction'[OrderDate]) RETURN DATEDIFF(MAXX(FILTER(ALL('Transaction'), 'Transaction'[CustomerID] = EARLIER('Transaction'[CustomerID])), 'Transaction'[OrderDate]), LatestDate, DAY) ``` 此表达式会针对每位客户计算从新订单日期到当前大日期之间的天数差异。 ##### 2. Frequency (F): 购买次数 ```DAX Frequency = CALCULATE(DISTINCTCOUNT('Transaction'[OrderID]), ALLEXCEPT('Transaction', 'Transaction'[CustomerID])) ``` 该公式统计了每个客户的独特订单数量作为他们的购买频次指标。 ##### 3. Monetary Value (M): 总消费金额 ```DAX MonetaryValue = SUMX('Transaction', 'Transaction'[SalesAmount]) ``` 这一步骤汇总了每名顾客在其所有交易中的销售总额。 #### 应用评分机制 完成上述三个维度的计算之后,下一步是对它们应用评分逻辑。通常情况下,采用五分制或其他等级划分方式给定分数范围内的表现打分。例如,较低的 `Recency` 值应获得更高的得分;而较高的 `Frequency` 和 `MonetaryValue` 则对应更高评价。 可以通过建立额外的辅助表格或者继续扩展现有模型来定义具体的评分规则并将其映射回原始数据集上。 后,将这三个独立的评分结合起来形成终的综合RFM得分,并据此对客户群体进行分类管理决策支持活动如精准营销策略制定等操作提供依据。 ```python # 示例 Python 代码片段展示可能的数据处理流程 import pandas as pd data = {'CustomerID': [101, 102], 'LastPurchaseDaysAgo': [5, 7], 'TotalPurchasesCount': [8, 4], 'TotalSpendings': [900, 600]} df = pd.DataFrame(data) def rfm_score(row): recency_score = 5 if row['LastPurchaseDaysAgo'] <= 3 else \ (4 if row['LastPurchaseDaysAgo'] <= 7 else 3) frequency_score = min(int((row['TotalPurchasesCount']/2)+1), 5) monetary_value_score = max(min(round(row['TotalSpendings']/200), 5), 1) return f"{recency_score}{frequency_score}{monetary_value_score}" df['RFMScore'] = df.apply(rfm_score, axis=1) print(df[['CustomerID','RFMScore']]) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值