Представьте свои данные в виде горного хребта - и по пути обнаруживайте скрытые детали.

Вы не устали рисовать гистограммы или графики плотности для каждого сегмента переменной? Есть более простое решение. Графики Ridgeline - это лучший способ визуализации для этого типа проблем. Да, даже для нескольких переменных одновременно.

Вот что вы сделаете сегодня:

Чтение кажется кошмаром? Есть простое решение:

Приступим к делу. Вот как структурирована статья:

  • Загрузка и подготовка набора данных
  • График Ridgeline для одной переменной
  • График Ridgeline для нескольких переменных
  • Заключение

Загрузка и подготовка набора данных

Набор данных, который вы будете использовать сегодня, называется Дождь в Австралии, поэтому, пожалуйста, загрузите его. Вы не будете использовать его для предсказания дождя, как говорится в описании, а для визуализации.

Вы будете использовать только четыре столбца:

  • Date - полезно для извлечения информации за месяц
  • Location - вы будете работать только с данными Сиднея
  • MinTemp– минимальная дневная температура
  • MaxTemp– максимальная температура за день

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

pip install joypy

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

Первая пара строк должна выглядеть так:

Теперь перейдем к подготовке. Список дел довольно короткий:

  • Создайте фрейм данных sydney, содержащий данные только для этого города
  • Откажитесь от колонки Location
  • Преобразование столбца Date в тип datetime64
  • Извлечь названия месяцев из даты

Вот код:

Набор данных теперь выглядит так:

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

У Pandas есть CategoricalDtype класс, который может вам в этом помочь. Вам необходимо указать порядок категорий, а затем выполнить преобразование. Вот как:

Доступ к dtypes информирует вас, что преобразование прошло успешно:

Готово, все готово! Пришло время сделать несколько хребтовых сюжетов.

График Ridgeline для одной переменной

Рисование диаграммы сводится к одному вызову функции. Вот код, который вам понадобится для построения графика максимальных температур в Сиднее:

Вы можете отказаться от первой и последней двух строк, если вас не волнует заголовок. Достаточно звонка на joyplot().

Вот как выглядит визуализация:

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

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

График Ridgeline для нескольких переменных

Помимо построения графиков распределения максимальных температур, теперь вы должны указать минимальную температуру. И снова библиотека thejoyplot упрощает:

Вот как выглядит визуализация:

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

Давайте подведем итоги.

Заключение

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

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

Присоединяйтесь к моему личному списку рассылки для получения более полезных идей.