import pandas as pd import numpy as np from datetime import datetime from datetime import timedelta def cal_gps_score(df): '''在获取信号,优、良、合格、掉线的比例之后,计算gps的总评分''' score=0 for index in range(len(df)): time_percent=df.loc[index,'累计时间占比'] if df.loc[index,'GPS质量']=='优': score+=time_percent*0 elif df.loc[index,'GPS质量']=='良': score+=time_percent*0.3 elif df.loc[index,'GPS质量']=='合格': score+=time_percent*0.5 elif df.loc[index,'GPS质量']=='掉线': score+=time_percent*1 return (1-score)*100 def gps_rank(df_gps_signal_table,df_gps,signal_rank,dist_factor): '''gps信号质量分析函数,需要输入表格,df_gps,信号等级,权重''' gps_signal_condition=(df_gps['gps_signal']==signal_rank) dist=df_gps.loc[gps_signal_condition,'distance'].values.sum() deltatime=df_gps.loc[gps_signal_condition,'deltatime'].values.sum() df_gps_signal_table_condition=(df_gps_signal_table['gps_signal']==signal_rank) df_gps_signal_table.loc[df_gps_signal_table_condition,'accum_distance']=dist/1000 df_gps_signal_table.loc[df_gps_signal_table_condition,'accum_deltatime']=deltatime df_gps_signal_table.loc[df_gps_signal_table_condition,'accum_distance_factor']=dist/1000*dist_factor return df_gps_signal_table def get_df_gps_score(starttime,endtime,df_gps): '''对df_gps中的gps质量进行评分,返回一个数值''' test_start_time=starttime#'2021-05-29 17:16:39' test_end_time=endtime#'2021-05-29 20:08:08' test_time_condition=(df_gps['time']>test_start_time)&(df_gps['time']