Pandas Series 数据结构

Series 是 Pandas 中最基础的一维数据结构,它由一组数据(各种NumPy数据类型)和一组与之相关的索引组成。可以把 Series 想象成一个带标签的数组。

📌 创建 Series

Pandas 提供了多种创建 Series 的方式,最常用的是通过列表、字典或标量值创建。

从列表创建
import pandas as pd

# 默认索引从0开始
s1 = pd.Series([10, 20, 30, 40])
print(s1)
指定索引
s2 = pd.Series([10, 20, 30],
               index=['a', 'b', 'c'])
print(s2)
从字典创建
data = {'apple': 5, 'banana': 8, 'orange': 3}
s3 = pd.Series(data)
print(s3)

字典的键成为索引,值为数据。

从标量创建
s4 = pd.Series(5, index=['a', 'b', 'c'])
print(s4)   # 所有值都是5

🔍 Series 的核心属性

创建 Series 后,可以通过以下属性快速查看其基本信息:

.values 数据数组 .index 索引对象 .dtype 数据类型 .size 元素个数 .shape 形状元组 .name 名称
s = pd.Series([1, 2, 3], index=['x', 'y', 'z'], name='numbers')
print("值:", s.values)
print("索引:", s.index)
print("数据类型:", s.dtype)
print("元素个数:", s.size)
print("形状:", s.shape)
print("名称:", s.name)

🎯 索引与切片

Series 支持位置索引(类似列表)和标签索引,推荐使用 .iloc[].loc[] 进行显式操作。

位置索引 (.iloc)
s = pd.Series([10, 20, 30, 40], index=['a','b','c','d'])
print(s.iloc[0])      # 第一个元素: 10
print(s.iloc[1:3])    # 切片: 20,30
标签索引 (.loc)
print(s.loc['b'])      # 标签'b'对应的值: 20
print(s.loc['b':'d'])  # 标签切片包含结束

布尔索引:根据条件筛选数据。

s = pd.Series([1, 5, 3, 9], index=['a','b','c','d'])
print(s[s > 3])   # 输出大于3的值

📊 常用方法

  • head(n) 前n行
  • tail(n) 后n行
  • describe() 统计摘要
  • sort_values() 排序
  • sort_index() 按索引排序
  • value_counts() 值计数
  • isna() / notna() 缺失值判断
  • apply(func) 应用函数
  • copy() 复制
s = pd.Series([1, 2, 2, 3, 3, 3])
print("值计数:\n", s.value_counts())
print("描述统计:\n", s.describe())

⚡ 向量化操作与缺失值

Series 支持 NumPy 风格的向量化运算,并且可以处理缺失数据(NaN)。

s1 = pd.Series([1, 2, None, 4])
s2 = pd.Series([10, 20, 30, 40])

print(s1 + s2)          # 向量化加法,缺失值参与运算后仍为NaN
print(s1.fillna(0))     # 用0填充缺失值
print(s1.dropna())      # 删除缺失值所在行
掌握 Series 是学习 DataFrame 的基础,因为 DataFrame 可以被看作是由多个 Series 组成的字典。下一章我们将深入讲解 DataFrame。