Pandas Series对象的用法(非常详细)
Pandas 是 Python 数据分析中重要的库,而 Series 和 DataFrame 是 Pandas 库中两个重要的对象,也是 Pandas 中两个重要的数据结构:
本节将主要介绍 Series 对象。

图 1 原始数据(成绩表)
例如,成绩表(如上图所示)中包含了 Series 对象和 DataFrame 对象,其中“语文”、
“数学”、“英语”每列都是一个 Series 对象,而“语文”、“数学”和“英语”三列组成了一个 Data Frame 对象,如下图所示:

图 2 图解Series
当 data 参数是多维数组时,index 长度必须与 data 长度一致。如果没有指定 index 参数,则会自动创建数值型索引(0~data 的数据长度 -1)。
【实例 1】分别使用列表和字典创建 Series对象,也就是一列数据。程序代码如下:
【实例 2】下面创建一列“物理”成绩。程序代码如下:
例如,实例 2 中使用的就是默认索引 0、1、2。除了使用默认索引,还可以通过 index 参数手动设置索引。
【实例 3】手动设置索引,将创建的“物理”成绩的索引设置为 1、2、3,也可以是“王同学”、“高同学”、“李同学”。程序代码如下:
【实例 4】首先创建 Series 对象,即一列物理成绩,然后获取第一个学生的物理成绩。程序代码如下:
【实例 5】通过标签索引“王同学”和“李同学”获取学生的物理成绩。程序代码如下:
【实例 6】通过标签索引切片“王同学”至“李同学”获取数据,主要代码如下:
用位置索引做切片,其用法和 list 列表一样,包头不包尾(即包含索引开始位置的数据,不包含索引结束位置的数据)。
【实例 7】通过位置索引切片获取数据,主要代码如下:
【实例 8】使用 Series 对象的 index 属性和 values 属性获取物理成绩的索引和值,程序代码如下:
- Series:带标签的一维同构数组;
- DataFrame:带标签的,大小可变的,二维异构表格;
本节将主要介绍 Series 对象。
图解Series对象
Series 是 Pandas 库中的一种数据结构,它与一维数组类似,由一组数据及与这组数据相关的标签(即索引)组成,仅有一组数据没有索引也可以创建一个简单的 Series。Series 可以存储整数、浮点数、字符串、Python对象等多种类型的数据。
图 1 原始数据(成绩表)
例如,成绩表(如上图所示)中包含了 Series 对象和 DataFrame 对象,其中“语文”、
“数学”、“英语”每列都是一个 Series 对象,而“语文”、“数学”和“英语”三列组成了一个 Data Frame 对象,如下图所示:

图 2 图解Series
创建Series对象
创建 Series 对象主要使用 Pandas 的 Series 类,语法如下:s = pd.Series(data, index = index)参数说明:
- data:表示数据,支持 Python 列表、字典、NumPy 数组、标量值(只有大小,没有方向的量,只是一个数值,如 s=pd.Series(5));
- index:表示行标签(索引);
- 返回值:Series 对象。
当 data 参数是多维数组时,index 长度必须与 data 长度一致。如果没有指定 index 参数,则会自动创建数值型索引(0~data 的数据长度 -1)。
【实例 1】分别使用列表和字典创建 Series对象,也就是一列数据。程序代码如下:
# 导入pandas模块 import pandas as pd # 使用列表创建Series对象 s1=pd.Series([1,2,3]) print(s1) # 使用字典创建Series对象 s2 = pd.Series({"A":1,"B":2,"C":3}) print(s2)运行程序,结果如下:
0 1
1 2
2 3
dtype: int64
A 1
B 2
C 3
dtype: int64
【实例 2】下面创建一列“物理”成绩。程序代码如下:
# 导入pandas模块 import pandas as pd # 创建Series对象,即一列“物理”成绩 s1=pd.Series([88,60,75]) print(s1)运行程序,结果如下:
0 88
1 60
2 75
from pandas import Series s1=Series([88,60,75])
手动设置Series对象的索引
创建 Series 对象时会自动生成整数索引,默认值从 0 开始,至数据长度减 1。例如,实例 2 中使用的就是默认索引 0、1、2。除了使用默认索引,还可以通过 index 参数手动设置索引。
【实例 3】手动设置索引,将创建的“物理”成绩的索引设置为 1、2、3,也可以是“王同学”、“高同学”、“李同学”。程序代码如下:
# 导入pandas模块 import pandas as pd # 创建Series对象 s1=pd.Series(data=[88,60,75],index=[1,2,3]) s2=pd.Series(data=[88,60,75],index=["王同学","高同学","李同学"]) # 输出数据 print(s1) print(s2)运行程序,结果如下:
1 88
2 60
3 75
dtype: int64
王同学 88
高同学 60
李同学 75
dtype: int64
Series对象的索引
1) Series位置索引
位置索引默认是从 0 开始的,[0] 是 Series 的第一个数,[1] 是 series 的第二个数,以此类推。【实例 4】首先创建 Series 对象,即一列物理成绩,然后获取第一个学生的物理成绩。程序代码如下:
# 导入pandas模块 import pandas as pd # 创建一列数据 s1=pd.Series([88,60,75]) # 通过索引获取索引值 print(s1[0])运行程序,结果为 88。
注意,Series 不能使用 [-1] 来定位索引。
2) Series标签索引
标签索引与位置索引方法类似,用 [] 表示,[] 中是索引名称,注意 index 的数据类型是字符串,如果要获取多个标签索引值,需用 [[]] 表示(相当于 [] 中包含一个列表)。【实例 5】通过标签索引“王同学”和“李同学”获取学生的物理成绩。程序代码如下:
# 导入pandas模块 import pandas as pd # 创建一列数据并设置索引 s1=pd.Series(data=[88,60,75],index=["王同学","高同学","李同学"]) print(s1['王同学']) # 通过一个标签索引获取索引值 print(s1[['王同学','李同学']]) # 通过多个标签索引获取索引值运行程序,结果如下:
88
王同学 88
李同学 75
3) Series切片索引
通常用标签索引做切片,并包头包尾(既包含索引开始位置的数据,也包含索引结束位置的数据)。【实例 6】通过标签索引切片“王同学”至“李同学”获取数据,主要代码如下:
print(s1['王同学':'李同学']) # 通过标签索引切片获取索引值运行程序,结果如下:
王同学 88
高同学 60
李同学 75
用位置索引做切片,其用法和 list 列表一样,包头不包尾(即包含索引开始位置的数据,不包含索引结束位置的数据)。
【实例 7】通过位置索引切片获取数据,主要代码如下:
s2=pd.Series([88,60,75,34,68]) print(s2[1:3])运行程序,结果如下:
1 60
2 75
3 34
获取Series对象的索引和值
获取 Series 对象的索引和值主要使用 Series 的 index 属性和 values 属性。【实例 8】使用 Series 对象的 index 属性和 values 属性获取物理成绩的索引和值,程序代码如下:
# 导入pandas模块 import pandas as pd # 创建一列数据 s1=pd.Series([88,60,75]) # 通过index属性和values属性获取物理成绩的索引和值 print(s1.index) print(s1.values)运行程序,结果如下:
RangeIndex(start=0, stop=3, step=1)
[88 60 75]