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
  1. # создадим функцию, которая удалит выбросы в переменных в соответствии с выбранным подходом
  2. def delete_outliers(data):
  3.     for col in data.select_dtypes(include=['int64', 'float64']):
  4.        
  5.         # найдём первый и третий квартили и границы "усов"
  6.         q = df[col].quantile([0.25, 0.75])
  7.         upper_whisker = q[0.75] + 1.5 * (q[0.75] - q[0.25])
  8.         lower_whisker = q[0.25] - 1.5 * (q[0.75] - q[0.25])
  9.  
  10.         # посчитаем, какой процент выборки лежит вне "усов"
  11.         outliers_count_upper = df[col][df[col] > upper_whisker].count()
  12.         outliers_count_lower = df[col][df[col] < lower_whisker].count()
  13.         outliers_percentage_upper = outliers_count_upper / df[col].count()
  14.         outliers_percentage_lower = outliers_count_lower / df[col].count()
  15.        
  16.         if outliers_percentage_upper + outliers_percentage_lower < 0.05:
  17.             data = data[(data[col] <= upper_whisker) &
  18.                         (data[col] >= lower_whisker) |
  19.                         (data[col].isna())
  20.                        ]
  21.             print(color.BOLD, col, data.shape[0], color.END)
  22.         else:
  23.             print(color.BOLD, col, data.shape[0], '|', color.RED,'ТРЕБУЕТСЯ ЭКСПЕРТНАЯ ОЦЕНКА!', color.END)
  24.        
  25.         print('Доля выбросов в выборке:', f'{(outliers_percentage_upper + outliers_percentage_lower):.2%}',
  26.               f'(наблюдений: {(outliers_count_upper + outliers_count_lower)})')

Reply to "Untitled"

Here you can reply to the paste above