一、知識(shí)點(diǎn)
分析方法

1、群組分析方法
如何分析用戶留存(流失)?

2、RFM分析方法
如何對用戶按價(jià)值分類?

3、漏斗分析方法
如何分析轉(zhuǎn)化效果?

4、杜邦分析方法
如何對公司的財(cái)務(wù)分析?

5、如何清洗數(shù)據(jù)

二、項(xiàng)目練習(xí)
User Behavior Data from Taobao for Recommendation
User Behavior 是來自淘寶的用戶行為數(shù)據(jù)集,用于隱式反饋的推薦問題
數(shù)據(jù)地址
本數(shù)據(jù)集包含了2017年11月25日至2017年12月3日之間,有行為的約一百萬隨機(jī)用戶的所有行為(行為包括點(diǎn)擊、購買、加購、喜歡)。數(shù)據(jù)集的組織形式和MovieLens-20M類似,即數(shù)據(jù)集的每一行表示一條用戶行為,由用戶ID、商品ID、商品類目ID、行為類型和時(shí)間戳組成,并以逗號(hào)分隔。
每列詳細(xì)情況

共有四種用戶行為類型

數(shù)據(jù)集大小

數(shù)據(jù)清洗
1、查找是否有重復(fù)數(shù)據(jù)
select *
from
(
select *,count(*) as countNumber
from userbehavior
group by user_id , item_id, `timestamp`
) as t
where countNumber > 1;
查詢結(jié)果顯示數(shù)據(jù)集并無重復(fù)數(shù)據(jù)

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;
查詢結(jié)果顯示數(shù)據(jù)集并無空值

3、查找是否有超出分析時(shí)間的數(shù)據(jù)
給表添加一列叫dates,用于記錄行為發(fā)生的日期
-- 如'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 字段,用于記錄行為發(fā)生的小時(shí)時(shí)間
-- 如'21'為晚上9點(diǎn)
alter table userbehavior add hours varchar(255);
給新列hours賦值
-- 特別注意,此處的時(shí)間格式中“小時(shí)”部分的字符需要用大寫的H,才能轉(zhuǎn)為24小時(shí)制
update userbehavior
set hours = hour(FROM_UNIXTIME(timestamp,'%H:%i:%s'));
給表添加一列叫datetime,用于記錄行為發(fā)生的日期時(shí)間
-- 如'2017-11-25 21:30:00' 為2017年11月25日晚上9點(diǎn)30分
alter table userbehavior add datetime varchar(255);
給新列datetime賦值
update userbehavior
set datetime = FROM_UNIXTIME(timestamp,'%Y-%m-%d %H:%i:%s');
給表添加一列叫weekday,用于記錄行為發(fā)生在星期幾
-- 如'1' 為星期一
alter table userbehavior add weekday varchar(255);
給新列weekday賦值
/*
- mysql中,可以通過函數(shù) WEEKDAY() 將日期轉(zhuǎn)為“星期幾”,但是索引是從0開始,
即0表示星期一、1表示星期二...
- 為了使該字段更符合閱讀習(xí)慣,可以將其進(jìn)行加1操作,結(jié)果即為1對應(yīng)星期一,
2對應(yīng)星期二...
*/
update userbehavior
set weekday = WEEKDAY(datetime)+1;
日期轉(zhuǎn)換結(jié)果如圖所示:

4、刪除超出時(shí)間范圍的數(shù)據(jù)
delete
from userbehavior
where dates < '2017-11-25' or dates > '2017-12-03';