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

如何用Python的matplotlib.pyplot基于SAKILA库SQL查询结果生成柱状图?

解决Matplotlib绘制电影分级柱状图的问题

问题分析

你的代码无法运行主要有两个核心问题:

  • plt.bar() 函数需要两个必填参数:X轴数据和Y轴数据,你只传入了Y轴数据,参数不完整
  • DataFrame列名不匹配:SQL查询结果中数量列的名称是COUNT(film_id),但你代码里用了number_of_films,会触发列不存在的报错

解决方案

步骤1:优化SQL查询(推荐)

给统计结果列起一个清晰的别名,方便后续代码调用:

SELECT rating, COUNT(film_id) AS number_of_films
FROM film
GROUP BY rating;

步骤2:编写正确的Matplotlib代码

传入完整的X轴(电影分级)和Y轴(影片数量)数据,同时添加必要的图表元素提升可读性:

import matplotlib.pyplot as plt

# 假设df是从SQL查询结果加载得到的DataFrame
plt.bar(df['rating'], df['number_of_films'])

# 添加图表标签与标题
plt.xlabel('电影分级')
plt.ylabel('影片数量')
plt.title('各电影分级的影片数量统计')

plt.show()

兼容原SQL查询的写法

如果不想修改SQL,可以直接使用原列名调用:

import matplotlib.pyplot as plt

plt.bar(df['rating'], df['COUNT(film_id)'])

plt.xlabel('电影分级')
plt.ylabel('影片数量')
plt.title('各电影分级的影片数量统计')

plt.show()

排查小技巧

运行代码前可以先执行print(df.head()),确认DataFrame的列名和数据是否正确加载,避免因数据导入问题导致的隐藏错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:10:35