音乐网站客户价值分析(基于RFM模型)
本次分析数据来源CDNow网站的用户在1997年1月1日至1998年6月30日期间内购买CD交易明细。并进行RFM模型的K-Means聚类分析并提出运营策略建议。
CDnow背景:94年2月成立,同年9月成为功能完善的音乐零售网站。98年4月被雅虎公认为第一大音乐零售商,但98年10月亚马逊销售额超过CDnow达到1440万美元。 96年引入RealAudio,允许访客在线试听。97年加入雅虎链接,开展广播节目促销,在知名杂志登广告等宣传方式,并在97年末,成为互联网领先音乐电商,市场份额约33%。
数据探索
读取数据
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from datetime import datetime
%matplotlib inline
columns=['user_id','order_time','order_products','order_money']
data=pd.read_table('/share/datasets/cdnow.txt',sep='\s+',names=columns)
data.head()
数据探索
查看前5行数据,每个数据一共4列,分别是用户ID、订单时间、订单产品数、订单金额
data.isnull().sum()
没有空值,数据很干净
data.describe()
可以看到有69659行数据,订单主要是在1997-1998年之间发生的
data.info()
前3列为int类型,最后1列为float类型
数据预处理
数据预处理包括空值处理、重复值处理、异常值处理,数据变换等
np.sum(data.duplicated()) #计算重复值个数
data = data.drop_duplicates(keep = 'first',inplace=False) #删除重复值
data.shape
重复值已删除
expect = data[data['order_money']==0] # 检查异常值:订单金额=0
expect.describe()
判断:金额为0的订单共80个,产品数为1,可能是免费活动,参与免费获得的客户不具有明显价值,需予以剔除。
data=data.drop(index=(data.loc[(data['order_money']==0)].index)) #删除异常值
此时观察到order_time是int型,需要转换为时间格式
data['order_time'] = pd.to_datetime(data['order_time'],format = '%Y%m%d')
data.head()
已成功转换为datetime类型
data.order_time.describe()
查看order_time的描述性统计,可以看到数据集的时间集中在1997年初到1998年中旬; 基于此,将此次观察日期定义为1998年6月30日
RFM的定义:R为最近一次下单时间,F为购买频率,M为最近一次订单金额; 原始数据中还缺最近一次下单时间,现予以补全:
data['order_interval']= pd.to_datetime('1998-06-30')-data['order_time']
data.head()
data.describe()
data['order_interval'] = data['order_interval'].apply(lambda x:x.days) #去掉日期间隔的days
rfm = data.groupby(['user_id'],as_index = False).agg({'order_interval':'min','order_products':'count','order_money':'sum'})
rfm.columns = ['user_id','r','f','m'] #重命名列:最近一次订单r,订单频率f和订单总金额m
rfm.head()
完成所有用户R,F,M的值的计算
rfm.r = (rfm.r -rfm.r.mean(axis=0)) / (rfm.r.std(axis = 0))
rfm.f = (rfm.f -rfm.f.mean(axis=0)) / (rfm.f.std(axis = 0))
rfm.m = (rfm.m -rfm.m.mean(axis=0)) / (rfm.m.std(axis = 0))
完成对R,F,M的值的标准化
rfm.head()
完成所有数据预处理工作
模型构建
客户聚类
采用k-measn聚类算法对客户数据进行客户分群
from sklearn.cluster import KMeans
kmodel = KMeans(n_clusters=4)
kmodel.fit(rfm.loc[:,['r','f','m']])
客户特征分析
kmodel.cluster_centers_ #查看聚类中心
kmodel.labels_ #查看样本对应类别
rfm['labels'] = kmodel.labels_ #将类别列添加到客户RFM表
rfm['labels'] = rfm['labels'].apply(lambda x:x+1) #因为类别默认初始值是0,此处为了便于分析,全部+1
查看各类别客户群人数
label = rfm.groupby('labels')
label['labels'].agg('count')
经过上面的分析,得到了4类客户群体的特征,可根据用户的量级分为4类人群。
第1类人群,占比最多,达67.66%,属于一般客户或低价值客户,该类人群在RFM三个维度上都比较差,传统意义上是最后考虑发展该类客户,但由于在此案例中该类人群占比最多,说明客户整体消费频率与金额都不太理想,需要重新审视产品是否面临问题。
第2类人群,占比次多,达29.38%,属于有潜力的一般客户,这类人群购买新进度、金额和频率都表现一般,考虑其也有一定的群体基础,因此可采取常规性的礼品兑换和赠送、购物社区活动、签到、免运费等手段维持并提升其消费状态。
第3类人群,占比较少,达0.03%,属于重要发展客户,该类人群在三个维度上都较优,表现出已经有一定忠诚度及用户粘性,主要目标是再提升购买频次和金额,可采取交叉销售、个性化推荐、组合优惠券等策略,提升其单词购买的订单金额及促进其重复购买。
第4类人群,占比最少,只有13人,属于忠诚的高价值客户,该类人群表现优异,可以考虑倾斜更多资源来保持该类客户,防止流失,例如设计VIP服务、转向服务、客服绿色通道,提供高价值附加服务的推荐等措施。
总结
整体分析思路
此次分析主要使用RFM模型,依托K-Means聚类完成客户分群,并分析每类的客户特征,从而制定不同的运营策略。RFM模型的应用除此方法外,还可基于明确的业务特征,使用明确的业务数据来界定客户的分群标准。
运营策略优化
除上一节最后针对每个客户群体提到的针对性策略,还可以组建会员体系,明确不同价值的会员享有不同的优惠与权益,提高客户的满意度和忠诚度。 建立新客福利,有利于提升最大基数客群的购物体验,后期可根据第1类人群的聚类中心是否有变化来衡量新客福利的效果。
后续建议
如有更多数据信息,可进行客户流失分析,针对目前的老客户进行分类预测。 可每月运行一次,观察上述运营策略实施后的效果,对新增客户信息通过聚类中心进行判断,同时对本次新增客户的特征进行分析。如果增量数据的实际情况与判断结果差异大,需要业务部门重点关注。
建议使用PC或笔记本电脑,浏览器使用Chrome或FireFox进行浏览,以开启左侧互动实验区来提升学习效率,推荐使用的分辨率为1920x1080或更高。
我们坚信最好的学习是参与其中这一理念,并致力成为中文互联网上体验更好的学练一体的IT技术学习交流平台。

您可加QQ群:575806994,一起学习交流技术,反馈网站使用中遇到问题。
内容、课程、广告等相关合作请扫描右侧二维码添加好友。
狐狸教程 Copyright 2021