Тепловая карта 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 .