You need to enable JavaScript to run this app. 如何使用pandas为分组数据绘制箱线图,按Field1分组展示Field2分布
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pandas为分组数据绘制箱线图,按Field1分组展示Field2分布

问题根因

你的代码卡住无响应,核心是groupby对象调用boxplot的默认逻辑是为每个分组单独生成子图,你的DataFrame除了Field2还包含Datetime字段,每个子图会同时渲染两个字段的箱线,当分组数量较多时会占用大量内存导致程序卡住,且完全不符合你单图展示分组分布的需求。
你不需要将Field1设为索引,也不需要手动生成groupby对象,用更简单的API即可实现需求。

解决方案

方案1:直接使用pandas原生boxplot(无需额外安装依赖)

import matplotlib.pyplot as plt

# 直接通过by参数指定分组字段,column参数指定要绘制分布的字段
df.boxplot(
    column='Field2',
    by='Field1',
    rot=45,
    fontsize=12,
    figsize=(10,5)
)
# 移除pandas自动生成的多余标题
plt.suptitle('')
plt.title('Field2按Field1分组的数值分布')
plt.xlabel('Field1')
plt.ylabel('Field2')
# 显式渲染图形
plt.show()

方案2:使用seaborn绘制,样式更美观

import seaborn as sns
import matplotlib.pyplot as plt

plt.figure(figsize=(10,5))
sns.boxplot(
    data=df,
    x='Field1',
    y='Field2'
)
plt.xticks(rotation=45, fontsize=12)
plt.xlabel('Field1')
plt.ylabel('Field2')
plt.title('Field2按Field1分组的数值分布')
plt.show()
注意事项
  • 非必要不要对groupby对象直接调用boxplot方法,该API仅适用于多子图分组展示场景
  • 绘图结束后务必添加plt.show()显式触发图形渲染,部分环境默认不会自动弹出图形窗口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 10:21:04