自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用于數(shù)據(jù)科學(xué)的六種必備Python工具

譯文
開發(fā) 后端
本文向您依次介紹了SciPy、Numba、Cython、Dask、Vaex和Intel SDC,六種可被用于大數(shù)據(jù)分析、以及機(jī)器學(xué)習(xí)項(xiàng)目的必備Python工具。

[[413842]]

【51CTO.com快譯】如果您想使用甚至掌握數(shù)據(jù)分析技能的話,Python一定是您的最佳選擇。它不但容易被學(xué)習(xí),而且具有廣泛且活躍的社區(qū)支持。目前,大多數(shù)數(shù)據(jù)科學(xué)庫、以及機(jī)器學(xué)習(xí)框架,都能夠提供Python接口。

在過去的數(shù)月中,不少用于數(shù)據(jù)科學(xué)的Python項(xiàng)目,都相繼發(fā)布了針對主要功能的更新版本。它們有些是關(guān)乎實(shí)際數(shù)字運(yùn)算;有些則是讓開發(fā)者能夠更輕松、更快速地編寫出針對數(shù)據(jù)科學(xué)的任務(wù)代碼。下面,讓我們來討論其中最為典型的6種Python工具。

1.SciPy1.7

由于NumPy能夠?yàn)镻ython用戶提供快速而強(qiáng)大的數(shù)學(xué)庫,因此SciPy使用NumPy來為常見的、面向數(shù)學(xué)和數(shù)據(jù)科學(xué)的編程任務(wù)提供各種代碼庫。其中包括:線性代數(shù)、統(tǒng)計(jì)工程、以及信號處理等方面。

SciPy如何協(xié)助數(shù)據(jù)科學(xué)

作為便捷且被廣泛使用的數(shù)學(xué)和統(tǒng)計(jì)工具,SciPy長期以來停留在1.0版本上。當(dāng)然,該版本具有很強(qiáng)的跨版本向后兼容性。

根據(jù)其核心開發(fā)人員--Ralf Gommers的說法,SciPy項(xiàng)目的1.0版不但整合了項(xiàng)目的治理和管理方式,而且包含了一個與MacOS和Windows的不同的持續(xù)集成過程,以及對預(yù)構(gòu)建的Windows二進(jìn)制文件的適當(dāng)支持。這就意味著,Windows用戶可以直接使用SciPy,而無需考慮額外的環(huán)節(jié)。

自2017年發(fā)布1.0版本以來,該項(xiàng)目已經(jīng)交付了七個主要版本,它們持續(xù)在如下方面進(jìn)行改進(jìn)與優(yōu)化:

  • 放棄了對于Python 2.7的支持,跟進(jìn)了對應(yīng)的代碼庫。
  • 不斷改進(jìn)和更新SciPy的子模塊,使之具有更多的功能、更好的文檔、以及更多的新算法。例如,新的快速傅立葉變換模塊(fast Fourier transform module,)具有更好性能、以及更友好的界面。
  • 更好地支持LAPACK(Linear Algebra PACKage,線性代數(shù)包,是一個用于解決常見線性方程問題的Fortran包。請參見--http://performance.netlib.org/lapack/)中的各個函數(shù)。
  • 能夠更好地兼容替代Python運(yùn)行時的PyPy(包括了一個可用于更快地長期運(yùn)行代碼的JI編譯器,請參見--https://www.infoworld.com/article/3385127/what-is-pypy-faster-python-without-pain.html)。

從哪里下載SciPy

我們既可以從GitHub的鏈接處獲得源代碼,又可以從Python Package Index的鏈接處,下載SciPy的二進(jìn)制文件,然后在命令行中輸入“pip install sciPy”以完成安裝。

2.Numba 0.53.0

Numba允許通過LLVM(Low Level Virtual Machine,低級虛擬機(jī))編譯器框架,將Python函數(shù)或模塊編譯為匯編語言,以便隨時運(yùn)行Python程序。在此方面,Numba與Cython(不但可以被Python調(diào)用,而且能夠讓被加速的代碼更易于分發(fā)給第三方,下文會詳細(xì)討論)極其相似。當(dāng)然,Numba會更易于使用。

Numba如何協(xié)助數(shù)據(jù)科學(xué)

Numba幫助數(shù)據(jù)科學(xué)家的方式主要體現(xiàn)在,它加速了編寫Python的各項(xiàng)操作。也就是說,您可以使用純Python,對項(xiàng)目進(jìn)行原型設(shè)計(jì),然后使用Numba對其進(jìn)行注釋,以便快速地投入生產(chǎn)環(huán)境。

同時,Numba也可以快速地運(yùn)行在那些為機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)應(yīng)用所構(gòu)建的硬件上。Numba的早期版本曾可以支持編譯出CUDA(Compute Unified Device Architecture)加速代碼。不過其最新版本則采用了新的、更為高效的GPU代碼縮減算法。它不但能夠加快編譯速度,還支持Nvidia CUDA和AMD ROCm的API。

此外,Numba還可以通過優(yōu)化JIT編譯函數(shù),以實(shí)現(xiàn)跨CPU內(nèi)核的并行執(zhí)行。當(dāng)然,您的代碼需要添加一些額外的語法,才能正確地完成。

從哪里下載Numba

我們既可以從GitHub的鏈接處獲得源代碼,又可以在Python Package Index的鏈接處下載Numba,然后在命令行中輸入“pip install numba”以完成安裝。其預(yù)構(gòu)建的二進(jìn)制文件可以支持Windows、MacOS、以及通用的Linux。此外,它還被當(dāng)作了Anaconda Python發(fā)行版的一部分。用戶可以在命令行中輸入“conda install numba”以完成安裝。

3.Cython3.0(beta版)

Cython是將Python代碼轉(zhuǎn)換為可以更快地運(yùn)行、大數(shù)量級的C語言代碼。這種轉(zhuǎn)換對于重?cái)?shù)學(xué)量(math-heavy)的代碼、或是在各種緊密循環(huán)中運(yùn)行的代碼,都非常方便。值得一提的是,這兩種情況在為工程、科學(xué)、以及機(jī)器學(xué)習(xí)編寫的Python程序中,也是十分常見的。

Cython如何協(xié)助數(shù)據(jù)科學(xué)

從本質(zhì)上說,Cython代碼實(shí)際上是帶有一些額外語法的Python代碼。這些Python代碼不但可以被Cython編譯成C語言,而且能夠通過使用Cython的類型注釋,讓其性能得到了幾十倍、甚至幾百倍的改進(jìn)。

在Cython 3出現(xiàn)之前,Cython使用的是0.xx的版本編號方案。不過,Cython 3不再支持Python 2的語法了。盡管Cython 3目前仍處于測試階段,但是已有Cython的擁護(hù)者強(qiáng)烈建議人們使用該版本,去代替其早期的版本。同時,鑒于Cython的許多(盡管不是全部)函數(shù)都可以使用與Python完全兼容的語法,因此Cython 3強(qiáng)烈建議用戶更多地去使用“純Python”模式。

同時,Cython還支持與IPython和Jupyter notebooks的集成。由Cython編譯的代碼,可以通過內(nèi)聯(lián)注釋的方式,在Jupyter notebooks中被使用,就像使用Python代碼一樣。

此外,您還可以在啟用了配置文件引導(dǎo)優(yōu)化(profile-guided optimization)的情況下,為Jupyter編譯Cython模塊。使用該方式構(gòu)建的模塊,可以根據(jù)其生成的分析信息,進(jìn)行各種快速的編譯和優(yōu)化。值得注意的是,該方式僅能夠在與GCC編譯器共同使用時,被Cython所使用。而微軟的VC環(huán)境尚對此并不支持。

從哪里下載Cython

我們既可以從GitHub的鏈接處獲得源代碼,又可以在Python Package Index的鏈接處下載Cython,然后在命令行中輸入“pip install cython”以完成安裝。其二進(jìn)制文件可以支持包括32位和64位的Windows、通用的Linux、以及MacOS。值得注意的是,您的系統(tǒng)平臺上必須已安裝了C預(yù)言編譯器,方可使用Cython。

4.Dask 2021.07.0

近年來,我們的硬件處理能力雖然比以往任何時候都強(qiáng)大,可關(guān)鍵問題是,我們將如何通過橫跨多個CPU內(nèi)核、物理處理器、以及計(jì)算節(jié)點(diǎn)的方式,以最高效率完成數(shù)據(jù)科學(xué)的相關(guān)計(jì)算任務(wù)。

對此,Dask工具能夠接受一項(xiàng)Python作業(yè),并在多個系統(tǒng)之間有效地予以調(diào)度。由于那些被用于啟動Dask作業(yè)的語法、與在Python中用于執(zhí)行其他各項(xiàng)操作的語法幾乎相同,因此我們在使用Dask時,幾乎無需對現(xiàn)有的代碼進(jìn)行任何修改。

Dask如何協(xié)助數(shù)據(jù)科學(xué)

Dask能夠?yàn)镻ython中許多流行的機(jī)器學(xué)習(xí)、以及科學(xué)計(jì)算庫,提供了各種自有版本的接口。例如,它的DataFrame對象能夠與Pandas庫中的相同,它的Array對象則可以與NumPy的相一致。可見,您只需針對Dask修改幾行代碼,即可來快速兼容現(xiàn)有的代碼。

同時,Dask不但允許并行地寫入純Python的作業(yè),而且其Bag等對象類型,也能夠優(yōu)化諸如:map、filter、以及groupby等通用Python對象集合的操作。

從哪里下載Dask

我們既可以從GitHub的鏈接處獲得源代碼,又可以在Python Package Index的鏈接處下載Cython,然后在命令行中輸入“pip install dask”以完成安裝。此外,作為Anaconda Python發(fā)行版的一部分,用戶還可以在其命令行中輸入“conda install dask”,以完成安裝。

5.Vaex 4.30

根據(jù)NumPy或Pandas的數(shù)據(jù)幀格式,Vaex允許用戶對大型表格的數(shù)據(jù)集(例如有數(shù)十億行的數(shù)據(jù)量),通過執(zhí)行l(wèi)azy操作,以零數(shù)據(jù)復(fù)制、最少的內(nèi)存使用量、以及內(nèi)置的可視化工具等方式,高效地完成各項(xiàng)操作。

Vaex如何協(xié)助數(shù)據(jù)科學(xué)

在Python中,處理大型數(shù)據(jù)集,特別是只涉及數(shù)據(jù)的某個子集(例如,表中的一列)時,通常會耗費(fèi)大量的內(nèi)存、以及處理能力。而Vaex則能夠根據(jù)實(shí)際需要,以按需的方式執(zhí)行計(jì)算,從而充分地利用好有限的可用計(jì)算資源。

從哪里下載Vaex

我們可以在Python Package Index的鏈接處下載Cython,然后在命令行中輸入“pip install vaex”以完成安裝。值得注意的是,為了獲得最佳的效果,您既可以在虛擬環(huán)境中安裝Vaex,又可以直接使用Python的Anaconda發(fā)行版。

6.Intel SDC

作為高性能分析工具包,Intel的可擴(kuò)展數(shù)據(jù)幀編譯器(Scalable Dataframe Compiler,SDC)是一個針對數(shù)據(jù)分析、以及加速集群機(jī)器學(xué)習(xí)的實(shí)驗(yàn)項(xiàng)目。它使用Open MPI項(xiàng)目中的mpirun的實(shí)用程序,將Python的子集編譯為代碼。這些代碼可以在集群之間自動實(shí)現(xiàn)并行化。

Intel SDC如何協(xié)助數(shù)據(jù)科學(xué)

作為一個使用Python編寫的、基于編譯器的大數(shù)據(jù)框架, HPAT用到了前面提到的Numba。不過與Cython不同的是,它并不會按照原樣去編譯Python。相反,它用到了Python語言的受限子集:NumPy數(shù)組和Pandas數(shù)據(jù)幀,并通過對其優(yōu)化,以實(shí)現(xiàn)橫跨多個節(jié)點(diǎn)的運(yùn)行。

與Numba類似,HPAT自帶有@jit裝飾器(decorator),可以將特定功能轉(zhuǎn)化到優(yōu)化的代碼中。此外,它還包含了一個可用于讀取和寫入HDF5(并非HDFS)文件的本地 I/O模塊。

從哪里下載Intel SDC

我們可以從GitHub的鏈接處獲得源代碼。不過SDC并未提供對應(yīng)的二進(jìn)制文件。

原文標(biāo)題:6 essential Python tools for data science—now improved,作者:Serdar Yegulalp

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2023-11-29 20:24:45

數(shù)據(jù)可視化圖表

2023-11-06 08:15:42

遍歷列表Python

2023-02-15 16:31:08

Linux自動化編排工具

2020-06-08 16:31:28

人工智能數(shù)據(jù)科學(xué)體育

2011-05-11 10:00:57

2021-12-08 13:20:39

Bean拷貝工具Java

2021-12-10 13:08:31

數(shù)據(jù)倉庫BI數(shù)據(jù)存儲

2023-06-01 16:45:11

React開發(fā)JavaScript

2022-01-11 18:21:11

存儲技術(shù)數(shù)據(jù)

2011-03-31 14:53:13

數(shù)據(jù)中心節(jié)能

2018-09-04 10:24:35

網(wǎng)絡(luò)流量提取工具

2015-07-28 14:58:04

互聯(lián)網(wǎng)金融大數(shù)據(jù)

2016-01-15 17:36:29

云計(jì)算云應(yīng)用

2025-02-27 00:00:30

SpringJava方式

2011-06-07 09:36:18

2012-10-15 13:26:31

云計(jì)算架構(gòu)

2024-03-08 12:09:26

數(shù)據(jù)可視化圖表

2016-08-02 17:00:12

Hadoop大數(shù)據(jù)系統(tǒng)

2016-09-01 14:04:51

數(shù)據(jù)中心

2016-05-10 14:38:13

大數(shù)據(jù)企業(yè)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號