Из всего моего фрейма данных у меня есть два столбца цена и количество.Оба содержат выбросы.Как можно удалить выбросы в обоих этих столбцах, чтобы возвращаемый информационный кадр исключал выбросы из обоих этих столбцов?Я могу применить это к одному, но не уверен, как я могу применить это к обоим столбцам.
Я попробовал следующее
def make_mask(df, column):
standardized = (df[column] - df[column].mean())/df[column].std()
return standardized.abs() >= 2
def filter_outliers(df, columns):
print(columns)
masks = (make_mask(df, column) for column in columns)
print(masks)
full_mask = np.logical_or.reduce(masks)
print(full_mask)
return df[full_mask]
outliersremoved_df=filter_outliers(df,['price','qty'])
Я использовал это, но я могу применить его только к одному столбцу за раз:
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
ошибка с2 верхние функции:
ValueError: too many values to unpack (expected 1)