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

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

Обработка данных
В начале я импортировала необходимые для дальнейшей работы библиотеки: 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 ()
Визуализация данных
Круговая диаграмма: любимые жанры фильмов населения
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 ()
Точечная диаграмма: соотношение страны и затраченного время на просмотр фильма
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 ()
Столбчатая диаграмма: соотношение жанра и потраченного время на просмотр
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 ()
Линейная диаграмма: соотношение возраста к потраченному времени на просмотр фильмов в зависимости от жанра
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://www.kaggle.com/datasets/smayanj/netflix-users-database?resource=download (дата обращения 20.03.2025)
Блокнот и датасет https://disk.yandex.ru/d/3S81GrzhOMSbcQ