我从数据科学新学生那里得到的最常见的问题可能是:"我应该学习哪种语言......R或Python?"
这是一个有点复杂的问题,因为这取决于你是谁,你的目标是什么。
说到这里,我确实对第一次的数据科学家有一个偏好。
有几个原因,但在高层次上,主要原因是:
让我们逐一讨论这些原因。
R更容易学习和使用
我个人认为,R更容易学习,也更容易使用。
这其中很大一部分原因是它的设计方式。
命名良好的函数
这要从函数的名称说起。 例如,当你使用dplyr时,有几个主要工具。
- 选择
- 过滤
- 变异
- 总结
- 分组
这些名称很简单,容易记住。
"select "选择列。"filter "过滤行。"summaryise "总结数据。 这些函数的名字就像英语一样。 这使得它们非常容易记住,而且当你坐下来写代码时也更容易使用。
其他R/Tidyverse包中的大多数函数,如Tidyr、Forcats和Reader,也都是这样命名的(虽然,ggplot2中的名字更玄乎一些)。
每个函数只做一件事
另一个好的设计特点是,在大多数情况下,R的Tidyverse中的每个函数都做一件事,而不是做多件事。
例如,每个dplyr函数只做一件事。

这与Python的Pandas包形成对比,后者的函数有时会做多件事情,你需要用特定的参数来控制它们的行为。
例如,Pandas的 "过滤 "方法可以检索行或列。 具体的行为需要你使用"axis= ,"这又需要你了解Pandas和Numpy中的轴是如何工作的。 只是使用起来要复杂得多。 此外,有多种方法来检索列,它们的工作方式都有些不同。
很容易就能 "把碎片拼起来"
要做真正的数据科学工作,你需要能够将多个函数以复杂的方式组合在一起。
R的Tidyverse正是为了做到这一点而设计的。
你可以使用dplyr的 "管道 "语法,将不同的工具组合在一起。 你可以用它们来组合dplyr函数来做数据处理。 但你也可以用管道与Tidyr、Readr、ggplot2和其他Tidyverse工具一起使用。

当你使用这种管道语法时,一切都像乐高积木一样扣在一起,"把碎片拼起来 "来做真正的工作变得非常容易。
R只是更容易学习和使用,在所有方面都是如此。
最后,Python的数据处理语法更难学,更难用。 但是R的语法非常简单,而且容易使用。
如果你是一个初学者,R可能会更容易学习、阅读和编写。
R教你思考工作流程
第二,R的Tidyverse教你思考工作流程。
正如我在上面提到的,你可以使用 "管道 "运算符将函数连接起来。
你可以使用管道运算符将两个函数组合在一起。
但你也可以使用管道运算符将多个函数组合在一起,形成多功能处理链。

这使你能够编写多步骤的代码块来处理你的数据。
你可以将这些代码块结合到更大的脚本中,以进行端到端的数据科学工作,逐步处理、可视化和分析你的数据。
例如,这是我做的一个小型的端到端R数据科学项目,它向你展示了一切是如何在工作流程方面配合起来的。
请注意,代码被组织成一个个的函数块,这些函数块被串联起来完成一些小任务。
还注意到,整个代码有一个从上到下的流程,比如我们首先获得数据,然后清理数据(一步一步来),然后整理,然后可视化。
R的句法结构为这一点提供了便利。 它就是为这个而生的。
因为它的设计考虑到了这种类型的工作流程,它将帮助你学会用工作流程来思考。
这一点非常重要。
R更适合于初级数据科学角色
最后,对于 "初级 "数据科学角色,我更喜欢R。
这是什么意思?
数据科学在不同的级别,以及在你职业生涯的不同阶段是不同的。
在后期阶段,数据科学涉及到我们认为的全部数据科学技能:数据整理、可视化、机器学习、深度学习、特殊主题等。
但在早期阶段,数据科学通常是 "硬核数据分析"。
换句话说,大多数入门级的数据科学角色是数据分析角色。 他们非常频繁地排除了更高级的主题,如机器学习和深度学习。
因此,在早期阶段,大多数数据科学家会。
- 获取数据
- 清洗数据
- 处理数据
- 视觉化数据
- 分析数据
这往往很像一个数据分析的角色,但有更大、更复杂的数据集,你通常从数据库中得到。
事实证明,这就是R真正的优势所在。 R对于像机器学习和深度学习这样的主题不太擅长(尽管这正在改变)。 但R对于数据分析来说是非常好的。
当我需要获取、清理、重塑、可视化和分析我的数据时,我实际上更喜欢R而不是Python。
(原因正如我前面所讨论的,它为这些任务设计得非常好,而且易于使用。)
最终,如果你把大部分时间花在处理、可视化和分析数据上(而且你不需要做高级的事情),那么我推荐R。
但有时,还有更好的选择
说了这么多,在有些情况下,Python可能更好。
如果你的目标公司需要一种不同的语言,R可能是一个糟糕的选择
如果你想在一家严格使用Python的公司工作,那么是的,你可能需要学习Python来代替。
要明确的是:对于数据科学职位,苹果、Facebook、谷歌和亚马逊都经常让你在R和Python之间选择。 一个公司强迫你使用一种特定的数据科学语言,这是很罕见的。
如果你只对机器学习感兴趣,R可能是一个糟糕的选择
如果你只对机器学习感兴趣,那么Python可能比R更好。
截止到写这篇文章的时候,商业或工业环境中的大多数机器学习都是用Python完成的。 大多数专业的机器学习工程师都使用Python。
但另一方面,机器学习的工作也更难得到。 如果你刚开始就严格专注于机器学习,可能是个坏主意。
如果你想做软件工程,R可能是一个糟糕的选择
最后,如果你想做更传统的软件工程,我建议不要使用R。
正如我之前提到的,R在数据处理、可视化和数据分析方面非常出色。 它在 "数据分析 "方面很出色。
但是我非常不喜欢用它来构建系统和编写软件。 在R中做这些事情的语法总是感觉很复杂,特立独行,而且很笨拙。
当我需要建立系统时,我更喜欢用Python来代替。
如果你想学习数据科学,R是一个很好的选择
决定学习哪种数据科学语言是个人的选择,有时取决于个人情况。
但是,我经常建议人们学习R......特别是如果他们刚刚开始学习数据科学。
原因是R更容易学习和使用,R教你思考工作流程,而且R更适合许多初级数据科学角色。