lmstack 3 years ago
parent
commit
294bc5e146
1 changed files with 123 additions and 0 deletions
  1. 123 0
      LIB/MIDDLE/WinterCharging/V1_0_1/Data_Analyse2.py

+ 123 - 0
LIB/MIDDLE/WinterCharging/V1_0_1/Data_Analyse2.py

@@ -0,0 +1,123 @@
+from LIB.BACKEND import DBManager
+from LIB.MIDDLE.CellStateEstimation.Common import log
+import datetime
+import pandas as pd
+import numpy as np
+import os   
+from DataPreProcessMGMC import DataPreProcess
+from scipy import stats
+
+#log信息配置
+mylog=log.Mylog('log.txt','error')
+mylog.logcfg()
+
+dbManager = DBManager.DBManager()
+dataSOH = pd.read_excel('sn-20210903.xlsx',sheet_name='MGMC')
+fileNames = dataSOH['sn']
+fileNames = list(fileNames)
+
+data_GMGC=[]
+for k in range(len(fileNames)):
+
+    try:    
+        sn = fileNames[k]
+        df_data = dbManager.get_data(sn=sn, start_time='2021-10-15 00:00:00', end_time='2021-11-06 00:00:00', data_groups='bms')
+        data_bms = df_data['bms']
+        data_bms['sn'] = sn
+        df_sheetCat = DataPreProcess.data_split_by_status(DataPreProcess,data_bms, drive_interval_threshold=120, charge_interval_threshold=300, drive_stand_threshold=120, charge_stand_threshold=300)
+        unique_status_idx = np.unique(df_sheetCat.data_split_by_status.values)
+        data_result = pd.DataFrame()
+        list_result = []
+        for n in unique_status_idx:
+            list_result.append(df_sheetCat[df_sheetCat.data_split_by_status==n]) 
+        
+        maxI=[]
+        modI=[]
+        lenI=[]
+        temp1_start=[]
+        temp2_start=[]
+        temp1_fin=[]
+        temp2_fin=[]
+        time_start=[]
+        time_fin=[]
+        time_drivefin=[]
+        temp1_drivefin=[]
+        temp2_drivefin=[]
+        sn=[]
+        
+        for i in range(1,len(list_result)):
+        if list_result[i]['data_status'].values[0]=='charge':
+            
+                maxI.append(max(list_result[i]['总电流[A]'].values[:10]))
+                modI.append(stats.mode(list_result[i]['总电流[A]'].values[:10])[0][0])
+                lenI.append(len(list_result[i]['总电流[A]'].values))
+                temp1_start.append(list_result[i]['单体温度1'].values[0])
+                temp2_start.append(list_result[i]['单体温度2'].values[0])
+                temp1_fin.append(list_result[i]['单体温度1'].values[-1])
+                temp2_fin.append(list_result[i]['单体温度2'].values[-1])
+                time_start.append(list_result[i]['时间戳'].values[0])
+                time_fin.append(list_result[i]['时间戳'].values[-1])
+                time_drivefin.append(list_result[i-1]['时间戳'].values[0])
+                temp1_drivefin.append(list_result[i-1]['单体温度1'].values[0])
+                temp2_drivefin.append(list_result[i-1]['单体温度2'].values[0])           
+                sn.append(list_result[i]['sn'].values[0])
+        dic={"初始充电电流max":maxI,"初始充电电流mod":modI,"电流长度":lenI,"初始充电温度1":temp1_start,"初始充电温度2":temp2_start,
+            "结束充电温度1":temp1_fin,"结束充电温度2":temp2_fin,"初始充电时间":time_start,
+            "结束充电时间":time_fin,"行驶结束时间":time_drivefin,"行驶结束温度1":temp1_drivefin,
+            "行驶结束温度2":temp2_drivefin,"sn":sn}
+        df_analyse=pd.DataFrame(dic)
+
+        data_analyse=df_analyse[df_analyse['电流长度'].values>5]
+
+        mean_temp1=[]
+        mean_temp2=[]
+        mean_temp3=[]
+        time_diff_stand=[]
+        time_diff_charge=[]
+
+        for i in range(len(data_analyse)):
+            meantemp1=(data_analyse['初始充电温度1'].values[i]+data_analyse['初始充电温度2'].values[i])/2
+            mean_temp1.append(meantemp1)
+            meantemp2=(data_analyse['结束充电温度1'].values[i]+data_analyse['结束充电温度2'].values[i])/2
+            mean_temp2.append(meantemp2)
+            meantemp3=(data_analyse['行驶结束温度1'].values[i]+data_analyse['行驶结束温度2'].values[i])/2
+            mean_temp3.append(meantemp3)
+            td_charge=float(np.diff([data_analyse['初始充电时间'].values[i],data_analyse['结束充电时间'].values[i]])/np.timedelta64(1, 'm'))
+            time_diff_charge.append(td_charge)
+            td_stand=float(np.diff([data_analyse['行驶结束时间'].values[i],data_analyse['初始充电时间'].values[i]])/np.timedelta64(1, 'm'))
+            time_diff_stand.append(td_stand) 
+   
+        data_analyse['初始充电温度']=mean_temp1
+        data_analyse['结束充电温度']=mean_temp2
+        data_analyse['行驶结束温度']=mean_temp3
+        data_analyse['闲置时长']=time_diff_stand
+        data_analyse['充电时长']=time_diff_charge
+
+        diff_temp=[]
+        for i in range(len(data_analyse)):
+            difftemp=data_analyse['结束充电温度'].values[i]-data_analyse['初始充电温度'].values[i]
+            diff_temp.append(difftemp)
+        data_analyse['充电温差']=diff_temp
+
+        data_select=data_analyse[data_analyse['充电时长'].values>5]
+
+        data_select.to_csv('data'+sn+'.csv')
+
+    data_GMGC.append(data_select)
+    data_GMGC.to_csv('dataGMGC.csv')
+
+
+    except Exception as e:
+        print(repr(e))
+        mylog.logopt(sn,e)
+        pass  
+
+
+
+
+
+
+
+
+
+