我有很多列的数据框(大约 100 个功能),我想应用四分位数方法并想从数据框中删除异常值。
我正在使用这个链接 stackOverflow
但问题是上述方法的 nan 工作正常,
正如我正在尝试这样
Q1 = stepframe.quantile(0.25)
Q3 = stepframe.quantile(0.75)
IQR = Q3 - Q1
((stepframe < (Q1 - 1.5 * IQR)) | (stepframe > (Q3 + 1.5 * IQR))).sum()
它给了我这个
((stepframe < (Q1 - 1.5 * IQR)) | (stepframe > (Q3 + 1.5 * IQR))).sum()
Out[35]:
Day 0
Col1 0
Col2 0
col3 0
Col4 0
Step_Count 1179
dtype: int64
我只是想知道,接下来我会做什么,以便删除数据框中的所有异常值。
如果我使用这个
def remove_outlier(df_in, col_name):
q1 = df_in[col_name].quantile(0.25)
q3 = df_in[col_name].quantile(0.75)
iqr = q3-q1 #Interquartile range
fence_low = q1-1.5*iqr
fence_high = q3+1.5*iqr
df_out = df_in.loc[(df_in[col_name] > fence_low) & (df_in[col_name] < fence_high)]
return df_out
re_dat = remove_outlier(stepframe, stepframe.columns)
我收到此错误
ValueError: Cannot index with multidimensional key
在这一行
df_out = df_in.loc[(df_in[col_name] > fence_low) & (df_in[col_name] < fence_high)]