資料處理的 9 大程式語言

古月水語發表於2016-05-11

有關大資料的話題一直很火熱。伴隨著資訊的爆炸式增長,大資料滲透到了各行各業,廣泛應用於公司中,同時也使得傳統的軟體比如 Excel 看起來很笨拙。資料分析不再只是書呆子的事,同時其對高複雜性分析、實時處理的需求也比以往更加龐大。

那麼篩選海量資料集最優的工具是什麼呢?我們諮詢了一些資料黑客關於他們在資料分析的核心工作中最喜歡的程式語言和工具包。

R 語言

這份名單如果不以 R 開頭,那就是徹頭徹尾的疏忽。自 1997 年起,作為一門免費的,可替代 Matlab 或 SAS 等昂貴統計軟體的語言,R 被拋棄。

但是在過去的幾年中,它卻成了資料科學的寵兒—甚至成了統計學家、 華爾街交易員、生物學家和矽谷開發者必不可少的工具。 隨著其商業價值的不斷增長和傳播,諸如谷歌、Facebook、 美國銀行和紐約時代週刊都在使用。

R 簡單易用。通過 R ,短短几行程式碼就可以篩選複雜的資料集,通過成熟的模型函式處理資料,製作精美的圖表進行資料視覺化。簡直就是 Excel 的加強靈活版。

R 最大的價值就是圍繞其開發的活躍的生態圈: R 社群在持續不斷地向現存豐富的函式集增添新的包和特性。據估計 R 的使用者已經超過 200 萬人,最近的一項調查也顯示 R目前是資料科學領域最受歡迎的語言,大約 61% 的受訪者使用 R(第二名是 Python, 佔比39%)。

在華爾街,R 的使用比例也在不斷增長。美國銀行副總裁Niall O’Connor 說:“以往,分析員通常是熬夜研究 Excel 檔案,但是現在 R 正被逐漸地應用於金融建模,尤其是作為視覺化工具。R 促使了表格化分析的出局。”

作為一門資料建模語言, R 正在走向成熟,儘管在公司需要大規模產品的時候 R 能力有限,也有些人說它已經被其他語言替代了。

Metamarkets 公司的 CEO Michael Driscoll 說:“ R 擅長的是勾畫,而不是搭建,在 Google 的 page rank 演算法和 Facebook 的好友推薦演算法實現的核心中是不會有 R 的。工程師會用 R 進行原型設計,再用 Java 或者 Python將其實現。”

Paul Butler 在 2010 年用 R 構建了一個著名的 Facebook 世界地圖,證明了 R 在資料視覺化上的強大能力。然而他並不經常使用 R。

Butler 說:“由於在處理較大資料集時緩慢且笨拙,R 在行業中已經有些淪為明日黃花了 ”

那麼使用什麼作為它的替代呢?看下去。

Python

如果 R 是個有點神經質的可愛的極客,那麼 Python 就是它容易相處的歡快的表弟。融合了 R 快速成熟的資料探勘能力以及更實際的產品構建能力, Python 正迅速地獲得主流的呼聲。 Python 更直觀,且比 R 更易學,近幾年其整體的生態系統發展也成長得很快,使其在統計分析上的能力超越了之前的 R 語言。

Butler 說:“Python 是行業人員正在轉換髮展的方向。過去兩年裡,很明視訊記憶體在由 R 向 Python 轉化的趨勢”

在資料處理中,通常存在規模和技巧的權衡,Python 作為一個折中出現了。 IPython notebook 和NumPy 可以用於輕量工作的處理, 而 Python 則是中級規模資料處理的有力工具。豐富的資料交流社群也是 Python 的優勢,它提供了大量的Python 工具包和特性。

美國銀行利用 Python 開發新產品以及基礎設施介面,同時也用於處理金融資料。O’Donnell 說:“Python 用途寬廣且靈活,所以人們蜂擁而至”。

然而, Driscoll 也提到它並不是高效能的語言,偶爾才會用於裝配驅動大規模的核心基礎設施。

JULIA

最主流的資料科學處理語言包括 R、 Python、 Java、 Matlab和 SAS。但是這些語言仍然存在一些不足之處,而Julia 正是待以觀察的新人。

對大規模商用來說, Julia 還是太晦澀了。但在談到其取代 R 和 Python 領先地位的潛力的時候,資料極客們都會變得很激動。 Julia 是一門高階的,非常快的函式式語言。速度上比 R 快, 可能比 Python 的擴充套件性更高,且相對易學。

Butler 說:“Julia 正在快速上升。最終將可以用 Julia 完成任何 R 和 Python 可以完成的事”。

如今的問題是 Julia 太“年輕”了。 其資料交流社群仍處在早期發展階段,在沒有足夠的包和工具之前是不足以與 R 和 Python 競爭的。

Driscoll 說:“Julia 很年輕,但正在積攢力量而且未來很可觀”。

JAVA

在矽谷最大的科技公司裡,Java 和基於 Java 的框架構成了其底層的技術骨架。Driscoll 說:“如果深入觀察Twitter,Linkedin 或者 Facebook,你會發現 Java 是他們公司資料引擎架構的基礎語言”。

Java 並沒有 R 和 Python 那樣的資料視覺化的能力, 同時也不是最好的用於統計模型的語言。但是如果需要進行原型的基礎開發和構建大規模系統, Java 往往是最好的選擇。

HADOOP 和 HIVE

為了滿足資料處理的巨大需求,基於 Java 的工具群湧而現。 作為基於 Java 的框架,Hadoop 在批處理領域成為熱點。Hadoop 比其他處理工具速度要慢,但是它非常精確且被廣泛的應用於後臺分析,它很好的融合了 Hive, 一個執行在 Hadoop 上的基於查詢的框架。

SCALA

Scala 是另一個基於 Java的語言,和 Java 很相似,它正在逐漸成長為大規模機器學習或高階演算法的工具。它是函式式語言,也能夠構建健壯的系統。

Driscoll 說:“Java 就像是直接用鋼筋進行搭建, Scala 則像是在處理黏土原材料,可以將其放進窖中燒製成鋼筋”。

KAFKA 和 STORM

當需要快速、實時分析時怎麼辦?Kafka 可以幫助你。它已經發展了大概五年時間,但最近才成為一個流處理的流行框架。

Kafka 誕生於 Linkedin 公司的內部專案,是一個快速查詢系統。至於 Kafka 的缺點呢? 它太快了,實時的操作也導致了自身的錯誤,且偶爾還會遺失資訊。

Driscoll 說:“在精度和速度之間總需要做權衡,所以矽谷所有的大公司一般都雙管齊下: 用 kafka 和 Storm 進行實時處理,用 Hadoop 做批處理系統,雖然會慢一點但卻十分精確”。

Storm 是另一個用 Scala 寫的框架,且它在矽谷以擅長流處理而受到極大的關注。毫無疑問, Twitter, 一個對快速訊息處理有著巨大興趣的公司會收購了 Storm。

榮幸的提到:

MATLAB

MATLAB 已經存在很長時間了,儘管價格昂貴,但它仍在某些特定領域被廣泛使用: 機器學習研究、訊號處理、影象識別等領域。

OCTAVE

Octave 與 Matlab 非常相似,只不過它是免費的。然而除了訊號處理的學術圈之外很少見到使用。

GO

GO 是另外一個獲得關注的新手。它由 Google 開發,與 C 有一定淵源,且在構建穩定系統方面與 Java 和 Python 展開了競爭。

打賞支援我翻譯更多好文章,謝謝!

打賞譯者

打賞支援我翻譯更多好文章,謝謝!

任選一種支付方式

資料處理的 9 大程式語言 資料處理的 9 大程式語言

相關文章