Original size 736x981

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

PROTECT STATUS: not protected
3

Среди всех баз данных на сайте 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 с помощью датасета
3
We use cookies to improve the operation of the website and to enhance its usability. More detailed information on the use of cookies can be fo...
Show more