包概述#

pandas 是一个Python包,提供快速、灵活且富有表现力的数据结构,旨在使“关系”或“标记”数据的处理变得简单直观。它的目标是成为用 Python进行实际、真实数据分析的基本高级构建块。此外,它还有更广泛的目标,即成为任何语言中最强大、最灵活的开源数据分析/操作工具。它已经在朝着这个目标前进。

pandas 非常适合多种不同类型的数据:

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

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

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

  • 任何其他形式的观察/统计数据集。数据根本不需要被标记就可以放入 pandas 数据结构中

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

以下是 pandas 擅长的一些事情:

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

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

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

  • 强大、灵活的分组功能,可对数据集执行拆分-应用-组合操作,以聚合和转换数据

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

  • 基于智能标签的切片花式索引和 大数据集的子集

  • 直观的合并连接数据集

  • 数据集的灵活重塑和旋转

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

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

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

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

其他一些注意事项

  • 熊猫很快。许多低级算法位已在Cython代码中进行了广泛调整。然而,与其他任何事情一样,泛化通常会牺牲性能。因此,如果您专注于应用程序的一项功能,您也许能够创建更快的专用工具。

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

  • pandas 已广泛应用于金融应用的生产中。

数据结构

方面

姓名

描述

1

系列

一维标记同质阵列

2

数据框

通用 2D 标记、尺寸可变的表格结构,具有潜在的异构类型列

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

考虑 pandas 数据结构的最佳方式是将其作为低维数据的灵活容器。例如,DataFrame是Series的容器,Series是标量的容器。我们希望能够以类似字典的方式从这些容器中插入和删除对象。

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

例如,对于表格数据 (DataFrame),考虑索引(行)和而不是轴 0 和轴 1 在语义上更有帮助。因此,迭代 DataFrame 的列会产生更易读的代码:

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

数据的可变性和复制#

所有 pandas 数据结构都是值可变的(它们包含的值可以更改),但大小并不总是可变的。 Series 的长度无法更改,但可以将列插入到 DataFrame 中。然而,绝大多数方法都会生成新对象并保持输入数据不变。一般来说,我们喜欢在合理的情况下支持不变性

获得支持#

pandas 问题和想法的第一站是GitHub Issue Tracker。如果您有一般性问题,pandas 社区专家可以通过Stack Overflow进行解答。

社区

如今,pandas 得到了世界各地志同道合的人士社区的积极支持,他们贡献了宝贵的时间和精力,帮助开源 pandas 成为可能。感谢我们所有的贡献者

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

pandas 是NumFOCUS赞助的项目。这将有助于确保 pandas 作为世界级开源项目的成功开发,并为该项目提供捐赠。

项目治理#

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

韦斯·麦金尼是终身仁慈的独裁者(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.