淘宝APP用户行为数据分析
转自 :https://zhuanlan.zhihu.com/p/183899535
如有侵权,请联系浪尖删除。langjianliaodashuju
一. 提出问题和应用模型
1.本次分析的目的是想通过对淘宝用户行为进行数据分析,为以下问题提供解释和改进建议:
(1)分析用户使用APP过程中的常见电商分析指标,确定各个环节的流失率。
(2)利用假设检验思想分析流失原因,找到需要改进的环节。
(3)研究用户在不同时间尺度下的行为规律,分析不同尺度下的转化率。
(4)找到用户对不同种类商品的偏好和针对不同商品的营销策略。
(5)将用户群按照价值划分,并针对不同的用户群提出营销建议。
2.应用分析模型
(1)基于AARRR漏斗模型分析用户行为
本文通过常用的电商数据分析指标,采用AARRR漏斗模型拆解用户进入APP后的每一步行为。AARRR模型是根据用户使用产品全流程的不同阶段进行划分的,针对每一环节的用户流失情况分析出不同环节的优化优先级,主要通过以下个各阶段来进行分析:
(2)基于RFM模型找出有价值的用户
由于不同用户对公司带来的收益差别很大,而且根据二八定律(20%的有价值用户能带来80%的收益),因此需要对用户进行价值评价,找到最有价值的用户群,并针对这部分用户进行差异化营销。这里参考RFM 模型对用户进行评价:
R-Recency(最近一次购买时间)
R指用户上一次消费的时间,上一次购物时间距今最近的顾客通常在近期响应营销活动的可能性也最大,对于APP而言,很久没有购物行为可能意味着用户放弃了APP的使用,重新唤起用户也需要更多的成本。
F-Frequency(消费频率)
F指用户在某段时间内的购物次数,消费频率越高意味着这部分用户对产品的满意度最高,用户粘性最好,忠诚度也最高。
M-Money(消费金额)
M指用户在某段时间内的购物金额,这也是为公司带来价值的最直接体现,而消费金额较高的用户在用户总体中人数较少,却能创造出更多价值,是需要重点争取的对象。
这三个维度互相关联,反映了每个用户的现在价值和潜在价值,将每个维度分成R-5,F-5个区间进行评分,通过计算分数对用户进行分类,可以有针对性地对不同类型用户采用不同的营销策略。
二. 理解数据
1. 数据来源
阿里云天池:tianchi.aliyun.com/data
数据集包含了2017年11月25日0:00至2017年12月4日0:00之间(共9天),淘宝APP移动端用户行为数据。由于总记录为1亿条,数量过大,此处只处理200万条数据作为代表,这部分数据中包含19544名用户(按user_id划分)的行为记录。
2.各字段含义
因为数据量太大,直接用excel打不开,这里通过python输出数据的前5行,查看大体格式。
import pandas as pd
data=pd.read_csv('UserBehavior.csv')
print(data.head())
输出结果如下图所示:
这里也可以看出此文件是没有字段名的,因此导入数据库时需要自己创建表头信息。
3.数据导入
(1)新建数据库userbehavior;(在navicat中完成)
(2)因为源数据没有字段名,所以要先创建表头信息,设置主键
create table user (
id int not null,
item int not null,
behavior varchar(10) not null,
category int not null,
times int not null,
constraint id_behave primary key(id,item,times));
三.数据清洗
1.列名重命名
建表时已经将原有列名简化,id表示用户ID,item表示商品编号,behavior 表示用户行为,category表示商品类别,times表示时间信息。使用rename函数也能改。
2.一致化处理
时间数据中的日期和小时存在于一列中,为了方便研究每天和一天内每小时用户的行为变化,将其按date和time拆分成两列。
将时间戳转换为日期类型
set sql_safe_updates=0;
alter table user add column datetime timestamp(0) null;
update user set datetime = from_unixtime(times);
将其按date和time拆分成两列
alter table user add column date char(10) null;--增加date一列
update user set date = substring(datetime from 1 for 10);--取出年-月-天
alter table user add column time char(10) null;--增加time一列
update user set time = substring(datetime from 12 for 2);--取出小时
3.异常值处理
删去11-25至12-03日以外的数据
delete from user where datetime<'2017-11-25 00:00:00' or datetime>'2017-12-04 00:00:00';
四. AARRR模型分析
利用AARRR模型,分析用户行为和留存、流失情况,此处数据主要涉及用户刺激和购买转化的环节,即用户从浏览到最终购买整个过程。
1.日新增用户统计首先根据id分组,按照date组内排名,确定每个用户第一次登录的时间,筛选出的排名为1的数据即作为用户第一次登录的数据。再根据date分组,统计每日第一次登录的用户数即为新增用户数。
将每个用户的登录时间排名
select *, row_number() over (partition by id order by date) as user_rank from user
统计每日新增用户数DNU
select date,count(id) as DNU from
(select *, row_number() over (partition by id order by date) as user_rank from user) as A
where A.user_rank=1 group by date order by date asc;
分析:新增用户在11月25日为13927人,处于最高水平,后逐日递减。推测11月25日前后可能存在促销活动或拉新活动。
2.用户留存率分析
第N日留存率=新增日之后的第N日再次登录的用户数/第一天新增总用户数。
依次算出每日留存人数
select date,count(distinct id) as 留存人数,
count(distinct id)/(select count(distinct id) from user where date='2017-11-25') as 留存率 from user
where id in (select distinct id from user where date='2017-11-25')
group by date order by date asc;
分析:由上表可知,11-25之后的8日内留存率均在75%以上,且12月2日-3日的留存率超过98%,说明客户较为稳定,浏览意愿极为强烈。说明客户较为稳定,浏览意愿极为强烈。可能是前期的拉新活动效果较好,每日打卡领金币调动了用户的积极性,为冲刺双十二做准备。
3.不同时间尺度下用户行为模式分析
创建用户行为视图(按天)
create view user_behavior as
SELECT date,
SUM(CASE WHEN behavior='pv' THEN 1 ELSE 0 END)AS '浏览数',
SUM(CASE WHEN behavior='fav' THEN 1 ELSE 0 END)AS '收藏数',
SUM(CASE WHEN behavior='cart' THEN 1 ELSE 0 END)AS '购物车',
SUM(CASE WHEN behavior='buy' THEN 1 ELSE 0 END)AS '付费数'
FROM user
GROUP BY date
ORDER BY date
分析:这9天中,11月25日至12月1日用户浏览量变化幅度小,范围在18万到20万之间,12月2日-3日有较大幅度增加,对比同样是周末的11月25日-26日,pv无明显上涨,因此认为12月2-3日的上涨可能与周末的双十二预热营销活动效果有关。
创建用户每小时的行为视图(按小时)
create view time_behavior as SELECT time,
SUM(CASE WHEN behavior='pv' THEN 1 ELSE 0 END)AS '浏览数',
SUM(CASE WHEN behavior='fav' THEN 1 ELSE 0 END)AS '收藏数',
SUM(CASE WHEN behavior='cart' THEN 1 ELSE 0 END)AS '购物车',
SUM(CASE WHEN behavior='buy' THEN 1 ELSE 0 END)AS '付费数'
FROM user
GROUP BY time
ORDER BY time
分析:
(1)1-6点使用淘宝的人数处于低峰,可能是因为此时大部分用户都处于睡眠状态有关;6 -10点使用人数逐渐增多,10-18点使用量趋于稳定状态;18-21点用户行为逐渐活跃,可能与用户下班后有时间使用淘宝购物有关,晚间21-23点达到高峰值,这个时间段是大部分人群的睡前时间,和人们喜欢在睡前购物的心理有关。夜间23-1点(次日)可能是部分人群进入睡眠,导致使用人数下降。
(2)晚间22-23点为加购峰值,商家可以此时在购物车页面加大活动力度或发红包补贴,刺激用户消费欲望,促进购买转转化。
4.用户流失分析
计算用户总数
select count(distinct id) as 用户总数 from user;
计算跳失率:跳失率=只点击一次浏览的用户数量/总用户访问量
select count(*) as 只浏览一次就离开的人数 from
(select id from user group by id having count(behavior)=1) as A
分析:统计时间为9天,只浏览一次就离开的人数为1,总用户访问量为9969,跳失率=1/9969=0.01%,占比几乎可以忽略不计,说明淘宝拥有足够的吸引力让用户停留在APP中。
用户行为数漏斗计算
select behavior,count(*) as 行为次数 from user group by behavior;
分析:由于收藏和加入购物车都为浏览和购买阶段之间确定购买意向的用户行为,且不分先后顺序,因此将其算作一个阶段,可以看到从浏览到有购买只有buy/pv=2.25%的转化率,流失率很高。下面用假设检验分析方法的思路来验证转化率低的原因。
5.假设检验分析方法
为了进一步找出转化率低的原因所在,这里提出两个假设:
假设一:用户浏览商品时未使用收藏加购功能,导致产生购买意愿时增加了搜寻成本,从而使购买意愿下降。
假设二:商品热搜产品与热销产品不匹配造成的转化率低。
5.1验证假设一:未把商品收藏或加入购物车增加购买麻烦,降低购买意愿
建立购买流程视图
create view 购买流程as
select id,item,category,
sum(case when behavior='pv' then 1 else 0 end) as pv,
sum(case when behavior'fav' then 1 else 0 end) as fav,
sum(case when behavior='cart' then 1 else 0 end) as cart,
sum(case when behavior='buy' then 1 else 0 end) as buy
from user
group by id,item,category;--分别按照id,item,category分组
不同购买流程分析
本数据集用户行为类型包括点击pv、收藏fav、加入购物车cart、购买buy。由之前分析可知,用户购买流程可分为:
点击后直接购买:pv-buy
select count(1) as 浏览人数 from 购买流程 where pv>0;
select count(1) as 浏览后直接购买人数 from 购买流程
where pv>0 and fav=0 and cart=0 and buy>0 ;
点击、收藏后购买:pv-fav-buy
select count(1) as 浏览后收藏人数 from 购买流程 where pv>0 and fav>0;
select count(1) as 浏览后收藏再购买人数 from 购买流程 where pv>0 and fav>0 and cart=0 and buy>0;
点击、加购后购买:pv-cart-buy
select count(1) as 浏览后加购再购买人数 from 购买流程 where pv>0 and cart>0 ;
select count(1) as 浏览后加购再购买人数 from 购买流程 where pv>0 and fav=0 and cart>0 and buy>0;
点击、收藏并加购后购买:pv-fav、cart-buy
select count(1) as 浏览收藏加购人数 from 购买流程 where pv>0 and cart>0 and fav>0 ;
select count(1) as 浏览收藏加购再购买人数 from 购买流程 where pv>0 and fav>0 and cart>0 and buy>0;
分析:通过上述流程转化分析,发现在pv—fav—buy、pv—cart—buy以及pv——fav、cart—buy中的购买转化率明显大于pv—buy中的购买转化率。这是因为未把商品收藏或加入购物车,用户想要购买时就需要重新搜寻,增加了搜寻成本和麻烦,从而使得用户购买意愿下降。假设一成立。这种情况下可以通过以下方法鼓励用户使用购物车和收藏功能:
(1)收藏商品再下单可以领取优惠券;
(2)将商品加入购物车可以不定时享受折扣。
5.2验证假设二:热搜-热销商品匹配度低
统计所有商品的购买次数,同时找到购买次数、浏览次数、收藏次数和加入购物车次数最多的商品。取销售排名前50的为热销商品,取浏览+加购+收藏排名前50的为热搜商品,观察商品id重合情况。
提取排名前50的热销商品
select * from (select item,count(1) as 热销商品,
row_number()over(order by count(1) desc )as 热销排名 from user
where behavior='buy' group by item)as A where A.热销排名<51;
提取排名前50的热销商品
select * from (SELECT item, COUNT(1) AS 热搜商品 ,
row_number() over(order by COUNT(1) desc) as 热搜排名 FROM user
WHERE behavior='pv' or behavior='fav' or behavior='cart' GROUP BY item) as A where A.热搜排名<51;
热销商品与热搜商品匹配度分析
select A.item,A.热销商品,A.热销排名,B.热搜商品,B.热搜排名 from
(select * from (select item,count(1) as 热销商品,row_number()over(order by count(1) desc )as 热销排名 from user where behavior='buy' group by item)as A where A.热销排名<51) as A
inner join
(select * from (SELECT item, COUNT(1) AS 热搜商品 ,row_number() over(order by COUNT(1) desc) as 热搜排名 FROM user WHERE behavior='pv' or behavior='fav' or behavior='cart' GROUP BY item) as A where A.热搜排名<51) as B
on A.item=B.item
分析:
(1)由此可看出,在销量最高的前50名商品中,热搜商品只有5种,匹配率为10%,说明热销产品和热搜产品的匹配度不高。假设二成立。
(2)匹配度低可能有以下两种情况:a.推荐算法效果不佳,详情页的信息流展示可能不太合理,导致首页推荐的大部分商品可能未精准匹配用户需求,大多数人只是点击后就离开,并没有购买意愿。针对这种情况建议淘宝APP优化推荐算法,做到精准运营。b.热搜商品优惠力度不够。可能商家为了吸引用户点击在商品展示页投放的价格具有较强吸引力,但商品详情页的实际价格可能远高于展示价格,从而降低了用户的购买意愿。这时建议商家将热搜排名靠前而热销排名靠后的商品加大优惠力度,实行团购打折等手段提升购买转化率。
6.商品复购分析
按被购买次数划分商品
SELECT A.`被购买次数`,COUNT(item) as '商品数' from
(SELECT item, COUNT(id) AS '被购买次数' FROM user WHERE behavior='buy' GROUP BY item) as A
GROUP BY A.`被购买次数`
order by A.`被购买次数` asc;
分析:在本次统计的数据中,复购次数集中在1-4次,呈长尾分布,该阶段用户消费欲望不大。其中只购买一次的产品有27611种,购买两次的产品有3418种,本次分析的商品中用户购买的共有32485种商品,19544名用户中,被购买次数最多的商品仅为35次,没有出现购买用户数量非常集中的商品,而被购买一次的商品占到27611/32485=85%,说明商品售卖主要依靠长尾商品的累积效应,而非爆款商品的带动。建议多开展营销活动,比如淘宝的达成金主的条件限制,鼓励用户复购。对于用户消费习惯的分析,通过了解用户消费的集中时段集中实施各种营销活动,提高投入产出比。
7.转化率分析
不用时间尺度下的转化率
每日付费转化率
select date,浏览数,付费数,付费数/浏览数 as '转化率' from user_behavior
分析:11.25-12.03的9天内,淘宝APP的付费转化率再2%-2.6%之间,其中,在11.26-11.27日转化率呈现较大幅度增长,于11.27达到最高值2.53%,11.27-11.28发生小幅度下降,11.28-11.29呈小幅升高,11.29以后呈下降趋势。
每小时付费转化率
select time,浏览数,付费数,付费数/浏览数 as 转化率 from time_behavior;
分析:由上图可以看出,一天内夜间3:00转化率最低且浏览量也很低,可能是大部分人处于睡眠状态,上午10:00-11:00转化率最高,其次下午15-17点的转化率也较高,之后呈逐渐下降趋势。虽然APP使用量和浏览量在晚间21:00-23:00达到高峰,但此阶段的付费转化率并不高,建议商家可以在这个时间段将优惠力度加大,例如发放一些优惠券等,提升用户的购买欲望,促进购买转化。
不同类别商品的付费转化率
SELECT category,
SUM(CASE WHEN behavior='pv' THEN 1 ELSE 0 END)AS '浏览数',
SUM(CASE WHEN behavior='fav' THEN 1 ELSE 0 END)AS '收藏数',
SUM(CASE WHEN behavior='cart' THEN 1 ELSE 0 END)AS '购物车',
SUM(CASE WHEN behavior='buy' THEN 1 ELSE 0 END)AS '付费数'
FROM user
GROUP BY category
order by 浏览数 desc
分析:由上图可以看出,商品商品类别为2735466和2885642的两类商品的转化率最高,分别为3.27%和3.26%,类别为154040的商品转化率最低,为0.31%,对于商品浏览量高,而转化率非常低的,建议商家对商品购买流程使用转化漏斗进行分析并进行改善。
五、基于RFM理论找出有价值的用户
M-消费金额,由于数据源中没有相关的金额数据,不计入评分。
R-最近购买时间
用户数据的时间范围为9天,最近购买时间的区间为0-9,将其分为5档,0-1,1-2,3-4,5-6,7-8分别对应评分1到5。
创建用户购买时间到12-04日的距离视图
CREATE VIEW pay_B AS
SELECT id, DATEDIFF('2017-12-04',MAX(date)) AS B FROM user WHERE behavior='buy' GROUP BY id;
创建R得分视图
create view RR as
SELECT id,
(CASE WHEN B BETWEEN 7 AND 8 THEN 1
WHEN B BETWEEN 5 AND 6 THEN 2
WHEN B BETWEEN 3 AND 4 THEN 3
WHEN B BETWEEN 1 AND 2 THEN 4
WHEN B BETWEEN 0 AND 1 THEN 5
ELSE null END) AS R
FROM pay_B ORDER BY R DESC
F-消费频率
查看用户购买次数
SELECT id,count(id)as '次数' from user where behavior='buy' group by id order by 次数 desc;
分析:付费用户中消费次数从低到高为1-72次,将其分为5档,1-15,16-30,31-45,46-60,61-72分别对应评分0到4。
创建用户购买次数视图
CREATE VIEW pay_F AS SELECT id, COUNT(*) AS A FROM user WHERE behavior='buy' GROUP BY id;
创建F得分视图
create view FF as
SELECT id, (CASE WHEN A BETWEEN 1 AND 15 THEN 1
WHEN A BETWEEN 16 AND 30 THEN 2
WHEN A BETWEEN 31 AND 45 THEN 3
WHEN A BETWEEN 46 AND 57 THEN 4
WHEN A BETWEEN 58 AND 72 THEN 5 ELSE 0 END) as F
FROM pay_F ORDER BY F DESC;
创建RFM得分视图
create view RR_FF as SELECT RR.id,RR.R,FF.F from RR left join FF on RR.id=FF.id
计算R、F平均值
select avg(R) as R平均值,avg(F) as F平均值 from RR_FF;
按得分与平均分的关系进行用户分类
select 用户分类,count(用户ID) as 人数
from (select 用户ID,
(case when R >3.5544 and F >1.3249 then "重要价值客户"
when R >3.5544 and F <1.3249 then "重要发展客户"
when R <3.5544 and F >1.3249 then "重要保持客户"
when R <3.5544 and F <1.3249 then "重要挽留客户"
else 0 end) as 用户分类
from RR_FF) as a group by 用户分类;
分析:
(1)重要价值客户是指R,F得分都在平均分以上的用户,此类用户的购买力和粘性较高,且近期极有可能再次购买;重要发展客户是指R得分较高,而F得分较低的用户,此类用户近期买过但粘性不高;重要保持客户是指F得分较高,但R值较低的用户,此类用户粘性较好但近期购买行为较少;重要挽留客户是指R,F得分都在平均分以下,粘性不高且近期很少购买,此类用户如果不进行挽留将会成为流失用户。
(2)根据用户分类结果,用户最主要集中在重要发展客户和重要挽留客户,应针对不用的客户实行不同的运营策略。
六. 结论与建议
本文分析了淘宝APP用户行为数据共200万条,删去991条异常数据后,从五个不同角度提出业务问题,使用AARRR模型和RFM模型分析数据给出如下结论和建议。
1.一天内用户最活跃的时间段是21-23点,尤其是22点-23点的这一小时。
建议:把握该黄金时段,集中进行营销活动提高用户购买转化率,例如平台带货直播、分会场促销、限时抢购等。且更多选择热搜热销的商品类目和商品,迎合用户需求。
2. 用户这9日内的留存率均在75%以上,且12月2日-3日的留存率超过98%,说明客户较为稳定,浏览意愿极为强烈。这可能是因为存在新用户打卡活动等,调动了用户的登录积极性。
建议:多举办老用户拉活阶梯式奖励、新用户浏览集积分等活动,培养用户登录习惯,调动浏览热情。发放新用户满减优惠券、首单直减等活动,提高新用户的购买转化率。
3. 用户在点击→收藏→购买、点击→加入购物车→购买、点击→收藏和加购→购买这三个流程的购买转化率都明显大于点击→购买中的购买转化率。这可能是因为收藏或加购能提供购买便捷,提高用户购买意愿。
建议:增加跨店满减、收藏加购送商品赠品、送福利等活动,引导用户收藏加购行为,从而提高用户购买转化率。
4.商品热搜和热销并不匹配,大部分商品可能未精准匹配用户需求或优惠力度不够,并没有促使用户进行购买。
建议:
(1)优化推荐算法,优先推荐热搜、热销排名靠前的商品,降低用户搜寻成本。
(2)优化搜索功能,根据用户画像更精准推荐商品,使热搜和热销更为匹配。
(3)加大热搜商品的优惠力度,提高热搜商品的购买转化率。
(4)针对浏览量高而购买转化率低的商品,应改善商品页、详情页以及评论区管理。
5. 用户最主要集中在重要发展客户和重要挽留客户。
建议:针对不用客户实行不同运营策略。
(1)对于占比最大的重要发展客户,消费频率低但最近一次消费时间间隔短,可以通过发放满减优惠券等方法提高消费频率;
(2)对于占比第二大的重要挽留客户,消费频率低且最近一次消费间隔长,面临用户流失风险,可以通过电话邮件等形式主动联系客户,调查问题所在,并有针对地进行挽回;
(3)对于占比较大的重要价值客户,应提供专属的VIP服务,通过服务质量进一步调高其粘性;
(4)对于占比较低的重要保持客户,消费频次高但最近一次消费时间间隔长,可以通过短信邮件等方式提醒上新、邀请参加老用户反馈活动等提高复购率。