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

Pandas按站点名绘制1-12月Var列箱线图触发ValueError的问题

报错原因排查与修正方案

核心触发报错的逻辑错误

  • 过滤条件匹配失效:循环虽然通过enumerate(sitenames,1)解包拿到了字符串型的plant_name值,但完全没有用该值做行筛选,反而拿枚举生成的1-8整数序号i匹配plant_name列存储的字符串型站点名称,筛选结果为空DataFrame。空表调用boxplot()方法时,因没有可绘制的分组数据,自然抛出“值数量不足解包、获取到0个元素”的报错,也是日志里出现0轴空图的直接来源。
  • 绘图维度完全错位:你的设计目标是为sitenames里的每个站点单独出图,单图内以1-12月为x轴,展示该站点Var列的月度统计分布,但现有代码的标题、轴标签逻辑完全反向:把月份列表元素当站点图的标题,x轴标签错写为“SITE”,和实际出图逻辑不匹配。
  • 冗余绘图步骤:每轮循环先手动执行plt.figure(),但pandas的.boxplot()方法会自动新建画布,导致每轮循环会额外生成一张完全无内容的空白图。

修正后可实现目标的代码

# 遍历每个站点独立出图
for site in sitenames:
    # 筛选当前站点对应的所有数据行
    site_subset = df3[df3['plant_name'] == site]
    # 对站点子集绘制箱线图:按month分组,展示Var列分布
    ax = site_subset.boxplot(
        by='month',
        column='Var',
        figsize=(10, 6)
    )
    # 调整x轴刻度为定义的月份序列,旋转标签避免文字重叠
    ax.set_xticklabels(months, rotation=90, ha='right')
    # 匹配设置图题、轴标签
    plt.suptitle('1991-2020 ERA5 WIND PRODUCTION', y=1.02)
    plt.title(f'站点:{site}')
    plt.xlabel('月份')
    plt.ylabel('VARIABILITY')
    # 自动调整布局,避免标签被画布边缘截断
    plt.tight_layout()
    plt.show()

运行前校验项

  • 确认df3['month']列的取值为1-12的有序数字,和设置的月份刻度顺序一一对应,避免出现月份顺序错位。
  • 确认df3['plant_name']列的取值和sitenames列表的字符串完全一致,没有大小写差异、前后冗余空格这类隐形的匹配偏差,防止筛选结果为空。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 12:06:05