数据清洗神器Open Refine简明入门

Print More

数据一多,就有可能出现数据名目不统一、残缺或者冗余等情况,且数据量越大错误可能越多。如何才能使杂乱无章的数据变得清晰有致?免费开源的数据清洗工具Open Refine就是你的好帮手,不但可以清洗数据、转换格式,借助网络服务和外部数据帮你扩展,而且还能链接数据库。深度君经授权分享数据新闻网编写的《中国数据新闻工作坊培训手册》,为你总结Open Refine的简明使用方法。


深度君资料卡:何为Open Refine?

OpenRefine是一款数据清洗软件,它的主要目的是帮你在使用数据之前挖掘、清洗数据。它以你的网页浏览器作为运行界面,这就意味着它看上去是在网上运行,但所有数据其实保存在你电脑里。

openrefine

Open Refine免费开源,可供所有人使用。最新版本是Google Refine2.5。

以下由数据新闻工作坊编写的教学材料部分根据 OpenRefine Tutorial 改编。你可以到此网址了解有关 Open Refine 的更多情况。

第一部分:归类

在该部分中,你会学到如何使用 Open Refine 的归类功能来清理国家名。我们的测试数据是一个来自不同国家的大学名称单,大学名称信息是从维基百科抓取来的。

首先我们得载入数据文件
打开Open Refine, 点击屏幕左侧的“新建项目” (Create Project)

1

 

 

 

 

先点击“这台电脑” (This Computer),然后点击“选择文件”(Choose Files)。 在你的数据文件中选择UniversityData.csv。你就会看到数据。

2

该文件中有些中文文字(列的名字)。如果中文显示不对,你也许需要告诉Open Refine使用正确的字符集。要做到这一点,点击“字符编码” (Character encoding) 旁边的空白空间,从中选择UTF-8。

3

然后点击右边的“新建项目” (Create Project) 键。

2. 你可以看到country (“国家”)这一列中, 国家名字不统一。例如,美国即叫 United States,也叫USA。我们要通过创立一个文字归类, 让Open Refine 给我们看 country 一列中所有的值。摁下 country旁边的小下箭头,选择 归类 Facet -> 文本归类 Text Facet

4

片刻后,该归类中所有国家的值就会在屏幕左侧显示出来。

5

你可以看到美国有多个不同叫法, 还有一些错误的名字,比如有一行美国叫United States ), 还有一个捏造的国家叫Utopia(乌托邦)!每个不同的国家名叫一个归类, Open Refine 给你显示了每一个归类里有多少行数据。

点击任何归类名字,你会只看到那个归类里的行。在我们这个例子里,你只会看到那些国家列里数据和你点击的名字相符的行。

你只要点击任何一个归类名,就能对其进行编辑。现在我们来把美国所有不同的叫法都变成United States。 你鼠标指向 US 这一归类时,一个的“编辑”edit 选项就会出现。点击 编辑 edit6

请打入United States, 然后点击 应用 Apply

7

现在所有是 US 的2609行都变成了United States。 对每一个别的叫法都同样进行编辑,直到美国所有的叫法都变成United States。 你做完后,你的归类应该如下:

8

第二部分 – 清理数字

我们现在来清理有关学生数目的数据。这些数据里,有的值不是数字,很多值里除了学生数目的数字外,还包含有文字片段。要找出那些条目需要清理,我们需要使用 数值归类 Numeric facet:

9

如果你看不到数字Numeric facet 的选项,你可能首先需要将学生数那一列转换成数字。你可以通过选择编辑栏Edit cells->一般转换Common transforms->到数字To number

这儿显示的是值的直方图,并列出每种类型 numeric (数值型), non-numeric (非数值),blank (空白)或者error (错误))条目的数目。你一定要只选择非数字型的行,这可以通过把numeric, blank 和error排除掉来实现。

10

我们已经可以看出有问题了,因为有的格里包含有+和~符号。要解决这个问题,我们需要做 编辑单元格Edit cells -> 转换 Transform

11

这使得我们可以打入替换字符序列的命令:

value.replace(“+”, “”)

每格里的现值总是由value (“值”)这个名称代表的。replace (“替换”)这个命令做的是让系统针对value进行文字搜索和替换运作,把+换成什么都没有 (两个引号里什么都没有)。

12

做这个命令时,你其实是在用一点编程语言。系统还有很多高级功能(本教学材料中没包括),如果你想在此方面获得更多知识,可以参考Google Refine Expression Language (GREL) reference

如果你发现有多个东西需要被替换,没有必要通过不断点击编辑单元格 Edit cells -> 转换 Transform 来逐个替换。相反,你可以将这些命令连在一起,同时来解决多个问题,不管你有多少问题都行:

value.replace(“~”, “”).replace(“,”,””)

为了更新对非数字型值的选择,有时候有必要将各列的值转变为数字 (编辑单元格 Edit cells -> 常用转换 Common transforms -> 数字化 To number)。你做完这一步以后,应该看到非数字型值少了。

13

第三部分 – 自己动手

在该部分里,你会得到一个从新浪微博网站剪贴来的文件, 然后将其转换为有关PM2.5 值的Excel电子表格。

文件名是Weibo air pollution data.txt 。你可以以跟以前同样的方式载入。文件是这样:

14

你必须首先删除不包含PM2.5的所有的行,然后把数据按时间、PM2.5值、和健康警告级别分成不同的列。你做完以后文件应该像这样:

15

如果还想学习更多功能,深度君还推荐以下资源:

Git-Hub OpenRefine

数据学院-Cleaning data with Refine

Big Data University的线上课程

RefinePro提供的OpenRefine使用建议/方法合集

Free Your Metadata的教学指南

参考原文:《中国数据新闻工作坊培训手册》第四章 – 实操:使用Open Refine清理数据

来源:数据新闻网
(djchina.org)
数据新闻网以引介全球范围内最顶尖的数据新闻实践为初衷,以推动数据开放及媒体革新为宗旨,面向中国的新闻从业者、媒体管理者、新传教育者以及对传媒感兴趣的设计师、程序员,提供线上信息平台与线下交流机会。

深度网编辑/周炜乐

One thought on “数据清洗神器Open Refine简明入门

Leave a Reply

Your email address will not be published. Required fields are marked *