Исходный размер 1140x1600

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

PROTECT STATUS: not protected

Введение

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

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

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

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

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

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

Исходный размер 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 млн $. Зрители предпочитают зрелищное кино (боевики, фантастику). Этим жанрам можно давать большие бюджеты, так как они окупятся.
Исходный размер 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()

  • Большинство точек выше красной линии, что говорит о прибыльности фильмов
  • Чем больше бюджет, тем выше сборы, но есть исключения
  • Некоторые дорогие фильмы провалились.
Исходный размер 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% больше, чем стоит. Киноиндустрия процветает.
Исходный размер 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 гг.
Проект создан 14.01.2026