NGSIM数据集Python处理(跟驰车辆前后车数据提取)

NGSIM数据集Python处理(跟驰车辆前后车数据提取),第1张

本文使用Python代码实现对NGSIM数据集中跟驰车辆前后车数据的获取。主要使用numpy和pandas两个库。在筛选时,去掉了无前车和后车的数据,即前车或后车ID为0。本文提供代码大体框架介绍。

  • 构建初始数据列

构建空白列,用于保存数据。

data['v_Preceding'] = np.nan
data['a_Preceding']=np.nan
data['x_Preceding']=np.nan
data['y_Preceding']=np.nan
data['v_Following']=np.nan
data['a_Following']=np.nan
data['x_Following']=np.nan
data['y_Following']=np.nan
  • 获取主车、前车、后车完整数据

        该部分主要实现从原始数据中获取主车ID、速度、加速度、坐标信息,以及前后车ID数据。使用Global_Time和循环获取时间相同的片段索引,并获取该时刻对应的主车、前车和后车ID。

for item in set_Global_Time:
    id = [i for i, x in enumerate(Global_Time) if x == item]        #获取每一时刻在原始数据中对应的索引
    '''获取该时刻对应的主车、前车、后车ID'''
    new_ID = Vehicle_ID[id[0]:id[-1] + 1]
    new_P_ID = Preceding[id[0]:id[-1] + 1]
    new_F_ID=Following[id[0]:id[-1] + 1]
  • 目标数据获取

        通过遍历主车、前车、后车列表,判别在该时刻是否相等,若相等则进行数据提取,代码逻辑较复杂,以获取前车速度、后车速度为例,主要代码如下:

v_Preceding[id[new_P_ID.index(P_ID)]] = v_Vel[id[new_ID.index(P_ID)]]
v_Following[id[new_F_ID.index(F_ID)]] = v_Vel[id[new_ID.index(F_ID)]]

        最后将生成个目标列表赋值给第一步构建的空白列中。以前后车速度赋值为例,代码如下:

data['v_Preceding'] = v_Preceding
data['v_Following'] = v_Following

        以前100万条原始数据为例,最终生成的文件如下:

         后八列分别表示:前车速度、加速度、x坐标、y坐标;后车速度、加速度、x坐标、y坐标

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/918506.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存