【pandas数据分析】pandas概述

发布于:2022-12-26 ⋅ 阅读:(253) ⋅ 点赞:(0)

pandas是一个快速、强大、灵活且易于使用的开源数据分析和操作工具,构建在Python编程语言之上,其提供了快速、灵活和富有表达性的数据结构,旨在使得处理关系型或有标签的数据变得简单直观。它旨在成为在 Python 中进行实际的、真实的数据分析的基本高级构建块。 此外,它还有更广泛的目标,即成为任何语言中最强大、最灵活的开源数据分析/操作工具。 它已经在朝着这个目标迈进。

pandas可以处理多种不同类型的数据:

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

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

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

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

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

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

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

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

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

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

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

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

  • 直观地合并连接数据集

  • 灵活地重塑透视数据集

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

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

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

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

其他一些值得注意的:

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

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

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

数据结构

维数 名称 描述
1 Series 一维有标签的同质类型数组
2 DataFrame 具有同质或异构类型列的通用二维有标签的、大小可变的表格结构

为何不止一种数据结构?

理解pandas数据结构的最佳方式是将其视为低维数据的灵活容器。例如,DataFrameSeries的容器,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数据结构都是值可变的(value-mutable,它们包含的值可以更改),但并不总是大小可变(size-mutable)。Series的长度不能更改,但是,可以将列插入DataFrame中。然而,绝大多数方法会生成新对象并且保持输入数据不变。一般来说,我们喜欢在合理的情况下支持不变性。

本文含有隐藏内容,请 开通VIP 后查看