Анализ кассовых сборов в кино on HSE Design
Original size 1140x1600

Анализ кассовых сборов в кино

PROTECT STATUS: not protected
3

Обложка создана с. помощью https://stablediffusionweb.com/ru/app/image-generator

Концепция

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

План

1. Собрать данные о фильмах, включая бюджет, жанр, актерский состав, рейтинги критиков, дату выхода и кассовые сборы. 2. Исследовать корреляции между различными факторами и кассовыми сборами. 3. Построить модель машинного обучения для прогнозирования потенциальных сборов. 4. Визуализировать тренды, например, как меняются предпочтения зрителей по жанрам со временем. 5. Проанализировать влияние сезонности на успех фильмов.

База данных

Для анализа я использовала данные источники:

Kaggle

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

Код, позволяющий на основе базы данных выявить топ-10 кассовых фильмов.

import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv ('movies_data.csv') top_10 = df.sort_values ('box_office', ascending=False).head (10) print (top_10[['title', 'box_office']]) plt.figure (figsize=(12, 6)) plt.bar (top_10['title'], top_10['box_office']) plt.xticks (rotation=45, ha='right') plt.xlabel ('Фильм') plt.ylabel ('Кассовые сборы') plt.title ('Топ-10 кассовых фильмов') plt.tight_layout () plt.show ()

Результат:

«Аватар» (2009) «Мстители: Финал» (2019) «Титаник» (1997) «Звёздные войны: Пробуждение силы» (2015) «Мстители: Война бесконечности» (2018) «Человек-паук: Нет пути домой» (2021) «Аватар: Путь воды» (2022) «Мир юрского периода» (2015) «Король Лев» (2019) «Мстители» (2012)

Код для графика

import matplotlib.pyplot as plt import numpy as np movies = [ «Аватар», «Мстители: Финал», «Титаник», «Звёздные войны: Пробуждение силы», «Мстители: Война бесконечности», «Человек-паук: Нет пути домой», «Аватар: Путь воды», «Мир юрского периода», «Король Лев», «Мстители» ] box_office = [2.85, 2.80, 2.20, 2.07, 2.05, 1.92, 1.90, 1.67, 1.66, 1.52]

plt.figure (figsize=(12, 6)) bars = plt.bar (movies, box_office)

plt.title («Топ-10 самых кассовых фильмов», fontsize=16) plt.xlabel («Фильмы», fontsize=12) plt.ylabel («Кассовые сборы (млрд $)», fontsize=12) plt.xticks (rotation=45, ha='right')

for bar in bars: height = bar.get_height () plt.text (bar.get_x () + bar.get_width ()/2., height, f'{height:.2f}', ha='center', va='bottom')

plt.tight_layout () plt.show ()

Original size 2416x1152

Код, выявляющий топ-3 самых кассовых жанров фильмов

import pandas as pd import matplotlib.pyplot as plt

df = pd.read_csv ('movies_data.csv')

genre_revenue = df.groupby ('genre')['box_office'].sum ().sort_values (ascending=False)

top_3_genres = genre_revenue.head (3)

print («Топ-3 самых кассовых жанра:») for genre, revenue in top_3_genres.items (): print (f"{genre}: ${revenue:,.2f}»)

plt.figure (figsize=(10, 6)) top_3_genres.plot (kind='bar') plt.title ('Топ-3 самых кассовых жанра') plt.xlabel ('Жанр') plt.ylabel ('Общие кассовые сборы ($)') plt.xticks (rotation=0)

for i, v in enumerate (top_3_genres): plt.text (i, v, f'${v:,.0f}', ha='center', va='bottom')

plt.tight_layout () plt.show ()

Результат:

1. Экшн/Приключения 2. Научная фантастика/Фэнтези 3. Анимация/Семейные фильмы

Код для круговой диаграмы:

Original size 2418x1442

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

Код который создает точечный график для отображения топ-5 не окупившихся фильмов

import matplotlib.pyplot as plt

movies = [«Джон Картер», «Одинокий рейнджер», «Марс атакует!», «47 ронинов», «Гудини»] budgets = [250, 225, 120, 175, 120] # в миллионах долларов revenues = [284, 260, 33, 151, 27] # в миллионах долларов

plt.figure (figsize=(12, 8)) plt.scatter (budgets, revenues, s=100, alpha=0.7)

for i, movie in enumerate (movies): plt.annotate (movie, (budgets[i], revenues[i]), xytext=(5, 5), textcoords='offset points')

max_value = max (max (budgets), max (revenues)) plt.plot ([0, max_value], [0, max_value], 'r--', label='Линия безубыточности')

plt.xlabel ('Бюджет (млн $)') plt.ylabel ('Кассовые сборы (млн $)') plt.title ('Соотношение бюджета и кассовых сборов для не окупившихся фильмов')

plt.legend ()

plt.xlim (0, max (budgets) * 1.1) plt.ylim (0, max (revenues) * 1.1)

plt.grid (True, linestyle='--', alpha=0.7)

plt.tight_layout () plt.show ()

Original size 1432x972
Анализ кассовых сборов в кино
3
We use cookies to improve the operation of the HSE website and to enhance its usability. More detailed information on the use of cookies can be fou...
Show more