R vs. Python,資料分析中誰與爭鋒?
R和Python兩者誰更適合資料分析領域?在某些特定情況下誰會更有優勢?還是一個天生在各方面都比另一個更好?
當我們想要選擇一種程式語言進行資料分析時,相信大多數人都會想到R和Python——但是從這兩個非常強大、靈活的資料分析語言中二選一是非常困難的。
我承認我還沒能從這兩個資料科學家喜愛的語言中選出更好的那一個。因此,為了使事情變得有趣,本文將介紹一些關於這兩種語言的詳細資訊,並將決策權留給讀者。值得一提的是,有多種途徑可以瞭解這兩種語言各自的優缺點。然而在我看來,這兩種語言之間其實有很強的關聯。
Stack Overflow趨勢對比
上圖顯示了自從2008年(Stack Overflow 成立)以來,這兩種語言隨著時間的推移而發生的變化。
R和Python在資料科學領域展開激烈競爭,我們來看看他們各自的平臺份額,並將2016與2017年進行比較:
接下來我們將從適用場景、資料處理能力、任務、安裝難度以及開放工具等方面詳細瞭解這兩種語言。
適用場景
R適用於資料分析任務需要獨立計算或單個伺服器的應用場景。Python作為一種粘合劑語言,在資料分析任務中需要與Web應用程式整合或者當一條統計程式碼需要插入到生產資料庫中時,使用Python更好。
任務
在進行探索性統計分析時,R勝出。它非常適合初學者,統計模型僅需幾行程式碼即可實現。Python作為一個完整而強大的程式語言,是部署用於生產使用的演算法的有力工具。
資料處理能力
有了大量針對專業程式設計師以及非專業程式設計師的軟體包和庫的支援,不管是執行統計測試還是建立機器學習模型,R語言都得心應手。
Python最初在資料分析方面不是特別擅長,但隨著NumPy、Pandas以及其他擴充套件庫的推出,它已經逐漸在資料分析領域獲得了廣泛的應用。
開發環境
對於R語言,需要使用R Studio。對於Python,有很多Python IDE可供選擇,其中Spyder和IPython Notebook是最受歡迎的。
熱門軟體包和庫
下面羅列了R和Python推出的針對專業以及非專業程式設計師的最熱門的軟體包和庫。
R:針對專業程式設計師的熱門軟體包
- 用於資料操作的 dplyr、plyr和 data table
- 用於字串操作的 stringr
- 定期和不定期時間序列 zoo
- 資料視覺化工具 ggvis、lattice
- 用於機器學習的 caret
R:針對非專業程式設計師的熱門軟體包
- Rattle
- R Commander
- Deducer
這些完整的GUI包可以實現強大的資料統計和建模功能。
Python:針對專業程式設計師的熱門庫
- 用於資料分析的 pandas
- 用於科學計算的 SciPy 和 NumPy
- 用於機器學習的 scikit-learn
- 圖表庫 matplotlib
- statsmodels 用來探索資料,估算統計模型,並執行統計測試和單元測試
Python:針對非專業程式設計師的熱門庫
- Orange Canvas 3.0是遵循GPL協議的開源軟體包。它使用一些常用的Python開源庫進行科學計算,包括numpy、scipy和scikit-learn。
R 和 Python 詳細對比
R 語言 | Python 語言 | |
---|---|---|
創造者 | Ross Ihaka 和 Robert Gentleman | Guido van Rossum |
釋出時間 | 1995年 | 1991年 |
必知道 | R 是 S 語言(貝爾實驗室)的一種實現。 R 的設計和演進由 R 核心組和 R 基金會處理。R 的軟體環境由 C、Fortran 和 R 編寫. | Python 受到 C、Modula-3 和 ABC 的啟發。Python 名字源於“Monty Python’s Flying Circus”喜劇系列。Python 軟體基金會(PSF)負責 Python 的推進。 |
目的 | R 專注於使用者友好的資料分析、統計和圖形模型。 | Python 強調生產力和程式碼可讀性。 |
可用性 | 幾行程式碼即可實現統計模型。R 樣式表不是任何人都都有使用。同一功能可以用多種方式編寫實現。 | 漂亮的語法使得 Python 易於編碼和除錯。程式碼縮排可能會影響程式含義。同一功能只能用一種方式實現。 |
學習難度 | R 在初學時有一個陡峭的學習曲線。但是,一旦掌握基礎知識,就可以輕鬆學習複雜的東西。對於經驗豐富的程式設計師來說,R 並不難。 | Python 的可讀性和簡單性使其學習曲線相對較低和平緩。Python 被認為是最適合初學者的程式語言。 |
正如本文開頭提到的,R和Python之間有很強的關聯,並且這兩種語言日益普及。很難說哪一種更好,它們兩者的整合在資料科學界激起了許多積極和協作的波瀾。
總結
事實上,日常使用者和資料科學家可以同時利用這兩者語言,因為R使用者可以在R中通過 rPython包來執行R中的Python程式碼,而Python使用者可以通過RPy2庫在Python環境中執行R程式碼。
原文:R vs. Python
作者:Sunil Kappal
譯者:安翔