基于RFM的精细化用户管理
1.案例背景
对用户进行分组可以更好的了解用户价值。本案例使用某企业四年的家电订单数据,使用RFM模型对用户进行分组,基于业务部门的用户分群需求,我们计划将RFM的3个维度分别作3个区间的离散化,这样出来的用户群体最大有27个。
从交付结果看,给业务部门做的分析结果都要导出成Excel文件,用于做后续分析和二次加工使用。另外,RFM的结果还会供其他模型的建模使用,RFM本身的结果可以作为新的局部性特征,因此数据的输出需要有本地文件和写数据库两种方式。
本节案例选择了4年的订单数据,这样可以从不同的年份对比不同时间下各个分组的绝对值变化情况,方便了解会员的波动。本节案例的输入源数据sales.xlsx,程序输出RFM得分数据写入本地文件sales_rfm_score.xlsx。
数据链接:数据源
提取码:zdxx
2.案例主要应用技术
本案例使用的库包括time、numpy和pandas,使用sklean中的随机森林计算特征重要性,使用excel对结果进行展示。
3. 案例数据
案例数据是某企业从2015年到2018年共4年的用户订单抽样数据。Excel中包含5个sheet,前4个sheet分别为每年的数据,最后一张会员等级表为用户的等级表。
前4张表所含字段如下:
特征变量 | 描述 |
---|---|
会员ID | 每个会员的ID唯一,纯数字 |
提交日期 | 订单日提交日期,日期 |
订单号 | 订单ID,每个订单的ID唯一,纯数字 |
订单金额 | 订单金额,浮点型数据 |
会员等级表中是所有会员的会员ID对应会员等级的情况,包括以下两个字段:
特征变量 | 描述 |
---|---|
会员ID | 每个会员的ID唯一,纯数字 |
会员等级 | 会员等级以数字区分,数字越大,级别越高 |
4.案例过程
(1)导入库和读取数据
# 导入库
import time
import numpy as np
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
# 读取数据
sheet_name = ['2015', '2016', '2017', '2018', '会员等级']
sheet_datas = [pd.read_excel('sales.xlsx',sheet_name=i) for i in sheet_name]
(2)描述性分析
#对表格数据做显示,以审查一下我们的数据是否有误
for each_name,each_data in zip(sheet_names,sheet_datas):
print('[data summary for {0:=^50}]'.format(each_name))
print('Overview:','\n',each_data.head(4))
print('DESC:','\n',each_data.describe())
print('NA records',each_data.isnull().any(axis=1).sum())
print('Dtypes',each_data.dtypes)
[data summary for =======================2015=======================]
Overview:
会员ID 订单号 提交日期 订单金额
0 15278002468 3000304681 2015-01-01 499.0
1 39236378972 3000305791 2015-01-01 2588.0
2 38722039578 3000641787 2015-01-01 498.0
3 11049640063 3000798913 2015-01-01 1572.0
DESC:
会员ID 订单号 订单金额
count 3.077400e+04 3.077400e+04 30774.000000
mean 2.918779e+10 4.020414e+09 960.991161
std 1.385333e+10 2.630510e+08 2068.107231
min 2.670000e+02 3.000305e+09 0.500000
25% 1.944122e+10 3.885510e+09 59.000000
50% 3.746545e+10 4.117491e+09 139.000000
75% 3.923593e+10 4.234882e+09 899.000000
max 3.954613e+10 4.282025e+09 111750.000000
NA records 0
Dtypes 会员ID int64
订单号 int64
提交日期 datetime64[ns]
订单金额 float64
dtype: object
[data summary for =======================2016=======================]
Overview:
会员ID 订单号 提交日期 订单金额
0 392881201