深入浅出Pandas:利用Python进行数据处理与分析
上QQ阅读APP看书,第一时间看更新

2.4 Pandas的数据结构

Pandas提供Series和DataFrame作为数组数据的存储框架,数据进入这两种框架后,我们就可以利用它们提供的强大处理方法进行处理。表2-1是它们的区别,后面将一一详述。

表2-1 Series和DataFrame的特点

052-1

需要注意的是,Pandas之前支持的三维面板(Panel)结构现已不再支持,可以使用多层索引形式来实现。

2.4.1 Series

Series(系列、数列、序列)是一个带有标签的一维数组,这一系列连续的数据代表了一定的业务意义。如以下各国2019年的GDP就是一个典型的Series。

中国  14.34
美国  21.43
日本  5.08
dtype: float64

其中,国家是标签(也称索引),不是具体的数据,它起到解释、定位数据的作用。如果没有标签,只有一个数字,是不具有业务意义的。Series是Pandas最基础的数据结构。

2.4.2 DataFrame

DataFrame意为数据框,它就像一个存放数据的架子,有多行多列,每个数据在一个格子里,每个格子有自己的编号。就像一个球场的座位(见图2-3),我们在横向编成1排、2排、3排等,在纵向编成1号、2号、3号等,那么4排18号、6排1号等就是具体的位置,每个人落座后就像一个具体的数据。

052-2

图2-3 球场的座椅

DataFrame是Pandas定义的一个二维数据结构,其结构如图2-4所示。

053-1

图2-4 DataFrame结构

我们来分析一下它的结构:

  • 横向的称作行(row),我们所说的一条数据就是指其中的一行;
  • 纵向的称作列(column)或者字段,是一条数据的某个值;
  • 第一行是表头,或者叫字段名,类似于Python字典里的键,代表数据的属性;
  • 第一列是索引,就是这行数据所描述的主体,也是这条数据的关键;
  • 在一些场景下,表头和索引也称为列索引和行索引;
  • 行索引和列索引可能会出现多层索引的情况(后面会遇到)。

我们给上例国家GDP Series数据中增加一列“人口”,形成一个DataFrame:

       人口    GDP
中国  13.97  14.34
美国   3.28  21.43
日本   1.26   5.08

这就是一个典型的DataFrame结构,其中:

  • 共有三行两列(不包含索引)数据;
  • 国家所在列是这个表的索引,每一行数据的主体为这个国家;
  • 每条数据(横向)有两个值,分别是人口和GDP。

2.4.3 索引

在后续的内容中,在不同场景下可能会对索引使用以下名称。

  • 索引(index):行和列上的标签,标识二维数据坐标的行索引和列索引,默认情况下,指的是每一行的索引。如果是Series,那只能是它行上的索引。列索引又被称为字段名、表头。
  • 自然索引、数字索引:行和列的0~n(n为数据长度–1)形式的索引,数据天然具有的索引形式。虽然可以指定为其他名称,但在有些方法中依然可以使用。
  • 标签(label):行索引和列索引,如果是Series,那只能是它行上的索引。
  • 轴(axis):仅用在DataFrame结构中,代表数据的方向,如行和列,用0代表列(默认),1代表行。

以上概念比较依赖语境,需要灵活理解和掌握。

2.4.4 小结

我们在处理数据时需要将数据录入Excel表格,同样,Pandas也为我们提供了存放数据的容器。Series和DataFrame是Pandas的两个基本的数据结构,其中DataFrame由多个同索引的Series组成,我们今后处理数据都会用到它们。