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()
输出结果:
day_movie.head()
输出结果:
Step 2.2 2024年电影票房数据的多维度分析
day_movie_2024 = day_movie[(day_movie['日期'] >= '2024-06-01') & (day_movie['日期'] <= '2024-08-31')]
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
输出结果:
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
输出结果:
从上面的折线图中,我们可以看到从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()
输出结果:
data_cny = movie_box[(movie_box['日期'] >= '2024-06-01') & (movie_box['日期'] <= '2024-08-31')]
data_cny.head()
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)
输出结果:
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
输出结果:
Step 3.4 票房和人次的前几名电影
top_movies_audience_count = data_cny.groupby('电影名称')['当前人次(万)'].sum().sort_values(ascending=False).head(5)
top_movies_audience_count
输出结果: