软件包概览#

pandas 是一个 Python 包,提供快速、灵活且富有表现力的数据结构,旨在使“关系型”或“带标签”数据的工作既简单又直观。它旨在成为在 Python 中进行实际、真实世界数据分析的基础性高级构建块。此外,它的更广泛目标是成为任何语言中可用最强大、最灵活的开源数据分析/操作工具。它已经在这条道路上取得了良好的进展。

pandas 非常适用于多种不同类型的数据

  • 具有异构类型列的表格数据,如 SQL 表或 Excel 电子表格

  • 有序和无序(不一定是固定频率)的时间序列数据。

  • 带有行和列标签的任意矩阵数据(同构类型或异构类型)

  • 任何其他形式的观测/统计数据集。数据完全无需标签即可放入 pandas 数据结构中

pandas 的两个主要数据结构,Series(一维)和 DataFrame(二维),处理了金融、统计、社会科学以及许多工程领域中绝大多数典型用例。对于 R 用户来说,DataFrame 提供了 R 的 data.frame 所提供的一切,甚至更多。pandas 构建于 NumPy 之上,旨在与许多其他第三方库很好地集成到科学计算环境中。

以下是 pandas 擅长的一些方面

  • 轻松处理浮点数据和非浮点数据中的缺失数据(表示为 NaN)

  • 大小可变性:可以从 DataFrame 和更高维度的对象中插入和删除

  • 自动和显式数据对齐:对象可以显式对齐到一组标签,或者用户可以简单地忽略标签,让 SeriesDataFrame 等在计算中自动为您对齐数据

  • 强大、灵活的分组(group by)功能,可在数据集上执行拆分-应用-组合操作,用于聚合和转换数据

  • 使将其他 Python 和 NumPy 数据结构中不规则、索引不同的数据轻松转换为 DataFrame 对象

  • 基于标签的智能切片高级索引和大型数据集的子集选择

  • 直观地合并(merging)连接(joining)数据集

  • 灵活地重塑和透视数据集

  • 轴的分层标签(每个刻度可以有多个标签)

  • 强大的 I/O 工具,用于从平面文件(CSV 和分隔符文件)、Excel 文件、数据库加载数据,以及从超高速 HDF5 格式保存/加载数据

  • 时间序列特定功能:日期范围生成和频率转换、移动窗口统计、日期移动和滞后。

其中许多原则旨在解决使用其他语言/科学研究环境时经常遇到的缺点。对于数据科学家来说,数据处理通常分为多个阶段:数据整理和清洗、分析/建模,然后将分析结果组织成适合绘图或表格显示的形式。pandas 是完成所有这些任务的理想工具。

其他注意事项

  • pandas 速度快。许多底层算法部分已在 Cython 代码中进行了大量调整。然而,与任何其他事物一样,泛化通常会牺牲性能。因此,如果您的应用程序专注于一个功能,您也许能够创建一个更快的专用工具。

  • pandas 是 statsmodels 的一个依赖项,使其成为 Python 统计计算生态系统的重要组成部分。

  • pandas 已在金融应用的生产环境中广泛使用。

数据结构#

维度

名称

描述

1

Series

一维带标签的同构类型数组

2

DataFrame

通用的二维带标签、大小可变的表格结构,其列可能具有异构类型

为什么有不止一种数据结构?#

理解 pandas 数据结构的最好方式是将其视为低维数据的灵活容器。例如,DataFrame 是 Series 的容器,而 Series 是标量的容器。我们希望能够以类似字典的方式在这些容器中插入和移除对象。

此外,我们希望公共 API 函数具有合理的默认行为,这些行为会考虑时间序列和横截面数据集的典型方向。当使用 N 维数组 (ndarrays) 存储二维和三维数据时,用户在编写函数时需要考虑数据集的方向;轴被认为是或多或少等效的(除非 C 语言或 Fortran 语言的连续性对性能很重要)。在 pandas 中,轴旨在赋予数据更多的语义意义;即,对于一个特定的数据集,很可能存在一种“正确”的数据方向。因此,目标是减少在下游函数中编写数据转换所需的脑力劳动。

例如,对于表格数据 (DataFrame),从语义上考虑索引(行)和比考虑轴 0 和轴 1 更有帮助。因此,遍历 DataFrame 的列会使代码更具可读性

for col in df.columns:
    series = df[col]
    # do something with series

数据的可变性和复制#

所有 pandas 数据结构都是值可变的(它们包含的值可以被修改),但并非总是大小可变的。Series 的长度不能改变,但例如,列可以插入到 DataFrame 中。然而,绝大多数方法会产生新对象并保持输入数据不变。通常,我们倾向于在合理的情况下支持不变性

获取支持#

获取 pandas 问题和想法的第一站是 GitHub 问题跟踪器。如果您有一般性问题,pandas 社区专家可以通过 Stack Overflow 回答。

社区#

如今,pandas 得到了全球志同道合的社区成员的积极支持,他们贡献宝贵的时间和精力,使开源 pandas 成为可能。感谢所有贡献者

如果您有兴趣贡献,请访问贡献指南

pandas 是一个 NumFOCUS 赞助项目。这将有助于确保 pandas 作为世界级开源项目开发的成功,并使其能够捐赠给该项目。

项目治理#

pandas 项目自 2008 年成立以来非正式采用的治理流程已在项目治理文档中正式化。这些文档阐明了决策如何制定以及社区的各个要素如何互动,包括开源协作开发与营利性或非营利性实体资助的工作之间的关系。

Wes McKinney 是终身仁慈独裁者 (BDFL)。

开发团队#

核心团队成员列表和更多详细信息可以在 pandas 网站上找到。

机构合作伙伴#

有关当前机构合作伙伴的信息可以在 pandas 网站页面上找到。

许可#

BSD 3-Clause License

Copyright (c) 2008-2011, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
All rights reserved.

Copyright (c) 2011-2023, Open source contributors.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this
  list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice,
  this list of conditions and the following disclaimer in the documentation
  and/or other materials provided with the distribution.

* Neither the name of the copyright holder nor the names of its
  contributors may be used to endorse or promote products derived from
  this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.