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

Matplotlib绘制招募数据条形图:X轴年份重复、条形长度一致问题排查

问题排查:条形图X轴重复、长度一致的异常

核心原因分析

这种异常大概率是以下两种情况导致:


1. 绘图时误用原始全量数据,而非聚合结果

如果你的绘图代码是直接调用原始DataFrame的year列和目标变量列,比如:

# 错误示例
plt.bar(df['year'], df['recruit_score'])

原始数据中每个年份包含大量重复行,绘图时所有数据点会挤在对应年份位置,加上渲染逻辑问题,最终X轴只显示首个年份,且条形因重叠/平均呈现一致高度。

2. 年份列数据类型异常或存在大量无效值

若year列是字符串类型(如"2006"),或被批量填充为2006(比如缺失值处理错误),分组聚合时会仅生成2006一个分组,绘图自然全是该年份且条形长度一致。


修复步骤

  1. 检查并修正年份列类型:
# 查看年份列类型和唯一值
print(df['year'].dtype)
print(df['year'].unique())

# 若为字符串,转换为数值并清理缺失值
df['year'] = pd.to_numeric(df['year'], errors='coerce')
df = df.dropna(subset=['year'])
  1. 基于聚合后的数据绘图:
    以绘制各年份目标变量均值为例,正确代码如下:
import matplotlib.pyplot as plt

# 按年份分组计算统计量(可替换为sum、count等)
yearly_stats = df.groupby('year')['recruit_score'].mean().reset_index()

# 使用聚合结果绘图
plt.bar(yearly_stats['year'], yearly_stats['recruit_score'])
plt.xlabel('年份')
plt.ylabel('平均招募得分')
plt.title('各年份橄榄球招募得分对比')
plt.xticks(rotation=45) # 可选:避免年份标签重叠
plt.show()
  1. 提前验证聚合结果:
    绘图前打印聚合后的数据,确认包含多年份且统计值有差异:
print(yearly_stats)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:00:51