基于订单交易的价值模型更加适用于销售型公司的运营需求。针对交易数据分析的常用模型是RFM模型。使用的库包括time、numpy和pandas。在实现RFM组合时,我们使用sklearn的随机森林库来计算RFM的权重,在结果展示的时候主要使用Excel的可视化图表方式。
- 读取数据
常用的python库有: pandas:数据处理 numpy:数据处理 sklearn:模型训练
sheet_name = ['2015','2016','2017','2018','会员等级']
sheet_datas = [pd.read_excel('./sales.xlsx',sheet_name=i) for i in sheet_names]
- 数据审查
format:填充和对齐^<>分别表示居中、左对齐、右对齐,后面带宽度. 举例:print(“{0:=^15}”.format(2015))
for each_name, each_data in zip(sheet_name, sheet_datas):
... print("data summary for {0:^=15}".format(each_name))
... print("overview", "\n", each_data.head(4))
... print("DESC:", "\n", each_data.describe())
... print("NA records", each_data.isnull().any(axis=1).sum())
... print("Dtypes", each_data.dtypes)
- 数据预处理
去除缺失值和异常值
for ind, each_data in enumerate(sheet_datas[:-1]):
... sheet_datas[ind] = each_data.dropna()
... sheet_datas[ind] = each_data[each_data['订单金额']>1]
... sheet_datas[ind]['max_year_date'] = each_data['提交日期'].max()
- 获取RFM值
data_merge['data_interval'] = data_merge['max_year_date'] - data_merge['提交日期']
data_merge['year'] = data_merge['提交日期'].dt.year
data_merge.head(4)
data_merge['date_interval'] = data_merge['data_interval'].apply(lambda x: x.days)
rfm_gb = data_merge.groupby(['year','会员ID'], as_index=False).agg({'date_interval':'min','提交日期':'count','订单金额':'sum'})
rfm_gb.head(4)
rfm_gb.columns = ['year','会员ID','r','f','m']
desc.pd = rfm.gb.iloc[:,2:].describe().T
|