pandas 提供被设计用来使“关系型的”或“有标签的”数据的处理过程简明直观的一种快速、灵活、具有表现力的数据结构。 它的目标是成为Python的 真实世界 数据的数据处理过程基本的高级组件。 额外地,它还有一个更宽泛的目标是成为 面向所有语言的最强力、最灵活的开源数据处理/操作工具 ,并已经成功地朝着这个目标发展。
pandas非常适合许多种类型的数据:
- 具有相异类型的表格数据,例如SQL数据库表以及Excel电子表格
- 有序或无序的(可能不具有固定频率的)时间序列数据
- 具有行列标签的任意矩阵(相同或相异类型)数据
- 任何其他形式的观测/统计数据集。这类数据事实上完全不需要被标签标记就可以放入一个pandas数据结构中。
pandas有两种主要的数据结构, Series
(一维)以及 DataFrame
(二维), 能够处理绝大多数金融、统计、社会科学以及工程上许多领域的典型案例。 针对R语言的用户, DataFrame
提供了R的 data.DataFrame
能够提供的以及更多其他功能。 pandas构建在 NumPy 之上, 致力于很好地在科学计算的环境下整合许多其他第三方库。
- pandas能在以下工作中取得良好的效果:
- 简便地处理不论是否浮点数的 缺失数据 (被表示为NaN)
- 大小可变性:从DataFrame以及更高维度对象中可以 增加或删除 列数据
- 自动或显性的 数据对齐 :数据可以显性地对齐到一系列标签上,或者用户也可以忽略标签本身来让 Series 、 DataFrame 等来为您在运算过程中自动对齐
- 强大、灵活地对数据集执行分割、应用、组合操作,以便更好地聚合与转换数据
- 使在其他Python和NumPy数据结构中零碎的、具有不同索引的数据 简便地转换 到DataFrame对象中
- 智能基于标签的对大数据集 切片 、 Fancy索引 以及 子集 操作
- 直观地 合并 与 连接 数据集
- 灵活地 变形 与 旋转 数据集
- 对轴 按层级 标签(可能每次标记多个标签)
- 供从平面文件(CSV与被符号分割的文件)、Excel电子表格、数据库与从超快速 HDF5格式 读写 中加载数据的稳定IO工具
- 时间序列 相关功能: 按日期范围生成、频率转换、滑动窗口线性回归、日期的变动与延后等
上述许多准则都强调了在使用其他语言时与具体研究环境中出现的不足。 对数据科学家们,处理数据通常被分为几个阶段: 整理与清理数据、分析并建模,之后组织结果绘制适合的图表或表格来展示。 pandas是所有这些任务的理想工具。
一些其他说明
- pandas很 快 。许多低级算法位在 Cython 代码中被广泛地进行了调整。 然而,在与其他任何泛化协调时通常会牺牲性能。 所以当您在您的应用中关注于某一种特性时您可能需要构建更快的针对具体需求的工具。
- pandas是 statsmodels 的依赖库,这使得它成为了Python统计计算生态系统中的重要组成部分。
- pandas在金融应用的产品中得到了广泛的应用。
维数 | 名称 | 描述 |
---|---|---|
一维 | Series | 一维同类型带有标签的数组 |
二维 | DataFrame | 通用的二维可能列类型相异可变大小的表数据结构 |
关于pandas数据结构,最好的思维方式是把它看作针对低维数据的灵活的容器。 举个例子,DataFrame是Series的一种容器,而Series是标量的一种容器。 我们倾向于用一种类似于字典的风格来在这些容器中插入或移除对象。
并且我们倾向于使公共API函数具有合理的默认行为能确保考虑到时间序列和横切面数据集的典型位置。 当使用ndarray储存二维或三维数据时,用户在编写函数过程中需要考虑数据集的位置是一种负担; 轴或多或少被认为是相同的(C或Fortan中会影响性能优化的情况除外)。 在pandas中,轴被赋予了针对数据的更具语义化的意义; 即在某个具体的数据集中我们利用可能更“正确”的方式来定位数据。 这样做的目标是能够减少对用户在数据转换的下游函数编写过程中带来的情绪影响。
举个例子,对于表格数据(DataFrame)能在语义上相对轴1与轴2对考虑 索引 (行)与 列 更具有帮助。 在DataFrame中按列迭代可以带来更加可读的代码:
for col in df.columns:
series = df[col]
# 使用series做一些事
所有pandas数据结构都是值可变的(它们容纳的数值可以被修改)但不总是大小可变的。 Series的长度是不能被修改的,但是举例来说,DataFrame中可以插入新列。 然而大多数方法都产生新的对象而保持输入的数据不被修改。 总之在合理的时候我们 更倾向于不可变性。
向pandas提出问题或想法的第一站是 Github Issue Tracker 。 如果您有一个通用的问题,pandas社区的专家可以在 Stack Overflow 上回答您。
pandas现在受到社区中全世界乐于贡献他们宝贵的时间与能量的爱好者们活跃的支持。 感谢我们 所有的贡献者 。
如果您也感兴趣做出贡献,请访问 贡献指南 <contributing>
。
pandas是受 NumFOCUS 赞助的项目。
如果您愿意帮助确保pandas的成功开发,使之成为世界级的开源项目,请向项目 捐赠 。
pandas项目的非正式治理流程已经在2008年在 项目治理文档 中正式确立。 文档声明了我们如何制定决策以及如何协调社区的各种元素,包括开源协作开发与营利性实体或非营利性实体资金支持的关系。
Wes McKinney是终生仁慈独裁者(BDFL)
核心团队成员以及更加详细的信息详见治理仓库的 人员页面 。
目前机构合作伙伴的信息详见 pandas官方网站 。
pandas项目协议:
../../../PANDAS_LICENSE
中文文档项目协议:
../../../LICENSE