化妆品电商平台数据分析报告

发布于:2022-12-26 ⋅ 阅读:(234) ⋅ 点赞:(0)

  • 分析目标:描述该平台在用户以及用户在产品消费上的现状定位,找到该平台目前的核心优势或是亟待解决的核心问题,提供下一步发展最核心有效的方向和相应建议

  • 分析对象:国外某中型to c 化妆品在线商店

  • 数据来源:https://www.kaggle.com/mkechinov/ecommerce-events-history-in-cosmetics-shop

  • 数据描述:数据包括该中型化妆品在线商店的5个月(2019年10月至2020年2月)共2000万条用户行为数据,包括浏览、加购、移出购物车、购买下单行为分类,以及行为发生时间、对象产品、产品分类、品牌等

  • 分析方法:AARRR海盗模型,RFM用户分层模型,对比与时间序列分析、漏斗与流程分析

  • 数据处理使用工具:

    • 考虑总体数据数据量极大,总体数据的清洗及部分分析在python3平台上完成

    • 提取典型性数据(12月数据)至MySQL平台提取所需分析数据

    • PowerBI及Tableau产出可视化图表

  • 分析结构:

  • 分析结论概览:

    • 平台新用户占比巨大却未有效转化,新用户留存策略亟待提高

    • 平台用户结构不稳定,受短期流量用户影响大,需采取针对性策略留存新用户、稳定和提升价值

    • 用户加购及购物车存留商品基本代表用户消费倾向

    • 平台推荐浏览流量与下单品牌有部分错位,需优化产品推荐机制基于加购商品关联推荐,吸引用户浏览和加购

    • 加购商品 存留时长在1日左右下单概率最高,时长增加下单频次减低,应尽量缩短1日 购物车商品留存时间间隔,提高加购-购买转化率

一、数据情况和预处理

1、字段含义

event_time

事件发生的时间(以 标准世界时 UTC 为单位)

event_type

  • view- 查看产品

  • cart- 将产品添加到购物车

  • remove_from_cart- 从购物车中删除了产品

  • purchase- 购买了产品

product_id

产品ID标识

category_id

商品类别 ID

category_code

产品的类别分类(代号)。通常用于有意义的类别,而对于不同类型的配件则跳过。

brand

品牌名称的缩写字符串。可以错过。

price

浮动价格,产品的当前价格

user_id

永久用户 ID。

** user_session**

用户的临时会话 ID。每个用户的会话相同。每次用户从长时间的暂停中返回在线商店时都会更改。

2、处理数据

1、读取转换:python读取5个月csv表的数据并进行拼接,最终合成为 20692840行, 9个字段的数据,数据量非常庞大。

2、列名重命名:将字段名按字段解释改为对应中文名

3、整体去重:删除各列都重复的数据,去重后数据量是19583742条

4、缺失值:统计数据缺失情况,产品类别分类、品牌、临时用户会话id存在缺失值。

    • 产品类别 ID基本代表了产品类别,产品类别分类的缺失并不影响分类定义

    • 品牌缺失不影响用户部分分析,在后续分出产品表时进行填充和去重处理

    • 临时会话id对数据并无影响,可以忽略。

5、异常值:通过Matplotlib箱线图查看数据总体是否有异常值,结果基本无异常。

      单独查看价格情况,购买行为中价格记录存在负值(统计共124条),应为退款情况,将此部分记录筛选去除

6、时间类型处理:时间字段类型读取后为字符串类型,去除结尾'UTC',将之转换为时间对象

import time 
transform_date = data['时间'].apply(lambda x:x.split('UTC')[0]) 
data['时间'] = transform_date.apply(lambda x:x.strip(' ')) 
data['时间'] = pd.to_datetime(data['时间'])

提取年月、日、周、小时等数据方便后续进行分析

data['年月'] = data['时间'].dt.strftime('%Y-%m') 
data['日'] = data['时间'].dt.day 
data['周'] = data['时间'].dt.weekday 
data['日期'] = data['时间'].dt.date 
data['小时'] = data['时间'].dt.hour 
# 按日期升序排列 
data = data.sort_values(by = ['时间']) 
data.head()

7、重排索引:清洗完成后按时间排序重建data数据索引

3、分表分库:

  • 事件类型表:数据的四种事件类型:浏览、加入购物车、移出购物车、购买,主表对应修改为类型编号:1、2 、3、4

导入MySQL中event_type表

#类别文本转数值,文本转为字符串再替换为数值 
data['事件类型'] = data['事件类型'].astype('str') 
data['事件类型'].replace({'view':1,'cart':2,'remove_from_cart':3,'purchase':4},inplace=True)

  • 产品表:提取产品相关的字段形成产品表数据,主表保留产品Id字段与产品表相连

product = data[['产品编号','产品类别id','产品类别分类','品牌']] product.drop_duplicates(inplace=True) product.shape

产品表简单去重后,共56085行,4个字段,统计产品编号去重数量54571,因此其中包含有部分字段重复的数据,需去重。产品表数据量相对不大,因此导入MySQL提取去重

提取产品表中仅因品牌字段缺失而产生多条记录的数据,共12263条

创建中间表去除品牌缺失重复数据

CREATE TABLE product1 AS 
SELECT * 
FROM product 
WHERE `index` NOT IN ( 
    SELECT a.`index` 
    FROM product1 a,product1 b 
    WHERE a.`品牌` is null 
        AND a.`产品编号`= b.`产品编号` 
        AND a.`产品类别id`=b.`产品类别id` 
        AND a.index<>b.index)

中间表仍有43822条数据,为同一产品id但分类id有不同情况的,以产品id分组,创建新表,得到完全去重后的产品表

  • 主表:提取分析相关字段:时间、事件类型、产品编号、价格、用户id、年月、日、周、日期、小时,作为主表

  • 支付表和浏览表:提取对应事件类型和相应字段的数据

  • 导出12月主表到SQL具体分析

二、总体指标

通过支付表和浏览表,计算5个月的月UV、PV、GMV、购买用户以及客单价

在平台5个月近半年的数据中:

  • 销售量:

    • GMV与购买用户数变化趋势一致,12月明显下降,11月及次年1月均有抬升,月平均GMV达125万美元,购买用户25万

    • 客单价稳定,平均客单价4.95美元

  • 访问量:

    • PV(访问量)变化趋势与销售趋势一致,UV(访客数)趋势稳定,月平均PV约为190万次,UV为37万用户访问

  • 异常趋势:

    • 在浏览流量和销售情况中都可以明显看到12月成为一个低谷,但12月中节日集中,有元旦、圣诞等重大节日,对平台主营品类化妆品来说,赠礼及自用需求预期都该是比其他月高的,因此12月PV,UV,GMV都出现低谷情况显得比较异常,因此提取该月数据具体分析

三、用户运营

1、用户跳失率、付费率、复购率

        跳失率=只点击一次浏览的用户数量/总访问用户量

        付费率=购买下单的用户数量/总用户量

        复购率=有购买行为天数为2天以上的用户数量/购买用户数

SELECT COUNT(`用户id`) as '仅浏览一次用户量' 
FROM ( 
    SELECT `用户id` 
    FROM `order_nev` 
    WHERE `事件类型`=1 
    GROUP BY `用户id` 
    HAVING COUNT(*)=1
     ) T1
SELECT COUNT(*) as '复购用户' 
FROM ( 
    SELECT `用户id`,COUNT(`日`) as buy_days 
    FROM ( 
        SELECT `用户id`,`日`,COUNT(*) 
        FROM `order_nev` 
        WHERE `事件类型`=4 
        GROUP BY `用户id`,`日`
         ) T1 
    GROUP BY `用户id` 
    HAVING buy_days>1
     ) T2

结论:

        跳失率高达51.13%,说明半数用户是仅浏览了一次的用户, 平台的用户留存问题非常严重。

        平台用户付费率仅接近7%,比例较小,相当于15个用户中仅有1个下单购买

        购买用户的复购率8.69%,也相对偏低。

       平台对新用户留存、浏览用户转化购买用户、购买用户复购环节的强度都较低,在商品推荐、信息推送等可能存在较大问题

2、独立访客漏斗模型计算

CREATE TABLE analysis_total_userdata AS 
SELECT `事件类型`,COUNT(DISTINCT `用户id`) as 用户量 
FROM `order_nev` 
GROUP BY `事件类型`

图中百分比为行为用户数占总用户数的比例

3、用户各行为转化率

       转化率:整体转化率可以由行为发生次数计算或者行为人数计算。计算行为发生次数的话,可能存在同一个用户单日登录后有大量浏览行为,只有一次购买行为的情况发生,要计算全月整体转化率,浏览行为数量是庞大的,在月度的尺度下转化比率会非常大,并不利于情况分析参考。因此使用人数计算转化率,看平台用户群在浏览-加购(购买意向)-购买环节中的转化情况。

结论:

  1. 根据转化率漏斗图,浏览-加入购物车的转化率偏低,只有23.3%,说明当月大于四分之三的用户在浏览商品后并没有加入购物车,没有产生购买意愿。在浏览-加入购物车过程中,环节可能产生错位的有:

    • 平台引流推荐的商品不够吸引用户,与用户偏好拟合度不够

    • 商品详情页等未能成功使用户产生消费

需要进一步查看在浏览-加入购物车过程中,到底在哪一部分使得用户放弃了加入购物车。

  1. 根据用户行为独立用户图,用户移除/购买的占比基本接近加入购物车的占比,可以看到大部分用户是习惯了将留存在购物车中的商品下单的,购物车最终留存商品可能直接体现用户的下单对象。

  2. 加购-下单的转化率是30.7%,加入购物车用户与移出购物车用户比率为1: 0.54,用户在这一步移出购物车的原因是什么?是因为价格敏感还是距离加入时时间过长忘记而购买意愿失效?此过程转化率如能针对性提高,将达到四两拨千斤的效果

 4、RFM 用户分层

取全部5个月数据在python上计算RFM分层

  • R-最近购买时间

# 计算最大交易日期得出最后交易日期 
last_date = max(pay['时间']) 
# 计算最后交易日期和当前交易日期之间的差异 
pay['diff'] = last_date - pay['时间'] 
# 计算最后交易距离天数
RFM_R = pay.groupby('用户id')['diff'].min().reset_index() 
RFM_R['diff'] = RFM_R['diff'].dt.days
  • F-消费频率

RFM_F = pay.groupby('用户id')['时间'].count().reset_index()
  • F-消费总金额

RFM_M = pay.groupby('用户id')['价格'].sum().reset_index()

组合为用户RFM数据集

用StandardScaler方法对数据标准化,转化为均值为0,方差为1的正态分布

train = RFM[['R','F','M']] 
s = StandardScaler() 
train = s.fit_transform(train) 
train = pd.DataFrame(train) 
train.columns = ['R','F','M']

尝试通过KMeans聚类,k=8分层后实际汇聚数群类型为四类,不能满足RFM的八个分层,因此将标准化模型直接比对对应维度均值,得到对应分层

def rfm_func(x):
     level = x.apply(lambda x:"1" if x > 0 else '0')
     label = level.R + level.F + level.M
     d = {
         '111': '重要价值客户',
         '110': '潜力客户',
         '101': '重要发展客户',
         '100': '新进客户',
         '011': '重要保持客户',
         '010': '一般保持客户',
         '001': '重要挽留客户',
         '000': '一般挽留客户'
     }
     result = d[label]
     return result train['label'] = train[['R','F','M']].apply(lambda x:x-x.mean()).apply(rfm_func,axis=1)

将分层标签连接到用户RFM数据,得到用户-RFM分层表,方便后续运营参考指定不同客户对应策略。统计得到各层客户量,到Tableau制分层占比图

结论:

  • 可以看到平台新进用户占比最大,超过三分之一的客户都是流失客户,都是RFM都低的用户,这部分用户激活难度和成本高,继续投入成本激活性价比不大。这样的用户占比如此高,是对平台运营的严重预警,说明平台在该半年中用户留存策略存在严重问题

  • 占比第二,接近十分之三的用户都是仅最近登录,但消费频率和金额都不高的群体,这也符合前面跳失率等的分析。这意味着极大占比的用户是仅引流进来但未得到消费开发的,平台必须在新客转化上下功课(试用、前三单优惠等),将这部分庞大的用户量转变为价值用户

  • 后续占比较高的是重要价值用户、重要保持用户、一般保持用户,都是消费频率都较高的用户群体,总计占比25.32%,相当于四分之一的用户量,说明平台在已留存用户上是存在优势的,需要根据用户分层采取对应策略,保持或提升该部分用户价值

四、产品

1、不同销售频率商品的数量

CREATE OR REPLACE VIEW product_sale AS
SELECT times, COUNT(`产品编号`) as num 
FROM ( 
    SELECT `产品编号`, COUNT(*) as times 
    FROM `order_nev` 
    WHERE `事件类型`=4 GROUP BY `产品编号`
     ) T1 
GROUP BY times 
ORDER BY num DESC

结论:

商品中总计88.2%的商品购买频率在1-5次,说明平台商品销售主要依靠长尾商品的累积效应,而非爆款商品的带动。

2、用户浏览、加购与用户实际下单品牌对比

分别取出用户对品牌的浏览量、加购量、下单量

CREATE OR REPLACE VIEW brand_view AS 
SELECT `品牌`,COUNT(*) as 浏览量 
FROM order_nev 
LEFT JOIN product USING(`产品编号`) 
WHERE `事件类型`=1 AND `品牌` is NOT NULL 
GROUP BY `品牌` 
ORDER BY `浏览量` DESC

     以品牌浏览量做树形图,图块大小为品牌的浏览量占比,将下单购买量作为颜色区分,标签为:品牌名、浏览量排名、购买量排名。品牌加购-购买量图同理

结论:

  • 品牌加购图中能看出颜色与大小基本均匀一致,加购排序与购买排序基本一致,说明加购基本能够体现消费者下单倾向,后续对消费者的产品推荐基于加购商品准确率的性价比是比较高的

  • 相比之下,品牌浏览图中颜色相对大小分布不均匀,浏览排序与购买排序有较多错位,说明品牌浏览与下单购买出现了错位,电商平台浏览量一般代表着平台推荐和流量位的分布,与用户购买下单出现了错位,说明部分平台流量推荐位没有很好的转化为实际销量

3.加购-购买时间间隔频次

统计同用户同一商品,加入购物车到下单购买时间间隔,按间隔进行计数

CREATE TABLE cart_pay_day AS 
SELECT *, 
    CASE 
        WHEN diff<60 THEN '1小时内' 
        WHEN diff<180 THEN '3小时内' 
        WHEN diff<1440 THEN '1日内' 
        WHEN diff<4320 THEN '3日内' 
        WHEN diff<10080 THEN '1周内' 
    ELSE 
        '1周以上' 
    END as time_interval 
FROM (   
    SELECT *,TIMESTAMPDIFF(MINUTE,cart_time,pay_time) as diff   
    FROM user_cart   INNER JOIN user_pay USING(`用户id`,`产品编号`)
    WHERE TIMESTAMPDIFF(MINUTE,cart_time,pay_time)>0
    ORDER BY `用户id`,`产品编号`,diff
     ) AS cart_pay;
SELECT time_interval,COUNT(*) as pay_num 
FROM `cart_drop_day` 
GROUP BY time_interval 
ORDER BY pay_num DESC

结论:

  • 时间间隔长度与成单的频次基本成反比,时间间隔平均数为24.2小时,就是约一天,用户将商品加入购物车后,一天内下单的频次占比是最高的,共计81.5%,后续会逐渐减小

  • 应重视购物车商品留存时间,尽量缩短时间间隔,提高加购-购买转化率。建议通过运营策略,如对加入购物车1~3日内商品给予优惠福利并及时推送用户,对购物车留存1日以上商品及时推送优惠变动给用户,提醒用户

五、结论与策略建议

  • 平台新用户占比巨大却未有效转化,新用户留存策略亟待提高

    • 平台接近十分之三的用户是新用户,全部浏览用户有51%的跳失率,大量的新用户来了即走,浏览频率和购买的转化率都非常低,新用户流量没有得到有效转化

    • 需要优化新用户体验,结合平台主营品类,通过化妆品小样免费试用、实力品牌场前三单优惠折扣、连续签到领取抽取正装试用等运营策略,转化新用户为留存用户

  • 平台用户结构不稳定,受短期流量用户影响大,需采取针对性策略留存新用户、稳定和提升价值用户

    • 51%的跳失率下是占比较高的流失用户和新用户,都是消费频率和金额都很低的短期流量用户,没有有效转化用户价值,极大影响了平台用户结构

    • 根据RFM分层表策略建议对不同阶段用户采取针对性的运营策略,增加平台存量价值用户占比,稳固用户结构,保证健康发展

    • 存量用户结构稳定,价值高,需保持和进一步提高,如完善的会员和积分体系等

    • 低价值已流失用户(RFM值均低的),建议不再投入过多成本激活

  • 用户加购及购物车存留商品基本代表用户消费倾向

    • 在独立行为数据中可以看到购物车留存商品基本等同最终购买商品,

    • 产品推荐机制应优化,吸引用户浏览和购买

      • 整体浏览流量与销售趋势是一致的,但浏览到加购转化率较低,浏览品牌与下单品牌产生错位,加购品牌基本反映用户下单品牌

      • 平台推荐商品或品牌应基于用户加购商品关联推荐,精准推荐,吸引用户浏览和加购

    • 应尽量缩短1日后购物车商品留存时间间隔,提高加购-购买转化率

      • 加购商品存留时长在1日左右下单概率最高,时长增加下单频次减低

      • 建议通过运营策略,对购物车留存1日以上商品及时推送优惠变动给用户,提醒用户。对加入购物车1日左右商品投入较多运营成本给予优惠福利


网站公告

今日签到

点亮在社区的每一天
去签到