- # создадим функцию, которая удалит выбросы в переменных в соответствии с выбранным подходом
- def delete_outliers(data):
- for col in data.select_dtypes(include=['int64', 'float64']):
- # найдём первый и третий квартили и границы "усов"
- q = df[col].quantile([0.25, 0.75])
- upper_whisker = q[0.75] + 1.5 * (q[0.75] - q[0.25])
- lower_whisker = q[0.25] - 1.5 * (q[0.75] - q[0.25])
- # посчитаем, какой процент выборки лежит вне "усов"
- outliers_count_upper = df[col][df[col] > upper_whisker].count()
- outliers_count_lower = df[col][df[col] < lower_whisker].count()
- outliers_percentage_upper = outliers_count_upper / df[col].count()
- outliers_percentage_lower = outliers_count_lower / df[col].count()
- if outliers_percentage_upper + outliers_percentage_lower < 0.05:
- data = data[(data[col] <= upper_whisker) &
- (data[col] >= lower_whisker) |
- (data[col].isna())
- ]
- print(color.BOLD, col, data.shape[0], color.END)
- else:
- print(color.BOLD, col, data.shape[0], '|', color.RED,'ТРЕБУЕТСЯ ЭКСПЕРТНАЯ ОЦЕНКА!', color.END)
- print('Доля выбросов в выборке:', f'{(outliers_percentage_upper + outliers_percentage_lower):.2%}',
- f'(наблюдений: {(outliers_count_upper + outliers_count_lower)})')
Untitled
From Walloping Horse, 10 Months ago, written in Plain Text, viewed 130 times.
This paste will expire in 1 Second.
URL http://codebin.org/view/183b9a15
Embed
Download Paste or View Raw
— Expand Paste to full width of browser