Original size 1140x1600

Визуализация данных по датасету о фильмах

PROTECT STATUS: not protected
The project is taking part in the competition

Введение

big
Original size 1920x1142

Для анализа я выбрал датасет о фильмах c kaggle.com, содержащий следующие признаки:

name, rating, genre, year, released, score, votes, director, writer, star, country, budget, gross, company, runtime

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

Меня интересовали данные о фильмах, потому что:

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

- Какие графики были построены и почему? Для визуализации данных я выбрал 4 разных типа графиков:

Гистограмма (Histogram) Показывает распределение оценок фильмов (score). Позволяет увидеть, какие оценки наиболее часты и есть ли смещение в сторону высоких/низких оценок.

Столбчатая диаграмма (Bar chart) Отображает количество фильмов по жанрам (genre). Легко сравнивать популярность разных жанров и видеть лидеров по количеству фильмов.

Точечная диаграмма (Scatter plot) Сравнивает бюджет и кассовые сборы (budget vs gross). Позволяет визуально оценить зависимость между инвестициями в фильм и его успехом в прокате.

Горизонтальная столбчатая диаграмма (Horizontal bar chart) Топ-10 режиссёров по средней оценке фильмов. Выявляет самых успешных режиссёров по мнению зрителей.

Используемые инструменты

В работе использовались инструменты анализа данных на Python:

• Pandas — загрузка, обработка и агрегирование данных, • Matplotlib — базовая визуализация, • Seaborn — статистические графики и стилизация, • Google Colab — среда выполнения и демонстрации проекта.

Формат работы — Jupyter Notebook.

Original size 1152x648

Этапы работы с данными

Выбор и загрузка датасета Выбран открытый датасет о фильмах с платформы Kaggle. Данные загружены в формате CSV и импортированы в рабочую среду с помощью библиотеки Pandas.

Первичный анализ структуры данных Проведена проверка количества наблюдений, типов данных и структуры столбцов (info ()), а также получены базовые описательные статистики (describe ()).

Анализ пропущенных значений Выявлены пропуски в столбцах budget, gross, score, votes и ряде категориальных признаков. На данном этапе данные не очищались агрессивно, так как целью было исследование распределений и взаимосвязей, а не построение предсказательной модели.

Формирование гипотез для визуализации Сформулированы ключевые вопросы: как распределяются пользовательские оценки фильмов; какие жанры представлены чаще всего; существует ли визуальная зависимость между бюджетом и кассовыми сборами;

Построение визуализаций Для каждого вопроса был выбран подходящий тип графика (гистограмма, столбчатая диаграмма, scatter plot, горизонтальный bar chart), позволяющий наглядно сравнивать значения и выявлять закономерности.

Интерпретация результатов Полученные графики использовались для выявления общих тенденций: концентрации оценок, доминирующих жанров, разброса сборов относительно бюджета и различий между режиссёрами по средней оценке.

1. Импорт библиотек и данных

Original size 1847x567

import pandas as pd import matplotlib.pyplot as plt import seaborn as sns

sns.set (style="whitegrid») plt.rcParams['figure.figsize'] = (12,6)

Загрузка датасета

df = pd.read_csv («movies.csv») df.head ()

2. Первичный анализ

df.info () df.describe () df.isnull ().sum ()

RangeIndex: 7668 entries, 0 to 7667 Data columns (total 15 columns):

Column Non-Null Count Dtype


0 name 7668 non-null object 1 rating 7591 non-null object 2 genre 7668 non-null object 3 year 7668 non-null int64 4 released 7666 non-null object 5 score 7665 non-null float64 6 votes 7665 non-null float64 7 director 7668 non-null object 8 writer 7665 non-null object 9 star 7667 non-null object 10 country 7665 non-null object 11 budget 5497 non-null float64 12 gross 7479 non-null float64 13 company 7651 non-null object 14 runtime 7664 non-null float64 dtypes: float64(5), int64(1), object (9) memory usage: 898.7+ KB name 0 rating 77 genre 0 year 0 released 2 score 3 votes 3 director 0 writer 3 star 1 country 3 budget 2171 gross 189 company 17 runtime 4 dtype: int64

3. Визуализации

График 1 — Распределение оценок (score)

sns.histplot (df['score'], bins=20, kde=True, color='salmon') plt.title («Распределение оценок фильмов») plt.xlabel («Оценка») plt.ylabel («Количество фильмов») plt.show ()

Original size 1017x550

График 2 — Количество фильмов по жанрам

df['genre'].value_counts ().plot (kind='bar', color='skyblue') plt.title («Количество фильмов по жанрам») plt.xlabel («Жанр») plt.ylabel («Количество») plt.xticks (rotation=45) plt.show ()

Original size 1017x595

График 3 — Зависимость бюджета от кассовых сборов

sns.scatterplot (data=df, x='budget', y='gross', hue='genre', alpha=0.7) plt.title («Бюджет vs. Кассовые сборы») plt.xlabel («Бюджет (USD)») plt.ylabel («Сборы (USD)») plt.show ()

Original size 1005x550

График 4 — Топ-10 режиссёров по средней оценке фильмов

top_directors = df.groupby ('director')['score'].mean ().sort_values (ascending=False).head (10) top_directors.plot (kind='barh', color='mediumseagreen') plt.title («Топ-10 режиссёров по средней оценке фильмов») plt.xlabel («Средняя оценка») plt.ylabel («Режиссёр») plt.show ()

Original size 1133x550

4. Статистические методы

Среднее и медиана (score, votes, budget, gross) Корреляция между budget и gross для выявления зависимости Группировка (groupby) по жанрам и режиссёрам Распределения и KDE для визуализации spread оценок