原文:R is for Research, Python is for Production
作者:Matt Dancho and Jarrell Chalmers, 2021-2-18
译者:张敬信
转载于: 知乎R&Python数据科学[1]专栏
作者简介:
Matt Dancho 是商业科学公司(http://www.business-science.io)的创始人,该公司是一家协助组织将数据科学应用于商业应用程序的咨询公司。他是 R 包 tidyquant 和 timetk 的作者,自 2011 年以来一直从事数据科学领域的业务和财务分析。Matt 拥有业务和工程学硕士学位,在商业智能、数据挖掘、时间序列分析、统计、机器学习领域具有丰富经验。
![](https://i-blog.csdnimg.cn/blog_migrate/4907a8c534d322e19f0b7e2b9034fa20.jpeg)
R 和 Python 都很棒。本文将通过展示各自生态中主要进展来谈一下两种语言各自的一些优势。
1. R 用于研究
![](https://i-blog.csdnimg.cn/blog_migrate/4d4e004fcedd5b2a320c838523390b59.jpeg)
如果让我不得不用一个词来形容 R,那就是:tidyverse。它帮助您完成研究任务——处理数据、可视化结果,从构思迭代到代码————毫无压力,更准确地说,是乐在其中。下面用终极 R 速查表来解释为什么说 R 用于研究。
![](https://i-blog.csdnimg.cn/blog_migrate/9f60fc5328f56f5c4751a1e73ecb6ab9.jpeg)
要开始学 R,tidyverse 是开启旅程的理想之地。这是规范化的包和工具的合集,具有一致的结构化编程接口,而 R base 则明显更复杂且用户友好性较低。
我们可以找到许多解决特定问题的更小的 R 包,但以下是最重要的 R 包:
Dplyr&ggplot2
两个强大的帮助您完成日常决策的包是 dplyr 和 ggplot2,它们非常适合用于数据处理和可视化。这是数据科学家或数据分析师可以拥有的两个最重要的技能。
Rmarkdown
毫无疑问,R的最特殊优势之一是 Rmarkdown,它是一个框架用于创建可重现报告,演示文稿、博客、期刊以及更多!想象一下,有一个可以运行的报告,并创建了一个易于共享的 HTML 页面或 PDF 以与您的团队共享。这绝对是比每个星期一早上在 Excel 中点击数百次更惬意的方法。
Shiny
Shiny 是 R 中的另一个框架,用于创建交互式 Web 应用程序。Shiny 的最佳功能之一,就是通过易于使用的 GUI(图形用户界面)为团队中非聚焦数据的成员提供决策所需的数据科学工具。想象一下,您的团队聚在一起进行周一下午的计划会议,已经查看了在 Rmarkdown 中创建的上一周的报告,并使用协作式 Shiny Web 应用程序运行模拟以确定下一步将数据引导到何处。
R 的增长点在何处
接下来,如果浏览到“特殊主题页”,就可以看到正在增长的 R 生态。下图是将 R 生态与 Python 生态区分开来的关键功能。
![](https://i-blog.csdnimg.cn/blog_migrate/45c1a1c9f7cdc3d99b507dd437b68d3f.jpeg)
可以看到 R 已扩展到:
时间序列和预测:modeltime和timetk
金融分析(和其他领域):tidyquant,quantmod
网络分析和可视化:tidygraph和ggraph
文本分析:tidytext和recipes
地理空间分析和可视化:主题地图
机器学习:h2o,tidymodels和 mlr3verse [注]
注:原文是 mlr3,我觉得改成 mlr3verse 更好。
R还有哪些缺失?
在生产领域中存在明显差距。R 有 Shiny(Apps)和 Plumber(APIs,未显示),但是诸如Airflow 和云软件开发套件(SDK)之类的自动化工具主要在 Python 中可用。
R 总结
由于 tidyverse,R 在用于研究时确实非常特别,它简化了数据整理和可视化过程。坦率地说,精通 tidyverse 后,在 R 中处理数据时,您的工作效率将提高 3-5 倍。
2. 为什么说 Python 很棒?
Python也是amazing,但出于某些原因,我们拿一个Python包,如OpenCV来说——它是用于计算机视觉。
这是Python的真正优势,因为我们可以用OpenCV进行疯狂的酷事,比如目标检测。但是,这对我的日常生活有多大作用呢?大约为零。为什么?因为我是用 SQL 数据库的商业分析师和数据科学家。我更多的兴趣是 Python 如何帮助我更好地挖掘信息并将结果用于生产。
![](https://i-blog.csdnimg.cn/blog_migrate/fc6a29597932dd7232d3b00c9b94a427.jpeg)
让我们用终极 Python 速查表来检查 Python 生态(注意,这与之前展示的R速查表不同)。
可以看到,基本上所有与导入,清洗和数据处理有关的事情都是由 pandas 包来做的。那么什么是 pandas?Pandas 是用于 Python 中数据处理的面向对象工具。
Pandas vs Tidyverse
尽管程序员喜欢pandas,但商业分析师最初可能会不习惯这种面向对象(python风格)的让数据框带有方法的方式:
customer_counts_df = df.group_by('customer_id').value_counts()
Python 中的一切皆是对象,我们在对象上调用这些方法(如 group_by 和 value_counts )。这种调用看起来不太糟。但是,我们通常会尝试进行更多的处理操作。它变得非常具有挑战性,可读性差并且更加复杂。
相反,R 中的 tidyverse,是采用不同的语法:管道符号(%>%
)。这与 SQL 和用户想象中的数据处理流非常相似。
customer_counts_tbl <- df %>%
group_by(customer_id) %>%
summarize(count = n())
这种整洁的数据处理工作流,更容易让数据分析师将一系列的操作扩展到 10 个或更多。请记住,挑战不是输入代码,而是将您的想法变成代码。这是 tidyverse 真正强大的地方。
Python 的主要优势在于 Production ML
OK,那么 Python 为什么对商业很有用?事实证明,它的优势在于机器学习和生产!
![](https://i-blog.csdnimg.cn/blog_migrate/74614c41511986076f51fc514bc7ac7c.jpeg)
可以看到 Python 具有完善的面向生产ML的工具:
自动化:Airflow,Luigi
Cloud-AWS,Google Cloud和Azure软件开发套件
机器学习:ScikitLearn
深度学习和计算机视觉:PyTorch,TensorFlow,MXNet,OpenCV
NLP:spaCy,NLTK
这些面向生产的工具,使得与这些人一起工作更容易:云交互,作为大型IT团队一部分做运营,因为他们已经在用 Python。无需在生产系统中包含R和任何其他依赖。
Python总结
如果您可以克服 Pandas 的学习曲线,那么 Python 就会成为一个很好的工具。大多数 IT 团队都了解 Python,因此您的代码将完全适合他们的工作流。只需意识到由于 tidyverse 提升,您在 Research 上的生产率可能比 R 同行低 3 到 5 倍。
您应该学习哪种语言?
该决定可能具有挑战性,因为 Python 和 R 都有明显的优势。
对于研究来说,R 是非凡的:做可视化,数据洞见,生成报告以及用shiny制作MVP级应用。从概念(想法)到执行(代码),R用户完成这些任务往往能够比Python用户更快3到5倍,从而使研究工作的效率很高。
对于生产来说,Python非凡的:将机器学习模型集成到生产系统中,其中您的IT基础架构依赖于Airflow或Luigi等自动化工具。
何不Python和R一起学?
![](https://i-blog.csdnimg.cn/blog_migrate/8f3251b919218914be3d304b62c53382.jpeg)
参考资料
[1]
R&Python数据科学: https://www.zhihu.com/column/zhangjingxin4
------- End -------
点右下角「在看」与转发
是对我们最大的支持
特别推荐下公众号「价值前瞻」,分享读书、成长和投资思考,欢迎来串门。
回复「书单」 可获取精选书单一份,包括《如何阅读 一本书》、《巴菲特之道》、《金字塔原理》、高瓴张磊的《价值》、《投资最重要的事》、《戴维斯王朝》等书籍的笔记内容或思维导图
价 值 前 瞻
做一个有远见的人
扫码关注,查看更多内容