Crossin先生 2021-07-27 15:46:34 阅读数:976
大家好,欢迎来到 Crossin的编程教室 !
今天带大家做一个爬虫+数据可视化的案例:
上海市的所有停车场分布可视化展示
01
数据采集
上海市路政局的官网上有一个停车管理页面,我们可以从上面爬取下来相应的停车场数据。
从上图我们可以看出,数据是以XHR的形式进行存储在网页中,我们在之前的文章已经详细的介绍过这类网站的爬取方法了,有兴趣的读者可以看看这篇文章。我们直接展示核心代码:
import requests headers = { 'Connection': 'keep-alive', 'Accept': 'application/json, text/javascript, */*; q=0.01', 'X-Requested-With': 'XMLHttpRequest', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36', 'Content-Type': 'application/json', 'Referer': 'http://183.194.241.192:8080/Search/Parking', 'Accept-Language': 'zh-CN,zh;q=0.9', } params = ( ('order', 'asc'), ('offset', '0'), ('limit', '20'), ) response = requests.get('http://183.194.241.192:8080/Search/SearchGarage', headers=headers, params=params, cookies=cookies, verify=False) for i in response.json()['data']: with open("上海市停车场数据.csv", 'a',newline='',encoding='utf-8') as f: wirter = csv.writer(f) wirter.writerow([i['GarageId'],i['GarageName'],i['GarageAddress']])
02
数据清洗
01
导入停车场数据
用pandas读取合并后的影评数据并预览。
import pandas as pd df = pd.read_excel('上海停车场数据.xlsx',names=['编号','停车场名称','地址']) print(df.head())
02
删除重复数据
在爬取过程中可能会有一些重复的数据,我们需要将其剔除。
df.drop_duplicates()
03
查看数据类型
查看字段类型和缺失值情况,符合可视化需要,无需另做处理。
df.info()
03
经纬度转换
因为我们爬取下来的只有停车场的地址,我们在进行可视化的时候,需要的是该地址的经纬度坐标,所以,我们要对其进行转化。
现在很多人都喜欢用百度地图、高德地图的api接口来进行转化,但是这些接口,每天只能转化一定数量的地址,我们这里有3601个,用那个地图接口都不可以一次性转化。
那么我们就要换种方法来对其进行转化了。Python有一个可以进行地理经纬度转化的库——geocoder,我们可以用它来进行对地理位置的经纬度进行转化。
首先是安装这个库。
pip install geocoder
安装好后,我们进行转化,代码如下:
for i in range(2,3603): B = sheet[f'B{i}'] C = sheet[f'C{i}'] jingwei_1 = geocoder.arcgis('上海市'+B.value) jingwei_2 = geocoder.arcgis('上海市'+C.value)
让我们看看转化后的效果:
df = pd.read_excel('上海停车场数据.xlsx',names=['停车场名称','地址','经度','维度']) print(df.head())
查看一下数据类型:
df.info()
04
可视化展示
我们先用tableau对这些停车场位置进行可视化展示。
上海市的停车场主要集中在市中心的几个区,且区里也是越靠近中心,停车场位置越多。相反,越远离市中心,停车场的数量越少。
我们再来看看用folium画的热力图。
与上面得到的结论是一致的。
05
小结
1. 本文介绍了如何爬取上海市停车场数据、转化其地理位置经纬度坐标和进行可视化展示,有兴趣的读者可以尝试一下。
2. 本文仅供学习参考,大家勿做其他用途。
3. 获取本文相关代码,请点击下方公众号名片,回复关键字 停车场
如果文章对你有帮助,欢迎转发/点赞/收藏~
作者:志斌
来源:志斌的python笔记
本文分享自微信公众号 - Crossin的编程教室(crossincode)
原文出处及转载信息见文内详细说明,如有侵权,请联系 [email protected] 删除。
原始发表时间: 2021-07-19
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
版权声明:本文为[Crossin先生]所创,转载请带上原文链接,感谢。 https://cloud.tencent.com/developer/article/1853076