🏢 Ситуация
Среда. В Slack сообщение от Лены:
«Первая боевая задача. Макс хочет понять, что происходит с продажами в категории "Электроника" — выручка растёт, а прибыль нет. Аня выгрузила тебе
sales.csvза последние 12 месяцев (50 000 заказов). Нужен EDA-отчёт к пятнице: что в данных, какие аномалии, какие гипотезы. Не модель — именно понимание данных. И проверь качество данных, у Ани были жалобы на дубли из-за ретраев в пайплайне.»
🎯 Ваша задача
- Загрузить данные и понять их структуру.
- Найти проблемы качества: пропуски, дубли, аномалии.
- Ответить на вопрос бизнеса: почему выручка растёт, а прибыль — нет.
📚 Теория
Что такое EDA и зачем он нужен
EDA (Exploratory Data Analysis) — разведочный анализ данных. Это первое, что делает любой ML-инженер с новым датасетом. Цели:
- Понять структуру: какие колонки, типы, сколько строк.
- Найти проблемы: пропуски, дубликаты, выбросы, ошибки типов.
- Увидеть закономерности: распределения, корреляции, тренды.
- Сформулировать гипотезы до построения моделей.
Правило из практики: модель, обученная на непроверенных данных, — это баг, который вы заметите слишком поздно.
Джентльменский набор Pandas
На что смотреть в describe()
- min/max неправдоподобны? Цена = −500 или возраст = 200 → ошибки данных.
- mean сильно отличается от медианы (50%)? Распределение скошено, есть выбросы.
- std = 0? Колонка-константа, бесполезна.
Пропуски: три стратегии
| Стратегия | Когда применять |
|---|---|
| Удалить строки | пропусков < 1–2% и они случайны |
| Заполнить (медиана/мода/спец-значение) | пропусков заметно, колонка важна |
| Оставить как признак | сам факт пропуска информативен (например, «не указал телефон») |
Выбросы
Классический метод — межквартильный размах (IQR): выброс — это значение вне [Q1 − 1.5·IQR, Q3 + 1.5·IQR], где IQR = Q3 − Q1. Но помните: не каждый выброс — ошибка. Заказ на 900 000 ₽ может быть реальной оптовой закупкой. Выбросы сначала исследуют, потом решают.