
Описание
В выбранном мной для анализа датасете представлен рейтинг самых популярных ютуберов по всему миру за 2023 год. В связи с замедлением платформы в стране, а также растущей популярности блогерства, я решила проанализировать, насколько еще эффективно использовать YouTube как рекламный инструмент при ведении блогов. В датасете собрана информация о категории канала, количестве видео, подписчиков, просмотров, заработках за все время, а также детализацией за месяц.
Для визуализации был выбран цвет YouTube Red и дополняющие его цвета, а также шрифт Roboto, используемый в брендинге.
Круговые диаграммы


Код для первой круговой диаграммы:
category_counts = Counter (df['category'].values)
top_n = 5 most_common = category_counts.most_common (top_n) labels, sizes = zip (*most_common)
plt.figure (figsize=(16, 10))
ax = plt.pie (sizes, colors=colors[2:], labels=labels, autopct='%.0f%%', textprops={"fontsize»: 25, «fontproperties»: font}, wedgeprops={'edgecolor': 'black', 'linewidth': 1})
legend = plt.legend (labels, title="Тематика канала», prop=font, bbox_to_anchor=(1, 0.5), loc="center left», fontsize=10)
plt.title («Распределение тематик каналов», fontdict={"fontsize»: 25, «fontproperties»: font}, pad=10)
plt.gca ().set_frame_on (False)
plt.tight_layout () plt.show ()
Код сначала подсчитывает количество элементов в каждой категории из столбца «category» датасета, используя счетчик Counter. Затем выбирает пять самых популярных категорий и разделяет их на подписи и размеры. Создается фигура нужного размера, после чего строится круговая диаграмма, где сектора соответствуют выбранным категориям, окрашены в определенные цвета, подписаны и отображают процентное соотношение. Далее добавляется легенда с названиями категорий, которая располагается справа от диаграммы. Устанавливается заголовок графика с заданным шрифтом и размером, а также отключается рамка вокруг графика. В конце применяется автоматическая подгонка элементов на рисунке, выводится график.
Код для второй круговой диаграммы:
top100 = df.sort_values (by='subscribers', ascending=False).head (100)
plt.figure (figsize=(16, 10))
country_counts = Counter (top100['Country'])
#ax = sns.barplot (data=top10, y='Youtuber', x='video views', color=colors[1]) top_n = 5 most_common = country_counts.most_common (top_n) labels, sizes = zip (*most_common)
plt.figure (figsize=(16, 10))
ax = plt.pie (sizes, colors=colors[1:-2][: -1], labels=labels, autopct='%.0f%%', textprops={"fontsize»: 25, «fontproperties»: font}, wedgeprops={'edgecolor': 'black', 'linewidth': 1})
legend = plt.legend (labels, title="Страна», prop=font, bbox_to_anchor=(1, 0.5), loc="center left», fontsize=10)
plt.title («Страны с каналами с наибольшим количеством подписчиков», fontdict={"fontsize»: 25, «fontproperties»: font}, pad=10)
plt.gca ().set_frame_on (False)
plt.tight_layout () plt.show ();
Код сначала сортирует датасет по количеству подписчиков в порядке убывания и выбирает топ-100 каналов. Затем подсчитывает, сколько каналов из этих 100 принадлежит каждой стране с помощью счетчика-Counter. Из этого подсчёта выбираются 5 стран с наибольшим количеством каналов. Далее создаётся фигура большого размера, потом строится круговая диаграмма, где каждый сектор отображает долю каналов из одной из пяти самых популярных стран. Цвета секторов выбираются из заранее заданного списка-палитры. На диаграмме отображаются подписи с названиями стран и процентами. Добавляется легенда с заголовком «Страна», расположенная справа от диаграммы. Для заголовка графика задаем наш шрифт и размер. Рамка вокруг отключена. В конце применяется автоматическая подгонка элементов, и диаграмма выводится на экран.
Выводы:
Неудивительно, что больше всего каналов связанных с развлекательным контентом, а также музыкальных каналов, т. к. мы музыкальные клипы и подборки всегда пользуются большим спросом. Далее по популярности идут блоги и каналы про компьютерные игры.
Первое место, ожидаемо, занимает T-Series — музыкальный канал из Индии. Большая часть стран из топ 10 — США. В топе также есть каналы из России. Канал Music без страны и категории, т. к. это канал-категория самого видео хостинга.
Линейные диаграммы
Код для первой диаграммы:
top10 = df.sort_values (by='video views', ascending=False).head (10)
plt.figure (figsize=(16, 10)) ax = sns.barplot (data=top10, y='Youtuber', x='video views', color=colors[1])
plt.title ('Топ-10 самых просматриваемых каналов', fontdict={"fontsize»: 25, «fontproperties»: font}, pad=10) plt.xlabel ('Количество просмотров (в сотнях миллиардов)', fontsize=16, fontproperties=font) plt.ylabel ('Название канала', fontsize=16, fontproperties=font)
ax.spines['top'].set_visible (False) ax.spines['right'].set_visible (False) ax.spines['bottom'].set_visible (False) ax.spines['left'].set_visible (False)
ax.set_frame_on (False)
for i, (value, label, l_cat) in enumerate (zip (top10['video views'], top10['Country'], top10[«category»])): ax.text (value + 50000, i, " " + label + " / " + l_cat, va='center', fontproperties=font, fontsize=12, color=colors[0])
plt.xticks (fontproperties=font) plt.yticks (fontproperties=font) plt.tight_layout () plt.show ()
Код сортирует датасет по количеству просмотров видео в порядке убывания и выбирает топ-10 самых просматриваемых каналов. Затем создаётся большая фигура, и с помощью функции sns.barplot строится горизонтальная столбчатая диаграмма, где по оси Y расположены названия каналов, а по оси X — количество просмотров. Цвет столбцов задаётся из списка нашей палитры. Заголовок графика и подписи осей задаем нашим шрифтом Roboto. Рамки вокруг графика убираем. После этого для каждого столбца добавляется текстовая подпись справа от столбца, которая содержит страну и категорию канала. Настраиваются шрифты для меток по осям, применяется автоматическая подгонка элементов графика.
Код для второй диаграммы:
top10 = df.sort_values (by='subscribers', ascending=False).head (10)
plt.figure (figsize=(16, 10)) ax = sns.barplot (data=top10, y='Youtuber', x='subscribers', color=colors[1])
plt.title ('Топ-10 самых популярных каналов', fontdict={"fontsize»: 25, «fontproperties»: font}, pad=10) plt.xlabel ('Количество подписчиков (в сотнях миллионов)', fontsize=16, fontproperties=font) plt.ylabel ('Название канала', fontsize=16, fontproperties=font)
ax.spines['top'].set_visible (False) ax.spines['right'].set_visible (False) ax.spines['bottom'].set_visible (False) ax.spines['left'].set_visible (False)
ax.set_frame_on (False)
for i, (value, label, l_cat) in enumerate (zip (top10['subscribers'], top10['Country'], top10[«category»])): ax.text (value + 50000, i, " " + label + " / " + l_cat, va='center', fontproperties=font, fontsize=12, color=colors[0])
plt.xticks (fontproperties=font) plt.yticks (fontproperties=font) plt.tight_layout () plt.show ()
В коде сортируется датасет по количеству подписчиков в порядке убывания и выбирается топ-10 самых популярных каналов. Затем создаётся большая фигура, и с помощью функции sns.barplot строится горизонтальная столбчатая диаграмма, где по оси Y расположены названия каналов, а по оси X — количество подписчиков. Цвет как обычно берем из нашего списка. Подписи оформляются нашим шрифтом, рамки отключаются, подгоняется текст и отображается график.
Выводы:
По популярности каналов первое место, ожидаемо, занимает T-Series — музыкальный канал из Индии. Большая часть стран из топ 10 — США. В топе также есть каналы из России. Канал Music без страны и категории, т. к. это канал-категория самого видео хостинга.
По просматриваемости топ по прежнему занимает T-series. Можно заметить, что довольно много каналов из Индии.
Гистограммы
Код для гистограммы:
plt.figure (figsize=(16, 10)) ax = sns.scatterplot (data=df, y='highest_monthly_earnings', x='video_views_for_the_last_30_days', color=colors[1])
plt.title ('Зависимость максимального ежемесячного заработка с канала от количество просмотров за последний месяц', fontdict={"fontsize»: 25, «fontproperties»: font}, pad=10) plt.xlabel ('Количество просмотров за месяц (в сотнях миллиардов)', fontsize=16, fontproperties=font) plt.ylabel ('Максимальный доход в месяц (в десятках миллионов)', fontsize=16, fontproperties=font)
ax.spines['top'].set_visible (False) ax.spines['right'].set_visible (False) ax.spines['bottom'].set_visible (False) ax.spines['left'].set_visible (False)
ax.set_frame_on (False)
plt.xticks (fontproperties=font) plt.yticks (fontproperties=font) plt.tight_layout () plt.show ()
Этот код строит диаграмму рассеяния (scatter plot), показывающую зависимость максимального ежемесячного заработка канала от количества просмотров за последние 30 дней. Сначала создаётся фигура большого размера, затем с помощью функции sns.scatterplot из библиотеки Seaborn строится график, где по оси X откладывается количество просмотров за месяц, а по оси Y — максимальный доход за месяц. Точки на графике окрашены в цвет из списка-палитры colors. Заголовок и подписи оформляем нашим шрифтом и задаем кегель.
Код для гистограммы:
plt.figure (figsize=(16, 10)) ax = sns.scatterplot (data=df, y='video views', x='subscribers', color=colors[1])
plt.title ('Зависимость количества просмотров от количества подписчиков', fontdict={"fontsize»: 25, «fontproperties»: font}, pad=10) plt.xlabel ('Количество подписчиков', fontsize=16, fontproperties=font) plt.ylabel ('Количество просмотров', fontsize=16, fontproperties=font)
ax.spines['top'].set_visible (False) ax.spines['right'].set_visible (False) ax.spines['bottom'].set_visible (False) ax.spines['left'].set_visible (False)
ax.set_frame_on (False)
plt.xticks (fontproperties=font) plt.yticks (fontproperties=font) plt.tight_layout () plt.show ()
График строется аналогично предыдущему, заменяем колонки, которые берем для анализа, выбираем цвета из палитры, задаем шрифт и кегель и отключаем рамки. Выводим график на экран.
Код для гистограммы:
plt.figure (figsize=(10, 8)) ax = sns.displot (df, x="subscribers», color=colors[1], kde=True)
plt.title ('Распределение количества подписчиков', fontdict={"fontsize»: 15, «fontproperties»: font}, pad=10) plt.xlabel ('Количество подписчиков', fontsize=10, fontproperties=font, labelpad=20) plt.ylabel ('Количество', fontsize=10, fontproperties=font, labelpad=20)
plt.xticks (fontproperties=font) plt.yticks (fontproperties=font) plt.tight_layout () plt.show ();
Создаётся график распределения данных — с помощью функции sns.displot из библиотеки Seaborn строится гистограмма по столбцу «subscribers» из датасета. Гистограмма показывает, как часто встречаются разные значения количества подписчиков. Накладывается сглаженная кривая плотности (KDE) — поверх гистограммы рисуется плавная линия, которая приближённо показывает распределение данных, делая его более наглядным. Аналогично другим, выбирается цвет из палитры colors, добавляются подписи и подгоняются. График выводится.
Выводы:
очевидно, что у каналов, у которых очень много подписчиков — много просмотров.
Видно, что зависимость максимального заработка за месяц от просмотров линейна, но есть выбросы. Действительно, чем больше людей смотрят видео, тем больше они потребляют рекламу, тем больше YouTube платит денег авторам.
Заключение
В процессе анализа были построены 7 графиков четырех видов. Несмотря на снижение скорости, русские каналы так же попадают в топ и приносят прибыль (Like Nastya). Вероятно, меньшее число просмотров в России обусловлено меньшим населением (чем, например, в Индии) и языковым барьером.
Обложка
Обложка сгенерирована нейронкой chat qwen по промту:
«логотип ютуба, а вокруг кадры из разных видео оттуда»
Блокнот