python新年快乐表情包_【新年快乐,跨年文章】Python 百度API 画出美美哒热力地图(代码 数据)...

作者:王大伟

Python爱好者社区唯一小编

博客:https://ask.hellobi.com/blog/wangdawei

关注Python爱好者社区回复热力地图即可获取本文数据和代码!

注:昨晚写的

前言

明天就是2018年了,现在是晚上22:22,我是不是很2

周围的人都在跨年刷朋友圈

我一个人在办公室默默打开博客

准备写一篇文章为2017画下句点

之前在写葡萄酒数据分析那篇文章时

曾想过做一个葡萄酒分布的地区热力图

当时也没有搞定

在写完那篇文章之后

闲来无事

在网上查阅了很多技术博客

结合自己的摸索实践

摸索了一下午

终于完成了

当时真的很开心

可能就和正在跨年的你们一样开心吧

数据准备

在国家统计局网站copy到2015年各城市的房地产开发投资额数据:

122646258_3_20180122102932581

把数据保存在本地,存成csv格式

百度API免费申请

打开网址:http://lbsyun.baidu.com/

注册好,按照下图操作:

点击  功能与服务----地图

122646258_4_20180122102932721

点击创建应用:

然后自己取个名字,选择浏览器端,白名单输入星号:

122646258_6_20180122102932940

点击提交

你就有了一个应用了

122646258_7_20180122102933112

城市转换为经纬度

我们打开百度地图的开放平台

http://developer.baidu.com/map/jsdemo.htm#c1_15

在左侧找到添加热力图-----点击运行-----点击显示热力图-----就能看到热力图啦~

122646258_8_20180122102933221

这是百度API所能提供的热力图类型

我们注意到所给的这段代码:

122646258_9_20180122102933534

我们将您的密钥换成刚才我们申请得到的那串数字

也就是:

122646258_10_20180122102933643

然后在本地新建一个.html文件(可以通过创建文本文件,然后将后缀改为.html达到,如果你的文本文件不显示后缀,请百度解决~)

我们将加入了自己申请的密钥的网页代码全部复制下,粘贴到本地创建的 .html 文件中

122646258_11_20180122102933721

122646258_12_20180122102933831

复制的代码中的示例热力图的位置不是我们想要的

我们想要的是我们的数据生成热力图

打开Python

import jsonfrom urllib.request import urlopen, quoteimport requests,csvimport pandas as pd #导入这些库后边都要用到def getlnglat(address):    url = 'http://api.map.baidu.com/geocoder/v2/'    output = 'json'    ak = '替换成你申请的密钥!!!'    add = quote(address) #由于本文城市变量为中文,为防止乱码,先用quote进行编码    uri = url + '?' + 'address=' + add  + '&output=' + output + '&ak=' + ak    req = urlopen(uri)    res = req.read().decode() #将其他编码的字符串解码成unicode    temp = json.loads(res) #对json数据进行解析    return temp

file = open(r'E:\房地产开发投资额2015.json','w') #建立json数据文件with open(r'E:\房地产开发投资额2015.csv', 'r') as csvfile: #打开csv    reader = csv.reader(csvfile)    for line in reader: #读取csv里的数据        # 忽略第一行        if reader.line_num == 1: #由于第一行为变量名称,故忽略掉            continue            # line是个list,取得所有需要的值        b = line[0].strip() #将第一列city读取出来并清除不需要字符        c = line[1].strip()#将第二列price读取出来并清除不需要字符        lng = getlnglat(b)['result']['location']['lng'] #采用构造的函数来获取经度        lat = getlnglat(b)['result']['location']['lat'] #获取纬度        str_temp = '{'lat':' + str(lat) + ','lng':' + str(lng) + ','count':' + str(c) +'},'        #print(str_temp) #也可以通过打印出来,把数据copy到百度热力地图api的相应位置上        file.write(str_temp) #写入文档file.close() #保存

参考文献:https://www.jianshu.com/p/773ff5f08a2c

运行完成之后,本地会出现一个json文件

122646258_13_20180122102933925

打开可以看到:

122646258_14_201801221029343

是一长串json数据,我们全选这些数据,复制替换掉本地的html文件中的var经纬度部分

原本是这样的:

122646258_15_2018012210293481

替换完成后是这样的:

(我是用notepad++以编辑的方式打开的本地html文件)

122646258_16_20180122102934175

保存之后,以网页浏览的方式打开本地的html

使用鼠标滚轮放大缩小到可以看见全国视野,然后点击左下角显示热力图即可看到~

你出现的图是这样的:

122646258_17_20180122102934300

因为原始数据默认为20和100,只要超过100的值显示都一样,而且没有渐变辐射的效果

122646258_18_20180122102934503

可以修改热力点辐射半径(辐射范围大小)和最大值

我们数据的price最大是北京的4177,所以我设置为4000,保存

122646258_19_20180122102934565

再次打开操作就能看到美美哒热力图啦~

122646258_20_20180122102934643

你可以拿这个方法去做其他热力图啦~比如房价热力图,GDP热力图等等~

已经是2018年了,这文章写了一年

122646258_21_20180122102934878

去年可以祝大家  鸡年大吉吧

今年狗年啊,祝大家....

122646258_22_20180122102934925

关注Python爱好者社区回复热力地图即可获取本文数据和代码!

小编的免费Python入门课程已经登场,等你来撩~

已经2900+小伙伴加入学习啦~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值