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

如何在Python中将月度数据按年聚合计算年度平均值

Python按年份分组统计月度数据年度平均值实现

方法1:pandas实现(推荐,适配常规数据处理场景)

这个方案代码简洁、容错性强,处理1871-2021年的长周期时间序列不会出现日期识别错误,是数据统计场景的首选方案。

import pandas as pd

# 替换为你实际的数据读取逻辑,比如pd.read_csv("你的数据集路径.csv")
# 以下为基于你给出的样例构造的测试数据
df = pd.DataFrame({
    "Date": ["1871-01", "1871-02", "1871-03", "1871-04", "1871-05", "1871-06",
             "1871-07", "1871-08", "1871-09", "1871-10", "1871-11", "1871-12"],
    "Value": [4.5, 10.7, 8.9, 1.3, 5.2, 6.7, 3.8, 9.1, 7.4, 2.6, 4.9, 8.2]
})

# 解析「年-月」格式的日期字段
df["Date"] = pd.to_datetime(df["Date"], format="%Y-%m")
# 提取年份作为分组维度
df["Year"] = df["Date"].dt.year
# 按年份分组计算Value列的算术平均值
yearly_average = df.groupby("Year", as_index=False)["Value"].mean().rename(columns={"Value": "Yearly_Mean_Value"})

关键逻辑说明:

  • 解析日期时显式指定format="%Y-%m",可以避免跨世纪日期的识别偏差,适配1900年之前的早期日期
  • 计算均值时pandas会自动跳过Value列的空值,如果需要排除月份不足12个的年份,可先做过滤再聚合:
# 筛选出有完整12个月记录的年份
valid_years = df.groupby("Year")["Date"].count().reset_index(name="month_count")
valid_years = valid_years[valid_years["month_count"] == 12]["Year"]
# 基于有效年份计算年均值
yearly_average_valid = df[df["Year"].isin(valid_years)].groupby("Year", as_index=False)["Value"].mean()

方法2:标准库实现(无第三方依赖场景使用)

如果运行环境无法安装第三方库,可以直接用Python标准库完成分组计算,不需要额外依赖:

from collections import defaultdict

# 替换为你实际加载的数据集,格式为(日期字符串, 数值)的元组列表
raw_data = [
    ("1871-01", 4.5),
    ("1871-02", 10.7),
    ("1871-03", 8.9),
    ("1871-04", 1.3),
    # 其余数据按格式补充
]

year_value_sum = defaultdict(float)
year_month_count = defaultdict(int)

for date_str, value in raw_data:
    # 拆分日期字符串提取年份
    year = int(date_str.split("-")[0])
    year_value_sum[year] += value
    year_month_count[year] += 1

# 计算年均值,结果按年份升序排列
yearly_average = {
    year: year_value_sum[year] / year_month_count[year]
    for year in sorted(year_value_sum.keys())
    # 若需要仅保留满12个月记录的年份,取消下一行注释即可
    # if year_month_count[year] == 12
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:27:19