国模叶桐尿喷337p人体,国产乱xxⅹxx国语对白,国产精品人妻无码久久久郑州,国产一区二区内射最近更新,国产一区二区三区不卡在线看

首頁 自媒自媒體大數(shù)據(jù)文摘正文

Python或成為未來最重要技能

如果讓你選擇一種語言,你覺得Python和中文,哪個對于未來更重要?

最近,一直以高素質(zhì)實習(xí)生項目聞名的高盛集團(tuán)發(fā)布了一份《2017高盛調(diào)查報告》,針對全球2500名在高盛的夏季實習(xí)生調(diào)查, 當(dāng)問到你認(rèn)為“哪個語言在未來會更重要”時,在被調(diào)查的全球2500名80、90后優(yōu)秀年輕人中,72%選了Python。

Python所代表的數(shù)據(jù)科學(xué)分析能力和編程能力正成為年輕人乃至整個世界最看好的熱門或者說必備技能。而除了Python,數(shù)據(jù)科學(xué)領(lǐng)域還有大把語言可以選擇,如何基于自己的需要選擇一門最適合自己的編程語言開始學(xué)習(xí)呢?

本篇文章將詳細(xì)對比解析數(shù)據(jù)科學(xué)領(lǐng)域最熱門的幾大“網(wǎng)紅”編程語言:R,Python,SQL,Java, Scala,Matlab,JavaScript,Ruby,并從優(yōu)缺點、適用領(lǐng)域幾個方向讓你迅速了解自己最需要哪一款。

數(shù)據(jù)科學(xué)結(jié)合了高大上的統(tǒng)計、數(shù)量分析理論與實打?qū)嵉木幊棠芰?,是一個讓人想想就有點小激動的工作領(lǐng)域。面對眾多編程語言,胸懷大志的數(shù)據(jù)科學(xué)家們在術(shù)業(yè)有專攻之前難免會有亂花漸欲迷人眼之感。

盡管不同選擇之間沒有高低對錯,但是有幾點是必須要考慮清楚的。你在數(shù)據(jù)科學(xué)家這條路上能走多遠(yuǎn)取決于很多因素,具體包括:

深度

在高級數(shù)據(jù)科學(xué)的世界中,老調(diào)重彈是沒有前途的。選定語言后,努力把各種包和模型都吃透。決定你掌握程度的首要因素是你能接觸到哪些特定領(lǐng)域的包。

頂級數(shù)據(jù)科學(xué)家必須既是全面編程小能手,也是鼓搗數(shù)字神隊友。數(shù)據(jù)科學(xué)日常工作的很大一部分都圍繞著獲取、加工原始數(shù)據(jù)或“數(shù)據(jù)清理”,而那些牛逼閃閃的各種機器學(xué)習(xí)包在這里都毫無用武之地。

數(shù)量

商用數(shù)據(jù)科學(xué)的步伐通常是快到飛起,因此出活兒快的好處簡直數(shù)不清。這也使得技術(shù)部門能夠悄悄地爭取一席之地,而只有靠譜的做法才能讓把工時降到最低。

質(zhì)量

代碼效果最大化有時具有舉足輕重的意義,尤其是處理大批量關(guān)鍵數(shù)據(jù)的時候。編譯語言在速度上往往遠(yuǎn)超解釋語言;無獨有偶,靜態(tài)類型語言的故障率也遠(yuǎn)低于動態(tài)類型語言。顯而易見,質(zhì)的提升是以量的減少為代價的。

從某種意義上講,我們可以畫出這樣一對軸線(廣度-深度;數(shù)量-質(zhì)量)。下面列出的每種語言都可以在上述范圍內(nèi)找到自己的位置。

心里有譜之后,我們一起來看看這些數(shù)據(jù)科學(xué)語言中的“網(wǎng)紅”。下面的內(nèi)容僅是本人及朋友、同事在研究和個人使用中總結(jié)出的數(shù)家之言,絕不是什么標(biāo)準(zhǔn)答案。排序基本上是按照“網(wǎng)紅”程度來的,嘿喂狗~

1.R語言

簡介

R語言以老前輩S語言直系后裔的身份,于1995年閃亮登場,此后一路高歌猛進(jìn),從成功走向成功。該項目目前采用的語言包括C、Fortran和R,得到了統(tǒng)計計算R聯(lián)盟(R Foundation for Statistical Computing)的支持。

證書

免費噠!

優(yōu)點

1、開源數(shù)據(jù)包質(zhì)量過硬、領(lǐng)域明確、范圍廣泛。幾乎所有你能想到的數(shù)量、統(tǒng)計應(yīng)用都能找到相應(yīng)的R包,比如神經(jīng)網(wǎng)絡(luò)、非線性回歸、系統(tǒng)進(jìn)化、進(jìn)階繪圖等。

2、基礎(chǔ)安裝內(nèi)置的統(tǒng)計功能和方法非常全面。此外,R語言尤其適合處理矩陣代數(shù)。

3、核心優(yōu)勢之一就是利用ggplot2等各種R語言庫能夠?qū)崿F(xiàn)數(shù)據(jù)視覺化。

缺點

1、質(zhì)量。R語言比較慢,這是板上釘釘?shù)摹?/p>

2、領(lǐng)域特定。R語言在統(tǒng)計和數(shù)據(jù)科學(xué)領(lǐng)域如魚得水,但是在通用編程上就有些力不從心了。

3、不走尋常路。R語言的一些“小脾氣”可能會讓擅長其他語言的程序猿陰溝里翻船。舉個栗子,采用多賦值運算從1開始索引,非傳統(tǒng)數(shù)據(jù)結(jié)構(gòu)。

小結(jié):本職崗位的尖兵

R語言功能強大,在眾多統(tǒng)計和數(shù)據(jù)可視化應(yīng)用中表現(xiàn)出眾;開源更是帶來了大批活躍的貢獻(xiàn)者。最近一個時期R語言的走紅彰顯了它在“本職工作”上的優(yōu)異表現(xiàn)。

2.Python語言

簡介

1991年,經(jīng)Guido van Rossum(吉多·范羅蘇姆)推出后,Python就成為了通用語言中的大熱門,在數(shù)據(jù)科學(xué)社區(qū)中得到了廣泛應(yīng)用。目前使用的主流版本是3.6和2.7。

證書

免費噠!

優(yōu)點

1、極受歡迎的主流通用編程語言,模型種類多、適用范圍廣,有眾多社區(qū)支持。

2、許多在線服務(wù)都提供Python API。

3、上手簡單。低門檻使其成為菜鳥程序猿的理想“初戀”。

4、Pandas、scikit-learn和Tensorflow等包使Python在高級機器學(xué)習(xí)應(yīng)用中也有很強的存在感。

缺點

1、型別安全:作為一個動態(tài)類型語言,Python時時刻刻求關(guān)注。類型錯誤(比如向心心念念期待著Integer的方法傳遞了一個String)差不多是家常便飯了。

2、對于特定的統(tǒng)計、數(shù)據(jù)分析問題,R包“海納百川”式的涵蓋范圍使其在面對Python時有那么一丟丟優(yōu)勢;但是談到通用語言,Python總能給你更快、更安全的選擇。

小結(jié):哪里需要哪里搬的好手

Python是數(shù)據(jù)科學(xué)語言的上佳之選,對象絕不僅限于初學(xué)者。很多數(shù)據(jù)科學(xué)流程都圍繞著ETL(抽取-轉(zhuǎn)換-加載)展開,這與Python的通用性簡直是天作之合。諸如谷歌Tensorflow等庫更使得Python在機器學(xué)習(xí)領(lǐng)域大出風(fēng)頭。

3.SQL語言

簡介

結(jié)構(gòu)化查詢語言(SQL)是關(guān)系數(shù)據(jù)庫的定義者、管理者和查詢者。雖然自1974年面世后歷經(jīng)多次實現(xiàn),但核心原則從未改變。

證書

看情況-有些實現(xiàn)是免費的,有些受版權(quán)保護(hù)。

優(yōu)點

1、在關(guān)系數(shù)據(jù)庫的查詢、升級和操作上效率極高。

2、聲明語法的使用讓SQL通常都具有極強的可讀性,比如“SELECT name FROM users WHERE age > 18”的意義就十分明確清晰。

3、SQL應(yīng)用范圍廣泛,因此熟悉該語言還是很有用的。程序猿們利用諸如SQLAlchemy等模塊可以直接把SQL整合到其他語言中。

缺點

1、SQL的分析能力十分有限-除了求和、計數(shù)和求平均數(shù),你也沒啥能選的。

2、具有命令式語言背景的程序猿可能需要一段時間來掌握SQL的聲明語法。

3、SQL具有眾多實現(xiàn),比如PostgreSQL、SQLite和MariaDB等。這些實現(xiàn)的差異之大使得互操作性成為了一個頗為棘手的問題。

小結(jié):高效的經(jīng)典款

與其作為高級分析工具,SQL在數(shù)據(jù)處理上表現(xiàn)得更加得心應(yīng)手。然而,數(shù)據(jù)科學(xué)工作的大頭都依賴于ETL,SQL的長盛不衰和簡明高效恰恰證明這是一門值得現(xiàn)代數(shù)據(jù)科學(xué)家了解掌握的有用語言。

4.Java語言

簡介

Java是在Java虛擬機上運行的一門非常受歡迎的通用語言。這個抽象計算系統(tǒng)能夠?qū)崿F(xiàn)跨平臺的無縫移植。目前有甲骨文公司支持該語言。

證書

第八版-免費噠!舊版本受版權(quán)保護(hù)。

優(yōu)點

1、無處不在。很多現(xiàn)代系統(tǒng)和應(yīng)用都建立在Java后臺上。它能夠?qū)?shù)據(jù)科學(xué)的各種方法直接與現(xiàn)有的代碼庫整合;功能強大,你值得擁有。

2、強型別。需要確保型別安全時,Java單刀直入的風(fēng)格對于那些至關(guān)重要的大數(shù)據(jù)應(yīng)用而言簡直是無價之寶。

3、作為一種高質(zhì)量、通用型編譯語言,Java非常適合編寫高效的ETL產(chǎn)品代碼和計算強大度的機器學(xué)習(xí)算法。

缺點

1、Java冗長的代碼并不適合專門分析和更為細(xì)致的統(tǒng)計應(yīng)用。R和Python等動態(tài)類型語言的輸出顯然更勝一籌。

2、與R等領(lǐng)域明確的語言相比,Java并沒有太多適用于高級統(tǒng)計方法的的庫。

小結(jié):數(shù)據(jù)科學(xué)的有力競爭者

把Java作為數(shù)據(jù)科學(xué)首選語言能夠帶來不少益處。將數(shù)據(jù)科學(xué)產(chǎn)品代碼與現(xiàn)有代碼庫直接無縫整合的能力是眾多公司夢寐以求的;你會發(fā)現(xiàn),Java在此方面和型別安全上的優(yōu)異表現(xiàn)是貨真價實的加分項。然而,面對其它語言時,你也不得不面對沒有各類統(tǒng)計特定包可用的現(xiàn)狀。盡管如此,Java仍然值得擁有-尤其是你已經(jīng)掌握了R和/或Python的情況下。

5.Scala

簡介

由Martin Odersky開發(fā),并于2004年發(fā)布,Scala是一種在JVM上運行的語言。 它是一種多范式語言,融合了面向?qū)ο蠛秃瘮?shù)式編程。集群計算框架Apache Spark就是用Scala編寫的。

證書

免費!

優(yōu)點

1、Scala + Spark =高性能集群計算。 Scala是使用大容量數(shù)據(jù)集的人的理想語言選擇。

2、多范式:Scala兼容面向?qū)ο蠛秃瘮?shù)式編程,這使得Scala的程序員們兩種范例都可用。

3、Scala被編譯為Java字節(jié)碼并在JVM上運行。 這使得其具有了與 Java語言本身的互操作性,使Scala成為非常強大的通用語言,同時也非常適合數(shù)據(jù)科學(xué)。

缺點

1、對于初學(xué)者來說Scala并不是一個簡單的編程語言來起步和運行。 你最好的選擇是下載sbt并使用特定的Scala插件設(shè)置Eclipse或IntelliJ等IDE。

2、其語法和類型系統(tǒng)通常被認(rèn)為是比較復(fù)雜的。這為來自動態(tài)語言(如Python)的用戶提供了一個陡峭的學(xué)習(xí)曲線。

結(jié)論:完美,適合大數(shù)據(jù)

當(dāng)使用集群計算來處理大數(shù)據(jù)時,Scala + Spark是非常棒的解決方案。 如果你有Java和其他靜態(tài)類語言的經(jīng)驗,你也將會非常欣賞Scala的性能。然而,如果你的應(yīng)用程序無法用來處理一定量的數(shù)據(jù),這恰恰證明了Scala增加的復(fù)雜性,你可能會發(fā)現(xiàn)使用其他語言(如R或Python)的效率要高得多。

6.Julia

簡介

5年前發(fā)布的Julia在數(shù)值計算領(lǐng)域讓人印象深刻。由于幾家主要機構(gòu)(多為金融行業(yè))的早日采用,其形象得到了提升。

證書

免費!

優(yōu)點

1、Julia是一種JIT(“準(zhǔn)時”)的編譯語言,可以提供良好的性能。 它還提供像Python一樣簡單、 動態(tài)類型和腳本功能的解釋性編程語言。

2、Julia是專為數(shù)值分析而設(shè)計的。它也能夠進(jìn)行通用編程。

3、可讀性。 該語言的許多用戶將此視為其主要優(yōu)點。

缺點

1、成熟性。 作為一種新的語言,一些Julia的用戶在使用程序包時經(jīng)歷了不穩(wěn)定。但其核心語言本身據(jù)悉是足夠穩(wěn)定,可運用的。

2、程序包數(shù)量有限是語言處于新生階段和開發(fā)社群較小的另一個后果。不像建立很長時間的R和Python,Julia目前在軟件包上還沒有太多的選擇性。

結(jié)論:它是未來

Julia的主要問題目前并不能過分苛責(zé)。作為最近開發(fā)的語言,它不像Python和R這些競品那樣成熟和生產(chǎn)就緒。但是,如果你愿意耐心等待,那么在未來幾年里,我們有充分的理由去密切關(guān)注Julia的進(jìn)一步發(fā)展。

7.MATLAB

簡介

MATLAB是在學(xué)界和業(yè)界廣泛使用的一種老牌數(shù)值計算語言。 它是由MathWorks公司開發(fā)和許可的,MathWorks成立于1984年,主營該軟件的商業(yè)化。

證書

專有的 - 定價根據(jù)用途而有所不同。

優(yōu)點

1、專為數(shù)值計算而設(shè)計。MATLAB非常適合具有復(fù)雜數(shù)學(xué)要求的定量應(yīng)用,如信號處理,傅里葉變換,矩陣代數(shù)和圖像處理。

2、數(shù)據(jù)可視化。 MATLAB有一些很好的內(nèi)置繪圖功能。

3、MATLAB通常被作為諸如物理,工程和應(yīng)用數(shù)學(xué)等量化類專業(yè)的本科課程的一部分。 因此,它在這些領(lǐng)域得到了廣泛應(yīng)用。

缺點

1、專利許可。 根據(jù)用途(學(xué)術(shù),個人或企業(yè)),你可能需要支付昂貴的許可證費用。 有免費的備選方案如Octave。 這是你需要認(rèn)真考慮的問題。

2、MATLAB不是通用編程的明顯選擇。

結(jié)論:最適合數(shù)學(xué)需求高的應(yīng)用

MATLAB在整個業(yè)界和學(xué)界的許多定量和數(shù)值研究領(lǐng)域的廣泛應(yīng)用使其成為了數(shù)據(jù)科學(xué)的重要選擇。其明確的應(yīng)用場景是當(dāng)你的應(yīng)用程序或日常角色需要大量的高級數(shù)學(xué)功能時,的確,MATLAB是專為此而設(shè)計的。

8.其他編程語言

還有一些數(shù)據(jù)科學(xué)家可能會也可能不會感興趣的其他主流語言。本節(jié)提供了一個快速的概述...當(dāng)然有充足的論證空間!

C++

C ++并不是數(shù)據(jù)科學(xué)的常見選擇,盡管它具有運行速度快的性能和廣泛的主流流行度。其簡單的原因可能是生產(chǎn)力與性能的問題。

正如一個Quora用戶所說:

“如果你正在編寫代碼進(jìn)行一些可能只運行一次的專項分析,你是愿意花30分鐘的時間編寫一個將在10秒內(nèi)運行的程序,還是在10分鐘內(nèi)編寫一個將運行1分鐘的程序?”

這個小伙伴抓到了重點。然而,對于重要的生產(chǎn)級別性能而言,C ++將是實現(xiàn)在低級別機器學(xué)習(xí)算法優(yōu)化的絕佳選擇。

結(jié)論:不服務(wù)于日常工作,但如果性能表現(xiàn)是至關(guān)重要的...

JavaScript

隨著近年來Node.js的興起,JavaScript越來越成為重要的服務(wù)器端語言。然而,它在數(shù)據(jù)科學(xué)和機器學(xué)習(xí)領(lǐng)域的使用已十分有限(不過可查看brain.js和synaptic.js?。?。

它具有以下缺點:

1、入局太晚(Node.js只有8歲?。馕吨?..

很少有相關(guān)的數(shù)據(jù)科學(xué)庫和模塊可用。 這意味著沒有引起真正的主流興趣或動力。

2、性能方面,Node.js很快。 但JavaScript作為一種語言并不是沒有它的槽點。

Node’s的優(yōu)勢在于異步I / O,其被廣泛使用,且存在于可編譯為JavaScript的語言中。 因此,可以想象,數(shù)據(jù)科學(xué)的有用框架和實時ETL處理可以結(jié)合在一起。關(guān)鍵問題是這是否會提供些新的特別之處。

結(jié)論:JavaScript距成為重要的數(shù)據(jù)科學(xué)語言還有很長的路要走

Perl

Perl被稱為“編程語言的瑞士軍刀”,得名于其作為通用腳本語言的多功能性。 它與Python有很多共同之處,同樣是一種動態(tài)類型的腳本語言。但是,在數(shù)據(jù)科學(xué)領(lǐng)域,它還沒有像Python一樣的人氣。

這看起來有點難以置信,尤其是如果你知道它在定量領(lǐng)域如生物信息學(xué)中的應(yīng)用。 Perl在數(shù)據(jù)科學(xué)方面有幾個關(guān)鍵的缺點。它不是很突出,它的語法是不友好的。數(shù)據(jù)科學(xué)專用程序庫的開發(fā)并不像生物信息學(xué)那樣有大的進(jìn)展。在任何領(lǐng)域,勢頭都是關(guān)鍵。

結(jié)論:一個有用的通用腳本語言,但它并不能給你的數(shù)據(jù)科學(xué)簡歷帶來真正的優(yōu)勢

Ruby

Ruby是另一種通用的動態(tài)類型的解釋語言。然而,它并沒有在數(shù)據(jù)科學(xué)得到像Python一樣的應(yīng)用。

這似乎是令人驚訝的,但可能是Python在學(xué)術(shù)界的主導(dǎo)地位和正面反饋效應(yīng)的結(jié)果。 使用Python的人越多,開發(fā)的模塊和框架就越多,從而越來越多的人會轉(zhuǎn)而使用Python。SciRuby項目的存在是為了將如矩陣代數(shù)這樣的科學(xué)計算功能引入到Ruby中。但是目前來看,Python還是領(lǐng)先的。

結(jié)論: 對于數(shù)據(jù)科學(xué)來說目前還不是一個明顯的選擇,但對簡歷也沒什么壞處

總結(jié)

好了,現(xiàn)在你有了一個數(shù)據(jù)科學(xué)領(lǐng)域編程語言選擇的快速指南。然而,選擇最合適語言的關(guān)鍵是,你要了解你使用需求的一般性與特殊性,以及你個人偏愛的基于性能與生產(chǎn)力平衡的開發(fā)風(fēng)格。

我一般使用R,Python和SQL,因為我目前的角色主要側(cè)重于開發(fā)已有數(shù)據(jù)的流水線和ETL流程。這些語言可以平衡一般性和生產(chǎn)力來完成這項工作,并可以在需要時使用R的高級統(tǒng)計軟件包。

不過 – 也許你已經(jīng)有了Java的經(jīng)驗, 或者你可能想使用Scala來處理大數(shù)據(jù)。 或者,你熱衷于參與Julia項目。

也許你在大學(xué)學(xué)過MATLAB,也許你還想給SciRuby一個機會? 或者你有一個完全不同的建議! 如果是這樣,請在下面回復(fù) - 我期待著你的聲音!

作者:Peter Gleeson

編譯:白丁 吳雙 ether 魏子敏

???(原標(biāo)題:高盛最新調(diào)查:Python超過漢語成為未來最重要技能,你準(zhǔn)備學(xué)哪種編程語言?)

責(zé)任編輯:陳近梅

分享: