温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

pandas怎样处理缺失数据

发布时间:2026-09-23 21:53:59 来源:亿速云 阅读:98 作者:小樊 栏目:编程语言

在 pandas 中,处理缺失数据(通常是 NaN 或 None)是非常常见的操作。下面按常见场景系统介绍常用方法。


一、认识缺失值

pandas 中常见的缺失值表示:

  • NaN(浮点型缺失,最常见)
  • None(对象型缺失)
import pandas as pd
import numpy as np

s = pd.Series([1, 2, np.nan, None, 5])

二、检测缺失值

1️⃣ 判断是否为缺失值

s.isna()      # 或 isnull()
s.notna()     # 或 notnull()

2️⃣ 统计缺失值数量

s.isna().sum()
df.isna().sum()        # 每列缺失数
df.isna().sum().sum()  # 总缺失数

三、删除缺失值

1️⃣ 删除含缺失值的行

df.dropna()

2️⃣ 删除含缺失值的列

df.dropna(axis=1)

3️⃣ 指定缺失阈值

# 至少要有 3 个非缺失值才保留
df.dropna(thresh=3)

# 某些列不能有缺失
df.dropna(subset=['age', 'income'])

四、填充缺失值(最常用)

1️⃣ 用固定值填充

df.fillna(0)

2️⃣ 按列分别填充

df.fillna({
    'age': 0,
    'income': df['income'].mean()
})

3️⃣ 用统计量填充

df['age'].fillna(df['age'].mean())     # 均值
df['age'].fillna(df['age'].median())   # 中位数

4️⃣ 前向 / 后向填充(时间序列常用)

df.fillna(method='ffill')  # 用上一个值
df.fillna(method='bfill')  # 用下一个值

简写:

df.ffill()
df.bfill()

五、插值处理(高级填充)

df.interpolate()          # 线性插值
df.interpolate(method='time')  # 时间插值

六、缺失值参与计算的处理

df.mean(skipna=True)   # 默认忽略 NaN
df.sum(skipna=False)   # 有缺失则返回 NaN

七、实战建议 ✅

  • 数值型:均值 / 中位数填充
  • 类别型:众数或 'Unknown' 填充
  • 时间序列:前后填充或插值
  • 建模前:可新增 is_missing 标志列
df['age_missing'] = df['age'].isna().astype(int)

如果你有具体数据结构或业务场景(如金融、用户行为、时间序列),我可以给你更针对性的处理方案。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手