试用谷歌数据集搜索

对于数据科学的学习者和应用实践者,常常需要查找适当的数据集进行分析。谷歌工具箱去年推出垂直搜索引擎——数据集搜索,收录托管在数千个Web存储库中数据集的信息。

数据集搜索(测试版)Dataset Search

据称该项目将带来的额外益处是:a)创建一个数据共享生态系统,鼓励数据发布者遵循数据存储和发布的最佳做法(采用用schema.org描述其数据集),b)为科学家提供一种通过引用他们生产的数据集来展示其工作影响的方法。

参见:Making it easier to discover datasets / Natasha Noy (2018-9-5)

现以“Library Collection Inventory”为例进行搜索。

上栏:搜索条件筛选,有4个:

  • 更新日期(最近1个月、最近1年、最近3年)
  • 下载格式(表格、文档、图像、文本、档案、其他)
  • 使用权限(允许商业使用,允许非商业使用)
  • 免费

左栏:搜索结果一览,提供信息:数据集名称、出处、更新日期

右栏:搜索结果详情,提供数据集详细信息(以下限浏览所见,不一定每个数据集都有,也不一定完整)

  • [1] 名称
  • [2] 来源及链接链接(蓝色按钮)
  • 不同来源提供同样的数据集,归并在一起,因此可能有多个链接。
  • 由于来源含数据集门户(如catalog.data.gov),最终数据集下载网站可能相同。
  • 不同来源元数据信息详简不一,有的还有单独的数据字典,有助于使用。
  • [3] 引用本数据集的学术论文数(含谷歌学术链接)
  • 虽然这是声称的重要优点,目前似乎仍不实用。因为链接的只是以数据集名称搜索谷歌学术的通用检索式(如https://scholar.google.com/scholar?q=%22library%20collection%20inventory%22),并非真正提供引用此数据集的文章——显示有7篇论文引用某数据集,但链接过去有34个结果——在结果一览中也无法识别出哪几篇引用了此数据集。
  • [4] 唯一标识符
  • 出自dataverse.harvard.edu的有DOI。大多数没有,对数据集的引用及识别均有影响。
  • [5] 日期(创建、发布、更新)
  • [6] 提供者
  • [7] 作者
  • [8] 许可
  • [9] 提供的下载格式。常见的有:rdf, xml, csv, json等。
  • [10] 覆盖时间范围
  • [11] 覆盖地理区域
  • [12] 简介

用中文搜索,也可以找到数据集,最多的结果是来自司尔亚司数据信息有限公司(CEIC)的收费数据,浏览数据图示免费(可以定制时间范围、图示类型),下载或API收费。

OpenRefine数据处理工具

承蒙访学海外的云影提供ALCTS虚拟会议“元数据自动化”(We Can Do It, You Can Too! Metadata Automation for Everyone)的会议报告,其中介绍了很多元数据处理工具,比如Excel扩展KutoolsTextWrangler大数据集文本处理(支持正则表达式替换)、Tableau Public可视化等,以及最为常用的OpenRefine、MARCEdit
几个报告中提到的OpenRefine应用涉及数据审核与分析、数据清洗与调和,包括分面、过滤、分簇与编辑、正则表达式转换、外部数据源调和(增强),甚至还能用于转换元数据方案(从DC到MODS、MARCXML),相当强大

OpenRefine就是原来的Google Refine。密歇根大学Bentley历史图书馆ArchivesSpace项目,曾使用Google Refine,通过VIAF API查询LC规范记录,增强档案记录中的名称和主题。参见:利用关联数据、验证名称和主题(LC和VIAF)(2015-8-30)

OpenRefine是安装后本机运行的软件,可以处理的数据文件大小取决于电脑内存(4G内存上网本,无法加载85MB的Excel文件)。
基础应用有Excel知识就行,表达式可选3种语言:GREL(General Refine Expression Language)、Jython(Python的纯Java实现)、clojure(Java平台的Lisp方言)。高级应用需要了解JSON

OpenRefine网站:http://openrefine.org
最新软件为2013-8-27的2.6版(存储于amazon S3,如无梯、能否下载成功看运气)。入门wiki在github(包括GREL语法)。
软件解压后执行,需要Java环境,如电脑没有安装过JRE,会自动打开浏览器到Java官网下载页面,下载安装即可。有意思的是安装过程中提示Google Chrome可能无法使用 Java 插件,实际完全没有问题。

OpenRefine中文资料不易找到。基本功能可参考Google Refine 2.0的3个视频,已有热心人士从Youtube转到优库。

0、运行程序,自动启动浏览器,网址:http://127.0.0.1:3333/
导入数据4个途径 :1 本机,2 网址(URL),3 剪贴板,4 Google数据
支持多种格式数据导入,包括CSV, Excel (.xls 和 .xlsx), JSON, XML, RDF等;导出数据格式有CSV, Excel, HTML, ODF电子表格以及自定义模板。

一、清洗数据(参见视频:Google Refine 2.0 -1. Explore Data (1/3)
1、找到问题数据
(1)分面(facet),分组结果显示在屏幕左栏
文本分面:不同取值及出现数量,可按字顺/数量排序,易于发现不一致取值。可直接批修改/替换。
数值/时间分面:不同取值分布图,可调节取值区间、找到可能有问题的数值。还可对数值进行操作(比如取对数)改变显示的分布图,以更清楚了解数值是否在合理区间。
(2)文本过滤(filter),查找特定值,可以用正则表达式。后续修改/替换等处理可仅针对过滤后部分。
(3)排序(sort),可设定有效值、空值、错误值的排序位置,易于找到问题数值。
2、批处理(edit cells)
除了上述1找到问题数据后直接处理,还有更强大的批处理功能:
(1)通用转换(common transforms):去空格,改大小写,改取值类型(文本、数值、日期)等
(2)编辑/修改/替换:修改单元格值时,可选择适用所有相同单元格(apply to all identical cells)
(3)自动归类相似取值(Cluster):可一键合并为相同值。这是快速完成数据一致性处理的强大工具。
(4)定制文本转换(transform):使用各种表达式(公式/函数),结果即时预览,确认正确后再执行。
可惜“帮助”缺少样例,对新手不够友好。
(5)电子表格通常有的功能当然也是有的:分列/合并、填充等。
向下填充是智能的,无需指定范围、自动复制其值到后续空格。
3、最后也是最重要的,所有操作历史自动保留
(1)可随时通过回退Undo/Redo找回某个处理前的状态——只要选择到某步骤,单击即完成回退操作。
(2)处理步骤可复制(比如用于对另一批数据做相同处理),可抽取(Extract)复制操作代码,粘贴到Apply窗口运行(当然也可在运行前修改代码)。

二、转换格式(参见视频:Google Refine 2.0 -2.Clean and Transform Data (2/3)
把其他格式数据(清单、键/值等),通过分组处理、行列变换等转换为需要的电子表格形式。
视频为维基百科格式的清单改为表格的详细实例。导出模板默认为JSON格式,可修改模板为其他格式。

三、增强数据(参见视频: Google Refine 2.0 -3. Reconcile and Match Data
通过API获取外部数据,增强电子表格中的内容。视频中有3个例子:
1、由具体地址获取经纬度(wiki.openstreetmap.org/wiki/Nominatim)
先新增栏(edit column -> add column by fetching URLs),通过调用URI取得返回值(JSON格式),再由返回值栏分析结构取出经纬度部分(parseJson())
2、分析语种(google语种检测API):方法同上。
3、为电影清单增加信息:评价网站链接,导演、主演等其他信息。
菜单中选择Reconcile。默认从Freebase获取数据。可惜Freebase2016-8-30将关闭,软件的这部分需要更新了。