利用python爬取百度地图火锅数据并可视化

Python016

利用python爬取百度地图火锅数据并可视化,第1张

其实这次的爬虫很简单,长话短说

我们需要对city列处理

我们头脑一定要清晰,我以前做了蛮久,但是现在一些就这次来了,我们的思路,分列,行列转换,然后提取数据

我们这里解释一下,2513×1,我们要转换成359×7。

我们这次选择pyecharts来数据可视化,注意Pyecharts里面省份要一样,比如上海市不能识别,只有上海才可以识别。

还有Pyecharts只识别列表数据,所以我们需要数据类型改变。

我们需要一一对应

绘制地图

我们来看看效果。

其实python来数据可视化比较痛苦的,所以我们在tableau里面数据可视化一样,好痛苦。

太痛苦,要不是为了钱,钱到了,当然要记录一下,不记录的话,以后又忘记了,那怎么办,而且还可以传播出去。还有数据有缺失,不一定准确,数据来源于百度。强烈抗议osm把湾湾划出我国,这个不代表本人观点,祖国万岁。

Folium是Leaflet.js的Python的API,即可以使用Python语言调用Leaflet的地图可视化能力。

其中,Leaflet是一个非常轻的前端地图可视化库。

默认参数为OpenStreetMap地图,(0,0)经纬度坐标,全球范围缩放

最简单的配置,初始化中心位置和缩放尺度

文档说内置“Mapbox Bright”和“Mapbox Control Room”,本次实验中无法加载

瓦片地址参考 http://openwhatevermap.xyz

瓦片地址参考页面顶部链接

各种要素可以设置颜色、大小、文字标记等属性,具体看操作手册

这里以高德地图为底图,添加点、线、面形状

以高德地图API的坐标提取器为准,取操场位置的坐标,并打在默认地图和高德地图上,可以看到坐标不同

做地图可视化的方法,通常有

其中

python语言近年来比较热,也有很多可视化库可以用,但是在地图的可视化方面很弱。有一些可视化库也支持一点点,如plotly内置的mapbox可视化;还有上面提到的的pyecharts可以做形状,底图(应该)可以用百度地图。但是这些或者不灵活、或者限定了底图,基本能力还是有的,虽然都不全。

背景完,具体内容到页面顶部。

不是所有的地址都能得得一个有效的地理编码的,需要检查status是否为0。

参考以下代码:

# coding=utf-8

from urllib.request import urlopen, quote

from json import loads as loadjson

ak = '--------------------------------'

def _url(service,**kv):

    qstr = ''

    url = 'http://api.map.baidu.com/' \

        + service + '/v2/' \

        + '?output=json' \

        + '&ak=' + ak

    for k, v in kv.items():

        url += '&' + k + '=' + quote(v)

    return url

def baidumapapi(service,**kv):

    data = urlopen(_url(service,**kv)).read().decode('utf-8')

    return loadjson(data)

geo = baidumapapi('geocoder',address='gd')

if geo['status'] == 0:

    try:

        print(geo['result']['location']['lng'])

    except (Exception,):

        print(geo)

else:

    print('{}({})'.format(geo['msg'] if 'msg' in geo.keys() else geo['message'],

                          geo['status']))