上一篇:《Using OpenRefine》翻译~7

定制透视

我们现在已经学习了两种主要的透视方法-文本透视和数字透视。但其实还有很多透视方法存在,你甚至可以按照你的想法自如的透视数据。定制透视就可以让你做到这点,无论是文本类型(比如透视字符串的首字母)或者数字类型(比如透视数字的平方根)。当然,你需要对General Refine Expression language(openrefine内建函数语言GREL)有基本的了解,我们将在附件:正则表达式和GREL中介绍。

当然,openrefine也提供一些预定义透视选项,其可以给大多数用户提供有用的透视功能。下面,我们将查看这些透视项,着重对其中重要的东西作下介绍。让我们先看一下Customized facets子菜单的内容,我们可以在列菜单Facets菜单中找到。

Word facet(单词透视)列出了字段中所有不同的单词,一个单词被定义为两个空格之间的字符。这在你想对数据小子集进行分析时十分有用,因为大数据的话统计频数会很快增加到很大,比如对列Description进行单词透视,会显示212,751个不同的单词,这很容易导致软件奔溃。

举个例子,单词透视可以用来对categories进行透视,因为普通的文本透视只会告诉你有多少个体表现为数量极小的长尾,而单词透视则会将内容分成两个单词,这能够让你分析不同的长尾,同时也能够让你将长尾间联系起来考虑(就好像既能够分析整套衣服也能够分析配饰)

Duplicates facet (重复项透视):可以让你检测重复项,我们将在下一点来介绍

Numeric log facet (数字对数透视):对数字的对数值进行透视,这在数字符合幂分布时特别有用。1-bounded numeric log facet(1阶数字对数透视)也一样,只不过其不能应用于小于1的数字。

Text length facet(文本长度透视)针对的是字符串中的字符个数,以Object Title列为例,选择该列菜单Facet| Customized facets|Text length facet,我们可以看到该列中的内容字符个数从0到260,你可以看到有92个标题内容中内容小于10个字符数(无内容的占大多数,这毫无意义),你还可以看到2007个标题内容超过250个字符数(一般情况下一定需要精简了)

对descriptions列进行文本长度透视也十分有趣,但是我们看到这个分布实在太广了点(从0到4100,虽然85%数量的内容小于500个字符数),这导致我们很难了解其规律。这时候我们可以使用文本长度对数透视,如下所示:

Unicode char-code facet(Unicode字符集透视)并不计算字符串的长度,而是列出了所有字符串中使用的字符UNICODE码数。在Object Title列尝试下;大部分英语字符UNICODE码数小于128,一些源于欧洲语言的古文UNICODE码数会达到256,阿拉伯文或中文甚至更大。如果你发觉字符UNICODE码数特别大,可能是OpenRefine没有正确的识别出编码。碰到这种情况,可以新建一个项目然后选择手工指定正确的编码方式。

最后,我们还可以按照错误来透视(如果有的话),或者按照空值来透视。按照空值来透视在了解字段填充分布时十分有用,一般常用来与另一个透视结果作比较。我们看到Marks列开头几行就为空,所以我们通过点击Facet| Customized facets| Facet by blank来了解该列,透视结果提示我们18,986个为FALSE(也就是非空),86,846个位TRUE(也就是空值)。换句话说,只有四分之一的部分有内容。

还要明显的列是Weight(在屏幕右边,使用水平滑动条滑动可见),只有179个有内容,而99.998%的内容为空。对Object titles列进行空值透视发现,有118行是无效行,它们都有一个RECORD ID跟着一个链接和无效的信息,但是其他列却都是空值,所以它们并不代表一个有效记录。

对标星和标旗行进行透视

1初识OPENREFINE中,我们简要的提到了最左边ALL列中的标星和标旗功能。现在该介绍如何利用这些功能来透视数据了。星星一般用来标识良好的行或者感兴趣的行,我们可以在今后随时找到它们;相反的,旗帜可以用来表示不好的行或者有问题的行,这些行我们应该在后续处理中注意。当然这只是建议,你当然可以赋予星星和旗帜不同的意义。

要标星或者标旗,只需要在对应的符号上点击即可。大都数情况下,你可能想同时标注多行。在标注前,你需要将需要标注的行分离显示出来,一般也是通过一个透视过程实现。比如,你可以通过对Registration Number列执行Facet| ustomized facets| Facet by blank来检测出空值,然后点击true来显示出118行空行。然后点击ALL列菜单中Edit rows | Flag rows。标星功能也同样,并且你也可以在菜单中去掉多行的星星或旗帜。

现在假设你想显示要么diameter字段有内容或者weight字段有内容的行。如果你对这两列都做了空值透视,然后分两次点击结果是false的内容,你将得到29行匹配,但其实这29行指的是diameter字段有内容而且weight字段也有内容,这和我们的目的不符,我了按要求取到数据,解决方法是分两步:先对diameter列进行空值透视,得到2106行为false(也就是diameter内容存在),然后使用All| Edit rows| Star rows标星,清除透视并且对weight列进行空值透视,得到179行(你会注意到只有150行被标星,因为29行已经被标星,其weight和diameter都有内容而已)。再次清除透视,然后选择All| Facet| Facet by star获得数据,当然使用旗帜功能也可以。

喔,我们总算介绍完了本小点,你可能觉得这个小点怎么这么长,但是确实透视是OpenRefine的基础,所以花点时间还是值得的。

点3-重复检测

在本点中,我们将学习什么是重复数据,如何检出,为什么需要处理重复值。

上一小点定制透视中唯一没有介绍的内容就是重复项透视。重复值是数据集中出现两次或更多次的恼人数据。重复数据不仅浪费存储空间,并且会导致干扰。所以我们希望能够删除重复值。重复项透视就是一种能够检测重复的简单办法。但是其也有限制性,比如其只能对字符串进行重复检测,最起码不能直接对非字符串进行操作(如何能够对整数也能作重复检测,请参照附录:正则表达式和GREL)。

因为上面的原因,我们无法对Record ID列进行重复项透视,这里最好的选择就是对registration numbers列(内部标识)进行重复项透视,当然其准确度不如Record ID,因为数据数据收集人员会赋予其额外的意义。不管怎样,让我们试着对Registration Number列进行重复项透视:Registration Number | Facet | Customized facets | Duplicates facet;281行被标注为重复项,点击左侧中的true显示这批数据。

现在鼠标滚动下查看这些重复项。我们发现一个问题:重复项中包含空白行,这些实际上确实完全一样,但是和有效行的重复是完全不同的。为了剔除这118行空白行,我们需要再对Registration Number列作一次空值透视:Registration

Number |Facet |Customized facets |Facet by blank.点击false保留163行真正的重复数据,我们发现结果自动刷新了。

最后,再增加一个透视,这次是一个简单文本透视,列出数据集中有多个相同registration numbers的项,按照计数项排序,我们看到79项中,77项确实是严格的重复项(重复2次),(2008/37/1)出现了3次,(86/1147-3)甚至出现了6次,如下图所示:

现在让我们回到RECORD ID列的讨论来,因为重复项透视不能用于整数,所以我们将采取一个迂回的办法来检测该列。首先,我们对ID列进行排序:Record ID | Sort...,其中参数项选择numberssmallest first。我们在1初始openrefine中介绍过,排序只是一种视觉的改变,所以为了让数据永久改成排序状态,我们需要选择Sort菜单(就在Show: 5 10 25 50 rows右边),点击Reorder rows permanently.如果你忘记做了这一步,后续的操作其实会忽略排序这个动作,从而导致不可知的结果。

现在我们已经得到了排序后的数据,ID重复项一定是在一起的。所以我们选择进行如下操作:Record ID| Edit cells| Blank down,重复项中的ID会被空白替代(所有重复项中第一个保留,后续的空白填充)。然后进行一次空值透视:Record ID | Facet|Customized facets| Facet by blank,我们将得到86个冗余行(如果你删除过空白行,也可能是84),其中二次重复项会出现1个,三次重复项会出现2个,六次重复项会出现5个。这86个重复项就是保留1项后剩余的需要删除的冗余项。我们将在点6:删除匹配行中介绍如何删除它们

下一篇:《Using OpenRefine》翻译~9

《Using OpenRefine》翻译~8相关推荐

  1. 《Using OpenRefine》翻译~12

    上一篇:<Using OpenRefine>翻译~11 点4:单元格值转换 在第二章:分析和修改数据中,我们学习到OpenRefine可以自动修改一列的单元格内容,比如去除多余空格.上一点 ...

  2. 《Using OpenRefine》翻译~4

    上一篇:<Using OpenRefine>翻译~3 要点5:使用项目操作历史 本点中,你将学习到如何返回到任一个项目历史操作点,并且学习如何在项目重新打开后查看历史操作信息. OpenR ...

  3. Mysql函数group_concat、find_in_set 多值分隔字符字段进行数据库字段值翻译

    Mysql函数group_concat.find_in_set进行数据库字段值翻译 场景 配方表:记录包含的原料 sources表示原料,字段值之间用逗号分隔 原料表:对应原料id和原料名称 现需要查 ...

  4. “Attention is All You Need 翻译

    <p><img src="output_0_0.png" alt="png"></p> "Attention is ...

  5. 基于PyTorch的Seq2Seq翻译模型详细注释介绍(一)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qysh123/article/deta ...

  6. 全文翻译(全文合集):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning

    全文翻译(全文合集):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning 摘要 人们越来越需要将机器学习应用到各种各样 ...

  7. 全文翻译(四) TVM An Automated End-to-End Optimizing Compiler

    全文翻译(四) TVM An Automated End-to-End Optimizing Compiler 6.3 嵌入式GPU评估 对于移动GPU实验,在配备ARM Mali-T860MP4 G ...

  8. 全文翻译(三) TVM An Automated End-to-End Optimizing Compiler

    全文翻译(三) TVM An Automated End-to-End Optimizing Compiler 5. 自动化优化 考虑到一组丰富的调度原语,剩下的问题是为DL模型的每一层,找到最佳的算 ...

  9. 全文翻译(二): TVM: An Automated End-to-End Optimizing Compiler for Deep Learning

    全文翻译(二): TVM: An Automated End-to-End Optimizing Compiler for Deep Learning 3.优化计算图 计算图是在DL框架中表示程序的常 ...

  10. 全文翻译(一):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning

    全文翻译(一):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning 摘要 人们越来越需要将机器学习应用到各种各样的硬件 ...

最新文章

  1. Redis集群官方推荐方案 Redis-Cluster
  2. BouncyCastle - Java加密与安全
  3. RocketMQ中主从复制
  4. 就想问问你们,这种女朋友从哪里来的?
  5. Java工具方法——属性拷贝方法:BeanUtils.copyProperties(Object, Object)
  6. hp服务器 新增硬盘_HP服务器linux操作系统如何添加硬盘
  7. C#编程(三十三)----------Array类
  8. tnsnames.ora配置未生效_一文了解网络交换机的6种命令配置模式
  9. 数学基础加强3---矩阵和线性代数
  10. C++ 把引用作为函数返回值
  11. VS2015/VS2017必须在WINDOWS10上安装
  12. js实现简易五子棋游戏
  13. 新生研讨课有感——陈睿周
  14. Redis 入门和 RedisTemplate 常用方法(常用命令 + 案例源码)
  15. 检测不到声卡High Definition Audio控制器显示代码10?驱动人生教你如何解决问题
  16. 【Linux学习笔记】20:Bash基础-历史命令
  17. gta5 android ps4,gta5导演模式怎么玩好玩_gta5怎么进入导演模式怎么玩ps4导演模式怎么打开_攻略...
  18. 【Android 仿微信通讯录 导航分组列表-上】使用ItemDecoration为RecyclerView打造带悬停头部的分组列表
  19. 终于完美解决OneNote无法同步的问题!如此简单!
  20. 耐人思考的“30秒法则”

热门文章

  1. 软件测试做简历专业技能这样写,还怕没面试机会?
  2. 一键批量检测微信是否被好友删除
  3. PowerBuilder2017
  4. 如何下载高程地图并处理
  5. 封装0603和0805的区别
  6. 兔子进洞算法_下兔子洞:一个varnishreload错误的故事-第1部分
  7. rfc2544_tput_test脚本中增加丢包率功能
  8. Python 算法之 动态规划详解
  9. html5移动端webscoket实现在线聊天
  10. ass translation python(ass字幕文件半自动平移时间轴py脚本)