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

Seaborn绘制箱线图报错ValueError: Could not interpret input 'Comfort Important'求助

报错原因分析
  • 核心问题和数据集规模无关,是pd.melt()重塑DataFrame后列结构发生变化,导致你指定的绘图列不存在:pd.melt()操作的输出仅会保留你指定的id_vars字段(此处仅保留Sleep Subject列),另外生成两个固定名称的新列variable(存放你传入的value_vars中的原列名)、value(存放对应原列的数值),所以df_melt中不存在Comfort Important、Comfort vs Price两个列,触发Seaborn的列不存在报错。
  • 额外的冗余配置:你将Sleep Subject同时传入了id_vars和value_vars,属于重复参数配置,无实际意义。
解决方法

根据你的实际绘图需求选择对应方案即可:

方案1:无需melt,直接用原始df绘图

如果你的需求就是绘制Comfort Important为X轴、Comfort vs Price为Y轴的箱线图+蜂群图,完全不需要做melt操作,直接将数据源替换为原始df即可:

import matplotlib.pyplot as plt
import seaborn as sns
ax = sns.boxplot(x='Comfort Important', y='Comfort vs Price', data=df, color='#99c2a2')
# 注:数据量大时swarmplot性能极低,可替换为stripplot,或直接删除该行
ax = sns.swarmplot(x="Comfort Important", y="Comfort vs Price", data=df, color='#7d0013')
plt.show()

方案2:确需使用melt后的数据绘图

如果你的需求是对所有value_vars中的指标做分组对比,使用melt后生成的variable、value列绘图即可,同时修正melt的冗余参数:

# 修正melt参数,去掉重复的Sleep Subject
df_melt = pd.melt(df.reset_index(), id_vars=['Sleep Subject'], value_vars=['Comfort Important', 'Quality Important', 'Comfort vs Price', 'Quality vs Price', 'Improve Sleep vs Price', 'Sleep Cooler vs Price', 'Warranty', 'Try before Buy', 'Buy Online', 'Online Uncomfortable', 'Online Quality'])

import matplotlib.pyplot as plt
import seaborn as sns
# 示例:按Sleep Subject分组,对比不同指标的数值分布
ax = sns.boxplot(x='variable', y='value', hue='Sleep Subject', data=df_melt, color='#99c2a2')
plt.xticks(rotation=45) # 旋转X轴标签避免文字重叠
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:36:04