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




