数据人学习平台上线了:www.shujurenclub.com
@知乎:鲸歌
电商行业数据分析师;
为头部品牌提供数据咨询服务;
热衷学习与分享;
电商用户行为分析报告内容如下(数据链接):
https://tianchi.aliyun.com/dataset/dataDetail?dataId=649&userId=1
01
分析背景
你知道吗?1999年成立的阿里巴巴,现在的年龄已经20 了,可想而知,它陪伴了多少人的青葱岁月!
你知道吗?现在的淘宝用户规模已超7亿,每一位用户在淘宝上留下的印迹,积少成多,可能是绕地球的n圈。
你知道吗?未来的商业世界可能会是全连接的形式,商业世界会愈加透明,未来可期,你准备好了吗?
02
分析目的
通过对用户行为的解读分析,以此来洞察隐藏在用户各个行为背后的寓意,结合洞察的结论提出相关的优化建议给至平台和商家,从而实现平台、商家和用户的共赢。
03
分析思路
— userbehavior表的概括性指标SELECT count(distinct 用户ID) as ‘用户总量’,count(DISTINCT 商品ID) as ‘商品总量’,count(DISTINCT 商品类目ID) as ‘商品类目总量’,count(DISTINCT 日期) as ‘统计时间天数’from userbehavior;SELECT 行为类型,count(行为类型) as ‘行为总量’from userbehaviorGROUP BY 行为类型ORDER BY 行为总量 desc;
通过对上图概括性指标的获取,可知在userbehavior表以用户行为为主,源数据集逾百万条,以导入MySQL数据10万条作为样本集进行分析,具体数据导入和清洗可详见第七部分附录含sql对应操作语句。
— 根据统计周期内的订单完成状态(即行为类型=’buy’)将用户区分为:已购用户和未购用户SELECT sum(case when 行为数量 = 0 then 1 else 0 end) as ‘未购用户’,sum(case when 行为数量 > 0 then 1 else 0 end) as ‘已购用户’,sum(case when 行为数量 = 0 then 1 else 0 end) sum(case when 行为数量 > 0 then 1 else 0 end) as totalfrom (SELECT DISTINCT 用户id, sum(case when 行为类型=’buy’ then 1 else 0 end) over (PARTITION by 用户id ) as ‘行为数量’from userbehavior) as t
因数据集时间集中在2017年11月25日至12月3日之间,所以在分析中产生的结论还需其他样本集的进一步论证。
04
分析内容
4.1
未购用户分析
— 创建未购用户信息视图create view 未购用户表(用户ID,商品ID,商品类目ID,行为类型,行为日期,日期,时间) as SELECT 用户ID,商品ID,商品类目ID,行为类型,行为日期,日期,时间from userbehaviorwhere 用户id not in (SELECT DISTINCT 用户idfrom userbehavior where 行为类型 = ‘buy’);
4.1.1 提出假设1:用户闲逛心理,无明确购买需求;
收集证据:下图先对未购人群的行为分组,划分为单一行为和组合行为【条形图】,后对单一行为(pv)进行商品和品类洞察【散点图】;
— 人群行为统计SELECT 用户id,max((case when 行为类型= ‘pv’ then ‘pv’ else 0 end ))as ‘pv’,max((case when 行为类型= ‘fav’ then ‘fav’ else 0 end )) as ‘fav’,max((case when 行为类型= ‘cart’ then ‘cart’ else 0 end )) as ‘cart’from 未购用户表GROUP BY 用户id;
4.1.2 提出假设2:用户有明确购买需求,但并不紧急需要,所以先收藏加购后等待活动营销时间节点再下单购买;
收集证据:下图对组合行为进行重点分析,尤其是通过时间趋势联系双12活动,观察未购用户在此期间的行为组合类型和日行为总量变化趋势;
收集证据:汇总统计未购用户在统计周期内的登录天数;
— 未购用户日登录频次SELECT 用户ID,count(DISTINCT 日期) as ‘登录天数’,count(行为类型) as ‘行为总量’from 未购用户表group by 用户ID;
得出结论:从上图可发现,近50%的用户登录天数>=7天,可侧面说明此类用户对app已养成深度购物习惯,随着平台app玩法的日渐增多,用户对平台的黏性更强,尤其是现在很多品牌都有会员制,采取签到等活动,因此假设成立。
收集证据:因userbehavior表不涉及产品关于供货量、缺货量和评论量等信息,故无数据可论证;
得出结论:因无数据明证,故假设无法论证,需后续补充数据验证。
4.1.5 提出假设5:未购用户存在比价心理,推测被竞品转化;
收集证据:因userbehavior表不涉及竞品和产品价格等信息,故无数据可论证;
得出结论:因无数据明证,故假设无法论证,需后续补充数据验证。
4.2
已购用户
— 创建已购用户信息视图create view 已购用户表(用户ID,商品ID,商品类目ID,行为类型,行为日期,日期,时间) as SELECT 用户ID,商品ID,商品类目ID,行为类型,行为日期,日期,时间from userbehaviorwhere 用户id in (SELECT DISTINCT 用户idfrom userbehavior where 行为类型 = ‘buy’)
4.2.1 统计周期内,已购用户的订单数量组成比例分布情况是什么样?
— 已购用户的成交单量分布SELECT 用户ID,成交单量from (SELECT DISTINCT 用户id, sum(case when 行为类型=’buy’ then 1 else 0 end) over (PARTITION by 用户id ) as ‘成交单量’from userbehavior) as twhere 成交单量> 0order by 成交单量 desc
由上图可知,80%的订单量<=4单,且1单占据Top1,那么为什么仅下1单的用户那么多呢?
提出假设:推测在统计周期内仅完成1单的用户,相较多单用户【>=2单】其决策周期较长;
收集证据:将仅下1单的用户购买时长与整体已购用户的购买时长做对比;
得出结论:通过以上2图,可发现在统计周期内,仅下一单的用户决策时间较长,影响决策的因素可能是产品的价格等,假设成立。
4.2.2 统计周期内,已购用户的行为转化贡献占比是什么样?
— 已购人群行为统计SELECT 用户id,max((case when 行为类型= ‘pv’ then ‘pv’ else 0 end ))as ‘pv’,max((case when 行为类型= ‘fav’ then ‘fav’ else 0 end )) as ‘fav’,max((case when 行为类型= ‘cart’ then ‘cart’ else 0 end )) as ‘cart’,max((case when 行为类型= ‘buy’ then ‘buy’ else 0 end )) as ‘buy’from 已购用户表GROUP BY 用户id;
4.2.3 统计周期内,已购用户在日期时间分布上呈现什么样的特征?
— 已购用户日期特征SELECT 日期,DAYNAME(日期) as ‘星期类型’,count(行为类型) as ‘行为数量’,count(distinct 用户ID) as ‘日访客数’from 已购用户表group by 日期;
SELECT hour(时间) as ‘小时’,count(行为类型) as ‘行为数量’,count(distinct 用户ID) as ‘日访客数’from 已购用户表group by hour(时间) ORDER BY 小时;
05
结论
在9天的统计周期内,已购用户的完成4笔以内的订单占据仅80%,其中仅完成1单的用户相对整体已购用户,其决策周期人均4天左右;
对已购用户的时间分析,可得出单日变化趋势容易受节假日活动的影响,且变化明显。对1天各小时的分析,用户的行为趋势与工作通勤休息密切相关,同时上午10点一般是聚划算活动的开盘时间,所以这也是造成用户在10点形成小高峰的原因。
06
建议
提升用户组合行为:建议商家在店铺首页、商品主图和详情页等版块通过图文视频等形式引导用户将产品收藏加购,且在商家后台将近期有过收藏加购行为的用户圈选出来进行定向关怀,比如发送优惠券等;
引入RFM分析模型,对人群进行精细化运营:根据用户价值进行打分,将用户依据价值高低进行分类,对其中重要价值用户、重要发展用户和重要保持用户等进行特定运营,增加客户黏性,比如上面所说的app依赖用户;
恰当的时间点黏住客户:根据用户在时间节点上的规律,可在白天利用碎片化时间去触达客户,比如微淘等内容营销,而在晚上的7-9点之间则可以通过直播等形式让用户加入互动。
07
附录-数据清洗过程
7.1
选择子集
本文所使用表UserBehavior,含5个字段,分别是:用户ID、商品ID、商品类目ID、行为类型和时间戳,导入MySQL数据后会发现“时间戳”这一字段不可直接使用,需进行sql语句处理成日期型,解决方案如下:
‘时间戳’那一列建议保留,亦可视具体情况做删除处理。
因UserBehavior表本身字段较少,且5个字段都是关键字段,所以在子集选择上不做进一步处理。
7.2
列名重命名
导入MySQL数据后,UserBehavior表并无具体对应字段名,显示的是首行数据信息,见下图:
为方便后续操作,添加对应字段名:
7.3
删除重复值
导入MySQL数据库共10万条记录,执行上述操作后,仍然显示10万,因此不存在重复值。
7.4
缺失值处理
缺失值有3种表现形式,分别是空格、null和空值,因此严谨起见需3种形式轮番检查,具体语句见下:
以上语句执行后,均是10万条,所以没有缺失值存在。
7.5
一致化处理
以UserBehavior表的’时间戳’字段为例,将由‘时间戳’复制的‘行为日期’进一步拆分,拆分为年月日和具体时分秒2列,操作见下:
7.6
异常值处理
检查UserBehavior表的时间段是否在11月25至12月3日之间,检查结果如下:
截图显示,有之前的日期数据存在,下一步选取不在要求范围内的数据进行剔除,操作如下:
想了解更多数据知识也欢迎看,7位大厂数据产品写的《大数据实践之路:数据中台 数据分析 产品应用》这本书。