RFM模型-分析母婴类产品

ops/2024/10/20 11:38:49/

1,场景描述

假设我们是某电商平台的数据分析师,负责分析母婴产品线的用户数据。母婴产品的购买行为具有一定的周期性和生命周期特征,如用户在不同怀孕阶段的需求不同,以及宝宝出生后的不同成长阶段需要不同的产品。

2,具体需求

  1. 识别高价值用户:通过RFM模型识别高价值用户,重点考虑用户的生命周期(例如:怀孕阶段、新生儿阶段)。
  2. 标签化用户行为:对用户行为进行标签化,包括季节性、促销活动、节假日事件等。
  3. 改进模型:针对母婴产品的特性,改进传统RFM模型的不足之处。

3,具体代码

数据模拟

import pandas as pd
import numpy as np
from datetime import datetime, timedelta# 模拟用户数据
np.random.seed(42)
user_ids = np.random.randint(1000, 2000, 1000)
dates = pd.date_range(end=datetime.today(), periods=365).to_pydatetime().tolist()
data = {'user_id': np.random.choice(user_ids, 5000),'order_date': np.random.choice(dates, 5000),'amount': np.random.uniform(10, 500, 5000)
}
orders = pd.DataFrame(data)# 假设部分用户的怀孕周数
orders['pregnancy_week'] = np.where(np.random.rand(5000) > 0.8, np.random.randint(1, 40, 5000), np.nan)# 生成一些标签,例如季节性、促销活动
orders['season'] = orders['order_date'].apply(lambda x: 'Winter' if x.month in [12, 1, 2] else ('Spring' if x.month in [3, 4, 5] else ('Summer' if x.month in [6, 7, 8] else 'Autumn')))
orders['promotion'] = np.random.choice([0, 1], size=5000, p=[0.7, 0.3])# 查看模拟数据
orders.head()

RFM 计算

# 当前日期
now = datetime.now()# 计算RFM值
rfm = orders.groupby('user_id').agg({'order_date': lambda x: (now - x.max()).days,'user_id': 'count','amount': 'sum'
}).reset_index()# 重命名列
rfm.columns = ['user_id', 'recency', 'frequency', 'monetary']# 计算RFM评分
rfm['R'] = pd.qcut(rfm['recency'], 4, ['1', '2', '3', '4'])
rfm['F'] = pd.qcut(rfm['frequency'].rank(method='first'), 4, ['4', '3', '2', '1'])
rfm['M'] = pd.qcut(rfm['monetary'], 4, ['4', '3', '2', '1'])# 组合RFM得分
rfm['RFM_Score'] = rfm['R'].astype(str) + rfm['F'].astype(str) + rfm['M'].astype(str)rfm.head()

标签化用户行为和生命周期分析

# 合并用户行为标签
rfm = rfm.merge(orders[['user_id', 'pregnancy_week', 'season', 'promotion']], on='user_id', how='left')# 根据怀孕周数标签化
def pregnancy_stage(week):if pd.isna(week):return 'Unknown'elif week < 13:return 'First Trimester'elif week < 27:return 'Second Trimester'else:return 'Third Trimester'rfm['pregnancy_stage'] = rfm['pregnancy_week'].apply(pregnancy_stage)# 计算用户在不同季节和促销活动中的消费
seasonal_promotion_agg = orders.groupby(['user_id', 'season', 'promotion']).agg({'amount': 'sum'
}).reset_index()# 合并
rfm = rfm.merge(seasonal_promotion_agg, on='user_id', how='left', suffixes=('', '_season_promo'))rfm.head()

4,改进模型

结合具体业务特性,针对母婴产品用户进行更精准的分析:

  1. 用户生命周期分析:重点分析怀孕阶段和宝宝成长阶段的用户需求。
  2. 行为标签:考虑用户在不同季节和促销活动中的消费习惯。

通过这样的改进,可以更精准地识别高价值用户和潜在流失用户,为制定营销策略提供数据支持。

# 模拟分析结果
# 查看高价值用户
high_value_users = rfm[rfm['RFM_Score'] == '444']# 查看高风险流失用户
high_risk_users = rfm[rfm['RFM_Score'] == '111']# 根据怀孕阶段细分用户群体
first_trimester_users = rfm[rfm['pregnancy_stage'] == 'First Trimester']
second_trimester_users = rfm[rfm['pregnancy_stage'] == 'Second Trimester']
third_trimester_users = rfm[rfm['pregnancy_stage'] == 'Third Trimester']# 分析用户在不同季节和促销活动中的消费行为
seasonal_promotion_analysis = rfm.groupby(['season', 'promotion']).agg({'amount': 'sum','user_id': 'nunique'
}).reset_index()# 结果展示
print("高价值用户:")
print(high_value_users)print("\\n高风险流失用户:")
print(high_risk_users)print("\\n第一孕期用户:")
print(first_trimester_users)print("\\n第二孕期用户:")
print(second_trimester_users)print("\\n第三孕期用户:")
print(third_trimester_users)print("\\n季节性和促销活动分析:")
print(seasonal_promotion_analysis)# 建议
print("建议:")
print("1. 针对高价值用户,提供专属优惠和服务,提升用户粘性。")
print("2. 针对高风险流失用户,分析流失原因并采取挽回措施,如发送个性化优惠券。")
print("3. 根据用户怀孕阶段,推荐相应的母婴产品,满足用户特定需求。")
print("4. 在促销活动期间,加强推广力度,吸引更多用户参与消费。")
print("5. 关注季节性消费变化,提前准备相关产品的库存和促销策略。")

(交个朋友/技术接单/ai办公/性价比资源)

c27159cc0cbd41ef98cb474cc2c7d5e5.png


http://www.ppmy.cn/ops/45308.html

相关文章

蓝海卓越计费管理系统 agent_setstate.php SQL注入漏洞复现

0x01 产品简介 蓝海卓越计费管理系统是一套以实现网络运营为基础,增强全局安全为中心,提高管理效率为目的的网络安全运营管理系统,提供“高安全、可运营、易管理”的运营管理体验,基于标准的RADIUS协议开发,它不仅支持PPPOE和WEB认证计费,还支持802.1X接入控制技术,与其…

为什么MySQL需要binlog、undo log、redo log 3种日志?

binlog是 server层生成的日记&#xff0c;而 undo log、redo log 是Innodb 存储引擎层生成的日志 binlog&#xff0c;是 binary log的英文缩写&#xff0c;翻译为二进制日志或者归档日志&#xff08;带有业务含义&#xff09;&#xff0c;它是从 MySQL 3.23.14版本引入的。bin…

OpenFHE 源码解析:BinFHE 部分

参考文献&#xff1a; [ABB22] Al Badawi A, Bates J, Bergamaschi F, et al. Openfhe: Open-source fully homomorphic encryption library[C]//Proceedings of the 10th Workshop on Encrypted Computing & Applied Homomorphic Cryptography. 2022: 53-63.openfheorg/o…

第三章 Linux目标文件解析

解析目标文件内容&#xff1a;举例说明 //rootubuntu:/mnt/hgfs/share/019-proself/04# cat simplesection.c int printf(const char* format,...); int global_init_var84; int global_uninit_val; void func1(int i) {printf("%d\n",i); } int main(void) {static…

React-useState

useState基础使用 useState是一个React Hook&#xff08;函数&#xff09;&#xff0c;它允许我们向组件添加一个状态变量&#xff0c;从而控制影响组件的渲染结果 本质&#xff1a;和普通JS变量不同的是&#xff0c;状态变量一旦发生变化组件的视图UI也会跟着变化&#xff0…

现代操作系统上创建各类链接的方法汇总

文章目录 现代操作系统上创建各类链接的方法汇总windows: cmd下的mklink创建链接示例 powershell 创建链接创建常规文件和目录创建链接 linux shell 创建硬链接NAMESYNOPSIS详细说明常用选项示例 检查与辨识符号链接&#x1f388;linux下检查ls -l 命令file 命令 windows下检查…

Python OCR 文字识别使用模型:读光-文字识别-行识别模型-中英-通用领域

介绍 什么是OCR&#xff1f; OCR是“Optical Character Recognition”的缩写&#xff0c;中文意为“光学字符识别”。它是一种技术&#xff0c;可以识别和转换打印在纸张或图像上的文字和字符为机器可处理的格式&#xff0c;如计算机文本文件。通过使用OCR技术&#xff0c;可…

红队内网攻防渗透:内网渗透之前置知识外网权限提升技术

红队内网攻防渗透 1. 内网权限提升技术1.1 外网权限提升的思路-前置知识1.1.1 外网权限提升知识点:1.1.2 外网权限提升基础内容1.1.2.1 为什么我们要学习权限提升转移技术:1.1.2.2 具体有哪些权限需要我们了解掌握的:1.1.2.3 以上常见权限获取方法简要归类说明:1.1.2.4 以上…