问答 · ANSWER
如何处理缺失值?
直接回答
处理缺失值主要分为识别与处理两步。使用isnull()和any()方法识别缺失值位置。处理策略包括直接丢弃缺失值行(dropna)或用固定值、前向/后向填充(fillna/ffill/bfill)等方法填补。
关键要点
- 使用isnull()方法检测数据中的缺失值,通常由NaN表示。
- 结合any()方法可以快速定位存在缺失值的列(axis=0)或行(axis=1)。
- 处理缺失值的两种核心方式是丢弃(dropna)和填充(fillna)。
- 丢弃操作可通过subset参数指定只关注特定列的缺失情况。
- 填充可使用固定值,或对有序数据使用前向填充(ffill)与后向填充(bfill)。
- 使用前向或后向填充前,数据需要是有序的,例如按时间排序。
怎么选 / 怎么做
1. 识别缺失值:使用df.isnull()检测缺失值,结合.any(axis=0)查看哪些列存在缺失,或.any(axis=1)查看哪些行存在缺失。
2. 选择处理策略:根据数据情况选择丢弃或填充。
3. 执行丢弃:使用df.dropna()丢弃任何列包含缺失值的行,或用subset参数指定只丢弃特定列有缺失的行。
4. 执行填充:使用df.fillna(固定值)进行固定值填充;或对排序后的数据使用df.ffill()(前向填充)和df.bfill()(后向填充)。
常见问题
怎么快速找到哪些列有缺失值?
使用 df.isnull().any(),返回布尔序列指示各列是否有缺失。
dropna() 会删除所有有缺失值的行吗?
默认删除任何列包含缺失值的行,可用 subset 指定列。
什么是前向填充(ffill)?
用缺失值前面的有效值进行填充,数据需先排序。