18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 电子商务 > 某电商平台用户行为数据分析

某电商平台用户行为数据分析

时间:2023-03-16 00:24:02 | 来源:电子商务

时间:2023-03-16 00:24:02 来源:电子商务



一、背景与分析目的

近些年来,随着经济的增长及科技的发展,电商行业发展迅速,运营过程中所产生的可供操作数据随之爆炸性增长,随着行业竞争加剧,纯流量运营的时代已经远去。为了盈利,各家电商公司越来越注重精细化的运营,注重对于数据的分析。

本文旨在通过对某电商平台用户的行为(用户行为包括点击、喜欢、购买、加购)数据进行分析,进而提出可以落地的业务建议,以促进业务的增长。

二、理解数据

1、原始数据集介绍

数据集(UserBehavior)包含了2017年11月25日至2017年12月3日之间,某电商用户的行为(行为包括点击、购买、加购、喜欢)。

2、字段含义

字段说明
user_id整数型,用户ID
item_id整数型,商品ID
category_id整数型,商品品类ID
behavior_type字符型,行为类型('pv','buy','cart','fav')
timestamp整数型,时间戳
behavior_type(用户行为)一共有四种,分别是:

行为类型说明
pvpage view,浏览
buy购买
cart加入购物车
fav收藏
三、数据清洗

1、查询是否有重复值

category_id字段指的是商品的大类名称,item_id字段指的是是某个商品的唯一标识,因此,查重时使用item_id字段已经足够了

select *from userbehaviorgroup by user_id,item_id,behavior_type,timestamphaving count(*) > 1;查找出来所有字段均为Null值,说明该数据集中没有重复值。

2、查询是否存在空值

select *from userbehaviorwhere user_id is NULL or category_id is NULLor item_id is NULL or behavior_type is NULLor timestamp is NULL;查找出来所有字段均为Null值,说明该数据集中没有空值。

3、如何处理时间戳数据?

在计算机中,「时间戳」一般是指 Unix 时间戳,即自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数。时间戳不会跟着时区的改变而改变,所以不管在哪个时区,时间戳都是一致的。

为了后文分析方便,我们通过'timestamp'字段,又建立了一系列的时间字段,代码实现如下:

-- 给表添加一列叫dates,用于记录行为发生的日期,如'2017-11-25'为2017年11月25日alter table userbehavior add datesvarchar(255);-- 给新列dates赋值update userbehaviorset dates =from_unixtime(timestamp,'%Y-%m-%d');-- 给表添加一列叫hours,用于记录发生的小时时间,如'21'为晚上9点alter table userbehavior add hoursvarchar(255);-- 给新列hours赋值-- 特别注意,此处的时间格式中,"小时“部分的字符需要用大写的H,才能转为24小时制update userbehaviorset hours = hour(from_unixtime(timestamp,'%H:%i:%s'));-- 给表添加一列叫datetime,用于记录行为发生的日期和时间,如'2017-11-25 21:30:00'为2017年11月25日晚上9点30分alter table userbehavior add datetimevarchar(255);-- 给新列datetime赋值update userbehaviorset datetime =from_unixtime(timestamp,'%Y-%m-%d %H:%i:%s');-- 给表添加一列叫weekday,用于记录行为发生在星期几,如'1'为星期一alter table userbehavior add weekdayvarchar(255);/*-mysql中,可以通过函数WEEKDAY()将日期转化为星期几,但是索引是从0开始,即0表示星期一、1表示星期二.....-为了使该字段更符合阅读习惯,可以将其进行加1操作,结果即为1对应星期一,2对应星期二...*/update userbehaviorset weekday = WEEKDAY(datetime) + 1;接着,我们将超出分析范围的时间范围剔除掉:

-- 将超出指定时间范围的数据剔除掉DELETEfrom userbehaviorwhere dates < '2017-11-25'or dates > '2017-12-03';经过处理后,数据集如下(以下给出部分数据)

四、明确问题

1、整体认识:描述性统计分析

首先,我们要对业务有个整体性的认识,本案例主旨是分析用户行为,所以要知道总共有多少会员。

select count(distinct user_id) as 会员数from userbehavior;即在2017年11月25日至2017年12月3日之间,总共记录了983名会员的行为数据。

2、AIPL漏斗分析

知道整体有多少个会员后,接下来要进一步对他们的行为进行观察,分析的是电商用户行为,在电商领域我们比较常用的方法是阿里提出的AIPL营销模型:

A(Awareness)认知:广告曝光、页面浏览人群
I(Interested)兴趣:关注互动、浏览店铺主页、浏览产品详情页、收藏加购
P(Purchase)购买:支付
L(Loyalty)忠诚:复购、评论、分享
AIPL营销模型可以将会员行为与相应的运营周期联系起来。

【AI】部分就是运营中的拉新,处于此阶段时,浏览、收藏、加购的用户数越多,运营拉新指标就完成地越好,但此部分同样意味着拉新成本的支出。

【PL】则对应着运营的收割行为,通俗地讲,即是将前期推广引进的新客变现,以此回收拉新成本,提升ROI。

回到本案例,将会员的浏览、收藏、加购、购买消费划入到AIPL的各个流程中,便于我们根据不同的流转情况,对运营现状有整体的把握。

接下来,利用CASE表达式对表结构进行【行列互换】,此操作通过【创建视图】来完成:

create view behavior ASselect user_id,datetime,dates,hours,max(case behavior_type when 'pv' then 1 else 0 end) as view,max(case behavior_type when 'fav' then 1 else 0 end) as favor,max(case behavior_type when 'cart' then 1 else 0 end) as cart,max(case behavior_type when 'buy' then 1 else 0 end) as buyfrom userbehaviorgroup by user_id,datetime;创建出的视图如下所示(给出部分数据)

计算处A、I、P的值:

对A、I、P阶段的行为进行统计,代码实现如下:

select sum(view) as 'A',sum(favor)+sum(cart) as 'I',sum(buy) as 'P'from behavior;计算L的值:

对于会员复购行为,计算思路是:

第一步,查询每位会员第N次消费的记录(并给出部分数据)

select user_id,datetime,buy,dense_rank() over (partition by user_id order by datetime) as n_consumefrom behaviorwhere buy = 1order by user_id,datetime;第二步,剔除掉用户第一次购买的记录并计算复购次数

select sum(buy) as Lfrom(select user_id,datetime,buy,dense_rank() over (partition by user_id order by datetime asc) as n_consumefrom behaviorwhere buy = 1) as twhere n_consume > 1;3、总结

AIPL漏斗图如下图所示,

进行整体分析的目的是为了找出用户运营存在的问题或特点,并提出接下来的分析目标。一般情况下,要用到到对比分析来判断用户运营的优劣,比如同比和环比,因为案例中缺少相关的数据,故无法使用对比分析,仅从业务经验出发进行判断。

接下来,根据业务经验按轻重缓急列出问题的重要性排序,有序进行分析,这样业务才能在有限资源的条件下选择分析结论进行落地实践:

1)【A→I】拉新环节,环节转化率为9.12%,相对来说较差,可能拉新完成率较低,值得注意。将该问题列为优先级:重要紧急P0

2)【P→L】收割(促进客户复购),环节转化率为64.31%,做得较好,可以据此总结业务经验或复购规律,进一步推广应用。将该事项列为优先级:重要不紧急P1

3)【I→P】收割(促进客户首次购买),环节转化率为23.02%,效果还可以,可以进一步挖掘用户购买转化路径。将该事项列为优先级:不重要不紧急P2

五、数据分析

【P0:A→I】环节的转化率较低,此案例应用【人货场】方法进行分析

【P1:P→L】环节中用户复购表现教好,通过【用户复购分析】,挖掘、总结复购特征

【P2:I→P】环节目的在于进一步透析用户购买行为,采用【AIPL+RFM】分析方法进行分析

1、【P0:A→I】

此环节计划通过【人货场】分析,解决A用户认知到I兴趣用户行为转化率低的问题。

1)【人】

该部分主要在于观察用户行为特点,以总结经验。此案例中,数据维度有限,会员自身行为相关的数据除了商品外就是时间,商品计划在【货】部分进行分析,【人】部分旨在分析用户A到I高效转化的时间特征。

首先,计算各时段AI的转化分布:

计算思路:

#第一步,查询出每个小时会员的浏览次数select hour(datetime) as '小时',count(*) as 'A-浏览'from behaviorwhere view = 1group by hour(datetime)order by hour(datetime) ASC;#第二步,查询出每个小时会员进行收藏与加入购物车行为的次数select hour(datetime) as '小时',count(*) as 'I-兴趣'from behaviorwhere favor = 1 or cart = 1group by hour(datetime)order by hour(datetime) asc;#第三步,根据前两步计算出A→I转化率的均值select a.`小时`,avg(`A-浏览`) as `A-浏览 均值`,avg(`I-兴趣`) as `I-兴趣 均值`,concat(round(avg(`I-兴趣`)/avg(`A-浏览`),3)*100,'%') as 'A→I转化率'from(select hour(datetime) as '小时',count(*) as 'A-浏览'from behaviorwhere view = 1group by hour(datetime)) as aleft join(select hour(datetime) as '小时',count(*) as 'I-兴趣'from behaviorwhere favor = 1 or cart = 1group by hour(datetime)) as ion a.`小时` = i.`小时`group by a.`小时`order by a.`小时`;可以看到,在查询结果中,有很多不同的值,根据对比分析方法,我们需要【比较基准】才知道这些转化率哪些高,哪些低,才可进一步判断。这里,以常见的“平均值”作为对比的基准,代码实现如下(即上一步去掉分组的步骤):

select a.`小时`,avg(`A-浏览`) as `A-浏览 均值`,avg(`I-兴趣`) as `I-兴趣 均值`,concat(round(avg(`I-兴趣`)/avg(`A-浏览`),3)*100,'%') as 'A→I转化率'from(select hour(datetime) as '小时',count(*) as 'A-浏览'from behaviorwhere view = 1group by hour(datetime)) as aleft join(select hour(datetime) as '小时',count(*) as 'I-兴趣'from behaviorwhere favor = 1 or cart = 1group by hour(datetime)) as ion a.`小时` = i.`小时`order by a.`小时`;每个时段的浏览人数都不同,选择浏览值大于平均值3733的时段来观察,在这些时段中,我们选择转化率大于平均值9.1%的时段。

这些时段既是浏览人数多,又是转化率高的时段,即11点、15点-17点、19点、22-23点。其中,23点为转化率大于10%,为最大值,可作为最佳投放时间。

2)【货】

【货】分析部分需要分析【人货匹配】情况,进而针对性地将货品根据会员行为进行调整。

分析之前,先查询出AI阶段涉及的商品种类的总数量:

select count(distinct item_id) as 'A'from userbehaviorwhere behavior_type = 'pv';结果如图所示,共有60592款商品被有效浏览。

接下来,计算会员感兴趣的商品:

select count(distinct item_id) as 'I'from userbehaviorwhere behavior_type in ('favor','cart');接下来,结合【假设检验分析方法】,针对有效浏览与产生兴趣的商品数差异较大的情况,提出以下的假设。

假设:用户偏好的商品主要集中在少数商品,而大部分长尾商品被错误地推荐给用户。

验证思路

将被浏览最多的前100款商品以及用户最感兴趣(即加入购物车、收藏)的前100款商品进行交叉匹配,如果交叉出的商品数较少,则假设成立,反之,则假设不成立。

计算思路如下:

#第一步,查询出被浏览最多的前100款商品,按降序排列select item_id,count(*) as 'A'from userbehaviorwhere behavior_type = 'pv'group by item_idorder by A DESClimit 100;查询结果如下(给出部分数据预览):

#第二步,查询出用户最感兴趣的前100款商品,按降序排列select item_id,count(*) as 'I'from userbehaviorwhere behavior_type in ('favor','cart')group by item_idorder by I DESClimit 100;查询结果如下(给出部分数据预览):

#第三步,计算交叉数量select count(*) as 'AI交叉商品数'from(select item_id,count(*) as 'A'from userbehaviorwhere behavior_type = 'pv'group by item_idorder by A DESClimit 100) as ACinner JOIN(select item_id,count(*) as 'I'from userbehaviorwhere behavior_type in ('favor','cart')group by item_idorder by I DESClimit 100) as ICon AC.item_id = IC.item_id;结果显示,仅有5款商品既是高浏览量,也是高收藏/加购的,

假设成立:用户偏好的商品主要集中在少数商品,而大部分长尾商品则是被错误地推荐到用户。进而可判断:【人货匹配】效率低。

3)【场】

【场】广义上来说指的是与用户的触点,在线上电商,则是在线店铺、平台、投放渠道等。

从这个角度,分析此段时间淘宝平台的活动情况:

活动:天猫双12年终品牌盛典
预热时间:2017年12月7日00:00:00-2017年12月11日23:59:59;
上线时间:2017年12月12日00:00:00-2017年12月12日23:59:59。
4)【人货场】分析总结

2、【P1:P→L】

此部分我们进行【用户复购分析】进而挖掘复购行为特征。

结合具体的业务,复购分析的目的是为了优化用户触达策略,即何时何地向哪些已购用户推送什么商品可提升复购率。此案例中,将通过分析用户【复购周期】以解决业务中触达时间的问题。

对于此,现在分析用户复购周期问题,从业务角度主要包括何时触达和触达多久两部分。

1)何时触达

可通过计算用户平均回购周期,即可在用户发生购买行为后,在平均回购周期内对其进行营销触达。

计算步骤:

第一步,建立一张视图,记录了所有用户的购买记录

#创建一个视图,记录所有用户的购买记录CREATE view consumeas select `user_id`,`dates`,dense_rank() OVER (PARTITION BY `user_id` ORDER BY `dates`) AS `consume_num` from `behavior` where `buy` = 1group by `user_id`,`dates` order by `user_id`,`dates`;结果如下(给出部分数据预览):

第二步,根据上一步的视图查询出所有用户每次消费的回购周期:

-- 计算出每个用户每次消费的回购周期select a.user_id,a.dates,a.consume_num,datediff(a.dates,b.dates) as '回购周期(天)'FROM(select * from consume) as ainner join(select * from consume) as bon a.user_id = b.user_idand b.consume_num = a.consume_num - 1;结果如下(给出部分数据预览):

第三步,基于以上查询结果,可以将每人次的回购周期进行平均,取得最终的平均回购周期

-- 将每人次的回购周期进行平均,取得最终的平均回购周期select avg(datediff(a.dates,b.dates)) as '平均回购周期(天)'from(select * from consume) as ainner join(select * from consume) as bwhere a.user_id = b.user_idand b.consume_num = a.consume_num - 1;结论:根据计算结果,预计在用户购买行为发生后的2-3天内对其进行触达会有较好的效果。

2)触达多久

通常情况下,我们需要计算出不同时段购买的客户的最长消费周期,供业务触达时参考,但由于本案例中时间间隔较短,因此此项数据参考意义不大,不计算。

3、【P2:I→P】

此前AIPL漏斗分析显示,平台用户复购率高达63%,也就是说,只要成功促进用户发生首次购买行为,接下来就由较高的概率复购,此部分的重点放在如何提升AI→P上。

1)用户首购特征

为了提高AI客户的购买转化率,可以通过高购买率客户与低购买率客户对比,挖掘高购买率客户特征,进而指导业务上的运营策略。

先创建一个视图,统计每个客户的购买率及其他数据,代码实现如下:

#创建视图,统计每个客户的购买率与其他数据create view user_featureASselectuser_id,sum(view) as '浏览',sum(favor) as '收藏',sum(cart) as '加购',sum(buy) as '购买',(sum(cart) + sum(favor))/sum(view) as '加购率',sum(buy)/(sum(view) + sum(cart) + sum(favor)) as '购买率',dense_rank() over (order by sum(buy)/(sum(view) + sum(cart) + sum(favor)) desc) as '购买率排序'from behaviorgroup by user_id;创建完的视图如下所示(给出部分数据预览):

select *from user_featureorder by 购买率 desc;计算完每个客户的购买率之后,接着挖掘高购买率客户与低购买率客户的特征。

结合【二八原则】进行判断,可以认为前20%为高购买率客户,最后20%为低购买率客户。

第一步,查看购买率排序的名次情况(可能出现几位客户在同一名词的情况)

select count(distinct 购买率排序) as 总名次from user_feature;根据387 * 20% ≈ 77,高购买率客户可以被定义为前77名的客户,而根据387 - 77 = 310,低购买率客户可以被定义为310名之后的客户。

第二步,查询出高购买率客户的特征

select avg(浏览) as '平均浏览数',avg(收藏 + 加购) as '平均兴趣数',avg(加购率) as '平均加购率'from user_featurewhere '购买率排序' <= 77;select count(distinct category_id) as '购买品类集中度' from userbehaviorwhere behavior_type ='buy'and user_id in (select distinct user_id from user_featurewhere `购买率排序` <= 77);第三步,查询出低购买率客户的特征

select avg(`浏览`) as '平均浏览数',avg(`收藏`+`加购`) as '平均兴趣数',avg(`加购率`) as '平均加购率'from user_featurewhere `购买率排序` > 310 and `购买率` > 0;select count(distinct category_id) as '购买品类集中度' from userbehaviorwhere behavior_type ='buy'and user_id in (select distinct user_id from user_featurewhere `购买率排序` > 310);总结:

综上所述,我们得到的人群画像:

高购买率人群浏览商品数量少,但加购率高,大概率为决策型顾客,看对了商品就着手购买;

低购买率人群更多是纠结型顾客,需要反复浏览商品来确认最终想要的。

此外,低购买率人群品类集中度很高,建议列出这些品类,有目的地优化品类信息,减少用户的浏览跳失率。

2)AIPL+RFM分析

最后,为了促进用户购买,需要进行精细化的用户运营,即可通过RFM模型分析方法实现,由于数据限制,并没有用户购买金额数据,故此处与AIPL模型相结合,重新定义R、F、M:

R:客户最近一次购买离分析日期的距离,用来判断购买用户活跃状态,间隔越短,分值越高

F:客户收藏、加购行为的次数,次数越多,分值越高

M:客户购买行为次数,次数越多,分值越高

第一步,计算每位用户最近一次购买行为的间隔天数

#第一步,计算每位用户最近一次购买行为的间隔天数select user_id,datediff('2017-12-03',dates) as 'R'from consume as awhere consume_num = (select max(consume_num)from consume as bwhere a.user_id = b.user_id);查询结果如下(给出部分数据):

第二步,计算每位用户收藏、加购的行为次数以及购买的行为次数

select user_id,(sum(favor) + sum(cart)) as 'F',sum(buy) as 'M'from behaviorgroup by user_id;查询结果如下(给出部分数据):

第三步,将前两步的查询结果按user_id字段进行合并,创建出RFM的视图

create view RFMasselect r.user_id,R,F,Mfrom(select user_id,datediff('2017-12-03',dates) as 'R'from consume as awhere consume_num = (select max(consume_num)from consume as bwhere a.user_id = b.user_id)) as rleft join (select user_id,(sum(favor) + sum(cart)) as 'F',sum(buy) as 'M'from behaviorgroup by user_id) as fmon r.user_id = fm.user_id;查询结果如下(给出部分数据):

第四步,计算出RFM的比较基准,这里使用的是均值,但具体业务应具体分析:

#第四步,计算出RFM的阈值(即比较基准)select avg(R),avg(F),avg(M)from RFM;第五步,根据RFM的比较基准以及RFM的定义,将每位可以划分到不同的用户价值组中

create view user_RFM asselect user_id, case when R < 2.4501 and F > 9.3115 and M > 2.8018 then '重要价值用户' when R < 2.4501 and F > 9.3115 and M < 2.8018 then '一般价值用户' when R < 2.4501 and F < 9.3115 and M > 2.8018 then '重要发展用户' when R < 2.4501 and F < 9.3115 and M < 2.8018 then '一般发展用户' when R > 2.4501 and F > 9.3115 and M > 2.8018 then '重要唤回用户' when R > 2.4501 and F > 9.3115 and M < 2.8018 then '一般唤回用户' when R > 2.4501 and F < 9.3115 and M > 2.8018 then '重要挽留用户' when R > 2.4501 and F < 9.3115 and M < 2.8018 then '一般挽留用户' end as '用户价值族群'from RFM;结果如下所示(给出部分数据预览):

第六步,统计各组用户数及用户占比,用于对用户运营现状进行分析,并给出运营策略方向。

select `用户价值族群`, count(user_id) '用户数', concat(round(count(user_id)/983*100,3),'%') as '用户数占比'from user_RFMgroup by `用户价值族群`order by `用户价值族群`;结果如下:

上图所示为RFM模型分组结果,对比分析往往需要和对照组比对分析,但因数据限制,此处结合业务经验进行判断:

从【用户RFM转化路径】角度来看:重要价值用户占比较少,一般由一般价值用户重要发展用户一般发展用户转化而来。

一般价值价值用户占比较少,重要发展用户,一般发展用户占比较多,可以有限对这两个人群进行“升级”

六、提出建议

首先,通过AIPL营销模型(漏斗分析方法),对用户现状有整体的认识,并分析、总结出三个分析目标。现对分析结论结合业务场景总结经验及提出建议。

1、【A→I】【人货场】业务建议

--从“认知”到“兴趣”阶段的转化率过低

通过【人货场】分析,可得以下业务建议:

2、【P→L】【复购分析】业务建议

--从“购买”到“忠诚”阶段的转化率高。

通过【用户复购分析】后,可得以下建议:

3、【I→P】【购买特征+RFM】业务建议

--表现较好

通过分析,可得建议如下。

1)针对【高购买率用户特征】

2)使用【AIPL + RFM】分析方法

重要价值用户(R高F高M高)维护:用户处于购买活跃期,感兴趣的商品多,购买次数也多 → 针对兴趣产品,保持一定频率的触达,持续维护。

一般价值用户(R高F高M低):用户处于购买活跃期,感兴趣的商品多,购买次数少 → 针对该部分客户,目的就是要让他们购买,所以可以和运营部门沟通,降低利润,给出有力折扣促进购买,进而转为重要价值用户。

P1优先级:

一般发展用户(R高F低M低):用户处于购买活跃期,感兴趣的商品少,购买次数少 → 可通过商品组合推荐,即通过连带提升该人群购买频次,进而转为重要发展用户。

重要发展用户(R高F低M高):用户处于购买活跃期,感兴趣的商品少,购买次数多 → 通过关联算法,找出与兴趣商品关联高的商品进行推荐触达,提高用户收藏、加购数,进而转为重要价值用户。

关键词:数据,分析,用户,平台

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭