Data_Analyse2.py 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. from LIB.BACKEND import DBManager
  2. from LIB.MIDDLE.CellStateEstimation.Common import log
  3. import datetime
  4. import pandas as pd
  5. import numpy as np
  6. import os
  7. from DataPreProcessMGMC import DataPreProcess
  8. from scipy import stats
  9. #log信息配置
  10. mylog=log.Mylog('log.txt','error')
  11. mylog.logcfg()
  12. dbManager = DBManager.DBManager()
  13. dataSOH = pd.read_excel('sn-20210903.xlsx',sheet_name='MGMC')
  14. fileNames = dataSOH['sn']
  15. fileNames = list(fileNames)
  16. data_GMGC=[]
  17. for k in range(len(fileNames)):
  18. try:
  19. sn = fileNames[k]
  20. 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')
  21. data_bms = df_data['bms']
  22. data_bms['sn'] = sn
  23. 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)
  24. unique_status_idx = np.unique(df_sheetCat.data_split_by_status.values)
  25. data_result = pd.DataFrame()
  26. list_result = []
  27. for n in unique_status_idx:
  28. list_result.append(df_sheetCat[df_sheetCat.data_split_by_status==n])
  29. maxI=[]
  30. modI=[]
  31. lenI=[]
  32. temp1_start=[]
  33. temp2_start=[]
  34. temp1_fin=[]
  35. temp2_fin=[]
  36. time_start=[]
  37. time_fin=[]
  38. time_drivefin=[]
  39. temp1_drivefin=[]
  40. temp2_drivefin=[]
  41. sn=[]
  42. for i in range(1,len(list_result)):
  43. if list_result[i]['data_status'].values[0]=='charge':
  44. maxI.append(max(list_result[i]['总电流[A]'].values[:10]))
  45. modI.append(stats.mode(list_result[i]['总电流[A]'].values[:10])[0][0])
  46. lenI.append(len(list_result[i]['总电流[A]'].values))
  47. temp1_start.append(list_result[i]['单体温度1'].values[0])
  48. temp2_start.append(list_result[i]['单体温度2'].values[0])
  49. temp1_fin.append(list_result[i]['单体温度1'].values[-1])
  50. temp2_fin.append(list_result[i]['单体温度2'].values[-1])
  51. time_start.append(list_result[i]['时间戳'].values[0])
  52. time_fin.append(list_result[i]['时间戳'].values[-1])
  53. time_drivefin.append(list_result[i-1]['时间戳'].values[0])
  54. temp1_drivefin.append(list_result[i-1]['单体温度1'].values[0])
  55. temp2_drivefin.append(list_result[i-1]['单体温度2'].values[0])
  56. sn.append(list_result[i]['sn'].values[0])
  57. dic={"初始充电电流max":maxI,"初始充电电流mod":modI,"电流长度":lenI,"初始充电温度1":temp1_start,"初始充电温度2":temp2_start,
  58. "结束充电温度1":temp1_fin,"结束充电温度2":temp2_fin,"初始充电时间":time_start,
  59. "结束充电时间":time_fin,"行驶结束时间":time_drivefin,"行驶结束温度1":temp1_drivefin,
  60. "行驶结束温度2":temp2_drivefin,"sn":sn}
  61. df_analyse=pd.DataFrame(dic)
  62. data_analyse=df_analyse[df_analyse['电流长度'].values>5]
  63. mean_temp1=[]
  64. mean_temp2=[]
  65. mean_temp3=[]
  66. time_diff_stand=[]
  67. time_diff_charge=[]
  68. for i in range(len(data_analyse)):
  69. meantemp1=(data_analyse['初始充电温度1'].values[i]+data_analyse['初始充电温度2'].values[i])/2
  70. mean_temp1.append(meantemp1)
  71. meantemp2=(data_analyse['结束充电温度1'].values[i]+data_analyse['结束充电温度2'].values[i])/2
  72. mean_temp2.append(meantemp2)
  73. meantemp3=(data_analyse['行驶结束温度1'].values[i]+data_analyse['行驶结束温度2'].values[i])/2
  74. mean_temp3.append(meantemp3)
  75. td_charge=float(np.diff([data_analyse['初始充电时间'].values[i],data_analyse['结束充电时间'].values[i]])/np.timedelta64(1, 'm'))
  76. time_diff_charge.append(td_charge)
  77. td_stand=float(np.diff([data_analyse['行驶结束时间'].values[i],data_analyse['初始充电时间'].values[i]])/np.timedelta64(1, 'm'))
  78. time_diff_stand.append(td_stand)
  79. data_analyse['初始充电温度']=mean_temp1
  80. data_analyse['结束充电温度']=mean_temp2
  81. data_analyse['行驶结束温度']=mean_temp3
  82. data_analyse['闲置时长']=time_diff_stand
  83. data_analyse['充电时长']=time_diff_charge
  84. diff_temp=[]
  85. for i in range(len(data_analyse)):
  86. difftemp=data_analyse['结束充电温度'].values[i]-data_analyse['初始充电温度'].values[i]
  87. diff_temp.append(difftemp)
  88. data_analyse['充电温差']=diff_temp
  89. data_select=data_analyse[data_analyse['充电时长'].values>5]
  90. data_select.to_csv('data'+sn+'.csv')
  91. data_GMGC.append(data_select)
  92. data_GMGC.to_csv('dataGMGC.csv')
  93. except Exception as e:
  94. print(repr(e))
  95. mylog.logopt(sn,e)
  96. pass