$ sudo teach IT

Файл для практики.

customer_id,age,orders,revenue,visits,segment
1,22,2,120,10,Basic
2,24,3,180,12,Basic
3,25,3,210,13,Basic
4,26,4,240,14,Basic
5,27,4,260,15,Basic
6,29,5,320,16,Standard
7,30,5,350,17,Standard
8,31,6,400,18,Standard
9,32,6,420,19,Standard
10,34,7,500,20,Standard
11,35,7,520,21,Premium
12,36,8,600,22,Premium
13,38,8,650,23,Premium
14,39,9,700,24,Premium
15,40,9,750,25,Premium
16,42,10,820,26,VIP
17,43,10,850,27,VIP
18,44,11,900,28,VIP
19,45,11,950,29,VIP
20,47,12,1050,30,VIP
21,28,3,190,14,Basic
22,33,6,430,18,Standard
23,37,8,670,23,Premium
24,46,12,1100,31,VIP
25,41,9,780,25,Premium
26,23,2,130,11,Basic
27,48,13,1200,32,VIP
28,50,14,1350,34,VIP
29,52,15,1500,35,VIP
30,55,16,1700,38,VIP

На протяжении нескольких уроков мы знакомились с различными инструментами визуализации в Seaborn. Мы строили графики для категориальных признаков, анализировали распределения числовых данных и исследовали связи между переменными.

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

Представьте, что вы получили таблицу с данными о клиентах интернет-магазина. В ней есть возраст, количество заказов, средний чек, общий объем покупок и множество других показателей. Просматривать каждый столбец отдельно неудобно. Гораздо эффективнее использовать инструменты, которые позволяют получить общее представление о данных и быстро найти интересные взаимосвязи.

В этом уроке мы познакомимся с графиками heatmap() и pairplot(), научимся строить матрицы корреляции и рассмотрим подходы к исследовательскому анализу данных (EDA).

Что вы узнаете в рамках статьи

  • Что такое исследовательский анализ данных.
  • Для чего используется матрица корреляции.
  • Как строить тепловые карты через heatmap().
  • Как использовать pairplot().
  • Как анализировать несколько признаков одновременно.
  • Как искать зависимости между переменными.
  • Как выглядит типичный процесс EDA.

Ключевые термины

  • EDA (Exploratory Data Analysis) — исследовательский анализ данных.
  • Корреляция — мера связи между двумя признаками.
  • Матрица корреляции — таблица корреляций между всеми числовыми признаками.
  • Heatmap — тепловая карта для визуального отображения значений.
  • Pairplot — набор графиков для анализа связей между несколькими признаками.
  • Зависимость — связь между переменными.
  • Паттерн — повторяющаяся закономерность в данных.

Что такое EDA

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

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

Подготовка данных

Для примеров будем использовать небольшой набор данных.

import pandas as pd

df = pd.DataFrame({
    "age": [22, 25, 27, 31, 35, 40, 45],
    "orders": [2, 3, 4, 6, 7, 8, 10],
    "revenue": [120, 180, 250, 400, 500, 650, 850],
    "visits": [10, 12, 14, 18, 20, 22, 25]
})

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

Что такое матрица корреляции

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

Для решения этой проблемы используют матрицу корреляции. Она показывает силу связи между всеми числовыми признаками сразу.

Построение матрицы корреляции

В Pandas матрица корреляции строится очень просто.

corr_matrix = df.corr()

print(corr_matrix)
              age    orders   revenue    visits
age      1.000000  0.991240  0.997713  0.988021
orders   0.991240  1.000000  0.991376  0.998661
revenue  0.997713  0.991376  1.000000  0.985883
visits   0.988021  0.998661  0.985883  1.000000

В результате получится таблица, содержащая коэффициенты корреляции для каждой пары признаков. Но в текстовом виде такую таблицу анализировать неудобно. Поэтому обычно используют тепловые карты.

Построение heatmap()

Для визуализации матрицы корреляции применяется heatmap().

import seaborn as sns
import matplotlib.pyplot as plt

corr_matrix = df.corr()

sns.heatmap(corr_matrix)

plt.show()

Вместо чисел мы получаем наглядную карту цветов. Это значительно упрощает анализ.

Как читать тепловую карту

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

Добавление числовых значений

На практике часто отображают коэффициенты корреляции прямо внутри ячеек. Для этого используется параметр annot=True.

Пример:

sns.heatmap(
    corr_matrix,
    annot=True
)

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

Интерпретация корреляции

Значение корреляции находится в диапазоне от -1 до 1.

  • Если значение близко к 1, признаки изменяются в одном направлении.
  • Если значение близко к -1, признаки изменяются в противоположных направлениях.
  • Если значение близко к нулю, выраженной линейной связи может не быть.

Важно помнить, что корреляция показывает наличие связи, но не доказывает причинно-следственные отношения.

Что такое pairplot()

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

Для этого существует pairplot().

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

df = pd.DataFrame({
    "age": [22, 25, 27, 31, 35, 40, 45],
    "orders": [2, 3, 4, 6, 7, 8, 10],
    "revenue": [120, 180, 250, 400, 500, 650, 850],
    "visits": [10, 12, 14, 18, 20, 22, 25]
})

sns.pairplot(df)

plt.show()

После выполнения команды Seaborn автоматически создаст целый набор графиков.

Что отображает pairplot()

На диагонали обычно располагаются распределения отдельных признаков. Во всех остальных ячейках отображаются диаграммы рассеяния для различных комбинаций признаков. Фактически Seaborn строит десятки графиков автоматически. Именно поэтому pairplot() считается одним из самых мощных инструментов первичного анализа данных.

Почему pairplot полезен

Представьте, что в таблице содержится пять числовых признаков.

Чтобы вручную изучить все возможные комбинации, пришлось бы построить множество отдельных графиков. pairplot() делает это автоматически. За несколько секунд можно получить общее представление о структуре данных.

Использование hue

Если в данных присутствует категориальный признак, его можно использовать для раскраски графиков.

Например:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

import pandas as pd

df = pd.DataFrame({
    "age": [22, 25, 27, 31, 35, 40, 45],
    "orders": [2, 3, 4, 6, 7, 8, 10],
    "revenue": [120, 180, 250, 400, 500, 650, 850],
    "visits": [10, 12, 14, 18, 20, 22, 25],
    "segment": ["Basic", "Basic", "Standard", "Standard", "Premium", "Premium", "VIP"]
})

sns.pairplot(
    df,
    hue="segment"
)


plt.show()

В этом случае объекты различных групп будут отображаться разными цветами. Это помогает быстрее замечать различия между категориями.

Поиск закономерностей

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

Поиск выбросов

Одним из побочных преимуществ pairplot() является возможность обнаруживать выбросы. Если отдельные точки расположены далеко от основной массы наблюдений, это может указывать на ошибки в данных или необычные объекты. Подобные случаи обычно требуют дополнительного изучения.

Типичный процесс EDA

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

Сначала аналитик изучает структуру данных и основные статистики. Затем строит распределения признаков, проверяет корреляции через heatmap() и исследует взаимосвязи между признаками с помощью pairplot().

После этого уже становится понятно, какие признаки наиболее интересны и какие гипотезы стоит проверить дальше.

Когда использовать heatmap()

Тепловая карта особенно полезна, когда признаков много. Она позволяет быстро получить общую картину и определить наиболее сильные взаимосвязи. Если признаков десятки, heatmap часто становится первым графиком, который строит аналитик.

Когда использовать pairplot()

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

Наиболее частые ошибки

  • Пытаться анализировать только корреляцию
    Некоторые зависимости могут быть нелинейными.
  • Считать корреляцию доказательством причинно-следственной связи
    Это разные вещи.
  • Строить pairplot для десятков признаков одновременно
    График становится трудно читаемым.
  • Игнорировать выбросы на графиках
    Они могут существенно влиять на результаты анализа.
  • Использовать heatmap без annot=True
    Численные значения бывает сложно оценить только по цветам.

Наиболее частые вопросы

  • Что лучше использовать: heatmap или pairplot?
    Обычно оба инструмента используются вместе.
  • Можно ли строить heatmap для категориальных признаков?
    Обычно матрица корреляции строится только для числовых данных.
  • Когда pairplot становится неудобным?
    При большом количестве признаков.
  • Что показывает диагональ в pairplot?
    Распределение каждого отдельного признака.
  • Является ли корреляция доказательством зависимости?
    Нет, она лишь показывает наличие статистической связи.

Итоги

В этом уроке вы познакомились с инструментами комплексного анализа данных в Seaborn. Мы научились строить матрицы корреляции и визуализировать их через heatmap(), использовать pairplot() для анализа нескольких признаков одновременно и искать закономерности внутри данных.

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

На следующий урок