从特定列中删除具有异常值的行

Droping rows with outliers from specific columns

我在严重不平衡的数据集(95% 1 和 5% 0)上构建二元分类模型。我想删除异常值的行,我使用了以下代码:

from scipy import stats
df=df[(np.abs(stats.zscore(df)) < 3).all(axis=1)]

但是,此代码删除了我的标签为 0 的行。是否有更好的方法来删除除标签列以外的所有列的异常值行?

试试这个(假设您的标签位于 df["label"]):

df = df[(df["label"] == 0) | (np.abs(stats.zscore(df)) < 3).all(axis=1)]

第一个条件将保留所有带有 df["label"] == 0 的行,忽略 zscore