前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬取上海3601个停车场位置,并进行可视化展示

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

作者头像
Crossin先生
发布2021-07-27 15:27:52
9830
发布2021-07-27 15:27:52
举报
文章被收录于专栏:Crossin的编程教室

大家好,欢迎来到 Crossin的编程教室 !

今天带大家做一个爬虫+数据可视化的案例:

上海市的所有停车场分布可视化展示

01

数据采集

上海市路政局的官网上有一个停车管理页面,我们可以从上面爬取下来相应的停车场数据。

从上图我们可以看出,数据是以XHR的形式进行存储在网页中,我们在之前的文章已经详细的介绍过这类网站的爬取方法了,有兴趣的读者可以看看这篇文章。我们直接展示核心代码:

代码语言:javascript
复制
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读取合并后的影评数据并预览。

代码语言:javascript
复制
import pandas as pd
df = pd.read_excel('上海停车场数据.xlsx',names=['编号','停车场名称','地址'])
print(df.head())

02

删除重复数据

在爬取过程中可能会有一些重复的数据,我们需要将其剔除。

代码语言:javascript
复制
df.drop_duplicates()

03

查看数据类型

查看字段类型和缺失值情况,符合可视化需要,无需另做处理。

代码语言:javascript
复制
df.info()

03

经纬度转换

因为我们爬取下来的只有停车场的地址,我们在进行可视化的时候,需要的是该地址的经纬度坐标,所以,我们要对其进行转化。

现在很多人都喜欢用百度地图、高德地图的api接口来进行转化,但是这些接口,每天只能转化一定数量的地址,我们这里有3601个,用那个地图接口都不可以一次性转化。

那么我们就要换种方法来对其进行转化了。Python有一个可以进行地理经纬度转化的库——geocoder,我们可以用它来进行对地理位置的经纬度进行转化。

首先是安装这个库。

代码语言:javascript
复制
pip install geocoder

安装好后,我们进行转化,代码如下:

代码语言:javascript
复制
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)

让我们看看转化后的效果:

代码语言:javascript
复制
df = pd.read_excel('上海停车场数据.xlsx',names=['停车场名称','地址','经度','维度'])
print(df.head())

查看一下数据类型:

代码语言:javascript
复制
df.info()

04

可视化展示

我们先用tableau对这些停车场位置进行可视化展示。

上海市的停车场主要集中在市中心的几个区,且区里也是越靠近中心,停车场位置越多。相反,越远离市中心,停车场的数量越少。

我们再来看看用folium画的热力图。

与上面得到的结论是一致的。

05

小结

1. 本文介绍了如何爬取上海市停车场数据、转化其地理位置经纬度坐标和进行可视化展示,有兴趣的读者可以尝试一下。

2. 本文仅供学习参考,大家勿做其他用途。

3. 获取本文相关代码,请点击下方公众号名片,回复关键字 停车场

如果文章对你有帮助,欢迎转发/点赞/收藏~

作者:志斌

来源:志斌的python笔记


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Crossin的编程教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档