按类别拆分DataFrame多列绘制分组箱线图的实现方法
按类别拆分特征的分组箱线图实现方案
要实现每个特征对应类别0和1的分组箱线图,核心是在数据融合阶段保留类别标签,再通过Seaborn的分组参数实现拆分。具体修改步骤如下:
关键修改点
- 数据融合时保留类别列:使用
pd.melt时指定id_vars='labels',确保每个特征值都关联对应的类别标签,这是实现分组的核心前提。 - 添加分组参数:在
sns.boxplot中新增hue='labels',让Seaborn根据类别标签对每个特征的箱线图进行拆分绘制。
修改后的完整代码
import seaborn as sns import pandas as pd import matplotlib.pyplot as plt # 融合数据时保留labels列,建立特征值与类别的关联 melted_df = pd.melt(df_here, id_vars='labels', var_name='variable', value_name='value') # 设置适配分组箱线图的画布尺寸 sns.set(rc={'figure.figsize':(14, 8)}) # 绘制分组箱线图,hue参数按labels区分类别 sns.boxplot(x="variable", y="value", hue="labels", data=melted_df, palette='Set2') # 可选:优化图表标注 plt.title('各类别特征值分布箱线图') plt.xlabel('特征名称') plt.ylabel('归一化特征值') plt.legend(title='类别标签') plt.show()
效果说明
修改后每个特征(Feature A/B/C)都会对应两个箱线图,分别展示类别0和类别1的特征值分布,总共6个箱线图整合在同一画布中,完全匹配需求。
内容的提问来源于stack exchange,提问作者denisRei
相关产品推荐
相关产品推荐

