随着网络的不断发展,网络购物成为一种时尚。而做为消费者,一般只会去关注淘宝里面的商品内容和是否有活动等,而历来都不会去关心淘宝内部是如何运做,或这些数据是怎样的一种存在。为了知足做为好奇宝宝的我,心血来潮,想探究究竟。终于在'天池'这个平台上找到了由阿里巴巴发布的淘宝用户行为数据,以此分析淘宝数据。该数据集的时间节点为:2014年11月22日到2014年12月18日。python
利用SQL对淘宝用户行为进行数据分析,在MySQL关系型数据库管理系统中进行。分析步骤以下:sql
本项目基于淘宝用户行为数据,探索淘宝用户的行为模式,寻找高购买率背后用户行为特征,具体指标包括:日PV和日UV分析,支付率分析,复购行为分析,漏斗转化率分析和用户价值RFM分析。数据库
本次分析的目的是想经过对淘宝用户行为数据分析,为如下问题提供解释和改进建议:网络
1.分析用户常见电商分析指标,肯定各个环节的流失率,找到须要改进的环节app
2.研究用户在不一样时间尺度下的行为规律,找到用户在不一样时间周期下的活跃规律优化
3.找到用户对不一样种类商品的偏好,找到针对不一样商品的营销策略网站
4.找出最具价值的核心付费用户群,对这部分用户的行为进行分析ui
为了分析这些问题,咱们使用如下两种模型进行分析spa
本次分析的目的是想经过对淘宝用户行为的数据分析,为如下问题提供解释和改进建议:3d
为分析这些问题,咱们常使用两种模型分析用户行为:(AARRR, RFM模型):
该漏斗模型是将用户进入app后的每一步行为进行拆解。它是根据用户使用产品全流程的不一样阶段进行划分,针对每一环节的用户流失状况分析出不一样环节的优化优先级:
因为不一样的用户对公司带来的收益差异很大,并且根据二八定律20%的作有价值用户能带来80%的收益,所以须要对用户进行价值评价,找到最优价值的用户群,并针对这部分用户进行差别化营销
R-Recency(最近一次购买时间)
R指用户上一次消费时间,上一次购物时间距离如今最近的客户,该客户群体一般在近期响应营销活动的可能性也就越大,而对于好久没有购物行为也意味着放弃了使用app等,从新唤起用户也须要更多的成本
F-Frequency(消费频率)
F指用户在某段时间内的购物次数,消费频率越高意味着这部分用户对产品的满意度最高,用户粘性最好,忠诚度也最高。
M-Money(消费金额)
M指用户在某段时间内的购物金额,这也是为公司带来价值的最直接体现,而消费金额较高的用户在用户整体中人数较少,却能创造出更多价值,是须要重点争取的对象。
这三个维度互相关联,反映了每一个用户的如今价值和潜在价值,将每一个维度分红5个区间进行评分,经过计算分数找到最有价值的用户,并对用户进行分类,能够有针对性的不一样类型用户采用不一样的营销策略。
本次数据是基于阿里巴巴M-Commerce平台上的真实用户 - 商品行为数据。同时,它提供移动时代的典型位置信息。参与者须要构建面向移动商务的商品推荐模型。他们还但愿深刻了解数据背后的含义,并在适当的时间和地点为移动用户推荐合适的商品。
天池数据集:https://tianchi.aliyun.com/dataset/dataDetail?dataId=46
本数据集(UserBehavior.csv)包含了2014年11月22日至2017年12月18日之间,有行为的约一百万随机用户的全部行为(行为包括点击、收藏、加购物车、支付)。数据集的组织形式和MovieLens-20M相似,即数据集的每一行表示一条用户行为,由用户ID、商品ID、商品类目ID、行为类型和时间戳组成,并以逗号分隔。关于数据集中每一列的详细描述以下:
理解商品数据集的字段信息:
item_id: 用户id
item_geohash: 商品id
item_category: 品类id(商品所属品类)
用户数据集:
user_id: 用户id
item_id: 商品id
behavior_type: 用户行为类型(分别用一、二、三、4表示点击、收藏、加购物车、支付四种状态)
user_geohash: 用户地理位置
item_category: 品类id(商品所属的品类)
time: 用户行为发生时间
在MySQL中建立user表,使用Navicat导入数据
create table user( 用户id int not null , 商品id varchar(255), 用户行为 enum('点击','收藏','加购物车','支付'), 用户地理位置 varchar(255), 商品品类 varchar(255), 时间 varchar(255))engine=innodb default charset=UTF8;
经过navicat将数据集导入MySQL库。共有12256906条数据
缺失值处理:
经过观察发现用户地理位置多为空值,经统计共有8334824条,为防止对结果形成误导,故该维度特征不作分析。
用户发生行为时间数据一致化处理如上图
因为 time 字段的时间包含(年-月-日)和小时,为了方便分析,将该字段分红 2 个字段,一个日期列和一个小时列。如上表所示。
用户总的浏览量(PV)
PV(访问量):即Page View, 具体是指网站的是页面浏览量或者点击量,页面被刷新一次就计算一次。
UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客。
日均访问量
SELECT 日期, COUNT(`用户行为`) AS '日均访问量' FROM USER WHERE `用户行为` = '点击' GROUP BY 日期 ORDER BY 日期;
由上图可知,在12月12日当天,访问量急剧增长,有明显的峰值,这个与双十二活动有关。所以,在活动前几天或者当天能够加大商品的投放量。
用户老是(UV)
使用查询语句分别输出用户点击,收藏,加入购物车以及支付的用户人数
SELECT COUNT(DISTINCT `用户id`) AS '点击用户数量' FROM user WHERE `用户行为` = '点击'; SELECT COUNT(DISTINCT `用户id`) AS '收藏用户数量' FROM user WHERE `用户行为` = '收藏'; SELECT COUNT(DISTINCT `用户id`) AS '加购物车用户数量' FROM user WHERE `用户行为` = '加购物车'; SELECT COUNT(DISTINCT `用户id`) AS '支付用户数量' FROM user WHERE `用户行为` = '支付';
结果为:
CREATE VIEW 单个用户行为 AS SELECT `用户id`, count(`用户行为`), SUM(CASE WHEN `用户行为`='点击' THEN 1 ELSE 0 END) AS '点击次数', SUM(CASE WHEN `用户行为`='收藏' THEN 1 ELSE 0 END) AS '收藏次数', SUM(CASE WHEN `用户行为`='加购物车' THEN 1 ELSE 0 END) AS '加购物车数', SUM(CASE WHEN `用户行为`='支付' THEN 1 ELSE 0 END) AS '购买次数' FROM user GROUP BY `用户id` ORDER BY COUNT(`用户行为`) DESC;
查询结果为:
查看单个用户的复购率:
SELECT CONCAT(ROUND(SUM(case when `支付次数`>=2 then 1 else 0 end) / SUM(case when 支付次数>0 then 1 else 0 end) * 100), '%') AS '复购率' FROM 单个用户行为;
用户购买行为,收藏和加购物车两个环节是并行的,不存在上下承接关系
SELECT SUM(点击次数) AS '总点击数', SUM(收藏次数) AS '收藏总数', SUM(加购物车次数) AS '加购物车总数', SUM(支付次数) AS '支付总数' FROM 单个用户行为;
用户购买行为转化率
SELECT CONCAT(ROUND(SUM(点击次数)/(SELECT COUNT(*) from `user`)*100,2),'%') AS '点击-浏览转化率', CONCAT(ROUND((SUM(收藏次数)+SUM(加购物车次数))/SUM(点击次数)*100,2),'%') AS '收藏加购物车-点击转化率', CONCAT(ROUND(SUM(支付次数)/(SUM(收藏次数)+SUM(`加购物车次数`))*100,2),'%') AS '购买-收藏加购物车转化率' FROM 单个用户行为;
SELECT CONCAT(ROUND(SUM(点击次数)/(SELECT COUNT(*) from `user`)*100,2),'%') AS '点击-浏览转化率', CONCAT(ROUND(SUM(收藏次数)/SUM(点击次数)*100,2),'%') AS '收藏-点击转化率', CONCAT(ROUND(SUM(加购物车次数)/SUM(点击次数)*100,2),'%') AS '购物车-点击转化率', CONCAT(ROUND(SUM(支付次数)/SUM(点击次数)*100,2),'%') AS '购买-点击转化率' FROM 单个用户行为;
### 降序排序 SELECT 用户id, 点击次数, 收藏次数, 加购物车次数, 支付次数, CONCAT(ROUND(支付次数/点击次数*100, 2),'%') AS '购买率' FROM `单个用户行为` GROUP BY `用户id` ORDER BY 支付次数 DESC; ### 升序排序 SELECT 用户id, 点击次数, 收藏次数, 加购物车次数, 支付次数, CONCAT(ROUND(支付次数/点击次数*100, 2),'%') AS '购买率' FROM `单个用户行为` GROUP BY `用户id` ORDER BY 支付次数 ASC;
由上表能够发现,购买率高并不表明购买次数就高,由此能够推断,点击次数少,收藏也少可是购买次数越高的人是有目的的购物。这类用户更喜欢看准目标就直接下单,此类用户目标明确,通常都是缺啥买啥,鲜少会为了促销而冲动购物,为理智购物型
购买率为0用户:此类用户能够认为是等待型或克制型用户,该类用户在一个月里购物欲望为0,若是点击次数较少,多是不太会购物的或者不喜欢上网的用户;若是点击次数较多,加购或收藏较多,有可能考虑是为商家活动作准备,该类用户,下单欲望较少且自制力较强,思虑多或者不会支付,购物难度较大。
SELECT 时间, COUNT(`用户行为`), SUM(CASE WHEN `用户行为`='点击' THEN 1 ELSE 0 END) AS '点击次数', SUM(CASE WHEN `用户行为`='收藏' THEN 1 ELSE 0 END) AS '收藏次数', SUM(CASE WHEN `用户行为`='加购物车' THEN 1 ELSE 0 END) AS '加购数', SUM(CASE WHEN `用户行为`='支付' THEN 1 ELSE 0 END) AS '购买次数' FROM user GROUP BY `时间` ORDER BY `时间`;
能够看出,每日0点到5点用户活跃度快速下降,降到一天中的活跃量最低值,6点到10点用户活跃度快速上升,10点到18点用户活跃度较平稳,18点到23点用户活跃度快速上升,达到一天中的最高值。与用户产生互动的运营行为能够参考用户比较活跃的时间段。
一周中用户活跃时间段分布
SELECT DATE_FORMAT(日期,'%W') AS weeks, COUNT(`用户行为`), SUM(CASE WHEN `用户行为`='点击' THEN 1 ELSE 0 END) AS '点击次数', SUM(CASE WHEN `用户行为`='收藏' THEN 1 ELSE 0 END) AS '收藏次数', SUM(CASE WHEN `用户行为`='加购物车' THEN 1 ELSE 0 END) AS '加购数', SUM(CASE WHEN `用户行为`='支付' THEN 1 ELSE 0 END) AS '购买次数' FROM user where 日期 BETWEEN '2014-11-23' AND '2014-12-13' GROUP BY weeks ORDER BY DATE_FORMAT(日期,'%w');
每周用户活跃度较稳定,每周五活跃度会有小幅下降,可是周末会慢慢回升。其中第四周周五用户活跃度突增是由双十二大促活动引发。
不一样商品种类的用户行为
select count(商品id) FROM (SELECT 商品id, count(用户id) as 'times' FROM user where 用户行为 = '支付' GROUP BY 商品id) as buy_times GROUP BY times ORDER BY COUNT(*) desc;
在本次统计的数据中,只购买一次的产品有77586种,购买两次的产品有9910种,本次分析的商品中用户购买的共有92753种商品,却没有出现购买用户数量很是集中的商品,购买一次的商品占到83.65%,说明商品售卖主要依靠长尾商品的累积效应,而非爆款商品的带动。
咱们首先统计出用户购买商品的最大值和最小值,数据源中没有相关的金额数据,所以经过 R 和 F 的数据对客户价值进行打分
SELECT r.用户id,f.frequency,recent_rank,freq_rank, CONCAT( CASE WHEN recent_rank<=(4330)/4 THEN '4' WHEN recent_rank>(4330)/4 AND recent_rank<=(4330)/2 THEN '3' WHEN recent_rank>(4330)/2 AND recent_rank<=4330/4*3 THEN '2' ELSE '1' END, CASE WHEN freq_rank<=(4330)/4 THEN '4' WHEN freq_rank>(4330)/4 AND freq_rank<=(4330)/2 THEN '3' WHEN freq_rank>(4330)/2 AND freq_rank<=4330/4*3 THEN '2' ELSE '1' END )AS user_value FROM (SELECT a.*,(@rank:=@rank+1) AS recent_rank FROM ( SELECT `用户id`, DATEDIFF('2014-12-19',max(日期)) AS recent FROM user AS t1 WHERE `用户行为`='支付' GROUP BY `用户id` ORDER BY recent )AS a,(SELECT @rank:=0) AS b) AS r, (SELECT *,(@rank2:=@rank2+1) AS freq_rank FROM (SELECT `用户id`,count(*) AS frequency FROM user WHERE `用户行为`='支付' GROUP BY `用户id` ORDER BY frequency DESC) AS a,(SELECT @rank2:=0)AS b) AS f WHERE r.用户id=f.用户id ORDER BY user_value DESC;
经过打分能够了解每位顾客的特性,从而实现差别化营销。好比对于客户价值高的用户,为重点用户须要关注;对于客户价值中等且忠诚度高而购买能力不足的,能够能够适当给点折扣或捆绑销售来增长用户的购买频率。对于客户价值低且忠诚度不高而购买能力强的,须要关注他们的购物习性作精准化营销,对于客户价值低且忠诚度不高购买能力不强的客户可做为潜在客户。
本次分析利用Mysql语句执行,数据集大约有1000万条淘宝用户行为数据,针对用户行为问题咱们可使用AARRR漏斗模型进行业务分析,结合上述分析的业务指标,提出修改建议。
第一环节获取客户(Acquisition):关键点是语言市场匹配、渠道产品匹配。
2014年12月12日那一天是双十二,点击量陡增,怀疑是那一天淘宝平台有大促销促销活动。一天的不一样时段中,点击量从19点开始点击量稳步上升,到22点到达顶峰,23点稍有回落,到24点明显降低,大部分用户会在晚上时段购物,平台开展活动获取客户首选这个时间段进行。
淘宝是电商第一平台,用户基数大,能够利用用户转发的方式获取新客户,好比在晚间时段作促销活动,邀请朋友拼团享受优惠来增长用户数,适合利用口碑渠道获取新客户。
第二环节激活用户(Activation):摸清楚产品的“啊哈”时刻,用户从浏览到最终购买整个过程的流失状况,肯定夹点位置,提出改善转化率的建议。
用户行为包括点击、放进购物车、收藏以及购买,点击量占总行为的94%,而放进购物车只占2.97%,最后实际购买跌至1.04%,夹点在放进购物车这一环节上。可能出现的缘由是用户花了大量时间寻找合适的产品。
根据数据分析结果改善转化率的建议有:(1)优化电商平台的筛选功能,增长关键词的准确率,让用户能够更容易找到合适产品;(2)给客户提供同类产品比较的功能,让用户不须要屡次返回搜索结果反复查看,便于用户肯定心怡产品;(3)精简下单步骤,提供一键下单服务,好比只包含点击-购买-支付三个环节,缩短购买流程,提升用户体验。
第三个环节提升留存(Retention):让用户养成使用习惯。
让用户保持使用淘宝电商平台的习惯是提升留存率的关键,可采用的方案可能有:(1)按照使用频率和购买次数积攒积分,天天上线点击量达到某个数值便可自动领取积分,到月末换取购物礼券;(2)对于年购买次数和金额达到规定量的客户推出VIP服务,享受全场不限时9.5折优惠,购买次数同比上升以后相应福利也上升,利用这种方法提升高价值用户的留存率和对平台的忠诚度。
第四个环节增长收入(Revenue):提升成交转化率、复购率及产品和类目的购买率状况。
独立用户从点击到最后购买的转化率约为68%,用户购买诚意仍是很足的,因此经过合理优化电商平台的筛选功能能够提升最终购买的转化率。
有购买行为的用户中,大概有92%的用户会重复购买。咱们能够经过复购率、购买金额(本次数据集没有提供)等来肯定价值用户,经过分析找出价值用户的购买偏好,产品和类目等,给价值用户制定个性化的产品推荐,从而提升用户体验和电商平台销售状况。
以上数据显示淘宝平台的最大优点是产品种类和类目丰富,用户可选择的范围很是广,吸引不一样类型的客户群,因此应该继续保持这个优点。
可能合适的提升方案有:(1)内容营销:“没有找不到的产品,只有想不到的产品”来宣传平台购物种类丰富,让用户造成“只要买东西上淘宝必定有”的思惟习惯;(2)针对前面肯定的价值用户提供个性化产品推荐,好比最关心的产品类目和种类,上新以后定时推送给用户;(3)针对复购率,能够推出3个月内复购优惠活动,让客户保持购买频率。
第五个环节推荐(Refer):用户推荐给其余人,关注转发率、转化率和K因子。
针对淘宝平台,让用户推荐给其余人的方案有:(1)产品在购买的时候提供拼团服务,让用户主动推荐给其余人;(2)每当推出新功能,好比前面提到的一键下单,让体验过的用户转发和分享领取优惠券,快速实现新功能推广;(3)当用户使用优惠券购物或者经过某种行为积分购物以后提供朋友圈打卡功能,分享给好友,实现传播功能。
在实行以上方案以后须要关注转发率,也既用户分享的比例,转化率,经过用户分享连接点击购买的用户比例以及K因子( = 感染率*转化率)来检测提出方案的有效性。