我正在使用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个城市的人口是否在空间上自相关。
答案 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
的新结构使用libpysal
和esda
软件包。
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/。