Python实现热力图

什么是热力图?

以特殊高亮的形式显示访客热衷的页面区域和访客所在的地理区域的图示。热力图 可以显示不可点击区域发生的事情。城市热力图该检测方式只提供参考。——摘自百度百科

热力图可以直接提供可视化页面,让我们可以看到数据在地图上分布情况。

这里使用开源街道地图OpenStreetMap提供的服务。


  1. 测试环境
    1. Anaconda3+jupyter notebook+folium
    2. sf-crime数据集(来自kaggle)
  2. 准备环境
    1. 安装anaconda3,建议使用国内开源镜像站下载,可以多版本下载。
    2. 安装jupyter notebook。
    3. pip install folium
    4. 下载sf-crime数据集。kaggle限制登录才能下载数据,这里提供百度网盘链接。密码:l19s
  3. 打开jupyter
    1. 我们要导入必要的库和train.csv文件。
      import pandas as pd 
      import numpy as np
      import folium
      from folium.plugins import HeatMap
      
      data = pd.read_csv('train.csv')

       

    2. 查看数据,我们需要三个参数,第一个是经度,第二个是纬度,第三个就是计算经纬度组合的计数。

      data.head()

      这里我们看到X和Y两个参数,分别对应纬度和经度。那么还要有第三个参数,就是组合的计数。先来处理这些数据。

      grp_count = data.groupby(["X","Y"]).agg({'Address':'count'})
      grp_count["Address"].unique()
      grp_count

      组合数据完成。

  4. 做一个列表,里面包括三个参数:(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)

     

  5. 开始绘图。

    m = folium.Map([ 37, -122], tiles='stamentoner', zoom_start=6)
    HeatMap(rslist).add_to(m)
    m

可以放大缩小查看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值