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