123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831 |
- import pandas as pd
- from .block_pushrod import block_extend_time
- from .block_pushrod import block_retracted_time
- from .block_pushrod import pushrod_extend_time
- from .block_pushrod import pushrod_retracted_time
- from .fun_base import press_z_delta,smooth,cosine_sim_result,lift_onplace_delta,seat_onplace_delta
- ##构建函数通过机器人日志数据加工基础指标
- def plc_base(data,para_base):
- ##数据转换
- col_index=["发生时间",
- "机器人标识",
- "换电步骤",
- "机器人状态",
- "x轴速度",
- "y轴速度",
- "z轴速度",
- "r轴速度",
- "暂停",
- "x位移",
- "y位移",
- "z位移",
- "r位移",
- "x扭矩1",
- "x扭矩2",
- "y扭矩",
- "z扭矩",
- "r扭矩",
- "拉力传感器1",
- "拉力传感器2",
- "拉力传感器3",
- "拉力传感器4",
- "车辆粗定位位置",
- "急停",
- "车辆精定位位置",
- "车辆精定位高度",
- "车辆精定位偏转",
- "亏电电池位置",
- "亏电电池高度",
- "亏电电池离座高度",
- "中转仓位置",
- "中转仓高度",
- "中转仓角度",
- "亏电电池中转仓位置",
- "亏电电池落座中转仓高度",
- "满电电池仓位置",
- "满电电池位置",
- "满电电池高度",
- "满电电池在车辆位置",
- "中转仓吊具脱离高度",
- "到位传感器",
- "满电仓位",
- "转锁全部伸出",
- "转锁全部收回",
- "落座全部到位",
- "落座全部未到位",
- "光栅传感器",
- "当前换电模式",
- "亏电仓位",
- "换电编号",
- "站控取电池仓位",
- "架载机落座传感器1",
- "架载机落座传感器2",
- "架载机落座传感器3",
- "架载机落座传感器4",
- "架载机落座传感器5",
- "架载机落座传感器6",
- "架载机落座传感器7",
- "架载机落座传感器8",
- "红绿灯",
- "排风扇1",
- "排风扇2",
- "排风扇3",
- "排风扇4",
- "plc控制站控断电",
- "控制整站断电",
- "错误码1",
- "错误码2",
- "错误码3",
- "错误码4",
- "错误码5",
- "错误码6",
- "错误码7",
- "错误码8",
- "错误码9",
- "错误码10",
- "横移轴原点",
- "转锁1缩回",
- "推杆1伸出",
- "推杆1收回",
- "推杆2伸出",
- "推杆2收回",
- "推杆3伸出",
- "推杆3收回",
- "推杆4伸出",
- "推杆4收回",
- "转锁3缩回",
- "转锁1伸出",
- "吊具到位1",
- "转锁3伸出",
- "吊具到位2",
- "吊具到位3",
- "吊具到位4",
- "转锁4缩回",
- "转锁4伸出",
- "转锁2缩回",
- "转锁2伸出",
- "像素x",
- "像素y",
- "实时测距",
- "过程测距值1",
- "过程测距值2",
- "吊具到码心x距离",
- "偏转计算点2位置缓存",
- "推杆2伸出时间",
- "推杆3伸出时间",
- "推杆2缩回时间",
- "推杆3缩回时间",
- "推杆1伸出时间",
- "推杆4伸出时间",
- "推杆1缩回时间",
- "推杆4缩回时间"]
- data=data[col_index]
- data.columns=["time",
- "sn",
- "steps",
- "status",
- "x_v",
- "y_v",
- "z_v",
- "r_v",
- "pause",
- "x_s",
- "y_s",
- "z_s",
- "r_s",
- "x1_toque",
- "x2_toque",
- "y_toque",
- "z_toque",
- "r_toque",
- "pressure_1",
- "pressure_2",
- "pressure_3",
- "pressure_4",
- "veh_coarse_position",
- "emer_stop",
- "veh_precise_position",
- "veh_precise_h",
- "veh_precise_deflect",
- "low_bat_local",
- "low_bat_h",
- "low_bat_seat_h",
- "trans_house_loc",
- "trans_house_h",
- "trans_house_angle",
- "low_bat_trans_house_loc",
- "low_bat_add_seat_h",
- "full_bat_house_loc",
- "full_bat_local",
- "full_bat_h",
- "full_bat_oncar_loc",
- "lift_from_th_h",
- "position_sense",
- "full_house_id",
- "lock_full_extended",
- "lock_full_retracted",
- "seat_all_in",
- "seat_all_notin",
- "grating_sensor",
- "power_exchange_mode",
- "low_bat_house_id",
- "change_num",
- "control_house_id",
- "base_sensor1",
- "base_sensor2",
- "base_sensor3",
- "base_sensor4",
- "base_sensor5",
- "base_sensor6",
- "base_sensor7",
- "base_sensor8",
- "light",
- "fan1",
- "fan2",
- "fan3",
- "fan4",
- "station_control_break",
- "entire_station_break",
- "error_code1",
- "error_code2",
- "error_code3",
- "error_code4",
- "error_code5",
- "error_code6",
- "error_code7",
- "error_code8",
- "error_code9",
- "error_code10",
- "h_axis_origin",
- "lock1_retracted",
- "pushrod1_extended",
- "pushrod1_retracted",
- "pushrod2_extended",
- "pushrod2_retracted",
- "pushrod3_extended",
- "pushrod3_retracted",
- "pushrod4_extended",
- "pushrod4_retracted",
- "lock3_retracted",
- "lock1_extended",
- "lift1_inplace",
- "lock3_extended",
- "lift2_inplace",
- "lift3_inplace",
- "lift4_inplace",
- "lock4_retracted",
- "lock4_extended",
- "lock2_retracted",
- "lock2_extended",
- "pixel_x",
- "pixel_y",
- "dis_ontime",
- "dis1_process",
- "dis2_process",
- "lift_code_dist",
- "deflect2",
- "pushrod2_out_time",
- "pushrod3_out_time",
- "pushrod2_in_time",
- "pushrod3_in_time",
- "pushrod1_out_time",
- "pushrod4_out_time",
- "pushrod1_in_time",
- "pushrod4_in_time"]
- ##数据清洗
- data["steps_up"]=data["steps"].shift(-1)
- data["steps_down"]=data["steps"].shift(1)
- data=data[(data["steps"]==data["steps_up"])|(data["steps"]==data["steps_down"])]
- data.drop(["steps_up","steps_down"], axis=1, inplace=True)
- ##数据分段
- data["change_status"]=0
- data["change_status"][data["steps"]!=0]=1
- data["change_flag"]=(data["change_status"] != data["change_status"].shift(1)).astype(int).cumsum()
- data = data.drop('change_status', axis=1)
- #准备状态的情况
- data0=data[data["steps"]==0]
- data_in=data[data["steps"]!=0]
- ####换电过程的个数
- groups=set(data_in["change_flag"])
- ##每个换电过程的换电步骤数
- ##排除换电为50的步骤
- data_in=data_in[data_in["steps"]!=50]
- change_steps= data_in.groupby('change_flag')['steps'].nunique()
- change_steps=change_steps.reset_index()
- ##增加一个字段来区分是否是完整的换电过程,完成的是44
- change_steps["full_steps"]=1
- change_steps["full_steps"][change_steps["steps"]!=44]=0
- ##换电过程的耗时统计
- change_time=data_in.groupby("change_flag").apply(lambda x: pd.concat([x.head(1), x.tail(1)]))
- change_time_group=change_time.reset_index(drop=True)
- change_time_group=change_time_group[['time','steps','change_flag']]
- change_time_group["time2"]=change_time_group["time"].shift(1)
- change_time_group=change_time_group.groupby('change_flag').tail(1)
- change_time_group["time_delta"]=pd.to_timedelta(pd.to_datetime(change_time_group["time"])-pd.to_datetime(change_time_group["time2"])).dt.total_seconds()
- ##增加是否超时的标识
- change_time_group['timeout']=0
- change_time_group['timeout'][change_time_group['time_delta']>310]=1
- ##按照换电过程和换电步骤统计##后面换电过程和分步骤的以这个为基础表
- change_steps_time=data_in.groupby(["change_flag","steps"]).apply(lambda x: pd.concat([x.head(1), x.tail(1)]))
- change_time_steps=change_steps_time.reset_index(drop=True)
- change_time_steps["time2"]=change_time_steps["time"].shift(1)
- time_group_steps=change_time_steps.groupby(['change_flag','steps']).tail(1)
- time_group_steps["time_delta"]=pd.to_timedelta(pd.to_datetime(time_group_steps["time"])-pd.to_datetime(time_group_steps["time2"])).dt.total_seconds()
- ##统计有暂停的过程和步骤
- data_pause=data_in[["change_flag","steps"]][data_in["pause"]==1]
- pause_result = data_pause.drop_duplicates(['change_flag', 'steps'])
- pause_result_steps = pause_result.copy()
- pause_result_steps["pause_flag"]=1
- ##获取步骤的列表
- pause_result_l=pause_result.groupby('change_flag')['steps'].apply(tuple).reset_index()
- pause_result_l.columns=["change_flag","pause_steps"]
- pause_result_group=pause_result.groupby('change_flag').count()
- pause_result_group=pause_result_group.reset_index()
- pause_result_group.columns=["change_flag","pause_steps_num"]
-
- ##统计有急停的过程和步骤
- data_stop=data_in[["change_flag","steps"]][data_in["emer_stop"]==1]
- stop_result = data_stop.drop_duplicates(['change_flag', 'steps'])
- stop_result_steps=stop_result.copy()
- stop_result_steps["stop_flag"]=1
-
- stop_result_l=stop_result.groupby('change_flag')['steps'].apply(tuple).reset_index()
- stop_result_l.columns=["change_flag","stop_steps"]
- stop_result_group=stop_result.groupby('change_flag').count()
- stop_result_group=stop_result_group.reset_index()
- stop_result_group.columns=["change_flag","stop_steps_num"]
-
- ##统计有故障的过程和步骤
- data_fault=data_in[["change_flag","steps"]][data_in["status"]==4]
- fault_result = data_fault.drop_duplicates(['change_flag', 'steps'])
- error_code1=data_in[["change_flag","steps","error_code1"]][(data_in["status"]==4)&(data_in["error_code1"]!=0)]
- error_code1.columns=["change_flag","steps","error_code"]
- error_code2=data_in[["change_flag","steps","error_code2"]][(data_in["status"]==4)&(data_in["error_code2"]!=0)]
- error_code2.columns=["change_flag","steps","error_code"]
- error_code3=data_in[["change_flag","steps","error_code3"]][(data_in["status"]==4)&(data_in["error_code3"]!=0)]
- error_code3.columns=["change_flag","steps","error_code"]
- error_code4=data_in[["change_flag","steps","error_code4"]][(data_in["status"]==4)&(data_in["error_code4"]!=0)]
- error_code4.columns=["change_flag","steps","error_code"]
- error_code5=data_in[["change_flag","steps","error_code5"]][(data_in["status"]==4)&(data_in["error_code5"]!=0)]
- error_code5.columns=["change_flag","steps","error_code"]
- error_code6=data_in[["change_flag","steps","error_code6"]][(data_in["status"]==4)&(data_in["error_code6"]!=0)]
- error_code6.columns=["change_flag","steps","error_code"]
- error_code7=data_in[["change_flag","steps","error_code7"]][(data_in["status"]==4)&(data_in["error_code7"]!=0)]
- error_code7.columns=["change_flag","steps","error_code"]
- error_code8=data_in[["change_flag","steps","error_code8"]][(data_in["status"]==4)&(data_in["error_code8"]!=0)]
- error_code8.columns=["change_flag","steps","error_code"]
- error_code9=data_in[["change_flag","steps","error_code9"]][(data_in["status"]==4)&(data_in["error_code9"]!=0)]
- error_code9.columns=["change_flag","steps","error_code"]
- error_code10=data_in[["change_flag","steps","error_code10"]][(data_in["status"]==4)&(data_in["error_code10"]!=0)]
- error_code10.columns=["change_flag","steps","error_code"]
- error_code=pd.concat([error_code1,error_code2,error_code3,error_code4,error_code5,error_code6,error_code7,error_code8,error_code9,error_code10])
- error_code["error_code"]=error_code["error_code"].astype('int')
- error_code = error_code.drop_duplicates(['change_flag', 'steps','error_code'])
- error_code=error_code[error_code["error_code"]!=7000]
- error_code=error_code.groupby(['change_flag','steps'])['error_code'].apply(tuple).reset_index()
-
- ##后面换电过程和分步骤按这个关联
-
- fault_result_l=fault_result.groupby('change_flag')['steps'].apply(tuple).reset_index()
- fault_result_l.columns=["change_flag","fault_steps"]
- error_code_group=error_code[["change_flag","error_code"]].drop_duplicates(['change_flag', 'error_code'])
- error_code_group_l=error_code_group.groupby('change_flag')['error_code'].apply(tuple).reset_index()
- error_code_group_l.columns=["change_flag","error_code"]
- fault_result_group=fault_result.groupby('change_flag').count()
- fault_result_group=fault_result_group.reset_index()
- fault_result_group.columns=["change_flag","fault_steps_num"]
-
- ####基于换电过程的指标汇总加工
- ###换电过程的基表 change_time_group
- change_time_group=change_time_group[["time2","time","time_delta","timeout","change_flag"]]
- change_time_group.columns=["c_time_b","c_time_e","c_time_delta","c_time_out","change_flag"]
- ###关联换电步骤数和换电步骤是否完整
- group_base=pd.merge(change_time_group,change_steps,on='change_flag',how='left')
- group_base.rename(columns={'steps': 'steps_num'}, inplace=True)
- ##关联暂停的信息
- group_base=pd.merge(group_base,pause_result_l,on='change_flag',how='left')
- group_base=pd.merge(group_base,pause_result_group,on='change_flag',how='left')
- ##关联急停信息
- group_base=pd.merge(group_base,stop_result_l,on='change_flag',how='left')
- group_base=pd.merge(group_base,stop_result_group,on='change_flag',how='left')
- ##关联故障信息error_code_group_l
- group_base=pd.merge(group_base,fault_result_l,on='change_flag',how='left')
- group_base=pd.merge(group_base,error_code_group_l,on='change_flag',how='left')
- group_base=pd.merge(group_base,fault_result_group,on='change_flag',how='left')
-
- ##按照换电过程和步骤加工其他指标
- ##4个转锁的分析,转锁相关的步骤
- ##第5步,转锁伸出,一共4个转锁,加工反应时间和运动时间
- ##取数[4,5,6]
- block_step_5=[4,5,6]
- data_step_5=data_in[data_in["steps"].isin(block_step_5)]
- data_step_5_block1=data_step_5[["time","change_flag","steps","lock1_retracted","lock1_extended"]]
- data_step_5_block2=data_step_5[["time","change_flag","steps","lock2_retracted","lock2_extended"]]
- data_step_5_block3=data_step_5[["time","change_flag","steps","lock3_retracted","lock3_extended"]]
- data_step_5_block4=data_step_5[["time","change_flag","steps","lock4_retracted","lock4_extended"]]
-
- result_f51,result_r51=block_extend_time(data_step_5_block1)
- result_f52,result_r52=block_extend_time(data_step_5_block2)
- result_f53,result_r53=block_extend_time(data_step_5_block3)
- result_f54,result_r54=block_extend_time(data_step_5_block4)
- ##13步解锁
- block_step_13=[12,13,14]
- data_step_13=data_in[data_in["steps"].isin(block_step_13)]
- data_step_13_block1=data_step_13[["time","change_flag","steps","lock1_retracted","lock1_extended"]]
- data_step_13_block2=data_step_13[["time","change_flag","steps","lock2_retracted","lock2_extended"]]
- data_step_13_block3=data_step_13[["time","change_flag","steps","lock3_retracted","lock3_extended"]]
- data_step_13_block4=data_step_13[["time","change_flag","steps","lock4_retracted","lock4_extended"]]
-
-
- result_f131,result_r131=block_retracted_time(data_step_13_block1)
- result_f132,result_r132=block_retracted_time(data_step_13_block2)
- result_f133,result_r133=block_retracted_time(data_step_13_block3)
- result_f134,result_r134=block_retracted_time(data_step_13_block4)
-
-
- ##19步上锁,27解锁,33 上锁 ,41解锁
- ##19步上锁
- block_step_19=[18,19,20]
- data_step_19=data_in[data_in["steps"].isin(block_step_19)]
- data_step_19_block1=data_step_19[["time","change_flag","steps","lock1_retracted","lock1_extended"]]
- data_step_19_block2=data_step_19[["time","change_flag","steps","lock2_retracted","lock2_extended"]]
- data_step_19_block3=data_step_19[["time","change_flag","steps","lock3_retracted","lock3_extended"]]
- data_step_19_block4=data_step_19[["time","change_flag","steps","lock4_retracted","lock4_extended"]]
- result_f191,result_r191=block_extend_time(data_step_19_block1,upd=18,cored=19,downd=20)
- result_f192,result_r192=block_extend_time(data_step_19_block2,upd=18,cored=19,downd=20)
- result_f193,result_r193=block_extend_time(data_step_19_block3,upd=18,cored=19,downd=20)
- result_f194,result_r194=block_extend_time(data_step_19_block4,upd=18,cored=19,downd=20)
-
- block_step_27=[26,27,28]
- data_step_27=data_in[data_in["steps"].isin(block_step_27)]
- data_step_27_block1=data_step_27[["time","change_flag","steps","lock1_retracted","lock1_extended"]]
- data_step_27_block2=data_step_27[["time","change_flag","steps","lock2_retracted","lock2_extended"]]
- data_step_27_block3=data_step_27[["time","change_flag","steps","lock3_retracted","lock3_extended"]]
- data_step_27_block4=data_step_27[["time","change_flag","steps","lock4_retracted","lock4_extended"]]
- result_f271,result_r271=block_retracted_time(data_step_27_block1,upd=26,cored=27,downd=28)
- result_f272,result_r272=block_retracted_time(data_step_27_block2,upd=26,cored=27,downd=28)
- result_f273,result_r273=block_retracted_time(data_step_27_block3,upd=26,cored=27,downd=28)
- result_f274,result_r274=block_retracted_time(data_step_27_block4,upd=26,cored=27,downd=28)
-
- block_step_33=[32,33,34]
- data_step_33=data_in[data_in["steps"].isin(block_step_33)]
- data_step_33_block1=data_step_33[["time","change_flag","steps","lock1_retracted","lock1_extended"]]
- data_step_33_block2=data_step_33[["time","change_flag","steps","lock2_retracted","lock2_extended"]]
- data_step_33_block3=data_step_33[["time","change_flag","steps","lock3_retracted","lock3_extended"]]
- data_step_33_block4=data_step_33[["time","change_flag","steps","lock4_retracted","lock4_extended"]]
- result_f331,result_r331=block_extend_time(data_step_33_block1,upd=32,cored=33,downd=34)
- result_f332,result_r332=block_extend_time(data_step_33_block2,upd=32,cored=33,downd=34)
- result_f333,result_r333=block_extend_time(data_step_33_block3,upd=32,cored=33,downd=34)
- result_f334,result_r334=block_extend_time(data_step_33_block4,upd=32,cored=33,downd=34)
-
- block_step_41=[40,41,42]
- data_step_41=data_in[data_in["steps"].isin(block_step_41)]
- data_step_41_block1=data_step_41[["time","change_flag","steps","lock1_retracted","lock1_extended"]]
- data_step_41_block2=data_step_41[["time","change_flag","steps","lock2_retracted","lock2_extended"]]
- data_step_41_block3=data_step_41[["time","change_flag","steps","lock3_retracted","lock3_extended"]]
- data_step_41_block4=data_step_41[["time","change_flag","steps","lock4_retracted","lock4_extended"]]
- result_f411,result_r411=block_retracted_time(data_step_41_block1,upd=40,cored=41,downd=42)
- result_f412,result_r412=block_retracted_time(data_step_41_block2,upd=40,cored=41,downd=42)
- result_f413,result_r413=block_retracted_time(data_step_41_block3,upd=40,cored=41,downd=42)
- result_f414,result_r414=block_retracted_time(data_step_41_block4,upd=40,cored=41,downd=42)
-
-
- ###推杆的指标,共两个推杆 ,推杆2和推杆3
- ###推杆伸出
- ###第7步伸出,相关数据
- block_step_7=[6,7,8]
- data_step_7=data_in[data_in["steps"].isin(block_step_7)]
- data_step_7_pushrod2=data_step_7[["time","change_flag","steps","pushrod2_retracted","pushrod2_extended"]]
- data_step_7_pushrod3=data_step_7[["time","change_flag","steps","pushrod3_retracted","pushrod3_extended"]]
- ##构建推杆伸出函数
- result_f72,result_r72=pushrod_extend_time(data_step_7_pushrod2)
- result_f73,result_r73=pushrod_extend_time(data_step_7_pushrod3)
-
- ###伸出的步骤还有21,35
- block_step_21=[20,21,22]
- data_step_21=data_in[data_in["steps"].isin(block_step_21)]
- data_step_21_pushrod2=data_step_21[["time","change_flag","steps","pushrod2_retracted","pushrod2_extended"]]
- data_step_21_pushrod3=data_step_21[["time","change_flag","steps","pushrod3_retracted","pushrod3_extended"]]
- result_f212,result_r212=pushrod_extend_time(data_step_21_pushrod2,upd=20,cored=21,downd=22)
- result_f213,result_r213=pushrod_extend_time(data_step_21_pushrod3,upd=20,cored=21,downd=22)
- block_step_35=[34,35,36]
- data_step_35=data_in[data_in["steps"].isin(block_step_35)]
- data_step_35_pushrod2=data_step_35[["time","change_flag","steps","pushrod2_retracted","pushrod2_extended"]]
- data_step_35_pushrod3=data_step_35[["time","change_flag","steps","pushrod3_retracted","pushrod3_extended"]]
- result_f352,result_r352=pushrod_extend_time(data_step_35_pushrod2,upd=34,cored=35,downd=36)
- result_f353,result_r353=pushrod_extend_time(data_step_35_pushrod3,upd=34,cored=35,downd=36)
-
- ##构建推杆收回函数,11步为收回
- block_step_11=[10,11,12]
- ##推杆收回的步骤还有25,39
-
- block_step_11=[10,11,12]
- data_step_11=data_in[data_in["steps"].isin(block_step_11)]
- data_step_11_pushrod2=data_step_11[["time","change_flag","steps","pushrod2_retracted","pushrod2_extended"]]
- data_step_11_pushrod3=data_step_11[["time","change_flag","steps","pushrod3_retracted","pushrod3_extended"]]
- result_f112,result_r112=pushrod_retracted_time(data_step_11_pushrod2,upd=10,cored=11,downd=12)
- result_f113,result_r113=pushrod_retracted_time(data_step_11_pushrod3,upd=10,cored=11,downd=12)
-
- block_step_25=[24,25,26]
- data_step_25=data_in[data_in["steps"].isin(block_step_25)]
- data_step_25_pushrod2=data_step_25[["time","change_flag","steps","pushrod2_retracted","pushrod2_extended"]]
- data_step_25_pushrod3=data_step_25[["time","change_flag","steps","pushrod3_retracted","pushrod3_extended"]]
- result_f252,result_r252=pushrod_retracted_time(data_step_25_pushrod2,upd=24,cored=25,downd=26)
- result_f253,result_r253=pushrod_retracted_time(data_step_25_pushrod3,upd=24,cored=25,downd=26)
-
- block_step_39=[38,39,40]
- data_step_39=data_in[data_in["steps"].isin(block_step_39)]
- data_step_39_pushrod2=data_step_39[["time","change_flag","steps","pushrod2_retracted","pushrod2_extended"]]
- data_step_39_pushrod3=data_step_39[["time","change_flag","steps","pushrod3_retracted","pushrod3_extended"]]
- result_f392,result_r392=pushrod_retracted_time(data_step_39_pushrod2,upd=38,cored=39,downd=40)
- result_f393,result_r393=pushrod_retracted_time(data_step_39_pushrod3,upd=38,cored=39,downd=40)
-
- ###扭矩、位移、拉力按换电过程和换电步骤汇总,汇总对象为data_in
- data_describe=data_in.groupby(['change_flag','steps']).agg({'x_v':['mean','min','max'],
- 'y_v':['mean','min','max'],
- 'z_v':['mean','min','max'],
- 'r_v':['mean','min','max'],
- 'x_s':['mean','min','max'],
- 'y_s':['mean','min','max'],
- 'z_s':['mean','min','max'],
- 'r_s':['mean','min','max'],
- 'x1_toque':['mean','min','max'],
- 'x2_toque':['mean','min','max'],
- 'y_toque':['mean','min','max'],
- 'z_toque':['mean','min','max'],
- 'r_toque':['mean','min','max'],
- 'pressure_1':['mean','min','max'],
- 'pressure_2':['mean','min','max'],
- 'pressure_3':['mean','min','max'],
- 'pressure_4':['mean','min','max'],
- 'dis1_process':['mean','min','max'],
- 'dis2_process':['mean','min','max'],
- 'lift_code_dist':['mean','min','max']
- })
- data_describe=data_describe.reset_index()
- columns_names=["change_flag",
- "steps",
- "x_v_mean",
- "x_v_min",
- "x_v_max",
- "y_v_mean",
- "y_v_min",
- "y_v_max",
- "z_v_mean",
- "z_v_min",
- "z_v_max",
- "r_v_mean",
- "r_v_min",
- "r_v_max",
- "x_s_mean",
- "x_s_min",
- "x_s_max",
- "y_s_mean",
- "y_s_min",
- "y_s_max",
- "z_s_mean",
- "z_s_min",
- "z_s_max",
- "r_s_mean",
- "r_s_min",
- "r_s_max",
- "x1_tq_mean",
- "x1_tq_min",
- "x1_tq_max",
- "x2_tq_mean",
- "x2_tq_min",
- "x2_tq_max",
- "y_tq_mean",
- "y_tq_min",
- "y_tq_max",
- "z_tq_mean",
- "z_tq_min",
- "z_tq_max",
- "r_tq_mean",
- "r_tq_min",
- "r_tq_max",
- "pres_1_mean",
- "pres_1_min",
- "pres_1_max",
- "pres_2_mean",
- "pres_2_min",
- "pres_2_max",
- "pres_3_mean",
- "pres_3_min",
- "pres_3_max",
- "pres_4_mean",
- "pres_4_min",
- "pres_4_max",
- "dis1_process_mean",
- "dis1_process_min",
- "dis1_process_max",
- "dis2_process_mean",
- "dis2_process_min",
- "dis2_process_max",
- "lift_code_dist_mean",
- "lift_code_dist_min",
- "lift_code_dist_max"]
- data_describe.columns=columns_names
-
- ##挠度指标
- data_z_delta=press_z_delta(data_in,step_list=[6,34])
-
- ###平滑度指标
-
- ##z轴平滑度
- ##z轴扭矩
- data_z_smooth=data_in[["change_flag","steps","z_toque","z_v"]]
- data_z_smooth=data_z_smooth[data_z_smooth["steps"].isin([6,20,34])]
- data_z_smooth_tq_max=data_z_smooth.groupby(["change_flag","steps"])["z_toque"].apply(lambda x:smooth(x,100,"max"))
- data_z_smooth_tq_max=data_z_smooth_tq_max.reset_index()
- data_z_smooth_tq_max.columns=["change_flag","steps","z_toque_smoo_max"]
- data_z_smooth_tq_mode=data_z_smooth.groupby(["change_flag","steps"])["z_toque"].apply(lambda x:smooth(x,100,"mode"))
- data_z_smooth_tq_mode=data_z_smooth_tq_mode.reset_index()
- data_z_smooth_tq_mode.columns=["change_flag","steps","z_toque_smoo_mode"]
- data_z_smooth_zv_max=data_z_smooth.groupby(["change_flag","steps"])["z_v"].apply(lambda x:smooth(x,100,"max"))
- data_z_smooth_zv_max=data_z_smooth_zv_max.reset_index()
- data_z_smooth_zv_max.columns=["change_flag","steps","z_v_smoo_max"]
- data_z_smooth_zv_mode=data_z_smooth.groupby(["change_flag","steps"])["z_v"].apply(lambda x:smooth(x,100,"mode"))
- data_z_smooth_zv_mode=data_z_smooth_zv_mode.reset_index()
- data_z_smooth_zv_mode.columns=["change_flag","steps","z_v_smoo_mode"]
- data_y_smooth=data_in[["change_flag","steps","y_toque","y_v"]]
- data_y_smooth=data_y_smooth[data_y_smooth["steps"].isin([8,10,38,22,24,36])]
-
- data_y_smooth_tq_max=data_y_smooth.groupby(["change_flag","steps"])["y_toque"].apply(lambda x:smooth(x,100,"max"))
- data_y_smooth_tq_max=data_y_smooth_tq_max.reset_index()
- data_y_smooth_tq_max.columns=["change_flag","steps","y_toque_smoo_max"]
- data_y_smooth_tq_mode=data_y_smooth.groupby(["change_flag","steps"])["y_toque"].apply(lambda x:smooth(x,100,"mode"))
- data_y_smooth_tq_mode=data_y_smooth_tq_mode.reset_index()
- data_y_smooth_tq_mode.columns=["change_flag","steps","y_toque_smoo_mode"]
-
- data_y_smooth_yv_max=data_y_smooth.groupby(["change_flag","steps"])["y_v"].apply(lambda x:smooth(x,100,"max"))
- data_y_smooth_yv_max=data_y_smooth_yv_max.reset_index()
- data_y_smooth_yv_max.columns=["change_flag","steps","y_v_smoo_max"]
- data_y_smooth_yv_mode=data_y_smooth.groupby(["change_flag","steps"])["y_v"].apply(lambda x:smooth(x,100,"mode"))
- data_y_smooth_yv_mode=data_y_smooth_yv_mode.reset_index()
- data_y_smooth_yv_mode.columns=["change_flag","steps","y_v_smoo_mode"]
-
- data_x_smooth=data_in[["change_flag","steps","x1_toque","x2_toque","x_v"]]
- data_x_smooth=data_x_smooth[data_x_smooth["steps"].isin([1,9,16,23,30,37])]
- data_x1_smooth_tq_max=data_x_smooth.groupby(["change_flag","steps"])["x1_toque"].apply(lambda x:smooth(x,100,"max"))
- data_x1_smooth_tq_max=data_x1_smooth_tq_max.reset_index()
- data_x1_smooth_tq_max.columns=["change_flag","steps","x1_toque_smoo_max"]
-
- data_x1_smooth_tq_mode=data_x_smooth.groupby(["change_flag","steps"])["x1_toque"].apply(lambda x:smooth(x,100,"mode"))
- data_x1_smooth_tq_mode=data_x1_smooth_tq_mode.reset_index()
- data_x1_smooth_tq_mode.columns=["change_flag","steps","x1_toque_smoo_mode"]
-
- data_x2_smooth_tq_max=data_x_smooth.groupby(["change_flag","steps"])["x2_toque"].apply(lambda x:smooth(x,100,"max"))
- data_x2_smooth_tq_max=data_x2_smooth_tq_max.reset_index()
- data_x2_smooth_tq_max.columns=["change_flag","steps","x2_toque_smoo_max"]
- data_x2_smooth_tq_mode=data_x_smooth.groupby(["change_flag","steps"])["x2_toque"].apply(lambda x:smooth(x,100,"mode"))
- data_x2_smooth_tq_mode=data_x2_smooth_tq_mode.reset_index()
- data_x2_smooth_tq_mode.columns=["change_flag","steps","x2_toque_smoo_mode"]
-
-
- data_x_smooth_xv_max=data_x_smooth.groupby(["change_flag","steps"])["x_v"].apply(lambda x:smooth(x,100,"max"))
- data_x_smooth_xv_max=data_x_smooth_xv_max.reset_index()
- data_x_smooth_xv_max.columns=["change_flag","steps","x_v_smoo_max"]
- data_x_smooth_xv_mode=data_x_smooth.groupby(["change_flag","steps"])["x_v"].apply(lambda x:smooth(x,100,"mode"))
- data_x_smooth_xv_mode=data_x_smooth_xv_mode.reset_index()
- data_x_smooth_xv_mode.columns=["change_flag","steps","x_v_smoo_mode"]
-
-
- ###相似度指标
-
- ##z轴的相似度指标
-
- ##z轴扭矩的相似度
- var_list=["change_flag","steps","z_toque"]
- var_rename_list=["change_flag","steps","z_toque_cosine"]
- step_list=[6,20,34]
- para_std_list=para_base["z_toque_para"]
- z_tq_cosine=cosine_sim_result(data_in,var_list,var_rename_list,step_list,para_std_list)
-
- var_list=["change_flag","steps","z_v"]
- var_rename_list=["change_flag","steps","z_v_cosine"]
- step_list=[6,20,34]
- para_std_list=para_base["z_v_para"]
- z_v_cosine=cosine_sim_result(data_in,var_list,var_rename_list,step_list,para_std_list)
-
- var_list=["change_flag","steps","y_toque"]
- var_rename_list=["change_flag","steps","y_toque_cosine"]
- step_list=[8,10,38,22,24,36]
- para_std_list=para_base["y_toque_para"]
- y_tq_cosine=cosine_sim_result(data_in,var_list,var_rename_list,step_list,para_std_list)
-
- var_list=["change_flag","steps","y_v"]
- var_rename_list=["change_flag","steps","y_v_cosine"]
- step_list=[8,10,38,22,24,36]
- para_std_list=para_base["y_v_para"]
- y_v_cosine=cosine_sim_result(data_in,var_list,var_rename_list,step_list,para_std_list)
-
-
- var_list=["change_flag","steps","x1_toque"]
- var_rename_list=["change_flag","steps","x1_toque_cosine"]
- step_list=[9]
- para_std_list=para_base["x1_toque_para"]
- x1_tq_cosine=cosine_sim_result(data_in,var_list,var_rename_list,step_list,para_std_list)
-
- var_list=["change_flag","steps","x2_toque"]
- var_rename_list=["change_flag","steps","x2_toque_cosine"]
- step_list=[9]
- para_std_list=para_base["x2_toque_para"]
- x2_tq_cosine=cosine_sim_result(data_in,var_list,var_rename_list,step_list,para_std_list)
-
-
- var_list=["change_flag","steps","x_v"]
- var_rename_list=["change_flag","steps","x_v_cosine"]
- step_list=[9]
- para_std_list=para_base["x_v_para"]
- x_v_cosine=cosine_sim_result(data_in,var_list,var_rename_list,step_list,para_std_list)
-
- ###吊具到位时间差的计算
-
-
- data_lift_onplace_delta=lift_onplace_delta(data_in,step_list=[4,18,32])
-
- data_seat_onplace_delta=seat_onplace_delta(data_in,step_list=[12,26,40])
-
-
- ###基于换电过程和换电步骤的汇总
- ##基表time_group_steps
- group_steps_base=time_group_steps[["time2","time","time_delta","change_flag","steps"]]
- group_steps_base.columns=["step_time_b","step_time_e","step_time","change_flag","steps"]
- ##关联转锁
- ##将转锁的数据合并
- ##转锁的反应时间
- block1_f_union=pd.concat([result_f51,result_f131,result_f191,result_f271,result_f331,result_f411])
- block1_f_union.columns=['change_flag','steps','block1_f_time']
- block2_f_union=pd.concat([result_f52,result_f132,result_f192,result_f272,result_f332,result_f412])
- block2_f_union.columns=['change_flag','steps','block2_f_time']
- block3_f_union=pd.concat([result_f53,result_f133,result_f193,result_f273,result_f333,result_f413])
- block3_f_union.columns=['change_flag','steps','block3_f_time']
- block4_f_union=pd.concat([result_f54,result_f134,result_f194,result_f274,result_f334,result_f414])
- block4_f_union.columns=['change_flag','steps','block4_f_time']
- block1_r_union=pd.concat([result_r51,result_r131,result_r191,result_r271,result_r331,result_r411])
- block1_r_union.columns=['change_flag','steps','block1_r_time']
- block2_r_union=pd.concat([result_r52,result_r132,result_r192,result_r272,result_r332,result_r412])
- block2_r_union.columns=['change_flag','steps','block2_r_time']
- block3_r_union=pd.concat([result_r53,result_r133,result_r193,result_r273,result_r333,result_r413])
- block3_r_union.columns=['change_flag','steps','block3_r_time']
- block4_r_union=pd.concat([result_r54,result_r134,result_r194,result_r274,result_r334,result_r414])
- block4_r_union.columns=['change_flag','steps','block4_r_time']
- ###关联转锁的反应时间
- group_steps_base=pd.merge(group_steps_base,block1_f_union,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,block2_f_union,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,block3_f_union,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,block4_f_union,on=['change_flag','steps'],how='left')
- ##关联运动时间
- group_steps_base=pd.merge(group_steps_base,block1_r_union,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,block2_r_union,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,block3_r_union,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,block4_r_union,on=['change_flag','steps'],how='left')
-
- ###关联推杆
- pushrod2_f_union=pd.concat([result_f72,result_f112,result_f212,result_f252,result_f352,result_f392])
- pushrod2_f_union.columns=['change_flag','steps','pushrod2_f_time']
- pushrod3_f_union=pd.concat([result_f73,result_f113,result_f213,result_f253,result_f353,result_f393])
- pushrod3_f_union.columns=['change_flag','steps','pushrod3_f_time']
- pushrod2_r_union=pd.concat([result_r72,result_r112,result_r212,result_r252,result_r352,result_r392])
- pushrod2_r_union.columns=['change_flag','steps','pushrod2_r_time']
- pushrod3_r_union=pd.concat([result_r73,result_r113,result_r213,result_r253,result_r353,result_r393])
- pushrod3_r_union.columns=['change_flag','steps','pushrod3_r_time']
-
- ##关联推杆反应时间
- group_steps_base=pd.merge(group_steps_base,pushrod2_f_union,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,pushrod3_f_union,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,pushrod2_r_union,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,pushrod3_r_union,on=['change_flag','steps'],how='left')
-
- ##关联故障码
- group_steps_base=pd.merge(group_steps_base,error_code,on=['change_flag','steps'],how='left')
-
- ##关联暂停
- group_steps_base=pd.merge(group_steps_base,pause_result_steps,on=['change_flag','steps'],how='left')
- ##关联急停
- group_steps_base=pd.merge(group_steps_base,stop_result_steps,on=['change_flag','steps'],how='left')
- ##关联其他指标
- group_steps_base=pd.merge(group_steps_base,data_describe,on=['change_flag','steps'],how='left')
- ##关联挠度相关指标
-
- group_steps_base=pd.merge(group_steps_base,data_z_delta,on=['change_flag','steps'],how='left')
-
-
- ##关联平滑度指标
-
- group_steps_base=pd.merge(group_steps_base,data_z_smooth_tq_max,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,data_z_smooth_tq_mode,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,data_z_smooth_zv_max,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,data_z_smooth_zv_mode,on=['change_flag','steps'],how='left')
-
- group_steps_base=pd.merge(group_steps_base,data_y_smooth_tq_max,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,data_y_smooth_tq_mode,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,data_y_smooth_yv_max,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,data_y_smooth_yv_mode,on=['change_flag','steps'],how='left')
-
-
- group_steps_base=pd.merge(group_steps_base,data_x1_smooth_tq_max,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,data_x1_smooth_tq_mode,on=['change_flag','steps'],how='left')
-
-
- group_steps_base=pd.merge(group_steps_base,data_x2_smooth_tq_max,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,data_x2_smooth_tq_mode,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,data_x_smooth_xv_max,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,data_x_smooth_xv_mode,on=['change_flag','steps'],how='left')
-
-
- ###关联相似度
-
- group_steps_base=pd.merge(group_steps_base,z_tq_cosine,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,z_v_cosine,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,y_tq_cosine,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,y_v_cosine,on=['change_flag','steps'],how='left')
-
- group_steps_base=pd.merge(group_steps_base,x1_tq_cosine,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,x2_tq_cosine,on=['change_flag','steps'],how='left')
- group_steps_base=pd.merge(group_steps_base,x_v_cosine,on=['change_flag','steps'],how='left')
-
-
- ##关联吊具到位时间差
-
- group_steps_base=pd.merge(group_steps_base,data_lift_onplace_delta,on=['change_flag','steps'],how='left')
-
- ##关联落座到位时间差
-
- group_steps_base=pd.merge(group_steps_base,data_seat_onplace_delta,on=['change_flag','steps'],how='left')
-
- group_steps_base=group_steps_base.round(3)
-
- return group_steps_base,group_base
-
|