目录
一.按照车辆ID筛选
由于先前我们将NGSIM数据集分割成11组子文件,并按照路段类型的不同分成了:“us-101”, “i-80”, “lankershim”, "peachtree"这四种路段,以路段类型命名的文件夹下有多个csv文件(不一定都是11个csv文件)。接下来根据车辆类型的不同,对每个路段下的csv文件分别提取出相同车辆ID的并放置在一个csv文件中。下述过程的代码在“NGSIM数据处理程序(跟驰车辆)”的“Veh_ID_Select.py”
1.获取主文件夹下的子文件夹:
本示例中的主文件夹是位于G盘的“NGSIM_data_processing”(在NGSIM数据集处理程序中有提到)。获取目标路径下所有的文件夹和文件(由于主文件夹下只有文件夹没有csv文件,故无需做判断筛选),将获取到的子文件夹存放在列表中,代码如下:
object_list = os.listdir(path)
2.读取每一个子文件夹下的csv文件:
上面提到,将主文件夹“NGSIM_data_processing”中所有的子文件夹均获取,并存放在列表中。这一步就是要将每一个以路段类型命名的子文件夹中的csv文件读取,并存放在字典中,代码如下:
for sub_object in self.Exist_List(path):
sub_obejct_path = f"{path}\\{sub_object}"
sub_object_list = os.listdir(sub_obejct_path)
object_dict[sub_object] = sub_object_list
3.创建文件夹用以存放筛选后的csv文件:
代码如下所示:
def Create_Folder(self,path):
isExists = os.path.exists(path)
try:
if not isExists:
os.makedirs(path)
print("创建文件夹成功")
else:
print("文件夹已存在")
except FileExistsError:
print("目录已存在")
4.分别遍历子文件夹中的csv文件,并将相同车辆ID的存放在一起
主运行程序如下:
df = pd.read_csv(csv_path_exist) # 读取目标路径下的csv文件
veh_id_set = set() # 空集合:筛选数据
for veh_id in df["Vehicle_ID"]:
veh_id_set.add(veh_id)
veh_id_list = list(veh_id_set) # 数据类型转换:集合转列表
for veh_id in veh_id_list:
csv_path_new = f"{sub_folder_path_new}\\{veh_id}.csv"
veh_select_df = df[df["Vehicle_ID"] == veh_id]
veh_select_df.to_csv(csv_path_new,index=False)
二.总结:
根据上述操作,我们按照车辆ID的不同又对数据做了筛选,筛选结果如下所示(以路段us-101为例):
- 文件的文件名就是车辆ID
详细的代码,请查看《NGSIM数据集处理》。NGSIM数据集下载请查看NGSIM数据集大家有需要的可以下载浏览查看。后续会更新筛选教程,敬请关注!