数据清洗技术:学习简单有效的数据清洗方法
已发表: 2020-01-26数据清洗是数据科学的重要组成部分。 使用不纯的数据可能会导致许多困难。 今天,我们将讨论同样的问题。
您将了解为何数据清理至关重要、哪些因素会影响您的数据质量以及如何清理您拥有的数据。 这是一份详细的指南,因此请务必将其添加为书签以供将来参考。
让我们开始吧。
目录
为什么需要数据清洗
数据清理可能看起来枯燥乏味,但它是您作为数据科学专业人士必须完成的最重要的任务之一。 拥有错误或质量差的数据可能对您的流程和分析有害。 糟糕的数据可能会导致出色的算法失败。
另一方面,高质量的数据可以使简单的算法为您提供出色的结果。 数据清洗技术有很多,您应该熟悉它们以提高数据质量。 并非所有数据都是有用的。 所以这是影响数据质量的另一个主要因素。
阅读: R 中的聚类分析
例如,假设您的公司有一个员工地址列表。 现在,如果您的数据还包括您的客户的一些地址,它不会损坏列表吗? 你分析这份清单的努力不会白费吗? 在这个数据支持的市场中,学习数据科学以改善您的业务决策至关重要。
数据清理必不可少的原因有很多。 下面列出了其中一些:
效率
拥有干净的数据(没有错误和不一致的值)可以帮助您更快地执行分析。 通过事先执行此任务,您将节省大量时间。 在使用之前清理数据时,您可以避免多个错误。 如果您使用包含错误值的数据,您的结果将不准确。
而且很有可能,您将不得不再次重做整个任务,这可能会浪费大量时间。 如果您选择在使用数据之前对其进行清理,您可以更快地生成结果并避免再次重做整个任务。
误差范围
当你不使用准确的数据进行分析时,你肯定会犯错误。 假设您已经花费大量精力和时间来分析一组特定的数据集。 你非常渴望向你的上级展示结果,但在会议上,你的上级指出了一些错误,情况变得有点尴尬和痛苦。
你不想避免这样的错误发生吗? 它们不仅会造成尴尬,而且还会浪费资源。 数据清理可以帮助您在这方面完全停止它是一种广泛的做法,您应该学习用于清理数据的方法。
使用带有干净数据的简单算法比使用带有不干净数据的高级算法要好得多。
确定数据质量
数据有效吗? (有效性)
您的数据的有效性是它遵循您的特定要求规则的程度。 例如,您如何导入不同客户的电话号码,但在某些地方,您在数据中添加了电子邮件地址。 现在,由于您明确需要电话号码,因此电子邮件地址将无效。
当输入法没有被正确检查时,就会发生有效性错误。 您可能正在使用电子表格来收集数据。 您可能会在电子表格的单元格中输入错误的信息。
您的数据必须符合多种约束才能有效。 他们来了:
范围:
某些类型的数字必须在特定范围内。 例如,您一天可以运输的产品数量必须具有最小值和最大值。 数据肯定会有一个特定的范围。 会有一个起点和一个终点。
数据类型:
某些数据单元格可能需要特定类型的数据,例如数字、布尔值等。例如,在布尔部分中,您不会添加数值。
强制约束:
在每种情况下,您的数据都应遵循一些强制性约束。 强制限制取决于您的具体需求。 当然,数据的特定列不应为空。 例如,在您的客户姓名列表中,“姓名”一栏不能为空。
跨领域考试:
某些条件会影响特定形式的多个数据字段。 假设航班的起飞时间不能早于它的到达时间。 在资产负债表中,客户的借方和贷方的总和必须相同。 不能不一样。
这些值相互关联,这就是您可能需要执行跨领域检查的原因。
独特要求:
数据的具体类型有独特的限制。 两个客户不能拥有相同的客户支持票。 此类数据必须对特定领域是唯一的,不能被多个领域共享。
设置成员限制:
某些值仅限于特定集合。 比如,性别可以是男性、女性或未知。
常规模式:
一些数据遵循特定的格式。 例如,电子邮件地址的格式为“[email protected]”。 同样,电话号码有十位数字。
如果数据不是所需的格式,它也将是无效的。
如果一个人在输入电子邮件地址时省略了“@”,那么该电子邮件地址将无效,不是吗? 检查数据的有效性是确定其质量的第一步。 大多数时候,输入无效信息的原因是人为错误。
摆脱它将帮助您简化流程并事先避免无用的数据值。
准确性
既然您知道您拥有的大部分数据都是有效的,您就必须专注于确定其准确性。 即使数据是有效的,也不意味着数据是准确的。 确定准确性可以帮助您确定您输入的数据是否准确。
客户的地址可以采用正确的格式,但不一定是正确的。 也许电子邮件有一个额外的数字或字符导致它出错。 另一个例子是客户的电话号码。
阅读:用于数据科学的顶级机器学习 API
如果电话号码包含所有数字,则它是有效值。 但这并不意味着它是真的。 当您有有效值的定义时,找出无效值很容易。 但这无助于检查其准确性。 检查数据值的准确性需要您使用第三方来源。
这意味着您将不得不依赖与您当前使用的数据源不同的数据源。 您必须交叉检查您的数据以确定它是否准确。 数据清洗技术并没有很多用于检查数据值准确性的解决方案。
但是,根据您使用的数据类型,您可能会找到可以在这方面为您提供帮助的资源。 您不应该将准确度与精确度混淆。
准确度与精密度
虽然准确性取决于确定您输入的数据是否正确,但准确性要求您提供更多有关相同的详细信息。 客户可能会在您的数据字段中输入名字。 但如果没有姓氏,要更准确就很难了。
另一个示例可以是地址。 假设你问一个人他/她住在哪里。 他们可能会说他们住在伦敦。 那可能是真的。 但是,这不是一个准确的答案,因为您不知道他们住在伦敦的哪个地方。
一个准确的答案是给你一个街道地址。
完整性
拥有所需的所有信息几乎是不可能的。 完整性是您了解所有必需值的程度。 完整性比准确性或有效性更具挑战性。 那是因为你不能假设一个值。 您只需输入已知事实。
您可以尝试通过重新进行数据收集活动(再次接近客户、重新采访人员等)来完成您的数据。 但这并不意味着您能够彻底完成您的数据。
假设您重新采访人们以获得您之前需要的数据。 现在,这个场景有召回的问题。 如果你再次问他们同样的问题,他们很可能不记得他们之前回答了什么。 这可能会导致他们,给你错误的答案。
你可能会问他五个月前他们在读什么书。 他们可能不记得了。 同样,您可能需要输入每个客户的联系信息。 但其中一些可能没有电子邮件地址。 在这种情况下,您必须将这些列留空。

如果您的系统要求您填写所有列,您可以尝试在此处输入“缺失”或“未知”。 但是输入这样的值并不意味着数据是完整的。 它仍然被称为不完整的。
一致性
完整性旁边是一致性。 您可以通过比较两个相似的系统来衡量一致性。 或者,您可以检查同一数据集中的数据值,以查看它们是否一致。 一致性可以是相关的。 例如,客户的年龄可能是 15 岁,这是一个有效值并且可能是准确的,但他们也可能在同一系统中被声明为老年人。
在这种情况下,您需要交叉检查数据,类似于测量准确性,并查看哪个值是正确的。 客户是 15 岁吗? 还是客户是老年人? 这些值中只有一个可能为真。
有多种方法可以使您的数据保持一致。
检查不同的系统:
您可以查看另一个类似的系统,以了解您拥有的价值是否真实。 如果您的两个系统相互矛盾,检查第三个系统可能会有所帮助。
在我们前面的例子中,假设你检查第三个系统,发现客户的年龄是 65 岁。这表明第二个系统,说客户是老年人,会成立。
查看最新数据:
另一种提高数据一致性的方法是检查最近的值。 在特定情况下,它可能对您更有利。 您的记录中可能有两个不同的客户联系电话。 最近的一个可能会更可靠,因为客户可能切换了号码。
检查来源:
检查数据可靠性的最简单的方法是简单地联系来源。 在我们的客户年龄示例中,您可以选择直接联系客户并询问他们的年龄。 但是,并非在所有情况下都可行,直接联系源头可能非常棘手。 也许客户没有回应,或者他们的联系信息不可用。
均匀度
您应该确保您在数据集中输入的所有值都采用相同的单位。 如果您输入 SI 单位进行测量,则在某些地方不能使用英制。 另一方面,如果您在某个地方输入了以秒为单位的时间,那么您应该在整个数据集中以这种格式输入它。
阅读:用于数据科学的 SQL
检查记录的一致性非常容易。 简单的检查可以揭示特定值是否在所需的单位中。 您用于输入数据的单位取决于您的具体要求。
数据清理技术
您对数据清理技术的选择取决于很多因素。 首先,您要处理什么样的数据? 它们是数值还是字符串? 除非您处理的值太少,否则您不应该期望只使用一种技术来清理您的数据。
您可能需要使用多种技术以获得更好的结果。 您必须处理的数据类型越多,您必须使用的清理技术就越多。 熟悉所有这些方法将帮助您纠正错误并摆脱无用的数据。
1.删除不相关的值
您应该做的第一件事是从系统中删除无用的数据。 任何无用或不相关的数据都是您不需要的。 它可能不适合您的问题的上下文。
您可能只需要测量销售人员的平均年龄。 那么他们的电子邮件地址就不需要了。 另一个例子是您可能正在查看您在一个月内联系了多少客户。 在这种情况下,您不需要上个月联系的人的数据。
但是,在删除特定数据之前,请确保它是不相关的,因为您可能需要它稍后检查其相关值(以检查一致性)。 如果您可以在删除数据之前从更有经验的专家那里获得第二意见,请随时这样做。
您不想删除某些值并在以后后悔该决定。 但是一旦你确信数据是不相关的,就把它扔掉。
2.摆脱重复值
重复项类似于无用的值——您不需要它们。 它们只会增加您拥有的数据量并浪费您的时间。 您可以通过简单的搜索摆脱它们。 出于多种原因,您的系统中可能存在重复值。
也许你结合了多个来源的数据。 或者,也许提交数据的人错误地重复了一个值。 一些用户在填写在线表格时点击了两次“输入”。 您应该在找到重复项后立即删除它们。
3.避免拼写错误(和类似的错误)
错别字是人为错误的结果,可以出现在任何地方。 您可以通过多种算法和技术修复拼写错误。 您可以映射这些值并将它们转换为正确的拼写。 错别字对于修复是必不可少的,因为模型以不同的方式处理不同的值。 字符串很大程度上依赖于它们的拼写和大小写。
'George' 与 'george' 不同,尽管它们的拼写相同。 同样,“Mike”和“Mice”彼此不同,尽管它们具有相同数量的字符。 您需要查找诸如此类的拼写错误并适当地修复它们。
另一个类似于拼写错误的错误是字符串大小。 您可能需要填充它们以使它们保持相同的格式。 例如,您的数据集可能只要求您拥有 5 位数字。 因此,如果您有任何只有四位数字的值,例如“3994”,您可以在开头添加一个零以增加其位数。
它的值将保持与“03994”相同,但它会使您的数据保持一致。 字符串的另一个错误是空格。 确保将它们从字符串中删除以保持一致。
4.转换数据类型
数据类型在您的数据集中应该是统一的。 字符串不能是数字,数字也不能是布尔值。 在转换数据类型时,您应该牢记以下几点:
- 将数值保留为数字
- 检查数字是否为字符串。 如果您将其作为字符串输入,则将不正确。
- 如果您无法转换特定的数据值,则应输入“NA 值”或类似的内容。 确保您还添加了一条警告以表明该特定值是错误的。
5. 处理缺失值
总会有一段缺失的数据。 你无法避免它。 因此,您应该知道如何处理它们以保持数据干净且没有错误。 数据集中的特定列可能有太多缺失值。 在这种情况下,明智的做法是删除整个列,因为它没有足够的数据来处理。
注意事项:您不应忽略缺失值。
忽略缺失值可能是一个重大错误,因为它们会污染您的数据,并且您不会得到准确的结果。 有多种方法可以处理缺失值。
估算缺失值:
您可以估算缺失值,这意味着假设近似值。 您可以使用线性回归或中值来计算缺失值。 但是,此方法有其含义,因为您无法确定这是否是真正的价值。
另一种估算缺失值的方法是从类似的数据集中复制数据。 这种方法称为“Hot-deck imputation”。 您正在为当前记录增加价值,同时考虑一些约束,例如数据类型和范围。
突出缺失值:
插补并不总是处理缺失值的最佳方法。 许多专家认为,这只会导致更复杂的结果,因为它们不是“真实的”。 因此,您可以采取另一种方法并通知模型数据丢失。 告诉模型(或算法)特定值不可用也可以是一条信息。
如果随机原因不是您缺失值的原因,则突出显示或标记它们可能是有益的。 例如,您的记录可能对您的调查的特定问题没有很多答案,因为您的客户一开始就不想回答它。
如果缺失值是数字,您可以使用 0。只需确保在统计分析期间忽略这些值即可。 另一方面,如果缺失值是分类值,则可以填写“缺失”。
概括
我们希望您喜欢我们详细的数据清理技术演练。 毫无疑问,有很多东西要学。
从下面的网络研讨会视频中了解有关数据争论的更多信息。
如果您对数据清理有任何疑问,请随时咨询我们的专家。
如果您想了解数据科学,请查看 IIIT-B 和 upGrad 的数据科学执行 PG 计划,该计划是为在职专业人士创建的,提供 10 多个案例研究和项目、实用的实践研讨会、与行业专家的指导、1与行业导师一对一,400 多个小时的学习和顶级公司的工作协助。
为什么数据不一致是个问题?
当同一条数据出现在多个地方时,就会出现数据冗余,而当相同的数据以不同的形式出现在多个表中时,就会出现数据不一致。 不幸的是,数据冗余会导致数据不一致,从而导致公司数据不准确和/或无用。 他们无法正确预测销售以优化库存和分销管理程序; 他们无法检测制造或供应链问题,以尽量减少成本超支和延误; 他们无法评估客户对新产品的兴趣以改变设计或营销活动。
您的数据应该多久清理一次?
您应该对数据进行弹簧清理的频率完全取决于您的业务需求。 大公司会快速获取大量数据,因此可能需要每三到六个月进行一次数据清理。 建议数据较少的小型公司每年至少清理一次数据。 如果您怀疑肮脏的数据正在花费您的金钱或对您的生产力、效率或洞察力产生负面影响,建议您计划一次数据清理。
Tableau 是否适合数据清理?
Tableau Prep 附带了许多清理程序,您可以使用这些程序来立即清理和调整数据。 清理脏数据可以更轻松地集成和分析您的数据,以及让其他人在您共享数据时理解您的数据。