数据导入与预处理-第7章-数据清理工具OpenRefine

简介: 数据导入与预处理-第7章-数据清理工具OpenRefine

数据清理工具OpenRefine


OpenRefine简介


OpenRefine是一款免费开源、清理数据的强大工具,它可以帮助用户在使用数据之前完成清理工作,并通过浏览器运行的界面直观地展现对数据的相关操作,对于编程能力薄弱的用户而言是一个不错选择。


OpenRefine是一款由Java开发的可视化工具,用户可以在操作界面上直接对数据进行数据清理和格式转换,它支持Windows、Linux和macOS系统,并且提供英文、中文和日文等多种语言,可以在用户缺乏专业编程技术的背景下快速地清理数据。

088f1c21f2b1a548d4dfd37dd35cb971_de1a63fd22534cad9f7dca28aeccb7c9.png


下载与安装

下载安装包

openrefine-3.7.2.zip


解压后如下:


c17f4986363bdf58426c65feb6a1fcc6_7da34547827846818e3b03e8979aa53a.png

单击“openrefine.exe”启动OpenRefine工具,若当前计算机中没有配置Java环境,则会在默认浏览器中打开“下载适用于Windows的Java”页面,如果已经安装,会弹出如下图所示界面。


f4d4e1f6320ad9cb102312ae292caf98_a5fb632a5f6d4aa9b7459719491d8d15.png

配置

为保证读者后续能顺畅且便捷地使用OpenRefine工具,在使用OpenRefine工具操作之前,需要对其进行一些基本配置:语言设定和增加内存,其中增加内存可以避免后续操作时出现因数据集庞大而无法导入的问题。


语言设定

501cd39a266cc7d32d1e713574f67a50_c2eee9634fd54ab78a6aa6d6e7a2ed6c.png


增加内存

OpenRefine在Windows系统中默认分配1G内存空间,若处理的数据需要使用更大的内存空间,则可以通过配置文件增加OpenRefine所使用的内存空间。

通过修改openrefine.l4j.ini文件的配置项可以给OpenRefine工具增加内存空间。

a95bd38f9b4fd309fd112bc66cf23269_2dc8b846121c45f282e3ede7a2dddeca.png


若使用2GB或更高的内存,需要将当前配置的Java环境版本升级至64位版本,否则会在编辑openrefine.l4j.ini文件后无法启动OpenRefine工具


创建项目



值得一提的是,OpenRefine工具默认显示前10行数据,大家可通过单击页面上方“显示”选项后面的数字(5、10、25、50),来指定显示的行数。


6c53a40a7a314f9884c50d3e8c7ef027.png

操作列

常见的操作包括

收起列、

移动列和重排列、

移除该列和移除列、

重命名列


收起列

cab7da5b26f347c482f9b18d69754c43.png


收起该列后,会出现一个空白列,单击空白列即可恢复name2列

bf011d00d40b4991b214a133c3cebb18.png


移动列和重排列

OpenRefine工具既支持一次移动单个列,也支持一次移动多个列,以达到重排数据列的目的。 OpenRefine工具支持4种移动列的方式,分别为“列移至开始”“列移至末尾”“左移列”和“右移列”。

1c29286caa984477802e9714cc053778.png


右移后

f58dc3aca54344de953a7a5c27c8f020.png


重排/移动列


5be3f0503efdf3d99b8cb2db85ccec6c_2bc5adf3e0354c089a3d013d6384adf1.png

选择重拍/移除列后如下

4ad29911c3d1d09d1b93abbb4f990f74_419dd2baa5b04fee984209905a8bead9.png


窗口左侧按顺序显示了所有列的标题,大家可通过拖曳列标题至相应的位置来重排列。


1ecb7ecfdbfbcb06e59a06bf853ac9d7_8ec717cc2dd74c9a959c0bf624e6dbf2.png


选择确定后,如下(如果没有出现,可能是name2列处于收起状态)

752d8bb27bdc9810aa1d12c65268fe55_de7763cd5e08451bb2373456281c63bb.png


移除该列与移除列

OpenRefine工具中


移除该列是对当前指定的单个列进行移除;

移除列是对不需要的列进行批量移除。

当前项目中不存在标题为“gender”的列。

移除列

选择移除的列

点击确定,如下

当前项目中不存在标题为“name2”和“nation”的列。


重新定义列标题

如果列标题不能清晰明了地传递该列数据所代表的含义,可通过重命名列来重新定义列标题。

0e12d1b393eee04c9b233d1c9799f239_8c4ef0025d28451f8576a3cab8faeb78.png


撤销与重做




导出数据

虽然OpenRefine项目支持移动、移除和重命名列操作,但是这些操作不会修改原始数据,之所以出现这种情况是因为OpenRefine会拷贝原始数据,若希望列操作在原始数据中生效,则需要将修改后的数据执行导出操作。


30cf76563f52b4390ccc51492064b9f7_a7e7711fa5144c93b62cb0c2c17d6d67.png


OpenRefine工具支持将数据导出为项目、 HTML表格、Excel文件、ODF电子表格等。需要说明的是,“导出项目”选项会将项目导出为openrefine.tar.gz格式的压缩包。



需要说明的是,后续章节仍会以Athletes_info项目为例演示操作步骤,为保证该项目中数据的完整性,这里将撤销对Athletes_info项目所有的操作。


525d95200310dac7e4065c52b818173b_ebbabd2881d14b77b28d5a8ee8559ad3.png


进阶操作

数据排序

数据排序是一种常见的数据清理操作,它主要是按照指定方式排列数据,这样不仅可以对数据进行检查和纠错,还可以通过浏览排序后的数据查看数据的特征或趋势,从而找到解决问题的线索。


7cefa2866dccb59de3ffcbe29fb5c01f_0699d8b7fe69452688c01fc340d14057.png



数据归类

数据归类是OpenRefine工具中常见的功能之一,它主要用于从数据中获得一个变化的子集,方便用户从多个角度查看数据,并且不会改变数据本身。OpenRefine工具支持多种归类操作,包括文本归类、数值归类、时间线归类、散点图归类以及自定义归类。


文本归类用于将特定文本值进行分类归组。打开Athletes_info项目中event列的下拉菜单,在下拉菜单中选择【归类】→【文本归类】,页面左侧会打开显示归类后结果的“归类/过滤器” 。




数值归类

9a0712498761c5d523c9950e427483ea_41ab2a3d245c4cac8266cb22dc82b1ee.png


自定义归类




重复检测

255ea4509754530a21005c7dff8fcecb_93b5e0f4a66f4d908083aa995b4cf58b.png


如果希望删除name列的重复值,那么需要先对包含重复值的数据进行排序,再删除按复数归类后值为true的结果。



OpenRefine工具中的重复检测功能只适用于文本类型的数据。


数据填充

数据填充是使用指定的字符或数字对空缺位置进行填充,其目的是保证数据的完整性。





文本过滤

文本过滤用于快速匹配某个特定的字符串。




数据转换

数据转换功能,能够根据需求将一列数据转换为指定的类型


1843844f3bb99372bc914c42f721bcce_73196d6a4a1f4408b319344283f0e557.png


常用转换包括移除首尾空白、收起连续空白、首字母大写、全大写、全小写、文本化等功能。







需要说明的是,在编写Python语言的表达式时,需要保证表达式中必须有return语句。


总结


本文主要介绍了数据清理工具OpenRefine的简介,安装,创建项目等基本操作,并提供了操作列和进阶操作等步骤。

相关文章
|
7月前
|
数据采集 SQL 分布式计算
在数据清洗过程中,处理大量重复数据通常涉及以下步骤
【4月更文挑战第2天】在数据清洗过程中,处理大量重复数据通常涉及以下步骤
187 2
|
7月前
|
数据采集 数据挖掘 数据处理
进行数据清洗的过程通常包括以下步骤
【4月更文挑战第3天】进行数据清洗的过程通常包括以下步骤
201 3
|
7月前
|
机器学习/深度学习 数据处理 Python
如何利用Python实现高效的数据清理与预处理
数据清理和预处理是数据科学家和分析师工作中不可或缺的一环,而Python作为一门强大的编程语言,可以使这个过程变得更加高效和便捷。本文将介绍一些常见的数据清理和预处理技术,并演示如何使用Python来实现这些技术。
|
7月前
|
SQL 存储 数据库
两个Python脚本轻松解决ETL工作:统计多个服务器下所有数据表信息
两个Python脚本轻松解决ETL工作:统计多个服务器下所有数据表信息
|
7月前
|
存储 数据采集 数据挖掘
ETL是个什么样的过程
【5月更文挑战第11天】ETL是个什么样的过程
133 2
|
7月前
|
SQL 存储 数据库
两个Python脚本轻松解决ETL工作:统计多个服务器下所有数据表信息(1)
两个Python脚本轻松解决ETL工作:统计多个服务器下所有数据表信息(1)
|
7月前
|
存储 数据采集 分布式计算
ETL-预处理
ETL-预处理
105 3
|
7月前
|
数据可视化 Java Linux
数据导入与预处理-第7章-数据清理工具OpenRefine
数据导入与预处理-第7章-数据清理工具OpenRefine
|
数据挖掘 大数据 索引
数据导入与预处理-第6章-03数据规约
数据导入与预处理-第6章-03数据规约 3 数据规约 3.1 数据规约概述(6.3.1 )
数据导入与预处理-第6章-03数据规约
|
SQL 存储 自然语言处理
数据导入与预处理-第6章-01数据集成
数据导入与预处理-第6章-01数据集成 1 数据集成概述 1.1 数据集成需要关注的问题 2 基于Pandas实现数据集成
数据导入与预处理-第6章-01数据集成