用Python+可视化工具制作漂亮地图

大家好,我是辰哥~

这次呢,我想讲讲地图可视化的内容,以前我也写过用Python的内置库绘制地图,但总感觉不够美观。如何才能在短时间内制作漂亮的可视化地图呢,我觉得Python+可视化工具是不错的选择。

以下动态可视化地图就是辰哥亲手绘制,展现了一段时间内广州市企事业单位在网上商城采购商品的分布及随时间的变化。

4eff3e685463e26a9f80044ab3428adf.gif


接下来,辰哥将手把手教你如何绘制这个动态图,您可在公众号后台回复「 211030 」获取数据集进行测试。

c1c871fce3ff3c43908d8451202a4d28.png

数据准备

acb4c6373429e1809bbd112e6e9fe267.png

第一步,打开并预览一下数据集,共766条采购记录,包含采购时间、采购单位和采购金额3个字段。
1df = pd.read_excel('cc.xls',index=False)
2df.head()

16af2abb601732cd02db78dfd2b6a1ca.png


第二步,根据采购单位字段获取经纬度,批量获取经纬度的方法很多
1def gaode(addr):
 2        para = {
 3            'key':'你的',
 4            'address':addr
 5        }
 6        url = 'https://restapi.amap.com/v3/geocode/geo?'
 7        req = requests.get(url,para)
 8        req = req.json()
 9        print('-' * 30)
10        if req['status']=='1':
11            if len(req['geocodes']) > 0:
12                m = req['geocodes'][0]['location']
13                print(m)
14            else:
15                print("None")
16                m = ""
17        else:
18            print("None")
19
20        return m
21gaode(addr="广州")

应用以上函数并预览数据

1df['lat_lon'] = df['buyer'].apply(gaode)
2df.head()

‍‍‍长这样:

04b95b7ba53233dca15c2185db3284bc.png


第三步,对经纬度字段分列并存储为csv格式。
1df["lat"] = df["lat_lon"].str.split(',',expand=True)[1] 
2df["lon"] = df["lat_lon"].str.split(',',expand=True)[0] 
3df = df.drop('lat_lon',axis=1)
4df.to_csv('cc.csv',index=False)

简单三步数据准备完毕,数据预览如下:

f5c15063602f9a80cde24e294625faf6.png


de3365f864f8ac699490ac6813e0ae58.png

数据可视化

1e686ca0c1872ccaa26727f03837f907.png

将以上数据可视化到地图中的方法也有很多,比如Ecahrts、高德地图可视化平台、地图无忧等,本次主要介绍kepler.gl。

kepler.gl是由Uber开发的进行空间数据可视化的开源工具,是Uber内部进行空间数据可视化的默认工具,通过其面向Python开放的接口包keplergl,我们可以在 jupyter notebook 中通过书写Python代码的方式传入多种格式的数据,在其嵌入notebook的交互窗口中使用其内建的多种丰富的空间数据可视化功能。可以让你不需要任何编程基础,即可实现数据地图的可视化。Kepler.gl 支持的数据格式:CSV、GeoJson 和Json。

一、Jupyter中可视化

1.本地安装

pip install keplergl

注:Windows用户建议conda安装,否则很可能报错。

2.加载地图和数据

a299fde9b30cafb78feb6773a8f5faec.png

二、在线网站中可视化(推荐)

当然,你也可以直接在kepler官网中上传数据操作,但官网速度较慢,建议用如下网站操作:

http://map.guihuayun.com/     #规划云网站搭的一个镜像

打开网站后,首先将cc.csv数据集添加进来。

df6e1cf17abd688487fe79f43b94fb17.png

添加好数据后,可以根据自己的喜好进行图标颜色、大小、地图样式等参数设置。

1.图标设置

5879d92dba0328f6e0f10367e2e13ab8.png

2.地图样式更改

bf8f885df1cdfc7560f6e10dbe492e13.png

3.添加城市轮廓

城市轮廓数据可以在DATAV.GeoAtlas网站进行获取。

b8041580d4a80bb439edf7981b447342.png

4.上传轮廓数据

71c9ba3a81c0e09453b26a13f0d4f8f1.png

5.添加时间轴

704ff5301a8786c3553173cb0970b81e.png

OK,大功告成!

1b4b40ce7833d37883461d8a180a4dee.png

总结

27213db1d15a40bfc3a20e5302047f0b.png


当然,我们还可以利用同样的数据集制作成热力图、3D地图等。关键是,如此便捷实用又美观的地图可视化工具竟然免费!感觉它比目前市面上很多付费工具还要给力。

659d1d1412537c9388c205f5f9b375fe.png


217d4830e075a44c0d1fbccc08f7a035.png



如果您对本文感兴趣, 可以点赞、在看和分享呀~918e0074814e3dbfe58e5b32bf8f1129.png

获取本文数据集进行测试后台回复:211030 

最后

a59b9e73b5c7858f7518bd4f33fc92ff.png

手把手教你用Python爬取某网小说数据,并进行可视化分析


cc5cca6d99ab21ae7e771314e8f26238.png

这5个pandas调用函数的方法,让我的数据处理更加灵活自如


8eff3b1b794f83b38de956164999d270.png

8000字:拿捏Python时间系列之datetime模块

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值