Original size 1140x1600

Анализ данных о рейтингах фильмов

PROTECT STATUS: not protected

Описание

Для анализа я использовала данные о рейтингах фильмов, проставленных пользователями сайта MovieLens в конце 1990-х — начале 2000-х исследовательской группой GroupLens Research.

Данные распределены по трем таблицам: рейтинги фильмов, метаданные о фильмах (жанр и год выхода) и демографические данные о пользователях (возраст, почтовый индекс, пол и род занятий).

Данные о возрасте и роде занятий кодируются целыми числами, а расшифровка приведена в прилагаемом к набору данных файлу README.

Типы диаграмм: - столбчатая диаграмма - круговая диаграмма

Этапы работы

1. Поиск данных для исследования 2. Загрузка данных в программу 3. Обработка данных и визуализация

big
Original size 2990x779

Загрузка данных

big
Original size 2326x360

Эта строка кода считывает данные из файла с разделителями «:» с именем «movies.dat» с помощью функции pd.read_table () из библиотеки Pandas.

big
Original size 2326x360

Строка кода считывает данные из файла с разделителями «:» с именем «ratings.dat» с помощью функции pd.read_table () из библиотеки Pandas.

Original size 2326x360

pd.read_table ('users.dat', sep=': ', engine='python', names=['User ID', 'Gender', 'Age', 'Occupation', 'Zip-code']): эта строка кода считывает данные из файла с разделителями «:» с именем «users.dat» с помощью функции pd.read_table () из библиотеки Pandas.

- sep=': ': указывает, что в качестве разделителя столбцов в файле используется «:».  — names: указывает имена столбцов результирующей таблицы Pandas.

Original size 2326x360

pd.merge (df_users, df_ratings): эта строка кода объединяет таблицы df_users и df_ratings по столбцу User ID, используя функцию pd.merge () из библиотеки Pandas. Результатом этого объединения будет таблица, содержащая столбцы из обеих исходных таблиц, а также новый столбец User ID, который является общим ключом между двумя таблицами.

df = pd.merge (df_movies, buf): эта строка кода объединяет таблицу df_movies с таблицей buf (которая является результатом предыдущего слияния) по столбцу Film ID, снова используя функцию pd.merge (). Результатом этого объединения будет таблица, содержащая столбцы из всех трех исходных таблиц, а также новый столбец Film ID, который является общим ключом между всеми тремя таблицами.

df: эта переменная хранит результирующую таблицу Pandas, которая содержит столбцы из всех трех исходных таблиц: df_users, df_ratings и df_movies. Эта таблица предоставляет полное представление о пользователях, их оценках фильмов и самих фильмах.

Original size 2326x360

df['Genre'] = df['Genre'].apply (lambda x: x.split ('|')): эта строка кода применяет функцию split () к каждому элементу в столбце Genre в таблице df. Функция split () разбивает строку по символу «|» и возвращает список подстрок. Таким образом, эта строка кода преобразует каждый элемент столбца Genre из строки в список строк, разделенных «|».

df = df.explode ('Genre'): эта строка кода использует функцию explode () для преобразования столбца Genre в несколько строк. Функция explode () берет список значений в столбце и создает новую строку для каждого значения в списке. В этом случае каждый элемент в столбце Genre (который теперь является списком) становится отдельной строкой в таблице df. В результате таблица df теперь будет иметь несколько строк, где каждая строка представляет собой отдельный жанр, который ранее был разделен символом «|».

Original size 2990x779

Обработка данных и визуализация

Original size 1035x616
Original size 2326x1203

fig, ax = plt.subplots (): эта строка кода создает новую фигуру и оси для построения графика. fig.set_size_inches (12, 6): строка кода устанавливает размер фигуры в дюймах.

plt.bar (list (map (str, group_agg['Genre'].index.values)), data, color='#FEE9BE'): эта строка кода создает диаграмму столбцов, где по оси x отложены жанры фильмов (преобразованные в строки), а по оси y — количество фильмов в каждом жанре. Столбцы окрашены в цвет «#FEE9BE».

Original size 1005x633
Original size 2326x1203

genre_ratings = df.groupby ('Genre')['Rating'].mean ().sort_values (): эта строка кода группирует строки в таблице df по столбцу Genre, вычисляет среднее значение столбца Rating для каждой группы и сортирует результаты в порядке убывания. Результатом является серия Pandas, в которой индексами являются жанры, а значениями — средние оценки фильмов для каждого жанра.

genre_ratings.plot (kind='bar', title='Средние рейтинги по жанрам', color='#FEE9BE'): эта строка кода создает диаграмму столбцов, где по оси x отложены жанры фильмов, а по оси y — средние оценки фильмов для каждого жанра. Столбцы окрашены в цвет «#FEE9BE».

Original size 2326x1203

age_distribution = df['Age'].value_counts (): эта строка кода подсчитывает количество вхождений каждого уникального значения в столбце Age таблицы df и сохраняет результат в серии Pandas age_distribution.

age_distribution = df.groupby (['Age'], observed=False).agg ({'Age': 'count'}): эта строка кода группирует строки в таблице df по столбцу Age и вычисляет количество строк в каждой группе. Результатом является новая серия Pandas age_distribution, в которой индексами являются возрастные группы, а значениями — количество пользователей в каждой возрастной группе.

plt.pie (age_distribution['Age'].values, labels=list (map (str, g['Age'].index.values)), colors=colors, wedgeprops={'linewidth': 3.0, 'edgecolor': '#EDEBDF'}, autopct='%1.1f%%', textprops={'family': 'serif'}): эта строка кода создает круговую диаграмму, где секторы представляют возрастные группы, а их размеры пропорциональны количеству пользователей в каждой возрастной группе. Диаграмма окрашена в цвета, указанные в списке colors, и имеет белые края толщиной 3,0. На каждом секторе отображается процент пользователей в соответствующей возрастной группе с точностью до одного десятичного знака, используя шрифт serif.

Original size 2326x1203

gender_ratings = df.groupby ('Gender')['Rating'].mean (): Группирует строки в наборе данных df по столбцу «Gender» и вычисляет среднее значение столбца «Rating» для каждой группы. Результат сохраняется в gender_ratings.

gender_ratings.plot (kind='bar', title='Средние рейтинги для мужчин и женщин', color='#FEE9BE'): Создает столбчатую диаграмму с использованием данных gender_ratings, задает заголовок диаграммы и цвет столбцов.

Original size 2326x1203

top_movies = df['Film name'].value_counts ().head (10): Считает количество вхождений каждого уникального значения в столбце «Film name» в наборе данных df и сохраняет топ-10 самых популярных фильмов в top_movies.

top_movies.plot (kind='barh', title='Топ-10 самых популярных фильмов', color='#FEE9BE'): Создает горизонтальную столбчатую диаграмму с использованием данных top_movies, задает заголовок диаграммы и цвет столбцов.

Original size 2326x383
Анализ данных о рейтингах фильмов
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