专栏首页机器学习与统计学盘点数据处理工具,手把手教你做数据清洗和转换

盘点数据处理工具,手把手教你做数据清洗和转换

01 了解数据集

数据准备的关键和重复阶段是数据探索。一组因为太大而无法由人工手动读取、检查和编辑每个值的数据,仍需要验证其质量和适用性,然后才可以将其委托给一个值得花费时间和计算的模型。

与将大型数据集的样本转储到电子表格程序中的方法一样简单,只需查看每列中出现的值的类型或范围,即可识别诸如不负责任的默认值之类的错误(例如,在没有测量值的情况下,使用零而不是NULL)或不可能的范围或不兼容的合并(数据似乎来自多个来源,每个来源中使用了不同的单位。例如,华氏度与摄氏度)。

数据分析工具非常丰富。当数据集太大而无法在电子表格程序中打开时,Python脚本或像RStudio这样的应用程序具有可视化、汇总或报告数据的强大功能。使用你熟悉的任何方法,至少要确定不同属性值的格式和一般分布。

02 数据处理工具

在能够使用数据集之前,有许多工具可以用于清洗、处理和了解数据集。Python是这方面的事实标准,它有很多工具来理解和处理数据。

Matplotlib之类的包,通常可以非常容易地生成用于可视化检查的数据图表。

Pillow提供各种处理、转换和操作图像的功能。

Python有一个用于执行统计的内置程序包,如果需要更多功能的话,NumPy也有。

Python还具有广泛的内置和第三方支持内容,可处理你将要遇到的几乎所有文件格式,包括CSV、JSON、YAML、XML和HTML,以及更深奥的格式(如TOML或INI文件)。

如果这些都不起作用,则有一个值得搜索的软件包索引器,可以查看是否有解决你的问题的方法。或者,只需搜索“我想用Python做事情”,大多数情况下,你会发现某人遇到了相同的问题,并为此提供了解决方案,或者至少提供了一些可以查看的指引。

如果你不喜欢Python,那么几乎所有选择的编程语言都具有类似的工具和功能。我们之所以喜欢Python,是因为这些工作已经为你完成了,而且有很多例子可以作为起点。Python在这方面没有什么神奇之处,但它是最受欢迎的选择,所以我们提倡坚持使用主流工具。

另一个不错的选择是电子表格程序,例如Excel、Numbers或Google Sheets。它们经常受到指责,因为在这些程序中进行数据准备可能很麻烦,但在需要使用Python(或你选择的其他工具)之前,你可以使用它们非常快速地获得大量有用的洞见和准备。作为系统附赠的工具,你基本上肯定已经安装了其中一个,并且可以在你的机器上运行。

最后,不要害怕跳出框架思考——一些像压缩数据集这样简单的东西,甚至不需要看数据集内部就能大致了解数据集的熵大小。如果一个数据集压缩得非常好,而来自相同来源的另一个数据集压缩得不那么好,那么第二个数据集的数据的熵可能比第一个数据集的大。

图像数据集不是那么容易观察到的,但绝对值得花时间浏览一下图像的总体质量,以及图像使用了哪些裁剪方法。像Turi Create这样的可视化功能对于了解数据非常有用。图3-1显示了一个例子。

▲图3-1 通过Turi Create了解你的数据

03 清洗数据

在了解数据集的过程中,你可能会遇到一些错误。记录数据可能会产生错误。需要检查的错误有以下几类:

  • 一致值错误
  • 单值错误
  • 缺失值

一致值错误包括可能导致整列或一组值不准确的情况,例如,使用仪器记录某个被统一量校准错误的数据,从产生额外热量的物体旁边测量温度,使用未提前归零的天平称重,等等。这还包括来自不同来源的数据未经转换就被不当合并的情况:简单压缩一组来自美国和一组来自英国的数据,现在系统认为100摄氏度完全合理。

单值错误用于描述离群值或不一致的错误校准,仅在少数情况下导致不准确或完全不合逻辑的值。可能出现的情况,如传感器超载一天,产生的值比理论可能的高1000%(应该是相当明显的)。

当用于记录数据的方法出现问题,或者数据集在其生命周期的某个时刻经历了某种畸形的转换时,可能会出现缺失值。这些可能是简单的nil或NULL值,或者一些不太有用的值,例如字符串"NONE"或默认值0。有些甚至可能只是无意义的字符,什么都有可能出现。

如果可以识别出一致误差,那么这通常可以通过按一致误差值缩放或转换整个值集来纠正。单值错误和缺失值要求你要么猜测需要使用某种可行方法替换的值,要么完全删除行或者观察值以防止出现误差。

你可以通过以下方法来猜测该值:获取该列中所有其他值的平均值;使用该列中与缺失值最接近的观察值;使用一些使用其他属性知识的特定于应用程序的方法。

04 转换数据

在使用数据之前进行转换有两个主要原因:为了满足要使用的算法的格式要求;使用新的推断属性改进或扩展当前数据。对于这两种目的,通常有三种数据转换:

1. 归一化(normalization)

一种用于数值数据的方法,它将上界和下界绑定到一个数值范围上,使它们更容易处理。

这方面的一个例子是对数值数据的观察值需要与不同的度量进行比较。如果你试图根据鱼的长度、体重、年龄和失去眼睛的数量来评估不同鱼的健康状况,大概每个人都会同意用不同的标准来比较两条鱼(例如,一只眼睛与一年的鱼,或者一厘米长度的相比较)。如果用同样的标准来比较,则会得出不同的结果。

归一为正数值很简单:

2. 泛化(generalization)

一种将特定值替换为更高级别的概念,以更好地进行群体观察的方法。

当记录某些属性的方法比需要的更精确时,通常会发生这种情况。例如,如果你具有某人运动的GPS统计信息,则可以将纬度和经度归纳为一个地址,从而防止系统将每一个小运动都视为位置变化。或者,将数值测量值转换为人类群体,这意味着相关因素可能不是将个人的身高测量值以毫米为单位,而是将其分为低于、接近或高于平均的身高。

3. 聚合(aggregation)

对某些复杂属性进行总结以使分析更有效的一种方法。

例如,可以从文本中提取关键字(甚至是单词频率),而不是分析文本的段落(Attribute: Text,Classification: Class),只显示与所给出的分类最相关或最独特的方面。

在这些步骤之前、之间或之后,可能会出现不同类型的数据转换,数据可能被更改、扩展或缩减:

  • 特征构建(feature construction)

一种创建新属性的方法,通常通过推理或组合已有的其他值来实现。

这方面的一个例子是泛化或聚合,其中原始值也被保留,或者更常见的是,当存在两个或多个值时(或允许发现第三个值)。例如,如果你有一家公司的名称和经营所在国,可以查一下它的商业登记号;如果你有某人的身高和体重,可以构建他们的BMI。

  • 数据规约(data reduction)

一种删除某些属性的方法,这些属性可能与另一个属性相关,也可能与你试图解决的问题无关。

例如,如果你有某人的地址、邮编和区号,这些信息中至少有一条是多余的。也许—就像在特征构建的例子中那样—你由于一些算法的原因想要同时分析两者,但这是不可能的。两个或多个属性之间的高度相关性表明,它们可能在分析中导致错误,并可能被删除。

05 验证数据集的适应性

到了这一步,你应该花更多的时间仔细地看看你试图解决的问题和打算用于任务的数据集。在AI应用程序之前的数据分析世界中,可能没有你想要的那么严格的规则,但你通常会知道一个解决方案是否可行,一个数据集是否能讲述你想要的故事。

相信这个小小的声音,因为如果你回头看,会发现浪费的工作是有价值的。

再次探索你的数据。浏览并可视化它,用少量的数据子集测试你的解决方案—做你需要做的任何事情。如果感觉还是正确的,那就继续前进。

关于作者:Mars Geldard,来自澳大利亚塔斯马尼亚州的研究者和计算机科学家。

Jonathon Manning,Secret 实验室的联合创始人兼技术主管,该实验室位于澳大利亚塔斯马尼亚州,已成立十几年了。

Paris Buttfield-Addison,计算机科学家和历史学家,也是Secret 实验室的联合创始人和产品研发负责人。

Tim Nugent,移动应用程序开发者、游戏设计师和计算机研究者。

本文摘编自《Swift人工智能实战:从基础理论到AI驱动的应用程序开发》,经出版方授权发布。

推荐语:本书从实战角度出发,为所有程序员和开发人员提供了使用Swift进行AI和机器学习开发的一站式服务。全书分为三部分:第一部分介绍机器学习和人工智能背后的基础知识;第二部分讨论许多有趣的主题,包括计算机视觉、音频、运动和语言;第三部分详细研究为第二部分的应用程序提供支持的技术。

本文分享自微信公众号 - 机器学习与统计学(tjxj666)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-04-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 盘点数据处理工具,手把手教你做数据清洗和转换

    数据准备的关键和重复阶段是数据探索。一组因为太大而无法由人工手动读取、检查和编辑每个值的数据,仍需要验证其质量和适用性,然后才可以将其委托给一个值得花费时间和计...

    华章科技
  • 手把手教你用R处理常见的数据清洗问题(附步骤解析、R语言代码)

    R是进行运算、清洗、汇总及生成概率统计等数据处理的一个绝佳选择。此外,由于它独立于平台、短期内不会消失,所以生成的程序可以在任何地方运行。并且,它具备非常棒的辅...

    数据派THU
  • 不编程,手把手教你如何从网络采集海量数据

    作者:赵一鸣 摘自:微信公号“沙漠之鹰” 不少朋友都会问:几十万条租房,二手房,薪酬,乃至天气数据都是从哪里来的?其实这些数据在十几分钟内就可以采集到! ...

    机器学习AI算法工程
  • 【数据可视化专题】数据可视化专家的七个秘密

    秘密一: 现实中的数据往往很丑 大部分的数据可视化的教程, 都会让你轻松地从一个原始数据集开始。 无论你是学习基本的柱状图还是力导向的网络图, 你的数据都是干...

    小莹莹
  • 旧磁带,新风险

    Nutter说,经过一次投资50万美元的介质升级后,KeyBank留下了8500盘包含客户财务信息的旧磁带。这家银行考虑过重写这些磁带,但Nutter说这样做每...

    大江小浪
  • CPU阿甘

    我是CPU, 他们都叫我阿甘, 因为我和《阿甘正传》里的阿甘一样, 有点傻里傻气的。

    用户1564362
  • 【干货】数据可视化的七大秘密

    【导读】 数据可视化, 特别是基于Web的数据可视化的时代已经到来了。类似JavaScript的可视化库如D3.js, Raphaël, 以及Paper.js,...

    钱塘数据
  • 【经验】数据可视化专家的七个秘密

    数据可视化的道路上充满了不可见的陷阱和迷宫,最近ClearStory Data的两位数据可视化开发人员分享了他们总结出来的数据可视化开发的7个不宣之秘,普通开发...

    陆勤_数据人网
  • 黑群晖虚拟机安装

    NAS(Network Attached Storage:网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为"网络存储器"。它是一种...

    似水的流年
  • 数据可视化的七大秘密

    数据可视化, 特别是基于Web的数据可视化的时代已经到来了。类似JavaScript的可视化库如D3.js, Raphaël, 以及Paper.js, 以及最新...

    华章科技
  • 数据清洗(data cleaning)的重要性

    之前经常和临床试验数据打交道,无论是来自手动录入的数据还是取自数据库的数据,在完成数据获取这一步后,感觉有80%甚至90%的时间和精力会用在做数据清洗(data...

    陆勤_数据人网
  • 顶级数据可视化专家的七个秘密

    数据可视化的道路上充满了不可见的陷阱和迷宫,最近ClearStory Data的两位数据可视化开发人员分享了他们总结出来的数据可视化开发的7个不宣之秘,普通开发...

    小莹莹
  • 带你轻松看懂机器学习工作流 | 以“点一份披萨外卖”为例

    你有没有想过,从下单点外卖到披萨送过来当中的流程呢?我指的是完成的工作流程,包括从种下披萨上的西红柿,到外卖骑手送单到你的楼下。其实这一系列过程与与机器学习工作...

    CDA数据分析师
  • Python网络数据采集之数据清洗|第06天

    记得之前我在爬去boss网站的招聘信息的时候,抓取的数据并非我们所理想的样式,后面经过处理后,成为一个自己想要的样子,这个过程可以理解为数据清洗。这里的处理是在...

    你好我是森林
  • Python网络数据采集之数据清洗|第06天

    你好我是森林
  • Macbook Pro键帽拆解安装图文教程

    前段时间把可乐洒在电脑上了,大概有1/5的罐装可乐,紧急之下把电脑翻转过来,万幸的是电脑没出问题。就是过了两天之后,键盘黏黏的,特别是空格键。 送修的话,这属...

    Jingbin
  • NumPy入门攻略:手把手带你玩转这款强大的数据分析和计算工具

    导读:NumPy(Numerical Python的简称)是高性能科学计算和数据分析的基础包,提供了矩阵运算的功能。

    华章科技
  • Python爬虫要如何学习,才能快速入门

    Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取...

    python学习教程
  • 从存储到存储+,来直播间,明星产品经理教你手把手玩转云端数据处理

    今天19:30在腾讯云大学直播间,腾讯云对象存储高级产品经理——王致铭,将和大家分享COS全新数据处理能力,详细讲解图片处理、内容审核、智能识别、文档服务等数据...

    云存储

扫码关注云+社区

领取腾讯云代金券