查看原文
其他

R语言ETL工程系列:总论

黄天元 R语言中文社区 2019-04-22


作者黄天元,复旦大学博士在读,目前研究涉及文本挖掘、社交网络分析和机器学习等。希望与大家分享学习经验,推广并加深R语言在业界的应用。

邮箱:huang.tian-yuan@qq.com


前言

本篇是R语言ETL工程系列的第一篇,这个系列我们将讨论如何使数据预处理简洁便捷,本系列的宗旨是让这个过程显得更加轻松,让初学者快速入门这些基本概念和操作。


什么是ETL

我刚开始注意到ETL这个词的时候,是搜招聘信息的时候。我发现很多公司招人的时候有要求需要会ETL技术,于是进行了更加深入的了解。ETL是Extract,Transfer,Load的简称,翻译成中文是提取、转换、加载。

广义的ETL技术包括数据的存储管理、规范化、审查等等。本系列指的ETL是狭义的ETL技术,也就是针对一个数据科学家,如果手头已经有了数据,如何把这份数据通过加载、形式的转化,最后得到一份直接能够进行分析的数据表格。
ETL这个过程在业界也有很多别称:数据清洗、数据整形、数据预处理等。你会发现相同名称的岗位,在不同的公司往往实际负责的任务会大相径庭。但是名称是次要的,它会随着时代的变更不断被改变和再定义。唯一不变的是,企业中、科研所、高效中存储的二维表数据,它们是必须经过多项预处理之后,才能够成为直接可用的有价值的数据。在数据中提取信息,在信息中发现知识,为了实现这一步,我们就必须先做ETL工程。业界普遍认为这个步骤需要花掉80%甚至以上的时间,为了让这个过程显得更加轻松,让数据预处理简洁便捷,让初学者快速入门这些基本概念和操作,这就是本系列的宗旨


什么是SQL

之所以要提到SQL,以为本系列的大部分操作,在没有R的便捷工具之前,人们大多都是通过SQL来实现的。

SQL,Structured Query Language,中文译为结构化查询语言,是对数据库数据进行数据操作的基本语言。它的历史非常悠久,在20世纪70年代就开始发展了。SQL是目前做数据分析师或者数据挖掘必备的技能,如果从业人员都无法在企业的数据仓库中调度数据,就更不要提如何在这些数据中挖掘商业价值了。SQL是目前做ETL工程的主流语言,尽管我们后续提到的R语言做ETL有优越之处,但是SQL作为一门数据查询语言,它的地位在短期内依旧是无法撼动的。


为什么用R做ETL

R语言在设计之初,就是面向统计计算和可视化的。每次打开R语言,我们都可以看到这么一句话:R is free software and comes withABSOLUTELY NO WARRANTY.我对这里的free具有两层理解:1.R语言是开源免费的;2.R语言是灵活自由的。用了这么久的R语言,我时常还是会感慨,这个社区居然有这么多活跃的开发者,如此努力地创造工具给大家免费使用,实在是太不可思议了!那时候我就在想,如果将来我能够熟练运用之后,也要把自己的经验分享给大家。



关于R的灵活自由,可能是有一定编程经验的用户才能够更加深刻地体会这一点。在解决数据科学的时候,我发现R语言对数据特别有办法。之所以使用R做ETL工程,就是因为R具有非常便捷的工具。dplyr包自2014年发布以来,已经在数据科学界得到广泛的应用。它的设计之初,就参考了SQL在数据操纵的特性,但是“青出于蓝而胜于蓝”,在实际工作中,我们发现dplyr的语法结果更加适合对数据进行预处理。举个例子,如果一个查询非常复杂,涉及层层嵌套,如果使用R语言dplyr的语法结构,往往能够写出高效率、可读性极强的、层层递进式的代码,从而减少了用户编写代码的时间,也有利于代码重用。
时至今日,dplyr为首所席卷的tidy之风正在席卷整个R语言的世界,而且笔者坚信,它在将来会席卷整个数据科学的世界


本系列的所有操作,都只使用了一个包,它叫做tidyverse,里面包含了众多数据处理的工具。第一次安装的时候可能有点费时,因为我发现随着时间的增长,它已经成为一个面面俱到的万花筒式数据科学工具包。
Long story short,用R就是因为,有了tidyverse这套免费易用的高效工具包,有了它,我们就可以利用这些工具畅游数据科学的世界!最后补一句:Life’s short, use R.


小结

本章对ETL、SQL和R进行了简要的介绍,并告诉大家为什么要用R做ETL。下一个章节中,我们将会用大量的代码和实际例子告诉大家,为什么要用R做ETL,它是多么的简单,以及它能够如何辅助SQL用户写出高效的代码。总的来说,R与SQL都不难,作为数据科学工作者都应该掌握。ETL是数据科学必备的技能,对关系型数据库而言,这些技巧是不可或缺的。每当我看到一长串的SQL代码的时候,我认为,要么新的工具应该出现,要么老的SQL应该改版了…dplyr就是一个不错的替代方案,或者叫做辅助方案。它是支持SQL的(也就是它能够直接翻译成SQL,有现成工具能够翻译),而且也支持spark,未来也许大家能够从一长串的SQL中解放出来,来写更加明晰的代码。




大家都在看

R语言二分类问题案例分析:以泰坦尼克号沉船为例

无缝对接Spark与R:Sparklyr系列—探讨属于数据科学家的Spark

R与Python手牵手:数据的分组排序

R与Python手牵手:数据框的构建、读取与基本描述

R与Python手牵手:数据科学导论系列(包的载入)

R与Python手牵手:数据探索性分析案例展示

R与Python手牵手:多格式文件导入与爬虫


公众号后台回复关键字即可学习

回复 爬虫             爬虫三大案例实战  
回复 
Python        1小时破冰入门

回复 数据挖掘      R语言入门及数据挖掘
回复 
人工智能      三个月入门人工智能
回复 数据分析师   数据分析师成长之路 
回复 机器学习      机器学习的商业应用
回复 数据科学      数据科学实战
回复 常用算法      常用数据挖掘算法

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存