Pandas Series 数据结构详解:创建、索引与运算

巷口听风
巷口听风
发布时间:2026-10-15| 5人浏览过
原创

本文详细介绍Pandas中Series数据的创建方法,包括通过数组、字典和标量实例化。深入讲解基于位置和标签的切片技巧,以及Series在算术运算中的自动标签对齐机制,帮助开发者高效处理一维数据。

一、Series 简介

Series 是一种类似于一维数组的对象,它由两部分组成:一组数据(可以是各种 NumPy 数据类型)和一组与之对应的数据标签(即索引)。即使只包含一组数据,也可以生成一个简单的 Series 对象。

从整体上看,Series 就是带有标签的一维数组,能够存储整数、浮点数、字符串以及 Python 对象等多种类型的数据。其标签轴通常被称为索引(index)。

二、实例化 Series

2.1 使用一维数组实例化

当使用一维数组来实例化 Series 时,索引的长度必须与数组长度保持一致。如果在创建时未指定索引,Pandas 会自动生成一个默认的数值型索引。

In [1]: s1 = pd.Series([1, 2, 3, 4])
Out[1]:
0	1
1	2
2	3
3	4
dtype: int64

In [2]: s2 = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
Out[2]:
a	1
b	2
c	3
d	4
dtype: int64

需要注意的是,Pandas 支持重复索引。如果需要重置索引,具体操作方法将在后续章节中介绍。

2.2 使用字典实例化

在使用字典实例化 Series 时,如果未传入索引参数,则生成的索引值将直接取自字典的键(key)。

In [1]: pd.Series({'i': 0, 'j': 1, 'k': 2})
Out[1]: 
i    0
j    1
k    2
dtype: int64

2.3 使用标量实例化

当使用标量值来实例化 Series 时,必须提供索引参数。此时,Series 会根据索引的长度重复该标量值。

In [1]: pd.Series(6, index=[0, 1, 2])
Out[1]: 
0    6
1    6
2    6
dtype: int64

三、Series 简单使用

3.1 为 Series 添加 Name 属性

在实例化 Series 时,可以通过传入 name 参数来为 Series 添加名称属性。此外,Series 也支持后续重命名操作。

In [1]: s = pd.Series(6, index=[0, 1, 2], name='six')
Out[1]: 
0    6
1    6
2    6
Name: six, dtype: int64

In [2]: s.name
Out[2]: 'six'

In [3]: s = s.rename('sixsixsix')
In [4]: s.name
Out[4]: 'sixsixsix'

3.2 基于位置的切片

Series 提供了类似于 Python 列表的切片方式,支持通过位置索引进行数据提取。

In[0]: s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
In[1]: s[0:2] 	#取下标为0和1的两个数据(不包括2,也就是从第一个开始取,取两个数据)
Out[1]:
a    1
b    2
dtype: int64

In[2]: s[:3] 	#取前三个数据
Out[2]:
a    1
b    2
c    3
dtype: int64

In[3]: s[-2:] 	#取最后两个数据(也可以理解为从倒查第二个数据一直取到末尾)
Out[3]:
c    3
d    4
dtype: int64

In[4]: s[[0,2,3]] 	#取第1、3、4这个三个数据(注意下标是从0开始的,转换为位置时需+1)
Out[4]:
a    1
c    3
d    4
dtype: int64		#注意:如果输入的位置大于列表的长度则会报出“indexers are out-of-bounds”异常

3.3 基于索引的切片

Series 允许使用索引标签的值来直接提取对应的数据。

In [0]:s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
In [1]: s['a'] 	#提取s中,标签为a的值
Out[1]:
a    1
dtype: int64

In [1]: s[['a', 'b', 'c']] 	#提取s中,标签为a, b, c的值
Out[1]:
a    1
b    2
c    3
dtype: int64

如果尝试访问的索引标签在 Series 的轴索引中不存在,将会引发 KeyError 异常。建议在这种情况下使用 Series 的 get 方法获取值;若标签不存在,该方法默认返回 None,同时可以通过设置 default 参数来指定不存在时的默认返回值。

In [0]: s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
In [1]: s['f'] 	#提取s中,标签为f的值, f不存在,将会报出异常
Out[1]:KeyError

In [2]:s.get('f') #提取s中,标签为f的值, 若f不存在,默认返回None
Out[2]:None

In [3]:s.get('f'. default=-1) #提取s中,标签为f的值, 若f不存在,返回-1
Out[3]:-1

3.4 基于条件的切片

In[0]: s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
In[1]: s[s < 2] 	#提取s中,小于2的值
Out[1]:
a    1
b    2
dtype: int64

In[1]: s[s> s.mean()] 	#提取s中,大于平均数的值
Out[1]:
c    3
d    4
dtype: int64

In[1]: s[s.between(1, 3, inclusive=False)] 	#提取s中,值介于1,3之间的数据(不包含1,3)
Out[1]:
b    2
dtype: int64

在进行区间数据提取时,如果希望包含两端的边界值(即满足两端条件的值也被提取出来),只需将 inclusive 参数的值设置为 True。

3.5 其他操作

Series 无需编写循环,即可像操作单个数值一样快速进行数学运算。

In[0]: s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
In[1]: s + s
Out[1]:
a    2
b    4
c    6
d    8
dtype: int64

In[2]: s - 1
Out[2]:
a    0
b    1
c    2
d    3
dtype: int64

Series 之间的运算会自动基于标签对齐数据。如果某个 Series 中的标签在另一个 Series 中不存在,计算结果将显示为 NaN(缺失值),NaN 的处理方法将在后续章节讲解。因此,执行运算时无需刻意确保 Series 具有相同的标签。Pandas 数据结构集成的数据对齐功能,是 Pandas 区别于大多数其他标签型数据处理工具的重要特性。

In[0]: s1 = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
In[0]: s2 = pd.Series([3, 6, 11], index=['a', 'b', 'f'])
In[1]: s1 + s2
Out[1]:
a   4.0
b   8.0
c   NaN
d   NaN
f   NaN
dtype: float64

至此,关于 Pandas 数据结构中 Series 的使用介绍完毕。如需了解更多相关 Pandas Series 使用内容,请搜索本站历史文章或继续阅读后续相关文章,希望大家以后多多支持本站!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。