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 является мультиязычным стриминг-сервисом, однако графики демонстрируют нам превосходство англоязычного контента над другими языками.

We use cookies to improve the operation of the website and to enhance its usability. More detailed information on the use of cookies can be fo...
Show more