二、pandas - Series

suaxi
2025-11-20 / 0 评论 / 4 阅读 / 正在检测是否收录...

1. 创建

# 安装 pandas
pip install pandas
import pandas as pd

s = pd.Series([5, 1, 3, 2, 8, 10])
print(s)

0     5
1     1
2     3
3     2
4     8
5    10
dtype: int64
# 自定义索引
s = pd.Series([5, 1, 3, 2, 8, 10], index=['A', 'B', 'C', 'D', 'E', 'F'])
print(s)

s = pd.Series([5, 1, 3, 2, 8, 10], index=[10, 20, 30, 40, 50, 60])
print(s)

A     5
B     1
C     3
D     2
E     8
F    10
dtype: int64
10     5
20     1
30     3
40     2
50     8
60    10
dtype: int64
# 自定义name(name用于描述这一列是干什么的)
s = pd.Series([5, 1, 3, 2, 8, 10], index=[10, 20, 30, 40, 50, 60], name='成绩')
print(s)

10     5
20     1
30     3
40     2
50     8
60    10
Name: 成绩, dtype: int64
# 通过字典创建
s = pd.Series({'A': 10, 'B': 20, 'C': 30})
print(s)

s1 = pd.Series(s, index=['A', 'C'])
print(s1)

A    10
B    20
C    30
dtype: int64
A    10
C    30
dtype: int64


2. 常用属性

属性说明
index索引(从0开始)
values
dtype/dtypes元素的类型
shape形状
ndim维度
size元素个数
name名称
loc[]显示索引,按标签索引或切片
iloc[]隐式索引,按位置索引或切片
at[]通过标签访问指定元素
iat[]通过位置访问指定元素
s = pd.Series([1, 2, 3, 4, 5], index=['A', 'B', 'C', 'D', 'E'])

# index
print(s.index)

Index(['A', 'B', 'C', 'D', 'E'], dtype='object')
# values
print(s.values)

[1 2 3 4 5]
# shape ndim size
print(s.shape, s.ndim, s.size)

(5,) 1 5
# name
print(s.name)

s.name = "测试"
print(s.name)

None
测试
# loc[] 显示索引
print(s.loc['A'])

# iloc[] 隐示索引
print(s.iloc[0])

# 同时也支持切片语法
print(s.loc['A':'C'])
print(s.iloc[0:2])

1
1
A    1
B    2
C    3
Name: 测试, dtype: int64
A    1
B    2
Name: 测试, dtype: int64
# at 注:不支持切片语法
print(s.at['A'])

# iat 注:不支持切片语法
print(s.iat[0])

1
1


3. 访问数据的方式

# 直接访问
# print(s[0]) 不建议这样使用,底层可能无法区分是取标签为0的值,还是取索引为0的值
print(s['A']) # 通过已设置的标签访问

1
# 通过布尔索引访问
print(s[s<3])

A    1
B    2
Name: 测试, dtype: int64
# head() 默认取前5行的数据
print(s.head())

s['F'] = 100
s['G'] = 200
print(s.head())

# tail() 默认取最后5行的数据
print(s.tail())
print("=======================")

# 通过参数指定取几行的数据
print(s.head(2))
print("=======================")
print(s.tail(3))

A    1
B    2
C    3
D    4
E    5
Name: 测试, dtype: int64
A    1
B    2
C    3
D    4
E    5
Name: 测试, dtype: int64
C      3
D      4
E      5
F    100
G    200
Name: 测试, dtype: int64
=======================
A    1
B    2
Name: 测试, dtype: int64
=======================
E      5
F    100
G    200
Name: 测试, dtype: int64


4. 常用方法

方法说明
head()查看前n行数据,默认值为5
tail()查看后n行数据,默认值为5
isin()判断集合中的每一个元素是否包含在指定的集合中
isna()判断指定元素是否为缺失值(NaN/None)
sum()求和(自动忽略缺失值)
mean()平均值
min()最小值
max()最大值
var()方差
std()标准差
median()中位数
mode()众数(返回值可以有多个)
quantile(q)分位数,q的取值范围:0 ~ 1
describe()常见统计信息(如:count、mean、std、min、25%、50%、75%、max)
value_count()每个唯一值出现的次数
count()集合中非缺失值的数量
nunique()唯一值个数(去重后的)
unique()数组去重
drop_duplicates()去除重复项,同理 unique()
sample()随机抽样
sort_index()按索引值排序
sort_values()按值排序
replace()替换
keys()返回集合的索引
s = pd.Series([5, 1, np.nan, 3, 2, None, 8])
s.name = 'datas'
print(s)

0    5.0
1    1.0
2    NaN
3    3.0
4    2.0
5    NaN
6    8.0
Name: datas, dtype: float64
# head()
print(s.head())

0    5.0
1    1.0
2    NaN
3    3.0
4    2.0
Name: datas, dtype: float64
# tail()
print(s.tail())
print("================")
print(s.tail(1))

2    NaN
3    3.0
4    2.0
5    NaN
6    8.0
Name: datas, dtype: float64
================
6    8.0
Name: datas, dtype: float64
# 查看所有的描述信息
print(s.describe())

count    5.000000
mean     3.800000
std      2.774887
min      1.000000
25%      2.000000
50%      3.000000
75%      5.000000
max      8.000000
Name: datas, dtype: float64
# 获取集合的元素个数(忽略缺失值)
print(s.count())

5
# 获取集合的索引
print("通过方法获取:")
print(s.keys())

print("通过属性获取:")
print(s.index)

通过方法获取:
RangeIndex(start=0, stop=7, step=1)
通过属性获取:
RangeIndex(start=0, stop=7, step=1)
# isna() 检查集合中的每一个元素是否为缺失值
print(s.isna())

0    False
1    False
2     True
3    False
4    False
5     True
6    False
Name: datas, dtype: bool
# isin()
print(s.isin([4, 5, 6]))

0     True
1    False
2    False
3    False
4    False
5    False
6    False
Name: datas, dtype: bool
# mean()
print(s.mean())

# std()
print(s.std())

# var()
print(s.var())

# min() max()
print(s.min())
print(s.max())

# median()
print(s.median())

3.8
2.7748873851023212
7.699999999999999
1.0
8.0
3.0
"""
|----|----|----|----|
1    2    3    5    8

去掉缺失值后等分4段(元素个数减一)
quantile(0.25)
4 * 0.25 = 1
1在等分的第一段
分位数 = 1 + (2-1) * 1 = 2
"""
print(s.sort_values())
print("===============")
# quantile()
print(s.quantile(0.25))
print(s.quantile(0.50))
print(s.quantile(0.75))

1    1.0
4    2.0
3    3.0
0    5.0
6    8.0
2    NaN
5    NaN
Name: datas, dtype: float64
===============
2.0
3.0
5.0
# mode()
s[len(s)] = 1
print(s)
print("===============")
print(s.mode())

0    5.0
1    1.0
2    NaN
3    3.0
4    2.0
5    NaN
6    8.0
7    1.0
Name: datas, dtype: float64
===============
0    1.0
Name: datas, dtype: float64
# 元素计数
print(s.value_counts())

datas
1.0    2
5.0    1
3.0    1
2.0    1
8.0    1
Name: count, dtype: int64
# drop_duplicates()
print(s)
print("====================")
print(s.drop_duplicates())
print("====================")
s[len(s)] = 1
print(s.unique())
# 去重后的元素个数
print(s.nunique())

0    5.0
1    1.0
2    NaN
3    3.0
4    2.0
5    NaN
6    8.0
7    1.0
Name: datas, dtype: float64
====================
0    5.0
1    1.0
2    NaN
3    3.0
4    2.0
6    8.0
Name: datas, dtype: float64
====================
[ 5.  1. nan  3.  2.  8.]
5
# sort_index()
print(s.sort_index())

# sort_values()
print(s.sort_values())

0    5.0
1    1.0
2    NaN
3    3.0
4    2.0
5    NaN
6    8.0
7    1.0
8    1.0
Name: datas, dtype: float64
1    1.0
7    1.0
8    1.0
4    2.0
3    3.0
0    5.0
6    8.0
2    NaN
5    NaN
Name: datas, dtype: float64
0

评论 (0)

取消