电商用户行为分析报告内容如下(数据链接):
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 userbehavior
GROUP BY 行为类型
ORDER BY 行为总量 desc;
通过对上图概括性指标的获取,可知在userbehavior表以用户行为为主,源数据集逾百万条,以导入MySQL数据10万条作为样本集进行分析,具体数据导入和清洗可详见第七部分附录含sql对应操作语句。
点击、收藏、加购和购买,4个行为贯穿用户的下单过程中,而其中的购买是一笔订单处于完成状态中的重要标志,所以本文依据统计周期内订单的完成状态把用户划分为“未购用户”和”已购用户”,再基于分组对用户做进一步的分析,具体分析思路见下:
-- 根据统计周期内的订单完成状态(即行为类型='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 total
from (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 userbehavior
where 用户id not in (SELECT DISTINCT 用户id
from 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;
得出结论:从图表可以看出,当用户处于闲逛状态时,更倾向于点击浏览单品,在没有明确购物需求下,产生收藏和加购的概率相对较低,且浏览的商品种类和数量无明显规律呈现。假设成立,但因本数据集10万条是完整数据集的子集,故在结论上还需多种样本结论验证。
4.1.2 提出假设2:用户有明确购买需求,但并不紧急需要,所以先收藏加购后等待活动营销时间节点再下单购买;
收集证据:下图对组合行为进行重点分析,尤其是通过时间趋势联系双12活动,观察未购用户在此期间的行为组合类型和日行为总量变化趋势;
得出结论:结合图表,猜测未购用户在有购买需求的前提下,点击商品查看过程中更容易产生加购和收藏行为,且结合时间变化趋势,可推测此类用户在活动中更容易被转化,假设成立。
4.1.3 提出假设3:APP深度用户,已对APP产生习惯依赖,即使未有购物需求,也会自发登录APP进行商品点击浏览等行为;
收集证据:汇总统计未购用户在统计周期内的登录天数;
-- 未购用户日登录频次
SELECT 用户ID,count(DISTINCT 日期) as '登录天数',count(行为类型) as '行为总量'
from 未购用户表
group by 用户ID;
得出结论:从上图可发现,近50%的用户登录天数>=7天,可侧面说明此类用户对app已养成深度购物习惯,随着平台app玩法的日渐增多,用户对平台的黏性更强,尤其是现在很多品牌都有会员制,采取签到等活动,因此假设成立。
4.1.4 提出假设4:未购用户因产品因素而未进行最终购买转化,因素包括但不限于产品断货、用户评论数量少或评论带有负面关注点等;
收集证据:因userbehavior表不涉及产品关于供货量、缺货量和评论量等信息,故无数据可论证;
得出结论:因无数据明证,故假设无法论证,需后续补充数据验证。
4.1.5 提出假设5:未购用户存在比价心理,推测被竞品转化;
收集证据:因userbehavior表不涉及竞品和产品价格等信息,故无数据可论证;
得出结论:因无数据明证,故假设无法论证,需后续补充数据验证。
4.2 已购用户
-- 创建已购用户信息视图
create view 已购用户表(用户ID,商品ID,商品类目ID,行为类型,行为日期,日期,时间) as
SELECT 用户ID,商品ID,商品类目ID,行为类型,行为日期,日期,时间
from userbehavior
where 用户id in (SELECT DISTINCT 用户id
from 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 t
where 成交单量> 0
order 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 结论
基于用户各行为分析,可发现用户在购物APP上更倾向于组合行为,即点击商品的同时会伴随收藏和加购行为,而收藏和加购中后者的频率远高于前者,与消费者的消费诉求相关;
未购用户出于闲逛心理和对app的依赖感,即使在无明确消费诉求时也会习惯登录app对商品点击浏览,对比有明确需求的用户则会对心仪商品进行收藏加购,以便在活动节点上下单购买;
在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日之间,检查结果如下:
截图显示,有之前的日期数据存在,下一步选取不在要求范围内的数据进行剔除,操作如下: