NGSIM数据集Python处理(超车变道数据筛选)

        NGSIM数据集因其量大质优,在车辆跟驰、变道等领域的研究中被广泛使用,作为一种特殊的变道行为,超车变道存在其显著的特点,但对超车变道的研究较少,一方面,超车变道数据的获取存在一定难度,另一方面,超车变道的决策较为复杂,本文通过Python代码的编写,实现对NGSIM数据集中产生超车变道行为的车辆数据进行提取,以下概述代码主体部分及部分说明。如需完整代码,可点击本人上传的代码链接进行下载。NGSIM数据集超车变道数据筛选-数据挖掘文档类资源-CSDN文库

  • 获取每一车辆切割索引数据

通过原始数据中Vehicle_ID项分ID提取车辆数据,考虑到NGSIM数据集中存在车辆ID复用的情况,针对该情况,使用数据中Global_Time(或Frame_ID)是否连续判别ID是都被复用,若被复用,将间断点索加入索引列表lst_c。以下为该部分代码示例,代码中以Global_Time作为ID是否复用的判别依据。需要特别说明的是,因为科学记数法的问题,网上部分原始数据中Global_Time的值每一行都相同,若出现这种情况,将代码中的Global_Time更改为Frame_ID,并将是否连续的判别条件进行更改即可。

for ID in set(data.Vehicle_ID):
    new_data = data[data.Vehicle_ID == ID].sort_values(by='Global_Time')
    '''处理同一ID对应不同车辆问题'''
    lst_Global_Time = list(new_data.loc[:, 'Global_Time'])
    for i_0 in range(len(new_data) - 1):
        if lst_Global_Time[i_0 + 1] - lst_Global_Time[i_0] != 100:
            lst_c.append(i_0 + 1)
  • 获取每一车辆数据

        结合上一步的索引列表lst_c,遍历该列表,实现每一车辆数据的获取。使用iloc命令获取目标数据,使用.copy()命令复制原始数据,而后进行操作,避免警告信息。

 for j in range(len(lst_c)-1):
        S_S_data=new_data.iloc[lst_c[j]:lst_c[j+1]].copy()
  • 判断车辆是否超车变道

        将车辆数据按Global_Time(或Frame_ID)增序排列,获取车辆车道差值列表,超车变道时,车辆变道会同时存在两个方向的变道数据,以此作为判别依据。提取最终数据。

        if -1 in diff_lst_Lane_id and 1 in diff_lst_Lane_id:
            for i in enumerate(diff_lst_Lane_id):
                if i[1] == -1 or i[1] == 1:
                    lst_index.append(i)

 若有疑问,需完整代码或有交通数据处理需求欢迎VX探讨:A2528945820

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惜君如常

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值