處理數據有哪幾種程式語言,主要有什麼區別?

有關大數據的話題一直很火熱。伴隨著信息的爆炸式增長,大數據滲透到了各行各業,廣泛應用於公司中,同時也使得傳統的軟件比如 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 是另外一個獲得關注的新手。它由 Google 開發,與 C 有一定淵源,且在構建穩定系統方面與 Java 和 Python 展開了競爭。

在不久的將來,多智時代一定會徹底走入我們的生活,有興趣入行未來前沿產業的朋友,可以收藏多智時代,及時獲取人工智能、大數據、雲計算和物聯網的前沿資訊和基礎知識,讓我們一起攜手,引領人工智能的未來!


分享到:


相關文章: