在数据分析中,一维数据是最基础的数据形式。Pandas 提供了 Series 这一强大而灵活的一维数据结构,它不仅支持数值、字符串、布尔值等多种数据类型,还自带索引标签、缺失值处理、向量化运算等高级功能,是构建 DataFrame 的基石。
💡 Series 本质上是一个带标签的 NumPy 一维数组,但功能远超普通数组。
本节将系统介绍:
- 如何创建 Series(列表、字典、自定义索引)
- 核心属性与元信息(index, values, dtype, name 等)
- 数据访问方式(loc, iloc, at, iat)
- 缺失值处理与布尔筛选
- 常用统计函数(mean, std, quantile, mode...)
- 排序、去重与频次统计
通过以下示例,您将快速掌握 Pandas Series 的日常使用技巧。
# series学习
import pandas as pd
s= pd.Series([1,2,3,4,5])
print(s)
# 自定义索引
s = pd.Series([1,2,3,4,5],index=['A','B','C','D','E'])
print(s)
# 定义name
s= pd.Series([1,2,3,4,5],index=['A','B','C','D','E'],name='月份')
print(s)
0 1
1 2
2 3
3 4
4 5
dtype: int64
A 1
B 2
C 3
D 4
E 5
dtype: int64
A 1
B 2
C 3
D 4
E 5
Name: 月份, dtype: int64
# 通过字典来创建
s= pd.Series({"a":1,"b":2,"c":3})
print(s)
s1=pd.Series(s,index=["a","c"])
print(s1)
a 1
b 2
c 3
dtype: int64
a 1
c 3
dtype: int64
# series的属性
print(s.index)
print(s.values)
print(s.shape,s.ndim,s.size)
print(s.dtype)
s.name='test'
print(s.name)
print(s.loc['b':'c']) # 显式索引
print(s.iloc[0:2]) # 隐式索引
print(s.at['a'])
print(s.iat[0])
Index(['a', 'b', 'c'], dtype='object')
[1 2 3]
(3,) 1 3
int64
test
b 2
c 3
Name: test, dtype: int64
a 1
b 2
Name: test, dtype: int64
1
1
# 访问数据
# print(s[1])
print(s['a'])
print(s[s<3])
print(s.head())
print(s.tail())
1
a 1
b 2
Name: test, dtype: int64
a 1
b 2
c 3
Name: test, dtype: int64
a 1
b 2
c 3
Name: test, dtype: int64
# 常见函数
import numpy as np
s= pd.Series([10,2,np.nan,None,3,4,5],index=['A','B','C','D','E','F','G'],name='data')
print(s)
A 10.0
B 2.0
C NaN
D NaN
E 3.0
F 4.0
G 5.0
Name: data, dtype: float64
s.head() # 默认取前五行
s.tail() #默认取后五行
C NaN
D NaN
E 3.0
F 4.0
G 5.0
Name: data, dtype: float64
# 查看所有的描述性信息
s.describe()
count 5.000000
mean 4.800000
std 3.114482
min 2.000000
25% 3.000000
50% 4.000000
75% 5.000000
max 10.000000
Name: data, dtype: float64
# 获取元素个数(忽略缺失值)
print(s.count())
5
# 获取索引
print(s.keys()) # 方法
print(s.index) # 属性
Index(['A', 'B', 'C', 'D', 'E', 'F', 'G'], dtype='object')
Index(['A', 'B', 'C', 'D', 'E', 'F', 'G'], dtype='object')
print(s.isna()) # 检查series里的每一个元素是否为缺失值
s.isna()
A False
B False
C True
D True
E False
F False
G False
Name: data, dtype: bool
A False
B False
C True
D True
E False
F False
G False
Name: data, dtype: bool
s.isin([4,5,6]) # 检查每个元素是否在参数集合中
A False
B False
C False
D False
E False
F True
G True
Name: data, dtype: bool
s.describe()
print(s.mean()) # 平均值
print(s.sum()) # 总和
print(s.max()) # 最大值
print(s.min()) # 最小值
print(s.median()) # 中位数
print(s.std()) # 标准差
print(s.var()) # 方差
4.8
24.0
10.0
2.0
4.0
3.1144823004794877
9.700000000000001
s.sort_values()
print(s.quantile(0.25))
3.0
# 众数
s['H']=4
print(s.mode())
0 4.0
Name: data, dtype: float64
print(s.value_counts()) # 每个元素的计数
data
4.0 2
10.0 1
2.0 1
3.0 1
5.0 1
Name: count, dtype: int64
s.drop_duplicates() # 去重
s.unique()
print(s.nunique()) # 去重后的元素个数
5
# 排序 值、索引
s.sort_index() #按索引排序
s.sort_values() # 按值排序
B 2.0
E 3.0
F 4.0
H 4.0
G 5.0
A 10.0
C NaN
D NaN
Name: data, dtype: float64