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

使用scikit红酒数据集绘制sns.pairplot报KeyError: 'target'如何解决?

问题原因

  • 构造Pandas DataFrame时仅传入了wine数据集的特征字段,未将分类标签target加入DataFrame,因此指定hue="target"时找不到对应列触发KeyError,这也是你替换为class仍然无效的核心原因
  • 代码存在多处冗余的数据集加载、变量覆盖操作,且未导入seaborn库就直接使用sns别名调用接口
  • 之前的zip操作后续被新的赋值操作覆盖,不是触发本次报错的原因

修复方案

将分类标签列加入DataFrame即可,完整可运行代码如下:

%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_wine

# 加载数据集
data = load_wine()
# 构造包含特征和target的DataFrame
df = pd.DataFrame(data.data, columns=data.feature_names)
df['target'] = data.target

# 绘制pairplot,vars参数可按需调整特征范围
b = sns.pairplot(df, vars = df.columns[1:-1], hue = "target", height = 2.5)
plt.show()

可选优化

如果需要在图例中展示分类名称而非数字编号,可以在构造完df后额外添加映射代码:

df['target'] = df['target'].map({i:name for i,name in enumerate(data.target_names)})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:21:03