作者黄天元,复旦大学博士在读,目前研究涉及文本挖掘、社交网络分析和机器学习等。希望与大家分享学习经验,推广并加深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语言入门及数据挖掘
回复 人工智能      三个月入门人工智能
回复 数据分析师   数据分析师成长之路 
回复 机器学习      机器学习的商业应用
回复 数据科学      数据科学实战
回复 常用算法      常用数据挖掘算法

R语言ETL工程系列:总论相关推荐

  1. R语言ETL工程系列:排序(arrange)

    作者:黄天元,复旦大学博士在读,目前研究涉及文本挖掘.社交网络分析和机器学习等.希望与大家分享学习经验,推广并加深R语言在业界的应用. 邮箱:huang.tian-yuan@qq.com 前言 上篇介 ...

  2. R语言ETL工程:创建字段(mutate)

    作者:黄天元,复旦大学博士在读,热爱数据科学与R,热衷推广R在工业界与学术界的应用.邮箱:huang.tian-yuan@qq.com.欢迎合作交流 有没有一些时候你想要给表格加一个新的列?本章将会介 ...

  3. R语言数据挖掘实战系列(4)

    R语言数据挖掘实战系列(4)--数据预处理 数据预处理一方面是要提高数据的质量,另一方面是要让数据更好地适应特定的挖掘技术或工具.数据预处理的主要内容包括数据清洗.数据集成.数据变换和数据规约. 一. ...

  4. 十八、R语言特征工程实战

    特征工程是机器学习过程中和模型训练同样重要的部分,特征如何提取.如何处理.如何选择.如何使用都是特征工程的范畴,特征工程需要具备数据分析的能力,那些称为数据科学家的人一定是有很强的特征工程能力的人.R ...

  5. R语言ETL系列:汇总(summarise)

    作者:黄天元,复旦大学博士在读,目前研究涉及文本挖掘.社交网络分析和机器学习等.希望与大家分享学习经验,推广并加深R语言在业界的应用. 邮箱:huang.tian-yuan@qq.com 本章讲解如何 ...

  6. rstudio python_【干货分享】R语言与数据分析系列之R与Rstudio的安装

    第一章 R基础 一.什么是R 1.编程:面向对象的编程语言 2.使用者:有着统计分析功能及强大作图功能的软件 3.开发者:一组开源的数据操作 二.R的优点 免费.跨平台.简单易学.程序小巧.易扩展. ...

  7. left join 不重复_R语言ETL工程:连接(join)

    作者:黄天元,复旦大学博士在读,目前研究涉及文本挖掘.社交网络分析和机器学习等.希望与大家分享学习经验,推广并加深R语言在业界的应用. 邮箱:huang.tian-yuan@qq.com 本章将会介绍 ...

  8. R语言应用实战系列(五)-朴素贝叶斯算法以及ROC和PR曲线

    前言 朴素贝叶斯(Naviebayes)的原理很简单:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为该代分项属于哪个类别? 以下是我为大家准备的几个精品专栏,喜欢的小伙 ...

  9. R语言应用实战系列(三)-智能推荐模型的构建

    一.基本概念和原理 智能推荐的方法有很多,包括基于内容推荐,协同过滤推荐,基于关联规则,基于知识推荐,基于效用推荐和组合推荐. 以下是我为大家准备的几个精品专栏,喜欢的小伙伴可自行订阅,你的支持就是我 ...

  10. R语言应用实战系列(二)-基于R语言的方差分析

    前言 回归分析重点考察变量间的相关关系或因果关系,当包含因子是解释变量时,关注点通常是从变量间的关系转向组与组之间的差异分析,这种分析样本组之间的区别的方法称为方差分析(Analysis of Var ...

最新文章

  1. 语言模型也不能乱说话!DeepMind发布GopherCite:讲话必须带证据
  2. Android中用 adb 命令操作数据库
  3. python代码怎么运行-python代码如何运行
  4. wrapper包装java_java Object 类 与 Wrapper包装类
  5. 机器学习模型评估指标总结
  6. 你的护城河在哪?老程序员的一些2016感悟
  7. 计算机需要 更新 无法卸载,电脑更新变卡顿,只要卸载它就能解决?
  8. (二)深入了解机器翻译
  9. 【NOIP2013模拟】七夕祭
  10. 分布式大型互联网企业架构
  11. java 学习笔记之AtomicInteger类的使用
  12. MySql重启命令与数据库安装目录
  13. Linux 安装 JAVA(JDK)
  14. 防止ARP欺骗的方法
  15. 一招鲜——交换机配置mstp+vrrp实验
  16. 1500ml等于多少l_1500ml等于几斤呢?
  17. NAND FLASH大页和小页
  18. 初探DirectShow
  19. 新电脑必备的4款宝藏软件,绿色、安全、无捆绑,提高工作效率
  20. 一种可以复制钟表零件的石膏模具

热门文章

  1. 太赞了,Intellij IDEA竟然把Java8的数据流问题这么完美的解决掉了!
  2. 阿里巴巴16字真言 | 管理者的基本要求是什么?
  3. 微服务在微信的架构实践
  4. 高可用架构系列之京东亿级商品详情页架构演进技术解密
  5. 带大家一起感受美国两日游
  6. 高并发架构系列:分布式锁的由来、特点及Redis分布式锁的实现详解
  7. RS485的常用电路设计
  8. Django框架(二)---- 常用命令
  9. TypeError: to_categorical() got an unexpected keyword argument 'nb_classes'
  10. PythonCookbook读书笔记