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 оценок

We use cookies to improve the operation of the website and to enhance its usability. More detailed information on the use of cookies can be fo...
Show more