案例:如何用SQL分析电商用户行为数据
编辑导语:在日常工作中,经常会用到数据分析的方法,数据分析可以帮助我们快速清晰的了解目前数据走向,也可以对用户的活跃度和转化度进行分析;本文作者以“淘宝用户行为数据集”为例,用SQL进行分析,我们一起来看一下。
笔者之前主要是做增长方向的,平时工作中主要基于问题做数据分析,大部分时候都是怎么快怎么来,很少有各种工具、各种分析方法全来一遍的;所以本次借分析“淘宝用户行为数据集”为案例,梳理一下自己的数据分析技能。
本文以“淘宝用户行为数据集”的分析全过程为例,展示数据分析的全过程。
- 使用工具:MySQL、Excel、Navicat、PowerBI;
- 数据来源:阿里天池实验室-淘宝用户行为数据集;
- 分析类型:描述分析、诊断分析;
- 分析方法:漏斗分析、用户路径分析、RFM用户价值分析、活跃/存留分析、帕累托分析、假设验证分析。
目录如下:
一、分析流程和方法
1. 数据分析类型
当没有清晰的数据看板时我们需要先清洗杂乱的数据,基于分析模型做可视化,搭建描述性的数据看板。
在没有很明确问题或问题很多很复杂的情况下,直接看杂乱的源数据不仅效率很低,也很难得到有价值的信息。
然后基于描述性的数据挖掘问题,提出假设做优化,或者基于用户特征数据进行预测分析找规律,基于规律设计策略。
简单来说:
- 描述性分析就是:“画地图”;
- 诊断性分析就是:“找问题”;
- 预测性分析就是:“找规律”;
2. 数据分析的两个典型场景
在数据分析中有两个典型的场景:
一种是有数据,没有问题,需要先整体分析数据,然后再根据初步的描述分析,挖掘问题做诊断性分析,提出假设,设计策略解决问题。
另一种是已经发现了问题,或者已经有了假设,这种做数据分析更偏向于验证假设。
二、淘宝用户行为分析
本次是对“淘宝用户行为数据集”进行分析,在分析之前我们并不知道有什么问题,所以需要先进行描述性分析,分析数据挖掘问题。
1. 解读元数据
我们首先来看下这个数据集的元数据:
数据集包含了2017年11月25日至2017年12月3日之间,有行为的约一百万随机用户的所有行为(行为包括四种:点击商品详情页、购买商品、将商品放入购物车、收藏商品)。
数据集的每一行表示一条用户行为,由用户ID、商品ID、商品类目ID、行为类型和时间戳组成,并以逗号分隔。
本数据集包含:用户数量987994、商品数量4162024、商品类目数量9439;所有行为数量100150807。
2. 选择分析方法
根据以上数据字段我们可以拿用户行为为主轴从纵深方向提出一些问题,然后再从数据中找答案
纵向:
- 这个数据集中用户的日活跃和周活跃时间有什么规律吗?
- 在当日活跃的用户次日、三日、四日……还有多少活跃?
深向:
- 用户从浏览到购买的整体转化率怎么样?
- 用户从浏览到购买的路径是怎么样子的?
- 平台主要会给用户推送什么商品?
- 用户喜欢什么类目?喜欢什么商品?
- 怎么判断哪些是高价值用户 ?
下面是叮当整理的常用分析方法:
我们可以给前面的问题匹配一下分析方法,便于后面的分析:
3. 数据清洗
为了便于后面的数据分析,在分析之前我们需要先对做一下清洗。
1)数据预处理
看元数据(字段解释,数据来源,数据类型,数据量……)初步发现问题为之后的处理做准备。
数据导入:由于整体数据集有100W+条数据,导入太慢,本次仅导入10W条分析。
添加列名:数据导入时默认使用第一行数据作为列名,由于本数据集没有列名,需要添加。
2)缺失值清洗
确定缺失值范围,去除不需要字段,填充缺失内容。
3)格式内容清洗
根据元数据格式和后续分析需要的格式对数据进行处理。
timestamps字段是时间戳字符类型,而后面要做存留分析和用户活跃时间段需要用到时间戳中的日期字段和时间字段,在这里需要提前分下列。
4)逻辑错误清洗
去除重复值,异常值。
去除重复值:并把用户ID、商品ID、时间戳设置为主键。
异常值处理:查询并删除2017年11月25日至2017年12月3日之外的数据。
剔除不在本次分析范围的数据。
查询并删除小于2017-11-25的。
验证数据:
4. 描述分析
1)这个数据集中用户的日活跃和周活跃时间有什么规律吗?
分析思路:
从“时间戳“字段中抽取出“日期”和“小时”的数据,创建一个“活跃时间”字段,并从“行为类型”中用分组方式把用户的“浏览”“收藏”“加购物车”“购买”行为抽离出来,组成一个视图表,导出到Excel中用透视表分析用户的日活跃规律和周活跃规律。
SQL提数:
增加活跃时间字段。
查询用户 活跃时间分布,并创建视图。
Excel可视化:
活跃曲线整体为上升状态,同为周六日,12月2号、3号相比11月25日、26日活跃度更高。
是否是用户增长带来的?
用户在周六周日相比其他时间更活跃(周六周日为休息日,用户有更多时间。)
一天内用户活跃的最高峰期为21点(用户在这个时间段空闲较多。)
正常工作职场工作者的睡前时间,996的应该也下班啦。
2)在当日活跃的用户次日、三日、四日……还有多少活跃?
分析思路:
用户存留的分析可以分为“新用户存留”和“活跃用户存留”。
新用户存留一般指:新注册用户在一定时间周期内还会不会再登录。
活跃用户存留需要根据产品类型和用户场景选择“关键行为”和选择“时间周期”。
- 关键行为:淘宝作为购物网站,用户浏览,收藏,加购,购买商品与交易行为高度相关都可作为关键行为。
- 时间周期:淘宝拥有海量的SKU,基本可以满足用户各方面的需求,理论上用户每天都有购买需求,时间周期可以按天。
SO,实际上这个问题就是在求,数据集第一日在APP有关键行为的用户在第二天、第三天……还会继续在APP中有关键行为的用户占比。
我们需要先列出每用户每天及当天后面又活跃的日期,用于后面求次日存留,三日存留……之后按日期对用户进行分组,并抽取之后9天依然活跃的用户数量;最后用活跃用户表中后续活跃用户除首日活跃数量乘100加%号。
SQL提数:
列出每用户每天及当天后面又活跃的日期,并创建“活跃时间间隔表”用于后面求次日存留、三日存留……。
对“活跃时间间隔表视图”引用进行分组统计,计算每日存留人数并创建视图。
对存留人数表进行计算,统计活跃用户留存率。
Excel可视化:
- 用户增长:从2017年11月15日致2017年12月3日,活跃用户新增38%;
- 存留增长:从2017年11月15日致2017年12月3日,活跃用户次日留存增长18.67%,当日的活跃用户留存也在快速增长,第七日留存比次日留存高18.56%。
假设随时间增长的留存率提升来源于新dau提升策略的优化,后续存留的提升来源于召回策略的优化。
3)用户从浏览到购买的整体转化率怎么样?
分析思路:
将数据集中按不同用户,不同商品维度进行分组获得某一用户行为对某一商品不同行为的数据;然后对“用户行为漏斗表”中的浏览、加购物车、收藏、购买行为进行分组统计。
SQL提数:
把各种用户行为分离出来并创建视图方便后续查询用户行为数据。
查询整体数据漏斗。
Excel可视化:
用户从浏览到购买整体转化率2.3%,具体主要在哪个环节流失还需要再细分用户路径分析。
4)用户从浏览到购买的路径是怎么样子的?
分析思路:
穷举所有可能的用户路径,引用“用户行为漏斗表”视图,计在数据中点击行为大于0,购买行为大于0,其他两项为0,则判定本用户购买路径为;点击—购买,其他路径同理,多次查询并用Excel表记录查询数据,用户PowerBI桑基图做可视化。
SQL提数:
PowerBI可视化:
用户从浏览到购买的路径主要有4条,路径越长转化率越低:
- 路径1:浏览→购买:转化率1.45%;
- 路径2:浏览→加购物车→购买:转化率0.33;
- 路径3:浏览→收藏→购买:转化率0.11%;
- 路径4:浏览→收藏→加购物车→购买:转化率0.03%;
以上转化率等于起始路径到购买的转化
5)平台主要给用户推送什么商品?
分析思路:
虽然我们没法直接从数据中找到平台推送的数据,但作为平台流量倾斜的商品,浏览量一般都会比其他商品的浏览量高一些;我们可以引用“用户行为漏斗表”视图统计浏览量前100的商品及其类目。
SQL提数:
Excel可视化:
描述性分析:
浏览量top100的商品浏览量呈阶梯分布,越靠前的阶梯之间的落差相对越大在这个阶梯中的商品越少,越靠后商品浏览量阶梯之间的落差相对越小,同阶梯内的商品越多。
是否是用于淘宝流量分配规则的原因造成的?(假设淘宝的规则是给所有商品分配的初始流量是一样的,后期这些商品中那些商品转化率高就给哪些商品更多曝光。)
浏览量TOP100的商品所属类目中,4756105、3607361、4357323三个类目浏览量远超其他类目。
这个几个类目商品类型是否是高频刚需类型的呢?
6)用户喜欢什么商品?
分析思路:
找高转化率的商品(销量高的有可能只是低价或者流量大)。
SQL提数:
查询计算商品转化率,升序排列,取前100个。
Excel可视化:
描述性分析:
从商品看:有17款商品转化率超过了1。
是否是由于用户直接从购物车或者商品收藏直接复购,未点击商详?
从类目看:这些商品所属类目分布均匀,除965809、4801426、2735466、2640118、5063620、4789432、2945933这7个类目之外,其他类目都只有一个商品在转化率TOP100的商品中。
是否是由于淘宝是根据“同一类目下的高转化商品”给用户做推荐的?
7)怎么判断哪些是高价值用户 ?
分析思路:
用户价值分析常用的分析方式是RFM模型。
RFM模型是3个指标的缩写,最近一次消费时间(R)、消费频率(F)、消费金额(M)。
然后给这三个指标根据价值分5个等级 ,进行打分计算分值和平均值,然后根据分值与平均值对比,分出“高”“中”“低”,综合进行用户分层。
本次分析中的R,F,M具体定义(仅用于演示分析方法,无实际业务参考价值):
- R:根据用户最近一次的购买时间与2017年12月3日之间的差值,判断用户最近一次消费时间间隔;
- F:将数据集中用户在2017年11月25日至2017年12月3日9天时间内的购买次数作为消费频率;
- M:由于本数据集中未包含购买金额字段,暂时排除此指标。
SQL取数与分析:
建立打分标准:先计算R,F的值,并排序,根据R,F值最大值和最小值得区间设计本次得打分标准。
关于打分标准:不同业务的用户消费频率、消费金额、精细化运营策略与成本……都是不同,一般常用”分位数“建立打分标准;由于SQL并不是专业得统计分析工具,计算分位数较为复杂,本次仅使用最大值和最小值的区间初略建立规则。
分位数:是指在统计学中把所有数值由小到大排列并分成几等份,取处于对应几个分割点位置的数值。
查询并计算R,F值创建视图:
引用RF数值表,分别查询R,F的最大值和最小值:
结合人工浏览的建立打分标准:
消费时间间隔:在1~8区间内四等分。
消费频率:由于人工 浏览时发现很少有超过20次购买的,故消费频率在20以内四等分。
给R,F按价值打分:
计算价值的平均值:
用平均值和用户分类规则表比较得出用户分类:
查询各类用户数量:
Excel可视化:
由于缺失了商品价格部分的数据,本模块暂时没有分析结论。
5. 诊断分析
通过描述性分析得到可视化的数据后,我们一般会先看一下是否符合业务常识,如:假设一个页面的UV(浏览人数)比PV(浏览次数)还高,那这个数据质量肯定是有问题的。
如果符合常识接下来我们会通过与行业平均数据和本产品的同比环比对比看是否正常,如果不正常就要找原因,设计解决方案,如果正常那就看是否有可以优化的地方。
1)诊断分析结论
我们首先来看一下这些描述性分析是否符合业务常识和指标是否正常:
a. 活跃曲线整体为上升状态,同为周六日,12月2号,3号相比11月25日,26日活跃度更高。
正常:结合描述分析4中的活跃用户的增长。
b. 用户在周六周日相比其他时间更活跃。
正常:周六周日为休息日,用户有更多时间来刷淘宝,反映在数据上就是活跃度的增加。
c. 一天内用户活跃的最高峰期为21点。
正常:用户在这个时间段有空闲,996的都下班啦~
d. 从2017年11月15日致2017年12月3日,活跃用户新增38%。
还需验证:如果是由于新注册用户或者老用户召回策略带来的增长符合常识,具体还需结合新注册用户数据和用户召回策略数据做验证。
e. 从2017年11月15日致2017年12月3日,活跃用户次日留存增长18.67%,当日的活跃用户留存也在快速增长,第七日留存比次日留存高18.56%。
不符合常识:因为从长期来看用户都是会流失的,只是生命周期长短问题,而从淘宝的用户行为来看同批用户的存留数据竟然随着时间的增加而增加。
假设场景可能是这样的:用户小A注册了淘宝APP,第二天就不再登录了,而第三天收到了淘宝的推荐提醒(APP消息、短信……);在消息中发现了自己喜欢的商品,而且还有优惠下单买了,第四天又收到了淘宝的消息,还是自己喜欢的。
这里的具体数据还需要结合用户生命周期运营的策略和数据做验证。
f. 用户从浏览到购买整体转化率2.3%。
正常,根据之前了解到的电商数据,多种客单价的商品(几十~几千)在一起,整体转化率在2%~3%之间,当然具体还需要结合历史的同比,环比数据取看。
g. 用户从浏览到购买的路径主要有4条,路径越长转化率越低。
正常:从流量的角度,每多一个步骤就会多一些用户流失这个符合常识。
h. 浏览量top100的商品浏览量呈阶梯分布,越靠前的阶梯之间的落差相对越大在这个阶梯中的商品越少,越靠后商品浏览量阶梯之间的落差相对越小,同阶梯内的商品越多。
待验证:假设淘宝会给高转化的爆款商品更多的曝光,商品浏览量呈金字塔分布是正常的。
i. 浏览量TOP100的商品所属类目中,4756105、3607361、4357323三个类目浏览量远超其他类目。
还需验证:抽取购买购买次数判断这个几个类目商品类型是否是高频刚需类型的呢?
j. 从商品看:有17款商品转化率超过了1。
不正常:
还需验证:是否是由于用户直接从购物车或者商品收藏直接复购,未点击商详?
k. 从类目看:这些商品所属类目分布均匀,除965809,4801426,2735466,2640118,5063620,4789432,2945933这7个类目之外,其他类目都只有一个商品在转化率TOP100的商品中。
还需验证:是否是由于淘宝是根据“同一类目下的高转化商品”给用户做推荐的?
2)假设与验证
根据以上诊断分析我们梳理出了以下假设,做假设验证。
假设1:这些商品中有高转化率的爆款商品。
引用“商品转化率视图”查询排名前5的商品转化率:
对比同类目的其他商品转化率:
对比浏览量TOP5的商品,发现这些商品转化率在同一类目下并不高,假设不成立。
假设2:4756105,3607361,4357323三个类目属于高频刚需类目。
抽取这几个类目的商品某买频次数据验证。
创建类目购买频次表:
计算类目购买频次平均值:
查询4756105、3607361、4357323三个类目的购买频次:
4756105、3607361、4357323三个类目的用户购买频次明显高于平均值,假设成立。
假设3:有部分用户是未点击商详直接从收藏和购物车购买的。
查询转化率超过1的商品的用户行为数据:
用户不是直接从收藏和购物车购买的,只是后续复购未点击商详,假设不成立。
假设4:淘宝推荐的商品主要是“同一类目下的高转化商品”。
给浏览量TOP100的商品和转化率TOP100的商品做匹配看其中重合的商品有多少。
用Excel对浏览量TOP100的商品ID和转化率TOP100的商品ID进行去重,结果无重复值,假设不成立。
3)结论:
用户活跃:用户活跃曲线整体呈上升趋势,在一周中周六,周日活跃度比平时更高;在一天中用户活跃曲线从凌晨4点开始往上升,在中午12点和下午5~6点有两个小低谷(吃饭),到晚上9点时活跃度达到顶峰。
用户留存:从2017年11月15日致2017年12月3日的用户留存数据来看,淘宝的用户留存数据较好,活跃用户次日留存增长18.67%;当日的活跃用户留存也在快速增长,第七日留存比次日留存高18.56%。
用户转化:整体转化2.3%,用户从浏览到购买的路径主要有4条,路径越长转化率越低。
- 路径1:浏览→购买:转化率1.45%;
- 路径2:浏览→加购物车→购买:转化率0.33;
- 路径3:浏览→收藏→购买:转化率0.11%;
- 路径4:浏览→收藏→加购物车→购买:转化率0.03%;
平台推荐与用户偏好:从数据集中的数据来看,排除用户兴趣偏好标签,淘宝给用户用户推送的商品主要是高频刚需的类目,促使用户复购,流量回流平台。
以上结论受数据量和数据类型的影响,并不一定准确,仅用来练习数据分析方法。
作者:小叮当,微信:zxxp153,公众号:叮当的成长地图
本文由 @小叮当v1.6 原创发布于人人都是产品经理。未经许可,禁止转载。
题图来自Unsplash,基于CC0协议
这就是埋点,增删改查!
学习了
请问0基础学sql可能吗
还没看完,我果断登录、关注、收藏、点赞
学习了
请问数据源有链接吗
大牛
干货,学习到了!!!
🤓