2.4 Pandas的数据结构
Pandas提供Series和DataFrame作为数组数据的存储框架,数据进入这两种框架后,我们就可以利用它们提供的强大处理方法进行处理。表2-1是它们的区别,后面将一一详述。
表2-1 Series和DataFrame的特点
需要注意的是,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号等就是具体的位置,每个人落座后就像一个具体的数据。
图2-3 球场的座椅
DataFrame是Pandas定义的一个二维数据结构,其结构如图2-4所示。
图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组成,我们今后处理数据都会用到它们。