1. 分析背景作者:Dake
这是一份某电商平台的销售数据,数据包含2010年4月22到2014年7月24的销售数据。分析该销售数据,可以发现客户价值。
现利用KMeans聚类实现LRFM模型来分析客户的价值,便于客户分群,针对性推广,提高销售额。
LRFM模型定义:
L:会员创建日期距离距离2014年7月25的时间间隔(单位:月 )
R:会员最近一次购买时间距离2014年7月25的时间间隔(单位:月 )
F:会员购买次数
M:会员的总购买金额
importnumpyasnp
importpandasaspd
importmatplotlib.pyplotasplt
fromsklearnimportpreprocessing
fromdatetimeimportdatetime
fromsklearn.clusterimportKMeans
plt.rcParams['font.sans-serif']='SimHei'
%matplotlibinline
#读取数据
df=pd.read_csv(r'C:/Users/Administrator/Desktop/RFM分析1.csv',
engine='python')
#查看行列
df.shape
输出:
从图可以看出这里的数据只有class2有缺失值,这里暂时不用提取这个指标,暂不清洗。
这里销售金额为负数的情况,数据清洗的时候得把这些异常值过滤。
#销售金额有小于等于0的,直接过滤掉
#这里有22542条数据
data=df[df['销售金额']>0]
data.shape
输出:
data['会员创建日期']=pd.to_datetime(data['会员创建日期'])
data['销售日期']=pd.to_datetime(data['销售日期'])
#查看是否转换成功
data.info()
输出:
L = 相对日期(这里我指定:2014年7月25) - 会员创建日期
R = 相对日期(这里我指定:2014年7月25) - 最晚(大)的销售日期
F = 用户购买的次数(这里针对流水号进行计数不同)
M = 用户购买的汇总金额
代买实现:
#计算L,再转换成月,这里转换成月,直接除于30天,保留两位小数
#L是最早的购买日期距离会员创建日期
data1=data.groupby('UseId').agg({'会员创建日期':['min'],
'销售日期':['min','max'],
'销售金额':['sum'],
'流水号':['nunique']})
data1
输出:
删除一层列名,并重新进行命名:
#删除第一层的列名
data1.columns=[col[1]forcolindata1.columns]
#重新命名列名
data1.columns=['会员创建日期','最早销售日期','最晚销售日期','M','F']
data1
输出:
M、F指标已经构建完成。5.2 购买L、R指标
#先计算L,R,再转化成单位月
data1['L']=datetime.strptime('2014-7-25','%Y-%m-%d')-data1['会员创建日期']
data1['R']=datetime.strptime('2014-7-25','%Y-%m-%d')-data1['最晚销售日期']
#将L、R转换成月做为单位
data1['L']=data1['L'].apply(lambdax:round(x.days/30,3))
data1['R']=data1['R'].apply(lambdax:round(x.days/30,3))
data1
输出结果:
提取有用的指标:
LRFM_data=data1[['L','R','F','M']]
6. 进行L、R、F、M数据的Z-Score转换
ss=preprocessing.StandardScaler()
ss_LRFM_data=ss.fit_transform(LRFM_data)
ss_LRFM_data
输出:
#n_clusters聚类的个数
kmodel=KMeans(n_clusters=5,n_jobs=4)
kmodel.fit(ss_LRFM_data)
#查看聚类中心
kmodel.cluster_centers_
输出:
将结果转成Dataframe
client_level=pd.Dataframe(kmodel.cluster_centers_,
index=['客户群1','客户群2','客户群3','客户群4','客户群5'],
columns=['L','R','F','M'])
client_level
输出:
L越大,代表注册会员时间距离指定时间(2014年7月25)越长,代表老客户,该指标越大越好。
R越小,代表购买时间距离指定时间(2014年7月25)越短,R越小越好。
F越大,代表会员的购买次数越多。
M越大,代表会员购买的金额越多。
客户群1分析:
L大,R小,F大,M较大,这里判断是重要发展客户。
客户群2分析:
L大,R大,F小,M较小,这里判断是重要挽留客户。
客户群3分析:
L小,R小,F小,M小,这里判断是低价值客户。
客户群4分析:
L大,R大,F小,M小,这里判断是一般价值客户。
客户群5分析:
L大,R小,F大,M大,这里判断是重要保持客户。
猜你喜欢:
数据分析实战:母婴商品分析
《吊打分析师》实战—我要租个好房
简单的Excel数据分析案例
为什么要学统计学:**的统计学
成为数据分析师的第三年,我写了10W字
@ 号主:可乐
@ 公众号/知乎专栏/头条/简书:可乐的数据分析之路
@ 个人微信:data_cola
以上就是关于Python实现LRFM模型分析客户价值沮授字什么全部的内容,关注我们,带您了解更多相关内容。
特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。