程序包概述#

Pandas是一种 Python 提供快速、灵活和富有表现力的数据结构的包,旨在使处理“关系”或“标记”数据既容易又直观。它的目标是成为基本的高级构建块,用于实际、 real-world 用Python语言进行数据分析。此外,它还有更广泛的目标,即成为 the most powerful and flexible open source data analysis/manipulation tool available in any language 。它已经在实现这一目标的路上走得很好。

Pandas非常适合处理许多不同类型的数据:

  • 具有不同类型列的表格数据,如在SQL表或Excel电子表格中

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

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

  • 任何其他形式的观测/统计数据集。数据根本不需要标记即可放入Pandas数据结构中

Pandas的两种主要数据结构, Series (一维)和 DataFrame (2维),处理金融、统计、社会科学和许多工程领域的绝大多数典型用例。对于R个用户, DataFrame 提供了R的一切 data.frame provides and much more. pandas is built on top of NumPy 并打算在科学计算环境中与许多其他第三方库很好地集成。

以下是Pandas擅长的几件事:

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

  • 大小可变:列可以是 已插入和已删除 来自DataFrame和更高维的对象

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

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

  • 搞定 易于转换 将其他Python和NumPy数据结构中的参差不齐、索引不同的数据转换为DataFrame对象

  • 基于智能标签的 切片花式标引 ,以及 子设置 大型数据集的

  • 凭直觉 合并接合 数据集

  • 软性 重塑 以及数据集的旋转

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

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

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

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

其他一些注解

  • Pandas是 fast 。许多低级算法比特已经被广泛地调整 Cython 密码。然而,与其他任何事情一样,泛化通常会牺牲性能。因此,如果您将重点放在应用程序的一个功能上,您可能能够创建一个速度更快的专用工具。

  • Pandas是一种依附动物 statsmodels ,使其成为Python中统计计算生态系统的重要组成部分。

  • Pandas已被广泛用于生产和金融应用。

数据结构#

尺寸标注

名字

描述

1

系列

一维标记的同型数组

2

DataFrame

具有潜在异质类型列的通用2D标记、大小可变的表格结构

为什么会有多个数据结构?#

看待Pandas数据结构的最佳方式是将其视为低维数据的灵活容器。例如,DataFrame是Series的容器,Series是标量的容器。我们希望能够以类似于词典的方式在这些容器中插入和删除对象。

此外,我们希望常见API函数具有合理的默认行为,这些行为考虑了时间序列和横截面数据集的典型取向。当使用N维数组(Ndarray)存储2维和3维数据时,用户在编写函数时需要考虑数据集的方向;轴或多或少被认为是等价的(除非C或Fortran的邻接性对性能有影响)。在Pandas中,轴的目的是为数据赋予更多的语义;即,对于特定的数据集,可能会有一种“正确”的方式来定位数据。因此,目标是减少在下游功能中编码数据转换所需的脑力劳动。

例如,对于表格数据(DataFrame),将 索引 (行)和 而不是轴0和轴1。因此,循环访问DataFrame的列会产生更具可读性的代码:

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

数据的可变性和复制性#

所有的Pandas数据结构都是值可变的(它们包含的值可以改变),但并不总是大小可变的。序列的长度不能更改,但例如,可以将列插入到DataFrame中。然而,绝大多数方法都会生成新的对象,而输入数据保持不变。总的来说,我们喜欢 偏爱不变性 哪里才是明智的。

获得支持#

Pandas问题和想法的第一站是 Github Issue Tracker 。如果你有一个一般性的问题,大Pandas社区专家可以通过 Stack Overflow

社区#

今天,Pandas得到了世界各地志同道合的个人社区的积极支持,他们贡献了宝贵的时间和精力,帮助使开源Pandas成为可能。感谢 all of our contributors

如果您有兴趣投稿,请访问 contributing guide

Pandas是一种 NumFOCUS 赞助项目。这将有助于确保Pandas作为世界级开源项目的开发取得成功,并使其成为可能 donate 到项目中去。

项目治理#

Pandas项目自2008年开始以来一直非正式使用的治理过程在 Project Governance documents 。这些文件阐明了决策是如何做出的,以及我们社区的各种元素如何相互作用,包括开源协作开发与可能由营利性或非营利性实体资助的工作之间的关系。

韦斯·麦金尼是《仁慈的生命独裁者》(BDFL)。

开发团队#

核心团队成员名单和更详细的信息可在 people’s page 治理回购。

机构合作伙伴#

有关当前机构合作伙伴的信息,请访问 pandas website page

许可证#

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-2022, 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.