python数据分析

简介:本案例以互联网金融行业客户信息为数据,通过-means聚类,对用户划分成不同的群体。

1 RFM模型介绍

根据美国数据库营销研究所Arthur Hughes的研究,客户数据库中有三个神奇的要素,这三个要素构成了数据分析最好的指标,这三个指标分别是:R-最近一次消费(Recency);F-消费频率(Frequency)和M-消费金额(Monetary)。
依据这三个指标将客户分为下面图所示的8个类别。
啊啊啊·
客户分类
R、F、M都很高,重要价值客户(VIP客户)
R、F、M一般居中:一般价值客户
F、M很高,R不高:重要保持客户
R、M很高,F不高:重要发展客户
R、F、M都很低,流失客户
M很高,R、F不高,重要挽留客户

2 RFM聚类分析

以R、F、M这三个核心指标为维度进行聚类分析,利用K-means聚类分析将用户分成8个类别(或者其他个数类别),根据这8个类别的R、F、M指标,对用户进行标注,哪些是重要价值客户,哪些是重要保持客户,哪些是重要发展客户,哪些是流失客户等。

3 案例:互联网金融行业客户价值分析

3.1首先数据源

变量
用户id
首次投资时间
最近一次投资时间
总计投资金额
投标总次数
提数日:2016/7/20

3.2 R、F、M指标计算

指标计算方式
R求出最近一次投资时间距提数日天数
F月均投资次数
M月均投资金额

3.3 操作步骤
本次数据挖掘的主要步骤:

1).数据标准化,这里采用取对数,即Log10进行标准化。
2).利用k-means聚类法将用户分为8个类别。
3).根据这8个类别的R、F、M指标,对用户进行标注,哪些是重要价值客户,哪些是重要保持客户,哪些是重要发展客户,哪些是流失客户等。

** 3.4 数据读取**

import pandas as pd
data=pd.read_excel('RFM聚类分析【样本数据】.xlsx',index_col='用户编码')
data.head()

3.5 数据预处理

#提数日,2016/7/20
from datetime import datetime
exdate_date=datetime(2016,7,20)
#最近一次投资时间距提数日天数
diff_R=exdate_date-data['最近一次投资时间']
diff_R.head()
R=[]
for i in diff_R:
    R.append(i.days)
R[:10]

'''
用户在投时长(月)
python1没有直接获取月数差的
1、用户在投时长(天)
2、月=天/30
'''
diff=exdate_date-data['首次投资时间']
diff.head()
diff[0].days/30
#通过循环获取相差天数,用户在投时长(天)
diff_days=[]
for i in diff:
    diff_days.append(i.days)
diff_days[:10]
#通过循环获取相差天数,用户在投时长(月)
from math import ceil
diff_months=[]
for i in diff_days:
    diff_months.append(ceil(i/30))
diff_months[:10]
#F月均投资次数
F=(data['总计投标总次数']/diff_months).values
F[:10]
#M月均投资金额
M=(data['总计投资总金额']/diff_months).values
M[:10]

3.6 R、F、M聚类分析

from pandas import DataFrame
cdata=DataFrame([R,list(F),list(M)]).T
cdata.index=data.index
cdata.columns=['R-最近一次投资时间距离提数日的天数','F-月均投资次数','M-月均投资金额']
cdata.head()

在这里插入图片描述
3.7 K-Means聚类分析

#数据标准化
zcdata=((cdata-cdata.mean())/cdata.std())
zcdata.head()

在这里插入图片描述

#sklearn
from sklearn.cluster import KMeans
kmode=KMeans(n_clusters=4,n_jobs=4,max_iter=100,random_state=0)
kmode.fit(zcdata)
#统计每个类别的频率
from pandas import Series
Series(kmode.labels_).value_counts()
#将类别标签附会原数据
cdata_rst=pd.concat([cdata,Series(kmode.labels_,index=cdata.index)],axis=1)
cdata_rst.columns=list(cdata.columns)+['类别']
cdata_rst.head()

在这里插入图片描述

#按照类别分组统计R、F、M指标的均值
cdata_rst.groupby(cdata_rst['类别']).mean()

在这里插入图片描述

4 结论

类别0:R、F、M都比较低,属于低价值客户

类别3:R、F、M都比较高,属于重要价值客户

类别1:R不高、F还行、M高,属于重要保持客户

类别2:R还行、F还行、M低,属于一般保持客户

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值