假设我有一个包含功能和标签的数据框:
f1 f2 label
-1000 -100 1
-5 3 2
0 4 3
1 5 1
3 6 1
1000 100 2
我想从列f1和f2过滤异常值以获取:
f1 f2 label
-5 3 2
0 4 3
1 5 1
3 6 1
我知道我可以这样做:
data = data[(data > data.quantile(.05)) & ( data < data.quantile(.95))]
但是&#39;标签&#39;列也将被过滤。如何避免过滤某些列?我不想手动过滤所有列,因为它们有数十个。 感谢。
答案 0 :(得分:2)
以下方法如何:
In [306]: x = data.drop('label', 1)
In [307]: x.columns
Out[307]: Index(['f1', 'f2'], dtype='object')
In [308]: data[((x > x.quantile(.05)) & (x < x.quantile(.95))).all(1)]
Out[308]:
f1 f2 label
1 -5 3 2
2 0 4 3
3 1 5 1
4 3 6 1