Original size 736x981

Анализ пользователей Netflix с помощью датасета

PROTECT STATUS: not protected

Среди всех баз данных на сайте kaggle [1], именно база данных с пользователями Netflix показалась мне самой интересной, благодаря своей разнообразию. Мне было занимательно проанализировать потраченное количество времени на просмотр того или иного жанра фильма, типы подписок, а также любимые жанры в зависимости от страны проживания пользователя.

big
Original size 657x357

При выборе стилистики проекта, меня вдохновила официальная заставка Netflix, строгость и лаконичность я старалась отобразить во всех последующих диаграммах.

big
Original size 771x213

Обработка данных

В начале я импортировала необходимые для дальнейшей работы библиотеки: numpy, pandas и matplotlib.pyplot. После этого считала файл с выбранным датасетом.

Для круговой диаграммы я решила подготовить данные о любимых жанрах населения и составить топ-5 самых фаворитных категорий. Для обозначения средней частоты просмотра того или иного жанра я использовала переменную genre_age.

import numpy as np import pandas as pd import matplotlib.pyplot as plt

df = pd.read_csv ('netflix_users.csv') genre_age = df.groupby ('Favorite_Genre')['Age'].mean ()

В точечной диаграмме я захотела показать соотношение страны и затраченного времени на просмотр фильмов.

average_watch_time = df.groupby ('Country')['Watch_Time_Hours'].mean ().reset_index ()

Для столбчатой диаграммы я посчитала соотношение жанра и затраченного времени на фильм, при условии, что на определенный тип жанра потрачено >800 часов. В переменной amount я отделила только те строки, в которых часовая затратность была больше 800, и в переменной subtypes посчитала, сколько таких строк в каждом виде.

amount=df[df['Watch_Time_Hours']>800] subtypes=amount.groupby ('Favorite_Genre').size ()

В линейной диаграмме я использовала данные о соотношении возраста и затраченного времени на просмотр фильмом, в зависимость о любимом фильме. В 'difference' я высчитываю соотношение. Далее в переменной average я вычисляю средние соотношения для каждого вида.

df['difference']=df['Age'] /df['Watch_Time_Hours'] average=df.groupby ('Favorite_Genre')['difference'].mean ()

Визуализация данных

Круговая диаграмма: любимые жанры фильмов населения

Original size 655x501

import numpy as np import pandas as pd import matplotlib.pyplot as plt

df = pd.read_csv ('netflix_users.csv') genre_age = df.groupby ('Favorite_Genre')['Age'].mean ()

with plt.style.context ('dark_background'): colors = ['#5e080d', '#170404', '#e44557', '#343434', '#300404'] plt.rcParams['font.family'] = 'Arial'

plt.figure (figsize=(40, 6), facecolor='black') patches, texts, autotexts = plt.pie ( genre_age, labels=genre_age.index, autopct='%1.1f%%', startangle=140, textprops={'fontsize': 15}, colors=colors )

for autotext in autotexts: autotext.set_color ('white')

plt.title ('Топ любимых жанров среди населения', fontsize=20, fontweight='semibold')

plt.show ()

Точечная диаграмма: соотношение страны и затраченного время на просмотр фильма

Original size 1183x583

import pandas as pd import matplotlib.pyplot as plt

df = pd.read_csv ('netflix_users.csv')

average_watch_time = df.groupby ('Country')['Watch_Time_Hours'].mean ().reset_index ()

with plt.style.context ('dark_background'): plt.figure (figsize=(12, 6))

plt.scatter (average_watch_time[«Country»], average_watch_time[«Watch_Time_Hours»], alpha=0.7, color="red»)

plt.xlabel («Страна») plt.ylabel («Среднее время просмотра (Часы)») plt.title («Среднее время просмотра по странам»)

plt.xticks (rotation=45, ha="right»)

plt.grid (True, linestyle='--', alpha=0.5)

plt.tight_layout () plt.show ()

Столбчатая диаграмма: соотношение жанра и потраченного время на просмотр

Original size 1236x600

amount=df[df['Watch_Time_Hours']>800] subtypes=amount.groupby ('Favorite_Genre').size ()

plt.rcParams['font.family']='Arial'

with plt.style.context ('dark_background'): plt.figure (figsize=(15,6)) subtypes.plot (kind='bar', color='#e44557')

 plt.xlabel ('Жанр фильма')
 plt.ylabel ('Количество потраченного времени на просмотр')
 plt.title ('Соотношение жанра и затраченного времени на фильм')
 plt.xticks (rotation=45, ha='right')
 plt.grid (axis='y', linestyle='--', alpha=0.7)

plt.show ()

Линейная диаграмма: соотношение возраста к потраченному времени на просмотр фильмов в зависимости от жанра

Original size 1223x599

df['difference']=df['Age'] /df['Watch_Time_Hours'] average=df.groupby ('Favorite_Genre')['difference'].mean ()

plt.rcParams['font.family']='Arial'

with plt.style.context ('dark_background'): plt.figure (figsize=(15,6)) plt.plot (average.index, average.values, marker='o', linestyle='-', color='#e44557', linewidth=2, markersize=6) plt.xlabel ('Жанр') plt.ylabel ('Среднее значение соотношения') plt.title ('Соотношение возраста и затраченного времени на просмотр по жанру') plt.xticks (rotation=45, ha='right')

plt.show ()

Список источников

Блокнот и датасет https://disk.yandex.ru/d/3S81GrzhOMSbcQ

Анализ пользователей Netflix с помощью датасета
We use cookies to improve the operation of the HSE website and to enhance its usability. More detailed information on the use of cookies can be fou...
Show more