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

Ivy
Ivy
发布时间:2026-10-13| 4人浏览过
原创

本文详细介绍pandas中Series数据结构的创建方式,包括通过列表、字典及指定索引生成Series。重点解析元素访问、布尔过滤、标量运算及数学函数应用,并深入讲解Series基于索引的自动对齐机制。同时涵盖Series与索引的命名属性设置,帮助开发者掌握基础数据处理技能。

Series 数据结构概述

1. Series

Series 是一种类似数组的一维数据结构,其核心特征在于不仅包含数据值,还关联有标签(label)或索引(index)。

创建 Series 对象

1.1 下面演示如何生成一个最简单的 Series 对象。若创建时未显式指定索引参数,系统将自动分配从 0 到 N-1 的默认整数索引。


# 引入Series和DataFrame
In [16]: from pandas import Series,DataFrame
In [17]: import pandas as pd

In [18]: ser1 = Series([1,2,3,4])

In [19]: ser1
Out[19]: 
0  1
1  2
2  3
3  4
dtype: int64

1.2 若需生成带有自定义索引的 Series,可采用如下方式:


# 给index指定一个list
In [23]: ser2 = Series(range(4),index = ["a","b","c","d"])

In [24]: ser2
Out[24]: 
a  0
b  1
c  2
d  3
dtype: int64

1.3 此外,还可以利用字典(dictionary)来构建 Series 对象。


In [45]: sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}

In [46]: ser3 = Series(sdata)
# 可以发现,用字典创建的Series是按index有序的
In [47]: ser3
Out[47]: 
Ohio   35000
Oregon  16000
Texas   71000
Utah    5000
dtype: int64

在使用字典创建 Series 时,可以额外指定索引列表。若指定的索引在字典中找不到对应值,该位置的数值将标记为缺失值(NA 或 NaN)。此时,可借助 pandas.isnull 和 pandas.notnull 函数来识别哪些索引对应的值是缺失的。


In [48]: states = ['California', 'Ohio', 'Oregon', 'Texas']

In [49]: ser3 = Series(sdata,index = states)

In [50]: ser3
Out[50]: 
California    NaN
Ohio     35000.0
Oregon    16000.0
Texas     71000.0
dtype: float64
# 判断哪些值为空
In [51]: pd.isnull(ser3)
Out[51]: 
California   True
Ohio     False
Oregon    False
Texas     False
dtype: bool

In [52]: pd.notnull(ser3)
Out[52]: 
California  False
Ohio      True
Oregon     True
Texas     True
dtype: bool

元素访问与索引获取

1.4 访问 Series 中的元素与索引:


# 访问索引为"a"的元素
In [25]: ser2["a"]
Out[25]: 0
# 访问索引为"a","c"的元素
In [26]: ser2[["a","c"]]
Out[26]: 
a  0
c  2
dtype: int64
# 获取所有的值
In [27]: ser2.values
Out[27]: array([0, 1, 2, 3])
# 获取所有的索引
In [28]: ser2.index
Out[28]: Index([u'a', u'b', u'c', u'd'], dtype='object')

基础运算操作

1.5 简单运算

在 pandas 的 Series 中,保留了 NumPy 的数组操作特性,包括使用布尔数组进行数据过滤、标量乘法运算以及应用数学函数,同时保持引用关系的一致性。


In [34]: ser2[ser2 > 2]
Out[34]: 
a  64
d   3
dtype: int64

In [35]: ser2 * 2
Out[35]: 
a  128
b   2
c   4
d   6
dtype: int64

In [36]: np.exp(ser2)
Out[36]: 
a  6.235149e+27
b  2.718282e+00
c  7.389056e+00
d  2.008554e+01
dtype: float64

索引自动对齐机制

1.6 Series 的自动对齐

Series 的一项关键功能是自动对齐(auto-alignment)。通过示例可以清晰理解:当对不同 Series 对象执行运算时,系统会根据索引标签进行匹配计算,而非单纯依据位置。


# ser3 的内容
In [60]: ser3
Out[60]: 
Ohio   35000
Oregon  16000
Texas   71000
Utah    5000
dtype: int64
# ser4 的内容
In [61]: ser4
Out[61]: 
California    NaN
Ohio     35000.0
Oregon    16000.0
Texas     71000.0
dtype: float64
# 相同索引值的元素相加
In [62]: ser3 + ser4
Out[62]: 
California     NaN
Ohio      70000.0
Oregon     32000.0
Texas     142000.0
Utah        NaN
dtype: float64

Series 命名属性

1.7 命名

Series 对象本身及其索引均具备 name 属性,可用于标识数据含义。


In [64]: ser4.index.name = "state"

In [65]: ser4.name = "population"

In [66]: ser4
Out[66]: 
state
California    NaN
Ohio     35000.0
Oregon    16000.0
Texas     71000.0
Name: population, dtype: float64

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

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

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 算法库。