У меня есть Dataframe с большим количеством столбцов (функция около 100), я хочу применить метод interquartile и хотел удалить выброс из фрейма данных.
Я использую эту ссылку stackOverflow
Но проблема в том, что нань вышеописанного метода работает правильно,
Когда я пытаюсь так, как это
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)]