查看原文
其他

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

快学Python 2022-05-28

The following article is from 菜J学Python Author J哥

人生苦短,快学Python!


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


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



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


数据准备


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


第二步,根据采购单位字段获取经纬度


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()

‍‍‍长这样:



第三步,对经纬度字段分列并存储为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)

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


数据可视化


将以上数据可视化到地图中的方法也有很多,比如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.加载地图和数据


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

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

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

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


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

1.图标设置




2.地图样式更改


3.添加城市轮廓

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


4.上传轮廓数据


5.添加时间轴


OK,大功告成!

总结


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



福利送书

Python编程从入门到精通:本书侧重于Python程序开发过程中重点和难点的理解,结合具有典型性的程序案例,用通俗的语言由浅入深、循序渐进地帮助读者掌握Python语言。知识点都使用生活中的案例帮助理解,每个案例都有详尽的代码解释,实战部分也会将Python语言与Web和数据分析等技术相结合,进行技术应用上的扩展。

赠送规则:只需要在下方进行点赞+在看+留言,我会挑选倒数第10位留言的同学进行送书。10月31日20:00截止,本月已中奖粉丝不参与此次活动。

近期推荐文章:

Python中的for循环,没你想的那么简单~
常用正则表达式最强整理(速查手册,记得收藏)
11个好用到起飞的「Python字典」知识点!
Python制作拾色器!鼠标点击即可获取当前位置的颜色!
别再问我Python可视化如何配色了!



点击这里,阅读更多Python文章!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存