【Python数据分析实战】2024年暑期档电影票房数据的探索

217 阅读3分钟

Step 1. 导入模块

import numpy as np
import pandas as pd
import plotly.graph_objects as go
import plotly.express as px
from plotly.subplots import make_subplots
import re

Step 2. 每日电影票房

Step 2.1 数据概览

# 导入数据
day_movie = pd.read_excel(r'/home/mw/input/movie8154/每日票房详情_240902_1725266408.xlsx')
# 显示数据的前5行以及数据的基本信息
day_movie.info()

输出结果:

image.png

day_movie.head()

输出结果: image.png

Step 2.2 2024年电影票房数据的多维度分析

day_movie_2024 = day_movie[(day_movie['日期'] >= '2024-06-01') & (day_movie['日期'] <= '2024-08-31')]

image.png

image.png

Step 2.3 2024年电影票房冠军出现频率

day_movie_2024['MovieName'] = day_movie_2024['当日票房冠军'].apply(lambda x: x.split('¥')[0].strip() if '¥' in x else None)

top1_frequency = day_movie_2024.groupby('MovieName').size().sort_values(ascending=False).reset_index()

top1_frequency

输出结果:

image.png

image.png

Step 2.4 2014年到2024年电影票房变化

day_movie['日期'] = pd.to_datetime(day_movie['日期'])

summer_season_data = day_movie[(day_movie['日期'] >= '2014-06-01') & (day_movie['日期'] <= '2024-08-31')]

summer_season_data['年份'] = summer_season_data['日期'].dt.year
annual_box_office_sum = summer_season_data.groupby('年份')['当前票房'].sum().reset_index()

annual_box_office_sum = annual_box_office_sum.sort_values(by='年份')

annual_box_office_sum

输出结果:

image.png

image.png

从上面的折线图中,我们可以看到从2014年到2024年暑期档电影票房总和的变化趋势:

  • 从2014年到2019年,暑期档电影票房总和呈现逐年上升的趋势,其中2019年达到峰值。
  • 2020年,票房总和显著下降,这可能是由于COVID-19大流行的影响。
  • 2021年和2022年,票房开始逐渐恢复,但仍低于2019年的水平。
  • 2023年和2024年,票房再次上升,接近或超过2019年的水平。

总体来看,尽管2020年出现了显著下降,但整体趋势表明中国暑期档电影市场在过去十年中稳步增长。2023年和2024年的票房恢复表明市场正在从COVID-19大流行中恢复过来。

Step 3. 热门电影票房

Step 3.1 数据概览

# 导入数据
movie_box = pd.read_excel(r'/home/mw/input/movie8154/影片票房_240903_1725346043.xlsx')
# 显示数据的前5行以及数据的基本信息
movie_box.info()

输出结果:

image.png

data_cny = movie_box[(movie_box['日期'] >= '2024-06-01') & (movie_box['日期'] <= '2024-08-31')]

data_cny.head()

image.png

Step 3.2 总票房和场均票房

total_box_office = data_cny['当前票房(万)'].sum()
avg_box_office_per_show = data_cny['当前票房(万)'].sum() / data_cny['当前场次'].sum()

print(total_box_office)
print(avg_box_office_per_show)

输出结果:

image.png

Step 3.3 各电影的票房排名

box_office_ranking = data_cny.groupby('电影名称')['当前票房(万)'].sum().sort_values(ascending=False)

top_movies_box_office = box_office_ranking.head(5)
top_movies_box_office

输出结果:

image.png

Step 3.4 票房和人次的前几名电影

top_movies_audience_count = data_cny.groupby('电影名称')['当前人次(万)'].sum().sort_values(ascending=False).head(5)
top_movies_audience_count

输出结果:

image.png

image.png

image.png