MySQL数据分析2_tb用户行为分析
本文数据来源于:天池
使用工具:MySQL,tableau
1.简介
用户行为是淘宝上用户行为的数据集,用于带有隐式反馈的推荐问题。该数据集由阿里巴巴提供。
2.数据理解
该数据集包括随机选择的约100万用户,以及这些用户在2017年11月25日至12月3日之间具有点击,购买,向购物车中添加商品和偏爱商品的行为,所有数据量超过1亿行,考虑到数据库运行时间,这里我就取200W左右的值进行分析。
字段理解如下:
字段 | 解释 |
---|---|
user_id | 用户编号 |
item_id | 商品编号 |
category_id | 系列编号 |
behavior type | 行为类型(PV:项目详细信息页面的页面视图,相当于项目单击;buy:购买物品;cart:将项目添加到购物车;fav:收藏一个项目) |
timestamp | 行为发生时的时间戳 |
3.设立目标
- 分析用户行为和常见电商指标,找到需要加强的环节;
- 分析最核心用户群体,对其进行分析;
- 分析用户在一定的时间周期内的用户行为,找到用户行为规律。
4.数据清洗
1)选择数据子集
这里选定导入的所有数据进行分析
2)删除重复值
这里为用户购物行为,确实可能存在相同的产品,用户会产生不同的操作的现象(比如先加购再购买),故不作处理
3)缺失值处理
SELECT count(1)
FROM userbehavior
WHERE user_id=' ' OR user_id IS NULL;
SELECT count(1)
FROM userbehavior
WHERE item_id=' ' OR item_id IS NULL;
SELECT count(1)
FROM userbehavior
WHERE category_id=' ' OR category_id IS NULL;
SELECT count(1)
FROM userbehavior
WHERE `behavior type`=' ' OR `behavior type` IS NULL;
SELECT count(1)
FROM userbehavior
WHERE `timestamp`=' ' OR `timestamp` IS NULL;
结果均为0,不存在缺失值。
4)合法性检查
检查数据有无不合逻辑的值,在本项目中表现为,用户行为时间是否在2017年11月25日至12月3日范围内:
-- 合法性检查
SELECT *,FROM_UNIXTIME(`timestamp`)
FROM userbehavior
WHERE `timestamp`<UNIX_TIMESTAMP('2017-11-25') OR `timestamp`>UNIX_TIMESTAMP('2017-12-4')
结果发现有992条记录是不合法的,如下图
删除以上数据
DELETE FROM userbehavior
WHERE `timestamp`<UNIX_TIMESTAMP('2017-11-25') OR `timestamp`>UNIX_TIMESTAMP('2017-12-4')
5)数据一致性处理
为了之后研究方便这里将时间戳转化为正常的日期格式,并分成两列,一列为日期,一列为小时。
SELECT *,FROM_UNIXTIME(`timestamp`,'%Y-%m-%d') date,FROM_UNIXTIME(`timestamp`,'%H') hour
FROM userbehavior;
ALTER TABLE userbehavior ADD COLUMN date VARCHAR(255) NULL;
ALTER TABLE userbehavior ADD COLUMN hour VARCHAR(255) NULL;
UPDATE userbehavior SET date=FROM_UNIXTIME(`timestamp`,'%Y-%m-%d');
UPDATE userbehavior SET hour=<