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

一、项目可行性

UserBehavior是阿里给予的一个淘宝网用户个人行为数据集,数据集包括了2017年11月25日至2017年12月3日中间,有个人行为的约一百万任意用户的全部个人行为(行为包含点一下、选购、加入购物车、喜爱),用于开展隐式反馈强烈推荐问题的科学研究。注:隐式反馈强烈推荐问题

推荐算法中用户对商品的反馈分成显式和隐式反馈,显式反馈 (如得分、评分) 或单一的隐式反馈 (如访问、点一下、购物车)。 隐式反馈强烈推荐是推荐算法根据对信息和用户个人行为的分析,创建适度的实体模型,协助用户从大量的数据中找出他们喜欢的內容。推荐算法中用户的个人行为反馈包含显式反馈和隐式反馈,隐式反馈信息内容在推荐算法优化算法中被广泛运用。隐式反馈反映着用户的个人爱好,对隐式反馈信息内容的发掘有利于提升推荐算法的实际效果,以能够更好地设计方案推荐算法。二、项目目标

1.分析目地:根据对2017年11月25日至2017年12月3日中间的用户个人行为数据分析,为客人带来更准确的隐式反馈强烈推荐。从用户视角:提升用户满意度,协助用户迅速寻找产品;从网站视角:提升网站交叉销售工作能力,提升支付转化率。注:数据由来为下边图示的天山天池数据集,可是因为数据过多(约有1万件用户个人行为),因此取样约100000的用户个人行为开展分析。

2.分析构思

此次分析主要是依据分析目地,就下列四个层面开展分析和明确提出改进方案:

用户个人行为间的转换状况分析:分析用户从访问到选购整个过程中,普遍的电子商务分析指标值,明确各个阶段的流动率,明确提出改进转换率的建议;用户的习惯养成分析:以PV、UV等指标值,找到用户最活泼的时间及其每日活跃性时间范围。用户品类喜好分析:从产品的点一下、个人收藏、加入购物车、选购的頻率,探寻用户对宝贝的选购喜好,寻找对于差异产品的营销战略(哪些商品及其商品类目地购率最大,找到最火爆的商品,提升产品推介);用户使用价值分析:找到最具备意义的关键付钱用户群,对于这种用户的选购喜好消息推送人性化的产品销售方案。

下列为此次分析逻辑性:

三、数据搜集与梳理

(一)数据提前准备:

1.数据由来

阿里天山天池:

User Behavior Data from Taobao for Recommendation-数据集-阿里云天池

2.将数据导入MySQL

专用工具提前准备:专用工具:Navicat for MySQL,mysql 5.7,powerBI(或Excel)。免费下载的Excel数据非常大,没法用Excel立即开启,因此要用Navicat导入数据库文件开展解决。

1)建立数据库

2)按下面的图挑选“导入指导”。

3)挑选Excel文档数据源

4)挑选制表符

csv文件文字开启是“,”切分的,挑选“,”,别的默认设置。

5)为源界定一些额外选择项

这儿大家导入100000行数据。

6)挑选往哪个表中导入数据

7)界定源表(excel表)和总体目标表(数据库表)的对应关系

若导入文档的字段名栏位与数据库列名配对,会全自动设定对应关系。若栏位字段名不相匹配,可手工制作调节。设定好后,点一下“下一步”。

此次的Excel数据自身很有可能沒有字段名,第1行便是数据:

导入数据后,再在navicat里应用数据可视化页面改动字段名。此次分析的数据沒有外键约束,因此不必设定。

数据种类都挑选varchar。尽管时间格式这一列是時间种类,可是为了防止导入后数据异常。先设定为varchar,导入后再用sql来变换。

8)挑选导入方式

9)点一下“逐渐”按键实行导入指令

3.数据了解

本数据集包括了2017年11月25日至2017年12月3日中间,有个人行为的约一百万任意用户的全部个人行为(行为包含点一下、选购、加入购物车、喜爱)。数据集的组织结构和MovieLens-20M相近,即数据集的每一行表明一条用户个人行为,由用户ID、产品ID、商品品类ID、个人行为种类和时间格式构成,并以分号隔开。有关数据集中化每一列的详细说明如下所示:

注意到,用户个人行为种类一共有四种,他们分别是:

(二)数据清理

1)挑选子集合

数据集的字段名都有效

2)列名称改动:

3)删除重复值

SELECT * FROM userbehavior GROUP BY User_ID,Item_ID,Category_ID,Behavior_ID,Timestamp H ** ING COUNT(*)>1;

ps:全字段名去重复

DELETE FROM 表名 WHERE (字段名1,字段2,字段名3)IN (SELECT 字段1,字段名2,字段3 FROM (SELECT 字段名1,字段2,字段名3 FROM 表名 GROUP BY 字段1,字段名2,字段3 H ** ING COUNT(*)>1) s1) ANDid NOT IN (SELECT id FROM (SELECT id FROM 表名 GROUP BY 字段名1,字段2,字段名3 H ** ING COUNT(*)>1) s2);

4)缺少值解决

SELECT count(User_ID),count(Item_ID),count(Category_ID),count(Behavior_type),count(Timestamp) FROM userbehavior;

对全部列开展记数查看,记数結果都为99999,不会有缺少值。

5)一致化解决Timestamp列没法立即开展分析,必须对其列转换为三列,各自为時间,时间,钟头

-- 加上新列Date_time,依据Timestamp回到时间日期ALTER TABLE userbehavior add COLUMN Date_time TIMESTAMP(0) NULL;UPDATE userbehaviorset Date_time = FROM_UNIXTIME(`Timestamp`);-- 加上新列Date,依据Timestamp列回到时间ALTER TABLE userbehavior ADD COLUMN Date char(10) NULL;UPDATE userbehaviorSET Date = FROM_UNIXTIME(`Timestamp`,'%y-%m-%d');-- 加上新列time,依据Timestamp列回到時间ALTER TABLE userbehavior ADD COLUMN Time char(10) null;update userbehaviorset Time = SUBSTRING(Date_time FROM 12 FOR 2);

6)出现异常值解决

因为项目可行性是要根据对2017年11月25日至2017年12月3日中间的淘宝网用户个人行为数据集开展隐式反馈强烈推荐问题的科学研究,因此要对这一时间范围外的数据开展删掉解决。

-- 查验是不是有没有在2017-11-25至2017-12-03这一时段内的時间值SELECT MAX(Date_time),MIN(Date_time) FROM userbehavior;-- 把没有在2017-11-25至2017-12-03这一时段内的出现异常時间值删掉DELETE FROM userbehavior where Date >'2017-12-03' or Date <'2017-11-25';-- 再度查验是不是存有没有在2017-11-25至2017-12-03这一时段内的出现异常值SELECT MAX(Date_time),MIN(Date_time) FROM userbehavior;

清理完的数据如下所示:

最终,导入的数据集尺寸概述:

SELECT count(DISTINCT User_ID) as 用户数,count(DISTINCT Item_ID) as 产品总数,count(DISTINCT Category_ID) as 产品品类总数,count(Behavior_type) as 个人行为总数FROM userbehavior;四、数据分析

这一阶段的全部結果均为本应用sql分析数据,得到分析結果,随后将分析結果另存到excel或是power BI里开展数据可视化。

(一)数据整体状况概述

1.整体UV、PV、平均浏览次数、交易量

select COUNT(DISTINCT User_ID) AS '独立访客数',sum( case when Behavior_type='pv' then 1 else 0 END) as '点击量',sum( case when Behavior_type='pv' then 1 else 0 END)/COUNT(DISTINCT User_ID) as '平均浏览次数',sum(case when Behavior_type ='buy' then 1 else 0 END)as '交易量'from userbehavior;

2.每日UV、PV、平均浏览次数、交易量

select Date,COUNT(DISTINCT User_ID) AS '日浏览量',sum( case when Behavior_type='pv' then 1 else 0 END) as '日点击量',sum( case when Behavior_type='pv' then 1 else 0 END)/COUNT(DISTINCT User_ID) as '日平均浏览次数',sum(case when Behavior_type ='buy' then 1 else 0 END)as '日交易量'from userbehaviorGROUP BY DateORDER BY Date;

①日浏览量趋势线

②日平均浏览次数趋势线

④日交易量趋势线

3.用户总体个人行为数据

create view 用户行为数据 ASselect User_ID,COUNT(Behavior_type) as '用户个人行为数',sum(case when Behavior_type ='pv' then 1 else 0 end ) as '点一下',sum(case when Behavior_type ='fav' then 1 else 0 end) as '个人收藏',sum(case when Behavior_type ='cart' then 1 else 0 end) as '加入购物车',sum(case when Behavior_type ='buy' then 1 else 0 end) as '选购'from userbehaviorGROUP BY User_IDORDER BY 用户个人行为数 DESC;

4.用户的复购率和跳失率

-- 重复购买用户、复购率SELECTsum(case when 选购>1 then 1 else 0 end ) as 重复购买频次,sum(case when 选购>0 then 1 else 0 end ) as 购买频次,CONCAT(ROUND(sum(case when 选购>1 then 1 else 0 end)*100/ sum(case when 购买>0 then 1 else 0 end),2),'%') as 复购率from 用户个人行为数据;-- 跳失率=只预览了一个网页页面的浏览量/总访客数select COUNT(*) from (SELECT User_ID from userbehavior GROUP BY User_ID H ** ING COUNT(Behavior_type)=1)as a;

当统计分析時间为9天和,用户的复购率为65.87%且跳失率为0,表明淘宝网拥有你充足的诱惑力让用户滞留且用户的满意度十分高。可以进一步塑造用户的满意度,激励用户更高频率次的交易。

(二)用户个人行为转换状况分析

1.用户个人行为转换及外流分析

流量行为转化漏斗分析

用户点击后,收藏或者加购物车的概率在5.5%左右,而最后真正的购买概率在2.3%,也就是说用户的行为在浏览商品详情页后出现了大量的流失。那么用户是否也是在点击后产生了大量的流失,只有极少部分产生了购买呢?

用户行为转化漏斗分析

-- 用户留存分析(漏斗转化)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) as 加购用户数,sum(case when 购买>0 then 1 else 0 end) as 购买用户数from 用户行为数据;

由上图可以看出,用户并未在点击后就大量流失,而且有68.47%的付费用户,用户的购买转化率还是很不错的。由此我们推测流量行为转化中用户的点击行为远远大于收藏和加购,最后仅有2.3%转化为购买的原因,可能是要对不同店铺的同种产品进行比较。

所以针对大部分的用户行为还是对商品点击详情页访问的情况,研究如何提高用户点击后到其他行为的转化是一个重点。APP可以优化商品推荐以及筛选功能,使用户不用浏览那么多的网页,用更少的选择获得心怡的商品。

那么,再回到用户转化漏斗图,从浏览到购买,每一个环节的转化率是多少呢?为什么收藏用户数远小于加购的用户数?

因为加入购物车和收藏商品并没有行为的先后性,也就是说,购物路线可以有四条:

点击——购买点击——加购——购买点击——收藏——购买点击——收藏——加购——购买-- 点击——购买的留存分析select sum(case when 购买>0 then 1 else 0 end) as 购买用户数from 用户行为数据where 收藏=0 and 加购=0;-- 点击——加购——购买的留存分析select sum(case when 加购>0 then 1 else 0 end) as 加购用户数,sum(case when 购买>0 then 1 else 0 end) as 购买用户数from 用户行为数据where 收藏=0 and 加购<>0;-- 点击——收藏——购买的留存分析select sum(case when 收藏>0 then 1 else 0 end) as 收藏用户数,sum(case when 购买>0 then 1 else 0 end) as 购买用户数from 用户行为数据where 加购=0 and 收藏<>0;-- 点击——收藏——加购——购买的留存分析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) as 购买用户数from 用户行为数据where 加购<>0 and 收藏<>0;

从上图的用户四种购买行为的留存,可以看出用户点击之后,若有后续行为则主要行为是加入购物车,然后是收藏并加购,再接下来是收藏,除此之外还有部分用户是点击后直接购买的。可以着重研究各类路径用户购买的产品是什么以及用户的标签,通过对优化商品推荐及精准运营加强这部分的转化。

推测点击后收藏的用户远小于点击后加购的用户,是因为加入购物车后可以直接下单购买,而加入收藏后并没有可以下单的页面,如果需要购买必须重新点击商品进入详情页才能下单,多了一个步骤。

最后,对用户从收藏到购买、加购到购买及收藏和加购到购买的转化分析可以看出,用户收藏并加购后购买转化率是最高的,故可以通过引导用户进行收藏并加购来提高用户的购买转化率。

2.新增用户及留存情况(需要有用户第一次登录时间,此处不做分析)。

(三)用户行为习惯分析

这里分别以天和时段为单位,分析用户的购买行为分布,找出用户活跃时段分布规律。

1.2017年11月25日至12月3日间的用户行为习惯分布

create view 用户行为习惯分布(天) ASselect Date,COUNT(Behavior_type) as '用户行为数',sum(case when Behavior_type ='pv' then 1 else 0 end ) as '点击',sum(case when Behavior_type ='fav' then 1 else 0 end) as '收藏',sum(case when Behavior_type ='cart' then 1 else 0 end) as '加购',sum(case when Behavior_type ='buy' then 1 else 0 end) as '购买'from userbehaviorGROUP BY DateORDER BY Date;

由上图可以看出,在研究日期范围内用户的活跃度都比较平稳,仅在12月2日及12月3日有相对明显的增幅,由于该日期与11月25及26日同为周末,故由于周末的原因导致用户活跃度提升的原因较小,而且12月2日及3日点击、收藏及加购都有较明显增长,但购买并未有明显增幅,故推测最可能原因是由于双十二预热活动导致的流量上升,用户开始大量浏览商品,加入购物车及收藏是双十二批量购买时的前置动作。故收藏和加购的行为同样出现了增长,这也符合常规预期。

2.一天中的用户行为习惯分布

-- 用户行为习惯分布(时)create view 用户行为习惯分布(时) ASselect Time,COUNT(Behavior_type) as '用户行为数',sum(case when Behavior_type ='pv' then 1 else 0 end ) as '点击',sum(case when Behavior_type ='fav' then 1 else 0 end) as '收藏',sum(case when Behavior_type ='cart' then 1 else 0 end) as '加购',sum(case when Behavior_type ='buy' then 1 else 0 end) as '购买'from userbehaviorGROUP BY TimeORDER BY Time;

经过对一天中用户行为分布的可视化,可以发现每日0点至3点用户活跃度快速降低,降到一天中活跃度最低值,4点至10点用户活跃度快速上升,10点至18点用户活跃度较平稳,但分别在12点及17点略有下降,18点后用户活跃度开始快速上升,并在20-22时达到一天中用户活跃度的最高值,这也符合大部分人的作息规律。所以,可以考虑在20-22点这个时间段进行一些促销活动和商品推荐以提高转化率。

此外,可以看出晚上7点到凌晨一点的晚间时间段,用户的操作行为偏向于浏览。用户在白天特别是在商务10点和下午1点,购买行为比率达到最高,可见,在这一时间段的用户使用淘宝下单购买商品的意向是最高的。

(四)用户类目偏好分析

统计所有商品的购买次数,同时找到购买次数、浏览次数、收藏次数和加入购物车次数最多的商品。

1.商品销售情况分析

-- 商品销售情况create view 商品销售情况 ASselect a.购买次数,COUNT(a.Item_ID) as 商品数FROM(select Item_ID,COUNT(User_ID) as 购买次数from userbehavior where Behavior_type='buy'GROUP BY Item_ID) as aGROUP BY 购买次数ORDER BY 购买次数 DESC;-- 商品销售整体情况select COUNT(DISTINCT Item_ID)from userbehavior;select COUNT(DISTINCT Item_ID)from userbehavior where Behavior_type='buy';

本次分析涉及到的商品共有 ** 440,用户购买的商品共有1984种,却没有出现购买数量非常集中的商品;在本次统计数据中,只购买一次的商品有1881种,占用户购买商品数的94.8%,说明商品售卖主要是依靠商品的长尾效应,而非爆款商品的带动。

2.商品品类浏览top20

-- 商品品类点击数据select Category_ID,sum(case when Behavior_type ='buy' then 1 else 0 end) as '点击'from userbehaviorGROUP BY Category_IDORDER BY 点击 DESClimit 20;

我们看到点击数最高的商品品类是4756105,为4509次,那么是否点击次数最高的商品购买的次数也是最高呢?

3.商品品类收藏top20

通过上图我们可以看到排在收藏前20名中的16种商品在点击top20中也有出现,说明收藏和点击同步的几率很大。

4.商品品类加购top20

再加购top20的商品品类中的15种商品在点击top20中,14种商品出现在收藏中,说明这些商品都是能够很好地吸引用户注意力的,那么这些商品的销量又如何呢?

5.商品品类购买top20

通过以上四个图对比我们可以发现,点击top20中前5名的商品在购买top20中排名分别为7、8、3、12、18名,点击、收藏、加购top20的商品品类分别在购买top20中出现了12、12、14类,说明在点击、收藏、加购环节吸引用户更多注意力的商品没有很好的转化为实际销量,这是销量增长的一个突破点,此外我们也可以看出相比于收藏,加购与购买的关系更为直接。

而且,单纯的看商品品类购买top20,可以发现商品类目销售有较为明显的集中趋势,所以可以根据畅销商品品类优化商品展示,进而提高销量。

(五)用户价值分析(RFM模型)

在本次分析中由于没有提供金额,所以这次分析从R、F两个维度对客户群进行分析。

首先,我们来定义一下本次分析用户群的分类标准:

由于数据集的时间仅有9天,所以我们设置一下规则,对每个用户最近一次购买时间和12月03日之间的时间间隔设立等级:

间隔>7天为1间隔在5-7天设为2间隔在3-4天设为3间隔在0-2天设为4-- 最近一次购买select User_ID,(case when Rtime >7 then 1when Rtime between 5 and 7 then 2when Rtime BETWEEN 3 and 4 then 3when Rtime between 0 and 2 then 4else null end ) as 最近一次购买FROM(select User_ID,DATEDIFF('2017-12-03', ** x(Date)) as Rtimefrom userbehaviorwhere Behavior_type='buy'GROUP BY User_ID) as 购买时间ORDER BY 最近一次购买 DESC;select User_ID,count(Behavior_type)as 购买次数from userbehaviorwhere Behavior_type='buy'group by User_IDORDER BY 购买次数 DESC;

对用户的购买次数进行排名后,发现购买次数范围在1-43之间,故我们按照以下规则设立等级:

购买次数在1-10之间设为1购买次数在11-20之间设为2购买次数在21-30之间设为3购买次数>30次设为4-- 购买频率SELECT User_ID,(case when 购买次数 between 1 and 10 then 1when 购买次数 between 11 and 20 then 1when 购买次数 between 21 and 30 then 2when 购买次数 >=31 then 4 else null end ) as 购买频率等级FROM(select User_ID,count(Behavior_type)as 购买次数from userbehaviorwhere Behavior_type='buy'group by User_ID) as 购买频率ORDER BY 购买频率等级 DESC;

根据上面的用户群等级设定规则,用四象限法划分出来的用户群如下:

通过用户群划分可以了解每位顾客的特性,从而实现差异化营销。

五、结论

1.通过对用户行为的转化分析,可以看出用户从点击到购买的转化率还是比较高的,目前来看可以通过引导用户收藏并加购来提高用户从收藏/加购到购买的转化率。而流量行为从点击到购买的转化率仅有2.3%,故从点击到购买的行为转化是一个提高的重点。针对这一环节的建议有:

优化电商平台的搜索匹配度和推荐策略,提高筛选精确度,并对搜索和筛选的结果排序的优先级进行优化;可以给客户提供同类产品比较的功能,让用户不需要多次返回搜索结果进行点击查看,方便用户确定心仪产品,增加点击到后续行为的转化;优化收藏到购买的操作过程,增加用户收藏并加购的频率,以提高购买转化率。

2.通过对用户行为的分析

可以看出用户的活跃时间高峰期主要在20-22点,此时使用人数最多,活动最容易触达用户,所以可以将营销活动安排在这个时间段内,来进行引流并转化。在研究的9天内共有两个周末,第一个周末用户活跃度并没有明显变化,而第二个周末推测是因为有双十二的预热,导致用户点击和加购出现明显增加。故可以扩大研究时间范围对推测进行验证,若推测正确,则可以通过在周末推出营销活动来挖掘用户周末购物的欲望。

3.通过对用户的商品偏好分析,可以看出商品销量主要是依靠长尾效应,而非爆款商品的带动。但是通过对商品品类的分析可以看出能吸引用户注意力的商品购买转化率并不高,是一个提高销量的突破口。针对用户关注度高但销量不高的这部分产品,可以从以下几个方面着手:

商家在详情页上的展示突出用户重点关注的信息,优化信息的呈现方式,减少用户的时间成本;增加这些产品的质量管控力度,加强对用户反馈建议如评论的管理,认真采纳并根据自身的优劣势进行商品优化。

此外,对于购买top20的商品,可以在电商首页对这些品类的商品优先进行展现,以满足用户的购买需求。

4.通过RFM模型对客户群进行划分,可以对不同的用户群体采用不同的管理策略,达到对不同的客户群进行精准营销的目的:

对于重要价值用户,需要重点关注并保持, 应该提高满意度,增加留存;对于重要发展客户和重要保持用户,可以适当给点折扣或捆绑销售来增加用户的购买频率;对于重要挽留客户,需要关注他们的购物习性做精准化营销,以唤醒他们的购买意愿。

扫码免费用

源码支持二开

申请免费使用

在线咨询