Original size 1200x1600

Анализ стриминг-платформы Twitch

PROTECT STATUS: not protected

Введение

В данном исследовании представлен анализ данных стриминг-платформы с использованием 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 ()

Original size 1280x768

Отношение экранного времени и времени просмотра

Исследование зависимости между объёмом экранного времени (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 ()

Original size 1280x768

Прирост подписчиков по маркировке 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 ()

Original size 1280x903

Языки стримов среди топ-каналов

Наглядно продемонстрировано языковое распределение среди самых популярных 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 ()

Original size 987x584

Выводы

В результате анализа были выявлены ключевые особенности стриминг-платформы Twitch.

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

Увеличение времени стрима не всегда приводит к пропорциональному росту просмотров. Эффективность контента важнее количества часов в эфире.

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

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