淘宝用户行为分析-AARRR、RMF模型(数据量:百万级,工具mysql)

概况介绍:

电商平台的用户行为分析,能一定程度的推动运营、产品等迭代,提供决策支持。
数据集来源: 阿里云池
样本量: 3835331
方法工具:
本文用2017年11月至12月的淘宝用户行为,AARRR模型及RMF模型利用进行分析。数据虽有点旧,但重在锻炼分析框架。
本文使用的分析工具以MySQL为主,涉及分组汇总,引用变量,视图,关联查询等内容。

分析思路

在这里插入图片描述
第一,基于AARRR漏斗模型,使用常见电商分析指标pv uv,从新增用户数量、各环节转化率、新用户留存率三个方面进行分析,确定影响新增用户数量的因素,找到需要改进的转化环节,发现留存现存问题。
第二,将颗粒度逐渐细化,探寻用户的商品偏好,哪类商品销量最好,最坏,复购率、回购率最好的商品是什么
第三:研究用户在不同时间尺度下的行为规律,找到用户在不同时间周期下的活跃规律
第三,根据用户画像及价值分类,选择合适的推广方式。用户什么时段最活跃。
第四:利用RFM模型,进行客户分类评分,找出对应策略。

一、数据处理

(1)数据导入
因为数据量比较大,一共383万,具体怎么导我之前的文章介绍有过。
以下是代码,等待一段时间才可载入

D:\> cd change\mysql-8.0.19-winx64\bin
D:\change\mysql-8.0.19-winx64\bin>mysql --local-infile -u root -p
mysql> load data local infile'D:/xcw/work/数据面试/电商平台用户分析/UserBehavior.csv' into table taobao.xwfx
    -> fields terminated by ',';

如图所示:3835331数据。
在这里插入图片描述
(2)数据清洗

数据清洗的一般步骤

在这里插入图片描述

desc xwfx

看看大概数据类型和数据是否含null值,最后两行是我后加的,下文会讲到。
在这里插入图片描述
在这里插入图片描述
我们发现最后一列是时间戳,查过之后发现是一种以秒来记录的,与格林威治标准时间的相差秒数,因此,我们把他换算成日期和时间

先插入两列

ALTER TABLE xwfx ADD date_ymd VARCHAR(255);
# 日期列
ALTER TABLE xwfx ADD date_time VARCHAR(255);
#时间列

在这里插入图片描述
接着进行转化,记得要加where,不然有的版本会报错
因为我暂时还没设置主键,想先看看时间转换结果,

SET SQL_SAFE_UPDATES = 0  #没有主键更新或删除时会报错,我得先设置安全模式关闭。
UPDATE xwfx
SET date_ymd = FROM_UNIXTIME(timestamp,'%Y-%m-%d') where userid >0

SET SQL_SAFE_UPDATES = 0  
UPDATE xwfx
SET date_time = FROM_UNIXTIME(timestamp,'%H:%i:%s') where userid >0;

上面可能会出现失去与服务器连接,因为数据量有点大,需要自己先设置一下DBMS connection read time out(in seconds)适当调大。(不过还是建议大家设个主键)
最后得到下图,日期转换结束
在这里插入图片描述

SELECT
       MAX(date_ymd),
       MIN(date_ymd)
FROM xwfx;

发现有脏数据
在这里插入图片描述
且数据量比较大,导致我每次操作都要等很久,简单看了一下数据集,

SELECT
       MAX(date_ymd),
       MIN(date_ymd),
       count( distinct userid),count(1)
FROM xwfx
WHERE date_ymd >='2017-11-25 '
and date_ymd <='2017-11-31 '

选择2017.11.25至2017.11.31号这7天的数据

同样的就得删去这7天之外的数据

SET SQL_SAFE_UPDATES = 0  
Delete
FROM xwfx
WHERE date_ymd <'2017-11-25 '
or date_ymd > '2017-11-31 '

最终剩下2353708 row(s) ,正式开始分析啦…

二、AARRR模型

(1)获客:每日新增用户数
定义首次购买的用户为新增客户,每天都有新增用户,但是新增用户在递减。并未出现回升现象,发现问题应及时采取一定拉新策略。

select count(distinct t.userid)as 新增用户数,t.日期 from	
    (SELECT 
	userid,min(date_ymd)as'日期'
	FROM taobao.xwfx
	where behavior='buy' 
	group by userid)t
group by t.日期

在这里插入图片描述
在这里插入图片描述

(2)激活:用户数、商品数、类目数

SELECT COUNT(DISTINCT userid) AS num_user, 
COUNT(DISTINCT itemid) AS num_item, 
COUNT(DISTINCT categoryid) AS num_category 
FROM taobao.xwfx

在这里插入图片描述
整体上看本次分析共涉及37367名用户,近70万商品,近7000个品类。

(2)pv、uv、日均pv
分析pv(总体访问量)及uv(独立访客数)

总体访问量2107723人次,但独立访客数37367人次。

SELECT count(1) as 总体访问量 FROM taobao.xwfx
where behavior = 'pv'

在这里插入图片描述
分析日均访问量

日均访问量维持在33万~36万人次左右,流量还是很大且比较稳定的
而11月25-26数据量大原因是碰到周末啦!!!!,果然周末还是量比较大的
而11月28号这天是周二哦,来个狂欢星期二吧,开个玩笑哈哈

SELECT date_ymd as 日期,count(behavior) as 日均访问人数 FROM taobao.xwfx
where behavior = 'pv' and date_ymd >='2017-11-25'
group by date_ymd
order by date_ymd

在这里插入图片描述
(3)留存转化:各阶段行为人数及漏斗图

SELECT behavior as 阶段,count(1) as 人数,count(distinct userid) as 用户ID FROM taobao.xwfx
group by behavior
order by count(1) desc

在这里插入图片描述
将收藏和加入购物车但没有买的整合成第二阶段
漏斗图
在这里插入图片描述
(4)流量转化率、成交转化率、跳出率

流量转化率=购买订单数量/浏览页面次数=48892/2107723=2.32%

平均每次访问会带来2.32%的购买订单数量,

成交转化率=购买订单数量/UV=48892/37095=1.32%

平均每一访问用户购买1.32商品。

跳出率 看出仅浏览,但不去加购也不去收藏的用户比例.
跳出率=5447/110017=4.95%
约有4.95%的用户浏览了一次页面就跳出了。相对来说我觉得表现的很不错了,基本大部分还是有选择加购和收藏的。

SELECT COUNT(*) AS pv_quit,
count(DISTINCT userid) AS user_quit
FROM xwfx
WHERE 
userid IN 
(SELECT DISTINCT userid FROM xwfx
WHERE behavior='pv')
AND 
userid NOT IN 
(SELECT DISTINCT userid FROM xwfx
WHERE behavior IN ('fav','cart','buy'));

在这里插入图片描述
(5)次日留存回购人数、3日留存回购人数

  • 次日留存
select t1.date_ymd,count(t1.date_ymd),count(t2.date_ymd),
count(t2.date_ymd)/count(t1.date_ymd) as 留存率 from
(SELECT userid,date_ymd FROM taobao.xwfx
where behavior='buy' 
group by date_ymd,userid)t1
left join 
(SELECT userid,date_ymd FROM taobao.xwfx
where behavior='buy' 
group by date_ymd,userid)t2
on t1.userid=t2.userid 
and t1.date_ymd=date_sub(t2.date_ymd,interval 1 day)
group by t1.date_ymd

在这里插入图片描述

  • 3日留存

当日购买后,3天后再次购买的人数

select t1.date_ymd,count(t1.date_ymd),count(t2.date_ymd),
count(t2.date_ymd)/count(t1.date_ymd) as 留存率 from
(SELECT userid,date_ymd FROM taobao.xwfx
where behavior='buy' 
group by date_ymd,userid)t1
left join 
(SELECT userid,date_ymd FROM taobao.xwfx
where behavior='buy' 
group by date_ymd,userid)t2
on t1.userid=t2.userid 
and t1.date_ymd=date_sub(t2.date_ymd,interval 2 day)
group by t1.date_ymd

在这里插入图片描述
整体上看,次日留存率在23-24%间,3日留存率在22-23%,起码在数据集时间范围内回购率还是很高的。
(6)复购率
用户中购买1次以上的占总购买数的比例

select count(t.购买次数),count(if(t.购买次数>1,1,null)),
count(if(t.购买次数>1,1,null))/count(t.购买次数) as 复购率 from
	(select userid ,count(userid) as 购买次数 from xwfx
	where behavior='buy'
	group by userid )t

在这里插入图片描述
超过55.8%的用户购买了一次以上。

三、基于商品维度了解用户的行为习惯

(一)热销商品、热销类别
标签为3122135这个商品销量最好,共有34个用户购买了,我很好奇是什么

select itemid,count(distinct userid) from xwfx
where behavior='buy'
group by itemid
order by count(distinct userid) desc

在这里插入图片描述
从类别上看,1464116标签号类别销量最好,有808个用户购买这一类商品,生活用品类吧感觉是

select categoryid,count(distinct userid) from xwfx
where behavior='buy'
group by categoryid
order by count(distinct userid) desc

在这里插入图片描述

四、基于时间维度了解用户的行为习惯

(1)一天中用户活跃时段分布

select hour(date_time), count(behavior),
sum(case when behavior='pv' then 1 else 0 end) as '点击次数',
sum(case when behavior='cart' then 1 else 0 end) as '加购次数',
sum(case when behavior='fav' then 1 else 0 end) as '收藏次数',
sum(case when behavior='buy' then 1 else 0 end) as '购买次数'
 from xwfx
group by hour(date_time)
order by hour(date_time)

在这里插入图片描述在这里插入图片描述
我们可以看出:
(1)每日1点到5点用户活跃度快速降低,降到一天中的活跃量最低值,6点到10点用户活跃度逐渐上升
(2)下午整体时段的用户活跃度较平稳,下午5点至7点有所回落,应该还是符合用户生活习惯,该时间段大多数处于下班、接放学、煮吃这样一个生活状态,相对在电商时间较少
(3)用户整体在晚上活跃度高,在10点-11点见达到流量峰值,是下午时段的2倍左右,

(2)一周中用户行为分析

select date_format(date_ymd,'%w') +1 as '星期',count(behavior)as 用户行为总量,
sum(case when behavior ='pv' then 1 else 0 end) as '浏览量',
sum(case when behavior ='cart' then 1 else 0 end) as '加购物车',
sum(case when behavior ='fav' then 1 else 0 end) as '收藏量',
sum(case when behavior ='buy' then 1 else 0 end) as '购买量' from xwfx
group by date_ymd
order by date_format(date_ymd,'%w')

在这里插入图片描述
漏了一天是因为我之前最开始就只选了其中6天的数据,不过先试着分析看看
在这里插入图片描述

(1)说明在选取的11.25-11.30这个时段,商家及平台并未做太多活动,用户的各阶段表现相对平稳。
(2)周天的浏览量相对高,但此时购买量并未有显著上升,相反表现不如周一。

五、用RMF模型进行客户价值分类

使用RFM模型对所有的客户进行客户价值分类,可以使推广方式更有针对性。

RFM模型:

R(Recency):是指最近一次消费

F(Frequency):是指消费频率

M(Monetary):是指消费金额
在这里插入图片描述
(1)计算最近一次消费时间和消费频率

select userid,
datediff(‘2017-12-01’,max(date_ymd))as ‘最后一次交易距今时间’,
count(behavior)as ‘交易次数’
from xwfx
where behavior =‘buy’
group by userid
在这里插入图片描述

看一看最大值值

select max(t.最后一次交易距今时间),max(t.交易次数) from(
select userid,
datediff(‘2017-12-01’,max(date_ymd))as ‘最后一次交易距今时间’,
count(behavior)as ‘交易次数’
from xwfx
where behavior =‘buy’
group by userid)t

在这里插入图片描述
因为数据集中没含消费金额,我们假设他们的M值普遍较高,都为高消费金额的客户。
重点看R与F值的分析。

(2)对客户进行评分

select userid,
(case when t.最后一次交易距今时间 in(0,1) then 4
      when t.最后一次交易距今时间 in(2,3) then 3
      when t.最后一次交易距今时间 in(4,5) then 2
      when t.最后一次交易距今时间 in(6,7) then 1
      when t.最后一次交易距今时间 >7 then 0
else null
end) as Recent,
(case when t.交易次数 >=16 then 4
      when t.交易次数 between 11 and 15 then 3
      when t.交易次数 between 6 and 10 then 2
      when t.交易次数 between 1 and 5 then 1
      when t.交易次数 =0 then 0
else null
end) as Frequent
 from
 (select userid,
 datediff('2017-12-01',max(date_ymd))as '最后一次交易距今时间',
 count(behavior)as '交易次数'
 from xwfx
 where behavior ='buy'
 group by userid)as t
group by userid
order by Recent desc

在这里插入图片描述
数值高的客户为优质,数值低的待改进

导出计算得R的均值为2.85,F的均值为1.10
下图是以分值来划分客户类型,因为看了一下整体F均值才1.1,
故我想用均值来划分四个客户层次,新建了一个RMF表:

在这里插入图片描述
注:如果有M,参考一下底下的图片及对应策略
在这里插入图片描述
(3)客户分层绘图

SELECT userid, Recent, Frequent,
(CASE WHEN Recent>=2.85 AND Frequent>=1.10 THEN '重要价值客户'
      WHEN Recent<2.85 AND Frequent>=1.10 THEN '重要唤回客户'
      WHEN Recent>=2.85 AND Frequent<1.10 THEN '重要推广客户'
      WHEN Recent<2.85 AND Frequent<1.10 THEN '重要挽留客户'
END)  '客户分类' FROM taobao.rmf
ORDER BY Recent DESC,Frequent DESC

在这里插入图片描述
计算一下各类客户的数量

select t.客户分类,count(t.userid) from
(SELECT userid, Recent, Frequent,
(CASE WHEN Recent>=2.85 AND Frequent>=1.10 THEN '重要价值客户'
   WHEN Recent<2.85 AND Frequent>=1.10 THEN '重要唤回客户'
   WHEN Recent>=2.85 AND Frequent<1.10 THEN '重要推广客户'
   WHEN Recent<2.85 AND Frequent<1.10 THEN '重要挽留客户'
END)  '客户分类' FROM taobao.rmf
ORDER BY Recent DESC,Frequent DESC)t 
group by t.客户分类

哈哈哈,以下就是最后的结果啦,还是有成就感的对不对哈哈
在这里插入图片描述

在这里插入图片描述

六、结论

(1)本次数据集6天总计200多万流量,70万种商品,7000条类目,37000的独立访客,日均访问量在35-36万间。
(2)近6日逐日新增用户数递减,最终成交转化率在2.32%,从浏览到有购买意向只有2.32%的转化率,除去有一部分用户是直接购买,但也说明大多数用户以浏览页面为主而购买转化较少,此处为转化漏斗中需要改善和提高的环节。

针对这一环节改善转化率的建议有:
①优化电商平台的搜索匹配度和推荐策略,主动根据用户喜好推荐相关的商品,优化商品搜索的准确度和聚合能力,对搜索结果排序优先级进行优化;
②给客户提供同类产品比较的功能,让用户不需要多次返回搜索结果反复查看,便于用户确定心怡产品;
③在商品详情页的展示上突出用户关注的重点信息,精简信息流的呈现方式,减少用户寻找信息的成本;

(3)复购、回购
次日回购及3日回购,均保持较高水平,达到22%,复购率在55%。虽然成交转化率不高,但用户多次购买及回购的频率还是不错的,买过都说好哈哈。

1、营销活动能为提升留存带来一定正向的影响,可以多推出一些营销活动,让用户提高使用淘宝电商平台的频率。
2、高复购次数的用户少,商家可以从商品质量、服务质量、物流体验三方面寻找原因,定位所在问题点,寻求高复购率。

(3)3122135为6日内最热销商品,1464116为最热销类目,也可以分析一下最不受欢迎的商品,提供改进措施

根据购买环节的前十品类,app的展现页面对这些品类首要进行展现,便于满足用户购买需求。

(4)活跃时段集中在夜晚,22-23点达到单时段近12000的流量峰值,一周来看,用户行为并未在周末有显著的变化。
(5)
重要推广客户数(R大F小):11769
重要价值客户数(R大F大):1323
重要唤回客户(R小F小):137
重要挽留客户(R小F大):6626
在这里插入图片描述

重要价值用户:需要重点关注。并且活动投放时需谨慎对待,不要引起用户反感。
重要推广客户:运营活动可以重点针对这部分用户,提高用户的产品使用频率,通过拼团打折、积分兑换等活动唤起用户注意力。
重要挽留客户:可以通过推送提醒,短信召回等方式,含促销活动等字眼,进行吸引唤回
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章