一、Request爬取数据

1.获取AK
进入【百度地图开放平台】→注册认证成为开发者→【应用管理】→【我的应用】→【创建应用】→获得AK
2.爬虫代码

import requests
import json
import time
import datetime
import csv
import pandas as pdak = '你的ak'    #这里ak就不写自己的了
k = 0
def get_one_page(location):url_1 = 'http://api.map.baidu.com/traffic/v1/bound?parameters'     #实时路况爬取链接url_2 = 'http://api.map.baidu.com/weather/v1/?'                    #实时天气爬取链接params_1 = {                                                       #实时路况输入参数'ak': ak,                      #ZDlg1RInQHBCKuq1Uo6ny3InaCQcnljs'bounds': location,'coord_type_input': 'bd09ll','coord_type_output': 'bd09ll'}params_2 = {                                                       #实时天气输入参数'ak': 'ZDlg1RInQHBCKuq1Uo6ny3InaCQcnljs','district_id': 610113,  # 雁塔区行政区划编码'data_type': 'all',}try:response_1 = requests.get(url_1,params=params_1,timeout=20)                   #实时路况response_2 = requests.get(url_2,params=params_2,timeout=20)                  #实时天气if response_1.json()['status'] == 0 and response_2.json()['status'] == 0:     #防止请求未成功字段不完整return response_1.json(),response_2.json()else:return None,Noneexcept requests.ConnectionError as e:print('Error', e.args)
##写入CSV文件
#写入表头
'''with open('主干路路况爬取.csv', 'a', newline='') as csvfile:fieldnames = ['road_name','road_desc','road_length','localtime', 'week','status', 'status_desc', 'text', 'temp', 'feels_like', 'rh', 'wind_class', 'wind_dir']writer = csv.DictWriter(csvfile, fieldnames=fieldnames)writer.writeheader()'''
#写入数据
def write_to_file(content):with open('主干路路况爬取.csv','a',newline='') as csvfile:fieldnames = ['road_name','road_desc','road_length','localtime','week','status','status_desc','text','temp','feels_like','rh','wind_class','wind_dir']writer = csv.DictWriter(csvfile,fieldnames = fieldnames)writer.writerow(content)
#页面信息解析
def parse_page(html_1,html_2,road_name,road_desc,road_length):#实时路况信息解析提取item_1 = html_1.get('evaluation')luduan = {}luduan['road_name'] = road_nameluduan['road_desc'] = road_descluduan['road_length'] = road_lengthluduan['localtime'] = time.strftime('%Y-%m-%d,%H:%M:%S',time.localtime(time.time()))luduan['week'] = time.strftime("%w")luduan['status'] = item_1.get('status')luduan['status_desc'] = item_1.get('status_desc')#实时天气信息解析提取item_2 = html_2.get('result').get('now')luduan['text'] = item_2.get('text')luduan['temp'] = item_2.get('temp')luduan['feels_like'] = item_2.get('feels_like')luduan['rh'] = item_2.get('rh')luduan['wind_class'] = item_2.get('wind_class')luduan['wind_dir'] = item_2.get('wind_dir')write_to_file(luduan)yield luduandata = pd.read_excel('主干路原始数据.xlsx')      #提供经纬度数据
while True:for i in range(0,len(data)):r_1,r_2 = get_one_page(data.iloc[i]['经纬度范围'])      #矩形区域实时路况功能y = parse_page(r_1,r_2,data.iloc[i]['道路名称'],data.iloc[i]['路段描述'],data.iloc[i]['路段长度'])print(list(y))print("************************************************************")time.sleep(180)                                             #3分钟爬取间隔

3.数据展示

二、Python数据预处理

将爬取的数据格式转化为最后所需要的数据格式,代码过长,只展示部分代码
import pandas as pd
import numpy as np
import csv
speed_threshold = 20
data = pd.read_csv('主干路路况爬取 - 副本.csv', engine='python')
name = ['长安中路', '小寨西路', '小寨东路']
data = data[data['road_name'].isin(name)]
data = data.sort_values(by=['road_name', 'road_desc', 'localtime'])
data=data.reset_index(drop=True)
def write_to_file(content):with open('主干路拥堵序列.csv','a',newline='') as csvfile:fieldnames = ['road_name','localtime','road_desc','road_length','week','status','status_desc','text','temp','feels_like','rh','wind_class','wind_dir']#writer = csv.DictWriter(csvfile,fieldnames = fieldnames)#writer.writerow(content)content.to_csv('主干路拥堵序列.csv',mode='a',header=fieldnames,encoding="utf_8_sig")
def convert_result(content):with open('主干路拥堵事件.csv','a',newline='') as csvfile:fieldnames = ['road_name','road_desc','start_time','end_time','length_time','road_length','week','start_status','start_status_desc','start_text','start_temp','start_feels_like','start_rh','start_wind_class','start_wind_dir']#writer = csv.DictWriter(csvfile,fieldnames = fieldnames)#writer.writerow(content)writer = csv.DictWriter(csvfile, fieldnames=fieldnames)writer.writerow(content)
def neixunhuan(start,data):for i in range(start + 1, len(data)):#elif data.loc[i,'name'] == data.loc[i - 1,'name'] and data.loc[i,'dir'] == data.loc[i - 1,'dir'] and data.loc[i,'speed'] > speed_threshold and (pd.to_datetime(data.loc[i,'localtime'],format='%Y-%m-%d,%H:%M:%S')-pd.to_datetime(data.loc[i-1,'localtime'],format='%Y-%m-%d,%H:%M:%S')) < pd.Timedelta(weeks=0,days=0,hours=0,minutes=10,seconds=0):if data.loc[i, 'road_name'] == data.loc[i - 1, 'road_name'] and data.loc[i, 'road_desc'] == data.loc[i - 1, 'road_desc']: #同一条路if (pd.to_datetime(data.loc[i, 'localtime'], format='%Y-%m-%d,%H:%M:%S') - pd.to_datetime(data.loc[i - 1, 'localtime'], format='%Y-%m-%d,%H:%M:%S')) <= pd.Timedelta(weeks=0, days=0, hours=0,minutes=5, seconds=0):if data.loc[i, 'status_desc'] == '畅通' or data.loc[i, 'status_desc'] == '较为畅通' or data.loc[i, 'status_desc'] == '缓行':#拥堵事件的结束end = i#print(data[start:end])shijian = {}shijian['road_name'] = data.iloc[start]['road_name']shijian['road_desc'] = data.iloc[start]['road_desc']shijian['start_time'] = data.iloc[start]['localtime']shijian['end_time'] = data.iloc[end-1]['localtime']#shijian_ = pd.to_datetime(data.iloc[end-1]['localtime'],format='%Y-%m-%d,%H:%M:%S')-pd.to_datetime(data.iloc[start]['localtime'],format='%Y-%m-%d,%H:%M:%S')shijian['length_time'] = float((pd.to_datetime(data.iloc[end-1]['localtime'],format='%Y-%m-%d,%H:%M:%S')-pd.to_datetime(data.iloc[start]['localtime'],format='%Y-%m-%d,%H:%M:%S')).total_seconds())/60shijian['road_length'] = data.iloc[start]['road_length']shijian['week'] = data.iloc[start]['week']shijian['start_status'] = data.iloc[start]['status']shijian['start_status_desc'] = data.iloc[start]['status_desc']shijian['start_text'] = data.iloc[start]['text']shijian['start_temp'] = data.iloc[start]['temp']shijian['start_feels_like'] = data.iloc[start]['feels_like']shijian['start_rh'] = data.iloc[start]['rh']shijian['start_wind_class'] = data.iloc[start]['wind_class']shijian['start_wind_dir'] = data.iloc[start]['wind_dir']print(data[start:end-1])#写入拥堵事件write_to_file(data[start:end-1])convert_result(shijian)return endbreakelse:end = i# print(data[start:end])   #这种事件不被记为拥堵事件,因为没有由拥堵转向不拥堵return endbreakelif data.iloc[i]['road_name'] != data.iloc[start]['road_name'] or data.iloc[i]['road_desc'] != data.iloc[start]['road_desc']:end = i# print(data[start:end])   #这种事件不被记为拥堵事件,因为没有由拥堵转向不拥堵return endbreak
最终得到需要的数据格式,表中每一行表示一次道路交通拥堵。

三、Spss生存分析

所得到最后的生存分析曲线如下

百度地图实时路况数据-拥堵的生存分析相关推荐

  1. 高德地图实时路况数据-拥堵持续时长预测

    一.Request爬取数据 1.获取AK 进入[高德地图开放平台]→注册认证成为开发者→[应用管理]→[我的应用]→[创建新应用]→获得AK 2.所需爬取数据 研究所需数据主要由两部分构成, ①高德地 ...

  2. 百度地图实时路况数据爬取

    最近为了参加"华为杯"数学建模的国赛,学校组织了一次校内选拔,题目要求收集不同时段的交通方面数据,建立评价体系,并对整体交通划线效果给出相应评价,看到题目我就方了,这个交通数据怎么 ...

  3. 百度地图-实时路况调用实现

    效果图 js代码 $(function(){// 百度地图API功能var map = new BMap.Map("allmap");var point = new BMap.Po ...

  4. 百度地图迁徙大数据_百度地图大数据看十一:各地商圈出现“红色拥堵”,游乐场迎来“高光时刻”...

    作为疫情防控常态化后的第一个黄金周,今年的国庆中秋长假令广大民众出游情绪高涨,旅游.探亲出行等客流持续走高,交通.旅游.餐饮等行业迎来全线复苏.百度地图迁徙大数据平台.节假日出行仪表盘等平台紧密跟踪假 ...

  5. 百度地图迁徙大数据_百度地图大数据:五一高速拥堵不似预期,广深成热门迁出入地...

    五一假期在即,你是否做好了"出行功课"?高速拥堵水平降低.公众出门不出城.公园成踏青赏景热门目的地--在全国疫情防控仍未松懈的时刻,2020年的五一或许注定与往年不同. 近日,百度 ...

  6. 大数据应用--实时路况数据

    现在手机上装个导航软件,如高德地图,百度地图等等都有实时路况显示,导航和道路规划可以根据实时路况来实施,从而动态躲避拥堵,为出行节省时间,为了显示实时路况就必须有路况数据,今天来说下实时数据的获取方法 ...

  7. 高德地图实时路况信息上线宁波交通诱导屏

    交通诱导屏作为城市智能化交通管理系统的重要组成部分,在城市治堵工作中正扮演着一个非常重要的角色,它能够通过大数据为交通出行者提供交通诱导服务,帮助车主选择行进线路,合理分流车辆,减轻拥堵,提高道路通行 ...

  8. Python爬取百度地图智慧交通-城市拥堵指数

    第一次写文章 分享一下我的大数据处理课程的一次作业,爬取百度地图智慧交通的城市拥堵指数内容,链接(以长春市为例):http://jiaotong.baidu.com/top/report/?cityc ...

  9. retrofit 解析百度地图api 返回数据_新版百度地图建筑数据含高度解析

    注:本文中所述内容仅作为研究用途,不包括任何技术细节,不提供数据爬取.非法攻击的咨询和支持.另:百度建筑轮廓数据中存在明显签名式错误,下载使用容易被追求侵权. 矢量瓦片:爬取百度地图必须要了解矢量瓦片 ...

最新文章

  1. HDU3507 Print Article —— 斜率优化DP
  2. [NOTE] sqli-labs Adv Injections
  3. 《MySQL——数据表设计三大范式》
  4. 要“牵手”了?抖音和腾讯商谈对等开放 腾讯火速回应
  5. 【redis】redis基础命令,分布式锁,缓存问题学习大集合
  6. Linux 命令(75)—— uptime 命令
  7. 戴尔台式机安装win 7系统
  8. 培华学院2012届计算机专业多少人,西安培华学院学子在中国大学生计算机设计大赛中取得多个国奖...
  9. 【前端模板之路】二、人肉非智举,让代码帮我们写代码才是王道
  10. Unity3D 资源加载 Resources.Load
  11. 霍尼韦尔从纽交所转板至纳斯达克上市;全球电竞赛事WSL发布首项赛事计划 | 美通企业日报...
  12. linux系统编程--标准IO--fputs、fgets、fseek函数
  13. VS调试C++程序,提示无法启动程序,“xx.exe”。系统找不到指定文件的解决办法
  14. NVENC SDK 设置h264编码的slice划分问题
  15. 广西大学oj1042(小西的数据结构作业)
  16. linux 6.5 安装vnc,Linux_CentOS6.5安装vncserver实现图形化访问
  17. 计算机一级调薪后的工资,义务教育教师基本工资提高10%取消!2019年调资后你的待遇是涨还是降?...
  18. 用自己的电脑做网站服务器,实现外网访问
  19. mac qq邮箱无法验证
  20. 百炼智能店店通数据:2020年下半年餐饮行业闭店率超30%

热门文章

  1. GeoServer 用于共享地理空间数据的开源服务器
  2. 振弦采集模块传感器接口
  3. 如何安装 ChatGPT手机客户端? 支持 iOS 和 安卓手机
  4. graphpad做图如何加星号_ezplot绘图后如何在曲线上加标记,比如星号之类的
  5. VisualStudio 2008c#编程规范
  6. Tensorflow GPU版本的安装
  7. ERP系统开发中使用FineUI那些事
  8. excel/csv文件单页最大能存多少行呢?
  9. Redis之实现优惠券高并发秒杀下单
  10. 初中化学骨干教师培训需求调查分析--以贵州师范学院国培计划为例