Python新手求助:统计EV数据集品牌销量并绘制柱状图失败
问题:EV汽车品牌销量统计与柱状图绘制无结果解决方法
我是Python新手,已经读取EV汽车CSV数据集,完成了创建DataFrame、排序、去重、清理空值等基础操作。现在需要统计数据集中“Make”列各品牌的销量(数据集约10.5万行,包含10个品牌),并绘制柱状图对比各品牌销量。
当前使用以下代码没有得到预期结果:
import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns plt.style.use('seaborn')
brand_sales = EVs_by_Population.groupby('Make') brand_sales.plot(kind='bar') plt.show()
附上数据集及数据类型截图:
问题原因
你当前的groupby('Make')仅完成了分组操作,没有对销量进行统计计算,直接调用plot无法生成有效的对比柱状图。
解决步骤
统计各品牌销量
先对分组后的数据集进行计数(若以行数代表销量)或求和(若有单独销量列):- 按行数统计销量:
# 统计每个品牌的记录数(即销量),并重置索引为常规DataFrame brand_sales = EVs_by_Population.groupby('Make').size().reset_index(name='Sales') - 若有单独销量列(如
Sales列),则求和:brand_sales = EVs_by_Population.groupby('Make')['Sales'].sum().reset_index()
- 按行数统计销量:
绘制柱状图
基于统计后的结果绘制柱状图,以下两种方式任选:- 使用pandas自带绘图:
brand_sales.plot(x='Make', y='Sales', kind='bar', figsize=(10,6)) plt.title('各EV品牌销量对比') plt.xlabel('品牌') plt.ylabel('销量') plt.xticks(rotation=45) # 旋转x轴标签避免重叠 plt.show() - 使用seaborn绘制(样式更美观):
plt.figure(figsize=(10,6)) sns.barplot(data=brand_sales, x='Make', y='Sales') plt.title('各EV品牌销量对比') plt.xlabel('品牌') plt.ylabel('销量') plt.xticks(rotation=45) plt.show()
- 使用pandas自带绘图:
额外检查点
- 确认
EVs_by_Population数据集中确实存在Make列,且列名无拼写错误(Python对大小写敏感)。 - 再次检查清理空值后的数据集,确保
Make列无缺失值。
内容的提问来源于stack exchange,提问作者dcgray
相关产品推荐
相关产品推荐

