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

如何用Matplotlib仅选取指定列绘制鸢尾花数据集箱线图?

解决方法:剔除无用列绘制箱线图

你的问题出在调用plt.boxplot时传入了包含species列的整个DataFrame,这列是类别标签而非特征,需要先筛选出前4个特征列再绘图,以下是两种简单的修改方式:

方式1:通过索引筛选前4列

直接用iloc选取所有行的前4列,代码修改如下:

import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt

iris_data = load_iris()
iris = pd.DataFrame(data=np.c_[iris_data['data'], iris_data['target']],
                    columns=iris_data['feature_names'] + ['species'])
setosa = iris.head(50)
# 筛选前4个特征列
plt.boxplot(setosa.iloc[:, :4], vert=True)
# 可选:设置x轴标签为特征名,让图表更易读
plt.xticks(range(1, 5), iris_data['feature_names'])
plt.show()

方式2:通过特征列名筛选

直接指定iris_data自带的特征列名列表,这种方式更直观,避免索引出错:

import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt

iris_data = load_iris()
feature_names = iris_data['feature_names']
iris = pd.DataFrame(data=np.c_[iris_data['data'], iris_data['target']],
                    columns=feature_names + ['species'])
setosa = iris.head(50)
# 仅选取特征列
plt.boxplot(setosa[feature_names], vert=True)
plt.xticks(range(1, 5), feature_names)
plt.show()

两种方式都能让箱线图只展示你需要的4个特征的分布,第二种方式更推荐,因为即使列顺序变化也不会出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:41:58