Original size 1140x1600

Программирование для креативных индустрий: киноиндустрия 2000–2020 гг.

PROTECT STATUS: not protected

Введение

В исследовании были выбраны данные о фильмах с 2000 по 2020 год из IMDB Movies Dataset на сайте Kaggle.

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

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

Визуализация данных

Подготовка данных в Google Colab

Был проведён анализ данных в Google Colab и выделены основные аспекты из таблицы на основе CSV-файла, после чего были созданы коды и построены диаграммы. В коде также описываются цвета и шрифты, использованные для графиков. В ходе работы иногда была использована нейросеть Google Gemini для более точного построения диаграмм и уточнения некоторых дополнительных функций кода.

Original size 2060x998

Средние сборы по жанрам

avg_sales = df.groupby ('Жанр')['Сборы'].mean () / 1e6

fig, ax = plt.subplots (figsize=(10, 5)) ax.bar (avg_sales.index, avg_sales.values, color=COLORS, edgecolor='white', linewidth=2)

ax.set_title ('Средние сборы по жанрам', fontsize=14, fontweight='bold', pad=15) ax.set_ylabel ('Сборы (млн $)', fontsize=12) ax.set_facecolor (BACKGROUND) ax.grid (axis='y', color=GRID_COLOR, linestyle='--', alpha=0.7)

ax.spines['top'].set_visible (False) ax.spines['right'].set_visible (False)

plt.xticks (rotation=45) plt.tight_layout () plt.show ()

— Боевики зарабатывают больше всех — в среднем 90-100 млн $ — Фантастика на втором месте — около 80-85 млн $ — Драмы и комедии в середине — 60-70 млн $ — Мультфильмы и триллеры зарабатывают меньше — 50-60 млн $. Зрители предпочитают зрелищное кино (боевики, фантастику). Этим жанрам можно давать большие бюджеты, так как они окупятся.

Original size 2068x1002

Связь бюджета и кассовых сборов

sample = df.sample (100) budget_m = sample['Бюджет'] / 1e6 sales_m = sample['Сборы'] / 1e6

fig, ax = plt.subplots (figsize=(10, 5))

scatter = ax.scatter (budget_m, sales_m, alpha=0.7, s=60, color=COLORS[2])

z = np.polyfit (budget_m, sales_m, 1) p = np.poly1d (z) ax.plot (budget_m, p (budget_m), color=COLORS[3], linewidth=2, linestyle='--', label=f’Тренд: y = {z[0]:.2f}x + {z[1]:.2f}')

ax.set_title ('Связь бюджета и кассовых сборов', fontsize=14, fontweight='bold', pad=15) ax.set_xlabel ('Бюджет (млн $)', fontsize=12) ax.set_ylabel ('Сборы (млн $)', fontsize=12) ax.set_facecolor (BACKGROUND) ax.grid (color=GRID_COLOR, linestyle='--', alpha=0.7)

ax.spines['top'].set_visible (False) ax.spines['right'].set_visible (False) ax.legend ()

plt.tight_layout () plt.show ()

— Большинство точек выше красной линии, что говорит о прибыльности фильмов — Чем больше бюджет, тем выше сборы, но есть исключения — Некоторые дорогие фильмы провалились.

Original size 2046x1002

Динамика бюджета и сборов по годам

yearly = df.groupby ('Год').agg ({ 'Бюджет': 'mean', 'Сборы': 'mean' }) / 1e6

fig, ax = plt.subplots (figsize=(10, 5))

ax.plot (yearly.index, yearly['Бюджет'], label='Средний бюджет', color=COLORS[0], linewidth=3, marker='o')

ax.plot (yearly.index, yearly['Сборы'], label='Средние сборы', color=COLORS[3], linewidth=3, marker='s')

ax.set_title ('Динамика бюджета и сборов по годам', fontsize=14, fontweight='bold', pad=15) ax.set_xlabel ('Год', fontsize=12) ax.set_ylabel ('Млн $', fontsize=12) ax.set_facecolor (BACKGROUND) ax.grid (color=GRID_COLOR, linestyle='--', alpha=0.7)

ax.spines['top'].set_visible (False) ax.spines['right'].set_visible (False) ax.legend ()

plt.tight_layout () plt.show ()

— Бюджеты и сборы растут каждый год, но сборы опережают бюджеты, кино становится прибыльнее — Самые успешные годы: 2018-2020 — В среднем фильм приносит на 80-100% больше, чем стоит. Киноиндустрия процветает.

Original size 1584x1156

Сравнение стран по ключевым показателям: сборы, бюджет, ROI

country_stats = df.groupby ('Страна').agg ({ 'Бюджет': 'mean', 'Сборы': 'mean', 'ROI': 'mean' })

normalized = country_stats.apply (lambda x: (x — x.min ()) / (x.max () — x.min ()))

categories = list (normalized.columns) N = len (categories) angles = [n / float (N) * 2 * np.pi for n in range (N)] angles += angles[: 1]

fig, ax = plt.subplots (figsize=(8, 8), subplot_kw=dict (projection='polar'))

for i, country in enumerate (normalized.index[: 4]): values = normalized.loc[country].values.tolist () values += values[: 1]

ax.plot (angles, values,
        linewidth=2,
        label=country,
        color=COLORS[i])
ax.fill (angles, values,
        alpha=0.1,
        color=COLORS[i])

ax.set_xticks (angles[: -1]) ax.set_xticklabels (categories, fontsize=11) ax.set_title ('Сравнение стран по ключевым показателям', fontsize=14, fontweight='bold', pad=20) ax.legend (loc='upper right', bbox_to_anchor=(1.3, 1))

plt.tight_layout () plt.show ()

— США: самые большие бюджеты и сборы — Корея: маленькие бюджеты, но хорошая отдача — Великобритания: средние бюджеты, стабильные результаты — Франция: маленькие бюджеты, но хорошая прибыль. У каждой страны своя стратегия.

Программирование для креативных индустрий: киноиндустрия 2000–2020 гг.
Project created at 14.01.2026
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