温和异常值

时间:2019-11-06 11:33:51

标签: python dataframe outliers

我有一个200,000个观测值和23个不同列的数据框。我绘制了数据,发现每列中都有离群值。因此,我想赢得整个数据框架。一开始,我的代码确实起作用了。虽然很慢。但是,现在我只收到“系列”对象不可调用的消息。我怎样才能解决这个问题?

我使用以下代码来保存日期范围:

lower = 0.01 upper = 0.99 quantile_df = df.quantile([lower,upper]) quant_df

在定义了四分位数之后,我将异常值过滤出了数据框:

df =df.apply(lambda x: x(x > quant_df.loc[lower,x.name]) & 
                                (x < quant_df.loc[upper,x.name]), axis=0)

1 个答案:

答案 0 :(得分:0)

根据我的理解,您正在尝试过滤出每列的异常值。 因此,您可以遍历各列,并每次进行过滤:

for target_col in df.columns:
    # get upper/lower bound
    df['lower'], df['upper']= df[target_col].quantile([lower, upper])
    # filter
    df = df[(df[target_col] > df['lower']) & (df[target_col] < df['upper'])]

您可能需要将df.columns更改为其任何子集。