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

使用Pandas DataFrame与Matplotlib绘图时IndexError问题排查

解决Matplotlib绘图时的IndexError:Pandas索引变量混淆问题

嘿,我一眼就看到问题所在了——你搞混了变量名!

先看报错的那两行代码:

x= tweet_preds["word count"][tweet_preds.predictions ==1]
y= tweet_preds["word count"][tweet_preds.predictions ==0]

这里的tweet_preds是你调用model_NB.predict()得到的预测结果集合(要么是NumPy数组,要么是Pandas Series),它根本没有"word count"或者predictions这些字段!真正存储了所有你需要的列(包括word count和predictions)的是你之前创建的df_tweet_preds这个DataFrame。你用一个非DataFrame对象去按字符串索引,自然就触发了IndexError。

修复步骤

  1. 替换正确的变量名
    直接把代码里的tweet_preds换成df_tweet_preds就行:
x= df_tweet_preds["word count"][df_tweet_preds.predictions ==1]
y= df_tweet_preds["word count"][df_tweet_preds.predictions ==0]
  1. 推荐用更安全的.loc索引(可选但更规范)
    为了代码可读性和避免潜在的索引问题,建议使用Pandas的.loc方法来筛选行和列:
x = df_tweet_preds.loc[df_tweet_preds.predictions == 1, "word count"]
y = df_tweet_preds.loc[df_tweet_preds.predictions == 0, "word count"]
  1. 额外检查:确认字段存在
    运行绘图代码前,可以先打印一下DataFrame的列,确保word count字段确实存在(避免拼写错误,比如空格是否正确):
print(df_tweet_preds.columns)

完整修正后的绘图代码

#plot word count distribution for both positive and negative sentiment
plt.figure(figsize=(12,6))
plt.xlim(0,45)
plt.xlabel("word count")
plt.ylabel("frequency")

# 使用正确的DataFrame和索引方式
x = df_tweet_preds.loc[df_tweet_preds.predictions == 1, "word count"]
y = df_tweet_preds.loc[df_tweet_preds.predictions == 0, "word count"]

g = plt.hist([x,y], color=["r","b"], alpha=0.5, label=["positive","negative"])
plt.legend(loc="upper right")
plt.show()  # 别忘了加上这一行,不然图像可能不显示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 07:37:37