移除异常值会在熊猫数据框中创建空值

时间:2019-03-18 17:49:10

标签: python pandas dataframe

我有一个非空数据帧df,它有大约100列。我想从每一列中删除离群值,为此,我将进行以下操作。

df1 = df[np.abs(df - df.mean()) <= (3*df.std())]

我希望df1包含的记录数少于df,但是使用上述方法,形状保持不变。此外,它还创建了一组空值。

我的理解是,它消除了异常值,但是现在我有了零值。我的理解正确吗?

1 个答案:

答案 0 :(得分:0)

您的理解是正确的。它正在删除异常值,并用NaN代替它们:

np.random.seed(0)
df = pd.DataFrame(np.random.normal(0,1,(100,10)))

idx = np.abs(df - df.mean()) <= (3*df.std())
outlier_locations = np.where(idx == False)
df1 = df[idx]

print(outlier_locations)

    (array([58]), array([9]))

如果您希望df1包含的记录少于df,那么您可能想删除包含异常值的行或列,或者只是删除行中的条目,以便保留参差不齐的数组。