在 pandas 中,处理缺失数据(通常是 NaN 或 None)是非常常见的操作。下面按常见场景系统介绍常用方法。
pandas 中常见的缺失值表示:
NaN(浮点型缺失,最常见)None(对象型缺失)import pandas as pd
import numpy as np
s = pd.Series([1, 2, np.nan, None, 5])
s.isna() # 或 isnull()
s.notna() # 或 notnull()
s.isna().sum()
df.isna().sum() # 每列缺失数
df.isna().sum().sum() # 总缺失数
df.dropna()
df.dropna(axis=1)
# 至少要有 3 个非缺失值才保留
df.dropna(thresh=3)
# 某些列不能有缺失
df.dropna(subset=['age', 'income'])
df.fillna(0)
df.fillna({
'age': 0,
'income': df['income'].mean()
})
df['age'].fillna(df['age'].mean()) # 均值
df['age'].fillna(df['age'].median()) # 中位数
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)
如果你有具体数据结构或业务场景(如金融、用户行为、时间序列),我可以给你更针对性的处理方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。