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

Python Seaborn绘制分组箱线图y轴数值显示异常问题求解

问题原因及解决方案

核心问题1:CSV表头字段带前导空格,列名不匹配

你提供的CSV表头字段为index, cluster, type, val,逗号后均带有空格,pandas.read_csv默认不会自动裁剪列名前后的空格,因此读取生成的DataFrame实际列名为index、 cluster、 type、 val。你代码中传入的x="cluster"、y="val"为不存在的列,seaborn无法找到对应y轴数值列时,会默认按分组计数展示,就会出现你遇到的异常表现。

可能的问题2:val列被识别为字符串类型

如果CSV的val字段存在非数字异常值,pandas会将该列识别为object字符串类型,seaborn无法将其作为数值字段做箱线图统计,也会 fallback 到计数逻辑。

修复方案

  1. 读取CSV时增加skipinitialspace=True参数,自动忽略逗号后的前导空格
  2. 显式转换val列为数值类型,过滤异常值
  3. 可添加列名、列类型打印逻辑,提前排查问题

修复后完整代码如下:

import seaborn as sns
import pandas as pd
sns.set_theme(style="whitegrid")
# 读取时跳过字段前导空格
df = pd.read_csv("C:/tmp/all.csv", skipinitialspace=True)
# 验证列名与val列类型,排查问题时可打开注释
# print(df.columns.tolist())
# print(df['val'].dtype)
# 显式将val列转为数值类型,非数值异常值转为NaN自动忽略
df['val'] = pd.to_numeric(df['val'], errors='coerce')

sns.boxplot(x="cluster", y="val",
            hue="type", palette=["m", "g"],
            data=df)
sns.despine(offset=10, trim=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:15:00