Назад к блогу
Python / EDA

Что такое EDA и как я провожу первичный анализ данных

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

EDAPythonPandasData Cleaning
7 минут чтенияБлог: Аналитика на практике
01

Введение

Когда я начинаю новый аналитический проект, я не сразу строю сложные графики и не спешу проверять гипотезы.

Сначала я провожу EDA — exploratory data analysis, или исследовательский анализ данных.

Простыми словами, EDA — это первое знакомство с данными. На этом этапе аналитик пытается понять, что лежит в датасете, насколько данные качественные, какие в них есть проблемы, закономерности и ограничения.

Для меня EDA — это как осмотр карты перед путешествием. Прежде чем идти дальше, нужно понять, где мы находимся, какие есть дороги, где возможны ошибки и куда вообще стоит смотреть.
02

Зачем нужен EDA

EDA помогает не просто «посмотреть данные», а подготовить основу для правильного анализа.

  • какие данные у нас есть
  • сколько строк и столбцов в таблице
  • какие типы данных используются
  • есть ли пропуски
  • есть ли дубликаты
  • есть ли выбросы
  • как распределены значения
  • какие признаки могут быть важны для анализа
  • какие ограничения есть у данных
Хороший EDA не даёт финального ответа на бизнес-вопрос, но показывает, насколько данным можно доверять и как с ними работать дальше.
03

Сначала я изучаю структуру данных

Первый шаг — понять, из чего состоит датасет. Я смотрю количество строк и столбцов, названия колонок, типы данных, первые строки таблицы, описание признаков и период, за который собраны данные.

df.head()
df.info()
df.shape
df.describe()

Наблюдение

Ошибки часто появляются не из-за сложной статистики, а из-за неправильного понимания данных.

04

Затем я проверяю типы данных

После общего знакомства я смотрю, корректно ли определились типы данных. Дата может храниться как текст, числовой столбец может быть записан как object, категория может быть обычной строкой, а булевый признак может быть записан как 0 и 1.

df['date'] = pd.to_datetime(df['date'])
05

Потом я ищу пропуски

Пропуски — одна из самых частых проблем в данных. Я проверяю не только количество пропусков, но и их долю.

df.isna().sum()
df.isna().mean()
С пропусками нельзя работать автоматически по принципу «всё заменить на ноль». Иногда это исказит анализ.
06

Дальше я проверяю дубликаты

Дубликаты могут сильно искажать результаты анализа. Если одна и та же покупка или один и тот же пользователь случайно попали в таблицу дважды, мы можем завысить выручку, количество заказов или активность пользователей.

df.duplicated().sum()
df.duplicated(subset=['user_id']).sum()

Наблюдение

При проверке дубликатов я всегда задаю вопрос: что должна означать одна строка в этой таблице?

07

Затем я смотрю распределения

После проверки качества данных я начинаю изучать сами значения. Для числовых признаков смотрю минимум, максимум, среднее, медиану, квартили, выбросы и форму распределения. Для категориальных признаков — количество уникальных значений, частые и редкие категории.

Числовые признаки

  • минимум
  • максимум
  • среднее
  • медиана
  • квартили
  • выбросы
  • форма распределения

Категориальные признаки

  • количество уникальных значений
  • самые частые категории
  • редкие категории
  • распределение по группам
08

Я проверяю выбросы

Выбросы — это значения, которые сильно отличаются от остальных. Они не всегда являются ошибкой. Иногда это реальные, но редкие случаи, поэтому я не удаляю их автоматически.

  • это ошибка в данных или реальное наблюдение?
  • сильно ли это значение влияет на среднее?
  • стоит ли анализировать данные с выбросами и без них?
  • нужно ли использовать медиану вместо среднего?
09

Я изучаю связи между признаками

После базового анализа я смотрю, как признаки связаны между собой.

  • зависит ли выручка от рекламного канала
  • отличаются ли пользователи разных устройств
  • связан ли рейтинг заведения с ценовой категорией
  • различается ли конверсия между группами
  • меняется ли средний чек по районам
df.groupby('channel')['revenue'].sum()
df.groupby('category')['rating'].mean()
Связь между признаками не всегда означает причинно-следственную зависимость.
10

Я строю первые визуализации

Визуализации помогают быстрее увидеть структуру данных. Я использую гистограммы для распределений, boxplot для выбросов, столбчатые диаграммы для сравнения категорий, линейные графики для динамики, scatter plot для связи между числовыми признаками и heatmap для корреляций.

гистограмма — для распределений

boxplot — для выбросов

столбчатая диаграмма — для сравнения категорий

линейный график — для динамики

scatter plot — для связи между числовыми признаками

heatmap — для корреляций

11

Я фиксирую ограничения данных

Один из важных результатов EDA — понимание ограничений. Это важно указывать в проекте, потому что ограничения влияют на выводы.

  • в некоторых столбцах много пропусков
  • данные есть только за короткий период
  • часть пользователей не попала в выборку
  • не все категории представлены равномерно
  • некоторые метрики рассчитаны только для части строк
Лучше честно обозначить ограничение, чем сделать красивый, но слабый вывод.
12

После EDA я формулирую первые выводы

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

13

Мой чек-лист EDA

1

Изучить структуру данных

2

Проверить названия и смысл столбцов

3

Посмотреть типы данных

4

Проверить пропуски

5

Проверить дубликаты

6

Изучить числовые признаки

7

Изучить категориальные признаки

8

Найти выбросы

9

Построить первые графики

10

Проверить связи между признаками

11

Зафиксировать ограничения данных

12

Сформулировать первые выводы

14

Заключение

EDA — это фундамент любого аналитического проекта.

На этом этапе аналитик знакомится с данными, проверяет их качество, ищет первые закономерности и понимает, какие ограничения есть у анализа.

Для меня EDA — это не просто технический этап. Это способ задать данным правильные вопросы.

Хороший анализ начинается не с красивого графика, а с понимания: что лежит в данных, насколько им можно доверять и какой бизнес-вопрос мы хотим решить.

Посмотреть мои аналитические проекты

В портфолио я показываю, как применяю EDA в Python, SQL и BI-проектах.

Перейти к проектам
Назад к блогу