Описание
Для анализа я использовала данные о рейтингах фильмов, проставленных пользователями сайта MovieLens в конце 1990-х – начале 2000-х исследовательской группой GroupLens Research.
Данные распределены по трем таблицам: рейтинги фильмов, метаданные о фильмах (жанр и год выхода) и демографические данные о пользователях (возраст, почтовый индекс, пол и род занятий).
Данные о возрасте и роде занятий кодируются целыми числами, а расшифровка приведена в прилагаемом к набору данных файлу README.
Типы диаграмм:
- столбчатая диаграмма
- круговая диаграмма
Этапы работы
- Поиск данных для исследования
- Загрузка данных в программу
- Обработка данных и визуализация

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

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

Строка кода считывает данные из файла с разделителями "::" с именем "ratings.dat" с помощью функции pd.read_table() из библиотеки Pandas.
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.
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. Эта таблица предоставляет полное представление о пользователях, их оценках фильмов и самих фильмах.
df['Genre'] = df['Genre'].apply(lambda x: x.split('|')): эта строка кода применяет функцию split() к каждому элементу в столбце Genre в таблице df. Функция split() разбивает строку по символу "|" и возвращает список подстрок. Таким образом, эта строка кода преобразует каждый элемент столбца Genre из строки в список строк, разделенных "|".
df = df.explode('Genre'): эта строка кода использует функцию explode() для преобразования столбца Genre в несколько строк. Функция explode() берет список значений в столбце и создает новую строку для каждого значения в списке. В этом случае каждый элемент в столбце Genre (который теперь является списком) становится отдельной строкой в таблице df. В результате таблица df теперь будет иметь несколько строк, где каждая строка представляет собой отдельный жанр, который ранее был разделен символом "|".
Обработка данных и визуализация
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".
genre_ratings = df.groupby('Genre')['Rating'].mean().sort_values(): эта строка кода группирует строки в таблице df по столбцу Genre, вычисляет среднее значение столбца Rating для каждой группы и сортирует результаты в порядке убывания. Результатом является серия Pandas, в которой индексами являются жанры, а значениями - средние оценки фильмов для каждого жанра.
genre_ratings.plot(kind='bar', title='Средние рейтинги по жанрам', color='#FEE9BE'): эта строка кода создает диаграмму столбцов, где по оси x отложены жанры фильмов, а по оси y - средние оценки фильмов для каждого жанра. Столбцы окрашены в цвет "#FEE9BE".
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.
gender_ratings = df.groupby('Gender')['Rating'].mean(): Группирует строки в наборе данных df по столбцу "Gender" и вычисляет среднее значение столбца "Rating" для каждой группы. Результат сохраняется в gender_ratings.
gender_ratings.plot(kind='bar', title='Средние рейтинги для мужчин и женщин', color='#FEE9BE'): Создает столбчатую диаграмму с использованием данных gender_ratings, задает заголовок диаграммы и цвет столбцов.




