Python:如何从 shapefile 计算指标的空间自相关?

标签 python pandas pysal

我正在使用geopandas读取瑞士各城市的shape文件,即municipalities.shp。对于 170,我有人口信息,即 population.csv 可以在此存储库 here 中找到其中的文件。 。

是否可以通过所谓的BFS编号合并信息。

import pandas as pd
import geopandas

mun = geopandas.read_file('municipalities.shp')
pop = pd.read_csv('population.csv')
## merge data
mergedData = pd.merge(mun,pop,left_on='BFS_NUMMER',right_on='BFS')

现在,我拥有 170 个城市中每一个城市的地理信息和人口信息。

我想知道是否可以使用pysal来检查这170个城市的人口是否存在空间自相关。

最佳答案

是的,可以。首先,您需要确保您正在传递地理数据帧,您的代码正在返回 pandas 数据帧:

import pandas as pd
import geopandas as gpd

mun = gpd.read_file('municipalities.shp')
pop = pd.read_csv('population.csv')
# merge data
mergedData = mun.merge(pop,left_on='BFS_NUMMER',right_on='BFS')

然后您就可以使用pysal的工具了。我将按照 pysal 的新结构使用 libpysalesda 包。

import libpysal
import esda

weights = libpysal.weights.Queen.from_dataframe(mergedData)  # generate spatial weights (Queen in this case)
spatial_auto = esda.Moran(mun[['population']], weights)  # calculate Moran's I

首先您必须生成空间权重矩阵。如果你想使用与 Queen 不同的方式,只需关注 https://libpysal.readthedocs.io/en/latest/api.html 。然后生成空间自相关的 Moran's I 指数(全局)。它生成您可能需要的所有属性 ( https://esda.readthedocs.io/en/latest/generated/esda.Moran.html#esda.Moran )。类似的语法适用于 Gamma、Geary's C 或 Getis Ord 自相关指数。

esda 的文档非常好,在 jupyter 笔记本中显示了示例,我建议检查其他信息(例如本地自相关或绘图)- https://esda.readthedocs.io/en/latest/ .

关于Python:如何从 shapefile 计算指标的空间自相关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54092382/

相关文章:

python - 如何检测 os.system 的内存限制

python - 在 groupby 中使用 sort_values 和 inplace=True 时到底出了什么问题?

python - Pysal 无法识别某些多边形邻居

python: pysal对权重函数的解释

python - 如何修复 Pysal 中 LISA 簇 map 的颜色

python - 使用 DFS 搜索图形时出现 KeyError

python - Jupyter 笔记本 rpy2 Rmagics : How to set the default plot size?

python - 访问 pandas 组作为新数据框

python - 用 pandas 数据框覆盖 Excel 工作表而不影响其他工作表

python - 从先前图像集中绘制 1 个图像 + 从列表中随机绘制 2 个图像 (Python/Psychopy)