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

如何在Seaborn中按DataFrame列名分组绘制箱线图?

解决方法

你之前的问题出在原始DataFrame是宽格式,而Seaborn的boxplot需要长格式数据才能把列名作为X轴的类别选项直接使用——df.keys()不是数据框内的列,自然没法作为参数传入。下面是具体实现步骤:

1. 导入所需库

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

2. 转换数据格式

把宽格式的DataFrame转成长格式,让原列名成为单独的一列(作为X轴类别),对应数值成为另一列(作为Y轴数据):

# var_name 用来存储原DataFrame的列名,value_name 存储对应列的数值
df_melted = pd.melt(df, var_name="列名", value_name="数值")

3. 绘制箱线图并设置Y轴范围

# 用转换后的长格式数据绘图,X轴选"列名"列,Y轴选"数值"列
sns.boxplot(data=df_melted, x="列名", y="数值")
# 固定Y轴范围在0-700之间
plt.ylim(0, 700)
# 显示图形
plt.show()

补充说明

如果你之前写y='TAX'是只想单独展示TAX列的分布,那不需要转换格式,直接这样写就行:

sns.boxplot(data=df, y='TAX')
plt.ylim(0, 700)
plt.show()

但这种方式X轴不会显示所有列名,因为只绘制了TAX一列的箱线图,和你的需求不符,所以还是优先用长格式转换的方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:45:26