写点什么

在数据科学领域,为什么 Python 比 R 更好?

2020 年 1 月 17 日

在数据科学领域,为什么 Python 比 R 更好?

经常有读者问我们,在数据科学领域里,到底是该选 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 数据科学家。


原文链接:


https://towardsdatascience.com/why-python-is-better-than-r-for-data-science-careers-44ec7a149a18


2020 年 1 月 17 日 08:002184
用户头像
刘燕 InfoQ记者

发布了 554 篇内容, 共 174.2 次阅读, 收获喜欢 1055 次。

关注

评论 1 条评论

发布
用户头像
不同意。看看科学研究界基本都用R。深度学习才用python。Julia如果上来,数据分析python或R估计都靠边站。
2020 年 01 月 17 日 08:11
回复
没有更多了
发现更多内容

阿里P8总结的1530页Java编程核心思想笔记,Github访问破百万!

Java架构之路

Java 程序员 架构 面试 编程语言

2021年金三银四跳槽季,呕心沥血整理出Java10W字面经,首次公布!

Java架构之路

Java 程序员 架构 面试 编程语言

龙归科技|邀您参与全球「身份管理日」

龙归科技

复习一周,字节跳动三场技术面+HR面,不小心拿了offer

Crud的程序员

Java 编程 架构 Java工程师

百度搜索与推荐引擎的云原生改造 | Geek大咖说第一期

百度Geek说

Kubenav: 使用手机管理你的 K8S 集群

郭旭东

Kubernetes k8s多集群管理

思码逸Merico 完成 A 轮融资,发布企业版 3.0 新产品,拓展研发效能边界

InfoQ 的朋友们

InfoQ 的朋友们

IPFS项目是不是真的?IPFS国家认可吗?

投资矿机v:IPFS1234

IPFS国家认可吗 IPFS项目是不是真的

项目管理之相关方管理

Geek_XOXO

项目管理 复盘 相关方管理

量化倍投系统开发,量化马丁策略交易平台搭建app

WX13823153201

量化倍投系统开发

消息队列(如 Kafka 等)的应用场景

五分钟学大数据

kafka 消息队列 4月日更

BOE(京东方)2020年报发布:营收1355.53亿元  净利润大幅增长162.46%

爱极客侠

4.16-17 | 阿里云技术大咖分享新内容新交互时代下的新技术、新机会

阿里云视频云

阿里云 WebRTC 直播架构 音视频开发

Chrome浏览器远程代码执行0Day漏洞风险通告——POC已公开

Machine Gun

腾讯 网络安全 HTTP

Mokito 单元测试与 Spring-Boot 集成测试

Zhang

Java 单元测试 集成测试 Mokito Spring boot starter test

C统计量/ C statistic

Geek_Goldensikaiqi

全靠这份阿里巴巴Java面试参考指南(泰山版),已让我成功在金三拿到8个Offer

神奇小汤圆

Java 编程 程序员 架构 面试

线上500万数据查询时间在37秒,作者将问题解决了,我却看到了更大的坑

谙忆

太厉害了!腾讯T4大牛把《数据结构与算法》讲透了,带源码笔记

Crud的程序员

编程 程序员 数据结构与算法

翻译:《实用的Python编程》09_00_Overview

codists

Python

金三拿到5个offer,全靠这份Alibaba内部Java面试指南

云流

Java 编程 程序员 架构 面试

全网下载量过亿!12万字阿里内部Java面试手册有多强?

Java架构追梦

Java 架构 面试 成长笔记 阿里巴巴内部资料

阿里内部疯传的《JDK源码剖析手册》!在GitHub上已高达百万访问量!

Java架构之路

Java 程序员 架构 面试 编程语言

ThreadLocal超深度源码解读,为什么要注意内存泄漏?不要道听途说,源码底下见真知!

徐同学呀

ThreadLocal Java源码

Flume拦截器实战

大数据技术指南

flume 4月日更

五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多(Java岗)

程序员改bug

Java 架构 程序员面试 Java面经

就像TM做梦一样:金三突击面试,成功斩获阿里、美团等多个大厂offer

互联网架构师小马

Java 编程 程序员 面试 软件开发

IPFS矿机1T每天能挖多少?IPFS矿机多少钱一台?

投资矿机v:IPFS1234

IPFS矿机多少钱一台 IPFS矿机1T每天能挖多少

PHPStorm 安装Xdebug插件开启单步调试

慢慢de

win10 Xdebug PHPStorm

智慧党建平台搭建,组织部干部任免系统开发

13823153121

DNS原理及其应用

赖猫

c++ 后台开发 网络编程 DNS 服务器开发

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

在数据科学领域,为什么 Python 比 R 更好?-InfoQ