Winsorize离群值

问题描述 投票:0回答:1

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

我使用以下代码对日期框架进行Winsorize:

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)
python dataframe outliers
1个回答
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更改为其任何子集。

© www.soinside.com 2019 - 2024. All rights reserved.