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

Pandas groupby后用yerr绘制误差棒出现ConversionError问题

解决pandas绘制带误差棒柱状图的索引报错问题

问题原因

pandas.DataFrame.plot()的yerr参数无法像y参数那样直接解析多层列索引的元组格式,它需要接收数值型的数组或Series,而非索引元组,这是导致报错的核心原因。

解决方案

直接提取聚合后DataFrame中对应变量的标准差列,作为yerr的输入值即可。

完整示例代码

import pandas as pd
from numpy import mean, std

# 创建示例数据
df = pd.DataFrame({
    'U': [1, 2, 3, 4],
    'V': [5, 6, 7, 8],
    'grp': [1, 1, 2, 2]
})

# 按分组聚合均值和标准差,得到多层列索引的DataFrame
uv_agg = df.groupby('grp').agg([mean, std])

# 绘制U变量的带误差棒柱状图
uv_agg.plot(kind='bar', y=('U', 'mean'), yerr=uv_agg[('U', 'std')])

扩展:同时绘制多个变量的误差棒

如果需要一次性绘制所有变量(如U和V)的带误差棒柱状图,可以用xs方法批量提取均值和标准差列:

# 提取所有变量的均值列作为y值,标准差列作为误差棒
ax = uv_agg.xs('mean', axis=1, level=1).plot(kind='bar', yerr=uv_agg.xs('std', axis=1, level=1))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:22:46