R用於研究,Python用於生產

語言: CN / TW / HK
點選下方 公眾號,回覆 資料分享,收穫驚喜


原文: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 包 tidyquanttimetk 的作者,自 2011 年以來一直從事資料科學領域的業務和財務分析。Matt 擁有業務和工程學碩士學位,在商業智慧、資料探勘、時間序列分析、統計、機器學習領域具有豐富經驗。

R 和 Python 都很棒。本文將通過展示各自生態中主要進展來談一下兩種語言各自的一些優勢。

1. R 用於研究

如果讓我不得不用一個詞來形容 R,那就是:tidyverse。它幫助您完成研究任務——處理資料、視覺化結果,從構思迭代到程式碼————毫無壓力,更準確地說,是樂在其中。下面用終極 R 速查表來解釋為什麼說 R 用於研究

要開始學 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 生態區分開來的關鍵功能。

可以看到 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速查表不同)。

可以看到,基本上所有與匯入,清洗和資料處理有關的事情都是由 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一起學?

參考資料

[1]

R&Python資料科學: https://www.zhihu.com/column/zhangjingxin4          


推薦:可以儲存以下照片,在b站掃該二維碼,或者b站搜尋【莊閃閃】觀看Rmarkdown系列的影片教程。Rmarkdown影片還在同步更新,拓展系列也會不斷加入。

本文分享自微信公眾號 - 好奇心Log(Curiosity-log)。
如有侵權,請聯絡 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。