
Введение
В данном исследовании представлен анализ данных стриминг-платформы с использованием Python и библиотеки Pandas. Для работы был выбран открытый датасет с платформы Kaggle, содержащий информацию о профилях с наибольшим количеством фолловеров, просмотров, времени стриминга и т.д
Данные представлены в табличном формате CSV, что делает их удобными для программной обработки и анализа.
Почему данные представляют интерес?
В настоящее время компьютерные и мобильные игры бесспорно являются одним из самых популярных тем для обсуждения среди молодежи.
Twitch — это платформа для прямых трансляций, которая пользуется массовостью среди любителей как мобильных, так и компьютерных игр. Ежедневно сервис посещают более миллиона человек, чтобы пообщаться.
Типаж представленных графиков
Столбчатая диаграмма — для сравнения каналов по времени просмотра.
Диаграмма размаха — прирост подписчиков по маркировке Mature
Диаграмма рассеивания — отношение между количеством экранного времени и времени просмотра.
Подготовка данных
Анализ данных начинается с загрузки необходимых данных для первичного знакомства с их структурой. На данном этапе используется библиотека Pandas, предназначенная для анализа табличных данных.
Для визуализации данных используется библиотека Matplotlib, позволяющая гибко настраивать внешний вид графиков.
Для стилизации графиков и работы с пользователями шрифтами используется модуль plt.rcParams в Matplotlib.
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams.update
Параметры для визуализации графиков
THEME = { «figure.facecolor»: «#f3f0ff», «axes.facecolor»: «#f3f0ff», «axes.edgecolor»: «#2a2a2a», «axes.labelcolor»: «#2a2a2a», «text.color»: «#2a2a2a», «xtick.color»: «#2a2a2a», «ytick.color»: «#2a2a2a», «grid.color»: «#b9b9c9», «grid.linestyle»: «--», «grid.linewidth»: 0.7, «axes.grid»: True, «axes.titleweight»: «bold», «font.size»: 11, } plt.rcParams.update (THEME)
def add_caption (ax, text): ax.text (0, -0.18, text, transform=ax.transAxes, fontsize=9, va="top», ha="left», color=»#444444»)
Топ-10 Twitch-каналов по времени просмотра
Наглядное представление лидеров Twitch по времени просмотра зрителей, позволяющее быстро сравнить популярность каналов.
Перевод времени просмотра из минут в часы.
Выбор топ-10 каналов по суммарному времени просмотра.
Сортировка в порядке убывания времени просмотра.
top10 = df.sort_values («watch_time_hours», ascending=False).head (10)
fig, ax = plt.subplots (figsize=(10, 6)) ax.barh (top10[«channel»][: -1], (top10[«watch_time_hours»]/1e6)[: -1]) ax.set_title («Топ‑10 Twitch‑каналов по времени просмотра») ax.set_xlabel («Watch time, млн часов») ax.set_ylabel (»») add_caption (ax, «Watch time (Minutes) переведён в часы; barh удобен для длинных названий.») fig.tight_layout () plt.show ()
Отношение экранного времени и времени просмотра
Исследование зависимости между объёмом экранного времени (Stream time) и времени просмотра (Watch time). Доказана вполне ожидаемая закономерность — чем больше ты стримишь, тем больше тебя смотрят.
s = df.dropna (subset=[«stream_time_hours», «watch_time_hours»]).copy () corr = s[«stream_time_hours»].corr (s[«watch_time_hours»])
leaders = s.sort_values («watch_time_hours», ascending=False).head (6)
fig, ax = plt.subplots (figsize=(10, 6)) ax.scatter (s[«stream_time_hours»], s[«watch_time_hours»], alpha=0.45) ax.set_xscale («log») ax.set_yscale («log») ax.set_title («Связь: сколько стримили ↔️ сколько смотрели (лог‑шкалы)») ax.set_xlabel («Stream time, часы (лог)») ax.set_ylabel («Watch time, часы (лог)») for _, r in leaders.iterrows (): ax.annotate (str (r[«channel»]), (r[«stream_time_hours»], r[«watch_time_hours»]), xytext=(5, 5), textcoords="offset points», fontsize=9) add_caption (ax, f"Корреляция Пирсона = {corr:.3f}. Лог‑шкалы нужны из‑за сильной асимметрии метрик.») fig.tight_layout () plt.show ()
Прирост подписчиков по маркировке Mature
Сравнение того, как маркировка контента «Mature» влияет на прирост подписчиков. Можно оценить различия в медиане, разбросе данных и симметрии распределения.
tmp = df.dropna (subset=[«followers_gained», «mature»]).copy ()
g_not = tmp.loc[tmp[«mature»] == False, «followers_gained»].values g_yes = tmp.loc[tmp[«mature»] == True, «followers_gained»].values
fig, ax = plt.subplots (figsize=(8.5, 6)) ax.boxplot ([g_not, g_yes], labels=[«Not mature», «Mature»], showfliers=False) ax.set_title («Прирост подписчиков по маркировке Mature») ax.set_ylabel («Followers gained») add_caption (ax, «Boxplot показывает медиану и IQR по группам; выбросы скрыты для читабельности.») fig.tight_layout () plt.show ()
Языки стримов среди топ-каналов
Наглядно продемонстрировано языковое распределение среди самых популярных Twitch-каналов: какой язык доминирует, какие языки менее представлены.
lang_counts = df[«language»].fillna («Unknown»).value_counts ().head (12)
fig, ax = plt.subplots (figsize=(10, 6)) ax.bar (lang_counts.index, lang_counts.values) ax.set_title («Языки стримов среди топ‑каналов (Top‑12)») ax.set_ylabel («Количество каналов») ax.set_xlabel («Язык») ax.tick_params (axis="x», rotation=35) add_caption (ax, «Метод: частотный анализ value_counts.») fig.tight_layout () plt.show ()
Выводы
В результате анализа были выявлены ключевые особенности стриминг-платформы Twitch.
Благодаря модуляции градации каналов мы можем понять, что наиболее популярным контентом на сервисе являются как компьютерные игры, так и разговорный контент.
Увеличение времени стрима не всегда приводит к пропорциональному росту просмотров. Эффективность контента важнее количества часов в эфире.
Маркировка Mature не является препятствием для роста. Каналы с контентом для взрослых могут иметь сопоставимый или даже больший прирост подписчиков, чем семейные каналы.
Twitch является мультиязычным стриминг-сервисом, однако графики демонстрируют нам превосходство англоязычного контента над другими языками.