You need to enable JavaScript to run this app. Pandas按年份汇总数值排序及带标签条形图绘制实现
优惠活动
大模型
产品
解决方案
定价
更多

Pandas按年份汇总数值排序及带标签条形图绘制实现

Pandas场景下年度数值聚合与可视化实现

一、年度数值计算与排序

  • 先完成基础数据清洗:将年份列统一为可分组的统一类型(推荐转成字符串,避免数值型年份在排序、分类展示时出现格式错位),将数值列转换为可计算的数值类型,自动过滤无法识别的脏值
  • 按年份维度分组聚合,计算每个年份的数值总和,再按需求排序输出,核心实现代码:
import pandas as pd
import matplotlib.pyplot as plt

# 假设原始数据框为df,包含两列:year(年份)、value(对应行的数值)
# 数据类型校验清洗
df['year'] = df['year'].astype(str)
df['value'] = pd.to_numeric(df['value'], errors='coerce')

# 分组求和+排序(如需按总数值降序展示,设置ascending=False;如需按年份先后排序,将by参数替换为'year')
year_total = df.groupby('year', as_index=False)['value'].sum().sort_values(by='value', ascending=False)
# 直接打印即可查看排序后的年度总数值
print(year_total)

二、带数值标签的横向条形图绘制

需求指定y轴为year维度,直接使用matplotlib的横向条形图barh实现,逐根条形绑定数值标签即可,核心代码:

  • 先配置绘图环境的中文显示,避免标签乱码
  • 绘制时绑定分组后的年度总数值作为条形长度
  • 遍历每个条形对象,在条形末端标注对应的总数值
# 配置中文显示参数
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

fig, ax = plt.subplots(figsize=(8, 6))
# 绘制横向条形图,y轴位置为年份,x轴长度为对应年度总数值
bar_container = ax.barh(year_total['year'], year_total['value'])

# 给每根条形添加数值标签,fmt参数可调整数值的显示格式
ax.bar_label(bar_container, fmt='{:,.0f}', padding=4)

# 调整轴标签、反转y轴匹配排序结果的展示顺序
ax.set(ylabel='年份', xlabel='年度总数值')
ax.invert_yaxis()
plt.tight_layout()
plt.show()

常见注意点

  • 如果原始数据的年份和数值没有拆分成独立两列,先通过字符串拆分、位置提取的方式把年份字段独立成列,后续聚合逻辑完全通用
  • 若标签出现重叠,可适当调大figsize的画布尺寸,或缩小标签的显示字号
  • 排序逻辑可灵活调整,不需要额外复杂的转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.13 21:54:03