Всем привет! Я провел исследовательский анализ данных и визуализацию для набора данных YouTube Trending Videos в США, используя Python.

Коды будут выше соответствующих описаний для всех моих шагов. Посмотрим, что я нашел!

from google.colab import files
uploaded = files.upload()
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plot
df = pd.read_csv(‘US_youtube_trending_data.csv’)
df.head(3)
df.tail(3)
df.shape

Я начал с загрузки набора данных и импорта библиотек. Набор данных доступен на Kaggle. Затем был создан фрейм данных. Вы можете увидеть первые 3 строки на рисунке 1. Набор данных состоит из 14798 строк и 16 столбцов. Другими словами, в наборе данных 16 функций.

from datetime import datetime
df[‘trending_date’] = pd.to_datetime(df[‘trending_date’], format=”%Y-%m-%dT%H:%M”)
df[‘publishedAt’] = pd.to_datetime(df[‘publishedAt’], format=”%Y-%m-%dT%H:%M”)
df.head(3)

Как показано на рисунке 1, столбцы с датой публикации и датой тенденции имеют неправильный формат. Чтобы избежать этой сложности, используются приведенные выше коды. Теперь фрейм данных выглядит, как на рисунке 2. Дата тенденции набора данных включает данные с 12 августа 2020 года по 24 октября 2020 года, а дата публикации началась 11 августа 2020 года и закончилась 19 октября 2020 года.

df.nunique()

Как я уже упоминал ранее, есть 16 функций. Цифры не могли показать все особенности. Приведенный выше код показал нам функции и количество уникальных переменных. Результат показан на рисунке 3.

trends = df.drop([‘video_id’, ‘categoryId’, ‘comments_disabled’, ‘ratings_disabled’], axis=1)
correlation = trends.corr()
fig = plot.figure(figsize=(10, 8))
sns.heatmap(correlation, xticklabels = correlation.columns, yticklabels = correlation.columns, annot = True, cmap=’RdPu’, annot_kws={‘weight’:’bold’})
plot.title('Heat Map')

Давайте посмотрим на корреляцию. Чтобы найти приемлемые результаты, я удалил несколько столбцов с категорией, в которых указаны идентификатор видео, идентификатор категории, отключенные комментарии и рейтинги. Таким образом, мы можем увидеть корреляцию количества просмотров, лайков, антипатий и количества комментариев с помощью тепловой карты. Мы видим, что с коэффициентом 0,92 наибольшая корреляция наблюдается между количеством просмотров и лайками на рисунке 4.

colors = ["#CD4FDE"]
sns.set_palette(sns.color_palette(colors))
sns.lmplot(x = ‘likes’, y = ‘view_count’, data = trends)
plot.title(‘View Count vs. Likes’)

Линейность между количеством просмотров и лайками более четко видна на рисунке 5.

sns.set(rc={‘figure.figsize’:(12,10)})
ax= sns.lineplot(x=’trending_date’, y=’view_count’, data=df, ci=False, color=’#CE4DBD’)
plot.title(‘View Count vs. Trending Date’)

Давайте посмотрим на взаимосвязь между количеством просмотров и датой тренда. Для этого используется линейный график. Количество просмотров после 15 августа действительно велико по сравнению со всеми датами с тенденциями в тренде. А наименьшее количество просмотров наблюдается после 15 сентября.

sns.set(rc={‘figure.figsize’:(8,5)})
ax= sns.lineplot(x=’publishedAt’, y=’likes’, data=df, ci=False, color=’#CE4DBD’)
plot.title(‘Likes vs. Published Date’)

Аналогичный линейный сюжет был создан для лайков и опубликованных дат. Итак, после 15 августа лайков стало больше. Результат показан на рисунке 7.

sns.set(rc={'figure.figsize':(8,10)})
top10channel = df.groupby(["channelTitle"]).size().sort_values(ascending = False).head(10)
sns.barplot(top10channel.values, top10channel.index.values, palette = "rocket")
plot.title("Top 10 Trending Youtube Channels")

Затем каналы отсортированы по частоте. Вы можете увидеть 10 самых популярных каналов на Рисунке 8. Самый популярный канал - это NBA.

sns.set(rc={'figure.figsize':(8,12)})
by_channel = df.groupby("title").size().reset_index(name="view_count") \.sort_values("view_count", ascending=False).head(20)
ax =sns.barplot(x="view_count", y="title", data=by_channel,palette=sns.cubehelix_palette(n_colors=22, reverse=True))
plot.title('Most Viewed Videos')
plot.xlabel("View")
plot.ylabel("Video Title")

Самые просматриваемые видео показаны на Рисунке 9. Сначала были сгруппированы названия видео. Затем он отсортирован по количеству просмотров. Итак, Justin Bieber - Holy ft. Chance The Rapper - это самое просматриваемое видео в наборе данных.

df.loc[df['categoryId'] ==1, 'category'] = 'Film & Animation'
df.loc[df['categoryId'] ==2, 'category'] = 'Autos & Vehicles'
df.loc[df['categoryId'] ==10, 'category'] = 'Music'
df.loc[df['categoryId'] ==15, 'category'] = 'Pets & Animals'
df.loc[df['categoryId'] ==17, 'category'] = 'Sports'
df.loc[df['categoryId'] ==19, 'category'] = 'Travel & Events'
df.loc[df['categoryId'] ==20, 'category'] = 'Gaming'
df.loc[df['categoryId'] ==22, 'category'] = 'People & Blogs'
df.loc[df['categoryId'] ==23, 'category'] = 'Comedy'
df.loc[df['categoryId'] ==24, 'category'] = 'Entertainment'
df.loc[df['categoryId'] ==25, 'category'] = 'News & Politics'
df.loc[df['categoryId'] ==26, 'category'] = 'Howto & Style'
df.loc[df['categoryId'] ==27, 'category'] = 'Education'
df.loc[df['categoryId'] ==28, 'category'] = 'Science & Technology'
df.loc[df['categoryId'] ==29, 'category'] = 'Nonprofits & Activism'
df.head(5)

Как известно, набор данных не имеет названия категории. У него есть только идентификаторы категорий. По этой причине был добавлен столбец категории. В столбце категории отображаются названия категорий. Я принял этот веб-сайт как ссылку при сопоставлении идентификатора категории и имени категории. Таким образом можно создавать графики в соответствии с названием категории. Вы можете увидеть столбец категории на рисунке 10.

sns.set(rc={'figure.figsize':(10,10)})
ax= sns.barplot(x='likes', y='category', data=df, ci=False, palette='magma')
plot.title('Likes vs. Category')
plot.xlabel("Likes")
plot.ylabel("Category")

Посмотрим, у какой категории больше всего лайков. Категория «Музыка» имеет больше всего лайков, а «Новости и политика» - меньше всего лайков, как показано на Рисунке 11.

sns.set(rc={‘figure.figsize’:(10,15)})
ax= sns.barplot(x=’view_count’, y=’category’, data=df, ci=False, palette=’rocket’ , hue=’ratings_disabled’)

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

sns.set(rc={‘figure.figsize’:(5,5)})
sns.barplot(x=’comments_disabled’, y=’view_count’, data=df, palette=’magma’, ci= False)
plot.title(‘View Count vs. Comments Disabled’)

На рисунке 13 показана взаимосвязь между количеством просмотров и отключенными комментариями. Как видно, видео с отключенными комментариями получили больше просмотров.

sns.set(rc={‘figure.figsize’:(10,6)})
df.likes.plot(kind=’line’,color=’#93089A’, label = ‘Likes’, linestyle = ‘ --‘)
df.dislikes.plot(color=’black’, label = ‘Dislikes’)
plot.title(‘Likes vs. Dislikes’)
plot.xlabel(‘Number of videos’)
plot.ylabel(‘Likes and Dislikes’)

Сравним лайки и антипатии по количеству видео. Фиолетовая линия показывает лайки, а черная - антипатии. Сюжет показывает, что популярные видео получили больше лайков, чем антипатий.

sns.set(rc={‘figure.figsize’:(20,8)})
sns_ax = sns.boxplot(x=’category’,y=’comment_count’,data=df)
category_boxplot = sns_ax.set_xticklabels(labels, rotation=90)
category_boxplot = sns_ax.set(yscale=”log”)
plot.title(‘Boxplot : Category vs. Comment’)
plot.ylabel(‘comments’)

Ящичковая диаграмма помогает сравнить соответствующие медианы каждой ящичной диаграммы. Кроме того, создание коробчатой ​​диаграммы - самый простой способ выявить выбросы. На рисунке 15 категории сравнивались согласно комментариям. Как видите, наибольшее количество комментариев находится в категории «Игры». Наименьшее среднее количество комментариев у категории «Путешествия и события». Музыка получила больше всего выбросов.