Original size 1140x1600

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

PROTECT STATUS: not protected
4

Описание

Для анализа я использовала данные о рейтингах фильмов, проставленных пользователями сайта 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
Анализ данных о рейтингах фильмов
4