利用SQL和EXCEL进行淘宝用户行为数据分析

项目介绍

本项目主要围绕阿里巴巴提供的一个淘宝用户行为数据集进行分析,(行为包括点击、购买、加购、喜欢),目的在于揭露隐式反馈,提供更好的运营建议。

数据来源

https://tianchi.aliyun.com/dataset/dataDetail?dataId=649&userId=1

环境

win10,Navicat,Excel

目录

一、项目背景

1.项目概述

2.每列详细描述

3.分析目的

二、数据处理

1.缺失值查看及处理

2.检查重复值并处理

3.检查逻辑错误并处理

4.增加时间、小时列

三、数据分析

1.流量分析

1.1 总体流量转化

 1.2 每日流量分析

1.3 单日流量分析

2.商品分析

2.1 按照下单次数进行分析

2.2  按照浏览次数进行分析

3.用户分析

3.1 购买路径分析

 3.2 复购率分析

3.3 每日新增用户数

3.4 次日留存率

3.5 跳失率

3.6  RFM分析

四、结论


一、项目背景

1.项目概述

数据集(UserBehavior.csv)包含了2017年11月25日至2017年12月3日之间,有行为的约一百万随机用户的所有行为(行为包括点击、购买、加购、喜欢)。数据集的组织形式和MovieLens-20M类似,即数据集的每一行表示一条用户行为,由用户ID、商品ID、商品类目ID、行为类型和时间戳组成,并以逗号分隔。本项目分析其中的一万条数据。

2.每列详细描述

用户ID整数类型,序列化后的用户ID
商品ID整数类型,序列化后的商品ID
商品类目ID整数类型,序列化后的商品所属类目ID
行为类型字符串,枚举类型,包括('pv', 'buy', 'cart', 'fav') 
时间戳行为发生的时间戳

用户行为类型共有四种,它们分别是

行为类型说明
pv商品详情页pv,等价于点击
buy商品购买
cart将商品加入购物车
fav收藏商品

3.分析目的

  • 用户活跃时段
  • 用户对哪些产品、类目感兴趣
  • 用户的留存率、复购率、跳失率等
  • 用户购买行为特点
  • 根据RFM模型对用户分类

二、数据处理

1.缺失值查看及处理

查看每一列数据的行数

-- 1.检查是否有缺失值
SELECT COUNT(userid),COUNT(itemid),COUNT(categoryid),count(behaviortype),COUNT(timestamps) 
FROM userbehavior

 本数据集完整程度较好,每一列都是9998行,没有缺失值

2.检查重复值并处理

SELECT userid FROM userbehavior
GROUP BY userid,itemid,timestamps,categoryid,timestamps
HAVING COUNT(userid) > 1;

结果是

没有重复值 

3.检查逻辑错误并处理

数据集的时间戳范围在2017年11月25日至2017年12月3日之间,查看是否有不在这个时间范围内的。

首先把时间戳转换为datetime形式

ALTER TABLE userbehavior 
ADD COLUMN dates_time TIMESTAMP NULL;
UPDATE userbehavior 
SET dates_time = FROM_UNIXTIME(timestamps);
ALTER TABLE userbehavior 
ADD COLUMN dates TIMESTAMP NULL;
UPDATE userbehavior 
SET dates = FROM_UNIXTIME(timestamps,'%Y-%m-%d');

然后查找是否有不在这个时间范围内的

select *
from userbehavior
WHERE dates < '2017-11-25' 
or dates > '2017-12-03';

再把他们删除掉

delete from userbehavior
WHERE dates < '2017-11-25' 
or dates > '2017-12-03';

4.增加时间、小时列

为了方便后续按照时间、小时对用户习惯进行分析,增加这两列

#添加新列time,返回时间
ALTER TABLE userbehavior 
ADD COLUMN time VARCHAR(10) NULL;
UPDATE userbehavior 
SET time = FROM_UNIXTIME(timestamps,'%H:%i:%S');

#添加新列hour,返回小时
alter table userbehavior
add column hour varchar(2);
update userbehavior
set hour=left(time,2);

 查看经过上述处理之后的表

三、数据分析

1.流量分析

1.1 总体流量转化

-- 用户行为流量转化
SELECT 
SUM(CASE WHEN behaviortype = 'pv'   THEN 1 ELSE 0 END) AS 总浏览量,
SUM(CASE WHEN behaviortype = 'fav'  OR behaviortype = 'cart' THEN 1 ELSE 0 END ) AS 总收藏加购量,
SUM(CASE WHEN behaviortype = 'buy'  THEN 1 ELSE 0 END) AS 总购买量,

-- 计算加购收藏转化率
CONCAT(ROUND(SUM(CASE WHEN behaviortype = 'fav'  OR behaviortype = 'cart' THEN 1 ELSE 0 END )/SUM(CASE WHEN behaviortype = 'pv' THEN 1 ELSE 0 END) * 100,2),'%') AS pv_cart,

-- 计算下单转化率
CONCAT(ROUND(SUM(CASE WHEN behaviortype = 'buy' THEN 1 ELSE 0 END)/SUM(CASE WHEN behaviortype = 'pv' THEN 1 ELSE 0 END)*100,2),'%') AS pv_buy

FROM userbehavior; 

结果:

 用Excel实现可视化:

 1.2 每日流量分析

SELECT 
dates,
count(DISTINCT(userid)) as 用户数,
SUM(CASE WHEN behaviortype = 'pv'   THEN 1 ELSE 0 END) AS 浏览量,
SUM(CASE WHEN behaviortype = 'fav'  OR behaviortype = 'cart' THEN 1 ELSE 0 END ) AS 收藏加购量,
SUM(CASE WHEN behaviortype = 'buy'  THEN 1 ELSE 0 END) AS 购买量
from userbehavior
group by dates
order by dates;

用Excel实现可视化:

 

 12月2日和12月3日这两天流量明显呈上升趋势,推测可能是因为淘宝双12预热活动,浏览量、收藏加购量较12月1日有明显增加。

1.3 单日流量分析

SELECT 
hour,
count(DISTINCT(userid)) as 用户数,
SUM(CASE WHEN behaviortype = 'pv'   THEN 1 ELSE 0 END) AS 浏览量,
SUM(CASE WHEN behaviortype = 'fav'  OR behaviortype = 'cart' THEN 1 ELSE 0 END ) AS 收藏加购量,
SUM(CASE WHEN behaviortype = 'buy'  THEN 1 ELSE 0 END) AS 购买量
from userbehavior
group by hour
order by hour;

分析:

  1. 图上显示低谷期为凌晨1-5点,是大多数人休息的时间,从6点开始各项指标才逐渐上升,符合一般用户的作息习惯
  2. 用户数和购买数从早上8点以后差别不大,收藏加购量和浏览量在22点达到顶峰
  3. 推测用户最活跃时间段为19-22点,是大多数人下班休息放松的时间

2.商品分析

2.1 按照下单次数进行分析

按照下单次数分组,分析每种下单次数对应的商品种类

SELECT
	购买次数,
	count(*) as 商品数量
FROM
	(
		SELECT
			itemid,
			count(itemid) AS 购买次数
		FROM
			userbehavior
		WHERE
			behaviortype = 'buy'
		GROUP BY
			itemid
	) AS a
GROUP BY 购买次数

由此可见,大多数商品只会被购买一次

我们再看看根据类目进行分类的下单次数

SELECT
	购买次数,
	count(*) as 类目数量
FROM
	(
		SELECT
			categoryid,
			count(categoryid) AS 购买次数
		FROM
			userbehavior
		WHERE
			behaviortype = 'buy'
		GROUP BY
			categoryid
	) AS a
GROUP BY 购买次数

根据类目分类,某些类目重复次数较多,可以对目标用户加强以下这些类目的推荐

SELECT
			categoryid,
			count(categoryid) AS 购买次数
		FROM
			userbehavior
		WHERE
			behaviortype = 'buy'
		GROUP BY
			categoryid
		order by 购买次数 desc
		limit 3

2.2  按照浏览次数进行分析

按照浏览次数分组,分析每种浏览次数对应的商品种类

SELECT
	浏览次数,
	count(*) as 商品数量
FROM
	(
		SELECT
			itemid,
			count(itemid) AS 浏览次数
		FROM
			userbehavior
		WHERE
			behaviortype = 'pv'
		GROUP BY
			itemid
	) AS a
GROUP BY 浏览次数

结果:

帕累托结果可视化:

总浏览量=浏览次数*商品数量

 在Excel里面做出商品占比以及总浏览量占比的表格,并可视化

上图显示的结果并不符合二八定律,浏览次数排前20%的商品只贡献了3.5%的浏览量,有82.67%的商品只被浏览过一次,浏览量占比达到63.5%,这还是表现了互联网环境下商品的长尾效应;建议商家增多爆款的曝光量。

3.用户分析

3.1 购买路径分析

从点击到下单购买,中间用户可能会收藏该商品,加购该商品,将这些可能性组合一下一共有四种购买路径:

(1)点击–直接购买

(2)点击–加购不收藏–购买

(3)点击–收藏不加购–购买

(4)点击–加购且收藏–购买

我们对每一种路径进行分析和统计,看一下哪一种更受欢迎。

首先构建每个用户的行为统计表

-- 按照用户ID分组,用户行为user_behavior行转列数据
CREATE VIEW user_behavior_data AS
SELECT userid,
COUNT(behaviortype) AS 用户行为数总计,
sum(CASE WHEN behaviortype ='pv'   THEN 1 ELSE 0 END)  AS 点击,
sum(CASE WHEN behaviortype ='fav'  THEN 1 ELSE 0 END)  AS 收藏,
sum(CASE WHEN behaviortype ='cart' THEN 1 ELSE 0 END)  AS 加购,
sum(CASE WHEN behaviortype ='buy'  THEN 1 ELSE 0 END)  AS 购买
FROM userbehavior
GROUP BY userid
ORDER BY 用户行为数总计 DESC;

 

 查看不同行为的用户数量

-- 不同行为的用户数量
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 user_behavior_data;

产生点击的用户数有92名,最终购买的用户是55名,由此计算出购买转化率是59.8%

接下来计算每一种路径的转化率

(1)点击–直接购买

-- 路径1:点击--直接购买
SELECT 
SUM(CASE WHEN 购买>0 THEN 1 ELSE 0 END) AS 购买用户数
from user_behavior_data
where 收藏=0
and 加购=0
and 购买>0;

点击-直接购买的用户占比4/55=7.2%,转化率 4/92=4.3%

(2)点击–加购不收藏–购买

-- 路径2:点击--加购不收藏--购买
SELECT 
SUM(CASE WHEN 加购>0 THEN 1 ELSE 0 END) AS 加购不收藏用户数,
SUM(CASE WHEN 购买>0 THEN 1 ELSE 0 END) AS 购买用户数
FROM user_behavior_data
WHERE 加购>0 AND 收藏=0;

用户占比 32/55=58.2%  加购到购买转化率68%

(3)点击–收藏不加购–购买

-- 路径3:点击--收藏不加购--购买
SELECT 
SUM(CASE WHEN 收藏>0 THEN 1 ELSE 0 END) AS 收藏不加购用户数,
SUM(CASE WHEN 购买>0 THEN 1 ELSE 0 END) AS 购买用户数
FROM user_behavior_data
WHERE 加购=0 AND 收藏>0;

用户占比 6/55=10.9%   收藏到购买转化率50%

(4)点击–加购且收藏–购买

-- 路径4:点击--加购且收藏--购买
SELECT 
SUM(CASE WHEN 加购>0 THEN 1 ELSE 0 END) AS 加购且收藏用户数,
SUM(CASE WHEN 购买>0 THEN 1 ELSE 0 END) AS 购买用户数
FROM user_behavior_data
WHERE 加购>0 AND 收藏>0;

 

 用户占比 13/55=23.6%   加购收藏到购买转化率 62%

我们可以发现

  • 在所有购买的用户中,将近60%的人喜欢加购不收藏,23.6%的人加购并收藏
  • 加购或收藏行为发生之后,购买的转化率会大大提升,只有极少数人会在点击之后直接购买。我们可以引导用户将商品加购,提高中间转化率。

 3.2 复购率分析

SELECT 
sum(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 user_behavior_data;

复购率反应客户的忠诚度,我们监控的时间是9天,9天内有65.45%的消费者复购,忠诚度还是比较高的。

3.3 每日新增用户数

select minday.`min(dates)` as 日期,count(userid) as 每日新增用户数
from 
(SELECT userid,min(dates)
from userbehavior
group by userid) as minday
group by 日期

 

3.4 次日留存率

select dates,
        ifnull(round((sum(case when (userid,dates)in
            (select userid,date_add(dates,interval -1 day) 
             from userbehavior)  
and (userid,dates)in (select userid,min(dates)from userbehavior group by userid)
            then 1 else 0 end))/
        (sum(case when (userid,dates)in
            (select userid,min(dates)from userbehavior group by userid)
            then 1 else 0 end)),3),0)as p
from userbehavior
group by dates
order by dates;

  • 结合每日新增来看,11月25日和11月30日的新增用户用户质量非常高
  • 本项目选取数据有限,12月1日至3日没有新增用户了,所以次日留存率为0
  • Facebook有一个著名的40-20-10法则,新用户次日留存率为40%,那么这个产品的数据就是比较好的。11月25日至11月30日的新增用户次日留存都在40%以上,淘宝的留存率是挺好的。

3.5 跳失率

跳失率=只访问了一个页面就离开的访问次数占该入口总访问次数的比例,我们用只浏览了一个页面的访客数/总访客数来计算。

select a.跳失人数,a.总用户数,跳失人数/总用户数 as 跳失率
from (select 
(select count(userid)from user_behavior_data
where 点击=1
and 收藏=0
and 加购=0
and 购买=0)  as 跳失人数,
count(distinct userid) as 总用户数
from user_behavior_data) as a

就这9天而言,跳失率为0

说明没有用户只浏览了一个界面以后就离开,由此可见淘宝的商品广告足够有创意或者吸引力。

3.6  RFM分析

RFM模型包括

  • 最近一次消费(Recency)
  • 消费频率(Frequency)
  • 消费金额(Monetary)

本数据集中不包括M数据,本次不考虑该指标。

3.6.1 消费频率(Frequency)

select max(购买),min(购买),avg(购买)as 平均购买次数
from user_behavior_data
where `购买`>0;

用户购买次数,最多达到12次,最少的是1次,平均每人购买了3次。 

3.6.2  最近一次消费(Recency)

select MAX(购买间隔), Min(购买间隔), avg(购买间隔) as 平均购买间隔
from(
select userid,datediff('2017-12-04',max(dates)) as 购买间隔
from userbehavior
where behaviortype='buy'
group by userid) as a

 

 用户的最近一次购买时间,间隔最多的是在2017-12-04的9天之前,最少是在一天前,平均是在3.6天前有购买记录。

3.6.3 根据R、F分类

我们根据R、F的高低将用户分成四类,每一类采取不同的运营策略,实现精细化运营。

 注:R、F的高低是相对于平均值而言

我们查看一下以上四类各有多少人

先对客户分好类

select u.*,
(case when 购买间隔<=3.6 and 购买次数 >= 3 then '重要价值客户'
 when 购买间隔 <=3.6 and 购买次数 < 3 then '重要发展客户' 
when 购买间隔 >=3.6 and 购买次数 < 3 then '重要挽留客户' 
when 购买间隔 >=3.6 and 购买次数 >= 3 then '重要保持客户' 
else '一般客户' end)as 类型
from (select userid,datediff('2017-12-04',max(dates)) as 购买间隔,count(behaviortype)as 购买次数
from userbehavior
where behaviortype='buy'
group by userid) as u
order by 购买次数 desc,购买间隔 asc

再看一下每一类有多少人

select 类型,count(*) as 人数
from (select u.*,
(case when 购买间隔<=3.6 and 购买次数 >= 3 then '重要价值客户'
 when 购买间隔 <=3.6 and 购买次数 < 3 then '重要发展客户' 
when 购买间隔 >=3.6 and 购买次数 < 3 then '重要挽留客户' 
when 购买间隔 >=3.6 and 购买次数 >= 3 then '重要保持客户' 
else '一般客户' end)as 类型
from (select userid,datediff('2017-12-04',max(dates)) as 购买间隔,count(behaviortype)as 购买次数
from userbehavior
where behaviortype='buy'
group by userid) as u
order by 购买次数 desc,购买间隔 asc) as uu
group by 类型
order by 人数 DESC;

 

针对每一类人,采取不一样的策略

  • 对于重要价值用户,关注并保持, 继续提升这部分客群满意度,提供VIP服务,增加留存;
  • 对于重要发展客户,用会员权益或者发放优惠券的形式提高消费次数;
  • 对于重要保持用户,及时通过邮件、短信或者客户端提醒,召回客户;
  • 对于重要挽留客户,一方面应该优化推荐算法,分析其购物习性和商品偏好,精准投放广告,让用户看到喜欢的商品;另一方面,应该提升广告创意和吸引力,以唤醒他们的购买意愿。

四、结论

根据以上分析,我们可以得出结论:

  1. 用户活跃时段是19-22点,下班休息的时间
  2. 用户对categoryid为1620537、835895、965809的类目较感兴趣
  3. 在监控的9天内,用户的次日留存率都超过40%,复购率为65.45%,跳失率为0
  4. 在所有购买的用户中,将近60%的人喜欢加购不收藏,23.6%的人喜欢加购并收藏
  5. 加购或收藏行为发生之后,购买的转化率会大大提升,只有极少数人会在点击之后直接购买。
  6. 无论是浏览量还是销售量,主要依靠商品的长尾效应。
  7. 利用RFM模型对用户进行分群,我们找出有价值的用户

一些建议:

  1. 在19点以后开展营销活动,活动比较容易触达用户,可以提高网站流量
  2. 某些类目复购率较高,可以多推荐这些类目给目标客群
  3. 用户留存率、复购率、跳失率的数据都很好,要继续保持提升淘宝的广告创意和吸引力、商品质量、售后服务等等
  4. 建议卖家主动引导用户收藏加购,比如在商品主图或者详情页推出“收藏加购有小礼品赠送或 收藏加购会提前发货”等吸引新用户,还可以让客服人员主动告知顾客。
  5. 长尾效应的确能带来一部分收益,但是,繁多的种类对于商家来说其实是一种经营负担。二八定律告诉我们,商家其实可以通过打造爆款商品来获利。
  6. 使用RFM模型对客户群进行划分,对不同的客群采用差异化策略管理,达到精准营销:

  • 对于重要价值用户,关注并保持, 继续提升这部分客群满意度,提供VIP服务,增加留存;
  • 对于重要发展客户,用会员权益或者发放优惠券的形式提高消费次数;
  • 对于重要保持用户,及时通过邮件、短信或者客户端提醒,召回客户;
  • 对于重要挽留客户,一方面应该优化推荐算法,分析其购物习性和商品偏好,精准投放广告,让用户看到喜欢的商品;另一方面,应该提升广告创意和吸引力,以唤醒他们的购买意愿。

参考资料:

部分文字转自https://blog.youkuaiyun.com/weixin_43890183/article/details/104527565?utm_medium=distribute.pc_relevant.none-task-blog-2~default~OPENSEARCH~default-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~OPENSEARCH~default-1.control

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值