[TOC]
程序简介
计算省的pm2.5平均值作为观测矩阵,省会的距离的倒数作为空间权重矩阵,计算全局莫兰指数为0.49,显著性检验p值为3.75>1.96,得出中国地区的pm2.5存在空间正相关
输入:中国各地区pm2.5值 输出:莫兰散点图、莫兰指数、莫兰检验数、地区热力图
莫兰指数(Moran’s I)是空间自相关系数的一种,其值分布在[-1,1],用于判别空间是否存在自相关。比如:一个小区内有钱人会集聚住在豪宅别墅区,平民们(比如我- -)则会集聚住在普通的楼房区,这里的个人财富就是一种观测值,呈现高高聚集,低低聚集的现象。
程序/数据集下载
点击进入下载地址
代码分析
导入模块,路径
# -*- coding: utf-8 -*-
from Module.CalPosition import calDistance
from Module.MoranI import moranI
import pandas as pd
import numpy as np
import json
import os
from pyecharts import Map
import re
#路径目录
baseDir = ''#当前目录
staticDir = os.path.join(baseDir,'Static')#静态文件目录
resultDir = os.path.join(baseDir,'Result')#结果文件目录
整理省-pm2.5表格作为观测值矩阵,将省内所有市的pm2.5的算术平均值作为该省的pm2.5,查看前5行
#读取省市字典
with open(staticDir+'/中国省市字典.json','r') as f:
china = json.loads(f.read())
#省-pm2.5字典
provincePm = {'province':[],'pm2.5':[]}
#读取各市pm2.5,求平均值作为整个省的pm2.5值
for province in china:
pm = []#该省所有市的pm2.5列表
for city in china[province]:
#文件名没有市这个字
city = city.replace('市','')
path = staticDir+'/中国各市2个月的pm2.5/%s.csv'%city
if not os.path.exists(path):
continue
cityPm = pd.read_csv(path,engine="python")['pm25']
pm.extend(cityPm.values.tolist())
#列表不为空才添加
if pm:
provincePm['province'].append(province)
provincePm['pm2.5'].append(np.m