Ladies and 鄉親們,爭奪數據分析領域最好用編程語言的兩大重量級選手:Python 和 R 語言,居然宣佈:合!做!了!python
若是你身處數據分析領域,那麼你必定遇到過或者據說過這個兩難抉擇——在進行數據分析時,到底使用哪一種語言更好,R 仍是 Python?程序員
「最好的編程語言」之爭曠日持久,數據科學領域也不例外。網上常常出現諸如「我想學習機器學習,我應該用哪一個編程語言」或者「我想快速解決問題,我應該用 R 仍是 Python」等這類問題。儘管這兩種編程語言目前都是數據分析社區的佼佼者,可是它們仍然深陷「哪種纔是數據科學家的首選編程語言」的爭論之中。編程
可是各位,從今日後,大家能夠不用再糾結這個問題了。微信
在介紹合做相關事宜以前,咱們照例先回顧一下這兩種編程語言的前世此生,以及他們在編程江湖當中的恩怨情仇。網絡
Ross Ihaka 和 Robert Gentleman 於 1995 年基於 S 語言創造了開源語言 R,目的是專一於提供更好和更人性化的方式作數據分析、統計和圖形模型。數據結構
起初 R 主要是在學術和研究中使用,但近來工業界也發現了 R 的好,這使 R 成爲在企業中使用的全球發展最快的統計語言之一。機器學習
而 Python 由 Guido van Rossem 建立於 1991 年,主要強調效率和代碼的可讀性。但願深刻的數據分析或應用統計技術的程序員是 Python 的主要用戶。編程語言
當你越須要在工程環境中工做,你會越喜歡 Python。它是一種靈活的語言,在處理一些新東西上表現很好,而且注重可讀性和簡單性,學習曲線比較平緩。函數
這兩種編程語言是怎麼結下樑子的?還得從機器學習和數據分析提及。工具
機器學習和數據分析之間的差別有些難以言明,但兩者最主要的不一樣就在於:比起模型的可解釋性,機器學習更增強調預測的準確性;而數據分析則更加看重模型的可解釋性以及統計推斷。
因而乎 ,因爲 Python 更看重預測結果的準確性,它成爲了機器學習的一把利器。而 R 做爲一種以統計推斷爲導向的編程語言,在數據分析界也獲得普遍應用。
可是,這並非就給這二位定了性,除了各自的領域別的都幹不成了。實際上,Python 也能夠高效地完成數據分析工做,R 在機器學習中也具備必定的靈活性。它們都擁有至關多的資源庫去實現彼此特定的函數功能,好比 Python 就有不少資源庫來提升本身統計推斷的能力,R 也有不少包能夠提高預測的準確率。
因爲兩者的這些特性,網絡上對於 Python 和 R 到底誰強誰弱的爭論一直沒有定論,就連在學界和業界的使用率也一直你追我趕。
不過,隨着近幾年人工智能的普及,愈來愈多學校開展了 Python 語言的編程課,轉型人工智能的企業也加大了對 Python 語言的投入力度。根據 Stack Overflow 2018 年開發者調研報告顯示:Python 的排名有所上升,今年已經超過了 C#,正如它去年超過了 PHP。Python 堅決主張要成爲「最快速成長的主流編程語言」,至於 R 語言,則被遠遠甩在後面。
看似人氣差距愈來愈大,有人戲稱他們一個當季網紅,一個「過氣網紅」。但也有技術大佬對於這種誰是最佳編程語言的爭論感到不滿,進而提出了一個想法:爲何不讓他倆合做呢?
技術大佬 Hadley Wickham 和 Wes McKinney 共同促成了此次合做。
Hadley Wickham 是編程語言 R 最重要的開發人員,Wes McKinney 則是編程語言 Python 最重要的開發人員之一。
Wes McKinney 在 2008 年建立了 pandas project,pandas 是一個開源的 BSD 許可的庫,爲 Python 編程語言提供了高性能、易用的數據結構和數據分析工具(對,就是你在 Python 裏超級經常使用的那個 pandas 庫)。此外,他還撰寫了 Python for Data Analysis 一書,幫助推廣 Python 在數據科學領域的應用。他是 Apache Software Foundation 的成員,而且是 Apache Arrow 和 Apache Parquet 的 PMC 成員,曾任 DataPad 的首席執行官和共同創始人。
Hadley Wickham 則是許多在數據科學領域使用最普遍的 R 軟件包的建立者,如 ggplot二、dplyr 和其餘許多軟件包。他寫了幾本關於 R 語言的書,如 R for Data Science 和 Advanced R。Hadley 是 RStudio 的首席科學家,同時也是 Ursa Labs 關於 R 語言支持和通常 API 設計和可用性的技術顧問。
上個月,McKinney 宣佈成立 USRA 實驗室——一個致力於改進數據科學工具的創新組織。本次 Python 和 R 的合做就是 USRA 實驗室與 Wickham 所在的公司 RStudio 之間的合做項目,RStudio 目前負責維護 R 語言最受歡迎的用戶界面。USRA 實驗室的主要目標是讓使用不一樣編程語言的數據科學家可以更輕鬆地協做,避免不一樣語言開發人員的過多重複工做。除了改進 R 和 Python,他們還但願其工做可以改進其餘開源編程語言的用戶體驗,好比 Java 和 Julia。
Python 和 R 均可以避免費使用,而且常常被認爲是數據科學領域中的競爭對手。但 Wickham 和 McKinney 都認爲 這種競爭是沒有必要的。事實上,他們認爲經過合做可使這兩種編程語言對數百萬用戶更加有用。
對於在科技公司(如谷歌、Facebook 等)工做的數據科學家、研究人員和數據記者來講,Python 和 R 都是必不可少的工具。開發者最頭痛的問題是,當他們的同事使用另外一種不一樣的編程語言時,協做每每難於上青天。URSA 實驗室將經過打造適用於全部編程語言的新標準,使與使用其餘數據科學語言的人共享數據和代碼變得更加容易。開發者們將這一行動稱做爲對「互操做性」的改進。Wickham 和 McKinney 已經一塊兒建立了一個在 Python 和 R 中均可以使用的文件格式。
Wickham 和 McKinney 表示,除了想讓協做變得更容易,還有另一個緣由促使他們展開這個合做項目:使用不一樣編程語言的開發者老是在重複解決同一個問題,卻沒能把他們從中學到的經驗教訓分享給其餘人。
Wickham 舉了一個例子,在每一種編程語言中,開發人員都要會計算平均值。這對於用戶來講很是簡單,不論是在 Python 仍是 R 中都只須要一行代碼。可是對於語言的開發人員來講,找到用一行代碼執行計算的最佳方法倒是一個棘手的問題。R 和 Python 的開發人員都傾向於用 C++ 和 C 語言來解決這個問題,這兩種語言對於開發人員來講很好用,但對普通用戶來講卻很棘手。Wickham 認爲,在理想狀況下,若是一種編程語言的開發人員找到了作某事的最佳方法,那麼這個方法應該應用於其餘全部語言。這也是 USRA 實驗室的核心任務。
Wickham 和 McKinney 補充道,這個合做項目除了解決技術問題,也但願讓不一樣的編程語言社區和平共處。他們認爲使用這些語言的人合做得越多,數據科學領域就能發展得越好。
「我但願此次合做能結束 R 和 Python 之間毫無心義的爭鬥,」Wickham 說,「由於這兩種語言都很棒。"
參考資料:
http://wesmckinney.com/blog/announcing-ursalabs/
https://qz.com/1270139/r-and-python-are-joining-forces-in-the-most-ambitious-crossover-event-of-the-year-for-programmers/