uni开发中可以用table标签么_案例:用RFM模型划分为八类价值用户(python_023)

7ff11c08c69cb3974bbc7c760577a485.png

数据还是前文中的数据,这次换一种方式来打标签,通过pandas的pivot_table(数据透视表)方法,结合自定义函数的方式来直接整理RFM模型数据,将用户划分为8个类别。

4d3bc800c6e6bad79530b87375d46f0e.png

一、数据概况

  • 特征变量数:4个。用户ID、订单日期、订单ID、订单金额
  • 数据记录数:86135
  • 是否有NA值:有
  • 是否有异常值:有

64832ca7a108ef0a28a15a580a2893a8.png
  • USERID: 用户ID,每个用户的ID唯一,由纯数字组成
  • ORDERDATE: 订单日期,格式为YYYY/MM/DD
  • ORDERID: 订单ID,每个订单的ID唯一,由纯数字组成
  • AMOUNTINFO: 订单金额,浮点型数据

数据下载链接:https://pan.baidu.com/s/1EQODFE3Y96hEcCfmzUezgw 密码:rz4r

二、用RFM模型将用户分成8类,并打标签

经过上文(萧萧:案例:用python实现RFM用户价值度分层(python022))中的数据预处理:删除空值、去掉极小值、数据变换后,得到sales_data,如下:

f243e2992f316b2e9d2039b40938f681.png

接着,通过pandas的pivot_table(数据透视表)方法来直接整理RFM模型数据。

#数值转换
df = sales_data.reset_index().copy()
df['month'] = df['ORDERDATE'].astype('datetime64[M]')

# 用数据透视表提取rfm
rfm = df.pivot_table(index=['month','USERID'],
                    values=['Amount','ORDERDATE','Orders'],
                    aggfunc={'ORDERDATE':'max',
                            'Amount':'sum',
                            'Orders':'sum'})

# 将最近一次消费时间转换成“距今长度”(本例用最后一个消费记录时间)
rfm['R'] = (rfm.ORDERDATE.max()-rfm.ORDERDATE).dt.days

#重命名列名
rfm.rename(columns={'Amount':'M','Orders':'F'},inplace=True)
rfm.head()

965be25b1631eed08355abd297651129.png

先求R,F,M与平均值的差,将>1的数据负值为‘1’,<=1赋值为‘0’。这个过程分别将三个维度的数据人工地分为两部分。接着将RFM三个值组合拼接,得到8个数值:111、011、101、110、001、010、100、000;再将8个数值赋值为8类标签。按照金额大小负值为一般客户与重要客户;按照消费频率和消费次数区分为价值客户、保持客户、发展客户和挽留客户。

# 求R、F、M与平均值的差
#rfm[['R','F','M']].apply(lambda x:x-x.mean())

# 对用户分类,设置标签
def rfm_func(x):
    level = x.apply(lambda x: "1" if x >= 1 else '0')
    label = level.R + level.F + level.M
    d = {
        '111':'重要价值客户',
        '011':'重要保持客户',
        '101':'重要发展客户',
        '001':'重要挽留客户',
        '110':'一般价值客户',
        '010':'一般保持客户',
        '100':'一般发展客户',
        '000':'一般挽留客户'
    }
    result = d[label]
    return result

rfm['label'] = rfm[['R','F','M']].apply(lambda x:x-x.mean()).apply(rfm_func,axis=1)
rfm.groupby('label').count()

a5809f43970d40cc624d53d5859e1c07.png

三、可视化

rfm.label.value_counts().plot.bar(figsize=(10,4))
plt.xticks(rotation=0)

c3a880fd7496d8905610dace609a33b1.png

再这八类用户中,重要挽留客户、一般挽留客户、重要价值客户可一般价值客户需要重点关注,是运营和营销活动的主要对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值