项目:驾驶风格聚类
数据太多,首先将需要的数据筛选出来
路线:读取原始数据——>删除重复行——>提取需要数据——>去除帧数小于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 驾驶参数选取相关推荐

  1. python大数据挖掘系列之淘宝商城数据预处理实战

    在上一章节https://blog.csdn.net/qq_60168783/article/details/121824746 我们聊了python大数据分析的基本模块,下面就说说2个项目吧,第一个 ...

  2. 【数据预处理】Pandas缺失的数据处理

    目录 缺少数据基础 何时/为何 数据丢失? 被视为"缺失"的值 日期时间 插入缺失数据 缺少数据的计算 Sum/Prod of Empties/Nans GroupBy中的NA值 ...

  3. 【数据预处理】pandas读取sql数据(支持百万条读取)

    主要使用两个pandas方法: 1.read_sql 函数: pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=N ...

  4. python筛选csv数据_使用pandas库对csv文件进行筛选保存

    这个操作现在看来真没啥难的,但是我找相关的资料真的找了好久. 多数大佬都是直接pandas官网甩我脸上,然后举一个入门级的例子. 首先导入pandas库 import pandas as pd 然后使 ...

  5. pandas 第一行_Pandas数据预处理相关经验

    在这里记录一些平常用的pandas操作以供参考. 学习相关操作的最好方法还是找官方的文档最好,否则就会产生百度1小时,查文档3分钟的尴尬处境,之前为了找python里类似 in 的操作搜了半天资料也没 ...

  6. 数据预处理之特征选择(Feature Selections Methods)

    在机器学习领域,数据预处理对于我们之后的数据训练起着非常关键的作用,Feature Selections 作为数据预处理中非常重要的一个步骤,可以说他起着决定性的作用,那么今天我们就来探究一下几种数据 ...

  7. 跟我一起学Python——机械学习实现之数据预处理(混淆矩阵,印第安人糖尿病案例)(Second day)

    首先说明一下,我使用的是上一篇所说的jupyter Notebook ,所以有一些是标记,并没有带"#"注释,这里边也用到了上次所说的两个库,sklearn以及panda数据导入的 ...

  8. sklearn数据预处理-scale

    对数据按列属性进行scale处理后,每列的数据均值变成0,标准差变为1.可通过下面的例子加深理解: from sklearn import preprocessing import numpy as ...

  9. 数据预处理--离散变量处理

    离散变量标签处理 1.类别变量映射为原始变量 原始数据 import pandas as pd df = pd.DataFrame([['green', 'M', 10.1, 'class1'], [ ...

最新文章

  1. 几种常见的模式识别算法
  2. java自动化初始变量_Java自动化测试-01.环境准备(JDK/环境变量/Intellij IDEA安装)
  3. mysql导入sql文件
  4. python 下标越界_Python中异常处理
  5. μC/OS-III---I笔记3---时间管理
  6. day10 强制类型转换(更新)
  7. MAX422与422转USB及485以及232接线方法
  8. 2019华为机试题 消息扩散
  9. 基于STC89C52的测速和超速报警系统设计
  10. for循环及判断语句的20个经典习题
  11. Oracle StorageTek磁带库产品线或将终结
  12. Mac系统内存越来越大?Mac内存清理技巧
  13. WaitForSingleObject、WaitForMultipleObjects假死,永远等待的问题
  14. Hyperledger Fabric Service Discovery CLI(服务发现命令行工具)学习笔记
  15. html空白键,空格键符号是什么?HTML中空格键符号有哪些?
  16. Elasticsearch Index Aliases详解
  17. 尚硅谷2021新版spring5课堂笔记
  18. Intriguing properties of neural networks——L-BFGS attack
  19. 出水芙蓉,风华绝代----记民国才女林徽因
  20. [Git] 配置Github Gitee reference加速

热门文章

  1. javascript getDay()方法 语法
  2. hdu 6609
  3. Excel-计算小数位数有几位、分离整数与小数
  4. 乐高机器人亮剑_全球机器人从化“亮剑”
  5. PHY--PDSCH
  6. 时光荏苒,岁月静好-----2013年终总结
  7. jQuery中的get和post请求
  8. Html中几种特别分割线特效
  9. 基于MATLAB的特殊函数积分
  10. 游戏服务器会遭到什么攻击,被攻击了怎么防御