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

