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
        wlm