十万条数据的csv文件 有多大_用户行为数据预处理篇

5a7a269db23aafe1d4f92e869499e1e5.png
写在前面:本文属于淘宝用户行为分析这个项目的一部分,单独拎出来数据导入与清洗过程,写成一篇文章。

附完整的项目分析与可视化分析报告:

Daxuya:淘宝用户行为分析(SQL)​zhuanlan.zhihu.com
ac5930d8824dad41e2ca0f2e129a9d0a.png

回顾下之前在Excel部分学习的数据清洗相关知识点:

  • 数据清洗即数据预处理,目的是去掉无效、重复数据,以符合我们的需求,得到想要的数据。
  • 数据清洗的步骤:选择子集;列名重命名;删除重复值;缺失值处理;一致化处理;数据排序;异常值处理

一、导入数据集

由于此次分析使用的是MySQL,需要先将数据导入到数据库中,再进行数据清洗。

a、新建一个数据库(Taobao)用于此次分析:

35b1c95c4e61d84b1bd80b2f31ccc1c8.png

b、如图,在创建好的新数据库下,提前创建一张userbehavior表(用于后面导入数据),使用Navicat导入表数据。

de1665b167e6262558cb00ec7f02ddd8.png

c、右击创建的表格,选择“导入向导”,选择你要导入的数据表,导入文档格式注意与原始文档格式一致(这里是CSV格式)。

ad1a9015c18c1c1b4c0ed0fa528cbc2f.png

d、点击下一步,进入选择附加选项(如图),因原csv文件中没有字段名,所以这里为“0”,从csv文件的第一行数据开始导入,到csv文件的第100万行数据结束。

0b277315bca3b8e0028129c97fd2d58b.png

e、点击下一步,选择目标表。这里选择我们提前创建好的空表。

cf1800e13e921526469336eb102cd5e5.png

f、点击下一步,匹配各列数据,使之对应。

29f06ad77efce6e62b4f5d10e3e57da1.png

g、点击下一步,选择导入模式,这里选择直接导入数据到创建好的空表。

e2515c4caab50db01749a746c8bc9650.png

h、终于到了最后一步,点击“开始”按钮执行导入命令,数据量较大,耐心等待一会,如下图,显示成功导入100万条数据。

8617bf6c669d05dc6cdf239557d8fb6f.png

至此,数据已导入成功,我们来看下数据的概貌:

a959505dbf2c1bd91d1de274267b5399.png

a63e139d25ba991fce9fbefbd264e5b6.png

数据导入显示没问题,且是100万条。

下面进入本次分析的数据清洗:

选择子集 -> 列名重命名 -> 删除重复值 -> 处理缺失值 -> 一致化处理 -> 删除异常值


二、数据清洗

2.1 选择子集

原数据集中数据量庞大,本次分析选取了其中的100万条数据进行分析。

最终选取的100万条数据中各字段均有分析价值,所有的字段都需要用到,所以选择全部字段。

2.2 列名重命名

在前面导入数据集中,已经自创建了数据表结构,不需再作更改。

2.3 删除重复值

将用户ID,商品ID,时间戳三个字段定为联合主键,查询是否存在重复的记录。

select 用户ID
from userbehav
group By 用户ID,商品ID,时间戳
having count(*) >1;

查询结果:

676c9ecc8c82779e1f419b46e30e4a4c.png

由查询结果可知,数据集中没有重复值。

2.4 处理缺失值

对所有列进行计数查询:

select count(用户ID),count(商品ID),count(商品类目ID),count(行为类型),count(时间戳)
from userbehav;

查询结果:

de7b60e35ac7b5ce7be823043f72c3f7.png

由查询结果可知,选取数据集的100万条数据各列无缺失值。

2.5 一致化处理

f1b481410ca47f378a40e5df797fb62d.png
处理前的时间

由于数据中时间是以时间戳的形式记录,在分析时将“时间戳”列转换为日期和时间,便于理解和后续的分析。

-- 截取年月日,形成新的一列
alter table userbehav add column 日期 varchar(20);

-- 截取日期时间,形成新的一列
alter table userbehav add column 时间 varchar(20);

-- 将时间戳里的数据转化格式
update userbehav
set 
日期=from_unixtime(时间戳,'%Y-%m-%d'),
时间=from_unixtime(时间戳,'%k:%i:%s');

6cdcf7180071f149199491a2c95ed502.png
处理后的日期和时间

2.6 删除异常值

因为此次数据研究的时间范围是2017年11月25日至2017年12月3日,所以需要将不满足这个时间范围的数据删除。

检查日期是否在数据集规定范围内:

select min(日期),max(日期)
from userbehav;

查询结果:

f9e4b7a7f348c5a02d43cf615fd6eb9c.png

上查询结果显示时间范围并不在我们选定的时间当中,其中存在异常值。接着查询出这些不符合时间范围的数据。结果显示,这样的数据共有470条记录。

select * 
from userbehav
where 日期< '2017-11-25' or 日期> '2017-12-03';

3dcbb1b3bb04f06632acb6c8425283e2.png
部分异常数据记录截图

将这470条数据删除掉后,再次查询检验数据集时间范围:

-- 删除异常数据470条
delete from userbehav
where 日期< '2017-11-25' or 日期> '2017-12-03';

2fe1996728f07ec7ea2ba08bd5bfaa92.png

OK,数据集时间范围已经没问题。

删除掉之后,查询剩余的数据总量和用户总数。

-- 删除异常数据470条
delete from userbehav
where 日期< '2017-11-25' or 日期> '2017-12-03';

-- 统计删除异常数据后存留的数据总量 和 用户总数
select count(*),count(DISTINCT 用户ID) 
from userbehav;

得到查询结果:

f0371f5e3ade38e40696585d4d890733.png

由上查询结果知,删除470条异常数据后,数据集中的数据总量为999530,用户总数为9739。

至此,完成此次分析全部的数据清洗。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值