Да, вы можете. Прежде всего, вы должны быть уверены, что вы передаете геоданные, ваш код возвращает pandas dataframe:
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
.
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. Затем вы генерируете индекс Морана 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/.