Руководство по Seaborn для новичков

Вступление

Если matplotlib «пытается сделать простые вещи легкими, а сложные - возможными», то seaborn помогает упростить четко определенный набор сложных вещей.

Крутизна Сиборна:

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

В этом руководстве мы будем использовать три библиотеки для - Matplotlib, Seaborn, Pandas. Если вы полный новичок в Python, я предлагаю начать и немного познакомиться с Matplotlib и Pandas.

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

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

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

Вы можете скачать набор данных здесь: https://github.com/shelvi31/Seaborn-Experiments

https://python-graph-gallery.com/.

Приступим сейчас:

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

Читаем файл CSV

-2

Я переключил кодировку на а utf8, определив другой пакет кодека в команде read_csv ().

Наши данные выглядят примерно так….

-3

Выход:

-4

Выход

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

Вот упрощенное описание набора данных для вас.

Этот набор данных включает 150 покемонов.

В этом наборе данных 150 строк и 13 столбцов.

Описание столбцов:

# ID для каждого покемона

# Имя: Имя каждого покемона

# Type 1: у каждого покемона есть тип, который определяет слабость / устойчивость к атакам.

# Type 2: Некоторые покемоны двойного типа и имеют характеристики обозначенные 2

# Total: сумма всех характеристик, которые идут после этого, общее руководство по тому, насколько силен покемон.

# HP: количество жизней или здоровья определяет, какой урон покемон может выдержать .

# Attack: базовый модификатор для обычных атак (например, Scratch, Punch)

# Defense : базовое сопротивление урону от обычных атак

# SP Атака: специальная атака, базовый модификатор для специальных атак (например, огненный взрыв, пузырьковый луч)

# SP Def: базовое сопротивление урону от специальных атак.

# Speed: определяет, какой покемон атакует первым в каждом раунде

# Stage: номер поколения

# Legendery: верно, если легендарный покемон, ложно, если нет

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

-5

Мой результат теперь выглядит:

-6

Намного лучше!

Начнем визуализацию с простых - графика распределений.

Графики распределения:

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

Я мог бы использовать «data.hist (figsize = (12,10), bins = 20)», но поскольку не все столбцы в этой базе данных имеют числовые значения. Следовательно, мне нужно построить отдельные графики распределения.

-7

Вывод графика распределения: сумма атаки покемонов Функция Displot of Seaborn строит гистограмму с кривой плотности. Мы можем убрать плотность, используя опцию kde = ”False”.

Есть много альтернативных способов построить гистограмму в Python:

-8

Другой способ: использовать plt.hist ()

-9

Таким образом, для многих способов построения графиков распределения. Все функции pyplot.hist, seaborn.coOutuntplot и seaborn.displot действуют как оболочки для гистограммы matplotlib и могут использоваться, если построение такой гистограммы вручную будет слишком громоздким.

  • Для дискретных переменных удобнее использовать seaborn.countplot.
  • Для непрерывных переменных используются pyplot.hist или seaborn.distplot.

Совместные участки распределения:

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

-10
Выход: Jointplot
Выход: Jointplot

Графики плотности:

Графики плотности отображают распределение между двумя переменными.

-12

Гистограмма счетчик

Гистограммы помогают нам визуализировать распределения категориальных переменных: Счетчик - это тип гистограммы.

-13
Выход: гистограмма
Выход: гистограмма

Тепловая карта

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

-15
Выход: тепловая карта
Выход: тепловая карта

Диаграмма рассеяния:

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

Диаграммы разброса используются для наблюдения за взаимосвязями между переменными.

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

Выход: диаграмма рассеяния
Выход: диаграмма рассеяния

В Seaborn нет специальной функции точечной диаграммы, поэтому по умолчанию мы видим диагональную линию (линию регрессии).

К счастью, seaborn помогает нам создать эту диаграмму:

  • fit_reg = False используется для удаления линии регрессии
  • hue = ’Stage’ используется для окраски точек по третьему значению переменной. Таким образом, мы можем выразить третье измерение информации с помощью цвета.

Вот стадия эволюции покемона в качестве третьей переменной!

-18
Выход: настроенная диаграмма рассеяния
Выход: настроенная диаграмма рассеяния

Больше плотности приходится на отметку 40–120, пределы осей я изменю с помощью matplotlib:

-20

Теперь мы можем видеть более сфокусированный и более точный график!

Результат: лучший график рассеивания
Результат: лучший график рассеивания

Boxplot

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

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

Мы можем удалить столбец «Сумма атаки», поскольку у нас есть индивидуальная статистика. Мы также можем удалить столбцы «Поколение» и «Легендарный».

Скрипичный график

Сейчас я построю скрипичный график.

скрипичный график - это альтернатива ящику с усами . Они показывают распределение (по толщине скрипки), а не только сводную статистику.

Здесь я показал распределение атак по основным типам покемонов.

-22
Продукт: Сюжет для скрипки.
Продукт: Сюжет для скрипки.

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

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

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

Я использовал Bulbapedia для создания новой цветовой палитры.

-24

Внесение изменений в график в соответствии с цветом типа покемона:

-25
Результат: Лучшая сцена для скрипки 🙂
Результат: Лучшая сцена для скрипки 🙂

Swarmplots

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

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

-27
Swarmplot: Тип покемона против силы атаки
Swarmplot: Тип покемона против силы атаки

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

Вышележащие участки

-29
Вышележащие участки
Вышележащие участки

На заметку: inner = None: удалить такты внутри скрипок. alpha = 0.5: делает точки слегка прозрачными: помните, что альфа-значение должно быть плавающим, не сохраняйте в «» Вы можете найти ссылки на морской цвет здесь: https://python-graph-gallery.com/100-calling-a-color-with-seaborn/

Факторные графики

Факторные графики позволяют легко разделить графики по категориальным классам.

-31
Факторный график: для отдельных категориальных классов
Факторный график: для отдельных категориальных классов

Резюме:

  • plt.xticks (Rotation = -45): не работает, потому что вращает только последний график.
  • Необходимо использовать: set_xticklabels

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

Ссылка на изображение: Forbes
Ссылка на изображение: Forbes

Это все для статьи! Я надеюсь, что вы нашли это руководство полезным и сможете его использовать. Удачи в изучении данных и удачного обучения!

Seaborn предлагает множество графиков и функций. Вы всегда можете узнать больше на https://seaborn.pydata.org/.

В обучении прекрасно то, что никто не может отнять его у вас! - Би Би Кинг

Машинное обучениеПо всем вопросам : https://t.me/haarrp Самая актуальная информация из мира machine learning , нейронных сетей. https://t.me/ai_machinelearning_big_data - наш телеграм канал
9,4K подписчиков