Я хочу удалить из своего набора данных только очень сильные выбросы. Я использовал этот код для построения выбросов:
def percentile_based_outlier(data, threshold):
diff = (100 - threshold) / 2
minval, maxval = np.percentile(data, [diff, 100 - diff])
return (data < minval) | (data > maxval)
col_names = ['Pts/75', 'PlayVal', 'FTA/100', 'rDREB%']
threshold = 99.5
fig, ax = plt.subplots(len(col_names), figsize=(8,40))
for i, col_val in enumerate(col_names):
x = Data[col_val][:1346]
sns.distplot(x, ax=ax[i], rug=True, hist=False)
outliers = x[percentile_based_outlier(x, threshold)]
ax[i].plot(outliers, np.zeros_like(outliers), 'ro', clip_on=False)
ax[i].set_title('Outlier detection - {}'.format(col_val), fontsize=15)
ax[i].set_xlabel(col_val, fontsize=10)
plt.show()
, затем он показывает график: коробчатая диаграмма с выбросами
теперь, как мне изменить код, чтобы удалить выбросы после создания графика? Если это невозможно, есть ли какой-либо альтернативный метод, например, отдельная функция для удаления выбросов с тем же пороговым параметром? (у меня есть другие столбцы, которые я хотел бы очистить с другим пороговым значением)