Excel:如何按等间隔自动汇总时间序列经纬度降水数据?
按月自动汇总降水量的解决方案
以下是几种无需手动更新求和公式的自动汇总方法,适配不同工具场景:
Excel 场景
数据透视表(最便捷)
- 选中所有数据区域,点击「插入」-「数据透视表」
- 将
Time字段拖入行区域,右键点击行标签选择「分组」,勾选「年」和「月」 - 将
precipitation字段拖入值区域,设置为「求和」 - 后续数据更新后,只需点击数据透视表的「刷新」按钮即可自动更新汇总结果
动态数组公式(Excel 365/2021 适用)
- 在空白单元格输入
=UNIQUE(TEXT(A:A,"yyyy-mm"))(A:A为Time列),自动生成所有唯一的年月值 - 在相邻单元格输入
=SUMIFS(D:D,TEXT(A:A,"yyyy-mm"),F2)(D:D为precipitation列,F2为生成的年月值),公式会自动溢出匹配所有年月的求和结果,数据更新后自动重新计算
- 在空白单元格输入
Power Query
- 导入数据到Power Query编辑器,添加自定义列:
=Date.ToText([Time], "yyyy-MM")提取年月 - 点击「转换」-「分组依据」,分组字段选择
long、lat、自定义的年月列,聚合字段选precipitation并设置为「求和」 - 将结果加载回Excel,数据更新后点击「数据」-「全部刷新」即可
- 导入数据到Power Query编辑器,添加自定义列:
Python(Pandas)场景
如果数据量极大,用Python批量处理效率更高:
import pandas as pd # 读取数据(支持csv、excel等格式) df = pd.read_csv("your_data.csv") # 转换时间列为日期格式 df["Time"] = pd.to_datetime(df["Time"]) # 生成年月分组列 df["year_month"] = df["Time"].dt.to_period("M") # 按经纬度+年月分组求和 monthly_summary = df.groupby(["long", "lat", "year_month"])["precipitation"].sum().reset_index() # 保存结果 monthly_summary.to_csv("monthly_precip_summary.csv", index=False)
数据更新后重新运行脚本即可,也可结合定时任务实现全自动化。
数据库(SQL)场景
如果数据存储在数据库中,直接用SQL查询汇总:
SELECT `long`, `lat`, DATE_FORMAT(`Time`, '%Y-%m') AS year_month, SUM(`precipitation`) AS total_precipitation FROM your_table GROUP BY `long`, `lat`, DATE_FORMAT(`Time`, '%Y-%m');
执行查询即可得到结果,后续数据更新后重新执行查询即可。
内容的提问来源于stack exchange,提问作者FLH
相关产品推荐
相关产品推荐

