如何计算每年平均IMDB电影评分?(已完成低样本年份过滤)
计算每年平均IMDB评分并用于绘图的解决方案
没问题,我来帮你搞定这个平均评分计算的事儿!结合你已经完成的电影数量过滤操作,这里有两种简洁的方法可以实现需求:
方法一:一步式分组过滤+均值计算
这种方法不需要依赖你之前生成的years2,直接通过groupby的filter方法完成筛选和均值计算,代码更简洁:
# 按年份分组,过滤掉电影数量<10的年份,再计算每年的平均imdb_score yearly_avg_score = df.groupby('title_year').filter(lambda x: len(x) >= 10) \ .groupby('title_year')['imdb_score'].mean()
方法二:基于你已有的years2结果计算
如果你想复用之前得到的符合条件的年份列表,可以这样做:
# 提取符合条件的年份(years2的索引就是筛选后的年份) valid_years = years2.index # 筛选原数据中属于有效年份的记录,再分组计算平均评分 yearly_avg_score = df[df['title_year'].isin(valid_years)] \ .groupby('title_year')['imdb_score'].mean()
验证结果
你可以打印yearly_avg_score查看结果,格式会是类似这样的Series:
title_year 1964.0 7.23 1968.0 7.15 1969.0 7.02 ... 2016.0 6.38 Name: imdb_score, dtype: float64
用于绘图的示例
拿到平均评分后,用Matplotlib或者Seaborn都能轻松绘图,比如画一个折线图展示评分随年份的变化:
import matplotlib.pyplot as plt # 排序年份(让图表更直观) yearly_avg_score_sorted = yearly_avg_score.sort_index() # 绘制折线图 plt.figure(figsize=(12,6)) yearly_avg_score_sorted.plot(kind='line', marker='o', color='darkblue') plt.title('Average IMDB Score by Year (≥10 Movies per Year)') plt.xlabel('Year') plt.ylabel('Average IMDB Score') plt.grid(True, alpha=0.3) plt.show()
如果想画柱状图,只需要把kind='line'改成kind='bar'就可以啦!
内容的提问来源于stack exchange,提问作者Carlo Silanu




