data_pre_xinwangda.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import os
  2. import pandas as pd
  3. # 定义文件夹路径
  4. def data_get(folder_path, algo_pack_param):
  5. folder_path1 = f"{folder_path}/1"
  6. folder_path2 = f"{folder_path}/2"
  7. # 获取文件夹中的所有文件和文件夹
  8. all_files1 = os.listdir(folder_path1)
  9. all_files2 = os.listdir(folder_path2)
  10. all_data = pd.DataFrame()
  11. for file in all_files1:
  12. df = pd.read_excel(f"{folder_path1}/{file}")
  13. if not df.empty:
  14. all_data = all_data.append(df, ignore_index=True)
  15. for file in all_files2:
  16. df = pd.read_excel(f"{folder_path2}/{file}")
  17. if not df.empty:
  18. all_data = all_data.append(df, ignore_index=True)
  19. try:
  20. all_data['time'] = pd.to_datetime(all_data['time'], format='%Y-%m-%d %H:%M:%S')
  21. except:
  22. mask = all_data['time'].apply(lambda x: isinstance(x, str))
  23. all_data = all_data[~mask]
  24. all_data['time'] = pd.to_datetime(all_data['time'], format='%Y-%m-%d %H:%M:%S')
  25. all_data.sort_values(by=['time'], inplace=True)
  26. #数据处理
  27. CellVoltNums = len([col for col in df.columns if 'vol' in col])-6
  28. CellTempNums = len([col for col in df.columns if 'temp' in col])-3
  29. # CellVoltNums=int(algo_pack_param['CellVoltTotalCount'])
  30. # CellTempNums = int(algo_pack_param['CellTempTotalCount'])
  31. cellvolt_name=['cell_voltage'+str(x) for x in range(1, CellVoltNums+1)]
  32. celltemp_name=['cell_temp'+str(x) for x in range(1, CellTempNums+1)]
  33. all_data.columns = ['id','time','time1','pack_volt','pack_crnt','pack_soc'] + cellvolt_name + celltemp_name + \
  34. ['diff_vol','cell_volt_max','max_vol_num','cell_volt_min','min_vol_num','diff_temp','cell_temp_max',
  35. 'max_temp_num','odo','insulation_resistance','speed','bms_sta','dcdc']
  36. all_data['cell_temp_min'] = all_data[celltemp_name].min(axis=1)
  37. all_data['pack_volt'] = all_data['pack_volt']/1000
  38. all_data['pack_crnt'] = all_data['pack_crnt']/1000
  39. return all_data, cellvolt_name, celltemp_name