爬取上海3601个停车场位置,并进行可视化展示

Crossin先生 2021-07-27 15:46:34 阅读数:976

本文一共[544]字,预计阅读时长:1分钟~
上海 位置 停车 停车场 车场

大家好,欢迎来到 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)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间: 2021-07-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

版权声明:本文为[Crossin先生]所创,转载请带上原文链接,感谢。 https://cloud.tencent.com/developer/article/1853076