用于數據科學的六種必備Python工具
譯文【51CTO.com快譯】如果您想使用甚至掌握數據分析技能的話,Python一定是您的最佳選擇。它不但容易被學習,而且具有廣泛且活躍的社區支持。目前,大多數數據科學庫、以及機器學習框架,都能夠提供Python接口。
在過去的數月中,不少用于數據科學的Python項目,都相繼發布了針對主要功能的更新版本。它們有些是關乎實際數字運算;有些則是讓開發者能夠更輕松、更快速地編寫出針對數據科學的任務代碼。下面,讓我們來討論其中最為典型的6種Python工具。
1.SciPy1.7
由于NumPy能夠為Python用戶提供快速而強大的數學庫,因此SciPy使用NumPy來為常見的、面向數學和數據科學的編程任務提供各種代碼庫。其中包括:線性代數、統計工程、以及信號處理等方面。
SciPy如何協助數據科學
作為便捷且被廣泛使用的數學和統計工具,SciPy長期以來停留在1.0版本上。當然,該版本具有很強的跨版本向后兼容性。
根據其核心開發人員--Ralf Gommers的說法,SciPy項目的1.0版不但整合了項目的治理和管理方式,而且包含了一個與MacOS和Windows的不同的持續集成過程,以及對預構建的Windows二進制文件的適當支持。這就意味著,Windows用戶可以直接使用SciPy,而無需考慮額外的環節。
自2017年發布1.0版本以來,該項目已經交付了七個主要版本,它們持續在如下方面進行改進與優化:
- 放棄了對于Python 2.7的支持,跟進了對應的代碼庫。
- 不斷改進和更新SciPy的子模塊,使之具有更多的功能、更好的文檔、以及更多的新算法。例如,新的快速傅立葉變換模塊(fast Fourier transform module,)具有更好性能、以及更友好的界面。
- 更好地支持LAPACK(Linear Algebra PACKage,線性代數包,是一個用于解決常見線性方程問題的Fortran包。請參見--http://performance.netlib.org/lapack/)中的各個函數。
- 能夠更好地兼容替代Python運行時的PyPy(包括了一個可用于更快地長期運行代碼的JI編譯器,請參見--https://www.infoworld.com/article/3385127/what-is-pypy-faster-python-without-pain.html)。
從哪里下載SciPy
我們既可以從GitHub的鏈接處獲得源代碼,又可以從Python Package Index的鏈接處,下載SciPy的二進制文件,然后在命令行中輸入“pip install sciPy”以完成安裝。
2.Numba 0.53.0
Numba允許通過LLVM(Low Level Virtual Machine,低級虛擬機)編譯器框架,將Python函數或模塊編譯為匯編語言,以便隨時運行Python程序。在此方面,Numba與Cython(不但可以被Python調用,而且能夠讓被加速的代碼更易于分發給第三方,下文會詳細討論)極其相似。當然,Numba會更易于使用。
Numba如何協助數據科學
Numba幫助數據科學家的方式主要體現在,它加速了編寫Python的各項操作。也就是說,您可以使用純Python,對項目進行原型設計,然后使用Numba對其進行注釋,以便快速地投入生產環境。
同時,Numba也可以快速地運行在那些為機器學習和數據科學應用所構建的硬件上。Numba的早期版本曾可以支持編譯出CUDA(Compute Unified Device Architecture)加速代碼。不過其最新版本則采用了新的、更為高效的GPU代碼縮減算法。它不但能夠加快編譯速度,還支持Nvidia CUDA和AMD ROCm的API。
此外,Numba還可以通過優化JIT編譯函數,以實現跨CPU內核的并行執行。當然,您的代碼需要添加一些額外的語法,才能正確地完成。
從哪里下載Numba
我們既可以從GitHub的鏈接處獲得源代碼,又可以在Python Package Index的鏈接處下載Numba,然后在命令行中輸入“pip install numba”以完成安裝。其預構建的二進制文件可以支持Windows、MacOS、以及通用的Linux。此外,它還被當作了Anaconda Python發行版的一部分。用戶可以在命令行中輸入“conda install numba”以完成安裝。
3.Cython3.0(beta版)
Cython是將Python代碼轉換為可以更快地運行、大數量級的C語言代碼。這種轉換對于重數學量(math-heavy)的代碼、或是在各種緊密循環中運行的代碼,都非常方便。值得一提的是,這兩種情況在為工程、科學、以及機器學習編寫的Python程序中,也是十分常見的。
Cython如何協助數據科學
從本質上說,Cython代碼實際上是帶有一些額外語法的Python代碼。這些Python代碼不但可以被Cython編譯成C語言,而且能夠通過使用Cython的類型注釋,讓其性能得到了幾十倍、甚至幾百倍的改進。
在Cython 3出現之前,Cython使用的是0.xx的版本編號方案。不過,Cython 3不再支持Python 2的語法了。盡管Cython 3目前仍處于測試階段,但是已有Cython的擁護者強烈建議人們使用該版本,去代替其早期的版本。同時,鑒于Cython的許多(盡管不是全部)函數都可以使用與Python完全兼容的語法,因此Cython 3強烈建議用戶更多地去使用“純Python”模式。
同時,Cython還支持與IPython和Jupyter notebooks的集成。由Cython編譯的代碼,可以通過內聯注釋的方式,在Jupyter notebooks中被使用,就像使用Python代碼一樣。
此外,您還可以在啟用了配置文件引導優化(profile-guided optimization)的情況下,為Jupyter編譯Cython模塊。使用該方式構建的模塊,可以根據其生成的分析信息,進行各種快速的編譯和優化。值得注意的是,該方式僅能夠在與GCC編譯器共同使用時,被Cython所使用。而微軟的VC環境尚對此并不支持。
從哪里下載Cython
我們既可以從GitHub的鏈接處獲得源代碼,又可以在Python Package Index的鏈接處下載Cython,然后在命令行中輸入“pip install cython”以完成安裝。其二進制文件可以支持包括32位和64位的Windows、通用的Linux、以及MacOS。值得注意的是,您的系統平臺上必須已安裝了C預言編譯器,方可使用Cython。
4.Dask 2021.07.0
近年來,我們的硬件處理能力雖然比以往任何時候都強大,可關鍵問題是,我們將如何通過橫跨多個CPU內核、物理處理器、以及計算節點的方式,以最高效率完成數據科學的相關計算任務。
對此,Dask工具能夠接受一項Python作業,并在多個系統之間有效地予以調度。由于那些被用于啟動Dask作業的語法、與在Python中用于執行其他各項操作的語法幾乎相同,因此我們在使用Dask時,幾乎無需對現有的代碼進行任何修改。
Dask如何協助數據科學
Dask能夠為Python中許多流行的機器學習、以及科學計算庫,提供了各種自有版本的接口。例如,它的DataFrame對象能夠與Pandas庫中的相同,它的Array對象則可以與NumPy的相一致。可見,您只需針對Dask修改幾行代碼,即可來快速兼容現有的代碼。
同時,Dask不但允許并行地寫入純Python的作業,而且其Bag等對象類型,也能夠優化諸如:map、filter、以及groupby等通用Python對象集合的操作。
從哪里下載Dask
我們既可以從GitHub的鏈接處獲得源代碼,又可以在Python Package Index的鏈接處下載Cython,然后在命令行中輸入“pip install dask”以完成安裝。此外,作為Anaconda Python發行版的一部分,用戶還可以在其命令行中輸入“conda install dask”,以完成安裝。
5.Vaex 4.30
根據NumPy或Pandas的數據幀格式,Vaex允許用戶對大型表格的數據集(例如有數十億行的數據量),通過執行lazy操作,以零數據復制、最少的內存使用量、以及內置的可視化工具等方式,高效地完成各項操作。
Vaex如何協助數據科學
在Python中,處理大型數據集,特別是只涉及數據的某個子集(例如,表中的一列)時,通常會耗費大量的內存、以及處理能力。而Vaex則能夠根據實際需要,以按需的方式執行計算,從而充分地利用好有限的可用計算資源。
從哪里下載Vaex
我們可以在Python Package Index的鏈接處下載Cython,然后在命令行中輸入“pip install vaex”以完成安裝。值得注意的是,為了獲得最佳的效果,您既可以在虛擬環境中安裝Vaex,又可以直接使用Python的Anaconda發行版。
6.Intel SDC
作為高性能分析工具包,Intel的可擴展數據幀編譯器(Scalable Dataframe Compiler,SDC)是一個針對數據分析、以及加速集群機器學習的實驗項目。它使用Open MPI項目中的mpirun的實用程序,將Python的子集編譯為代碼。這些代碼可以在集群之間自動實現并行化。
Intel SDC如何協助數據科學
作為一個使用Python編寫的、基于編譯器的大數據框架, HPAT用到了前面提到的Numba。不過與Cython不同的是,它并不會按照原樣去編譯Python。相反,它用到了Python語言的受限子集:NumPy數組和Pandas數據幀,并通過對其優化,以實現橫跨多個節點的運行。
與Numba類似,HPAT自帶有@jit裝飾器(decorator),可以將特定功能轉化到優化的代碼中。此外,它還包含了一個可用于讀取和寫入HDF5(并非HDFS)文件的本地 I/O模塊。
從哪里下載Intel SDC
我們可以從GitHub的鏈接處獲得源代碼。不過SDC并未提供對應的二進制文件。
原文標題:6 essential Python tools for data science—now improved,作者:Serdar Yegulalp
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】