一、用户价值度RFM模型分析
RFM
是一个经典的客户分群模型,含义如下:
R——Recency:
客户最近一次消费时间
F——Frequency:
客户消费的频次
M——Monetary:
消费金额
客户价值类型:
重要价值客户:
RFM3
个值都很高,是平台重点维护的客户
重要保持客户:最近一次消费时间较远,消费金额和消费频 次比较高
重要发展客户:最近有消费,且整体消费金额高,但是购买不频繁
重要挽留客户:消费金额较高,消费频次偏低,而且已经很 久没有消费行为了
一般价值客户:多次频繁购买,但是购买的商品价格都较低
一般保持客户:频繁浏览,但是很久没有成交了
一般发展客户:有近期购买行为,但购买商品利润低而且不 活跃
一般挽留客户:
RFM3
个值都低,已经是流失的客户
根据客户对平台的贡献度的排序是:重要价值客户
>
重要保
持客户
>
重要发展客户
>
重要挽留客户
>
一般价值客户
>
一
般保持客户
>
一般发展客户
>
一般挽留客户
以
2014
年的消费数据为例(其他年份类似) 提取出2014
年的订单数据后,分别添加
F
、
M
、
R
三个维度的数 据列,然后再分别对三个维度划定评级,添加三个列,并将每条记录的三个维度的评分进行0
、
1
标记(大于平均分记为
1
,小于平均分的记为0
),最后对每个客户进行价值类型标记;对
不同价值的客户类型进行占比分析
#用户价值度RFM模型分析
rfm = df.pivot_table(index='Customer_ID',
values = ["Quantity","Sales","Order_Date"],
aggfunc={"Quantity":"sum","Sales":"sum","Order_Date":"max"})
# 所有用户最大的交易日期为标准,求每笔交易的时间间隔即为R
rfm['R'] = (rfm.Order_Date.max() - rfm.Order_Date)/np.timedelta64(1,'D')
# 每个客户的总销量即为F,总销售额即为M
rfm.rename(columns={'Quantity':'F','Sales':'M'},inplace = True)
# 基于平均值做比较,超过均值为1,否则为0
rfm[['R','F','M']].apply(lambda x:x-x.mean())
def rfm_func(x):
level =x.apply(lambda x:'1'if x>0 else '0')
level =level.R +level.F +level.M
d = {
"111":"重要价值客户",
"011":"重要保持客户",
"101":"重要挽留客户",
"001":"重要发展客户",
"110":"一般价值客户",
"010":"一般保持客户",
"100":"一般挽留客户",
"000":"一般发展客户"
}
result = d[level]
return result
rfm['label']= rfm[['R','F','M']].apply(lambda x:x-x.mean()).apply(rfm_func,axis =1)
rfm["label"].value_counts().plot(kind='pie', autopct='%.2f%%', shadow=True, figsize=(14, 6))
由上面的分析可知:对于该超市来说,重要价值客户和重要保持客户的总和已经超过45%
;但是一般发展客户的比例也很 高,这种客户很可能是刚注册的客户或者接近流失的客户,针对刚注册的用户可以采取各种新人优惠福利,提高新客户了解平台的动力,针对接近流失的客户应该追溯客户过去不满的原因,对平台进一步完善。
二、客户群体与产品种类的关系分析
通过客户群体类别(
Segment
字段)与产品类别(
Category
字段)分组,对销售额数据进行分析
#客户群体与产品种类的关系分析
Segment_category= df.groupby(['Segment','Category']).agg({'Sales':'sum'}).reset_index()
sns.barplot(x='Segment', y='Sales', hue='Category', data = Segment_category)
plt.title('不同类型的客户每年的销售额')
plt.show
通过上图展示的结果可以看出,不同客户群体对各种产品的消费额次序由高到低是: 科技产品(Technology
)
>
家具产品 (Furniture
)
>
办公用品产品(
Office Supplies
)。因此,可以
加大对科技产品的推广;在三种客户类型中,个人消费者 (Consumer
)对各种产品的消费都是最高的,因此,可以保 持对个人消费者群体的策略;而居家办公群体(Home Office)在三种产品的销售额较低,可以针对该用户群体进行更好的营销推广
三、发货时间与发货成本分析
提取发货日期字段
(Ship Date
字段
)
的年、月信息,并整理发货 年、发货月的销售总额,分析发货成本,并预测进货成本
#发货时间与发货成本分析
df['Ship_Date'] = pd.to_datetime(df['Ship_Date'])
df['Year'] = df['Ship_Date'].dt.year
df['Month'] = df['Ship_Date'].dt.month
# 整理发货年、发货月的销售总额
sales_summary = df.groupby(['Year', 'Month'])['Sales'].sum().reset_index()
# 分析发货成本
shipping_cost_summary = df.groupby(['Year', 'Month'])['Shipping_Cost'].sum().reset_index()
shipping_cost_pivot = shipping_cost_summary.pivot(index='Month', columns='Year', values='Shipping_Cost')
# 绘制折线图
plt.figure(figsize=(10, 6))
for year, data in shipping_cost_pivot.iteritems():
plt.plot(data.index, data.values, marker='o', label=f'Year {year}')
plt.xlabel('Ship Month')
plt.ylabel('Shipping Cost')
plt.title('发货时间与发货成本的关系')
plt.legend()
plt.grid(True)
plt.show()
由上面的透视表和折线图可以看出,
2011-2014
年的发货成本逐年上升,而且每年的各个月份的发货成本也呈上升趋势;但是,2015
年出现了新的情况!
2015
年只有
7
个月的统计数据,但是这7
个月的发货成本逐月降低,而且远远小于前
4
年的发货成本,这很可能是由于2015
年物流业的飞速发展使得发货成本 大大降低,所以,之后的进货成本也极有可能大大降低!