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

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

Эта строка кода считывает данные из файла с разделителями «:» с именем «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, задает заголовок диаграммы и цвет столбцов.
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, задает заголовок диаграммы и цвет столбцов.