You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

解决TypeError: Empty 'DataFrame'无数值数据绘图错误及字符串绘图疑问

解决DataFrame绘图报错:TypeError: Empty 'DataFrame': no numeric data to plot

嘿,我来帮你搞定这个问题!你遇到的报错根源其实不是“字符串不能做图表的x轴”——恰恰相反,城市名称这类字符串完全可以作为折线图的x轴,问题出在你代码里的几个细节上:

问题1:全角中文引号导致DataFrame构造异常

你的代码里用了中文全角引号(比如‘Jakarta’‘Staff’),而Python只认半角的单/双引号('Jakarta''Staff')。这种错误会让Pandas无法正确识别列名和数据,最终构造出的DataFrame可能是残缺的,自然找不到可绘图的数值数据。

问题2:转数值操作可能未生效

你添加的df.Staff=pd.to_numeric(df.Staff)之所以没起作用,也是因为第一步的引号错误——原DataFrame的Staff列可能根本没被正确创建,或者里面的字符串因为中文引号的问题无法被转成数值。

正确的代码示例

把所有中文引号替换成半角引号,再确保Staff列转为数值类型,就能正常绘图了:

import pandas as pd
import matplotlib.pyplot as plt

# 注意所有引号都是半角的
df = pd.DataFrame({
    'City': ['London', 'Jakarta', 'Newyork', 'Mumbai'],
    'Staff': ['1000','2000','3000','4000']
})
print(df.head())

# 转为数值类型
df['Staff'] = pd.to_numeric(df['Staff'])

# 绘制折线图,字符串类型的City可以直接作为x轴
df.plot(kind='line', x='City', y='Staff', color='red')
plt.show()

额外说明

你提到的单独定义x、y列表的方式也能行,但完全没必要——只要DataFrame构造正确,直接用DataFrame的plot方法更简洁。字符串作为x轴是完全支持的,Pandas会自动把它们当作分类变量处理。

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

火山引擎 最新活动