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

如何在seaborn.objects中同时实现分箱与非count类聚合(如均值计算)?

在seaborn.objects中同时实现分箱与均值聚合

当然可以,不用提前在pandas里做groupby聚合,seaborn.objects提供了原生的声明式API,能直接在绘图流程里完成分箱操作和非count类的聚合计算(比如你需要的均值)。

改进后的代码

import seaborn.objects as so
import seaborn as sns

# 加载数据集
df = sns.load_dataset("penguins")

# 直接在绘图流程中完成分箱+均值聚合
p = (
    so.Plot(df, x="bill_length_mm", y="bill_depth_mm")
    .add(so.Bars(), so.Bin(x=30), so.Agg("mean", y="bill_depth_mm"))
)

p.show()

代码说明

  • so.Bin(x=30):对x轴的bill_length_mm字段进行分箱,指定分成30个区间,和你原代码中pd.cut(df["bill_length_mm"], bins=30)的效果一致,且会自动用分箱的中点作为x轴的显示位置,省去了你手动提取mid值的步骤。
  • so.Agg("mean", y="bill_depth_mm"):针对每个分箱,计算bill_depth_mm的均值,替换了原代码中groupby().mean()的聚合逻辑。
  • 整个流程完全基于seaborn.objects的声明式风格,代码更简洁,也避免了手动处理中间DataFrame的繁琐操作。

自定义分箱区间

如果需要指定具体的分箱边界,也可以给so.Bin传入自定义的区间列表,用法和pd.cut类似:

p = (
    so.Plot(df, x="bill_length_mm", y="bill_depth_mm")
    .add(so.Bars(), so.Bin(x=[30, 35, 40, 45, 50, 55, 60]), so.Agg("mean", y="bill_depth_mm"))
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:25:20