ПИТОН | ДАННЫЕ | ВИЗУАЛИЗАЦИЯ

Понимание мозаичных графиков

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

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

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

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

Среди имеющегося в нашем распоряжении арсенала инструментов для визуализации данных есть знаменитая Matplotlib.

Эта мощная библиотека Python универсальна и надежна.

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

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

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

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

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

Понимание мозаичных графиков

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

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

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

С внешней точки зрения можно наблюдать, как разрозненные категории (или цвета, следуя нашей метафоре кубика Рубика) соединяются и смешиваются.

Подумайте, где можно использовать эти сюжеты?

Представьте, что вы работаете на потоковой платформе, такой как Netflix, и вам поручено понять взаимодействие между различными возрастными группами, полами и различными жанрами. Здесь сияет мозаичный сюжет. Он представляет собой визуальное определение частоты, с которой, например, женщины в возрасте 18–25 лет смотрят комедии по сравнению с мужчинами той же возрастной группы, или склонности возрастной группы 35–45 лет к триллерам.

Мозаичные сюжеты обладают многочисленными преимуществами.

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

Тем не менее, важно знать об их ограничениях.

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

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

У них есть возможность преобразовать скучную таблицу цифр в динамическое изображение тенденций и отношений.

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

Создание вашего первого мозаичного графика с помощью Matplotlib

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

Перво-наперво. Нам, конечно, нужны данные. В этом примере мы будем использовать открытый титанический набор данных (см. https://www.openml.org/search?type=data&sort=runs&id=40945&status=active).

Наша цель? Чтобы выяснить, как процент выживших делится между мужчинами и женщинами.

Давайте приступим к делу, не так ли?

Начнем с импорта необходимых библиотек:

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
from scipy.io.arff import loadarff
from statsmodels.graphics.mosaicplot import mosaic

Затем мы загружаем наш набор данных. Набор данных находится в формате ARFF. Мы можем загрузить его в pandas следующим образом:

# Load the data
raw_data = loadarff('titanic.arff')
titanic = pd.DataFrame(raw_data[0])

Мы вызываем функцию мозаики из statsmodels и передаем функции, которые хотим визуализировать.

# Create the mosaic plot
mosaic(titanic, ['alive', 'sex'], gap=0.02)

# Customize the plot
plt.title('Survival by Sex on Titanic')
plt.xlabel('Survived')
plt.ylabel('Sex')

plt.show()

И, мы получаем следующий результат:

Конечно, это очень простой пример.

Давайте поднимем это на ступеньку выше, не так ли?

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

Мы также будем использовать цветовое кодирование для переменной «выживший» и добавим на график несколько меток.

На этот раз нам также нужно импортировать библиотеку numpy.

import numpy as np

Мы создадим столбец survived следующим образом:

# Convert 'survived' into string for clarity in the plot
titanic['survived'] = titanic['survived'].map({0:'Died', 1:'Survived'})

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

# Define properties function for colors
props = lambda key: {'color': '#1b9e77' if 'Survived' in key else '#d95f02'}

И затем мы создаем диаграмму следующим образом:

# Create a new figure with a defined size
fig, ax = plt.subplots(figsize=(10, 8))

# Create the mosaic plot
mosaic(titanic, ['class', 'sex', 'survived'], gap=0.02, properties=props, ax=ax)

# Customize the plot
plt.title('Survival by Class and Sex on Titanic', fontsize=15)
plt.ylabel('Class - Sex')
plt.xlabel('Proportion')

plt.show()

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

Мозаика разделена на три основных вертикальных участка, представляющих три класса Титаника: Первый, Второй и Третий.

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

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

Затем каждый из разделов пола делится на две части, представляющие Выжил и Умер. Ширина этих делений пропорциональна количеству выживших и пострадавших в пределах каждого пола в каждом классе.

Например, в «женском» разделе класса «Первый» зеленая секция, обозначающая «Выжила», намного больше, чем оранжевая секция, представляющая «Умерла». Это говорит о том, что большая часть женщин первого класса выжила.

Цветовое кодирование дает дополнительные визуальные подсказки: зеленый цвет обозначает выживших, а оранжевый — тех, кто не выжил.

Советы и рекомендации по использованию мозаичных диаграмм

  • Не усложняйте. Мозаичные графики могут быстро стать громоздкими и загроможденными. Придерживайтесь нескольких категорий одновременно. Цель состоит в том, чтобы сообщить информацию.
  • Практикуйте эффективное цветовое кодирование. Как и при любой визуализации данных, цветовая палитра оказывает значительное влияние. Мозаичные сюжеты не исключение.
  • Используйте метки и аннотации — всегда маркируйте оси графика и давайте описательные заголовки. Контекст является ключевым.

Заключительные замечания

И вот оно!

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

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

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

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

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

Не стесняйтесь экспериментировать, пробовать различные настройки и экспериментировать с различными наборами данных. Практика делает совершенным!

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

Удачного заговора!

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



Хотите связаться?

Я хотел бы услышать ваши мысли по теме или что-нибудь AI и данные.

Напишите мне по адресу [email protected], если вы хотите связаться с нами.

Линкедин