我们需要对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-8from 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']))