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

pandas绘制DataFrame条形图报错no numeric data to plot

报错原因

pandas的DataFrame.plot()方法中,针对条形图(含垂直条形bar、水平条形barh)的参数映射逻辑和画布坐标轴方向无关,规则固定:

  • x参数接收分类维度列,用于区分不同的条形,支持字符串、分类、时间等非数值类型
  • y参数接收数值度量列,用于计算条形的长度/高度,必须为可识别的数值类型
    原代码错误将数值列Percent传给x参数,将字符串类型的分类列State传给y参数,pandas从y指定的列中提取不到有效绘图数值,因此抛出TypeError: no numeric data to plot报错。
修复方法

核心修改是调换plot()方法中x和y的传参,将分类列传给x、数值列传给y即可,水平方向的条形展示由kind='barh'参数自动控制,无需手动匹配画布坐标轴。修正后的可运行代码如下:

import pandas as pd
import matplotlib.pyplot as plt

# 构造测试数据集
df_prevalence = pd.DataFrame({'Percent': [3.41, 3.49, 3.68, 3.72, 3.87],
                              'State': ['New Jersey', 'Florida', 'New York',
                                        'Texas', 'Illinois ']})

# 绘制水平条形图
df_prevalence.plot(
    kind='barh',
    x='State',
    y='Percent',
    figsize=(15, 12),
    color='r',
    title='Adults with Serious Thoughts of Suicide in the Unites States by State, 2020'
)
plt.xlabel('Prevalence (%)')
plt.ylabel('State')
plt.show()

补充排查点:如果调换参数后仍出现同类报错,说明Percent列可能被识别为字符串类型(常见于原始数据带多余符号、空格的场景),可在绘图前执行以下代码强制转换列类型:

df_prevalence['Percent'] = pd.to_numeric(df_prevalence['Percent'], errors='coerce')

内容的提问来源于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 11:45:25