数据分析 — 电商用户分析和用户 RFM 模型

一、电商用户分析

1、数据字段信息

字段 说明
RowID 行编号
OrderID 订单 ID
OrderDate 订单日期
ShipDate 发货日期
ShipMode 发货模式
CustomerID 客户 ID
CustomerName 客户姓名
Segment 客户类别
City 客户所在城市
State 客户所在州
Country 客户所在国家
PostalCode 邮编
Market 商店所属区域
Region 商店所属州
ProductID 产品 ID
Category 产品类别
Sub-Category 产品子类别
ProductName 产品名称
Sales 售价
Quantity 销售量
Discount 折扣
Profit 利润
ShippingCost 发货成本
OrderPriority 订单优先级

2、数据读取

import pandas as pd  # 导入 Pandas 库并使用别名 pd
# 读取 CSV 文件,使用 gbk 编码
data = pd.read_csv(r'F:\data\dataset.csv', encoding='gbk')
print(data)

在这里插入图片描述

# 打印数据的列名
print(data.columns)

在这里插入图片描述

# 重新命名数据的列名
data.columns = ['行编号', '订单ID', '订单日期', '发货日期', '发货模式', '客户ID', '客户姓名', '客户类别', '客户所在城市', '客户所在州', '客户所在国家', '邮编', '商店所属区域', '商店所属州', '产品ID', '产品类别', '产品子类别', '产品名称', '售价', '销售量', '折扣', '利润', '发货成本', '订单优先级']
print(data.head())

在这里插入图片描述

3、数据清洗

在这里插入图片描述

# 打印数据的基本信息
data.info()

在这里插入图片描述

# 1、发货日期 - 订单日期 >= 0,异常的数据 < 0
# 将 '发货日期' 和 '订单日期' 列的数据类型转换为 datetime
data['发货日期'] = pd.to_datetime(data['发货日期'])
data['订单日期'] = pd.to_datetime(data['订单日期'])
# 计算 '发货秒数' 列,表示发货日期与订单日期的时间差(秒)
data['发货秒数'] = (data['发货日期'] - data['订单日期']).dt.total_seconds()

# 删除发货日期早于订单日期的
data.drop(index=data[data['发货秒数'] < 0].index, inplace=True)  # drop() 这里是按索引删除
print(data.head())

在这里插入图片描述

# 打印数据的形状
print(data.shape)  # (51097, 25)
# 2、删除售价为负数据(异常数据)
# 查找 '售价' 列小于 0 的行
print(data[data['售价'] < 0])
# 没有售价为负的,不用处理

在这里插入图片描述

# 打印数据的信息
data.info()

在这里插入图片描述

# 3、查看空值,重复值
# 打印每列的缺失值数量
print(data.isnull().sum())

在这里插入图片描述

# 计算 '行编号' 列的唯一值数量
print(data['行编号'].unique().size)  # 51094
# 删除重复的 '行编号' 行(去重)
data.drop_duplicates('行编号', inplace=True)
data.info()

在这里插入图片描述


                
RFM模型电商用户数据分析中常用的一种模型,用于衡量用户价值忠诚度。RFM模型包括三个指标: R (Recency):最近一次购买时间距离当前时间的天数,表示用户的活跃度。 F (Frequency):用户购买的次数,表示用户的忠诚度。 M (Monetary):用户购买的总金额,表示用户的价值。 以下是一个电商平台的用户RFM模型分析案例对应的 SQL 语句: 1. 计算每个用户的R、F、M值 ```sql SELECT user_id, DATEDIFF(NOW(), MAX(purchase_time)) AS R, COUNT(*) AS F, SUM(amount) AS M FROM purchase_table GROUP BY user_id; ``` 2. 对R、F、M值进行分组,并计算每个组的平均值标准差 ```sql SELECT CASE WHEN R < 30 THEN '1. 0-30' WHEN R < 60 THEN '2. 31-60' WHEN R < 90 THEN '3. 61-90' ELSE '4. 91+' END AS R_Group, CASE WHEN F < 2 THEN '1. 1-2' WHEN F < 4 THEN '2. 3-4' WHEN F < 6 THEN '3. 5-6' ELSE '4. 7+' END AS F_Group, CASE WHEN M < 100 THEN '1. 0-100' WHEN M < 200 THEN '2. 101-200' WHEN M < 500 THEN '3. 201-500' ELSE '4. 501+' END AS M_Group, COUNT(*) AS user_count, AVG(R) AS avg_R, AVG(F) AS avg_F, AVG(M) AS avg_M, STDDEV(R) AS std_R, STDDEV(F) AS std_F, STDDEV(M) AS std_M FROM (SELECT user_id, DATEDIFF(NOW(), MAX(purchase_time)) AS R, COUNT(*) AS F, SUM(amount) AS M FROM purchase_table GROUP BY user_id) AS RFM GROUP BY R_Group, F_Group, M_Group; ``` 这里的 R_Group、F_Group、M_Group 分别代表 R、F、M 指标的分组,分别将用户的 R、F、M 值分成四组,分别是 0-30、31-60、61-90、91+ 天,1-2、3-4、5-6、7+ 次,0-100、101-200、201-500、501+ 元。可以根据实际业务场景进行适当调整。 通过RFM模型分析,可以对用户进行分类,进而制定更有针对性的营销策略,提高用户忠诚度购买频率,从而提高电商平台的销售额。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值