汉中舜倭家庭服务有限公司

分享到:

利用Python進(jìn)行數(shù)據(jù)分析

日期:2016-11-08 21:17:00     閱讀:441     文章來源:源美網(wǎng)絡(luò)     標(biāo)簽:深圳網(wǎng)站建設(shè),深圳網(wǎng)頁設(shè)計,深圳網(wǎng)站制作

許許多多的人(包括我自己)都很容易愛上Python這門語言。自從1991年誕生以來,Python現(xiàn)在已經(jīng)成為最受歡迎的動態(tài)編程語言之一,其他還有Perl、Ruby等。由于擁有大量的Web框架(比如Rails(Ruby)和Django(Python)),最近幾年非常流行使用Python和Ruby進(jìn)行網(wǎng)站建設(shè)工作。這些語言常被稱作腳本(scripting)語言,因為它們可以用于編寫簡短而粗糙的小程序(也就是腳本)。我個人并不喜歡“腳本語言”這個術(shù)語,因為它好像在說這些語言無法用于構(gòu)建嚴(yán)謹(jǐn)?shù)能浖?。在眾多解釋型語言中,Python最大的特點是擁有一個巨大而活躍的科學(xué)計算(scientific comp...

在數(shù)據(jù)分析和交互、探索性計算以及數(shù)據(jù)可視化等方面,Python將不可避免地接近于其他開源和商業(yè)的領(lǐng)域特定編程語言/工具,如R、MATLAB、SAS、StataR、MATLAB、SAS、Stata等。近年來,由于Python有不斷改良的庫(主要是pandas),使其成為數(shù)據(jù)處理任務(wù)的一大替代方案。結(jié)合其在通用編程方面的強(qiáng)大實力,我們完全可以只使用Python這一種語言去構(gòu)建以數(shù)據(jù)為中心的應(yīng)用程序。


把Python當(dāng)做粘合劑

作為一個科學(xué)計算平臺,Python的成功部分源于其能夠輕松地集成C、C++以及Fortran代碼。大部分現(xiàn)代計算環(huán)境都利用了一些Fortran和C庫來實現(xiàn)線性代數(shù)、優(yōu)選、積分、快速傅里葉變換以及其他諸如此類的算法。許多企業(yè)和國家實驗室也利用Python來“粘合”那些已經(jīng)用了30多年的遺留軟件系統(tǒng)。

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

最近這幾年,Cython項目(http://cython.org)已經(jīng)成為Python領(lǐng)域中創(chuàng)建編譯型擴(kuò)展以及對接C/C++代碼的一大途徑。


解決“兩種語言”問題

很多組織通常都會用一種類似于領(lǐng)域特定的計算語言(如MATLAB和R)對新的想法進(jìn)行研究、原型構(gòu)建和測試,然后再將這些想法移植到某個更大的生產(chǎn)系統(tǒng)中去(可能是用Java、C#或C++編寫的)。人們逐漸意識到,Python不僅適用于研究和原型構(gòu)建,同時也適用于構(gòu)建生產(chǎn)系統(tǒng)。我相信越來越多的企業(yè)也會這樣看,因為研究人員和工程技術(shù)人員使用同一種編程工具將會給企業(yè)帶來非常顯著的組織效益。


為什么不選Python

雖然Python非常適合構(gòu)建計算密集型科學(xué)應(yīng)用程序以及幾乎各種各樣的通用系統(tǒng),但它對于不少應(yīng)用場景仍然力有不逮。

由于Python是一種解釋型編程語言,因此大部分Python代碼都要比用編譯型語言(比如Java和C++)編寫的代碼運行慢得多。由于程序員的時間通常都比CPU時間值錢,因此許多人也愿意在這里做一些權(quán)衡。但是,在那些要求延遲非常小的應(yīng)用程序中(例如高頻交易系統(tǒng)),為了盡最大可能地優(yōu)化性能,耗費時間使用諸如C++這樣更低級、更低生產(chǎn)率的語言進(jìn)行編程也是值得的。

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

這并不是說Python不能執(zhí)行真正的多線程并行代碼,只不過這些代碼不能在單個Python進(jìn)程中執(zhí)行而已。比如說,Cython項目可以集成OpenMP(一個用于并行計算的C框架)以實現(xiàn)并行處理循環(huán)進(jìn)而大幅度提高數(shù)值算法的速度。



文章引用:http://www.xhjcyz.com/new/158.html

本站文章為深圳網(wǎng)站建設(shè)·源美網(wǎng)絡(luò)原創(chuàng)策劃,如有版權(quán)糾紛或者違規(guī)問題,請聯(lián)系我們刪除,謝謝!

上一篇: 分布式存儲概念

下一篇: 做競價推廣是否有效果,關(guān)鍵還得看創(chuàng)意,很重要!

返回列表
最新案例
OUR ADVANTAGE WORKS

售后保障

承諾任何問題1小時內(nèi)解決

數(shù)據(jù)備份

更安全、更高效、更穩(wěn)定

價格公道精準(zhǔn)

項目經(jīng)理精準(zhǔn)報價不弄虛作假

合作無風(fēng)險

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