软件包概述#
pandas 是一个 Python 包,提供快速、灵活且表达力强的數據结构,旨在使处理“关系型”或“带标签”数据既轻松又直观。它旨在成为在 Python 中进行实际、**现实世界**数据分析的基本高级构建块。此外,它还具有更广泛的目标,即成为**任何语言中最强大、最灵活的开源数据分析/操作工具**。它已经朝着这个目标迈出了坚实的一步。
pandas 非常适合许多不同类型的数据
具有异构类型列的表格数据,如 SQL 表格或 Excel 电子表格
有序和无序(不一定固定频率)时间序列数据。
具有行和列标签的任意矩阵数据(同构类型或异构类型)
任何其他形式的观察/统计数据集。数据无需任何标签即可放入 pandas 数据结构中
pandas 的两个主要数据结构,Series
(一维)和DataFrame
(二维),处理了金融、统计、社会科学和许多工程领域中绝大多数的典型用例。对于 R 用户,DataFrame
提供了 R 的 data.frame
提供的所有功能,甚至更多。pandas 建立在 NumPy 之上,旨在与许多其他第三方库很好地集成到科学计算环境中。
以下仅列举了 pandas 的一些优势
轻松处理缺失数据(用 NaN 表示),包括浮点数和非浮点数数据
大小可变性:可以从 DataFrame 和更高维对象中插入和删除列
自动和显式数据对齐:对象可以显式对齐到一组标签,或者用户可以简单地忽略标签,让
Series
、DataFrame
等在计算中自动为您对齐数据强大灵活的分组功能,用于对数据集执行拆分-应用-合并操作,以聚合和转换数据
轻松将其他 Python 和 NumPy 数据结构中的不规则、不同索引数据转换为 DataFrame 对象
智能的基于标签的切片、花式索引和大型数据集的子集
直观的合并和连接数据集
灵活的重塑和数据集的透视
轴的层次标签(每个刻度可以有多个标签)
强大的 IO 工具,用于从平面文件(CSV 和分隔符)、Excel 文件、数据库加载数据,以及从超快的HDF5 格式保存/加载数据
时间序列 特定功能:日期范围生成和频率转换、移动窗口统计、日期移位和滞后。
许多这些原则旨在解决使用其他语言/科学研究环境时经常遇到的缺点。对于数据科学家来说,处理数据通常分为多个阶段:整理和清理数据、分析/建模数据,然后将分析结果整理成适合绘图或表格显示的形式。pandas 是所有这些任务的理想工具。
其他一些说明
pandas 很快。许多底层算法位已在 Cython 代码中进行了大量调整。但是,与其他任何事物一样,泛化通常会牺牲性能。因此,如果您专注于应用程序的一个功能,您可能能够创建一个更快的专用工具。
pandas 是 statsmodels 的依赖项,使其成为 Python 中统计计算生态系统的重要组成部分。
pandas 已在金融应用程序的生产中得到广泛使用。
数据结构#
维度 |
名称 |
描述 |
---|---|---|
1 |
Series |
1D 标记的同构类型数组 |
2 |
DataFrame |
通用 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 问题跟踪器。如果您有常规问题,pandas 社区专家可以通过 Stack Overflow 回答。
社区#
pandas 今天得到了来自世界各地志同道合的个人的积极支持,他们贡献宝贵的时间和精力来帮助开源 pandas 成为可能。感谢 我们所有的贡献者。
如果您有兴趣贡献,请访问 贡献指南。
pandas 是一个 NumFOCUS 赞助的项目。这将有助于确保 pandas 作为世界一流的开源项目的开发成功,并使您可以 捐赠 给该项目。
项目治理#
自 2008 年成立以来,pandas 项目一直非正式地使用治理流程,该流程已在 项目治理文档 中正式化。这些文档阐明了决策的制定方式以及我们社区中各个元素之间的互动方式,包括开源协作开发与可能由营利或非营利实体资助的工作之间的关系。
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.