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

时间:2019-01-08 13:01:26

标签: python pandas pysal

我正在使用geopandas来读取瑞士市政府的shapefile,即municipalities.shp。对于170我有人口的信息,即population.csv的文件可以在此仓库here中找到。

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

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个城市的人口是否在空间上自相关。

1 个答案:

答案 0 :(得分:0)

是的,可以。首先,您需要确保传递地理数据框,您的代码返回的是熊猫数据框:

Registry

然后,您可以使用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的新结构使用libpysalesda软件包。

pysal

首先,您必须生成空间权重矩阵。如果要使用不同于Queen的名称,只需遵循https://libpysal.readthedocs.io/en/latest/api.html。然后,生成空间自相关(全局)的Moran I索引。它会生成您可能需要的所有属性(https://esda.readthedocs.io/en/latest/generated/esda.Moran.html#esda.Moran)。类似的语法适用于Gamma,Garyy's C或Getis Ord自相关索引。

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 的文档非常好,显示了jupyter笔记本中的示例,我建议检查一下其他信息(例如局部自相关或绘图)-https://esda.readthedocs.io/en/latest/