我有一个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)
答案 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更改为其任何子集。