You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用for循环汇总DataFrame年度total_gross并绘制折线图

解决方案

方法一:用for循环实现批量计算

你可以先提取数据集中所有唯一的年份,然后遍历这些年份调用你的year_gross函数,把结果存到列表里,最后用汇总后的数据绘图:

import matplotlib.pyplot as plt

# 获取所有唯一的年份并排序,避免图表年份乱序
unique_years = sorted(df['year'].unique())

# 初始化两个列表存储年份和对应的总票房
x_years = []
y_total_gross = []

# 遍历每个年份计算总票房
for year in unique_years:
    x_years.append(year)
    y_total_gross.append(year_gross(year))

# 绘制折线图
plt.plot(x_years, y_total_gross)
plt.xlabel('年份')
plt.ylabel('年度总票房')
plt.title('年度总票房趋势')
plt.show()

这样处理后,每个年份只会有一个总票房数据点,不会再出现之前的垂直折线问题。

方法二:用Pandas内置groupby更高效

其实完全不用自己写循环或单独函数,Pandas的groupby方法可以一键完成按年份汇总的操作,代码更简洁且效率更高(大数据集下优势明显):

import matplotlib.pyplot as plt

# 按年份分组,汇总total_gross的总和,同时按年份排序
yearly_gross = df.groupby('year')['total_gross'].sum().sort_index()

# 直接绘图,groupby后的结果自带索引(年份)和对应的值(总票房)
yearly_gross.plot(kind='line', xlabel='年份', ylabel='年度总票房', title='年度总票房趋势')
plt.show()

这个方法无需手动处理循环,Pandas会自动完成所有分组汇总工作,可读性和运行效率都更优。

内容的提问来源于stack exchange,提问作者DarrynJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 05:22:23