从 Pandas 数据框中过滤除一列以外的所有列的异常值
Filter outliers from Pandas dataframe from all columns except one
假设我有一个包含特征和标签的数据框:
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))]
但 'label' 列也将被过滤。如何避免过滤某些列?我不想手动过滤所有列,因为它们有几十个。
谢谢
下面的方法呢:
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
假设我有一个包含特征和标签的数据框:
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))]
但 'label' 列也将被过滤。如何避免过滤某些列?我不想手动过滤所有列,因为它们有几十个。 谢谢
下面的方法呢:
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