Pandas是Python的核心數(shù)據(jù)分析支持庫,提供了快速、靈活、明確的數(shù)據(jù)結(jié)構(gòu),旨在簡單、直觀的處理關(guān)系型、標(biāo)記型數(shù)據(jù)。
Pandas適用于處理以下類型的數(shù)據(jù):
1.與SQL或Excel表類似的,含異構(gòu)列的表格數(shù)據(jù);
2.有序和無序(非固定頻率)的時間序列數(shù)據(jù);
3.帶行列標(biāo)簽的矩陣數(shù)據(jù),包括同構(gòu)或異構(gòu)型數(shù)據(jù);
4.任意其它形式的觀測、統(tǒng)計數(shù)據(jù)集,數(shù)據(jù)轉(zhuǎn)入Pandas數(shù)據(jù)結(jié)構(gòu)時不必事先標(biāo)記。
Pandas的主要數(shù)據(jù)結(jié)構(gòu)是Series(一維數(shù)據(jù))與DataFrame(二維數(shù)據(jù)),這兩種數(shù)據(jù)結(jié)構(gòu)足以處理金融、統(tǒng)計、社會科學(xué)、工程等領(lǐng)域里的大多數(shù)典型的用例。對于R用戶,DataFrame提供了比R語言data.frame更豐富的功能。Pandas是基于NumPy開發(fā),可以與其它第三方科學(xué)計算支持庫完美集成。
Pandas有許多的優(yōu)勢
處理浮點(diǎn)與非浮點(diǎn)數(shù)據(jù)里的缺失數(shù)據(jù),表示為NaN;
大小可變:插入或刪除DataFrame等多維對象的列;
自動、顯示數(shù)據(jù)對齊:顯示將對象與一組標(biāo)簽對齊,也可以忽略標(biāo)簽,在Series、DataFrame計算時自動與數(shù)據(jù)對齊;
強(qiáng)大、靈活的分組(group by)功能:拆分-應(yīng)用-組合數(shù)據(jù)集,聚合、轉(zhuǎn)換數(shù)據(jù);
把Python和NumPy數(shù)據(jù)結(jié)構(gòu)里不規(guī)則、不同索引的數(shù)據(jù)輕松地轉(zhuǎn)換為DataFrame對象;
基于智能標(biāo)簽,對大型數(shù)據(jù)集進(jìn)行切片、花式索引、子集分解等操作;
直觀地合并、連接數(shù)據(jù)集;
靈活地重構(gòu)、透視數(shù)據(jù)集;
軸支持結(jié)構(gòu)化標(biāo)簽:一個刻度支持多個標(biāo)簽;
成熟地IO工具:讀取文本文件(CSV等支持分隔符地文件)、Excel文件、數(shù)據(jù)庫等來源地數(shù)據(jù),利用超快地HDF5格式保存/加載數(shù)據(jù);
時間序列:支持日期范圍生成、頻率轉(zhuǎn)換、移動窗口統(tǒng)計、移動窗口線性回歸、日期位移等時間序列功能。
這些功能主要是為了解決其它編程語言、科研環(huán)境的痛點(diǎn)。處理數(shù)據(jù)一般分為數(shù)據(jù)整理與清洗、數(shù)據(jù)分析與建模、數(shù)據(jù)可視化與制表,Pandas是處理數(shù)據(jù)的理想工具。
Pandas速度很快,Pandas很多底層算法都用Cython優(yōu)化過。然而,為了保持通用性,必然要犧牲一些性能,如果專注某一功能,完全可以開發(fā)出比Pandas更快的專用工具。
Pandas是statsmodels的依賴項(xiàng),因此,Pandas也是Python中統(tǒng)計計算生態(tài)系統(tǒng)的重要組成部分。
Pandas已廣泛應(yīng)用于金融領(lǐng)域。
數(shù)據(jù)結(jié)構(gòu)

為什么有多個數(shù)據(jù)結(jié)構(gòu)?
Pandas數(shù)據(jù)結(jié)構(gòu)就像是低維數(shù)據(jù)的容器。比如,DataFrame是Series的容器,Series則是標(biāo)量的容器。使用這種方式,可以在容器中以字典的形式插入或刪除對象。
此外,通用API函數(shù)的默認(rèn)操作要顧及時間序列與截面數(shù)據(jù)集的方向。多維數(shù)組存儲二維或三維數(shù)據(jù)時,編寫函數(shù)要注意數(shù)據(jù)集的方向,這對我們來說是一種負(fù)擔(dān);如果不考慮C或Fortran中連續(xù)性對性能的影響,一般情況下,不同的軸在程序里其實(shí)沒有什么區(qū)別。Pandas里,軸的概念主要是為了給數(shù)據(jù)賦予更字段的語義,即用“更恰當(dāng)”的方式表示數(shù)據(jù)集的方向。這樣做可以讓我們在使用Pandas編寫數(shù)據(jù)轉(zhuǎn)換函數(shù)時,少費(fèi)點(diǎn)腦子。
處理DataFrame等表格數(shù)據(jù)時,index(行)或columns(列)比axis
0和axis 1更直觀。用這種方式迭代DataFrame的列,代碼更容易讀懂:

大小可變與數(shù)據(jù)復(fù)制
Pandas所有數(shù)據(jù)結(jié)構(gòu)的值都是可變的,但數(shù)據(jù)結(jié)構(gòu)的大小并非都是可變的,比如,Series的長度不可改變,但DataFrame里就可以插入列。
Pandas里,絕大多數(shù)方法都不改變原始的輸入數(shù)據(jù),而是復(fù)制數(shù)據(jù),生成新的對象。一般來說,原始輸入數(shù)據(jù)不變更穩(wěn)妥。
如果你想學(xué)習(xí)Python,但是找不到學(xué)習(xí)路徑和資源,歡迎來指尖編程。