Python生成城市热力图
前言1.导入数据2.提取数据3.生成热力图且保存4.打开html文件结果展示资源下载:前言
这是一个利用folium包将GDP.xls文件内的信息加工成热力图的示例过程
1.导入数据
导入必要的包以及将GDP数据读入,其中numpy和pandas都是处理数据时常用的包
folium是地图包,提供绘制热力图以及链接到地图上的函数
GDP文件中有我们需要的城市名、城市经纬度和城市GDP和人数
import numpy as npimport pandas as pdimport folium #地图信息from folium.plugins import HeatMapimport webbrowser #用于生成网页显示data = pd.read_excel(r"GDP.xls") #使用 pandas 库读入待处理的 Excel 文件
2.提取数据
将data中我们需要的数据提取出来,在这个例子里我们一共处理100个城市的平均GDP,由于在文件中只有人数和城市总GDP,我们需要将其转化为人均GDP
cityNum = 100 # 共分析100座城市lat = np.array(data["LAT"][0:cityNum]) # 获取纬度值lon = np.array(data["LON"][0:cityNum]) # 获取经度值pop = np.array(data["POP"][0:cityNum], dtype=float) # 获取人口数,转化为浮点型gdp = np.array(data["GDP"][0:cityNum], dtype=float) # 获取 GDP,转化为浮点型gdpAverage = np.array(data["GDP_Average"][0:cityNum],dtype=float) # 获取人均 GDP,转化为浮点型
3.生成热力图且保存
第一行将一个城市的经纬度和平均GDP制成一个列表,这个平均GDP就是我们在制作热力图时的权重
folium.Map函数将一张地图导入进来,location为地图中心位置,zoom_start为缩放比,这个数值越大,放大程度越高
HeatMap(data).add_to(mapData)这行代码将我们的热力图添加到了地图中
最后保存我们的热力图html文件,到时候打开就可以了
# 将数据制作成[纬度, 经度, 权重]的形式data = [[lat[i], lon[i], gdpAverage[i]] for i in range(cityNum)] # 生成地图数据,初始缩放程度为6倍mapData = folium.Map(location=[35, 110], zoom_start=6) # 将热力图添加到地图里HeatMap(data).add_to(mapData) # 将结果保存为 html(网页)文件filePath = r"GDP_HeatMap.html"mapData.save(filePath)
4.打开html文件
# 使用默认浏览器打开网页webbrowser.open(filePath)
结果展示
资源下载:
资源下载:热力图原始资源