temp_curve.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import pandas as pd
  2. import numpy as np
  3. from datetime import datetime, timedelta
  4. import datetime
  5. from tqdm import tqdm
  6. from scipy.interpolate import interp1d
  7. from pathlib import Path
  8. from sklearn.decomposition import PCA
  9. from sklearn.linear_model import LinearRegression
  10. from ZlwlAlgosCommon.utils.ProUtils import *
  11. from ZlwlAlgosCommon.service.iotp.IotpAlgoService import IotpAlgoService
  12. from ZlwlAlgosCommon.service.iotp.Beans import DataField
  13. from ZlwlAlgosCommon.orm.models import *
  14. from Data_Cleaning_oop_thr import DataCleaning
  15. sn_list = pd.read_csv('/home/limingze/zlwl-algos/USER/limingze/REFANGZHEN/丰田通商.csv')
  16. sn_list = sn_list['pack_code'].tolist()
  17. start_time = datetime.datetime.strptime("2023-7-1 00:00:00", '%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d %H:%M:%S')
  18. end_time = datetime.datetime.strptime("2023-7-8 00:00:00", '%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d %H:%M:%S')
  19. cur_env = 'dev' # 设置运行环境
  20. app_path = "/home/limingze/zlwl-algos/" # 设置app绝对路径
  21. sysUtils = SysUtils(cur_env, app_path)
  22. hbase_params = sysUtils.get_cf_param('hbase-datafactory')
  23. iotp_service = IotpAlgoService(hbase_params=hbase_params)
  24. columns = [ DataField.time, DataField.sn, DataField.pack_crnt, DataField.pack_soc,
  25. DataField.cell_voltage, DataField.cell_temp, DataField.bms_sta]
  26. for sn in sn_list:
  27. df_data = iotp_service.get_data(sn_list=[sn], columns=columns, start_time=start_time, end_time=end_time)
  28. data_clean = DataCleaning(df_data)
  29. data_clean = data_clean.revise_status_codes()
  30. data_clean['time'] = pd.to_datetime(df_data['time'])
  31. data_clean['bms_sta_change'] = data_clean['bms_sta'].shift(-1) - data_clean['bms_sta']
  32. charge_index = data_clean[(data_clean['bms_sta_change'] == 18) | (data_clean['bms_sta_change'] == 21)].index
  33. discharge_index = data_clean[(data_clean['bms_sta_change'] == -18) | (data_clean['bms_sta_change'] == -21)].index
  34. data_clean.to_csv('/home/limingze/zlwl-algos/USER/limingze/REFANGZHEN/ceshi.py')
  35. if (len(charge_index) != 0) & (len(discharge_index) != 0):
  36. if len(charge_index) > len(discharge_index):
  37. num_cycle = len(discharge_index)
  38. elif len(charge_index) == len(discharge_index):
  39. num_cycle = len(discharge_index) -1
  40. if num_cycle > 0:
  41. for j in tqdm(range(num_cycle)):
  42. result_df = data_clean[data_clean['time'].between(data_clean.loc[charge_index[j], 'time'], data_clean.loc[charge_index[j+1], 'time'])]
  43. result_df = result_df.reset_index(drop=True)