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

使用Pandas绘制箱线图时出现KeyError: item not in index错误求助

解决箱线图绘制时的KeyError: item not in index问题

嘿,我来帮你搞定这个问题!从你给出的信息来看,你已经提取了需要的列并尝试转换类型,但绘图时遇到了索引不存在的错误,下面是最可能的原因和对应的解决步骤:

1. 先搞定loan_amnt的类型转换问题

你提供的样本数据里,loan_amnt是带逗号的字符串(比如5,000.00),直接用astype(float)会失败的——Python可认不出带逗号的数字字符串!这会导致loan_amnt列转换失败,后续绘图时引用这个列自然会出问题。

修正方法很简单,先把逗号去掉再转类型:

# 移除数字字符串里的逗号,再转换为float类型
mydata['loan_amnt'] = mydata['loan_amnt'].str.replace(',', '').astype(float)

2. 检查你的箱线图代码是否正确

按州分组画贷款金额的箱线图,核心是要明确指定x轴为addr_state,y轴为loan_amnt。下面给你两种常用库的正确写法:

用Seaborn绘制(更简洁,推荐)

import seaborn as sns
import matplotlib.pyplot as plt

# 直接传入DataFrame,指定x和y列
sns.boxplot(data=mydata, x='addr_state', y='loan_amnt')
plt.xticks(rotation=90)  # 旋转州名标签,避免重叠挤在一起
plt.show()

用Matplotlib绘制

import matplotlib.pyplot as plt

# 先按州分组,获取每组的贷款金额列表
state_groups = mydata.groupby('addr_state')['loan_amnt'].apply(list)

plt.boxplot(state_groups.values)
# 设置x轴刻度为州名,旋转90度方便阅读
plt.xticks(range(1, len(state_groups)+1), state_groups.index, rotation=90)
plt.ylabel('Loan Amount')
plt.xlabel('State')
plt.show()

如果你的绘图代码里写错了列名(比如把loan_amnt写成loan_amount),肯定会触发KeyError,所以一定要确保列名和DataFrame里的完全一致!

3. 最后确认一下列名是否真的存在

虽然你已经输出了列名信息Index(['addr_state', 'loan_amnt'], dtype='object'),但保险起见,绘图前可以再打印一次列名确认:

print(mydata.columns)

总结

最可能的问题就是loan_amnt的类型转换没成功(因为带逗号的字符串无法直接转float),导致后续绘图时无法正确识别该列。先处理掉字符串里的逗号,转换好类型,再用正确的代码指定列名,应该就能顺利画出箱线图啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:41:59