戎易大数据 | 数据分析实操篇:基于MySQL和Tableau的淘宝用户购物行为数据分析

本文来源公众号“戎易大数据”,仅用于学术分享,侵权删,干货满满。

原文链接:数据分析实操篇:基于MySQL和Tableau的淘宝用户购物行为数据分析

1项目介绍

提高平台GMV和实现精细化运营,本项目首先使用MySQL(实际上是用Navicat Premium连接了MySQL,方便数据导入)对来自某电商的数据集进行数据预处理,然后通过多维度拆解,从用户和商品两个大的角度分别进行分析,最后借助Tableau搭建仪表盘实现数据可视化。

2工具使用

Navicat、MySQL、Tableau

3理解数据

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

4数据处理

4.1导入数据

4.1.1命令提示符

在命令提示符中打开MySQL

4.1.2数据导入

打开Navicat,点击左上角连接MySQL,点击下一步

打开连接,右键新建数据库

双击数据库,点击右边有一行‘导入向导’,选择CSV文件,除了下图的这一步修改字段名称行为0,第一个数据行为1,都直接跳过就行,这里注意,最后一个数据行这个选项需要根据电脑水平量力而行,原数据有10000w条,我第一次的时候查询800w条的SQL电脑就会直接蓝屏,最后只用了700w条:

4.2数据预处理

4.2.1修改列名

ALTER TABLE userbehavior CHANGE f1 user_id INT,CHANGE f2 item_id INT,CHANGE f3 category_id INT,CHANGE f4 behavior_type VARCHAR ( 5 ),CHANGE f5 time_stamp INT;

4.2.2查找空值

SELECT
FROMuserbehaviorWHEREuser_id IS NULLOR item_id IS NULLOR category_id IS NULLOR behavior_type IS NULLOR time_stamp IS NULL;

没有返回值,说明不存在null值。

4.2.3重复值

思路是按照user_id和item_id和time_stamp分组,通过count()查看是否只有一条记录(因为一个用户在某一时间查看某个商品必定是唯一的):

SELECTuser_id,item_id,time_stampFROMuserbehaviorGROUP BYuser_id,item_id,time_stampHAVINGcount(*)>1

出现了5条返回值。

下一步去重的思路是给表增加一列id,并设置为自增的主键,这样重复的记录会有很多个id值,只保留最大值即可:

ALTER TABLE userbehavior ADD id INT FIRST;ALTER TABLE userbehavior MODIFY id INT PRIMARY KEY auto_increment;

删除重复值:

DELETE userbehaviorFROMuserbehavior,(SELECTuser_id,item_id,time_stamp,max( id ) AS max_idFROMuserbehaviorGROUP BYuser_id,item_id,time_stampHAVINGcount(*) > 1) AS df1WHEREuserbehavior.user_id = df1.user_idAND userbehavior.item_id = df1.item_idAND userbehavior.time_stamp = df1.time_stampAND userbehavior.id < df1.max_id;

4.2.4处理异常值&字段调整

超过时间范围的异常数据删除,即只保留2017-11-25 00:00:00至2017-12-03 23:59:59的数据。
为此我们将时间戳拆开方便后续使用,下面我新增了一列datetimes,数据类型是timestamp,(0)的意思是到秒为止不包括毫秒那些;另外from_unixtime()有两个参数,第二个格式参数我没写,如果为空默认会使用%Y-%m-%d %H:%i:%s的格式:

ALTER TABLE userbehavior ADD datetimes TIMESTAMP ( 0 );UPDATE userbehaviorSET datetimes = from_unixtime( time_stamp );DELETEFROMuserbehaviorWHEREdatetimes > '2017-12-03 23:59:59'OR datetimes < '2017-11-25 00:00:00';

另外,考虑到后面需要对用户在不同时段做了什么进行分析,利用substring将具体的日期和小时提取出来新增两列:

ALTER TABLE userbehavior ADD dates CHAR ( 10 );ALTER TABLE userbehavior ADD hours CHAR ( 2 );UPDATE userbehaviorSET dates = substring( datetimes, 1, 10 ),hours = substring( datetimes, 12, 2 );

5数据分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值