Python实现数据分析(八)数据清洗(DataClean)

前言

“压根儿就没有干净的数据集。” —— 乔希·沙利文

《纽约时报》将数据清洗称为“看门人工作”,并称数据科学家百分之八十的时间都花费在了这些清洗任务上。

1、数据科学过程

(1)问题陈述。 识别出你要解决的问题是什么

(2)接下来要做的是数据收集与存储。 数据从何而来?它们在哪里存放?格式又是什么?

(3)然后是数据清洗。 数据需要修改吗?有什么需要删除的吗?数据应该怎么调整才能适用于接下来的分析和挖掘?

(4)数据分析和机器学习。 数据需要哪些处理?需要什么样的转换?适用什么样的算法?运用什么公式?使用什么机器学习算法?顺序是什么样的?

(5)数据展现和可视化实现。 数据处理结果应该怎样呈现出来呢?我们可以用一张或几张数据表来表现,也可以使用图画、图表、网络图、文字云、地图等形式。但这是最佳的可视化方案吗?有没有更好的方案?

(6)最后一步是问题决议。 你在第一步里所提出的疑惑或是问题的答案究竟是什么?数据处理结果还要哪些不足?这个方法能彻底解决问题吗?你还能找出别的什么方法吗?接下来要做的又是什么?

2、传达数据清洗工作的内容

如果你已经决定使用六步框架来实现数据科学过程报表,将发现只有到了第三部你才会真正开始进行数据清洗有关的工作。

哪怕你并不需要把数据科学过程制成正式的报告文档,你仍然会发现,认真地记录下曾经按什么顺序做了些什么事情,对以后的工作也是极有帮助的。

要记得写工作日志。这个日志应该包含链接、屏幕截图,或是复制粘贴你曾经运行过的具体的命令,并配上为什么要这样做的解释性文字。

3、数据清洗的环境

使用Excel、SQL Server、MySQL等工具。你需要熟悉使用这些工具的方法,熟悉常用的SQL。(以后会专门开一个blog讲解SQL的基本操作)

4、数据清洗的步骤

一般来说,数据清理是将数据库精简以除去重复记录,并使剩余部分转换成标准可接收格式的过程。数据清理标准模型是将数据输入到数据清理处理器,通过一系列步骤“ 清理”数据,然后以期望的格式输出清理过的数据(如上图所示)。数据清理从数据的准确性、完整性、一致性、惟一性、适时性、有效性几个方面来处理数据的丢失值、越界值、不一致代码、重复数据等问题。

4.1、前期准备工作:

1.将原始数据格式归一化处理。如:字符类型的数据以文本方式保存、数值类型的数据按对应规格的类型存储。

2.将数据导入数据库中,并以合理的格式编辑表名和字段名。(如:避免字段名带空格,可以改成下划线等)

4.2、清洗的操作:

1.解决不完整数据( 即值缺失)的方法

大多数情况下,缺失的值必须手工填入( 即手工清理)。当然,某些缺失值可以从本数据源或其它数据源推导出来,这就可以用平均值、最大值、最小值或更为复杂的概率估计代替缺失的值,从而达到清理的目的。

2.错误值的检测及解决方法

用统计分析的方法识别可能的错误值或异常值,如偏差分析、识别不遵守分布或回归方程的值,也可以用简单规则库( 常识性规则、业务特定规则等)检查数据值,或使用不同属性间的约束、外部的数据来检测和清理数据。

3.重复记录的检测及消除方法

数据库中属性值相同的记录被认为是重复记录,通过判断记录间的属性值是否相等来检测记录是否相等,相等的记录合并为一条记录(即合并/清除)。合并/清除是消重的基本方法。

4.不一致性( 数据源内部及数据源之间)的检测及解决方法

从多数据源集成的数据可能有语义冲突,可定义完整性约束用于检测不一致性,也可通过分析数据发现联系,从而使得数据保持一致。

以上就是常用的DataClean的方法了,回归本项目,博主的DC方法。

1.首先,我先去了解每个字段的含义,按前面的步骤归一化数据,使得数据对应其类型。

2.在Excel中进行第一次清洗,将所有值为“None”的数据替换为空(Excel的替换功能)

3.将数据导入SQL Server数据库和MySQL数据(至于为什么导入两个数据,是因为有一些操作,在用二者的时候会比较方便),并且修改了表在数据库中的字段名。

4.将原来的数据表分为不同的子表(详情见:Python实现数据分析(六)数据字典的建立),我想分别从这些表进行数据分析,代表从不同方向进行分析,并且创建相应的视图,方便在数据库中进行相关的操作。

5.进行数据筛选,选取特征值大的数据,并且保留下来,因为特征值的差异过大,在进行数据可视化的时候会非常的“尴尬”,你压根看不清表达了啥。

在写这篇博客之前,我觉得没必要做DC,因为懒…结果就“吃瘪”了…

给大家看看没有数据清洗的数据可视化的效果吧:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
是不是看着很无语?

但是数据清洗之后呢?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

所以可见DC是一件多么重要的事情!

举一个很简单的例子:你准备做饭,你有一个精致的篮子,里面放着各种各样新鲜的蔬菜。当你来到厨房准备烹饪之旅,可再看看周围,厨房里肮脏不堪,锅碗瓢盆上尽是油污,还沾着大块的“奥利给”。至于厨具,只有一把锈迹斑斑的切刀和一块湿抹布。水槽也是破破烂烂的。而恰恰就在此时,你发现从看似鲜美的蔬菜下面爬出了已知甲虫。

即使是实习厨师也不可能在这样的地方烹饪。往轻了说,无外乎是暴殄天物,浪费了一篮子精美的食材。如果严重点儿讲,这会使人致病。再说了,在这种地方烹饪干部毫无乐趣可言,也许全天的时间都浪费在用生锈的破刀切菜上面。

与厨房的道理一样,事先花费些时间清洗和准备好数据科学工作区、工具和原始数据,都是值得的。“错进,错出。”这句源于上20世纪60年代的计算机编程箴言,对如今的数据科学来说亦为真理。

(本例子选自Megan Squier《干净的数据 数据清洗入门与实践》P2 第一章 为什么需要清洗数据)

“错进,错出。” —— 美国国税局(1963)

参考资料:

【1】百度百科:数据清洗

【2】[美] Megan Squier《干净的数据 数据清洗入门与实践》

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值