绘制Top15最高电影预算图表的代码问题咨询
解决方法与代码调整
问题拆解
- FutureWarning 根源:当Series使用整数类型索引时,
series[:N]这种切片方式在未来版本会从位置索引改为标签索引,必须用iloc[:N]明确指定按位置取数才能保留原有行为。 - 原代码潜在问题:单独对
budget列排序后再关联原数据集的标题,逻辑绕弯且易出错;另外你需要的是Top15,原代码取的是Top10,需调整切片长度。
优化后完整代码
import pandas as pd import matplotlib.pyplot as plt # 按预算降序排序整个数据集,取前15条记录 top15_movies = dp.sort_values(by='budget', ascending=False).iloc[:15] # 提取电影名称和对应预算 x = top15_movies['original_title'].tolist() y = top15_movies['budget'].tolist() # 绘制柱状图(示例) plt.figure(figsize=(12, 6)) plt.bar(x, y, color='#1f77b4') plt.title('Top15 最高预算电影') plt.xlabel('电影名称') plt.ylabel('预算金额') plt.xticks(rotation=45, ha='right') # 旋转标签避免重叠 plt.tight_layout() # 自动适配布局 plt.show()
核心调整点
- 整体排序替代单列排序:直接对整个
dp数据集按budget降序排序,确保电影名称与预算严格对应,避免索引匹配出错。 - 用iloc消除警告:
iloc[:15]明确按位置取前15条数据,完全符合你需要的“取TopN”逻辑,同时解决FutureWarning。 - 简化数据转换:用
tolist()直接将Series转为列表,比list(map(str, ...))更简洁(若电影名称已是字符串类型,无需额外转str)。 - 完善绘图逻辑:添加了基础的柱状图绘制代码,包含布局优化(旋转标签、自动适配),直接生成可用的图表。
内容的提问来源于stack exchange,提问作者Phillip Chinedu
相关产品推荐
相关产品推荐

