get_file.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import pandas as pd
  2. import numpy as np
  3. from datetime import datetime
  4. import datetime
  5. from tqdm import tqdm
  6. from scipy.interpolate import interp1d
  7. from ZlwlAlgosCommon.utils.ProUtils import *
  8. from ZlwlAlgosCommon.service.iotp.IotpAlgoService import IotpAlgoService
  9. from ZlwlAlgosCommon.service.iotp.Beans import DataField
  10. from ZlwlAlgosCommon.orm.models import *
  11. from Data_Cleaning_oop_thr import DataCleaning
  12. input_file_list = '/home/limingze/zlwl-algos/USER/limingze/Inconsistency/algo_soh_zk.csv'
  13. output_path = '/home/limingze/zlwl-algos/USER/limingze/Inconsistency/Data/'
  14. t_device_path = '/home/limingze/zlwl-algos/USER/limingze/Inconsistency/t_device_zk.csv'
  15. pack_param_path = '/home/limingze/zlwl-algos/USER/limingze/Inconsistency/algo_pack_param.csv'
  16. history_file = '/home/limingze/zlwl-algos/USER/limingze/Inconsistency/Data/update.csv'
  17. df_in_list = pd.read_csv(input_file_list)
  18. t_device = pd.read_csv(t_device_path)
  19. pack_param = pd.read_csv(pack_param_path)
  20. history_df = pd.read_csv(history_file)
  21. CellVoltNums_list = []
  22. for a in tqdm(range(len(df_in_list))):
  23. sn = df_in_list['sn'][a]
  24. pack_model_a = t_device.loc[t_device['sn'] == sn, 'pack_model'].values[0]
  25. pack_param_a = pack_param.loc[pack_param['pack_code'] == pack_model_a, 'param'].values[0]
  26. CellVoltNums_a = eval(json.loads(pack_param_a)['CellVoltTotalCount'])
  27. CellVoltNums_list.append(CellVoltNums_a)
  28. CellVoltNums = max(CellVoltNums_list)
  29. cell_soc_seg_begin_chr_name = ['cell_soc_begin_chr'+str(x) for x in range(1, CellVoltNums+1)]
  30. cell_soc_seg_stop_chr_name = ['cell_soc_stop_chr'+str(x) for x in range(1, CellVoltNums+1)]
  31. cell_soc_seg_begin_dis_name = ['cell_soc_begin_dis'+str(x) for x in range(1, CellVoltNums+1)]
  32. cell_soc_seg_stop_dis_name = ['cell_soc_stop_dis'+str(x) for x in range(1, CellVoltNums+1)]
  33. pack_soc_seg_name = ['pack_soc_begin_chr','pack_soc_stop_chr','pack_soc_begin_dis','pack_soc_stop_dis']
  34. cell_soc_mmm_name = ['cell_soc_begin_chr_max','cell_soc_begin_chr_min','cell_soc_begin_chr_diff','cell_soc_begin_chr_mean',
  35. 'cell_soc_begin_dis_max','cell_soc_begin_dis_min','cell_soc_begin_dis_diff','cell_soc_begin_dis_mean']
  36. soc_name = cell_soc_seg_begin_chr_name + cell_soc_seg_stop_chr_name + cell_soc_seg_begin_dis_name + cell_soc_seg_stop_dis_name + pack_soc_seg_name + cell_soc_mmm_name
  37. soc_name.append('dod')
  38. df_soc_seg = pd.DataFrame(columns=soc_name, index=df_in_list.index)
  39. cell_delta_energy_chr_name = ['cell_delta_energy_chr'+str(x) for x in range(1, CellVoltNums+1)]
  40. cell_delta_energy_dis_name = ['cell_delta_energy_dis'+str(x) for x in range(1, CellVoltNums+1)]
  41. delta_energy_name = cell_delta_energy_chr_name + cell_delta_energy_dis_name + ['pack_delta_energy_chr'] + ['pack_delta_energy_dis']
  42. df_energy = pd.DataFrame(columns=delta_energy_name, index=df_in_list.index)
  43. cell_res_name = ['cell_res'+str(x) for x in range(1, CellVoltNums+1)]
  44. res_name = cell_res_name + ['cell_res_mean'] + ['cell_res_diff']
  45. df_res = pd.DataFrame(columns=res_name, index=df_in_list.index)
  46. sn = 'PJXCLL532S234M001'
  47. start_time = datetime.datetime.strptime('2023-5-10 04:56:00'.split()[0] + " 00:00:00", '%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d %H:%M:%S')
  48. end_time = datetime.datetime.strptime('2023-5-14 06:18:00'.split()[0] + " 23:59:59", '%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d %H:%M:%S')
  49. cur_env = 'dev' # 设置运行环境
  50. app_path = "/home/limingze/zlwl-algos/" # 设置app绝对路径
  51. sysUtils = SysUtils(cur_env, app_path)
  52. hbase_params = sysUtils.get_cf_param('hbase-datafactory')
  53. iotp_service = IotpAlgoService(hbase_params=hbase_params)
  54. columns = [ DataField.time, DataField.sn, DataField.pack_crnt, DataField.pack_volt, DataField.pack_soc,
  55. DataField.cell_voltage, DataField.cell_temp, DataField.bms_sta, DataField.cell_voltage_count]
  56. df_data = iotp_service.get_data(sn_list=[sn], columns=columns, start_time=start_time, end_time=end_time)
  57. data_clean = DataCleaning(df_data)
  58. data_clean = data_clean.revise_status_codes()
  59. data_clean['time'] = pd.to_datetime(data_clean['time'])
  60. data_clean.to_csv(output_path + str(sn) + '_' + str(start_time).split()[0] + '_' + str(end_time).split()[0] + '_ceshi.csv', encoding="utf_8_sig", index=False)