生态系统
越来越多的软件包构建在 pandas 之上,以满足数据准备、分析和可视化方面的特定需求。这是令人鼓舞的,因为这意味着 pandas 不仅可以帮助用户处理数据任务,而且还为开发人员构建强大且更有针对性的数据工具提供了更好的起点。创建补充 pandas 功能的库也使 pandas 的开发能够继续关注其原始需求。
这是社区维护的项目列表,这些项目基于 pandas 构建,以便在 PyData 空间中提供工具。pandas 核心开发团队不一定认可此列表中的任何特定项目,也不一定了解任何特定库的维护状态。
有关依赖 pandas 的项目的更完整列表,请参阅pandas 的librarys.io 使用页面或在 pypi 中搜索 pandas。
我们希望让用户更容易找到这些项目,如果您知道您认为应该在此列表中的其他重要项目,请告诉我们。
统计和机器学习
pandas-tf记录
轻松将 pandas 数据帧保存为张量流 tfrecords 格式并将 tfrecords 读取到 pandas。
统计模型
Statsmodels 是著名的 Python“统计和计量经济学库”,它与 pandas 有着长期的特殊关系。Statsmodels 提供了强大的统计、计量经济学、分析和建模功能,这些功能超出了 pandas 的范围。Statsmodels 利用 pandas 对象作为计算的底层数据容器。
sklearn-pandas
在scikit-learn ML 管道中使用 pandas DataFrame 。
特征工具
Featuretools 是一个基于 pandas 构建的自动化特征工程 Python 库。它擅长使用可重用的特征工程“基元”将时态和关系数据集转换为用于机器学习的特征矩阵。用户可以在 Python 中贡献自己的原语,并与社区其他成员分享。
撰写
Compose 是一种用于标记数据和预测工程的机器学习工具。它允许您通过参数化预测问题并将时间驱动的关系数据转换为具有可用于监督学习的截止时间的目标值来构建标记过程。
矮墩墩
STUMPY 是一个强大且可扩展的 Python 库,用于现代时间序列分析。STUMPY 的核心是有效地计算称为 矩阵轮廓的东西,它可用于各种时间序列数据挖掘任务。
可视化
牵牛星
Altair 是 Python 的声明式统计可视化库。借助 Altair,您可以花更多时间了解数据及其含义。Altair 的 API 简单、友好且一致,建立在强大的 Vega-Lite JSON 规范之上。这种优雅的简单性可以用最少的代码产生美丽而有效的可视化效果。Altair 使用 Pandas DataFrames。
散景
Bokeh 是一个用于大型数据集的 Python 交互式可视化库,本身使用最新的 Web 技术。其目标是以 Protovis/D3 风格提供优雅、简洁的新颖图形结构,同时向瘦客户端提供大数据的高性能交互性。
Pandas-Bokeh为 Bokeh 提供了一个高级 API,可以通过以下方式作为本机 Pandas 绘图后端加载:
pd.set_option("plotting.backend", "pandas_bokeh")
它与 matplotlib 绘图后端非常相似,但提供基于 Web 的交互式图表和地图。
西博恩
Seaborn 是一个基于 matplotlib的 Python 可视化库。它提供了一个高级的、面向数据集的界面,用于创建有吸引力的统计图形。seaborn 中的绘图函数可以理解 pandas 对象,并在内部利用 pandas 分组操作来支持复杂可视化的简洁规范。Seaborn 还超越了 matplotlib 和 pandas,可以在绘图时执行统计估计、聚合观察结果以及可视化统计模型的拟合度以强调数据集中的模式。
普罗提宁
Hadley Wickham 的ggplot2是 R 语言的基础探索性可视化包。基于“图形语法”, 它提供了一种强大的、声明性的且极其通用的方法来生成任何类型数据的定制绘图。其他语言的各种实现都是可用的。对于 Python 用户来说,一个很好的实现是has2k1/plotnine。
IPython织女星
IPython Vega利用Vega在 Jupyter Notebook 中创建绘图。
阴谋
Plotly 的 Python API 支持交互式图形和网络共享。地图、2D、3D 和实时流图表均使用 WebGL 和 D3.js渲染。该库支持直接从 pandas DataFrame 进行绘图和基于云的协作。matplotlib、Python 的 ggplot 和 Seaborn的用户可以将图形转换为基于 Web 的交互式绘图。绘图可以在 IPython Notebooks中绘制、使用 R 或 MATLAB 编辑、在 GUI 中修改或嵌入到应用程序和仪表板中。Plotly 免费、无限制共享,并拥有 供私人使用的云、 离线或 本地帐户。
勒克斯
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 可视化,而无需考虑代码级别。
QtPandas
qtpandas库从主 pandas 库中分离出来, 支持 PyQt4 和 PySide 应用程序中的 DataFrame 可视化和操作。
D-故事
D-Tale 是一个轻量级 Web 客户端,用于可视化 pandas 数据结构。它提供了丰富的电子表格样式网格,充当许多 pandas 功能(查询、排序、描述、校正...)的包装器,以便用户可以快速操作数据。还有一个使用 Plotly Dash 的交互式图表构建器,允许用户构建漂亮的便携式可视化效果。可以使用以下命令调用 D-Tale
import dtale
dtale.show(df)
D-Tale 与 Jupyter 笔记本、Python 终端、Kaggle 和 Google Colab 无缝集成。以下是网格的一些演示。
高压图
hvPlot 是基于HoloViews构建的 PyData 生态系统的高级绘图 API 。它可以作为本地 pandas 绘图后端加载
pd.set_option("plotting.backend", "hvplot")
集成开发环境
Python
IPython 是一个交互式命令 shell 和分布式计算环境。IPython 选项卡补全适用于 Pandas 方法以及 DataFrame 列等属性。
Jupyter 笔记本/Jupyter 实验室
Jupyter Notebook 是一个用于创建 Jupyter 笔记本的 Web 应用程序。Jupyter 笔记本是一个 JSON 文档,其中包含输入/输出单元格的有序列表,其中可以包含代码、文本、数学、绘图和富媒体。jupyter convert
Jupyter 笔记本可以通过 Web 界面和shell中的“下载为”转换为多种开放标准输出格式(HTML、HTML 演示幻灯片、LaTeX、PDF、ReStructuredText、Markdown、Python)。
Jupyter Notebook 使用Pandas DataFrames 实现_repr_html_
和方法来显示(缩写的)HTML 或 LaTeX 表。_repr_latex
LaTeX 输出已正确转义。(注意:HTML 表可能与非 HTML Jupyter 输出格式兼容,也可能不兼容。)
请参阅
pandas 设置的选项和设置display.
。
modin 项目/modin 电子表格
modin-spreadsheet 是一个交互式网格,用于在 IPython Notebook 中对 DataFrame 进行排序和过滤。它是 qgrid 的一个分支,由 modin 项目积极维护。modin-spreadsheet 提供与 qgrid 类似的功能,并允许以表格格式轻松进行数据探索和操作。
蜘蛛侠
Spyder 是一款基于 PyQt 的跨平台 IDE,它将软件开发工具的编辑、分析、调试和分析功能与 MATLAB 或 Rstudio 等科学环境的数据探索、交互式执行、深度检查和丰富的可视化功能相结合。
它的变量资源管理器允许用户像“电子表格”一样查看、操作和编辑 pandasIndex
和对象Series
,
包括复制和修改值、排序、显示“热图”、转换数据类型等。DataFrame
Pandas 对象还可以重命名、复制、添加新列、复制/粘贴到剪贴板(作为 TSV)以及保存/加载到文件。Spyder 还可以通过复杂的导入向导将数据从各种纯文本和二进制文件或剪贴板导入到新的 pandas DataFrame 中。
大多数 pandas 类、方法和数据属性都可以在 Spyder 的编辑器和IPython Console中自动完成,Spyder 的 帮助窗格可以使用 Sphinx 自动和按需检索和呈现有关 pandas 对象的富文本 Numpydoc 文档。
应用程序编程接口
pandas-datareader
pandas-datareader
是 pandas 的远程数据访问库(PyPI:)pandas-datareader
。它基于 v0.19 中的功能pandas.io.data
,pandas.io.wb
但在 v0.19 中被拆分。在pandas-datareader 文档中查看更多内容:
可以使用以下数据源:
- 谷歌财经
- 廷戈
- 晨星公司
- 离子交换层析
- 罗宾汉
- 谜
- 康德尔
- 弗雷德
- 法玛/法国
- 世界银行
- 经合组织
- 欧盟统计局
- TSP基金数据
- 纳斯达克交易商符号定义
- Stooq 指数数据
- 莫EX数据
quandl/Python
Quandl API for Python 包装 Quandl REST API 以返回带有时间序列索引的 Pandas DataFrame。
pydatastream
PyDatastream 是Thomson Dataworks Enterprise (DWE/Datastream) SOAP API的 Python 接口,用于返回带有财务数据的索引 Pandas DataFrame。此包需要此 API 的有效凭据(非免费)。
PandasSDMX
pandaSDMX 是一个用于检索和获取SDMX 2.1中传播的统计数据和元数据的库,SDMX 2.1 是统计局、中央银行和国际组织等机构广泛使用的 ISO 标准。pandaSDMX 可以将数据集和相关结构元数据公开,包括数据流、代码列表和数据结构定义作为 pandas Series 或多索引 DataFrame。
弗雷达皮
fredapi 是圣路易斯联邦储备银行提供的美联储经济数据 (FRED)的 Python 接口。它可与包含时间点数据(即历史数据修订)的 FRED 数据库和 ALFRED 数据库配合使用。fredapi 为 FRED HTTP API 提供了 Python 包装器,还提供了几种方便的方法来解析和分析来自 ALFRED 的时间点数据。fredapi 使用 pandas 并返回 Series 或 DataFrame 中的数据。该模块需要 FRED API 密钥,您可以在 FRED 网站上免费获取该密钥。
数据帧_sql
dataframe_sql
是一个 Python 包,它将 SQL 语法直接转换为 pandas DataFrame 上的操作。当从数据库迁移到使用 pandas 时,或者对于更熟悉 SQL 的用户寻找与 pandas 交互的方法时,这非常有用。
特定领域
大Pandas
Geopandas 扩展了 pandas 数据对象以包含支持几何运算的地理信息。如果您的工作涉及地图和地理坐标,并且您喜欢Pandas,那么您应该仔细看看 Geopandas。
古罗比Pandas
gurobipy-pandas 提供了一个方便的访问器 API 将 pandas 与 gurobipy 连接。它使用户能够更轻松、更高效地从 DataFrame 和 Series 中存储的数据构建数学优化模型,并直接将解决方案作为 pandas 对象读回。
楼梯
stairs 是一个数据分析包,基于 pandas 和 numpy 构建,用于数学阶跃函数的建模和操作。它为在实数、日期时间和时间增量域上定义的步骤函数提供了丰富的算术运算、关系运算、逻辑运算、统计运算和聚合。
阵列
xarray 通过提供核心 pandas 数据结构的 N 维变体,将 pandas 的标记数据能力带入物理科学。它的目标是提供一个类似 pandas 且与 pandas 兼容的工具包,用于分析多维数组,而不是 pandas 擅长的表格数据。
IO
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
BCPPandas
BCPandas 提供从 pandas 到 Microsoft SQL Server 的高性能写入,远远超过本机df.to_sql
方法的性能。在内部,它使用 Microsoft 的 BCP 实用程序,但复杂性完全从最终用户手中抽象出来。经过严格测试,它是df.to_sql
.
三角洲湖
Deltalake python 包允许您使用 Python 本地访问存储在
Delta Lake中的表,而无需使用 Spark 或 JVM。它提供了delta_table.to_pyarrow_table().to_pandas()
将任何 Delta 表转换为 Pandas 数据帧的方法。
核外
火焰
Blaze 提供了一个标准 API,用于使用各种内存中和磁盘后端进行计算:NumPy、Pandas、SQLAlchemy、MongoDB、PyTables、PySpark。
赛昂
Cylon 是一个快速、可扩展、分布式内存并行运行时,具有类似 pandas 的 Python DataFrame API。“Core Cylon”是用 C++ 实现的,使用 Apache Arrow 格式来表示内存中的数据。Cylon DataFrame API 实现了 pandas 的大部分核心运算符,例如合并、过滤、连接、连接、分组、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 是一个用于分析的灵活并行计算库。DaskDataFrame
为核外、并行和分布式计算提供了熟悉的界面。
Dask-ML
Dask-ML 使用 Dask 以及 Scikit-Learn、XGBoost 和 TensorFlow 等现有机器学习库来实现并行和分布式机器学习。
宜必思酒店
Ibis 提供了一种编写分析代码的标准方法,可以在多个引擎中运行。它有助于弥合本地 Python 环境(如 pandas)与远程存储和执行系统(如 Hadoop 组件(如 HDFS、Impala、Hive、Spark)和 SQL 数据库(Postgres 等))之间的差距。
考拉
Koalas 在 Apache Spark 之上提供了熟悉的 pandas DataFrame 接口。它使用户能够利用一台机器或一组机器上的多核来加速或扩展他们的 DataFrame 代码。
莫丁
DataFramemodin.pandas
是 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!
奥多
Odo 提供了一个统一的 API,用于在不同格式之间移动数据。它使用 pandas 自己read_csv
的 CSV IO 并利用许多现有的软件包(例如 PyTables、h5py 和 pymongo)在非 pandas 格式之间移动数据。最终用户还可以将其基于图形的方法扩展为对于 odo 核心来说可能过于具体的自定义格式。
潘达拉雷尔
Pandarallel 提供了一种简单的方法,只需更改一行代码即可在所有 CPU 上并行化 pandas 操作。如果还显示进度条。
from pandarallel import pandarallel
pandarallel.initialize(progress_bar=True)
# df.apply(func)
df.parallel_apply(func)
射线
Pandas on Ray 是一个早期的 DataFrame 库,它包装 Pandas 并透明地分发数据和计算。用户不需要知道他们的系统有多少个核心,也不需要指定如何分配数据。事实上,用户可以继续使用之前的 Pandas 笔记本,同时体验 Pandas on Ray 带来的显着加速,即使在单台机器上也是如此。只需要修改导入语句,如下所示。更改导入语句后,您就可以像使用 Pandas 一样在 Ray 上使用 Pandas 了。
# import pandas as pd
import ray.dataframe as pd
瓦克斯
越来越多的软件包构建在 pandas 之上,以满足数据准备、分析和可视化方面的特定需求。Vaex 是一个用于 Out-of-Core DataFrames(类似于 Pandas)的 Python 库,用于可视化和探索大型表格数据集。它可以在 N 维网格上计算每秒多达 10 亿 (10^9) 个对象/行的统计数据,例如平均值、总和、计数、标准差等。可视化是使用直方图、密度图和 3D 体积渲染完成的,允许对大数据进行交互式探索。Vaex 使用内存映射、零内存复制策略和惰性计算来实现最佳性能(不浪费内存)。
vaex.from_pandas
vaex.to_pandas_df
冰雹查询
一个为遗传学界服务的外核、可抢占安全、分布式数据框架库。Hail Query 附带磁盘数据格式、内存数据格式、表达式编译器、查询规划器和分布式排序算法,所有这些都旨在加速对大型基因组测序数据矩阵的查询。
使用 pandas 来操作 Hail 生成的摘要统计数据或其他小聚合通常是最简单的。因此,Hail 提供了 pandas DataFrame 的本机导入和导出:
数据清理和验证
pyjanitor
Pyjanitor 提供了一个干净的 API,使用方法链来清理数据。
潘德拉
Pandera 提供了灵活且富有表现力的 API,用于对数据帧执行数据验证,使数据处理管道更具可读性和鲁棒性。数据帧包含 pandera 在运行时显式验证的信息。这在生产关键数据管道或可重复的研究环境中非常有用。
王苑
Engarde 是一个轻量级库,用于明确陈述您对数据集的假设并检查它们是否确实正确。
扩展数据类型
Pandas 提供了一个用于定义 扩展类型的接口来扩展 NumPy 的类型系统。以下库实现该接口以提供 NumPy 或 pandas 中未找到的类型,这些类型与 pandas 的数据容器配合良好。
尴尬的Pandas
Awkward-pandas 提供了一种扩展类型,用于在 pandas 的 Series 和 DataFrame 中存储Awkward 数组。它还提供了一个访问器,用于在 Series 上使用笨拙类型的笨拙函数。
赛博Pandas
Cyberpandas 提供了一种用于存储 IP 地址数组的扩展类型。这些数组可以存储在 pandas 的 Series 和 DataFrame 中。
Pandas基因组学
Pandas-Genomics 提供了用于处理基因组数据的扩展类型和扩展数组。它还包括genomics
与基因组数据的 QC 和分析相关的许多有用属性和方法的访问器。
鳅属
physipy
Physipandas 提供了用于操作与物理单位(如米或焦耳)相关的物理量(如标量和 numpy.ndarray)的扩展,以及用于将访问器与 pandas Series 和 Dataframe集成的附加功能
。
品脱Pandas
Pint-Pandas 提供了一种扩展类型,用于存储带单位的数值数组。这些数组可以存储在 pandas 的 Series 和 DataFrame 中。使用 pint 扩展数组的 Series 和 DataFrame 列之间的操作是单位感知的。
文本扩展
Pandas 文本扩展提供了扩展类型来涵盖用于表示自然语言数据的常见数据结构,以及将流行自然语言处理库的输出转换为 Pandas DataFrame 的库集成。
配件
提供扩展访问器的项目目录 。这是为了让用户发现新的访问器,并让库作者在命名空间上进行协调。
图书馆 | 附件 | 课程 |
---|---|---|
awkward-pandas | ak |
Series |
cyberpandas | ip |
Series |
pdvega | vgplot |
Series ,DataFrame |
pandas-genomics | genomics |
Series ,DataFrame |
pandas_path | path |
Index ,Series |
pint-pandas | pint |
Series ,DataFrame |
physipandas | physipy |
Series ,DataFrame |
composeml | slice |
DataFrame |
datatest | validate |
Series ,DataFrame |
composeml | slice |
DataFrame |
gurobipy-pandas | gppd |
Series ,DataFrame |
staircase | sc |
Series ,DataFrame |
woodwork | slice |
Series ,DataFrame |
开发工具
pandas 存根
虽然 pandas 存储库是部分类型的,但包本身不会公开此信息以供外部使用。安装 pandas-stubs 以启用 pandas API 的基本类型覆盖。
通过阅读这些问题 14468、26766、28142了解更多信息。
请参阅GitHub 页面上的安装和使用说明。
汉密尔顿
Hamilton 是一个来自 Stitch Fix 的声明式数据流框架。它旨在帮助人们管理 Pandas 代码库,特别是在机器学习模型的特征工程方面。
它规定了一个固执己见的范例,确保所有代码都是:
- 可进行单元测试
- 集成测试友好
- 文档友好
- 转换逻辑是可重用的,因为它与使用它的上下文分离。
- 可与运行时数据质量检查集成。
这有助于扩展 pandas 代码库,同时保持较低的维护成本。
有关更多信息,请参阅文档。