Вы можете сделать простое обнаружение выброса, используя внутренний квартильный диапазон (IQR).Из википедии
Межквартильный диапазон (IQR), также называемый средним или средним 50%, или технически H-разбросом, является мерой статистической дисперсии, равной разнице между 75-м и 25-м процентилямиили между верхним и нижним квартилями, IQR = Q3 - Q1.Другими словами, IQR - это первый квартиль, вычтенный из третьего квартиля;эти квартили можно отчетливо увидеть на графике на диаграмме.Это мера дисперсии, аналогичная стандартному отклонению или дисперсии, но гораздо более устойчивая к выбросам.
Q1 = data.quantile(0.25)
Q3 = data.quantile(0.75)
IQR = Q3 - Q1
print(IQR)
if(data[i] < (Q1 - 1.5 * IQR)) |(data[i] > (Q3 + 1.5 * IQR))
#outlier detected
#do stuff ...
если точка данных находится за пределами границ выбросов, тогда точка данных, возможно, являетсявыброс.Таким образом, в вашем случае на основе логики вы рассчитываете выбросы для каждого столбца или всех столбцов вместе, это зависит от данных, которые у вас есть, и от того, как они связаны.Надеюсь, поможет.
Кстати, вы можете просто визуализировать вышеуказанный метод, используя matplotlib boxplot
.Просто передайте ряд данных, где вы делаете обнаружение выбросов, он напрямую это сделает и подготовит для вас.Существуют и другие методы, такие как scikit learn обнаружение выбросов Этот блог также полезен.