电商平台的用户行为分析,能一定程度的推动运营、产品等迭代,提供决策支持。
数据集来源: 阿里云池 样本量: 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);
#时间列

原先在这里我没有添加主键,导致一直报错,还用到了安全模式,这个方法是不可取的,建议先加好一列主键,再进行操作

SET SQL_SAFE_UPDATES = 0  #没有主键更新或删除时会报错,我得先设置安全模式关闭。
UPDATE xwfx
SET date_ymd = FROM_UNIXTIME(timestamp,'%Y-%m-%d') where userid >0
##记得要加where,不然有的版本会报错
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)适当调大。
最后得到下图,日期转换结束

SELECTMAX(date_ymd),MIN(date_ymd)
FROM xwfx;

发现有脏数据

看看数据集范围量,选择目标时间

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

选择2017.11.25至2017.11.30号这6天的数据

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

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

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

三、数据分析

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

select count(distinct t.userid)as 新增用户数,t.日期 from    (SELECT userid,min(date_ymd)as'日期'FROM taobao.xwfxwhere 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'


(3)分析日均访问量

日均访问量维持在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


(4)留存转化:各阶段行为人数及漏斗图

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


将收藏和加入购物车但没有买的整合成第二阶段
漏斗图

(5)流量转化率、成交转化率、跳出率

流量转化率=购买订单数量/浏览页面次数=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'));


(6)次日留存回购人数、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 xwfxwhere 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 4when t.最后一次交易距今时间 in(2,3) then 3when t.最后一次交易距今时间 in(4,5) then 2when t.最后一次交易距今时间 in(6,7) then 1when t.最后一次交易距今时间 >7 then 0
else null
end) as Recent,
(case when t.交易次数 >=16 then 4when t.交易次数 between 11 and 15 then 3when t.交易次数 between 6 and 10 then 2when t.交易次数 between 1 and 5 then 1when t.交易次数 =0 then 0
else null
end) as Frequentfrom(select userid,datediff('2017-12-01',max(date_ymd))as '最后一次交易距今时间',count(behavior)as '交易次数'from xwfxwhere 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

重要价值用户:需要重点关注。并且活动投放时需谨慎对待,不要引起用户反感。
重要推广客户:运营活动可以重点针对这部分用户,提高用户的产品使用频率,通过拼团打折、积分兑换等活动唤起用户注意力。
重要挽留客户:可以通过推送提醒,短信召回等方式,含促销活动等字眼,进行吸引唤回

保持渴求,不要沉寂

【数据分析实战经验】淘宝用户行为分析①-AARRR、RMF模型(数据量:百万级,工具mysql)相关推荐

  1. 数据分析实战之淘宝用户行为分析(3) -- 用户行为路径分析

    数据分析实战之淘宝用户行为分析(3) -- 用户行为路径分析 淘宝行为分析Tableau可视化展示 数据分析实战之淘宝用户行为分析(5) - 数据分析报告 数据分析实战之淘宝用户行为分析(4) - 用 ...

  2. 数据分析实战:淘宝用户行为分析

    文章目录 1. 数据概述 2. 分析思路 提出问题 提出假设 数据分析 3. 数据预处理 选择子集 补全表格 删除重复值 处理缺失值 处理日期时间(数据一致性) 异常值处理 表格预览 4. 数据分析 ...

  3. Python项目实战 —— 04. 淘宝用户行为分析

    Python项目实战 Python项目实战--目录 Python项目实战 -- 04. 淘宝用户行为分析 一.背景 二.解题思路 三.数据分析 3.1 数据清洗 3.2 数据分析 3.2.1 用户整体 ...

  4. 数据分析项目实战1——淘宝用户购买行为分析(天池)

    一.分析背景.数据来源.数据解释 https://tianchi.aliyun.com/dataset/649 由于userbehavior数据集的数据量较大,本次分析使用Navicat将前10万条数 ...

  5. 数据分析案例之淘宝用户行为分析完整报告

    一.项目背景 UserBehavior为淘宝用户行为的数据集,数据集包括了2017年11月25日至2017年12月3日之间,有大约82万随机用户的用户行为(行为包括点击pv,购买buy,加购物车cha ...

  6. 【数据分析实战】淘宝用户行为模式分析

    文章导览 目标定义 数据获取 数据抽样 探索性分析 数据清洗 用户行为分析 用户消费行为分析 漏斗分析 用户行为和商品种类分析 用户价值度RFM模型分析 1.目标定义 以淘宝APP2014年11月18 ...

  7. 哪个是更早的时间 date_淘宝用户行为分析(漏斗模型+pv,uv,pv/uv,复购率,用户活跃时间段)...

    数据来源https://tianchi.aliyun.com/dataset/dataDetail?dataId=46 用户行为表:用户ID,商品ID,用户行为.用户地点,商品大类ID,时间 需求:该 ...

  8. MySQL数据项目分析实战——淘宝用户行为分析

    MySQL数据项目分析实战--淘宝用户行为分析 一.项目背景 二.项目目标 2.1分析目的 2.2分析维度 三.数据的收集与整理 3.1数据来源 3.2数据说明 3.3理解数据 3.4导入数据 四.数 ...

  9. Python数据分析案例—淘宝用户行为分析

    赛题与数据 一.项目背景 本数据报告以淘宝app平台为数据集,通过行业的指标对淘宝用户行为进行分析,从而探索淘宝用户的行为模式,具体指标包括:日PV和日UV分析,付费率分析,复购行为分析,漏斗流失分析 ...

最新文章

  1. 【转】POJ 2104 K-th Number(2)
  2. 实践重于理论——创建一个监控程序探测WCF的并发处理机制
  3. 你必须知道的 SmartSql
  4. foreach循环符合就不往下走了_柴油发电机组冷却液循环故障解决方法
  5. Angular4中常用管道
  6. 看面试题感觉生疏的知识点
  7. python反距离权重法_反距离权重法 (Spatial Analyst)—ArcMap | 文档
  8. oracle存储过程(PL/SQL)
  9. [转]Linux芯片级移植与底层驱动(基于3.7.4内核)
  10. 《SQL必知必会》附录
  11. 生物信息小知识_1_reads.contigs.scaffolds...
  12. Mongodb副本集RECOVERING
  13. 机械革命 无界16pro闪屏
  14. 互联网技术架构——画龙点睛
  15. 天桥脑科学研究院推出“对话大脑”院士论坛:国际大咖畅谈脑机接口
  16. 一线互联网大厂中高级Android面试真题收录!大厂直通车!
  17. XML报表打印出错,乱码问题
  18. 谷歌seo关键词怎么做?Google如何优化关键词
  19. Android高德地图的定位
  20. webview打开淘宝天猫链接问题

热门文章

  1. 金仓数据库KingbaseES服务启动方法
  2. dell服务器卡在启动界面_Dell PowerEdge 服务器启动指南
  3. Android LinearGradient的使用
  4. 防己黄芪汤五苓散与“渴肿膝痛综合征”
  5. K-近邻算法(KNN)\3.14
  6. 如何使 Mysql自动生成序号列,序号自动增长
  7. matlab 实现2048游戏
  8. 测试架构师修炼之道_学习笔记
  9. 2021年茶艺师(初级)考试及茶艺师(初级)模拟考试
  10. grep 后加单引号、双引号和不加引号的区别