问答 · ANSWER
pandas 怎么处理缺失值(NaN)?
直接回答
使用isnull()识别缺失值,通过dropna()丢弃或fillna()填充处理,针对有序数据可采用前向或后向填充。
关键要点
- 使用 isnull() 检测缺失值,any() 方法可快速定位存在缺失值的行或列。
- 处理缺失值的两种核心策略是直接丢弃(dropna)和填充(fillna)。
- dropna() 默认丢弃任何列包含缺失值的整行,可通过 subset 参数指定列。
- fillna() 可用固定值填充,对有序数据常用前向填充(ffill)或后向填充(bfill)。
- 使用前向或后向填充前,数据必须是有序的(例如按时间排序)。
怎么选 / 怎么做
1. 识别缺失值:使用 df.isnull() 检测,结合 df.isnull().any() 或 df.isnull().any(axis=1) 定位。
2. 选择处理策略:
- 丢弃:使用 df.dropna() 丢弃含缺失值的行,或用 subset 参数指定列。
- 填充:使用 df.fillna(value) 用固定值填充。
- 智能填充:对有序数据,使用 df.ffill()(前向填充)或 df.bfill()(后向填充)。
常见问题
怎么快速找到哪些列有缺失值?
用 df.isnull().any() 检查,返回 True 的列即有缺失。
dropna() 会删除所有有 NaN 的行吗?
默认会。可用 subset 指定只检查某些列。
什么是前向填充(ffill)?
用缺失值前面的有效值进行填充,数据需先排序。