用户消费行为分析(四)

#学习记录

一、需求分析

二、案例分析(用户分层分析-RFM模型)

看数据集

先构建模型

R:取用户最后一次销售 时间,然后获取相差的天数

#透视表的使用(index相当于groupby,values指取出的数据列,aggfuns中的KEY值必须在VALUES中,才能聚合
rfm=df4.pivot_table(index='顾客编号',
                    values=['销售数量','销售金额','日期'],
                    aggfunc={
                        '日期':'max',#最后一次消费时间
                        '销售数量':'sum',
                        '销售金额':'sum'
                    })

#这里假设今天的日期为2015年05月18日
from datetime import datetime
now = datetime(2015, 5, 18)
#当前时间-每个用户的最后一次购买时间。最后再转换成天数,小数保留一位
rfm['R']=(now-rfm['日期'])/np.timedelta64(1,'D')#取相差的天数,保留一位小数

F:再计算每个用户消费的频次

#计算用户的消费频次
rfm['F']=df4.groupby(by='顾客编号')['顾客编号'].count()

M:计算每个用户消费的总金额

#计算用户消费的总金额
rfm['M']=df4.groupby(by='顾客编号')['销售金额'].sum()

 再分别计算RFM各自的平均值

'''
#计算RFM的平均值
rfm['Rmean']=rfm[['R']].apply(lambda x:x-x.mean())
rfm['Fmean']=rfm[['F']].apply(lambda x:x-x.mean())
rfm['Mmean']=rfm[['M']].apply(lambda x:x-x.mean())

#然后再计算每个值对均值差是否大于0(R-Rmean),  大于0为1   否则就为0
rfm[['R','F','M']].apply(lambda x:x-x.mean())
然后再根据RFM所拼接的110   001  这些来给用户进行分类
则可以简略上面的值平均值
计算呢方式如下
'''
#根据数字拼接,进行用户分类函数
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_func(x)函数
rfm['label']=rfm[['R','F','M']].apply(lambda x:x-x.mean()).apply(rfm_func,axis=1)

客户分类完成后,可以对RFM任意两个值进行可视化,如R-F做的散点图

#客户分层可视化  散点图
for label ,grouped in rfm.groupby('label'):
    print(label,grouped)
    x=grouped['F']
    y=grouped['R']
    plt.scatter(x,y,label=label)
plt.legend()

plt.xlabel('F')
plt.ylabel('R')
plt.tight_layout()
plt.show()

三、RFM模型结论 

由此图可以看出,重要保持客户是占大多数 ,则说明来这里消费的客户的核心能力都是比较强的,但是又不能排除季节性情况,因为该份数据是1-4月份的数据,存在春节用户消费较高阶段,运营策略的还需用其他季节性做AB测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值