КПКейсПрактика
Все материалы
Продуктовая аналитикапрактикумсредний

EDA в pandas: как провести разведывательный анализ данных

Пошаговый EDA в pandas: проверить структуру, распределения, связи и сегменты до того, как строить метрики и делать выводы.

КПКейсПрактика2 августа 2026 г.12 мин
Два аналитика исследуют распределения и связи в таблице перед расчётом метрик.

Разведывательный анализ нужен до красивого дашборда и до сложной модели. Он помогает понять, что именно лежит в таблице, где данные неполные, какие значения типичны и какие сегменты ведут себя иначе. EDA не даёт автоматического ответа, но заметно снижает риск считать не то.

Коротко

EDA — это короткое исследование формы данных: размер, типы, пропуски, уникальность, распределения, связи и сегменты. Его результатом должен быть список наблюдений и вопросов для следующего анализа, а не коллекция случайных графиков.

  • Начни с зерна таблицы и периода данных.
  • Смотри на распределение, а не только на среднее.
  • Отделяй технические пропуски от реального отсутствия значения.
  • Проверяй ключевые срезы до общего вывода.

Шаг 1. Профиль таблицы

Первый экран EDA должен отвечать на простые вопросы: сколько строк, какие поля, какой диапазон дат, где пропуски и сколько уникальных ключей. Если в таблице заказов 200 тысяч строк, но только 80 тысяч order_id, это уже влияет на любой последующий расчёт.

pythonБыстрый профиль DataFrame
def profile(df: pd.DataFrame) -> pd.DataFrame:
    return pd.DataFrame({
        'dtype': df.dtypes.astype(str),
        'missing': df.isna().sum(),
        'missing_share': df.isna().mean().round(3),
        'unique': df.nunique(dropna=False),
    }).sort_values('missing_share', ascending=False)

print('rows, columns:', orders.shape)
display(profile(orders))
display(orders[['created_at', 'revenue']].describe())

Шаг 2. Смотреть на распределения

Средний чек может быть 1 500 ₽, хотя половина заказов меньше 600 ₽, а несколько крупных клиентов тянут среднее вверх. Поэтому для денег и времени полезно смотреть медиану, квантили и хвост. Выброс — не всегда ошибка: иногда это отдельный тип пользователя или важный бизнес-сценарий.

Какие числа добавить к среднему
ПоказательЧто показываетОсторожность
medianтипичное центральное значениене показывает размер хвоста
quantile(0.9)уровень, ниже которого 90% наблюденийзависит от размера выборки
min / maxграницы наблюдаемых значенийчасто чувствительны к ошибкам
stdразброс вокруг среднегоплохо объясняет сильно асимметричные данные
pythonКвантили выручки вместо одного среднего
revenue_summary = orders['revenue'].describe(percentiles=[.5, .75, .9, .99])
print(revenue_summary)

p99 = orders['revenue'].quantile(.99)
large_orders = orders.loc[orders['revenue'] > p99]
print('share of orders above p99:', len(large_orders) / len(orders))

Шаг 3. Сегменты важнее общей средней

Общий показатель может быть устойчивым, пока внутри него меняются сегменты. Средний заказ по всем каналам скрывает разницу между новым и возвращающимся покупателем. EDA помогает найти срезы, где меняется форма данных, а затем уже решать, нужен ли отдельный KPI или дополнительная гипотеза.

pythonСравнить распределение по каналам
segment_summary = (
    orders.groupby('channel')
    .agg(
        orders=('order_id', 'nunique'),
        buyers=('user_id', 'nunique'),
        median_revenue=('revenue', 'median'),
        p90_revenue=('revenue', lambda s: s.quantile(.9)),
    )
    .sort_values('median_revenue', ascending=False)
)
display(segment_summary)

EDA не доказывает причину

Если пользователи из referral-канала покупают чаще, это ещё не означает, что канал сам по себе создаёт лучший опыт. В него могли попадать более лояльные клиенты или другой тип продукта. Разведывательный анализ формирует вопрос: “почему сегмент отличается?”. Для причинности нужны эксперимент, квазиэксперимент или дополнительный дизайн исследования.

  • Не удаляй выбросы только ради более красивого среднего.
  • Не называй корреляцию влиянием.
  • Запиши, какие фильтры применил к исследованию.
  • Отделяй находки, которые увидел заранее, от найденных перебором срезов.
Продолжить чтение
Вся библиотека