使用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
相关产品推荐
相关产品推荐

