一、知识点
分析方法
1、群组分析方法
如何分析用户留存(流失)?
2、RFM分析方法
如何对用户按价值分类?
3、漏斗分析方法
如何分析转化效果?
4、杜邦分析方法
如何对公司的财务分析?
5、如何清洗数据
二、项目练习
User Behavior Data from Taobao for Recommendation
User Behavior 是来自淘宝的用户行为数据集,用于隐式反馈的推荐问题
数据地址
本数据集包含了2017年11月25日至2017年12月3日之间,有行为的约一百万随机用户的所有行为(行为包括点击、购买、加购、喜欢)。数据集的组织形式和MovieLens-20M类似,即数据集的每一行表示一条用户行为,由用户ID、商品ID、商品类目ID、行为类型和时间戳组成,并以逗号分隔。
每列详细情况
共有四种用户行为类型
数据集大小
数据清洗
1、查找是否有重复数据
select *
from
(
select *,count(*) as countNumber
from userbehavior
group by user_id , item_id, `timestamp`
) as t
where countNumber > 1;
查询结果显示数据集并无重复数据
2、查找是否空值
select *
from userbehavior
where user_id is null or category_id is null
or item_id is null or behavior_type is null
or `timestamp` is null;
查询结果显示数据集并无空值
3、查找是否有超出分析时间的数据
给表添加一列叫dates,用于记录行为发生的日期
-- 如'2017-11-25' 为2017年11月25日
alter table userbehavior add dates varchar(255);
给新列dates赋值
update userbehavior
set dates = FROM_UNIXTIME(timestamp,'%Y-%m-%d');
给表添加一列叫hours 字段,用于记录行为发生的小时时间
-- 如'21'为晚上9点
alter table userbehavior add hours varchar(255);
给新列hours赋值
-- 特别注意,此处的时间格式中“小时”部分的字符需要用大写的H,才能转为24小时制
update userbehavior
set hours = hour(FROM_UNIXTIME(timestamp,'%H:%i:%s'));
给表添加一列叫datetime,用于记录行为发生的日期时间
-- 如'2017-11-25 21:30:00' 为2017年11月25日晚上9点30分
alter table userbehavior add datetime varchar(255);
给新列datetime赋值
update userbehavior
set datetime = FROM_UNIXTIME(timestamp,'%Y-%m-%d %H:%i:%s');
给表添加一列叫weekday,用于记录行为发生在星期几
-- 如'1' 为星期一
alter table userbehavior add weekday varchar(255);
给新列weekday赋值
/*
- mysql中,可以通过函数 WEEKDAY() 将日期转为“星期几”,但是索引是从0开始,
即0表示星期一、1表示星期二...
- 为了使该字段更符合阅读习惯,可以将其进行加1操作,结果即为1对应星期一,
2对应星期二...
*/
update userbehavior
set weekday = WEEKDAY(datetime)+1;
日期转换结果如图所示:
4、删除超出时间范围的数据
delete
from userbehavior
where dates < '2017-11-25' or dates > '2017-12-03';