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

Pandas绘制的柱状图为空且缺失X/Y轴标签,求解决方法

柱状图为空+轴标签缺失问题修复方案

问题根源分析

  1. CSV数据格式问题:你的new_data.csv中,部分soda列值末尾带空格(比如Coca-Cola ),且number列部分值前有空格,导致pandas读取时可能将number识别为字符串类型,无法正常绘图。
  2. 绘图逻辑错误:原代码没有将soda列指定为x轴类别,pandas默认用行索引作为x轴,导致柱状图无有效数据显示;同时重复设置标题,可能导致标签覆盖。
  3. 错误修改导致AttributeError:你尝试的ax='soda'是错误用法,ax参数需要传入matplotlib的轴对象,而非列名,因此触发属性错误。

修复后的完整代码

import pandas as pd
import matplotlib.pyplot as plt

# 读取并清洗数据:skipinitialspace忽略逗号后的空格,确保number列为数值型
dr = pd.read_csv(r"new_data.csv", skipinitialspace=True, dtype={"number": int})

# 清洗soda列的首尾空格
dr['soda'] = dr['soda'].str.strip()

# 创建绘图轴对象,将soda设为索引作为x轴
fig, axis = plt.subplots()
dr.set_index('soda')['number'].plot(kind='bar', ax=axis, title='Favorite sodas of the USA')

# 设置轴标签
axis.set_xlabel("Soda", fontsize=12)
axis.set_ylabel("Number of Votes", fontsize=12)

plt.tight_layout()  # 自动调整布局,避免标签被截断
plt.show()

关键修复点说明

  • 数据清洗:用skipinitialspace=True读取CSV时自动忽略逗号后的空格,配合dtype强制number为整数;用str.strip()清除soda列值的首尾空格,避免类别重复。
  • 绘图逻辑修正:通过set_index('soda')将饮料名称设为x轴类别,确保柱状图正确映射数据;手动创建轴对象axis,统一管理绘图元素。
  • 布局优化:添加plt.tight_layout()防止轴标签被截断,提升图表可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 02:13:12