数据分析中如何清洗数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据分析中如何清洗数据?相关的知识,希望对你有一定的参考价值。

在数据分析中我们重点研究的是数据,但是不是每个数据都是我们需要分析的,这就需要我们去清洗数据,通过清洗数据,这样我们就能够保证数

在数据分析中我们重点研究的是数据,但是不是每个数据都是我们需要分析的,这就需要我们去清洗数据,通过清洗数据,这样我们就能够保证数据分析出一个很好的结果,所以说一个干净的数据能够提高数据分析的效率,因此,数据清洗是一个很重要的工作,通过数据的清洗,就能够统一数据的格式,这样才能够减少数据分析中存在的众多问题,从而提高数据的分析的效率。但是清洗数据需要清洗什么数据呢?一般来说,清洗数据的对象就是缺失值、重复值、异常值等。
首先给大家说明一下什么是重复值,所谓重复值,顾名思义,就是重复的数据,数据中存在相同的数据就是重复数据,重复数据一般有两种情况,第一种就是数据值完全相同的多条数据记录。另一种就是数据主体相同但匹配到的唯一属性值不同。这两种情况复合其中的一种就是重复数据。那么怎么去除重复数据呢?一般来说,重复数据的处理方式只有去重和去除两种方式,去重就是第一种情况的解决方法,去除就是第二种情况的解决方法。
其次给大家说一下什么是异常值,这里说的异常值就是指一组测试值中宇平均数的偏差超过了两倍标准差的测定值。而与平均值的偏差超过三倍标准差的测定值则被称为高度异常值。对于异常值来说,我们一般不作处理,当然,这前提条件就是算法对异常值不够敏感。如果算法对异常值敏感了怎么处理异常值呢?那么我们就需要用平均值进行替代,或者视为异常值去处理,这样可以降低数据异常值的出现。
而缺失值也是数据分析需要清理的对象,所谓缺失值就是数据中由于缺少信息导致数据的分组、缺失被称为缺失值,存在缺失值的数据中由于某个或者某些数据不是完整的,对数据分析有一定的影响。所以,我们需要对缺失值进行清理,那么缺失值怎么清理呢?对于样本较大的缺失值,我们可以直接删除,如果样本较小,我们不能够直接删除,因为小的样本可能会影响到最终的分析结果。对于小的样本,我们只能通过估算进行清理。
关于数据分析需要清楚的数据就是这篇文章中介绍的重复值、异常值以及缺失值,这些无用的数据大家在清理数据的时候一定要注意,只有这样才能够做好数据分析。最后提醒大家的是,大家在清理数据之前一定要保存好自己的原始数据,这样我们才能够做好数据的备份。切记切记。
参考技术A

数据分析中数据集通常包含大量数据,这些数据可能以不易于使用的格式存储。因此,数据分析师首先需要确保数据格式正确并符合规则集。

此外,合并来自不同来源的数据可能很棘手,数据分析师的另一项工作是确保所得到的信息合并有意义。

数据稀疏和格式不一致是最大的挑战–这就是数据清理的全部内容。数据清理是一项任务,用于识别不正确,不完整,不准确或不相关的数据,修复问题,并确保将来会自动修复所有此类问题,数据分析师需要花费60%的时间去组织和清理数据!

数据分析中数据清理有哪些步骤?

以下是经验丰富的开发团队会采用的一些最常见的数据清理步骤和方法:

    处理丢失的数据

    标准化流程

    验证数据准确性

    删除重复数据

    处理结构错误

    摆脱不必要的观察

扩展阅读:

让我们深入研究三种选定的方法:

处理丢失的数据——忽略数据集中的丢失值,是一个巨大的错误,因为大多数算法根本不接受它们。一些公司通过其他观察值推算缺失值或完全丢弃具有缺失值的观察值来解决此问题。但是这些策略会导致信息丢失(请注意,“无价值”也会告诉我们一些信息。如果公司错过了分类数据,则可以将其标记为“缺失”。缺失的数字数据应标记为0,以进行算法估计)在这种情况下的最佳常数。

结构性错误——这些是在测量,传输数据期间出现的错误,以及由于数据管理不善而引起的其他问题。标点符号不一致,错别字和标签错误是这里最常见的问题。这样的错误很好地说明了数据清理的重要性。

不需要的观察——处理数据分析的公司经常在数据集中遇到不需要的观察。这些可以是重复的观察,也可以是与他们要解决的特定问题无关的观察。检查不相关的观察结果是简化工程功能流程的好策略-开发团队将可以更轻松地建立模型。这就是为什么数据清理如此重要的原因。

对于依赖数据维护其运营的企业而言,数据的质量至关重要。举个例子,企业需要确保将正确的发票通过电子邮件发送给合适的客户。为了充分利用客户数据并提高品牌价值,企业需要关注数据质量。

避免代价高昂的错误:

数据清理是避免企业在忙于处理错误,更正错误的数据或进行故障排除时增加的成本的最佳解决方案。

促进客户获取:

保持数据库状态良好的企业可以使用准确和更新的数据来开发潜在客户列表。结果,他们提高了客户获取效率并降低了成本。

跨不同渠道理解数据:

数据分析师们在进行数据清理的过程中清除了无缝管理多渠道客户数据的方式,使企业能够找到成功开展营销活动的机会,并找到达到目标受众的新方法。

改善决策过程:

像干净的数据一样,无助于促进决策过程。准确和更新的数据支持分析和商业智能,从而为企业提供了更好的决策和执行资源。

提高员工生产力:

干净且维护良好的数据库可确保员工的高生产率,他们可以从客户获取到资源规划的广泛领域中利用这些信息。积极提高数据一致性和准确性的企业还可以提高响应速度并增加收入。

数据清洗

 数据清洗一是为了解决数据质量问题,二是让数据更加适合做挖掘。数据清洗, 是整个数据分析过程中不可缺少的一个环节,其结果质量直接关系到模型效果和最终结论。在实际操作中,数据清洗通常会占据分析过程的50%—80%的时间。在这里,小编跟大家介绍一下数据清洗的步骤和方法。

一、检查数据的质量

  • 数据的完整性,比如人的属性中缺少性别、籍贯、年龄等
  • 数据的唯一性,比如不同来源的数据出现重复的情况
  • 数据的权威性,比如同一个指标出现多个来源的数据,且数值不一样
  • 数据的合法性,比如数据与常识不符,市区内开车速度到达了400km/h
  • 数据的一致性,比如不同来源的不同指标,实际的内涵与表示意义是一样的

数据清洗的结果是对各种脏数据清洗成对应标准的干净的、连续的数据,提供给数据统计、数据挖掘等使用。

1、数据完整性问题

解决思路:数据补全

(1)通过其他信息补全,比如通过身份证号码推算性别、籍贯、出生日期、年龄等

(2)通过前后数据补全,例如时间序列确实,可以使用前后的均值填充,缺的数据多了,可以使用平滑处理

(3)实在补不全的,必须剔除,但是不要删除,说不定以后用得上

2、数据唯一性问题

解决思路:去除重复记录,只保留一条

(1)按照主键去重,用sql或者excel去除重复记录即可

(2)按照规则去重,编写一系列规则,对重复情况负责的数据去重,例如不同渠道来的客户数据,可以通过相同的关键信息进行匹配,合并去重

3、数据权威性问题 

解决思路:用最权威那个渠道的数据

对不同渠道设定权威级别,然后再不同场合下选最重要的

4、数据合法性问题

解决思路:设定判定规则

(1)设定强制合法规则,凡事不在规则范围内的,强制设置最大值以及最小值,剔除或者判断为无效

         字段类型合法规则:日期字段格式过滤,如将日期字段格式为“2010-10-10”

         字段内容合法规则:性别 in(男、女、未知));出生日期<=今天

(2)设定警告规则,凡是不在规则范围内的,进行警告然后人工处理,如警告规则:年龄>110

(3)离群值人工特殊处理,使用分箱、聚类、回归等方式发现离群值

5、结局数据一致性问题

解决思路:遍历数据体系

(1)指标体系(度量)

(2)维度(分组、统计口径)

(3)单位

(4)频度

(5)数据

二、让数据更适合做挖掘或者展示

  • 高纬度-不适合挖掘
  • 低纬度-不适合挖掘
  • 无关信息-减少存储
  • 字段冗余-一个字段是其他字段计算出来的,会操成相关系数为1或者主成分分析异常
  • 多指标数据、单位不同-如GDP与城镇居民人居收入数值相差过大

1、解决高纬度问题

解决思路:降维

(1)主成分分析

(2)随机森林

2、解决低纬度或者缺少维度问题

解决思路:抽象

(1)各种汇总、平均、加总、最大、最小等

(2)各种离散化、聚类、自定义分组等

3、解决无关信息和字段冗余问题

解决思路:剔除字段

4、解决多指标数值、单位不同问题

解决思路:归一化

(1)最小-最大

(2)0-均值

(3)小数定标

三、标准流程

数据清洗标准流程
技术图片

(一)预处理阶段

预处理阶段主要做两件事情:

一是将数据导入处理工具。通常来说,建议使用数据库,单机跑数搭建MySQL环境即可。如果数据量大(千万级以上),可以使用文本文件存储+Python操作的方式,也可以导入oracle数据库。

二是看数据。这里包含两个部分:一是看元数据,包括字段解释、数据来源、代码表等等一切描述数据的信息;二是抽取一部分数据,使用人工查看方式,对数据本身有一个直观的了解,并且初步发现一些问题,为之后的处理做准备。

(二)第一步:缺失值清洗

缺失值是最常见的数据问题,处理缺失值也有很多方法,我建议按照以下四个步骤进行:

1、确定缺失值范围

对每个字段都计算其缺失值比例,然后按照缺失比例和字段重要性,分别制定策略,可用下图表示:

技术图片

2、去除不需要的字段

这一步很简单,直接删掉即可……但强烈建议清洗每做一步都备份一下,或者在小规模数据上试验成功再处理全量数据,不然删错了会追悔莫及。

 

3、填充缺失内容

某些缺失值可以进行填充,方法有以下三种:

  • 以业务知识或经验推测填充缺失值
  • 以同一指标的计算结果(均值、中位数、众数等)填充缺失值
  • 以不同指标的计算结果填充缺失值

前两种方法比较好理解。关于第三种方法,举个最简单的例子:年龄字段缺失,但是有屏蔽后六位的身份证号,从身份证号中截取,处理填充。

4、重新取数

如果某些指标非常重要又缺失率高,那就需要和取数人员或业务人员了解,是否有其他渠道可以取到相关数据。

以上,简单的梳理了缺失值清洗的步骤,但其中有一些内容远比我说的复杂,比如填充缺失值。

(三)第二步:格式内容清洗

如果数据是由系统日志而来,那么通常在格式和内容方面,会与元数据的描述一致。而如果数据是由人工收集或用户填写而来,则有很大可能性在格式和内容上存在一些问题,简单来说,格式内容问题有以下几类:

1、时间、日期、数值、全半角等显示格式不一致

这种问题通常与输入端有关,在整合多来源数据时也有可能遇到,将其处理成一致的某种格式即可。

2、内容中有不该存在的字符

某些内容可能只包括一部分字符,比如身份证号是数字+字母,中国人姓名是汉字(赵C这种情况还是少数)。最典型的就是头、尾、中间的空格,也可能出现姓名中存在数字符号、身份证号中出现汉字等问题。这种情况下,需要以半自动校验半人工方式来找出可能存在的问题,并去除不需要的字符。

3、内容与该字段应有内容不符

姓名写了性别,身份证号写了手机号等等,均属这种问题。 但该问题特殊性在于:并不能简单的以删除来处理,因为成因有可能是人工填写错误,也有可能是前端没有校验,还有可能是导入数据时部分或全部存在列没有对齐的问题,因此要详细识别问题类型。

格式内容问题是比较细节的问题,但很多分析失误都是栽在这个坑上,比如跨表关联或VLOOKUP失败(多个空格导致工具认为“陈丹奕”和“陈 丹奕”不是一个人)、统计值不全(数字里掺个字母当然求和时结果有问题)、模型输出失败或效果不好(数据对错列了,把日期和年龄混了)。因此,请各位务必注意这部分清洗工作,尤其是在处理的数据是人工收集而来,或者你确定产品前端校验设计不太好的时候……

(四)第三步:逻辑错误清洗

这部分的工作是去掉一些使用简单逻辑推理就可以直接发现问题的数据,防止分析结果走偏。主要包含以下几个步骤:

1、去重

有的分析师喜欢把去重放在第一步,但我强烈建议把去重放在格式内容清洗之后,原因已经说过了(多个空格导致工具认为“陈丹奕”和“陈 丹奕”不是一个人,去重失败)。而且,并不是所有的重复都能这么简单的去掉……

举例,一家公司叫做“ABC管家有限公司“,在销售A手里,然后销售B为了抢这个客户,在系统里录入一个”ABC官家有限公司“。你看,不仔细看你都看不出两者的区别,而且就算看出来了,你能保证没有”ABC官家有限公司“这种东西的存在么……

当然,如果数据不是人工录入的,那么简单去重即可。

2、去除不合理值

一句话就能说清楚:有人填表时候瞎填,年龄200岁,年收入100000万(估计是没看见”万“字),这种的就要么删掉,要么按缺失值处理。这种值如何发现?提示:可用但不限于箱形图(Box-plot).

3、修正矛盾内容

有些字段是可以互相验证的,举例:身份证号是1101031980XXXXXXXX,然后年龄填18岁。在这种时候,需要根据字段的数据来源,来判定哪个字段提供的信息更为可靠,去除或重构不可靠的字段。

逻辑错误除了以上列举的情况,还有很多未列举的情况,在实际操作中要酌情处理。另外,这一步骤在之后的数据分析建模过程中有可能重复,因为即使问题很简单,也并非所有问题都能够一次找出,我们能做的是使用工具和方法,尽量减少问题出现的可能性,使分析过程更为高效。

(五)第四步:非需求数据清洗

这一步说起来非常简单:把不要的字段删了。

但实际操作起来,有很多问题,例如:

把看上去不需要但实际上对业务很重要的字段删了;

某个字段觉得有用,但又没想好怎么用,不知道是否该删;

一时看走眼,删错字段了。

前两种情况我给的建议是:如果数据量没有大到不删字段就没办法处理的程度,那么能不删的字段尽量不删。第三种情况,请勤备份数据……

(六)第五步:关联性验证

如果你的数据有多个来源,那么有必要进行关联性验证。例如,你有汽车的线下购买信息,也有电话客服问卷信息,两者通过姓名和手机号关联,那么要看一下,同一个人线下登记的车辆信息和线上问卷问出来的车辆信息是不是同一辆,如果不是(别笑,业务流程设计不好是有可能出现这种问题的!),那么需要调整或去除数据。

严格意义上来说,这已经脱离数据清洗的范畴了,而且关联数据变动在数据库模型中就应该涉及。但我还是希望提醒大家,多个来源的数据整合是非常复杂的工作,一定要注意数据之间的关联性,尽量在分析过程中不要出现数据之间互相矛盾,而你却毫无察觉的情况。

 

原文转载:https://www.cnblogs.com/enmink/p/10586635.html

技术图片

 

以上是关于数据分析中如何清洗数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何清洗存储在hadoop(HDFS)中的原始数据

数据清洗

如何使用kettle 做数据清洗

SAS数据的对比和清洗

VBA之数据清洗

python数据分析学习数据清洗与准备