【.csv数据预处理实战】pandas 驾驶参数选取
项目:驾驶风格聚类
数据太多,首先将需要的数据筛选出来
路线:读取原始数据——>删除重复行——>提取需要数据——>去除帧数小于120的数据——>另存为新的.csv文件
方便浏览先上原始数据
原始数据
无人机采集的6车道车辆行驶信息,1秒30帧的速度。下图是部分数据,只能先将需要的数据筛选出来
1.读取.csv数据文件
import pandas as pd
df = pd.read_csv('D:/driver/raw_data/Freeway.csv')
2.去除完全重复数据
#去除完全重复的行数据。fist:保留第一次出现的重复行,删除后面的重复行
df = df.drop_duplicates(keep='first')
3.pandas获取.csv文件指定多列数据
#需要处理的csv文件的第一行(各列名称),获取列名为下的数据
save_columns = df[['frameNum', 'carId', 'speed', 'headXft', 'headYft','tailXft','tailYft','laneId']]
4.删除帧数<120的数据
4.1 获取帧数
思路:先按carId分组,分比计算每个carId的frameNum,用frameNum最大值-frameNum最小值=帧数
check0= save_columns.groupby(['carId'])['frameNum'].min().reset_index()#首先按carId分组,获得frameNum最小值,重置索引
check1= save_columns.groupby(['carId'])['frameNum'].max().reset_index()#首先按carId分组,获得frameNum最大值,重置索引
check1['zhenshu']=check1['frameNum']-check0['frameNum']#计算每一carId对应的帧数
print(check1)
输出结果
4.2 获取帧数<120(即<4s)的索引 ind_zhenshu
check1 = check1.set_index('carId')#使用carId替代自动生成的最前列数字作为索引
ind_zhenshu = check1[(check1['zhenshu']<120)].index #获取帧数<120的索引值
print(ind_zhenshu)
输出结果
4.3 save_columns以carId替代自动生成的最前列数字作为索引
save_columns = save_columns.set_index('carId')#使用carId替代自动生成的最前列数字作为索引
4.4 pandas删除帧数<120
删除并更新
save_columns = save_columns.drop(index=ind_zhenshu)#删除帧数小于120的数据
4.5 还原至原顺序
重置索引
还原列的顺序
#还原至原顺序
save_columns = save_columns.reset_index()#重置索引
#交换列顺序,把frameNum变为第一列
cols = list(save_columns)
cols.insert(1,cols.pop(cols.index('carId')))
save_columns = save_columns.loc[:, cols]
5 另存为新的.csv文件,并去除自带索引
#将指定列内容另存到’follow_metadata.csv‘文件中,并且去除行索引
save_columns.to_csv('D:/driver/raw_data/follow_metadata.csv',index=False)
部分如下
全部代码
'''
1,将Freeway.csv数据中列
frameNum:帧数
carId
Speed
headXft
headYft
tailXft
tailYft
laneId
数据取出,
2,去除帧数<120即<4s的数据(一秒30帧)
3,保存至follow_metadata.csv参数说明
df:Freeway数据
'''
import pandas as pddf = pd.read_csv('D:/driver/raw_data/Freeway.csv')#去除完全重复的行数据。fist:保留第一次出现的重复行,删除后面的重复行
df = df.drop_duplicates(keep='first')
# print(df.info(memory_usage='deep'))
#需要处理的csv文件的第一行(各列名称),获取列名为下的数据
save_columns = df[['frameNum', 'carId', 'speed', 'headXft', 'headYft','tailXft','tailYft','laneId']]#筛选帧数小于120的数据
check0= save_columns.groupby(['carId'])['frameNum'].min().reset_index()#首先按carId分组,获得frameNum最小值,重置索引
check1= save_columns.groupby(['carId'])['frameNum'].max().reset_index()#首先按carId分组,获得frameNum最大值,重置索引
check1['zhenshu']=check1['frameNum']-check0['frameNum']#计算每一carId对应的帧数
print(check1)
# >>
# carId frameNum zhenshu
# 0 2181 33 33
# 1 2198 90 90
# 2 2202 69 69
# 3 2214 130 130
# 4 2224 217 217
# .. ... ... ...
# 940 6724 8998 36
# 941 6727 8998 29
# 942 6728 8998 16
# 943 6734 8998 11
# 944 6735 8998 10
#
# [945 rows x 3 columns]
check1 = check1.set_index('carId')#使用carId替代自动生成的最前列数字作为索引
ind_zhenshu = check1[(check1['zhenshu']<120)].index #获取帧数<120的索引值
print('ind_zhenshu索引',ind_zhenshu)
# print(check1.iloc[ind_zhenshu]) #查看帧数<120的数据#============================================save_columns = save_columns.set_index('carId')#使用carId替代自动生成的最前列数字作为索引
# >>
# frameNum speed headXft ... tailXft tailYft laneId
# carId ...
# 2181 0 28.443079 149.971040 ... 166.919822 312.268467 1
# 2497 0 15.779573 1060.582870 ... 1077.018053 326.135653 1
# 2507 0 17.236183 1018.981314 ... 1033.875699 312.268467 0
# 2510 0 12.524289 1190.523532 ... 1207.472314 339.489238 2
# 2522 0 11.238116 1107.834020 ... 1125.296401 326.649252 1
# ... ... ... ... ... ... ... ...
# 6545 8998 14.641234 2184.338473 ... 2199.232857 321.513257 0
# 6631 8998 18.094878 2240.834413 ... 2256.755996 345.652432 2
# 5966 8998 22.277665 249.095735 ... 264.503718 327.162851 2
# 6630 8998 14.161181 2290.653560 ... 2310.683938 322.026857 0
# 6735 8998 47.072127 155.107035 ... 128.399863 364.142012 4
#
# [1294737 rows x 7 columns]
save_columns = save_columns.drop(index=ind_zhenshu)#删除帧数小于120的数据#还原至原顺序
save_columns = save_columns.reset_index()#重置索引
#交换列顺序,把frameNum变为第一列
cols = list(save_columns)
cols.insert(1,cols.pop(cols.index('carId')))
save_columns = save_columns.loc[:, cols]print(save_columns)# 将指定列内容另存到’follow_metadata.csv‘文件中,并且去除行索引save_columns.to_csv('D:/driver/raw_data/follow_metadata.csv',index=False)
【.csv数据预处理实战】pandas 驾驶参数选取相关推荐
- python大数据挖掘系列之淘宝商城数据预处理实战
在上一章节https://blog.csdn.net/qq_60168783/article/details/121824746 我们聊了python大数据分析的基本模块,下面就说说2个项目吧,第一个 ...
- 【数据预处理】Pandas缺失的数据处理
目录 缺少数据基础 何时/为何 数据丢失? 被视为"缺失"的值 日期时间 插入缺失数据 缺少数据的计算 Sum/Prod of Empties/Nans GroupBy中的NA值 ...
- 【数据预处理】pandas读取sql数据(支持百万条读取)
主要使用两个pandas方法: 1.read_sql 函数: pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=N ...
- python筛选csv数据_使用pandas库对csv文件进行筛选保存
这个操作现在看来真没啥难的,但是我找相关的资料真的找了好久. 多数大佬都是直接pandas官网甩我脸上,然后举一个入门级的例子. 首先导入pandas库 import pandas as pd 然后使 ...
- pandas 第一行_Pandas数据预处理相关经验
在这里记录一些平常用的pandas操作以供参考. 学习相关操作的最好方法还是找官方的文档最好,否则就会产生百度1小时,查文档3分钟的尴尬处境,之前为了找python里类似 in 的操作搜了半天资料也没 ...
- 数据预处理之特征选择(Feature Selections Methods)
在机器学习领域,数据预处理对于我们之后的数据训练起着非常关键的作用,Feature Selections 作为数据预处理中非常重要的一个步骤,可以说他起着决定性的作用,那么今天我们就来探究一下几种数据 ...
- 跟我一起学Python——机械学习实现之数据预处理(混淆矩阵,印第安人糖尿病案例)(Second day)
首先说明一下,我使用的是上一篇所说的jupyter Notebook ,所以有一些是标记,并没有带"#"注释,这里边也用到了上次所说的两个库,sklearn以及panda数据导入的 ...
- sklearn数据预处理-scale
对数据按列属性进行scale处理后,每列的数据均值变成0,标准差变为1.可通过下面的例子加深理解: from sklearn import preprocessing import numpy as ...
- 数据预处理--离散变量处理
离散变量标签处理 1.类别变量映射为原始变量 原始数据 import pandas as pd df = pd.DataFrame([['green', 'M', 10.1, 'class1'], [ ...
最新文章
- 几种常见的模式识别算法
- java自动化初始变量_Java自动化测试-01.环境准备(JDK/环境变量/Intellij IDEA安装)
- mysql导入sql文件
- python 下标越界_Python中异常处理
- μC/OS-III---I笔记3---时间管理
- day10 强制类型转换(更新)
- MAX422与422转USB及485以及232接线方法
- 2019华为机试题 消息扩散
- 基于STC89C52的测速和超速报警系统设计
- for循环及判断语句的20个经典习题
- Oracle StorageTek磁带库产品线或将终结
- Mac系统内存越来越大?Mac内存清理技巧
- WaitForSingleObject、WaitForMultipleObjects假死,永远等待的问题
- Hyperledger Fabric Service Discovery CLI(服务发现命令行工具)学习笔记
- html空白键,空格键符号是什么?HTML中空格键符号有哪些?
- Elasticsearch Index Aliases详解
- 尚硅谷2021新版spring5课堂笔记
- Intriguing properties of neural networks——L-BFGS attack
- 出水芙蓉,风华绝代----记民国才女林徽因
- [Git] 配置Github Gitee reference加速