使用JP_df绘制条形图时报TypeError: no numeric data to plot的原因咨询
报错成因
出现TypeError: no numeric data to plot的核心原因是pandas内置的plot绘图接口,在准备绘图数据时没有检测到合法的int/float类型的数值数据。结合你提供的表格结构,直接触发报错的原因就是JP_sales列在数据导入、生成环节被识别为了字符串(object)类型,而非可计算的数值类型。
哪怕肉眼看到单元格里是标准的数字形式销售额,只要这一列里混了首尾带空白的文本、带千分位标记的字符串、非数值的占位符(比如'-'、'N/A'),pandas就会默认把整列存为object字符串类型,绘图时自然没法把字符串当成数值来计算条形高度,最终抛出找不到可绘图数值的报错。
排查与解决步骤
- 先执行代码确认列的真实数据类型:
JP_df.dtypes,如果JP_sales对应的输出类型不是float64/int64,就可以100%确认是类型错配导致的问题 - 强制将
JP_sales列转换为合法数值类型,可直接运行以下代码:# 自动跳过无法转换的非数值内容,标记为空值 JP_df["JP_sales"] = pd.to_numeric(JP_df["JP_sales"], errors="coerce") # 删除转换失败生成的空值行,避免后续绘图出现空坐标问题 JP_df = JP_df.dropna(subset=["JP_sales"]) - 完成类型转换后,重新运行原有的绘图代码
JP_df.plot(x = 'JP_genre', y = 'JP_sales', kind= 'bar'),即可正常生成目标条形图
内容的提问来源于stack exchange,提问作者CLook
相关产品推荐
相关产品推荐

