生态系统
越来越多的软件包在 pandas 的基础上构建,以满足数据准备、分析和可视化的特定需求。这令人鼓舞,因为它意味着 pandas 不仅帮助用户处理数据任务,还为开发者构建强大且更专注的数据工具提供了更好的起点。创建补充 pandas 功能的库也使 pandas 的开发能够围绕其原始需求保持专注。
这是一个社区维护的、基于 pandas 构建的项目列表,旨在 PyData 领域提供工具。pandas 核心开发团队不一定认可此列表上的任何特定项目,也不对任何特定库的维护状态有所了解。
如需查看更完整的依赖于 pandas 的项目列表,请参见 libraries.io pandas 用法页面 或 在 pypi 上搜索 pandas。
我们希望用户能更容易找到这些项目,如果您知道其他您认为应该列在此列表中的重要项目,请告知我们。
统计学与机器学习
Statsmodels
Statsmodels 是著名的 Python“统计学和计量经济学库”,与 pandas 有着长期的特殊关系。Statsmodels 提供强大的统计学、计量经济学、分析和建模功能,这些功能超出了 pandas 的范围。Statsmodels 利用 pandas 对象作为底层数据容器进行计算。
skrub
Skrub 方便在数据帧 (dataframes) 上进行机器学习。它连接了 pandas 与 scikit-learn 及相关库。特别是,它有助于从数据帧构建特征。
Featuretools
Featuretools 是一个基于 pandas 构建的 Python 库,用于自动化特征工程。它擅长使用可重用的特征工程“基元 (primitives)”将时序和关系数据集转换为机器学习的特征矩阵。用户可以用 Python 贡献自己的基元并与社区其他人分享。
Compose
Compose 是一个用于数据标注和预测工程的机器学习工具。它允许你通过参数化预测问题,并将时间驱动的关系数据转换为具有截止时间的、可用于监督学习的目标值来构建标注流程。
STUMPY
STUMPY 是一个强大且可扩展的 Python 库,用于现代时间序列分析。其核心在于高效计算一种称为 矩阵剖面 (matrix profile) 的东西,可用于各种时间序列数据挖掘任务。
可视化
Altair
Altair 是一个用于 Python 的声明式统计可视化库。使用 Altair,你可以花更多时间理解你的数据及其含义。Altair 的 API 简单、友好且一致,构建在强大的 Vega-Lite JSON 规范之上。这种优雅的简洁性只需少量代码即可生成美观有效的可视化。Altair 可与 Pandas DataFrame 一起使用。
Bokeh
Bokeh 是一个用于大型数据集的 Python 交互式可视化库,它原生使用最新的 Web 技术。其目标是以 Protovis/D3 的风格提供优雅、简洁的新颖图形构建,同时为瘦客户端提供对大型数据的高性能交互。
Pandas-Bokeh 为 Bokeh 提供了一个高级 API,可以通过以下方式作为原生的 Pandas 绘图后端加载
pd.set_option("plotting.backend", "pandas_bokeh")
它与 matplotlib 绘图后端非常相似,但提供了交互式的 Web 图表和地图。
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()
plotnine
Hadley Wickham 的 ggplot2 是 R 语言的一个基础探索性可视化包。它基于 “图形的语法 (The Grammar of Graphics)”,提供了一种强大、声明式且极其通用的方式来生成任何类型数据的定制图表。有多种针对其他语言的实现。一个很好的 Python 用户实现是 has2k1/plotnine。
IPython Vega
IPython Vega 利用 Vega 在 Jupyter Notebook 中创建图表。
Plotly
Plotly 的 Python API 支持交互式图形和 Web 共享。地图、2D、3D 和直播图表使用 WebGL 和 D3.js 渲染。该库支持直接从 pandas DataFrame 绘图以及基于云的协作。matplotlib、ggplot for Python 和 Seaborn 的用户可以将图形转换为交互式 Web 图表。图表可以在 IPython Notebooks 中绘制,用 R 或 MATLAB 编辑,在 GUI 中修改,或嵌入到应用程序和仪表板中。Plotly 提供无限制的免费共享,并提供云、离线或本地部署账户用于私人使用。
Lux
Lux 是一个 Python 库,通过自动化视觉数据探索过程,方便快速轻松地进行数据实验。要使用 Lux,只需在导入 pandas 的同时添加一个额外的导入即可
import lux
import pandas as pd
df = pd.read_csv("data.csv")
df # discover interesting insights!
通过打印出数据帧,Lux 会自动 推荐一组可视化,突出显示数据帧中有趣的趋势和模式。用户无需修改代码即可利用任何现有的 pandas 命令,同时能够可视化其 pandas 数据结构(例如 DataFrame, Series, Index)。Lux 还提供了一种 强大、直观的语言,允许用户创建 Altair、matplotlib 或 Vega-Lite 可视化,而无需考虑代码层面。
D-Tale
D-Tale 是一个轻量级的 Web 客户端,用于可视化 pandas 数据结构。它提供了一个丰富的电子表格风格网格,作为许多 pandas 功能(查询、排序、描述、相关性等)的封装器,因此用户可以快速操作其数据。还有一个使用 Plotly Dash 构建的交互式图表生成器,允许用户构建美观的可移植可视化。D-Tale 可以通过以下命令调用
import dtale
dtale.show(df)
D-Tale 与 Jupyter notebooks、Python 终端、Kaggle 和 Google Colab 无缝集成。这里有一些 网格 的演示。
hvplot
hvPlot 是一个构建在 HoloViews 之上的、用于 PyData 生态系统的高级绘图 API。它可以通过以下方式作为原生的 pandas 绘图后端加载
pd.set_option("plotting.backend", "hvplot")
集成开发环境 (IDE)
IPython
IPython 是一个交互式命令行 Shell 和分布式计算环境。IPython 的 Tab 补全功能适用于 Pandas 方法以及 DataFrame 列等属性。
Jupyter Notebook / Jupyter Lab
Jupyter Notebook 是一个用于创建 Jupyter Notebooks 的 Web 应用程序。Jupyter Notebook 是一个 JSON 文档,包含按顺序排列的输入/输出单元格列表,这些单元格可以包含代码、文本、数学、图表和富媒体。Jupyter Notebooks 可以通过 Web 界面的“下载为 (Download As)”选项和 Shell 中的 jupyter convert
命令转换为多种开放标准输出格式(HTML、HTML 演示文稿、LaTeX、PDF、ReStructuredText、Markdown、Python)。
Pandas DataFrame 实现了 _repr_html_
和 _repr_latex
方法,Jupyter Notebook 利用这些方法显示(缩略的)HTML 或 LaTeX 表格。LaTeX 输出会正确转义。(注意:HTML 表格可能与非 HTML 的 Jupyter 输出格式不兼容。)
有关 pandas display.
设置,请参见 选项与设置。
Spyder
Spyder 是一个基于 PyQt 的跨平台 IDE,它将软件开发工具的编辑、分析、调试和性能分析功能与 MATLAB 或 Rstudio 等科学环境的数据探索、交互执行、深度检查和丰富的可视化功能相结合。
其 变量浏览器 (Variable Explorer) 允许用户像“电子表格”一样查看、操作和编辑 pandas Index
、Series
和 DataFrame
对象,包括复制和修改值、排序、显示“热力图 (heatmap)”、转换数据类型等。Pandas 对象还可以被重命名、复制、添加新列、从剪贴板复制/粘贴(作为 TSV),并保存/加载到文件。Spyder 还可以通过一个复杂的导入向导,从各种纯文本和二进制文件或剪贴板导入数据到新的 pandas DataFrame 中。
大多数 pandas 类、方法和数据属性可以在 Spyder 的 编辑器 (Editor) 和 IPython 控制台 (IPython Console) 中自动补全,并且 Spyder 的 帮助面板 (Help pane) 可以自动或按需检索并使用 Sphinx 将 pandas 对象的 Numpydoc 文档渲染为富文本。
marimo
marimo 是一个用于 Python 和 SQL 的响应式 Notebook,可以提高使用数据帧时的生产力。它提供了几个功能,使数据操作和可视化更加互动和有趣
- 丰富的交互式显示:marimo 可以在具有过滤和排序功能的交互式表格或图表中显示 pandas 数据帧。
- 数据选择:用户可以在表格或基于 pandas 的图表中选择数据,并且选择会自动作为 pandas 数据帧发送到 Python。
- 无代码转换:用户可以使用 GUI 交互地转换 pandas 数据帧,而无需编写代码。生成的代码可以复制并粘贴到 Notebook 中。
- 自定义过滤器:marimo 允许使用滑块和下拉列表等 UI 元素创建基于 pandas 的过滤器。
- 数据集浏览器:marimo 自动发现并显示 Notebook 中的所有数据帧,允许用户交互地探索和可视化数据。
- SQL 集成:marimo 允许用户对内存中存在的任何 pandas 数据帧编写 SQL 查询。
API
pandas-datareader
pandas-datareader
是一个用于 pandas 的远程数据访问库 (PyPI:pandas-datareader
)。它基于原位于 pandas.io.data
和 pandas.io.wb
中的功能,但在 v0.19 版本中被拆分出来。更多信息请参见 pandas-datareader 文档
提供以下数据源:
- Google Finance
- Tiingo
- Morningstar
- IEX
- Robinhood
- Enigma
- Quandl
- FRED
- Fama/French
- World Bank (世界银行)
- OECD (经济合作与发展组织)
- Eurostat (欧盟统计局)
- TSP 基金数据
- 纳斯达克交易员符号定义
- Stooq 指数数据
- MOEX 数据
pandaSDMX
pandaSDMX 是一个用于检索和获取以 SDMX 2.1 格式发布的统计数据和元数据的库。SDMX 是一种 ISO 标准,被统计机构、中央银行和国际组织等广泛使用。pandaSDMX 可以将数据集及相关结构化元数据(包括数据流、代码列表和数据结构定义)作为 pandas Series 或 MultiIndexed DataFrame 暴露出来。
fredapi
fredapi 是一个 Python 接口,用于访问圣路易斯联邦储备银行提供的 联邦储备经济数据 (FRED)。它既适用于 FRED 数据库,也适用于包含时点数据(即历史数据修订)的 ALFRED 数据库。fredapi 在 Python 中提供了 FRED HTTP API 的封装,还提供了几个方便的方法用于解析和分析来自 ALFRED 的时点数据。fredapi 使用 pandas,并以 Series 或 DataFrame 的形式返回数据。此模块需要一个 FRED API 密钥,您可以在 FRED 网站上免费获取。
特定领域
Geopandas
Geopandas 扩展了 pandas 数据对象,使其包含地理信息并支持几何操作。如果您的工作涉及地图和地理坐标,并且您喜欢 pandas,那么您应该仔细看看 Geopandas。
gurobipy-pandas
gurobipy-pandas 提供了一个方便的 accessor API 来连接 pandas 和 gurobipy。它使用户能够更轻松高效地从存储在 DataFrame 和 Series 中的数据构建数学优化模型,并直接将解决方案作为 pandas 对象读回。
staircase
staircase 是一个构建在 pandas 和 numpy 之上的数据分析包,用于数学阶梯函数 (step functions) 的建模和操作。它为定义在实数、日期时间 (datetime) 和时间差 (timedelta) 域上的阶梯函数提供了丰富的算术运算、关系运算、逻辑运算、统计运算和聚合功能。
xarray
xarray 通过提供核心 pandas 数据结构的 N 维变体,将 pandas 的标记数据 (labeled data) 能力带入物理科学领域。它旨在为多维数组分析提供一个类似 pandas 且与 pandas 兼容的工具包,而非 pandas 擅长的表格数据。
输入/输出 (IO)
NTV-pandas
NTV-pandas 提供了一个 JSON 转换器,支持比 pandas 直接支持的更多数据类型。
它支持以下数据类型:
- pandas 数据类型
- NTV 格式 中定义的数据类型
- Table Schema 规范 中定义的数据类型
该接口始终是可逆的(往返转换),支持两种格式(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
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 数据帧。
pandas-gbq
pandas-gbq 提供了与 Google BigQuery 进行高性能读写的功能。之前(在 2.2.0 版本之前),这些方法作为 pandas.read_gbq
和 DataFrame.to_gbq
公开。请改用 pandas_gbq.read_gbq
和 pandas_gbq.to_gbq
。
ArcticDB
ArcticDB 是一个为 Python 数据科学生态系统设计的无服务器 DataFrame 数据库引擎。ArcticDB 使您能够大规模存储、检索和处理 pandas DataFrame。它是一个为对象存储设计的存储引擎,也支持使用 LMDB 进行本地磁盘存储。ArcticDB 除了运行中的 Python 环境和对象存储访问之外,不需要额外的基础设施,可以在几秒钟内安装。完整的文档请参见 此处。
ArcticDB 术语
ArcticDB 的结构提供了可扩展且高效的方式来管理和检索 DataFrame,主要分为几个关键组件:
Object Store
库的集合。用于将逻辑环境彼此分开。类似于数据库服务器。Library
包含多个按特定方式(不同用户、市场等)分组的符号。类似于数据库。Symbol
数据存储的原子单元。通过字符串名称标识。存储在符号下的数据与 pandas DataFrame 非常相似。类似于表格。Version
对符号执行的每一个修改操作(写入、追加、更新)都会创建该对象的一个新版本。
安装
要安装,只需运行
pip install arcticdb
要开始使用,我们可以导入 ArcticDB 并实例化它
import arcticdb as adb
import numpy as np
import pandas as pd
# this will set up the storage using the local file system
arctic = adb.Arctic("lmdb://arcticdb_test")
注意:ArcticDB 支持任何兼容 S3 API 的存储,包括 AWS。ArcticDB 也支持 Azure Blob 存储。
ArcticDB 还支持 LMDB 用于本地/基于文件的存储 - 要使用 LMDB,请将 LMDB 路径作为 URI 传递:adb.Arctic('lmdb://path/to/desired/database')
。
库设置
ArcticDB 旨在存储许多(可能数百万个)表。单个表 (DataFrame) 称为符号 (symbol),存储在称为库 (libraries) 的集合中。一个库可以存储许多符号。库在使用前必须先初始化
lib = arctic.get_library('sample', create_if_missing=True)
将数据写入 ArcticDB
现在我们已经设置好了一个库,可以开始读写数据了。ArcticDB 拥有一组用于 DataFrame 存储的简单函数。让我们将一个 DataFrame 写入存储。
df = pd.DataFrame(
{
"a": list("abc"),
"b": list(range(1, 4)),
"c": np.arange(3, 6).astype("u1"),
"d": np.arange(4.0, 7.0, dtype="float64"),
"e": [True, False, True],
"f": pd.date_range("20130101", periods=3)
}
)
df
df.dtypes
写入 ArcticDB。
write_record = lib.write("test", df)
注意:写入 pandas DataFrame 时,ArcticDB 支持以下索引类型:
- 包含 int64 的
pandas.Index
(或相应的专用类型 Int64Index, UInt64Index)RangeIndex
DatetimeIndex
- 由上述支持类型组成的
MultiIndex
head
/tail
中的“行 (row)”概念指的是行号 ('iloc'),而不是pandas.Index
中的值 ('loc')。
从 ArcticDB 读取数据
从存储中读回数据
read_record = lib.read("test")
read_record.data
df.dtypes
ArcticDB 还支持将存储中的数据追加、更新和查询到 pandas DataFrame。更多信息请参见 此处。
Hugging Face
Hugging Face 数据集中心 (Dataset Hub) 提供了社区共享的大量即用型机器学习数据集。该平台提供了友好的用户界面,用于探索、发现和可视化数据集,并通过 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")
提示:在数据集页面上,点击“使用此数据集 (Use this dataset)”即可获取在 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 数据集中心的更多信息。
核外计算 (Out-of-core)
Bodo
Bodo 是一个用于 Python 数据处理的高性能计算引擎。Bodo 使用自动并行化的即时 (JIT) 编译器,简化了将 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()
Cylon
Cylon 是一个快速、可伸缩的分布式内存并行运行时,具有类似 pandas 的 Python DataFrame API。“Core Cylon”使用 C++ 实现,并使用 Apache Arrow 格式表示内存中的数据。Cylon DataFrame API 实现了 pandas 的大多数核心操作符,如 merge、filter、join、concat、group-by、drop_duplicates 等。这些操作符旨在跨数千个核心工作以扩展应用程序。它可以通过从 pandas 读取数据或将数据转换为 pandas 来与 pandas DataFrame 互操作,以便用户可以选择性地扩展其 pandas DataFrame 应用程序的一部分。
from pycylon import read_csv, DataFrame, CylonEnv
from pycylon.net import MPIConfig
# Initialize Cylon distributed environment
config: MPIConfig = MPIConfig()
env: CylonEnv = CylonEnv(config=config, distributed=True)
df1: DataFrame = read_csv('/tmp/csv1.csv')
df2: DataFrame = read_csv('/tmp/csv2.csv')
# Using 1000s of cores across the cluster to compute the join
df3: Table = df1.join(other=df2, on=[0], algorithm="hash", env=env)
print(df3)
Dask
Dask 是一个灵活的并行计算库,用于分析。Dask 为核外、并行和分布式计算提供了熟悉的 DataFrame
接口。
Dask-ML
Dask-ML 通过将 Dask 与现有的机器学习库(如 Scikit-Learn、XGBoost 和 TensorFlow)结合使用,实现了并行和分布式机器学习。
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_csv
, read_excel
, read_parquet
等)。
# import pandas as pd
import modin.pandas as pd
df = pd.read_csv("big.csv") # use all your cores!
Pandarallel
Pandarallel 提供了一种简单的方法,只需更改一行代码,即可在所有 CPU 上并行化您的 pandas 操作。它还显示进度条。
from pandarallel import pandarallel
pandarallel.initialize(progress_bar=True)
# df.apply(func)
df.parallel_apply(func)
Vaex
越来越多的软件包在 pandas 的基础上构建,以满足数据准备、分析和可视化的特定需求。Vaex 是一个用于核外计算 (Out-of-Core) DataFrame(类似于 Pandas)的 Python 库,用于可视化和探索大型表格数据集。它可以在 N 维网格上计算统计数据,如均值、总和、计数、标准差等,速度高达每秒十亿 (10^9) 个对象/行。可视化使用直方图、密度图和 3D 体积渲染,支持对大数据进行交互式探索。Vaex 使用内存映射、零内存拷贝策略和惰性计算以获得最佳性能(不浪费内存)。
vaex.from_pandas
vaex.to_pandas_df
Hail Query
一个核外、可抢占安全、分布式的数据帧库,服务于遗传学社区。Hail Query 附带了磁盘数据格式、内存数据格式、表达式编译器、查询规划器和分布式排序算法,所有这些都旨在加速对大型基因组测序数据矩阵的查询。
通常,使用 pandas 处理 Hail 生成的汇总统计数据或其他小聚合结果是最容易的。因此,Hail 提供了与 pandas DataFrame 的原生导入和导出功能
数据清洗和验证
pyjanitor
Pyjanitor 提供了一个简洁的 API,用于使用方法链式调用进行数据清洗。
Pandera
Pandera 提供了一个灵活且富有表达力的 API,用于对数据帧执行数据验证,使数据处理管道更具可读性和健壮性。数据帧包含 Pandera 在运行时显式验证的信息。这在生产关键型数据管道或可复现研究设置中非常有用。
扩展数据类型
Pandas 提供了一个定义 扩展类型 的接口,用于扩展 NumPy 的类型系统。以下库实现了该接口,提供了 NumPy 或 pandas 中没有的类型,这些类型与 pandas 的数据容器配合良好。
awkward-pandas
Awkward-pandas 提供了一个扩展类型,用于在 pandas 的 Series 和 DataFrame 中存储 Awkward Arrays。它还提供了一个 accessor,用于在 awkward 类型的 Series 上使用 awkward 函数。
db-dtypes
db-dtypes 提供了扩展类型,用于处理来自数据库系统的 DATE、TIME 和 JSON 等类型。pandas-gbq 使用此包为没有自然 numpy 类型的 BigQuery 数据类型提供自然的 dtype。
Pandas-Genomics
Pandas-Genomics 提供了一个扩展类型和扩展数组,用于处理基因组数据。它还包括 genomics
accessor,用于处理与基因组数据 QC 和分析相关的许多有用属性和方法。
Physipandas
Physipandas 提供了一个扩展,用于操作物理量(如标量和 numpy.ndarray),并与物理单位(如米或焦耳)关联,还提供附加功能,用于将 physipy
accessor 与 pandas Series 和 DataFrame 集成。
Pint-Pandas
Pint-Pandas 提供了一个扩展类型,用于存储带单位的数值数组。这些数组可以存储在 pandas 的 Series 和 DataFrame 中。使用 pint 扩展数组的 Series 和 DataFrame 列之间的操作因此具有单位感知能力。
文本扩展
Pandas 的文本扩展 (Text Extensions) 提供了扩展类型,涵盖了表示自然语言数据的常见数据结构,以及将流行的自然语言处理库输出转换为 pandas DataFrame 的库集成。
Accessor
提供 扩展 accessor 的项目目录。这有助于用户发现新的 accessor,并帮助库作者协调命名空间。
库 | Accessor | 类 |
---|---|---|
awkward-pandas | 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-stubs
虽然 pandas 仓库是部分类型化的,但包本身不向外部暴露此信息。安装 pandas-stubs 以启用 pandas API 的基本类型覆盖。
阅读这些 issue 14468、26766、28142,了解更多信息。
请参阅 GitHub 页面 上的安装和使用说明。
Hamilton
Hamilton 是一个声明式数据流框架,起源于 Stitch Fix。它旨在帮助管理 Pandas 代码库,特别是与机器学习模型的特征工程相关的工作。
它提出了一种有主见的范式,确保所有代码都:
- 可进行单元测试
- 对集成测试友好
- 对文档友好
- 转换逻辑可重用,因为它与其使用上下文解耦。
- 可与运行时数据质量检查集成。
这有助于扩展您的 pandas 代码库,同时保持较低的维护成本。
更多信息,请参见文档。