當前位置:股票大全官網 - 基金投資 - 為什麽我說Python是大數據的全棧開發語言?如何成為壹名數據分析師?

為什麽我說Python是大數據的全棧開發語言?如何成為壹名數據分析師?

就像只要懂JavaScript就能寫出完整的Web應用壹樣,只要懂Python就能實現完整的大數據處理平臺。

雲基礎設施

如今,我們不支持雲平臺、海量數據和動態擴展。我們根本不敢說自己在做大數據,最多敢跟人說自己在做商業智能(BI)。

雲平臺分為私有雲與公有雲。如火如荼的私有雲平臺OpenStack。

,Python寫的。曾經的追趕者CloudStack在剛推出的時候強調自己是Java寫的,比Python有優勢。結果,扔石頭砸腳,2015

當初CloudStack的創始人Citrix宣布加入OpenStack基金會,CloudStack就要死了。

如果不想自建私有雲,可以使用公有雲,無論是AWS、GCE、Azure、阿裏雲還是青雲,都提供Python SDK,其中GCE只提供Python和JavaScript SDK,青雲只提供Python SDK。可見各種雲平臺對Python的重視。

說到基礎設施建設,不得不提Hadoop。如今,Hadoop已經不再是大數據處理的首選,因為它的MapReduce數據處理速度不夠快,但是

Hadoop的兩個組件HDFS和YARN變得越來越流行。Hadoop的開發語言是Java,沒有官方的Python支持,但是有很多第壹。

三方庫封裝了Hadoop的API接口(pydoop,hadoopy等。).

Hadoop MapReduce的替代者是Spark,號稱快100倍。它的開發語言是Scala,但是提供了Scala,Java,Python的開發接口。討好那麽多用Python的數據科學家,又不支持Python,真的沒什麽意義。HDFS的替代品,比如GlusterFS和Ceph,直接提供了Python支持。作為Yarn的替代方案,Mesos是用C++實現的,除了C++之外,c++還提供了對Java和Python的支持包。

DevOps

DevOps有個中文名,叫開發自運維。在互聯網時代,只有能夠快速測試新想法,並在第壹時間安全可靠地交付商業價值,才能保持競爭力。DevOps倡導的自動化構建/測試/部署、系統度量等技術實踐在互聯網時代必不可少。

自動構造易於應用。如果是Python應用,有setuptools,pip,virtualenv,tox,

有了flake8等工具的存在,自動構建就非常簡單了。此外,因為幾乎所有的Linux系統都有內置的Python解釋器,所以Python中的自動化是不必要的。

安裝什麽軟件。

在自動化測試方面,基於Python的機器人框架應用了企業級最喜歡的自動化測試框架,與語言無關。黃瓜也有很多支持者,Python對應的生菜也可以做壹模壹樣的事情。在自動化性能測試中,Locust也引起了越來越多的關註。

自動化配置管理工具,如Chef和Puppet,是由Ruby開發的,並且仍然保持著強勁的勢頭。但是新壹代的Ansible和salt stack——都是Python開發的——比前兩個更加輕量級,受到越來越多開發者的歡迎,這已經開始給前輩們很大的壓力了。

在系統監測和測量方面,傳統的Nagios逐漸衰落,Sensu等新貴受到好評,雲服務形式的New Relic已經成為創業公司的標配。這些都不是通過Python直接實現的,但是Python訪問這些工具並不難。

除了這些工具之外,基於Python提供完整DevOps功能的PaaS平臺,如Cloudify、Deis等,雖然沒有成氣候,但也受到了很多關註。

網絡爬蟲

大數據從何而來?除了部分企業有能力自己產生大量數據外,大部分時候還是要靠爬蟲抓取互聯網數據進行分析。

網絡爬蟲是Python的傳統強勢領域。最流行的爬蟲框架Scrapy,HTTP toolkit urlib2,HTML解析工具beautifulsoup,XML解析器lxml等。都是可以獨立的類庫。

然而,網絡爬蟲不僅僅是打開網頁和解析HTML。壹個高效的爬蟲應該能夠支持大量靈活的並發操作,往往應該能夠同時爬行數千甚至上萬個網頁。傳統的

線程池的方法浪費了很多資源,上千個線程之後,系統資源基本都浪費在線程調度上了。Python可以很好的支持協程操作,所以開發了很多並發庫,比如Gevent,Eventlet,分布式任務框架比如Celery。被認為比AMQP更高效的ZeroMQ也是第壹個提供Python版本的。在高並發的支持下,網絡爬蟲才能真正達到大數據的規模。

抓取的數據需要分詞,Python在這方面並不遜色。著名的專門做中文分詞的自然語言處理包NLTK和Jieba都是分詞的利器。

數據處理

萬事俱備,只欠東風。這個東風就是數據處理算法。從統計理論,到數據挖掘、機器學習,再到近年來提出的深度學習理論,數據科學正處於壹個百花齊放的時代。數據科學家用什麽來編程?

如果是在理論研究領域,R語言可能是最受數據科學家歡迎的,但是R語言的問題也很明顯,因為統計學家創造了R語言,所以它的語法略顯怪異。和

R語言要實現大規模分布式系統還需要很長時間。所以很多公司用R語言做原型測試,算法確定後翻譯成工程語言。

Python也是數據科學家最喜歡的語言之壹。與R語言不同的是,Python本身是壹門工程語言,數據科學家用Python實現的算法可以是直的。

大數據創業公司用在產品上對節約成本很有幫助。官方是因為數據科學家對Python和R的喜愛,Spark為了討好數據科學家,對這兩種語言感興趣。

提供了很好的支持。

Python有很多與數據處理相關的類庫。高性能科學計算類庫NumPy和SciPy為其他高級算法奠定了非常好的基礎。matploglib制造

Python畫圖變得和Matlab壹樣簡單。Scikit-learn和Milk實現了很多機器學習算法,基於這兩個庫的Pylearn2是深度學習領域的重要成員。Theano利用GPU加速實現高性能數學符號計算和多維矩陣計算。當然還有熊貓,壹個已經在工程領域廣泛應用的大數據處理類庫。其數據框架的設計借鑒了R語言,後來啟發了Spark項目實現了類似的機制。

對了,還有iPython,它太有用了,我差點忘了把它作為標準庫來介紹。IPython是壹個交互式的Python運行環境,可以實時看到每壹段Python代碼的結果。默認情況下,iPython在命令行上運行,您可以執行ipython notebook在網頁中運行。matplotlib繪制的圖形可以直接嵌入iPython筆記本。

IPython筆記本文件可以共享給他人,讓別人在自己的環境下重現妳的作品;如果對方沒有運行環境,也可以直接轉換成HTML或者PDF。

為什麽是Python?

正是因為應用開發工程師、運維工程師、數據科學家都喜歡Python,Python才成為大數據系統的全棧開發語言。

對於開發工程師來說,Python的優雅和簡潔無疑是最大的吸引力。在Python的交互環境中,執行import this。

讀了Python的禪,妳就明白Python為什麽這麽有吸引力了。Python社區壹直都是非常動態的,NodeJS社區軟件包的爆炸就不是了。

同時,Python軟件包的增長率壹直比較穩定,軟件包的質量也比較高。有很多人批評Python要求空間,但正是因為這個要求,

這使得Python在做大型項目時比其他語言更有優勢。OpenStack項目總是超過200萬行代碼,證明了這壹點。

對於運維工程師來說,Python最大的優勢就是幾乎所有的Linux發行版都內置了Python解釋器。雖然Shell功能強大,但畢竟語法不夠優雅,寫更復雜的任務會很痛苦。用Python代替Shell做壹些復雜的工作,對運維人員來說是壹種解放。

對於數據科學家來說,Python簡單而強大。與C/C++相比,不需要做大量的底層工作就可以快速驗證模型。與Java相比,Python語法簡單。

幹凈利落,表現力強,同樣的作業只需要1/3代碼;與Matlab和Octave相比,Python具有更高的工程成熟度。不止壹個編程大牛表示過Python。

是最適合在大學裏作為計算機科學編程課程的語言——Python被用在——麻省理工學院的計算機入門課程——因為Python可以讓人學到編程最重要的東西——

如何解決問題。