跟踪缺失数据的想法可能很有用,因此您知道哪些数据点被估算或删除以训练模型。它可以让您了解功能重要性/可靠性。
但是,有很多方法可以做到这一点,如果您使用的是 Pandas DataFrame,那么MissingIndicator在我看来,该类对于跟踪缺失值的单一目的是多余的。
同样可以如下实现。假设我从这个数据框开始:
import pandas as pd
import numpy as np
In [1]: df
Out[1]:
A B C D
0 1.095564 -0.225533 0.441428 0.099792
1 1.198053 0.523837 -1.53928 0.871108
2 NaN 0.336165 NOT_FOUND -1.881777
3 -0.077794 0.175203 -1.76324 1.172351
4 -1.167858 0.340200 0.369765 NaN
5 0.514393 -0.045929 0.771916 0.130821
6 -0.065623 0.978825 -0.668706 -0.703892
所以有几个可能的缺失值:
In [2] missing_vals = ["NOT_FOUND", np.NaN]
In [3] missing_mask = df.isin(missing_vals) # boolean mask of True where missing values found
In [4]: missing_mask
Out[4]:
A B C D
0 False False False False
1 False False False False
2 True False True False
3 False False False False
4 False False False True
5 False False False False
6 False False False False
但由于这是一个 DataFrame,如果你需要它,你就拥有它的所有力量。查看每个特征缺少多少值:
In [5]: missing_mask.sum()
Out[5]:
A 1
B 0
C 1
D 1
dtype: int64
用单个标记替换所有缺失值,例如“MISSING”
In [6]: df.where(~missing_mask, "MISSING")
Out[6]:
A B C D
0 1.09556 -0.225533 0.441428 0.0997919
1 1.19805 0.523837 -1.53928 0.871108
2 MISSING 0.336165 MISSING -1.88178
3 -0.0777938 0.175203 -1.76324 1.17235
4 -1.16786 0.3402 0.369765 MISSING
5 0.514393 -0.0459287 0.771916 0.130821
6 -0.0656233 0.978825 -0.668706 -0.703892
如果您想了解丢失的数据,我建议您查看这个名为 的出色软件包missingno,它是为此目的而构建的 :)