Numpy、Scipy、Pandas這些庫的區(qū)別是什么?
知乎上有個熱門問題,問numpy,scipy,pandas這三個庫的區(qū)別是什么?
打個比方,pandas類似Excel軟件,scipy就像Excel里的函數(shù)算法包,numpy則好比構(gòu)建Excel邏輯的底層語句。
所以說pandas擅長數(shù)據(jù)處理,scipy精通數(shù)學(xué)計算,numpy是構(gòu)建pandas、scipy的基礎(chǔ)庫。
我們知道numpy通過N維數(shù)組來實現(xiàn)快速的數(shù)據(jù)計算和處理,它也是Python眾多數(shù)據(jù)科學(xué)庫的依賴,其中就包括pandas、scipy。
而numpy本身不依賴于任何其他Python軟件包,只依賴于加速的線性代數(shù)庫,通常為 Intel MKL或 OpenBLAS。
pandas是python數(shù)據(jù)處理的核心庫,它基于數(shù)組形式提供了極其豐富的數(shù)據(jù)操作,對比excel有過之而無不及。
它可以對各種數(shù)據(jù)進(jìn)行運算操作,比如歸并、再成形、選擇,還有數(shù)據(jù)清洗和數(shù)據(jù)加工特征,廣泛應(yīng)用在學(xué)術(shù)、金融、統(tǒng)計學(xué)等各個數(shù)據(jù)分析領(lǐng)域。
一般來說,學(xué)python數(shù)據(jù)分析只需要學(xué)透pandas就夠了,輔助加一些numpy、scipy、matplotlib等庫。
scipy 是一個用于數(shù)學(xué)、科學(xué)、工程領(lǐng)域的常用軟件包,可以處理最優(yōu)化、線性代數(shù)、積分、插值、擬合、特殊函數(shù)、快速傅里葉變換、信號處理、圖像處理、常微分方程求解器等。。
其包含的模塊有最優(yōu)化、線性代數(shù)、積分、插值、特殊函數(shù)、快速傅里葉變換、信號處理和圖像處理、常微分方程求解和其他科學(xué)與工程中常用的計算。
scipy中主要的計算模塊:
- scipy.integrate:數(shù)值積分例程和微分方程求解器
- scipy.linalg:擴(kuò)展了由numpy.linalg提供的線性代數(shù)例程和矩陣分解功能
- scipy.optimize:函數(shù)優(yōu)化器(最小化器)以及跟查找算法
- scipy.signal:信號處理工具
- scipy.sparse:稀疏矩陣和系數(shù)線性系統(tǒng)求解器
- scipy.special:SPECFUN(這是一個實現(xiàn)了許多常用數(shù)學(xué)函數(shù)(如伽馬函數(shù))的Fortran庫)的包裝器
- scipy.stats:標(biāo)準(zhǔn)連續(xù)和離散概率分布、各種統(tǒng)計檢驗方法,以及更好的描述統(tǒng)計法
- scipy.weave:利用內(nèi)聯(lián)C++代碼加速數(shù)組計算的工具
綜上所述,pandas和scipy是建立在numpy數(shù)組基礎(chǔ)之上的數(shù)據(jù)工具,三者的協(xié)同工作可以高效解決很多問題,在金融、財務(wù)、天文、生物、氣象和氣候、材料等多個領(lǐng)域得到了廣泛應(yīng)用。