Короткий ответ
Смотрю на распределение через describe()/boxplot в pandas, нахожу конкретные строки-выбросы и проверяю их контекст (дата, клиент, товар) вручную или сверкой с другим источником, прежде чем решать, удалять их или нет.
Как это работает подробнее
статистические методы (например, правило 3 сигм или IQR) помогают быстро найти кандидатов в выбросы, но не объясняют их природу — выброс может быть корпоративным заказом, ошибкой ввода (лишний ноль) или тестовой транзакцией.
Пример кода
Пример Python
import pandas as pd
print(df['amount'].describe())
q1, q3 = df['amount'].quantile([0.25, 0.75])
iqr = q3 - q1
outliers = df[df['amount'] > q3 + 1.5 * iqr]
print(outliers[['order_id', 'customer_id', 'amount']])Что использовать на практике
- Порядок действий. в pandas использую
df['amount'].describe()и boxplot для визуальной оценки, затемdf[df['amount'] > threshold], чтобы посмотреть конкретные строки: кто клиент, какой товар, не тестовый ли аккаунт. Выброс не удаляю автоматически — документирую решение и причину.
Подводные камни
- Частые ошибки. автоматически обрезать все значения выше перцентиля без проверки их смысла; путать редкое, но реальное крупное событие (оптовый заказ) с ошибкой; не сообщать заказчику отчёта, что часть данных была исключена и почему.