当前位置: 首页 > news >正文

【Python自动化】 21.3 Pandas Series 核心数据结构完全指南

一、Series 概述

什么是 Series?

Series 是 Pandas 两大核心数据结构之一(另一个是 DataFrame),是构建 DataFrame 的基础。

核心特征
  • 带标签的一维数组
  • 可保存任何类型数据(整数、字符串、浮点数、Python对象等)
  • 由两个主要部分组成:
    • 数据值:存储的实际数据
    • 索引:与数据值相关联的标签

二、创建 Series 的四种方式

1. 从列表创建(最基本方式)
import pandas as pd# 创建简单 Series,使用默认索引
data = [10, 20, 30, 40]
s = pd.Series(data)
print(s)

输出:

0    10
1    20
2    30
3    40
dtype: int64
2. 指定自定义索引
# 创建时指定自定义索引
data = [10, 20, 30, 40]
custom_index = ['a', 'b', 'c', 'd']
s = pd.Series(data, index=custom_index)
print(s)

输出:

a    10
b    20
c    30
d    40
dtype: int64
3. 从字典创建(自动索引匹配)
# 字典键自动成为索引,字典值成为数据
data_dict = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
s = pd.Series(data_dict)
print(s)

输出:

a    10
b    20
c    30
d    40
dtype: int64
4. 从标量创建(复制值)
# 单个标量值 + 索引,值会被复制
s = pd.Series(5, index=['a', 'b', 'c', 'd'])
print(s)

输出:

a    5
b    5
c    5
d    5
dtype: int64

三、Series 基本操作

查看索引和数据值
s = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])print(s.index)   # 输出:Index(['a', 'b', 'c', 'd'], dtype='object')
print(s.values)  # 输出:[10 20 30 40]
print(s.dtype)   # 输出:int64
索引访问数据
# 通过标签索引访问
print(s['a'])  # 输出:10# 通过位置索引访问
print(s[0])    # 输出:10# 访问多个元素
print(s[['a', 'c']])

输出:

a    10
c    30
dtype: int64
切片操作
# 基于位置的切片(不包括结束位置)
print(s[0:2])  # 输出:a=10, b=20# 基于标签的切片(包括结束位置)
print(s['a':'c'])  # 输出:a=10, b=20, c=30

四、向量化操作与数据过滤

向量化数学运算
s = pd.Series([1, 2, 3, 4])print(s + 5)   # 每个元素加5
print(s * 2)   # 每个元素乘2
print(s > 2)   # 布尔判断

输出:

0    6
1    7
2    8
3    9
dtype: int640    2
1    4
2    6
3    8
dtype: int640    False
1    False
2     True
3     True
dtype: bool
布尔条件过滤
s = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
filtered_s = s[s > 25]  # 筛选值大于25的元素
print(filtered_s)

输出:

c    30
d    40
dtype: int64

五、索引对齐特性(重要!)

索引对齐运算
s1 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
s2 = pd.Series([4, 5, 6], index=['b', 'c', 'd'])result = s1 + s2  # 按索引标签对齐,不是按位置!
print(result)

输出:

a    NaN  # s1有'a',s2没有 → NaN
b    6.0  # s1['b'](2) + s2['b'](4) = 6
c    8.0  # s1['c'](3) + s2['c'](5) = 8
d    NaN  # s2有'd',s1没有 → NaN
dtype: float64

六、常用属性和方法

数据查看方法
s = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])print(s.head(3))    # 查看前3行
print(s.tail(3))    # 查看后3行
print(s.describe()) # 描述性统计
数据处理方法
# 唯一值和频次统计
s = pd.Series(['a', 'b', 'a', 'c', 'b', 'a'])
print(s.unique())       # 输出:['a' 'b' 'c']
print(s.value_counts()) # 输出:a=3, b=2, c=1# 空值处理
s_with_nan = pd.Series([1, 2, None, 4])
print(s_with_nan.isna())    # 检查空值
print(s_with_nan.dropna())  # 删除空值
print(s_with_nan.fillna(0)) # 填充空值
排序方法
s = pd.Series([3, 1, 4, 2], index=['d', 'a', 'c', 'b'])print(s.sort_values())  # 按值排序
print(s.sort_index())   # 按索引排序

七、字典式操作方法

类似字典的操作
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])# 检查索引存在性
print('a' in s)  # 输出:True
print('x' in s)  # 输出:False# 安全获取值
print(s.get('x', 0))  # 索引不存在时返回0
print(s.get('a', 0))  # 索引存在时返回值

八、综合示例

实际应用场景
# 创建学生成绩Series
grades = pd.Series([85, 92, 78, 90], index=['Alice', 'Bob', 'Charlie', 'Diana'],name='Math_Scores')# 基本分析
print("平均分:", grades.mean())
print("最高分:", grades.max())
print("最低分:", grades.min())# 条件筛选
good_students = grades[grades > 85]
print("85分以上的学生:")
print(good_students)# 添加新数据
grades['Eve'] = 88
print("添加新学生后的成绩单:")
print(grades)

九、总结对比

特性描述
本质带标签的一维数组
组成数据值 + 索引
创建方式列表、字典、标量
核心操作索引访问、向量化运算、布尔过滤
核心特性索引对齐:运算时按标签对齐,而非位置
主要用途数据分析、数据清洗、作为DataFrame的单列

十、最佳实践建议

  1. 明确指定索引:避免依赖默认整数索引
  2. 利用向量化操作:避免使用循环,提高性能
  3. 注意索引对齐:理解Series运算的底层机制
  4. 合理使用数据类型:选择合适的数据类型节省内存
  5. 熟练掌握常用方法value_counts(), isna(), fillna()

Series 是 Pandas 的基石,熟练掌握它是有效使用 Pandas 进行数据分析的关键第一步。


文章转载自:

http://BTY0pGP8.zkqwk.cn
http://Rygx4450.zkqwk.cn
http://v9hVDEfg.zkqwk.cn
http://nvlsnQAH.zkqwk.cn
http://tfZh0p4M.zkqwk.cn
http://JTNy34le.zkqwk.cn
http://W44JzpN8.zkqwk.cn
http://WTKaKl2y.zkqwk.cn
http://MGwTXCUe.zkqwk.cn
http://hzISBXdv.zkqwk.cn
http://xRZYFktT.zkqwk.cn
http://5b23RTFz.zkqwk.cn
http://AgrOikB6.zkqwk.cn
http://wS9o4VJe.zkqwk.cn
http://SC4GqEXU.zkqwk.cn
http://3leeasXo.zkqwk.cn
http://SuCAoA8s.zkqwk.cn
http://wqJs6AIk.zkqwk.cn
http://SIKPrwa3.zkqwk.cn
http://smLIy5rR.zkqwk.cn
http://KxpafPsA.zkqwk.cn
http://KDtXNVnX.zkqwk.cn
http://DDkptoKd.zkqwk.cn
http://VGONwUSz.zkqwk.cn
http://n9GYxbgf.zkqwk.cn
http://Da3UxZTt.zkqwk.cn
http://ln30abZ4.zkqwk.cn
http://uHjLkPbO.zkqwk.cn
http://ZDazMrcl.zkqwk.cn
http://Zaph8q0W.zkqwk.cn
http://www.dtcms.com/a/370533.html

相关文章:

  • MySQL DBA需要掌握的 7 个问题
  • Docker加速下载镜像的配置指南
  • 从“能说话”到“会做事”:AI工具如何重塑普通人的工作与生活?
  • RAG提示词分解
  • 第三节:HTML5 高级特性与应用​
  • 【C++】模板和STL
  • react生命周期,详细版本
  • NLWeb与AutoRAG跨境电商RAG推荐API接入实战教程
  • Storybook:多框架兼容的前端组件开发工具,高效解决组件隔离开发与文档管理问题
  • 嵌入式笔记系列——UART:TTL-UART、RS-232、RS-422、RS-485
  • Week 15: 深度学习补遗:集成学习初步
  • 计算机CPU的工作原理介绍
  • 科学研究系统性思维的方法体系:个人研究项目管理
  • macbook intel 打开cursor会闪退
  • Day22_【机器学习—集成学习(2)—Bagging—随机森林算法】
  • 2025年大数据专业人士认证发展路径分析
  • 【CV】Opencv图像处理——①几何变换 (1)
  • dify+Qwen2.5-vl+deepseek打造属于自己的作业帮
  • 待定系数法分解分式
  • WordPress过滤文章插入链接rel属性noopener noreferrer值
  • AwesomeBump Windows上编译细则
  • 2026届大数据毕业设计选题推荐-基于大数据旅游数据分析与推荐系统 爬虫数据可视化分析
  • NIOS ii工程移植路径问题
  • Redis中的List数据类型
  • 设计一个 AB 测试平台
  • MATLAB2025-安装Embedded Code Support Pacjage for STM32 Processors
  • 去中心化投票系统开发教程 第三章:智能合约设计与开发
  • 基于Matlab的MEMS陀螺仪Allan方差分析与随机误差参数识别
  • 植物大战僵尸融合版安装包,下载安装教程
  • 基于STM32的智能宠物屋系统设计