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

pandas调用plot绘图报TypeError: no numeric data to plot如何解决

错误触发原因
  • 核心问题是传入绘图的Percent列为字符串类型,而非数值类型:从数据集预览可见,Percent列的所有值都携带%后缀,pandas读取时会将其识别为object(字符串)类型,绘图逻辑无法从字符串列中提取到可用于计算条形长度的数值,因此抛出TypeError: no numeric data to plot错误。
  • 原有代码的x、y参数映射逻辑本身符合水平条形图需求:x对应横轴(条形长度的数值维度),y对应纵轴(州名的分类维度),不存在参数传反的问题。
修复方案
  1. 先对Percent列做类型转换,去除百分号后转为浮点型数值,参考代码:
# 去除百分号并转为浮点型
df_prevalence['Percent'] = df_prevalence['Percent'].str.replace('%', '').astype(float)

如果列中存在缺失值、异常非数值内容,可以先执行df_prevalence = df_prevalence.dropna(subset=['Percent'])清理无效行,避免类型转换报错。

  1. 直接运行原有绘图代码即可正常生成图表。如果需要让横轴显示为百分比格式(和原数据的百分号表述一致),可以补充轴格式配置,完整示例代码如下:
import matplotlib.pyplot as plt
from matplotlib.ticker import PercentFormatter

# 绘图
ax = df_prevalence.plot(
    kind='barh', 
    x='Percent', 
    y='State', 
    figsize=(15, 12), 
    color='r', 
    title= 'Adults with Serious Thoughts of Suicide in the Unites States by State, 2020'
)
# 配置x轴为百分比显示,保留1位小数
ax.xaxis.set_major_formatter(PercentFormatter(decimals=1))
# 自动调整布局避免标签被截断
plt.tight_layout()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:48:11