2

我正在geopandas阅读瑞士各市的 shapefile,即municipalities.shp. 对于 170,我有人口信息,即population.csv来自的文件可以在这个 repo 中找到

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

4

1 回答 1

2

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

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's 工具。我将使用libpysalesda包装遵循新结构的pysal.

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/

于 2019-01-12T13:12:34.777 回答