Sharp Sight Labs 近日在 r-bloggers 上发表了一篇文章,论述了为什么当今的数据科学工作者应该学习 R 语言的原因。为了给大家提供一个明晰的对比,我们在后面补充了 2016 年初的一篇文章:R vs.Python。
在前一段时间的博客中,我解释了为什么你应该掌握 R 语言(即便它最终可能过时):http://sharpsightlabs.com/blog/master-r-obsolete/。我写这篇文章是为了向那些声称掌握 R 语言浪费时间的人致辞。(因为它最终会变得过时)。
但是当我认为 R 语言最终会变得过时时,这似乎引起了恐惧——仿佛 R 语言已经过时了。
我想要消除你的恐惧:R 语言仍然很流行。
R 语言是过去十年中发展最快的编程语言之一。
事实上,如果你开始学习数据科学,我仍然推荐从 R 语言开始。
所以,我想向你保证。R 语言绝对没有过时的。事实上,R 语言是非常受欢迎的而且是最好的数据语言。
为此,我想解释为什么我对 R 语言的长期前景非常乐观,以及为什么我认为这也许是今天可以学习的最好的数据科学语言。
R 语言始终是最好的语言之一
我想让你们明白的一件事情是:目前 R 语言是存在的最受尊敬、排名最高、增长最快的语言之一。
在很多方面,R 语言就代表了数据语言。在数据科学领域,这是一个仍处于顶端的语言(只有 1 到2个真正的竞争者)。
为什么这么说呢?让我们看看几个重要的调查和编程语言排名的结果,看看 R 语言排在哪里。
IEEE:R 语言排名第 5
世界上最大的技术专业协会 IEEE 在几年前已经创建了一个编程语言排名。
这个 IEEE 的排名系统使用一组 12 个指标,包括比如谷歌的搜索量、谷歌的趋势、Twitter 的点击次数、GitHub 的库、Hacker News 的帖子等等。
使用这种方法,他们将几十种编程语言进行排名和分类。
在他们对 2016 年顶级编程语言的回顾中,R 语言已经攀升到了第 5
IEEE 的方法是非常全面的,所以这对于 R 相对于其他语言的力量和学习的相对价值是一个很好的指示。
TIOBE:R的排名高,且具有连续的上升趋势
另一个排名系统,TIOBE 索引,为各种编程语言创建了相似的分数和排名。
如果我们看看 R 语言在 TIOBE 索引上的表现,我们可以看到近十年以来一个稳定的上升趋势。
请记住,TIOBE 索引的结构是「编程语言受欢迎程度的指示」。索引每个月更新一次,评分是基于世界范围内的精尖工程师、课程和第三方供应商的使用量。像谷歌、Bing、雅虎、维基百科、亚马逊、油管和百度等热门搜索引擎则用来计算排名。
到2016 年12 月,R 语言的总排名是 17(在所有编程语言中)。它的最高排名是 2015 年5月的第 12 名。
这表明,如果你想学习数据科学,目前学习 R 语言仍然是一个很好的选择。(要清楚,Python 在TIOBE 索引上的排名较高,但是很难从 Python 相关使用的严格数据中分离出网络和软件开发的使用情况,因此这可能不是一个公平的比较)。
Redmonk:R语言排名12
另一个经常选择的语言排名系统是 Redmonk 编程语言排名,它是从 GitHub(代码行数)和Stack Overflow(标签数量)上的流行度衍生出来的。
截至 2016 年11 月,R 语言在所有编程语言中排名第 13 位。
此外,R 语言几年来一直呈上升趋势
在前 20 种语言的后半部分中,随着时间的推移,R 语言显示出最一致的上升趋势。从2012 年的第 17 位开始,它随着时间的推移稳步上升,但似乎在 13 这个位置上停留了连续三个季度。然而这一次,R 语言代替了排名 12 位的 Perl,使其跌落到 13 位。虽然仍然有大量的 Perl 语言在流通,但是更加专业的 R 语言已经夺取了这个一度被认为是网络粘结剂的 Perl 语言的位置。当然这与 R 语言的支持者们无关。R 语言相对独特的前 20 路径是值得它们的粉丝所欢呼的。
O’Reilly:R语言可以说是最常见的数据编程语言
最后,媒体 O'Reilly 在过去的几年里进行了一次数据科学调查,他们使用调查数据来分析数据科学的趋势。除了其他的之外,它们分析工具的使用情况来确定哪些工具是数据科学家最常使用的。
在2016 年的调查报告中,R 语言是最常用的编程语言(如果我们排除 SQL,这不是我在这里所指的编程语言)。57% 的受访者使用 R 语言(相比之下,使用 Python 的有 54%)
(另外,有70% 的受访者使用 SQL。如果你正在寻找 R 之后的另一个语言去学习,我会推荐 SQL)
他们还调查了人们去识别数据可视化的工具。他们发现 ggplot2 是最常见的可视化工具。我会在一篇即将发布的博客中解释为什么我喜欢 ggplot2,但如果我们只跟踪人气,O'reilly 的调查表明 ggplot2 时最常被使用的工具之一,甚至可能就是最常被使用的。
R 语言是学习数据科学的极佳语言
R 语言成为一门极佳的数据科学语言,在普遍性之外,另一大原因是:它是一门非常好的学习数据科学的语言。
R 语言是真正的「数据语言」
R 语言之所以如此适合数据科学的原因部分跟它本身的语言特性有关。自R语言发明之初,数据及统计的观念便融入其中。R-Project 形容其为「为统计计算而准备的编程语言及环境」。也就是说,R 语言的 DNA 中就含有统计及数据的基因。
如此说来,R 语言在众多编程语言中可谓独树一帜。它是一门为统计而生的语言,是一门为(处理)数据而设计的语言。当你在学习数据科学的时候,这将带来很大的优势——因为几乎所有的统计测试或方法都能够在 R 语言及其拓展库中找到。
最好的书籍和资源都使用了 R 语言
俨然,R 语言已是一门「统计计算」语言。与之相关的是,许多很好的书籍及学习资源都采用了 R 语言。
这非常重要。如果你是一名初学者,在数据科学领域才刚刚起步,那么你将需要学习很多知识。要真正掌握数据科学,你需要学习包括概率论、统计学、数据可视化、数据处理及机器学习在内的诸多子领域。所有这些领域都包含了理论基础(也就是你需要学习的内容),同时你也需要通过编写程序实际使用它们。
也就是说,你需要这样一种语言:
能够在这些领域都能够发挥作用(如数据可视化、数据处理、机器学习(也叫做统计学习))。
这门编程语言在这些领域内还有高质量的学习、训练素材。
尽管市面上有很多关于数据科学的书籍与课程,但其中最好的大多都是基于 R 语言的。
使用 R 语言学习概率论
以概率论为例,两本关于概率论的优秀书籍都是用 R 语言来编写书上的上手案例的。这两本书分别是:
《Probability with Applications and R》。这本书语言朴实、通俗易懂、条理清晰。
《Introduction to Probability》。这本书基于哈佛著名的统计学课程编写。
这只是两个简单的例子。如果你进一步发掘的话,你会发现几乎所有的关于概率论的书籍都使用了 R 语言。
使用 R 语言学习频率论统计学(frequentist statistics)
对于统计学方面的书籍也是如此。
因为统计学已经深入 R 语言的骨髓,所以许多统计学课本使用 R 语言作为其学习工具。
《Statistics: an Introduction using R》是一本介绍频率论统计学的优秀书籍。
一样的,如果你在亚马逊上快速搜索一下,你找到的大部分统计学入门的教材都使用了 R 语言作为它们的学习工具。
使用 R 语言学习贝叶斯统计学
当你正在寻找一本关于贝叶斯统计学的入门书籍时,这种趋势变得更为明显。
几乎所有的关于贝叶斯统计及推断的书籍都是用了 R 语言。尽管有些例外(有些书使用了 C 语言或者 Python),但主导的仍然是 R 语言。
如果你对贝叶斯统计学感兴趣,你可以查看这几本书:
Introduction to Bayesian Statistics
Statistical Rethinking
Doing Bayesian Data Analysis
如果你对贝叶斯方法感兴趣的话,这些书是你最棒的选择了,并且它们都使用了 R 语言。
学习如何在 R 中进行数据可视化
当你在学习数据可视化的时候,尽管你会有相对更多的编程语言可以选择,但笔者还是认为,大多数最优的编程资源都使用了 R 语言。
如果你正在学习数据可视化,那么你可以参考 Nathan Yau 的工作。他经常在他的博客(flowingdata.com)上上传一些使用 R 语言的数据可视化教程。(笔者同时推荐他所写的《Data Points》作为参考,在这本书中主要讲授的是数据可视化的一些法则而非编程实现。)
笔者亦推荐 Hadley Wickham 所著的书。如果你对使用 R 语言进行数据可视化感兴趣的话,那么你应该拥有 ggplot2 这本书。它不仅教会你如何使用 R 语言中数据可视化库的使用方法,还能够改变你对数据进行可视化的观念。
同时,你还可以参考这本书:R for Data Science。这本书包含了对数据可视化非常棒的介绍,还有对很多 R 语言数据可视化工具库的介绍,是一本学习 R 语言的必备书籍。
使用 R 语言来学习机器学习
最后,如果你想开始学习机器学习,有很多优秀的使用 R 语言描述的机器学习的书籍可以参考。
我承认,现在有各种各样使用不同的编程语言的来描述机器学习的书籍,但我认为,在最好的那一部分书籍中有很大比例都是使用的 R 语言。
下面有两个使用 R 语言来介绍机器学习的优秀的教程:
统计学习导论(An Introduction to Statistical Learning)
应用预测建模(Applied Predictive Modeling)
这些书写得十分严谨同时也很容易理解。书中会提及一些理论知识(但是不会用很复杂的数学知识来为难你),同时也会教授你一些实用的技术。
毫无疑问,这是我给想学习机器学习的初学者最常推荐的两本书,并且它们都使用的是 R 语言。
如果你想学习数据科学,R 语言是一个绝佳的选择
最后强调一下,R 是一种学习数据科学的优质语言,因为许多优秀的书籍(以及一些其它的教程)都使用 R 来作为编程语言。
所以,如果你是数据科学的初学者,由于数据科学学习材料的数量和质量所限制,所我认为 R 语言是最好的选择。
一个关于 Python 的快速注解
就数据科学编程语言来说,Python 是目前唯一可以替代 R 的语言。(因为其它的替代方案缺乏完善的软件包生态系统或者是非开源/免费的)。
我不会在这里阐述我对 Python 的全部理解,但是我必须要讲的是,Python 的确是一种优秀的语言。我爱 Python。
话虽如此,对于数据科学的初学者来说,我仍然认为 R 是更好的选择,其中的原因我在上文中已经进行了概述。
再者,我认为关于基础数据科学概念(概率、统计、贝叶斯统计、机器学习)的许多最好的教科书和教程都是基于 R 的。当然,这并不是说没有优秀的数据科学书籍使用 Python,我只是认为基于 R 的书籍的平均质量高于用其它编程语言描述的书籍。
有关于 Python 的另一个问题是,很多学生在开发过程中会遇到一些困难。他们在学习的过程中并没有花多少时间来学习统计数据、数据可视化、数据操作、概率等,而是花费了大量的时间去学习数据结构、循环、流程控制、面向对象的编程和 Web 框架。这些技能可以用来完善核心的数据科学工具包,但它们不是我们想要了解的数据科学范畴的相关内容。事实上,我建议大多数初学者先学习基本数据科学相关的内容(如数据操作、可视化、分析等)后再学习软件开发。
虽然大多数的初学者在以后会学习软件开发的技术,但是很多使用 Python 来作为入门数据科学的初学者会陷入到软件开发和 Web 开发等领域。我认为之所以会出现这样的问题,是因为在许多方面,Python 都是运用于这些领域的。大多数关于 Python 的书籍并不是真正的数据科学书籍,而是讲述一些有关于编程和开发的内容。所以,有些数据科学的初学者选择使用 Python 描述的书籍来学习数据科学,然而他们最终却花费了数月甚至数年来学习软件和 web 开发而不是数据科学。
当然,我非常爱 Python,但是对于初学者而言,我认为选择 Python 有一些冒险。最好还是从 R 语言开始,因为统计学和数据科学就像「它的 DNA」一样和它绑定在一起。使用 R 语言,不仅更容易学习,也不容易偏离我们的学习范畴。
如果你想学习数据科学,那么就学习 R 语言吧
你应该记住的是,如果想要学习数据科学,R 是可以说是最好的选择。在人气方面,R 拥有非常高的排名,并且还处于上升趋势。此外,有很多最好的数据科学的书籍和教程都是使用 R 语言来描述的。
如果你想要开始学习数据科学,我的建议如下:
学习 R 语言
重点学习 ggplot2、dplyr、tidyr、lubridate 和一些其它用于实现数据的可视化和控制的 Hadleyverse 工具
学习同时使用这些工具来进行数据分析。
当你对这些 R 工具包有所了解之后就可以开始学习概率、统计学和机器学习的内容了 (我推荐大家使用我在本文中所谈到的那些资料)
R vs Python - 超级英雄
R 这么好,也不要忘记 Python。在这一部分我们对比一下数据科学家的两个超级英雄——R 和Python。
Python 就像是超人,而R和蝙蝠侠之间有几点相似之处。让我们创建一个表来列出这些相似之处。
R 就像蝙蝠侠
侦探工作
智慧
狡黠
使用工具
动脑多于蛮力
Python 就像超人
肌肉力量
超级力量
优雅
应用面广
蛮力多于动脑
接下来解释一下 R 和Python 之间的区别及原因。此外,让我们帮助数据科学家找到更好用的编程语言。
R vs Python / R 和Python : 哪一种更好用?
R 和Python 都是开源的、免费的高级编程语言。R 专门用于统计计算。它有大量附加包(package)/工具来支持机器学习和数据分析。另一方面,Python 是一种通用的强大的编程语言,在数据准备、数据调试和数据分析方面有特殊的应用。
这种区别也是不同分析人士喜欢这些编程语言的原因。Python 通常被尝试开发数字处理和分析技能的计算机程序员所青睐。另一方面,R 被数学家和统计学家优先选择。这些差异在这些语言的学习资源(书籍和网上论坛)中是显而易见的。例如,考虑以下 4 本免费的在线图书。
所有这些书都是高质量的统计教材,用R作为首选编程语言。这些只是几个例子。请注意,第一本书不是专门用于 R,与第二本书有相同的作者。你很少会找到用 Python 作为首选语言的书籍。因此,R 更有能力处理数据挖掘和统计分析的相关问题。另一方面,Python 提供了非常好的应用程序来处理非结构化和复杂的数据集,如图像、书面文本(网络、电子邮件等)、基因、声音等。
实质上,Python 和R一起构成了数据科学家的工具包。因此,对于务实的和面向应用的数据科学家来说,了解这两种语言的超级能力和特点是至关重要的。
使用 R 进行分析、数据可视化与建模:
为分析提供了极好的灵活性
R 使你在分析的时候更容易思考
由于有着十分活跃的统计与数学社区,可以持续的更新和增强分析功能优秀的数据可视化工具
优秀的数据可视化工具
使用 Python 进行数据预处理、数据清洗,特别针对于非结构化数据(如网页,图像,文本等):
极强的灵活性,能够从自由文本、网站和社交媒体网站提取信息
便于图像挖掘和为分析准备数据
处理大量的数据的时候比 R 语言更好