Короткий ответ
По правилу IQR выброс считается значением ниже Q1 минус 1.5×IQR или выше Q3 плюс 1.5×IQR, где IQR — это разница между 75-м и 25-м перцентилем.
Как это работает подробнее
Q1 и Q3 — это 25-й и 75-й перцентили распределения, IQR = Q3 − Q1; границы Q1 − 1.5×IQR и Q3 + 1.5×IQR образуют "нормальный" диапазон, а значения за его пределами помечаются как потенциальные выбросы.
Пример кода
question-116.py
import pandas as pd
s = pd.Series([10, 12, 11, 13, 12, 100])
q1, q3 = s.quantile(0.25), s.quantile(0.75)
iqr = q3 - q1
lower, upper = q1 - 1.5 * iqr, q3 + 1.5 * iqr
outliers = s[(s < lower) | (s > upper)]
print(lower, upper, outliers.tolist())Что использовать на практике
- Практика. это простое и устойчивое к асимметрии правило удобно для быстрой разведочной проверки, но коэффициент 1.5 — условность, а не универсальный закон; для сильно скошенных распределений (например, доходы) правило может помечать как "выбросы" много законных значений.
- Проверка. значение 100 должно попасть в outliers, так как оно существенно превышает верхнюю границу, рассчитанную по основной массе значений вокруг 10–13.
Подводные камни
- Частая ошибка. применяют правило IQR к явно нечисловому или категориальному распределению, где понятие выброса в принципе не применимо; автоматически удаляют все помеченные значения без содержательной проверки, хотя некоторые "выбросы" могут быть реальными и важными событиями (крупный корпоративный заказ), а не ошибками данных.