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

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

Люди в первую очередь реагируют на визуальные стимулы — так мы устроены.

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

Наличие навыков в этой области повышает вашу эффективность и влияние как программиста Python.

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

Сценарий

У нас есть набор данных в файле CSV с именем movie_viewing_data.csv. Файл содержит следующие столбцы:

  • day_of_week – день недели, в который просматривался фильм.
  • hour_of_day — час дня, в который просматривался фильм.
  • content_length_minutes — продолжительность фильма в минутах.
  • viewing_duration_minutes — время, потраченное на просмотр фильма, в минутах.
  • жанр — жанр фильма.

Теперь ради этого упражнения я попросил ChatGPT создать для меня набор данных. У меня есть 150 «реалистичных» строк данных в моем наборе данных.

Мы хотим ответить на некоторые вопросы о привычках просмотра фильмов, например:

  • В какое время дня чаще всего смотрят фильмы?
  • Какая связь между продолжительностью фильма и временем его просмотра?
  • Как продолжительность просмотра зависит от жанра?

Это отличный сценарий для визуализации данных — давайте создадим 3 полезные диаграммы, чтобы понять эти данные!

Какие диаграммы мы можем использовать?

Лучшая стратегия для сложных данных — найти способ их визуализации, но какая визуализация работает лучше всего?

Некоторые полезные параметры визуализации

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

График рассеяния можно использовать для иллюстрации корреляции между длиной контента и продолжительностью просмотра.

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

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

Теперь, чтобы сделать это, Python Plotly отлично справляется со своей задачей!

Итак, давайте попробуем!

Код визуализации данных

Давайте начнем с кода для трех визуализаций данных, затем я дам пояснения:

import pandas as pd
import plotly.express as px
import plotly.graph_objects as go

# Read data from CSV file
df = pd.read_csv('movie_viewing_data.csv')

# Create a heatmap
heatmap_data = df.groupby(['day_of_week', 'hour_of_day']).size().unstack()
heatmap_data = heatmap_data.loc[['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']]  # sort by day_of_week

fig = go.Figure(data=go.Heatmap(
                   z=heatmap_data.values,
                   x=heatmap_data.columns,
                   y=heatmap_data.index,
                   colorscale='YlGnBu'))
fig.update_layout(title='Heatmap of Viewing Times by Day of Week and Hour of Day',
                  xaxis_nticks=24)  # ensure there's a tick for every hour
fig.show()

# Create a scatter plot
fig = px.scatter(df, x='content_length_minutes', y='viewing_duration_minutes', opacity=0.5, trendline="ols")
fig.update_layout(title='Scatter Plot of Viewing Duration vs Content Length')
fig.show()

# Create a box plot
fig = px.box(df, x='genre', y='viewing_duration_minutes')
fig.update_layout(title='Box Plot of Viewing Duration by Genre')
fig.show()

Предполагая, что у вас есть набор данных (я попросил ChatGPT создать его для меня и изменил его, чтобы он был более реалистичным), функция pd.read_csv используется для чтения CSV-файла «movie_viewing_data.csv» и сохранения данных в DataFrame df.

Затем мы можем создать каждую визуализацию из этого фрейма данных.

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

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

Данные группируются по параметрам «day_of_week» и «hour_of_day», а размер каждой группы (количество строк) рассчитывается с использованием метода .size(). Метод .unstack() используется для преобразования результирующей серии в DataFrame, где «hour_of_day» находится по столбцам, а «day_of_week» — по строкам.

go.Figure(data=go.Heatmap(...)) используется для создания тепловой карты, где «z» представляет значения ячеек, «x» представляет метки столбцов, «y» представляет метки строк, а «colorscale» определяет цвета.

Почему мы заботимся?

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

Точечная диаграмма

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

Функция px.scatter используется для создания точечной диаграммы, где «x» и «y» определяют переменные, которые позиционируют точки на осях x и y, «opacity» управляет прозрачностью маркеров, а «trendline» указывает, что линия следует нарисовать наилучшее соответствие (здесь используется обычная регрессия методом наименьших квадратов).

Почему мы заботимся?

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

Коробка Сюжет

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

В этой части скрипта функция px.box используется для создания блочной диаграммы, где «x» указывает категориальную переменную, которая определяет положение блоков на оси x, а «y» указывает числовую переменную, которая определяет значения, для которых прямоугольники нарисованы по оси Y.

Почему мы заботимся?

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

В итоге…

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

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

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

Удачной визуализации!

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

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

Дополнительные материалы на PlainEnglish.io.

Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .