导读:本期聚焦于小伙伴创作的《如何按年份和地区分组计算均值并为多边形构建生成循环索引》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何按年份和地区分组计算均值并为多边形构建生成循环索引》有用,将其分享出去将是对创作者最好的鼓励。

在地理数据分析中,我们常常拥有带有年份和地区字段的数值表,以及与之对应的地区边界多边形。为了后续批量生成制图或建模用的多边形,需要按年份和地区算出均值,并为每个地区多边形生成一个循环的索引编号,方便在循环中依次取用。

如何按年份和地区分组计算均值并为多边形构建生成循环索引

一、准备示例数据

先用pandas构造一份包含年份、地区与数值的宽表,再用geopandas准备地区多边形。这里以简化数据为例。

import pandas as pd
import geopandas as gpd
from shapely.geometry import Polygon

# 数值表
records = [
    {'year': 2020, 'region': 'A', 'value': 10},
    {'year': 2020, 'region': 'A', 'value': 20},
    {'year': 2020, 'region': 'B', 'value': 5},
    {'year': 2021, 'region': 'A', 'value': 15},
    {'year': 2021, 'region': 'B', 'value': 8},
    {'year': 2021, 'region': 'B', 'value': 12},
]
df = pd.DataFrame(records)

# 多边形表
polys = gpd.GeoDataFrame({
    'region': ['A', 'B'],
    'geometry': [Polygon([(0,0),(1,0),(1,1)]), Polygon([(1,0),(2,0),(2,1)])]
}, crs='EPSG:4326')

二、按年份和地区分组计算均值

使用groupby可以同时按多列分组,并用mean()得到每个组合的平均值。

# 按年份和地区分组求均值
mean_df = df.groupby(['year', 'region'], as_index=False)['value'].mean()
print(mean_df)

得到的结果包含year、region与value三列,每一行是一个年份地区组合的平均观测。

三、为多边形构建生成循环索引

假设我们需要对每个地区多边形按出现顺序生成一个从0开始的循环索引,可先取出去重后的地区列表,再映射回多边形表。

# 地区唯一列表
regions = polys['region'].tolist()

# 生成循环索引映射
loop_index = {r: i for i, r in enumerate(regions)}

# 为多边形添加循环索引字段
polys['loop_id'] = polys['region'].map(loop_index)
print(polys)

若后续要按年份循环构建多边形,可将mean_df与polys通过region字段合并,再在循环中用loop_id控制批次。

四、合并均值与多边形并循环使用

下面演示把均值表与多边形按地区连接,并按loop_id遍历生成子图形。

# 以最新年份为例合并
latest = mean_df[mean_df['year'] == mean_df['year'].max()]
merged = polys.merge(latest, on='region', how='left')

# 循环索引构建
for lid, sub in merged.groupby('loop_id'):
    print('循环索引', lid, '地区', sub['region'].values, '均值', sub['value'].values)
    # 此处可调用多边形构建或导出函数

五、小结

通过上述步骤,我们完成了按年份和地区分组求均值,并为多边形生成了可用的循环索引。该模式可扩展到更多维度,只需调整groupby字段与映射逻辑即可。

pandasgroupbymeangeopandaspolygon修改时间:2026-07-25 00:06:20

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。