使用AI辅助完成春节档《哪吒2》票房占比分析与可视化教程

项目概述

我们将完成以下步骤:

  1. 数据收集与准备
  2. 数据清洗与处理
  3. 数据分析
  4. 数据可视化(饼状图)
  5. 结果解读

步骤1:数据收集与准备

向AI助手提问:

"请帮我生成一个Python代码,模拟2024年春节档几部主要电影的票房数据,包括《哪吒2》、《热辣滚烫》、《飞驰人生2》、《第二十条》和《熊出没》的票房数据"

AI助手返回代码:

import pandas as pd

import numpy as np

 

# 设置随机种子保证可复现

np.random.seed(42)

 

# 模拟春节档电影数据

movies = ['哪吒2', '热辣滚烫', '飞驰人生2', '第二十条', '熊出没', '其他电影']

# 生成随机票房数据(单位:亿元)

box_office = np.random.randint(10, 40, size=len(movies)) * 0.5 + 15

box_office[-1] = np.random.randint(5, 15) # 其他电影票房较低

 

# 创建DataFrame

df_box_office = pd.DataFrame({

    '电影名称': movies,

    '票房(亿元)': box_office

})

 

# 计算总票房

total_box_office = df_box_office['票房(亿元)'].sum()

df_box_office['票房占比'] = df_box_office['票房(亿元)'] / total_box_office * 100

 

print(df_box_office)

步骤2:数据清洗与处理

虽然我们的数据是模拟生成的,但在真实项目中,数据清洗是重要步骤。我们可以询问AI如何进行基本的数据清洗。

向AI助手提问:

"如何检查并处理电影票房数据中的缺失值和异常值?"

AI助手返回代码:

# 检查缺失值

print("缺失值检查:")

print(df_box_office.isnull().sum())

 

# 检查异常值(假设票房超过40亿或低于1亿为异常)

print("\n异常值检查:")

abnormal = df_box_office[(df_box_office['票房(亿元)'] > 40) | (df_box_office['票房(亿元)'] < 1)]

print(abnormal)

 

# 处理异常值(这里只是示例,实际处理方式取决于业务需求)

if not abnormal.empty:

    # 可以用中位数替换异常值

    median_value = df_box_office['票房(亿元)'].median()

    df_box_office.loc[abnormal.index, '票房(亿元)'] = median_value

    # 重新计算占比

    total_box_office = df_box_office['票房(亿元)'].sum()

    df_box_office['票房占比'] = df_box_office['票房(亿元)'] / total_box_office * 100

步骤3:数据分析

现在我们来分析《哪吒2》的票房占比情况。

向AI助手提问:

"如何从电影票房数据中提取《哪吒2》的票房占比,并与其他电影进行比较?"

AI助手返回代码:

# 提取哪吒2的数据

nezha_data = df_box_office[df_box_office['电影名称'] == '哪吒2']

nezha_percentage = nezha_data['票房占比'].values[0]

 

# 其他电影总占比

other_percentage = 100 - nezha_percentage

 

print(f"《哪吒2》票房占比: {nezha_percentage:.2f}%")

print(f"其他电影总占比: {other_percentage:.2f}%")

 

# 计算排名

df_sorted = df_box_office.sort_values('票房(亿元)', ascending=False)

rank = df_sorted[df_sorted['电影名称'] == '哪吒2'].index[0] + 1

print(f"《哪吒2》票房排名: 第{rank}名")

步骤4:数据可视化

现在我们来创建饼状图展示《哪吒2》的票房占比。

向AI助手提问:

"请帮我用matplotlib创建一个美观的饼状图,展示《哪吒2》在春节档电影中的票房占比,要求有适当的标签、百分比和标题"

AI助手返回代码:

import matplotlib.pyplot as plt

 

# 设置中文字体

plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签

plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号

 

# 准备数据

labels = ['哪吒2', '其他电影']

sizes = [nezha_percentage, other_percentage]

colors = ['#ff9999', '#66b3ff']

explode = (0.1, 0) # 突出显示哪吒2

 

# 创建饼图

plt.figure(figsize=(8, 6))

plt.pie(sizes, explode=explode, labels=labels, colors=colors,

        autopct='%1.1f%%', shadow=True, startangle=140)

plt.title('2024春节档《哪吒2》票房占比分析', fontsize=15, pad=20)

 

# 添加图例

plt.legend(labels, loc="best")

 

# 显示图形

plt.tight_

layout()

plt.show()

步骤5:高级可视化

如果我们想要更详细地展示所有电影的票房占比,可以创建一个完整的饼图。

向AI助手提问:

"如何创建一个展示春节档所有电影票房占比的饼状图,要求按照票房从高到低排序,并添加适当的样式?"

AI助手返回代码:

# 按票房排序

df_sorted = df_box_office.sort_values('票房(亿元)', ascending=False)

 

# 准备数据

labels = df_sorted['电影名称']

sizes = df_sorted['票房占比']

colors = plt.cm.tab20.colors[:len(labels)] # 使用tab20色系

 

# 创建饼图

plt.figure(figsize=(10, 8))

wedges, texts, autotexts = plt.pie(sizes, labels=labels, colors=colors,

                                   autopct='%1.1f%%', startangle=140,

                                   pctdistance=0.85, shadow=True)

 

# 设置文本样式

plt.setp(autotexts, size=10, weight="bold")

plt.setp(texts, size=10)

 

# 添加中心圆

centre_circle = plt.Circle((0,0), 0.70, fc='white')

fig = plt.gcf()

fig.gca().add_artist(centre_circle)

 

# 添加标题

plt.title('2024春节档电影票房占比分析', fontsize=16, pad=20)

 

# 显示图形

plt.tight_layout()

plt.show()

步骤6:结果解读与报告

最后,我们可以让AI帮助我们解读结果并生成简单的报告。

向AI助手提问:

"根据上面的票房数据分析结果,请帮我写一段简短的报告,解读《哪吒2》在春节档的表现。

AI助手返回文本:

根据票房数据分析,2024年春节档期间,《哪吒2》表现优异,票房占比达到XX.X%(具体数值取决于模拟数据),在春节档电影中排名第X。这一成绩表明:

作为国产动画电影的续作,《哪吒2》成功延续了前作的热度,获得了观众的广泛认可;

与其他类型电影相比,动画电影在春节档依然有稳定的受众群体;

《哪吒2》的票房占比显著高于春节档平均水平,显示出其强大的市场号召力。

建议后续可以进一步分析观众画像和口碑评价,以了解其成功因素并为未来动画电影的制作提供参考。

完整代码示例

以下是整合后的完整代码示例:

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

 

# 1. 数据准备

np.random.seed(42)

movies = ['哪吒2', '热辣滚烫', '飞驰人生2', '第二十条', '熊出没', '其他电影']

box_office = np.random.randint(10, 40, size=len(movies)) * 0.5 + 15

box_office[-1] = np.random.randint(5, 15)

 

df_box_office = pd.DataFrame({

    '电影名称': movies,

    '票房(亿元)': box_office

})

 

# 2. 数据处理

total_box_office = df_box_office['票房(亿元)'].sum()

df_box_office['票房占比'] = df_box_office['票房(亿元)'] / total_box_office * 100

 

# 3. 数据分析

nezha_data = df_box_office[df_box_office['电影名称'] == '哪吒2']

nezha_percentage = nezha_data['票房占比'].values[0]

other_percentage = 100 - nezha_percentage

 

# 4. 数据可视化 - 哪吒2占比图

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.rcParams['axes.unicode_minus'] = False

 

plt.figure(figsize=(10, 5))

plt.subplot(1, 2, 1)

labels = ['哪吒2', '其他电影']

sizes = [nezha_percentage, other_percentage]

colors = ['#ff9999', '#66b3ff']

explode = (0.1, 0)

plt.pie(sizes, explode=explode, labels=labels, colors=colors,

        autopct='%1.1f%%', shadow=True, startangle=140)

plt.title('《哪吒2》票房占比')

 

# 5. 所有电影占比图

plt.subplot(1, 2, 2)

df_sorted = df_box_office.sort_values('票房(亿元)', ascending=False)

labels = df_sorted['电影名称']

sizes = df_sorted['票房占比']

colors = plt.cm.tab20.colors[:len(labels)]

wedges, texts, autotexts = plt.pie(sizes, labels=labels, colors=colors,

                                   autopct='%1.1f%%', startangle=140,

                                   pctdistance=0.85, shadow=True)

plt.setp(autotexts, size=8, weight="bold")

plt.setp(texts, size=8)

plt.title('春节档电影票房占比')

 

plt.tight_layout()

plt.show()

 

# 6. 输出分析结果

print("\n分析结果:")

print(f"《哪吒2》票房: {nezha_data['票房(亿元)'].values[0]:.2f}亿元")

print(f"《哪吒2》票房占比: {nezha_percentage:.2f}%")

df_sorted['排名'] = range(1, len(df_sorted)+1)

print("\n春节档电影票房排名:")

print(df_sorted[['排名', '电影名称', '票房(亿元)', '票房占比']].reset_index(drop=True))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值