最强指南:处理35种不良数据的正确方式

2018 年 6 月 29 日 AI前线
作者 | Christopher Groskopf
译者 | 无明
编辑 | Vincent、Debra
AI 前线导读:作为一名数据从业者,你的世界充满了数据,而这些数据充满了问题。本指南列出了在数据处理时可能遇到的各种问题以及建议的解决方案。

这些问题大部分都可以解决,如果无法解决,那说明你不应该使用这些数据。如果有些问题无法解决,但只要小心谨慎,仍然可以使用这些数据。为了避免歧义,本指南按照最有能力解决问题的对象来组织这些问题:你自己、数据来源方和专家等。在描述每个问题时,还可以找到有关如何处理该问题的建议。

更多干货内容请关注微信公众号“AI 前线”,(ID:ai-front)
应该从数据来源解决的问题
值缺失

注意数据集中的空值或“null”,除非你知道它们的确切含义。如果数据是年度数据,那么有没有哪年的数据没有被收集到?如果是一项问卷调查,有没有受访者拒绝回答问题?当你在处理缺失数据时,应该问自己:“我知道这个值的缺失是什么意思吗?”如果答案是否定的,你应该检查你的数据来源。

使用零代替缺失值

使用任意值代替缺失值比缺失值本身更糟糕。这可能是人类无意义思考的结果,也可能是不知道如何处理空值的自动化处理造成的。无论如何,如果你看到一长串的零,应该问自己,这些值真的是零,还是表示“没有”(有时候也会用 -1)。如果你不确定,请检查你的数据来源。

行或值重复

如果同一行数据不止一次出现在数据集中,你应该找出原因,有时它可能不是一整行都一样。一些活动财务数据包含了一些修订数据,这些修订数据使用了与原始交易相同的唯一标识符。如果你不知道这点,那么你对数据所做的任何计算都是错误的。如果某些东西看起来应该是唯一的,那就验证它。如果你发现它不是,请检查你的数据来源。

拼写不一致

拼写检查是判断数据是否由手动输入的最明显的方式之一。不要只看人们的名字——这些往往是最难检测到拼写错误的地方——应该查找城市名称或州名不一致的地方。如果你发现了这些问题,那么就可以确信数据是手动编辑过的。手动编辑的数据最有可能出错。这并不意味着你不应该使用它们,但你可能需要手动更正这些错误,或者在报告中对其进行说明。

日期格式不一致

下面两个日期哪个是表示 9 月份:

  • 10/9/15

  • 9/10/15

如果第一个是欧洲人写的,第二个是美国人,那么它们两个都是表示 9 月份。如果你不知道数据的来源,你就无法确定。所以要确定你的数据来自哪里,并确保它是由来自同一大洲的人生成的。

没有指定单位

weight 和 cost 都不能传达关于计量单位的任何信息。不要认为美国境内生产的数据就一定是以磅和美元为单位。本地货币中可能会提到到国外的价格。如果数据没有指定单位,请检查你的数据源。

来源没有记录

数据通常由各种个人和组织创建,包括企业、政府、非营利组织等。我们通过很多不同的方式收集数据,包括问卷调查、传感器和卫星。了解你的数据来自哪里可以让你深入了解它的局限性。

例如,问卷调查数据通常都不会很详尽。传感器的精度各不相同。政府往往不愿意给你无偏见的信息。由于存在穿越战线的危险,来自战区的数据可能具有强烈的地域偏见。更糟糕的是,这些不同的来源经常混在一起。政策分析师经常会打乱从政府收集来的数据。医生指定的数据可能是由护士输入。每种情况都有可能发生错误,所以还是要检查你的数据来源。

数据太粗糙

你有州的数据,但你需要的是县的数据。你有雇主的数据,但你需要的是雇员的数据。他们给了你几年的数据,但你想要几个月的数据。在很多情况下,我们收集的数据对于我们的使用目的而言已经太过了。

一旦数据合并在一起,通常很难再把它们分开。如果你提供的数据太粗糙,就需要向数据来源索要更具体的内容。他们可能没有。即使有,也可能无法或不愿意把它们交给你。为了保护个人隐私,很多联邦数据集无法在本地访问。

永远不应该做的一件事是将年度数据除以 12,并称之为“每月平均值”。如果不知道数值的具体分布,那么这个数字就没有意义。这是错误的,所以不要这样做。

拥有 65536 行数据的电子表格

老式 Excel 电子表格允许的最大行数为 65,536。如果你收到具有该行数的数据集,则几乎可以肯定你收到的数据是被截断的。较新版本的 Excel 支持 1,048,576 行,因此数据行不太可能达到极限。

拥有 255 列数据的电子表格

Apple 的 Numbers 应用程序只能处理包含 255 列的电子表格,并且应用程序会截断具有更多列的文件而不会警告用户。如果你收到的数据集正好为 255 列,那么就要确认这个文件是否在 Numbers 中打开或转换过。

文本被转换为数字

并非所有的数字都是数字。例如,美国人口普查局使用“FIPS 代码”代表美国的每一个地方。这些代码具有不同的长度,都是由数字组成,但它们其实不是数字。037 是洛杉矶县的 FIPS 代码,不是指数字 37。37 是北卡罗来纳州的 FIPS 代码。Excel 和其他电子表格通常会认为它们是数字,就把前导零去掉了。

数字以文本形式保存

在使用电子表格时,数字可能会被保存为文本。例如,一个单元格可能使用字符串“1,000,000”、“1 000 000”或“USD 1,000,000”,来表示百万美元,而不是直接使用数字 1000000。Excel 可以利用内置函数来处理一些简单的情况,但通常需要使用公式去除字符,直到单元格的内容可以被识别为数字。最好的做法是不使用格式来保存数字,并在列名或元数据中包含相关信息。

应该由你自己解决的问题
文本乱码

在绝大多数情况下,你的文本编辑器或电子表格应用程序会找出正确的编码,但是,你可能会发现某些人的名字中有怪异的字符。你的数据来源应该能够告诉你数据采用了什么编码。如果他们无法提供这些信息,你可以通过一些可靠的方式猜出来,或去问程序员。

换行符是乱码

所有文本和“文本数据”文件(如 CSV)都使用不可见字符来表示换行符。Windows、Mac 和 Linux 一直以来没有在换行符该使用什么字符上达成过一致。试图在一个操作系统上打开在另一个操作系统上保存的文件有时会导致 Excel 或其他应用程序无法正确识别换行符。

通常,只需在通用文本编辑器中打开文件并重新保存即可轻松解决该问题。如果文件特别大,你可能需要考虑使用命令行工具或向程序员寻求帮助。

PDF 中的数据

大量的数据——尤其是政府数据——只能以 PDF 格式提供。如果你在 PDF 中有真实的文本数据,那么可以通过几种方式来提取它们。Tabula 是一个优秀的免费工具。如果你订阅了 Adobe Creative Cloud,那么可以使用 Acrobat Pro,它提供了将 PDF 表格导出到 Excel 的功能。

数据太细

这与数据太粗糙刚好相反。在这种情况下,你有县的数据,但你想要州或有几个月的数据。所幸的是,这通常很简单。

可以使用 Excel 或谷歌文档的数据透视表(Pivot Table)功能来汇总数据。透视表是每个记者都应该学习的神奇工具,但它们也有其局限性。对于非常大的数据集,你应该向程序员求助,他们可以制定一个更容易验证和重用的解决方案。

手动输入的数据

手动数据输入是一个常见问题,至少在这里描述的其他问题中有 10 个与它相关。没有比让一个人输入数据却没有对其进行验证更糟糕的方式来搞砸数据了。例如,我曾经拿到伊利诺伊州库克县完整的养狗许可数据库。系统创建者让狗的主人通过一个文本框输入狗的品质,而不是提供一个狗的品质列表给他们选择。结果这个数据库出现了至少 250 个不同的吉娃娃品种。

数据与格式和注释混杂在一起

HTML 和 XML 复杂的数据表示在数据和格式之间有清晰的分隔,但对于电子表格的数据表示来说并非如此。电子表格数据的一个常见问题是,前几行数据实际上是关于数据的描述或备注,而不是列标题或数据本身。数据字典也会被放在电子表格的中,标题行可能会重复,或者在同一张表格中包含多个表(可能有不同的列标题),而不是分成不同的表格存放。

很明显,试图对具有这些问题的电子表格进行分析都会失败。所以,在首次查看新数据时,请确保数据中不包含额外的标题行或其他格式化字符。

基于缺失值进行聚合

设想一个数据集有 100 行数据,其中有一列叫作 cost。在其中的 50 行中,cost 列是空白的。那么该列的平均值是多少?是 sum_of_cost/50 还是 sum_of_cost/100?没有一个明确的答案。一般情况下,如果要在缺失值的列上进行聚合,可以先安全地过滤掉带有缺失值的行。在某些情况下,缺失的值也可能被设置为 0。如果你不确定,请向专家咨询,或者不要做聚合计算。

误差幅度过大

没有什么能够比使用误差幅度很大的数据得出的报告包含更多的错误。而不是具有非常大的错误余量的数字的非反应性使用。误差幅度通常与问卷调查数据有关。投票数据或美国人口普查局的美国社区调查数据是最有可能出现误差幅度的。误差幅度一般用于衡量真值的范围。它可以表示为一个数字(400 +/- 80)或百分比(400 +/- 20%)。相关人口越少,误差幅度就越大。例如,根据 2014 年 5 年的 ACS 估计,居住在纽约的亚裔人数为 1,106,989 +/- 3,526(0.3%)。菲律宾人的数量是 71,969 +/- 3,088(4.3%)。萨摩亚人的数量是 203 +/- 144(71%)。前两个数字是安全可信的,但第三个数字不应该用于已发布的报告。关于什么样的数字不能够使用并不存在规则,但经验告诉我们,应该谨慎使用误差幅度超过 10%的数字。

误差幅度未知

有时候,问题不在于误差幅度过大,而在于没有人想过要弄清楚它究竟是什么。这是一个不科学的民意调查问题。如果不计算误差幅度,就不可能知道结果的准确程度。作为一般规则,只要你有问卷调查数据,就应该询弄误差幅度是什么。如果数据来源无法提供这一信息,那么这些数据可能不值得用在分析上。

数据样本有偏见

有偏见的样本是由不谨慎的抽样导致的,或者有人故意扭曲。样本可能包含偏见,因为它是从互联网上收集的,而穷人不像富人那样可以频繁使用互联网。问卷调查必须仔细加以权衡,以确保它们覆盖所有的人口比例,避免出现扭曲。要完美做到这一点几乎是不可能的,所以人们经常会做错。

数据被手动编辑过

手动编辑存在的问题几乎与人类输入数据的问题相同,只不过它是在后面才发生。事实上,手动编辑数据通常是为了修复人类最初输入的数据。当编辑人员不完全了解原始数据时,就会出现问题。我曾经看到有人自发地进行“修正”,将数据集中的 Smit 改为 Smith。那个人的名字真的是 Smith 吗?我不知道,我只知道现在值出现了问题。

通货膨胀歪曲了数据

通货通胀表示货币的价值随着时间的流逝而发生变化。我们没有办法通过观察数字来判断数字是否已经出现了“膨胀调整”。如果你在获得数据后不知道它们是否已经被调整过,请检查你的数据来源。如果他们没有进行过调整,你可能会想要自己进行调整,可以借助这个工具 http://inflation-adjust.herokuapp.com 进行数据调整。

自然 / 季节变化歪曲了数据

由于某些潜在的原因,很多类型的数据会发生自然波动。最著名的例子就是随季节而变化的就业形式。经济学家已经开发出各种补偿这种变化的方法。这些方法的细节并不重要,重要的是要知道你使用的数据是否已经经过“季节性调整”。如果他们没有,并且你想比较每月的就业情况,你可能需要向数据来源所要调整过的数据(自己调整它们要比膨胀调整要困难得多)。

需要由第三方专家帮你解决的问题
作者不可信

有时候,你拥有的唯一数据是来自你不想依赖的来源。在某些情况下,这很好。只有枪械制造商才知道他们究竟生产了多少把枪。但是,如果你的数据来自可疑制造商,那么请务必与其他专家核对,最好与两三个专家一起检查。除非你有确凿的证据,否则不要发布来自包含偏见的来源的数据。

收集过程不透明

在数据收集过程中引入不真实的假设、错误或纯粹的谬误是非常容易的。因此,收集数据的方法必须是透明的,这一点很重要。很少有人知道数据集是如何收集的,不过可以从一些表象看出问题来,比如不切实际的断言精确度和结果好过头的数据。

不切实际的精确度

除了硬科学之外,很少有东西会以超过两位小数的精确度进行测量。如果某个数据集意图将工厂的排放量显示在小数点后第七位,它们可能是从其他数值估算出来的。它们往往是错误的。

莫名其妙的异常值

我最近创建了一个数据集,表示消息通过互联网到达不同目的地需要多长时间。除了其中的三个超过了 5000 秒,其他所有时间都在 0.05 到 0.8 秒的范围内。这表示数据生成过程中出现了问题。我写的代码出现了一个错误,导致在发送和接收其他消息时,无法计算某些消息的时间。

这些异常值可能会极大地影响你的统计数据——特别是如果你要使用平均值(你应该使用中位数)。在获得一个新数据集时,最好先查看它们的最大值和最小值,并确保它们处于合理的范围内。如果数据正确,你可能还想使用标准偏差或中位数偏差进行更加严格的分析。

异常值往往是找出问题的好方法。如果真的有一个国家在互联网上发送一个消息多花费了 5000 倍的时间,那就有意思了。

指数掩盖了底层的变化

想要跟踪问题趋势的记者通常会创建各种价值指数来跟踪进度。使用指数没有任何内在问题,它们有很好的解释力。但是,要注意那些由离散指标组合而成的指数。

例如,联合国性别不平等指数(GII)由与妇女平等发展进程相关的几项指标组成。GII 采取的指标之一是“妇女在议会中的代表权”。世界上有两个国家的法律规定在其议会中需要有不同性别比例的代表:中国和巴基斯坦。因此,这两个国家在指数上的表现要好于其他国家。这是否公平?这并不重要,因为任何不了解这个情况的人通常都会感到困惑。在使用 GII 和类似指数时应该进行仔细的分析,以确保底层的变化不会以意想不到的方式造成指数的波动。

结果被 p-hack

P-hacking 故意改变数据、改变统计分析结果或有选择地报告结果,以获得具有统计意义的结果。这方面的例子包括:一旦有了重要结果就停止收集数据,删除观察结果以获得重要结果,或者执行多次分析,只报告少数重要结果。关于这个问题已经有一些报道 http://fivethirtyeight.com/features/science-isnt-broken。

如果你要公布研究结果,你需要了解 p 值是什么,它意味着什么,然后对结果是否值得使用做出明智的决定。许多垃圾研究成果让它出现在主要的出版物中,因为记者不了解 p 值是什么。

Benford 定律失效

Benford 定律是一种理论,即小数字(1,2,3)出现在数字开头的频率比大数字(7,8,9)大得多。理论上,Benford 定律可以用来检测会计或选举结果的异常情况,但实际上它很容易被误用。如果你怀疑某个数据集已被篡改,Benford 定律是一个很好的检验手段,但在得出数据被篡改的结论之前,应该先与专家验证你的结果。

结果好得过了头

没有人知道生活在西伯利亚的确切人数。跨境犯罪统计数据不具可比性。美国政府不会告诉你它手上有多少裂变材料。

对于那些声称可以告诉你某些你不可能知道的”真相“的数据要特别小心。它们不是数据,可能只是某些人的臆想,而且是错误的。有可能它只是个趣闻,所以务必和专家确认。

应该由程序员帮你解决的问题
基于错误的类别或地区聚合数据

有时候你的数据具有恰到好处的细节(既不太粗糙也不太细化),但是它们已经按照你不想要的分组进行了聚合。举个典型的例子,一组按照邮政编码进行聚合的数据,但你希望能够按照相邻的城市进行聚合。在很多情况下,如果不从数据来源获取更多细化的数据,就不可能解决这个问题,但有时可以将数据按比例从一个组映射到另一个组,但要十分小心不要在这一过程中引入误差幅度。如果你按照错误的组聚合了数据,请向程序员求助,看看是否可以重新聚合数据。

扫描文档中的数据

多亏了 FOIA,政府往往需要向你提供数据,即使他们真的不想。在这些情况下,一个非常常见的策略是让他们给你数据页的扫描或照片。它们可能是图像文件,或者是 PDF 文档。

我们可以从图像中提取文本并将其重新转换为数据。这是通过称为光学字符识别(OCR)的技术完成的。现代 OCR 技术通常可以达到 100%的准确率,但它非常依赖于文档的质量。每次使用 OCR 提取数据时,你都希望有一个过程来验证结果是否与原始数据匹配。

有很多网站可以上传文件进行 OCR 操作,但也有免费工具可让程序员调整你的文档,可以向他们求助,看看怎样更好地处理你的 PDF 文档。

英文原文:

https://github.com/Quartz/bad-data-guide

今日荐文

点击下方图片即可阅读

李飞飞下半年或将从谷歌离职,重返斯坦福


活动推荐

160 个国家 40 万名开发者调研数据汇总而成的技术趋势报告,填写问卷即有机会领取!


AI前线
紧跟前沿的AI技术社群

如果你喜欢这篇文章,或希望看到更多类似优质报道,记得给我留言和点赞哦!

登录查看更多
0

相关内容

【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
194+阅读 · 2020年6月29日
【实用书】Python机器学习Scikit-Learn应用指南,247页pdf
专知会员服务
266+阅读 · 2020年6月10日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
【2020新书】Kafka实战:Kafka in Action,209页pdf
专知会员服务
67+阅读 · 2020年3月9日
新书《面向机器学习和数据分析的特征工程》,419页pdf
专知会员服务
142+阅读 · 2019年10月10日
一文教你如何处理不平衡数据集(附代码)
大数据文摘
11+阅读 · 2019年6月2日
机器学习中如何处理不平衡数据?
机器之心
13+阅读 · 2019年2月17日
AI从业者必须了解的决策树指南
AI前线
7+阅读 · 2019年1月14日
已删除
AI科技评论
4+阅读 · 2018年8月12日
ML通用指南:文本分类详细教程(上)
论智
19+阅读 · 2018年7月29日
教程 | 如何通过Scikit-Learn实现多类别文本分类?
python pandas 数据处理
Python技术博文
4+阅读 · 2017年8月30日
Implicit Maximum Likelihood Estimation
Arxiv
7+阅读 · 2018年9月24日
Arxiv
5+阅读 · 2018年6月12日
VIP会员
相关VIP内容
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
194+阅读 · 2020年6月29日
【实用书】Python机器学习Scikit-Learn应用指南,247页pdf
专知会员服务
266+阅读 · 2020年6月10日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
【2020新书】Kafka实战:Kafka in Action,209页pdf
专知会员服务
67+阅读 · 2020年3月9日
新书《面向机器学习和数据分析的特征工程》,419页pdf
专知会员服务
142+阅读 · 2019年10月10日
相关资讯
一文教你如何处理不平衡数据集(附代码)
大数据文摘
11+阅读 · 2019年6月2日
机器学习中如何处理不平衡数据?
机器之心
13+阅读 · 2019年2月17日
AI从业者必须了解的决策树指南
AI前线
7+阅读 · 2019年1月14日
已删除
AI科技评论
4+阅读 · 2018年8月12日
ML通用指南:文本分类详细教程(上)
论智
19+阅读 · 2018年7月29日
教程 | 如何通过Scikit-Learn实现多类别文本分类?
python pandas 数据处理
Python技术博文
4+阅读 · 2017年8月30日
Top
微信扫码咨询专知VIP会员