DataPreProcess | index d:\platform\platform\backend\datapreprocess.py

`数据预处理类`

Modules

``

PathSetting Tools | numpy pandas | pdb sys |

Classes

``

builtins.object
  DataPreProcess

class DataPreProcess(builtins.object)

``

Methods defined here:

__init__(self)
  `Initialize self. See help(type(self)) for accurate signature.`

cal_stand_time(self, dfin)
  `# 计算静置时间
  # 将每次行车或充电的前后静置时间，赋值给stand_time 列， 单位为分钟
  ----------------输入参数---------
  dfin: 调用data_split_by_status()后输出的bms数据
  ----------------输出参数----------
  在输入数据后面，增加stand_time列
  stand_time : 在行车段或充电段的起止两个位置处，表明开始前和结束后的静置时长，单位为分钟`

combine_drive_stand(self, dfin)
  `合并放电和静置段：将两次充电之间的所有数据段合并为一段， 状态分为 charge 和not charge
  ---------------输入----------
  dfin： 调用data_split_by_status()后输出的bms数据
  ---------------输出----------
  在输入数据后面，增加data_split_by_status_after_combine， data_status_after_combine 两列
  data_split_by_status_after_combine： 将两次充电间的数据合并后的段序号
  data_status_after_combine： 每段数据的状态标识`

data_gps_judge_after_combine(self, df_bms, df_gps, time_diff_thre=600, odo_sum_thre=200, drive_spd_thre=80, parking_spd_thre=2)
  `GPS数据可靠性判断函数2 (基于combine后的分段) 判别方式同data_gps_judge`

data_split_by_status(self, dfin, drive_interval_threshold=120, charge_interval_threshold=300, drive_stand_threshold=120, charge_stand_threshold=300)
  `# 数据预处理分段, 将原始数据段分为 charge、drive、stand、none段
  # 状态判断
  # 1、drive：(状态为2或3 且 存在电流>0 ) 或 (电流持续为0 且 持续时间<阈值 且 上一段数据为行车)
  # 2、charge：(状态为2或3 且 不存在电流>0 ) 或 (电流持续为0 且 持续时间<阈值 且 上一段数据为充电)
  # 3、stand：(电流持续为0 且 是数据段的第一段) 或 (电流持续为0 且 持续时间>阈值)
  # 4、none： 其他
  --------------输入参数-------------：
  drive_interval_threshold: 行车段拼接阈值，如果两段行车的间隔时间小于该值，则两段行车合并。
  charge_interval_threshold: 充电段拼接阈值，如果两段充电的间隔时间小于该值，则两段充电合并。
  drive_stand_threshold: 静置段合并至行车段阈值，如果静置时间小于该值，则合并到上一段的行车中。
  charge_stand_threshold: 静置段合并至充电段阈值，如果静置时间小于该值，则合并到上一段的充电中。
  --------------输出-----------------:
  在原始数据后面，增加data_split_by_crnt， data_split_by_status, data_status 三列
  data_split_by_crnt: 按电流分段的序号
  data_split_by_status：按电流和状态分段的序号
  data_status： 状态标识`

data_split_by_time(self, dfin, default_time_threshold=300, drive_time_threshold=300, charge_time_threshold=300, stand_time_threshold=1800)
  `# 该函数用来解决数据丢失问题导致的分段序号异常，
  # 将经过data_split_by_status分段后的数据，每个段内两行数据的时间跳变如果超过阈值，则继续分为两段
  --------------输入参数-------------：
  dfin: 调用data_split_by_status之后的函数
  default_time_threshold: 默认时间阈值，如果状态内部时间跳变大于该值，则划分为两段
  drive_time_threshold: 行车时间阈值，如果行车状态内部时间跳变大于该值，则划分为两段
  charge_time_threshold: 充电时间阈值，如果充电状态内部时间跳变大于该值，则划分为两段
  stand_time_threshold：静置时间阈值，如果静置状态内部时间跳变大于该值，则划分为两段
  --------------输出-----------------:
  在输入数据后面，增加data_split_by_status_time 一列
  data_split_by_status_time: 按照状态和时间分段后的序号`

gps_data_judge(self, df_bms, df_gps, time_diff_thre=300, odo_sum_thre=200, drive_spd_thre=80, parking_spd_thre=2)
  `GPS数据可靠性判断函数(基于combine前的分段)
  GPS数据出现以下情况时，判定为不可靠：
  1）如果该段对应的地理位置数据 少于2 个，则认为不可靠
  2）如果截取的GPS数据的起止时间，与BMS数据段的起止时间相差超过阈值，则认为不可靠
  3）如果行车段 累积里程超过阈值，车速超过阈值
  4) 如果非行车段 车速超过阈值
  --------------输入参数--------------：
  time_diff_thre： 时间差阈值
  odo_sum_thre: 累积里程阈值
  drive_spd_thre: 行车车速阈值
  parking_spd_thre： 非行车状态车速阈值
  --------------输出参数--------------:
  df_bms 增加一列gps_rely， 表明对应的GPS数据是否可靠。
  1：可靠
  <0: 表示不可靠的原因
  df_gps 增加两列odo， speed， 分别表示前后两点间的距离和速度`

time_filter(self, df_bms, df_gps)
  `# '''`

Data descriptors defined here:

__dict__
  `dictionary for instance variables (if defined)`

__weakref__
  `list of weak references to the object (if defined)`

Data
`` |  | CONF_PATH = r'D:\Platform\platform\CONFIGURE\' defpath = r'.;C:\bin'

Author
`` |  | lmstack