电商平台数据分析是最为典型的一个数据分析赛道,且电商数据分析有着比较成熟的数据分析模型,比如:人货场模型。此文中我将通过分析国内最大的电商平台——淘宝的用户行为,来巩固数据分析技能以及思维。通过分析用户行为,以此来实现精准营销,总结现有问题,获得业务增长。
数据源:阿里云天池数据集
该数据集包含了2017年11月25日至2017年12月3日之间,有行为的约一百万随机用户的所有行为(行为包括点击、购买、加购、喜欢)。
数据分析的关键是指标体系的建立,从什么角度着手去达成数据分析的目的,在此次数据分析中,是对淘宝用户行为进行一个分析,而在电商用户行为分析中最常用的是“人货场”模型,人:即用户角度;货:即商品角度;场:即卖场,电商平台指标体系角度。
电商指标体系维度可以参见一些常见的指标:流量(包括总体流量,每日流量,每时流量),流量漏斗转换,复购率,跳失率。然后下面对每一个概念进行解释:
知识点1:衡量流量的指标为UV,PV,关于他们的解释参考这个链接。如何清除的理解UV和PV的定义
知识点2:流量漏斗转化模型的介绍
知识点3:跳出率
知识点4:重复购买率
从用户角度,可以采用用户转化漏斗模型和RFM用户分层模型,了解用户转化率,以及高价值用户。
知识点1:SKU的解释
商品角度可以从SKU下单量,SKU浏览量进行商品流量分析,结合浏览量和下单量对商品进行流量四象限分析。
数据分析流程包括:
提出问题–理解数据-数据处理和清洗–构建模型-数据可视化
这里分析的数据量为10w+,如果用excel进行分析的话,超出excel的承载,无法进行有效分析,因此这里使用了数据库管理软件Navicat进行分析处理。
去除重复值这里,可以将user_id,item_id,timestamp三者进行联合,形成联合主键,对数据集进行分组。如果数据集中没有重复值,则理论上用三者进行联合分组之后,
count(user_id)应该是不大于1的;如果数据集中有重复值,则理论上用三者进行联合分组之后,count(user_id)应该是大于1的。因此在这里判断count(user_id)是否大于1可以用having函数。
SELECT use_id FROM userbavior
GROUP BY user_id,item_id,timestamp
HAVING COUNT(user_id)>1
SQL查询结果如下:
结果显示没有重复值。
在查看缺失值板块,可以统计每一个字段下有多少行,如果行数是相等的说明没有缺失值。(对应于python数据分析中,可以用pandas库中的info()函数,来判断是否存在缺失值)。
SELECT COUNT(user_id),COUNT(item_id),COUNT(category_id),COUNT(behavior_type),COUNT(timestamp)
FROM userbehavior;
从查询结果来看,不存在缺失值,数据质量高。
数据库中时间以int类型进行储存,对于分析师来说非常的棘手,如何将整数类型的时间转换为肉眼能读懂的时间格式呢?可以采用如下函数。
采用函数:FROM_UNIXTIME
作用:将MYSQL中以INT(11)存储的时间以"YYYY-MM-DD"格式来显示。
这里用到的知识点:MYSQL格式时间戳函数:FROM_UNIXTIME
#新增date,hour时间列
ALTER TABLE userbehavior
ADD date VARCHAR(20),
ADD hour VARCHAR(20);
#时间格式转换
#将hour列的时间转换为-年-月-日
UPDATE userbehavior SET date = FROM_UNIXTIME(timestamp,'%Y-%m-%d');
#将hour列的时间转换为-时
UPDATE userbehavior SET hour = FROM_UNIXTIME(timestamp,'%H');
将timestamp列的时间转换为-年-月-日 -时-分-秒
UPDATE userbehavior SET timestamp = FROM_UNIXTIME(timestamp,'%Y-%m-%d %H:%i:%S');
运行结果如下:
#剔除异常值
#排除日期不在2017-11-25到2017-12-3这9天的数据
DELETE FROM userbehavior
WHERE date <'2017-11-25' or date >'2017-12-03'
检查下是否将异常值剔除干净
SELECT MAX(date),MIN(date) FROM userbehavior;
SELECT
COUNT(DISTINCT user_id) AS UV,
SUM(CASE behavior_type WHEN 'pv' THEN 1 ELSE 0 END) AS PV,
SUM(CASE behavior_type WHEN 'fav' THEN 1 ELSE 0 END) AS 总收藏数量,
SUM(CASE behavior_type WHEN 'cart' THEN 1 ELSE 0 END) AS 总加购数量,
SUM(CASE behavior_type WHEN 'buy' THEN 1 ELSE 0 END) AS 总下单数量,
ROUND(SUM(CASE behavior_type WHEN 'pv' THEN 1 ELSE 0 END)/COUNT(DISTINCT user_id),0) AS 人均总点击量
FROM userbehavior;
SQL查询语句如下:
#按照日期进行分类,创建视图
CREATE VIEW daily_flow AS
SELECT date,
COUNT(DISTINCT user_id) AS 每日UV,
SUM(CASE behavior_type WHEN 'pv' THEN 1 ELSE 0 END) AS 每日PV,
SUM(CASE behavior_type WHEN 'fav' THEN 1 ELSE 0 END) AS 每日收藏数量,
SUM(CASE behavior_type WHEN 'cart' THEN 1 ELSE 0 END) AS 每日加购数量,
SUM(CASE behavior_type WHEN 'buy' THEN 1 ELSE 0 END) AS 每日下单数量,
ROUND(SUM(CASE behavior_type WHEN 'pv' THEN 1 ELSE 0 END)/COUNT(DISTINCT user_id),0) AS 每日人均点击量
FROM userbehavior
GROUP BY date
ORDER BY date;
SQL查询结果如下:
创建视图之后可以方便导出数据,继而对每日流量进行可视化,用excel进行可视化:
分析一天中的每小时流量,可以随机选择特定的一天,这里选择分析2017-11-25一天中的每时流量。
SQL查询语句如下:
#创建2017-11-25的每时流量分析视图
CREATE VIEW time_flow AS
SELECT hour,
COUNT(DISTINCT user_id) AS 每时UV,
SUM(CASE behavior_type WHEN 'pv' THEN 1 ELSE 0 END) AS 每时PV,
SUM(CASE behavior_type WHEN 'fav' THEN 1 ELSE 0 END) AS 每时收藏数量,
SUM(CASE behavior_type WHEN 'cart' THEN 1 ELSE 0 END) AS 每时加购数量,
SUM(CASE behavior_type WHEN 'buy' THEN 1 ELSE 0 END) AS 每时下单数量,
ROUND(SUM(CASE behavior_type WHEN 'pv' THEN 1 ELSE 0 END)/COUNT(DISTINCT user_id),0) AS 每时人均点击量
FROM userbehavior WHERE date='2017-11-25'
GROUP BY hour
ORDER BY hour;
- 分析结论
用户在平台的行为路径为
-- 用户行为流量转化
SELECT
SUM(CASE WHEN behavior_type = 'pv' THEN 1 ELSE 0 END) AS 总点击数量,
SUM(CASE WHEN behavior_type = 'fav' OR behavior_type = 'cart' THEN 1 ELSE 0 END ) AS 总收藏和加购数量,
SUM(CASE WHEN behavior_type = 'buy' THEN 1 ELSE 0 END) AS 总下单数量,
#计算加购收藏转化率
CONCAT(ROUND(SUM(CASE WHEN behavior_type = 'fav' OR behavior_type = 'cart' THEN 1 ELSE 0 END )/SUM(CASE WHEN behavior_type = 'pv' THEN 1 ELSE 0 END) * 100,2),'%') AS pv2cart_or_fav,
#计算下单转化率
CONCAT(ROUND(SUM(CASE WHEN behavior_type = 'buy' THEN 1 ELSE 0 END)/SUM(CASE WHEN behavior_type= 'pv' THEN 1 ELSE 0 END)*100,2),'%') AS pv2buy
FROM userbehavior;
得到各环节流量转化率结果如下:
用excel进行可视化后得到漏斗模型:
- 分析结论
根据流量漏斗转换模型可以得到:下单转化率为2.34%,加购/收藏转化率为9.13%,而根据2012年艾瑞咨询数据显示,在整个互联网行业范围内,平均转化率只有2.13%,淘宝平台流量转化率高于同行业平均水平,说明淘宝在流量转化这方面做的比较突出。
SQL查询语句如下:
(1)先创建视图
CREATE VIEW user_buy_data AS
SELECT user_id,COUNT(behavior_type) AS 'buy_count'
FROM userbehavior
WHERE behavior_type ='buy'
GROUP BY user_id;
SELECT SUM(case WHEN buy_count>1 THEN 1 ELSE 0 END) AS '复购总人数',
COUNT(user_id) AS '购买总人数',
CONCAT(ROUND(SUM(case WHEN buy_count>1 THEN 1 ELSE 0 END)/COUNT(user_id)*100,2),'%')AS '复购率'
FROM user_buy_data;
SQL查询语句为:
#跳失率计算
#代码逻辑:用GROUP BY函数对用户进行分组,统计其behavior_type,如果behavior_type等于1的话统计人数
SELECT COUNT(*) AS '跳失人数'
FROM
(SELECT user_id FROM userbehavior GROUP BY user_id
HAVING COUNT(behavior_type)=1) AS t;
CREATE VIEW user_behavior_data AS
SELECT user_id,
COUNT(behavior_type) AS 用户行为总数统计,
sum(case WHEN behavior_type = 'pv' THEN 1 ELSE 0 END) AS 点击总数,
sum(case WHEN behavior_type = 'fav' THEN 1 ELSE 0 END) AS 收藏总数,
sum(case WHEN behavior_type = 'cart' THEN 1 ELSE 0 END) AS 加购总数,
sum(case WHEN behavior_type = 'buy' THEN 1 ELSE 0 END) AS 购买总数
FROM userbehavior
GROUP BY user_id
ORDER BY 用户行为总数统计 DESC;
SELECT count(user_id) AS 购买人数
FROM user_behavior_data
WHERE 购买总数>0 AND 加购总数=0 AND 收藏总数=0;
select count(user_id) AS 点击用户数
FROM user_behavior_data
WHERE 点击总数>0;
(2)点击-加购不收藏-购买
SQL查询语句如下:
select count(user_id) AS 点击用户数
FROM user_behavior_data
WHERE 点击总数>0;
SELECT count(user_id) AS 加购不收藏人数
FROM user_behavior_data
WHERE 加购总数>0 AND 收藏总数=0;
SELECT count(user_id) AS 购买人数
FROM user_behavior_data
WHERE 加购总数>0 AND 收藏总数=0 AND 购买总数>0;
(3)点击-收藏不加购-购买
SQL查询语句如下:
select count(user_id) AS 点击用户数
FROM user_behavior_data
WHERE 点击总数>0;
SELECT count(user_id) AS 收藏不加购人数
FROM user_behavior_data
WHERE 加购总数=0 AND 收藏总数>0;
SELECT count(user_id) AS 购买人数
FROM user_behavior_data
WHERE 加购总数=0 AND 收藏总数>0 AND 购买总数>0;
(4)点击-加购并收藏-购买
SQL查询语句如下
select count(user_id) AS 点击用户数
FROM user_behavior_data
WHERE 点击总数>0;
SELECT count(user_id) AS 加购并收藏人数
FROM user_behavior_data
WHERE 加购总数>0 AND 收藏总数>0;
SELECT count(user_id) AS 购买人数
FROM user_behavior_data
WHERE 加购总数>0 AND 收藏总数>0 AND 购买总数>0;
分析可视化图表可以得出,用户进行点击之后,有25%的用户收藏并加购,这其中有80% de用户选择了购买。
四种方式对比说明:
这四种方式比较说明,加购物车购买是用户最喜欢的一种方式,其次喜欢的就是加购且收藏,用户对商品进行加购且收藏之后,转化为购买的比率要更高。推断原因可能是因为加购物车,用户可以享受满减等优惠或者折扣。所以,我们可以引导用户将商品加购物车,提高中间转化率。
流失评估:对比用户的中间转化率,都低于50%,在从用户浏览到购买这一环节用户流失率高,因此要对用户流失原因进行分析。
RFM模型是衡量客户价值的重要工具,该模型是通过客户最近交易行为(recency),交易频率(Frequency),以及交易金额(Monetary)三项指标来衡量该客户的价值状况。一般来说,会根据三项指标进行组合,从而对用户进行分类,或者说对用户价值进行分层。
最近一次消费(recency):是指最近距离上一次消费之间的时间长短,反映了客户对品牌价值的信任度,反映用户留存。
消费频率(frequency):是指某个特定时间内消费次数,反映了客户的忠诚度,忠诚度越高的客户数量越多,公司竞争优势越大,市场份额越大。
消费金额:指的是一定时间内消费某产品金额,反映客户价值,价值越高,给公司创造的收益越大。
因为数据源中没有涉及消费金额,因此只从R和F来对客户价值进行评分,不考虑M维度。
(1)分析最近一次消费R
查询最大值,最小值与平均值,查询代码如下:
#分析购买间隔
#找出最大购买间隔和最小购买间隔,平均购买间隔
#使用datediff函数
#最近一次消费可以统计最近一次消费,即行为为“buy”的用户,最大日期或者说最后一次购买日期,距今的时间间隔
SELECT MAX(购买间隔),MIN(购买间隔),AVG(购买间隔)
FROM
(
SELECT user_id,datediff('2017-12-04',MAX(date)) AS 购买间隔
FROM userbehavior
WHERE behavior_type='buy'
GROUP BY user_id) AS t
(2)分析购买频率F
查询分析购买频率最大值和最小值,平均值
SELECT MAX(购买次数),MIN(购买次数),AVG(购买次数)
FROM
(
SELECT user_id,COUNT(behavior_type) as 购买次数
FROM userbehavior
WHERE behavior_type='buy'
GROUP BY user_id
) As t
(3)整合R和F,创建视图,进行可视化
在整合R和F之前,需要先对每个用户的购买次数和购买间隔进行统计。并创建视图,方便Tableau连接MySQL进行可视化。
SQL查询语句如下:
#整合R和F,创建视图
CREATE VIEW user_RFM AS
SELECT user_id,COUNT(behavior_type) AS 购买次数,
datediff('2017-12-04',MAX(date)) AS 购买间隔
FROM userbehavior
WHERE behavior_type='buy'
GROUP BY user_id
ORDER BY 购买次数 DESC
SQL查询结果如下:
用MySQL连接Tabelau进行可视化可以得到结果图
关于Tabelau如何连接数据库,可以参考这个链接
如何将Tabelau连接数据库
关于如何用Tabelau画思想线图,可以参考这个视频:
如何用Tabelau画四象限图
这里采用购买次数和购买间隔的均值对象限进行划分,即:R=4,F=4
所得可视化图表如下:
散点图可以划分为四个象限,分别用四种不同颜色表示,四个象限分别为:
R值 | F值 | 用户分类 |
---|---|---|
R<4 | F<4 | 重要挽留用户 |
R<4 | F>=4 | 重要保持用户 |
R>=4 | F<4 | 重要发展用户 |
R>4 | F>4 | 重要价值用户 |
根据不同价值的用户,可以制定不同的营销策略:
(1)按照商品种类分组
SQL查询语句如下:
#按照商品种类分组,查看每种商品的下单量
SELECT item_id,COUNT(behavior_type) as 下单次数
FROM userbehavior
WHERE behavior_type='buy'
GROUP BY item_id
ORDER BY 下单次数 DESC
SELECT 下单次数,count(item_id) AS 商品种类数
FROM (SELECT item_id,COUNT(behavior_type) as 下单次数
FROM userbehavior
WHERE behavior_type='buy'
GROUP BY item_id
ORDER BY 下单次数 DESC
)as t
GROUP BY 下单次数
ORDER BY 下单次数 DESC;
对商品下单量进行统计分析,结果并不符合二八定律,80%的下单量并不是由20%的商品带动的,这也说明了,以淘宝为代表的电商平台,其商品售卖主要依靠的是商品的长尾效应,并非爆款商品的带动。
分析商品浏览量和分析商品下单量采取一样的逻辑思维,SQL查询代码也呈现同样的设计逻辑,SQL查询代码如下:
(1)按照商品种类分组
按照商品种类分组,查看每种商品的浏览量
SELECT item_id,COUNT(behavior_type) as 浏览次数
FROM userbehavior
WHERE behavior_type='pv'
GROUP BY item_id
ORDER BY 浏览次数 DESC
(2)按照浏览次数分组
统计浏览次数和商品种类的对应关系,SQL查询代码如下:
SELECT 浏览次数,count(item_id) AS 商品种类数
FROM (SELECT item_id,COUNT(behavior_type) as 浏览次数
FROM userbehavior
WHERE behavior_type='pv'
GROUP BY item_id
ORDER BY 浏览次数 DESC
)as t
GROUP BY 浏览次数
ORDER BY 浏览次数 DESC;
(3)对上述结果进行可视化
对上述结果进行可视化,可以得到如下的帕累托图:
根据帕累托图可以得出结论,80%的浏览量是由66%的商品带动的,不符合二八定律,符合长尾效应。
对商品的下单量和浏览量进行四象限分析,可以更好的制定营销策略。
SQl查询代码如下:
SELECT item_id,
sum(case WHEN behavior_type='pv' THEN 1 ELSE 0 END) AS 浏览量,
sum(case WHEN behavior_type='buy' THEN 1 ELSE 0 END) AS 下单量
FROM userbehavior
GROUP BY item_id
ORDER BY 下单量 DESC;
查询结果如下:
用Tabelau连接MySQL数据库,将数据导入到Tabelau中进行可视化。
使用Tabelau对结果进行可视化,可视化结果图如下图所示:
用浏览量=12和下单量=3将图中的散点分为四个象限:
第Ⅰ象限:购买量高,浏览量低。产生这种现象可能有以下两种原因:从C端用户看,该象限内的商品可能属于某类用户的刚需产品,可以结合商品的ID和商品的种类进一步判断;从B端来看,该象限内的商品可能存在受众广这个原因,但是因为商家引流入口少,因此浏览量虽少,购买量仍高。
第Ⅱ象限:浏览次数高,购买量高。属于转化率比较高的商品,用户比较容易看到相关商品的广告,也比较愿意点购买该商品,即“对的信息传递给了对的人,对的人找到了他要的信息”。
第Ⅲ象限:购买量低,浏览量低。原因主要从B端分析,一是在于广告和页面对用户吸引力不够,引流入口少,二是可能在于商品本身和广告不符
不精准人群。可以简单理解为很少人点广告,就算点了广告,也很少人购买。说明广告没有很好的展现到目标人群面前,或者广告创意吸引力不够。另外在网站层级也可能出现问题。
第Ⅳ象限:浏览量高,购买量差。失望的消费者。可以简单理解为点击广告的人很多,但都不产生购买。说明可能是广告创意夸大诱导网民点击;另外,购买量差的矛盾应该指向网站和产品(服务)本身,例如网站打开速度慢,着陆页建设差,自身产品毫无优势等。
分析说明:上图我们可以发现,大部分商品集中分布在第三象限。说明针对这部分商品,我们应该提高广告的创意吸引力 和 改进算法,精准广告投放人群。
1.每日流量:分析每日流量,2017-11-25到2017-12-1这段期间保持着稳定的态势,在2017-12-02之后,流量呈现增长的趋势,推测可能是因为双12预热活动,预售等活动,造成流量上升。可以针对12-02左右阶段进行运营和商品推送优化。
2.每时流量:分析每时流量,一天中平台流量最高的时间段是20-23时,流量最低的是用户普遍作息时间:2时-6时。可以针对流量比较高的阶段进行商品的推送运营。
3.流量转化:分析从点击到购买的转化,可以计算得到转化率为2.13%,淘宝平台流量转化率高于同行业平均水平,说明淘宝在流量转化这方面做的比较突出。
4.复购率和跳失率:复购率高达65.8%,9天内的跳失率为0,由此说明淘宝店铺忠诚度高,顾客愿意回购。
1.从用户行为转化路径来看,比较用户行为转化路径一级转化率,得到用户一级转化率最高的方式是浏览—>加购但不收藏,其次一级转化率比较高的方式是浏览—>加购且收藏,加购且收藏之后,二级转化率要更高。因此可以提出策略。引导用户将商品加入购物车,提高一级转化率。
2.从用户分层模型来说,根据购买次数和购买间隔对用户进行分层,找出高价值用户。
1.对商品浏览量和下单量进行帕累托分析,分析可得80%的下单量并不是由20%的商品引起的,不符合二八定律,而是长尾效应,给出的营销策略是可以侧重于打造爆款商品。
2.对商品流量进行四象限划分,可以针对不同象限的商品制定相应的营销策略;且发现大部分的商品分布在第三象限,即:购买量高,浏览量差,可以针对这部分商品,提高广告的吸引力以及改进算法,精准投放。
【营销策略】
【转化策略】
针对提高用户浏览-购买行为转化率,建议两步走: