什么是热力图?
以特殊高亮的形式显示访客热衷的页面区域和访客所在的地理区域的图示。热力图 可以显示不可点击区域发生的事情。城市热力图该检测方式只提供参考。——摘自百度百科
热力图可以直接提供可视化页面,让我们可以看到数据在地图上分布情况。
这里使用开源街道地图OpenStreetMap提供的服务。
-
测试环境- Anaconda3+jupyter notebook+folium
- sf-crime数据集(来自kaggle)
- 准备环境
- 安装anaconda3,建议使用国内开源镜像站下载,可以多版本下载。
- 安装jupyter notebook。
- pip install folium
- 下载sf-crime数据集。kaggle限制登录才能下载数据,这里提供百度网盘链接。密码:l19s
- 打开jupyter
- 我们要导入必要的库和train.csv文件。
import pandas as pd import numpy as np import folium from folium.plugins import HeatMap data = pd.read_csv('train.csv')
-
查看数据,我们需要三个参数,第一个是经度,第二个是纬度,第三个就是计算经纬度组合的计数。
data.head()
这里我们看到X和Y两个参数,分别对应纬度和经度。那么还要有第三个参数,就是组合的计数。先来处理这些数据。
grp_count = data.groupby(["X","Y"]).agg({'Address':'count'}) grp_count["Address"].unique() grp_count
组合数据完成。
- 我们要导入必要的库和train.csv文件。
-
做一个列表,里面包括三个参数:(x,y,Address)。
x = data['X'].values.tolist() y = data['Y'].values.tolist() Address = grp_count['Address'].values.tolist() type(x) z =zip(y[0:],x[0:],Address[0:]) rslist = [] for i in z: li = list(i) print(li) rslist.insert(0,li)
-
开始绘图。
m = folium.Map([ 37, -122], tiles='stamentoner', zoom_start=6) HeatMap(rslist).add_to(m) m
可以放大缩小查看。