【大数据实训日记】Day13 超市电商数据分析

一、用户价值度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 年物流业的飞速发展使得发货成本 大大降低,所以,之后的进货成本也极有可能大大降低!
  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值