夜雨聆风学习资料网

ARTICLE · 1338573

ArcGIS for Excel 里的 Python 入门(附练习数据)

ArcGIS for Excel 里的 Python 入门(附练习数据)

点击蓝字 关注我们

近期课程

11月17日-11月20日 | 直播

《ArcGIS地图设计与高级制图》:ArcGIS制图从入门到精通,制图全流程:符号库、专题图制图、标注与注记、排版出图、地图册、精美地图

11月24日-11月27日 | 直播

《论文高级制图》:【ArcGIS Pro + Ai】带审图号的标准地图、气象温度组图、风速风向图、横向图例、研究区展示区位图、人口迁移流向图、3D特效等高线地形图、黑白印刷图等高级制图

在本文中,我会演示 ArcGIS for Excel、Python in Excel、机器学习模型和 Excel 如何协同工作,把 Excel 里的数据变成决策依据。我们会走一遍一个外业作业场景,但同样的套路适用于任何有位置数据的地方。

ArcGIS for Excel

ArcGIS for Excel 是 ArcGIS for Microsoft 365 家族的一员。它是 Microsoft 365 的一个加载项,让你能给 Microsoft Excel 加上 ArcGIS 的制图能力。借助 ArcGIS for Excel,你不必离开 Excel 环境,就能创建一张交互式地图,把来自 Excel 和 ArcGIS 服务的数据放进去。

Python in Excel

Python in Excel 是微软的一项功能,让你直接在单元格里写 Python。它真正强大的地方在于:你可以把 Excel 数据当作 Pandas DataFrame 来引用 —— 于是你的行和列立刻变成了 Python 能直接处理的对象。在此基础上,你可以用 matplotlib 或 seaborn 画图、做统计分析、跑机器学习模型,全程不离开 Excel 表格。

注意:Esri 的 Python 库(例如 ArcGIS API for Python)目前不受 Python in Excel 支持。Python in Excel 运行在 Microsoft 云端,只带一套固定的 Anaconda 库,不允许安装第三方包。

数据集

这次演示里,我用一组地质调查点位 —— 共 30 个点位,分布在 6 种调查类型中。其中 5 个点位被标记为高风险。每条记录包含 UTM 11N 坐标(东坐标与北坐标),以及调查详情、风险等级、调查状态等属性。示例数据集后台私信获取。

图 1:Python in Excel 的工作方式 —— 在单元格中编写 =PY() 代码、在 Microsoft 云端执行、结果回填到表格网格

Python in Excel 快速上手

先从最简单的开始。要在 Excel 里调用 Python,点击「公式」→「插入 Python」。然后在编辑栏里输入一条基本的 Python 语句。

输入 “Hello – I'm Python, running inside Excel!”,按 Ctrl+Enter。结果就直接出现在单元格里。

图 2:在 Excel 中调用 Python —— 从「插入 Python」进入,在编辑栏输入语句并按 Ctrl+Enter,结果直接落在单元格里。

现在试试列表推导式。下面这一行代码会生成 1 到 5 的平方数 —— 纯 Python,就在 Excel 里。

[x**2 for x in range (1, 6)]

图 3:用一行列表推导式生成 1 到 5 的平方数。

微软还提供了用于编写 Python 代码的编辑器(Editor)。在「公式」选项卡的 Python 组中,选择「编辑器」。

图 4:微软提供的 Python 编辑器 —— 在「公式」选项卡的 Python 组里选择「编辑器」

用 Python 在 Excel 中生成随机数列

把调查数据载入 DataFrame 只需要一次调用,用 xl() 函数即可。

data = xl("A1:J31", headers=True)

图 5:用 xl() 函数一次性把调查数据载入 DataFrame

做个快速分析。看看有多少调查是高、中、低风险。一行代码就够:

data.groupby("Risk_Level").size()

图 6:用 groupby 一行代码统计高、中、低风险调查各有多少

要想知道高风险调查里有多少已完成、多少进行中、多少待处理:

data = xl("A1:J31", headers=True)

pd.crosstab(data["Risk_Level"], data["Status"])

图 7:用 pd.crosstab 交叉统计高风险调查的完成 / 进行中 / 待处理状态

不用公式、不用数据透视表,只用 Python,就能在 Excel 里直接得到答案。

实操案例 —— 为外业团队生成优先清单

我们已经看到了 Python in Excel 是怎么工作的。接下来,用 Python in Excel 配合 ArcGIS for Excel 解决一个空间问题。这个例子光靠一张数据表是答不好的。数据集里有 30 个调查点位,而外业团队数量有限。问题是:先派他们去哪儿?

看数据会发现,GS082 和 GS089 都是高风险点位,且调查仍在进行中。看起来它们该是外业团队的高优先点位。

图 8:GS082 与 GS089 同为高风险、且调查仍在进行中,乍看最该优先。

不过,事情没这么简单。要是某个高风险点位周围没有人,而某个中风险点位紧挨着一座大城市呢?要为外业团队做出更聪明的优先清单,我们需要更多信息。

解决空间问题的思路

方案分三步:

1.把点位上图 —— 将调查点位加入 ArcGIS for Excel 地图,并按风险等级着色。

2.用人口数据充实 —— 借助 ArcGIS for Excel 的地理充实函数,取回每个点位的人口总量。

3.用 Python 聚类 —— 用 K-Means 按风险与人口,把调查分成三个优先级类别:高、中、低。

图 9:解决空间问题的三步方案 —— 上图、用人口充实、用 Python 聚类

第 1 步 —— 上图并符号化

把调查点位加入 ArcGIS for Excel 地图,并按风险等级符号化。有一点要记住,后面会用到 —— 地图和表格是联动的:我们在 Excel 表格里做的任何操作(比如应用一个筛选),地图都会随之更新。

图 10:第 1 步的结果 —— 调查点位加入 ArcGIS for Excel 地图并按风险等级着色,表格与地图保持联动。

第 2 步 —— 用 ENRICHBYPOINT 做地理充实

这是 ArcGIS 独有的动作,补上了表格里缺失的那个因素。ENRICHBYPOINT 函数是通过「函数构建器」(Function Builder)提供的 ArcGIS 函数之一。它接收一个点位置 —— 也就是我们的某个调查点位 —— 并用 ArcGIS 的数据变量去充实它。这里我们取的是每个点位 10 英里半径内 2026 年的总人口。

实际操作时,打开函数构建器,选择 ENRICHBYPOINT,对调查数据运行,再把公式向下填充到其余各行。在示例数据集里,“2026 Total Population” 这一列已经预先加好了。

图 11:第 2 步 —— 在函数构建器中调用 ENRICHBYPOINT,取回每个点位 10 英里半径内的 2026 年总人口。

第 3 步 —— 用 Python 跑 K-Means 聚类模型

手里有了两个变量 —— 风险等级和人口 —— 就让 Python 来分组。K-Means 模型把点位聚成三簇,我们把它们命名为「高优先」「中优先」「低优先」。

在 Excel 里筛选「High Priority」,答案就出来了:GS082、GS084 和 GS086 这三个点位,是外业团队该先去的地方。而在 ArcGIS for Excel 里做这件事的好处就在这儿 —— 你筛选表格时,地图会自动更新,把匹配的要素显示出来。

注意:K-Means 聚类的示例代码和抽样调查地点数据集.xlsx后台私信获取。

变了什么,为什么重要

把两个答案并排摆一摆:

· 只按风险排序:GS082 和 GS089

· 用 K-Means 之后:GS082、GS084 和 GS086

图 12:关键发现对比 —— 仅按风险排序得到 GS082、GS089;K-Means 之后变为 GS082、GS084、GS086。

有两点很突出 —— GS089 掉出了第一梯队,而 GS084 和 GS086 挤了进来。原因在于:模型是同时看风险和人口,而不是只看风险。

图 13:在 Python 编辑器中运行 K-Means 聚类代码

图 14:筛选 High Priority 后,地图自动聚焦到三个优先点位

这就是把这些工具组合起来的全部理由。ArcGIS 提供了原始调查表从来不曾有过的人口背景;Python 找到了答案 —— 是三个优先点位,而不是两个。而用 ArcGIS for Excel,你能在地图上清楚看到这些点位的位置 —— 而它们全都在同一张表格里。

结论

ArcGIS for Excel 与 Python in Excel 给你提供了一条快车道,在 Excel 里探索位置数据、做出更聪明的决策。我们把点位标上地图、用人口数据充实、再用 Python 聚类,结果从「两个优先点位」变成了「正确的三个」—— 全程都在同一张 Excel 表里。

更多Python相关内容,请关注培训中心2026年11月10日-11月13日举办的《基于Python的GIS空间数据处理、制图、分析与自动化》

往期文章推荐

在ArcGIS Pro中用基于嵌入的图像分析对LiDAR激光雷达点云分类

技术文章 | 如何确定【适宜性模型】中多个变量(或标准)的权重?ArcGIS Pro 3.5及以上新工具【按成对比较分配权重】

WMTS / WMS / WFS 到底啥区别?在线地图服务一次讲清

免费视频课程~【ArcGIS Pro快速入门指南】05浏览数据

如何在ArcGIS/ArcMap中创建DEM地形栅格数据

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料