Pandas 是針對 Python 編程語言進行數(shù)據(jù)操作和數(shù)據(jù)分析的熱門軟件庫。
什么是 PANDAS?
Pandas 是一個基于 Python 構(gòu)建的專門進行數(shù)據(jù)操作和分析的開源軟件庫,可提供數(shù)據(jù)結(jié)構(gòu)和運算,進行功能現(xiàn)強大、靈活且易于使用的數(shù)據(jù)分析和操作。Pandas 為熱門編程語言賦予了處理類似電子表格的數(shù)據(jù)的能力,從而增強了 Python 功能,除其他關(guān)鍵功能外,加快了加載、對齊、操作和合并的速度。后端源代碼以 C 或 Python 編寫時,Pandas 可提供高度優(yōu)化的性能,這一點備受贊賞。
“Pandas”的名稱源自計量經(jīng)濟學(xué)術(shù)語“panel data”,用于描述包含多個時間段觀察結(jié)果的數(shù)據(jù)集。Pandas 庫是在 Python 中執(zhí)行非常實用的現(xiàn)實分析的高級工具或構(gòu)建塊。未來,其創(chuàng)作者計劃將 Pandas 發(fā)展為適用于任何編程語言的功能更加強大、更靈活的開源數(shù)據(jù)分析和數(shù)據(jù)操作工具。
有人稱 Pandas 使用 Python 分析數(shù)據(jù),“顛覆了游戲規(guī)則”;當(dāng)前,它已躋身于最熱門、廣泛使用的數(shù)據(jù)整理工具之列。其中描述了將數(shù)據(jù)從不可用或錯誤的形式中提取到現(xiàn)代分析處理所需的結(jié)構(gòu)和質(zhì)量級別時使用的一組概念和一種方法。Pandas 的優(yōu)勢在于可輕松處理表格、矩陣和時間序列數(shù)據(jù)等結(jié)構(gòu)化數(shù)據(jù)格式。此外,它還可以與其他 Python 科學(xué)庫結(jié)合使用,且效果良好。
PANDAS 的工作原理
Pandas 開源庫內(nèi)提供了 DataFrame。DataFrame 是二維數(shù)組式數(shù)據(jù)表,其中每列包含一個變量的值,每行包含一組每列的值。DataFrame 中存儲的數(shù)據(jù)可以是數(shù)字、系數(shù),也可以是字符類型。也可以將 Pandas DataFrame 視作系列對象的詞典或集合。
對 R 編程語言熟悉的數(shù)據(jù)科學(xué)家和編程人員都知道,可以使用 DataFrame 將數(shù)據(jù)存儲在易于概述的網(wǎng)格中。這表明 Pandas 主要用于 DataFrame 形式的機器學(xué)習(xí)。
Pandas 支持導(dǎo)入和導(dǎo)出不同格式的表格數(shù)據(jù),如 CSV 或 JSON 文件。
此外,Pandas 還支持各種數(shù)據(jù)操作運算和數(shù)據(jù)清理功能,包括選擇子集、創(chuàng)建衍生列、排序、連接、填充、替換、匯總統(tǒng)計數(shù)據(jù)和繪圖。
?
?
Python 軟件包索引(Python 編程語言軟件庫)的編制者表示,Pandas 非常適合處理多種數(shù)據(jù),包括:
包含異構(gòu)類型列的表格數(shù)據(jù),如 SQL 表或 Excel 電子表格
有序和無序(可能并非固定頻率)時間序列數(shù)據(jù)
具有行和列標(biāo)簽的任意矩陣數(shù)據(jù)(同構(gòu)類型或異構(gòu)類型)
其他任何形式的可觀察/統(tǒng)計數(shù)據(jù)集。實際上,數(shù)據(jù)完全無需標(biāo)記即可放入 pandas 數(shù)據(jù)結(jié)構(gòu)中。
PANDAS 的優(yōu)勢
此外,Python 軟件包索引的編制者還表示,Pandas 為數(shù)據(jù)科學(xué)家和開發(fā)者提供了幾個關(guān)鍵優(yōu)勢,包括:
輕松處理浮點和非浮點數(shù)據(jù)中的缺失數(shù)據(jù)(表示為 NaN)
大小易變性:可以從 DataFrame 和更高維度的對象中插入和刪除列
自動和顯式數(shù)據(jù)對齊:可以將對象顯式對齊到一組標(biāo)簽;或者用戶只需忽略標(biāo)簽,讓序列、DataFrame 等在計算中自動調(diào)整數(shù)據(jù)
強大、靈活的分組功能,對數(shù)據(jù)集執(zhí)行分割-應(yīng)用-組合操作,進行數(shù)據(jù)聚合和轉(zhuǎn)換
可輕松將其他 Python 和 Numpy 數(shù)據(jù)結(jié)構(gòu)中參差不齊、索引不同的數(shù)據(jù)轉(zhuǎn)換為 DataFrame 對象
大型數(shù)據(jù)集基于標(biāo)簽的智能切片、精美索引和子集構(gòu)建
直觀的數(shù)據(jù)集合并與連接
靈活的數(shù)據(jù)集重塑和旋轉(zhuǎn)
坐標(biāo)軸的分層標(biāo)記(每個記號可能具有多個標(biāo)簽)
強大的 I/O 工具,用于加載平面文件(CSV 和分隔文件)、Excel 文件和數(shù)據(jù)庫中的數(shù)據(jù),以及保存/加載超快速 HDF5 格式的數(shù)據(jù)
特定于時間序列的功能:日期范圍生成和頻率轉(zhuǎn)換、窗口統(tǒng)計數(shù)據(jù)遷移、日期調(diào)整和延遲
Pandas 庫的其他優(yōu)勢還包括:缺失數(shù)據(jù)的數(shù)據(jù)對齊和集成處理;數(shù)據(jù)集合并與連接;數(shù)據(jù)集重塑和旋轉(zhuǎn);分層軸索引(以便在低維數(shù)據(jù)結(jié)構(gòu)中處理高維數(shù)據(jù))以及基于標(biāo)簽的切片。
PYTHON 和 PANDAS
由于 Pandas 是基于 Python 編程語言構(gòu)建的,因此讓我們簡要回顧一下 Python 編程語言。
Python 因其易用性深受數(shù)據(jù)科學(xué)家喜愛,自 1991 年發(fā)布首個版本以來不斷演進,已成為網(wǎng)絡(luò)應(yīng)用程序、數(shù)據(jù)分析和機器學(xué)習(xí)領(lǐng)域的熱門編程語言之一。
Python 具有出色的易用性,它采用高度可讀的語法,即使是初學(xué)者也無需花費多少時間學(xué)習(xí)即可生成程序。這樣,開發(fā)者和數(shù)據(jù)科學(xué)家可以將更多時間用在解決業(yè)務(wù)問題上,同時也減少了處理語言復(fù)雜性的時間。
Python 可在當(dāng)今使用的所有重要操作系統(tǒng)以及除 Pandas 之外的主要庫上運行。API 服務(wù)還提供了 Python 鏈接或包裝器。這樣,Python 即可與其他服務(wù)和庫交互。
除了易于使用之外,Python 深受數(shù)據(jù)科學(xué)家和機器學(xué)習(xí)開發(fā)者喜愛還有一個重要原因。隨著 Pandas 和 Numpy 等數(shù)據(jù)處理庫以及 Seaborn 和 Matplotlib 等數(shù)據(jù)可視化工具的推出,Python 成為了機器學(xué)習(xí)和數(shù)據(jù)科學(xué)家以及構(gòu)建機器學(xué)習(xí)系統(tǒng)的開發(fā)者的通用語言。
PANDAS 與數(shù)據(jù)科學(xué)家
Pandas 解決了數(shù)據(jù)科學(xué)家在使用與科學(xué)和商業(yè)研究環(huán)境相關(guān)的語言時經(jīng)常遇到的許多問題。在數(shù)據(jù)科學(xué)中,通常會將處理數(shù)據(jù)細分為多個階段,包括之前所述的整理和數(shù)據(jù)清理;數(shù)據(jù)分析和建模;將分析整理成適合繪圖的形式或以表格形式顯示出來。在處理這些任務(wù)及其他任務(wù)關(guān)鍵型數(shù)據(jù)科學(xué)任務(wù)時,Pandas 表現(xiàn)卓越。
GPU 加速的 DATAFRAMES
CPU 由專為按序串行處理優(yōu)化的幾個核心組成,而 GPU 則擁有一個大規(guī)模并行架構(gòu),當(dāng)中包含數(shù)千個更小、更高效的核心,專為同時處理多重任務(wù)而設(shè)計。與僅包含 CPU 的配置相比,GPU 的數(shù)據(jù)處理速度快得多。它們還因其超低浮點運算(性能)單價深受歡迎,其還可通過加快多核服務(wù)器的并行處理速度,解決當(dāng)前的計算性能瓶頸問題。?
過去幾年 GPU 一直肩負著推動深度學(xué)習(xí)發(fā)展的重任,而 ETL 和傳統(tǒng)機器學(xué)習(xí)工作負載依然是采用 Python 進行編寫,并且通常是使用 Scikit-Learn 等單線程工具或通過 Spark 等大型多 CPU 分布式解決方案進行編寫。
NVIDIA 開發(fā)了 RAPIDS,這是一個開源的數(shù)據(jù)分析和機器學(xué)習(xí)加速平臺,用于完全在 GPU 中執(zhí)行端到端數(shù)據(jù)科學(xué)訓(xùn)練管線。它依賴于 NVIDIA CUDA?基元進行低級別計算優(yōu)化,但通過用戶友好型 Python 界面實現(xiàn) GPU 并行結(jié)構(gòu)和極高的顯存帶寬。
RAPIDS 側(cè)重于有關(guān)分析和數(shù)據(jù)科學(xué)的通用數(shù)據(jù)準(zhǔn)備任務(wù),可提供 GPU 加速的 DataFrame。DataFrame 模仿 pandas API,且構(gòu)建在 Apache Arrow 之上。它集成了 scikit-learn 和各種機器學(xué)習(xí)算法,無需支付典型的序列化成本即可更大限度實現(xiàn)互操作性和高性能。這可加速端到端流程(從數(shù)據(jù)準(zhǔn)備到機器學(xué)習(xí),再到深度學(xué)習(xí))。? RAPIDS 還包括對多節(jié)點、多 GPU 部署的支持,大大加快了對更大規(guī)模數(shù)據(jù)集的處理和訓(xùn)練。
審核編輯:湯梓紅
評論