BD第4课:数据清洗

如果说抓取数据是数据分析的第1步,那么数据清洗就是数据分析的第2步,那么为什么要进行数据清洗呢?如何进行数据清洗呢?本文会先简单介绍一下什么是数据清洗,然后会对我们抓取的天猫商城和京东商城胸罩销售数据进行数据清洗。

数据清洗是指发现并纠正数据中可识别的错误或让数据更加规范的最后一道程序,包括检查数据一致性,处理无效值和缺失值,以及统一数据格式、转换数据格式等。与网上阅卷审核不同,数据清洗一般是由计算机程序而不是人工完成。

数据清洗从名字上也看的出就是把“脏”的“洗掉”,指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。因为数据仓库中的数据是面向某一主题的数据的集合,这些数据从多个业务系统中抽取而来而且包含历史数据,这样就避免不了有的数据是错误数据、有的数据相互之间有冲突,还有的数据的格式不是我们想要的,这些数据统称为“脏数据”,我们要按照一定的规则把“脏数据”洗掉,这就是数据清洗,而数据清洗的任务是过滤和处理那些不符合要求的数据,最后将处理结果交给下一个工序:数据分析。

下面看一下数据清洗的主要类型。

(1)残缺数据

这一类数据主要是一些应该有的信息缺失,如供应商的名称、分公司的名称、客户的区域信息缺失、业务系统中主表与明细表不能匹配等。对于这一类数据过滤出来,按缺失的内容分别写入对应的数据库字段或文件即可。

(2)错误数据

这一类错误产生的原因是抓取数据后没有进行判断直接写入后台数据库造成的,比如数值数据变成全角数字字符、字符串数据后面有一个回车操作、日期格式不正确、日期越界等。这一类数据也要分类,对于类似于全角字符、数据前后有不可见字符的问题,只能通过写 SQL 语句的方式找出来,然后再按要求更新回数据库即可。日期格式不正确的或者是日期越界的这一类错误可能会导致程序失败,这一类错误需要根据实际情况利用 SQL 重新修改。

(3)重复数据

对于这一类数据,需要将重复数据记录删除,或加上重复标记。

(4)数据格式不一致

这类数据也非常常见,如本例中的胸罩颜色、罩杯支持、上胸围尺寸等数据,每个店铺可能都不相同,对于这类数据,需要将数据格式进行统一,统一标准可以根据实际情况而定。

上面简单介绍了什么数据清洗,下面来看一下如果清洗胸罩销售数据。

如果读者使用前面介绍的方法从天猫和京东抓取了胸罩销售数据,现在我们已经有了一个 SQLite 数据库,里面有一个t_sales表,保存了所有抓取的数据,如图1所示。

enter image description here

图1 保存到数据库中的胸罩销售数据

从销售数据可以看出,网络爬虫抓取了颜色(Color)、尺寸(Size)、来源(Source)、评论(Discuss)和时间(Time)五类数据,当然还可以抓取更多的数据,这里只为了演示数据分析的方法,所以并没有抓取那么多的数据。

不过这五类数据有些不规范,本项目只考虑 Color 和 Size,所以先要对这两类数据进行清洗,由于每个店铺,每个商品的颜色叫法可能不同,所以需要将这些颜色值统一一下。例如,所有包含“黑”的颜色值都可以认为是黑色,所以可以新建立一个 color1 字段(尽量不要修改原始数据),将清洗后的颜色值保存到 color1 字段中,然后可以使用下面的 SQL 语句对颜色值进行清洗。

update t_sales  set color1 = '黑色'  where color like '%黑%' ;
update t_sales  set color1 = '绿色'  where color like '%绿%' ;
update t_sales  set color1 = '红色'  where color like '%红%' ;
update t_sales  set color1 = '白色'  where color like '%白%' ;
update t_sales  set color1 = '蓝色'  where color like '%蓝%' ;
update t_sales  set color1 = '粉色'  where color like '%粉%'  and color1 is null ;
update t_sales  set color1 = '青色'  where color like '%青%' ;
update t_sales  set color1 = '卡其色'  where color like '%卡其%' ;
update t_sales  set color1 = '紫色'  where color like '%紫%' ;
update t_sales  set color1 = '肤色'  where color like '%肤%' ;
update t_sales  set color1 = '水晶虾'  where color like '%水晶虾%' ;
update t_sales  set color1 = '玫瑰色'  where color like '%玫瑰%' ;
update t_sales  set color1 = '银灰'  where color like '%银灰%' ;

接下来对要对胸罩尺寸进行清洗,由于胸罩尺寸有罩杯和上胸围两个指标,但抓取的胸罩尺寸数据将这两个指标都混到了一起,所以在数据清洗时需要将他们分开。首先建立两个新字段(size1 和 size2),size1 保存罩杯尺寸,size2 保存上胸围尺寸。可以使用下面的 SQL 语句将 size 的值进行拆分,分别保存到 size1 和 size2 中。

保存罩杯尺寸的 SQL 语句:

update t_sales  set size1 = 'AA' where size like '%AA%'  ;
update t_sales  set size1 = 'A' where size like '%A%'  and size not like '%AA%'  ;
update t_sales  set size1 = 'B' where size like '%B%' ;
update t_sales  set size1 = 'C' where size like '%C%' ;
update t_sales  set size1 = 'D' where size like '%D%' ;
update t_sales  set size1 = 'E' where size like '%E%' ;
update t_sales  set size1 = 'F' where size like '%F%' ;
update t_sales  set size1 = 'G' where size like '%G%' ;

保存上胸围尺寸的SQL语句:

update t_sales  set size2 = '70'  where size like '%70%'  ;
update t_sales  set size2 = '75'  where size like '%75%'  ;
update t_sales  set size2 = '80'  where size like '%80%' ;
update t_sales  set size2 = '85'  where size like '%85%'  ;
update t_sales  set size2 = '90'  where size like '%90%'  ;
update t_sales  set size2 = '95'  where size like '%95%'  ;
update t_sales  set size2 = '100'  where size like '%100%'  ;
update t_sales  set size2 = '105'  where size like '%105%' ;
update t_sales  set size2 = '110'  where size like '%110%'  ;

清洗完的数据如图2所示。

enter image description here
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 225,124评论 6 523
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,453评论 3 404
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 172,386评论 0 368
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 61,136评论 1 301
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 70,142评论 6 400
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,593评论 1 315
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,958评论 3 429
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,944评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,477评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,512评论 3 346
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,639评论 1 355
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,227评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,971评论 3 340
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,397评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,550评论 1 277
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,203评论 3 381
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,713评论 2 366

推荐阅读更多精彩内容