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

如何为含Code与Measure的pandas DataFrame生成分组箱线图?

如何按Code分组生成多个箱线图?

我懂你的问题啦——你想要针对Code的两个取值(1002和1200),分别画出Measure的箱线图(包含25分位、中位数、75分位这些统计量),但现在只生成了一个箱线,这是因为你没告诉pandas要按Code列来分组绘制。

下面给你两种简单的解决方法:

方法一:用Pandas自带的Boxplot指定分组参数

直接在boxplot()方法里加上by='Code',同时指定要绘制的数值列column='Measure',就能让pandas自动按Code的不同值分组生成箱线图。如果需要横向展示(和你原来的代码一致),保留vert=False即可:

import pandas as pd
import matplotlib.pyplot as plt

# 先构造你的DataFrame
data = {
    'Measure': [55.122, 49.166, 49.263, 59.156, 49.353, 43.000],
    'Code': [1200, 1002, 1002, 1002, 1200, 1200]
}
ds = pd.DataFrame(data)

# 生成分组箱线图的代码
fig, ax = plt.subplots(figsize=(10,5))
ds.boxplot(column='Measure', by='Code', vert=False, ax=ax)
plt.subplots_adjust(left=0.25)
plt.title('')  # 去掉pandas自动生成的分组标题,让图更整洁
plt.suptitle('Measure分布按Code分组')  # 添加自定义总标题
plt.show()

这段代码会生成两个独立的箱线,分别对应Code=1002和Code=1200的Measure数据,每个箱线都会自动计算并展示25th percentile、中位数、75th percentile等统计信息。

方法二:用Seaborn绘制更美观的分组箱线图

如果你想要更美观的可视化效果,可以用Seaborn库的boxplot(),它默认支持按列分组,参数也更直观:

import seaborn as sns
import matplotlib.pyplot as plt

# 构造你的DataFrame
data = {
    'Measure': [55.122, 49.166, 49.263, 59.156, 49.353, 43.000],
    'Code': [1200, 1002, 1002, 1002, 1200, 1200]
}
ds = pd.DataFrame(data)

plt.figure(figsize=(10,5))
sns.boxplot(x='Code', y='Measure', data=ds, orient='h')  # orient='h'设置为横向展示
plt.subplots_adjust(left=0.25)
plt.title('Measure分布按Code分组')
plt.show()

Seaborn的默认样式会让箱线图看起来更清晰,同时也能完美实现你要的分组效果。

核心思路其实很简单:只要告诉绘图工具按Code列进行分组,就能生成对应每个Code值的独立箱线,而不是把所有数据混在一起画一个箱线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:56:43