淘宝用户行为分析
项目背景
UserBehavior是阿里巴巴提供的一个淘宝用户行为数据集,用于隐式反馈推荐问题的研究。
本数据集包含了2017年11月25日至2017年12月3日之间,有行为的约一百万随机用户的所有行为(行为包括点击、购买、加购、喜欢)。数据集的组织形式和MovieLens-20M类似,即数据集的每一行表示一条用户行为,由用户ID、商品ID、商品类目ID、行为类型和时间戳组成,并以逗号分隔。
明确分析的目的
- 用户活跃时段,指标趋势
- 用户对哪些产品、类目感兴趣
- 用户的留存率
- 用户购买行为特点
- 根据RFM模型对用户分类
数据处理
数据清洗
重复数据处理
select user_id
from userbehavior
group by user_id,item_id,timestamps
having count(user_id)>1;
缺失数据处理
-- 查找缺失值
select count(user_id),count(item_id),count(category_id),
count(behavior_type),count(timestamps)
from userbehavior;
逻辑错误处理
分析的时间范围是2017-11-25至2017-12-3 (9天)
delete from userbehavior
where dates>'2017-12-3'OR dates<'2017-11-25';
-- 检查数据是否有异常值
select * from userbehavior
where dates>'2017-12-3'OR dates<'2017-11-25';
数据转化
timestamp字段为时间戳字符类型,将其转化为日期时间类型
时间戳转换
-- 处理时间戳FROM_UNIXTIME(unix_timestamp,format)
-- 添加新的列,日期时间
alter table userbehavior
add dates_time timestamp(0) NULL;
update userbehavior set dates_time=FROM_UNIXTIME(timestamps);
数据提取
分析日活、月活需要日期和小时字段
-- 添加新的列,返回日期
alter table userbehavior
add dates char(10) NULL;
update userbehavior set dates=FROM_UNIXTIME(timestamps,"%Y-%m-%d");
-- 添加新的列,返回时间
alter table userbehavior
add times char(10) NULL;
update userbehavior set times=FROM_UNIXTIME(timestamps,"%T");
-- 返回小时
alter table userbehavior
add hours char(10) NULL;
update userbehavior set hours=left(times,2);
数据分析
用户日活跃和周活跃有什么规律吗?
查询用户每天流量,并创建视图
create view 每天流量 as
select count(distinct user_id) 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 总下单量,
dates as 日期
from userbehavior
group by dates;
Excel可视化:
分析:11/25-12/01这七天网站的流量没有太大波动,总体呈上升趋势,其中12/02 和12/03两天的各项日均流量指标显著大于前7天。
推测1可能是因为淘宝双12预热活动,使得浏览量大幅增加。
推测2可能这两天是周末,相比11/25和11/26为什么显著增加,是否是新用户增长带来的?
查询用户每时流量并创建视图