经常有读者问我们,在数据科学领域里,到底是该选 Python 呢,还是选 R 更好?诚然,对于数据科学家来说,R 和 Python 都很重要。但是对于一个新人数据科学家来说,又该如何取舍呢?同时学习 Python 和 R 也有些不切实际。作者 Tom Waterman 作为过来人,他是先学了 R,后来才学的 Python,他给我们列出了为什么 Python 比 R 更适合数据科学领域的四大理由。InfoQ 中文站翻译并分享给大家。
我认为,在数据科学领域,Python 比 R 更合适的理由主要有四个。
新人数据科学家都面临着一个问题,而这个问题非常重要:我是应该学习 Python 呢,还是学习 R?
问得好!这个问题真的非常重要。因为,“男怕入错行,女怕嫁错郎”,要知道,学习第一门编程语言是需要耗费数百个小时的。试图都学这两门编程语言是不切实际的,特别是当你刚刚开始职业生涯的时候。
那么,你应该做出怎样的选择呢?
根据我的经验,如果你选择了 Python,我相信,你的职业生涯将会因此受益良多。
在我看来,对数据科学这一职业来说,Python 是更好的选择,尤其是如果你刚刚起步的话。
我将给出四个理由,来说明为什么我认为 Python 对你职业来说是更好的选择,但我也要澄清一点:我并不认为 R 是一个糟糕的选择。
选择 R 并不会对你的工作机会产生什么负面影响,而是要取决于你的团队,你甚至有可能会被要求学习 R。事实上,Facebook 将 R 作为内部调查工具的分析组件,而我们所有的数据科学基础设施都支持这门语言。
也就是说,我相信,如果你学习 Python 的话,你将会更快地成为一名实践数据科学家,而且还能够更好地在统计建模之外的重要领域为你的团队做出贡献。
因此,学习 Python 将会使你能够为公司带来更大的影响力,而你的职业生涯也将因此硕果累累。
理由一:无论如何,你可能得学习 Python
大多数公司要求他们的数据科学家所做的并不仅仅是预测建模(即机器学习)。至少,你可能需要维护为模型提供数据的数据管道,而这些数据管道很可能就是用 Python 构建的。
目前,管道的行业标准是基于 Python 的 Airflow,而在 Facebook 上,我们使用的内部 Python 工具基本上也是相同的。
事实上,据我估计,在 Facebook,我们的数据科学家 100% 都会在每周使用 Python,而积极使用 R 的人可能只有 10% 左右。
因此,对你来说,如果选择 Python 的话,可能会更有效率:虽然你一旦找到工作就可以避开 R,但不太可能会绕开 Python。
理由二:Python 更容易学习
要知道,成为可雇佣的人所需的时间非常重要,尤其是如果你是在大学以外的地方自学的话。
Python 以易学而闻名。在学过 Python 和 R 之后(虽然我对 Python 方面更深入),我认为,Python 的声誉是当之无愧的。
当你开始使用统计建模之外的语言特性时,Python 易学所带来的好处尤为明显。这些特性包括将项目打包用于分发、开发命令行界面、使用像 SQLAlchemy 这样的对象关系映射(Object-relational mapping,ORM)为数据结构建模等等。
若掌握 Python,将使你更容易精通这些特性,你的职业生涯也将因此受益。
理由三:Python 的社区更庞大
Python 是世界上最流行的编程语言之一,在 Stack overflow、Kaggle 甚至 Mediun 等网站都有庞大的社区。
因此,当你不可避免地遇到连自己也无法解决的问题时,你更有可能找到那些在你之前遇到过这个问题、寻求过帮助并得到解决方案的人。
这意味着你将花费更少的时间来调试与系统的兼容性问题,而将更多的时间用于交付可为公司带来影响的代码。
理由四:使用 Python 部署模型更容易
最后,在职业生涯中,你可能会达到这样的一个阶段:你希望能够将模型实时提供给任何一个最终用户。要解决这个问题,你需要构建一个基于 REST 的 Web 应用程序,使用 Python 的话,这件事就会变得很容易。
实际上,Python 拥有一些世界上最流行的 Web 应用程序框架,即 Django 和 Flask。你公司的内部部署工具更有可能就支持这些框架,而且相对来说不太可能会支持 R。
这些框架的流行也意味着它们得到了平台即服务提供商(如 Heroku、Amazon Lightsail 等)的良好支持。有了这些框架,你将能够在线发布你的个人项目,而所需的工作量仅相当于在 R 中部署相同项目所需工作量的一小部分。
最重要的是,如果你足够幸运,你的公司在自己的产品中已经使用了 Python 框架,那么学习 Python 就意味着你将有足够的危机感,连接你自己的应用内跟踪。若能够自主为你的模型捕获更多的特性,将会对你所能够带来的影响产生显著的效果。
当然,所有的决策都是需要权衡取舍的,选择学习 Python 而不是 R 也没有什么不同。尽管我个人认为 Python 对数据科学职业来说是更好的选择,但 Python 的缺点也同样值得考虑。
对我来说,Python 最大的缺点就是没有与 RStudio 相当的工具。Python 最有可比性的是 Jupyter Notebook,但我个人觉得 RStuduo 更好一些,因为它具有数据探索的功能。
作者注: 在写完本文后,Marcelo Garcia 指出可以使用免费的 Spyder 包作为 RStudio 的 Python 替代方案。但作者还没有机会尝试 Spyder,但是看起来很棒!
R 在学术界也非常流行,因此,R 中软件包的文档更有可能是直接引用学术研究。这些文档对于从事研究“前沿”工作的数据科学家来说非常有用。
但我并不认为 RStudio 的缺乏,就能足以否定 Python 的相对优势。而且,在数据科学学术界从业者也少得多,这使得 R 的研究相关优势对大多数数据科学家来说不那么重要了。
因此,尽管 R 有很多优点,但我相信如果你选择学习 Python,你的职业生涯将会受益匪浅。
最后,我认为值得一提的是,我并不认为学习 R 就是个糟糕的选择,只不过 Python 更可能是你职业生涯中的一个更好的选择而已。要根据你的具体情况,学习 R 对你来说也有可能更有意义。
不管你选择学习哪种语言,你都不应该觉得你永远不能改变主意。要知道,所有的编程语言的相似之处可要远远多于不同之处:学习第二门编程语言要比第一门编程语言容易得多。
实际上,我恰恰选择的就是先学习 R 的!因此,就算我现在建议将 Python 作为你职业生涯的更好选择,但我也很难对 R 发出太过强烈的警告。
作者介绍:
Tom Waterman,Facebook 数据科学家。