Русский
Русский
English
Статистика
Реклама

Перевод Как строить красивые графики на Python с Seaborn

Будущих студентов курса Python Developer. Professional и всех желающих приглашаем принять участие в открытом вебинаре на тему Фреймворкирование и метаклассы.

А сейчас делимся традиционным переводом полезного материала.


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

Есть множество инструментов для визуализации данных, таких как Tableau, Power BI, ChartBlocks и других, которые являются no-code инструментами. Они очень мощные, и у каждого своя аудитория. Однако для работы с сырыми данными, требующими обработки, а также в качестве песочницы, Python подойдет лучше всего.

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

Python лучший инструмент для data science и этому много причин, но самая важная это его экосистема библиотек. Для работы с данными в Python есть много замечательных библиотек, таких как numpy, pandas, matplotlib, tensorflow.

Matplotlib, вероятно, самая известная библиотека для построения графиков, которая доступна в Python и других языках программирования, таких как R. Именно ее уровень кастомизации и удобства в использовании ставит ее на первое место. Однако с некоторыми действиями и кастомизациями во время ее использования бывает справиться нелегко.

Разработчики создали новую библиотеку на основе matplotlib, которая называется seaborn. Seaborn такая же мощная, как и matplotlib, но в то же время предоставляет большую абстракцию для упрощения графиков и привносит некоторые уникальные функции.

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

Что такое Seaborn?

Seaborn это библиотека для создания статистических графиков на Python. Она основывается на matplotlib и тесно взаимодействует со структурами данных pandas.

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

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

Установка Seaborn

Установить seaborn так же просто, как и любую другую библиотеку, для этого вам понадобится ваш любимый менеджер пакетов Python. Во время установки seaborn библиотека установит все зависимости, включая matplotlib, pandas, numpy и scipy.

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

pipenv install seaborn notebook

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

import seaborn as snsimport pandas as pdimport numpy as npimport matplotlib

Строим первые графики

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

Давайте посмотрим, как это работает на наборе данных о рейсах самолетов.

flights_data = sns.load_dataset("flights")flights_data.head()

year

month

passengers

0

1949

Jan

112

1

1949

Feb

118

2

1949

Mar

132

3

1949

Apr

129

4

1949

May

121

Вся магия происходит при вызове функции load_dataset, которая ожидает имя загружаемых данных и возвращает dataframe. Все эти наборы данных доступны в репозитории на Github.

Диаграмма рассеяния Scatter Plot

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

sns.scatterplot(data=flights_data, x="year", y="passengers")

Легко, не правда ли? Функция scatterplot принимает в себя набор данных, который нужно визуализировать, и столбцы, которые будут выступать как оси x и y.

Линейный график Line Plot

Этот график рисует линию, которая представляет собой развитие непрерывных или категориальных данных. Этот вид графиков популярен и известен, и его легко создать. Как и раньше, мы воспользуемся функцией lineplot с набором данных и столбцами, представляющими оси x и y. Остальное за нас сделает seaborn.

sns.lineplot(data=flights_data, x="year", y="passengers")

Столбчатая диаграмма Bar Plot

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

sns.barplot(data=flights_data, x="year", y="passengers")

Она очень красочная, знаю. Позже мы научимся кастомизировать ее.

Расширение функционала с matplotlib

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

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

diamonds_data = sns.load_dataset('diamonds')plt.subplot(1, 2, 1)sns.countplot(x='carat', data=diamonds_data)plt.subplot(1, 2, 2)sns.countplot(x='depth', data=diamonds_data)

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

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

Seaborn и Pandas

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

drinks_df = pd.read_csv("data/drinks.csv")sns.barplot(x="country", y="beer_servings", data=drinks_df)

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

Seaborn дает возможность менять интерфейс ваших графиков. Для этого из коробки у нас в распоряжении есть пять стилей: darkgrid, whitegrid, dark, white и ticks.

sns.set_style("darkgrid")sns.lineplot(data = data, x = "year", y = "passengers")

А вот другой пример.

sns.set_style("whitegrid")sns.lineplot(data=flights_data, x="year", y="passengers")

Крутые варианты использования

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

Сначала загрузим набор данных.

tips_df = sns.load_dataset('tips')tips_df.head()

total_bill

tip

sex

smoker

day

time

size

0

16.99

1.01

Female

No

Sun

Dinner

2

1

10.34

1.66

Male

No

Sun

Dinner

3

2

21.01

3.50

Male

No

Sun

Dinner

3

3

23.68

3.31

Male

No

Sun

Dinner

2

4

24.59

3.61

Female

No

Sun

Dinner

4

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

Давайте добавим еще один столбец, в котором будет процентное отношение чаевых ко всему счету.

tips_df["tip_percentage"] = tips_df["tip"] / tips_df["total_bill"]tips_df.head()

Теперь данные выглядят так:

total_bill

tip

sex

smoker

day

time

size

tip_percentage

0

16.99

1.01

Female

No

Sun

Dinner

2

0.059447

1

10.34

1.66

Male

No

Sun

Dinner

3

0.160542

2

21.01

3.50

Male

No

Sun

Dinner

3

0.166587

3

23.68

3.31

Male

No

Sun

Dinner

2

0.139780

4

24.59

3.61

Female

No

Sun

Dinner

4

0.146808

А теперь мы начнем строить графики.

Процент чаевых

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

sns.histplot(tips_df["tip_percentage"], binwidth=0.05)

Чтобы все хорошо читалось, нам пришлось настроить свойство binwidth, зато теперь мы быстрее можем понять и оценить данные. Большинство клиентов оставляют чаевые в размере от 15 до 20% от счета, но есть несколько случаев, когда чаевые превышают 70%. Эти значения называются аномалиями или выбросами, и на них всегда стоит обращать внимание, чтобы понять являются ли эти значения ошибочными.

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

sns.histplot(data=tips_df, x="tip_percentage", binwidth=0.05, hue="time")

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

Общее количество чаевых за определенный день недели

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

sns.barplot(data=tips_df, x="day", y="tip", estimator=np.sum)

Кажется, пятница хороший день, чтобы остаться дома.

Влияние размера столика и дня недели на чаевые

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

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

pivot = tips_df.pivot_table(    index=["day"],    columns=["size"],    values="tip_percentage",    aggfunc=np.average)sns.heatmap(pivot)

Заключение

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

Надеюсь, вам понравилась эта статья так же, как и мне. Спасибо за прочтение!


Узнать подробнее о курсе Python Developer. Professional.

Зарегистрироваться на вебинар по теме Фреймворкирование и метаклассы.

Источник: habr.com
К списку статей
Опубликовано: 02.02.2021 18:09:11
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании otus

Python

Программирование

Метаклассы

Ai

Data science

Python 3

Seaborn

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru