RFM模型-分析母婴类产品

news2024/11/24 6:55:59

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.coloradmin.cn/o/1714601.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前缀和(下)

目录 热身&#xff1a; 寻找数组的中心下标 题解&#xff1a; 代码&#xff1a; 进阶&#xff1a; 除自身之外数组的乘积 题解&#xff1a; 代码&#xff1a; 和为K的子数组 题解&#xff1a; 代码&#xff1a; 和可被 K 整除的子数组 题解&#xff1a; 同余定理…

postman教程-6-发送delete请求

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了postman发送put请求的方法&#xff0c;本小节我们讲解一下postman发送delete请求的方法。 HTTP DELETE 请求是一种用于删除指定资源的请求方法。在RESTful API 设计中&#xff0c;DELETE 请求…

基础漏洞系列——CSRF跨站请求伪造

简介&#xff1a; 跨站请求伪造&#xff08;英语&#xff1a;Cross-site request forgery&#xff09;&#xff0c;也被称为 one-click attack或者 session riding&#xff0c;通常缩写为 CSRF或者 XSRF&#xff0c; 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操…

Spring Boot 2 入门基础

学习要求 ● 熟悉Spring基础 ● 熟悉Maven使用 环境要求 ● Java8及以上 ● Maven 3.3及以上&#xff1a;https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started-system-requirements 学习资料 ● 文档地址&#xff1a; htt…

QTP——功能测试

一、前言&#xff08;课设目的及内容&#xff09; QTP是quicktest Professional的简称&#xff0c;是一种自动测试工具。使用QTP的目的是想用它来执行重复的手动测试&#xff0c;主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试&…

全局配置-案例:配置tabBar

一、需求&#xff1a;实现如图所示的tabBar效果 二、实现步骤&#xff1a; 1.拷贝图标资源 把image文件夹拷贝到小程序项目根目录中 图片中包含-active的是选中之后的图标 图片中不包含-active的是默认图标 2.新建3个对应的tab页面 3.配置tabBar选项 &#xff08;1&#xf…

五种不寻常的身份验证绕过技术

身份验证绕过漏洞是现代web应用程序中普遍存在的漏洞&#xff0c;也是隐藏最深很难被发现的漏洞。 为此安全防护人员不断在开发新的认证方法&#xff0c;保障组织的网络安全。尽管单点登录(SSO)等工具通常是对旧的登录用户方式的改进&#xff0c;但这些技术仍然可能包含严重的…

2024年西安交通大学程序设计校赛(ABCDEFO)

题目链接&#xff1a;https://vjudge.net/contest/630537#overview 文章目录 A题题意思路编程 B题题意思路编程 C题题意思路编程 D题题意思路编程 E题题意思路编程 F题题意思路编程 O题题意思路编程 写在前面&#xff1a;今天的训练赛出的题目偏简单&#xff0c;与XCPC的难度差…

什么是React?

01 Why React? What is React? I think the one-line description of React on its home page (https://react.dev/) is concise and accurate: “A JavaScript library for building user interfaces.” 我认为React主页(https://react.dev/)上的一行描述既简洁又准确: …

Java是长连接

Java是长连接&#xff0c;springboot进程被结束才断开 一个连接池有10个连接&#xff0c;2个并发会占用2个连接&#xff0c;用完之后归还给连接池 springboot服务用户的是线程池&#xff0c;返回结果之后&#xff0c;线程自动归还到线程池。跟php机制不一样 php是短链接&am…

关于网络的基础知识

大家好&#xff0c;在当今数字时代&#xff0c;网络已经成为我们生活中不可或缺的一部分&#xff0c;它连接着世界的每一个角落&#xff0c;让信息、资源和人们彼此之间无阻碍地交流和共享。然而&#xff0c;对于许多人来说&#xff0c;网络仍然是一个神秘而复杂的领域&#xf…

模型实战(21)之 C++ - tensorRT部署yolov8-det 目标检测

C++ - tensorRT部署yolov8-det 目标检测 python环境下如何直接调用推理模型转换并导出:pt -> onnx ->.engineC++ tensorrt 部署检测模型不写废话了,直接上具体实现过程+all代码 1.Python环境下推理 直接命令行推理,巨简单yolo detect predict model=yolov8n.pt source…

linux系统的逻辑卷管理及磁盘配额

目录 逻辑卷管理 磁盘配额 逻辑卷管理 lvm&#xff1a;logical volume manager 逻辑卷管理 linux系统下对硬盘分区的一种管理机制。 lvm机制特别适合于管理大存储设备&#xff0c;可以动态的对硬盘进行扩容。 逻辑上的磁盘&#xff0c;概念上的磁盘&a…

期权与股票在交易上是有什么区别吗?

国内的股票市场&#xff0c;只能做多&#xff0c;T1交易。期权则分为4个方向&#xff0c;买入看涨期权&#xff0c;买入看跌期权&#xff0c;也就是做多和做空T0双向交易&#xff0c;同时每个方向还区分不同的行权价&#xff0c;每个行权价对应的4个方向的期权&#xff0c;都有…

操作系统复习-操作系统概述

操作系统概述 操作系统的基本功能 操作系统统一管理着计算机资源&#xff1a; 处理器资源IO设备资源存储器资源文件资源 操作系统实现了对计算机资源的抽象&#xff1a; 用户无需向硬件接口编程IO设备管理软件&#xff0c;提供读写接口文件管理软件&#xff0c;提供操作文…

快手自动私信获客软件,精准定位潜在客户

在当今数字化营销时代&#xff0c;短视频平台已成为企业与个人品牌不可忽视的流量宝地。快手作为国内领先的短视频社交平台&#xff0c;汇聚了庞大的用户群体和丰富的兴趣社区&#xff0c;为各类商家、创作者提供了无限商机。如何在快手平台上高效引流获客&#xff0c;实现精准…

.net8.0与halcon编程环境构建

1.安装vs2022 2.安装h-12.0.exe ,不要勾选复选框 3.vs2022新建wpf应用程序 4.依赖项添加项目应用,选择halcondotnet.dll 5.安装System.Drawing 安装 HalconDotNet 安装 Rti.HDevEngineDotNet 在工具箱 空白处右键 应用halcon.dll WPF控件也应用halcon.dll 6.xaml申明hal…

尝试编译 AMD ROCm 的 llvm-project

ubuntu 22.04 gcc-11 x86_64 18cores/36threads 256GB RAM 1&#xff0c;第一次尝试 构建命令&#xff1a; cmake -G "Unix Makefiles" ../llvm \ -DLLVM_ENABLE_PROJECTS"clang;lld;lldb;mlir;openmp" \ -DLLVM_BUILD_EXAMPLESON \ -DLLVM_TARGETS_T…

企业为何广泛应用数据可视化?解析其背后原因

数据可视化为何能在企业当中广泛应用&#xff1f;这是一个值得探讨的话题。在当今信息爆炸的时代&#xff0c;企业每天都会产生和处理大量的数据&#xff0c;这些数据蕴含着丰富的信息和潜在的商业价值。然而&#xff0c;面对海量数据&#xff0c;如何高效地分析、理解和利用它…

Springboot邮件发送配置

Springboot邮件发送配置 pom.xml依赖&#xff1a; <dependency><groupId>org.eclipse.angus</groupId><artifactId>jakarta.mail</artifactId><version>2.0.3</version> </dependency> <dependency><groupId>or…