123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import pandas as pd
- import numpy as np
- from datetime import datetime, timedelta
- import datetime
- from tqdm import tqdm
- from scipy.interpolate import interp1d
- from pathlib import Path
- from sklearn.decomposition import PCA
- from sklearn.linear_model import LinearRegression
- from ZlwlAlgosCommon.utils.ProUtils import *
- from ZlwlAlgosCommon.service.iotp.IotpAlgoService import IotpAlgoService
- from ZlwlAlgosCommon.service.iotp.Beans import DataField
- from ZlwlAlgosCommon.orm.models import *
-
- from Data_Cleaning_oop_thr import DataCleaning
- sn_list = pd.read_csv('/home/limingze/zlwl-algos/USER/limingze/REFANGZHEN/丰田通商.csv')
- sn_list = sn_list['pack_code'].tolist()
- start_time = datetime.datetime.strptime("2023-7-1 00:00:00", '%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d %H:%M:%S')
- end_time = datetime.datetime.strptime("2023-7-8 00:00:00", '%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d %H:%M:%S')
- cur_env = 'dev' # 设置运行环境
- app_path = "/home/limingze/zlwl-algos/" # 设置app绝对路径
- sysUtils = SysUtils(cur_env, app_path)
- hbase_params = sysUtils.get_cf_param('hbase-datafactory')
- iotp_service = IotpAlgoService(hbase_params=hbase_params)
- columns = [ DataField.time, DataField.sn, DataField.pack_crnt, DataField.pack_soc,
- DataField.cell_voltage, DataField.cell_temp, DataField.bms_sta]
- for sn in sn_list:
- df_data = iotp_service.get_data(sn_list=[sn], columns=columns, start_time=start_time, end_time=end_time)
- data_clean = DataCleaning(df_data)
- data_clean = data_clean.revise_status_codes()
- data_clean['time'] = pd.to_datetime(df_data['time'])
- data_clean['bms_sta_change'] = data_clean['bms_sta'].shift(-1) - data_clean['bms_sta']
- charge_index = data_clean[(data_clean['bms_sta_change'] == 18) | (data_clean['bms_sta_change'] == 21)].index
- discharge_index = data_clean[(data_clean['bms_sta_change'] == -18) | (data_clean['bms_sta_change'] == -21)].index
- data_clean.to_csv('/home/limingze/zlwl-algos/USER/limingze/REFANGZHEN/ceshi.py')
- if (len(charge_index) != 0) & (len(discharge_index) != 0):
- if len(charge_index) > len(discharge_index):
- num_cycle = len(discharge_index)
- elif len(charge_index) == len(discharge_index):
- num_cycle = len(discharge_index) -1
- if num_cycle > 0:
- for j in tqdm(range(num_cycle)):
- result_df = data_clean[data_clean['time'].between(data_clean.loc[charge_index[j], 'time'], data_clean.loc[charge_index[j+1], 'time'])]
- result_df = result_df.reset_index(drop=True)
|