数据清洗案例 OpenRefine入门

文本过滤

当想找一些包含具体值的数据的时候,需要用到文本过滤。

针对Object Title进行过滤,点击文本过滤器:
在这里插入图片描述
查看Title中有多少与美国有关的数据;
在文本过滤框输入USA,可以看到有935条匹配。
在这里插入图片描述

还可以查看其他格式的数据,比如:输入(空格)USA(空格)看到匹配的记录有95条
在这里插入图片描述

正则表达式匹配
  1. 通过前面的实验可以看出,取值都是USA,却有不同的写法,这可能是因为数据录入问题,但这种情况不利于数据处理和统计
  2. 使用正则表达式,可以匹配所有相关的数据
  3. \b用来匹配边界,防止一个单词的中间出现USA也被匹配成功
  4. ?用来表示前面的字符出现0次或1次,所以. ?用来表示可以出现或不出现
  5. 正则表达式为: \bU. ?S. ?A\b

在这里插入图片描述

常用转换

●移除首尾空白:在数据清洗时,移除文本首尾的空格会提高数据质量
●收起连续空白:在进行数据输入的时候,有时候会键入很多空格
●反转义HTML字符:从网页上采集下来的数据会包含HTML字符
●首字母大写、全大写、全小写
●数字化、日期化、文本化
在这里插入图片描述

移除匹配的行

实际中会将不符合要求的数据删除,比如没有ID的数据记录
在这里插入图片描述
删除没有ID的数据
在这里插入图片描述

移除重复的数据

●选择复数归类后,将所有具有副本的数据和副本数据都标记为True
●我们不能进行直接删除,否则会将原数据也删掉
●排序→相同空白填充→按空白归类→删除匹配的行

排序

在这里插入图片描述

相同空白填充

在这里插入图片描述

按空白归类

在这里插入图片描述

删除匹配的行

在这里插入图片描述

多值数据处理

●现实中我们常会遇到一个问题,就是一个单元格中有多 个值,比如记录客户的信息,包括姓名、电话和地址
●当一个客户有两个地址和两个电话时,该如何记录,有三种方式:

  1. 只添加一条信息,这是最简单的处理方式,只登记客户的一个地址和一个电话,但是这样就损失一半的信息
  2. 在客户登记表中登记为两行,这样信息就完整保留。会存在一个问题, 系统或者管理员会当做同姓名的两个人
  3. 在一行中登记所有的信息,可以把这个单元格当做一个信封, 这个信封是只属于某个人的

OpenRefine提供分离多值单元格的接口:
在这里插入图片描述
输入竖线进行分割:
在这里插入图片描述

在分离后的界面中,在展示方式处选择记录:
在这里插入图片描述

将展示方式切换为行,可以看到行数远多于之前:
在这里插入图片描述

在多值化处理后,再次进行文本归类,可以看到类别的种类:
在这里插入图片描述

按数量进行排序,查看每一个类别的数量:
在这里插入图片描述

聚类处理

在Categoreis右上角点击簇集

在这里插入图片描述
●点击簇集后,OpenRefine运行聚类算法
●将拼写相近的类别聚集为个类别,并在后面给出建议的类名
●如果认为聚类结果都正确可以选择全选,也可以根据实际的需求进行勾选
在这里插入图片描述

●当然,并不是所有的聚类结果都正确,比如下图是另外一个数据集的聚类结果,算法将Shirts和T-shirts认为是相同的类,但是事实上这是不同的类别
●仔细检查OpenRefine聚类的结果, 并根据实际进行勾选
在这里插入图片描述
聚类结束后,可以合并多值单元格:
在这里插入图片描述

聚类方法

●关键词碰接:通过keying函数,将相似的关键词归为-类
●比如AB C,AB C,ABC都为归为同一类,因为它们里面都有ABC
●就近原则:通过两类的距离进行归类

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章