分(fēn)享到:

利用Python進行數據分(fēn)析

日(rì)期:2016-11-08 21:17:00     閱讀(dú):424     文章(zhāng)來(lái)源:源美網絡     标簽:深圳網站(zhàn)建設,深圳網頁設計(jì),深圳網站(zhàn)制作(zuò)

許許多多的人(rén)(包括我自(zì)己)都(dōu)很容易愛上Python這門(mén)語言。自(zì)從(cóng)1991年(nián)誕生(shēng)以來(lái),Python現在已經成爲最受歡迎的動态編程語言之一,其他(tā)還(hái)有Perl、Ruby等。由于擁有大(dà)量的Web框架(比如(rú)Rails(Ruby)和Django(Python)),最近幾年(nián)非常流行使用Python和Ruby進行網站(zhàn)建設工(gōng)作(zuò)。這些語言常被稱作(zuò)腳本(scripting)語言,因爲它們可(kě)以用于編寫簡短(duǎn)而粗糙的小程序(也就(jiù)是腳本)。我個人(rén)并不喜歡“腳本語言”這個術(shù)語,因爲它好像在說(shuō)這些語言無法用于構建嚴謹的軟件(jiàn)。在衆多解釋型語言中,Python最大(dà)的特點是擁有一個巨大(dà)而活躍的科(kē)學計(jì)算(scientific comp...

在數據分(fēn)析和交互、探索性計(jì)算以及數據可(kě)視化等方面,Python将不可(kě)避免地接近于其他(tā)開源和商業的領域特定編程語言/工(gōng)具,如(rú)R、MATLAB、SAS、StataR、MATLAB、SAS、Stata等。近年(nián)來(lái),由于Python有不斷改良的庫(主要是pandas),使其成爲數據處理(lǐ)任務的一大(dà)替代方案。結合其在通用編程方面的強大(dà)實力,我們完全可(kě)以隻使用Python這一種語言去(qù)構建以數據爲中心的應用程序。


把Python當做粘合劑

作(zuò)爲一個科(kē)學計(jì)算平台,Python的成功部分(fēn)源于其能夠輕松地集成C、C++以及Fortran代碼。大(dà)部分(fēn)現代計(jì)算環境都(dōu)利用了一些Fortran和C庫來(lái)實現線性代數、優選、積分(fēn)、快(kuài)速傅裡(lǐ)葉變換以及其他(tā)諸如(rú)此類的算法。許多企業和國(guó)家實驗室也利用Python來(lái)“粘合”那些已經用了30多年(nián)的遺留軟件(jiàn)系統。

大(dà)多數軟件(jiàn)都(dōu)是由兩部分(fēn)代碼組成的:少量需要占用大(dà)部分(fēn)執行時間的代碼,以及大(dà)量不經常執行的“粘合劑代碼”。粘合劑代碼的執行時間通常是微不足道的。開發人(rén)員(yuán)的精力幾乎都(dōu)是花在優化計(jì)算瓶頸上面的,有時更是直接轉用更低級的語言(比如(rú)C)。

最近這幾年(nián),Cython項目(http://cython.org)已經成爲Python領域中創建編譯型擴展以及對接C/C++代碼的一大(dà)途徑。


解決“兩種語言”問(wèn)題

很多組織通常都(dōu)會用一種類似于領域特定的計(jì)算語言(如(rú)MATLAB和R)對新的想法進行研究、原型構建和測試,然後再将這些想法移植到某個更大(dà)的生(shēng)産系統中去(qù)(可(kě)能是用Java、C#或C++編寫的)。人(rén)們逐漸意識到,Python不僅适用于研究和原型構建,同時也适用于構建生(shēng)産系統。我相(xiàng)信越來(lái)越多的企業也會這樣看(kàn),因爲研究人(rén)員(yuán)和工(gōng)程技術(shù)人(rén)員(yuán)使用同一種編程工(gōng)具将會給企業帶來(lái)非常顯著的組織效益。


爲什麽不選Python

雖然Python非常适合構建計(jì)算密集型科(kē)學應用程序以及幾乎各種各樣的通用系統,但(dàn)它對于不少應用場景仍然力有不逮。

由于Python是一種解釋型編程語言,因此大(dà)部分(fēn)Python代碼都(dōu)要比用編譯型語言(比如(rú)Java和C++)編寫的代碼運行慢(màn)得(de)多。由于程序員(yuán)的時間通常都(dōu)比CPU時間值錢,因此許多人(rén)也願意在這裡(lǐ)做一些權衡。但(dàn)是,在那些要求延遲非常小的應用程序中(例如(rú)高頻交易系統),爲了盡最大(dà)可(kě)能地優化性能,耗費時間使用諸如(rú)C++這樣更低級、更低生(shēng)産率的語言進行編程也是值得(de)的。

對于高并發、多線程的應用程序而言(尤其是擁有許多計(jì)算密集型線程的應用程序),Python并不是一種理(lǐ)想的編程語言。這是因爲Python有一個叫做全局解釋器鎖(Global Interpreter Lock,GIL)的東西,這是一種防止解釋器同時執行多條Python字節碼指令的機(jī)制。有關“爲什麽會存在GIL”的技術(shù)性原因超出了本書(shū)的範圍,但(dàn)是就(jiù)目前來(lái)看(kàn),GIL并不會在短(duǎn)時間内消失。雖然很多大(dà)數據處理(lǐ)應用程序爲了能在較短(duǎn)的時間内完成數據集的處理(lǐ)工(gōng)作(zuò)都(dōu)需要運行在計(jì)算機(jī)集群上,但(dàn)是仍然有一些情況需要用單進程多線程系統來(lái)解決。

這并不是說(shuō)Python不能執行真正的多線程并行代碼,隻不過這些代碼不能在單個Python進程中執行而已。比如(rú)說(shuō),Cython項目可(kě)以集成OpenMP(一個用于并行計(jì)算的C框架)以實現并行處理(lǐ)循環進而大(dà)幅度提高數值算法的速度。



文章(zhāng)引用:

本站(zhàn)文章(zhāng)爲深圳網站(zhàn)建設·源美網絡原創策劃,如(rú)有版權糾紛或者違規問(wèn)題,請(qǐng)聯系我們删除,謝謝!

上一篇: 分(fēn)布式存儲概念

下一篇: 做競價推廣是否有效果,關鍵還(hái)得(de)看(kàn)創意,很重要!

返回列表
最新案例
OUR ADVANTAGE WORKS

售後保障

承諾任何問(wèn)題1小時内解決

數據備份

更安全、更高效、更穩定

價格公道精準

項目經理(lǐ)精準報價不弄虛作(zuò)假

合作(zuò)無風(fēng)險

重合同講信譽,無效全額退款