生態系統 #

這是一個社群維護的專案列表,這些專案基於 Pandas 來提供 PyData 領域內的工具。Pandas 核心開發團隊不一定認可此列表中的任何特定專案,也不瞭解任何特定庫的維護狀態。

擴充套件 #

Pandas 提供了多種方式允許第三方包增強其功能。本節包含已知專案列表,這些專案擴充套件了 Pandas 的功能。

希望擴充套件 Pandas 的開發者可以在我們文件的 擴充套件 Pandas 頁面中找到更多資訊。

訪問器 #

提供 擴充套件訪問器 的專案目錄。這供使用者發現新的訪問器,也供庫作者協調名稱空間。

訪問器
akimbo ak Series
pdvega vgplot Series, DataFrame
pandas-genomics genomics Series, DataFrame
pint-pandas pint Series, DataFrame
physipandas physipy Series, DataFrame
composeml slice DataFrame
gurobipy-pandas gppd Series, DataFrame
staircase sc Series, DataFrame
woodwork slice Series, DataFrame

資料型別 #

Pandas 提供了一個介面用於定義 擴充套件型別,以擴充套件 NumPy 的型別系統。以下庫實現了該介面,以提供 NumPy 或 Pandas 中未找到但與 Pandas 的資料容器良好配合的型別。

akimbo #

Akimbo 提供了一個擴充套件型別,用於在 Pandas 的 Series 和 DataFrame 中儲存 Awkward Arrays。它還提供了一個訪問器,用於在型別為 awkward 的 Series 上使用 awkward 函式。

db-dtypes #

db-dtypes 為處理資料庫系統中的 DATE、TIME 和 JSON 等型別提供了擴充套件型別。此包由 pandas-gbq 使用,以提供 BigQuery 資料型別的自然 dtype,而無需自然 numpy 型別。

Pandas-Genomics #

Pandas-Genomics 提供了一個擴充套件型別和擴充套件陣列,用於處理基因組學資料。它還包括用於 QC 和基因組學資料分析的許多有用屬性和方法的 genomics 訪問器。

Physipandas #

Physipandas 提供了一個擴充套件,用於處理與物理單位(如米或焦耳)相關的物理量(如標量和 numpy.ndarray)以及將 physipy 訪問器與 Pandas Series 和 Dataframe 整合的附加功能。

Pint-Pandas #

Pint-Pandas 提供了一個擴充套件型別,用於儲存帶單位的數值陣列。這些陣列可以儲存在 Pandas 的 Series 和 DataFrame 中。使用 pint 的擴充套件陣列的 Series 和 DataFrame 列之間的操作隨後將具有單位意識。

Text Extensions #

Text Extensions for Pandas 提供擴充套件型別,用於表示自然語言資料的常見資料結構,以及將流行自然語言處理庫的輸出轉換為 Pandas DataFrames 的庫整合。

繪圖後端 #

Pandas 預設使用 Matplotlib 進行繪圖。這可以使用 plotting.backend 選項進行更改。

pd.set_option("plotting.backend", "<plotting-backend-name>")

這是已知繪圖後端的列表。

Altair #

Altair 是一個用於 Python 的宣告式統計視覺化庫。使用 Altair,您可以花更多時間理解您的資料及其含義。Altair 的 API 簡單、友好且一致,構建在強大的 Vega-Lite JSON 規範之上。這種優雅的簡潔性用最少的程式碼就能產生精美而有效的視覺化。Altair 可與 Pandas DataFrames 配合使用。

altair-pandas 透過以下方式提供 Pandas Altair 後端。

pd.set_option("plotting.backend", "altair")

Bokeh #

Bokeh 是一個用於大型資料集的 Python 互動式視覺化庫,它原生使用最新的 Web 技術。其目標是按照 Protovis/D3 的風格提供優雅、簡潔的新圖形構建,同時為精簡客戶端提供高效能的互動性。

Pandas-Bokeh 提供了一個高階 Bokeh API,可以透過以下方式載入為原生的 Pandas 繪圖後端。

pd.set_option("plotting.backend", "pandas_bokeh")

它與 matplotlib 繪圖後端非常相似,但提供了基於 Web 的互動式圖表和地圖。

hvplot #

hvPlot 是一個建立在 HoloViews 之上的 PyData 生態系統的視覺化高階 API。它可以作為原生的 Pandas 繪圖後端透過以下方式載入。

pd.set_option("plotting.backend", "hvplot")

Plotly #

Plotly 的 Python API 支援互動式圖表和 Web 分享。地圖、2D、3D 和即時流圖表使用 WebGLD3.js 渲染。該庫支援直接從 Pandas DataFrame 進行繪圖以及基於雲的協作。 matplotlib、ggplot for Python 和 Seaborn 的使用者可以將圖表轉換為互動式 Web 圖表。圖表可以在 IPython Notebooks 中繪製,用 R 或 MATLAB 編輯,在 GUI 中修改,或嵌入到應用程式和儀表板中。Plotly 可免費無限制分享,並提供雲、離線或本地賬戶供私人使用。

Plotly 可以作為 Pandas 繪圖後端透過以下方式使用。

pd.set_option("plotting.backend", "plotly")

特定領域的 Pandas 擴充套件 #

Geopandas #

Geopandas 擴充套件了 Pandas 資料物件,以包含地理資訊,支援幾何運算。如果您的工作涉及地圖和地理座標,並且您喜歡 Pandas,那麼您應該仔細研究 Geopandas。

gurobipy-pandas #

gurobipy-pandas 提供了一個方便的訪問器 API,用於將 Pandas 與 gurobipy 連線起來。它使使用者能夠更輕鬆、更高效地從儲存在 DataFrames 和 Series 中的資料構建數學最佳化模型,並將解決方案直接讀回為 Pandas 物件。

Hail Query #

一個適用於遺傳學界的離線、容錯、分散式資料幀庫。Hail Query 包含磁碟資料格式、記憶體資料格式、表示式編譯器、查詢規劃器和分散式排序演算法,所有這些都旨在加速對大規模基因組測序資料矩陣的查詢。

通常最容易使用 Pandas 來處理 Hail 生成的彙總統計或其他小聚合。因此,Hail 提供了與 Pandas DataFrames 的原生匯入和匯出。

staircase #

staircase 是一個建立在 pandas 和 numpy 之上的資料分析包,用於對數學階梯函式進行建模和操作。它為定義在實數、日期時間(datetime)和時間差(timedelta)域上的階梯函式提供了豐富的算術運算、關係運算、邏輯運算、統計運算和聚合。

xarray #

xarray 透過提供核心 Pandas 資料結構的 N 維變體,將 Pandas 的標記資料功能帶入物理科學領域。它旨在為多維陣列分析提供一個類似 Pandas 且相容 Pandas 的工具包,而不是 Pandas 擅長的表格資料。

Pandas 的資料 I/O #

ArcticDB #

ArcticDB 是一個無伺服器 DataFrame 資料庫引擎,專為 Python 資料科學生態系統設計。ArcticDB 使您能夠大規模地儲存、檢索和處理 Pandas DataFrames。它是一個專為物件儲存設計的儲存引擎,並且還支援使用 LMDB 的本地磁碟儲存。ArcticDB 除了執行的 Python 環境和物件儲存訪問之外,幾乎不需要任何額外的基礎設施,並且可以在幾秒鐘內安裝。

完整的文件請在此處 查詢

BCPandas #

BCPandas 提供從 Pandas 到 Microsoft SQL Server 的高效能寫入,其效能遠超原生的 df.to_sql 方法。在內部,它使用 Microsoft 的 BCP 工具,但複雜性已完全從終端使用者那裡抽象出來。經過嚴格測試,它是 df.to_sql 的完整替代品。

Deltalake #

Deltalake Python 包允許您在 Python 中原生訪問儲存在 Delta Lake 中的表,而無需使用 Spark 或 JVM。它提供了 delta_table.to_pyarrow_table().to_pandas() 方法,將任何 Delta 錶轉換為 Pandas DataFrame。

fredapi #

fredapi 是聖路易斯聯邦儲備銀行提供的 聯邦儲備經濟資料 (FRED) 的 Python 介面。它同時支援 FRED 資料庫和包含時間點資料(即歷史資料修訂)的 ALFRED 資料庫。fredapi 提供了一個 Python 的 FRED HTTP API 包裝器,並提供了幾種便捷的方法來解析和分析 ALFRED 的時間點資料。fredapi 利用 Pandas 並以 Series 或 DataFrame 的形式返回資料。此模組需要一個 FRED API 金鑰,您可以在 FRED 網站上免費獲取。

Hugging Face #

Hugging Face 資料集中心提供了一個由社群共享的、可立即使用的機器學習資料集集合。該平臺提供了一個使用者友好的介面來探索、發現和視覺化資料集,並提供工具,透過 huggingface_hub 庫輕鬆地在 Python 中載入和使用這些資料集。

您可以使用 Pandas 中的 hf:// 路徑來訪問 Hugging Face 上的資料集,格式為 hf://datasets/username/dataset_name/...

例如,這是載入 stanfordnlp/imdb 資料集 的方法。

import pandas as pd

# Load the IMDB dataset
df = pd.read_parquet("hf://datasets/stanfordnlp/imdb/plain_text/train-00000-of-00001.parquet")

提示:在資料集頁面上,點選“使用此資料集”即可獲得在 Pandas 中載入它的程式碼。

要將資料集儲存到 Hugging Face,您需要 建立一個公共或私有資料集登入,然後您就可以使用 df.to_csv/to_json/to_parquet

# Save the dataset to my Hugging Face account
df.to_parquet("hf://datasets/username/dataset_name/train.parquet")

您可以在 文件 中找到更多關於 Hugging Face 資料集中心的資訊。

NTV-pandas #

NTV-pandas 提供了一個 JSON 轉換器,它支援比 Pandas 直接支援的更多資料型別。

它支援以下資料型別:

介面始終是可逆的(轉換往返),支援兩種格式(JSON-NTV 和 JSON-TableSchema)。

示例

import ntv_pandas as npd

jsn = df.npd.to_json(table=False)  # save df as a JSON-value (format Table Schema if table is True else format NTV )
df  = npd.read_json(jsn)  # load a JSON-value as a `DataFrame`

df.equals(npd.read_json(df.npd.to_json(df)))  # `True` in any case, whether `table=True` or not

pandas-datareader #

pandas-datareader 是一個用於 Pandas 的遠端資料訪問庫(PyPI:pandas-datareader)。它基於以前位於 pandas.io.datapandas.io.wb 的功能,但在 v0.19 中被拆分出來。有關更多資訊,請參閱 pandas-datareader 文件

可用的資料來源如下:

pandas-gbq #

pandas-gbq 提供與 Google BigQuery 的高效能讀寫。以前(2.2.0 版本之前),這些方法被公開為 pandas.read_gbqDataFrame.to_gbq。請改用 pandas_gbq.read_gbqpandas_gbq.to_gbq

pandaSDMX #

pandaSDMX 是一個用於檢索和獲取以 SDMX 2.1 分發的統計資料和元資料的庫,SDMX 2.1 是一個被統計局、中央銀行和國際組織廣泛使用的 ISO 標準。pandaSDMX 可以將資料集和相關結構元資料(包括資料流、程式碼列表和資料結構定義)公開為 Pandas Series 或 MultiIndexed DataFrames。

縮放 Pandas #

Bodo #

Bodo 是一個用於 Python 資料處理的高效能計算引擎。使用自動並行化的即時(JIT)編譯器,Bodo 可以輕鬆地將 Pandas 工作負載從筆記型電腦擴充套件到叢集,而無需進行重大程式碼更改。在後臺,Bodo 依賴於基於 MPI 的高效能計算(HPC)技術,使其比替代方案更易於使用,並且通常速度更快。Bodo 還提供了一個 SQL 引擎,可以高效地查詢分散式 Pandas 資料幀。

import pandas as pd
import bodo

@bodo.jit
def process_data():
    df = pd.read_parquet("my_data.pq")
    df2 = pd.DataFrame({"A": df.apply(lambda r: 0 if r.A == 0 else (r.B // r.A), axis=1)})
    df2.to_parquet("out.pq")

process_data()

Dask #

Dask 是一個靈活的平行計算庫,用於分析。Dask 為離線、並行和分散式計算提供了熟悉的 DataFrame 介面。

Ibis #

Ibis 提供了一種編寫分析程式碼的標準方法,可以在多個引擎上執行。它有助於彌合本地 Python 環境(如 pandas)與遠端儲存和執行系統(如 Hadoop 元件(如 HDFS、Impala、Hive、Spark)和 SQL 資料庫(Postgres 等))之間的差距。

Koalas #

Koalas 在 Apache Spark 之上提供了一個熟悉的 Pandas DataFrame 介面。它使使用者能夠利用單臺機器或叢集的多核來加速或擴充套件其 DataFrame 程式碼。

Modin #

modin.pandas DataFrame 是一個並行和分散式的即插即用 Pandas 替代品。這意味著您可以使用 Modin 來處理現有的 Pandas 程式碼,或使用現有的 Pandas API 編寫新程式碼。Modin 可以利用您的整個機器或叢集來加速和擴充套件您的 Pandas 工作負載,包括傳統上耗時的任務,如資料攝取(read_csvread_excelread_parquet 等)。

# import pandas as pd
import modin.pandas as pd

df = pd.read_csv("big.csv")  # use all your cores!

Pandas 的資料清洗和驗證 #

Pandera #

Pandera 提供了一個靈活且富有表現力的 API,用於對資料幀執行資料驗證,使資料處理管道更具可讀性和魯棒性。資料幀包含 Pandera 在執行時顯式驗證的資訊。這在生產關鍵資料管道或可重現的研究環境中非常有用。

pyjanitor #

Pyjanitor 使用方法鏈提供了清晰的資料清洗 API。

Pandas 的開發工具 #

Hamilton #

Hamilton 是一個宣告式資料流框架,起源於 Stitch Fix。它旨在幫助管理 Pandas 程式碼庫,特別是對於機器學習模型的特徵工程。

它提供了一種有見地的範例,確保所有程式碼都是:

這有助於擴充套件您的 Pandas 程式碼庫,同時保持較低的維護成本。

有關更多資訊,請參閱 文件

IPython #

IPython 是一個互動式命令 shell 和分散式計算環境。IPython 的 Tab 補全功能可與 Pandas 方法以及 DataFrame 列等屬性配合使用。

Jupyter Notebook / Jupyter Lab #

Jupyter Notebook 是一個用於建立 Jupyter Notebook 的 Web 應用程式。Jupyter Notebook 是一個 JSON 文件,包含一系列有序的輸入/輸出單元格,這些單元格可以包含程式碼、文字、數學、圖表和富媒體。Jupyter Notebook 可以透過 Web 介面中的“下載為”選項和 shell 中的 jupyter convert 轉換為多種開放標準輸出格式(HTML、HTML 簡報、LaTeX、PDF、ReStructuredText、Markdown、Python)。

Pandas DataFrames 實現 _repr_html__repr_latex 方法,Jupyter Notebook 會利用這些方法來顯示(截斷的)HTML 或 LaTeX 表格。LaTeX 輸出會正確轉義。(注意:HTML 表格可能與非 HTML Jupyter 輸出格式相容,也可能不相容。)

有關 Pandas 的 display. 設定,請參閱 選項和設定

marimo #

marimo 是一個用於 Python 和 SQL 的響應式筆記本,可以提高處理資料幀時的工作效率。它提供了多項功能,使資料操作和視覺化更具互動性和趣味性。

  1. 豐富的互動式顯示:marimo 可以將 Pandas 資料幀顯示為互動式表格或圖表,支援過濾和排序。
  2. 資料選擇:使用者可以選擇表格或基於 Pandas 的圖表中的資料,然後這些選擇會自動作為 Pandas 資料幀傳送到 Python。
  3. 無程式碼轉換:使用者可以使用 GUI 以互動方式轉換 Pandas 資料幀,而無需編寫程式碼。生成的程式碼可以複製並貼上到筆記本中。
  4. 自定義過濾器:marimo 允許使用滑塊和下拉列表等 UI 元素建立基於 Pandas 的過濾器。
  5. 資料集瀏覽器:marimo 會自動發現並顯示筆記本中的所有資料幀,讓使用者可以互動式地探索和視覺化資料。
  6. SQL 整合:marimo 允許使用者對記憶體中存在的任何 Pandas 資料幀編寫 SQL 查詢。

pandas-stubs #

雖然 Pandas 儲存庫部分進行了型別化,但該包本身並未公開這些資訊供外部使用。安裝 pandas-stubs 以啟用對 Pandas API 的基本型別覆蓋。

透過閱讀這些問題 144682676628142 來了解更多資訊。

請參閱 GitHub 頁面 上的安裝和使用說明。

Spyder #

Spyder 是一個跨平臺的 PyQt-IDE,它結合了軟體開發工具的編輯、分析、除錯和剖析功能,以及科學環境(如 MATLAB 或 Rstudio)的資料探索、互動式執行、深度檢查和豐富的視覺化功能。

它的 變數瀏覽器 允許使用者像“電子表格”一樣檢視、操作和編輯 Pandas IndexSeriesDataFrame 物件,包括複製和修改值、排序、顯示“熱圖”、轉換資料型別等等。Pandas 物件還可以重新命名、複製、新增新列、複製/貼上到/從剪貼簿(作為 TSV),以及儲存/載入到/從檔案。Spyder 還可以透過一個複雜的匯入嚮導從各種純文字和二進位制檔案或剪貼簿匯入資料到新的 Pandas DataFrame 中。

大多數 Pandas 類、方法和資料屬性都可以在 Spyder 的 編輯器IPython 控制檯 中進行自動補全,並且 Spyder 的 幫助窗格 可以檢索和渲染 Numpydoc 文件到 Pandas 物件,並使用 Sphinx 進行富文字顯示(自動和按需)。

Compose #

Compose 是一個用於資料標記和預測工程的機器學習工具。它允許您透過引數化預測問題來構建標記過程,並將時間驅動的關係資料轉換為目標值,並使用截止時間進行監督學習。

D-Tale #

D-Tale 是一個用於視覺化 Pandas 資料結構的輕量級 Web 客戶端。它提供了一個豐富的電子表格風格的網格,作為許多 Pandas 功能(查詢、排序、描述、相關性...)的包裝器,因此使用者可以快速操作他們的資料。還有一個使用 Plotly Dash 的互動式圖表構建器,允許使用者構建美觀的可移植視覺化。D-Tale 可以透過以下命令呼叫:

import dtale

dtale.show(df)

D-Tale 與 Jupyter Notebook、Python 終端、Kaggle 和 Google Colab 無縫整合。以下是 網格 的一些演示。

Featuretools #

Featuretools 是一個用於自動化特徵工程的 Python 庫,構建在 Pandas 之上。它擅長將時間序列和關係型資料集轉換為特徵矩陣,用於機器學習,使用可重用的特徵工程“原始基元”。使用者可以貢獻自己的 Python 原始基元並與社群共享。

IPython Vega #

IPython Vega 利用 Vega 在 Jupyter Notebook 中建立圖表。

plotnine #

Hadley Wickham 的 ggplot2 是 R 語言的基礎性探索性視覺化包。基於 “圖形語法”,它提供了一種強大、宣告式且極其通用的方法來生成任何型別資料的定製化圖表。其他語言的各種實現都可用。Python 使用者的一個良好實現是 has2k1/plotnine

pygwalker #

PyGWalker 是一個互動式資料視覺化和探索性資料分析工具,基於 Graphic Walker 構建,支援視覺化、清理和標註工作流。

pygwalker 可以將互動式建立的圖表儲存到 Graphic-Walker 和 Vega-Lite JSON。

import pygwalker as pyg
pyg.walk(df)

seaborn #

Seaborn 是一個基於 matplotlib 的 Python 視覺化庫。它提供了一個高階、面向資料集的介面,用於建立有吸引力的統計圖。Seaborn 中的繪圖函數理解 Pandas 物件,並在內部利用 Pandas 分組操作來支援複雜視覺化的簡潔規範。Seaborn 還超越了 matplotlib 和 Pandas,可以選擇在繪圖時進行統計估計,跨觀測聚合,並可視化統計模型的擬合,以強調資料集中的模式。

import seaborn as sns
sns.set_theme()

skrub #

Skrub 促進資料幀上的機器學習。它連線 Pandas 與 scikit-learn 及相關庫。特別是,它有助於從資料幀構建特徵。

Statsmodels #

Statsmodels 是著名的 Python “統計和計量經濟學庫”,它與 Pandas 長期保持著特殊的合作關係。Statsmodels 提供了 Pandas 範圍之外強大的統計、計量經濟學、分析和建模功能。Statsmodels 利用 Pandas 物件作為計算的基礎資料容器。

STUMPY #

STUMPY 是一個用於現代時間序列分析的強大且可擴充套件的 Python 庫。其核心是 STUMPY 高效地計算一種稱為 矩陣輪廓 的東西,它可以用於各種時間序列資料探勘任務。