Skip to content

数据结构简介

Pandas 提供了两种主要的数据结构来处理数据:

  • Series(一维)
  • DataFrame(二维)

这些结构建立在 NumPy 数组之上,使其在数值计算和数据处理(data manipulation)方面效率很高。

可以将 DataFrame 看作是包含多个共享相同索引的 Series 对象的容器。DataFrame 中的每一列(column)都是一个 Series。

数据结构维度描述
Series1一个带标签的一维数组(1D labeled array),能够容纳任何数据类型(data type)(整数、字符串、浮点数、Python 对象等)。可以将其视为带标签的列表或电子表格中的单个列。
DataFrame2一个带标签的二维数据结构(2D labeled data structure),列可以包含不同类型的数据。类似于电子表格、SQL 表或 Series 对象的字典。

使用这些结构简化了许多数据处理任务。例如,在处理表格数据 (DataFrames) 时,通过索引标签(index labels)引用行,通过列名(column names)引用列,这比处理抽象的轴编号(如 axis 0 和 axis 1)更直观。

虽然 Pandas 历史上曾有一个名为 Panel 的三维结构,但现在已经不太常用。对于超过二维的多维数据,用户通常使用 MultiIndex DataFrames 或像 Xarray 这样的库,它们提供更灵活的 N 维数据处理能力。

Pandas 数据结构通常是值可变的(value-mutable),这意味着它们包含的数据可以被修改。DataFrames 也是大小可变的(size-mutable),允许添加或删除列。然而,Series 是大小不可变的(size-immutable);创建后其长度不能改变,但值可以修改。

注意:DataFrame 是 Pandas 中用于数据分析任务最广泛使用且至关重要的数据结构。

Series 是一种一维带标签的数组,通常包含单一类型的数据(尽管它可以包含混合类型,通常用 ‘object’ dtype 表示)。例如,下面表示一个整数 Series:

索引值
010
123
256
……
  • 通常是同构数据(单一数据类型)
  • 大小不可变(长度不能改变)
  • 值可变(数据可以改变)

DataFrame 是一种二维带标签的结构,像一个表格,列可以具有不同的数据类型。例如:

姓名年龄性别评分
Steve32Male3.45
Lia28Female4.6
Vin45Male3.9
Katie38Female2.78

这个表格表示关于一个销售团队的数据。每一行对应一个独立的个体(一个观察 - observation),每一列表示一个特定的属性(一个特征 - feature)。

Pandas 可能会将上面示例中列的数据类型推断为:

列推断类型
Nameobject (字符串)
Ageint64 (整数)
Genderobject (字符串)
Ratingfloat64 (浮点数)
  • 可能包含异构数据(列可以有不同的类型)
  • 大小可变(可以添加/删除列/行)
  • 数据可变(值可以改变)