翻译|R用于研究,Python用于生产

**原文:**R is for Research, Python is for Production

**作者:**Matt Dancho and Jarrell Chalmers, 2021-2-18

**译者:**张敬信

**转载于:**知乎R&Python数据科学专栏

作者简介

Matt Dancho 是商业科学公司(http://www.business-science.io)的创始人,该公司是一家协助组织将数据科学应用于商业应用程序的咨询公司。他是 R 包 tidyquanttimetk 的作者,自 2011 年以来一直从事数据科学领域的业务和财务分析。Matt 拥有业务和工程学硕士学位,在商业智能、数据挖掘、时间序列分析、统计、机器学习领域具有丰富经验。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f2Puef7k-1627711651830)(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==)]

R 和 Python 都很棒。本文将通过展示各自生态中主要进展来谈一下两种语言各自的一些优势。

1. R 用于研究

图片

如果让我不得不用一个词来形容 R,那就是:tidyverse。它帮助您完成研究任务——处理数据、可视化结果,从构思迭代到代码————毫无压力,更准确地说,是乐在其中。下面用终极 R 速查表来解释为什么说 R 用于研究

图片

要开始学 R,tidyverse 是开启旅程的理想之地。这是规范化的包和工具的合集,具有一致的结构化编程接口,而 R base 则明显更复杂且用户友好性较低。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bZNLd40L-1627711651834)(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==)]

我们可以找到许多解决特定问题的更小的 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 生态区分开来的关键功能。

图片

可以看到 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 如何帮助我更好地挖掘信息并将结果用于生产。

图片

让我们用终极 Python 速查表来检查 Python 生态(注意,这与之前展示的R速查表不同)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZdQ1rLcv-1627711651835)(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==)]

可以看到,基本上所有与导入,清洗和数据处理有关的事情都是由 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 为什么对商业很有用?事实证明,它的优势在于机器学习和生产!

图片

可以看到 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一起学?

图片

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值