pandas 缺失值处理

636 字
3 分钟
pandas 缺失值处理

pandas 缺失值处理#

在做数据分析时,缺失值是非常常见的问题。比如表格中某些学生没有填写成绩,某些商品没有价格,某些用户没有年龄,这些空值如果不处理,后面的统计结果就可能不准确。

今天记录一下 pandas 中缺失值的常用处理方式。

1、构造一份示例数据#

import pandas as pd
import numpy as np
data = {
"姓名": ["张三", "李四", "王五", "赵六"],
"数学": [85, np.nan, 90, 76],
"英语": [88, 92, np.nan, 80],
"城市": ["西安", "北京", None, "成都"]
}
df = pd.DataFrame(data)
print(df)

这里的 np.nan 和 None 都可以表示缺失值。

2、检查缺失值#

查看每个位置是不是缺失值:

print(df.isna())

统计每一列缺失值数量:

print(df.isna().sum())

如果只想看哪些列存在缺失值:

print(df.isna().any())

这一步一般放在数据分析最开始,用来判断数据质量。

3、删除缺失值#

删除包含缺失值的行:

df_drop_row = df.dropna()
print(df_drop_row)

删除包含缺失值的列:

df_drop_col = df.dropna(axis=1)
print(df_drop_col)

注意:删除数据虽然简单,但是可能会损失很多信息。如果数据量本来就不大,要谨慎使用。

4、填充缺失值#

用固定值填充:

df_fill = df.fillna(0)
print(df_fill)

对不同列使用不同填充值:

df_fill = df.fillna({
"数学": df["数学"].mean(),
"英语": df["英语"].mean(),
"城市": "未知"
})
print(df_fill)

这里数学和英语用平均分填充,城市用“未知”填充。

5、前向填充和后向填充#

有些数据是时间序列,比如每天的温度、价格,可以使用前一个有效值填充:

df_forward = df.ffill()
print(df_forward)

也可以使用后一个有效值填充:

df_backward = df.bfill()
print(df_backward)

这种方式适合连续性比较强的数据,不适合随便填所有表格。

6、一个完整的小案例#

import pandas as pd
import numpy as np
data = {
"姓名": ["张三", "李四", "王五", "赵六"],
"数学": [85, np.nan, 90, 76],
"英语": [88, 92, np.nan, 80]
}
df = pd.DataFrame(data)
# 查看缺失情况
print(df.isna().sum())
# 用每列平均值填充分数
score_cols = ["数学", "英语"]
df[score_cols] = df[score_cols].fillna(df[score_cols].mean())
# 计算总分和平均分
df["总分"] = df[score_cols].sum(axis=1)
df["平均分"] = df[score_cols].mean(axis=1)
print(df)

总结#

缺失值处理没有固定答案,一般按照下面的思路来:

先检查缺失情况 -> 判断缺失原因 -> 决定删除还是填充 -> 再做统计分析

如果是学习阶段,先掌握 isna()、dropna()、fillna() 这几个方法,基本就能处理大部分简单表格了。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

pandas 缺失值处理
https://blog.tjcheng.cn/posts/daily/2026-06-29/pandas-missing-values/
作者
TengJinCheng
发布于
2026-06-29
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
TengJinCheng
Hello, I'm Teng.
公告
欢迎来到TengJinCheng工作铺!
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
157
分类
7
标签
114
总字数
109,939
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.13.4
文章许可
CC BY-NC-SA 4.0

文章目录