lmstack 3 年 前
コミット
4903ab9542

+ 13 - 13
.gitignore

@@ -1,13 +1,13 @@
-*.txt
-./USER
-/FILES
-/USER
-/.vscode/
-/*/__pycache__/
-/*/*/__pycache__/
-/*.ipynb
-*.csv
-*.doc
-*.ppt
-*.tmp
-!/demo.ipynb
+*.txt
+./USER
+/FILES
+/USER
+/.vscode/
+/*/__pycache__/
+/*/*/__pycache__/
+/*.ipynb
+*.csv
+*.doc
+*.ppt
+*.tmp
+!/demo.ipynb

+ 5 - 5
CONFIGURE/PathSetting.py

@@ -1,6 +1,6 @@
-__author__ = 'Wang Liming'
-
-base_path = 'F:\work\QX\data_analyze_platform'
-
-backend_path = base_path + '\LIB\BACKEND'
+__author__ = 'Wang Liming'
+
+base_path = 'F:\work\QX\data_analyze_platform'
+
+backend_path = base_path + '\LIB\BACKEND'
 middle_path = base_path + '\LIB\MIDDLE'

+ 348 - 348
LIB/BACKEND/DBManager.py

@@ -1,348 +1,348 @@
-'''
-暂时采用http方式获取历史数据。
-
-预留:后期若改用通过访问数据库的形式进行数据的获取,则本文件负责数据库的连接,sql指令的执行,数据获取等功能。
-'''
-__author__ = 'Wang Liming'
-
-
-from re import S
-import time
-import datetime
-import os
-import urllib.request
-import time
-import pandas as pd
-import numpy as np
-import json
-import requests
-import pdb
-
-
-# import http.client
-# http.client.HTTPConnection._http_vsn = 10
-# http.client.HTTPConnection._http_vsn_str = 'HTTP/1.1'
-class DBManager():
-
-    def __init__(self, host='', port='', auth='', db='', username='', password=''):
-        pass
-
-    def __enter__(self):
-        self.connect()
-        return self
-
-    def __exit__(self):
-        self.close()
-
-    def connect(self):
-        conn_success_flag = 0
-        while not conn_success_flag:
-            try:
-                pass # 连接数据库
-            except Exception as e:
-                conn_success_flag = 0
-                time.sleep(5)
-            else:
-                conn_success_flag = 1
-                pass # 连接成功, 获取cursor
-    def close(self):
-        try:
-            pass # 断开数据库
-        except Exception as e:
-            print(e)
-        else:
-            print('数据库已断开连接')
-
-    # 以下各个函数实现 通过http方式获取数据
-    @staticmethod
-    def _get_var_name(cellnum,Tempnum,Othernum):
-        temp = []
-        for i in range(cellnum):
-            temp.append('单体电压'+str(i+1))
-        for i in range(Tempnum):
-            temp.append('单体温度'+str(i+1))
-        for i in range(Othernum):
-            temp.append('其他温度'+str(i+1))
-        return temp
-
-    @staticmethod
-    def _download_json_data(url):
-        '''
-        返回json数据的生成器,一次一行
-        '''
-
-        i = 0
-        while 1:
-            try:
-                r = requests.get(url, stream=True, timeout=100,  headers={'Connection':'close'})
-                break
-            except requests.exceptions.RequestException as e:
-                if (i == 0):
-                    print()
-                print('\r' + 'Server Error, retry {}......'.format(str(i)), end=" ")
-                time.sleep(5)
-                i+=1
-        # print(r.content)
-        # pdb.set_trace()    
-        for line in r.iter_lines():
-            if line:
-                yield json.loads(line)
-
-    @staticmethod
-    def _convert_to_dataframe_bms(data, mode=0):
-        CellU = []
-        CellT = []
-        OtherT = []
-        CellU_Num = 0
-        CellT_Num = 0
-        OtherT_Num = 0
-        CellU_Num = len(data['ffBatteryStatus']['cellVoltageList'])
-        CellT_Num = len(data['ffBatteryStatus']['cellTempList'])
-        try:
-            OtherT_Num = len(data['ffBatteryStatus']['otherTempList'])
-        except:
-            OtherT_Num = 0
-        for i in range(CellU_Num):
-            CellU.append(data['ffBatteryStatus']['cellVoltageList'][i]*1000)
-        for i in range(CellT_Num):
-            CellU.append(data['ffBatteryStatus']['cellTempList'][i])
-        for i in range(OtherT_Num):
-            CellU.append(data['ffBatteryStatus']['otherTempList'][i])
-        if mode == 0:
-            data_len = 15
-            
-            data_block = np.array([data['info']['obdTime'],data['ffBatteryStatus']['rssi'],data['ffBatteryStatus']['errorLevel'],data['ffBatteryStatus']['errorCode']
-                    ,data['ffBatteryStatus']['current'],data['ffBatteryStatus']['voltageInner'],data['ffBatteryStatus']['voltageOutter'],
-                    data['ffBatteryStatus']['totalOutputState'],data['ffBatteryStatus']['lockedState'],
-                    data['ffBatteryStatus']['chargeState'],data['ffBatteryStatus']['heatState'],data['ffBatteryStatus']['cellVoltageDiff']
-                    ,data['ffBatteryStatus']['soc'],data['ffBatteryStatus']['soh'],data['ffBatteryStatus']['cellVolBalance']]).reshape(1,data_len)
-        elif mode == 1:
-            data_len = 11
-            
-            data_block = np.array([data['info']['obdTime'],data['ffBatteryStatus']['rssi']
-            ,data['ffBatteryStatus'].get('errorLevel'),data['ffBatteryStatus'].get('errorCode'),data['ffBatteryStatus']['switchState']
-            ,data['ffBatteryStatus']['current'],data['ffBatteryStatus']['voltageInner'],data['ffBatteryStatus']['chargeState'],
-            data['ffBatteryStatus']['cellVoltageDiff'],data['ffBatteryStatus']['soc'],data['ffBatteryStatus']['soh']]).reshape(1,data_len)
-        data_block = np.append(data_block,CellU)
-        data_block = np.append(data_block,CellT)
-        data_block = np.append(data_block,OtherT)
-        data_block = data_block.reshape(1,len(data_block))
-        return data_block,CellU_Num,CellT_Num,OtherT_Num
-
-    @staticmethod
-    def _convert_to_dataframe_gps(data, mode=0):
-        if mode == 0:
-            if data['info']['subType'] == 1:
-                data_block = np.array([data['info']['obdTime'],data['ffGps']['locationType'], data['ffGps']['satellites'],
-                                       data['ffGps']['latitude'],data['ffGps']['longitude'],data['ffGps']['speed'], 
-                                       data['ffGps']['altitude'], data['ffGps']['direction']]).reshape(1,8)
-                df = pd.DataFrame(
-                    columns=['时间戳','定位类型', '卫星数','纬度','经度','速度[km/h]','海拔','航向'],data=data_block)
-            elif data['info']['subType'] == 2:
-                df = pd.DataFrame(
-                    columns=['时间戳','定位类型', '卫星数','纬度','经度','速度[km/h]','海拔','航向'])
-        if mode == 1:
-                data_block = np.array([data['info']['obdTime'],data['ffGps']['locationType'],data['ffGps']['latitude'],data['ffGps']['longitude']
-                    ,data['ffGps']['speed'], data['ffGps']['isValid']]).reshape(1,6)
-                df = pd.DataFrame(
-                    columns=['时间戳','定位类型', '纬度','经度','速度[km/h]','有效位'],data=data_block)
-        return df
-
-    
-    @staticmethod
-    def _convert_to_dataframe_system(data, mode=0):
-        if mode == 0:
-            
-            data_block = np.array([data['info']['obdTime'],data['ffSystemInfo']['heatTargetTemp'], data['ffSystemInfo']['heatTimeout'],
-                                    time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(data['ffSystemInfo']['rentalStartTime'])/1000)),
-                                    data['ffSystemInfo']['rentalPeriodDays'],data['ffSystemInfo']['bmsInterval'], 
-                                    data['ffSystemInfo']['gpsInterval']]).reshape(1,7)
-            df = pd.DataFrame(
-                columns=['时间戳','加热目标温度', '加热超时','租赁开始时间','租赁天数','bms上传周期','gps上传周期'],data=data_block)
-        if mode == 1:
-                df = pd.DataFrame()
-
-        return df
-    
-    @staticmethod
-    def _convert_to_dataframe_accum(data, mode=0):
-        if mode == 0:
-            
-            data_block = np.array([data['info']['obdTime'],data['ffBatteryAccum']['SOH_AlgUnexTime'], data['ffBatteryAccum']['CHG_AHaccum'],
-                                    data['ffBatteryAccum']['CHG_PHaccum'], data['ffBatteryAccum']['DSG_AHaccum'],
-                                    data['ffBatteryAccum']['DSG_PHaccum'],data['ffBatteryAccum']['OverTemp_CHG_AHaccum'], 
-                                    data['ffBatteryAccum']['OverTemp_CHG_PHaccum']]).reshape(1,8)
-            df = pd.DataFrame(
-                columns=['时间戳','SOH未标定时间', '累计充电电量','累计充电能量','累计放电电量','累计放电能量',
-                                               '累计高温充电电量', '累计高温充电能量'],data=data_block)
-
-        if mode == 1:
-                data_block = np.array([data['info']['obdTime'], data['ffBatteryAccum']['CHG_AHaccum'],
-                                    data['ffBatteryAccum']['CHG_PHaccum'], data['ffBatteryAccum']['DSG_AHaccum'],
-                                    data['ffBatteryAccum']['DSG_PHaccum'],data['ffBatteryAccum']['totalMileage']]).reshape(1,6)
-                df = pd.DataFrame(
-                    columns=['时间戳','累计充电电量','累计充电能量','累计放电电量','累计放电能量', '累积里程'],data=data_block)
-        return df
-    
-    @staticmethod
-    def _get_data(urls,type_name,mode=0):
-        if type_name == 'bms':
-            if mode == 0:
-                name_const = ['时间戳','GSM信号','故障等级','故障代码','总电流[A]','总电压[V]', '外电压', '总输出状态', '上锁状态', '充电状态','加热状态',
-                              '单体压差', 'SOC[%]','SOH[%]','单体均衡状态']
-            elif mode == 1:
-                name_const = ['时间戳','GSM信号','故障等级', '故障代码','开关状态', '总电流[A]','总电压[V]','充电状态', '单体压差', 'SOC[%]','SOH[%]']
-            i=0
-            CellUNum = 0
-            CellTNum = 0
-            OtherTNumm = 0
-            st = time.time()
-            for line in DBManager._download_json_data(urls):
-                et = time.time()
-                if i==0:
-                    data_blocks,CellUNum,CellTNum,OtherTNumm = DBManager._convert_to_dataframe_bms(line, mode)
-                    i+=1
-                    continue
-                try:
-                    data_block,CellUNum,CellTNum,OtherTNumm = DBManager._convert_to_dataframe_bms(line, mode)
-                except:
-                    continue
-                data_blocks = np.concatenate((data_blocks,data_block),axis=0)
-                # print('\r'+str(i),end=" ")
-                # print(data_block)
-                # print(urls)
-                # print(time.time()-et)
-                i+=1
-            name_var = DBManager._get_var_name(CellUNum,CellTNum,OtherTNumm)
-            name_const.extend(name_var)
-            columns_name = name_const
-            if i==0:
-                data_blocks = []
-            df_all = pd.DataFrame(columns=columns_name,data=data_blocks)
-            if not df_all.empty:
-                df_all.loc[:,'时间戳'] = df_all.loc[:,'时间戳'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(x)/1000)))
-            return df_all
-        elif type_name =='gps':
-            if mode == 0:
-                df_all = pd.DataFrame(columns=['时间戳','定位类型', '卫星数','纬度','经度','速度[km/h]','海拔','航向'])
-            elif mode == 1:
-                df_all = pd.DataFrame(columns=['时间戳','定位类型', '纬度','经度','速度[km/h]','有效位'])
-            
-            for line in DBManager._download_json_data(urls):
-                df_add = DBManager._convert_to_dataframe_gps(line, mode)
-                df_all = df_all.append(df_add,ignore_index=True)
-            if not df_all.empty:
-                df_all.loc[:,'时间戳'] = df_all.loc[:,'时间戳'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(x)/1000)))
-            return df_all
-        elif type_name =='system':
-            if mode == 0:
-                df_all = pd.DataFrame(columns=['时间戳','加热目标温度', '加热超时','租赁开始时间','租赁天数','bms上传周期','gps上传周期'])
-            elif mode == 1:
-                df_all = pd.DataFrame()
-            for line in DBManager._download_json_data(urls):
-                df_add = DBManager._convert_to_dataframe_system(line, mode)
-                df_all = df_all.append(df_add,ignore_index=True)
-            if not df_all.empty:
-                df_all.loc[:,'时间戳'] = df_all.loc[:,'时间戳'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(x)/1000)))
-            return df_all
-        
-        elif type_name =='accum':
-            if mode == 0:
-                df_all = pd.DataFrame(columns=['时间戳','SOH未标定时间', '累计充电电量','累计充电能量','累计放电电量','累计放电能量',
-                                               '累计高温充电电量', '累计高温充电能量'])
-            elif mode == 1:
-                df_all = pd.DataFrame(columns=['时间戳','累计充电电量','累计充电能量','累计放电电量','累计放电能量', '累积里程'])
-            for line in DBManager._download_json_data(urls):
-                df_add = DBManager._convert_to_dataframe_accum(line, mode)
-                df_all = df_all.append(df_add,ignore_index=True)
-            if not df_all.empty:
-                df_all.loc[:,'时间戳'] = df_all.loc[:,'时间戳'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(x)/1000)))
-            return df_all
-    def get_data(self, url='http://172.16.126.13/store/load?dataType={}&limit=0&sn={}', sn='', start_time='', end_time='', 
-                 data_groups=['bms', 'gps']):
-        '''
-        获取指定 sn 和起止日期的bms和gps数据.
-        添加了重试机制。
-
-        --------------输入参数------------
-        url:数据获取url, 可采用默认值
-        sn: str, 电池sn号
-        start_time: str, 开始时间
-        end_time: str, 结束时间
-        data_groups:  选择需要获取的数据组,可填入多个字符串(默认只获取bms和gps数据)
-                    bms: bms数据
-                    gps:gps数据
-                    system:system数据
-                    accum:accum数据
-        
-
-        --------------输出参数------------
-        df_data: {'bms':dataframe, 'gps':dataframe, 'system':dataframe, ;accum':dataframe}
-        '''
-        
-        if len(set(data_groups) - (set(data_groups) and set(['bms', 'gps', 'system', 'accum']))) > 0:
-            raise Exception("data_groups 参数错误")
-        
-        
-        # mode: 0:正常取数; 1:7255 取数
-        if sn[0:2] == 'UD' or sn[0:2] == 'MG':
-            mode = 1
-        else:
-            mode = 0
-        bms_all_data = pd.DataFrame()
-        gps_all_data = pd.DataFrame()
-        system_all_data = pd.DataFrame()
-        accum_all_data = pd.DataFrame()
-        maxnum = (datetime.datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S") - datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")).days +1
-        print("### start to get data {} from {} to {}".format(sn, start_time, end_time))
-        # 为避免chunkEncodingError错误,数据每天获取一次,然后将每天的数据合并,得到最终的数据
-        for j in  range(int(maxnum)):
-            timefrom = datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")+ datetime.timedelta(days=j)
-            timeto = datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")+ datetime.timedelta(days=j+1)
-            #滴滴的数据sub=0
-            if timefrom.strftime('%Y-%m-%d %H:%M:%S') >= end_time:
-                break
-            elif timeto.strftime('%Y-%m-%d %H:%M:%S') > end_time:
-                timeto = datetime.datetime.strptime(end_time, '%Y-%m-%d %H:%M:%S')
-            #print('{}_{}_----getting data----'.format(sn, timefrom))
-            bms_data = pd.DataFrame()
-            gps_data = pd.DataFrame()
-            system_data = pd.DataFrame()
-            accum_data = pd.DataFrame()
-            while True:
-                try:
-                    print('\r' + "# get data from {} to {}.........".format(str(timefrom), str(timeto)), end=" ")
-                    for data_group in data_groups:
-                        if data_group == 'bms':
-                            file_url = url.format(12, sn) + "&from="+timefrom.strftime('%Y-%m-%d %H:%M:%S')+"&to="+timeto.strftime('%Y-%m-%d %H:%M:%S')
-                            bms_data = DBManager._get_data(file_url,'bms',mode)
-                        if data_group == 'gps':
-                            file_url = url.format(16, sn) + "&from="+timefrom.strftime('%Y-%m-%d %H:%M:%S')+"&to="+timeto.strftime('%Y-%m-%d %H:%M:%S')
-                            gps_data = DBManager._get_data(file_url,'gps',mode)
-                        if data_group == 'system':
-                            file_url = url.format(13, sn) + "&from="+timefrom.strftime('%Y-%m-%d %H:%M:%S')+"&to="+timeto.strftime('%Y-%m-%d %H:%M:%S')
-                            system_data = DBManager._get_data(file_url,'system',mode)
-                        if data_group == 'accum':
-                            file_url = url.format(23, sn) + "&from="+timefrom.strftime('%Y-%m-%d %H:%M:%S')+"&to="+timeto.strftime('%Y-%m-%d %H:%M:%S')
-                            accum_data = DBManager._get_data(file_url,'accum',mode)
-                except Exception as e:
-                    if 'Connection broken' in str(e):
-                        continue
-                    else:
-                        raise Exception
-                else:
-                    bms_all_data = pd.concat([bms_all_data, bms_data], ignore_index=True)
-                    gps_all_data = pd.concat([gps_all_data, gps_data], ignore_index=True)
-                    system_all_data = pd.concat([system_all_data, system_data], ignore_index=True)
-                    accum_all_data = pd.concat([accum_all_data, accum_data], ignore_index=True)
-
-                    break
-
-        bms_all_data = bms_all_data.reset_index(drop=True)
-        gps_all_data = gps_all_data.reset_index(drop=True)
-        system_all_data = system_all_data.reset_index(drop=True)
-        accum_all_data = accum_all_data.reset_index(drop=True)
-        print('\nall data-getting done, bms_count is {}, gps_count is {}, system_count is {}, accum_count is {} \n'.format(
-            str(len(bms_all_data)), str(len(gps_all_data)), str(len(system_all_data)), str(len(accum_all_data))))
-        return {'bms':bms_all_data, 'gps':gps_all_data, 'system':system_all_data, 'accum':accum_all_data}
-
+'''
+暂时采用http方式获取历史数据。
+
+预留:后期若改用通过访问数据库的形式进行数据的获取,则本文件负责数据库的连接,sql指令的执行,数据获取等功能。
+'''
+__author__ = 'Wang Liming'
+
+
+from re import S
+import time
+import datetime
+import os
+import urllib.request
+import time
+import pandas as pd
+import numpy as np
+import json
+import requests
+import pdb
+
+
+# import http.client
+# http.client.HTTPConnection._http_vsn = 10
+# http.client.HTTPConnection._http_vsn_str = 'HTTP/1.1'
+class DBManager():
+
+    def __init__(self, host='', port='', auth='', db='', username='', password=''):
+        pass
+
+    def __enter__(self):
+        self.connect()
+        return self
+
+    def __exit__(self):
+        self.close()
+
+    def connect(self):
+        conn_success_flag = 0
+        while not conn_success_flag:
+            try:
+                pass # 连接数据库
+            except Exception as e:
+                conn_success_flag = 0
+                time.sleep(5)
+            else:
+                conn_success_flag = 1
+                pass # 连接成功, 获取cursor
+    def close(self):
+        try:
+            pass # 断开数据库
+        except Exception as e:
+            print(e)
+        else:
+            print('数据库已断开连接')
+
+    # 以下各个函数实现 通过http方式获取数据
+    @staticmethod
+    def _get_var_name(cellnum,Tempnum,Othernum):
+        temp = []
+        for i in range(cellnum):
+            temp.append('单体电压'+str(i+1))
+        for i in range(Tempnum):
+            temp.append('单体温度'+str(i+1))
+        for i in range(Othernum):
+            temp.append('其他温度'+str(i+1))
+        return temp
+
+    @staticmethod
+    def _download_json_data(url):
+        '''
+        返回json数据的生成器,一次一行
+        '''
+
+        i = 0
+        while 1:
+            try:
+                r = requests.get(url, stream=True, timeout=100,  headers={'Connection':'close'})
+                break
+            except requests.exceptions.RequestException as e:
+                if (i == 0):
+                    print()
+                print('\r' + 'Server Error, retry {}......'.format(str(i)), end=" ")
+                time.sleep(5)
+                i+=1
+        # print(r.content)
+        # pdb.set_trace()    
+        for line in r.iter_lines():
+            if line:
+                yield json.loads(line)
+
+    @staticmethod
+    def _convert_to_dataframe_bms(data, mode=0):
+        CellU = []
+        CellT = []
+        OtherT = []
+        CellU_Num = 0
+        CellT_Num = 0
+        OtherT_Num = 0
+        CellU_Num = len(data['ffBatteryStatus']['cellVoltageList'])
+        CellT_Num = len(data['ffBatteryStatus']['cellTempList'])
+        try:
+            OtherT_Num = len(data['ffBatteryStatus']['otherTempList'])
+        except:
+            OtherT_Num = 0
+        for i in range(CellU_Num):
+            CellU.append(data['ffBatteryStatus']['cellVoltageList'][i]*1000)
+        for i in range(CellT_Num):
+            CellU.append(data['ffBatteryStatus']['cellTempList'][i])
+        for i in range(OtherT_Num):
+            CellU.append(data['ffBatteryStatus']['otherTempList'][i])
+        if mode == 0:
+            data_len = 15
+            
+            data_block = np.array([data['info']['obdTime'],data['ffBatteryStatus']['rssi'],data['ffBatteryStatus']['errorLevel'],data['ffBatteryStatus']['errorCode']
+                    ,data['ffBatteryStatus']['current'],data['ffBatteryStatus']['voltageInner'],data['ffBatteryStatus']['voltageOutter'],
+                    data['ffBatteryStatus']['totalOutputState'],data['ffBatteryStatus']['lockedState'],
+                    data['ffBatteryStatus']['chargeState'],data['ffBatteryStatus']['heatState'],data['ffBatteryStatus']['cellVoltageDiff']
+                    ,data['ffBatteryStatus']['soc'],data['ffBatteryStatus']['soh'],data['ffBatteryStatus']['cellVolBalance']]).reshape(1,data_len)
+        elif mode == 1:
+            data_len = 11
+            
+            data_block = np.array([data['info']['obdTime'],data['ffBatteryStatus']['rssi']
+            ,data['ffBatteryStatus'].get('errorLevel'),data['ffBatteryStatus'].get('errorCode'),data['ffBatteryStatus']['switchState']
+            ,data['ffBatteryStatus']['current'],data['ffBatteryStatus']['voltageInner'],data['ffBatteryStatus']['chargeState'],
+            data['ffBatteryStatus']['cellVoltageDiff'],data['ffBatteryStatus']['soc'],data['ffBatteryStatus']['soh']]).reshape(1,data_len)
+        data_block = np.append(data_block,CellU)
+        data_block = np.append(data_block,CellT)
+        data_block = np.append(data_block,OtherT)
+        data_block = data_block.reshape(1,len(data_block))
+        return data_block,CellU_Num,CellT_Num,OtherT_Num
+
+    @staticmethod
+    def _convert_to_dataframe_gps(data, mode=0):
+        if mode == 0:
+            if data['info']['subType'] == 1:
+                data_block = np.array([data['info']['obdTime'],data['ffGps']['locationType'], data['ffGps']['satellites'],
+                                       data['ffGps']['latitude'],data['ffGps']['longitude'],data['ffGps']['speed'], 
+                                       data['ffGps']['altitude'], data['ffGps']['direction']]).reshape(1,8)
+                df = pd.DataFrame(
+                    columns=['时间戳','定位类型', '卫星数','纬度','经度','速度[km/h]','海拔','航向'],data=data_block)
+            elif data['info']['subType'] == 2:
+                df = pd.DataFrame(
+                    columns=['时间戳','定位类型', '卫星数','纬度','经度','速度[km/h]','海拔','航向'])
+        if mode == 1:
+                data_block = np.array([data['info']['obdTime'],data['ffGps']['locationType'],data['ffGps']['latitude'],data['ffGps']['longitude']
+                    ,data['ffGps']['speed'], data['ffGps']['isValid']]).reshape(1,6)
+                df = pd.DataFrame(
+                    columns=['时间戳','定位类型', '纬度','经度','速度[km/h]','有效位'],data=data_block)
+        return df
+
+    
+    @staticmethod
+    def _convert_to_dataframe_system(data, mode=0):
+        if mode == 0:
+            
+            data_block = np.array([data['info']['obdTime'],data['ffSystemInfo']['heatTargetTemp'], data['ffSystemInfo']['heatTimeout'],
+                                    time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(data['ffSystemInfo']['rentalStartTime'])/1000)),
+                                    data['ffSystemInfo']['rentalPeriodDays'],data['ffSystemInfo']['bmsInterval'], 
+                                    data['ffSystemInfo']['gpsInterval']]).reshape(1,7)
+            df = pd.DataFrame(
+                columns=['时间戳','加热目标温度', '加热超时','租赁开始时间','租赁天数','bms上传周期','gps上传周期'],data=data_block)
+        if mode == 1:
+                df = pd.DataFrame()
+
+        return df
+    
+    @staticmethod
+    def _convert_to_dataframe_accum(data, mode=0):
+        if mode == 0:
+            
+            data_block = np.array([data['info']['obdTime'],data['ffBatteryAccum']['SOH_AlgUnexTime'], data['ffBatteryAccum']['CHG_AHaccum'],
+                                    data['ffBatteryAccum']['CHG_PHaccum'], data['ffBatteryAccum']['DSG_AHaccum'],
+                                    data['ffBatteryAccum']['DSG_PHaccum'],data['ffBatteryAccum']['OverTemp_CHG_AHaccum'], 
+                                    data['ffBatteryAccum']['OverTemp_CHG_PHaccum']]).reshape(1,8)
+            df = pd.DataFrame(
+                columns=['时间戳','SOH未标定时间', '累计充电电量','累计充电能量','累计放电电量','累计放电能量',
+                                               '累计高温充电电量', '累计高温充电能量'],data=data_block)
+
+        if mode == 1:
+                data_block = np.array([data['info']['obdTime'], data['ffBatteryAccum']['CHG_AHaccum'],
+                                    data['ffBatteryAccum']['CHG_PHaccum'], data['ffBatteryAccum']['DSG_AHaccum'],
+                                    data['ffBatteryAccum']['DSG_PHaccum'],data['ffBatteryAccum']['totalMileage']]).reshape(1,6)
+                df = pd.DataFrame(
+                    columns=['时间戳','累计充电电量','累计充电能量','累计放电电量','累计放电能量', '累积里程'],data=data_block)
+        return df
+    
+    @staticmethod
+    def _get_data(urls,type_name,mode=0):
+        if type_name == 'bms':
+            if mode == 0:
+                name_const = ['时间戳','GSM信号','故障等级','故障代码','总电流[A]','总电压[V]', '外电压', '总输出状态', '上锁状态', '充电状态','加热状态',
+                              '单体压差', 'SOC[%]','SOH[%]','单体均衡状态']
+            elif mode == 1:
+                name_const = ['时间戳','GSM信号','故障等级', '故障代码','开关状态', '总电流[A]','总电压[V]','充电状态', '单体压差', 'SOC[%]','SOH[%]']
+            i=0
+            CellUNum = 0
+            CellTNum = 0
+            OtherTNumm = 0
+            st = time.time()
+            for line in DBManager._download_json_data(urls):
+                et = time.time()
+                if i==0:
+                    data_blocks,CellUNum,CellTNum,OtherTNumm = DBManager._convert_to_dataframe_bms(line, mode)
+                    i+=1
+                    continue
+                try:
+                    data_block,CellUNum,CellTNum,OtherTNumm = DBManager._convert_to_dataframe_bms(line, mode)
+                except:
+                    continue
+                data_blocks = np.concatenate((data_blocks,data_block),axis=0)
+                # print('\r'+str(i),end=" ")
+                # print(data_block)
+                # print(urls)
+                # print(time.time()-et)
+                i+=1
+            name_var = DBManager._get_var_name(CellUNum,CellTNum,OtherTNumm)
+            name_const.extend(name_var)
+            columns_name = name_const
+            if i==0:
+                data_blocks = []
+            df_all = pd.DataFrame(columns=columns_name,data=data_blocks)
+            if not df_all.empty:
+                df_all.loc[:,'时间戳'] = df_all.loc[:,'时间戳'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(x)/1000)))
+            return df_all
+        elif type_name =='gps':
+            if mode == 0:
+                df_all = pd.DataFrame(columns=['时间戳','定位类型', '卫星数','纬度','经度','速度[km/h]','海拔','航向'])
+            elif mode == 1:
+                df_all = pd.DataFrame(columns=['时间戳','定位类型', '纬度','经度','速度[km/h]','有效位'])
+            
+            for line in DBManager._download_json_data(urls):
+                df_add = DBManager._convert_to_dataframe_gps(line, mode)
+                df_all = df_all.append(df_add,ignore_index=True)
+            if not df_all.empty:
+                df_all.loc[:,'时间戳'] = df_all.loc[:,'时间戳'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(x)/1000)))
+            return df_all
+        elif type_name =='system':
+            if mode == 0:
+                df_all = pd.DataFrame(columns=['时间戳','加热目标温度', '加热超时','租赁开始时间','租赁天数','bms上传周期','gps上传周期'])
+            elif mode == 1:
+                df_all = pd.DataFrame()
+            for line in DBManager._download_json_data(urls):
+                df_add = DBManager._convert_to_dataframe_system(line, mode)
+                df_all = df_all.append(df_add,ignore_index=True)
+            if not df_all.empty:
+                df_all.loc[:,'时间戳'] = df_all.loc[:,'时间戳'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(x)/1000)))
+            return df_all
+        
+        elif type_name =='accum':
+            if mode == 0:
+                df_all = pd.DataFrame(columns=['时间戳','SOH未标定时间', '累计充电电量','累计充电能量','累计放电电量','累计放电能量',
+                                               '累计高温充电电量', '累计高温充电能量'])
+            elif mode == 1:
+                df_all = pd.DataFrame(columns=['时间戳','累计充电电量','累计充电能量','累计放电电量','累计放电能量', '累积里程'])
+            for line in DBManager._download_json_data(urls):
+                df_add = DBManager._convert_to_dataframe_accum(line, mode)
+                df_all = df_all.append(df_add,ignore_index=True)
+            if not df_all.empty:
+                df_all.loc[:,'时间戳'] = df_all.loc[:,'时间戳'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(x)/1000)))
+            return df_all
+    def get_data(self, url='http://172.16.126.13/store/load?dataType={}&limit=0&sn={}', sn='', start_time='', end_time='', 
+                 data_groups=['bms', 'gps']):
+        '''
+        获取指定 sn 和起止日期的bms和gps数据.
+        添加了重试机制。
+
+        --------------输入参数------------
+        url:数据获取url, 可采用默认值
+        sn: str, 电池sn号
+        start_time: str, 开始时间
+        end_time: str, 结束时间
+        data_groups:  选择需要获取的数据组,可填入多个字符串(默认只获取bms和gps数据)
+                    bms: bms数据
+                    gps:gps数据
+                    system:system数据
+                    accum:accum数据
+        
+
+        --------------输出参数------------
+        df_data: {'bms':dataframe, 'gps':dataframe, 'system':dataframe, ;accum':dataframe}
+        '''
+        
+        if len(set(data_groups) - (set(data_groups) and set(['bms', 'gps', 'system', 'accum']))) > 0:
+            raise Exception("data_groups 参数错误")
+        
+        
+        # mode: 0:正常取数; 1:7255 取数
+        if sn[0:2] == 'UD' or sn[0:2] == 'MG':
+            mode = 1
+        else:
+            mode = 0
+        bms_all_data = pd.DataFrame()
+        gps_all_data = pd.DataFrame()
+        system_all_data = pd.DataFrame()
+        accum_all_data = pd.DataFrame()
+        maxnum = (datetime.datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S") - datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")).days +1
+        print("### start to get data {} from {} to {}".format(sn, start_time, end_time))
+        # 为避免chunkEncodingError错误,数据每天获取一次,然后将每天的数据合并,得到最终的数据
+        for j in  range(int(maxnum)):
+            timefrom = datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")+ datetime.timedelta(days=j)
+            timeto = datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")+ datetime.timedelta(days=j+1)
+            #滴滴的数据sub=0
+            if timefrom.strftime('%Y-%m-%d %H:%M:%S') >= end_time:
+                break
+            elif timeto.strftime('%Y-%m-%d %H:%M:%S') > end_time:
+                timeto = datetime.datetime.strptime(end_time, '%Y-%m-%d %H:%M:%S')
+            #print('{}_{}_----getting data----'.format(sn, timefrom))
+            bms_data = pd.DataFrame()
+            gps_data = pd.DataFrame()
+            system_data = pd.DataFrame()
+            accum_data = pd.DataFrame()
+            while True:
+                try:
+                    print('\r' + "# get data from {} to {}.........".format(str(timefrom), str(timeto)), end=" ")
+                    for data_group in data_groups:
+                        if data_group == 'bms':
+                            file_url = url.format(12, sn) + "&from="+timefrom.strftime('%Y-%m-%d %H:%M:%S')+"&to="+timeto.strftime('%Y-%m-%d %H:%M:%S')
+                            bms_data = DBManager._get_data(file_url,'bms',mode)
+                        if data_group == 'gps':
+                            file_url = url.format(16, sn) + "&from="+timefrom.strftime('%Y-%m-%d %H:%M:%S')+"&to="+timeto.strftime('%Y-%m-%d %H:%M:%S')
+                            gps_data = DBManager._get_data(file_url,'gps',mode)
+                        if data_group == 'system':
+                            file_url = url.format(13, sn) + "&from="+timefrom.strftime('%Y-%m-%d %H:%M:%S')+"&to="+timeto.strftime('%Y-%m-%d %H:%M:%S')
+                            system_data = DBManager._get_data(file_url,'system',mode)
+                        if data_group == 'accum':
+                            file_url = url.format(23, sn) + "&from="+timefrom.strftime('%Y-%m-%d %H:%M:%S')+"&to="+timeto.strftime('%Y-%m-%d %H:%M:%S')
+                            accum_data = DBManager._get_data(file_url,'accum',mode)
+                except Exception as e:
+                    if 'Connection broken' in str(e):
+                        continue
+                    else:
+                        raise Exception
+                else:
+                    bms_all_data = pd.concat([bms_all_data, bms_data], ignore_index=True)
+                    gps_all_data = pd.concat([gps_all_data, gps_data], ignore_index=True)
+                    system_all_data = pd.concat([system_all_data, system_data], ignore_index=True)
+                    accum_all_data = pd.concat([accum_all_data, accum_data], ignore_index=True)
+
+                    break
+
+        bms_all_data = bms_all_data.reset_index(drop=True)
+        gps_all_data = gps_all_data.reset_index(drop=True)
+        system_all_data = system_all_data.reset_index(drop=True)
+        accum_all_data = accum_all_data.reset_index(drop=True)
+        print('\nall data-getting done, bms_count is {}, gps_count is {}, system_count is {}, accum_count is {} \n'.format(
+            str(len(bms_all_data)), str(len(gps_all_data)), str(len(system_all_data)), str(len(accum_all_data))))
+        return {'bms':bms_all_data, 'gps':gps_all_data, 'system':system_all_data, 'accum':accum_all_data}
+

+ 487 - 487
LIB/BACKEND/DataPreProcess.py

@@ -1,488 +1,488 @@
-'''
-数据预处理类
-
-'''
-__author__ = 'Wang Liming'
-
-
-import CONFIGURE.PathSetting as PathSetting
-import sys
-sys.path.append(PathSetting.backend_path)
-from os import defpath
-import pandas as pd
-import numpy as np
-import pdb
-from numba import jit
-import Tools
-
-class DataPreProcess:
-    def __init__(self):
-        self.tools = Tools.Tools()
-        pass
-
-    # def data_split(self, dfin, drive_interval_threshold=120, charge_interval_threshold=300, 
-    #                            drive_stand_threshold=120, charge_stand_threshold=300,
-    #                            default_time_threshold = 300, drive_time_threshold=300, charge_time_threshold=300, 
-    #                            stand_time_threshold = 1800):
-    #     '''
-    #     数据分段函数,会调用_data_split_by_status和_data_split_by_time函数。
-    #     其中_data_split_by_status 将数据分为charge、drive、stand、和none段;
-    #     _data_split_by_time 将每个段内的数据,根据时间跳变继续分段。
-
-    #     '''
-    def time_filter(self, df_bms, df_gps):
-        df_bms.drop_duplicates(subset=['时间戳'], keep='first', inplace=True)
-        df_gps.drop_duplicates(subset=['时间戳'], keep='first', inplace=True)
-        df_bms = df_bms.reset_index(drop=True)
-        df_gps = df_gps.reset_index(drop=True)
-        return df_bms, df_gps
-
-    def data_split_by_status(self, dfin, drive_interval_threshold=120, charge_interval_threshold=300, 
-                                    drive_stand_threshold=120, charge_stand_threshold=300):
-        '''
-        # 数据预处理分段, 将原始数据段分为 charge、drive、stand、none段
-        # 状态判断
-        # 1、drive:(状态为2或3 且 存在电流>0 ) 或 (电流持续为0 且 持续时间<阈值 且 上一段数据为行车)
-        # 2、charge:(状态为2或3 且 不存在电流>0 ) 或 (电流持续为0 且 持续时间<阈值 且 上一段数据为充电)
-        # 3、stand:(电流持续为0 且 是数据段的第一段) 或 (电流持续为0 且 持续时间>阈值)
-        # 4、none: 其他
-
-        --------------输入参数-------------:
-        drive_interval_threshold: 行车段拼接阈值,如果两段行车的间隔时间小于该值,则两段行车合并。
-        charge_interval_threshold: 充电段拼接阈值,如果两段充电的间隔时间小于该值,则两段充电合并。
-        drive_stand_threshold: 静置段合并至行车段阈值,如果静置时间小于该值,则合并到上一段的行车中。
-        charge_stand_threshold: 静置段合并至充电段阈值,如果静置时间小于该值,则合并到上一段的充电中。
-
-        --------------输出-----------------:
-        在原始数据后面,增加data_split_by_crnt, data_split_by_status, data_status 三列
-        data_split_by_crnt: 按电流分段的序号
-        data_split_by_status:按电流和状态分段的序号
-        data_status: 状态标识
-        '''
-        # 首先根据电流是否为0 ,将数据分段
-        df = dfin.copy()
-        df['时间戳'] = pd.to_datetime(df['时间戳'])
-        
-        crnt_zero_or_not = df['总电流[A]']==0
-        last_crnt_flag = crnt_zero_or_not[0]
-        temp = 1
-        group_id = [temp]
-        for cur_crnt_flag in crnt_zero_or_not[1:]:
-            if last_crnt_flag ^ cur_crnt_flag:
-                temp = temp + 1
-            last_crnt_flag = cur_crnt_flag
-            group_id.append(temp)
-        df['data_split_by_crnt'] = group_id
-
-        # 然后判断每个段内的 充电状态及电流=0持续时长,决定当前状态
-        temp = 1
-        last_status = ""
-        status_id = []
-        status_list = []
-        data_number_list = sorted(list(set(df['data_split_by_crnt'])))
-
-        for data_number in data_number_list:
-            df_sel = df[df['data_split_by_crnt'] == data_number]
-            origin_index = list(df_sel.index)
-            df_sel = df_sel.reset_index(drop=True)
-            temp_2 = 0
-            # 如果当前数据段的电流非0,则可能分为charge、drive或none段
-            if df_sel.loc[0,'总电流[A]'] != 0:
-                # 电流 分段中可能存在状态变化的时刻, 内部根据状态进行分段.
-                # 该数据段内部,根据bms状态信号进行二次分段
-                status_drive_or_not = df_sel['充电状态']==3
-                last_status_flag = status_drive_or_not[0]
-                temp_2 = 0
-                group_id_2 = [temp_2]
-                for cur_status_flag in status_drive_or_not[1:]:
-                    if last_status_flag ^ cur_status_flag:
-                        temp_2 = temp_2 + 1
-                    last_status_flag = cur_status_flag
-                    group_id_2.append(temp_2)
-                
-                # 遍历二次状态分段
-                temp_2 = 0
-                last_status_2 = last_status
-                df_sel['index'] = group_id_2
-                data_number_list_2 = sorted(list(set(group_id_2)))
-                for data_number_2 in data_number_list_2:
-                    
-                    df_sel_2 = df_sel[df_sel['index'] == data_number_2]
-                    df_sel_2 = df_sel_2.reset_index(drop=True)
-                    
-                    # 根据bms状态 及 电流符号决定是charge还是drive
-                    # 如果状态为2或3, 且电流均<=0 则记为充电
-                    if df_sel_2.loc[0, '充电状态'] in [2, 3] and len(df_sel_2[df_sel_2['总电流[A]'] > 0]) == 0: 
-                        cur_status = 'charge'
-                    # 如果状态为2或3,且存在电流>0 则记为行车
-                    elif df_sel_2.loc[0, '充电状态'] in [2, 3] and len(df_sel_2[df_sel_2['总电流[A]'] > 0]) > 0: 
-                        cur_status = 'drive'
-                    # 否则 记为none
-                    else:
-                        cur_status = 'none'
-                    status_list.extend([cur_status] * len(df_sel_2))
-                    
-                    # 状态id号与前面电流为0的相同状态进行合并, 均判断应不应该与上一段合并    
-                    if origin_index[0] == 0: # 如果是所有数据的起始段数据,则直接赋值id号
-                        status_id.extend([temp + temp_2]*len(df_sel_2))
-                    
-                    else: # 判断是否与上一段数据合并
-                        deltaT = (df.loc[origin_index[0], '时间戳'] - df.loc[origin_index[0]-1, '时间戳']).total_seconds()
-                        # 如果 状态一致, 且 间隔时间小于阈值,则合并
-                        if last_status_2 == 'drive' and cur_status == last_status_2 and deltaT < drive_interval_threshold: 
-                            temp_2 = temp_2 - 1  
-                            status_id.extend([temp + temp_2]*len(df_sel_2)) 
-                        # 如果状态一致, 且 间隔时间小于阈值,则合并
-                        elif last_status_2 == 'charge' and cur_status == last_status_2 and deltaT < charge_interval_threshold: 
-                            temp_2 = temp_2 - 1  
-                            status_id.extend([temp + temp_2]*len(df_sel_2)) 
-                        else:
-                            status_id.extend([temp + temp_2]*len(df_sel_2))
-                    temp_2 = temp_2 + 1
-                    last_status_2 = status_list[-1]
-                temp_2 = temp_2 - 1
-            else:
-                # 如果当前数据段的电流为0,则可能分为stand,charge、drive或none段
-                if origin_index[0] == 0: # 如果是数据的起始,则无论长短,都认为是stand
-                    status_id.extend([temp]*len(df_sel))
-                    status_list.extend(['stand'] * len(df_sel))
-                else: # 不是数据的起始
-                    cur_deltaT = (df.loc[origin_index[-1], '时间戳'] - df.loc[origin_index[0], '时间戳']).total_seconds()
-                    if last_status == 'charge': # 如果上一个状态为充电
-                        if cur_deltaT < charge_stand_threshold: # 如果本次电流为0的持续时间小于 阈值,则合并
-                            status_list.extend(['charge'] * len(df_sel))
-                            temp = temp - 1  
-                            status_id.extend([temp]*len(df_sel))
-                        else: # 否则超过了阈值,记为stand
-                            status_id.extend([temp]*len(df_sel))
-                            status_list.extend(['stand'] * len(df_sel))
-                    elif last_status == 'drive': # 如果上一个状态为行车
-                        if cur_deltaT < drive_stand_threshold: # 如果本次电流为0的持续时间小于 阈值,则合并
-                            status_list.extend(['drive'] * len(df_sel))
-                            temp = temp - 1  
-                            status_id.extend([temp]*len(df_sel))
-                        else: # 否则超过了阈值,记为stand
-                            status_id.extend([temp]*len(df_sel))
-                            status_list.extend(['stand'] * len(df_sel))
-                    elif last_status == 'none': # 如果上一个状态未知
-                        status_id.extend([temp] * len(df_sel))
-                        status_list.extend(['stand'] * len(df_sel))
-            temp = temp + temp_2 + 1
-            last_status = status_list[-1] # 上一组状态
-        df['data_split_by_status'] = status_id
-        df['data_status'] = status_list
-        return df
-    def data_split_by_time(self, dfin, default_time_threshold = 300, drive_time_threshold=300, charge_time_threshold=300, 
-                                        stand_time_threshold = 1800):
-        '''
-        # 该函数用来解决数据丢失问题导致的分段序号异常,
-        # 将经过data_split_by_status分段后的数据,每个段内两行数据的时间跳变如果超过阈值,则继续分为两段
-
-        --------------输入参数-------------:
-        dfin:  调用data_split_by_status之后的函数
-        default_time_threshold: 默认时间阈值,如果状态内部时间跳变大于该值,则划分为两段
-        drive_time_threshold: 行车时间阈值,如果行车状态内部时间跳变大于该值,则划分为两段
-        charge_time_threshold: 充电时间阈值,如果充电状态内部时间跳变大于该值,则划分为两段
-        stand_time_threshold:静置时间阈值,如果静置状态内部时间跳变大于该值,则划分为两段
-
-        --------------输出-----------------:
-        在输入数据后面,增加data_split_by_status_time 一列
-        data_split_by_status_time: 按照状态和时间分段后的序号
-        '''  
-        data_id = []
-        temp = 1
-        data_number_list = sorted(list(set(dfin['data_split_by_status'])))
-        for data_number in data_number_list:
-            # if data_number == 1203:
-            #     pdb.set_trace()
-            status = list(dfin[dfin['data_split_by_status']==data_number]['data_status'])[0]
-            cur_indexes = dfin[dfin['data_split_by_status']==data_number].index
-            
-            time_array = np.array(dfin[dfin['data_split_by_status']==data_number]['时间戳'])
-            time_diff = np.diff(time_array)
-            time_diff = time_diff.astype(np.int64)
-            time_interval = default_time_threshold
-            if status == 'drive':
-                time_interval = drive_time_threshold
-            elif status == 'charge':
-                time_interval = charge_time_threshold
-            elif status == 'stand':
-                time_interval = stand_time_threshold
-            time_diff_index = (np.argwhere(((time_diff/1e9) > time_interval)==True))[:,0]
-            time_diff_origin_index = cur_indexes[time_diff_index]+1
-            if len(time_diff_index) == 0:
-                data_id.extend([temp] * len(cur_indexes))
-                temp += 1
-            else:
-                last_index = cur_indexes[0]
-                for index, cur_index in enumerate(time_diff_origin_index):
-                    if index == len(time_diff_origin_index)-1: # 如果是最后一个index,则
-                        data_id.extend([temp]* (cur_index-last_index))
-                        last_index = cur_index
-                        temp += 1
-                        data_id.extend([temp]* (cur_indexes[-1]-last_index+1))
-                    else:
-                        data_id.extend([temp]* (cur_index-last_index))
-                    last_index = cur_index
-                    temp += 1
-        dfin['data_split_by_status_time'] = data_id
-        return dfin
-    def combine_drive_stand(self, dfin):
-        '''
-        合并放电和静置段:将两次充电之间的所有数据段合并为一段, 状态分为 charge 和not charge
-        ---------------输入----------
-        dfin: 调用data_split_by_status()后输出的bms数据
-
-        ---------------输出----------
-        在输入数据后面,增加data_split_by_status_after_combine, data_status_after_combine 两列
-        data_split_by_status_after_combine: 将两次充电间的数据合并后的段序号
-        data_status_after_combine: 每段数据的状态标识
-        '''
-        df = dfin.copy()
-        data_split_by_status_1 = []
-        data_status_1 = []
-        number = 1
-        first_flag = True
-        data_number_list = sorted(list(set(df['data_split_by_status_time'])))
-        for data_number in data_number_list:
-            status = list(df[df['data_split_by_status_time']==data_number]['data_status'])
-            cur_status = status[0]
-            if first_flag:
-                first_flag = False
-            elif (last_status not in ['charge'] and cur_status in ['charge']) or (last_status in ['charge'] and cur_status not in ['charge']):
-                number += 1
-
-            data_split_by_status_1.extend([number]*len(status))
-            if cur_status in ['charge']:
-                data_status_1.extend(['charge']*len(status))
-            else:
-                data_status_1.extend(['not charge']*len(status))
-
-            last_status = cur_status
-        df['data_split_by_status_after_combine'] = data_split_by_status_1
-        df['data_status_after_combine'] = data_status_1
-
-        return df
-
-    def cal_stand_time(self, dfin):
-        '''
-        # 计算静置时间
-        # 将每次行车或充电的前后静置时间,赋值给stand_time 列, 单位为分钟
-
-        ----------------输入参数---------
-        dfin: 调用data_split_by_status()后输出的bms数据
-
-        ----------------输出参数----------
-        在输入数据后面,增加stand_time列
-        stand_time : 在行车段或充电段的起止两个位置处,表明开始前和结束后的静置时长,单位为分钟
-
-        '''
-        df = dfin.copy()
-        stand_time = []
-        first_flag = True
-        data_number_list = sorted(list(set(df['data_split_by_status_time'])))
-        for index, data_number in enumerate(data_number_list):
-            status = list(df[df['data_split_by_status_time']==data_number]['data_status'])
-            time =  list(df[df['data_split_by_status_time']==data_number]['时间戳'])
-            cur_status = status[0]
-            cur_delta_time = (time[-1]-time[0]).total_seconds() / 60.0 # 分钟
-            if len(status) >= 2:
-                if first_flag:
-                    first_flag = False
-                    if index < len(data_number_list)-1:
-                        if cur_status in ['charge', 'drive']:
-                            next_status = list(df[df['data_split_by_status_time']==data_number_list[index+1]]['data_status'])[0]
-                            stand_time.extend([None]*(len(status)-1))
-                            if next_status == 'stand':
-                                next_time =  list(df[df['data_split_by_status_time']==data_number_list[index+1]]['时间戳'])
-                                stand_time.extend([(next_time[-1]-next_time[0]).total_seconds() / 60.0])
-                            else:
-                                stand_time.extend([0])
-                        else:
-                            stand_time.extend([None]*len(status))
-                    else:
-                        stand_time.extend([None]*len(status))      
-                else:
-                    if cur_status in ['charge', 'drive']:
-                        if last_status == 'stand':
-                            stand_time.extend([last_delta_time])
-                        else:
-                            stand_time.extend([0])
-                        stand_time.extend([None]*(len(status)-2))
-                        if index < len(data_number_list)-1:
-                            next_status = list(df[df['data_split_by_status_time']==data_number_list[index+1]]['data_status'])[0]
-                            if next_status == 'stand':
-                                next_time =  list(df[df['data_split_by_status_time']==data_number_list[index+1]]['时间戳'])
-                                stand_time.extend([(next_time[-1]-next_time[0]).total_seconds() / 60.0])
-                            else:
-                                stand_time.extend([0])
-                        else:
-                            stand_time.extend([None])
-                    else:
-                        stand_time.extend([None]*len(status))
-                        
-            else:
-                stand_time.extend([None])
-            last_status = cur_status
-            last_delta_time = cur_delta_time
-        df['stand_time'] = stand_time
-        return df
-
-    # 输入GPS数据,返回本段数据的累积里程,及平均时速(如果两点之间)
-    @jit
-    def _cal_odo_speed(self, lat_list, long_list, time_list):
-        '''
-        输入:经度列表, 纬度列表, 时间列表;
-        输出:每两个经纬度坐标之间的距离,以及速度 的数组
-        '''
-        dis_array = []
-        speed_array = []
- 
-        for i in range(len(lat_list)-1):
-            dis = self.tools.cal_distance(lat_list[i],long_list[i], lat_list[i+1],long_list[i+1])
-            dis_array.append(dis)
-            deltaT = abs(time_list[i] - time_list[i+1]).total_seconds()
-            speed_array.append(dis * 3600.0/deltaT)
-        return np.array(dis_array), np.array(speed_array)
-
-    def gps_data_judge(self, df_bms, df_gps, time_diff_thre=300, odo_sum_thre=200, drive_spd_thre=80, parking_spd_thre=2):
-        '''
-        GPS数据可靠性判断函数(基于combine前的分段)
-
-        GPS数据出现以下情况时,判定为不可靠:
-        1)如果该段对应的地理位置数据 少于2 个,则认为不可靠
-        2)如果截取的GPS数据的起止时间,与BMS数据段的起止时间相差超过阈值,则认为不可靠
-        3)如果行车段 累积里程超过阈值,车速超过阈值
-        4) 如果非行车段 车速超过阈值
-
-        --------------输入参数--------------:
-        time_diff_thre: 时间差阈值
-        odo_sum_thre: 累积里程阈值
-        drive_spd_thre: 行车车速阈值
-        parking_spd_thre: 非行车状态车速阈值
-
-        --------------输出参数--------------:
-        df_bms 增加一列gps_rely, 表明对应的GPS数据是否可靠。
-                1:可靠
-                <0: 表示不可靠的原因
-        df_gps 增加两列odo, speed, 分别表示前后两点间的距离和速度
-        '''
-        df_gps['时间戳'] = pd.to_datetime(df_gps['时间戳'])
-        res_record = {'drive':0, 'charge':0, 'stand':0, 'none':0, 'total':0}
-        rely_list = []
-        df_gps['odo'] = [None] * len(df_gps)
-        df_gps['speed'] = [None] * len(df_gps)
-        data_number_list = sorted(list(set(df_bms['data_split_by_status_time'])))
-        for data_number in data_number_list[:]:
-            df_sel = df_bms[df_bms['data_split_by_status_time'] == data_number]
-            df_sel = df_sel.reset_index(drop=True)
-            df_sel_gps = df_gps[(df_gps['时间戳']>=df_sel.loc[0,'时间戳']) & (df_gps['时间戳']<=df_sel.loc[len(df_sel)-1,'时间戳'])]
-            origin_index = list(df_sel_gps.index)
-            df_sel_gps = df_sel_gps.reset_index(drop=True)
-            # 如果当前段数据对应的地理位置数据少于2个
-            if len(df_sel_gps) <= 1:
-                rely_list.extend([-1]*len(df_sel))
-                res_record[str(df_sel.loc[0, 'data_status'])] = res_record[str(df_sel.loc[0, 'data_status'])] + 1
-                continue
-            # 如果GPS 起止时间段和BMS数据相差超过阈值
-            if abs(df_sel_gps.loc[0, '时间戳'] - df_sel.loc[0,'时间戳']).total_seconds() > time_diff_thre or \
-               abs(df_sel_gps.loc[len(df_sel_gps)-1, '时间戳'] - df_sel.loc[len(df_sel)-1,'时间戳']).total_seconds() > time_diff_thre:
-                rely_list.extend([-2]*len(df_sel))
-                res_record[str(df_sel.loc[0, 'data_status'])] = res_record[str(df_sel.loc[0, 'data_status'])] + 1
-                continue
-
-            # 计算该段数据每两点之间的里程以及速度
-            dis_array, speed_array = self._cal_odo_speed(df_sel_gps['纬度'], df_sel_gps['经度'], df_sel_gps['时间戳'])
-            # 如果 累积里程异常 或 平均车速异常 或两点间车速异常
-            avg_speed = np.sum(dis_array) *3600.0 / abs(df_sel_gps.loc[0, '时间戳'] - df_sel_gps.loc[len(df_sel_gps)-1, '时间戳']).total_seconds()
-            if np.sum(dis_array) > odo_sum_thre or avg_speed > drive_spd_thre or (speed_array > drive_spd_thre).any():
-                rely_list.extend([-3]*len(df_sel))
-                res_record[str(df_sel.loc[0, 'data_status'])] = res_record[str(df_sel.loc[0, 'data_status'])] + 1
-                continue
-            
-            # 如果停车,且 平均时速超过阈值,则不可靠
-            if (str(df_sel.loc[0, 'data_status']) == 'charge' or str(df_sel.loc[0, 'data_status']) == 'stand') and avg_speed > parking_spd_thre :
-                rely_list.extend([-4]*len(df_sel))
-                res_record[str(df_sel.loc[0, 'data_status'])] = res_record[str(df_sel.loc[0, 'data_status'])] + 1
-                continue
-            # 剩下的记录为可靠
-            rely_list.extend([1]*len(df_sel))
-            df_gps.loc[origin_index[1:], 'odo'] = dis_array
-            df_gps.loc[origin_index[1:], 'speed'] = speed_array
-        df_bms['gps_rely'] = rely_list
-        res_record['total'] = (res_record['drive'] + res_record['charge'] + res_record['stand'] + res_record['none'] )/df_bms['data_split_by_status_time'].max()
-        if len(set(df_bms[df_bms['data_status']=='drive']['data_split_by_status_time'])) > 0:
-            res_record['drive'] = (res_record['drive'])/len(set(df_bms[df_bms['data_status']=='drive']['data_split_by_status_time']))
-        if len(set(df_bms[df_bms['data_status']=='charge']['data_split_by_status_time'])) > 0:
-            res_record['charge'] = (res_record['charge'])/len(set(df_bms[df_bms['data_status']=='charge']['data_split_by_status_time']))
-        if len(set(df_bms[df_bms['data_status']=='stand']['data_split_by_status_time'])) > 0:
-            res_record['stand'] = (res_record['stand'])/len(set(df_bms[df_bms['data_status']=='stand']['data_split_by_status_time']))
-        if len(set(df_bms[df_bms['data_status']=='none']['data_split_by_status_time'])) > 0:
-            res_record['none'] = (res_record['none'])/len(set(df_bms[df_bms['data_status']=='none']['data_split_by_status_time']))
-        return df_bms, df_gps, res_record
-
-
-    def data_gps_judge_after_combine(self, df_bms, df_gps, time_diff_thre=600, odo_sum_thre=200, drive_spd_thre=80, parking_spd_thre=2):
-        '''
-        GPS数据可靠性判断函数2 (基于combine后的分段) 判别方式同data_gps_judge
-        '''
-        df_gps['时间戳'] = pd.to_datetime(df_gps['时间戳'])
-        res_record = {'not charge':0, 'charge':0, 'total':0} # 不可靠的比例
-
-        rely_list = []
-        df_gps['odo_after_combine'] = [None] * len(df_gps)
-        df_gps['speed_after_combine'] = [None] * len(df_gps)
- 
-        data_number_list = sorted(list(set(df_bms['data_split_by_status_after_combine'])))
-        for data_number in data_number_list[:]:
-            df_sel = df_bms[df_bms['data_split_by_status_after_combine'] == data_number]
-            df_sel = df_sel.reset_index(drop=True)
-
-            # 尝试采用drive段的开始和结束时间选择GPS数据,因为stand时GPS数据可能存在丢失,影响里程的计算
-            df_sel_drive = df_sel[df_sel['data_status']=='drive'] # 
-            df_sel_drive = df_sel_drive.reset_index(drop=True)
-            if df_sel_drive.empty:
-                df_sel_1 = df_sel
-            else:
-                df_sel_1 = df_sel_drive
-            df_sel_gps = df_gps[(df_gps['时间戳']>=df_sel_1.loc[0,'时间戳']) & (df_gps['时间戳']<=df_sel_1.loc[len(df_sel_1)-1,'时间戳'])]
-            origin_index = list(df_sel_gps.index)
-            df_sel_gps = df_sel_gps.reset_index(drop=True)
-            # 如果当前段数据对应的地理位置数据少于2个
-            if len(df_sel_gps) <= 1:
-                rely_list.extend([-1]*len(df_sel))
-                res_record[str(df_sel.loc[0, 'data_status_after_combine'])] = res_record[str(df_sel.loc[0, 'data_status_after_combine'])] + 1
-                continue
-            # 如果GPS 起止时间段和BMS数据相差超过阈值
-            if abs(df_sel_gps.loc[0, '时间戳'] - df_sel_1.loc[0,'时间戳']).total_seconds() > time_diff_thre or \
-                abs(df_sel_gps.loc[len(df_sel_gps)-1, '时间戳'] - df_sel_1.loc[len(df_sel_1)-1,'时间戳']).total_seconds() > time_diff_thre:
-                rely_list.extend([-2]*len(df_sel))
-                res_record[str(df_sel.loc[0, 'data_status_after_combine'])] = res_record[str(df_sel.loc[0, 'data_status_after_combine'])] + 1
-                continue
-
-            # 计算该段数据每两点之间的里程以及速度
-            dis_array, speed_array = self._cal_odo_speed(df_sel_gps['纬度'], df_sel_gps['经度'], df_sel_gps['时间戳'])
-            # 如果 累积里程异常 或 平均车速异常 或两点间车速异常
-            avg_speed = np.sum(dis_array) *3600.0 / abs(df_sel_gps.loc[0, '时间戳'] - df_sel_gps.loc[len(df_sel_gps)-1, '时间戳']).total_seconds()
-            if np.sum(dis_array) > odo_sum_thre or avg_speed > drive_spd_thre or (speed_array > drive_spd_thre).any():
-                rely_list.extend([-3]*len(df_sel))
-                res_record[str(df_sel.loc[0, 'data_status_after_combine'])] = res_record[str(df_sel.loc[0, 'data_status_after_combine'])] + 1
-                continue
-            
-            # 如果充电,且 平均时速超过阈值,则不可靠
-            if str(df_sel.loc[0, 'data_status_after_combine']) == 'charge' and avg_speed > parking_spd_thre:
-                rely_list.extend([-4]*len(df_sel))
-                res_record[str(df_sel.loc[0, 'data_status_after_combine'])] = res_record[str(df_sel.loc[0, 'data_status_after_combine'])] + 1
-                continue
-            # 剩下的记录为可靠
-            rely_list.extend([1]*len(df_sel))
-            df_gps.loc[origin_index[1:], 'odo_after_combine'] = dis_array
-            df_gps.loc[origin_index[1:], 'speed_after_combine'] = speed_array
-        df_bms['gps_rely_after_combine'] = rely_list
-        res_record['total'] = (res_record['not charge'] + res_record['charge'])/df_bms['data_split_by_status_after_combine'].max()
-        if len(set(df_bms[df_bms['data_status_after_combine']=='not charge']['data_split_by_status_after_combine'])) > 0:
-            res_record['not charge'] = (res_record['not charge'])/len(set(df_bms[df_bms['data_status_after_combine']=='not charge']['data_split_by_status_after_combine']))
-        if len(set(df_bms[df_bms['data_status_after_combine']=='charge']['data_split_by_status_after_combine'])) > 0 :
-            res_record['charge'] = (res_record['charge'])/len(set(df_bms[df_bms['data_status_after_combine']=='charge']['data_split_by_status_after_combine']))
-        return df_bms, df_gps, res_record
+'''
+数据预处理类
+
+'''
+__author__ = 'Wang Liming'
+
+
+import CONFIGURE.PathSetting as PathSetting
+import sys
+sys.path.append(PathSetting.backend_path)
+from os import defpath
+import pandas as pd
+import numpy as np
+import pdb
+from numba import jit
+import Tools
+
+class DataPreProcess:
+    def __init__(self):
+        self.tools = Tools.Tools()
+        pass
+
+    # def data_split(self, dfin, drive_interval_threshold=120, charge_interval_threshold=300, 
+    #                            drive_stand_threshold=120, charge_stand_threshold=300,
+    #                            default_time_threshold = 300, drive_time_threshold=300, charge_time_threshold=300, 
+    #                            stand_time_threshold = 1800):
+    #     '''
+    #     数据分段函数,会调用_data_split_by_status和_data_split_by_time函数。
+    #     其中_data_split_by_status 将数据分为charge、drive、stand、和none段;
+    #     _data_split_by_time 将每个段内的数据,根据时间跳变继续分段。
+
+    #     '''
+    def time_filter(self, df_bms, df_gps):
+        df_bms.drop_duplicates(subset=['时间戳'], keep='first', inplace=True)
+        df_gps.drop_duplicates(subset=['时间戳'], keep='first', inplace=True)
+        df_bms = df_bms.reset_index(drop=True)
+        df_gps = df_gps.reset_index(drop=True)
+        return df_bms, df_gps
+
+    def data_split_by_status(self, dfin, drive_interval_threshold=120, charge_interval_threshold=300, 
+                                    drive_stand_threshold=120, charge_stand_threshold=300):
+        '''
+        # 数据预处理分段, 将原始数据段分为 charge、drive、stand、none段
+        # 状态判断
+        # 1、drive:(状态为2或3 且 存在电流>0 ) 或 (电流持续为0 且 持续时间<阈值 且 上一段数据为行车)
+        # 2、charge:(状态为2或3 且 不存在电流>0 ) 或 (电流持续为0 且 持续时间<阈值 且 上一段数据为充电)
+        # 3、stand:(电流持续为0 且 是数据段的第一段) 或 (电流持续为0 且 持续时间>阈值)
+        # 4、none: 其他
+
+        --------------输入参数-------------:
+        drive_interval_threshold: 行车段拼接阈值,如果两段行车的间隔时间小于该值,则两段行车合并。
+        charge_interval_threshold: 充电段拼接阈值,如果两段充电的间隔时间小于该值,则两段充电合并。
+        drive_stand_threshold: 静置段合并至行车段阈值,如果静置时间小于该值,则合并到上一段的行车中。
+        charge_stand_threshold: 静置段合并至充电段阈值,如果静置时间小于该值,则合并到上一段的充电中。
+
+        --------------输出-----------------:
+        在原始数据后面,增加data_split_by_crnt, data_split_by_status, data_status 三列
+        data_split_by_crnt: 按电流分段的序号
+        data_split_by_status:按电流和状态分段的序号
+        data_status: 状态标识
+        '''
+        # 首先根据电流是否为0 ,将数据分段
+        df = dfin.copy()
+        df['时间戳'] = pd.to_datetime(df['时间戳'])
+        
+        crnt_zero_or_not = df['总电流[A]']==0
+        last_crnt_flag = crnt_zero_or_not[0]
+        temp = 1
+        group_id = [temp]
+        for cur_crnt_flag in crnt_zero_or_not[1:]:
+            if last_crnt_flag ^ cur_crnt_flag:
+                temp = temp + 1
+            last_crnt_flag = cur_crnt_flag
+            group_id.append(temp)
+        df['data_split_by_crnt'] = group_id
+
+        # 然后判断每个段内的 充电状态及电流=0持续时长,决定当前状态
+        temp = 1
+        last_status = ""
+        status_id = []
+        status_list = []
+        data_number_list = sorted(list(set(df['data_split_by_crnt'])))
+
+        for data_number in data_number_list:
+            df_sel = df[df['data_split_by_crnt'] == data_number]
+            origin_index = list(df_sel.index)
+            df_sel = df_sel.reset_index(drop=True)
+            temp_2 = 0
+            # 如果当前数据段的电流非0,则可能分为charge、drive或none段
+            if df_sel.loc[0,'总电流[A]'] != 0:
+                # 电流 分段中可能存在状态变化的时刻, 内部根据状态进行分段.
+                # 该数据段内部,根据bms状态信号进行二次分段
+                status_drive_or_not = df_sel['充电状态']==3
+                last_status_flag = status_drive_or_not[0]
+                temp_2 = 0
+                group_id_2 = [temp_2]
+                for cur_status_flag in status_drive_or_not[1:]:
+                    if last_status_flag ^ cur_status_flag:
+                        temp_2 = temp_2 + 1
+                    last_status_flag = cur_status_flag
+                    group_id_2.append(temp_2)
+                
+                # 遍历二次状态分段
+                temp_2 = 0
+                last_status_2 = last_status
+                df_sel['index'] = group_id_2
+                data_number_list_2 = sorted(list(set(group_id_2)))
+                for data_number_2 in data_number_list_2:
+                    
+                    df_sel_2 = df_sel[df_sel['index'] == data_number_2]
+                    df_sel_2 = df_sel_2.reset_index(drop=True)
+                    
+                    # 根据bms状态 及 电流符号决定是charge还是drive
+                    # 如果状态为2或3, 且电流均<=0 则记为充电
+                    if df_sel_2.loc[0, '充电状态'] in [2, 3] and len(df_sel_2[df_sel_2['总电流[A]'] > 0]) == 0: 
+                        cur_status = 'charge'
+                    # 如果状态为2或3,且存在电流>0 则记为行车
+                    elif df_sel_2.loc[0, '充电状态'] in [2, 3] and len(df_sel_2[df_sel_2['总电流[A]'] > 0]) > 0: 
+                        cur_status = 'drive'
+                    # 否则 记为none
+                    else:
+                        cur_status = 'none'
+                    status_list.extend([cur_status] * len(df_sel_2))
+                    
+                    # 状态id号与前面电流为0的相同状态进行合并, 均判断应不应该与上一段合并    
+                    if origin_index[0] == 0: # 如果是所有数据的起始段数据,则直接赋值id号
+                        status_id.extend([temp + temp_2]*len(df_sel_2))
+                    
+                    else: # 判断是否与上一段数据合并
+                        deltaT = (df.loc[origin_index[0], '时间戳'] - df.loc[origin_index[0]-1, '时间戳']).total_seconds()
+                        # 如果 状态一致, 且 间隔时间小于阈值,则合并
+                        if last_status_2 == 'drive' and cur_status == last_status_2 and deltaT < drive_interval_threshold: 
+                            temp_2 = temp_2 - 1  
+                            status_id.extend([temp + temp_2]*len(df_sel_2)) 
+                        # 如果状态一致, 且 间隔时间小于阈值,则合并
+                        elif last_status_2 == 'charge' and cur_status == last_status_2 and deltaT < charge_interval_threshold: 
+                            temp_2 = temp_2 - 1  
+                            status_id.extend([temp + temp_2]*len(df_sel_2)) 
+                        else:
+                            status_id.extend([temp + temp_2]*len(df_sel_2))
+                    temp_2 = temp_2 + 1
+                    last_status_2 = status_list[-1]
+                temp_2 = temp_2 - 1
+            else:
+                # 如果当前数据段的电流为0,则可能分为stand,charge、drive或none段
+                if origin_index[0] == 0: # 如果是数据的起始,则无论长短,都认为是stand
+                    status_id.extend([temp]*len(df_sel))
+                    status_list.extend(['stand'] * len(df_sel))
+                else: # 不是数据的起始
+                    cur_deltaT = (df.loc[origin_index[-1], '时间戳'] - df.loc[origin_index[0], '时间戳']).total_seconds()
+                    if last_status == 'charge': # 如果上一个状态为充电
+                        if cur_deltaT < charge_stand_threshold: # 如果本次电流为0的持续时间小于 阈值,则合并
+                            status_list.extend(['charge'] * len(df_sel))
+                            temp = temp - 1  
+                            status_id.extend([temp]*len(df_sel))
+                        else: # 否则超过了阈值,记为stand
+                            status_id.extend([temp]*len(df_sel))
+                            status_list.extend(['stand'] * len(df_sel))
+                    elif last_status == 'drive': # 如果上一个状态为行车
+                        if cur_deltaT < drive_stand_threshold: # 如果本次电流为0的持续时间小于 阈值,则合并
+                            status_list.extend(['drive'] * len(df_sel))
+                            temp = temp - 1  
+                            status_id.extend([temp]*len(df_sel))
+                        else: # 否则超过了阈值,记为stand
+                            status_id.extend([temp]*len(df_sel))
+                            status_list.extend(['stand'] * len(df_sel))
+                    elif last_status == 'none': # 如果上一个状态未知
+                        status_id.extend([temp] * len(df_sel))
+                        status_list.extend(['stand'] * len(df_sel))
+            temp = temp + temp_2 + 1
+            last_status = status_list[-1] # 上一组状态
+        df['data_split_by_status'] = status_id
+        df['data_status'] = status_list
+        return df
+    def data_split_by_time(self, dfin, default_time_threshold = 300, drive_time_threshold=300, charge_time_threshold=300, 
+                                        stand_time_threshold = 1800):
+        '''
+        # 该函数用来解决数据丢失问题导致的分段序号异常,
+        # 将经过data_split_by_status分段后的数据,每个段内两行数据的时间跳变如果超过阈值,则继续分为两段
+
+        --------------输入参数-------------:
+        dfin:  调用data_split_by_status之后的函数
+        default_time_threshold: 默认时间阈值,如果状态内部时间跳变大于该值,则划分为两段
+        drive_time_threshold: 行车时间阈值,如果行车状态内部时间跳变大于该值,则划分为两段
+        charge_time_threshold: 充电时间阈值,如果充电状态内部时间跳变大于该值,则划分为两段
+        stand_time_threshold:静置时间阈值,如果静置状态内部时间跳变大于该值,则划分为两段
+
+        --------------输出-----------------:
+        在输入数据后面,增加data_split_by_status_time 一列
+        data_split_by_status_time: 按照状态和时间分段后的序号
+        '''  
+        data_id = []
+        temp = 1
+        data_number_list = sorted(list(set(dfin['data_split_by_status'])))
+        for data_number in data_number_list:
+            # if data_number == 1203:
+            #     pdb.set_trace()
+            status = list(dfin[dfin['data_split_by_status']==data_number]['data_status'])[0]
+            cur_indexes = dfin[dfin['data_split_by_status']==data_number].index
+            
+            time_array = np.array(dfin[dfin['data_split_by_status']==data_number]['时间戳'])
+            time_diff = np.diff(time_array)
+            time_diff = time_diff.astype(np.int64)
+            time_interval = default_time_threshold
+            if status == 'drive':
+                time_interval = drive_time_threshold
+            elif status == 'charge':
+                time_interval = charge_time_threshold
+            elif status == 'stand':
+                time_interval = stand_time_threshold
+            time_diff_index = (np.argwhere(((time_diff/1e9) > time_interval)==True))[:,0]
+            time_diff_origin_index = cur_indexes[time_diff_index]+1
+            if len(time_diff_index) == 0:
+                data_id.extend([temp] * len(cur_indexes))
+                temp += 1
+            else:
+                last_index = cur_indexes[0]
+                for index, cur_index in enumerate(time_diff_origin_index):
+                    if index == len(time_diff_origin_index)-1: # 如果是最后一个index,则
+                        data_id.extend([temp]* (cur_index-last_index))
+                        last_index = cur_index
+                        temp += 1
+                        data_id.extend([temp]* (cur_indexes[-1]-last_index+1))
+                    else:
+                        data_id.extend([temp]* (cur_index-last_index))
+                    last_index = cur_index
+                    temp += 1
+        dfin['data_split_by_status_time'] = data_id
+        return dfin
+    def combine_drive_stand(self, dfin):
+        '''
+        合并放电和静置段:将两次充电之间的所有数据段合并为一段, 状态分为 charge 和not charge
+        ---------------输入----------
+        dfin: 调用data_split_by_status()后输出的bms数据
+
+        ---------------输出----------
+        在输入数据后面,增加data_split_by_status_after_combine, data_status_after_combine 两列
+        data_split_by_status_after_combine: 将两次充电间的数据合并后的段序号
+        data_status_after_combine: 每段数据的状态标识
+        '''
+        df = dfin.copy()
+        data_split_by_status_1 = []
+        data_status_1 = []
+        number = 1
+        first_flag = True
+        data_number_list = sorted(list(set(df['data_split_by_status_time'])))
+        for data_number in data_number_list:
+            status = list(df[df['data_split_by_status_time']==data_number]['data_status'])
+            cur_status = status[0]
+            if first_flag:
+                first_flag = False
+            elif (last_status not in ['charge'] and cur_status in ['charge']) or (last_status in ['charge'] and cur_status not in ['charge']):
+                number += 1
+
+            data_split_by_status_1.extend([number]*len(status))
+            if cur_status in ['charge']:
+                data_status_1.extend(['charge']*len(status))
+            else:
+                data_status_1.extend(['not charge']*len(status))
+
+            last_status = cur_status
+        df['data_split_by_status_after_combine'] = data_split_by_status_1
+        df['data_status_after_combine'] = data_status_1
+
+        return df
+
+    def cal_stand_time(self, dfin):
+        '''
+        # 计算静置时间
+        # 将每次行车或充电的前后静置时间,赋值给stand_time 列, 单位为分钟
+
+        ----------------输入参数---------
+        dfin: 调用data_split_by_status()后输出的bms数据
+
+        ----------------输出参数----------
+        在输入数据后面,增加stand_time列
+        stand_time : 在行车段或充电段的起止两个位置处,表明开始前和结束后的静置时长,单位为分钟
+
+        '''
+        df = dfin.copy()
+        stand_time = []
+        first_flag = True
+        data_number_list = sorted(list(set(df['data_split_by_status_time'])))
+        for index, data_number in enumerate(data_number_list):
+            status = list(df[df['data_split_by_status_time']==data_number]['data_status'])
+            time =  list(df[df['data_split_by_status_time']==data_number]['时间戳'])
+            cur_status = status[0]
+            cur_delta_time = (time[-1]-time[0]).total_seconds() / 60.0 # 分钟
+            if len(status) >= 2:
+                if first_flag:
+                    first_flag = False
+                    if index < len(data_number_list)-1:
+                        if cur_status in ['charge', 'drive']:
+                            next_status = list(df[df['data_split_by_status_time']==data_number_list[index+1]]['data_status'])[0]
+                            stand_time.extend([None]*(len(status)-1))
+                            if next_status == 'stand':
+                                next_time =  list(df[df['data_split_by_status_time']==data_number_list[index+1]]['时间戳'])
+                                stand_time.extend([(next_time[-1]-next_time[0]).total_seconds() / 60.0])
+                            else:
+                                stand_time.extend([0])
+                        else:
+                            stand_time.extend([None]*len(status))
+                    else:
+                        stand_time.extend([None]*len(status))      
+                else:
+                    if cur_status in ['charge', 'drive']:
+                        if last_status == 'stand':
+                            stand_time.extend([last_delta_time])
+                        else:
+                            stand_time.extend([0])
+                        stand_time.extend([None]*(len(status)-2))
+                        if index < len(data_number_list)-1:
+                            next_status = list(df[df['data_split_by_status_time']==data_number_list[index+1]]['data_status'])[0]
+                            if next_status == 'stand':
+                                next_time =  list(df[df['data_split_by_status_time']==data_number_list[index+1]]['时间戳'])
+                                stand_time.extend([(next_time[-1]-next_time[0]).total_seconds() / 60.0])
+                            else:
+                                stand_time.extend([0])
+                        else:
+                            stand_time.extend([None])
+                    else:
+                        stand_time.extend([None]*len(status))
+                        
+            else:
+                stand_time.extend([None])
+            last_status = cur_status
+            last_delta_time = cur_delta_time
+        df['stand_time'] = stand_time
+        return df
+
+    # 输入GPS数据,返回本段数据的累积里程,及平均时速(如果两点之间)
+    @jit
+    def _cal_odo_speed(self, lat_list, long_list, time_list):
+        '''
+        输入:经度列表, 纬度列表, 时间列表;
+        输出:每两个经纬度坐标之间的距离,以及速度 的数组
+        '''
+        dis_array = []
+        speed_array = []
+ 
+        for i in range(len(lat_list)-1):
+            dis = self.tools.cal_distance(lat_list[i],long_list[i], lat_list[i+1],long_list[i+1])
+            dis_array.append(dis)
+            deltaT = abs(time_list[i] - time_list[i+1]).total_seconds()
+            speed_array.append(dis * 3600.0/deltaT)
+        return np.array(dis_array), np.array(speed_array)
+
+    def gps_data_judge(self, df_bms, df_gps, time_diff_thre=300, odo_sum_thre=200, drive_spd_thre=80, parking_spd_thre=2):
+        '''
+        GPS数据可靠性判断函数(基于combine前的分段)
+
+        GPS数据出现以下情况时,判定为不可靠:
+        1)如果该段对应的地理位置数据 少于2 个,则认为不可靠
+        2)如果截取的GPS数据的起止时间,与BMS数据段的起止时间相差超过阈值,则认为不可靠
+        3)如果行车段 累积里程超过阈值,车速超过阈值
+        4) 如果非行车段 车速超过阈值
+
+        --------------输入参数--------------:
+        time_diff_thre: 时间差阈值
+        odo_sum_thre: 累积里程阈值
+        drive_spd_thre: 行车车速阈值
+        parking_spd_thre: 非行车状态车速阈值
+
+        --------------输出参数--------------:
+        df_bms 增加一列gps_rely, 表明对应的GPS数据是否可靠。
+                1:可靠
+                <0: 表示不可靠的原因
+        df_gps 增加两列odo, speed, 分别表示前后两点间的距离和速度
+        '''
+        df_gps['时间戳'] = pd.to_datetime(df_gps['时间戳'])
+        res_record = {'drive':0, 'charge':0, 'stand':0, 'none':0, 'total':0}
+        rely_list = []
+        df_gps['odo'] = [None] * len(df_gps)
+        df_gps['speed'] = [None] * len(df_gps)
+        data_number_list = sorted(list(set(df_bms['data_split_by_status_time'])))
+        for data_number in data_number_list[:]:
+            df_sel = df_bms[df_bms['data_split_by_status_time'] == data_number]
+            df_sel = df_sel.reset_index(drop=True)
+            df_sel_gps = df_gps[(df_gps['时间戳']>=df_sel.loc[0,'时间戳']) & (df_gps['时间戳']<=df_sel.loc[len(df_sel)-1,'时间戳'])]
+            origin_index = list(df_sel_gps.index)
+            df_sel_gps = df_sel_gps.reset_index(drop=True)
+            # 如果当前段数据对应的地理位置数据少于2个
+            if len(df_sel_gps) <= 1:
+                rely_list.extend([-1]*len(df_sel))
+                res_record[str(df_sel.loc[0, 'data_status'])] = res_record[str(df_sel.loc[0, 'data_status'])] + 1
+                continue
+            # 如果GPS 起止时间段和BMS数据相差超过阈值
+            if abs(df_sel_gps.loc[0, '时间戳'] - df_sel.loc[0,'时间戳']).total_seconds() > time_diff_thre or \
+               abs(df_sel_gps.loc[len(df_sel_gps)-1, '时间戳'] - df_sel.loc[len(df_sel)-1,'时间戳']).total_seconds() > time_diff_thre:
+                rely_list.extend([-2]*len(df_sel))
+                res_record[str(df_sel.loc[0, 'data_status'])] = res_record[str(df_sel.loc[0, 'data_status'])] + 1
+                continue
+
+            # 计算该段数据每两点之间的里程以及速度
+            dis_array, speed_array = self._cal_odo_speed(df_sel_gps['纬度'], df_sel_gps['经度'], df_sel_gps['时间戳'])
+            # 如果 累积里程异常 或 平均车速异常 或两点间车速异常
+            avg_speed = np.sum(dis_array) *3600.0 / abs(df_sel_gps.loc[0, '时间戳'] - df_sel_gps.loc[len(df_sel_gps)-1, '时间戳']).total_seconds()
+            if np.sum(dis_array) > odo_sum_thre or avg_speed > drive_spd_thre or (speed_array > drive_spd_thre).any():
+                rely_list.extend([-3]*len(df_sel))
+                res_record[str(df_sel.loc[0, 'data_status'])] = res_record[str(df_sel.loc[0, 'data_status'])] + 1
+                continue
+            
+            # 如果停车,且 平均时速超过阈值,则不可靠
+            if (str(df_sel.loc[0, 'data_status']) == 'charge' or str(df_sel.loc[0, 'data_status']) == 'stand') and avg_speed > parking_spd_thre :
+                rely_list.extend([-4]*len(df_sel))
+                res_record[str(df_sel.loc[0, 'data_status'])] = res_record[str(df_sel.loc[0, 'data_status'])] + 1
+                continue
+            # 剩下的记录为可靠
+            rely_list.extend([1]*len(df_sel))
+            df_gps.loc[origin_index[1:], 'odo'] = dis_array
+            df_gps.loc[origin_index[1:], 'speed'] = speed_array
+        df_bms['gps_rely'] = rely_list
+        res_record['total'] = (res_record['drive'] + res_record['charge'] + res_record['stand'] + res_record['none'] )/df_bms['data_split_by_status_time'].max()
+        if len(set(df_bms[df_bms['data_status']=='drive']['data_split_by_status_time'])) > 0:
+            res_record['drive'] = (res_record['drive'])/len(set(df_bms[df_bms['data_status']=='drive']['data_split_by_status_time']))
+        if len(set(df_bms[df_bms['data_status']=='charge']['data_split_by_status_time'])) > 0:
+            res_record['charge'] = (res_record['charge'])/len(set(df_bms[df_bms['data_status']=='charge']['data_split_by_status_time']))
+        if len(set(df_bms[df_bms['data_status']=='stand']['data_split_by_status_time'])) > 0:
+            res_record['stand'] = (res_record['stand'])/len(set(df_bms[df_bms['data_status']=='stand']['data_split_by_status_time']))
+        if len(set(df_bms[df_bms['data_status']=='none']['data_split_by_status_time'])) > 0:
+            res_record['none'] = (res_record['none'])/len(set(df_bms[df_bms['data_status']=='none']['data_split_by_status_time']))
+        return df_bms, df_gps, res_record
+
+
+    def data_gps_judge_after_combine(self, df_bms, df_gps, time_diff_thre=600, odo_sum_thre=200, drive_spd_thre=80, parking_spd_thre=2):
+        '''
+        GPS数据可靠性判断函数2 (基于combine后的分段) 判别方式同data_gps_judge
+        '''
+        df_gps['时间戳'] = pd.to_datetime(df_gps['时间戳'])
+        res_record = {'not charge':0, 'charge':0, 'total':0} # 不可靠的比例
+
+        rely_list = []
+        df_gps['odo_after_combine'] = [None] * len(df_gps)
+        df_gps['speed_after_combine'] = [None] * len(df_gps)
+ 
+        data_number_list = sorted(list(set(df_bms['data_split_by_status_after_combine'])))
+        for data_number in data_number_list[:]:
+            df_sel = df_bms[df_bms['data_split_by_status_after_combine'] == data_number]
+            df_sel = df_sel.reset_index(drop=True)
+
+            # 尝试采用drive段的开始和结束时间选择GPS数据,因为stand时GPS数据可能存在丢失,影响里程的计算
+            df_sel_drive = df_sel[df_sel['data_status']=='drive'] # 
+            df_sel_drive = df_sel_drive.reset_index(drop=True)
+            if df_sel_drive.empty:
+                df_sel_1 = df_sel
+            else:
+                df_sel_1 = df_sel_drive
+            df_sel_gps = df_gps[(df_gps['时间戳']>=df_sel_1.loc[0,'时间戳']) & (df_gps['时间戳']<=df_sel_1.loc[len(df_sel_1)-1,'时间戳'])]
+            origin_index = list(df_sel_gps.index)
+            df_sel_gps = df_sel_gps.reset_index(drop=True)
+            # 如果当前段数据对应的地理位置数据少于2个
+            if len(df_sel_gps) <= 1:
+                rely_list.extend([-1]*len(df_sel))
+                res_record[str(df_sel.loc[0, 'data_status_after_combine'])] = res_record[str(df_sel.loc[0, 'data_status_after_combine'])] + 1
+                continue
+            # 如果GPS 起止时间段和BMS数据相差超过阈值
+            if abs(df_sel_gps.loc[0, '时间戳'] - df_sel_1.loc[0,'时间戳']).total_seconds() > time_diff_thre or \
+                abs(df_sel_gps.loc[len(df_sel_gps)-1, '时间戳'] - df_sel_1.loc[len(df_sel_1)-1,'时间戳']).total_seconds() > time_diff_thre:
+                rely_list.extend([-2]*len(df_sel))
+                res_record[str(df_sel.loc[0, 'data_status_after_combine'])] = res_record[str(df_sel.loc[0, 'data_status_after_combine'])] + 1
+                continue
+
+            # 计算该段数据每两点之间的里程以及速度
+            dis_array, speed_array = self._cal_odo_speed(df_sel_gps['纬度'], df_sel_gps['经度'], df_sel_gps['时间戳'])
+            # 如果 累积里程异常 或 平均车速异常 或两点间车速异常
+            avg_speed = np.sum(dis_array) *3600.0 / abs(df_sel_gps.loc[0, '时间戳'] - df_sel_gps.loc[len(df_sel_gps)-1, '时间戳']).total_seconds()
+            if np.sum(dis_array) > odo_sum_thre or avg_speed > drive_spd_thre or (speed_array > drive_spd_thre).any():
+                rely_list.extend([-3]*len(df_sel))
+                res_record[str(df_sel.loc[0, 'data_status_after_combine'])] = res_record[str(df_sel.loc[0, 'data_status_after_combine'])] + 1
+                continue
+            
+            # 如果充电,且 平均时速超过阈值,则不可靠
+            if str(df_sel.loc[0, 'data_status_after_combine']) == 'charge' and avg_speed > parking_spd_thre:
+                rely_list.extend([-4]*len(df_sel))
+                res_record[str(df_sel.loc[0, 'data_status_after_combine'])] = res_record[str(df_sel.loc[0, 'data_status_after_combine'])] + 1
+                continue
+            # 剩下的记录为可靠
+            rely_list.extend([1]*len(df_sel))
+            df_gps.loc[origin_index[1:], 'odo_after_combine'] = dis_array
+            df_gps.loc[origin_index[1:], 'speed_after_combine'] = speed_array
+        df_bms['gps_rely_after_combine'] = rely_list
+        res_record['total'] = (res_record['not charge'] + res_record['charge'])/df_bms['data_split_by_status_after_combine'].max()
+        if len(set(df_bms[df_bms['data_status_after_combine']=='not charge']['data_split_by_status_after_combine'])) > 0:
+            res_record['not charge'] = (res_record['not charge'])/len(set(df_bms[df_bms['data_status_after_combine']=='not charge']['data_split_by_status_after_combine']))
+        if len(set(df_bms[df_bms['data_status_after_combine']=='charge']['data_split_by_status_after_combine'])) > 0 :
+            res_record['charge'] = (res_record['charge'])/len(set(df_bms[df_bms['data_status_after_combine']=='charge']['data_split_by_status_after_combine']))
+        return df_bms, df_gps, res_record
         

+ 47 - 47
LIB/BACKEND/Log.py

@@ -1,47 +1,47 @@
-'''
-Log类
-
-'''
-__author__ = 'Wang Liming'
-
-
-import logging
-import os
-
-class Mylog:
-
-    def __init__(self, log_name='this_log', log_level = ''):
-        self.logger = logging.getLogger(log_name)
-        self._set_log_level(logging.INFO)
-        if len(log_level) > 0:
-            self._set_log_level(log_level)
-
-    def get_logger(self):
-        return self.logger
-    
-    def set_file_hl(self, file_name='all.log', log_level='info'):
-        fh = logging.FileHandler(filename=file_name)
-        fh_formatter = logging.Formatter('%(asctime)s:%(created)f:%(name)s:%(module)s:%(funcName)s:%(levelname)s:%(message)s')
-        fh.setFormatter(fh_formatter)
-        if len(log_level) > 0:
-            self._set_log_level(log_level)
-        self.logger.addHandler(fh)
-
-    def set_stream_hl(self, log_level='info'):
-        sh = logging.StreamHandler()
-        sh_formatter = logging.Formatter('%(asctime)s:%(created)f:%(name)s:%(module)s:%(funcName)s:%(levelname)s:%(message)s')
-        sh.setFormatter(sh_formatter)
-        if len(log_level) > 0:
-            self._set_log_level(log_level)
-        self.logger.addHandler(sh)  
-
-    def _set_log_level(self, log_level):
-        if log_level == 'debug':
-            self.logger.setLevel(logging.DEBUG)
-        if log_level == 'info':
-            self.logger.setLevel(logging.INFO)
-        if log_level == 'warning':
-            self.logger.setLevel(logging.WARNING)
-        if log_level == 'error':
-            self.logger.setLevel(logging.ERROR)
-
+'''
+Log类
+
+'''
+__author__ = 'Wang Liming'
+
+
+import logging
+import os
+
+class Mylog:
+
+    def __init__(self, log_name='this_log', log_level = ''):
+        self.logger = logging.getLogger(log_name)
+        self._set_log_level(logging.INFO)
+        if len(log_level) > 0:
+            self._set_log_level(log_level)
+
+    def get_logger(self):
+        return self.logger
+    
+    def set_file_hl(self, file_name='all.log', log_level='info'):
+        fh = logging.FileHandler(filename=file_name)
+        fh_formatter = logging.Formatter('%(asctime)s:%(created)f:%(name)s:%(module)s:%(funcName)s:%(levelname)s:%(message)s')
+        fh.setFormatter(fh_formatter)
+        if len(log_level) > 0:
+            self._set_log_level(log_level)
+        self.logger.addHandler(fh)
+
+    def set_stream_hl(self, log_level='info'):
+        sh = logging.StreamHandler()
+        sh_formatter = logging.Formatter('%(asctime)s:%(created)f:%(name)s:%(module)s:%(funcName)s:%(levelname)s:%(message)s')
+        sh.setFormatter(sh_formatter)
+        if len(log_level) > 0:
+            self._set_log_level(log_level)
+        self.logger.addHandler(sh)  
+
+    def _set_log_level(self, log_level):
+        if log_level == 'debug':
+            self.logger.setLevel(logging.DEBUG)
+        if log_level == 'info':
+            self.logger.setLevel(logging.INFO)
+        if log_level == 'warning':
+            self.logger.setLevel(logging.WARNING)
+        if log_level == 'error':
+            self.logger.setLevel(logging.ERROR)
+

+ 73 - 73
LIB/BACKEND/Tools.py

@@ -1,73 +1,73 @@
-'''
-工具类
-
-'''
-__author__ = 'Wang Liming'
-
-
-import CONFIGURE.PathSetting as PathSetting
-import sys
-sys.path.append(PathSetting.backend_path)
-import DBManager
-import pandas as pd
-import numpy as np
-import math
-from numba import jit
-import os
-import datetime
-import pdb
-import warnings
-warnings.filterwarnings('ignore')
-
-class Tools():
-
-    def __init__(self):
-        pass
-
-    # 数据下载
-    def data_download(self, write_path='', sn='', start_time='', end_time='', data_groups=['bms', 'gps']):
-        '''
-        数据下载函数
-        --------------输入参数------------
-        write_path: 文件保存路径,不需要指定文件名
-        sn: str, 电池sn号
-        start_time: str, 开始时间
-        end_time: str, 结束时间
-        gps_switch: True:获取gps数据; False:不获取gps数据
-        mode: 0:正常取数; 1:7255 取数
-
-        --------------输出参数------------
-        bms_data: 获取到的bms数据
-        gps_data: 获取到的gps数据
-        '''
-        dbManager = DBManager.DBManager()
-        print('downloading......')
-        df_data = dbManager.get_data(sn=sn, start_time=start_time, end_time=end_time, data_groups=data_groups)
-        for data_group in data_groups:
-            df_data[data_group].to_csv(os.path.join(write_path, '{}_{}_from_{}_to_{}.csv'.format(data_group, sn, start_time[0:10], end_time[0:10])), index=False, encoding='GB2312')
-        print('downloading success!')
-
-    # 根据经纬度计算距离
-    @jit
-    def cal_distance(self, latitude1, longitude1,latitude2, longitude2,radius=6371):  
-        '''
-        输入两个地点的经纬度,输出两点间的距离
-        '''
-        radLat1 = (math.pi/180)*latitude1  
-        radLat2 = (math.pi/180)*latitude2  
-        radLng1 = (math.pi/180)*longitude1  
-        radLng2= (math.pi/180)*longitude2      
-        d=2*math.asin(math.sqrt(math.pow(math.sin((radLat1-radLat2)/2.0),2)+math.cos(radLat1)*math.cos(radLat2)*math.pow(math.sin((radLng1-radLng2)/2.0),2)))*radius
-        return d
-
-    # 输入GPS数据, 返回本段数据中GPS 位置相距最远的距离
-    # @jit
-    # def cal_max_dis(self, lat, long):
-    #     count = len(lat)
-    #     dis_mat=np.zeros([count,count])
-    #     for i in range(count):
-    #         for j in range(i,count):
-    #             dis_mat[i][j]=self.cal_distance(lat[i],long[i], lat[j],long[j])
-                
-    #     max_dis = dis_mat.max()
-    #     return max_dis
+'''
+工具类
+
+'''
+__author__ = 'Wang Liming'
+
+
+import CONFIGURE.PathSetting as PathSetting
+import sys
+sys.path.append(PathSetting.backend_path)
+import DBManager
+import pandas as pd
+import numpy as np
+import math
+from numba import jit
+import os
+import datetime
+import pdb
+import warnings
+warnings.filterwarnings('ignore')
+
+class Tools():
+
+    def __init__(self):
+        pass
+
+    # 数据下载
+    def data_download(self, write_path='', sn='', start_time='', end_time='', data_groups=['bms', 'gps']):
+        '''
+        数据下载函数
+        --------------输入参数------------
+        write_path: 文件保存路径,不需要指定文件名
+        sn: str, 电池sn号
+        start_time: str, 开始时间
+        end_time: str, 结束时间
+        gps_switch: True:获取gps数据; False:不获取gps数据
+        mode: 0:正常取数; 1:7255 取数
+
+        --------------输出参数------------
+        bms_data: 获取到的bms数据
+        gps_data: 获取到的gps数据
+        '''
+        dbManager = DBManager.DBManager()
+        print('downloading......')
+        df_data = dbManager.get_data(sn=sn, start_time=start_time, end_time=end_time, data_groups=data_groups)
+        for data_group in data_groups:
+            df_data[data_group].to_csv(os.path.join(write_path, '{}_{}_from_{}_to_{}.csv'.format(data_group, sn, start_time[0:10], end_time[0:10])), index=False, encoding='GB2312')
+        print('downloading success!')
+
+    # 根据经纬度计算距离
+    @jit
+    def cal_distance(self, latitude1, longitude1,latitude2, longitude2,radius=6371):  
+        '''
+        输入两个地点的经纬度,输出两点间的距离
+        '''
+        radLat1 = (math.pi/180)*latitude1  
+        radLat2 = (math.pi/180)*latitude2  
+        radLng1 = (math.pi/180)*longitude1  
+        radLng2= (math.pi/180)*longitude2      
+        d=2*math.asin(math.sqrt(math.pow(math.sin((radLat1-radLat2)/2.0),2)+math.cos(radLat1)*math.cos(radLat2)*math.pow(math.sin((radLng1-radLng2)/2.0),2)))*radius
+        return d
+
+    # 输入GPS数据, 返回本段数据中GPS 位置相距最远的距离
+    # @jit
+    # def cal_max_dis(self, lat, long):
+    #     count = len(lat)
+    #     dis_mat=np.zeros([count,count])
+    #     for i in range(count):
+    #         for j in range(i,count):
+    #             dis_mat[i][j]=self.cal_distance(lat[i],long[i], lat[j],long[j])
+                
+    #     max_dis = dis_mat.max()
+    #     return max_dis

+ 1547 - 1547
LIB/FRONTEND/day_sta.log

@@ -1,1547 +1,1547 @@
-2021-06-02 16:27:40,424:1622622460.424597:day_sta:<ipython-input-1-f6da41e23244>:<module>:INFO:7240
-2021-06-02 16:27:40,678:1622622460.678502:day_sta:<ipython-input-1-f6da41e23244>:<module>:INFO:PK50001A100000343 start,  1/564 
-2021-06-02 16:27:40,679:1622622460.679477:day_sta:<ipython-input-1-f6da41e23244>:<module>:INFO:PK50001A100000343 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 16:37:33,712:1622623053.712361:day_sta:<ipython-input-1-f6da41e23244>:<module>:INFO:PK50001A100000343 done,  1/564 
-2021-06-02 16:37:33,713:1622623053.713332:day_sta:<ipython-input-1-f6da41e23244>:<module>:INFO:PK50001A100000356 start,  2/564 
-2021-06-02 16:37:33,714:1622623053.714303:day_sta:<ipython-input-1-f6da41e23244>:<module>:INFO:PK50001A100000356 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 17:04:41,444:1622624681.444927:day_sta:<ipython-input-14-82ebb7781c97>:<module>:INFO:PK50001A100000356 done,  2/564
-2021-06-02 17:06:04,540:1622624764.540590:day_sta:<ipython-input-1-20645d7cd393>:<module>:INFO:2788
-2021-06-02 17:06:04,779:1622624764.779847:day_sta:<ipython-input-1-20645d7cd393>:<module>:INFO:PK50001A100000370 start,  3/564 
-2021-06-02 17:06:04,780:1622624764.780824:day_sta:<ipython-input-1-20645d7cd393>:<module>:INFO:PK50001A100000370 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 17:13:34,836:1622625214.836330:day_sta:<ipython-input-1-20645d7cd393>:<module>:INFO:PK50001A100000370 done,  3/564 
-2021-06-02 17:13:34,837:1622625214.837308:day_sta:<ipython-input-1-20645d7cd393>:<module>:INFO:PK50001A100000371 start,  4/564 
-2021-06-02 17:13:34,838:1622625214.838283:day_sta:<ipython-input-1-20645d7cd393>:<module>:INFO:PK50001A100000371 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 17:58:37,032:1622627917.032241:day_sta:<ipython-input-10-82ebb7781c97>:<module>:INFO:PK50001A100000371 done,  4/564 
-2021-06-02 17:58:57,039:1622627937.039075:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:7160
-2021-06-02 17:58:57,277:1622627937.277354:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000516 start,  5/564 
-2021-06-02 17:58:57,278:1622627937.278329:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000516 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 17:59:35,868:1622627975.868145:day_sta:<ipython-input-4-b5f983b1266d>:<module>:INFO:5380
-2021-06-02 17:59:36,111:1622627976.111313:day_sta:<ipython-input-4-b5f983b1266d>:<module>:INFO:PK50001A100000516 start,  5/564 
-2021-06-02 17:59:36,112:1622627976.112291:day_sta:<ipython-input-4-b5f983b1266d>:<module>:INFO:PK50001A100000516 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 18:00:19,970:1622628019.970668:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:14508
-2021-06-02 18:00:20,210:1622628020.210899:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000516 start,  5/564 
-2021-06-02 18:00:20,211:1622628020.211876:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000516 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 18:11:56,487:1622628716.487826:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000516 done,  5/564 
-2021-06-02 18:11:56,488:1622628716.488801:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000522 start,  6/564 
-2021-06-02 18:11:56,489:1622628716.489778:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000522 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 18:21:18,317:1622629278.317537:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000522 done,  6/564 
-2021-06-02 18:21:18,318:1622629278.318520:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000534 start,  7/564 
-2021-06-02 18:21:18,319:1622629278.319496:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000534 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 18:30:37,873:1622629837.873009:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000534 done,  7/564 
-2021-06-02 18:30:37,873:1622629837.873985:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000692 start,  8/564 
-2021-06-02 18:30:37,874:1622629837.874963:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000692 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 18:46:00,667:1622630760.667353:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000692 done,  8/564 
-2021-06-02 18:46:00,669:1622630760.669304:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000710 start,  9/564 
-2021-06-02 18:46:00,670:1622630760.670286:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000710 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 18:54:21,661:1622631261.661225:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000710 done,  9/564 
-2021-06-02 18:54:21,662:1622631261.662198:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000713 start,  10/564 
-2021-06-02 18:54:21,663:1622631261.663172:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000713 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 19:00:10,675:1622631610.675715:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000713 done,  10/564 
-2021-06-02 19:00:10,676:1622631610.676692:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000714 start,  11/564 
-2021-06-02 19:00:10,677:1622631610.677673:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000714 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 19:07:22,237:1622632042.237947:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000714 done,  11/564 
-2021-06-02 19:07:22,238:1622632042.238922:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000728 start,  12/564 
-2021-06-02 19:07:22,239:1622632042.239894:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000728 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 19:16:22,991:1622632582.991722:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000728 done,  12/564 
-2021-06-02 19:16:22,991:1622632582.991722:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000729 start,  13/564 
-2021-06-02 19:16:22,993:1622632582.993676:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000729 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 19:23:31,496:1622633011.496397:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000729 done,  13/564 
-2021-06-02 19:23:31,497:1622633011.497371:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004103 start,  14/564 
-2021-06-02 19:23:31,498:1622633011.498347:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004103 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 19:32:07,205:1622633527.205106:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004103 done,  14/564 
-2021-06-02 19:32:07,207:1622633527.207059:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004256 start,  15/564 
-2021-06-02 19:32:07,208:1622633527.208038:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004256 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 19:52:18,526:1622634738.526084:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004256 done,  15/564 
-2021-06-02 19:52:18,527:1622634738.527063:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004269 start,  16/564 
-2021-06-02 19:52:18,528:1622634738.528048:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004269 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 20:00:28,927:1622635228.927156:day_sta:day_sta:<module>:INFO:5564
-2021-06-02 20:00:29,190:1622635229.190832:day_sta:day_sta:<module>:INFO:PK50001A100000343 start,  1/564 
-2021-06-02 20:00:29,192:1622635229.192784:day_sta:day_sta:<module>:INFO:PK50001A100000343 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 20:03:18,203:1622635398.203444:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004269 done,  16/564 
-2021-06-02 20:03:18,204:1622635398.204422:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004272 start,  17/564 
-2021-06-02 20:03:18,205:1622635398.205402:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004272 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 20:07:56,997:1622635676.997367:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004272 done,  17/564 
-2021-06-02 20:07:56,998:1622635676.998341:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004283 start,  18/564 
-2021-06-02 20:07:56,999:1622635676.999315:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004283 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 20:25:25,800:1622636725.800552:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004283 done,  18/564 
-2021-06-02 20:25:25,801:1622636725.801528:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B10100004368 start,  19/564 
-2021-06-02 20:25:25,802:1622636725.802499:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B10100004368 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 20:28:14,319:1622636894.319991:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B10100004368 done,  19/564 
-2021-06-02 20:28:14,320:1622636894.320968:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B10100004405 start,  20/564 
-2021-06-02 20:28:14,321:1622636894.321954:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B10100004405 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 20:33:28,506:1622637208.506444:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B10100004405 done,  20/564 
-2021-06-02 20:33:28,507:1622637208.507425:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B10100004428 start,  21/564 
-2021-06-02 20:33:28,508:1622637208.508399:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B10100004428 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 20:38:28,349:1622637508.349055:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B10100004428 done,  21/564
-2021-06-02 20:49:14,719:1622638154.719890:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:13900
-2021-06-02 20:49:14,960:1622638154.960125:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004438 start,  22/564 
-2021-06-02 20:49:14,961:1622638154.961102:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004438 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 20:49:38,507:1622638178.507968:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004488 start,  23/564 
-2021-06-02 20:49:38,508:1622638178.508945:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004488 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 20:55:50,467:1622638550.467792:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004488 done,  23/564 
-2021-06-02 20:55:50,468:1622638550.468767:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004492 start,  24/564 
-2021-06-02 20:55:50,469:1622638550.469744:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004492 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 21:00:53,761:1622638853.761560:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004492 done,  24/564 
-2021-06-02 21:00:53,762:1622638853.762534:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004497 start,  25/564 
-2021-06-02 21:00:53,763:1622638853.763504:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004497 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 21:07:19,858:1622639239.858042:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004497 done,  25/564 
-2021-06-02 21:07:19,859:1622639239.859017:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000034 start,  26/564 
-2021-06-02 21:07:19,859:1622639239.859017:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000034 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 21:27:38,377:1622640458.377018:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000034 done,  26/564 
-2021-06-02 21:27:38,378:1622640458.378971:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000035 start,  27/564 
-2021-06-02 21:27:38,379:1622640458.379950:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000035 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 21:51:04,889:1622641864.889127:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000035 done,  27/564 
-2021-06-02 21:51:04,890:1622641864.890104:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000038 start,  28/564 
-2021-06-02 21:51:04,891:1622641864.891081:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000038 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 22:00:05,458:1622642405.458220:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000038 done,  28/564 
-2021-06-02 22:00:05,459:1622642405.459197:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000045 start,  29/564 
-2021-06-02 22:00:05,459:1622642405.459197:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000045 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 22:14:47,776:1622643287.776187:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000045 done,  29/564 
-2021-06-02 22:14:47,777:1622643287.777167:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000092 start,  30/564 
-2021-06-02 22:14:47,777:1622643287.777167:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000092 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 22:33:25,335:1622644405.335776:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000092 done,  30/564 
-2021-06-02 22:33:25,336:1622644405.336753:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000095 start,  31/564 
-2021-06-02 22:33:25,337:1622644405.337726:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000095 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 22:57:18,572:1622645838.572278:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000095 done,  31/564 
-2021-06-02 22:57:18,573:1622645838.573256:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000099 start,  32/564 
-2021-06-02 22:57:18,574:1622645838.574233:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000099 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 23:15:44,629:1622646944.629555:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000099 done,  32/564 
-2021-06-02 23:15:44,631:1622646944.631505:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000120 start,  33/564 
-2021-06-02 23:15:44,632:1622646944.632491:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000120 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 23:16:07,714:1622646967.714511:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000121 start,  34/564 
-2021-06-02 23:16:07,715:1622646967.715485:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000121 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 23:16:30,985:1622646990.985006:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000124 start,  35/564 
-2021-06-02 23:16:30,985:1622646990.985984:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000124 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 23:28:39,023:1622647719.023623:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000124 done,  35/564 
-2021-06-02 23:28:39,025:1622647719.025578:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000131 start,  36/564 
-2021-06-02 23:28:39,026:1622647719.026557:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000131 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-02 23:47:47,564:1622648867.564184:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000131 done,  36/564 
-2021-06-02 23:47:47,565:1622648867.565161:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000133 start,  37/564 
-2021-06-02 23:47:47,566:1622648867.566137:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000133 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 00:17:04,491:1622650624.491033:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000133 done,  37/564 
-2021-06-03 00:17:04,492:1622650624.492010:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000145 start,  38/564 
-2021-06-03 00:17:04,492:1622650624.492010:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000145 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 00:35:17,900:1622651717.900756:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000145 done,  38/564 
-2021-06-03 00:35:17,901:1622651717.901727:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000150 start,  39/564 
-2021-06-03 00:35:17,902:1622651717.902705:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000150 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 00:43:07,617:1622652187.617287:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000150 done,  39/564 
-2021-06-03 00:43:07,618:1622652187.618264:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000151 start,  40/564 
-2021-06-03 00:43:07,618:1622652187.618264:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000151 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 00:56:54,792:1622653014.792773:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000151 done,  40/564 
-2021-06-03 00:56:54,793:1622653014.793746:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000155 start,  41/564 
-2021-06-03 00:56:54,794:1622653014.794714:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000155 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 00:57:18,612:1622653038.612087:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000181 start,  42/564 
-2021-06-03 00:57:18,614:1622653038.614040:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000181 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 01:17:29,344:1622654249.344819:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000181 done,  42/564 
-2021-06-03 01:17:29,345:1622654249.345796:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000186 start,  43/564 
-2021-06-03 01:17:29,346:1622654249.346778:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000186 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 01:32:17,531:1622655137.531940:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000186 done,  43/564 
-2021-06-03 01:32:17,532:1622655137.532917:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000188 start,  44/564 
-2021-06-03 01:32:17,532:1622655137.532917:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000188 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 01:49:55,578:1622656195.578318:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000188 done,  44/564 
-2021-06-03 01:49:55,579:1622656195.579295:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000194 start,  45/564 
-2021-06-03 01:49:55,580:1622656195.580280:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000194 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 01:50:20,050:1622656220.050963:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000199 start,  46/564 
-2021-06-03 01:50:20,051:1622656220.051941:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000199 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 02:07:52,812:1622657272.812316:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000199 done,  46/564 
-2021-06-03 02:07:52,813:1622657272.813292:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000200 start,  47/564 
-2021-06-03 02:07:52,814:1622657272.814263:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000200 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 02:15:44,899:1622657744.899829:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000200 done,  47/564 
-2021-06-03 02:15:44,900:1622657744.900801:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000203 start,  48/564 
-2021-06-03 02:15:44,901:1622657744.901772:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000203 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 02:37:55,332:1622659075.332063:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000203 done,  48/564 
-2021-06-03 02:37:55,333:1622659075.333040:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000204 start,  49/564 
-2021-06-03 02:37:55,333:1622659075.333040:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000204 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 02:51:22,566:1622659882.566036:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000204 done,  49/564 
-2021-06-03 02:51:22,566:1622659882.566036:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000208 start,  50/564 
-2021-06-03 02:51:22,567:1622659882.567013:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000208 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 03:01:55,712:1622660515.712285:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000208 done,  50/564 
-2021-06-03 03:01:55,713:1622660515.713262:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000222 start,  51/564 
-2021-06-03 03:01:55,714:1622660515.714244:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000222 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 03:16:50,544:1622661410.544852:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000222 done,  51/564 
-2021-06-03 03:16:50,545:1622661410.545828:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000226 start,  52/564 
-2021-06-03 03:16:50,546:1622661410.546804:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000226 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 03:37:06,605:1622662626.605640:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000226 done,  52/564 
-2021-06-03 03:37:06,606:1622662626.606620:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000228 start,  53/564 
-2021-06-03 03:37:06,606:1622662626.606620:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000228 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 03:57:21,037:1622663841.037637:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000228 done,  53/564 
-2021-06-03 03:57:21,038:1622663841.038624:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000234 start,  54/564 
-2021-06-03 03:57:21,039:1622663841.039586:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000234 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 04:08:40,340:1622664520.340129:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000234 done,  54/564 
-2021-06-03 04:08:40,341:1622664520.341106:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000255 start,  55/564 
-2021-06-03 04:08:40,341:1622664520.341106:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000255 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 04:28:23,139:1622665703.139240:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000255 done,  55/564 
-2021-06-03 04:28:23,140:1622665703.140214:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000257 start,  56/564 
-2021-06-03 04:28:23,141:1622665703.141183:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000257 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 04:42:48,030:1622666568.030409:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000257 done,  56/564 
-2021-06-03 04:42:48,031:1622666568.031385:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000260 start,  57/564 
-2021-06-03 04:42:48,032:1622666568.032362:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000260 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 04:59:23,812:1622667563.812150:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000260 done,  57/564 
-2021-06-03 04:59:23,813:1622667563.813126:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000261 start,  58/564 
-2021-06-03 04:59:23,813:1622667563.813126:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000261 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 05:21:29,331:1622668889.331895:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000261 done,  58/564 
-2021-06-03 05:21:29,332:1622668889.332870:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000263 start,  59/564 
-2021-06-03 05:21:29,332:1622668889.332870:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000263 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 05:48:20,638:1622670500.638581:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000263 done,  59/564 
-2021-06-03 05:48:20,638:1622670500.638581:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000292 start,  60/564 
-2021-06-03 05:48:20,639:1622670500.639557:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000292 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 06:11:23,627:1622671883.627133:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000292 done,  60/564 
-2021-06-03 06:11:23,628:1622671883.628110:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000293 start,  61/564 
-2021-06-03 06:11:23,628:1622671883.628110:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000293 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 06:20:21,708:1622672421.708865:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000293 done,  61/564 
-2021-06-03 06:20:21,709:1622672421.709842:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000295 start,  62/564 
-2021-06-03 06:20:21,709:1622672421.709842:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000295 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 06:54:55,582:1622674495.582659:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000295 done,  62/564 
-2021-06-03 06:54:55,583:1622674495.583636:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000300 start,  63/564 
-2021-06-03 06:54:55,584:1622674495.584613:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000300 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 07:15:05,334:1622675705.334063:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000300 done,  63/564 
-2021-06-03 07:15:05,335:1622675705.335040:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000304 start,  64/564 
-2021-06-03 07:15:05,335:1622675705.335040:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000304 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 07:27:19,888:1622676439.888121:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000304 done,  64/564 
-2021-06-03 07:27:19,889:1622676439.889096:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000305 start,  65/564 
-2021-06-03 07:27:19,890:1622676439.890064:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000305 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 07:27:41,939:1622676461.939847:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000306 start,  66/564 
-2021-06-03 07:27:41,940:1622676461.940824:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000306 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 07:51:56,965:1622677916.965537:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000306 done,  66/564 
-2021-06-03 07:51:56,966:1622677916.966511:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000310 start,  67/564 
-2021-06-03 07:51:56,967:1622677916.967482:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000310 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 08:15:21,275:1622679321.275387:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000310 done,  67/564 
-2021-06-03 08:15:21,276:1622679321.276362:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000321 start,  68/564 
-2021-06-03 08:15:21,276:1622679321.276362:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000321 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 08:21:32,114:1622679692.114055:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000321 done,  68/564 
-2021-06-03 08:21:32,115:1622679692.115032:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000325 start,  69/564 
-2021-06-03 08:21:32,116:1622679692.116006:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000325 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 08:44:24,216:1622681064.216801:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000325 done,  69/564 
-2021-06-03 08:44:24,217:1622681064.217778:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000326 start,  70/564 
-2021-06-03 08:44:24,217:1622681064.217778:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000326 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 09:00:29,048:1622682029.048287:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000326 done,  70/564 
-2021-06-03 09:00:29,049:1622682029.049264:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000333 start,  71/564 
-2021-06-03 09:00:29,050:1622682029.050240:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000333 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 09:03:24,000:1622682204.000355:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000333 done,  71/564 
-2021-06-03 09:03:24,001:1622682204.001332:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000340 start,  72/564 
-2021-06-03 09:03:24,002:1622682204.002309:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000340 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 09:26:57,547:1622683617.547434:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000340 done,  72/564 
-2021-06-03 09:26:57,548:1622683617.548411:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000344 start,  73/564 
-2021-06-03 09:26:57,549:1622683617.549379:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000344 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 09:43:31,172:1622684611.172837:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000344 done,  73/564 
-2021-06-03 09:43:31,173:1622684611.173812:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000345 start,  74/564 
-2021-06-03 09:43:31,174:1622684611.174782:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000345 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 09:57:05,601:1622685425.601102:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000345 done,  74/564 
-2021-06-03 09:57:05,602:1622685425.602079:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000346 start,  75/564 
-2021-06-03 09:57:05,603:1622685425.603068:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000346 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 10:22:34,825:1622686954.825964:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000346 done,  75/564 
-2021-06-03 10:22:34,826:1622686954.826946:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000348 start,  76/564 
-2021-06-03 10:22:34,826:1622686954.826946:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000348 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 10:37:55,508:1622687875.508564:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000348 done,  76/564 
-2021-06-03 10:37:55,509:1622687875.509541:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000349 start,  77/564 
-2021-06-03 10:37:55,510:1622687875.510518:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000349 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 10:54:40,114:1622688880.114533:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000349 done,  77/564 
-2021-06-03 10:54:40,116:1622688880.116485:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000351 start,  78/564 
-2021-06-03 10:54:40,116:1622688880.116485:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000351 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 11:24:51,259:1622690691.259115:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000351 done,  78/564 
-2021-06-03 11:24:51,260:1622690691.260090:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000352 start,  79/564 
-2021-06-03 11:24:51,261:1622690691.261061:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000352 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 11:44:00,479:1622691840.479146:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000352 done,  79/564 
-2021-06-03 11:44:00,480:1622691840.480123:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000367 start,  80/564 
-2021-06-03 11:44:00,481:1622691840.481101:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000367 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 11:56:21,999:1622692581.999241:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000367 done,  80/564 
-2021-06-03 11:56:22,000:1622692582.000218:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000372 start,  81/564 
-2021-06-03 11:56:22,000:1622692582.000218:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000372 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 12:11:37,289:1622693497.289784:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000372 done,  81/564 
-2021-06-03 12:11:37,290:1622693497.290762:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000382 start,  82/564 
-2021-06-03 12:11:37,291:1622693497.291738:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000382 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 12:25:17,035:1622694317.035480:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000382 done,  82/564 
-2021-06-03 12:25:17,036:1622694317.036460:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000383 start,  83/564 
-2021-06-03 12:25:17,037:1622694317.037434:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000383 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 12:47:33,050:1622695653.050420:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000383 done,  83/564 
-2021-06-03 12:47:33,051:1622695653.051404:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000391 start,  84/564 
-2021-06-03 12:47:33,052:1622695653.052377:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000391 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 13:13:02,134:1622697182.134618:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000391 done,  84/564 
-2021-06-03 13:13:02,135:1622697182.135590:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000392 start,  85/564 
-2021-06-03 13:13:02,136:1622697182.136560:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000392 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 13:23:48,860:1622697828.860846:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000392 done,  85/564 
-2021-06-03 13:23:48,861:1622697828.861825:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000394 start,  86/564 
-2021-06-03 13:23:48,863:1622697828.863771:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000394 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 13:54:04,328:1622699644.328694:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000394 done,  86/564 
-2021-06-03 13:54:04,330:1622699644.330651:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000403 start,  87/564 
-2021-06-03 13:54:04,331:1622699644.331631:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000403 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 14:09:29,997:1622700569.997163:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000403 done,  87/564 
-2021-06-03 14:09:29,998:1622700569.998139:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000409 start,  88/564 
-2021-06-03 14:09:29,999:1622700569.999115:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000409 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 14:39:15,683:1622702355.683774:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000409 done,  88/564 
-2021-06-03 14:39:15,685:1622702355.685728:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000420 start,  89/564 
-2021-06-03 14:39:15,685:1622702355.685728:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000420 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 14:48:02,240:1622702882.240155:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000420 done,  89/564 
-2021-06-03 14:48:02,241:1622702882.241132:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000442 start,  90/564 
-2021-06-03 14:48:02,242:1622702882.242109:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000442 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 15:15:09,748:1622704509.748112:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000442 done,  90/564 
-2021-06-03 15:15:09,750:1622704509.750065:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000446 start,  91/564 
-2021-06-03 15:15:09,750:1622704509.750065:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000446 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 15:29:34,700:1622705374.700806:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000446 done,  91/564 
-2021-06-03 15:29:34,701:1622705374.701783:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000458 start,  92/564 
-2021-06-03 15:29:34,702:1622705374.702760:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000458 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 15:43:10,502:1622706190.502090:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000458 done,  92/564 
-2021-06-03 15:43:10,503:1622706190.503066:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000468 start,  93/564 
-2021-06-03 15:43:10,504:1622706190.504042:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000468 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 15:59:35,550:1622707175.550471:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000468 done,  93/564 
-2021-06-03 15:59:35,551:1622707175.551447:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000488 start,  94/564 
-2021-06-03 15:59:35,552:1622707175.552425:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000488 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 16:14:50,879:1622708090.879051:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000488 done,  94/564 
-2021-06-03 16:14:50,880:1622708090.880028:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000490 start,  95/564 
-2021-06-03 16:14:50,880:1622708090.880028:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000490 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 16:33:31,915:1622709211.915596:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000490 done,  95/564 
-2021-06-03 16:33:31,916:1622709211.916575:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000497 start,  96/564 
-2021-06-03 16:33:31,917:1622709211.917549:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000497 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 17:07:15,312:1622711235.312945:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000497 done,  96/564 
-2021-06-03 17:07:15,313:1622711235.313916:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000503 start,  97/564 
-2021-06-03 17:07:15,313:1622711235.313916:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000503 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 17:27:00,921:1622712420.921752:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000503 done,  97/564 
-2021-06-03 17:27:00,923:1622712420.923697:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000507 start,  98/564 
-2021-06-03 17:27:00,923:1622712420.923697:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000507 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 17:47:13,411:1622713633.411337:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000507 done,  98/564 
-2021-06-03 17:47:13,413:1622713633.413290:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000511 start,  99/564 
-2021-06-03 17:47:13,413:1622713633.413290:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000511 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 18:08:33,106:1622714913.106022:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000511 done,  99/564 
-2021-06-03 18:08:33,106:1622714913.106999:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000513 start,  100/564 
-2021-06-03 18:08:33,107:1622714913.107970:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000513 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 18:24:51,050:1622715891.050753:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000513 done,  100/564 
-2021-06-03 18:24:51,052:1622715891.052706:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000529 start,  101/564 
-2021-06-03 18:24:51,053:1622715891.053685:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000529 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 18:42:32,038:1622716952.038506:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000529 done,  101/564 
-2021-06-03 18:42:32,039:1622716952.039485:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000542 start,  102/564 
-2021-06-03 18:42:32,040:1622716952.040460:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000542 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 18:59:46,012:1622717986.012685:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000542 done,  102/564 
-2021-06-03 18:59:46,013:1622717986.013660:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000547 start,  103/564 
-2021-06-03 18:59:46,014:1622717986.014631:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000547 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 19:10:51,511:1622718651.511273:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000547 done,  103/564 
-2021-06-03 19:10:51,512:1622718651.512245:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000550 start,  104/564 
-2021-06-03 19:10:51,512:1622718651.512245:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000550 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 19:22:31,952:1622719351.952405:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000550 done,  104/564 
-2021-06-03 19:22:31,953:1622719351.953382:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000554 start,  105/564 
-2021-06-03 19:22:31,954:1622719351.954357:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000554 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 19:32:12,306:1622719932.306443:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000554 done,  105/564 
-2021-06-03 19:32:12,307:1622719932.307421:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000578 start,  106/564 
-2021-06-03 19:32:12,308:1622719932.308401:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000578 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 19:46:45,742:1622720805.742575:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000578 done,  106/564 
-2021-06-03 19:46:45,743:1622720805.743552:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000581 start,  107/564 
-2021-06-03 19:46:45,744:1622720805.744530:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000581 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 20:05:39,085:1622721939.085701:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000581 done,  107/564 
-2021-06-03 20:05:39,086:1622721939.086678:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000599 start,  108/564 
-2021-06-03 20:05:39,086:1622721939.086678:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000599 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 20:06:01,984:1622721961.984129:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000603 start,  109/564 
-2021-06-03 20:06:01,985:1622721961.985111:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000603 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 20:21:42,437:1622722902.437801:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000603 done,  109/564 
-2021-06-03 20:21:42,439:1622722902.439754:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000650 start,  110/564 
-2021-06-03 20:21:42,439:1622722902.439754:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000650 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 20:36:50,691:1622723810.691275:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000650 done,  110/564 
-2021-06-03 20:36:50,693:1622723810.693218:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000689 start,  111/564 
-2021-06-03 20:36:50,693:1622723810.693218:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000689 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 20:58:08,364:1622725088.364380:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000689 done,  111/564 
-2021-06-03 20:58:08,365:1622725088.365358:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000694 start,  112/564 
-2021-06-03 20:58:08,366:1622725088.366333:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000694 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 21:13:45,186:1622726025.186195:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000694 done,  112/564 
-2021-06-03 21:13:45,187:1622726025.187172:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000697 start,  113/564 
-2021-06-03 21:13:45,188:1622726025.188154:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000697 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 21:42:59,599:1622727779.599376:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000697 done,  113/564 
-2021-06-03 21:42:59,600:1622727779.600349:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000701 start,  114/564 
-2021-06-03 21:42:59,601:1622727779.601320:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000701 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 21:57:59,461:1622728679.461232:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000701 done,  114/564 
-2021-06-03 21:57:59,463:1622728679.463175:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000704 start,  115/564 
-2021-06-03 21:57:59,464:1622728679.464152:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000704 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 22:09:46,796:1622729386.796874:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000704 done,  115/564 
-2021-06-03 22:09:46,797:1622729386.797850:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000756 start,  116/564 
-2021-06-03 22:09:46,798:1622729386.798826:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000756 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 22:14:16,057:1622729656.057467:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000756 done,  116/564 
-2021-06-03 22:14:16,058:1622729656.058443:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000779 start,  117/564 
-2021-06-03 22:14:16,059:1622729656.059413:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000779 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 22:18:43,907:1622729923.907903:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000779 done,  117/564 
-2021-06-03 22:18:43,908:1622729923.908882:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000784 start,  118/564 
-2021-06-03 22:18:43,909:1622729923.909853:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000784 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 22:22:14,399:1622730134.399959:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000784 done,  118/564 
-2021-06-03 22:22:14,400:1622730134.400935:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000788 start,  119/564 
-2021-06-03 22:22:14,401:1622730134.401911:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000788 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 22:26:41,059:1622730401.059982:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000788 done,  119/564 
-2021-06-03 22:26:41,059:1622730401.059982:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000796 start,  120/564 
-2021-06-03 22:26:41,060:1622730401.060964:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000796 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 22:30:20,764:1622730620.764973:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000796 done,  120/564 
-2021-06-03 22:30:20,765:1622730620.765944:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000855 start,  121/564 
-2021-06-03 22:30:20,766:1622730620.766916:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000855 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 22:33:22,336:1622730802.336178:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000855 done,  121/564 
-2021-06-03 22:33:22,337:1622730802.337157:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000032 start,  122/564 
-2021-06-03 22:33:22,338:1622730802.338125:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000032 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 22:59:19,352:1622732359.352885:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000032 done,  122/564 
-2021-06-03 22:59:19,353:1622732359.353862:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000440 start,  123/564 
-2021-06-03 22:59:19,354:1622732359.354845:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000440 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 23:22:29,236:1622733749.236038:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000440 done,  123/564 
-2021-06-03 23:22:29,237:1622733749.237014:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000700 start,  124/564 
-2021-06-03 23:22:29,238:1622733749.238002:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000700 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 23:22:53,257:1622733773.257502:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000021 start,  125/564 
-2021-06-03 23:22:53,258:1622733773.258479:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000021 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-03 23:37:45,593:1622734665.593027:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000021 done,  125/564 
-2021-06-03 23:37:45,594:1622734665.594006:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000022 start,  126/564 
-2021-06-03 23:37:45,594:1622734665.594974:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000022 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 00:07:46,012:1622736466.012993:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000022 done,  126/564 
-2021-06-04 00:07:46,013:1622736466.013970:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000046 start,  127/564 
-2021-06-04 00:07:46,014:1622736466.014946:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000046 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 00:37:22,250:1622738242.250342:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000046 done,  127/564 
-2021-06-04 00:37:22,251:1622738242.251317:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000050 start,  128/564 
-2021-06-04 00:37:22,252:1622738242.252290:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000050 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 00:47:21,286:1622738841.286169:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000050 done,  128/564 
-2021-06-04 00:47:21,287:1622738841.287144:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000098 start,  129/564 
-2021-06-04 00:47:21,287:1622738841.287144:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000098 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 00:53:56,762:1622739236.762530:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000098 done,  129/564 
-2021-06-04 00:53:56,763:1622739236.763507:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000100 start,  130/564 
-2021-06-04 00:53:56,764:1622739236.764482:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000100 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 01:08:24,549:1622740104.549205:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000100 done,  130/564 
-2021-06-04 01:08:24,550:1622740104.550178:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000123 start,  131/564 
-2021-06-04 01:08:24,551:1622740104.551149:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000123 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 01:19:34,377:1622740774.377022:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000123 done,  131/564 
-2021-06-04 01:19:34,377:1622740774.378000:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000125 start,  132/564 
-2021-06-04 01:19:34,378:1622740774.378978:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000125 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 01:30:42,590:1622741442.590508:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000125 done,  132/564 
-2021-06-04 01:30:42,591:1622741442.591486:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000126 start,  133/564 
-2021-06-04 01:30:42,592:1622741442.592462:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000126 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 01:42:23,203:1622742143.203467:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000126 done,  133/564 
-2021-06-04 01:42:23,205:1622742143.205410:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000136 start,  134/564 
-2021-06-04 01:42:23,206:1622742143.206391:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000136 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 01:55:55,353:1622742955.353534:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000136 done,  134/564 
-2021-06-04 01:55:55,354:1622742955.354511:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000137 start,  135/564 
-2021-06-04 01:55:55,355:1622742955.355488:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000137 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 02:13:51,147:1622744031.147847:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000137 done,  135/564 
-2021-06-04 02:13:51,148:1622744031.148825:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000138 start,  136/564 
-2021-06-04 02:13:51,149:1622744031.149796:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000138 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 02:37:14,164:1622745434.164795:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000138 done,  136/564 
-2021-06-04 02:37:14,165:1622745434.165772:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000141 start,  137/564 
-2021-06-04 02:37:14,166:1622745434.166749:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000141 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 03:07:13,126:1622747233.126770:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000141 done,  137/564 
-2021-06-04 03:07:13,127:1622747233.127748:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000143 start,  138/564 
-2021-06-04 03:07:13,128:1622747233.128724:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000143 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 03:21:15,193:1622748075.193750:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000143 done,  138/564 
-2021-06-04 03:21:15,194:1622748075.194721:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000144 start,  139/564 
-2021-06-04 03:21:15,194:1622748075.194721:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000144 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 03:29:53,213:1622748593.213009:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000144 done,  139/564 
-2021-06-04 03:29:53,213:1622748593.213985:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000147 start,  140/564 
-2021-06-04 03:29:53,214:1622748593.214962:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000147 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 04:01:09,163:1622750469.163342:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000147 done,  140/564 
-2021-06-04 04:01:09,164:1622750469.164311:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000159 start,  141/564 
-2021-06-04 04:01:09,165:1622750469.165282:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000159 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 04:11:48,736:1622751108.736304:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000159 done,  141/564 
-2021-06-04 04:11:48,737:1622751108.737281:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000162 start,  142/564 
-2021-06-04 04:11:48,738:1622751108.738258:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000162 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 04:25:52,053:1622751952.053261:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000162 done,  142/564 
-2021-06-04 04:25:52,054:1622751952.054235:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000163 start,  143/564 
-2021-06-04 04:25:52,054:1622751952.054235:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000163 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 04:44:56,977:1622753096.977554:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000163 done,  143/564 
-2021-06-04 04:44:56,978:1622753096.978531:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000167 start,  144/564 
-2021-06-04 04:44:56,979:1622753096.979504:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000167 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 05:01:37,415:1622754097.415693:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000167 done,  144/564 
-2021-06-04 05:01:37,416:1622754097.416671:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000170 start,  145/564 
-2021-06-04 05:01:37,417:1622754097.417645:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000170 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 05:01:59,239:1622754119.239897:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000175 start,  146/564 
-2021-06-04 05:01:59,240:1622754119.240873:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000175 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 05:25:25,423:1622755525.423748:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000175 done,  146/564 
-2021-06-04 05:25:25,424:1622755525.424725:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000183 start,  147/564 
-2021-06-04 05:25:25,425:1622755525.425702:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000183 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 05:38:38,911:1622756318.911624:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000183 done,  147/564 
-2021-06-04 05:38:38,912:1622756318.912599:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000184 start,  148/564 
-2021-06-04 05:38:38,913:1622756318.913570:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000184 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 05:59:08,634:1622757548.634500:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000184 done,  148/564 
-2021-06-04 05:59:08,635:1622757548.635481:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000189 start,  149/564 
-2021-06-04 05:59:08,636:1622757548.636458:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000189 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 06:14:06,066:1622758446.066606:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000189 done,  149/564 
-2021-06-04 06:14:06,067:1622758446.067583:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000191 start,  150/564 
-2021-06-04 06:14:06,067:1622758446.067583:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000191 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 06:32:29,998:1622759549.998640:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000191 done,  150/564 
-2021-06-04 06:32:30,000:1622759550.000588:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000193 start,  151/564 
-2021-06-04 06:32:30,000:1622759550.000588:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000193 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 06:43:59,959:1622760239.959139:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000193 done,  151/564 
-2021-06-04 06:43:59,960:1622760239.960116:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000195 start,  152/564 
-2021-06-04 06:43:59,960:1622760239.960116:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000195 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 06:54:15,179:1622760855.179451:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000195 done,  152/564 
-2021-06-04 06:54:15,180:1622760855.180427:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000197 start,  153/564 
-2021-06-04 06:54:15,181:1622760855.181399:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000197 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 07:03:21,485:1622761401.485849:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000197 done,  153/564 
-2021-06-04 07:03:21,486:1622761401.486822:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000206 start,  154/564 
-2021-06-04 07:03:21,487:1622761401.487792:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000206 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 07:20:42,339:1622762442.339637:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000206 done,  154/564 
-2021-06-04 07:20:42,340:1622762442.340612:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000209 start,  155/564 
-2021-06-04 07:20:42,340:1622762442.340612:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000209 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 07:33:25,028:1622763205.028693:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000209 done,  155/564 
-2021-06-04 07:33:25,030:1622763205.030645:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000215 start,  156/564 
-2021-06-04 07:33:25,031:1622763205.031621:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000215 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 07:41:14,750:1622763674.750036:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000215 done,  156/564 
-2021-06-04 07:41:14,751:1622763674.751010:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000218 start,  157/564 
-2021-06-04 07:41:14,751:1622763674.751010:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000218 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 07:56:43,265:1622764603.265128:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000218 done,  157/564 
-2021-06-04 07:56:43,266:1622764603.266101:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000219 start,  158/564 
-2021-06-04 07:56:43,267:1622764603.267072:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000219 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 08:06:14,036:1622765174.036308:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000219 done,  158/564 
-2021-06-04 08:06:14,037:1622765174.037282:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000220 start,  159/564 
-2021-06-04 08:06:14,038:1622765174.038255:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000220 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 08:30:47,452:1622766647.452444:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000220 done,  159/564 
-2021-06-04 08:30:47,453:1622766647.453418:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000225 start,  160/564 
-2021-06-04 08:30:47,453:1622766647.453418:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000225 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 08:42:20,744:1622767340.744080:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000225 done,  160/564 
-2021-06-04 08:42:20,745:1622767340.745052:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000231 start,  161/564 
-2021-06-04 08:42:20,746:1622767340.746023:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000231 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 09:02:39,084:1622768559.084093:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000231 done,  161/564 
-2021-06-04 09:02:39,085:1622768559.085073:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000233 start,  162/564 
-2021-06-04 09:02:39,085:1622768559.085073:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000233 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 09:03:01,745:1622768581.745215:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000235 start,  163/564 
-2021-06-04 09:03:01,746:1622768581.746192:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000235 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 09:24:10,181:1622769850.181108:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000235 done,  163/564 
-2021-06-04 09:24:10,182:1622769850.182085:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000236 start,  164/564 
-2021-06-04 09:24:10,183:1622769850.183064:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000236 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 09:32:03,108:1622770323.108548:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000236 done,  164/564 
-2021-06-04 09:32:03,109:1622770323.109524:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000237 start,  165/564 
-2021-06-04 09:32:03,110:1622770323.110494:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000237 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 09:43:21,312:1622771001.312258:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000237 done,  165/564 
-2021-06-04 09:43:21,314:1622771001.314199:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000239 start,  166/564 
-2021-06-04 09:43:21,315:1622771001.315180:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000239 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 09:56:07,393:1622771767.393841:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000239 done,  166/564 
-2021-06-04 09:56:07,395:1622771767.395794:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000240 start,  167/564 
-2021-06-04 09:56:07,395:1622771767.395794:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000240 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 10:14:40,918:1622772880.918680:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000240 done,  167/564 
-2021-06-04 10:14:40,919:1622772880.919657:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000248 start,  168/564 
-2021-06-04 10:14:40,919:1622772880.919657:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000248 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 10:35:20,162:1622774120.162981:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000248 done,  168/564 
-2021-06-04 10:35:20,163:1622774120.163958:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000252 start,  169/564 
-2021-06-04 10:35:20,164:1622774120.164938:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000252 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 10:35:43,733:1622774143.733278:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000254 start,  170/564 
-2021-06-04 10:35:43,734:1622774143.734254:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000254 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 10:36:07,400:1622774167.400254:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000264 start,  171/564 
-2021-06-04 10:36:07,401:1622774167.401232:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000264 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 10:39:40,042:1622774380.042684:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000264 done,  171/564 
-2021-06-04 10:39:40,043:1622774380.043662:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000265 start,  172/564 
-2021-06-04 10:39:40,044:1622774380.044631:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000265 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 10:56:54,500:1622775414.500209:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000265 done,  172/564 
-2021-06-04 10:56:54,501:1622775414.501187:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000271 start,  173/564 
-2021-06-04 10:56:54,502:1622775414.502162:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000271 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 11:10:22,303:1622776222.303460:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000271 done,  173/564 
-2021-06-04 11:10:22,304:1622776222.304435:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000272 start,  174/564 
-2021-06-04 11:10:22,305:1622776222.305410:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000272 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 11:33:33,841:1622777613.841735:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000272 done,  174/564 
-2021-06-04 11:33:33,842:1622777613.842712:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000285 start,  175/564 
-2021-06-04 11:33:33,842:1622777613.842712:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000285 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 12:02:47,004:1622779367.004710:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000285 done,  175/564 
-2021-06-04 12:02:47,005:1622779367.005688:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000286 start,  176/564 
-2021-06-04 12:02:47,006:1622779367.006666:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000286 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 12:03:11,799:1622779391.799625:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000287 start,  177/564 
-2021-06-04 12:03:11,801:1622779391.801579:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000287 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 12:03:35,860:1622779415.860159:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000290 start,  178/564 
-2021-06-04 12:03:35,861:1622779415.861136:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000290 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 12:10:32,659:1622779832.659772:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000290 done,  178/564 
-2021-06-04 12:10:32,660:1622779832.660748:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000294 start,  179/564 
-2021-06-04 12:10:32,661:1622779832.661730:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000294 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 12:27:39,996:1622780859.996171:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000294 done,  179/564 
-2021-06-04 12:27:39,997:1622780859.997148:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000296 start,  180/564 
-2021-06-04 12:27:39,998:1622780859.998124:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000296 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 12:53:53,301:1622782433.301021:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000296 done,  180/564 
-2021-06-04 12:53:53,301:1622782433.302000:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000298 start,  181/564 
-2021-06-04 12:53:53,302:1622782433.302973:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000298 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 13:01:34,985:1622782894.985393:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000298 done,  181/564 
-2021-06-04 13:01:34,986:1622782894.986369:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000299 start,  182/564 
-2021-06-04 13:01:34,987:1622782894.987344:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000299 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 13:16:39,729:1622783799.729157:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000299 done,  182/564 
-2021-06-04 13:16:39,730:1622783799.730127:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000301 start,  183/564 
-2021-06-04 13:16:39,731:1622783799.731104:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000301 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 13:46:58,324:1622785618.324873:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000301 done,  183/564 
-2021-06-04 13:46:58,325:1622785618.325852:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000303 start,  184/564 
-2021-06-04 13:46:58,326:1622785618.326828:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000303 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 13:47:22,447:1622785642.447920:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000307 start,  185/564 
-2021-06-04 13:47:22,448:1622785642.448895:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000307 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 13:47:46,588:1622785666.588543:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000308 start,  186/564 
-2021-06-04 13:47:46,589:1622785666.589520:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000308 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 14:04:15,868:1622786655.868359:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000308 done,  186/564 
-2021-06-04 14:04:15,869:1622786655.869333:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000309 start,  187/564 
-2021-06-04 14:04:15,870:1622786655.870303:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000309 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 14:14:02,766:1622787242.766477:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000309 done,  187/564 
-2021-06-04 14:14:02,767:1622787242.767454:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000313 start,  188/564 
-2021-06-04 14:14:02,768:1622787242.768439:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000313 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 14:31:08,478:1622788268.478892:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000313 done,  188/564 
-2021-06-04 14:31:08,479:1622788268.479867:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000318 start,  189/564 
-2021-06-04 14:31:08,480:1622788268.480844:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000318 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 14:49:07,383:1622789347.383566:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000318 done,  189/564 
-2021-06-04 14:49:07,384:1622789347.384544:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000319 start,  190/564 
-2021-06-04 14:49:07,385:1622789347.385519:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000319 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 15:06:17,066:1622790377.066719:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000319 done,  190/564 
-2021-06-04 15:06:17,067:1622790377.067696:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000324 start,  191/564 
-2021-06-04 15:06:17,068:1622790377.068677:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000324 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 15:17:13,866:1622791033.866201:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000324 done,  191/564 
-2021-06-04 15:17:13,867:1622791033.867178:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000327 start,  192/564 
-2021-06-04 15:17:13,868:1622791033.868155:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000327 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 15:26:07,618:1622791567.618879:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000327 done,  192/564 
-2021-06-04 15:26:07,619:1622791567.619854:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000328 start,  193/564 
-2021-06-04 15:26:07,619:1622791567.619854:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000328 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 15:39:13,077:1622792353.077475:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000328 done,  193/564 
-2021-06-04 15:39:13,078:1622792353.078451:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000329 start,  194/564 
-2021-06-04 15:39:13,078:1622792353.078451:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000329 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 15:50:39,317:1622793039.317335:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000329 done,  194/564 
-2021-06-04 15:50:39,318:1622793039.318308:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000330 start,  195/564 
-2021-06-04 15:50:39,318:1622793039.318308:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000330 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 16:07:38,744:1622794058.744569:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000330 done,  195/564 
-2021-06-04 16:07:38,745:1622794058.745558:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000332 start,  196/564 
-2021-06-04 16:07:38,746:1622794058.746525:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000332 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 16:08:01,190:1622794081.190847:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000336 start,  197/564 
-2021-06-04 16:08:01,191:1622794081.191823:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000336 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 16:27:07,615:1622795227.615985:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000336 done,  197/564 
-2021-06-04 16:27:07,616:1622795227.616963:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000341 start,  198/564 
-2021-06-04 16:27:07,616:1622795227.616963:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000341 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 16:48:17,063:1622796497.063833:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000341 done,  198/564 
-2021-06-04 16:48:17,064:1622796497.064810:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000350 start,  199/564 
-2021-06-04 16:48:17,064:1622796497.064810:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000350 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 17:02:14,258:1622797334.258623:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000350 done,  199/564 
-2021-06-04 17:02:14,259:1622797334.259603:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000359 start,  200/564 
-2021-06-04 17:02:14,260:1622797334.260576:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000359 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 17:02:36,240:1622797356.240056:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000366 start,  201/564 
-2021-06-04 17:02:36,241:1622797356.241032:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000366 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 17:02:58,019:1622797378.019348:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000373 start,  202/564 
-2021-06-04 17:02:58,020:1622797378.020319:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000373 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 17:20:03,756:1622798403.756082:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000373 done,  202/564 
-2021-06-04 17:20:03,757:1622798403.757059:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000377 start,  203/564 
-2021-06-04 17:20:03,758:1622798403.758035:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000377 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 17:33:25,533:1622799205.533098:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000377 done,  203/564 
-2021-06-04 17:33:25,534:1622799205.534066:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000381 start,  204/564 
-2021-06-04 17:33:25,535:1622799205.535042:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000381 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 18:05:09,777:1622801109.777270:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000381 done,  204/564 
-2021-06-04 18:05:09,778:1622801109.778246:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000386 start,  205/564 
-2021-06-04 18:05:09,779:1622801109.779219:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000386 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 18:12:03,269:1622801523.269264:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000386 done,  205/564 
-2021-06-04 18:12:03,270:1622801523.270237:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000387 start,  206/564 
-2021-06-04 18:12:03,271:1622801523.271212:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000387 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 18:29:02,105:1622802542.105760:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000387 done,  206/564 
-2021-06-04 18:29:02,106:1622802542.106737:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000390 start,  207/564 
-2021-06-04 18:29:02,106:1622802542.106737:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000390 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 18:34:05,607:1622802845.607618:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000390 done,  207/564 
-2021-06-04 18:34:05,608:1622802845.608592:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000396 start,  208/564 
-2021-06-04 18:34:05,608:1622802845.608592:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000396 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 18:46:31,246:1622803591.246827:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000396 done,  208/564 
-2021-06-04 18:46:31,247:1622803591.247805:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000400 start,  209/564 
-2021-06-04 18:46:31,247:1622803591.247805:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000400 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 18:55:18,861:1622804118.861701:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000400 done,  209/564 
-2021-06-04 18:55:18,862:1622804118.862678:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000404 start,  210/564 
-2021-06-04 18:55:18,863:1622804118.863655:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000404 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 19:14:00,501:1622805240.501908:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000404 done,  210/564 
-2021-06-04 19:14:00,502:1622805240.502879:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000405 start,  211/564 
-2021-06-04 19:14:00,503:1622805240.503847:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000405 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 19:25:45,954:1622805945.954607:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000405 done,  211/564 
-2021-06-04 19:25:45,955:1622805945.955584:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000407 start,  212/564 
-2021-06-04 19:25:45,956:1622805945.956551:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000407 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 19:45:25,260:1622807125.260771:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000407 done,  212/564 
-2021-06-04 19:45:25,262:1622807125.262721:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000411 start,  213/564 
-2021-06-04 19:45:25,263:1622807125.263697:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000411 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 19:56:36,454:1622807796.454666:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000411 done,  213/564 
-2021-06-04 19:56:36,455:1622807796.455638:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000412 start,  214/564 
-2021-06-04 19:56:36,456:1622807796.456609:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000412 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 20:10:05,719:1622808605.719828:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000412 done,  214/564 
-2021-06-04 20:10:05,720:1622808605.720808:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000413 start,  215/564 
-2021-06-04 20:10:05,721:1622808605.721779:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000413 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 20:25:40,982:1622809540.982209:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000413 done,  215/564 
-2021-06-04 20:25:40,983:1622809540.983180:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000417 start,  216/564 
-2021-06-04 20:25:40,983:1622809540.983180:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000417 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 20:35:27,268:1622810127.268912:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000417 done,  216/564 
-2021-06-04 20:35:27,269:1622810127.269901:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000419 start,  217/564 
-2021-06-04 20:35:27,270:1622810127.270868:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000419 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 20:51:00,612:1622811060.612223:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000419 done,  217/564 
-2021-06-04 20:51:00,613:1622811060.613204:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000422 start,  218/564 
-2021-06-04 20:51:00,614:1622811060.614179:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000422 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 20:59:00,669:1622811540.669771:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000422 done,  218/564 
-2021-06-04 20:59:00,670:1622811540.670742:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000423 start,  219/564 
-2021-06-04 20:59:00,670:1622811540.670742:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000423 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 20:59:24,743:1622811564.743976:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000424 start,  220/564 
-2021-06-04 20:59:24,745:1622811564.745929:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000424 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 20:59:48,345:1622811588.345529:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000427 start,  221/564 
-2021-06-04 20:59:48,346:1622811588.346508:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000427 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 21:17:46,424:1622812666.424052:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000427 done,  221/564 
-2021-06-04 21:17:46,425:1622812666.425034:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000429 start,  222/564 
-2021-06-04 21:17:46,426:1622812666.426007:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000429 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 21:18:08,625:1622812688.625212:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000430 start,  223/564 
-2021-06-04 21:18:08,626:1622812688.626189:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000430 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 21:30:48,705:1622813448.705773:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000430 done,  223/564 
-2021-06-04 21:30:48,706:1622813448.706750:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000431 start,  224/564 
-2021-06-04 21:30:48,707:1622813448.707730:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000431 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 21:42:57,525:1622814177.525941:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000431 done,  224/564 
-2021-06-04 21:42:57,526:1622814177.526919:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000432 start,  225/564 
-2021-06-04 21:42:57,527:1622814177.527894:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000432 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 22:00:46,605:1622815246.605318:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000432 done,  225/564 
-2021-06-04 22:00:46,606:1622815246.606295:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000434 start,  226/564 
-2021-06-04 22:00:46,607:1622815246.607271:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000434 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 22:08:57,517:1622815737.517139:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000434 done,  226/564 
-2021-06-04 22:08:57,518:1622815737.518114:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000438 start,  227/564 
-2021-06-04 22:08:57,519:1622815737.519090:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000438 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 22:34:01,739:1622817241.739174:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000438 done,  227/564 
-2021-06-04 22:34:01,740:1622817241.740150:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000441 start,  228/564 
-2021-06-04 22:34:01,741:1622817241.741125:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000441 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 22:34:24,634:1622817264.634663:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000443 start,  229/564 
-2021-06-04 22:34:24,635:1622817264.635640:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000443 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 22:38:55,479:1622817535.479223:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000443 done,  229/564 
-2021-06-04 22:38:55,480:1622817535.480198:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000444 start,  230/564 
-2021-06-04 22:38:55,481:1622817535.481173:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000444 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 22:52:26,097:1622818346.097040:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000444 done,  230/564 
-2021-06-04 22:52:26,098:1622818346.098017:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000445 start,  231/564 
-2021-06-04 22:52:26,098:1622818346.098989:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000445 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 22:52:49,565:1622818369.565768:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000448 start,  232/564 
-2021-06-04 22:52:49,566:1622818369.566751:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000448 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 22:53:13,258:1622818393.258137:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000449 start,  233/564 
-2021-06-04 22:53:13,259:1622818393.259114:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000449 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 23:38:09,990:1622821089.990294:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000449 done,  233/564 
-2021-06-04 23:38:09,991:1622821089.991270:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000450 start,  234/564 
-2021-06-04 23:38:09,992:1622821089.992252:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000450 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 23:38:34,100:1622821114.100633:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000453 start,  235/564 
-2021-06-04 23:38:34,101:1622821114.101611:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000453 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 23:38:57,863:1622821137.863318:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000454 start,  236/564 
-2021-06-04 23:38:57,864:1622821137.864297:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000454 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-04 23:53:48,002:1622822028.002383:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000454 done,  236/564 
-2021-06-04 23:53:48,003:1622822028.003360:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000459 start,  237/564 
-2021-06-04 23:53:48,004:1622822028.004336:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000459 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 00:15:55,429:1622823355.429568:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000459 done,  237/564 
-2021-06-05 00:15:55,431:1622823355.431526:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000460 start,  238/564 
-2021-06-05 00:15:55,432:1622823355.432502:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000460 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 00:16:19,080:1622823379.080933:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000463 start,  239/564 
-2021-06-05 00:16:19,081:1622823379.081907:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000463 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 00:29:20,419:1622824160.419322:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000463 done,  239/564 
-2021-06-05 00:29:20,421:1622824160.421276:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000464 start,  240/564 
-2021-06-05 00:29:20,422:1622824160.422254:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000464 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 00:29:42,258:1622824182.258171:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000469 start,  241/564 
-2021-06-05 00:29:42,259:1622824182.259154:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000469 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 00:36:45,550:1622824605.550866:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000469 done,  241/564 
-2021-06-05 00:36:45,551:1622824605.551845:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000470 start,  242/564 
-2021-06-05 00:36:45,552:1622824605.552819:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000470 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 00:50:06,816:1622825406.816193:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000470 done,  242/564 
-2021-06-05 00:50:06,817:1622825406.817169:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000472 start,  243/564 
-2021-06-05 00:50:06,818:1622825406.818145:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000472 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 00:55:40,268:1622825740.268272:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000472 done,  243/564 
-2021-06-05 00:55:40,269:1622825740.269248:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000474 start,  244/564 
-2021-06-05 00:55:40,270:1622825740.270228:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000474 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 01:24:42,383:1622827482.383599:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000474 done,  244/564 
-2021-06-05 01:24:42,384:1622827482.384576:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000475 start,  245/564 
-2021-06-05 01:24:42,385:1622827482.385556:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000475 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 01:35:11,408:1622828111.408605:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000475 done,  245/564 
-2021-06-05 01:35:11,408:1622828111.408605:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000478 start,  246/564 
-2021-06-05 01:35:11,409:1622828111.409576:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000478 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 01:50:27,046:1622829027.046880:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000478 done,  246/564 
-2021-06-05 01:50:27,047:1622829027.047857:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000479 start,  247/564 
-2021-06-05 01:50:27,048:1622829027.048833:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000479 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 02:04:05,840:1622829845.840427:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000479 done,  247/564 
-2021-06-05 02:04:05,841:1622829845.841404:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000483 start,  248/564 
-2021-06-05 02:04:05,842:1622829845.842383:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000483 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 02:23:53,931:1622831033.931658:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000483 done,  248/564 
-2021-06-05 02:23:53,933:1622831033.933602:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000485 start,  249/564 
-2021-06-05 02:23:53,933:1622831033.933602:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000485 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 02:44:57,979:1622832297.979950:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000485 done,  249/564 
-2021-06-05 02:44:57,980:1622832297.980925:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000486 start,  250/564 
-2021-06-05 02:44:57,980:1622832297.980925:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000486 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 03:01:49,920:1622833309.920876:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000486 done,  250/564 
-2021-06-05 03:01:49,921:1622833309.921853:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000489 start,  251/564 
-2021-06-05 03:01:49,922:1622833309.922829:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000489 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 03:10:43,739:1622833843.739840:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000489 done,  251/564 
-2021-06-05 03:10:43,740:1622833843.740816:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000491 start,  252/564 
-2021-06-05 03:10:43,740:1622833843.740816:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000491 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 03:23:00,572:1622834580.572532:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000491 done,  252/564 
-2021-06-05 03:23:00,573:1622834580.573510:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000492 start,  253/564 
-2021-06-05 03:23:00,574:1622834580.574486:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000492 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 03:28:35,939:1622834915.939581:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000492 done,  253/564 
-2021-06-05 03:28:35,940:1622834915.940558:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000493 start,  254/564 
-2021-06-05 03:28:35,941:1622834915.941529:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000493 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 03:39:21,949:1622835561.949000:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000493 done,  254/564 
-2021-06-05 03:39:21,949:1622835561.949973:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000494 start,  255/564 
-2021-06-05 03:39:21,949:1622835561.949973:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000494 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 03:48:19,757:1622836099.757347:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000494 done,  255/564 
-2021-06-05 03:48:19,758:1622836099.758325:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000498 start,  256/564 
-2021-06-05 03:48:19,758:1622836099.758325:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000498 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 04:02:55,772:1622836975.772450:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000498 done,  256/564 
-2021-06-05 04:02:55,773:1622836975.773428:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000499 start,  257/564 
-2021-06-05 04:02:55,774:1622836975.774406:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000499 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 04:18:19,097:1622837899.097684:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000499 done,  257/564 
-2021-06-05 04:18:19,098:1622837899.098662:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000501 start,  258/564 
-2021-06-05 04:18:19,099:1622837899.099633:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000501 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 04:25:17,869:1622838317.869869:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000501 done,  258/564 
-2021-06-05 04:25:17,870:1622838317.870845:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000502 start,  259/564 
-2021-06-05 04:25:17,871:1622838317.871816:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000502 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 04:46:36,103:1622839596.103589:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000502 done,  259/564 
-2021-06-05 04:46:36,104:1622839596.104570:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000504 start,  260/564 
-2021-06-05 04:46:36,105:1622839596.105545:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000504 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 04:55:04,970:1622840104.970566:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000504 done,  260/564 
-2021-06-05 04:55:04,971:1622840104.971540:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000505 start,  261/564 
-2021-06-05 04:55:04,971:1622840104.971540:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000505 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 05:11:23,365:1622841083.365524:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000505 done,  261/564 
-2021-06-05 05:11:23,366:1622841083.366497:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000506 start,  262/564 
-2021-06-05 05:11:23,367:1622841083.367474:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000506 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 05:24:17,795:1622841857.795805:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000506 done,  262/564 
-2021-06-05 05:24:17,797:1622841857.797759:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000508 start,  263/564 
-2021-06-05 05:24:17,797:1622841857.797759:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000508 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 05:27:26,786:1622842046.786919:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000508 done,  263/564 
-2021-06-05 05:27:26,787:1622842046.787896:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000509 start,  264/564 
-2021-06-05 05:27:26,787:1622842046.787896:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000509 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 05:38:51,859:1622842731.859714:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000509 done,  264/564 
-2021-06-05 05:38:51,860:1622842731.860689:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000510 start,  265/564 
-2021-06-05 05:38:51,860:1622842731.860689:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000510 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 05:43:57,250:1622843037.250287:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000510 done,  265/564 
-2021-06-05 05:43:57,251:1622843037.251259:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000514 start,  266/564 
-2021-06-05 05:43:57,251:1622843037.251259:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000514 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 06:05:18,973:1622844318.973374:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000514 done,  266/564 
-2021-06-05 06:05:18,973:1622844318.973374:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000518 start,  267/564 
-2021-06-05 06:05:18,974:1622844318.974346:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000518 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 06:26:27,383:1622845587.383970:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000518 done,  267/564 
-2021-06-05 06:26:27,384:1622845587.384947:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000525 start,  268/564 
-2021-06-05 06:26:27,385:1622845587.385924:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000525 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 06:29:36,293:1622845776.293918:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000525 done,  268/564 
-2021-06-05 06:29:36,294:1622845776.294895:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000530 start,  269/564 
-2021-06-05 06:29:36,295:1622845776.295870:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000530 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 06:54:47,571:1622847287.571419:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000530 done,  269/564 
-2021-06-05 06:54:47,572:1622847287.572397:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000535 start,  270/564 
-2021-06-05 06:54:47,573:1622847287.573372:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000535 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 07:14:56,603:1622848496.603076:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000535 done,  270/564 
-2021-06-05 07:14:56,604:1622848496.604054:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000536 start,  271/564 
-2021-06-05 07:14:56,605:1622848496.605028:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000536 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 07:45:28,688:1622850328.688985:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000536 done,  271/564 
-2021-06-05 07:45:28,689:1622850328.689962:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000540 start,  272/564 
-2021-06-05 07:45:28,690:1622850328.690944:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000540 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 08:01:45,436:1622851305.436522:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000540 done,  272/564 
-2021-06-05 08:01:45,437:1622851305.437499:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000549 start,  273/564 
-2021-06-05 08:01:45,438:1622851305.438476:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000549 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 08:26:16,642:1622852776.642518:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000549 done,  273/564 
-2021-06-05 08:26:16,643:1622852776.643491:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000551 start,  274/564 
-2021-06-05 08:26:16,644:1622852776.644468:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000551 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 08:34:44,068:1622853284.068278:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000551 done,  274/564 
-2021-06-05 08:34:44,069:1622853284.069257:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000553 start,  275/564 
-2021-06-05 08:34:44,069:1622853284.069257:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000553 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 08:52:49,896:1622854369.896746:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000553 done,  275/564 
-2021-06-05 08:52:49,897:1622854369.897718:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000555 start,  276/564 
-2021-06-05 08:52:49,897:1622854369.897718:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000555 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 09:08:16,056:1622855296.056549:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000555 done,  276/564 
-2021-06-05 09:08:16,057:1622855296.057528:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000556 start,  277/564 
-2021-06-05 09:08:16,058:1622855296.058502:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000556 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 09:22:05,677:1622856125.677158:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000556 done,  277/564 
-2021-06-05 09:22:05,678:1622856125.678138:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000558 start,  278/564 
-2021-06-05 09:22:05,679:1622856125.679111:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000558 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 09:30:24,413:1622856624.413208:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000558 done,  278/564 
-2021-06-05 09:30:24,414:1622856624.414186:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000560 start,  279/564 
-2021-06-05 09:30:24,415:1622856624.415168:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000560 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 09:48:10,159:1622857690.159888:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000560 done,  279/564 
-2021-06-05 09:48:10,160:1622857690.160864:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000561 start,  280/564 
-2021-06-05 09:48:10,161:1622857690.161835:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000561 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 10:03:20,122:1622858600.122382:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000561 done,  280/564 
-2021-06-05 10:03:20,123:1622858600.123359:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000565 start,  281/564 
-2021-06-05 10:03:20,124:1622858600.124336:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000565 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 10:19:47,612:1622859587.612960:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000565 done,  281/564 
-2021-06-05 10:19:47,613:1622859587.613934:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000567 start,  282/564 
-2021-06-05 10:19:47,614:1622859587.614909:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000567 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 10:54:54,380:1622861694.380332:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000567 done,  282/564 
-2021-06-05 10:54:54,382:1622861694.382287:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000571 start,  283/564 
-2021-06-05 10:54:54,383:1622861694.383264:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000571 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 11:11:14,185:1622862674.185520:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000571 done,  283/564 
-2021-06-05 11:11:14,186:1622862674.186497:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000572 start,  284/564 
-2021-06-05 11:11:14,187:1622862674.187473:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000572 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 11:17:08,660:1622863028.660896:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000572 done,  284/564 
-2021-06-05 11:17:08,661:1622863028.661874:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000573 start,  285/564 
-2021-06-05 11:17:08,662:1622863028.662849:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000573 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 11:38:26,160:1622864306.160315:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000573 done,  285/564 
-2021-06-05 11:38:26,161:1622864306.161293:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000577 start,  286/564 
-2021-06-05 11:38:26,162:1622864306.162270:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000577 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 11:43:55,041:1622864635.041836:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000577 done,  286/564 
-2021-06-05 11:43:55,043:1622864635.043790:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000582 start,  287/564 
-2021-06-05 11:43:55,043:1622864635.043790:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000582 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 12:07:11,688:1622866031.688748:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000582 done,  287/564 
-2021-06-05 12:07:11,689:1622866031.689724:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000585 start,  288/564 
-2021-06-05 12:07:11,690:1622866031.690701:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000585 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 12:18:37,460:1622866717.460948:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000585 done,  288/564 
-2021-06-05 12:18:37,461:1622866717.461926:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000588 start,  289/564 
-2021-06-05 12:18:37,462:1622866717.462903:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000588 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 12:31:12,310:1622867472.310036:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000588 done,  289/564 
-2021-06-05 12:31:12,311:1622867472.311014:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000594 start,  290/564 
-2021-06-05 12:31:12,311:1622867472.311014:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000594 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 12:39:42,651:1622867982.651582:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000594 done,  290/564 
-2021-06-05 12:39:42,652:1622867982.652555:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000595 start,  291/564 
-2021-06-05 12:39:42,653:1622867982.653530:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000595 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 12:52:29,079:1622868749.079843:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000595 done,  291/564 
-2021-06-05 12:52:29,080:1622868749.080818:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000602 start,  292/564 
-2021-06-05 12:52:29,081:1622868749.081794:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000602 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 13:02:29,175:1622869349.175221:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000602 done,  292/564 
-2021-06-05 13:02:29,175:1622869349.175221:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000605 start,  293/564 
-2021-06-05 13:02:29,176:1622869349.176193:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000605 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 13:33:59,840:1622871239.840335:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000605 done,  293/564 
-2021-06-05 13:33:59,841:1622871239.841311:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000606 start,  294/564 
-2021-06-05 13:33:59,842:1622871239.842292:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000606 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 13:49:26,997:1622872166.997007:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000606 done,  294/564 
-2021-06-05 13:49:26,998:1622872166.998960:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000609 start,  295/564 
-2021-06-05 13:49:26,999:1622872166.999941:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000609 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 14:02:41,693:1622872961.693957:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000609 done,  295/564 
-2021-06-05 14:02:41,694:1622872961.694934:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000610 start,  296/564 
-2021-06-05 14:02:41,694:1622872961.694934:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000610 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 14:18:31,649:1622873911.649523:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000610 done,  296/564 
-2021-06-05 14:18:31,650:1622873911.650496:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000613 start,  297/564 
-2021-06-05 14:18:31,651:1622873911.651467:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000613 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 14:33:19,844:1622874799.844327:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000613 done,  297/564 
-2021-06-05 14:33:19,846:1622874799.846277:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000615 start,  298/564 
-2021-06-05 14:33:19,847:1622874799.847254:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000615 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 14:45:22,573:1622875522.573571:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000615 done,  298/564 
-2021-06-05 14:45:22,574:1622875522.574548:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000617 start,  299/564 
-2021-06-05 14:45:22,575:1622875522.575524:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000617 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 14:55:22,606:1622876122.606364:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000617 done,  299/564 
-2021-06-05 14:55:22,607:1622876122.607342:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000618 start,  300/564 
-2021-06-05 14:55:22,608:1622876122.608317:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000618 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 15:06:51,104:1622876811.104074:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000618 done,  300/564 
-2021-06-05 15:06:51,105:1622876811.105048:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000619 start,  301/564 
-2021-06-05 15:06:51,106:1622876811.106024:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000619 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 15:19:45,097:1622877585.097744:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000619 done,  301/564 
-2021-06-05 15:19:45,098:1622877585.098721:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000620 start,  302/564 
-2021-06-05 15:19:45,099:1622877585.099694:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000620 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 15:34:13,004:1622878453.004580:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000620 done,  302/564 
-2021-06-05 15:34:13,005:1622878453.005556:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000622 start,  303/564 
-2021-06-05 15:34:13,006:1622878453.006531:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000622 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 15:41:32,252:1622878892.252349:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000622 done,  303/564 
-2021-06-05 15:41:32,253:1622878892.253326:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000623 start,  304/564 
-2021-06-05 15:41:32,254:1622878892.254301:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000623 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 15:49:56,097:1622879396.097836:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000623 done,  304/564 
-2021-06-05 15:49:56,101:1622879396.101738:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000624 start,  305/564 
-2021-06-05 15:49:56,102:1622879396.102713:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000624 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 16:06:53,639:1622880413.639335:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000624 done,  305/564 
-2021-06-05 16:06:53,640:1622880413.640314:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000627 start,  306/564 
-2021-06-05 16:06:53,641:1622880413.641287:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000627 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 16:22:22,604:1622881342.604672:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000627 done,  306/564 
-2021-06-05 16:22:22,605:1622881342.605647:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000629 start,  307/564 
-2021-06-05 16:22:22,606:1622881342.606623:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000629 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 16:44:15,410:1622882655.410682:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000629 done,  307/564 
-2021-06-05 16:44:15,411:1622882655.411659:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000634 start,  308/564 
-2021-06-05 16:44:15,411:1622882655.411659:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000634 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 17:06:44,290:1622884004.290769:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000634 done,  308/564 
-2021-06-05 17:06:44,291:1622884004.291747:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000635 start,  309/564 
-2021-06-05 17:06:44,292:1622884004.292724:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000635 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 17:16:32,782:1622884592.782712:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000635 done,  309/564 
-2021-06-05 17:16:32,783:1622884592.783689:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000636 start,  310/564 
-2021-06-05 17:16:32,784:1622884592.784667:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000636 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 17:31:46,162:1622885506.162050:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000636 done,  310/564 
-2021-06-05 17:31:46,163:1622885506.163021:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000638 start,  311/564 
-2021-06-05 17:31:46,163:1622885506.163994:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000638 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 17:37:26,413:1622885846.413947:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000638 done,  311/564 
-2021-06-05 17:37:26,415:1622885846.415900:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000640 start,  312/564 
-2021-06-05 17:37:26,416:1622885846.416881:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000640 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 18:01:33,383:1622887293.383924:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000640 done,  312/564 
-2021-06-05 18:01:33,384:1622887293.384901:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000641 start,  313/564 
-2021-06-05 18:01:33,384:1622887293.384901:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000641 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 18:12:39,951:1622887959.951032:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000641 done,  313/564 
-2021-06-05 18:12:39,952:1622887959.952009:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000643 start,  314/564 
-2021-06-05 18:12:39,952:1622887959.952991:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000643 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 18:26:37,763:1622888797.763129:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000643 done,  314/564 
-2021-06-05 18:26:37,764:1622888797.764102:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000644 start,  315/564 
-2021-06-05 18:26:37,765:1622888797.765073:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000644 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 18:39:13,698:1622889553.698396:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000644 done,  315/564 
-2021-06-05 18:39:13,699:1622889553.699374:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000645 start,  316/564 
-2021-06-05 18:39:13,699:1622889553.699374:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000645 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 18:48:28,982:1622890108.982250:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000645 done,  316/564 
-2021-06-05 18:48:28,983:1622890108.983228:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000648 start,  317/564 
-2021-06-05 18:48:28,983:1622890108.983228:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000648 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 18:57:04,940:1622890624.940237:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000648 done,  317/564 
-2021-06-05 18:57:04,941:1622890624.941215:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000649 start,  318/564 
-2021-06-05 18:57:04,941:1622890624.941215:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000649 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 19:18:29,934:1622891909.934620:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000649 done,  318/564 
-2021-06-05 19:18:29,935:1622891909.935607:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000652 start,  319/564 
-2021-06-05 19:18:29,935:1622891909.935607:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000652 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 19:40:48,853:1622893248.853230:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000652 done,  319/564 
-2021-06-05 19:40:48,855:1622893248.855179:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000659 start,  320/564 
-2021-06-05 19:40:48,856:1622893248.856156:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000659 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 19:50:57,347:1622893857.347262:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000659 done,  320/564 
-2021-06-05 19:50:57,348:1622893857.348235:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000662 start,  321/564 
-2021-06-05 19:50:57,349:1622893857.349210:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000662 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 20:09:40,825:1622894980.825516:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000662 done,  321/564 
-2021-06-05 20:09:40,826:1622894980.826492:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000665 start,  322/564 
-2021-06-05 20:09:40,827:1622894980.827466:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000665 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 20:30:07,071:1622896207.071378:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000665 done,  322/564 
-2021-06-05 20:30:07,072:1622896207.072355:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000667 start,  323/564 
-2021-06-05 20:30:07,073:1622896207.073331:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000667 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 20:51:41,995:1622897501.995824:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000667 done,  323/564 
-2021-06-05 20:51:41,996:1622897501.996800:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000670 start,  324/564 
-2021-06-05 20:51:41,997:1622897501.997777:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000670 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 21:10:02,802:1622898602.802141:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000670 done,  324/564 
-2021-06-05 21:10:02,804:1622898602.804092:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000673 start,  325/564 
-2021-06-05 21:10:02,805:1622898602.805070:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000673 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 21:15:52,252:1622898952.252918:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000673 done,  325/564 
-2021-06-05 21:15:52,253:1622898952.253893:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000674 start,  326/564 
-2021-06-05 21:15:52,254:1622898952.254868:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000674 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 21:25:10,756:1622899510.756247:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000674 done,  326/564 
-2021-06-05 21:25:10,757:1622899510.757225:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000676 start,  327/564 
-2021-06-05 21:25:10,758:1622899510.758200:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000676 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 21:28:11,392:1622899691.392931:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000676 done,  327/564 
-2021-06-05 21:28:11,393:1622899691.393910:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000678 start,  328/564 
-2021-06-05 21:28:11,394:1622899691.394885:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000678 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 21:45:11,091:1622900711.091038:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000678 done,  328/564 
-2021-06-05 21:45:11,092:1622900711.092016:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000680 start,  329/564 
-2021-06-05 21:45:11,092:1622900711.092991:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000680 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 21:59:28,739:1622901568.739310:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000680 done,  329/564 
-2021-06-05 21:59:28,740:1622901568.740286:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000681 start,  330/564 
-2021-06-05 21:59:28,741:1622901568.741262:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000681 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 22:11:31,247:1622902291.247782:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000681 done,  330/564 
-2021-06-05 22:11:31,248:1622902291.248762:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000682 start,  331/564 
-2021-06-05 22:11:31,249:1622902291.249743:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000682 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 22:15:49,731:1622902549.731103:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000682 done,  331/564 
-2021-06-05 22:15:49,732:1622902549.732081:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000686 start,  332/564 
-2021-06-05 22:15:49,732:1622902549.732081:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000686 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 22:31:07,100:1622903467.100167:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000686 done,  332/564 
-2021-06-05 22:31:07,101:1622903467.101143:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000688 start,  333/564 
-2021-06-05 22:31:07,102:1622903467.102120:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000688 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 22:37:44,775:1622903864.775845:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000688 done,  333/564 
-2021-06-05 22:37:44,776:1622903864.776822:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000693 start,  334/564 
-2021-06-05 22:37:44,778:1622903864.778774:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000693 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 22:52:32,834:1622904752.834077:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000693 done,  334/564 
-2021-06-05 22:52:32,835:1622904752.835054:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000695 start,  335/564 
-2021-06-05 22:52:32,836:1622904752.836032:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000695 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 23:01:00,923:1622905260.923572:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000695 done,  335/564 
-2021-06-05 23:01:00,924:1622905260.924549:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000698 start,  336/564 
-2021-06-05 23:01:00,924:1622905260.924549:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000698 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 23:16:16,457:1622906176.457519:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000698 done,  336/564 
-2021-06-05 23:16:16,458:1622906176.458498:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000699 start,  337/564 
-2021-06-05 23:16:16,458:1622906176.458498:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000699 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 23:28:40,869:1622906920.869959:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000699 done,  337/564 
-2021-06-05 23:28:40,870:1622906920.870934:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000702 start,  338/564 
-2021-06-05 23:28:40,871:1622906920.871905:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000702 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 23:36:53,168:1622907413.168507:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000702 done,  338/564 
-2021-06-05 23:36:53,169:1622907413.169480:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000706 start,  339/564 
-2021-06-05 23:36:53,170:1622907413.170459:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000706 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 23:50:36,524:1622908236.524579:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000706 done,  339/564 
-2021-06-05 23:50:36,525:1622908236.525556:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000733 start,  340/564 
-2021-06-05 23:50:36,526:1622908236.526532:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000733 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 23:53:35,786:1622908415.786200:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000733 done,  340/564 
-2021-06-05 23:53:35,787:1622908415.787178:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000741 start,  341/564 
-2021-06-05 23:53:35,788:1622908415.788155:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000741 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 23:53:57,836:1622908437.836982:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000744 start,  342/564 
-2021-06-05 23:53:57,837:1622908437.837959:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000744 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 23:56:59,208:1622908619.208086:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000744 done,  342/564 
-2021-06-05 23:56:59,209:1622908619.209060:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000746 start,  343/564 
-2021-06-05 23:56:59,210:1622908619.210032:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000746 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-05 23:59:59,049:1622908799.049845:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000746 done,  343/564 
-2021-06-05 23:59:59,050:1622908799.050816:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000748 start,  344/564 
-2021-06-05 23:59:59,051:1622908799.051785:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000748 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 00:04:38,674:1622909078.674672:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000748 done,  344/564 
-2021-06-06 00:04:38,675:1622909078.675648:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000754 start,  345/564 
-2021-06-06 00:04:38,676:1622909078.676618:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000754 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 00:07:38,754:1622909258.754610:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000754 done,  345/564 
-2021-06-06 00:07:38,755:1622909258.755583:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000758 start,  346/564 
-2021-06-06 00:07:38,755:1622909258.755583:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000758 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 00:11:08,218:1622909468.218446:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000758 done,  346/564 
-2021-06-06 00:11:08,219:1622909468.219421:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000791 start,  347/564 
-2021-06-06 00:11:08,220:1622909468.220409:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000791 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 00:14:13,671:1622909653.671522:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000791 done,  347/564 
-2021-06-06 00:14:13,672:1622909653.672504:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000804 start,  348/564 
-2021-06-06 00:14:13,673:1622909653.673481:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000804 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 00:17:09,687:1622909829.687095:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000804 done,  348/564 
-2021-06-06 00:17:09,688:1622909829.688073:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000844 start,  349/564 
-2021-06-06 00:17:09,689:1622909829.689054:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000844 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 00:21:06,125:1622910066.125293:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000844 done,  349/564 
-2021-06-06 00:21:06,126:1622910066.126268:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000850 start,  350/564 
-2021-06-06 00:21:06,127:1622910066.127245:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000850 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 00:27:12,380:1622910432.380281:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000850 done,  350/564 
-2021-06-06 00:27:12,381:1622910432.381258:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000288 start,  351/564 
-2021-06-06 00:27:12,381:1622910432.381258:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000288 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 00:27:33,692:1622910453.692764:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000563 start,  352/564 
-2021-06-06 00:27:33,693:1622910453.693740:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000563 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 00:31:34,197:1622910694.197644:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000563 done,  352/564 
-2021-06-06 00:31:34,198:1622910694.198618:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000813 start,  353/564 
-2021-06-06 00:31:34,199:1622910694.199592:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000813 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 00:35:43,730:1622910943.730830:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000813 done,  353/564 
-2021-06-06 00:35:43,731:1622910943.731807:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000012 start,  354/564 
-2021-06-06 00:35:43,731:1622910943.731807:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000012 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 00:36:07,273:1622910967.273807:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000013 start,  355/564 
-2021-06-06 00:36:07,275:1622910967.275760:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000013 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 00:49:05,678:1622911745.678926:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000013 done,  355/564 
-2021-06-06 00:49:05,679:1622911745.679904:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000016 start,  356/564 
-2021-06-06 00:49:05,680:1622911745.680884:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000016 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 00:52:49,195:1622911969.195406:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000016 done,  356/564 
-2021-06-06 00:52:49,196:1622911969.196382:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000018 start,  357/564 
-2021-06-06 00:52:49,196:1622911969.196382:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000018 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 00:53:12,164:1622911992.164139:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000019 start,  358/564 
-2021-06-06 00:53:12,165:1622911992.165116:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000019 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 00:53:34,782:1622912014.782303:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000020 start,  359/564 
-2021-06-06 00:53:34,783:1622912014.783277:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000020 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 00:59:45,581:1622912385.581034:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000020 done,  359/564 
-2021-06-06 00:59:45,582:1622912385.582012:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000027 start,  360/564 
-2021-06-06 00:59:45,582:1622912385.582012:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000027 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 01:00:08,155:1622912408.155248:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000028 start,  361/564 
-2021-06-06 01:00:08,156:1622912408.156224:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000028 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 01:00:30,321:1622912430.321255:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000029 start,  362/564 
-2021-06-06 01:00:30,322:1622912430.322232:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000029 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 01:00:52,802:1622912452.802693:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000030 start,  363/564 
-2021-06-06 01:00:52,803:1622912452.803669:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000030 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 01:08:39,987:1622912919.987113:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000030 done,  363/564 
-2021-06-06 01:08:39,988:1622912919.988090:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000036 start,  364/564 
-2021-06-06 01:08:39,989:1622912919.989066:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000036 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 01:09:03,591:1622912943.591596:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000037 start,  365/564 
-2021-06-06 01:09:03,592:1622912943.592572:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000037 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 01:09:26,608:1622912966.608192:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000040 start,  366/564 
-2021-06-06 01:09:26,609:1622912966.609173:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000040 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 01:24:12,489:1622913852.489071:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000040 done,  366/564 
-2021-06-06 01:24:12,490:1622913852.490048:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000042 start,  367/564 
-2021-06-06 01:24:12,490:1622913852.490048:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000042 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 01:43:55,662:1622915035.662618:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000042 done,  367/564 
-2021-06-06 01:43:55,664:1622915035.664575:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000043 start,  368/564 
-2021-06-06 01:43:55,665:1622915035.665554:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000043 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 01:44:18,063:1622915058.063982:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000047 start,  369/564 
-2021-06-06 01:44:18,064:1622915058.064963:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000047 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 01:55:04,980:1622915704.980772:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000047 done,  369/564 
-2021-06-06 01:55:04,981:1622915704.981750:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000048 start,  370/564 
-2021-06-06 01:55:04,982:1622915704.982733:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000048 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 01:55:28,265:1622915728.265923:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000049 start,  371/564 
-2021-06-06 01:55:28,266:1622915728.266903:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000049 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 01:55:51,697:1622915751.697571:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000052 start,  372/564 
-2021-06-06 01:55:51,699:1622915751.699526:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000052 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 01:56:15,497:1622915775.497364:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000053 start,  373/564 
-2021-06-06 01:56:15,498:1622915775.498341:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000053 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 02:04:04,139:1622916244.139593:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000053 done,  373/564 
-2021-06-06 02:04:04,140:1622916244.140571:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000056 start,  374/564 
-2021-06-06 02:04:04,140:1622916244.140571:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000056 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 02:04:34,423:1622916274.423754:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000058 start,  375/564 
-2021-06-06 02:04:34,424:1622916274.424731:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000058 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 02:18:15,693:1622917095.693424:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000058 done,  375/564 
-2021-06-06 02:18:15,694:1622917095.694401:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000059 start,  376/564 
-2021-06-06 02:18:15,695:1622917095.695383:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000059 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 02:18:39,704:1622917119.704171:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000061 start,  377/564 
-2021-06-06 02:18:39,705:1622917119.705149:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000061 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 02:27:00,385:1622917620.385814:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000061 done,  377/564 
-2021-06-06 02:27:00,386:1622917620.386792:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000062 start,  378/564 
-2021-06-06 02:27:00,387:1622917620.387768:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000062 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 02:39:42,994:1622918382.994865:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000062 done,  378/564 
-2021-06-06 02:39:42,995:1622918382.995843:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000063 start,  379/564 
-2021-06-06 02:39:42,996:1622918382.996818:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000063 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 02:40:08,132:1622918408.132555:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000064 start,  380/564 
-2021-06-06 02:40:08,134:1622918408.134503:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000064 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 02:51:04,811:1622919064.811240:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000064 done,  380/564 
-2021-06-06 02:51:04,812:1622919064.812215:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000065 start,  381/564 
-2021-06-06 02:51:04,813:1622919064.813188:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000065 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 02:51:29,078:1622919089.078818:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000091 start,  382/564 
-2021-06-06 02:51:29,079:1622919089.079793:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000091 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 02:51:53,613:1622919113.613979:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000096 start,  383/564 
-2021-06-06 02:51:53,614:1622919113.614955:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000096 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 02:52:19,533:1622919139.533906:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000097 start,  384/564 
-2021-06-06 02:52:19,534:1622919139.534883:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000097 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 02:52:43,316:1622919163.316128:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000128 start,  385/564 
-2021-06-06 02:52:43,317:1622919163.317104:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000128 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 02:53:07,207:1622919187.207718:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000129 start,  386/564 
-2021-06-06 02:53:07,208:1622919187.208695:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000129 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 02:53:31,135:1622919211.135442:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000130 start,  387/564 
-2021-06-06 02:53:31,136:1622919211.136424:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000130 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 02:56:39,652:1622919399.652963:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000130 done,  387/564 
-2021-06-06 02:56:39,653:1622919399.653935:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000132 start,  388/564 
-2021-06-06 02:56:39,654:1622919399.654905:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000132 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:00:35,558:1622919635.558117:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000132 done,  388/564 
-2021-06-06 03:00:35,559:1622919635.559093:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000134 start,  389/564 
-2021-06-06 03:00:35,560:1622919635.560069:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000134 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:06:12,684:1622919972.684922:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000134 done,  389/564 
-2021-06-06 03:06:12,685:1622919972.685903:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000135 start,  390/564 
-2021-06-06 03:06:12,686:1622919972.686875:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000135 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:06:37,575:1622919997.575535:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000139 start,  391/564 
-2021-06-06 03:06:37,576:1622919997.576512:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000139 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:07:02,495:1622920022.495450:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000142 start,  392/564 
-2021-06-06 03:07:02,496:1622920022.496424:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000142 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:07:27,652:1622920047.652662:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000146 start,  393/564 
-2021-06-06 03:07:27,653:1622920047.653641:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000146 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:12:53,640:1622920373.640929:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000146 done,  393/564 
-2021-06-06 03:12:53,640:1622920373.640929:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000148 start,  394/564 
-2021-06-06 03:12:53,641:1622920373.641905:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000148 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:13:18,985:1622920398.985657:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000149 start,  395/564 
-2021-06-06 03:13:18,986:1622920398.986634:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000149 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:13:45,791:1622920425.791320:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000153 start,  396/564 
-2021-06-06 03:13:45,792:1622920425.792298:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000153 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:17:55,287:1622920675.287493:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000153 done,  396/564 
-2021-06-06 03:17:55,288:1622920675.288468:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000154 start,  397/564 
-2021-06-06 03:17:55,289:1622920675.289446:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000154 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:18:20,681:1622920700.681042:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000156 start,  398/564 
-2021-06-06 03:18:20,682:1622920700.682998:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000156 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:32:02,719:1622921522.719872:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000156 done,  398/564 
-2021-06-06 03:32:02,720:1622921522.720844:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000158 start,  399/564 
-2021-06-06 03:32:02,721:1622921522.721816:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000158 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:32:25,746:1622921545.746164:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000161 start,  400/564 
-2021-06-06 03:32:25,747:1622921545.747139:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000161 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:32:48,544:1622921568.544947:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000164 start,  401/564 
-2021-06-06 03:32:48,545:1622921568.545924:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000164 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:43:57,324:1622922237.324953:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000164 done,  401/564 
-2021-06-06 03:43:57,325:1622922237.325932:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000165 start,  402/564 
-2021-06-06 03:43:57,325:1622922237.325932:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000165 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:44:20,050:1622922260.050528:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000166 start,  403/564 
-2021-06-06 03:44:20,051:1622922260.051506:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000166 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:47:38,800:1622922458.800337:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000166 done,  403/564 
-2021-06-06 03:47:38,801:1622922458.801310:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000168 start,  404/564 
-2021-06-06 03:47:38,802:1622922458.802280:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000168 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:48:02,179:1622922482.179220:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000169 start,  405/564 
-2021-06-06 03:48:02,183:1622922482.183127:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000169 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:48:25,619:1622922505.619638:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000172 start,  406/564 
-2021-06-06 03:48:25,620:1622922505.620615:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000172 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:48:49,152:1622922529.152828:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000176 start,  407/564 
-2021-06-06 03:48:49,153:1622922529.153807:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000176 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:49:12,560:1622922552.560065:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000178 start,  408/564 
-2021-06-06 03:49:12,561:1622922552.561038:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000178 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:55:08,473:1622922908.473119:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000178 done,  408/564 
-2021-06-06 03:55:08,474:1622922908.474098:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000179 start,  409/564 
-2021-06-06 03:55:08,475:1622922908.475073:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000179 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:55:31,155:1622922931.155733:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000185 start,  410/564 
-2021-06-06 03:55:31,156:1622922931.156708:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000185 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:55:53,859:1622922953.859837:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000187 start,  411/564 
-2021-06-06 03:55:53,860:1622922953.860809:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000187 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:56:16,555:1622922976.555133:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000192 start,  412/564 
-2021-06-06 03:56:16,556:1622922976.556109:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000192 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 03:59:42,357:1622923182.357781:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000192 done,  412/564 
-2021-06-06 03:59:42,358:1622923182.358754:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000196 start,  413/564 
-2021-06-06 03:59:42,359:1622923182.359725:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000196 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 04:00:05,875:1622923205.875356:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000201 start,  414/564 
-2021-06-06 04:00:05,876:1622923205.876333:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000201 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 04:00:28,920:1622923228.920288:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000202 start,  415/564 
-2021-06-06 04:00:28,921:1622923228.921265:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000202 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 04:00:51,933:1622923251.933963:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000205 start,  416/564 
-2021-06-06 04:00:51,934:1622923251.934943:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000205 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 04:01:15,011:1622923275.011113:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000210 start,  417/564 
-2021-06-06 04:01:15,012:1622923275.012090:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000210 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 04:01:38,239:1622923298.239632:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000211 start,  418/564 
-2021-06-06 04:01:38,241:1622923298.241588:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000211 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 04:02:01,326:1622923321.326549:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000213 start,  419/564 
-2021-06-06 04:02:01,326:1622923321.326549:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000213 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 04:02:24,080:1622923344.080408:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000214 start,  420/564 
-2021-06-06 04:02:24,080:1622923344.080408:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000214 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 04:02:46,976:1622923366.976751:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000216 start,  421/564 
-2021-06-06 04:02:46,977:1622923366.977733:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000216 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 04:07:52,120:1622923672.120638:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000216 done,  421/564 
-2021-06-06 04:07:52,121:1622923672.121614:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000217 start,  422/564 
-2021-06-06 04:07:52,122:1622923672.122586:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000217 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 04:08:15,056:1622923695.056184:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000223 start,  423/564 
-2021-06-06 04:08:15,058:1622923695.058132:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000223 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 04:19:51,810:1622924391.810796:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000223 done,  423/564 
-2021-06-06 04:19:51,811:1622924391.811778:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000227 start,  424/564 
-2021-06-06 04:19:51,811:1622924391.811778:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000227 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 04:25:53,201:1622924753.201381:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000227 done,  424/564 
-2021-06-06 04:25:53,202:1622924753.202366:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000229 start,  425/564 
-2021-06-06 04:25:53,202:1622924753.202366:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000229 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 04:33:23,320:1622925203.320564:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000229 done,  425/564 
-2021-06-06 04:33:23,321:1622925203.321540:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000232 start,  426/564 
-2021-06-06 04:33:23,322:1622925203.322519:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000232 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 04:42:28,676:1622925748.676069:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000232 done,  426/564 
-2021-06-06 04:42:28,677:1622925748.677047:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000244 start,  427/564 
-2021-06-06 04:42:28,678:1622925748.678024:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000244 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 04:47:30,968:1622926050.968083:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000244 done,  427/564 
-2021-06-06 04:47:30,969:1622926050.969069:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000245 start,  428/564 
-2021-06-06 04:47:30,969:1622926050.969069:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000245 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 04:55:45,827:1622926545.827314:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000245 done,  428/564 
-2021-06-06 04:55:45,827:1622926545.827314:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000246 start,  429/564 
-2021-06-06 04:55:45,828:1622926545.828298:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000246 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 04:56:08,543:1622926568.543123:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000250 start,  430/564 
-2021-06-06 04:56:08,544:1622926568.544100:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000250 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 04:56:30,977:1622926590.977689:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000253 start,  431/564 
-2021-06-06 04:56:30,978:1622926590.978665:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000253 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 04:59:28,774:1622926768.774520:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000253 done,  431/564 
-2021-06-06 04:59:28,775:1622926768.775497:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000256 start,  432/564 
-2021-06-06 04:59:28,776:1622926768.776469:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000256 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 04:59:51,733:1622926791.733495:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000259 start,  433/564 
-2021-06-06 04:59:51,734:1622926791.734470:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000259 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:03:37,098:1622927017.098640:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000259 done,  433/564 
-2021-06-06 05:03:37,099:1622927017.099620:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000266 start,  434/564 
-2021-06-06 05:03:37,100:1622927017.100596:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000266 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:06:27,724:1622927187.724551:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000266 done,  434/564 
-2021-06-06 05:06:27,725:1622927187.725529:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000268 start,  435/564 
-2021-06-06 05:06:27,726:1622927187.726508:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000268 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:11:29,172:1622927489.172742:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000268 done,  435/564 
-2021-06-06 05:11:29,173:1622927489.173719:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000269 start,  436/564 
-2021-06-06 05:11:29,174:1622927489.174694:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000269 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:16:08,997:1622927768.997824:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000269 done,  436/564 
-2021-06-06 05:16:08,998:1622927768.998802:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000273 start,  437/564 
-2021-06-06 05:16:08,998:1622927768.998802:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000273 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:16:31,881:1622927791.881628:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000274 start,  438/564 
-2021-06-06 05:16:31,882:1622927791.882605:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000274 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:22:09,784:1622928129.784912:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000274 done,  438/564 
-2021-06-06 05:22:09,785:1622928129.785890:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000277 start,  439/564 
-2021-06-06 05:22:09,786:1622928129.786865:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000277 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:22:32,222:1622928152.222318:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000278 start,  440/564 
-2021-06-06 05:22:32,223:1622928152.223296:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000278 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:22:54,499:1622928174.499664:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000279 start,  441/564 
-2021-06-06 05:22:54,500:1622928174.500639:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000279 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:23:16,666:1622928196.666651:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000280 start,  442/564 
-2021-06-06 05:23:16,667:1622928196.667636:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000280 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:26:44,108:1622928404.108082:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000280 done,  442/564 
-2021-06-06 05:26:44,109:1622928404.109058:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000281 start,  443/564 
-2021-06-06 05:26:44,110:1622928404.110035:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000281 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:27:07,103:1622928427.103203:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000283 start,  444/564 
-2021-06-06 05:27:07,104:1622928427.104180:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000283 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:34:59,182:1622928899.182097:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000283 done,  444/564 
-2021-06-06 05:34:59,182:1622928899.182097:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000297 start,  445/564 
-2021-06-06 05:34:59,183:1622928899.183071:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000297 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:35:22,117:1622928922.117630:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000302 start,  446/564 
-2021-06-06 05:35:22,118:1622928922.118609:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000302 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:35:44,566:1622928944.566838:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000316 start,  447/564 
-2021-06-06 05:35:44,567:1622928944.567814:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000316 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:39:38,818:1622929178.818726:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000316 done,  447/564 
-2021-06-06 05:39:38,819:1622929178.819703:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000320 start,  448/564 
-2021-06-06 05:39:38,819:1622929178.819703:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000320 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:40:00,827:1622929200.827517:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000331 start,  449/564 
-2021-06-06 05:40:00,828:1622929200.828496:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000331 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:40:22,774:1622929222.774781:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000334 start,  450/564 
-2021-06-06 05:40:22,775:1622929222.775761:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000334 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:48:47,568:1622929727.568800:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000334 done,  450/564 
-2021-06-06 05:48:47,569:1622929727.569776:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000337 start,  451/564 
-2021-06-06 05:48:47,570:1622929727.570750:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000337 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:55:27,205:1622930127.205347:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000337 done,  451/564 
-2021-06-06 05:55:27,206:1622930127.206324:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000338 start,  452/564 
-2021-06-06 05:55:27,207:1622930127.207298:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000338 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:55:49,879:1622930149.879164:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000355 start,  453/564 
-2021-06-06 05:55:49,881:1622930149.881117:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000355 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:56:12,833:1622930172.833267:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000358 start,  454/564 
-2021-06-06 05:56:12,834:1622930172.834244:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000358 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:56:35,723:1622930195.723876:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000360 start,  455/564 
-2021-06-06 05:56:35,724:1622930195.724853:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000360 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:56:58,867:1622930218.867422:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000361 start,  456/564 
-2021-06-06 05:56:58,868:1622930218.868401:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000361 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 05:57:21,550:1622930241.550032:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000363 start,  457/564 
-2021-06-06 05:57:21,551:1622930241.551011:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000363 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 06:02:32,804:1622930552.804866:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000363 done,  457/564 
-2021-06-06 06:02:32,805:1622930552.805842:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000365 start,  458/564 
-2021-06-06 06:02:32,806:1622930552.806818:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000365 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 06:07:42,286:1622930862.286349:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000365 done,  458/564 
-2021-06-06 06:07:42,287:1622930862.287323:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000368 start,  459/564 
-2021-06-06 06:07:42,288:1622930862.288296:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000368 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 06:08:05,349:1622930885.349823:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000369 start,  460/564 
-2021-06-06 06:08:05,351:1622930885.351781:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000369 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 06:10:56,828:1622931056.828363:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000369 done,  460/564 
-2021-06-06 06:10:56,829:1622931056.829341:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000375 start,  461/564 
-2021-06-06 06:10:56,830:1622931056.830309:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000375 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 06:11:18,829:1622931078.829322:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000376 start,  462/564 
-2021-06-06 06:11:18,830:1622931078.830299:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000376 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 06:11:40,762:1622931100.762913:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000378 start,  463/564 
-2021-06-06 06:11:40,763:1622931100.763887:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000378 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 06:12:02,522:1622931122.522666:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000379 start,  464/564 
-2021-06-06 06:12:02,523:1622931122.523648:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000379 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 06:19:33,836:1622931573.836115:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000379 done,  464/564 
-2021-06-06 06:19:33,837:1622931573.837095:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000380 start,  465/564 
-2021-06-06 06:19:33,838:1622931573.838069:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000380 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 06:41:03,826:1622932863.826341:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000380 done,  465/564 
-2021-06-06 06:41:03,827:1622932863.827323:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000384 start,  466/564 
-2021-06-06 06:41:03,827:1622932863.827323:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000384 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 06:41:26,963:1622932886.963060:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000389 start,  467/564 
-2021-06-06 06:41:26,965:1622932886.965014:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000389 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 06:41:49,990:1622932909.990407:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000393 start,  468/564 
-2021-06-06 06:41:49,991:1622932909.991384:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000393 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 06:45:56,481:1622933156.481621:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000393 done,  468/564 
-2021-06-06 06:45:56,482:1622933156.482594:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000398 start,  469/564 
-2021-06-06 06:45:56,482:1622933156.482594:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000398 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 06:51:22,778:1622933482.778478:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000398 done,  469/564 
-2021-06-06 06:51:22,779:1622933482.779456:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000399 start,  470/564 
-2021-06-06 06:51:22,780:1622933482.780427:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000399 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 06:51:45,714:1622933505.714988:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000402 start,  471/564 
-2021-06-06 06:51:45,715:1622933505.715964:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000402 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 06:52:08,770:1622933528.770648:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000408 start,  472/564 
-2021-06-06 06:52:08,771:1622933528.771626:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000408 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 06:52:31,368:1622933551.368204:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000410 start,  473/564 
-2021-06-06 06:52:31,369:1622933551.369181:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000410 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 06:56:46,356:1622933806.356443:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000410 done,  473/564 
-2021-06-06 06:56:46,357:1622933806.357421:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000414 start,  474/564 
-2021-06-06 06:56:46,357:1622933806.357421:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000414 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 06:57:08,549:1622933828.549803:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000415 start,  475/564 
-2021-06-06 06:57:08,550:1622933828.550780:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000415 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:03:07,390:1622934187.390339:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000415 done,  475/564 
-2021-06-06 07:03:07,391:1622934187.391313:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000416 start,  476/564 
-2021-06-06 07:03:07,392:1622934187.392289:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000416 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:03:30,880:1622934210.880565:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000425 start,  477/564 
-2021-06-06 07:03:30,882:1622934210.882513:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000425 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:03:54,262:1622934234.262389:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000433 start,  478/564 
-2021-06-06 07:03:54,263:1622934234.263365:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000433 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:07:24,707:1622934444.707607:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000433 done,  478/564 
-2021-06-06 07:07:24,708:1622934444.708586:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000435 start,  479/564 
-2021-06-06 07:07:24,709:1622934444.709553:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000435 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:07:48,686:1622934468.686061:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000436 start,  480/564 
-2021-06-06 07:07:48,687:1622934468.687038:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000436 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:08:12,853:1622934492.853047:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000437 start,  481/564 
-2021-06-06 07:08:12,854:1622934492.854023:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000437 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:08:36,379:1622934516.379410:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000439 start,  482/564 
-2021-06-06 07:08:36,380:1622934516.380387:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000439 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:08:59,757:1622934539.757337:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000447 start,  483/564 
-2021-06-06 07:08:59,758:1622934539.758314:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000447 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:09:23,434:1622934563.434093:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000451 start,  484/564 
-2021-06-06 07:09:23,435:1622934563.435069:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000451 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:09:47,229:1622934587.229988:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000452 start,  485/564 
-2021-06-06 07:09:47,230:1622934587.230965:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000452 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:10:11,683:1622934611.683111:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000455 start,  486/564 
-2021-06-06 07:10:11,684:1622934611.684090:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000455 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:10:35,815:1622934635.815923:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000456 start,  487/564 
-2021-06-06 07:10:35,816:1622934635.816902:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000456 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:10:59,196:1622934659.196785:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000457 start,  488/564 
-2021-06-06 07:10:59,197:1622934659.197759:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000457 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:17:37,519:1622935057.519756:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000457 done,  488/564 
-2021-06-06 07:17:37,520:1622935057.520732:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000461 start,  489/564 
-2021-06-06 07:17:37,521:1622935057.521708:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000461 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:33:00,072:1622935980.072333:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000461 done,  489/564 
-2021-06-06 07:33:00,073:1622935980.073308:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000465 start,  490/564 
-2021-06-06 07:33:00,074:1622935980.074284:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000465 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:33:23,221:1622936003.221725:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000467 start,  491/564 
-2021-06-06 07:33:23,222:1622936003.222702:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000467 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:36:14,517:1622936174.517560:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000467 done,  491/564 
-2021-06-06 07:36:14,518:1622936174.518535:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000471 start,  492/564 
-2021-06-06 07:36:14,519:1622936174.519513:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000471 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:36:37,724:1622936197.724577:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000473 start,  493/564 
-2021-06-06 07:36:37,725:1622936197.725554:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000473 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:37:01,103:1622936221.103472:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000476 start,  494/564 
-2021-06-06 07:37:01,104:1622936221.104449:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000476 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:37:23,767:1622936243.767526:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000477 start,  495/564 
-2021-06-06 07:37:23,768:1622936243.768501:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000477 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:37:46,605:1622936266.605406:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000480 start,  496/564 
-2021-06-06 07:37:46,606:1622936266.606383:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000480 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:38:09,853:1622936289.853443:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000482 start,  497/564 
-2021-06-06 07:38:09,854:1622936289.854420:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000482 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:38:32,918:1622936312.918871:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000484 start,  498/564 
-2021-06-06 07:38:32,919:1622936312.919842:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000484 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:38:55,869:1622936335.869058:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000487 start,  499/564 
-2021-06-06 07:38:55,871:1622936335.871012:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000487 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:48:01,732:1622936881.732496:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000487 done,  499/564 
-2021-06-06 07:48:01,733:1622936881.733466:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000512 start,  500/564 
-2021-06-06 07:48:01,734:1622936881.734437:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000512 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:48:26,002:1622936906.002987:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000515 start,  501/564 
-2021-06-06 07:48:26,003:1622936906.003962:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000515 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:48:50,668:1622936930.668996:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000517 start,  502/564 
-2021-06-06 07:48:50,669:1622936930.669972:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000517 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:51:52,390:1622937112.390644:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000517 done,  502/564 
-2021-06-06 07:51:52,391:1622937112.391621:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000519 start,  503/564 
-2021-06-06 07:51:52,392:1622937112.392597:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000519 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:52:15,539:1622937135.539078:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000523 start,  504/564 
-2021-06-06 07:52:15,540:1622937135.540057:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000523 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:52:39,177:1622937159.177747:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000524 start,  505/564 
-2021-06-06 07:52:39,178:1622937159.178723:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000524 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:55:32,055:1622937332.055654:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000524 done,  505/564 
-2021-06-06 07:55:32,056:1622937332.056632:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000526 start,  506/564 
-2021-06-06 07:55:32,057:1622937332.057610:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000526 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:55:55,173:1622937355.173816:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000532 start,  507/564 
-2021-06-06 07:55:55,174:1622937355.174793:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000532 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:56:18,426:1622937378.426746:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000544 start,  508/564 
-2021-06-06 07:56:18,427:1622937378.427720:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000544 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 07:56:41,941:1622937401.941393:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000546 start,  509/564 
-2021-06-06 07:56:41,942:1622937401.942366:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000546 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 08:09:58,587:1622938198.587703:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000546 done,  509/564 
-2021-06-06 08:09:58,589:1622938198.589657:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000552 start,  510/564 
-2021-06-06 08:09:58,590:1622938198.590633:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000552 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 08:23:06,265:1622938986.265246:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000552 done,  510/564 
-2021-06-06 08:23:06,267:1622938986.267198:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000568 start,  511/564 
-2021-06-06 08:23:06,268:1622938986.268177:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000568 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 08:29:53,909:1622939393.909825:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000568 done,  511/564 
-2021-06-06 08:29:53,910:1622939393.910803:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000574 start,  512/564 
-2021-06-06 08:29:53,911:1622939393.911782:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000574 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 08:38:34,766:1622939914.766338:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000574 done,  512/564 
-2021-06-06 08:38:34,768:1622939914.768292:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000586 start,  513/564 
-2021-06-06 08:38:34,769:1622939914.769265:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000586 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 08:38:56,876:1622939936.876678:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000592 start,  514/564 
-2021-06-06 08:38:56,877:1622939936.877661:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000592 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 08:39:19,071:1622939959.071985:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000593 start,  515/564 
-2021-06-06 08:39:19,072:1622939959.072960:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000593 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 08:46:47,326:1622940407.326094:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000593 done,  515/564 
-2021-06-06 08:46:47,327:1622940407.327072:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000632 start,  516/564 
-2021-06-06 08:46:47,328:1622940407.328049:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000632 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 08:55:10,051:1622940910.051328:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000632 done,  516/564 
-2021-06-06 08:55:10,052:1622940910.052303:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000633 start,  517/564 
-2021-06-06 08:55:10,053:1622940910.053280:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000633 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 09:03:26,655:1622941406.655003:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000633 done,  517/564 
-2021-06-06 09:03:26,657:1622941406.657925:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000651 start,  518/564 
-2021-06-06 09:03:26,658:1622941406.658906:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000651 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 09:03:49,225:1622941429.225309:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000654 start,  519/564 
-2021-06-06 09:03:49,226:1622941429.226294:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000654 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 09:04:11,438:1622941451.438202:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000656 start,  520/564 
-2021-06-06 09:04:11,439:1622941451.439178:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000656 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 09:07:55,399:1622941675.399158:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000656 done,  520/564 
-2021-06-06 09:07:55,400:1622941675.400133:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000658 start,  521/564 
-2021-06-06 09:07:55,401:1622941675.401107:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000658 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 09:14:54,817:1622942094.817113:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000658 done,  521/564 
-2021-06-06 09:14:54,818:1622942094.818087:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000666 start,  522/564 
-2021-06-06 09:14:54,819:1622942094.819059:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000666 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 09:15:18,694:1622942118.694056:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000672 start,  523/564 
-2021-06-06 09:15:18,695:1622942118.695031:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000672 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 09:15:41,621:1622942141.621789:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000685 start,  524/564 
-2021-06-06 09:15:41,622:1622942141.622764:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000685 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 09:16:04,684:1622942164.684285:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000696 start,  525/564 
-2021-06-06 09:16:04,685:1622942164.685261:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000696 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 09:21:46,708:1622942506.708499:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000696 done,  525/564 
-2021-06-06 09:21:46,709:1622942506.709475:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000708 start,  526/564 
-2021-06-06 09:21:46,710:1622942506.710448:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000708 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 09:35:20,113:1622943320.113714:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000708 done,  526/564 
-2021-06-06 09:35:20,114:1622943320.114691:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000711 start,  527/564 
-2021-06-06 09:35:20,115:1622943320.115668:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000711 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 09:35:42,510:1622943342.510201:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000727 start,  528/564 
-2021-06-06 09:35:42,511:1622943342.511178:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000727 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 09:36:05,110:1622943365.110788:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000057 start,  529/564 
-2021-06-06 09:36:05,111:1622943365.111765:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000057 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 09:45:10,015:1622943910.015970:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000057 done,  529/564 
-2021-06-06 09:45:10,016:1622943910.016945:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000174 start,  530/564 
-2021-06-06 09:45:10,017:1622943910.017918:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000174 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 09:57:44,908:1622944664.908351:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000174 done,  530/564 
-2021-06-06 09:57:44,909:1622944664.909328:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000182 start,  531/564 
-2021-06-06 09:57:44,910:1622944664.910305:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000182 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 10:14:08,206:1622945648.206250:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000182 done,  531/564 
-2021-06-06 10:14:08,207:1622945648.207230:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000335 start,  532/564 
-2021-06-06 10:14:08,208:1622945648.208212:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000335 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 10:28:21,882:1622946501.882171:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000335 done,  532/564 
-2021-06-06 10:28:21,883:1622946501.883148:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000406 start,  533/564 
-2021-06-06 10:28:21,883:1622946501.883148:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000406 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 10:36:16,152:1622946976.152445:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000406 done,  533/564 
-2021-06-06 10:36:16,153:1622946976.153420:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000421 start,  534/564 
-2021-06-06 10:36:16,154:1622946976.154390:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000421 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 10:43:47,584:1622947427.584058:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000421 done,  534/564 
-2021-06-06 10:43:47,585:1622947427.585035:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000466 start,  535/564 
-2021-06-06 10:43:47,586:1622947427.586012:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000466 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 11:07:36,017:1622948856.017542:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000466 done,  535/564 
-2021-06-06 11:07:36,018:1622948856.018518:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000531 start,  536/564 
-2021-06-06 11:07:36,019:1622948856.019491:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000531 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 11:21:23,115:1622949683.115849:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000531 done,  536/564 
-2021-06-06 11:21:23,117:1622949683.117802:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000600 start,  537/564 
-2021-06-06 11:21:23,118:1622949683.118784:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000600 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 11:27:10,514:1622950030.514175:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000600 done,  537/564 
-2021-06-06 11:27:10,515:1622950030.515147:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000639 start,  538/564 
-2021-06-06 11:27:10,516:1622950030.516121:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000639 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 11:27:33,641:1622950053.641017:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000690 start,  539/564 
-2021-06-06 11:27:33,642:1622950053.642965:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000690 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 11:37:09,585:1622950629.585983:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000690 done,  539/564 
-2021-06-06 11:37:09,586:1622950629.586957:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000751 start,  540/564 
-2021-06-06 11:37:09,587:1622950629.587935:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000751 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 11:41:19,693:1622950879.693345:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000751 done,  540/564 
-2021-06-06 11:41:19,694:1622950879.694322:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000809 start,  541/564 
-2021-06-06 11:41:19,694:1622950879.694322:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000809 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 11:44:19,305:1622951059.305565:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000809 done,  541/564 
-2021-06-06 11:44:19,306:1622951059.306542:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000039 start,  542/564 
-2021-06-06 11:44:19,307:1622951059.307518:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000039 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 11:50:37,793:1622951437.793747:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000039 done,  542/564 
-2021-06-06 11:50:37,794:1622951437.794728:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000060 start,  543/564 
-2021-06-06 11:50:37,795:1622951437.795699:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000060 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 11:51:01,357:1622951461.357226:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000127 start,  544/564 
-2021-06-06 11:51:01,358:1622951461.358200:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000127 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 11:51:24,465:1622951484.465613:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000140 start,  545/564 
-2021-06-06 11:51:24,466:1622951484.466589:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000140 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 11:51:47,574:1622951507.574961:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000152 start,  546/564 
-2021-06-06 11:51:47,575:1622951507.575938:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000152 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 11:54:41,209:1622951681.209546:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000152 done,  546/564 
-2021-06-06 11:54:41,210:1622951681.210523:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000157 start,  547/564 
-2021-06-06 11:54:41,210:1622951681.210523:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000157 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 11:55:03,731:1622951703.731028:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000207 start,  548/564 
-2021-06-06 11:55:03,732:1622951703.732003:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000207 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 11:55:26,379:1622951726.379459:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000243 start,  549/564 
-2021-06-06 11:55:26,381:1622951726.381418:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000243 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 11:55:48,869:1622951748.869690:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000251 start,  550/564 
-2021-06-06 11:55:48,870:1622951748.870666:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000251 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 11:56:11,469:1622951771.469281:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000258 start,  551/564 
-2021-06-06 11:56:11,470:1622951771.470260:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000258 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 11:56:33,773:1622951793.773949:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000311 start,  552/564 
-2021-06-06 11:56:33,774:1622951793.774925:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000311 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 11:56:56,076:1622951816.076667:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000312 start,  553/564 
-2021-06-06 11:56:56,077:1622951816.077644:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000312 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 12:00:00,817:1622952000.817736:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000312 done,  553/564 
-2021-06-06 12:00:00,818:1622952000.818705:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000314 start,  554/564 
-2021-06-06 12:00:00,819:1622952000.819680:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000314 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 12:00:24,423:1622952024.423194:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000401 start,  555/564 
-2021-06-06 12:00:24,425:1622952024.425147:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000401 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 12:00:47,718:1622952047.718112:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000495 start,  556/564 
-2021-06-06 12:00:47,719:1622952047.719090:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000495 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 12:01:11,220:1622952071.220064:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000521 start,  557/564 
-2021-06-06 12:01:11,221:1622952071.221041:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000521 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 12:01:34,403:1622952094.403665:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000611 start,  558/564 
-2021-06-06 12:01:34,404:1622952094.404642:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000611 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 12:01:57,107:1622952117.107758:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000224 start,  559/564 
-2021-06-06 12:01:57,108:1622952117.108735:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000224 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 12:21:42,693:1622953302.693556:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000224 done,  559/564 
-2021-06-06 12:21:42,694:1622953302.694533:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000339 start,  560/564 
-2021-06-06 12:21:42,695:1622953302.695512:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000339 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 12:29:31,724:1622953771.724631:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000339 done,  560/564 
-2021-06-06 12:29:31,725:1622953771.725607:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000428 start,  561/564 
-2021-06-06 12:29:31,726:1622953771.726585:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000428 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 12:29:54,609:1622953794.609391:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000241 start,  562/564 
-2021-06-06 12:29:54,610:1622953794.610371:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000241 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 12:30:17,324:1622953817.324223:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000267 start,  563/564 
-2021-06-06 12:30:17,325:1622953817.325199:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000267 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
-2021-06-06 12:30:40,364:1622953840.364250:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000282 start,  564/564 
-2021-06-06 12:30:40,365:1622953840.365226:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000282 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 16:27:40,424:1622622460.424597:day_sta:<ipython-input-1-f6da41e23244>:<module>:INFO:7240
+2021-06-02 16:27:40,678:1622622460.678502:day_sta:<ipython-input-1-f6da41e23244>:<module>:INFO:PK50001A100000343 start,  1/564 
+2021-06-02 16:27:40,679:1622622460.679477:day_sta:<ipython-input-1-f6da41e23244>:<module>:INFO:PK50001A100000343 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 16:37:33,712:1622623053.712361:day_sta:<ipython-input-1-f6da41e23244>:<module>:INFO:PK50001A100000343 done,  1/564 
+2021-06-02 16:37:33,713:1622623053.713332:day_sta:<ipython-input-1-f6da41e23244>:<module>:INFO:PK50001A100000356 start,  2/564 
+2021-06-02 16:37:33,714:1622623053.714303:day_sta:<ipython-input-1-f6da41e23244>:<module>:INFO:PK50001A100000356 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 17:04:41,444:1622624681.444927:day_sta:<ipython-input-14-82ebb7781c97>:<module>:INFO:PK50001A100000356 done,  2/564
+2021-06-02 17:06:04,540:1622624764.540590:day_sta:<ipython-input-1-20645d7cd393>:<module>:INFO:2788
+2021-06-02 17:06:04,779:1622624764.779847:day_sta:<ipython-input-1-20645d7cd393>:<module>:INFO:PK50001A100000370 start,  3/564 
+2021-06-02 17:06:04,780:1622624764.780824:day_sta:<ipython-input-1-20645d7cd393>:<module>:INFO:PK50001A100000370 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 17:13:34,836:1622625214.836330:day_sta:<ipython-input-1-20645d7cd393>:<module>:INFO:PK50001A100000370 done,  3/564 
+2021-06-02 17:13:34,837:1622625214.837308:day_sta:<ipython-input-1-20645d7cd393>:<module>:INFO:PK50001A100000371 start,  4/564 
+2021-06-02 17:13:34,838:1622625214.838283:day_sta:<ipython-input-1-20645d7cd393>:<module>:INFO:PK50001A100000371 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 17:58:37,032:1622627917.032241:day_sta:<ipython-input-10-82ebb7781c97>:<module>:INFO:PK50001A100000371 done,  4/564 
+2021-06-02 17:58:57,039:1622627937.039075:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:7160
+2021-06-02 17:58:57,277:1622627937.277354:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000516 start,  5/564 
+2021-06-02 17:58:57,278:1622627937.278329:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000516 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 17:59:35,868:1622627975.868145:day_sta:<ipython-input-4-b5f983b1266d>:<module>:INFO:5380
+2021-06-02 17:59:36,111:1622627976.111313:day_sta:<ipython-input-4-b5f983b1266d>:<module>:INFO:PK50001A100000516 start,  5/564 
+2021-06-02 17:59:36,112:1622627976.112291:day_sta:<ipython-input-4-b5f983b1266d>:<module>:INFO:PK50001A100000516 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 18:00:19,970:1622628019.970668:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:14508
+2021-06-02 18:00:20,210:1622628020.210899:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000516 start,  5/564 
+2021-06-02 18:00:20,211:1622628020.211876:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000516 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 18:11:56,487:1622628716.487826:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000516 done,  5/564 
+2021-06-02 18:11:56,488:1622628716.488801:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000522 start,  6/564 
+2021-06-02 18:11:56,489:1622628716.489778:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000522 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 18:21:18,317:1622629278.317537:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000522 done,  6/564 
+2021-06-02 18:21:18,318:1622629278.318520:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000534 start,  7/564 
+2021-06-02 18:21:18,319:1622629278.319496:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000534 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 18:30:37,873:1622629837.873009:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000534 done,  7/564 
+2021-06-02 18:30:37,873:1622629837.873985:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000692 start,  8/564 
+2021-06-02 18:30:37,874:1622629837.874963:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000692 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 18:46:00,667:1622630760.667353:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000692 done,  8/564 
+2021-06-02 18:46:00,669:1622630760.669304:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000710 start,  9/564 
+2021-06-02 18:46:00,670:1622630760.670286:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000710 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 18:54:21,661:1622631261.661225:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000710 done,  9/564 
+2021-06-02 18:54:21,662:1622631261.662198:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000713 start,  10/564 
+2021-06-02 18:54:21,663:1622631261.663172:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000713 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 19:00:10,675:1622631610.675715:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000713 done,  10/564 
+2021-06-02 19:00:10,676:1622631610.676692:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000714 start,  11/564 
+2021-06-02 19:00:10,677:1622631610.677673:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000714 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 19:07:22,237:1622632042.237947:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000714 done,  11/564 
+2021-06-02 19:07:22,238:1622632042.238922:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000728 start,  12/564 
+2021-06-02 19:07:22,239:1622632042.239894:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000728 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 19:16:22,991:1622632582.991722:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000728 done,  12/564 
+2021-06-02 19:16:22,991:1622632582.991722:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000729 start,  13/564 
+2021-06-02 19:16:22,993:1622632582.993676:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000729 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 19:23:31,496:1622633011.496397:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK50001A100000729 done,  13/564 
+2021-06-02 19:23:31,497:1622633011.497371:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004103 start,  14/564 
+2021-06-02 19:23:31,498:1622633011.498347:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004103 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 19:32:07,205:1622633527.205106:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004103 done,  14/564 
+2021-06-02 19:32:07,207:1622633527.207059:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004256 start,  15/564 
+2021-06-02 19:32:07,208:1622633527.208038:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004256 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 19:52:18,526:1622634738.526084:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004256 done,  15/564 
+2021-06-02 19:52:18,527:1622634738.527063:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004269 start,  16/564 
+2021-06-02 19:52:18,528:1622634738.528048:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004269 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 20:00:28,927:1622635228.927156:day_sta:day_sta:<module>:INFO:5564
+2021-06-02 20:00:29,190:1622635229.190832:day_sta:day_sta:<module>:INFO:PK50001A100000343 start,  1/564 
+2021-06-02 20:00:29,192:1622635229.192784:day_sta:day_sta:<module>:INFO:PK50001A100000343 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 20:03:18,203:1622635398.203444:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004269 done,  16/564 
+2021-06-02 20:03:18,204:1622635398.204422:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004272 start,  17/564 
+2021-06-02 20:03:18,205:1622635398.205402:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004272 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 20:07:56,997:1622635676.997367:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004272 done,  17/564 
+2021-06-02 20:07:56,998:1622635676.998341:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004283 start,  18/564 
+2021-06-02 20:07:56,999:1622635676.999315:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004283 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 20:25:25,800:1622636725.800552:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B00100004283 done,  18/564 
+2021-06-02 20:25:25,801:1622636725.801528:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B10100004368 start,  19/564 
+2021-06-02 20:25:25,802:1622636725.802499:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B10100004368 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 20:28:14,319:1622636894.319991:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B10100004368 done,  19/564 
+2021-06-02 20:28:14,320:1622636894.320968:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B10100004405 start,  20/564 
+2021-06-02 20:28:14,321:1622636894.321954:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B10100004405 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 20:33:28,506:1622637208.506444:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B10100004405 done,  20/564 
+2021-06-02 20:33:28,507:1622637208.507425:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B10100004428 start,  21/564 
+2021-06-02 20:33:28,508:1622637208.508399:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B10100004428 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 20:38:28,349:1622637508.349055:day_sta:<ipython-input-1-b5f983b1266d>:<module>:INFO:PK504B10100004428 done,  21/564
+2021-06-02 20:49:14,719:1622638154.719890:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:13900
+2021-06-02 20:49:14,960:1622638154.960125:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004438 start,  22/564 
+2021-06-02 20:49:14,961:1622638154.961102:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004438 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 20:49:38,507:1622638178.507968:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004488 start,  23/564 
+2021-06-02 20:49:38,508:1622638178.508945:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004488 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 20:55:50,467:1622638550.467792:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004488 done,  23/564 
+2021-06-02 20:55:50,468:1622638550.468767:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004492 start,  24/564 
+2021-06-02 20:55:50,469:1622638550.469744:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004492 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 21:00:53,761:1622638853.761560:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004492 done,  24/564 
+2021-06-02 21:00:53,762:1622638853.762534:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004497 start,  25/564 
+2021-06-02 21:00:53,763:1622638853.763504:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004497 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 21:07:19,858:1622639239.858042:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK504B10100004497 done,  25/564 
+2021-06-02 21:07:19,859:1622639239.859017:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000034 start,  26/564 
+2021-06-02 21:07:19,859:1622639239.859017:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000034 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 21:27:38,377:1622640458.377018:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000034 done,  26/564 
+2021-06-02 21:27:38,378:1622640458.378971:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000035 start,  27/564 
+2021-06-02 21:27:38,379:1622640458.379950:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000035 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 21:51:04,889:1622641864.889127:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000035 done,  27/564 
+2021-06-02 21:51:04,890:1622641864.890104:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000038 start,  28/564 
+2021-06-02 21:51:04,891:1622641864.891081:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000038 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 22:00:05,458:1622642405.458220:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000038 done,  28/564 
+2021-06-02 22:00:05,459:1622642405.459197:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000045 start,  29/564 
+2021-06-02 22:00:05,459:1622642405.459197:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000045 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 22:14:47,776:1622643287.776187:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000045 done,  29/564 
+2021-06-02 22:14:47,777:1622643287.777167:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000092 start,  30/564 
+2021-06-02 22:14:47,777:1622643287.777167:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000092 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 22:33:25,335:1622644405.335776:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000092 done,  30/564 
+2021-06-02 22:33:25,336:1622644405.336753:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000095 start,  31/564 
+2021-06-02 22:33:25,337:1622644405.337726:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000095 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 22:57:18,572:1622645838.572278:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000095 done,  31/564 
+2021-06-02 22:57:18,573:1622645838.573256:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000099 start,  32/564 
+2021-06-02 22:57:18,574:1622645838.574233:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000099 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 23:15:44,629:1622646944.629555:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000099 done,  32/564 
+2021-06-02 23:15:44,631:1622646944.631505:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000120 start,  33/564 
+2021-06-02 23:15:44,632:1622646944.632491:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000120 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 23:16:07,714:1622646967.714511:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000121 start,  34/564 
+2021-06-02 23:16:07,715:1622646967.715485:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000121 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 23:16:30,985:1622646990.985006:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000124 start,  35/564 
+2021-06-02 23:16:30,985:1622646990.985984:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000124 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 23:28:39,023:1622647719.023623:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000124 done,  35/564 
+2021-06-02 23:28:39,025:1622647719.025578:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000131 start,  36/564 
+2021-06-02 23:28:39,026:1622647719.026557:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000131 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-02 23:47:47,564:1622648867.564184:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000131 done,  36/564 
+2021-06-02 23:47:47,565:1622648867.565161:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000133 start,  37/564 
+2021-06-02 23:47:47,566:1622648867.566137:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000133 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 00:17:04,491:1622650624.491033:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000133 done,  37/564 
+2021-06-03 00:17:04,492:1622650624.492010:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000145 start,  38/564 
+2021-06-03 00:17:04,492:1622650624.492010:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000145 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 00:35:17,900:1622651717.900756:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000145 done,  38/564 
+2021-06-03 00:35:17,901:1622651717.901727:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000150 start,  39/564 
+2021-06-03 00:35:17,902:1622651717.902705:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000150 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 00:43:07,617:1622652187.617287:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000150 done,  39/564 
+2021-06-03 00:43:07,618:1622652187.618264:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000151 start,  40/564 
+2021-06-03 00:43:07,618:1622652187.618264:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000151 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 00:56:54,792:1622653014.792773:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000151 done,  40/564 
+2021-06-03 00:56:54,793:1622653014.793746:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000155 start,  41/564 
+2021-06-03 00:56:54,794:1622653014.794714:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000155 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 00:57:18,612:1622653038.612087:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000181 start,  42/564 
+2021-06-03 00:57:18,614:1622653038.614040:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000181 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 01:17:29,344:1622654249.344819:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000181 done,  42/564 
+2021-06-03 01:17:29,345:1622654249.345796:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000186 start,  43/564 
+2021-06-03 01:17:29,346:1622654249.346778:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000186 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 01:32:17,531:1622655137.531940:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000186 done,  43/564 
+2021-06-03 01:32:17,532:1622655137.532917:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000188 start,  44/564 
+2021-06-03 01:32:17,532:1622655137.532917:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000188 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 01:49:55,578:1622656195.578318:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000188 done,  44/564 
+2021-06-03 01:49:55,579:1622656195.579295:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000194 start,  45/564 
+2021-06-03 01:49:55,580:1622656195.580280:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000194 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 01:50:20,050:1622656220.050963:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000199 start,  46/564 
+2021-06-03 01:50:20,051:1622656220.051941:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000199 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 02:07:52,812:1622657272.812316:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000199 done,  46/564 
+2021-06-03 02:07:52,813:1622657272.813292:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000200 start,  47/564 
+2021-06-03 02:07:52,814:1622657272.814263:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000200 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 02:15:44,899:1622657744.899829:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000200 done,  47/564 
+2021-06-03 02:15:44,900:1622657744.900801:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000203 start,  48/564 
+2021-06-03 02:15:44,901:1622657744.901772:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000203 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 02:37:55,332:1622659075.332063:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000203 done,  48/564 
+2021-06-03 02:37:55,333:1622659075.333040:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000204 start,  49/564 
+2021-06-03 02:37:55,333:1622659075.333040:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000204 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 02:51:22,566:1622659882.566036:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000204 done,  49/564 
+2021-06-03 02:51:22,566:1622659882.566036:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000208 start,  50/564 
+2021-06-03 02:51:22,567:1622659882.567013:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000208 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 03:01:55,712:1622660515.712285:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000208 done,  50/564 
+2021-06-03 03:01:55,713:1622660515.713262:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000222 start,  51/564 
+2021-06-03 03:01:55,714:1622660515.714244:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000222 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 03:16:50,544:1622661410.544852:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000222 done,  51/564 
+2021-06-03 03:16:50,545:1622661410.545828:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000226 start,  52/564 
+2021-06-03 03:16:50,546:1622661410.546804:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000226 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 03:37:06,605:1622662626.605640:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000226 done,  52/564 
+2021-06-03 03:37:06,606:1622662626.606620:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000228 start,  53/564 
+2021-06-03 03:37:06,606:1622662626.606620:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000228 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 03:57:21,037:1622663841.037637:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000228 done,  53/564 
+2021-06-03 03:57:21,038:1622663841.038624:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000234 start,  54/564 
+2021-06-03 03:57:21,039:1622663841.039586:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000234 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 04:08:40,340:1622664520.340129:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000234 done,  54/564 
+2021-06-03 04:08:40,341:1622664520.341106:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000255 start,  55/564 
+2021-06-03 04:08:40,341:1622664520.341106:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000255 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 04:28:23,139:1622665703.139240:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000255 done,  55/564 
+2021-06-03 04:28:23,140:1622665703.140214:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000257 start,  56/564 
+2021-06-03 04:28:23,141:1622665703.141183:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000257 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 04:42:48,030:1622666568.030409:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000257 done,  56/564 
+2021-06-03 04:42:48,031:1622666568.031385:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000260 start,  57/564 
+2021-06-03 04:42:48,032:1622666568.032362:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000260 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 04:59:23,812:1622667563.812150:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000260 done,  57/564 
+2021-06-03 04:59:23,813:1622667563.813126:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000261 start,  58/564 
+2021-06-03 04:59:23,813:1622667563.813126:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000261 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 05:21:29,331:1622668889.331895:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000261 done,  58/564 
+2021-06-03 05:21:29,332:1622668889.332870:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000263 start,  59/564 
+2021-06-03 05:21:29,332:1622668889.332870:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000263 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 05:48:20,638:1622670500.638581:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000263 done,  59/564 
+2021-06-03 05:48:20,638:1622670500.638581:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000292 start,  60/564 
+2021-06-03 05:48:20,639:1622670500.639557:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000292 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 06:11:23,627:1622671883.627133:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000292 done,  60/564 
+2021-06-03 06:11:23,628:1622671883.628110:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000293 start,  61/564 
+2021-06-03 06:11:23,628:1622671883.628110:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000293 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 06:20:21,708:1622672421.708865:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000293 done,  61/564 
+2021-06-03 06:20:21,709:1622672421.709842:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000295 start,  62/564 
+2021-06-03 06:20:21,709:1622672421.709842:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000295 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 06:54:55,582:1622674495.582659:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000295 done,  62/564 
+2021-06-03 06:54:55,583:1622674495.583636:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000300 start,  63/564 
+2021-06-03 06:54:55,584:1622674495.584613:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000300 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 07:15:05,334:1622675705.334063:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000300 done,  63/564 
+2021-06-03 07:15:05,335:1622675705.335040:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000304 start,  64/564 
+2021-06-03 07:15:05,335:1622675705.335040:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000304 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 07:27:19,888:1622676439.888121:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000304 done,  64/564 
+2021-06-03 07:27:19,889:1622676439.889096:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000305 start,  65/564 
+2021-06-03 07:27:19,890:1622676439.890064:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000305 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 07:27:41,939:1622676461.939847:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000306 start,  66/564 
+2021-06-03 07:27:41,940:1622676461.940824:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000306 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 07:51:56,965:1622677916.965537:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000306 done,  66/564 
+2021-06-03 07:51:56,966:1622677916.966511:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000310 start,  67/564 
+2021-06-03 07:51:56,967:1622677916.967482:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000310 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 08:15:21,275:1622679321.275387:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000310 done,  67/564 
+2021-06-03 08:15:21,276:1622679321.276362:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000321 start,  68/564 
+2021-06-03 08:15:21,276:1622679321.276362:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000321 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 08:21:32,114:1622679692.114055:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000321 done,  68/564 
+2021-06-03 08:21:32,115:1622679692.115032:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000325 start,  69/564 
+2021-06-03 08:21:32,116:1622679692.116006:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000325 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 08:44:24,216:1622681064.216801:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000325 done,  69/564 
+2021-06-03 08:44:24,217:1622681064.217778:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000326 start,  70/564 
+2021-06-03 08:44:24,217:1622681064.217778:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000326 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 09:00:29,048:1622682029.048287:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000326 done,  70/564 
+2021-06-03 09:00:29,049:1622682029.049264:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000333 start,  71/564 
+2021-06-03 09:00:29,050:1622682029.050240:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000333 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 09:03:24,000:1622682204.000355:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000333 done,  71/564 
+2021-06-03 09:03:24,001:1622682204.001332:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000340 start,  72/564 
+2021-06-03 09:03:24,002:1622682204.002309:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000340 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 09:26:57,547:1622683617.547434:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000340 done,  72/564 
+2021-06-03 09:26:57,548:1622683617.548411:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000344 start,  73/564 
+2021-06-03 09:26:57,549:1622683617.549379:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000344 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 09:43:31,172:1622684611.172837:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000344 done,  73/564 
+2021-06-03 09:43:31,173:1622684611.173812:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000345 start,  74/564 
+2021-06-03 09:43:31,174:1622684611.174782:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000345 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 09:57:05,601:1622685425.601102:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000345 done,  74/564 
+2021-06-03 09:57:05,602:1622685425.602079:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000346 start,  75/564 
+2021-06-03 09:57:05,603:1622685425.603068:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000346 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 10:22:34,825:1622686954.825964:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000346 done,  75/564 
+2021-06-03 10:22:34,826:1622686954.826946:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000348 start,  76/564 
+2021-06-03 10:22:34,826:1622686954.826946:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000348 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 10:37:55,508:1622687875.508564:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000348 done,  76/564 
+2021-06-03 10:37:55,509:1622687875.509541:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000349 start,  77/564 
+2021-06-03 10:37:55,510:1622687875.510518:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000349 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 10:54:40,114:1622688880.114533:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000349 done,  77/564 
+2021-06-03 10:54:40,116:1622688880.116485:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000351 start,  78/564 
+2021-06-03 10:54:40,116:1622688880.116485:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000351 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 11:24:51,259:1622690691.259115:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000351 done,  78/564 
+2021-06-03 11:24:51,260:1622690691.260090:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000352 start,  79/564 
+2021-06-03 11:24:51,261:1622690691.261061:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000352 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 11:44:00,479:1622691840.479146:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000352 done,  79/564 
+2021-06-03 11:44:00,480:1622691840.480123:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000367 start,  80/564 
+2021-06-03 11:44:00,481:1622691840.481101:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000367 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 11:56:21,999:1622692581.999241:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000367 done,  80/564 
+2021-06-03 11:56:22,000:1622692582.000218:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000372 start,  81/564 
+2021-06-03 11:56:22,000:1622692582.000218:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000372 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 12:11:37,289:1622693497.289784:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000372 done,  81/564 
+2021-06-03 12:11:37,290:1622693497.290762:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000382 start,  82/564 
+2021-06-03 12:11:37,291:1622693497.291738:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000382 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 12:25:17,035:1622694317.035480:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000382 done,  82/564 
+2021-06-03 12:25:17,036:1622694317.036460:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000383 start,  83/564 
+2021-06-03 12:25:17,037:1622694317.037434:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000383 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 12:47:33,050:1622695653.050420:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000383 done,  83/564 
+2021-06-03 12:47:33,051:1622695653.051404:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000391 start,  84/564 
+2021-06-03 12:47:33,052:1622695653.052377:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000391 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 13:13:02,134:1622697182.134618:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000391 done,  84/564 
+2021-06-03 13:13:02,135:1622697182.135590:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000392 start,  85/564 
+2021-06-03 13:13:02,136:1622697182.136560:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000392 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 13:23:48,860:1622697828.860846:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000392 done,  85/564 
+2021-06-03 13:23:48,861:1622697828.861825:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000394 start,  86/564 
+2021-06-03 13:23:48,863:1622697828.863771:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000394 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 13:54:04,328:1622699644.328694:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000394 done,  86/564 
+2021-06-03 13:54:04,330:1622699644.330651:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000403 start,  87/564 
+2021-06-03 13:54:04,331:1622699644.331631:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000403 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 14:09:29,997:1622700569.997163:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000403 done,  87/564 
+2021-06-03 14:09:29,998:1622700569.998139:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000409 start,  88/564 
+2021-06-03 14:09:29,999:1622700569.999115:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000409 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 14:39:15,683:1622702355.683774:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000409 done,  88/564 
+2021-06-03 14:39:15,685:1622702355.685728:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000420 start,  89/564 
+2021-06-03 14:39:15,685:1622702355.685728:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000420 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 14:48:02,240:1622702882.240155:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000420 done,  89/564 
+2021-06-03 14:48:02,241:1622702882.241132:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000442 start,  90/564 
+2021-06-03 14:48:02,242:1622702882.242109:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000442 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 15:15:09,748:1622704509.748112:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000442 done,  90/564 
+2021-06-03 15:15:09,750:1622704509.750065:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000446 start,  91/564 
+2021-06-03 15:15:09,750:1622704509.750065:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000446 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 15:29:34,700:1622705374.700806:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000446 done,  91/564 
+2021-06-03 15:29:34,701:1622705374.701783:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000458 start,  92/564 
+2021-06-03 15:29:34,702:1622705374.702760:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000458 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 15:43:10,502:1622706190.502090:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000458 done,  92/564 
+2021-06-03 15:43:10,503:1622706190.503066:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000468 start,  93/564 
+2021-06-03 15:43:10,504:1622706190.504042:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000468 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 15:59:35,550:1622707175.550471:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000468 done,  93/564 
+2021-06-03 15:59:35,551:1622707175.551447:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000488 start,  94/564 
+2021-06-03 15:59:35,552:1622707175.552425:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000488 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 16:14:50,879:1622708090.879051:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000488 done,  94/564 
+2021-06-03 16:14:50,880:1622708090.880028:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000490 start,  95/564 
+2021-06-03 16:14:50,880:1622708090.880028:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000490 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 16:33:31,915:1622709211.915596:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000490 done,  95/564 
+2021-06-03 16:33:31,916:1622709211.916575:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000497 start,  96/564 
+2021-06-03 16:33:31,917:1622709211.917549:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000497 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 17:07:15,312:1622711235.312945:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000497 done,  96/564 
+2021-06-03 17:07:15,313:1622711235.313916:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000503 start,  97/564 
+2021-06-03 17:07:15,313:1622711235.313916:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000503 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 17:27:00,921:1622712420.921752:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000503 done,  97/564 
+2021-06-03 17:27:00,923:1622712420.923697:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000507 start,  98/564 
+2021-06-03 17:27:00,923:1622712420.923697:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000507 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 17:47:13,411:1622713633.411337:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000507 done,  98/564 
+2021-06-03 17:47:13,413:1622713633.413290:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000511 start,  99/564 
+2021-06-03 17:47:13,413:1622713633.413290:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000511 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 18:08:33,106:1622714913.106022:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000511 done,  99/564 
+2021-06-03 18:08:33,106:1622714913.106999:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000513 start,  100/564 
+2021-06-03 18:08:33,107:1622714913.107970:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000513 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 18:24:51,050:1622715891.050753:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000513 done,  100/564 
+2021-06-03 18:24:51,052:1622715891.052706:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000529 start,  101/564 
+2021-06-03 18:24:51,053:1622715891.053685:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000529 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 18:42:32,038:1622716952.038506:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000529 done,  101/564 
+2021-06-03 18:42:32,039:1622716952.039485:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000542 start,  102/564 
+2021-06-03 18:42:32,040:1622716952.040460:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000542 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 18:59:46,012:1622717986.012685:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000542 done,  102/564 
+2021-06-03 18:59:46,013:1622717986.013660:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000547 start,  103/564 
+2021-06-03 18:59:46,014:1622717986.014631:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000547 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 19:10:51,511:1622718651.511273:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000547 done,  103/564 
+2021-06-03 19:10:51,512:1622718651.512245:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000550 start,  104/564 
+2021-06-03 19:10:51,512:1622718651.512245:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000550 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 19:22:31,952:1622719351.952405:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000550 done,  104/564 
+2021-06-03 19:22:31,953:1622719351.953382:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000554 start,  105/564 
+2021-06-03 19:22:31,954:1622719351.954357:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000554 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 19:32:12,306:1622719932.306443:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000554 done,  105/564 
+2021-06-03 19:32:12,307:1622719932.307421:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000578 start,  106/564 
+2021-06-03 19:32:12,308:1622719932.308401:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000578 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 19:46:45,742:1622720805.742575:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000578 done,  106/564 
+2021-06-03 19:46:45,743:1622720805.743552:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000581 start,  107/564 
+2021-06-03 19:46:45,744:1622720805.744530:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000581 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 20:05:39,085:1622721939.085701:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000581 done,  107/564 
+2021-06-03 20:05:39,086:1622721939.086678:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000599 start,  108/564 
+2021-06-03 20:05:39,086:1622721939.086678:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000599 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 20:06:01,984:1622721961.984129:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000603 start,  109/564 
+2021-06-03 20:06:01,985:1622721961.985111:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000603 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 20:21:42,437:1622722902.437801:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000603 done,  109/564 
+2021-06-03 20:21:42,439:1622722902.439754:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000650 start,  110/564 
+2021-06-03 20:21:42,439:1622722902.439754:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000650 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 20:36:50,691:1622723810.691275:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000650 done,  110/564 
+2021-06-03 20:36:50,693:1622723810.693218:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000689 start,  111/564 
+2021-06-03 20:36:50,693:1622723810.693218:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000689 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 20:58:08,364:1622725088.364380:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000689 done,  111/564 
+2021-06-03 20:58:08,365:1622725088.365358:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000694 start,  112/564 
+2021-06-03 20:58:08,366:1622725088.366333:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000694 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 21:13:45,186:1622726025.186195:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000694 done,  112/564 
+2021-06-03 21:13:45,187:1622726025.187172:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000697 start,  113/564 
+2021-06-03 21:13:45,188:1622726025.188154:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000697 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 21:42:59,599:1622727779.599376:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000697 done,  113/564 
+2021-06-03 21:42:59,600:1622727779.600349:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000701 start,  114/564 
+2021-06-03 21:42:59,601:1622727779.601320:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000701 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 21:57:59,461:1622728679.461232:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000701 done,  114/564 
+2021-06-03 21:57:59,463:1622728679.463175:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000704 start,  115/564 
+2021-06-03 21:57:59,464:1622728679.464152:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000704 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 22:09:46,796:1622729386.796874:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000704 done,  115/564 
+2021-06-03 22:09:46,797:1622729386.797850:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000756 start,  116/564 
+2021-06-03 22:09:46,798:1622729386.798826:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000756 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 22:14:16,057:1622729656.057467:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000756 done,  116/564 
+2021-06-03 22:14:16,058:1622729656.058443:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000779 start,  117/564 
+2021-06-03 22:14:16,059:1622729656.059413:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000779 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 22:18:43,907:1622729923.907903:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000779 done,  117/564 
+2021-06-03 22:18:43,908:1622729923.908882:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000784 start,  118/564 
+2021-06-03 22:18:43,909:1622729923.909853:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000784 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 22:22:14,399:1622730134.399959:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000784 done,  118/564 
+2021-06-03 22:22:14,400:1622730134.400935:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000788 start,  119/564 
+2021-06-03 22:22:14,401:1622730134.401911:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000788 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 22:26:41,059:1622730401.059982:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000788 done,  119/564 
+2021-06-03 22:26:41,059:1622730401.059982:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000796 start,  120/564 
+2021-06-03 22:26:41,060:1622730401.060964:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000796 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 22:30:20,764:1622730620.764973:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000796 done,  120/564 
+2021-06-03 22:30:20,765:1622730620.765944:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000855 start,  121/564 
+2021-06-03 22:30:20,766:1622730620.766916:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000855 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 22:33:22,336:1622730802.336178:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000855 done,  121/564 
+2021-06-03 22:33:22,337:1622730802.337157:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000032 start,  122/564 
+2021-06-03 22:33:22,338:1622730802.338125:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000032 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 22:59:19,352:1622732359.352885:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000032 done,  122/564 
+2021-06-03 22:59:19,353:1622732359.353862:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000440 start,  123/564 
+2021-06-03 22:59:19,354:1622732359.354845:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000440 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 23:22:29,236:1622733749.236038:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000440 done,  123/564 
+2021-06-03 23:22:29,237:1622733749.237014:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000700 start,  124/564 
+2021-06-03 23:22:29,238:1622733749.238002:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000700 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 23:22:53,257:1622733773.257502:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000021 start,  125/564 
+2021-06-03 23:22:53,258:1622733773.258479:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000021 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-03 23:37:45,593:1622734665.593027:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000021 done,  125/564 
+2021-06-03 23:37:45,594:1622734665.594006:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000022 start,  126/564 
+2021-06-03 23:37:45,594:1622734665.594974:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000022 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 00:07:46,012:1622736466.012993:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000022 done,  126/564 
+2021-06-04 00:07:46,013:1622736466.013970:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000046 start,  127/564 
+2021-06-04 00:07:46,014:1622736466.014946:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000046 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 00:37:22,250:1622738242.250342:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000046 done,  127/564 
+2021-06-04 00:37:22,251:1622738242.251317:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000050 start,  128/564 
+2021-06-04 00:37:22,252:1622738242.252290:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000050 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 00:47:21,286:1622738841.286169:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000050 done,  128/564 
+2021-06-04 00:47:21,287:1622738841.287144:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000098 start,  129/564 
+2021-06-04 00:47:21,287:1622738841.287144:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000098 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 00:53:56,762:1622739236.762530:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000098 done,  129/564 
+2021-06-04 00:53:56,763:1622739236.763507:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000100 start,  130/564 
+2021-06-04 00:53:56,764:1622739236.764482:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000100 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 01:08:24,549:1622740104.549205:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000100 done,  130/564 
+2021-06-04 01:08:24,550:1622740104.550178:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000123 start,  131/564 
+2021-06-04 01:08:24,551:1622740104.551149:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000123 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 01:19:34,377:1622740774.377022:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000123 done,  131/564 
+2021-06-04 01:19:34,377:1622740774.378000:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000125 start,  132/564 
+2021-06-04 01:19:34,378:1622740774.378978:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000125 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 01:30:42,590:1622741442.590508:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000125 done,  132/564 
+2021-06-04 01:30:42,591:1622741442.591486:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000126 start,  133/564 
+2021-06-04 01:30:42,592:1622741442.592462:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000126 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 01:42:23,203:1622742143.203467:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000126 done,  133/564 
+2021-06-04 01:42:23,205:1622742143.205410:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000136 start,  134/564 
+2021-06-04 01:42:23,206:1622742143.206391:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000136 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 01:55:55,353:1622742955.353534:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000136 done,  134/564 
+2021-06-04 01:55:55,354:1622742955.354511:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000137 start,  135/564 
+2021-06-04 01:55:55,355:1622742955.355488:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000137 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 02:13:51,147:1622744031.147847:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000137 done,  135/564 
+2021-06-04 02:13:51,148:1622744031.148825:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000138 start,  136/564 
+2021-06-04 02:13:51,149:1622744031.149796:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000138 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 02:37:14,164:1622745434.164795:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000138 done,  136/564 
+2021-06-04 02:37:14,165:1622745434.165772:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000141 start,  137/564 
+2021-06-04 02:37:14,166:1622745434.166749:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000141 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 03:07:13,126:1622747233.126770:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000141 done,  137/564 
+2021-06-04 03:07:13,127:1622747233.127748:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000143 start,  138/564 
+2021-06-04 03:07:13,128:1622747233.128724:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000143 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 03:21:15,193:1622748075.193750:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000143 done,  138/564 
+2021-06-04 03:21:15,194:1622748075.194721:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000144 start,  139/564 
+2021-06-04 03:21:15,194:1622748075.194721:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000144 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 03:29:53,213:1622748593.213009:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000144 done,  139/564 
+2021-06-04 03:29:53,213:1622748593.213985:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000147 start,  140/564 
+2021-06-04 03:29:53,214:1622748593.214962:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000147 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 04:01:09,163:1622750469.163342:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000147 done,  140/564 
+2021-06-04 04:01:09,164:1622750469.164311:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000159 start,  141/564 
+2021-06-04 04:01:09,165:1622750469.165282:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000159 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 04:11:48,736:1622751108.736304:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000159 done,  141/564 
+2021-06-04 04:11:48,737:1622751108.737281:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000162 start,  142/564 
+2021-06-04 04:11:48,738:1622751108.738258:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000162 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 04:25:52,053:1622751952.053261:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000162 done,  142/564 
+2021-06-04 04:25:52,054:1622751952.054235:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000163 start,  143/564 
+2021-06-04 04:25:52,054:1622751952.054235:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000163 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 04:44:56,977:1622753096.977554:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000163 done,  143/564 
+2021-06-04 04:44:56,978:1622753096.978531:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000167 start,  144/564 
+2021-06-04 04:44:56,979:1622753096.979504:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000167 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 05:01:37,415:1622754097.415693:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000167 done,  144/564 
+2021-06-04 05:01:37,416:1622754097.416671:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000170 start,  145/564 
+2021-06-04 05:01:37,417:1622754097.417645:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000170 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 05:01:59,239:1622754119.239897:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000175 start,  146/564 
+2021-06-04 05:01:59,240:1622754119.240873:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000175 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 05:25:25,423:1622755525.423748:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000175 done,  146/564 
+2021-06-04 05:25:25,424:1622755525.424725:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000183 start,  147/564 
+2021-06-04 05:25:25,425:1622755525.425702:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000183 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 05:38:38,911:1622756318.911624:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000183 done,  147/564 
+2021-06-04 05:38:38,912:1622756318.912599:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000184 start,  148/564 
+2021-06-04 05:38:38,913:1622756318.913570:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000184 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 05:59:08,634:1622757548.634500:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000184 done,  148/564 
+2021-06-04 05:59:08,635:1622757548.635481:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000189 start,  149/564 
+2021-06-04 05:59:08,636:1622757548.636458:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000189 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 06:14:06,066:1622758446.066606:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000189 done,  149/564 
+2021-06-04 06:14:06,067:1622758446.067583:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000191 start,  150/564 
+2021-06-04 06:14:06,067:1622758446.067583:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000191 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 06:32:29,998:1622759549.998640:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000191 done,  150/564 
+2021-06-04 06:32:30,000:1622759550.000588:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000193 start,  151/564 
+2021-06-04 06:32:30,000:1622759550.000588:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000193 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 06:43:59,959:1622760239.959139:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000193 done,  151/564 
+2021-06-04 06:43:59,960:1622760239.960116:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000195 start,  152/564 
+2021-06-04 06:43:59,960:1622760239.960116:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000195 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 06:54:15,179:1622760855.179451:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000195 done,  152/564 
+2021-06-04 06:54:15,180:1622760855.180427:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000197 start,  153/564 
+2021-06-04 06:54:15,181:1622760855.181399:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000197 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 07:03:21,485:1622761401.485849:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000197 done,  153/564 
+2021-06-04 07:03:21,486:1622761401.486822:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000206 start,  154/564 
+2021-06-04 07:03:21,487:1622761401.487792:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000206 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 07:20:42,339:1622762442.339637:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000206 done,  154/564 
+2021-06-04 07:20:42,340:1622762442.340612:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000209 start,  155/564 
+2021-06-04 07:20:42,340:1622762442.340612:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000209 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 07:33:25,028:1622763205.028693:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000209 done,  155/564 
+2021-06-04 07:33:25,030:1622763205.030645:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000215 start,  156/564 
+2021-06-04 07:33:25,031:1622763205.031621:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000215 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 07:41:14,750:1622763674.750036:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000215 done,  156/564 
+2021-06-04 07:41:14,751:1622763674.751010:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000218 start,  157/564 
+2021-06-04 07:41:14,751:1622763674.751010:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000218 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 07:56:43,265:1622764603.265128:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000218 done,  157/564 
+2021-06-04 07:56:43,266:1622764603.266101:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000219 start,  158/564 
+2021-06-04 07:56:43,267:1622764603.267072:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000219 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 08:06:14,036:1622765174.036308:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000219 done,  158/564 
+2021-06-04 08:06:14,037:1622765174.037282:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000220 start,  159/564 
+2021-06-04 08:06:14,038:1622765174.038255:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000220 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 08:30:47,452:1622766647.452444:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000220 done,  159/564 
+2021-06-04 08:30:47,453:1622766647.453418:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000225 start,  160/564 
+2021-06-04 08:30:47,453:1622766647.453418:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000225 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 08:42:20,744:1622767340.744080:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000225 done,  160/564 
+2021-06-04 08:42:20,745:1622767340.745052:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000231 start,  161/564 
+2021-06-04 08:42:20,746:1622767340.746023:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000231 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 09:02:39,084:1622768559.084093:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000231 done,  161/564 
+2021-06-04 09:02:39,085:1622768559.085073:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000233 start,  162/564 
+2021-06-04 09:02:39,085:1622768559.085073:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000233 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 09:03:01,745:1622768581.745215:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000235 start,  163/564 
+2021-06-04 09:03:01,746:1622768581.746192:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000235 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 09:24:10,181:1622769850.181108:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000235 done,  163/564 
+2021-06-04 09:24:10,182:1622769850.182085:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000236 start,  164/564 
+2021-06-04 09:24:10,183:1622769850.183064:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000236 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 09:32:03,108:1622770323.108548:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000236 done,  164/564 
+2021-06-04 09:32:03,109:1622770323.109524:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000237 start,  165/564 
+2021-06-04 09:32:03,110:1622770323.110494:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000237 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 09:43:21,312:1622771001.312258:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000237 done,  165/564 
+2021-06-04 09:43:21,314:1622771001.314199:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000239 start,  166/564 
+2021-06-04 09:43:21,315:1622771001.315180:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000239 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 09:56:07,393:1622771767.393841:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000239 done,  166/564 
+2021-06-04 09:56:07,395:1622771767.395794:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000240 start,  167/564 
+2021-06-04 09:56:07,395:1622771767.395794:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000240 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 10:14:40,918:1622772880.918680:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000240 done,  167/564 
+2021-06-04 10:14:40,919:1622772880.919657:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000248 start,  168/564 
+2021-06-04 10:14:40,919:1622772880.919657:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000248 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 10:35:20,162:1622774120.162981:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000248 done,  168/564 
+2021-06-04 10:35:20,163:1622774120.163958:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000252 start,  169/564 
+2021-06-04 10:35:20,164:1622774120.164938:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000252 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 10:35:43,733:1622774143.733278:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000254 start,  170/564 
+2021-06-04 10:35:43,734:1622774143.734254:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000254 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 10:36:07,400:1622774167.400254:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000264 start,  171/564 
+2021-06-04 10:36:07,401:1622774167.401232:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000264 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 10:39:40,042:1622774380.042684:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000264 done,  171/564 
+2021-06-04 10:39:40,043:1622774380.043662:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000265 start,  172/564 
+2021-06-04 10:39:40,044:1622774380.044631:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000265 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 10:56:54,500:1622775414.500209:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000265 done,  172/564 
+2021-06-04 10:56:54,501:1622775414.501187:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000271 start,  173/564 
+2021-06-04 10:56:54,502:1622775414.502162:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000271 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 11:10:22,303:1622776222.303460:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000271 done,  173/564 
+2021-06-04 11:10:22,304:1622776222.304435:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000272 start,  174/564 
+2021-06-04 11:10:22,305:1622776222.305410:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000272 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 11:33:33,841:1622777613.841735:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000272 done,  174/564 
+2021-06-04 11:33:33,842:1622777613.842712:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000285 start,  175/564 
+2021-06-04 11:33:33,842:1622777613.842712:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000285 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 12:02:47,004:1622779367.004710:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000285 done,  175/564 
+2021-06-04 12:02:47,005:1622779367.005688:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000286 start,  176/564 
+2021-06-04 12:02:47,006:1622779367.006666:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000286 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 12:03:11,799:1622779391.799625:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000287 start,  177/564 
+2021-06-04 12:03:11,801:1622779391.801579:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000287 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 12:03:35,860:1622779415.860159:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000290 start,  178/564 
+2021-06-04 12:03:35,861:1622779415.861136:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000290 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 12:10:32,659:1622779832.659772:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000290 done,  178/564 
+2021-06-04 12:10:32,660:1622779832.660748:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000294 start,  179/564 
+2021-06-04 12:10:32,661:1622779832.661730:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000294 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 12:27:39,996:1622780859.996171:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000294 done,  179/564 
+2021-06-04 12:27:39,997:1622780859.997148:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000296 start,  180/564 
+2021-06-04 12:27:39,998:1622780859.998124:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000296 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 12:53:53,301:1622782433.301021:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000296 done,  180/564 
+2021-06-04 12:53:53,301:1622782433.302000:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000298 start,  181/564 
+2021-06-04 12:53:53,302:1622782433.302973:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000298 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 13:01:34,985:1622782894.985393:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000298 done,  181/564 
+2021-06-04 13:01:34,986:1622782894.986369:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000299 start,  182/564 
+2021-06-04 13:01:34,987:1622782894.987344:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000299 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 13:16:39,729:1622783799.729157:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000299 done,  182/564 
+2021-06-04 13:16:39,730:1622783799.730127:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000301 start,  183/564 
+2021-06-04 13:16:39,731:1622783799.731104:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000301 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 13:46:58,324:1622785618.324873:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000301 done,  183/564 
+2021-06-04 13:46:58,325:1622785618.325852:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000303 start,  184/564 
+2021-06-04 13:46:58,326:1622785618.326828:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000303 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 13:47:22,447:1622785642.447920:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000307 start,  185/564 
+2021-06-04 13:47:22,448:1622785642.448895:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000307 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 13:47:46,588:1622785666.588543:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000308 start,  186/564 
+2021-06-04 13:47:46,589:1622785666.589520:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000308 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 14:04:15,868:1622786655.868359:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000308 done,  186/564 
+2021-06-04 14:04:15,869:1622786655.869333:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000309 start,  187/564 
+2021-06-04 14:04:15,870:1622786655.870303:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000309 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 14:14:02,766:1622787242.766477:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000309 done,  187/564 
+2021-06-04 14:14:02,767:1622787242.767454:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000313 start,  188/564 
+2021-06-04 14:14:02,768:1622787242.768439:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000313 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 14:31:08,478:1622788268.478892:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000313 done,  188/564 
+2021-06-04 14:31:08,479:1622788268.479867:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000318 start,  189/564 
+2021-06-04 14:31:08,480:1622788268.480844:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000318 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 14:49:07,383:1622789347.383566:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000318 done,  189/564 
+2021-06-04 14:49:07,384:1622789347.384544:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000319 start,  190/564 
+2021-06-04 14:49:07,385:1622789347.385519:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000319 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 15:06:17,066:1622790377.066719:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000319 done,  190/564 
+2021-06-04 15:06:17,067:1622790377.067696:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000324 start,  191/564 
+2021-06-04 15:06:17,068:1622790377.068677:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000324 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 15:17:13,866:1622791033.866201:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000324 done,  191/564 
+2021-06-04 15:17:13,867:1622791033.867178:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000327 start,  192/564 
+2021-06-04 15:17:13,868:1622791033.868155:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000327 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 15:26:07,618:1622791567.618879:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000327 done,  192/564 
+2021-06-04 15:26:07,619:1622791567.619854:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000328 start,  193/564 
+2021-06-04 15:26:07,619:1622791567.619854:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000328 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 15:39:13,077:1622792353.077475:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000328 done,  193/564 
+2021-06-04 15:39:13,078:1622792353.078451:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000329 start,  194/564 
+2021-06-04 15:39:13,078:1622792353.078451:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000329 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 15:50:39,317:1622793039.317335:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000329 done,  194/564 
+2021-06-04 15:50:39,318:1622793039.318308:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000330 start,  195/564 
+2021-06-04 15:50:39,318:1622793039.318308:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000330 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 16:07:38,744:1622794058.744569:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000330 done,  195/564 
+2021-06-04 16:07:38,745:1622794058.745558:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000332 start,  196/564 
+2021-06-04 16:07:38,746:1622794058.746525:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000332 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 16:08:01,190:1622794081.190847:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000336 start,  197/564 
+2021-06-04 16:08:01,191:1622794081.191823:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000336 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 16:27:07,615:1622795227.615985:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000336 done,  197/564 
+2021-06-04 16:27:07,616:1622795227.616963:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000341 start,  198/564 
+2021-06-04 16:27:07,616:1622795227.616963:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000341 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 16:48:17,063:1622796497.063833:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000341 done,  198/564 
+2021-06-04 16:48:17,064:1622796497.064810:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000350 start,  199/564 
+2021-06-04 16:48:17,064:1622796497.064810:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000350 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 17:02:14,258:1622797334.258623:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000350 done,  199/564 
+2021-06-04 17:02:14,259:1622797334.259603:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000359 start,  200/564 
+2021-06-04 17:02:14,260:1622797334.260576:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000359 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 17:02:36,240:1622797356.240056:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000366 start,  201/564 
+2021-06-04 17:02:36,241:1622797356.241032:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000366 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 17:02:58,019:1622797378.019348:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000373 start,  202/564 
+2021-06-04 17:02:58,020:1622797378.020319:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000373 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 17:20:03,756:1622798403.756082:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000373 done,  202/564 
+2021-06-04 17:20:03,757:1622798403.757059:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000377 start,  203/564 
+2021-06-04 17:20:03,758:1622798403.758035:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000377 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 17:33:25,533:1622799205.533098:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000377 done,  203/564 
+2021-06-04 17:33:25,534:1622799205.534066:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000381 start,  204/564 
+2021-06-04 17:33:25,535:1622799205.535042:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000381 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 18:05:09,777:1622801109.777270:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000381 done,  204/564 
+2021-06-04 18:05:09,778:1622801109.778246:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000386 start,  205/564 
+2021-06-04 18:05:09,779:1622801109.779219:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000386 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 18:12:03,269:1622801523.269264:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000386 done,  205/564 
+2021-06-04 18:12:03,270:1622801523.270237:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000387 start,  206/564 
+2021-06-04 18:12:03,271:1622801523.271212:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000387 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 18:29:02,105:1622802542.105760:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000387 done,  206/564 
+2021-06-04 18:29:02,106:1622802542.106737:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000390 start,  207/564 
+2021-06-04 18:29:02,106:1622802542.106737:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000390 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 18:34:05,607:1622802845.607618:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000390 done,  207/564 
+2021-06-04 18:34:05,608:1622802845.608592:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000396 start,  208/564 
+2021-06-04 18:34:05,608:1622802845.608592:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000396 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 18:46:31,246:1622803591.246827:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000396 done,  208/564 
+2021-06-04 18:46:31,247:1622803591.247805:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000400 start,  209/564 
+2021-06-04 18:46:31,247:1622803591.247805:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000400 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 18:55:18,861:1622804118.861701:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000400 done,  209/564 
+2021-06-04 18:55:18,862:1622804118.862678:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000404 start,  210/564 
+2021-06-04 18:55:18,863:1622804118.863655:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000404 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 19:14:00,501:1622805240.501908:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000404 done,  210/564 
+2021-06-04 19:14:00,502:1622805240.502879:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000405 start,  211/564 
+2021-06-04 19:14:00,503:1622805240.503847:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000405 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 19:25:45,954:1622805945.954607:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000405 done,  211/564 
+2021-06-04 19:25:45,955:1622805945.955584:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000407 start,  212/564 
+2021-06-04 19:25:45,956:1622805945.956551:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000407 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 19:45:25,260:1622807125.260771:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000407 done,  212/564 
+2021-06-04 19:45:25,262:1622807125.262721:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000411 start,  213/564 
+2021-06-04 19:45:25,263:1622807125.263697:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000411 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 19:56:36,454:1622807796.454666:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000411 done,  213/564 
+2021-06-04 19:56:36,455:1622807796.455638:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000412 start,  214/564 
+2021-06-04 19:56:36,456:1622807796.456609:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000412 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 20:10:05,719:1622808605.719828:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000412 done,  214/564 
+2021-06-04 20:10:05,720:1622808605.720808:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000413 start,  215/564 
+2021-06-04 20:10:05,721:1622808605.721779:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000413 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 20:25:40,982:1622809540.982209:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000413 done,  215/564 
+2021-06-04 20:25:40,983:1622809540.983180:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000417 start,  216/564 
+2021-06-04 20:25:40,983:1622809540.983180:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000417 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 20:35:27,268:1622810127.268912:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000417 done,  216/564 
+2021-06-04 20:35:27,269:1622810127.269901:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000419 start,  217/564 
+2021-06-04 20:35:27,270:1622810127.270868:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000419 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 20:51:00,612:1622811060.612223:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000419 done,  217/564 
+2021-06-04 20:51:00,613:1622811060.613204:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000422 start,  218/564 
+2021-06-04 20:51:00,614:1622811060.614179:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000422 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 20:59:00,669:1622811540.669771:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000422 done,  218/564 
+2021-06-04 20:59:00,670:1622811540.670742:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000423 start,  219/564 
+2021-06-04 20:59:00,670:1622811540.670742:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000423 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 20:59:24,743:1622811564.743976:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000424 start,  220/564 
+2021-06-04 20:59:24,745:1622811564.745929:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000424 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 20:59:48,345:1622811588.345529:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000427 start,  221/564 
+2021-06-04 20:59:48,346:1622811588.346508:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000427 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 21:17:46,424:1622812666.424052:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000427 done,  221/564 
+2021-06-04 21:17:46,425:1622812666.425034:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000429 start,  222/564 
+2021-06-04 21:17:46,426:1622812666.426007:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000429 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 21:18:08,625:1622812688.625212:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000430 start,  223/564 
+2021-06-04 21:18:08,626:1622812688.626189:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000430 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 21:30:48,705:1622813448.705773:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000430 done,  223/564 
+2021-06-04 21:30:48,706:1622813448.706750:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000431 start,  224/564 
+2021-06-04 21:30:48,707:1622813448.707730:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000431 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 21:42:57,525:1622814177.525941:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000431 done,  224/564 
+2021-06-04 21:42:57,526:1622814177.526919:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000432 start,  225/564 
+2021-06-04 21:42:57,527:1622814177.527894:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000432 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 22:00:46,605:1622815246.605318:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000432 done,  225/564 
+2021-06-04 22:00:46,606:1622815246.606295:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000434 start,  226/564 
+2021-06-04 22:00:46,607:1622815246.607271:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000434 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 22:08:57,517:1622815737.517139:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000434 done,  226/564 
+2021-06-04 22:08:57,518:1622815737.518114:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000438 start,  227/564 
+2021-06-04 22:08:57,519:1622815737.519090:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000438 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 22:34:01,739:1622817241.739174:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000438 done,  227/564 
+2021-06-04 22:34:01,740:1622817241.740150:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000441 start,  228/564 
+2021-06-04 22:34:01,741:1622817241.741125:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000441 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 22:34:24,634:1622817264.634663:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000443 start,  229/564 
+2021-06-04 22:34:24,635:1622817264.635640:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000443 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 22:38:55,479:1622817535.479223:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000443 done,  229/564 
+2021-06-04 22:38:55,480:1622817535.480198:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000444 start,  230/564 
+2021-06-04 22:38:55,481:1622817535.481173:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000444 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 22:52:26,097:1622818346.097040:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000444 done,  230/564 
+2021-06-04 22:52:26,098:1622818346.098017:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000445 start,  231/564 
+2021-06-04 22:52:26,098:1622818346.098989:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000445 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 22:52:49,565:1622818369.565768:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000448 start,  232/564 
+2021-06-04 22:52:49,566:1622818369.566751:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000448 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 22:53:13,258:1622818393.258137:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000449 start,  233/564 
+2021-06-04 22:53:13,259:1622818393.259114:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000449 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 23:38:09,990:1622821089.990294:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000449 done,  233/564 
+2021-06-04 23:38:09,991:1622821089.991270:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000450 start,  234/564 
+2021-06-04 23:38:09,992:1622821089.992252:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000450 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 23:38:34,100:1622821114.100633:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000453 start,  235/564 
+2021-06-04 23:38:34,101:1622821114.101611:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000453 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 23:38:57,863:1622821137.863318:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000454 start,  236/564 
+2021-06-04 23:38:57,864:1622821137.864297:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000454 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-04 23:53:48,002:1622822028.002383:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000454 done,  236/564 
+2021-06-04 23:53:48,003:1622822028.003360:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000459 start,  237/564 
+2021-06-04 23:53:48,004:1622822028.004336:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000459 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 00:15:55,429:1622823355.429568:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000459 done,  237/564 
+2021-06-05 00:15:55,431:1622823355.431526:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000460 start,  238/564 
+2021-06-05 00:15:55,432:1622823355.432502:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000460 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 00:16:19,080:1622823379.080933:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000463 start,  239/564 
+2021-06-05 00:16:19,081:1622823379.081907:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000463 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 00:29:20,419:1622824160.419322:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000463 done,  239/564 
+2021-06-05 00:29:20,421:1622824160.421276:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000464 start,  240/564 
+2021-06-05 00:29:20,422:1622824160.422254:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000464 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 00:29:42,258:1622824182.258171:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000469 start,  241/564 
+2021-06-05 00:29:42,259:1622824182.259154:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000469 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 00:36:45,550:1622824605.550866:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000469 done,  241/564 
+2021-06-05 00:36:45,551:1622824605.551845:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000470 start,  242/564 
+2021-06-05 00:36:45,552:1622824605.552819:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000470 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 00:50:06,816:1622825406.816193:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000470 done,  242/564 
+2021-06-05 00:50:06,817:1622825406.817169:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000472 start,  243/564 
+2021-06-05 00:50:06,818:1622825406.818145:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000472 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 00:55:40,268:1622825740.268272:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000472 done,  243/564 
+2021-06-05 00:55:40,269:1622825740.269248:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000474 start,  244/564 
+2021-06-05 00:55:40,270:1622825740.270228:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000474 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 01:24:42,383:1622827482.383599:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000474 done,  244/564 
+2021-06-05 01:24:42,384:1622827482.384576:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000475 start,  245/564 
+2021-06-05 01:24:42,385:1622827482.385556:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000475 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 01:35:11,408:1622828111.408605:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000475 done,  245/564 
+2021-06-05 01:35:11,408:1622828111.408605:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000478 start,  246/564 
+2021-06-05 01:35:11,409:1622828111.409576:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000478 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 01:50:27,046:1622829027.046880:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000478 done,  246/564 
+2021-06-05 01:50:27,047:1622829027.047857:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000479 start,  247/564 
+2021-06-05 01:50:27,048:1622829027.048833:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000479 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 02:04:05,840:1622829845.840427:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000479 done,  247/564 
+2021-06-05 02:04:05,841:1622829845.841404:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000483 start,  248/564 
+2021-06-05 02:04:05,842:1622829845.842383:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000483 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 02:23:53,931:1622831033.931658:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000483 done,  248/564 
+2021-06-05 02:23:53,933:1622831033.933602:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000485 start,  249/564 
+2021-06-05 02:23:53,933:1622831033.933602:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000485 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 02:44:57,979:1622832297.979950:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000485 done,  249/564 
+2021-06-05 02:44:57,980:1622832297.980925:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000486 start,  250/564 
+2021-06-05 02:44:57,980:1622832297.980925:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000486 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 03:01:49,920:1622833309.920876:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000486 done,  250/564 
+2021-06-05 03:01:49,921:1622833309.921853:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000489 start,  251/564 
+2021-06-05 03:01:49,922:1622833309.922829:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000489 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 03:10:43,739:1622833843.739840:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000489 done,  251/564 
+2021-06-05 03:10:43,740:1622833843.740816:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000491 start,  252/564 
+2021-06-05 03:10:43,740:1622833843.740816:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000491 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 03:23:00,572:1622834580.572532:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000491 done,  252/564 
+2021-06-05 03:23:00,573:1622834580.573510:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000492 start,  253/564 
+2021-06-05 03:23:00,574:1622834580.574486:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000492 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 03:28:35,939:1622834915.939581:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000492 done,  253/564 
+2021-06-05 03:28:35,940:1622834915.940558:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000493 start,  254/564 
+2021-06-05 03:28:35,941:1622834915.941529:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000493 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 03:39:21,949:1622835561.949000:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000493 done,  254/564 
+2021-06-05 03:39:21,949:1622835561.949973:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000494 start,  255/564 
+2021-06-05 03:39:21,949:1622835561.949973:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000494 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 03:48:19,757:1622836099.757347:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000494 done,  255/564 
+2021-06-05 03:48:19,758:1622836099.758325:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000498 start,  256/564 
+2021-06-05 03:48:19,758:1622836099.758325:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000498 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 04:02:55,772:1622836975.772450:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000498 done,  256/564 
+2021-06-05 04:02:55,773:1622836975.773428:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000499 start,  257/564 
+2021-06-05 04:02:55,774:1622836975.774406:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000499 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 04:18:19,097:1622837899.097684:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000499 done,  257/564 
+2021-06-05 04:18:19,098:1622837899.098662:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000501 start,  258/564 
+2021-06-05 04:18:19,099:1622837899.099633:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000501 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 04:25:17,869:1622838317.869869:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000501 done,  258/564 
+2021-06-05 04:25:17,870:1622838317.870845:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000502 start,  259/564 
+2021-06-05 04:25:17,871:1622838317.871816:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000502 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 04:46:36,103:1622839596.103589:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000502 done,  259/564 
+2021-06-05 04:46:36,104:1622839596.104570:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000504 start,  260/564 
+2021-06-05 04:46:36,105:1622839596.105545:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000504 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 04:55:04,970:1622840104.970566:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000504 done,  260/564 
+2021-06-05 04:55:04,971:1622840104.971540:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000505 start,  261/564 
+2021-06-05 04:55:04,971:1622840104.971540:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000505 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 05:11:23,365:1622841083.365524:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000505 done,  261/564 
+2021-06-05 05:11:23,366:1622841083.366497:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000506 start,  262/564 
+2021-06-05 05:11:23,367:1622841083.367474:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000506 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 05:24:17,795:1622841857.795805:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000506 done,  262/564 
+2021-06-05 05:24:17,797:1622841857.797759:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000508 start,  263/564 
+2021-06-05 05:24:17,797:1622841857.797759:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000508 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 05:27:26,786:1622842046.786919:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000508 done,  263/564 
+2021-06-05 05:27:26,787:1622842046.787896:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000509 start,  264/564 
+2021-06-05 05:27:26,787:1622842046.787896:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000509 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 05:38:51,859:1622842731.859714:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000509 done,  264/564 
+2021-06-05 05:38:51,860:1622842731.860689:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000510 start,  265/564 
+2021-06-05 05:38:51,860:1622842731.860689:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000510 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 05:43:57,250:1622843037.250287:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000510 done,  265/564 
+2021-06-05 05:43:57,251:1622843037.251259:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000514 start,  266/564 
+2021-06-05 05:43:57,251:1622843037.251259:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000514 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 06:05:18,973:1622844318.973374:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000514 done,  266/564 
+2021-06-05 06:05:18,973:1622844318.973374:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000518 start,  267/564 
+2021-06-05 06:05:18,974:1622844318.974346:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000518 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 06:26:27,383:1622845587.383970:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000518 done,  267/564 
+2021-06-05 06:26:27,384:1622845587.384947:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000525 start,  268/564 
+2021-06-05 06:26:27,385:1622845587.385924:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000525 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 06:29:36,293:1622845776.293918:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000525 done,  268/564 
+2021-06-05 06:29:36,294:1622845776.294895:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000530 start,  269/564 
+2021-06-05 06:29:36,295:1622845776.295870:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000530 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 06:54:47,571:1622847287.571419:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000530 done,  269/564 
+2021-06-05 06:54:47,572:1622847287.572397:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000535 start,  270/564 
+2021-06-05 06:54:47,573:1622847287.573372:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000535 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 07:14:56,603:1622848496.603076:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000535 done,  270/564 
+2021-06-05 07:14:56,604:1622848496.604054:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000536 start,  271/564 
+2021-06-05 07:14:56,605:1622848496.605028:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000536 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 07:45:28,688:1622850328.688985:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000536 done,  271/564 
+2021-06-05 07:45:28,689:1622850328.689962:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000540 start,  272/564 
+2021-06-05 07:45:28,690:1622850328.690944:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000540 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 08:01:45,436:1622851305.436522:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000540 done,  272/564 
+2021-06-05 08:01:45,437:1622851305.437499:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000549 start,  273/564 
+2021-06-05 08:01:45,438:1622851305.438476:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000549 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 08:26:16,642:1622852776.642518:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000549 done,  273/564 
+2021-06-05 08:26:16,643:1622852776.643491:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000551 start,  274/564 
+2021-06-05 08:26:16,644:1622852776.644468:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000551 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 08:34:44,068:1622853284.068278:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000551 done,  274/564 
+2021-06-05 08:34:44,069:1622853284.069257:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000553 start,  275/564 
+2021-06-05 08:34:44,069:1622853284.069257:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000553 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 08:52:49,896:1622854369.896746:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000553 done,  275/564 
+2021-06-05 08:52:49,897:1622854369.897718:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000555 start,  276/564 
+2021-06-05 08:52:49,897:1622854369.897718:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000555 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 09:08:16,056:1622855296.056549:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000555 done,  276/564 
+2021-06-05 09:08:16,057:1622855296.057528:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000556 start,  277/564 
+2021-06-05 09:08:16,058:1622855296.058502:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000556 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 09:22:05,677:1622856125.677158:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000556 done,  277/564 
+2021-06-05 09:22:05,678:1622856125.678138:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000558 start,  278/564 
+2021-06-05 09:22:05,679:1622856125.679111:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000558 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 09:30:24,413:1622856624.413208:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000558 done,  278/564 
+2021-06-05 09:30:24,414:1622856624.414186:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000560 start,  279/564 
+2021-06-05 09:30:24,415:1622856624.415168:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000560 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 09:48:10,159:1622857690.159888:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000560 done,  279/564 
+2021-06-05 09:48:10,160:1622857690.160864:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000561 start,  280/564 
+2021-06-05 09:48:10,161:1622857690.161835:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000561 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 10:03:20,122:1622858600.122382:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000561 done,  280/564 
+2021-06-05 10:03:20,123:1622858600.123359:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000565 start,  281/564 
+2021-06-05 10:03:20,124:1622858600.124336:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000565 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 10:19:47,612:1622859587.612960:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000565 done,  281/564 
+2021-06-05 10:19:47,613:1622859587.613934:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000567 start,  282/564 
+2021-06-05 10:19:47,614:1622859587.614909:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000567 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 10:54:54,380:1622861694.380332:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000567 done,  282/564 
+2021-06-05 10:54:54,382:1622861694.382287:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000571 start,  283/564 
+2021-06-05 10:54:54,383:1622861694.383264:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000571 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 11:11:14,185:1622862674.185520:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000571 done,  283/564 
+2021-06-05 11:11:14,186:1622862674.186497:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000572 start,  284/564 
+2021-06-05 11:11:14,187:1622862674.187473:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000572 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 11:17:08,660:1622863028.660896:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000572 done,  284/564 
+2021-06-05 11:17:08,661:1622863028.661874:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000573 start,  285/564 
+2021-06-05 11:17:08,662:1622863028.662849:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000573 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 11:38:26,160:1622864306.160315:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000573 done,  285/564 
+2021-06-05 11:38:26,161:1622864306.161293:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000577 start,  286/564 
+2021-06-05 11:38:26,162:1622864306.162270:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000577 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 11:43:55,041:1622864635.041836:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000577 done,  286/564 
+2021-06-05 11:43:55,043:1622864635.043790:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000582 start,  287/564 
+2021-06-05 11:43:55,043:1622864635.043790:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000582 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 12:07:11,688:1622866031.688748:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000582 done,  287/564 
+2021-06-05 12:07:11,689:1622866031.689724:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000585 start,  288/564 
+2021-06-05 12:07:11,690:1622866031.690701:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000585 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 12:18:37,460:1622866717.460948:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000585 done,  288/564 
+2021-06-05 12:18:37,461:1622866717.461926:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000588 start,  289/564 
+2021-06-05 12:18:37,462:1622866717.462903:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000588 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 12:31:12,310:1622867472.310036:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000588 done,  289/564 
+2021-06-05 12:31:12,311:1622867472.311014:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000594 start,  290/564 
+2021-06-05 12:31:12,311:1622867472.311014:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000594 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 12:39:42,651:1622867982.651582:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000594 done,  290/564 
+2021-06-05 12:39:42,652:1622867982.652555:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000595 start,  291/564 
+2021-06-05 12:39:42,653:1622867982.653530:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000595 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 12:52:29,079:1622868749.079843:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000595 done,  291/564 
+2021-06-05 12:52:29,080:1622868749.080818:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000602 start,  292/564 
+2021-06-05 12:52:29,081:1622868749.081794:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000602 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 13:02:29,175:1622869349.175221:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000602 done,  292/564 
+2021-06-05 13:02:29,175:1622869349.175221:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000605 start,  293/564 
+2021-06-05 13:02:29,176:1622869349.176193:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000605 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 13:33:59,840:1622871239.840335:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000605 done,  293/564 
+2021-06-05 13:33:59,841:1622871239.841311:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000606 start,  294/564 
+2021-06-05 13:33:59,842:1622871239.842292:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000606 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 13:49:26,997:1622872166.997007:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000606 done,  294/564 
+2021-06-05 13:49:26,998:1622872166.998960:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000609 start,  295/564 
+2021-06-05 13:49:26,999:1622872166.999941:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000609 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 14:02:41,693:1622872961.693957:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000609 done,  295/564 
+2021-06-05 14:02:41,694:1622872961.694934:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000610 start,  296/564 
+2021-06-05 14:02:41,694:1622872961.694934:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000610 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 14:18:31,649:1622873911.649523:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000610 done,  296/564 
+2021-06-05 14:18:31,650:1622873911.650496:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000613 start,  297/564 
+2021-06-05 14:18:31,651:1622873911.651467:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000613 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 14:33:19,844:1622874799.844327:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000613 done,  297/564 
+2021-06-05 14:33:19,846:1622874799.846277:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000615 start,  298/564 
+2021-06-05 14:33:19,847:1622874799.847254:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000615 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 14:45:22,573:1622875522.573571:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000615 done,  298/564 
+2021-06-05 14:45:22,574:1622875522.574548:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000617 start,  299/564 
+2021-06-05 14:45:22,575:1622875522.575524:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000617 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 14:55:22,606:1622876122.606364:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000617 done,  299/564 
+2021-06-05 14:55:22,607:1622876122.607342:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000618 start,  300/564 
+2021-06-05 14:55:22,608:1622876122.608317:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000618 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 15:06:51,104:1622876811.104074:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000618 done,  300/564 
+2021-06-05 15:06:51,105:1622876811.105048:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000619 start,  301/564 
+2021-06-05 15:06:51,106:1622876811.106024:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000619 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 15:19:45,097:1622877585.097744:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000619 done,  301/564 
+2021-06-05 15:19:45,098:1622877585.098721:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000620 start,  302/564 
+2021-06-05 15:19:45,099:1622877585.099694:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000620 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 15:34:13,004:1622878453.004580:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000620 done,  302/564 
+2021-06-05 15:34:13,005:1622878453.005556:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000622 start,  303/564 
+2021-06-05 15:34:13,006:1622878453.006531:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000622 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 15:41:32,252:1622878892.252349:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000622 done,  303/564 
+2021-06-05 15:41:32,253:1622878892.253326:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000623 start,  304/564 
+2021-06-05 15:41:32,254:1622878892.254301:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000623 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 15:49:56,097:1622879396.097836:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000623 done,  304/564 
+2021-06-05 15:49:56,101:1622879396.101738:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000624 start,  305/564 
+2021-06-05 15:49:56,102:1622879396.102713:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000624 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 16:06:53,639:1622880413.639335:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000624 done,  305/564 
+2021-06-05 16:06:53,640:1622880413.640314:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000627 start,  306/564 
+2021-06-05 16:06:53,641:1622880413.641287:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000627 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 16:22:22,604:1622881342.604672:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000627 done,  306/564 
+2021-06-05 16:22:22,605:1622881342.605647:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000629 start,  307/564 
+2021-06-05 16:22:22,606:1622881342.606623:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000629 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 16:44:15,410:1622882655.410682:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000629 done,  307/564 
+2021-06-05 16:44:15,411:1622882655.411659:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000634 start,  308/564 
+2021-06-05 16:44:15,411:1622882655.411659:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000634 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 17:06:44,290:1622884004.290769:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000634 done,  308/564 
+2021-06-05 17:06:44,291:1622884004.291747:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000635 start,  309/564 
+2021-06-05 17:06:44,292:1622884004.292724:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000635 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 17:16:32,782:1622884592.782712:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000635 done,  309/564 
+2021-06-05 17:16:32,783:1622884592.783689:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000636 start,  310/564 
+2021-06-05 17:16:32,784:1622884592.784667:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000636 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 17:31:46,162:1622885506.162050:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000636 done,  310/564 
+2021-06-05 17:31:46,163:1622885506.163021:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000638 start,  311/564 
+2021-06-05 17:31:46,163:1622885506.163994:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000638 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 17:37:26,413:1622885846.413947:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000638 done,  311/564 
+2021-06-05 17:37:26,415:1622885846.415900:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000640 start,  312/564 
+2021-06-05 17:37:26,416:1622885846.416881:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000640 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 18:01:33,383:1622887293.383924:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000640 done,  312/564 
+2021-06-05 18:01:33,384:1622887293.384901:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000641 start,  313/564 
+2021-06-05 18:01:33,384:1622887293.384901:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000641 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 18:12:39,951:1622887959.951032:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000641 done,  313/564 
+2021-06-05 18:12:39,952:1622887959.952009:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000643 start,  314/564 
+2021-06-05 18:12:39,952:1622887959.952991:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000643 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 18:26:37,763:1622888797.763129:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000643 done,  314/564 
+2021-06-05 18:26:37,764:1622888797.764102:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000644 start,  315/564 
+2021-06-05 18:26:37,765:1622888797.765073:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000644 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 18:39:13,698:1622889553.698396:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000644 done,  315/564 
+2021-06-05 18:39:13,699:1622889553.699374:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000645 start,  316/564 
+2021-06-05 18:39:13,699:1622889553.699374:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000645 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 18:48:28,982:1622890108.982250:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000645 done,  316/564 
+2021-06-05 18:48:28,983:1622890108.983228:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000648 start,  317/564 
+2021-06-05 18:48:28,983:1622890108.983228:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000648 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 18:57:04,940:1622890624.940237:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000648 done,  317/564 
+2021-06-05 18:57:04,941:1622890624.941215:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000649 start,  318/564 
+2021-06-05 18:57:04,941:1622890624.941215:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000649 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 19:18:29,934:1622891909.934620:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000649 done,  318/564 
+2021-06-05 19:18:29,935:1622891909.935607:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000652 start,  319/564 
+2021-06-05 19:18:29,935:1622891909.935607:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000652 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 19:40:48,853:1622893248.853230:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000652 done,  319/564 
+2021-06-05 19:40:48,855:1622893248.855179:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000659 start,  320/564 
+2021-06-05 19:40:48,856:1622893248.856156:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000659 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 19:50:57,347:1622893857.347262:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000659 done,  320/564 
+2021-06-05 19:50:57,348:1622893857.348235:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000662 start,  321/564 
+2021-06-05 19:50:57,349:1622893857.349210:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000662 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 20:09:40,825:1622894980.825516:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000662 done,  321/564 
+2021-06-05 20:09:40,826:1622894980.826492:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000665 start,  322/564 
+2021-06-05 20:09:40,827:1622894980.827466:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000665 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 20:30:07,071:1622896207.071378:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000665 done,  322/564 
+2021-06-05 20:30:07,072:1622896207.072355:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000667 start,  323/564 
+2021-06-05 20:30:07,073:1622896207.073331:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000667 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 20:51:41,995:1622897501.995824:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000667 done,  323/564 
+2021-06-05 20:51:41,996:1622897501.996800:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000670 start,  324/564 
+2021-06-05 20:51:41,997:1622897501.997777:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000670 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 21:10:02,802:1622898602.802141:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000670 done,  324/564 
+2021-06-05 21:10:02,804:1622898602.804092:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000673 start,  325/564 
+2021-06-05 21:10:02,805:1622898602.805070:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000673 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 21:15:52,252:1622898952.252918:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000673 done,  325/564 
+2021-06-05 21:15:52,253:1622898952.253893:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000674 start,  326/564 
+2021-06-05 21:15:52,254:1622898952.254868:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000674 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 21:25:10,756:1622899510.756247:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000674 done,  326/564 
+2021-06-05 21:25:10,757:1622899510.757225:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000676 start,  327/564 
+2021-06-05 21:25:10,758:1622899510.758200:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000676 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 21:28:11,392:1622899691.392931:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000676 done,  327/564 
+2021-06-05 21:28:11,393:1622899691.393910:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000678 start,  328/564 
+2021-06-05 21:28:11,394:1622899691.394885:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000678 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 21:45:11,091:1622900711.091038:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000678 done,  328/564 
+2021-06-05 21:45:11,092:1622900711.092016:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000680 start,  329/564 
+2021-06-05 21:45:11,092:1622900711.092991:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000680 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 21:59:28,739:1622901568.739310:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000680 done,  329/564 
+2021-06-05 21:59:28,740:1622901568.740286:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000681 start,  330/564 
+2021-06-05 21:59:28,741:1622901568.741262:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000681 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 22:11:31,247:1622902291.247782:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000681 done,  330/564 
+2021-06-05 22:11:31,248:1622902291.248762:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000682 start,  331/564 
+2021-06-05 22:11:31,249:1622902291.249743:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000682 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 22:15:49,731:1622902549.731103:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000682 done,  331/564 
+2021-06-05 22:15:49,732:1622902549.732081:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000686 start,  332/564 
+2021-06-05 22:15:49,732:1622902549.732081:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000686 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 22:31:07,100:1622903467.100167:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000686 done,  332/564 
+2021-06-05 22:31:07,101:1622903467.101143:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000688 start,  333/564 
+2021-06-05 22:31:07,102:1622903467.102120:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000688 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 22:37:44,775:1622903864.775845:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000688 done,  333/564 
+2021-06-05 22:37:44,776:1622903864.776822:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000693 start,  334/564 
+2021-06-05 22:37:44,778:1622903864.778774:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000693 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 22:52:32,834:1622904752.834077:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000693 done,  334/564 
+2021-06-05 22:52:32,835:1622904752.835054:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000695 start,  335/564 
+2021-06-05 22:52:32,836:1622904752.836032:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000695 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 23:01:00,923:1622905260.923572:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000695 done,  335/564 
+2021-06-05 23:01:00,924:1622905260.924549:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000698 start,  336/564 
+2021-06-05 23:01:00,924:1622905260.924549:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000698 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 23:16:16,457:1622906176.457519:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000698 done,  336/564 
+2021-06-05 23:16:16,458:1622906176.458498:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000699 start,  337/564 
+2021-06-05 23:16:16,458:1622906176.458498:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000699 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 23:28:40,869:1622906920.869959:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000699 done,  337/564 
+2021-06-05 23:28:40,870:1622906920.870934:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000702 start,  338/564 
+2021-06-05 23:28:40,871:1622906920.871905:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000702 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 23:36:53,168:1622907413.168507:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000702 done,  338/564 
+2021-06-05 23:36:53,169:1622907413.169480:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000706 start,  339/564 
+2021-06-05 23:36:53,170:1622907413.170459:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000706 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 23:50:36,524:1622908236.524579:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000706 done,  339/564 
+2021-06-05 23:50:36,525:1622908236.525556:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000733 start,  340/564 
+2021-06-05 23:50:36,526:1622908236.526532:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000733 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 23:53:35,786:1622908415.786200:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000733 done,  340/564 
+2021-06-05 23:53:35,787:1622908415.787178:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000741 start,  341/564 
+2021-06-05 23:53:35,788:1622908415.788155:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000741 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 23:53:57,836:1622908437.836982:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000744 start,  342/564 
+2021-06-05 23:53:57,837:1622908437.837959:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000744 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 23:56:59,208:1622908619.208086:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000744 done,  342/564 
+2021-06-05 23:56:59,209:1622908619.209060:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000746 start,  343/564 
+2021-06-05 23:56:59,210:1622908619.210032:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000746 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-05 23:59:59,049:1622908799.049845:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000746 done,  343/564 
+2021-06-05 23:59:59,050:1622908799.050816:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000748 start,  344/564 
+2021-06-05 23:59:59,051:1622908799.051785:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000748 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 00:04:38,674:1622909078.674672:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000748 done,  344/564 
+2021-06-06 00:04:38,675:1622909078.675648:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000754 start,  345/564 
+2021-06-06 00:04:38,676:1622909078.676618:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000754 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 00:07:38,754:1622909258.754610:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000754 done,  345/564 
+2021-06-06 00:07:38,755:1622909258.755583:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000758 start,  346/564 
+2021-06-06 00:07:38,755:1622909258.755583:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000758 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 00:11:08,218:1622909468.218446:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000758 done,  346/564 
+2021-06-06 00:11:08,219:1622909468.219421:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000791 start,  347/564 
+2021-06-06 00:11:08,220:1622909468.220409:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000791 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 00:14:13,671:1622909653.671522:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000791 done,  347/564 
+2021-06-06 00:14:13,672:1622909653.672504:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000804 start,  348/564 
+2021-06-06 00:14:13,673:1622909653.673481:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000804 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 00:17:09,687:1622909829.687095:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000804 done,  348/564 
+2021-06-06 00:17:09,688:1622909829.688073:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000844 start,  349/564 
+2021-06-06 00:17:09,689:1622909829.689054:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000844 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 00:21:06,125:1622910066.125293:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000844 done,  349/564 
+2021-06-06 00:21:06,126:1622910066.126268:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000850 start,  350/564 
+2021-06-06 00:21:06,127:1622910066.127245:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000850 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 00:27:12,380:1622910432.380281:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000850 done,  350/564 
+2021-06-06 00:27:12,381:1622910432.381258:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000288 start,  351/564 
+2021-06-06 00:27:12,381:1622910432.381258:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000288 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 00:27:33,692:1622910453.692764:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000563 start,  352/564 
+2021-06-06 00:27:33,693:1622910453.693740:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000563 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 00:31:34,197:1622910694.197644:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000563 done,  352/564 
+2021-06-06 00:31:34,198:1622910694.198618:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000813 start,  353/564 
+2021-06-06 00:31:34,199:1622910694.199592:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000813 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 00:35:43,730:1622910943.730830:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000813 done,  353/564 
+2021-06-06 00:35:43,731:1622910943.731807:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000012 start,  354/564 
+2021-06-06 00:35:43,731:1622910943.731807:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000012 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 00:36:07,273:1622910967.273807:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000013 start,  355/564 
+2021-06-06 00:36:07,275:1622910967.275760:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000013 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 00:49:05,678:1622911745.678926:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000013 done,  355/564 
+2021-06-06 00:49:05,679:1622911745.679904:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000016 start,  356/564 
+2021-06-06 00:49:05,680:1622911745.680884:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000016 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 00:52:49,195:1622911969.195406:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000016 done,  356/564 
+2021-06-06 00:52:49,196:1622911969.196382:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000018 start,  357/564 
+2021-06-06 00:52:49,196:1622911969.196382:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000018 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 00:53:12,164:1622911992.164139:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000019 start,  358/564 
+2021-06-06 00:53:12,165:1622911992.165116:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000019 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 00:53:34,782:1622912014.782303:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000020 start,  359/564 
+2021-06-06 00:53:34,783:1622912014.783277:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000020 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 00:59:45,581:1622912385.581034:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000020 done,  359/564 
+2021-06-06 00:59:45,582:1622912385.582012:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000027 start,  360/564 
+2021-06-06 00:59:45,582:1622912385.582012:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000027 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 01:00:08,155:1622912408.155248:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000028 start,  361/564 
+2021-06-06 01:00:08,156:1622912408.156224:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000028 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 01:00:30,321:1622912430.321255:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000029 start,  362/564 
+2021-06-06 01:00:30,322:1622912430.322232:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000029 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 01:00:52,802:1622912452.802693:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000030 start,  363/564 
+2021-06-06 01:00:52,803:1622912452.803669:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000030 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 01:08:39,987:1622912919.987113:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000030 done,  363/564 
+2021-06-06 01:08:39,988:1622912919.988090:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000036 start,  364/564 
+2021-06-06 01:08:39,989:1622912919.989066:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000036 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 01:09:03,591:1622912943.591596:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000037 start,  365/564 
+2021-06-06 01:09:03,592:1622912943.592572:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000037 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 01:09:26,608:1622912966.608192:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000040 start,  366/564 
+2021-06-06 01:09:26,609:1622912966.609173:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000040 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 01:24:12,489:1622913852.489071:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000040 done,  366/564 
+2021-06-06 01:24:12,490:1622913852.490048:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000042 start,  367/564 
+2021-06-06 01:24:12,490:1622913852.490048:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000042 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 01:43:55,662:1622915035.662618:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000042 done,  367/564 
+2021-06-06 01:43:55,664:1622915035.664575:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000043 start,  368/564 
+2021-06-06 01:43:55,665:1622915035.665554:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000043 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 01:44:18,063:1622915058.063982:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000047 start,  369/564 
+2021-06-06 01:44:18,064:1622915058.064963:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000047 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 01:55:04,980:1622915704.980772:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000047 done,  369/564 
+2021-06-06 01:55:04,981:1622915704.981750:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000048 start,  370/564 
+2021-06-06 01:55:04,982:1622915704.982733:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000048 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 01:55:28,265:1622915728.265923:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000049 start,  371/564 
+2021-06-06 01:55:28,266:1622915728.266903:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000049 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 01:55:51,697:1622915751.697571:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000052 start,  372/564 
+2021-06-06 01:55:51,699:1622915751.699526:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000052 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 01:56:15,497:1622915775.497364:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000053 start,  373/564 
+2021-06-06 01:56:15,498:1622915775.498341:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000053 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 02:04:04,139:1622916244.139593:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000053 done,  373/564 
+2021-06-06 02:04:04,140:1622916244.140571:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000056 start,  374/564 
+2021-06-06 02:04:04,140:1622916244.140571:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000056 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 02:04:34,423:1622916274.423754:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000058 start,  375/564 
+2021-06-06 02:04:34,424:1622916274.424731:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000058 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 02:18:15,693:1622917095.693424:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000058 done,  375/564 
+2021-06-06 02:18:15,694:1622917095.694401:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000059 start,  376/564 
+2021-06-06 02:18:15,695:1622917095.695383:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000059 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 02:18:39,704:1622917119.704171:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000061 start,  377/564 
+2021-06-06 02:18:39,705:1622917119.705149:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000061 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 02:27:00,385:1622917620.385814:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000061 done,  377/564 
+2021-06-06 02:27:00,386:1622917620.386792:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000062 start,  378/564 
+2021-06-06 02:27:00,387:1622917620.387768:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000062 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 02:39:42,994:1622918382.994865:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000062 done,  378/564 
+2021-06-06 02:39:42,995:1622918382.995843:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000063 start,  379/564 
+2021-06-06 02:39:42,996:1622918382.996818:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000063 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 02:40:08,132:1622918408.132555:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000064 start,  380/564 
+2021-06-06 02:40:08,134:1622918408.134503:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000064 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 02:51:04,811:1622919064.811240:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000064 done,  380/564 
+2021-06-06 02:51:04,812:1622919064.812215:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000065 start,  381/564 
+2021-06-06 02:51:04,813:1622919064.813188:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000065 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 02:51:29,078:1622919089.078818:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000091 start,  382/564 
+2021-06-06 02:51:29,079:1622919089.079793:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000091 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 02:51:53,613:1622919113.613979:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000096 start,  383/564 
+2021-06-06 02:51:53,614:1622919113.614955:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000096 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 02:52:19,533:1622919139.533906:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000097 start,  384/564 
+2021-06-06 02:52:19,534:1622919139.534883:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000097 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 02:52:43,316:1622919163.316128:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000128 start,  385/564 
+2021-06-06 02:52:43,317:1622919163.317104:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000128 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 02:53:07,207:1622919187.207718:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000129 start,  386/564 
+2021-06-06 02:53:07,208:1622919187.208695:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000129 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 02:53:31,135:1622919211.135442:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000130 start,  387/564 
+2021-06-06 02:53:31,136:1622919211.136424:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000130 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 02:56:39,652:1622919399.652963:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000130 done,  387/564 
+2021-06-06 02:56:39,653:1622919399.653935:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000132 start,  388/564 
+2021-06-06 02:56:39,654:1622919399.654905:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000132 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:00:35,558:1622919635.558117:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000132 done,  388/564 
+2021-06-06 03:00:35,559:1622919635.559093:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000134 start,  389/564 
+2021-06-06 03:00:35,560:1622919635.560069:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000134 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:06:12,684:1622919972.684922:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000134 done,  389/564 
+2021-06-06 03:06:12,685:1622919972.685903:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000135 start,  390/564 
+2021-06-06 03:06:12,686:1622919972.686875:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000135 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:06:37,575:1622919997.575535:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000139 start,  391/564 
+2021-06-06 03:06:37,576:1622919997.576512:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000139 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:07:02,495:1622920022.495450:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000142 start,  392/564 
+2021-06-06 03:07:02,496:1622920022.496424:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000142 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:07:27,652:1622920047.652662:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000146 start,  393/564 
+2021-06-06 03:07:27,653:1622920047.653641:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000146 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:12:53,640:1622920373.640929:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000146 done,  393/564 
+2021-06-06 03:12:53,640:1622920373.640929:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000148 start,  394/564 
+2021-06-06 03:12:53,641:1622920373.641905:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000148 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:13:18,985:1622920398.985657:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000149 start,  395/564 
+2021-06-06 03:13:18,986:1622920398.986634:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000149 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:13:45,791:1622920425.791320:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000153 start,  396/564 
+2021-06-06 03:13:45,792:1622920425.792298:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000153 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:17:55,287:1622920675.287493:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000153 done,  396/564 
+2021-06-06 03:17:55,288:1622920675.288468:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000154 start,  397/564 
+2021-06-06 03:17:55,289:1622920675.289446:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000154 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:18:20,681:1622920700.681042:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000156 start,  398/564 
+2021-06-06 03:18:20,682:1622920700.682998:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000156 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:32:02,719:1622921522.719872:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000156 done,  398/564 
+2021-06-06 03:32:02,720:1622921522.720844:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000158 start,  399/564 
+2021-06-06 03:32:02,721:1622921522.721816:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000158 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:32:25,746:1622921545.746164:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000161 start,  400/564 
+2021-06-06 03:32:25,747:1622921545.747139:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000161 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:32:48,544:1622921568.544947:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000164 start,  401/564 
+2021-06-06 03:32:48,545:1622921568.545924:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000164 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:43:57,324:1622922237.324953:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000164 done,  401/564 
+2021-06-06 03:43:57,325:1622922237.325932:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000165 start,  402/564 
+2021-06-06 03:43:57,325:1622922237.325932:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000165 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:44:20,050:1622922260.050528:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000166 start,  403/564 
+2021-06-06 03:44:20,051:1622922260.051506:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000166 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:47:38,800:1622922458.800337:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000166 done,  403/564 
+2021-06-06 03:47:38,801:1622922458.801310:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000168 start,  404/564 
+2021-06-06 03:47:38,802:1622922458.802280:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000168 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:48:02,179:1622922482.179220:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000169 start,  405/564 
+2021-06-06 03:48:02,183:1622922482.183127:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000169 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:48:25,619:1622922505.619638:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000172 start,  406/564 
+2021-06-06 03:48:25,620:1622922505.620615:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000172 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:48:49,152:1622922529.152828:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000176 start,  407/564 
+2021-06-06 03:48:49,153:1622922529.153807:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000176 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:49:12,560:1622922552.560065:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000178 start,  408/564 
+2021-06-06 03:49:12,561:1622922552.561038:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000178 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:55:08,473:1622922908.473119:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000178 done,  408/564 
+2021-06-06 03:55:08,474:1622922908.474098:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000179 start,  409/564 
+2021-06-06 03:55:08,475:1622922908.475073:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000179 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:55:31,155:1622922931.155733:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000185 start,  410/564 
+2021-06-06 03:55:31,156:1622922931.156708:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000185 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:55:53,859:1622922953.859837:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000187 start,  411/564 
+2021-06-06 03:55:53,860:1622922953.860809:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000187 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:56:16,555:1622922976.555133:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000192 start,  412/564 
+2021-06-06 03:56:16,556:1622922976.556109:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000192 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 03:59:42,357:1622923182.357781:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000192 done,  412/564 
+2021-06-06 03:59:42,358:1622923182.358754:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000196 start,  413/564 
+2021-06-06 03:59:42,359:1622923182.359725:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000196 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 04:00:05,875:1622923205.875356:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000201 start,  414/564 
+2021-06-06 04:00:05,876:1622923205.876333:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000201 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 04:00:28,920:1622923228.920288:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000202 start,  415/564 
+2021-06-06 04:00:28,921:1622923228.921265:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000202 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 04:00:51,933:1622923251.933963:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000205 start,  416/564 
+2021-06-06 04:00:51,934:1622923251.934943:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000205 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 04:01:15,011:1622923275.011113:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000210 start,  417/564 
+2021-06-06 04:01:15,012:1622923275.012090:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000210 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 04:01:38,239:1622923298.239632:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000211 start,  418/564 
+2021-06-06 04:01:38,241:1622923298.241588:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000211 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 04:02:01,326:1622923321.326549:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000213 start,  419/564 
+2021-06-06 04:02:01,326:1622923321.326549:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000213 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 04:02:24,080:1622923344.080408:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000214 start,  420/564 
+2021-06-06 04:02:24,080:1622923344.080408:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000214 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 04:02:46,976:1622923366.976751:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000216 start,  421/564 
+2021-06-06 04:02:46,977:1622923366.977733:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000216 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 04:07:52,120:1622923672.120638:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000216 done,  421/564 
+2021-06-06 04:07:52,121:1622923672.121614:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000217 start,  422/564 
+2021-06-06 04:07:52,122:1622923672.122586:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000217 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 04:08:15,056:1622923695.056184:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000223 start,  423/564 
+2021-06-06 04:08:15,058:1622923695.058132:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000223 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 04:19:51,810:1622924391.810796:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000223 done,  423/564 
+2021-06-06 04:19:51,811:1622924391.811778:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000227 start,  424/564 
+2021-06-06 04:19:51,811:1622924391.811778:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000227 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 04:25:53,201:1622924753.201381:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000227 done,  424/564 
+2021-06-06 04:25:53,202:1622924753.202366:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000229 start,  425/564 
+2021-06-06 04:25:53,202:1622924753.202366:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000229 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 04:33:23,320:1622925203.320564:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000229 done,  425/564 
+2021-06-06 04:33:23,321:1622925203.321540:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000232 start,  426/564 
+2021-06-06 04:33:23,322:1622925203.322519:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000232 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 04:42:28,676:1622925748.676069:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000232 done,  426/564 
+2021-06-06 04:42:28,677:1622925748.677047:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000244 start,  427/564 
+2021-06-06 04:42:28,678:1622925748.678024:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000244 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 04:47:30,968:1622926050.968083:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000244 done,  427/564 
+2021-06-06 04:47:30,969:1622926050.969069:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000245 start,  428/564 
+2021-06-06 04:47:30,969:1622926050.969069:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000245 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 04:55:45,827:1622926545.827314:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000245 done,  428/564 
+2021-06-06 04:55:45,827:1622926545.827314:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000246 start,  429/564 
+2021-06-06 04:55:45,828:1622926545.828298:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000246 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 04:56:08,543:1622926568.543123:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000250 start,  430/564 
+2021-06-06 04:56:08,544:1622926568.544100:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000250 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 04:56:30,977:1622926590.977689:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000253 start,  431/564 
+2021-06-06 04:56:30,978:1622926590.978665:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000253 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 04:59:28,774:1622926768.774520:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000253 done,  431/564 
+2021-06-06 04:59:28,775:1622926768.775497:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000256 start,  432/564 
+2021-06-06 04:59:28,776:1622926768.776469:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000256 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 04:59:51,733:1622926791.733495:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000259 start,  433/564 
+2021-06-06 04:59:51,734:1622926791.734470:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000259 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:03:37,098:1622927017.098640:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000259 done,  433/564 
+2021-06-06 05:03:37,099:1622927017.099620:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000266 start,  434/564 
+2021-06-06 05:03:37,100:1622927017.100596:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000266 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:06:27,724:1622927187.724551:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000266 done,  434/564 
+2021-06-06 05:06:27,725:1622927187.725529:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000268 start,  435/564 
+2021-06-06 05:06:27,726:1622927187.726508:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000268 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:11:29,172:1622927489.172742:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000268 done,  435/564 
+2021-06-06 05:11:29,173:1622927489.173719:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000269 start,  436/564 
+2021-06-06 05:11:29,174:1622927489.174694:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000269 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:16:08,997:1622927768.997824:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000269 done,  436/564 
+2021-06-06 05:16:08,998:1622927768.998802:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000273 start,  437/564 
+2021-06-06 05:16:08,998:1622927768.998802:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000273 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:16:31,881:1622927791.881628:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000274 start,  438/564 
+2021-06-06 05:16:31,882:1622927791.882605:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000274 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:22:09,784:1622928129.784912:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000274 done,  438/564 
+2021-06-06 05:22:09,785:1622928129.785890:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000277 start,  439/564 
+2021-06-06 05:22:09,786:1622928129.786865:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000277 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:22:32,222:1622928152.222318:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000278 start,  440/564 
+2021-06-06 05:22:32,223:1622928152.223296:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000278 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:22:54,499:1622928174.499664:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000279 start,  441/564 
+2021-06-06 05:22:54,500:1622928174.500639:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000279 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:23:16,666:1622928196.666651:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000280 start,  442/564 
+2021-06-06 05:23:16,667:1622928196.667636:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000280 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:26:44,108:1622928404.108082:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000280 done,  442/564 
+2021-06-06 05:26:44,109:1622928404.109058:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000281 start,  443/564 
+2021-06-06 05:26:44,110:1622928404.110035:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000281 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:27:07,103:1622928427.103203:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000283 start,  444/564 
+2021-06-06 05:27:07,104:1622928427.104180:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000283 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:34:59,182:1622928899.182097:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000283 done,  444/564 
+2021-06-06 05:34:59,182:1622928899.182097:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000297 start,  445/564 
+2021-06-06 05:34:59,183:1622928899.183071:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000297 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:35:22,117:1622928922.117630:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000302 start,  446/564 
+2021-06-06 05:35:22,118:1622928922.118609:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000302 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:35:44,566:1622928944.566838:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000316 start,  447/564 
+2021-06-06 05:35:44,567:1622928944.567814:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000316 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:39:38,818:1622929178.818726:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000316 done,  447/564 
+2021-06-06 05:39:38,819:1622929178.819703:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000320 start,  448/564 
+2021-06-06 05:39:38,819:1622929178.819703:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000320 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:40:00,827:1622929200.827517:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000331 start,  449/564 
+2021-06-06 05:40:00,828:1622929200.828496:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000331 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:40:22,774:1622929222.774781:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000334 start,  450/564 
+2021-06-06 05:40:22,775:1622929222.775761:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000334 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:48:47,568:1622929727.568800:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000334 done,  450/564 
+2021-06-06 05:48:47,569:1622929727.569776:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000337 start,  451/564 
+2021-06-06 05:48:47,570:1622929727.570750:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000337 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:55:27,205:1622930127.205347:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000337 done,  451/564 
+2021-06-06 05:55:27,206:1622930127.206324:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000338 start,  452/564 
+2021-06-06 05:55:27,207:1622930127.207298:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000338 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:55:49,879:1622930149.879164:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000355 start,  453/564 
+2021-06-06 05:55:49,881:1622930149.881117:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000355 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:56:12,833:1622930172.833267:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000358 start,  454/564 
+2021-06-06 05:56:12,834:1622930172.834244:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000358 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:56:35,723:1622930195.723876:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000360 start,  455/564 
+2021-06-06 05:56:35,724:1622930195.724853:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000360 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:56:58,867:1622930218.867422:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000361 start,  456/564 
+2021-06-06 05:56:58,868:1622930218.868401:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000361 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 05:57:21,550:1622930241.550032:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000363 start,  457/564 
+2021-06-06 05:57:21,551:1622930241.551011:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000363 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 06:02:32,804:1622930552.804866:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000363 done,  457/564 
+2021-06-06 06:02:32,805:1622930552.805842:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000365 start,  458/564 
+2021-06-06 06:02:32,806:1622930552.806818:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000365 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 06:07:42,286:1622930862.286349:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000365 done,  458/564 
+2021-06-06 06:07:42,287:1622930862.287323:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000368 start,  459/564 
+2021-06-06 06:07:42,288:1622930862.288296:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000368 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 06:08:05,349:1622930885.349823:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000369 start,  460/564 
+2021-06-06 06:08:05,351:1622930885.351781:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000369 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 06:10:56,828:1622931056.828363:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000369 done,  460/564 
+2021-06-06 06:10:56,829:1622931056.829341:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000375 start,  461/564 
+2021-06-06 06:10:56,830:1622931056.830309:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000375 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 06:11:18,829:1622931078.829322:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000376 start,  462/564 
+2021-06-06 06:11:18,830:1622931078.830299:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000376 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 06:11:40,762:1622931100.762913:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000378 start,  463/564 
+2021-06-06 06:11:40,763:1622931100.763887:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000378 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 06:12:02,522:1622931122.522666:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000379 start,  464/564 
+2021-06-06 06:12:02,523:1622931122.523648:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000379 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 06:19:33,836:1622931573.836115:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000379 done,  464/564 
+2021-06-06 06:19:33,837:1622931573.837095:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000380 start,  465/564 
+2021-06-06 06:19:33,838:1622931573.838069:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000380 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 06:41:03,826:1622932863.826341:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000380 done,  465/564 
+2021-06-06 06:41:03,827:1622932863.827323:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000384 start,  466/564 
+2021-06-06 06:41:03,827:1622932863.827323:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000384 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 06:41:26,963:1622932886.963060:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000389 start,  467/564 
+2021-06-06 06:41:26,965:1622932886.965014:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000389 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 06:41:49,990:1622932909.990407:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000393 start,  468/564 
+2021-06-06 06:41:49,991:1622932909.991384:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000393 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 06:45:56,481:1622933156.481621:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000393 done,  468/564 
+2021-06-06 06:45:56,482:1622933156.482594:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000398 start,  469/564 
+2021-06-06 06:45:56,482:1622933156.482594:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000398 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 06:51:22,778:1622933482.778478:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000398 done,  469/564 
+2021-06-06 06:51:22,779:1622933482.779456:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000399 start,  470/564 
+2021-06-06 06:51:22,780:1622933482.780427:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000399 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 06:51:45,714:1622933505.714988:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000402 start,  471/564 
+2021-06-06 06:51:45,715:1622933505.715964:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000402 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 06:52:08,770:1622933528.770648:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000408 start,  472/564 
+2021-06-06 06:52:08,771:1622933528.771626:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000408 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 06:52:31,368:1622933551.368204:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000410 start,  473/564 
+2021-06-06 06:52:31,369:1622933551.369181:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000410 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 06:56:46,356:1622933806.356443:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000410 done,  473/564 
+2021-06-06 06:56:46,357:1622933806.357421:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000414 start,  474/564 
+2021-06-06 06:56:46,357:1622933806.357421:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000414 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 06:57:08,549:1622933828.549803:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000415 start,  475/564 
+2021-06-06 06:57:08,550:1622933828.550780:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000415 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:03:07,390:1622934187.390339:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000415 done,  475/564 
+2021-06-06 07:03:07,391:1622934187.391313:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000416 start,  476/564 
+2021-06-06 07:03:07,392:1622934187.392289:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000416 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:03:30,880:1622934210.880565:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000425 start,  477/564 
+2021-06-06 07:03:30,882:1622934210.882513:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000425 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:03:54,262:1622934234.262389:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000433 start,  478/564 
+2021-06-06 07:03:54,263:1622934234.263365:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000433 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:07:24,707:1622934444.707607:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000433 done,  478/564 
+2021-06-06 07:07:24,708:1622934444.708586:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000435 start,  479/564 
+2021-06-06 07:07:24,709:1622934444.709553:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000435 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:07:48,686:1622934468.686061:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000436 start,  480/564 
+2021-06-06 07:07:48,687:1622934468.687038:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000436 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:08:12,853:1622934492.853047:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000437 start,  481/564 
+2021-06-06 07:08:12,854:1622934492.854023:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000437 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:08:36,379:1622934516.379410:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000439 start,  482/564 
+2021-06-06 07:08:36,380:1622934516.380387:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000439 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:08:59,757:1622934539.757337:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000447 start,  483/564 
+2021-06-06 07:08:59,758:1622934539.758314:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000447 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:09:23,434:1622934563.434093:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000451 start,  484/564 
+2021-06-06 07:09:23,435:1622934563.435069:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000451 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:09:47,229:1622934587.229988:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000452 start,  485/564 
+2021-06-06 07:09:47,230:1622934587.230965:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000452 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:10:11,683:1622934611.683111:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000455 start,  486/564 
+2021-06-06 07:10:11,684:1622934611.684090:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000455 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:10:35,815:1622934635.815923:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000456 start,  487/564 
+2021-06-06 07:10:35,816:1622934635.816902:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000456 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:10:59,196:1622934659.196785:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000457 start,  488/564 
+2021-06-06 07:10:59,197:1622934659.197759:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000457 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:17:37,519:1622935057.519756:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000457 done,  488/564 
+2021-06-06 07:17:37,520:1622935057.520732:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000461 start,  489/564 
+2021-06-06 07:17:37,521:1622935057.521708:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000461 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:33:00,072:1622935980.072333:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000461 done,  489/564 
+2021-06-06 07:33:00,073:1622935980.073308:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000465 start,  490/564 
+2021-06-06 07:33:00,074:1622935980.074284:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000465 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:33:23,221:1622936003.221725:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000467 start,  491/564 
+2021-06-06 07:33:23,222:1622936003.222702:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000467 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:36:14,517:1622936174.517560:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000467 done,  491/564 
+2021-06-06 07:36:14,518:1622936174.518535:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000471 start,  492/564 
+2021-06-06 07:36:14,519:1622936174.519513:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000471 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:36:37,724:1622936197.724577:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000473 start,  493/564 
+2021-06-06 07:36:37,725:1622936197.725554:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000473 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:37:01,103:1622936221.103472:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000476 start,  494/564 
+2021-06-06 07:37:01,104:1622936221.104449:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000476 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:37:23,767:1622936243.767526:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000477 start,  495/564 
+2021-06-06 07:37:23,768:1622936243.768501:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000477 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:37:46,605:1622936266.605406:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000480 start,  496/564 
+2021-06-06 07:37:46,606:1622936266.606383:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000480 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:38:09,853:1622936289.853443:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000482 start,  497/564 
+2021-06-06 07:38:09,854:1622936289.854420:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000482 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:38:32,918:1622936312.918871:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000484 start,  498/564 
+2021-06-06 07:38:32,919:1622936312.919842:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000484 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:38:55,869:1622936335.869058:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000487 start,  499/564 
+2021-06-06 07:38:55,871:1622936335.871012:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000487 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:48:01,732:1622936881.732496:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000487 done,  499/564 
+2021-06-06 07:48:01,733:1622936881.733466:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000512 start,  500/564 
+2021-06-06 07:48:01,734:1622936881.734437:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000512 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:48:26,002:1622936906.002987:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000515 start,  501/564 
+2021-06-06 07:48:26,003:1622936906.003962:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000515 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:48:50,668:1622936930.668996:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000517 start,  502/564 
+2021-06-06 07:48:50,669:1622936930.669972:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000517 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:51:52,390:1622937112.390644:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000517 done,  502/564 
+2021-06-06 07:51:52,391:1622937112.391621:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000519 start,  503/564 
+2021-06-06 07:51:52,392:1622937112.392597:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000519 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:52:15,539:1622937135.539078:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000523 start,  504/564 
+2021-06-06 07:52:15,540:1622937135.540057:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000523 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:52:39,177:1622937159.177747:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000524 start,  505/564 
+2021-06-06 07:52:39,178:1622937159.178723:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000524 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:55:32,055:1622937332.055654:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000524 done,  505/564 
+2021-06-06 07:55:32,056:1622937332.056632:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000526 start,  506/564 
+2021-06-06 07:55:32,057:1622937332.057610:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000526 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:55:55,173:1622937355.173816:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000532 start,  507/564 
+2021-06-06 07:55:55,174:1622937355.174793:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000532 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:56:18,426:1622937378.426746:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000544 start,  508/564 
+2021-06-06 07:56:18,427:1622937378.427720:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000544 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 07:56:41,941:1622937401.941393:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000546 start,  509/564 
+2021-06-06 07:56:41,942:1622937401.942366:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000546 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 08:09:58,587:1622938198.587703:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000546 done,  509/564 
+2021-06-06 08:09:58,589:1622938198.589657:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000552 start,  510/564 
+2021-06-06 08:09:58,590:1622938198.590633:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000552 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 08:23:06,265:1622938986.265246:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000552 done,  510/564 
+2021-06-06 08:23:06,267:1622938986.267198:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000568 start,  511/564 
+2021-06-06 08:23:06,268:1622938986.268177:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000568 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 08:29:53,909:1622939393.909825:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000568 done,  511/564 
+2021-06-06 08:29:53,910:1622939393.910803:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000574 start,  512/564 
+2021-06-06 08:29:53,911:1622939393.911782:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000574 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 08:38:34,766:1622939914.766338:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000574 done,  512/564 
+2021-06-06 08:38:34,768:1622939914.768292:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000586 start,  513/564 
+2021-06-06 08:38:34,769:1622939914.769265:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000586 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 08:38:56,876:1622939936.876678:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000592 start,  514/564 
+2021-06-06 08:38:56,877:1622939936.877661:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000592 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 08:39:19,071:1622939959.071985:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000593 start,  515/564 
+2021-06-06 08:39:19,072:1622939959.072960:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000593 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 08:46:47,326:1622940407.326094:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000593 done,  515/564 
+2021-06-06 08:46:47,327:1622940407.327072:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000632 start,  516/564 
+2021-06-06 08:46:47,328:1622940407.328049:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000632 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 08:55:10,051:1622940910.051328:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000632 done,  516/564 
+2021-06-06 08:55:10,052:1622940910.052303:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000633 start,  517/564 
+2021-06-06 08:55:10,053:1622940910.053280:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000633 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 09:03:26,655:1622941406.655003:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000633 done,  517/564 
+2021-06-06 09:03:26,657:1622941406.657925:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000651 start,  518/564 
+2021-06-06 09:03:26,658:1622941406.658906:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000651 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 09:03:49,225:1622941429.225309:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000654 start,  519/564 
+2021-06-06 09:03:49,226:1622941429.226294:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000654 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 09:04:11,438:1622941451.438202:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000656 start,  520/564 
+2021-06-06 09:04:11,439:1622941451.439178:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000656 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 09:07:55,399:1622941675.399158:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000656 done,  520/564 
+2021-06-06 09:07:55,400:1622941675.400133:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000658 start,  521/564 
+2021-06-06 09:07:55,401:1622941675.401107:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000658 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 09:14:54,817:1622942094.817113:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000658 done,  521/564 
+2021-06-06 09:14:54,818:1622942094.818087:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000666 start,  522/564 
+2021-06-06 09:14:54,819:1622942094.819059:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000666 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 09:15:18,694:1622942118.694056:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000672 start,  523/564 
+2021-06-06 09:15:18,695:1622942118.695031:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000672 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 09:15:41,621:1622942141.621789:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000685 start,  524/564 
+2021-06-06 09:15:41,622:1622942141.622764:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000685 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 09:16:04,684:1622942164.684285:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000696 start,  525/564 
+2021-06-06 09:16:04,685:1622942164.685261:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000696 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 09:21:46,708:1622942506.708499:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000696 done,  525/564 
+2021-06-06 09:21:46,709:1622942506.709475:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000708 start,  526/564 
+2021-06-06 09:21:46,710:1622942506.710448:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000708 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 09:35:20,113:1622943320.113714:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000708 done,  526/564 
+2021-06-06 09:35:20,114:1622943320.114691:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000711 start,  527/564 
+2021-06-06 09:35:20,115:1622943320.115668:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000711 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 09:35:42,510:1622943342.510201:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000727 start,  528/564 
+2021-06-06 09:35:42,511:1622943342.511178:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000727 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 09:36:05,110:1622943365.110788:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000057 start,  529/564 
+2021-06-06 09:36:05,111:1622943365.111765:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000057 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 09:45:10,015:1622943910.015970:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000057 done,  529/564 
+2021-06-06 09:45:10,016:1622943910.016945:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000174 start,  530/564 
+2021-06-06 09:45:10,017:1622943910.017918:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000174 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 09:57:44,908:1622944664.908351:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000174 done,  530/564 
+2021-06-06 09:57:44,909:1622944664.909328:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000182 start,  531/564 
+2021-06-06 09:57:44,910:1622944664.910305:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000182 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 10:14:08,206:1622945648.206250:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000182 done,  531/564 
+2021-06-06 10:14:08,207:1622945648.207230:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000335 start,  532/564 
+2021-06-06 10:14:08,208:1622945648.208212:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000335 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 10:28:21,882:1622946501.882171:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000335 done,  532/564 
+2021-06-06 10:28:21,883:1622946501.883148:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000406 start,  533/564 
+2021-06-06 10:28:21,883:1622946501.883148:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000406 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 10:36:16,152:1622946976.152445:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000406 done,  533/564 
+2021-06-06 10:36:16,153:1622946976.153420:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000421 start,  534/564 
+2021-06-06 10:36:16,154:1622946976.154390:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000421 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 10:43:47,584:1622947427.584058:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000421 done,  534/564 
+2021-06-06 10:43:47,585:1622947427.585035:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000466 start,  535/564 
+2021-06-06 10:43:47,586:1622947427.586012:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000466 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 11:07:36,017:1622948856.017542:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000466 done,  535/564 
+2021-06-06 11:07:36,018:1622948856.018518:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000531 start,  536/564 
+2021-06-06 11:07:36,019:1622948856.019491:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000531 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 11:21:23,115:1622949683.115849:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000531 done,  536/564 
+2021-06-06 11:21:23,117:1622949683.117802:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000600 start,  537/564 
+2021-06-06 11:21:23,118:1622949683.118784:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000600 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 11:27:10,514:1622950030.514175:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000600 done,  537/564 
+2021-06-06 11:27:10,515:1622950030.515147:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000639 start,  538/564 
+2021-06-06 11:27:10,516:1622950030.516121:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000639 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 11:27:33,641:1622950053.641017:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000690 start,  539/564 
+2021-06-06 11:27:33,642:1622950053.642965:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000690 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 11:37:09,585:1622950629.585983:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000690 done,  539/564 
+2021-06-06 11:37:09,586:1622950629.586957:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000751 start,  540/564 
+2021-06-06 11:37:09,587:1622950629.587935:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000751 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 11:41:19,693:1622950879.693345:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000751 done,  540/564 
+2021-06-06 11:41:19,694:1622950879.694322:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000809 start,  541/564 
+2021-06-06 11:41:19,694:1622950879.694322:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000809 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 11:44:19,305:1622951059.305565:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK500A20100000809 done,  541/564 
+2021-06-06 11:44:19,306:1622951059.306542:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000039 start,  542/564 
+2021-06-06 11:44:19,307:1622951059.307518:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000039 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 11:50:37,793:1622951437.793747:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000039 done,  542/564 
+2021-06-06 11:50:37,794:1622951437.794728:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000060 start,  543/564 
+2021-06-06 11:50:37,795:1622951437.795699:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000060 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 11:51:01,357:1622951461.357226:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000127 start,  544/564 
+2021-06-06 11:51:01,358:1622951461.358200:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000127 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 11:51:24,465:1622951484.465613:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000140 start,  545/564 
+2021-06-06 11:51:24,466:1622951484.466589:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000140 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 11:51:47,574:1622951507.574961:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000152 start,  546/564 
+2021-06-06 11:51:47,575:1622951507.575938:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000152 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 11:54:41,209:1622951681.209546:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000152 done,  546/564 
+2021-06-06 11:54:41,210:1622951681.210523:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000157 start,  547/564 
+2021-06-06 11:54:41,210:1622951681.210523:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000157 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 11:55:03,731:1622951703.731028:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000207 start,  548/564 
+2021-06-06 11:55:03,732:1622951703.732003:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000207 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 11:55:26,379:1622951726.379459:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000243 start,  549/564 
+2021-06-06 11:55:26,381:1622951726.381418:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000243 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 11:55:48,869:1622951748.869690:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000251 start,  550/564 
+2021-06-06 11:55:48,870:1622951748.870666:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000251 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 11:56:11,469:1622951771.469281:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000258 start,  551/564 
+2021-06-06 11:56:11,470:1622951771.470260:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000258 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 11:56:33,773:1622951793.773949:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000311 start,  552/564 
+2021-06-06 11:56:33,774:1622951793.774925:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000311 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 11:56:56,076:1622951816.076667:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000312 start,  553/564 
+2021-06-06 11:56:56,077:1622951816.077644:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000312 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 12:00:00,817:1622952000.817736:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000312 done,  553/564 
+2021-06-06 12:00:00,818:1622952000.818705:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000314 start,  554/564 
+2021-06-06 12:00:00,819:1622952000.819680:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000314 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 12:00:24,423:1622952024.423194:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000401 start,  555/564 
+2021-06-06 12:00:24,425:1622952024.425147:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000401 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 12:00:47,718:1622952047.718112:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000495 start,  556/564 
+2021-06-06 12:00:47,719:1622952047.719090:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000495 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 12:01:11,220:1622952071.220064:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000521 start,  557/564 
+2021-06-06 12:01:11,221:1622952071.221041:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000521 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 12:01:34,403:1622952094.403665:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000611 start,  558/564 
+2021-06-06 12:01:34,404:1622952094.404642:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000611 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 12:01:57,107:1622952117.107758:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000224 start,  559/564 
+2021-06-06 12:01:57,108:1622952117.108735:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000224 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 12:21:42,693:1622953302.693556:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000224 done,  559/564 
+2021-06-06 12:21:42,694:1622953302.694533:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000339 start,  560/564 
+2021-06-06 12:21:42,695:1622953302.695512:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000339 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 12:29:31,724:1622953771.724631:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000339 done,  560/564 
+2021-06-06 12:29:31,725:1622953771.725607:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000428 start,  561/564 
+2021-06-06 12:29:31,726:1622953771.726585:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000428 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 12:29:54,609:1622953794.609391:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000241 start,  562/564 
+2021-06-06 12:29:54,610:1622953794.610371:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000241 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 12:30:17,324:1622953817.324223:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000267 start,  563/564 
+2021-06-06 12:30:17,325:1622953817.325199:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000267 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start
+2021-06-06 12:30:40,364:1622953840.364250:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000282 start,  564/564 
+2021-06-06 12:30:40,365:1622953840.365226:day_sta:<ipython-input-1-6389bf0ba68a>:<module>:INFO:PK50001A100000282 :2020-01-01 00:00:00 to 2021-06-01 00:00:00 start

+ 143 - 143
LIB/FRONTEND/day_sta.py

@@ -1,143 +1,143 @@
-__author__ = 'Wang Liming'
-
-# 每日指标统计函数
-import CONFIGURE.PathSetting as PathSetting
-import sys
-sys.path.append(PathSetting.backend_path)
-sys.path.append(PathSetting.middle_path)
-import DBManager
-import Tools
-import DataPreProcess
-import IndexStaByPeriod
-import Log
-import IndexStaByPeriod
-import importlib
-import datetime
-import os
-import pandas as pd
-import time
-importlib.reload(IndexStaByPeriod)
-
-dbManager = DBManager.DBManager()
-dataPrePro = DataPreProcess.DataPreProcess()
-indexPerSta = IndexStaByPeriod.IndexStaByPeriod()
-
-# log 文件配置
-myLog = Log.Mylog('day_sta')
-myLog.set_file_hl(file_name=r'D:\Platform\platform\FRONTEND\day_sta\day_sta.log', log_level='info')
-myLog.set_stream_hl(log_level='info')
-logger = myLog.get_logger()
-logger.info(str(os.getpid()))
-
-# sn文件读取
-sn_list = list(pd.read_excel('D:\Platform\platform\苏州电池列表.xlsx')['sn'])
-sn_list.extend(list(pd.read_excel('D:\Platform\platform\骑享北京6040电池包统计更新20210407.xlsx')['SN号']))
-
-sn = sn_list[0]
-
-# 字段设置及结果文件生成
-columns = ['sn', 'time',  'sumDriveTime', 'sumDriveSoc', 'sumDriveAh', 'sumDriveEnergy']
-st = datetime.datetime.strptime('00:00:00', '%H:%M:%S')
-for i in range(96):
-    et = st + datetime.timedelta(minutes=15)
-    columns.append(st.strftime('%H:%M') + '-' + et.strftime('%H:%M'))
-    st = et
-result_path = r'D:\Platform\platform\FRONTEND\day_sta\result.csv'
-df_res = pd.DataFrame(columns=columns)
-if not os.path.exists(result_path):
-    df_res.to_csv(result_path, index=False)
-    
-# 时间范围设置
-start_time = '{} 00:00:00'.format('2020-01-01')
-end_time = '{} 00:00:00'.format('2021-06-01')
-sta_days = (datetime.datetime.strptime(end_time, '%Y-%m-%d %H:%M:%S') - datetime.datetime.strptime(start_time, '%Y-%m-%d %H:%M:%S')).days
-
-count= 0
-sn_result = {}
-for sn in sn_list[:]:
-    count += 1
-    logger.info('{} start,  {}/{} '.format(sn, str(count), str(len(sn_list))))
-    if sn[2:5] == '500':
-        cap = 40
-    elif sn[2:5] == '504':
-        cap = 55
-    else:
-        logger.info('{} cap error'.format(sn))
-        cap = None
-        continue
-        
-    sn_result.update({'sn':sn})
-    logger.info('{} :{} to {} start'.format(sn, str(start_time), str(end_time)))
-    
-    # 获取数据
-    df_bms, df_gps = dbManager.get_data(sn=sn, start_time=start_time, end_time=end_time, gps_switch=True, mode=0)
-    if df_bms.empty:
-        continue
-    # 数据预处理
-    
-    # 时间完全相同的数据仅保留一行
-    df_bms_pro, df_gps_pro = dataPrePro.time_filter(df_bms, df_gps)
-    
-    # bms数据按照电流和状态分段, 然后在状态分段内部,根据时间跳变继续分段(解决段内数据丢失)
-    df_bms_pro = dataPrePro.data_split_by_status(df_bms_pro)
-    df_bms_pro = dataPrePro.data_split_by_time(df_bms_pro)
-
-    # bms数据将两次充电间的状态合并
-    df_bms_pro = dataPrePro.combine_drive_stand(df_bms_pro)
-    # bms 数据计算行车和充电开始前后的静置时间
-    df_bms_pro = dataPrePro.cal_stand_time(df_bms_pro)
-    # gps 数据可靠性判断, 并增加里程和速度至gps数据(根据未合并的数据段判断)
-    df_bms_pro, df_gps_pro, res_record= dataPrePro.gps_data_judge(df_bms_pro, df_gps_pro)
-    # gps 数据可靠性判断, 并增加里程和速度至gps数据(根据已合并的数据段判断)
-    df_bms_pro, df_gps_pro, res_record= dataPrePro.data_gps_judge_after_combine(df_bms_pro, df_gps_pro)
-    
-    for sta_day in range(sta_days):
-        try:
-            st_ = datetime.datetime.strptime(start_time, '%Y-%m-%d %H:%M:%S') + datetime.timedelta(days=sta_day)
-            et_ =datetime.datetime.strptime(start_time, '%Y-%m-%d %H:%M:%S') + datetime.timedelta(days=sta_day+1)
-
-        # 按天统计指标
-            sn_result.update({'time':st_.strftime('%Y-%m-%d')})
-
-            df_bms_period = df_bms_pro[(df_bms_pro['时间戳'] > st_.strftime('%Y-%m-%d %H:%M:%S')) & (df_bms_pro['时间戳'] <= et_.strftime('%Y-%m-%d %H:%M:%S'))]
-            #df_gps_period = df_gps_pro[(df_gps_pro['时间戳'] > st_.strftime('%Y-%m-%d %H:%M:%S')) & (df_gps_pro['时间戳'] <= et_.strftime('%Y-%m-%d %H:%M:%S'))]
-            sn_result.update({'sumDriveTime':[indexPerSta.drive_time_sta(df_bms_period)]})
-            sn_result.update({'sumDriveSoc':[indexPerSta.drive_soc_sta(df_bms_period)]})
-            sn_result.update({'sumDriveAh':[indexPerSta.drive_capacity_sta(cap, df_bms_period)]})
-            sn_result.update({'sumDriveEnergy':[indexPerSta.drive_energy_sta(cap, df_bms_period)]})
-
-            # 每天间隔15分钟 统计一次
-            for i in range(96):
-                cur_result = []
-                st__ = st_ + datetime.timedelta(minutes=15 * i)
-                et__ = st_ + datetime.timedelta(minutes=15 * (i+1))
-                df_bms_period = df_bms_pro[(df_bms_pro['时间戳'] > st__.strftime('%Y-%m-%d %H:%M:%S')) & (df_bms_pro['时间戳'] <= et__.strftime('%Y-%m-%d %H:%M:%S'))]
-                #df_gps_period = df_gps_pro[(df_gps_pro['时间戳'] > st__.strftime('%Y-%m-%d %H:%M:%S')) & (df_gps_pro['时间戳'] <= et__.strftime('%Y-%m-%d %H:%M:%S'))]
-                cur_result.append(indexPerSta.drive_time_sta(df_bms_period))
-                cur_result.append(indexPerSta.drive_soc_sta(df_bms_period))
-                cur_result.append(indexPerSta.drive_capacity_sta(cap, df_bms_period))
-                cur_result.append(indexPerSta.drive_energy_sta(cap, df_bms_period))
-                key = st__.strftime('%H:%M') + '-' + et__.strftime('%H:%M')
-                sn_result.update({key:[cur_result]})
-            df_cur_res = pd.DataFrame(sn_result)
-            df_cur_res = df_cur_res[columns]
-
-            # 防止写入结果时,结果文件被打开
-            write_flag = False
-            while not write_flag:
-                try:
-                    df_cur_res.to_csv(result_path, mode='a+', index=False,  header=False)
-                except PermissionError as e:
-                    logger.info('{} error:{}'.format(sn, str(e)))
-                    time.sleep(10)
-                    continue
-                else:
-                    write_flag = True 
-        except Exception as e:
-                logger.info('{} {}_{} error: {}'.format(sn, st_.strftime('%Y-%m-%d %H:%M:%S'), et_.strftime('%Y-%m-%d %H:%M:%S'), str(e)))
-                continue
-        else:
-            continue
-    logger.info('{} done,  {}/{} '.format(sn, str(count), str(len(sn_list))))
- 
-        
+__author__ = 'Wang Liming'
+
+# 每日指标统计函数
+import CONFIGURE.PathSetting as PathSetting
+import sys
+sys.path.append(PathSetting.backend_path)
+sys.path.append(PathSetting.middle_path)
+import DBManager
+import Tools
+import DataPreProcess
+import IndexStaByPeriod
+import Log
+import IndexStaByPeriod
+import importlib
+import datetime
+import os
+import pandas as pd
+import time
+importlib.reload(IndexStaByPeriod)
+
+dbManager = DBManager.DBManager()
+dataPrePro = DataPreProcess.DataPreProcess()
+indexPerSta = IndexStaByPeriod.IndexStaByPeriod()
+
+# log 文件配置
+myLog = Log.Mylog('day_sta')
+myLog.set_file_hl(file_name=r'D:\Platform\platform\FRONTEND\day_sta\day_sta.log', log_level='info')
+myLog.set_stream_hl(log_level='info')
+logger = myLog.get_logger()
+logger.info(str(os.getpid()))
+
+# sn文件读取
+sn_list = list(pd.read_excel('D:\Platform\platform\苏州电池列表.xlsx')['sn'])
+sn_list.extend(list(pd.read_excel('D:\Platform\platform\骑享北京6040电池包统计更新20210407.xlsx')['SN号']))
+
+sn = sn_list[0]
+
+# 字段设置及结果文件生成
+columns = ['sn', 'time',  'sumDriveTime', 'sumDriveSoc', 'sumDriveAh', 'sumDriveEnergy']
+st = datetime.datetime.strptime('00:00:00', '%H:%M:%S')
+for i in range(96):
+    et = st + datetime.timedelta(minutes=15)
+    columns.append(st.strftime('%H:%M') + '-' + et.strftime('%H:%M'))
+    st = et
+result_path = r'D:\Platform\platform\FRONTEND\day_sta\result.csv'
+df_res = pd.DataFrame(columns=columns)
+if not os.path.exists(result_path):
+    df_res.to_csv(result_path, index=False)
+    
+# 时间范围设置
+start_time = '{} 00:00:00'.format('2020-01-01')
+end_time = '{} 00:00:00'.format('2021-06-01')
+sta_days = (datetime.datetime.strptime(end_time, '%Y-%m-%d %H:%M:%S') - datetime.datetime.strptime(start_time, '%Y-%m-%d %H:%M:%S')).days
+
+count= 0
+sn_result = {}
+for sn in sn_list[:]:
+    count += 1
+    logger.info('{} start,  {}/{} '.format(sn, str(count), str(len(sn_list))))
+    if sn[2:5] == '500':
+        cap = 40
+    elif sn[2:5] == '504':
+        cap = 55
+    else:
+        logger.info('{} cap error'.format(sn))
+        cap = None
+        continue
+        
+    sn_result.update({'sn':sn})
+    logger.info('{} :{} to {} start'.format(sn, str(start_time), str(end_time)))
+    
+    # 获取数据
+    df_bms, df_gps = dbManager.get_data(sn=sn, start_time=start_time, end_time=end_time, gps_switch=True, mode=0)
+    if df_bms.empty:
+        continue
+    # 数据预处理
+    
+    # 时间完全相同的数据仅保留一行
+    df_bms_pro, df_gps_pro = dataPrePro.time_filter(df_bms, df_gps)
+    
+    # bms数据按照电流和状态分段, 然后在状态分段内部,根据时间跳变继续分段(解决段内数据丢失)
+    df_bms_pro = dataPrePro.data_split_by_status(df_bms_pro)
+    df_bms_pro = dataPrePro.data_split_by_time(df_bms_pro)
+
+    # bms数据将两次充电间的状态合并
+    df_bms_pro = dataPrePro.combine_drive_stand(df_bms_pro)
+    # bms 数据计算行车和充电开始前后的静置时间
+    df_bms_pro = dataPrePro.cal_stand_time(df_bms_pro)
+    # gps 数据可靠性判断, 并增加里程和速度至gps数据(根据未合并的数据段判断)
+    df_bms_pro, df_gps_pro, res_record= dataPrePro.gps_data_judge(df_bms_pro, df_gps_pro)
+    # gps 数据可靠性判断, 并增加里程和速度至gps数据(根据已合并的数据段判断)
+    df_bms_pro, df_gps_pro, res_record= dataPrePro.data_gps_judge_after_combine(df_bms_pro, df_gps_pro)
+    
+    for sta_day in range(sta_days):
+        try:
+            st_ = datetime.datetime.strptime(start_time, '%Y-%m-%d %H:%M:%S') + datetime.timedelta(days=sta_day)
+            et_ =datetime.datetime.strptime(start_time, '%Y-%m-%d %H:%M:%S') + datetime.timedelta(days=sta_day+1)
+
+        # 按天统计指标
+            sn_result.update({'time':st_.strftime('%Y-%m-%d')})
+
+            df_bms_period = df_bms_pro[(df_bms_pro['时间戳'] > st_.strftime('%Y-%m-%d %H:%M:%S')) & (df_bms_pro['时间戳'] <= et_.strftime('%Y-%m-%d %H:%M:%S'))]
+            #df_gps_period = df_gps_pro[(df_gps_pro['时间戳'] > st_.strftime('%Y-%m-%d %H:%M:%S')) & (df_gps_pro['时间戳'] <= et_.strftime('%Y-%m-%d %H:%M:%S'))]
+            sn_result.update({'sumDriveTime':[indexPerSta.drive_time_sta(df_bms_period)]})
+            sn_result.update({'sumDriveSoc':[indexPerSta.drive_soc_sta(df_bms_period)]})
+            sn_result.update({'sumDriveAh':[indexPerSta.drive_capacity_sta(cap, df_bms_period)]})
+            sn_result.update({'sumDriveEnergy':[indexPerSta.drive_energy_sta(cap, df_bms_period)]})
+
+            # 每天间隔15分钟 统计一次
+            for i in range(96):
+                cur_result = []
+                st__ = st_ + datetime.timedelta(minutes=15 * i)
+                et__ = st_ + datetime.timedelta(minutes=15 * (i+1))
+                df_bms_period = df_bms_pro[(df_bms_pro['时间戳'] > st__.strftime('%Y-%m-%d %H:%M:%S')) & (df_bms_pro['时间戳'] <= et__.strftime('%Y-%m-%d %H:%M:%S'))]
+                #df_gps_period = df_gps_pro[(df_gps_pro['时间戳'] > st__.strftime('%Y-%m-%d %H:%M:%S')) & (df_gps_pro['时间戳'] <= et__.strftime('%Y-%m-%d %H:%M:%S'))]
+                cur_result.append(indexPerSta.drive_time_sta(df_bms_period))
+                cur_result.append(indexPerSta.drive_soc_sta(df_bms_period))
+                cur_result.append(indexPerSta.drive_capacity_sta(cap, df_bms_period))
+                cur_result.append(indexPerSta.drive_energy_sta(cap, df_bms_period))
+                key = st__.strftime('%H:%M') + '-' + et__.strftime('%H:%M')
+                sn_result.update({key:[cur_result]})
+            df_cur_res = pd.DataFrame(sn_result)
+            df_cur_res = df_cur_res[columns]
+
+            # 防止写入结果时,结果文件被打开
+            write_flag = False
+            while not write_flag:
+                try:
+                    df_cur_res.to_csv(result_path, mode='a+', index=False,  header=False)
+                except PermissionError as e:
+                    logger.info('{} error:{}'.format(sn, str(e)))
+                    time.sleep(10)
+                    continue
+                else:
+                    write_flag = True 
+        except Exception as e:
+                logger.info('{} {}_{} error: {}'.format(sn, st_.strftime('%Y-%m-%d %H:%M:%S'), et_.strftime('%Y-%m-%d %H:%M:%S'), str(e)))
+                continue
+        else:
+            continue
+    logger.info('{} done,  {}/{} '.format(sn, str(count), str(len(sn_list))))
+ 
+        

+ 196 - 196
LIB/MIDDLE/IndexStaByOneCycle.py

@@ -1,197 +1,197 @@
-'''
-基于单一状态(一次行车、一次静置、一次充电)的指标统计库
-
-'''
-__author__ = 'Wang Liming'
-
-import CONFIGURE.PathSetting as PathSetting
-import sys
-sys.path.append(PathSetting.backend_path)
-import datetime
-import Tools
-import pandas as pd
-import numpy as np
-
-class IndexStaByOneCycle():
-    def __init__(self):
-        pass
-
-    def odo_sta(self, odo_array):
-        '''
-        一次行车行驶里程统计
-        ---------输入参数------------
-        odo_array : 一次行车对应的odo数据
-        ---------输出参数------------
-        如果gps 可信,则输出本次行车的累积行驶里程;
-        否则,输出None
-        '''
-        odo_array = odo_array[~pd.isnull(odo_array)]
-        if len(odo_array) > 0:
-            return np.sum(odo_array)
-        else:
-            return None
-
-    def capacity_sta(self, cap, soc_array, soh_array):
-        '''
-        一个cycle净累积ah统计
-        ---------输入参数------------
-        cap : 标称容量
-        soc_array : 一个cycle对应的soc数据
-        soh_array : 一个cycle对应的soh数据
-        ---------输出参数------------
-        本次行车的累积ah
-        '''
-        soc_array = soc_array[~pd.isnull(soc_array)]
-        soh_array = soh_array[~pd.isnull(soh_array)]
-        if len(soc_array) > 0 and len(soh_array) > 0 :
-            return (soc_array[0] - soc_array[-1]) * np.mean(soh_array) * cap / 100.0 / 100.0
-        else:
-            return None
-    def energy_sta(self, cap, soc_array, soh_array, volt_array):
-        '''
-        一个cycle净累积能量统计
-        ---------输入参数------------
-        cap : 标称容量
-        soc_array : 一个cycle对应的soc数据
-        soh_array : 一个cycle对应的soh数据
-        volt_array : 一个cycle对应的volt数据
-        ---------输出参数------------
-        本次行车的累积能量
-        '''
-        soc_array = soc_array[~pd.isnull(soc_array)]
-        soh_array = soh_array[~pd.isnull(soh_array)]
-        volt_array = volt_array[~pd.isnull(volt_array)]
-        if len(soc_array) > 0 and len(soh_array) > 0 and len(volt_array)>0:
-            cap = self.capacity_sta(cap, soc_array, soh_array)
-            return cap * np.mean(volt_array) / 1000.0
-        else:
-            return None
-
-
-
-    def acc_time_sta(self, time_array):
-        '''
-        一个cycle的持续时间
-        ---------输入参数------------
-        time_array : 一次cycle对应的time数据
-        ---------输出参数------------
-        本cycle的持续时间,单位 h
-        '''
-        time_array = time_array[~pd.isnull(time_array)]
-        if len(time_array) > 0:
-            return float(abs(time_array[0] - time_array[-1]))/1e9/3600.0
-        else:
-            return None
-
-    def mean_temp_sta(self, temp_array):
-        '''
-        一个cycle的单体平均温度
-        ---------输入参数------------
-        temp_array : 一个cycle对应的某个单体的temp数据
-        ---------输出参数------------
-        本cycle的单体平均温度
-        '''
-        temp_array = temp_array[~pd.isnull(temp_array)]
-        if len(temp_array) > 0:
-            return np.mean(temp_array)
-        else:
-            return None
-
-    def temp_change_rate_sta(self, time_array, temp_array):
-        '''
-        一个cycle的单体温度变化率
-        ---------输入参数------------
-        time_array : 一个cycle对应的time数据
-        temp_array : 一个cycle对应的temp数据
-        ---------输出参数------------
-        本cycle的单体温度变化率
-        '''
-        time_array = time_array[~pd.isnull(time_array)]
-        temp_array = temp_array[~pd.isnull(temp_array)]
-        if len(temp_array) > 0 and len(time_array) > 0:
-            return abs(temp_array[0] - temp_array[-1])/\
-                (float(abs(time_array[0] - time_array[-1]))/1e9/3600.0)
-        else:
-            return None
-
-    def dischrg_max_pwr_sta(self, volt_array, crnt_array):
-        '''
-        一个cycle的放电功率最大值
-        ---------输入参数------------
-        volt_array : 一个cycle对应的volt数据
-        crnt_array : 一个cycle对应的crnt数据
-        ---------输出参数------------
-        本cycle的放电功率最大值
-        '''
-        volt_array = volt_array[~pd.isnull(volt_array)]
-        crnt_array = crnt_array[~pd.isnull(crnt_array)]
-        if len(volt_array) > 0 and len(crnt_array) > 0:
-            pwr = volt_array * crnt_array / 1000.0
-            pwr = pwr[pwr > 0]
-            return np.max(pwr)
-        else:
-            return None
-
-    def chrg_max_pwr_sta(self, volt_array, crnt_array):
-        '''
-        一个cycle的充电功率最大值
-        ---------输入参数------------
-        volt_array : 一个cycle对应的volt数据
-        crnt_array : 一个cycle对应的crnt数据
-        ---------输出参数------------
-        本cycle的充电功率最大值
-        '''
-        volt_array = volt_array[~pd.isnull(volt_array)]
-        crnt_array = crnt_array[~pd.isnull(crnt_array)]
-        if len(volt_array) > 0 and len(crnt_array) > 0:
-            pwr = volt_array * crnt_array / 1000.0
-            pwr = pwr[pwr < 0]
-            return np.max(abs(pwr))
-        else:
-            return None
-
-    def regen_count_sta(self, crnt_array):
-        '''
-        一个行车cycle的regen 行数
-        ---------输入参数------------
-        crnt_array : 一个行车cycle对应的crnt数据
-        ---------输出参数------------
-        本行车cycle的regen行数, 总行数
-        '''
-        crnt_array = crnt_array[~pd.isnull(crnt_array)]
-        if  len(crnt_array) > 0:
-            return len(crnt_array[crnt_array < -1]), len(crnt_array)
-        else:
-            return None, None
-
-    def speed_sta(self, sum_odo, acc_time, speed_array):
-        '''
-        一个行车cycle的平均速度和最大瞬时速度
-        ---------输入参数------------
-        sum_odo : 一个行车cycle对应的累积odo数据
-        acc_time : 一个行车cycle对应的累积time数据
-        speed_array : 一个行车cycle对应的speed数据
-        ---------输出参数------------
-        本行车cycle的平均速度和最大速度
-        '''
-        speed_array = speed_array[~pd.isnull(speed_array)]
-        if  ~pd.isnull(sum_odo) and ~pd.isnull(acc_time) and len(speed_array) > 0:
-            return sum_odo/acc_time, np.max(speed_array)
-        else:
-            return None, None
-
-    def speed_sta(self, sum_odo, acc_time, speed_array):
-        '''
-        一个行车cycle的平均速度和最大瞬时速度
-        ---------输入参数------------
-        sum_odo : 一个行车cycle对应的累积odo数据
-        acc_time : 一个行车cycle对应的累积time数据
-        speed_array : 一个行车cycle对应的speed数据
-        ---------输出参数------------
-        本行车cycle的平均速度和最大速度
-        '''
-        speed_array = speed_array[~pd.isnull(speed_array)]
-        if  ~pd.isnull(sum_odo) and ~pd.isnull(acc_time) and len(speed_array) > 0:
-            return sum_odo/acc_time, np.max(speed_array)
-        else:
+'''
+基于单一状态(一次行车、一次静置、一次充电)的指标统计库
+
+'''
+__author__ = 'Wang Liming'
+
+import CONFIGURE.PathSetting as PathSetting
+import sys
+sys.path.append(PathSetting.backend_path)
+import datetime
+import Tools
+import pandas as pd
+import numpy as np
+
+class IndexStaByOneCycle():
+    def __init__(self):
+        pass
+
+    def odo_sta(self, odo_array):
+        '''
+        一次行车行驶里程统计
+        ---------输入参数------------
+        odo_array : 一次行车对应的odo数据
+        ---------输出参数------------
+        如果gps 可信,则输出本次行车的累积行驶里程;
+        否则,输出None
+        '''
+        odo_array = odo_array[~pd.isnull(odo_array)]
+        if len(odo_array) > 0:
+            return np.sum(odo_array)
+        else:
+            return None
+
+    def capacity_sta(self, cap, soc_array, soh_array):
+        '''
+        一个cycle净累积ah统计
+        ---------输入参数------------
+        cap : 标称容量
+        soc_array : 一个cycle对应的soc数据
+        soh_array : 一个cycle对应的soh数据
+        ---------输出参数------------
+        本次行车的累积ah
+        '''
+        soc_array = soc_array[~pd.isnull(soc_array)]
+        soh_array = soh_array[~pd.isnull(soh_array)]
+        if len(soc_array) > 0 and len(soh_array) > 0 :
+            return (soc_array[0] - soc_array[-1]) * np.mean(soh_array) * cap / 100.0 / 100.0
+        else:
+            return None
+    def energy_sta(self, cap, soc_array, soh_array, volt_array):
+        '''
+        一个cycle净累积能量统计
+        ---------输入参数------------
+        cap : 标称容量
+        soc_array : 一个cycle对应的soc数据
+        soh_array : 一个cycle对应的soh数据
+        volt_array : 一个cycle对应的volt数据
+        ---------输出参数------------
+        本次行车的累积能量
+        '''
+        soc_array = soc_array[~pd.isnull(soc_array)]
+        soh_array = soh_array[~pd.isnull(soh_array)]
+        volt_array = volt_array[~pd.isnull(volt_array)]
+        if len(soc_array) > 0 and len(soh_array) > 0 and len(volt_array)>0:
+            cap = self.capacity_sta(cap, soc_array, soh_array)
+            return cap * np.mean(volt_array) / 1000.0
+        else:
+            return None
+
+
+
+    def acc_time_sta(self, time_array):
+        '''
+        一个cycle的持续时间
+        ---------输入参数------------
+        time_array : 一次cycle对应的time数据
+        ---------输出参数------------
+        本cycle的持续时间,单位 h
+        '''
+        time_array = time_array[~pd.isnull(time_array)]
+        if len(time_array) > 0:
+            return float(abs(time_array[0] - time_array[-1]))/1e9/3600.0
+        else:
+            return None
+
+    def mean_temp_sta(self, temp_array):
+        '''
+        一个cycle的单体平均温度
+        ---------输入参数------------
+        temp_array : 一个cycle对应的某个单体的temp数据
+        ---------输出参数------------
+        本cycle的单体平均温度
+        '''
+        temp_array = temp_array[~pd.isnull(temp_array)]
+        if len(temp_array) > 0:
+            return np.mean(temp_array)
+        else:
+            return None
+
+    def temp_change_rate_sta(self, time_array, temp_array):
+        '''
+        一个cycle的单体温度变化率
+        ---------输入参数------------
+        time_array : 一个cycle对应的time数据
+        temp_array : 一个cycle对应的temp数据
+        ---------输出参数------------
+        本cycle的单体温度变化率
+        '''
+        time_array = time_array[~pd.isnull(time_array)]
+        temp_array = temp_array[~pd.isnull(temp_array)]
+        if len(temp_array) > 0 and len(time_array) > 0:
+            return abs(temp_array[0] - temp_array[-1])/\
+                (float(abs(time_array[0] - time_array[-1]))/1e9/3600.0)
+        else:
+            return None
+
+    def dischrg_max_pwr_sta(self, volt_array, crnt_array):
+        '''
+        一个cycle的放电功率最大值
+        ---------输入参数------------
+        volt_array : 一个cycle对应的volt数据
+        crnt_array : 一个cycle对应的crnt数据
+        ---------输出参数------------
+        本cycle的放电功率最大值
+        '''
+        volt_array = volt_array[~pd.isnull(volt_array)]
+        crnt_array = crnt_array[~pd.isnull(crnt_array)]
+        if len(volt_array) > 0 and len(crnt_array) > 0:
+            pwr = volt_array * crnt_array / 1000.0
+            pwr = pwr[pwr > 0]
+            return np.max(pwr)
+        else:
+            return None
+
+    def chrg_max_pwr_sta(self, volt_array, crnt_array):
+        '''
+        一个cycle的充电功率最大值
+        ---------输入参数------------
+        volt_array : 一个cycle对应的volt数据
+        crnt_array : 一个cycle对应的crnt数据
+        ---------输出参数------------
+        本cycle的充电功率最大值
+        '''
+        volt_array = volt_array[~pd.isnull(volt_array)]
+        crnt_array = crnt_array[~pd.isnull(crnt_array)]
+        if len(volt_array) > 0 and len(crnt_array) > 0:
+            pwr = volt_array * crnt_array / 1000.0
+            pwr = pwr[pwr < 0]
+            return np.max(abs(pwr))
+        else:
+            return None
+
+    def regen_count_sta(self, crnt_array):
+        '''
+        一个行车cycle的regen 行数
+        ---------输入参数------------
+        crnt_array : 一个行车cycle对应的crnt数据
+        ---------输出参数------------
+        本行车cycle的regen行数, 总行数
+        '''
+        crnt_array = crnt_array[~pd.isnull(crnt_array)]
+        if  len(crnt_array) > 0:
+            return len(crnt_array[crnt_array < -1]), len(crnt_array)
+        else:
+            return None, None
+
+    def speed_sta(self, sum_odo, acc_time, speed_array):
+        '''
+        一个行车cycle的平均速度和最大瞬时速度
+        ---------输入参数------------
+        sum_odo : 一个行车cycle对应的累积odo数据
+        acc_time : 一个行车cycle对应的累积time数据
+        speed_array : 一个行车cycle对应的speed数据
+        ---------输出参数------------
+        本行车cycle的平均速度和最大速度
+        '''
+        speed_array = speed_array[~pd.isnull(speed_array)]
+        if  ~pd.isnull(sum_odo) and ~pd.isnull(acc_time) and len(speed_array) > 0:
+            return sum_odo/acc_time, np.max(speed_array)
+        else:
+            return None, None
+
+    def speed_sta(self, sum_odo, acc_time, speed_array):
+        '''
+        一个行车cycle的平均速度和最大瞬时速度
+        ---------输入参数------------
+        sum_odo : 一个行车cycle对应的累积odo数据
+        acc_time : 一个行车cycle对应的累积time数据
+        speed_array : 一个行车cycle对应的speed数据
+        ---------输出参数------------
+        本行车cycle的平均速度和最大速度
+        '''
+        speed_array = speed_array[~pd.isnull(speed_array)]
+        if  ~pd.isnull(sum_odo) and ~pd.isnull(acc_time) and len(speed_array) > 0:
+            return sum_odo/acc_time, np.max(speed_array)
+        else:
             return None, None

+ 171 - 171
LIB/MIDDLE/IndexStaByPeriod.py

@@ -1,172 +1,172 @@
-'''
-基于某个周期(一天,一周...)的指标统计库
-
-'''
-__author__ = 'Wang Liming'
-
-import CONFIGURE.PathSetting as PathSetting
-import sys
-sys.path.append(PathSetting.backend_path)
-sys.path.append(PathSetting.middle_path)
-import datetime
-import Tools
-import pandas as pd
-import numpy as np
-import IndexStaByOneCycle
-
-class IndexStaByPeriod():
-    def __init__(self):
-        self.indexStaByOneCycle = IndexStaByOneCycle.IndexStaByOneCycle()
-        pass
-
-    def drive_odo_sta(self, df_bms, df_gps):
-        '''
-        计算周期内行车累积行驶里程
-        ---------输入参数------------
-        df_bms : 一段周期内的预处理后的bms数据
-        df_gps : 一段周期内的预处理后的gps数据
-        ---------输出参数------------
-        sum_odo : 累积里程, 如果该周期内gps均无效,则返回None
-        invalid_rate : 该周期内gps无效的bms数据行所占比例
-        '''
-        invalid_count = 0
-        total_count = 0
-        sum_odo = 0
-        data_number_list = sorted(list(set(df_bms[(df_bms['data_status'].isin(['drive']))]['data_split_by_status_after_combine'])))
-        if len(data_number_list) == 0:
-            return {'sum_odo':0, 'invalid_rate':0}
-        for data_number in data_number_list[:]:
-            df_sel_bms = df_bms[df_bms['data_split_by_status_after_combine'] == data_number]
-            df_sel_bms = df_sel_bms.reset_index(drop=True)
-
-            total_count += len(df_sel_bms)
-            if df_sel_bms.loc[0, 'gps_rely'] != 1:
-                invalid_count += len(df_sel_bms)
-                continue
-            else:
-                df_sel_gps = df_gps[(df_gps['时间戳']>df_sel_bms.loc[0,'时间戳']) & (df_gps['时间戳']<df_sel_bms.loc[len(df_sel_bms)-1,'时间戳'])]
-                df_sel_gps = df_sel_gps.reset_index(drop=True)
-                odo = self.indexStaByOneCycle.odo_sta(np.array(df_sel_gps['odo']))
-                if not pd.isnull(odo):
-                    sum_odo += odo
-        invalid_rate = invalid_count/total_count
-        return {'sum_odo':sum_odo, 'invalid_rate':invalid_rate}
-    
-    
-    #该函数未完成, TODO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-    def _energy_consump_sta(self, cap, df_bms, df_gps):
-        '''
-        计算周期内百公里能耗
-        ---------输入参数------------
-        df_bms : 本周期内的bms数据
-        df_gps : 本周期内的gps数据
-        ---------输出参数------------
-        本周期内的百公里能耗
-        '''
-        if not df_bms.empty and not df_gps.empty:
-            # 计算能耗
-            energy_sum = 0
-            data_number_list = sorted(list(set(df_bms[(df_bms['data_status'].isin(['drive']))]['data_split_by_status_time'])))
-            for data_number in data_number_list[:]:
-                df_sel_bms = df_bms[df_bms['data_split_by_status_time'] == data_number]
-                df_sel_bms = df_sel_bms.reset_index(drop=True)
-                soc_array = np.array(df_sel_bms['SOC[%]'])
-                soh_array = np.array(df_sel_bms['SOH[%]'])
-                volt_array = np.array(df_sel_bms['总电压[V]'])
-                energy = self.indexStaByOneCycle.energy_sta(cap, soc_array, soh_array, volt_array)
-                if not pd.isnull(energy):
-                    energy_sum += energy
-            # 计算里程
-            pass # TODO!!!!!!!!!!!!!!!!!!!!!
-            return 0
-        else:
-            return None
-
-    def drive_soc_sta(self, df_bms):
-        '''
-        计算周期内行车净累积soc
-        ---------输入参数------------
-        cap : 标称容量
-        df_bms : 一段周期内的预处理后的bms数据
-        df_gps : 一段周期内的预处理后的gps数据
-        ---------输出参数------------
-        sum_ah : 本周期的净累积soc
-       '''   
-
-        sum_soc = 0
-        data_number_list = sorted(list(set(df_bms[(df_bms['data_status'].isin(['drive']))]['data_split_by_status_time'])))
-        if len(data_number_list) == 0:
-            return sum_soc
-        for data_number in data_number_list[:]:
-            df_sel_bms = df_bms[df_bms['data_split_by_status_time'] == data_number]
-            df_sel_bms = df_sel_bms.reset_index(drop=True)
-            sum_soc += abs(df_sel_bms.loc[0, 'SOC[%]'] - df_sel_bms.loc[len(df_sel_bms)-1, 'SOC[%]'])
-        return sum_soc
-
-    def drive_time_sta(self, df_bms):
-        '''
-        计算周期内累计行车时长/h
-        ---------输入参数------------
-        cap : 标称容量
-        df_bms : 一段周期内的预处理后的bms数据
-        df_gps : 一段周期内的预处理后的gps数据
-        ---------输出参数------------
-        sum_ah : 本周期的累计行车时长
-       '''   
-
-        sum_time = 0
-        data_number_list = sorted(list(set(df_bms[(df_bms['data_status'].isin(['drive']))]['data_split_by_status_time'])))
-        if len(data_number_list) == 0:
-            return sum_time
-        for data_number in data_number_list[:]:
-            df_sel_bms = df_bms[df_bms['data_split_by_status_time'] == data_number]
-            df_sel_bms = df_sel_bms.reset_index(drop=True)
-            sum_time += (df_sel_bms.loc[len(df_sel_bms)-1, '时间戳'] - df_sel_bms.loc[0, '时间戳']).total_seconds()
-        return sum_time / 3600.0
-
-    def drive_capacity_sta(self, cap, df_bms):
-        '''
-        计算周期内行车净累积ah
-        ---------输入参数------------
-        cap : 标称容量
-        df_bms : 一段周期内的预处理后的bms数据
-        df_gps : 一段周期内的预处理后的gps数据
-        ---------输出参数------------
-        sum_ah : 本周期的净累积ah
-       '''   
-
-        sum_ah = 0
-        data_number_list = sorted(list(set(df_bms[(df_bms['data_status'].isin(['drive']))]['data_split_by_status_time'])))
-        if len(data_number_list) == 0:
-            return sum_ah
-        for data_number in data_number_list[:]:
-            df_sel_bms = df_bms[df_bms['data_split_by_status_time'] == data_number]
-            df_sel_bms = df_sel_bms.reset_index(drop=True)
-            soc_array = np.array(df_sel_bms['SOC[%]'])
-            soh_array = np.array(df_sel_bms['SOH[%]'])
-            sum_ah += self.indexStaByOneCycle.capacity_sta(cap, soc_array, soh_array)
-        return sum_ah
-
-    def drive_energy_sta(self, cap, df_bms):
-        '''
-        计算周期内行车净累积能量
-        ---------输入参数------------
-        cap : 标称容量
-        df_bms : 一段周期内的预处理后的bms数据
-        df_gps : 一段周期内的预处理后的gps数据
-        ---------输出参数------------
-        sum_ah : 本周期的净累积能量
-       '''   
-
-        sum_energy = 0
-        data_number_list = sorted(list(set(df_bms[(df_bms['data_status'].isin(['drive']))]['data_split_by_status_time'])))
-        if len(data_number_list) == 0:
-            return sum_energy
-        for data_number in data_number_list[:]:
-            df_sel_bms = df_bms[df_bms['data_split_by_status_time'] == data_number]
-            df_sel_bms = df_sel_bms.reset_index(drop=True)
-            soc_array = np.array(df_sel_bms['SOC[%]'])
-            soh_array = np.array(df_sel_bms['SOH[%]'])
-            volt_array = np.array(df_sel_bms['总电压[V]'])
-            sum_energy += self.indexStaByOneCycle.energy_sta(cap, soc_array, soh_array, volt_array)
+'''
+基于某个周期(一天,一周...)的指标统计库
+
+'''
+__author__ = 'Wang Liming'
+
+import CONFIGURE.PathSetting as PathSetting
+import sys
+sys.path.append(PathSetting.backend_path)
+sys.path.append(PathSetting.middle_path)
+import datetime
+import Tools
+import pandas as pd
+import numpy as np
+import IndexStaByOneCycle
+
+class IndexStaByPeriod():
+    def __init__(self):
+        self.indexStaByOneCycle = IndexStaByOneCycle.IndexStaByOneCycle()
+        pass
+
+    def drive_odo_sta(self, df_bms, df_gps):
+        '''
+        计算周期内行车累积行驶里程
+        ---------输入参数------------
+        df_bms : 一段周期内的预处理后的bms数据
+        df_gps : 一段周期内的预处理后的gps数据
+        ---------输出参数------------
+        sum_odo : 累积里程, 如果该周期内gps均无效,则返回None
+        invalid_rate : 该周期内gps无效的bms数据行所占比例
+        '''
+        invalid_count = 0
+        total_count = 0
+        sum_odo = 0
+        data_number_list = sorted(list(set(df_bms[(df_bms['data_status'].isin(['drive']))]['data_split_by_status_after_combine'])))
+        if len(data_number_list) == 0:
+            return {'sum_odo':0, 'invalid_rate':0}
+        for data_number in data_number_list[:]:
+            df_sel_bms = df_bms[df_bms['data_split_by_status_after_combine'] == data_number]
+            df_sel_bms = df_sel_bms.reset_index(drop=True)
+
+            total_count += len(df_sel_bms)
+            if df_sel_bms.loc[0, 'gps_rely'] != 1:
+                invalid_count += len(df_sel_bms)
+                continue
+            else:
+                df_sel_gps = df_gps[(df_gps['时间戳']>df_sel_bms.loc[0,'时间戳']) & (df_gps['时间戳']<df_sel_bms.loc[len(df_sel_bms)-1,'时间戳'])]
+                df_sel_gps = df_sel_gps.reset_index(drop=True)
+                odo = self.indexStaByOneCycle.odo_sta(np.array(df_sel_gps['odo']))
+                if not pd.isnull(odo):
+                    sum_odo += odo
+        invalid_rate = invalid_count/total_count
+        return {'sum_odo':sum_odo, 'invalid_rate':invalid_rate}
+    
+    
+    #该函数未完成, TODO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+    def _energy_consump_sta(self, cap, df_bms, df_gps):
+        '''
+        计算周期内百公里能耗
+        ---------输入参数------------
+        df_bms : 本周期内的bms数据
+        df_gps : 本周期内的gps数据
+        ---------输出参数------------
+        本周期内的百公里能耗
+        '''
+        if not df_bms.empty and not df_gps.empty:
+            # 计算能耗
+            energy_sum = 0
+            data_number_list = sorted(list(set(df_bms[(df_bms['data_status'].isin(['drive']))]['data_split_by_status_time'])))
+            for data_number in data_number_list[:]:
+                df_sel_bms = df_bms[df_bms['data_split_by_status_time'] == data_number]
+                df_sel_bms = df_sel_bms.reset_index(drop=True)
+                soc_array = np.array(df_sel_bms['SOC[%]'])
+                soh_array = np.array(df_sel_bms['SOH[%]'])
+                volt_array = np.array(df_sel_bms['总电压[V]'])
+                energy = self.indexStaByOneCycle.energy_sta(cap, soc_array, soh_array, volt_array)
+                if not pd.isnull(energy):
+                    energy_sum += energy
+            # 计算里程
+            pass # TODO!!!!!!!!!!!!!!!!!!!!!
+            return 0
+        else:
+            return None
+
+    def drive_soc_sta(self, df_bms):
+        '''
+        计算周期内行车净累积soc
+        ---------输入参数------------
+        cap : 标称容量
+        df_bms : 一段周期内的预处理后的bms数据
+        df_gps : 一段周期内的预处理后的gps数据
+        ---------输出参数------------
+        sum_ah : 本周期的净累积soc
+       '''   
+
+        sum_soc = 0
+        data_number_list = sorted(list(set(df_bms[(df_bms['data_status'].isin(['drive']))]['data_split_by_status_time'])))
+        if len(data_number_list) == 0:
+            return sum_soc
+        for data_number in data_number_list[:]:
+            df_sel_bms = df_bms[df_bms['data_split_by_status_time'] == data_number]
+            df_sel_bms = df_sel_bms.reset_index(drop=True)
+            sum_soc += abs(df_sel_bms.loc[0, 'SOC[%]'] - df_sel_bms.loc[len(df_sel_bms)-1, 'SOC[%]'])
+        return sum_soc
+
+    def drive_time_sta(self, df_bms):
+        '''
+        计算周期内累计行车时长/h
+        ---------输入参数------------
+        cap : 标称容量
+        df_bms : 一段周期内的预处理后的bms数据
+        df_gps : 一段周期内的预处理后的gps数据
+        ---------输出参数------------
+        sum_ah : 本周期的累计行车时长
+       '''   
+
+        sum_time = 0
+        data_number_list = sorted(list(set(df_bms[(df_bms['data_status'].isin(['drive']))]['data_split_by_status_time'])))
+        if len(data_number_list) == 0:
+            return sum_time
+        for data_number in data_number_list[:]:
+            df_sel_bms = df_bms[df_bms['data_split_by_status_time'] == data_number]
+            df_sel_bms = df_sel_bms.reset_index(drop=True)
+            sum_time += (df_sel_bms.loc[len(df_sel_bms)-1, '时间戳'] - df_sel_bms.loc[0, '时间戳']).total_seconds()
+        return sum_time / 3600.0
+
+    def drive_capacity_sta(self, cap, df_bms):
+        '''
+        计算周期内行车净累积ah
+        ---------输入参数------------
+        cap : 标称容量
+        df_bms : 一段周期内的预处理后的bms数据
+        df_gps : 一段周期内的预处理后的gps数据
+        ---------输出参数------------
+        sum_ah : 本周期的净累积ah
+       '''   
+
+        sum_ah = 0
+        data_number_list = sorted(list(set(df_bms[(df_bms['data_status'].isin(['drive']))]['data_split_by_status_time'])))
+        if len(data_number_list) == 0:
+            return sum_ah
+        for data_number in data_number_list[:]:
+            df_sel_bms = df_bms[df_bms['data_split_by_status_time'] == data_number]
+            df_sel_bms = df_sel_bms.reset_index(drop=True)
+            soc_array = np.array(df_sel_bms['SOC[%]'])
+            soh_array = np.array(df_sel_bms['SOH[%]'])
+            sum_ah += self.indexStaByOneCycle.capacity_sta(cap, soc_array, soh_array)
+        return sum_ah
+
+    def drive_energy_sta(self, cap, df_bms):
+        '''
+        计算周期内行车净累积能量
+        ---------输入参数------------
+        cap : 标称容量
+        df_bms : 一段周期内的预处理后的bms数据
+        df_gps : 一段周期内的预处理后的gps数据
+        ---------输出参数------------
+        sum_ah : 本周期的净累积能量
+       '''   
+
+        sum_energy = 0
+        data_number_list = sorted(list(set(df_bms[(df_bms['data_status'].isin(['drive']))]['data_split_by_status_time'])))
+        if len(data_number_list) == 0:
+            return sum_energy
+        for data_number in data_number_list[:]:
+            df_sel_bms = df_bms[df_bms['data_split_by_status_time'] == data_number]
+            df_sel_bms = df_sel_bms.reset_index(drop=True)
+            soc_array = np.array(df_sel_bms['SOC[%]'])
+            soh_array = np.array(df_sel_bms['SOH[%]'])
+            volt_array = np.array(df_sel_bms['总电压[V]'])
+            sum_energy += self.indexStaByOneCycle.energy_sta(cap, soc_array, soh_array, volt_array)
         return sum_energy

+ 166 - 166
LIB/MIDDLE/User_persona.py

@@ -1,167 +1,167 @@
-# 读取数据
-import numpy as np
-import pandas as pd
-import preprocess.preprocess
-import importlib
-import ana.parameters
-import datetime
-import os
-import matplotlib
-import openpyxl
-
-file_path = r'D:\Work\Interior\Cloud_BMS\data_ana\7250.csv'
-sn_list = pd.read_csv(file_path,encoding='gbk')
-sn_list = sn_list.values.tolist()
-# print(sn_list)
-sn_list = [['PK504B10100004301']]
-df_res = pd.DataFrame(columns=['sn', 'date', 'odo', 'capacity', 'energy', 'energy_rate', 'acc_time_drive',
-                               'acc_time_stand', 'acc_time_charge', 'avr_stand_tem', 'avr_stand_tem_rate',
-                               'max_pwr', 'regen_flag', 'regen_rate', 'avr_speed', 'max_speed', 'avr_drive_tem',
-                               'avr_drive_tem_rate', 'center_long', 'center_lat', 'rad'])
-df_soh_res = pd.DataFrame(columns=['sn', 'time', 'accum_ah', 'soh_cell01', 'soh_cell02', 'soh_cell03',
-                                   'soh_cell04', 'soh_cell05', 'soh_cell06', 'soh_cell07',
-                                   'soh_cell08', 'soh_cell09', 'soh_cell10', 'soh_cell11',
-                                   'soh_cell12', 'soh_cell13', 'soh_cell14', 'soh_cell15',
-                                   'soh_cell16', 'soh_cell17', 'soh_cell18', 'soh_cell19',
-                                   'soh_cell20'])
-df_cell_res = pd.DataFrame(columns=['sn', 'time', 'status', 'volt_cell01', 'volt_cell02', 'volt_cell03',
-                                    'volt_cell04', 'volt_cell05', 'volt_cell06', 'volt_cell07',
-                                    'volt_cell08', 'volt_cell09', 'volt_cell10', 'volt_cell11',
-                                    'volt_cell12', 'volt_cell13', 'volt_cell14', 'volt_cell15',
-                                    'volt_cell16', 'volt_cell17', 'volt_cell18', 'volt_cell19',
-                                    'volt_cell20', 'volt_max', 'volt_min', 'volt_avr', 'soc_diff',
-                                    'soc_diff_div', 'over_discharge'])
-
-for sn in sn_list:
-    # 数据读取
-    base_path = r'D:\Work\Interior\Cloud_BMS\data_ana\Data_Files'
-    time = '_from_2020-04-27_to_2021-04-27.csv'
-    bms_file = base_path + r'\\' + sn[0] + '\BMS_' + sn[0] + time
-    gps_file = base_path + r'\\' + sn[0] + '\GPS_' + sn[0] + time
-    # print(bms_file)
-    if not os.path.exists(bms_file):
-        print('{} bms file does not exist!!!!!!'.format(sn[0]))
-        continue
-    if not os.path.exists(gps_file):
-        print('{} gps file does not exist!!!!!!'.format(sn[0]))
-        continue
-    df_bms = pd.read_csv(bms_file, encoding='GB2312')
-    df_gps = pd.read_csv(gps_file, encoding='GB2312')
-    df_bms = df_bms.drop_duplicates(['时间戳'])
-    df_gps = df_gps.drop_duplicates(['时间戳'])
-    df_bms = df_bms.reset_index(drop=True)
-    df_gps = df_gps.reset_index(drop=True)
-    df_bms['时间戳'] = pd.to_datetime(df_bms['时间戳'])
-    df_gps['时间戳'] = pd.to_datetime(df_gps['时间戳'])
-    print('{} data read Well Done!'.format(sn[0]))
-    df_bms.to_csv('result2.csv', index=False, encoding='GB2312')
-    # 数据预处理
-    # 1、数据分段
-    # 2、GPS数据可靠与否的判断(根据GPS计算出的平均车速<2认为可靠)
-    importlib.reload(preprocess.preprocess)
-    df_bms = preprocess.preprocess.data_split(df_bms)
-    df_bms.to_csv('result.csv',encoding='GB2312')
-    df_bms, df_gps, prepro_record = preprocess.preprocess.data_gps_judge(df_bms, df_gps, 2)
-    print('{} data preprocess Well Done!'.format(sn[0]))
-    df_bms.to_csv('result.csv', index=False, encoding='GB2312')
-    df_gps.to_csv('result1.csv', index=False, encoding='GB2312')
-    importlib.reload(ana.parameters)
-    # test = ana.parameters.sta_one_drive_cycle(df_bms, df_gps, prepro_record, time_window=3600*24, step=3600*24, start_time="00:00:00")
-
-    # print(test)
-    # 计算Daily数据
-
-    start_time = df_bms.loc[0, '时间戳']
-    # print(start_time)
-    cur_time = start_time
-    index = 0
-    while cur_time < df_bms.loc[len(df_bms) - 1, '时间戳']:
-        if cur_time.day != start_time.day:
-            break
-        else:
-            index = index + 1
-            cur_time = df_bms.loc[index, '时间戳']
-    start = '00:00:00'
-    start_time = datetime.datetime.strptime(str(df_bms.loc[index, '时间戳'])[0:10] + ' ' + start, '%Y-%m-%d %H:%M:%S')
-    # print(index, start_time)
-    timeDelta = datetime.timedelta(days=1)
-    end_time = start_time + timeDelta
-    # print(start_time, end_time)
-    while end_time < df_bms.loc[len(df_bms) - 1, '时间戳']:
-        # while end_time < df_bms.loc[8500, '时间戳']:
-        df_sel_bms = df_bms[(df_bms['时间戳'] >= start_time) & (df_bms['时间戳'] <= end_time)]
-        df_sel_bms = df_sel_bms.reset_index(drop=True)
-        df_sel_gps = df_gps[(df_gps['时间戳'] >= start_time) & (df_gps['时间戳'] <= end_time)]
-        df_sel_gps = df_sel_gps.reset_index(drop=True)
-        if len(df_sel_bms) == 0:
-            continue
-        date = ana.parameters.get_date(df_sel_bms)
-
-        odo_total, odo_sum, odo_plus = ana.parameters.get_daily_odo(df_sel_bms, df_sel_gps)
-        print('total={},odo={},plus={}'.format(odo_total, odo_sum, odo_plus))
-
-        # 计算单日里程,单日平均车速,单日最高车速
-        # print(start_time)
-        odo, avr_speed, max_speed = ana.parameters.get_daily_odo_and_speed(df_sel_bms, df_sel_gps)
-        # 计算单日使用容量,单日使用能量
-        capacity, energy = ana.parameters.get_daily_capacity_and_energy(df_sel_bms, 55)
-        # 计算单日平均电耗:kwh/100km
-        if odo > 10:
-            energy_rate = energy / odo * 100
-        else:
-            energy_rate = 0
-        # 计算单日累积时间(行驶、静置、充电)
-        acc_time_drive = ana.parameters.get_daily_accum_time(df_sel_bms, 'drive')
-        acc_time_stand = ana.parameters.get_daily_accum_time(df_sel_bms, 'stand')
-        acc_time_charge = ana.parameters.get_daily_accum_time(df_sel_bms, 'charge')
-        # 计算过程平均温度,平均温升(静置、行驶)
-
-        avr_stand_tem, avr_stand_tem_rate = ana.parameters.get_daily_stand_temp(df_sel_bms, 'stand')
-        avr_drive_tem, avr_drive_tem_rate = ana.parameters.get_daily_stand_temp(df_sel_bms, 'drive')
-        # 计算车辆功率
-        max_pwr = ana.parameters.get_daily_max_pwr(df_sel_bms, 'drive')
-        # 计算regen数据,是否有regen以及regen比例
-        regen_flag, regen_rate = ana.parameters.get_daily_regen(df_sel_bms, 'drive')
-        # 计算活动范围,圆心和半径
-
-        center_long, center_lat, rad = ana.parameters.get_working_scope(df_sel_bms, df_sel_gps, 'drive')
-
-        df_res = df_res.append({'sn': sn[0],
-                                'date': date,
-                                'odo': odo,
-                                'capacity': capacity,
-                                'energy': energy,
-                                'energy_rate': energy_rate,
-                                'acc_time_drive': acc_time_drive,
-                                'acc_time_stand': acc_time_stand,
-                                'acc_time_charge': acc_time_charge,
-                                'avr_stand_tem': avr_stand_tem,
-                                'avr_stand_tem_rate': avr_stand_tem_rate,
-                                'max_pwr': max_pwr,
-                                'regen_flag': regen_flag,
-                                'regen_rate': regen_rate,
-                                'avr_speed': avr_speed,
-                                'max_speed': max_speed,
-                                'avr_drive_tem': avr_drive_tem,
-                                'avr_drive_tem_rate': avr_drive_tem_rate,
-                                'center_long': center_long,
-                                'center_lat': center_lat,
-                                'rad': rad}, ignore_index=True)
-        start_time = end_time
-        end_time = start_time + timeDelta
-        # print(end_time,df_bms.loc[len(df_bms) - 1, '时间戳'])
-    print('{} daily data process Well Done!'.format(sn[0]))
-
-    # 计算电池周期性数据
-    df_soh_res_single, df_cell_res_single = ana.parameters.get_soh(df_bms, sn)
-    df_soh_res = pd.concat([df_soh_res, df_soh_res_single], ignore_index=True)
-    df_cell_res = pd.concat([df_cell_res, df_cell_res_single], ignore_index=True)
-    print('{} period data process Well Done!'.format(sn[0]))
-
-path = r'D:\Work\Interior\Cloud_BMS\data_ana\report\daily_data_analysis.csv'
-df_res.to_csv(path, index=False, encoding='GB2312')
-path = r'D:\Work\Interior\Cloud_BMS\data_ana\report\period_data_analysis.xlsx'
-writer = pd.ExcelWriter(path)
-df_soh_res.to_excel(writer, "SOH数据")
-df_cell_res.to_excel(writer, "一致性数据")
+# 读取数据
+import numpy as np
+import pandas as pd
+import preprocess.preprocess
+import importlib
+import ana.parameters
+import datetime
+import os
+import matplotlib
+import openpyxl
+
+file_path = r'D:\Work\Interior\Cloud_BMS\data_ana\7250.csv'
+sn_list = pd.read_csv(file_path,encoding='gbk')
+sn_list = sn_list.values.tolist()
+# print(sn_list)
+sn_list = [['PK504B10100004301']]
+df_res = pd.DataFrame(columns=['sn', 'date', 'odo', 'capacity', 'energy', 'energy_rate', 'acc_time_drive',
+                               'acc_time_stand', 'acc_time_charge', 'avr_stand_tem', 'avr_stand_tem_rate',
+                               'max_pwr', 'regen_flag', 'regen_rate', 'avr_speed', 'max_speed', 'avr_drive_tem',
+                               'avr_drive_tem_rate', 'center_long', 'center_lat', 'rad'])
+df_soh_res = pd.DataFrame(columns=['sn', 'time', 'accum_ah', 'soh_cell01', 'soh_cell02', 'soh_cell03',
+                                   'soh_cell04', 'soh_cell05', 'soh_cell06', 'soh_cell07',
+                                   'soh_cell08', 'soh_cell09', 'soh_cell10', 'soh_cell11',
+                                   'soh_cell12', 'soh_cell13', 'soh_cell14', 'soh_cell15',
+                                   'soh_cell16', 'soh_cell17', 'soh_cell18', 'soh_cell19',
+                                   'soh_cell20'])
+df_cell_res = pd.DataFrame(columns=['sn', 'time', 'status', 'volt_cell01', 'volt_cell02', 'volt_cell03',
+                                    'volt_cell04', 'volt_cell05', 'volt_cell06', 'volt_cell07',
+                                    'volt_cell08', 'volt_cell09', 'volt_cell10', 'volt_cell11',
+                                    'volt_cell12', 'volt_cell13', 'volt_cell14', 'volt_cell15',
+                                    'volt_cell16', 'volt_cell17', 'volt_cell18', 'volt_cell19',
+                                    'volt_cell20', 'volt_max', 'volt_min', 'volt_avr', 'soc_diff',
+                                    'soc_diff_div', 'over_discharge'])
+
+for sn in sn_list:
+    # 数据读取
+    base_path = r'D:\Work\Interior\Cloud_BMS\data_ana\Data_Files'
+    time = '_from_2020-04-27_to_2021-04-27.csv'
+    bms_file = base_path + r'\\' + sn[0] + '\BMS_' + sn[0] + time
+    gps_file = base_path + r'\\' + sn[0] + '\GPS_' + sn[0] + time
+    # print(bms_file)
+    if not os.path.exists(bms_file):
+        print('{} bms file does not exist!!!!!!'.format(sn[0]))
+        continue
+    if not os.path.exists(gps_file):
+        print('{} gps file does not exist!!!!!!'.format(sn[0]))
+        continue
+    df_bms = pd.read_csv(bms_file, encoding='GB2312')
+    df_gps = pd.read_csv(gps_file, encoding='GB2312')
+    df_bms = df_bms.drop_duplicates(['时间戳'])
+    df_gps = df_gps.drop_duplicates(['时间戳'])
+    df_bms = df_bms.reset_index(drop=True)
+    df_gps = df_gps.reset_index(drop=True)
+    df_bms['时间戳'] = pd.to_datetime(df_bms['时间戳'])
+    df_gps['时间戳'] = pd.to_datetime(df_gps['时间戳'])
+    print('{} data read Well Done!'.format(sn[0]))
+    df_bms.to_csv('result2.csv', index=False, encoding='GB2312')
+    # 数据预处理
+    # 1、数据分段
+    # 2、GPS数据可靠与否的判断(根据GPS计算出的平均车速<2认为可靠)
+    importlib.reload(preprocess.preprocess)
+    df_bms = preprocess.preprocess.data_split(df_bms)
+    df_bms.to_csv('result.csv',encoding='GB2312')
+    df_bms, df_gps, prepro_record = preprocess.preprocess.data_gps_judge(df_bms, df_gps, 2)
+    print('{} data preprocess Well Done!'.format(sn[0]))
+    df_bms.to_csv('result.csv', index=False, encoding='GB2312')
+    df_gps.to_csv('result1.csv', index=False, encoding='GB2312')
+    importlib.reload(ana.parameters)
+    # test = ana.parameters.sta_one_drive_cycle(df_bms, df_gps, prepro_record, time_window=3600*24, step=3600*24, start_time="00:00:00")
+
+    # print(test)
+    # 计算Daily数据
+
+    start_time = df_bms.loc[0, '时间戳']
+    # print(start_time)
+    cur_time = start_time
+    index = 0
+    while cur_time < df_bms.loc[len(df_bms) - 1, '时间戳']:
+        if cur_time.day != start_time.day:
+            break
+        else:
+            index = index + 1
+            cur_time = df_bms.loc[index, '时间戳']
+    start = '00:00:00'
+    start_time = datetime.datetime.strptime(str(df_bms.loc[index, '时间戳'])[0:10] + ' ' + start, '%Y-%m-%d %H:%M:%S')
+    # print(index, start_time)
+    timeDelta = datetime.timedelta(days=1)
+    end_time = start_time + timeDelta
+    # print(start_time, end_time)
+    while end_time < df_bms.loc[len(df_bms) - 1, '时间戳']:
+        # while end_time < df_bms.loc[8500, '时间戳']:
+        df_sel_bms = df_bms[(df_bms['时间戳'] >= start_time) & (df_bms['时间戳'] <= end_time)]
+        df_sel_bms = df_sel_bms.reset_index(drop=True)
+        df_sel_gps = df_gps[(df_gps['时间戳'] >= start_time) & (df_gps['时间戳'] <= end_time)]
+        df_sel_gps = df_sel_gps.reset_index(drop=True)
+        if len(df_sel_bms) == 0:
+            continue
+        date = ana.parameters.get_date(df_sel_bms)
+
+        odo_total, odo_sum, odo_plus = ana.parameters.get_daily_odo(df_sel_bms, df_sel_gps)
+        print('total={},odo={},plus={}'.format(odo_total, odo_sum, odo_plus))
+
+        # 计算单日里程,单日平均车速,单日最高车速
+        # print(start_time)
+        odo, avr_speed, max_speed = ana.parameters.get_daily_odo_and_speed(df_sel_bms, df_sel_gps)
+        # 计算单日使用容量,单日使用能量
+        capacity, energy = ana.parameters.get_daily_capacity_and_energy(df_sel_bms, 55)
+        # 计算单日平均电耗:kwh/100km
+        if odo > 10:
+            energy_rate = energy / odo * 100
+        else:
+            energy_rate = 0
+        # 计算单日累积时间(行驶、静置、充电)
+        acc_time_drive = ana.parameters.get_daily_accum_time(df_sel_bms, 'drive')
+        acc_time_stand = ana.parameters.get_daily_accum_time(df_sel_bms, 'stand')
+        acc_time_charge = ana.parameters.get_daily_accum_time(df_sel_bms, 'charge')
+        # 计算过程平均温度,平均温升(静置、行驶)
+
+        avr_stand_tem, avr_stand_tem_rate = ana.parameters.get_daily_stand_temp(df_sel_bms, 'stand')
+        avr_drive_tem, avr_drive_tem_rate = ana.parameters.get_daily_stand_temp(df_sel_bms, 'drive')
+        # 计算车辆功率
+        max_pwr = ana.parameters.get_daily_max_pwr(df_sel_bms, 'drive')
+        # 计算regen数据,是否有regen以及regen比例
+        regen_flag, regen_rate = ana.parameters.get_daily_regen(df_sel_bms, 'drive')
+        # 计算活动范围,圆心和半径
+
+        center_long, center_lat, rad = ana.parameters.get_working_scope(df_sel_bms, df_sel_gps, 'drive')
+
+        df_res = df_res.append({'sn': sn[0],
+                                'date': date,
+                                'odo': odo,
+                                'capacity': capacity,
+                                'energy': energy,
+                                'energy_rate': energy_rate,
+                                'acc_time_drive': acc_time_drive,
+                                'acc_time_stand': acc_time_stand,
+                                'acc_time_charge': acc_time_charge,
+                                'avr_stand_tem': avr_stand_tem,
+                                'avr_stand_tem_rate': avr_stand_tem_rate,
+                                'max_pwr': max_pwr,
+                                'regen_flag': regen_flag,
+                                'regen_rate': regen_rate,
+                                'avr_speed': avr_speed,
+                                'max_speed': max_speed,
+                                'avr_drive_tem': avr_drive_tem,
+                                'avr_drive_tem_rate': avr_drive_tem_rate,
+                                'center_long': center_long,
+                                'center_lat': center_lat,
+                                'rad': rad}, ignore_index=True)
+        start_time = end_time
+        end_time = start_time + timeDelta
+        # print(end_time,df_bms.loc[len(df_bms) - 1, '时间戳'])
+    print('{} daily data process Well Done!'.format(sn[0]))
+
+    # 计算电池周期性数据
+    df_soh_res_single, df_cell_res_single = ana.parameters.get_soh(df_bms, sn)
+    df_soh_res = pd.concat([df_soh_res, df_soh_res_single], ignore_index=True)
+    df_cell_res = pd.concat([df_cell_res, df_cell_res_single], ignore_index=True)
+    print('{} period data process Well Done!'.format(sn[0]))
+
+path = r'D:\Work\Interior\Cloud_BMS\data_ana\report\daily_data_analysis.csv'
+df_res.to_csv(path, index=False, encoding='GB2312')
+path = r'D:\Work\Interior\Cloud_BMS\data_ana\report\period_data_analysis.xlsx'
+writer = pd.ExcelWriter(path)
+df_soh_res.to_excel(writer, "SOH数据")
+df_cell_res.to_excel(writer, "一致性数据")
 writer.save()

+ 198 - 198
LIB/MIDDLE/ana.py

@@ -1,199 +1,199 @@
-
-import datetime
-import tools.tools
-import pdb
-import pandas as pd
-import numpy as np
-from sklearn.cluster import DBSCAN
-
-# 数据分析
-# 按月统计 停车(静置+充电)发送数据最长的地点
-def sta_stop_position(df_bms, df_gps, days=30):
-    df_res = pd.DataFrame(columns=['time', 'lat', 'long', 'max_duration'])
-    # 从静置+充电数据段,且GPS可靠的数据中进行统计
-    start_time = df_bms.loc[0, '时间戳']
-    timeDelta = datetime.timedelta(days=days)
-    end_time = start_time + timeDelta
-    while end_time < df_bms.loc[len(df_bms)-1, '时间戳']:
-        df_res_temp = pd.DataFrame(columns=['time', 'lat', 'long', 'duration'])
-        df_sel = df_bms[(df_bms['时间戳']>start_time) & (df_bms['时间戳']<=end_time)]
-        data_number_list = sorted(list(set(df_sel[(df_sel['data_status'].isin(['charge', 'stand'])) & (df_sel['gps_rely']==1)
-                                             ]['data_split_by_status'])))
-        # 每段数据的经纬度求均值后记录下来
-        for data_number in data_number_list[:]:
-            df_sel_bms = df_sel[df_sel['data_split_by_status'] == data_number]
-            df_sel_bms = df_sel_bms.reset_index(drop=True)
-            df_sel_gps = df_gps[(df_gps['时间戳']>df_sel_bms.loc[0,'时间戳']) & (df_gps['时间戳']<df_sel_bms.loc[len(df_sel_bms)-1,'时间戳'])]
-            df_sel_gps = df_sel_gps.reset_index(drop=True)
-
-            deltaT = abs(df_sel_gps.loc[0,'时间戳'] - df_sel_gps.loc[len(df_sel_gps)-1,'时间戳']).total_seconds()
-            df_res_temp = df_res_temp.append({'time': df_sel_gps.loc[0,'时间戳'],
-                                    'lat':np.mean(df_sel_gps['纬度']), 
-                                    'long':np.mean(df_sel_gps['经度']), 
-                                    'duration':deltaT}, ignore_index=True)
-
-        # 利用聚类算法,将靠近的停车地点合并
-        # 计算每次停车的GPS地点之间的距离
-        count = len(df_res_temp)
-        dis_mat_half = np.full((count,count), 0.0)
-        for i in range(count):
-            for j in range(i,count):
-                dis_mat_half[i][j] = tools.tools.cal_distance(df_res_temp.loc[i,'lat'],df_res_temp.loc[i,'long'],
-                                                       df_res_temp.loc[j,'lat'],df_res_temp.loc[j,'long'])      
-        dis_mat=np.array(dis_mat_half)+np.transpose(dis_mat_half) 
-
-        # 执行聚类算法,聚类参数:距离50,类内最少样本数10
-        dbscan = DBSCAN(eps=0.05, min_samples=10, metric='precomputed').fit(dis_mat)
-        # 将对应的类内的GPS合并
-        class_label = list(sorted(set(dbscan.labels_)))
-        if -1 in class_label:
-            class_label.remove(-1)
-        for label in class_label:
-            index = sorted(np.where(dbscan.labels_ == label))[0]
-            min_index = index[0]
-            gps_lat = df_res_temp.loc[min_index,'lat']
-            gps_long = df_res_temp.loc[min_index,'long']
-            temp_duration = df_res_temp.loc[min_index,'duration']
-            for i in index[1:]:
-                gps_lat = gps_lat + df_res_temp.loc[i, 'lat']
-                gps_long = gps_long + df_res_temp.loc[i, 'long']
-                temp_duration = temp_duration + df_res_temp.loc[i, 'duration']
-                df_res_temp.drop(index=i, inplace=True)
-            df_res_temp.loc[min_index, 'lat'] = gps_lat/len(index)
-            df_res_temp.loc[min_index, 'long'] = gps_long/len(index)
-            df_res_temp.loc[min_index, 'duration'] = temp_duration
-
-        df_res = df_res.append({'time': start_time[0:10],
-                                    'lat':np.mean(df_sel_gps['纬度']), 
-                                    'long':np.mean(df_sel_gps['经度']), 
-                                    'max_duration':df_res_temp['duration'].max()/3600.0}, ignore_index=True)
-
-        start_time = end_time
-        end_time = end_time + timeDelta
-    return df_res
-
-# 统计单位时间内的累积行车时长、soc累积使用量以及累积行驶里程(若GPS可信)
-# 计算单位时间内行车时长占比, 单位时间内行车soc平均变化量,单位时间内平均里程数。
-# 输入 
-# time_window: 统计时间长度
-# step: 时间窗口滑动步进值
-def sta_one_drive_cycle(df_bms, df_gps, prepro_record, time_window=3600, step=3600, start_time="00:00:00"):
-    st = datetime.datetime.strptime(str(df_bms.loc[0, '时间戳'])[0:10] + ' ' + start_time, '%Y-%m-%d %H:%M:%S')
-    et = st + datetime.timedelta(seconds=time_window)
-    time_list = []
-    driveT_list = []
-    driveSoc_list = []
-    driveOdo_list = []
-    driveOdoRevise_list = []
-    while (et < df_bms.loc[len(df_bms)-1, '时间戳']):
-        df_t = df_bms[(df_bms['时间戳'] > st ) & (df_bms['时间戳'] < et )]
-        df_t = df_t.reset_index(drop=True)
-
-        driveT = 0
-        driveSoc = 0
-        driveOdo = 0
-        driveOdoRevise = 0
-        if not df_t.empty:
-            deltaT = (df_t.loc[len(df_t)-1, '时间戳'] - df_t.loc[0, '时间戳']).total_seconds()
-            df_drive = df_t[df_t['data_status']=='drive']
-            df_drive = df_drive.reset_index(drop=True)
-            data_number_list = sorted(list(set(df_drive['data_split_by_status'])))
-
-            for data_number in data_number_list[:]:
-                df_d = df_drive[df_drive['data_split_by_status'] == data_number]
-                df_d = df_d.reset_index(drop=True)
-                driveT = driveT + (df_d.loc[len(df_d)-1, '时间戳'] - df_d.loc[0, '时间戳']).total_seconds()
-                driveSoc = driveSoc + (df_d.loc[0, 'SOC[%]'] - df_d.loc[len(df_d)-1, 'SOC[%]'])
-                if df_d.loc[0, 'gps_rely'] == 1 and driveOdo != None:
-                    df_sel_gps = df_gps[(df_gps['时间戳']>=df_d.loc[0,'时间戳']) & (df_gps['时间戳']<=df_d.loc[len(df_d)-1,'时间戳'])]
-                    df_sel_gps = df_sel_gps.reset_index(drop=True)
-                    if len(df_sel_gps) > 0:
-                        driveOdo = driveOdo + (df_sel_gps.loc[len(df_sel_gps)-1, 'odo'] - df_sel_gps.loc[0, 'odo'])
-                        
-                    else:
-                        driveOdo = None
-                else:
-                    driveOdo = None 
-        time_list.append(st)
-        driveT_list.append(driveT)
-        driveSoc_list.append(driveSoc)
-        driveOdo_list.append(driveOdo)
-        st = st + datetime.timedelta(seconds=step)
-        et = st + datetime.timedelta(seconds=time_window)
-    if prepro_record['drive']<0.8 and sum(driveSoc_list) > 0:
-        # 计算能耗
-        sum_odo = 0
-        sum_soc = 0
-        for i,odo in enumerate(driveOdo_list):
-            if odo !=0 and not pd.isnull(odo):
-                sum_odo += odo
-                sum_soc += driveSoc_list[i]
-        ene_consump = sum_odo/sum_soc
-        st = datetime.datetime.strptime(str(df_bms.loc[0, '时间戳'])[0:10] + ' ' + start_time, '%Y-%m-%d %H:%M:%S')
-        et = st + datetime.timedelta(seconds=time_window)
-        driveOdoRevise_list = []
-        while (et < df_bms.loc[len(df_bms)-1, '时间戳']):
-            df_t = df_bms[(df_bms['时间戳'] > st ) & (df_bms['时间戳'] < et )]
-            df_t = df_t.reset_index(drop=True)
-
-            driveOdoRevise = 0
-            if not df_t.empty:
-                deltaT = (df_t.loc[len(df_t)-1, '时间戳'] - df_t.loc[0, '时间戳']).total_seconds()
-                df_drive = df_t[df_t['data_status']=='drive']
-                df_drive = df_drive.reset_index(drop=True)
-                data_number_list = sorted(list(set(df_drive['data_split_by_status'])))
-
-                for data_number in data_number_list[:]:
-                    df_d = df_drive[df_drive['data_split_by_status'] == data_number]
-                    df_d = df_d.reset_index(drop=True)
-
-                    if df_d.loc[0, 'gps_rely'] == 1 and driveOdo != None:
-                        df_sel_gps = df_gps[(df_gps['时间戳']>=df_d.loc[0,'时间戳']) & (df_gps['时间戳']<=df_d.loc[len(df_d)-1,'时间戳'])]
-                        df_sel_gps = df_sel_gps.reset_index(drop=True)
-                        if len(df_sel_gps) > 0:
-                            driveOdoRevise = driveOdoRevise + (df_sel_gps.loc[len(df_sel_gps)-1, 'odo'] - df_sel_gps.loc[0, 'odo'])
-                        else:
-                            driveOdoRevise = driveOdoRevise + (df_d.loc[0, 'SOC[%]'] - df_d.loc[len(df_d)-1, 'SOC[%]']) * ene_consump
-                    else:
-                            driveOdoRevise = driveOdoRevise + (df_d.loc[0, 'SOC[%]'] - df_d.loc[len(df_d)-1, 'SOC[%]']) * ene_consump
-            driveOdoRevise_list.append(driveOdoRevise)
-            st = st + datetime.timedelta(seconds=step)
-            et = st + datetime.timedelta(seconds=time_window)
-    else:
-        driveOdoRevise_list = [None] * len(driveSoc_list)
-    df_res = pd.DataFrame({'time':time_list, 'driveT':driveT_list, 'driveSoc':driveSoc_list, 'driveOdo':driveOdo_list, 'driveOdoRevise':driveOdoRevise_list})
-    return df_res
-
-
-# 统计充电前的GPS海拔与充电时的GPS海拔差(若GPS可信)
-def sta_charge_height(df_bms, df_gps):
-    data_number_list = sorted(list(set(df_bms['data_split_by_status'])))
-    df_sel_bms_last = df_bms[df_bms['data_split_by_status'] == 1]
-    df_sel_bms_last = df_sel_bms_last.reset_index(drop=True)
-    time_list = []
-    last_height_list = []
-    height_list = []
-    last_status_list = []
-    for data_number in data_number_list[1:]:
-        df_sel_bms = df_bms[df_bms['data_split_by_status'] == data_number]
-        df_sel_bms = df_sel_bms.reset_index(drop=True)
-        if df_sel_bms_last.loc[0, 'data_status'] != 'charge' and df_sel_bms.loc[0, 'data_status'] == 'charge' and\
-           df_sel_bms_last.loc[0, 'gps_rely'] == 1 and df_sel_bms.loc[0, 'gps_rely'] == 1:
-
-            df_sel_gps_last = df_gps[(df_gps['时间戳']>=df_sel_bms_last.loc[0,'时间戳']) & (df_gps['时间戳']<=df_sel_bms_last.loc[len(df_sel_bms_last)-1,'时间戳'])]
-            df_sel_gps_last = df_sel_gps_last.reset_index(drop=True)
-            df_sel_gps = df_gps[(df_gps['时间戳']>=df_sel_bms.loc[0,'时间戳']) & (df_gps['时间戳']<=df_sel_bms.loc[len(df_sel_bms)-1,'时间戳'])]
-            df_sel_gps = df_sel_gps.reset_index(drop=True)
-            if (df_sel_bms_last.loc[0, 'data_status'] == 'stand'):
-                last_height = df_sel_gps_last['海拔m'].mean()
-            else:
-                last_height = df_sel_gps_last.loc[len(df_sel_gps_last)-1, '海拔m']
-            cur_height = df_sel_gps['海拔m'].mean()
-            time_list.append(df_sel_bms.loc[0, '时间戳'])
-            last_height_list.append(last_height)
-            height_list.append(cur_height)
-            last_status_list.append(df_sel_bms_last.loc[0, 'data_status'])
-        df_sel_bms_last = df_sel_bms.copy()
-
-    df_res = pd.DataFrame({'time':time_list, 'last_status':last_status_list, 'last_height':last_height_list, 'cur_height':height_list, 'diff':np.array(height_list)-np.array(last_height_list)})
+
+import datetime
+import tools.tools
+import pdb
+import pandas as pd
+import numpy as np
+from sklearn.cluster import DBSCAN
+
+# 数据分析
+# 按月统计 停车(静置+充电)发送数据最长的地点
+def sta_stop_position(df_bms, df_gps, days=30):
+    df_res = pd.DataFrame(columns=['time', 'lat', 'long', 'max_duration'])
+    # 从静置+充电数据段,且GPS可靠的数据中进行统计
+    start_time = df_bms.loc[0, '时间戳']
+    timeDelta = datetime.timedelta(days=days)
+    end_time = start_time + timeDelta
+    while end_time < df_bms.loc[len(df_bms)-1, '时间戳']:
+        df_res_temp = pd.DataFrame(columns=['time', 'lat', 'long', 'duration'])
+        df_sel = df_bms[(df_bms['时间戳']>start_time) & (df_bms['时间戳']<=end_time)]
+        data_number_list = sorted(list(set(df_sel[(df_sel['data_status'].isin(['charge', 'stand'])) & (df_sel['gps_rely']==1)
+                                             ]['data_split_by_status'])))
+        # 每段数据的经纬度求均值后记录下来
+        for data_number in data_number_list[:]:
+            df_sel_bms = df_sel[df_sel['data_split_by_status'] == data_number]
+            df_sel_bms = df_sel_bms.reset_index(drop=True)
+            df_sel_gps = df_gps[(df_gps['时间戳']>df_sel_bms.loc[0,'时间戳']) & (df_gps['时间戳']<df_sel_bms.loc[len(df_sel_bms)-1,'时间戳'])]
+            df_sel_gps = df_sel_gps.reset_index(drop=True)
+
+            deltaT = abs(df_sel_gps.loc[0,'时间戳'] - df_sel_gps.loc[len(df_sel_gps)-1,'时间戳']).total_seconds()
+            df_res_temp = df_res_temp.append({'time': df_sel_gps.loc[0,'时间戳'],
+                                    'lat':np.mean(df_sel_gps['纬度']), 
+                                    'long':np.mean(df_sel_gps['经度']), 
+                                    'duration':deltaT}, ignore_index=True)
+
+        # 利用聚类算法,将靠近的停车地点合并
+        # 计算每次停车的GPS地点之间的距离
+        count = len(df_res_temp)
+        dis_mat_half = np.full((count,count), 0.0)
+        for i in range(count):
+            for j in range(i,count):
+                dis_mat_half[i][j] = tools.tools.cal_distance(df_res_temp.loc[i,'lat'],df_res_temp.loc[i,'long'],
+                                                       df_res_temp.loc[j,'lat'],df_res_temp.loc[j,'long'])      
+        dis_mat=np.array(dis_mat_half)+np.transpose(dis_mat_half) 
+
+        # 执行聚类算法,聚类参数:距离50,类内最少样本数10
+        dbscan = DBSCAN(eps=0.05, min_samples=10, metric='precomputed').fit(dis_mat)
+        # 将对应的类内的GPS合并
+        class_label = list(sorted(set(dbscan.labels_)))
+        if -1 in class_label:
+            class_label.remove(-1)
+        for label in class_label:
+            index = sorted(np.where(dbscan.labels_ == label))[0]
+            min_index = index[0]
+            gps_lat = df_res_temp.loc[min_index,'lat']
+            gps_long = df_res_temp.loc[min_index,'long']
+            temp_duration = df_res_temp.loc[min_index,'duration']
+            for i in index[1:]:
+                gps_lat = gps_lat + df_res_temp.loc[i, 'lat']
+                gps_long = gps_long + df_res_temp.loc[i, 'long']
+                temp_duration = temp_duration + df_res_temp.loc[i, 'duration']
+                df_res_temp.drop(index=i, inplace=True)
+            df_res_temp.loc[min_index, 'lat'] = gps_lat/len(index)
+            df_res_temp.loc[min_index, 'long'] = gps_long/len(index)
+            df_res_temp.loc[min_index, 'duration'] = temp_duration
+
+        df_res = df_res.append({'time': start_time[0:10],
+                                    'lat':np.mean(df_sel_gps['纬度']), 
+                                    'long':np.mean(df_sel_gps['经度']), 
+                                    'max_duration':df_res_temp['duration'].max()/3600.0}, ignore_index=True)
+
+        start_time = end_time
+        end_time = end_time + timeDelta
+    return df_res
+
+# 统计单位时间内的累积行车时长、soc累积使用量以及累积行驶里程(若GPS可信)
+# 计算单位时间内行车时长占比, 单位时间内行车soc平均变化量,单位时间内平均里程数。
+# 输入 
+# time_window: 统计时间长度
+# step: 时间窗口滑动步进值
+def sta_one_drive_cycle(df_bms, df_gps, prepro_record, time_window=3600, step=3600, start_time="00:00:00"):
+    st = datetime.datetime.strptime(str(df_bms.loc[0, '时间戳'])[0:10] + ' ' + start_time, '%Y-%m-%d %H:%M:%S')
+    et = st + datetime.timedelta(seconds=time_window)
+    time_list = []
+    driveT_list = []
+    driveSoc_list = []
+    driveOdo_list = []
+    driveOdoRevise_list = []
+    while (et < df_bms.loc[len(df_bms)-1, '时间戳']):
+        df_t = df_bms[(df_bms['时间戳'] > st ) & (df_bms['时间戳'] < et )]
+        df_t = df_t.reset_index(drop=True)
+
+        driveT = 0
+        driveSoc = 0
+        driveOdo = 0
+        driveOdoRevise = 0
+        if not df_t.empty:
+            deltaT = (df_t.loc[len(df_t)-1, '时间戳'] - df_t.loc[0, '时间戳']).total_seconds()
+            df_drive = df_t[df_t['data_status']=='drive']
+            df_drive = df_drive.reset_index(drop=True)
+            data_number_list = sorted(list(set(df_drive['data_split_by_status'])))
+
+            for data_number in data_number_list[:]:
+                df_d = df_drive[df_drive['data_split_by_status'] == data_number]
+                df_d = df_d.reset_index(drop=True)
+                driveT = driveT + (df_d.loc[len(df_d)-1, '时间戳'] - df_d.loc[0, '时间戳']).total_seconds()
+                driveSoc = driveSoc + (df_d.loc[0, 'SOC[%]'] - df_d.loc[len(df_d)-1, 'SOC[%]'])
+                if df_d.loc[0, 'gps_rely'] == 1 and driveOdo != None:
+                    df_sel_gps = df_gps[(df_gps['时间戳']>=df_d.loc[0,'时间戳']) & (df_gps['时间戳']<=df_d.loc[len(df_d)-1,'时间戳'])]
+                    df_sel_gps = df_sel_gps.reset_index(drop=True)
+                    if len(df_sel_gps) > 0:
+                        driveOdo = driveOdo + (df_sel_gps.loc[len(df_sel_gps)-1, 'odo'] - df_sel_gps.loc[0, 'odo'])
+                        
+                    else:
+                        driveOdo = None
+                else:
+                    driveOdo = None 
+        time_list.append(st)
+        driveT_list.append(driveT)
+        driveSoc_list.append(driveSoc)
+        driveOdo_list.append(driveOdo)
+        st = st + datetime.timedelta(seconds=step)
+        et = st + datetime.timedelta(seconds=time_window)
+    if prepro_record['drive']<0.8 and sum(driveSoc_list) > 0:
+        # 计算能耗
+        sum_odo = 0
+        sum_soc = 0
+        for i,odo in enumerate(driveOdo_list):
+            if odo !=0 and not pd.isnull(odo):
+                sum_odo += odo
+                sum_soc += driveSoc_list[i]
+        ene_consump = sum_odo/sum_soc
+        st = datetime.datetime.strptime(str(df_bms.loc[0, '时间戳'])[0:10] + ' ' + start_time, '%Y-%m-%d %H:%M:%S')
+        et = st + datetime.timedelta(seconds=time_window)
+        driveOdoRevise_list = []
+        while (et < df_bms.loc[len(df_bms)-1, '时间戳']):
+            df_t = df_bms[(df_bms['时间戳'] > st ) & (df_bms['时间戳'] < et )]
+            df_t = df_t.reset_index(drop=True)
+
+            driveOdoRevise = 0
+            if not df_t.empty:
+                deltaT = (df_t.loc[len(df_t)-1, '时间戳'] - df_t.loc[0, '时间戳']).total_seconds()
+                df_drive = df_t[df_t['data_status']=='drive']
+                df_drive = df_drive.reset_index(drop=True)
+                data_number_list = sorted(list(set(df_drive['data_split_by_status'])))
+
+                for data_number in data_number_list[:]:
+                    df_d = df_drive[df_drive['data_split_by_status'] == data_number]
+                    df_d = df_d.reset_index(drop=True)
+
+                    if df_d.loc[0, 'gps_rely'] == 1 and driveOdo != None:
+                        df_sel_gps = df_gps[(df_gps['时间戳']>=df_d.loc[0,'时间戳']) & (df_gps['时间戳']<=df_d.loc[len(df_d)-1,'时间戳'])]
+                        df_sel_gps = df_sel_gps.reset_index(drop=True)
+                        if len(df_sel_gps) > 0:
+                            driveOdoRevise = driveOdoRevise + (df_sel_gps.loc[len(df_sel_gps)-1, 'odo'] - df_sel_gps.loc[0, 'odo'])
+                        else:
+                            driveOdoRevise = driveOdoRevise + (df_d.loc[0, 'SOC[%]'] - df_d.loc[len(df_d)-1, 'SOC[%]']) * ene_consump
+                    else:
+                            driveOdoRevise = driveOdoRevise + (df_d.loc[0, 'SOC[%]'] - df_d.loc[len(df_d)-1, 'SOC[%]']) * ene_consump
+            driveOdoRevise_list.append(driveOdoRevise)
+            st = st + datetime.timedelta(seconds=step)
+            et = st + datetime.timedelta(seconds=time_window)
+    else:
+        driveOdoRevise_list = [None] * len(driveSoc_list)
+    df_res = pd.DataFrame({'time':time_list, 'driveT':driveT_list, 'driveSoc':driveSoc_list, 'driveOdo':driveOdo_list, 'driveOdoRevise':driveOdoRevise_list})
+    return df_res
+
+
+# 统计充电前的GPS海拔与充电时的GPS海拔差(若GPS可信)
+def sta_charge_height(df_bms, df_gps):
+    data_number_list = sorted(list(set(df_bms['data_split_by_status'])))
+    df_sel_bms_last = df_bms[df_bms['data_split_by_status'] == 1]
+    df_sel_bms_last = df_sel_bms_last.reset_index(drop=True)
+    time_list = []
+    last_height_list = []
+    height_list = []
+    last_status_list = []
+    for data_number in data_number_list[1:]:
+        df_sel_bms = df_bms[df_bms['data_split_by_status'] == data_number]
+        df_sel_bms = df_sel_bms.reset_index(drop=True)
+        if df_sel_bms_last.loc[0, 'data_status'] != 'charge' and df_sel_bms.loc[0, 'data_status'] == 'charge' and\
+           df_sel_bms_last.loc[0, 'gps_rely'] == 1 and df_sel_bms.loc[0, 'gps_rely'] == 1:
+
+            df_sel_gps_last = df_gps[(df_gps['时间戳']>=df_sel_bms_last.loc[0,'时间戳']) & (df_gps['时间戳']<=df_sel_bms_last.loc[len(df_sel_bms_last)-1,'时间戳'])]
+            df_sel_gps_last = df_sel_gps_last.reset_index(drop=True)
+            df_sel_gps = df_gps[(df_gps['时间戳']>=df_sel_bms.loc[0,'时间戳']) & (df_gps['时间戳']<=df_sel_bms.loc[len(df_sel_bms)-1,'时间戳'])]
+            df_sel_gps = df_sel_gps.reset_index(drop=True)
+            if (df_sel_bms_last.loc[0, 'data_status'] == 'stand'):
+                last_height = df_sel_gps_last['海拔m'].mean()
+            else:
+                last_height = df_sel_gps_last.loc[len(df_sel_gps_last)-1, '海拔m']
+            cur_height = df_sel_gps['海拔m'].mean()
+            time_list.append(df_sel_bms.loc[0, '时间戳'])
+            last_height_list.append(last_height)
+            height_list.append(cur_height)
+            last_status_list.append(df_sel_bms_last.loc[0, 'data_status'])
+        df_sel_bms_last = df_sel_bms.copy()
+
+    df_res = pd.DataFrame({'time':time_list, 'last_status':last_status_list, 'last_height':last_height_list, 'cur_height':height_list, 'diff':np.array(height_list)-np.array(last_height_list)})
     return df_res

+ 665 - 665
LIB/MIDDLE/parameters.py

@@ -1,665 +1,665 @@
-# -*- coding: utf-8 -*-
-"""
-Created on Wed Dec 30 14:38:35 2020
-
-@author: striv
-"""
-# import getdata
-import time
-import datetime
-import numpy as np
-import pandas as pd
-import os
-import matplotlib.pyplot as plt
-import tools.tools
-import importlib
-importlib.reload(tools.tools)
-import math
-from collections import Counter
-from sklearn.cluster import DBSCAN
-
-
-def getcellsoc(Chrg_data_static_cellu,soc_ocv_table):
-    pass
-    x = soc_ocv_table.iloc[:,0]
-    y = soc_ocv_table.iloc[:,1]*1000
-    xnew=np.linspace(0,105,1000)
-    # print(x,y)
-    z1 = np.polyfit(x,y,11)
-    ynew = np.polyval(z1,xnew)
-    data = [xnew,ynew]
-    soc_ocv_ply = pd.DataFrame(data,index=('SOC','OCV')).T
-    cellsoc = pd.DataFrame()
-    cellsoc_list=[]
-    temp = []
-    for i_num,i in enumerate(Chrg_data_static_cellu):
-        i = i /1000.0
-        temp = soc_ocv_table.iloc[:,1]
-        ocv_temp = soc_ocv_table.iloc[:,1].tolist()
-        ocv_temp.append(i)
-        ocv_temp.sort()
-        ocv_index = ocv_temp.index(i)
-        if ocv_index == 0:
-            value = 0
-        elif ocv_index == len(ocv_temp)-1:
-            value = 100
-        else:
-            temp1=ocv_temp[ocv_index-1]
-            temp2=ocv_temp[ocv_index+1]
-            j_temp1 = temp.index[temp==temp1][0]
-            j_temp2 = temp.index[temp==temp2][0]
-            value = (soc_ocv_table.iloc[j_temp1,0]*(temp2-i) + soc_ocv_table.iloc[j_temp2,0]*(i-temp1))/min(1,(temp2 - temp1))
-        cellsoc.loc[0,'cell'+str(i_num+1)] = min([100,value])
-        cellsoc_list.append(cellsoc.loc[0,'cell'+str(i_num+1)])
-        temp = []
-    return cellsoc,cellsoc_list
-
-
-def get_date(df):
-    time = df.loc[0, '时间戳']
-    date = time.strftime('%Y-%m-%d %H:%M:%S')
-    date = date[0:10]
-    return date
-
-def get_daily_odo_and_speed(df,df_gps):
-    data_number_list = sorted(list(set(df[df['data_status'].isin(['drive' or 'stand'])]['data_split_by_status'])))
-    odo_sum = 0
-    res_single = pd.DataFrame(columns=['speed'])
-    max_speed_single = []
-    max_speed = -1
-    for data_number in data_number_list[0:]:
-        df_sel_bms = df[df['data_split_by_status'] == data_number]
-        df_sel_bms = df_sel_bms.reset_index(drop=True)
-        # print('bmsstart={},bmsend={}'.format(df_sel_bms.loc[0, '时间戳'], df_sel_bms.loc[len(df_sel_bms)-1, '时间戳']))
-        df_sel_gps = df_gps[(df_gps['时间戳']>df_sel_bms.loc[0,'时间戳']) & (df_gps['时间戳']<df_sel_bms.loc[len(df_sel_bms)-1,'时间戳'])]
-        df_sel_gps = df_sel_gps.reset_index(drop=True)
-
-        if len(df_sel_gps) >= 2:
-
-            odo, avg_speed, odo_list, speed_list, invalid_flag = tools.tools.cal_odo_speed(df_sel_gps['纬度'], df_sel_gps['经度'],
-                                                                                           df_sel_gps['时间戳'])
-            # print('gpsstart={},gpsend={},odo={}'.format(df_sel_gps.loc[0, '时间戳'], df_sel_gps.loc[len(df_sel_gps) - 1, '时间戳'],odo))
-            # print(df_sel_gps['时间戳'])
-            odo_sum = odo_sum + odo
-            res_single = res_single.append({'speed':avg_speed},ignore_index = True)
-            max_speed_single.append(np.max(speed_list))
-    avr_speed = np.mean(res_single['speed'])
-    if len(max_speed_single) > 0:
-        max_speed = np.max(max_speed_single)
-    return odo_sum, avr_speed, max_speed
-
-
-def get_daily_odo(df,df_gps):
-    odo_sum = 0
-    odo_plus = 0
-    soc_sum = 0
-    data_number_list = sorted(list(set(df[df['data_status'].isin(['drive' or 'stand' or 'charge' or 'None'])]['data_split_by_status'])))
-    data_number_list = sorted(list(set(df['data_split_by_status'])))
-    for i in range(0, len(data_number_list)):
-    # for data_number in data_number_list[0:]:
-        data_number = data_number_list[i]
-        df_sel_bms = df[df['data_split_by_status'] == data_number]
-        # print(df_sel_bms)
-        df_sel_bms = df_sel_bms.reset_index(drop=True)
-        df_sel_gps = df_gps[
-            (df_gps['时间戳'] >= df_sel_bms.loc[0, '时间戳']) & (df_gps['时间戳'] <= df_sel_bms.loc[len(df_sel_bms) - 1, '时间戳'])]
-        df_sel_gps = df_sel_gps.reset_index(drop=True)
-        if len(df_sel_gps) >= 2:
-            odo, avg_speed, odo_list, speed_list, invalid_flag = tools.tools.cal_odo_speed(df_sel_gps['纬度'],
-                                                                                           df_sel_gps['经度'],
-                                                                                           df_sel_gps['时间戳'])
-            soc = abs(df_sel_bms.loc[len(df_sel_bms) - 1, 'SOC[%]'] - df_sel_bms.loc[0, 'SOC[%]'])
-        if len(df_sel_gps) >= 2 and len(df_sel_bms) >= 2:
-            last_df = df_sel_bms[
-            (df_sel_bms['时间戳'] >= df_sel_gps.loc[0, '时间戳']) & (
-                        df_sel_bms['时间戳'] <= df_sel_gps.loc[len(df_sel_gps) - 1, '时间戳'])]
-            last_df = last_df.reset_index(drop=True)
-            last_soc = last_df.loc[len(last_df) - 1, 'SOC[%]']
-            last_time = last_df.loc[len(last_df) - 1, '时间戳']
-        else:
-            last_soc = -1
-        odo_sum = odo_sum + odo
-        soc_sum = soc_sum + soc
-        if i < len(data_number_list) - 1:
-            data_number = data_number_list[i + 1]
-            df_sel_bms = df[df['data_split_by_status'] == data_number]
-            df_sel_bms = df_sel_bms.reset_index(drop=True)
-            df_sel_gps = df_gps[
-        (df_gps['时间戳'] >= df_sel_bms.loc[0, '时间戳']) & (df_gps['时间戳'] <= df_sel_bms.loc[len(df_sel_bms) - 1, '时间戳'])]
-            df_sel_gps = df_sel_gps.reset_index(drop=True)
-            if len(df_sel_gps) >= 2 and len(df_sel_bms) >= 2:
-                cur_df = df_sel_bms[
-                (df_sel_bms['时间戳'] >= df_sel_gps.loc[0, '时间戳']) & (
-                            df_sel_bms['时间戳'] <= df_sel_gps.loc[len(df_sel_gps) - 1, '时间戳'])]
-                cur_df = cur_df.reset_index(drop=True)
-                if len(cur_df)>0:
-                    # print('cur={}'.format(cur_df))
-                    cur_soc = cur_df.loc[0, 'SOC[%]']
-                    cur_time = cur_df.loc[0, '时间戳']
-                else:
-                    cur_soc = -1
-            else:
-                cur_soc = -1
-            print(last_time, cur_time, last_soc, cur_soc)
-            if abs(cur_soc - last_soc) > 1 and soc_sum > 1 and cur_soc >= 0 and last_soc >= 0:
-                odo_plus = odo_plus + odo_sum/soc_sum*abs(cur_soc - last_soc)
-    return odo_sum+odo_plus, odo_sum, odo_plus
-
-def sta_one_drive_cycle(df_bms, df_gps, prepro_record, time_window=3600, step=3600, start_time="00:00:00"):
-    st = datetime.datetime.strptime(str(df_bms.loc[0, '时间戳'])[0:10] + ' ' + start_time, '%Y-%m-%d %H:%M:%S')
-    et = st + datetime.timedelta(seconds=time_window)
-    time_list = []
-    driveT_list = []
-    driveSoc_list = []
-    driveOdo_list = []
-    driveOdoRevise_list = []
-    while (et < df_bms.loc[len(df_bms) - 1, '时间戳']):
-        df_t = df_bms[(df_bms['时间戳'] > st) & (df_bms['时间戳'] < et)]
-        df_t = df_t.reset_index(drop=True)
-
-        driveT = 0
-        driveSoc = 0
-        driveOdo = 0
-        driveOdoRevise = 0
-        if not df_t.empty:
-            deltaT = (df_t.loc[len(df_t) - 1, '时间戳'] - df_t.loc[0, '时间戳']).total_seconds()
-            df_drive = df_t[df_t['data_status'] == 'drive']
-            df_drive = df_drive.reset_index(drop=True)
-            data_number_list = sorted(list(set(df_drive['data_split_by_status'])))
-
-            for data_number in data_number_list[:]:
-                df_d = df_drive[df_drive['data_split_by_status'] == data_number]
-                df_d = df_d.reset_index(drop=True)
-                driveT = driveT + (df_d.loc[len(df_d) - 1, '时间戳'] - df_d.loc[0, '时间戳']).total_seconds()
-                driveSoc = driveSoc + (df_d.loc[0, 'SOC[%]'] - df_d.loc[len(df_d) - 1, 'SOC[%]'])
-                if df_d.loc[0, 'gps_rely'] == 1 and driveOdo != None:
-                    df_sel_gps = df_gps[
-                        (df_gps['时间戳'] >= df_d.loc[0, '时间戳']) & (df_gps['时间戳'] <= df_d.loc[len(df_d) - 1, '时间戳'])]
-                    df_sel_gps = df_sel_gps.reset_index(drop=True)
-                    if len(df_sel_gps) > 0:
-                        driveOdo = driveOdo + (df_sel_gps.loc[len(df_sel_gps) - 1, 'odo'] - df_sel_gps.loc[0, 'odo'])
-
-                    else:
-                        driveOdo = None
-                else:
-                    driveOdo = None
-        time_list.append(st)
-        driveT_list.append(driveT)
-        driveSoc_list.append(driveSoc)
-        driveOdo_list.append(driveOdo)
-        st = st + datetime.timedelta(seconds=step)
-        et = st + datetime.timedelta(seconds=time_window)
-        print(driveOdo_list)
-    if prepro_record['drive'] < 0.8 and sum(driveSoc_list) > 0:
-        # 计算能耗
-        sum_odo = 0
-        sum_soc = 0
-        for i, odo in enumerate(driveOdo_list):
-            if odo != 0 and not pd.isnull(odo):
-                sum_odo += odo
-                sum_soc += driveSoc_list[i]
-        if sum_soc > 0:
-            ene_consump = sum_odo / sum_soc
-        else:
-            ene_consump = -1
-        st = datetime.datetime.strptime(str(df_bms.loc[0, '时间戳'])[0:10] + ' ' + start_time, '%Y-%m-%d %H:%M:%S')
-        et = st + datetime.timedelta(seconds=time_window)
-        driveOdoRevise_list = []
-        while (et < df_bms.loc[len(df_bms) - 1, '时间戳']):
-            df_t = df_bms[(df_bms['时间戳'] > st) & (df_bms['时间戳'] < et)]
-            df_t = df_t.reset_index(drop=True)
-
-            driveOdoRevise = 0
-            if not df_t.empty:
-                deltaT = (df_t.loc[len(df_t) - 1, '时间戳'] - df_t.loc[0, '时间戳']).total_seconds()
-                df_drive = df_t[df_t['data_status'] == 'drive']
-                df_drive = df_drive.reset_index(drop=True)
-                data_number_list = sorted(list(set(df_drive['data_split_by_status'])))
-
-                for data_number in data_number_list[:]:
-                    df_d = df_drive[df_drive['data_split_by_status'] == data_number]
-                    df_d = df_d.reset_index(drop=True)
-
-                    if df_d.loc[0, 'gps_rely'] == 1 and driveOdo != None:
-                        df_sel_gps = df_gps[
-                            (df_gps['时间戳'] >= df_d.loc[0, '时间戳']) & (df_gps['时间戳'] <= df_d.loc[len(df_d) - 1, '时间戳'])]
-                        df_sel_gps = df_sel_gps.reset_index(drop=True)
-                        if len(df_sel_gps) > 0:
-                            driveOdoRevise = driveOdoRevise + (
-                                        df_sel_gps.loc[len(df_sel_gps) - 1, 'odo'] - df_sel_gps.loc[0, 'odo'])
-                        else:
-                            driveOdoRevise = driveOdoRevise + (
-                                        df_d.loc[0, 'SOC[%]'] - df_d.loc[len(df_d) - 1, 'SOC[%]']) * ene_consump
-                    else:
-                        driveOdoRevise = driveOdoRevise + (
-                                    df_d.loc[0, 'SOC[%]'] - df_d.loc[len(df_d) - 1, 'SOC[%]']) * ene_consump
-            driveOdoRevise_list.append(driveOdoRevise)
-            st = st + datetime.timedelta(seconds=step)
-            et = st + datetime.timedelta(seconds=time_window)
-    else:
-        driveOdoRevise_list = [None] * len(driveSoc_list)
-    df_res = pd.DataFrame(
-        {'time': time_list, 'driveT': driveT_list, 'driveSoc': driveSoc_list, 'driveOdo': driveOdo_list,
-         'driveOdoRevise': driveOdoRevise_list})
-    return df_res
-
-
-def get_daily_capacity_and_energy(df, cap):
-    data_number_list = sorted(list(set(df[df['data_status'].isin(['drive'])]['data_split_by_status'])))
-    energy_sum = 0
-    capacity_sum = 0
-    for data_number in data_number_list[0:]:
-        df_sel_bms = df[df['data_split_by_status'] == data_number]
-        df_sel_bms = df_sel_bms.reset_index(drop=True)
-        capacity = (df_sel_bms.loc[0, 'SOC[%]'] - df_sel_bms.loc[len(df_sel_bms)-1,'SOC[%]']) * np.mean(df_sel_bms['SOH[%]']) * \
-               cap / 100 / 100
-        energy = capacity * np.mean(df_sel_bms['总电压[V]']) / 1000
-        capacity_sum = capacity_sum + capacity
-        energy_sum = energy_sum + energy
-    return capacity_sum, energy_sum
-
-def get_daily_accum_time(df, status):
-    data_number_list = sorted(list(set(df[df['data_status'].isin([status])]['data_split_by_status'])))
-    accum_time_sum = 0
-    for data_number in data_number_list[0:]:
-        df_sel_bms = df[df['data_split_by_status'] == data_number]
-        df_sel_bms = df_sel_bms.reset_index(drop=True)
-        accum_time = (df_sel_bms.loc[len(df_sel_bms)-1, '时间戳'] - df_sel_bms.loc[0,'时间戳']).seconds
-        accum_time_sum = accum_time_sum + accum_time / 3600
-    return accum_time_sum
-
-def get_daily_stand_temp(df, status):
-    data_number_list = sorted(list(set(df[df['data_status'].isin([status])]['data_split_by_status'])))
-    res_single = pd.DataFrame(columns = ['avr_tem', 'avr_tem_rate'])
-    cycle = 0
-    avr_tem_sum = 0
-    avr_tem_rate_sum =0
-    avr_tem = 0
-    avr_tem_rate = 0
-    for data_number in data_number_list[0:]:
-        cycle = cycle + 1
-        df_sel_bms = df[df['data_split_by_status'] == data_number]
-        df_sel_bms = df_sel_bms.reset_index(drop=True)
-        avr_tem = np.mean(df_sel_bms['单体温度1'])
-        avr_tem_rate = abs(df_sel_bms.loc[len(df_sel_bms)-1, '单体温度1'] - df_sel_bms.loc[0, '单体温度1'])/\
-                   (df_sel_bms.loc[len(df_sel_bms)-1, '时间戳'] - df_sel_bms.loc[0, '时间戳']).seconds * 3600
-        avr_tem_sum = avr_tem_sum + avr_tem
-        avr_tem_rate_sum = avr_tem_rate_sum + avr_tem_rate
-    if cycle > 0:
-        avr_tem = avr_tem_sum / cycle
-        avr_tem_rate = avr_tem_rate_sum / cycle
-    return avr_tem, avr_tem_rate
-
-def get_daily_max_pwr(df, status):
-    data_number_list = sorted(list(set(df[df['data_status'].isin([status])]['data_split_by_status'])))
-    max_pwr = 0
-    res_pwr = pd.DataFrame(columns=['pwr'])
-    for data_number in data_number_list[0:]:
-        df_sel_bms = df[df['data_split_by_status'] == data_number]
-        df_sel_bms = df_sel_bms.reset_index(drop=True)
-        for index in df_sel_bms.index:
-            res_pwr = res_pwr.append({'pwr':df_sel_bms.loc[index, '总电流[A]'] * df_sel_bms.loc[index, '总电压[V]'] / 1000},
-                             ignore_index=True )
-        max_pwr_single = np.max(res_pwr['pwr'])
-        max_pwr = max(max_pwr, max_pwr_single)
-    return max_pwr
-
-def get_daily_regen(df, status):
-    data_number_list = sorted(list(set(df[df['data_status'].isin([status])]['data_split_by_status'])))
-    regen_flag = 0
-    regen_rate = 0
-    regen_count = 0
-    total_count = 0
-    res_pwr = pd.DataFrame(columns=['pwr'])
-    for data_number in data_number_list[0:]:
-        df_sel_bms = df[df['data_split_by_status'] == data_number]
-        df_sel_bms = df_sel_bms.reset_index(drop=True)
-        regen_count = regen_count + len(df_sel_bms[df_sel_bms['总电流[A]'] < -1])
-        total_count = total_count + len(df_sel_bms)
-    if regen_count > 10:
-        regen_flag = 1
-        regen_rate = regen_count / total_count * 100
-    return regen_flag, regen_rate
-
-def get_working_scope(df,df_gps,status):
-    data_number_list = sorted(list(set(df[df['data_status'].isin([status])]['data_split_by_status'])))
-    dis_single = []
-    rad = 3
-    df_sel_gps = pd.DataFrame(columns=['时间戳','经度','纬度','海拔m','速度[km/h]','odo','speed'])
-    for data_number in data_number_list[0:]:
-        df_sel_bms = df[df['data_split_by_status'] == data_number]
-        df_sel_bms = df_sel_bms.reset_index(drop=True)
-        df_sel_gps_single = df_gps[(df_gps['时间戳']>df_sel_bms.loc[0,'时间戳']) & (df_gps['时间戳']<df_sel_bms.loc[len(df_sel_bms)-1,'时间戳'])]
-        df_sel_gps = df_sel_gps.append(df_sel_gps_single)
-    df_sel_gps = df_sel_gps.reset_index(drop=True)
-    center_long = np.mean(df_sel_gps['经度'])
-    center_lat = np.mean(df_sel_gps['纬度'])
-    for i in range(1, len(df_sel_gps)):
-        dis_single.append(math.sqrt(math.pow((df_sel_gps.loc[i, '经度'] - center_long),2) \
-                         + math.pow((df_sel_gps.loc[i, '纬度'] -center_lat),2)) * 111)
-    dis = sorted(dis_single)
-    if len(dis) > 100:
-        rad = dis[math.floor(len(dis) * 0.99)]
-    else:
-        rad = -1
-    return center_long, center_lat, rad
-
-def get_isc(df, status):
-    total_len = 10
-    data_number_list = sorted(list(set(df[df['data_status'].isin([status])]['data_split_by_status'])))
-#     df_res = pd.DataFrame(columns=['time','limit','t1', 't2','t3', 't4','t5', 't6','t7', 't8','t9', 't10','t11', 't12','t13', 't14','tmean',
-#                           'isc1','isc2','isc3','isc4','isc5','isc6','isc7','isc8','isc9','isc10','isc11','isc12','isc13','isc14',
-#                           'res1','res2','res3','res4','res5','res6','res7','res8','res9','res10','res11','res12','res13','res14'])
-    df_res = pd.DataFrame(columns=['time','limit','t1', 't2','t3', 't4','t5', 't6','t7', 't8','t9', 't10','tmean',
-                          'isc1','isc2','isc3','isc4','isc5','isc6','isc7','isc8','isc9','isc10',
-                          'res1','res2','res3','res4','res5','res6','res7','res8','res9','res10'])
-
-    limits = [3360,3361,3362,3363,3364,3365,3366, 3367, 3368, 3369, 3370]
-    num = len(limits)
-    index = 0
-    dd = -1
-    timestamp = 1545730073
-    base_time = datetime.fromtimestamp(timestamp)
-    for data_number in data_number_list[0:]:
-        dd = dd + 1
-        df_sel_bms = df[df['data_split_by_status'] == data_number]
-        df_sel_bms = df_sel_bms.reset_index(drop=True)
-#         current = np.mean(df_sel_bms[df_sel_bms['总电压[V]']>=limits[0]*14 and df_sel_bms['总电压[V]']<=limits[-1]*14]['总电流[A]'])
-        current = 9
-        if df_sel_bms.loc[0, 'SOC[%]'] > 40:
-#             print('delete_data={},time={},soc={}'.format(dd,df_sel_bms.loc[0, '时间戳'],df_sel_bms.loc[0, 'SOC[%]']))
-            continue
-        else:
-            k = -1
-            for limit in limits:
-                k = k + 1
-                df_res.loc[index,'time'] = df_sel_bms.loc[0, '时间戳']
-                for i in range(1,total_len+1):
-#                     print('data={},index={},limit{}={},cell={},time={}'.format(dd,index,k,limit,i,df_sel_bms.loc[0, '时间戳']))
-                    time_list = sorted(list(set(df_sel_bms[df_sel_bms['单体电压'+ str(i)]==limit]['时间戳'])))
-                    time_list1 = list(df_sel_bms[df_sel_bms['单体电压'+ str(i)]==limit]['时间戳'])
-                    
-#                     print(df_sel_bms['单体电压'+ str(i)])
-#                     print('index={},limit{}={},cell={},time={}'.format(index,k,limit,i,time_list[0]))
-                    df_res.loc[index,'limit'] = limit
-                    if len(time_list) > 0:
-                        time_counter = Counter(time_list1)
-                        most_counterNum = time_counter.most_common(2)
-                        time_raw = most_counterNum[0]
-#                         print('value={},type={}'.format(most_counterNum,type(time_raw)))
-                        time = (time_list[-1] - base_time).seconds
-#                     print('limit={},i={},time={}'.format(limit, i ,time))
-                        df_res.loc[index,'t'+str(i)] = time_list[-1]
-                        df_res.loc[index,'isc'+str(i)] = time
-#                         print('data={},index={},limit{}={},cell={},time={}'.format(dd,index,k,limit,i,time_list[-1]))
-                        if i == total_len:
-                            print(df_res.loc[index,'t1':'t'+str(total_len)])
-                            df_res.loc[index,'tmean'] = np.mean(df_res.loc[index,'isc1':'isc'+str(total_len)])
-                            df_res.loc[index,'isc1':'isc'+str(total_len)] = df_res.loc[index,'isc1':'isc'+str(total_len)] -                                                                       df_res.loc[index,'tmean']
-#                             print('data={},k={},index={}'.format(dd,k,index))
-                            total_index = index
-                            index = index + 1
-#                             df_res.loc[index*num+k,'isc1':'isc14'] = df_res.loc[index*num+k,'t1':'t14'] -                                                                              df_res.loc[index*num+k,'tmean']
-
-                    else:
-#                         print('NoValue_data={},time={},soc={},limit{}={},cell={}'.
-#                               format(dd,df_sel_bms.loc[0, '时间戳'],df_sel_bms.loc[0, 'SOC[%]'],k,limit,i))
-                        break
-    for limit in limits:
-#         print(df_res)
-        data_number_list =  sorted(list(set(df_res[df_res['limit']==limit].index)))
-#         print(data_number_list)
-        df_res.loc[data_number_list[0],'res1':'res'+str(total_len)]=0
-        index = 1
-        for data_number in data_number_list[1:]:
-            for i in range(1,total_len+1):
-                df_res.loc[data_number_list[index],'res'+str(i)]=(df_res.loc[data_number_list[index],'isc'+str(i)] -                                                                    df_res.loc[data_number_list[index-1],'isc'+str(i)])*1000*current /                                                                (df_res.loc[data_number_list[index],'time'] -                                                                          df_res.loc[data_number_list[index-                                                                                         1],'time']).total_seconds()
-            index = index + 1
-    result=[]
-    for i in range(1,total_len+1):
-#         result.append(np.mean(df_res[11:total_index,'res'+str(i)]))
-        mean_value = df_res['res'+str(i)][11:total_index+1].mean()
-        result.append(mean_value)
-#         print('i{}={},total_index={}'.format(i,df_res['res'+str(i)][11:total_index+1],total_index))
-        
-    return df_res,result
-
-
-def get_charge_statics(df, status):
-    # 计算充电行为
-    df_res = pd.DataFrame(columns=['time', 'num','duration','Capacity'])
-    df_res_single = pd.DataFrame(columns=['time','cycle','start_time','stop_time','start_soc','stop_soc','gps_long','gps_lat',])
-    start_time = df_bms.loc[3771, '时间戳']
-    timeDelta = datetime.timedelta(days=1)
-    end_time = start_time + timeDelta
-    while end_time < df_bms.loc[len(df_bms)-1, '时间戳']:
-#     import pdb;pdb.set_trace()
-        cycle = 0
-        df_res_temp = pd.DataFrame(columns=['time', 'num'])
-        df_sel = df_bms[(df_bms['时间戳']>=start_time) & (df_bms['时间戳']<=end_time)]
-        origin_index = list(df_sel.index)
-#     print(origin_index[0])
-        data_number_list = sorted(list(set(df_sel[df_sel['data_status'].isin(['charge'])]['data_split_by_status'])))
-        if (df_bms.loc[origin_index[0], 'data_status'] == df_bms.loc[origin_index[0]-1, 'data_status'] == ['charge']):
-            charge_num = len(data_number_list)-1
-            start = 1
-        else:
-            charge_num = len(data_number_list)
-            start = 0
-    
-        for data_number in data_number_list[start:]:
-        
-            df_sel_bms = df_sel[df_sel['data_split_by_status'] == data_number]
-            df_sel_bms = df_sel_bms.reset_index(drop=True)
-            df_sel_gps = df_gps[(df_gps['时间戳']>df_sel_bms.loc[0,'时间戳']) & (df_gps['时间戳']<df_sel_bms.loc[len(df_sel_bms)-1,'时间戳'])]
-            df_sel_gps = df_sel_gps.reset_index(drop=True)
-        
-            if data_number != data_number_list[start]:
-#             startTime= datetime.datetime.strptime(df_sel_bms.loc[0, '时间戳'],"%Y-%m-%d %H:%M:%S")
-                startTime= df_sel_bms.loc[0, '时间戳']
-                startSoc= df_sel_bms.loc[0, 'SOC[%]']
-                if (startTime - endTime).seconds < 5*60 or abs(endSoc - startSoc) < 5:
-                    reconn = 1
-                else:
-                    reconn = 0
-            else:
-                reconn = 0
-        
-
-#         endTime= datetime.datetime.strptime(df_sel_bms.loc[len(df_sel_bms)-1, '时间戳'],"%Y-%m-%d %H:%M:%S")
-            endTime= df_sel_bms.loc[len(df_sel_bms)-1, '时间戳']
-            endSoc= df_sel_bms.loc[len(df_sel_bms)-1, 'SOC[%]']
-#         index = sorted(np.where(df_sel['data_split_by_union'] == data_number))[0]
-#         print(index)
-#         min_index = index[0]
-#         print(data_number_list)
-#         print(df_sel)
-#          print('start={},index={},data_num={},value={}'.format(start,min_index,data_number,df_sel.loc[min_index+1, '时间戳']))
-#         if ((df_sel_bms.loc[len(df_sel_bms)-1, 'SOC[%]'] - df_sel_bms.loc[0, 'SOC[%]']) > 10.0) and reconn==0:
-            if 1:
-                cycle = cycle + 1
-#             print('cycle = {}, delta = {}'.format(cycle, df_sel_bms.loc[len(df_sel_bms)-1, 'SOC[%]'] - df_sel_bms.loc[0, 'SOC[%]']))
-                df_res_single = df_res_single.append({'time': df_sel.loc[origin_index[0], '时间戳'], 
-                                              'cycle': cycle,
-                                              'start_time': df_sel_bms.loc[0, '时间戳'],
-                                              'stop_time': df_sel_bms.loc[len(df_sel_bms)-1, '时间戳'],
-                                              'start_soc': df_sel_bms.loc[0, 'SOC[%]'],
-                                              'stop_soc': df_sel_bms.loc[len(df_sel_bms)-1, 'SOC[%]'],
-                                              'gps_long': np.mean(df_sel_gps['经度']),
-                                              'gps_lat': np.mean(df_sel_gps['纬度'])}, ignore_index=True)
-#     print(df_sel_bms)
-        df_res = df_res.append({'time': df_sel.loc[origin_index[0], '时间戳'], 
-                            'num': charge_num}, ignore_index=True)
-        start_time = end_time
-        end_time = start_time + timeDelta
-    print(df_res_single)
-
-
-
-
-def get_soh(df_bms, sn):
-    # 计算SOH和一致性
-    df_res = pd.DataFrame(columns=['sn','time', 'accum_ah','soh_cell01','soh_cell02','soh_cell03',
-                               'soh_cell04','soh_cell05','soh_cell06','soh_cell07',
-                               'soh_cell08','soh_cell09','soh_cell10','soh_cell11',
-                               'soh_cell12','soh_cell13','soh_cell14','soh_cell15',
-                               'soh_cell16','soh_cell17','soh_cell18','soh_cell19',
-                               'soh_cell20'])
-    df_cell_res = pd.DataFrame(columns=['sn','time','status','volt_cell01','volt_cell02','volt_cell03',
-                               'volt_cell04','volt_cell05','volt_cell06','volt_cell07',
-                               'volt_cell08','volt_cell09','volt_cell10','volt_cell11',
-                               'volt_cell12','volt_cell13','volt_cell14','volt_cell15',
-                               'volt_cell16','volt_cell17','volt_cell18','volt_cell19',
-                               'volt_cell20','volt_max','volt_min', 'volt_avr','soc_diff','soc_diff_div','over_discharge'])
-
-    df_sel = df_bms
-    # print(sn[0][0:2])
-    if sn[0][0:5] == 'PK504':
-        soc_ocv_table = pd.read_excel(r'D:\Work\Interior\Cloud_BMS\Overall\产品信息\电池OCV表格.xlsx', '60AH')
-        cellcap = 55 # Capacity
-    elif sn[0][0:5] == 'PK501':
-        soc_ocv_table = pd.read_excel(r'D:\Work\Interior\Cloud_BMS\Overall\产品信息\电池OCV表格.xlsx', '40AH')
-        cellcap = 40  # Capacity
-    elif sn[0][0:2] == 'UD':
-        soc_ocv_table = pd.read_excel(r'D:\Work\Interior\Cloud_BMS\Overall\产品信息\电池OCV表格.xlsx', '50AH')
-        cellcap = 50  # Capacity
-
-    cellsoh_list = []
-    data_number_list = sorted(list(set(df_sel[df_sel['data_status'].isin(['charge'])]['data_split_by_status'])))
-    start = 1
-    for data_number in data_number_list[start:-2]:
-        ## 充电以及前后数据全部获取
-        df_sel_bms_relax_start = df_sel[df_sel['data_split_by_status'] == data_number-1]
-        df_sel_bms = df_sel[df_sel['data_split_by_status'] == data_number]
-        df_sel_bms_relax_end = df_sel[df_sel['data_split_by_status'] == data_number+1]
-        origin_index = list(df_sel_bms.index)
-        origin_index_relax_start = list(df_sel_bms_relax_start.index)
-        origin_index_relax_end = list(df_sel_bms_relax_end.index)
-        df_sel_bms_relax_start = df_sel_bms_relax_start.reset_index(drop=True)
-        df_sel_bms = df_sel_bms.reset_index(drop=True)
-        df_sel_bms_relax_end = df_sel_bms_relax_end.reset_index(drop=True)
-        ## 充电前后静置时间
-#         delta_time_start = (df_sel_bms_relax_start.loc[len(df_sel_bms_relax_start)-1,'时间戳'] - df_sel_bms_relax_start.loc[0,'时间戳']).seconds
-        delta_time_end = (df_sel_bms_relax_end.loc[len(df_sel_bms_relax_end)-1,'时间戳'] - df_sel_bms_relax_end.loc[0,'时间戳']).seconds
-#         print(df_sel_bms_relax_start.loc[len(df_sel_bms_relax_start)-1,'时间戳'],
-#               df_sel_bms_relax_start.loc[0,'时间戳'],
-#               df_sel_bms_relax_start.loc[len(df_sel_bms_relax_start)-1,'data_status'],
-#               df_sel_bms_relax_end.loc[len(df_sel_bms_relax_end)-1,'data_status'],
-#               df_sel_bms.loc[0,'时间戳'],
-#               delta_time_start,
-#               delta_time_end)
-        ##  充电前后静置并且充电前静置超过10min,充电后静置超过3h
-        if (df_sel_bms_relax_start.loc[len(df_sel_bms_relax_start)-1,'data_status'] == 'stand' or \
-            df_sel_bms_relax_start.loc[len(df_sel_bms_relax_start)-1,'data_status'] == 'drive') and \
-            df_sel_bms_relax_end.loc[len(df_sel_bms_relax_end)-1,'data_status'] == 'stand' and\
-            delta_time_end > 18000:
-            ## 记录充电相关信息
-            start_time = df_sel_bms.loc[0,'时间戳']
-            end_time = df_sel_bms.loc[len(df_sel_bms)-1,'时间戳']
-            relax_time = df_sel_bms_relax_end.loc[len(df_sel_bms_relax_end)-1,'时间戳']
-            start_current = df_sel_bms_relax_start.loc[len(df_sel_bms_relax_start)-1,'总电流[A]']
-            end_current = df_sel_bms_relax_end.loc[len(df_sel_bms_relax_end)-1,'总电流[A]']
-#             print(start_time,end_time,relax_time,start_current,end_current)
-            ## 记录充电开始前信息
-            start_volt_class = df_sel.loc[origin_index[0]-3,'单体电压1':'单体电压20']
-            start_index = start_volt_class
-            start_index = start_index.apply(lambda x: 1 if x<3.279 or (x > 3.292 and x < 3.307) else 0)
-            start_index = np.array(start_index)
-            start_soc,start_cellsoc_list = getcellsoc(start_volt_class,soc_ocv_table)
-            if np.min(start_volt_class) < 3182:
-                over_discharge = 1
-            else:
-                over_discharge = 0
-            if np.max(start_volt_class) > 3640:
-                over_charge = 1
-            else:
-                over_charge = 0
-            df_cell_res = df_cell_res.append({'sn':sn,
-                                              'time':df_sel.loc[origin_index[0]-3,'时间戳'],
-                                              'status':'start',
-                                              'volt_cell01':start_volt_class[0],'volt_cell02':start_volt_class[1],
-                                              'volt_cell03':start_volt_class[2],'volt_cell04':start_volt_class[3],
-                                              'volt_cell05':start_volt_class[4],'volt_cell06':start_volt_class[5],
-                                              'volt_cell07':start_volt_class[6],'volt_cell08':start_volt_class[7],
-                                              'volt_cell09':start_volt_class[8],'volt_cell10':start_volt_class[9],
-                                              'volt_cell11':start_volt_class[10],'volt_cell12':start_volt_class[11],
-                                              'volt_cell13':start_volt_class[12],'volt_cell14':start_volt_class[13],
-                                              'volt_cell15':start_volt_class[14],'volt_cell16':start_volt_class[15],
-                                              'volt_cell17':start_volt_class[16],'volt_cell18':start_volt_class[17],
-                                              'volt_cell19':start_volt_class[18],'volt_cell20':start_volt_class[19],
-                                              'volt_max':np.max(start_volt_class),
-                                              'volt_min':np.min(start_volt_class), 
-                                              'volt_avr':np.mean(start_volt_class),
-                                              'soc_diff':np.max(start_cellsoc_list)-np.min(start_cellsoc_list),
-                                              'soc_diff_div':np.mean(start_volt_class[0:9])-np.mean(start_volt_class[10:19]),
-                                              'over_discharge':over_discharge,'over_charge':over_charge}, ignore_index=True)
-            ## 记录充电结束信息
-            end_volt_class = df_sel_bms_relax_end.loc[len(df_sel_bms_relax_end)-3,'单体电压1':'单体电压20']
-            end_index = end_volt_class
-            end_index = end_index.apply(lambda x: 1 if x>3.346 or (x > 3.292 and x < 3.307) else 0)
-            end_index = np.array(end_index)
-            end_soc,end_cellsoc_list = getcellsoc(end_volt_class,soc_ocv_table)
-            if np.min(end_volt_class) < 3182:
-                over_discharge = 1
-            else:
-                over_discharge = 0
-            if np.max(end_volt_class) > 3640:
-                over_charge = 1
-            else:
-                over_charge = 0
-            df_cell_res = df_cell_res.append({'sn':sn,
-                                              'time':df_sel_bms_relax_end.loc[len(df_sel_bms_relax_end)-3,'时间戳'],
-                                              'status':'end',
-                                              'volt_cell01':end_volt_class[0],'volt_cell02':end_volt_class[1],
-                                              'volt_cell03':end_volt_class[2],'volt_cell04':end_volt_class[3],
-                                              'volt_cell05':end_volt_class[4],'volt_cell06':end_volt_class[5],
-                                              'volt_cell07':end_volt_class[6],'volt_cell08':end_volt_class[7],
-                                              'volt_cell09':end_volt_class[8],'volt_cell10':end_volt_class[9],
-                                              'volt_cell11':end_volt_class[10],'volt_cell12':end_volt_class[11],
-                                              'volt_cell13':end_volt_class[12],'volt_cell14':end_volt_class[13],
-                                              'volt_cell15':end_volt_class[14],'volt_cell16':end_volt_class[15],
-                                              'volt_cell17':end_volt_class[16],'volt_cell18':end_volt_class[17],
-                                              'volt_cell19':end_volt_class[18],'volt_cell20':end_volt_class[19],
-                                              'volt_max':np.max(end_volt_class),
-                                              'volt_min':np.min(end_volt_class), 
-                                              'volt_avr':np.mean(end_volt_class),
-                                              'soc_diff':np.max(end_cellsoc_list)-np.min(end_cellsoc_list),
-                                              'soc_diff_div':np.mean(end_volt_class[0:9])-np.mean(end_volt_class[10:19]),
-                                              'over_discharge':over_discharge,'over_charge':over_charge}, ignore_index=True)
-            ## 计算过程量,deltaSOC和deltaAh
-            delta_cellsoc_list = np.array(end_cellsoc_list) - np.array(start_cellsoc_list)
-            
-            accum = 0
-            for time_num in range(1,len(df_sel_bms)):
-                delta_time = (df_sel_bms.loc[time_num,'时间戳'] - df_sel_bms.loc[time_num-1,'时间戳']).seconds
-                accum = accum - df_sel_bms.loc[time_num,'总电流[A]']* delta_time/3600
-            ## 单次SOC间隔超过10%,计算SOH
-            if np.mean(delta_cellsoc_list) > 10:
-                cellsoh=accum/delta_cellsoc_list*100/cellcap*100
-#                 cellsoh=cellsoh*start_index*end_index
-#                 print(cellsoh)
-                df_res = df_res.append({'sn':sn,
-                                        'time':df_sel_bms.loc[0,'时间戳'],
-                                        'accum_ah':accum,
-                                        'soh_cell01':cellsoh[0],'soh_cell02':cellsoh[1],'soh_cell03':cellsoh[2],
-                                        'soh_cell04':cellsoh[3],'soh_cell05':cellsoh[4],'soh_cell06':cellsoh[5],
-                                        'soh_cell07':cellsoh[6],'soh_cell08':cellsoh[7],'soh_cell09':cellsoh[8],
-                                        'soh_cell10':cellsoh[9],'soh_cell11':cellsoh[10],'soh_cell12':cellsoh[11],
-                                        'soh_cell13':cellsoh[12],'soh_cell14':cellsoh[13],'soh_cell15':cellsoh[14],
-                                        'soh_cell16':cellsoh[15],'soh_cell17':cellsoh[16],'soh_cell18':cellsoh[17],
-                                        'soh_cell19':cellsoh[18],'soh_cell20':cellsoh[19]},ignore_index=True)
-                cellsoh_list_single=cellsoh.tolist()
-                cellsoh_list.append(cellsoh_list_single)
-                
-    return df_res, df_cell_res
-
-
-def get_charge_start_time(df,status):
-    data_number_list = sorted(list(set(df[df['data_status'].isin([status])]['data_split_by_status'])))
-    for data_number in data_number_list[0:]:
-        df_sel_bms = df[df['data_split_by_status'] == data_number]
-        df_sel_bms = df_sel_bms.reset_index(drop=True)
-        start_time = df_sel_bms.loc[0,'时间戳']
-        start_time = datetime.strftime(start_time, "%H:%M:%S")
-        limit_time = datetime.strptime("20:00:00", "%H:%M:%S")
-        print('start_time{}>20:00:{}'.format(start_time,limit_time))
+# -*- coding: utf-8 -*-
+"""
+Created on Wed Dec 30 14:38:35 2020
+
+@author: striv
+"""
+# import getdata
+import time
+import datetime
+import numpy as np
+import pandas as pd
+import os
+import matplotlib.pyplot as plt
+import tools.tools
+import importlib
+importlib.reload(tools.tools)
+import math
+from collections import Counter
+from sklearn.cluster import DBSCAN
+
+
+def getcellsoc(Chrg_data_static_cellu,soc_ocv_table):
+    pass
+    x = soc_ocv_table.iloc[:,0]
+    y = soc_ocv_table.iloc[:,1]*1000
+    xnew=np.linspace(0,105,1000)
+    # print(x,y)
+    z1 = np.polyfit(x,y,11)
+    ynew = np.polyval(z1,xnew)
+    data = [xnew,ynew]
+    soc_ocv_ply = pd.DataFrame(data,index=('SOC','OCV')).T
+    cellsoc = pd.DataFrame()
+    cellsoc_list=[]
+    temp = []
+    for i_num,i in enumerate(Chrg_data_static_cellu):
+        i = i /1000.0
+        temp = soc_ocv_table.iloc[:,1]
+        ocv_temp = soc_ocv_table.iloc[:,1].tolist()
+        ocv_temp.append(i)
+        ocv_temp.sort()
+        ocv_index = ocv_temp.index(i)
+        if ocv_index == 0:
+            value = 0
+        elif ocv_index == len(ocv_temp)-1:
+            value = 100
+        else:
+            temp1=ocv_temp[ocv_index-1]
+            temp2=ocv_temp[ocv_index+1]
+            j_temp1 = temp.index[temp==temp1][0]
+            j_temp2 = temp.index[temp==temp2][0]
+            value = (soc_ocv_table.iloc[j_temp1,0]*(temp2-i) + soc_ocv_table.iloc[j_temp2,0]*(i-temp1))/min(1,(temp2 - temp1))
+        cellsoc.loc[0,'cell'+str(i_num+1)] = min([100,value])
+        cellsoc_list.append(cellsoc.loc[0,'cell'+str(i_num+1)])
+        temp = []
+    return cellsoc,cellsoc_list
+
+
+def get_date(df):
+    time = df.loc[0, '时间戳']
+    date = time.strftime('%Y-%m-%d %H:%M:%S')
+    date = date[0:10]
+    return date
+
+def get_daily_odo_and_speed(df,df_gps):
+    data_number_list = sorted(list(set(df[df['data_status'].isin(['drive' or 'stand'])]['data_split_by_status'])))
+    odo_sum = 0
+    res_single = pd.DataFrame(columns=['speed'])
+    max_speed_single = []
+    max_speed = -1
+    for data_number in data_number_list[0:]:
+        df_sel_bms = df[df['data_split_by_status'] == data_number]
+        df_sel_bms = df_sel_bms.reset_index(drop=True)
+        # print('bmsstart={},bmsend={}'.format(df_sel_bms.loc[0, '时间戳'], df_sel_bms.loc[len(df_sel_bms)-1, '时间戳']))
+        df_sel_gps = df_gps[(df_gps['时间戳']>df_sel_bms.loc[0,'时间戳']) & (df_gps['时间戳']<df_sel_bms.loc[len(df_sel_bms)-1,'时间戳'])]
+        df_sel_gps = df_sel_gps.reset_index(drop=True)
+
+        if len(df_sel_gps) >= 2:
+
+            odo, avg_speed, odo_list, speed_list, invalid_flag = tools.tools.cal_odo_speed(df_sel_gps['纬度'], df_sel_gps['经度'],
+                                                                                           df_sel_gps['时间戳'])
+            # print('gpsstart={},gpsend={},odo={}'.format(df_sel_gps.loc[0, '时间戳'], df_sel_gps.loc[len(df_sel_gps) - 1, '时间戳'],odo))
+            # print(df_sel_gps['时间戳'])
+            odo_sum = odo_sum + odo
+            res_single = res_single.append({'speed':avg_speed},ignore_index = True)
+            max_speed_single.append(np.max(speed_list))
+    avr_speed = np.mean(res_single['speed'])
+    if len(max_speed_single) > 0:
+        max_speed = np.max(max_speed_single)
+    return odo_sum, avr_speed, max_speed
+
+
+def get_daily_odo(df,df_gps):
+    odo_sum = 0
+    odo_plus = 0
+    soc_sum = 0
+    data_number_list = sorted(list(set(df[df['data_status'].isin(['drive' or 'stand' or 'charge' or 'None'])]['data_split_by_status'])))
+    data_number_list = sorted(list(set(df['data_split_by_status'])))
+    for i in range(0, len(data_number_list)):
+    # for data_number in data_number_list[0:]:
+        data_number = data_number_list[i]
+        df_sel_bms = df[df['data_split_by_status'] == data_number]
+        # print(df_sel_bms)
+        df_sel_bms = df_sel_bms.reset_index(drop=True)
+        df_sel_gps = df_gps[
+            (df_gps['时间戳'] >= df_sel_bms.loc[0, '时间戳']) & (df_gps['时间戳'] <= df_sel_bms.loc[len(df_sel_bms) - 1, '时间戳'])]
+        df_sel_gps = df_sel_gps.reset_index(drop=True)
+        if len(df_sel_gps) >= 2:
+            odo, avg_speed, odo_list, speed_list, invalid_flag = tools.tools.cal_odo_speed(df_sel_gps['纬度'],
+                                                                                           df_sel_gps['经度'],
+                                                                                           df_sel_gps['时间戳'])
+            soc = abs(df_sel_bms.loc[len(df_sel_bms) - 1, 'SOC[%]'] - df_sel_bms.loc[0, 'SOC[%]'])
+        if len(df_sel_gps) >= 2 and len(df_sel_bms) >= 2:
+            last_df = df_sel_bms[
+            (df_sel_bms['时间戳'] >= df_sel_gps.loc[0, '时间戳']) & (
+                        df_sel_bms['时间戳'] <= df_sel_gps.loc[len(df_sel_gps) - 1, '时间戳'])]
+            last_df = last_df.reset_index(drop=True)
+            last_soc = last_df.loc[len(last_df) - 1, 'SOC[%]']
+            last_time = last_df.loc[len(last_df) - 1, '时间戳']
+        else:
+            last_soc = -1
+        odo_sum = odo_sum + odo
+        soc_sum = soc_sum + soc
+        if i < len(data_number_list) - 1:
+            data_number = data_number_list[i + 1]
+            df_sel_bms = df[df['data_split_by_status'] == data_number]
+            df_sel_bms = df_sel_bms.reset_index(drop=True)
+            df_sel_gps = df_gps[
+        (df_gps['时间戳'] >= df_sel_bms.loc[0, '时间戳']) & (df_gps['时间戳'] <= df_sel_bms.loc[len(df_sel_bms) - 1, '时间戳'])]
+            df_sel_gps = df_sel_gps.reset_index(drop=True)
+            if len(df_sel_gps) >= 2 and len(df_sel_bms) >= 2:
+                cur_df = df_sel_bms[
+                (df_sel_bms['时间戳'] >= df_sel_gps.loc[0, '时间戳']) & (
+                            df_sel_bms['时间戳'] <= df_sel_gps.loc[len(df_sel_gps) - 1, '时间戳'])]
+                cur_df = cur_df.reset_index(drop=True)
+                if len(cur_df)>0:
+                    # print('cur={}'.format(cur_df))
+                    cur_soc = cur_df.loc[0, 'SOC[%]']
+                    cur_time = cur_df.loc[0, '时间戳']
+                else:
+                    cur_soc = -1
+            else:
+                cur_soc = -1
+            print(last_time, cur_time, last_soc, cur_soc)
+            if abs(cur_soc - last_soc) > 1 and soc_sum > 1 and cur_soc >= 0 and last_soc >= 0:
+                odo_plus = odo_plus + odo_sum/soc_sum*abs(cur_soc - last_soc)
+    return odo_sum+odo_plus, odo_sum, odo_plus
+
+def sta_one_drive_cycle(df_bms, df_gps, prepro_record, time_window=3600, step=3600, start_time="00:00:00"):
+    st = datetime.datetime.strptime(str(df_bms.loc[0, '时间戳'])[0:10] + ' ' + start_time, '%Y-%m-%d %H:%M:%S')
+    et = st + datetime.timedelta(seconds=time_window)
+    time_list = []
+    driveT_list = []
+    driveSoc_list = []
+    driveOdo_list = []
+    driveOdoRevise_list = []
+    while (et < df_bms.loc[len(df_bms) - 1, '时间戳']):
+        df_t = df_bms[(df_bms['时间戳'] > st) & (df_bms['时间戳'] < et)]
+        df_t = df_t.reset_index(drop=True)
+
+        driveT = 0
+        driveSoc = 0
+        driveOdo = 0
+        driveOdoRevise = 0
+        if not df_t.empty:
+            deltaT = (df_t.loc[len(df_t) - 1, '时间戳'] - df_t.loc[0, '时间戳']).total_seconds()
+            df_drive = df_t[df_t['data_status'] == 'drive']
+            df_drive = df_drive.reset_index(drop=True)
+            data_number_list = sorted(list(set(df_drive['data_split_by_status'])))
+
+            for data_number in data_number_list[:]:
+                df_d = df_drive[df_drive['data_split_by_status'] == data_number]
+                df_d = df_d.reset_index(drop=True)
+                driveT = driveT + (df_d.loc[len(df_d) - 1, '时间戳'] - df_d.loc[0, '时间戳']).total_seconds()
+                driveSoc = driveSoc + (df_d.loc[0, 'SOC[%]'] - df_d.loc[len(df_d) - 1, 'SOC[%]'])
+                if df_d.loc[0, 'gps_rely'] == 1 and driveOdo != None:
+                    df_sel_gps = df_gps[
+                        (df_gps['时间戳'] >= df_d.loc[0, '时间戳']) & (df_gps['时间戳'] <= df_d.loc[len(df_d) - 1, '时间戳'])]
+                    df_sel_gps = df_sel_gps.reset_index(drop=True)
+                    if len(df_sel_gps) > 0:
+                        driveOdo = driveOdo + (df_sel_gps.loc[len(df_sel_gps) - 1, 'odo'] - df_sel_gps.loc[0, 'odo'])
+
+                    else:
+                        driveOdo = None
+                else:
+                    driveOdo = None
+        time_list.append(st)
+        driveT_list.append(driveT)
+        driveSoc_list.append(driveSoc)
+        driveOdo_list.append(driveOdo)
+        st = st + datetime.timedelta(seconds=step)
+        et = st + datetime.timedelta(seconds=time_window)
+        print(driveOdo_list)
+    if prepro_record['drive'] < 0.8 and sum(driveSoc_list) > 0:
+        # 计算能耗
+        sum_odo = 0
+        sum_soc = 0
+        for i, odo in enumerate(driveOdo_list):
+            if odo != 0 and not pd.isnull(odo):
+                sum_odo += odo
+                sum_soc += driveSoc_list[i]
+        if sum_soc > 0:
+            ene_consump = sum_odo / sum_soc
+        else:
+            ene_consump = -1
+        st = datetime.datetime.strptime(str(df_bms.loc[0, '时间戳'])[0:10] + ' ' + start_time, '%Y-%m-%d %H:%M:%S')
+        et = st + datetime.timedelta(seconds=time_window)
+        driveOdoRevise_list = []
+        while (et < df_bms.loc[len(df_bms) - 1, '时间戳']):
+            df_t = df_bms[(df_bms['时间戳'] > st) & (df_bms['时间戳'] < et)]
+            df_t = df_t.reset_index(drop=True)
+
+            driveOdoRevise = 0
+            if not df_t.empty:
+                deltaT = (df_t.loc[len(df_t) - 1, '时间戳'] - df_t.loc[0, '时间戳']).total_seconds()
+                df_drive = df_t[df_t['data_status'] == 'drive']
+                df_drive = df_drive.reset_index(drop=True)
+                data_number_list = sorted(list(set(df_drive['data_split_by_status'])))
+
+                for data_number in data_number_list[:]:
+                    df_d = df_drive[df_drive['data_split_by_status'] == data_number]
+                    df_d = df_d.reset_index(drop=True)
+
+                    if df_d.loc[0, 'gps_rely'] == 1 and driveOdo != None:
+                        df_sel_gps = df_gps[
+                            (df_gps['时间戳'] >= df_d.loc[0, '时间戳']) & (df_gps['时间戳'] <= df_d.loc[len(df_d) - 1, '时间戳'])]
+                        df_sel_gps = df_sel_gps.reset_index(drop=True)
+                        if len(df_sel_gps) > 0:
+                            driveOdoRevise = driveOdoRevise + (
+                                        df_sel_gps.loc[len(df_sel_gps) - 1, 'odo'] - df_sel_gps.loc[0, 'odo'])
+                        else:
+                            driveOdoRevise = driveOdoRevise + (
+                                        df_d.loc[0, 'SOC[%]'] - df_d.loc[len(df_d) - 1, 'SOC[%]']) * ene_consump
+                    else:
+                        driveOdoRevise = driveOdoRevise + (
+                                    df_d.loc[0, 'SOC[%]'] - df_d.loc[len(df_d) - 1, 'SOC[%]']) * ene_consump
+            driveOdoRevise_list.append(driveOdoRevise)
+            st = st + datetime.timedelta(seconds=step)
+            et = st + datetime.timedelta(seconds=time_window)
+    else:
+        driveOdoRevise_list = [None] * len(driveSoc_list)
+    df_res = pd.DataFrame(
+        {'time': time_list, 'driveT': driveT_list, 'driveSoc': driveSoc_list, 'driveOdo': driveOdo_list,
+         'driveOdoRevise': driveOdoRevise_list})
+    return df_res
+
+
+def get_daily_capacity_and_energy(df, cap):
+    data_number_list = sorted(list(set(df[df['data_status'].isin(['drive'])]['data_split_by_status'])))
+    energy_sum = 0
+    capacity_sum = 0
+    for data_number in data_number_list[0:]:
+        df_sel_bms = df[df['data_split_by_status'] == data_number]
+        df_sel_bms = df_sel_bms.reset_index(drop=True)
+        capacity = (df_sel_bms.loc[0, 'SOC[%]'] - df_sel_bms.loc[len(df_sel_bms)-1,'SOC[%]']) * np.mean(df_sel_bms['SOH[%]']) * \
+               cap / 100 / 100
+        energy = capacity * np.mean(df_sel_bms['总电压[V]']) / 1000
+        capacity_sum = capacity_sum + capacity
+        energy_sum = energy_sum + energy
+    return capacity_sum, energy_sum
+
+def get_daily_accum_time(df, status):
+    data_number_list = sorted(list(set(df[df['data_status'].isin([status])]['data_split_by_status'])))
+    accum_time_sum = 0
+    for data_number in data_number_list[0:]:
+        df_sel_bms = df[df['data_split_by_status'] == data_number]
+        df_sel_bms = df_sel_bms.reset_index(drop=True)
+        accum_time = (df_sel_bms.loc[len(df_sel_bms)-1, '时间戳'] - df_sel_bms.loc[0,'时间戳']).seconds
+        accum_time_sum = accum_time_sum + accum_time / 3600
+    return accum_time_sum
+
+def get_daily_stand_temp(df, status):
+    data_number_list = sorted(list(set(df[df['data_status'].isin([status])]['data_split_by_status'])))
+    res_single = pd.DataFrame(columns = ['avr_tem', 'avr_tem_rate'])
+    cycle = 0
+    avr_tem_sum = 0
+    avr_tem_rate_sum =0
+    avr_tem = 0
+    avr_tem_rate = 0
+    for data_number in data_number_list[0:]:
+        cycle = cycle + 1
+        df_sel_bms = df[df['data_split_by_status'] == data_number]
+        df_sel_bms = df_sel_bms.reset_index(drop=True)
+        avr_tem = np.mean(df_sel_bms['单体温度1'])
+        avr_tem_rate = abs(df_sel_bms.loc[len(df_sel_bms)-1, '单体温度1'] - df_sel_bms.loc[0, '单体温度1'])/\
+                   (df_sel_bms.loc[len(df_sel_bms)-1, '时间戳'] - df_sel_bms.loc[0, '时间戳']).seconds * 3600
+        avr_tem_sum = avr_tem_sum + avr_tem
+        avr_tem_rate_sum = avr_tem_rate_sum + avr_tem_rate
+    if cycle > 0:
+        avr_tem = avr_tem_sum / cycle
+        avr_tem_rate = avr_tem_rate_sum / cycle
+    return avr_tem, avr_tem_rate
+
+def get_daily_max_pwr(df, status):
+    data_number_list = sorted(list(set(df[df['data_status'].isin([status])]['data_split_by_status'])))
+    max_pwr = 0
+    res_pwr = pd.DataFrame(columns=['pwr'])
+    for data_number in data_number_list[0:]:
+        df_sel_bms = df[df['data_split_by_status'] == data_number]
+        df_sel_bms = df_sel_bms.reset_index(drop=True)
+        for index in df_sel_bms.index:
+            res_pwr = res_pwr.append({'pwr':df_sel_bms.loc[index, '总电流[A]'] * df_sel_bms.loc[index, '总电压[V]'] / 1000},
+                             ignore_index=True )
+        max_pwr_single = np.max(res_pwr['pwr'])
+        max_pwr = max(max_pwr, max_pwr_single)
+    return max_pwr
+
+def get_daily_regen(df, status):
+    data_number_list = sorted(list(set(df[df['data_status'].isin([status])]['data_split_by_status'])))
+    regen_flag = 0
+    regen_rate = 0
+    regen_count = 0
+    total_count = 0
+    res_pwr = pd.DataFrame(columns=['pwr'])
+    for data_number in data_number_list[0:]:
+        df_sel_bms = df[df['data_split_by_status'] == data_number]
+        df_sel_bms = df_sel_bms.reset_index(drop=True)
+        regen_count = regen_count + len(df_sel_bms[df_sel_bms['总电流[A]'] < -1])
+        total_count = total_count + len(df_sel_bms)
+    if regen_count > 10:
+        regen_flag = 1
+        regen_rate = regen_count / total_count * 100
+    return regen_flag, regen_rate
+
+def get_working_scope(df,df_gps,status):
+    data_number_list = sorted(list(set(df[df['data_status'].isin([status])]['data_split_by_status'])))
+    dis_single = []
+    rad = 3
+    df_sel_gps = pd.DataFrame(columns=['时间戳','经度','纬度','海拔m','速度[km/h]','odo','speed'])
+    for data_number in data_number_list[0:]:
+        df_sel_bms = df[df['data_split_by_status'] == data_number]
+        df_sel_bms = df_sel_bms.reset_index(drop=True)
+        df_sel_gps_single = df_gps[(df_gps['时间戳']>df_sel_bms.loc[0,'时间戳']) & (df_gps['时间戳']<df_sel_bms.loc[len(df_sel_bms)-1,'时间戳'])]
+        df_sel_gps = df_sel_gps.append(df_sel_gps_single)
+    df_sel_gps = df_sel_gps.reset_index(drop=True)
+    center_long = np.mean(df_sel_gps['经度'])
+    center_lat = np.mean(df_sel_gps['纬度'])
+    for i in range(1, len(df_sel_gps)):
+        dis_single.append(math.sqrt(math.pow((df_sel_gps.loc[i, '经度'] - center_long),2) \
+                         + math.pow((df_sel_gps.loc[i, '纬度'] -center_lat),2)) * 111)
+    dis = sorted(dis_single)
+    if len(dis) > 100:
+        rad = dis[math.floor(len(dis) * 0.99)]
+    else:
+        rad = -1
+    return center_long, center_lat, rad
+
+def get_isc(df, status):
+    total_len = 10
+    data_number_list = sorted(list(set(df[df['data_status'].isin([status])]['data_split_by_status'])))
+#     df_res = pd.DataFrame(columns=['time','limit','t1', 't2','t3', 't4','t5', 't6','t7', 't8','t9', 't10','t11', 't12','t13', 't14','tmean',
+#                           'isc1','isc2','isc3','isc4','isc5','isc6','isc7','isc8','isc9','isc10','isc11','isc12','isc13','isc14',
+#                           'res1','res2','res3','res4','res5','res6','res7','res8','res9','res10','res11','res12','res13','res14'])
+    df_res = pd.DataFrame(columns=['time','limit','t1', 't2','t3', 't4','t5', 't6','t7', 't8','t9', 't10','tmean',
+                          'isc1','isc2','isc3','isc4','isc5','isc6','isc7','isc8','isc9','isc10',
+                          'res1','res2','res3','res4','res5','res6','res7','res8','res9','res10'])
+
+    limits = [3360,3361,3362,3363,3364,3365,3366, 3367, 3368, 3369, 3370]
+    num = len(limits)
+    index = 0
+    dd = -1
+    timestamp = 1545730073
+    base_time = datetime.fromtimestamp(timestamp)
+    for data_number in data_number_list[0:]:
+        dd = dd + 1
+        df_sel_bms = df[df['data_split_by_status'] == data_number]
+        df_sel_bms = df_sel_bms.reset_index(drop=True)
+#         current = np.mean(df_sel_bms[df_sel_bms['总电压[V]']>=limits[0]*14 and df_sel_bms['总电压[V]']<=limits[-1]*14]['总电流[A]'])
+        current = 9
+        if df_sel_bms.loc[0, 'SOC[%]'] > 40:
+#             print('delete_data={},time={},soc={}'.format(dd,df_sel_bms.loc[0, '时间戳'],df_sel_bms.loc[0, 'SOC[%]']))
+            continue
+        else:
+            k = -1
+            for limit in limits:
+                k = k + 1
+                df_res.loc[index,'time'] = df_sel_bms.loc[0, '时间戳']
+                for i in range(1,total_len+1):
+#                     print('data={},index={},limit{}={},cell={},time={}'.format(dd,index,k,limit,i,df_sel_bms.loc[0, '时间戳']))
+                    time_list = sorted(list(set(df_sel_bms[df_sel_bms['单体电压'+ str(i)]==limit]['时间戳'])))
+                    time_list1 = list(df_sel_bms[df_sel_bms['单体电压'+ str(i)]==limit]['时间戳'])
+                    
+#                     print(df_sel_bms['单体电压'+ str(i)])
+#                     print('index={},limit{}={},cell={},time={}'.format(index,k,limit,i,time_list[0]))
+                    df_res.loc[index,'limit'] = limit
+                    if len(time_list) > 0:
+                        time_counter = Counter(time_list1)
+                        most_counterNum = time_counter.most_common(2)
+                        time_raw = most_counterNum[0]
+#                         print('value={},type={}'.format(most_counterNum,type(time_raw)))
+                        time = (time_list[-1] - base_time).seconds
+#                     print('limit={},i={},time={}'.format(limit, i ,time))
+                        df_res.loc[index,'t'+str(i)] = time_list[-1]
+                        df_res.loc[index,'isc'+str(i)] = time
+#                         print('data={},index={},limit{}={},cell={},time={}'.format(dd,index,k,limit,i,time_list[-1]))
+                        if i == total_len:
+                            print(df_res.loc[index,'t1':'t'+str(total_len)])
+                            df_res.loc[index,'tmean'] = np.mean(df_res.loc[index,'isc1':'isc'+str(total_len)])
+                            df_res.loc[index,'isc1':'isc'+str(total_len)] = df_res.loc[index,'isc1':'isc'+str(total_len)] -                                                                       df_res.loc[index,'tmean']
+#                             print('data={},k={},index={}'.format(dd,k,index))
+                            total_index = index
+                            index = index + 1
+#                             df_res.loc[index*num+k,'isc1':'isc14'] = df_res.loc[index*num+k,'t1':'t14'] -                                                                              df_res.loc[index*num+k,'tmean']
+
+                    else:
+#                         print('NoValue_data={},time={},soc={},limit{}={},cell={}'.
+#                               format(dd,df_sel_bms.loc[0, '时间戳'],df_sel_bms.loc[0, 'SOC[%]'],k,limit,i))
+                        break
+    for limit in limits:
+#         print(df_res)
+        data_number_list =  sorted(list(set(df_res[df_res['limit']==limit].index)))
+#         print(data_number_list)
+        df_res.loc[data_number_list[0],'res1':'res'+str(total_len)]=0
+        index = 1
+        for data_number in data_number_list[1:]:
+            for i in range(1,total_len+1):
+                df_res.loc[data_number_list[index],'res'+str(i)]=(df_res.loc[data_number_list[index],'isc'+str(i)] -                                                                    df_res.loc[data_number_list[index-1],'isc'+str(i)])*1000*current /                                                                (df_res.loc[data_number_list[index],'time'] -                                                                          df_res.loc[data_number_list[index-                                                                                         1],'time']).total_seconds()
+            index = index + 1
+    result=[]
+    for i in range(1,total_len+1):
+#         result.append(np.mean(df_res[11:total_index,'res'+str(i)]))
+        mean_value = df_res['res'+str(i)][11:total_index+1].mean()
+        result.append(mean_value)
+#         print('i{}={},total_index={}'.format(i,df_res['res'+str(i)][11:total_index+1],total_index))
+        
+    return df_res,result
+
+
+def get_charge_statics(df, status):
+    # 计算充电行为
+    df_res = pd.DataFrame(columns=['time', 'num','duration','Capacity'])
+    df_res_single = pd.DataFrame(columns=['time','cycle','start_time','stop_time','start_soc','stop_soc','gps_long','gps_lat',])
+    start_time = df_bms.loc[3771, '时间戳']
+    timeDelta = datetime.timedelta(days=1)
+    end_time = start_time + timeDelta
+    while end_time < df_bms.loc[len(df_bms)-1, '时间戳']:
+#     import pdb;pdb.set_trace()
+        cycle = 0
+        df_res_temp = pd.DataFrame(columns=['time', 'num'])
+        df_sel = df_bms[(df_bms['时间戳']>=start_time) & (df_bms['时间戳']<=end_time)]
+        origin_index = list(df_sel.index)
+#     print(origin_index[0])
+        data_number_list = sorted(list(set(df_sel[df_sel['data_status'].isin(['charge'])]['data_split_by_status'])))
+        if (df_bms.loc[origin_index[0], 'data_status'] == df_bms.loc[origin_index[0]-1, 'data_status'] == ['charge']):
+            charge_num = len(data_number_list)-1
+            start = 1
+        else:
+            charge_num = len(data_number_list)
+            start = 0
+    
+        for data_number in data_number_list[start:]:
+        
+            df_sel_bms = df_sel[df_sel['data_split_by_status'] == data_number]
+            df_sel_bms = df_sel_bms.reset_index(drop=True)
+            df_sel_gps = df_gps[(df_gps['时间戳']>df_sel_bms.loc[0,'时间戳']) & (df_gps['时间戳']<df_sel_bms.loc[len(df_sel_bms)-1,'时间戳'])]
+            df_sel_gps = df_sel_gps.reset_index(drop=True)
+        
+            if data_number != data_number_list[start]:
+#             startTime= datetime.datetime.strptime(df_sel_bms.loc[0, '时间戳'],"%Y-%m-%d %H:%M:%S")
+                startTime= df_sel_bms.loc[0, '时间戳']
+                startSoc= df_sel_bms.loc[0, 'SOC[%]']
+                if (startTime - endTime).seconds < 5*60 or abs(endSoc - startSoc) < 5:
+                    reconn = 1
+                else:
+                    reconn = 0
+            else:
+                reconn = 0
+        
+
+#         endTime= datetime.datetime.strptime(df_sel_bms.loc[len(df_sel_bms)-1, '时间戳'],"%Y-%m-%d %H:%M:%S")
+            endTime= df_sel_bms.loc[len(df_sel_bms)-1, '时间戳']
+            endSoc= df_sel_bms.loc[len(df_sel_bms)-1, 'SOC[%]']
+#         index = sorted(np.where(df_sel['data_split_by_union'] == data_number))[0]
+#         print(index)
+#         min_index = index[0]
+#         print(data_number_list)
+#         print(df_sel)
+#          print('start={},index={},data_num={},value={}'.format(start,min_index,data_number,df_sel.loc[min_index+1, '时间戳']))
+#         if ((df_sel_bms.loc[len(df_sel_bms)-1, 'SOC[%]'] - df_sel_bms.loc[0, 'SOC[%]']) > 10.0) and reconn==0:
+            if 1:
+                cycle = cycle + 1
+#             print('cycle = {}, delta = {}'.format(cycle, df_sel_bms.loc[len(df_sel_bms)-1, 'SOC[%]'] - df_sel_bms.loc[0, 'SOC[%]']))
+                df_res_single = df_res_single.append({'time': df_sel.loc[origin_index[0], '时间戳'], 
+                                              'cycle': cycle,
+                                              'start_time': df_sel_bms.loc[0, '时间戳'],
+                                              'stop_time': df_sel_bms.loc[len(df_sel_bms)-1, '时间戳'],
+                                              'start_soc': df_sel_bms.loc[0, 'SOC[%]'],
+                                              'stop_soc': df_sel_bms.loc[len(df_sel_bms)-1, 'SOC[%]'],
+                                              'gps_long': np.mean(df_sel_gps['经度']),
+                                              'gps_lat': np.mean(df_sel_gps['纬度'])}, ignore_index=True)
+#     print(df_sel_bms)
+        df_res = df_res.append({'time': df_sel.loc[origin_index[0], '时间戳'], 
+                            'num': charge_num}, ignore_index=True)
+        start_time = end_time
+        end_time = start_time + timeDelta
+    print(df_res_single)
+
+
+
+
+def get_soh(df_bms, sn):
+    # 计算SOH和一致性
+    df_res = pd.DataFrame(columns=['sn','time', 'accum_ah','soh_cell01','soh_cell02','soh_cell03',
+                               'soh_cell04','soh_cell05','soh_cell06','soh_cell07',
+                               'soh_cell08','soh_cell09','soh_cell10','soh_cell11',
+                               'soh_cell12','soh_cell13','soh_cell14','soh_cell15',
+                               'soh_cell16','soh_cell17','soh_cell18','soh_cell19',
+                               'soh_cell20'])
+    df_cell_res = pd.DataFrame(columns=['sn','time','status','volt_cell01','volt_cell02','volt_cell03',
+                               'volt_cell04','volt_cell05','volt_cell06','volt_cell07',
+                               'volt_cell08','volt_cell09','volt_cell10','volt_cell11',
+                               'volt_cell12','volt_cell13','volt_cell14','volt_cell15',
+                               'volt_cell16','volt_cell17','volt_cell18','volt_cell19',
+                               'volt_cell20','volt_max','volt_min', 'volt_avr','soc_diff','soc_diff_div','over_discharge'])
+
+    df_sel = df_bms
+    # print(sn[0][0:2])
+    if sn[0][0:5] == 'PK504':
+        soc_ocv_table = pd.read_excel(r'D:\Work\Interior\Cloud_BMS\Overall\产品信息\电池OCV表格.xlsx', '60AH')
+        cellcap = 55 # Capacity
+    elif sn[0][0:5] == 'PK501':
+        soc_ocv_table = pd.read_excel(r'D:\Work\Interior\Cloud_BMS\Overall\产品信息\电池OCV表格.xlsx', '40AH')
+        cellcap = 40  # Capacity
+    elif sn[0][0:2] == 'UD':
+        soc_ocv_table = pd.read_excel(r'D:\Work\Interior\Cloud_BMS\Overall\产品信息\电池OCV表格.xlsx', '50AH')
+        cellcap = 50  # Capacity
+
+    cellsoh_list = []
+    data_number_list = sorted(list(set(df_sel[df_sel['data_status'].isin(['charge'])]['data_split_by_status'])))
+    start = 1
+    for data_number in data_number_list[start:-2]:
+        ## 充电以及前后数据全部获取
+        df_sel_bms_relax_start = df_sel[df_sel['data_split_by_status'] == data_number-1]
+        df_sel_bms = df_sel[df_sel['data_split_by_status'] == data_number]
+        df_sel_bms_relax_end = df_sel[df_sel['data_split_by_status'] == data_number+1]
+        origin_index = list(df_sel_bms.index)
+        origin_index_relax_start = list(df_sel_bms_relax_start.index)
+        origin_index_relax_end = list(df_sel_bms_relax_end.index)
+        df_sel_bms_relax_start = df_sel_bms_relax_start.reset_index(drop=True)
+        df_sel_bms = df_sel_bms.reset_index(drop=True)
+        df_sel_bms_relax_end = df_sel_bms_relax_end.reset_index(drop=True)
+        ## 充电前后静置时间
+#         delta_time_start = (df_sel_bms_relax_start.loc[len(df_sel_bms_relax_start)-1,'时间戳'] - df_sel_bms_relax_start.loc[0,'时间戳']).seconds
+        delta_time_end = (df_sel_bms_relax_end.loc[len(df_sel_bms_relax_end)-1,'时间戳'] - df_sel_bms_relax_end.loc[0,'时间戳']).seconds
+#         print(df_sel_bms_relax_start.loc[len(df_sel_bms_relax_start)-1,'时间戳'],
+#               df_sel_bms_relax_start.loc[0,'时间戳'],
+#               df_sel_bms_relax_start.loc[len(df_sel_bms_relax_start)-1,'data_status'],
+#               df_sel_bms_relax_end.loc[len(df_sel_bms_relax_end)-1,'data_status'],
+#               df_sel_bms.loc[0,'时间戳'],
+#               delta_time_start,
+#               delta_time_end)
+        ##  充电前后静置并且充电前静置超过10min,充电后静置超过3h
+        if (df_sel_bms_relax_start.loc[len(df_sel_bms_relax_start)-1,'data_status'] == 'stand' or \
+            df_sel_bms_relax_start.loc[len(df_sel_bms_relax_start)-1,'data_status'] == 'drive') and \
+            df_sel_bms_relax_end.loc[len(df_sel_bms_relax_end)-1,'data_status'] == 'stand' and\
+            delta_time_end > 18000:
+            ## 记录充电相关信息
+            start_time = df_sel_bms.loc[0,'时间戳']
+            end_time = df_sel_bms.loc[len(df_sel_bms)-1,'时间戳']
+            relax_time = df_sel_bms_relax_end.loc[len(df_sel_bms_relax_end)-1,'时间戳']
+            start_current = df_sel_bms_relax_start.loc[len(df_sel_bms_relax_start)-1,'总电流[A]']
+            end_current = df_sel_bms_relax_end.loc[len(df_sel_bms_relax_end)-1,'总电流[A]']
+#             print(start_time,end_time,relax_time,start_current,end_current)
+            ## 记录充电开始前信息
+            start_volt_class = df_sel.loc[origin_index[0]-3,'单体电压1':'单体电压20']
+            start_index = start_volt_class
+            start_index = start_index.apply(lambda x: 1 if x<3.279 or (x > 3.292 and x < 3.307) else 0)
+            start_index = np.array(start_index)
+            start_soc,start_cellsoc_list = getcellsoc(start_volt_class,soc_ocv_table)
+            if np.min(start_volt_class) < 3182:
+                over_discharge = 1
+            else:
+                over_discharge = 0
+            if np.max(start_volt_class) > 3640:
+                over_charge = 1
+            else:
+                over_charge = 0
+            df_cell_res = df_cell_res.append({'sn':sn,
+                                              'time':df_sel.loc[origin_index[0]-3,'时间戳'],
+                                              'status':'start',
+                                              'volt_cell01':start_volt_class[0],'volt_cell02':start_volt_class[1],
+                                              'volt_cell03':start_volt_class[2],'volt_cell04':start_volt_class[3],
+                                              'volt_cell05':start_volt_class[4],'volt_cell06':start_volt_class[5],
+                                              'volt_cell07':start_volt_class[6],'volt_cell08':start_volt_class[7],
+                                              'volt_cell09':start_volt_class[8],'volt_cell10':start_volt_class[9],
+                                              'volt_cell11':start_volt_class[10],'volt_cell12':start_volt_class[11],
+                                              'volt_cell13':start_volt_class[12],'volt_cell14':start_volt_class[13],
+                                              'volt_cell15':start_volt_class[14],'volt_cell16':start_volt_class[15],
+                                              'volt_cell17':start_volt_class[16],'volt_cell18':start_volt_class[17],
+                                              'volt_cell19':start_volt_class[18],'volt_cell20':start_volt_class[19],
+                                              'volt_max':np.max(start_volt_class),
+                                              'volt_min':np.min(start_volt_class), 
+                                              'volt_avr':np.mean(start_volt_class),
+                                              'soc_diff':np.max(start_cellsoc_list)-np.min(start_cellsoc_list),
+                                              'soc_diff_div':np.mean(start_volt_class[0:9])-np.mean(start_volt_class[10:19]),
+                                              'over_discharge':over_discharge,'over_charge':over_charge}, ignore_index=True)
+            ## 记录充电结束信息
+            end_volt_class = df_sel_bms_relax_end.loc[len(df_sel_bms_relax_end)-3,'单体电压1':'单体电压20']
+            end_index = end_volt_class
+            end_index = end_index.apply(lambda x: 1 if x>3.346 or (x > 3.292 and x < 3.307) else 0)
+            end_index = np.array(end_index)
+            end_soc,end_cellsoc_list = getcellsoc(end_volt_class,soc_ocv_table)
+            if np.min(end_volt_class) < 3182:
+                over_discharge = 1
+            else:
+                over_discharge = 0
+            if np.max(end_volt_class) > 3640:
+                over_charge = 1
+            else:
+                over_charge = 0
+            df_cell_res = df_cell_res.append({'sn':sn,
+                                              'time':df_sel_bms_relax_end.loc[len(df_sel_bms_relax_end)-3,'时间戳'],
+                                              'status':'end',
+                                              'volt_cell01':end_volt_class[0],'volt_cell02':end_volt_class[1],
+                                              'volt_cell03':end_volt_class[2],'volt_cell04':end_volt_class[3],
+                                              'volt_cell05':end_volt_class[4],'volt_cell06':end_volt_class[5],
+                                              'volt_cell07':end_volt_class[6],'volt_cell08':end_volt_class[7],
+                                              'volt_cell09':end_volt_class[8],'volt_cell10':end_volt_class[9],
+                                              'volt_cell11':end_volt_class[10],'volt_cell12':end_volt_class[11],
+                                              'volt_cell13':end_volt_class[12],'volt_cell14':end_volt_class[13],
+                                              'volt_cell15':end_volt_class[14],'volt_cell16':end_volt_class[15],
+                                              'volt_cell17':end_volt_class[16],'volt_cell18':end_volt_class[17],
+                                              'volt_cell19':end_volt_class[18],'volt_cell20':end_volt_class[19],
+                                              'volt_max':np.max(end_volt_class),
+                                              'volt_min':np.min(end_volt_class), 
+                                              'volt_avr':np.mean(end_volt_class),
+                                              'soc_diff':np.max(end_cellsoc_list)-np.min(end_cellsoc_list),
+                                              'soc_diff_div':np.mean(end_volt_class[0:9])-np.mean(end_volt_class[10:19]),
+                                              'over_discharge':over_discharge,'over_charge':over_charge}, ignore_index=True)
+            ## 计算过程量,deltaSOC和deltaAh
+            delta_cellsoc_list = np.array(end_cellsoc_list) - np.array(start_cellsoc_list)
+            
+            accum = 0
+            for time_num in range(1,len(df_sel_bms)):
+                delta_time = (df_sel_bms.loc[time_num,'时间戳'] - df_sel_bms.loc[time_num-1,'时间戳']).seconds
+                accum = accum - df_sel_bms.loc[time_num,'总电流[A]']* delta_time/3600
+            ## 单次SOC间隔超过10%,计算SOH
+            if np.mean(delta_cellsoc_list) > 10:
+                cellsoh=accum/delta_cellsoc_list*100/cellcap*100
+#                 cellsoh=cellsoh*start_index*end_index
+#                 print(cellsoh)
+                df_res = df_res.append({'sn':sn,
+                                        'time':df_sel_bms.loc[0,'时间戳'],
+                                        'accum_ah':accum,
+                                        'soh_cell01':cellsoh[0],'soh_cell02':cellsoh[1],'soh_cell03':cellsoh[2],
+                                        'soh_cell04':cellsoh[3],'soh_cell05':cellsoh[4],'soh_cell06':cellsoh[5],
+                                        'soh_cell07':cellsoh[6],'soh_cell08':cellsoh[7],'soh_cell09':cellsoh[8],
+                                        'soh_cell10':cellsoh[9],'soh_cell11':cellsoh[10],'soh_cell12':cellsoh[11],
+                                        'soh_cell13':cellsoh[12],'soh_cell14':cellsoh[13],'soh_cell15':cellsoh[14],
+                                        'soh_cell16':cellsoh[15],'soh_cell17':cellsoh[16],'soh_cell18':cellsoh[17],
+                                        'soh_cell19':cellsoh[18],'soh_cell20':cellsoh[19]},ignore_index=True)
+                cellsoh_list_single=cellsoh.tolist()
+                cellsoh_list.append(cellsoh_list_single)
+                
+    return df_res, df_cell_res
+
+
+def get_charge_start_time(df,status):
+    data_number_list = sorted(list(set(df[df['data_status'].isin([status])]['data_split_by_status'])))
+    for data_number in data_number_list[0:]:
+        df_sel_bms = df[df['data_split_by_status'] == data_number]
+        df_sel_bms = df_sel_bms.reset_index(drop=True)
+        start_time = df_sel_bms.loc[0,'时间戳']
+        start_time = datetime.strftime(start_time, "%H:%M:%S")
+        limit_time = datetime.strptime("20:00:00", "%H:%M:%S")
+        print('start_time{}>20:00:{}'.format(start_time,limit_time))

+ 62 - 18
demo.ipynb

@@ -2,18 +2,17 @@
  "cells": [
   {
    "cell_type": "code",
-   "execution_count": 1,
+   "execution_count": 12,
    "metadata": {},
    "outputs": [
     {
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "### start to get data PK504B10100004410 from 2021-06-29 00:00:00 to 2021-06-30 00:00:00\n",
-      "# get data from 2021-06-29 00:00:00 to 2021-06-30 00:00:00......... \n",
-      "Server Error, retry 1...... \n",
-      "Server Error, retry 1...... \n",
-      "all data-getting done, bms_count is 4052, gps_count is 1676, system_count is 86, accum_count is 511 \n",
+      "### start to get data PK50001A100000659 from 2021-07-11 20:00:00 to 2021-07-11 21:00:00\n",
+      "# get data from 2021-07-11 20:00:00 to 2021-07-11 21:00:00......... \n",
+      "Server Error, retry 2...... \n",
+      "all data-getting done, bms_count is 15, gps_count is 0, system_count is 14, accum_count is 2 \n",
       "\n"
      ]
     }
@@ -25,12 +24,13 @@
     "sys.path.append(PathSetting.backend_path)\r\n",
     "import DBManager\r\n",
     "\r\n",
-    "sn = \"PK504B10100004410\"\r\n",
-    "start_time = \"2021-06-29 00:00:00\"\r\n",
-    "end_time = \"2021-06-30 00:00:00\"\r\n",
+    "sn = \"PK50001A100000123\"\r\n",
+    "\r\n",
+    "st = '2021-07-11 17:00:00'\r\n",
+    "et = '2021-07-11 18:00:00'\r\n",
     "\r\n",
     "dbManager = DBManager.DBManager()\r\n",
-    "df_data = dbManager.get_data(sn=sn, start_time=start_time, end_time=end_time, data_groups=['bms', 'gps', 'accum', 'system'])\r\n",
+    "df_data = dbManager.get_data(sn=sn, start_time=st, end_time=et, data_groups=['bms', 'gps', 'accum', 'system'])\r\n",
     "# \r\n",
     "df_bms = df_data['bms']\r\n",
     "df_gps = df_data['gps']\r\n",
@@ -38,6 +38,50 @@
     "df_system = df_data['system']"
    ]
   },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "0     0.0\n",
+       "1     0.0\n",
+       "2     0.0\n",
+       "3     0.0\n",
+       "4     0.0\n",
+       "5     0.0\n",
+       "6     0.0\n",
+       "7     0.0\n",
+       "8     0.0\n",
+       "9     0.0\n",
+       "10    0.0\n",
+       "11    0.0\n",
+       "12    0.0\n",
+       "13    0.0\n",
+       "14    0.0\n",
+       "Name: SOC[%], dtype: float64"
+      ]
+     },
+     "execution_count": 13,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "df_bms[\"SOC[%]\"]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "df_bms.to_csv('tt.csv', encoding='GBK')"
+   ]
+  },
   {
    "cell_type": "code",
    "execution_count": 1,
@@ -48,10 +92,9 @@
      "output_type": "stream",
      "text": [
       "downloading......\n",
-      "### start to get data PK504B10100004410 from 2021-06-29 00:00:00 to 2021-06-30 00:00:00\n",
-      "# get data from 2021-06-29 00:00:00 to 2021-06-30 00:00:00......... \n",
-      "Server Error, retry 1...... \n",
-      "all data-getting done, bms_count is 4052, gps_count is 1676, system_count is 86, accum_count is 511 \n",
+      "### start to get data PK50001A100000680 from 2021-07-06 00:00:00 to 2021-07-07 20:00:00\n",
+      "# get data from 2021-07-07 00:00:00 to 2021-07-07 20:00:00......... \n",
+      "all data-getting done, bms_count is 141, gps_count is 0, system_count is 0, accum_count is 0 \n",
       "\n",
       "downloading success!\n"
      ]
@@ -66,10 +109,11 @@
     "\r\n",
     "tools = Tools.Tools()\r\n",
     "write_path = r''\r\n",
-    "sn = \"PK504B10100004410\"\r\n",
-    "start_time = \"2021-06-29 00:00:00\"\r\n",
-    "end_time = \"2021-06-30 00:00:00\"\r\n",
-    "tools.data_download(write_path=write_path, sn=sn, start_time=start_time, end_time=end_time, data_groups=['bms', 'gps', 'accum', 'system'])"
+    "sn = \"PK50001A100000680\"\r\n",
+    "\r\n",
+    "st = '2021-07-06 00:00:00'\r\n",
+    "et = '2021-07-07 20:00:00'\r\n",
+    "tools.data_download(write_path=write_path, sn=sn, start_time=st, end_time=et, data_groups=['bms'])"
    ]
   },
   {

+ 0 - 0
demo.md


+ 86 - 86
demo.py

@@ -1,87 +1,87 @@
-# 获取数据
-import sys
-import CONFIGURE.PathSetting as PathSetting
-sys.path.append(PathSetting.backend_path)
-import DBManager
-
-dbManager = DBManager.DBManager()
-df_bms, df_gps = dbManager.get_data(sn='PK50201A000002005', start_time='2021-04-01 00:00:00', 
-    end_time='2021-04-05 00:00:00', gps_switch=True, mode=0)
-
-# 下载数据 7255
-import sys
-import CONFIGURE.PathSetting as PathSetting
-sys.path.append(PathSetting.backend_path)
-import Tools 
-
-tools = Tools.Tools()
-write_path = r'D:\Platform\Users\CJH\Download\data'
-st = '2021-06-01 00:00:00'
-et = '2021-06-03 00:00:00'
-tools.data_download(write_path=write_path, sn='UD02030118B4C0010', start_time=st, 
-    end_time=et, mode=1)
-
-# 下载数据 非7255
-import sys
-import CONFIGURE.PathSetting as PathSetting
-sys.path.append(PathSetting.backend_path)
-import Tools
-
-tools = Tools.Tools()
-write_path = r'D:\Platform\Users\WLM\data_ana\Data_Files'
-tools.data_download(write_path=write_path, sn='PK504B00100004017', start_time='2021-04-01 00:00:00', 
-    end_time='2021-04-05 00:00:00', gps_switch=True, mode=0)
-
-# 数据预处理
-import sys
-import CONFIGURE.PathSetting as PathSetting
-sys.path.append(PathSetting.backend_path)
-import DataPreProcess
-importlib.reload(DataPreProcess)
-dataPrePro = DataPreProcess.DataPreProcess()
-
-# 时间完全相同的数据仅保留一行
-df_bms_pro, df_gps_pro = dataPrePro.time_filter(df_bms, df_gps)
-
-# bms数据按照电流和状态分段, 然后在状态分段内部,根据时间跳变继续分段(解决段内数据丢失)
-df_bms_pro = dataPrePro.data_split_by_status(df_bms_pro)
-df_bms_pro = dataPrePro.data_split_by_time(df_bms_pro)
-
-# bms数据将两次充电间的状态合并
-df_bms_pro = dataPrePro.combine_drive_stand(df_bms_pro)
-# bms 数据计算行车和充电开始前后的静置时间
-df_bms_pro = dataPrePro.cal_stand_time(df_bms_pro)
-# gps 数据可靠性判断, 并增加里程和速度至gps数据(根据未合并的数据段判断)
-df_bms_pro, df_gps_pro, res_record= dataPrePro.gps_data_judge(df_bms_pro, df_gps_pro)
-# gps 数据可靠性判断, 并增加里程和速度至gps数据(根据已合并的数据段判断)
-df_bms_pro, df_gps_pro, res_record= dataPrePro.data_gps_judge_after_combine(df_bms_pro, df_gps_pro)
-
-
-
-# 单cycle指标统计
-import sys
-import CONFIGURE.PathSetting as PathSetting
-sys.path.append(PathSetting.middle_path)
-#import IndexStaByOneCycle
-import importlib
-importlib.reload(IndexStaByOneCycle) 
-
-indexSta = IndexStaByOneCycle.IndexStaByOneCycle()
-
-data_number_list = sorted(list(set(df_bms[(df_bms['data_status'].isin(['drive']))]['data_split_by_status'])))
-for data_number in data_number_list[:]:
-    df_sel_bms = df_bms[df_bms['data_split_by_status'] == data_number]
-    df_sel_bms = df_sel_bms.reset_index(drop=True)
-    df_sel_gps = df_gps[(df_gps['时间戳']>df_sel_bms.loc[0,'时间戳']) & (df_gps['时间戳']<df_sel_bms.loc[len(df_sel_bms)-1,'时间戳'])]
-    df_sel_gps = df_sel_gps.reset_index(drop=True)
-
-    print(indexSta.odo_sta(np.array(df_sel_gps['odo'])))
-    print(indexSta.capacity_sta(40, np.array(df_sel_bms['SOC[%]']), np.array(df_sel_bms['SOH[%]'])))
-    print(indexSta.energy_sta(40, np.array(df_sel_bms['SOC[%]']), np.array(df_sel_bms['SOH[%]']),np.array(df_sel_bms['总电压[V]'])))
-    print(indexSta.acc_time_sta(np.array(df_sel_bms['时间戳'])))
-    print(indexSta.mean_temp_sta(np.array(df_sel_bms['单体温度1'])))
-    print(indexSta.temp_change_rate_sta(np.array(df_sel_bms['时间戳']), np.array(df_sel_bms['单体温度1'])))
-    print(indexSta.dischrg_max_pwr_sta(np.array(df_sel_bms['总电压[V]']), np.array(df_sel_bms['总电流[A]'])))
-    print(indexSta.chrg_max_pwr_sta(np.array(df_sel_bms['总电压[V]']), np.array(df_sel_bms['总电流[A]'])))
-    print(indexSta.speed_sta(indexSta.odo_sta(np.array(df_sel_gps['odo'])), indexSta.acc_time_sta(np.array(df_sel_gps['时间戳'])), np.array(df_sel_gps['speed'])))
+# 获取数据
+import sys
+import CONFIGURE.PathSetting as PathSetting
+sys.path.append(PathSetting.backend_path)
+import DBManager
+
+dbManager = DBManager.DBManager()
+df_bms, df_gps = dbManager.get_data(sn='PK50201A000002005', start_time='2021-04-01 00:00:00', 
+    end_time='2021-04-05 00:00:00', gps_switch=True, mode=0)
+
+# 下载数据 7255
+import sys
+import CONFIGURE.PathSetting as PathSetting
+sys.path.append(PathSetting.backend_path)
+import Tools 
+
+tools = Tools.Tools()
+write_path = r'D:\Platform\Users\CJH\Download\data'
+st = '2021-06-01 00:00:00'
+et = '2021-06-03 00:00:00'
+tools.data_download(write_path=write_path, sn='UD02030118B4C0010', start_time=st, 
+    end_time=et, mode=1)
+
+# 下载数据 非7255
+import sys
+import CONFIGURE.PathSetting as PathSetting
+sys.path.append(PathSetting.backend_path)
+import Tools
+
+tools = Tools.Tools()
+write_path = r'D:\Platform\Users\WLM\data_ana\Data_Files'
+tools.data_download(write_path=write_path, sn='PK504B00100004017', start_time='2021-04-01 00:00:00', 
+    end_time='2021-04-05 00:00:00', gps_switch=True, mode=0)
+
+# 数据预处理
+import sys
+import CONFIGURE.PathSetting as PathSetting
+sys.path.append(PathSetting.backend_path)
+import DataPreProcess
+importlib.reload(DataPreProcess)
+dataPrePro = DataPreProcess.DataPreProcess()
+
+# 时间完全相同的数据仅保留一行
+df_bms_pro, df_gps_pro = dataPrePro.time_filter(df_bms, df_gps)
+
+# bms数据按照电流和状态分段, 然后在状态分段内部,根据时间跳变继续分段(解决段内数据丢失)
+df_bms_pro = dataPrePro.data_split_by_status(df_bms_pro)
+df_bms_pro = dataPrePro.data_split_by_time(df_bms_pro)
+
+# bms数据将两次充电间的状态合并
+df_bms_pro = dataPrePro.combine_drive_stand(df_bms_pro)
+# bms 数据计算行车和充电开始前后的静置时间
+df_bms_pro = dataPrePro.cal_stand_time(df_bms_pro)
+# gps 数据可靠性判断, 并增加里程和速度至gps数据(根据未合并的数据段判断)
+df_bms_pro, df_gps_pro, res_record= dataPrePro.gps_data_judge(df_bms_pro, df_gps_pro)
+# gps 数据可靠性判断, 并增加里程和速度至gps数据(根据已合并的数据段判断)
+df_bms_pro, df_gps_pro, res_record= dataPrePro.data_gps_judge_after_combine(df_bms_pro, df_gps_pro)
+
+
+
+# 单cycle指标统计
+import sys
+import CONFIGURE.PathSetting as PathSetting
+sys.path.append(PathSetting.middle_path)
+#import IndexStaByOneCycle
+import importlib
+importlib.reload(IndexStaByOneCycle) 
+
+indexSta = IndexStaByOneCycle.IndexStaByOneCycle()
+
+data_number_list = sorted(list(set(df_bms[(df_bms['data_status'].isin(['drive']))]['data_split_by_status'])))
+for data_number in data_number_list[:]:
+    df_sel_bms = df_bms[df_bms['data_split_by_status'] == data_number]
+    df_sel_bms = df_sel_bms.reset_index(drop=True)
+    df_sel_gps = df_gps[(df_gps['时间戳']>df_sel_bms.loc[0,'时间戳']) & (df_gps['时间戳']<df_sel_bms.loc[len(df_sel_bms)-1,'时间戳'])]
+    df_sel_gps = df_sel_gps.reset_index(drop=True)
+
+    print(indexSta.odo_sta(np.array(df_sel_gps['odo'])))
+    print(indexSta.capacity_sta(40, np.array(df_sel_bms['SOC[%]']), np.array(df_sel_bms['SOH[%]'])))
+    print(indexSta.energy_sta(40, np.array(df_sel_bms['SOC[%]']), np.array(df_sel_bms['SOH[%]']),np.array(df_sel_bms['总电压[V]'])))
+    print(indexSta.acc_time_sta(np.array(df_sel_bms['时间戳'])))
+    print(indexSta.mean_temp_sta(np.array(df_sel_bms['单体温度1'])))
+    print(indexSta.temp_change_rate_sta(np.array(df_sel_bms['时间戳']), np.array(df_sel_bms['单体温度1'])))
+    print(indexSta.dischrg_max_pwr_sta(np.array(df_sel_bms['总电压[V]']), np.array(df_sel_bms['总电流[A]'])))
+    print(indexSta.chrg_max_pwr_sta(np.array(df_sel_bms['总电压[V]']), np.array(df_sel_bms['总电流[A]'])))
+    print(indexSta.speed_sta(indexSta.odo_sta(np.array(df_sel_gps['odo'])), indexSta.acc_time_sta(np.array(df_sel_gps['时间戳'])), np.array(df_sel_gps['speed'])))
     break

+ 110 - 110
函数说明/DBManager.html

@@ -1,111 +1,111 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html><head><title>Python: module DBManager</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-</head><body bgcolor="#f0f0f8">
-
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
-<tr bgcolor="#7799ee">
-<td valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong>DBManager</strong></big></big></font></td
-><td align=right valign=bottom
-><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:f%3A%5Cwork%5Cqx%5Cdata_analyze_platform%5Clib%5Cbackend%5Cdbmanager.py">f:\work\qx\data_analyze_platform\lib\backend\dbmanager.py</a></font></td></tr></table>
-    <p><tt>暂时采用http方式获取历史数据。<br>
-&nbsp;<br>
-预留:后期若改用通过访问数据库的形式进行数据的获取,则本文件负责数据库的连接,sql指令的执行,数据获取等功能。</tt></p>
-<p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#aa55cc">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="datetime.html">datetime</a><br>
-<a href="json.html">json</a><br>
-<a href="numpy.html">numpy</a><br>
-</td><td width="25%" valign=top><a href="os.html">os</a><br>
-<a href="pandas.html">pandas</a><br>
-<a href="pdb.html">pdb</a><br>
-</td><td width="25%" valign=top><a href="requests.html">requests</a><br>
-<a href="time.html">time</a><br>
-<a href="urllib.html">urllib</a><br>
-</td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ee77aa">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%"><dl>
-<dt><font face="helvetica, arial"><a href="builtins.html#object">builtins.object</a>
-</font></dt><dd>
-<dl>
-<dt><font face="helvetica, arial"><a href="DBManager.html#DBManager">DBManager</a>
-</font></dt></dl>
-</dd>
-</dl>
- <p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ffc8d8">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#000000" face="helvetica, arial"><a name="DBManager">class <strong>DBManager</strong></a>(<a href="builtins.html#object">builtins.object</a>)</font></td></tr>
-    
-<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
-<td colspan=2><tt><a href="#DBManager">DBManager</a>(host='',&nbsp;port='',&nbsp;auth='',&nbsp;db='',&nbsp;username='',&nbsp;password='')<br>
-&nbsp;<br>
-#&nbsp;import&nbsp;http.client<br>
-#&nbsp;http.client.HTTPConnection._http_vsn&nbsp;=&nbsp;10<br>
-#&nbsp;http.client.HTTPConnection._http_vsn_str&nbsp;=&nbsp;'HTTP/1.1'<br>&nbsp;</tt></td></tr>
-<tr><td>&nbsp;</td>
-<td width="100%">Methods defined here:<br>
-<dl><dt><a name="DBManager-__enter__"><strong>__enter__</strong></a>(self)</dt></dl>
-
-<dl><dt><a name="DBManager-__exit__"><strong>__exit__</strong></a>(self)</dt></dl>
-
-<dl><dt><a name="DBManager-__init__"><strong>__init__</strong></a>(self, host='', port='', auth='', db='', username='', password='')</dt><dd><tt>Initialize&nbsp;self.&nbsp;&nbsp;See&nbsp;help(type(self))&nbsp;for&nbsp;accurate&nbsp;signature.</tt></dd></dl>
-
-<dl><dt><a name="DBManager-close"><strong>close</strong></a>(self)</dt></dl>
-
-<dl><dt><a name="DBManager-connect"><strong>connect</strong></a>(self)</dt></dl>
-
-<dl><dt><a name="DBManager-get_data"><strong>get_data</strong></a>(self, url='http://172.16.126.13/store/load?dataType={}&amp;limit=0&amp;sn={}', sn='', start_time='', end_time='', data_groups=['bms', 'gps'])</dt><dd><tt>获取指定&nbsp;sn&nbsp;和起止日期的bms和gps数据.<br>
-添加了重试机制。<br>
-&nbsp;<br>
---------------输入参数------------<br>
-url:数据获取url,&nbsp;可采用默认值<br>
-sn:&nbsp;str,&nbsp;电池sn号<br>
-start_time:&nbsp;str,&nbsp;开始时间<br>
-end_time:&nbsp;str,&nbsp;结束时间<br>
-data_groups:&nbsp;&nbsp;选择需要获取的数据组,可填入多个字符串(默认只获取bms和gps数据)<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bms:&nbsp;bms数据<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gps:gps数据<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;system:system数据<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;accum:accum数据<br>
-&nbsp;<br>
-&nbsp;<br>
---------------输出参数------------<br>
-df_data:&nbsp;{'bms':dataframe,&nbsp;'gps':dataframe,&nbsp;'system':dataframe,&nbsp;;accum':dataframe}</tt></dd></dl>
-
-<hr>
-Data descriptors defined here:<br>
-<dl><dt><strong>__dict__</strong></dt>
-<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
-</dl>
-<dl><dt><strong>__weakref__</strong></dt>
-<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
-</dl>
-</td></tr></table></td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#55aa55">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%"><strong>S</strong> = &lt;RegexFlag.DOTALL: 16&gt;</td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#7799ee">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%">wlm</td></tr></table>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: module DBManager</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+</head><body bgcolor="#f0f0f8">
+
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+<tr bgcolor="#7799ee">
+<td valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong>DBManager</strong></big></big></font></td
+><td align=right valign=bottom
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:f%3A%5Cwork%5Cqx%5Cdata_analyze_platform%5Clib%5Cbackend%5Cdbmanager.py">f:\work\qx\data_analyze_platform\lib\backend\dbmanager.py</a></font></td></tr></table>
+    <p><tt>暂时采用http方式获取历史数据。<br>
+&nbsp;<br>
+预留:后期若改用通过访问数据库的形式进行数据的获取,则本文件负责数据库的连接,sql指令的执行,数据获取等功能。</tt></p>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#aa55cc">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="datetime.html">datetime</a><br>
+<a href="json.html">json</a><br>
+<a href="numpy.html">numpy</a><br>
+</td><td width="25%" valign=top><a href="os.html">os</a><br>
+<a href="pandas.html">pandas</a><br>
+<a href="pdb.html">pdb</a><br>
+</td><td width="25%" valign=top><a href="requests.html">requests</a><br>
+<a href="time.html">time</a><br>
+<a href="urllib.html">urllib</a><br>
+</td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ee77aa">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><dl>
+<dt><font face="helvetica, arial"><a href="builtins.html#object">builtins.object</a>
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="DBManager.html#DBManager">DBManager</a>
+</font></dt></dl>
+</dd>
+</dl>
+ <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="DBManager">class <strong>DBManager</strong></a>(<a href="builtins.html#object">builtins.object</a>)</font></td></tr>
+    
+<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
+<td colspan=2><tt><a href="#DBManager">DBManager</a>(host='',&nbsp;port='',&nbsp;auth='',&nbsp;db='',&nbsp;username='',&nbsp;password='')<br>
+&nbsp;<br>
+#&nbsp;import&nbsp;http.client<br>
+#&nbsp;http.client.HTTPConnection._http_vsn&nbsp;=&nbsp;10<br>
+#&nbsp;http.client.HTTPConnection._http_vsn_str&nbsp;=&nbsp;'HTTP/1.1'<br>&nbsp;</tt></td></tr>
+<tr><td>&nbsp;</td>
+<td width="100%">Methods defined here:<br>
+<dl><dt><a name="DBManager-__enter__"><strong>__enter__</strong></a>(self)</dt></dl>
+
+<dl><dt><a name="DBManager-__exit__"><strong>__exit__</strong></a>(self)</dt></dl>
+
+<dl><dt><a name="DBManager-__init__"><strong>__init__</strong></a>(self, host='', port='', auth='', db='', username='', password='')</dt><dd><tt>Initialize&nbsp;self.&nbsp;&nbsp;See&nbsp;help(type(self))&nbsp;for&nbsp;accurate&nbsp;signature.</tt></dd></dl>
+
+<dl><dt><a name="DBManager-close"><strong>close</strong></a>(self)</dt></dl>
+
+<dl><dt><a name="DBManager-connect"><strong>connect</strong></a>(self)</dt></dl>
+
+<dl><dt><a name="DBManager-get_data"><strong>get_data</strong></a>(self, url='http://172.16.126.13/store/load?dataType={}&amp;limit=0&amp;sn={}', sn='', start_time='', end_time='', data_groups=['bms', 'gps'])</dt><dd><tt>获取指定&nbsp;sn&nbsp;和起止日期的bms和gps数据.<br>
+添加了重试机制。<br>
+&nbsp;<br>
+--------------输入参数------------<br>
+url:数据获取url,&nbsp;可采用默认值<br>
+sn:&nbsp;str,&nbsp;电池sn号<br>
+start_time:&nbsp;str,&nbsp;开始时间<br>
+end_time:&nbsp;str,&nbsp;结束时间<br>
+data_groups:&nbsp;&nbsp;选择需要获取的数据组,可填入多个字符串(默认只获取bms和gps数据)<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bms:&nbsp;bms数据<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gps:gps数据<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;system:system数据<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;accum:accum数据<br>
+&nbsp;<br>
+&nbsp;<br>
+--------------输出参数------------<br>
+df_data:&nbsp;{'bms':dataframe,&nbsp;'gps':dataframe,&nbsp;'system':dataframe,&nbsp;;accum':dataframe}</tt></dd></dl>
+
+<hr>
+Data descriptors defined here:<br>
+<dl><dt><strong>__dict__</strong></dt>
+<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+</td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#55aa55">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><strong>S</strong> = &lt;RegexFlag.DOTALL: 16&gt;</td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#7799ee">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%">wlm</td></tr></table>
 </body></html>

+ 150 - 150
函数说明/DataPreProcess.html

@@ -1,151 +1,151 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html><head><title>Python: module DataPreProcess</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-</head><body bgcolor="#f0f0f8">
-
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
-<tr bgcolor="#7799ee">
-<td valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong>DataPreProcess</strong></big></big></font></td
-><td align=right valign=bottom
-><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:d%3A%5Cplatform%5Cplatform%5Cbackend%5Cdatapreprocess.py">d:\platform\platform\backend\datapreprocess.py</a></font></td></tr></table>
-    <p><tt>数据预处理类</tt></p>
-<p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#aa55cc">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="PathSetting.html">PathSetting</a><br>
-<a href="Tools.html">Tools</a><br>
-</td><td width="25%" valign=top><a href="numpy.html">numpy</a><br>
-<a href="pandas.html">pandas</a><br>
-</td><td width="25%" valign=top><a href="pdb.html">pdb</a><br>
-<a href="sys.html">sys</a><br>
-</td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ee77aa">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%"><dl>
-<dt><font face="helvetica, arial"><a href="builtins.html#object">builtins.object</a>
-</font></dt><dd>
-<dl>
-<dt><font face="helvetica, arial"><a href="DataPreProcess.html#DataPreProcess">DataPreProcess</a>
-</font></dt></dl>
-</dd>
-</dl>
- <p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ffc8d8">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#000000" face="helvetica, arial"><a name="DataPreProcess">class <strong>DataPreProcess</strong></a>(<a href="builtins.html#object">builtins.object</a>)</font></td></tr>
-    
-<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%">Methods defined here:<br>
-<dl><dt><a name="DataPreProcess-__init__"><strong>__init__</strong></a>(self)</dt><dd><tt>Initialize&nbsp;self.&nbsp;&nbsp;See&nbsp;help(type(self))&nbsp;for&nbsp;accurate&nbsp;signature.</tt></dd></dl>
-
-<dl><dt><a name="DataPreProcess-cal_stand_time"><strong>cal_stand_time</strong></a>(self, dfin)</dt><dd><tt>#&nbsp;计算静置时间<br>
-#&nbsp;将每次行车或充电的前后静置时间,赋值给stand_time&nbsp;列,&nbsp;单位为分钟<br>
-&nbsp;<br>
-----------------输入参数---------<br>
-dfin:&nbsp;调用data_split_by_status()后输出的bms数据<br>
-&nbsp;<br>
-----------------输出参数----------<br>
-在输入数据后面,增加stand_time列<br>
-stand_time&nbsp;:&nbsp;在行车段或充电段的起止两个位置处,表明开始前和结束后的静置时长,单位为分钟</tt></dd></dl>
-
-<dl><dt><a name="DataPreProcess-combine_drive_stand"><strong>combine_drive_stand</strong></a>(self, dfin)</dt><dd><tt>合并放电和静置段:将两次充电之间的所有数据段合并为一段,&nbsp;状态分为&nbsp;charge&nbsp;和not&nbsp;charge<br>
----------------输入----------<br>
-dfin:&nbsp;调用data_split_by_status()后输出的bms数据<br>
-&nbsp;<br>
----------------输出----------<br>
-在输入数据后面,增加data_split_by_status_after_combine,&nbsp;data_status_after_combine&nbsp;两列<br>
-data_split_by_status_after_combine:&nbsp;将两次充电间的数据合并后的段序号<br>
-data_status_after_combine:&nbsp;每段数据的状态标识</tt></dd></dl>
-
-<dl><dt><a name="DataPreProcess-data_gps_judge_after_combine"><strong>data_gps_judge_after_combine</strong></a>(self, df_bms, df_gps, time_diff_thre=600, odo_sum_thre=200, drive_spd_thre=80, parking_spd_thre=2)</dt><dd><tt>GPS数据可靠性判断函数2&nbsp;(基于combine后的分段)&nbsp;判别方式同data_gps_judge</tt></dd></dl>
-
-<dl><dt><a name="DataPreProcess-data_split_by_status"><strong>data_split_by_status</strong></a>(self, dfin, drive_interval_threshold=120, charge_interval_threshold=300, drive_stand_threshold=120, charge_stand_threshold=300)</dt><dd><tt>#&nbsp;数据预处理分段,&nbsp;将原始数据段分为&nbsp;charge、drive、stand、none段<br>
-#&nbsp;状态判断<br>
-#&nbsp;1、drive:(状态为2或3&nbsp;且&nbsp;存在电流&gt;0&nbsp;)&nbsp;或&nbsp;(电流持续为0&nbsp;且&nbsp;持续时间&lt;阈值&nbsp;且&nbsp;上一段数据为行车)<br>
-#&nbsp;2、charge:(状态为2或3&nbsp;且&nbsp;不存在电流&gt;0&nbsp;)&nbsp;或&nbsp;(电流持续为0&nbsp;且&nbsp;持续时间&lt;阈值&nbsp;且&nbsp;上一段数据为充电)<br>
-#&nbsp;3、stand:(电流持续为0&nbsp;且&nbsp;是数据段的第一段)&nbsp;或&nbsp;(电流持续为0&nbsp;且&nbsp;持续时间&gt;阈值)<br>
-#&nbsp;4、none:&nbsp;其他<br>
-&nbsp;<br>
---------------输入参数-------------:<br>
-drive_interval_threshold:&nbsp;行车段拼接阈值,如果两段行车的间隔时间小于该值,则两段行车合并。<br>
-charge_interval_threshold:&nbsp;充电段拼接阈值,如果两段充电的间隔时间小于该值,则两段充电合并。<br>
-drive_stand_threshold:&nbsp;静置段合并至行车段阈值,如果静置时间小于该值,则合并到上一段的行车中。<br>
-charge_stand_threshold:&nbsp;静置段合并至充电段阈值,如果静置时间小于该值,则合并到上一段的充电中。<br>
-&nbsp;<br>
---------------输出-----------------:<br>
-在原始数据后面,增加data_split_by_crnt,&nbsp;data_split_by_status,&nbsp;data_status&nbsp;三列<br>
-data_split_by_crnt:&nbsp;按电流分段的序号<br>
-data_split_by_status:按电流和状态分段的序号<br>
-data_status:&nbsp;状态标识</tt></dd></dl>
-
-<dl><dt><a name="DataPreProcess-data_split_by_time"><strong>data_split_by_time</strong></a>(self, dfin, default_time_threshold=300, drive_time_threshold=300, charge_time_threshold=300, stand_time_threshold=1800)</dt><dd><tt>#&nbsp;该函数用来解决数据丢失问题导致的分段序号异常,<br>
-#&nbsp;将经过data_split_by_status分段后的数据,每个段内两行数据的时间跳变如果超过阈值,则继续分为两段<br>
-&nbsp;<br>
---------------输入参数-------------:<br>
-dfin:&nbsp;&nbsp;调用data_split_by_status之后的函数<br>
-default_time_threshold:&nbsp;默认时间阈值,如果状态内部时间跳变大于该值,则划分为两段<br>
-drive_time_threshold:&nbsp;行车时间阈值,如果行车状态内部时间跳变大于该值,则划分为两段<br>
-charge_time_threshold:&nbsp;充电时间阈值,如果充电状态内部时间跳变大于该值,则划分为两段<br>
-stand_time_threshold:静置时间阈值,如果静置状态内部时间跳变大于该值,则划分为两段<br>
-&nbsp;<br>
---------------输出-----------------:<br>
-在输入数据后面,增加data_split_by_status_time&nbsp;一列<br>
-data_split_by_status_time:&nbsp;按照状态和时间分段后的序号</tt></dd></dl>
-
-<dl><dt><a name="DataPreProcess-gps_data_judge"><strong>gps_data_judge</strong></a>(self, df_bms, df_gps, time_diff_thre=300, odo_sum_thre=200, drive_spd_thre=80, parking_spd_thre=2)</dt><dd><tt>GPS数据可靠性判断函数(基于combine前的分段)<br>
-&nbsp;<br>
-GPS数据出现以下情况时,判定为不可靠:<br>
-1)如果该段对应的地理位置数据&nbsp;少于2&nbsp;个,则认为不可靠<br>
-2)如果截取的GPS数据的起止时间,与BMS数据段的起止时间相差超过阈值,则认为不可靠<br>
-3)如果行车段&nbsp;累积里程超过阈值,车速超过阈值<br>
-4)&nbsp;如果非行车段&nbsp;车速超过阈值<br>
-&nbsp;<br>
---------------输入参数--------------:<br>
-time_diff_thre:&nbsp;时间差阈值<br>
-odo_sum_thre:&nbsp;累积里程阈值<br>
-drive_spd_thre:&nbsp;行车车速阈值<br>
-parking_spd_thre:&nbsp;非行车状态车速阈值<br>
-&nbsp;<br>
---------------输出参数--------------:<br>
-df_bms&nbsp;增加一列gps_rely,&nbsp;表明对应的GPS数据是否可靠。<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1:可靠<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;0:&nbsp;表示不可靠的原因<br>
-df_gps&nbsp;增加两列odo,&nbsp;speed,&nbsp;分别表示前后两点间的距离和速度</tt></dd></dl>
-
-<dl><dt><a name="DataPreProcess-time_filter"><strong>time_filter</strong></a>(self, df_bms, df_gps)</dt><dd><tt>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'''</tt></dd></dl>
-
-<hr>
-Data descriptors defined here:<br>
-<dl><dt><strong>__dict__</strong></dt>
-<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
-</dl>
-<dl><dt><strong>__weakref__</strong></dt>
-<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
-</dl>
-</td></tr></table></td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#55aa55">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%"><strong>CONF_PATH</strong> = r'D:\Platform\platform\CONFIGURE\'<br>
-<strong>defpath</strong> = r'.;C:\bin'</td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#7799ee">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%">wlm</td></tr></table>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: module DataPreProcess</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+</head><body bgcolor="#f0f0f8">
+
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+<tr bgcolor="#7799ee">
+<td valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong>DataPreProcess</strong></big></big></font></td
+><td align=right valign=bottom
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:d%3A%5Cplatform%5Cplatform%5Cbackend%5Cdatapreprocess.py">d:\platform\platform\backend\datapreprocess.py</a></font></td></tr></table>
+    <p><tt>数据预处理类</tt></p>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#aa55cc">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="PathSetting.html">PathSetting</a><br>
+<a href="Tools.html">Tools</a><br>
+</td><td width="25%" valign=top><a href="numpy.html">numpy</a><br>
+<a href="pandas.html">pandas</a><br>
+</td><td width="25%" valign=top><a href="pdb.html">pdb</a><br>
+<a href="sys.html">sys</a><br>
+</td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ee77aa">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><dl>
+<dt><font face="helvetica, arial"><a href="builtins.html#object">builtins.object</a>
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="DataPreProcess.html#DataPreProcess">DataPreProcess</a>
+</font></dt></dl>
+</dd>
+</dl>
+ <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="DataPreProcess">class <strong>DataPreProcess</strong></a>(<a href="builtins.html#object">builtins.object</a>)</font></td></tr>
+    
+<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%">Methods defined here:<br>
+<dl><dt><a name="DataPreProcess-__init__"><strong>__init__</strong></a>(self)</dt><dd><tt>Initialize&nbsp;self.&nbsp;&nbsp;See&nbsp;help(type(self))&nbsp;for&nbsp;accurate&nbsp;signature.</tt></dd></dl>
+
+<dl><dt><a name="DataPreProcess-cal_stand_time"><strong>cal_stand_time</strong></a>(self, dfin)</dt><dd><tt>#&nbsp;计算静置时间<br>
+#&nbsp;将每次行车或充电的前后静置时间,赋值给stand_time&nbsp;列,&nbsp;单位为分钟<br>
+&nbsp;<br>
+----------------输入参数---------<br>
+dfin:&nbsp;调用data_split_by_status()后输出的bms数据<br>
+&nbsp;<br>
+----------------输出参数----------<br>
+在输入数据后面,增加stand_time列<br>
+stand_time&nbsp;:&nbsp;在行车段或充电段的起止两个位置处,表明开始前和结束后的静置时长,单位为分钟</tt></dd></dl>
+
+<dl><dt><a name="DataPreProcess-combine_drive_stand"><strong>combine_drive_stand</strong></a>(self, dfin)</dt><dd><tt>合并放电和静置段:将两次充电之间的所有数据段合并为一段,&nbsp;状态分为&nbsp;charge&nbsp;和not&nbsp;charge<br>
+---------------输入----------<br>
+dfin:&nbsp;调用data_split_by_status()后输出的bms数据<br>
+&nbsp;<br>
+---------------输出----------<br>
+在输入数据后面,增加data_split_by_status_after_combine,&nbsp;data_status_after_combine&nbsp;两列<br>
+data_split_by_status_after_combine:&nbsp;将两次充电间的数据合并后的段序号<br>
+data_status_after_combine:&nbsp;每段数据的状态标识</tt></dd></dl>
+
+<dl><dt><a name="DataPreProcess-data_gps_judge_after_combine"><strong>data_gps_judge_after_combine</strong></a>(self, df_bms, df_gps, time_diff_thre=600, odo_sum_thre=200, drive_spd_thre=80, parking_spd_thre=2)</dt><dd><tt>GPS数据可靠性判断函数2&nbsp;(基于combine后的分段)&nbsp;判别方式同data_gps_judge</tt></dd></dl>
+
+<dl><dt><a name="DataPreProcess-data_split_by_status"><strong>data_split_by_status</strong></a>(self, dfin, drive_interval_threshold=120, charge_interval_threshold=300, drive_stand_threshold=120, charge_stand_threshold=300)</dt><dd><tt>#&nbsp;数据预处理分段,&nbsp;将原始数据段分为&nbsp;charge、drive、stand、none段<br>
+#&nbsp;状态判断<br>
+#&nbsp;1、drive:(状态为2或3&nbsp;且&nbsp;存在电流&gt;0&nbsp;)&nbsp;或&nbsp;(电流持续为0&nbsp;且&nbsp;持续时间&lt;阈值&nbsp;且&nbsp;上一段数据为行车)<br>
+#&nbsp;2、charge:(状态为2或3&nbsp;且&nbsp;不存在电流&gt;0&nbsp;)&nbsp;或&nbsp;(电流持续为0&nbsp;且&nbsp;持续时间&lt;阈值&nbsp;且&nbsp;上一段数据为充电)<br>
+#&nbsp;3、stand:(电流持续为0&nbsp;且&nbsp;是数据段的第一段)&nbsp;或&nbsp;(电流持续为0&nbsp;且&nbsp;持续时间&gt;阈值)<br>
+#&nbsp;4、none:&nbsp;其他<br>
+&nbsp;<br>
+--------------输入参数-------------:<br>
+drive_interval_threshold:&nbsp;行车段拼接阈值,如果两段行车的间隔时间小于该值,则两段行车合并。<br>
+charge_interval_threshold:&nbsp;充电段拼接阈值,如果两段充电的间隔时间小于该值,则两段充电合并。<br>
+drive_stand_threshold:&nbsp;静置段合并至行车段阈值,如果静置时间小于该值,则合并到上一段的行车中。<br>
+charge_stand_threshold:&nbsp;静置段合并至充电段阈值,如果静置时间小于该值,则合并到上一段的充电中。<br>
+&nbsp;<br>
+--------------输出-----------------:<br>
+在原始数据后面,增加data_split_by_crnt,&nbsp;data_split_by_status,&nbsp;data_status&nbsp;三列<br>
+data_split_by_crnt:&nbsp;按电流分段的序号<br>
+data_split_by_status:按电流和状态分段的序号<br>
+data_status:&nbsp;状态标识</tt></dd></dl>
+
+<dl><dt><a name="DataPreProcess-data_split_by_time"><strong>data_split_by_time</strong></a>(self, dfin, default_time_threshold=300, drive_time_threshold=300, charge_time_threshold=300, stand_time_threshold=1800)</dt><dd><tt>#&nbsp;该函数用来解决数据丢失问题导致的分段序号异常,<br>
+#&nbsp;将经过data_split_by_status分段后的数据,每个段内两行数据的时间跳变如果超过阈值,则继续分为两段<br>
+&nbsp;<br>
+--------------输入参数-------------:<br>
+dfin:&nbsp;&nbsp;调用data_split_by_status之后的函数<br>
+default_time_threshold:&nbsp;默认时间阈值,如果状态内部时间跳变大于该值,则划分为两段<br>
+drive_time_threshold:&nbsp;行车时间阈值,如果行车状态内部时间跳变大于该值,则划分为两段<br>
+charge_time_threshold:&nbsp;充电时间阈值,如果充电状态内部时间跳变大于该值,则划分为两段<br>
+stand_time_threshold:静置时间阈值,如果静置状态内部时间跳变大于该值,则划分为两段<br>
+&nbsp;<br>
+--------------输出-----------------:<br>
+在输入数据后面,增加data_split_by_status_time&nbsp;一列<br>
+data_split_by_status_time:&nbsp;按照状态和时间分段后的序号</tt></dd></dl>
+
+<dl><dt><a name="DataPreProcess-gps_data_judge"><strong>gps_data_judge</strong></a>(self, df_bms, df_gps, time_diff_thre=300, odo_sum_thre=200, drive_spd_thre=80, parking_spd_thre=2)</dt><dd><tt>GPS数据可靠性判断函数(基于combine前的分段)<br>
+&nbsp;<br>
+GPS数据出现以下情况时,判定为不可靠:<br>
+1)如果该段对应的地理位置数据&nbsp;少于2&nbsp;个,则认为不可靠<br>
+2)如果截取的GPS数据的起止时间,与BMS数据段的起止时间相差超过阈值,则认为不可靠<br>
+3)如果行车段&nbsp;累积里程超过阈值,车速超过阈值<br>
+4)&nbsp;如果非行车段&nbsp;车速超过阈值<br>
+&nbsp;<br>
+--------------输入参数--------------:<br>
+time_diff_thre:&nbsp;时间差阈值<br>
+odo_sum_thre:&nbsp;累积里程阈值<br>
+drive_spd_thre:&nbsp;行车车速阈值<br>
+parking_spd_thre:&nbsp;非行车状态车速阈值<br>
+&nbsp;<br>
+--------------输出参数--------------:<br>
+df_bms&nbsp;增加一列gps_rely,&nbsp;表明对应的GPS数据是否可靠。<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1:可靠<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;0:&nbsp;表示不可靠的原因<br>
+df_gps&nbsp;增加两列odo,&nbsp;speed,&nbsp;分别表示前后两点间的距离和速度</tt></dd></dl>
+
+<dl><dt><a name="DataPreProcess-time_filter"><strong>time_filter</strong></a>(self, df_bms, df_gps)</dt><dd><tt>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'''</tt></dd></dl>
+
+<hr>
+Data descriptors defined here:<br>
+<dl><dt><strong>__dict__</strong></dt>
+<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+</td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#55aa55">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><strong>CONF_PATH</strong> = r'D:\Platform\platform\CONFIGURE\'<br>
+<strong>defpath</strong> = r'.;C:\bin'</td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#7799ee">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%">wlm</td></tr></table>
 </body></html>

+ 144 - 144
函数说明/IndexStaByOneCycle.html

@@ -1,145 +1,145 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html><head><title>Python: module IndexStaByOneCycle</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-</head><body bgcolor="#f0f0f8">
-
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
-<tr bgcolor="#7799ee">
-<td valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong>IndexStaByOneCycle</strong></big></big></font></td
-><td align=right valign=bottom
-><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:d%3A%5Cplatform%5Cplatform%5Cmiddle%5Cindexstabyonecycle.py">d:\platform\platform\middle\indexstabyonecycle.py</a></font></td></tr></table>
-    <p><tt>基于单一状态(一次行车、一次静置、一次充电)的指标统计库</tt></p>
-<p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#aa55cc">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="PathSetting.html">PathSetting</a><br>
-<a href="Tools.html">Tools</a><br>
-</td><td width="25%" valign=top><a href="datetime.html">datetime</a><br>
-<a href="numpy.html">numpy</a><br>
-</td><td width="25%" valign=top><a href="pandas.html">pandas</a><br>
-<a href="sys.html">sys</a><br>
-</td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ee77aa">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%"><dl>
-<dt><font face="helvetica, arial"><a href="builtins.html#object">builtins.object</a>
-</font></dt><dd>
-<dl>
-<dt><font face="helvetica, arial"><a href="IndexStaByOneCycle.html#IndexStaByOneCycle">IndexStaByOneCycle</a>
-</font></dt></dl>
-</dd>
-</dl>
- <p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ffc8d8">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#000000" face="helvetica, arial"><a name="IndexStaByOneCycle">class <strong>IndexStaByOneCycle</strong></a>(<a href="builtins.html#object">builtins.object</a>)</font></td></tr>
-    
-<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%">Methods defined here:<br>
-<dl><dt><a name="IndexStaByOneCycle-__init__"><strong>__init__</strong></a>(self)</dt><dd><tt>Initialize&nbsp;self.&nbsp;&nbsp;See&nbsp;help(type(self))&nbsp;for&nbsp;accurate&nbsp;signature.</tt></dd></dl>
-
-<dl><dt><a name="IndexStaByOneCycle-acc_time_sta"><strong>acc_time_sta</strong></a>(self, time_array)</dt><dd><tt>一个cycle的持续时间<br>
----------输入参数------------<br>
-time_array&nbsp;:&nbsp;一次cycle对应的time数据<br>
----------输出参数------------<br>
-本cycle的持续时间,单位&nbsp;h</tt></dd></dl>
-
-<dl><dt><a name="IndexStaByOneCycle-capacity_sta"><strong>capacity_sta</strong></a>(self, cap, soc_array, soh_array)</dt><dd><tt>一个cycle净累积ah统计<br>
----------输入参数------------<br>
-cap&nbsp;:&nbsp;标称容量<br>
-soc_array&nbsp;:&nbsp;一个cycle对应的soc数据<br>
-soh_array&nbsp;:&nbsp;一个cycle对应的soh数据<br>
----------输出参数------------<br>
-本次行车的累积ah</tt></dd></dl>
-
-<dl><dt><a name="IndexStaByOneCycle-chrg_max_pwr_sta"><strong>chrg_max_pwr_sta</strong></a>(self, volt_array, crnt_array)</dt><dd><tt>一个cycle的充电功率最大值<br>
----------输入参数------------<br>
-volt_array&nbsp;:&nbsp;一个cycle对应的volt数据<br>
-crnt_array&nbsp;:&nbsp;一个cycle对应的crnt数据<br>
----------输出参数------------<br>
-本cycle的充电功率最大值</tt></dd></dl>
-
-<dl><dt><a name="IndexStaByOneCycle-dischrg_max_pwr_sta"><strong>dischrg_max_pwr_sta</strong></a>(self, volt_array, crnt_array)</dt><dd><tt>一个cycle的放电功率最大值<br>
----------输入参数------------<br>
-volt_array&nbsp;:&nbsp;一个cycle对应的volt数据<br>
-crnt_array&nbsp;:&nbsp;一个cycle对应的crnt数据<br>
----------输出参数------------<br>
-本cycle的放电功率最大值</tt></dd></dl>
-
-<dl><dt><a name="IndexStaByOneCycle-energy_sta"><strong>energy_sta</strong></a>(self, cap, soc_array, soh_array, volt_array)</dt><dd><tt>一个cycle净累积能量统计<br>
----------输入参数------------<br>
-cap&nbsp;:&nbsp;标称容量<br>
-soc_array&nbsp;:&nbsp;一个cycle对应的soc数据<br>
-soh_array&nbsp;:&nbsp;一个cycle对应的soh数据<br>
-volt_array&nbsp;:&nbsp;一个cycle对应的volt数据<br>
----------输出参数------------<br>
-本次行车的累积能量</tt></dd></dl>
-
-<dl><dt><a name="IndexStaByOneCycle-mean_temp_sta"><strong>mean_temp_sta</strong></a>(self, temp_array)</dt><dd><tt>一个cycle的单体平均温度<br>
----------输入参数------------<br>
-temp_array&nbsp;:&nbsp;一个cycle对应的某个单体的temp数据<br>
----------输出参数------------<br>
-本cycle的单体平均温度</tt></dd></dl>
-
-<dl><dt><a name="IndexStaByOneCycle-odo_sta"><strong>odo_sta</strong></a>(self, odo_array)</dt><dd><tt>一次行车行驶里程统计<br>
----------输入参数------------<br>
-odo_array&nbsp;:&nbsp;一次行车对应的odo数据<br>
----------输出参数------------<br>
-如果gps&nbsp;可信,则输出本次行车的累积行驶里程;<br>
-否则,输出None</tt></dd></dl>
-
-<dl><dt><a name="IndexStaByOneCycle-regen_count_sta"><strong>regen_count_sta</strong></a>(self, crnt_array)</dt><dd><tt>一个行车cycle的regen&nbsp;行数<br>
----------输入参数------------<br>
-crnt_array&nbsp;:&nbsp;一个行车cycle对应的crnt数据<br>
----------输出参数------------<br>
-本行车cycle的regen行数,&nbsp;总行数</tt></dd></dl>
-
-<dl><dt><a name="IndexStaByOneCycle-speed_sta"><strong>speed_sta</strong></a>(self, sum_odo, acc_time, speed_array)</dt><dd><tt>一个行车cycle的平均速度和最大瞬时速度<br>
----------输入参数------------<br>
-sum_odo&nbsp;:&nbsp;一个行车cycle对应的累积odo数据<br>
-acc_time&nbsp;:&nbsp;一个行车cycle对应的累积time数据<br>
-speed_array&nbsp;:&nbsp;一个行车cycle对应的speed数据<br>
----------输出参数------------<br>
-本行车cycle的平均速度和最大速度</tt></dd></dl>
-
-<dl><dt><a name="IndexStaByOneCycle-temp_change_rate_sta"><strong>temp_change_rate_sta</strong></a>(self, time_array, temp_array)</dt><dd><tt>一个cycle的单体温度变化率<br>
----------输入参数------------<br>
-time_array&nbsp;:&nbsp;一个cycle对应的time数据<br>
-temp_array&nbsp;:&nbsp;一个cycle对应的temp数据<br>
----------输出参数------------<br>
-本cycle的单体温度变化率</tt></dd></dl>
-
-<hr>
-Data descriptors defined here:<br>
-<dl><dt><strong>__dict__</strong></dt>
-<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
-</dl>
-<dl><dt><strong>__weakref__</strong></dt>
-<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
-</dl>
-</td></tr></table></td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#55aa55">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%"><strong>CONF_PATH</strong> = r'D:\Platform\platform\CONFIGURE\'</td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#7799ee">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%">wlm</td></tr></table>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: module IndexStaByOneCycle</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+</head><body bgcolor="#f0f0f8">
+
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+<tr bgcolor="#7799ee">
+<td valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong>IndexStaByOneCycle</strong></big></big></font></td
+><td align=right valign=bottom
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:d%3A%5Cplatform%5Cplatform%5Cmiddle%5Cindexstabyonecycle.py">d:\platform\platform\middle\indexstabyonecycle.py</a></font></td></tr></table>
+    <p><tt>基于单一状态(一次行车、一次静置、一次充电)的指标统计库</tt></p>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#aa55cc">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="PathSetting.html">PathSetting</a><br>
+<a href="Tools.html">Tools</a><br>
+</td><td width="25%" valign=top><a href="datetime.html">datetime</a><br>
+<a href="numpy.html">numpy</a><br>
+</td><td width="25%" valign=top><a href="pandas.html">pandas</a><br>
+<a href="sys.html">sys</a><br>
+</td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ee77aa">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><dl>
+<dt><font face="helvetica, arial"><a href="builtins.html#object">builtins.object</a>
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="IndexStaByOneCycle.html#IndexStaByOneCycle">IndexStaByOneCycle</a>
+</font></dt></dl>
+</dd>
+</dl>
+ <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="IndexStaByOneCycle">class <strong>IndexStaByOneCycle</strong></a>(<a href="builtins.html#object">builtins.object</a>)</font></td></tr>
+    
+<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%">Methods defined here:<br>
+<dl><dt><a name="IndexStaByOneCycle-__init__"><strong>__init__</strong></a>(self)</dt><dd><tt>Initialize&nbsp;self.&nbsp;&nbsp;See&nbsp;help(type(self))&nbsp;for&nbsp;accurate&nbsp;signature.</tt></dd></dl>
+
+<dl><dt><a name="IndexStaByOneCycle-acc_time_sta"><strong>acc_time_sta</strong></a>(self, time_array)</dt><dd><tt>一个cycle的持续时间<br>
+---------输入参数------------<br>
+time_array&nbsp;:&nbsp;一次cycle对应的time数据<br>
+---------输出参数------------<br>
+本cycle的持续时间,单位&nbsp;h</tt></dd></dl>
+
+<dl><dt><a name="IndexStaByOneCycle-capacity_sta"><strong>capacity_sta</strong></a>(self, cap, soc_array, soh_array)</dt><dd><tt>一个cycle净累积ah统计<br>
+---------输入参数------------<br>
+cap&nbsp;:&nbsp;标称容量<br>
+soc_array&nbsp;:&nbsp;一个cycle对应的soc数据<br>
+soh_array&nbsp;:&nbsp;一个cycle对应的soh数据<br>
+---------输出参数------------<br>
+本次行车的累积ah</tt></dd></dl>
+
+<dl><dt><a name="IndexStaByOneCycle-chrg_max_pwr_sta"><strong>chrg_max_pwr_sta</strong></a>(self, volt_array, crnt_array)</dt><dd><tt>一个cycle的充电功率最大值<br>
+---------输入参数------------<br>
+volt_array&nbsp;:&nbsp;一个cycle对应的volt数据<br>
+crnt_array&nbsp;:&nbsp;一个cycle对应的crnt数据<br>
+---------输出参数------------<br>
+本cycle的充电功率最大值</tt></dd></dl>
+
+<dl><dt><a name="IndexStaByOneCycle-dischrg_max_pwr_sta"><strong>dischrg_max_pwr_sta</strong></a>(self, volt_array, crnt_array)</dt><dd><tt>一个cycle的放电功率最大值<br>
+---------输入参数------------<br>
+volt_array&nbsp;:&nbsp;一个cycle对应的volt数据<br>
+crnt_array&nbsp;:&nbsp;一个cycle对应的crnt数据<br>
+---------输出参数------------<br>
+本cycle的放电功率最大值</tt></dd></dl>
+
+<dl><dt><a name="IndexStaByOneCycle-energy_sta"><strong>energy_sta</strong></a>(self, cap, soc_array, soh_array, volt_array)</dt><dd><tt>一个cycle净累积能量统计<br>
+---------输入参数------------<br>
+cap&nbsp;:&nbsp;标称容量<br>
+soc_array&nbsp;:&nbsp;一个cycle对应的soc数据<br>
+soh_array&nbsp;:&nbsp;一个cycle对应的soh数据<br>
+volt_array&nbsp;:&nbsp;一个cycle对应的volt数据<br>
+---------输出参数------------<br>
+本次行车的累积能量</tt></dd></dl>
+
+<dl><dt><a name="IndexStaByOneCycle-mean_temp_sta"><strong>mean_temp_sta</strong></a>(self, temp_array)</dt><dd><tt>一个cycle的单体平均温度<br>
+---------输入参数------------<br>
+temp_array&nbsp;:&nbsp;一个cycle对应的某个单体的temp数据<br>
+---------输出参数------------<br>
+本cycle的单体平均温度</tt></dd></dl>
+
+<dl><dt><a name="IndexStaByOneCycle-odo_sta"><strong>odo_sta</strong></a>(self, odo_array)</dt><dd><tt>一次行车行驶里程统计<br>
+---------输入参数------------<br>
+odo_array&nbsp;:&nbsp;一次行车对应的odo数据<br>
+---------输出参数------------<br>
+如果gps&nbsp;可信,则输出本次行车的累积行驶里程;<br>
+否则,输出None</tt></dd></dl>
+
+<dl><dt><a name="IndexStaByOneCycle-regen_count_sta"><strong>regen_count_sta</strong></a>(self, crnt_array)</dt><dd><tt>一个行车cycle的regen&nbsp;行数<br>
+---------输入参数------------<br>
+crnt_array&nbsp;:&nbsp;一个行车cycle对应的crnt数据<br>
+---------输出参数------------<br>
+本行车cycle的regen行数,&nbsp;总行数</tt></dd></dl>
+
+<dl><dt><a name="IndexStaByOneCycle-speed_sta"><strong>speed_sta</strong></a>(self, sum_odo, acc_time, speed_array)</dt><dd><tt>一个行车cycle的平均速度和最大瞬时速度<br>
+---------输入参数------------<br>
+sum_odo&nbsp;:&nbsp;一个行车cycle对应的累积odo数据<br>
+acc_time&nbsp;:&nbsp;一个行车cycle对应的累积time数据<br>
+speed_array&nbsp;:&nbsp;一个行车cycle对应的speed数据<br>
+---------输出参数------------<br>
+本行车cycle的平均速度和最大速度</tt></dd></dl>
+
+<dl><dt><a name="IndexStaByOneCycle-temp_change_rate_sta"><strong>temp_change_rate_sta</strong></a>(self, time_array, temp_array)</dt><dd><tt>一个cycle的单体温度变化率<br>
+---------输入参数------------<br>
+time_array&nbsp;:&nbsp;一个cycle对应的time数据<br>
+temp_array&nbsp;:&nbsp;一个cycle对应的temp数据<br>
+---------输出参数------------<br>
+本cycle的单体温度变化率</tt></dd></dl>
+
+<hr>
+Data descriptors defined here:<br>
+<dl><dt><strong>__dict__</strong></dt>
+<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+</td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#55aa55">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><strong>CONF_PATH</strong> = r'D:\Platform\platform\CONFIGURE\'</td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#7799ee">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%">wlm</td></tr></table>
 </body></html>

+ 114 - 114
函数说明/IndexStaByPeriod.html

@@ -1,115 +1,115 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html><head><title>Python: module IndexStaByPeriod</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-</head><body bgcolor="#f0f0f8">
-
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
-<tr bgcolor="#7799ee">
-<td valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong>IndexStaByPeriod</strong></big></big></font></td
-><td align=right valign=bottom
-><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:d%3A%5Cplatform%5Cplatform%5Cmiddle%5Cindexstabyperiod.py">d:\platform\platform\middle\indexstabyperiod.py</a></font></td></tr></table>
-    <p><tt>基于某个周期(一天,一周...)的指标统计库</tt></p>
-<p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#aa55cc">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="IndexStaByOneCycle.html">IndexStaByOneCycle</a><br>
-<a href="PathSetting.html">PathSetting</a><br>
-</td><td width="25%" valign=top><a href="Tools.html">Tools</a><br>
-<a href="datetime.html">datetime</a><br>
-</td><td width="25%" valign=top><a href="numpy.html">numpy</a><br>
-<a href="pandas.html">pandas</a><br>
-</td><td width="25%" valign=top><a href="sys.html">sys</a><br>
-</td></tr></table></td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ee77aa">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%"><dl>
-<dt><font face="helvetica, arial"><a href="builtins.html#object">builtins.object</a>
-</font></dt><dd>
-<dl>
-<dt><font face="helvetica, arial"><a href="IndexStaByPeriod.html#IndexStaByPeriod">IndexStaByPeriod</a>
-</font></dt></dl>
-</dd>
-</dl>
- <p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ffc8d8">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#000000" face="helvetica, arial"><a name="IndexStaByPeriod">class <strong>IndexStaByPeriod</strong></a>(<a href="builtins.html#object">builtins.object</a>)</font></td></tr>
-    
-<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%">Methods defined here:<br>
-<dl><dt><a name="IndexStaByPeriod-__init__"><strong>__init__</strong></a>(self)</dt><dd><tt>Initialize&nbsp;self.&nbsp;&nbsp;See&nbsp;help(type(self))&nbsp;for&nbsp;accurate&nbsp;signature.</tt></dd></dl>
-
-<dl><dt><a name="IndexStaByPeriod-drive_capacity_sta"><strong>drive_capacity_sta</strong></a>(self, cap, df_bms)</dt><dd><tt>计算周期内行车净累积ah<br>
----------输入参数------------<br>
-cap&nbsp;:&nbsp;标称容量<br>
-df_bms&nbsp;:&nbsp;一段周期内的预处理后的bms数据<br>
-df_gps&nbsp;:&nbsp;一段周期内的预处理后的gps数据<br>
----------输出参数------------<br>
-sum_ah&nbsp;:&nbsp;本周期的净累积ah</tt></dd></dl>
-
-<dl><dt><a name="IndexStaByPeriod-drive_energy_sta"><strong>drive_energy_sta</strong></a>(self, cap, df_bms)</dt><dd><tt>计算周期内行车净累积能量<br>
----------输入参数------------<br>
-cap&nbsp;:&nbsp;标称容量<br>
-df_bms&nbsp;:&nbsp;一段周期内的预处理后的bms数据<br>
-df_gps&nbsp;:&nbsp;一段周期内的预处理后的gps数据<br>
----------输出参数------------<br>
-sum_ah&nbsp;:&nbsp;本周期的净累积能量</tt></dd></dl>
-
-<dl><dt><a name="IndexStaByPeriod-drive_odo_sta"><strong>drive_odo_sta</strong></a>(self, df_bms, df_gps)</dt><dd><tt>计算周期内行车累积行驶里程<br>
----------输入参数------------<br>
-df_bms&nbsp;:&nbsp;一段周期内的预处理后的bms数据<br>
-df_gps&nbsp;:&nbsp;一段周期内的预处理后的gps数据<br>
----------输出参数------------<br>
-sum_odo&nbsp;:&nbsp;累积里程,&nbsp;如果该周期内gps均无效,则返回None<br>
-invalid_rate&nbsp;:&nbsp;该周期内gps无效的bms数据行所占比例</tt></dd></dl>
-
-<dl><dt><a name="IndexStaByPeriod-drive_soc_sta"><strong>drive_soc_sta</strong></a>(self, df_bms)</dt><dd><tt>计算周期内行车净累积soc<br>
----------输入参数------------<br>
-cap&nbsp;:&nbsp;标称容量<br>
-df_bms&nbsp;:&nbsp;一段周期内的预处理后的bms数据<br>
-df_gps&nbsp;:&nbsp;一段周期内的预处理后的gps数据<br>
----------输出参数------------<br>
-sum_ah&nbsp;:&nbsp;本周期的净累积soc</tt></dd></dl>
-
-<dl><dt><a name="IndexStaByPeriod-drive_time_sta"><strong>drive_time_sta</strong></a>(self, df_bms)</dt><dd><tt>计算周期内累计行车时长/h<br>
----------输入参数------------<br>
-cap&nbsp;:&nbsp;标称容量<br>
-df_bms&nbsp;:&nbsp;一段周期内的预处理后的bms数据<br>
-df_gps&nbsp;:&nbsp;一段周期内的预处理后的gps数据<br>
----------输出参数------------<br>
-sum_ah&nbsp;:&nbsp;本周期的累计行车时长</tt></dd></dl>
-
-<hr>
-Data descriptors defined here:<br>
-<dl><dt><strong>__dict__</strong></dt>
-<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
-</dl>
-<dl><dt><strong>__weakref__</strong></dt>
-<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
-</dl>
-</td></tr></table></td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#55aa55">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%"><strong>CONF_PATH</strong> = r'D:\Platform\platform\CONFIGURE\'</td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#7799ee">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%">wlm</td></tr></table>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: module IndexStaByPeriod</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+</head><body bgcolor="#f0f0f8">
+
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+<tr bgcolor="#7799ee">
+<td valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong>IndexStaByPeriod</strong></big></big></font></td
+><td align=right valign=bottom
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:d%3A%5Cplatform%5Cplatform%5Cmiddle%5Cindexstabyperiod.py">d:\platform\platform\middle\indexstabyperiod.py</a></font></td></tr></table>
+    <p><tt>基于某个周期(一天,一周...)的指标统计库</tt></p>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#aa55cc">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="IndexStaByOneCycle.html">IndexStaByOneCycle</a><br>
+<a href="PathSetting.html">PathSetting</a><br>
+</td><td width="25%" valign=top><a href="Tools.html">Tools</a><br>
+<a href="datetime.html">datetime</a><br>
+</td><td width="25%" valign=top><a href="numpy.html">numpy</a><br>
+<a href="pandas.html">pandas</a><br>
+</td><td width="25%" valign=top><a href="sys.html">sys</a><br>
+</td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ee77aa">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><dl>
+<dt><font face="helvetica, arial"><a href="builtins.html#object">builtins.object</a>
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="IndexStaByPeriod.html#IndexStaByPeriod">IndexStaByPeriod</a>
+</font></dt></dl>
+</dd>
+</dl>
+ <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="IndexStaByPeriod">class <strong>IndexStaByPeriod</strong></a>(<a href="builtins.html#object">builtins.object</a>)</font></td></tr>
+    
+<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%">Methods defined here:<br>
+<dl><dt><a name="IndexStaByPeriod-__init__"><strong>__init__</strong></a>(self)</dt><dd><tt>Initialize&nbsp;self.&nbsp;&nbsp;See&nbsp;help(type(self))&nbsp;for&nbsp;accurate&nbsp;signature.</tt></dd></dl>
+
+<dl><dt><a name="IndexStaByPeriod-drive_capacity_sta"><strong>drive_capacity_sta</strong></a>(self, cap, df_bms)</dt><dd><tt>计算周期内行车净累积ah<br>
+---------输入参数------------<br>
+cap&nbsp;:&nbsp;标称容量<br>
+df_bms&nbsp;:&nbsp;一段周期内的预处理后的bms数据<br>
+df_gps&nbsp;:&nbsp;一段周期内的预处理后的gps数据<br>
+---------输出参数------------<br>
+sum_ah&nbsp;:&nbsp;本周期的净累积ah</tt></dd></dl>
+
+<dl><dt><a name="IndexStaByPeriod-drive_energy_sta"><strong>drive_energy_sta</strong></a>(self, cap, df_bms)</dt><dd><tt>计算周期内行车净累积能量<br>
+---------输入参数------------<br>
+cap&nbsp;:&nbsp;标称容量<br>
+df_bms&nbsp;:&nbsp;一段周期内的预处理后的bms数据<br>
+df_gps&nbsp;:&nbsp;一段周期内的预处理后的gps数据<br>
+---------输出参数------------<br>
+sum_ah&nbsp;:&nbsp;本周期的净累积能量</tt></dd></dl>
+
+<dl><dt><a name="IndexStaByPeriod-drive_odo_sta"><strong>drive_odo_sta</strong></a>(self, df_bms, df_gps)</dt><dd><tt>计算周期内行车累积行驶里程<br>
+---------输入参数------------<br>
+df_bms&nbsp;:&nbsp;一段周期内的预处理后的bms数据<br>
+df_gps&nbsp;:&nbsp;一段周期内的预处理后的gps数据<br>
+---------输出参数------------<br>
+sum_odo&nbsp;:&nbsp;累积里程,&nbsp;如果该周期内gps均无效,则返回None<br>
+invalid_rate&nbsp;:&nbsp;该周期内gps无效的bms数据行所占比例</tt></dd></dl>
+
+<dl><dt><a name="IndexStaByPeriod-drive_soc_sta"><strong>drive_soc_sta</strong></a>(self, df_bms)</dt><dd><tt>计算周期内行车净累积soc<br>
+---------输入参数------------<br>
+cap&nbsp;:&nbsp;标称容量<br>
+df_bms&nbsp;:&nbsp;一段周期内的预处理后的bms数据<br>
+df_gps&nbsp;:&nbsp;一段周期内的预处理后的gps数据<br>
+---------输出参数------------<br>
+sum_ah&nbsp;:&nbsp;本周期的净累积soc</tt></dd></dl>
+
+<dl><dt><a name="IndexStaByPeriod-drive_time_sta"><strong>drive_time_sta</strong></a>(self, df_bms)</dt><dd><tt>计算周期内累计行车时长/h<br>
+---------输入参数------------<br>
+cap&nbsp;:&nbsp;标称容量<br>
+df_bms&nbsp;:&nbsp;一段周期内的预处理后的bms数据<br>
+df_gps&nbsp;:&nbsp;一段周期内的预处理后的gps数据<br>
+---------输出参数------------<br>
+sum_ah&nbsp;:&nbsp;本周期的累计行车时长</tt></dd></dl>
+
+<hr>
+Data descriptors defined here:<br>
+<dl><dt><strong>__dict__</strong></dt>
+<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+</td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#55aa55">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><strong>CONF_PATH</strong> = r'D:\Platform\platform\CONFIGURE\'</td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#7799ee">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%">wlm</td></tr></table>
 </body></html>

+ 79 - 79
函数说明/Log.html

@@ -1,80 +1,80 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html><head><title>Python: module Log</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-</head><body bgcolor="#f0f0f8">
-
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
-<tr bgcolor="#7799ee">
-<td valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong>Log</strong></big></big></font></td
-><td align=right valign=bottom
-><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:d%3A%5Cplatform%5Cplatform%5Cbackend%5Clog.py">d:\platform\platform\backend\log.py</a></font></td></tr></table>
-    <p><tt>Log类</tt></p>
-<p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#aa55cc">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="logging.html">logging</a><br>
-</td><td width="25%" valign=top><a href="os.html">os</a><br>
-</td><td width="25%" valign=top></td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ee77aa">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%"><dl>
-<dt><font face="helvetica, arial"><a href="builtins.html#object">builtins.object</a>
-</font></dt><dd>
-<dl>
-<dt><font face="helvetica, arial"><a href="Log.html#Mylog">Mylog</a>
-</font></dt></dl>
-</dd>
-</dl>
- <p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ffc8d8">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#000000" face="helvetica, arial"><a name="Mylog">class <strong>Mylog</strong></a>(<a href="builtins.html#object">builtins.object</a>)</font></td></tr>
-    
-<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
-<td colspan=2><tt><a href="#Mylog">Mylog</a>(log_name='this_log',&nbsp;log_level='')<br>
-&nbsp;<br>
-<br>&nbsp;</tt></td></tr>
-<tr><td>&nbsp;</td>
-<td width="100%">Methods defined here:<br>
-<dl><dt><a name="Mylog-__init__"><strong>__init__</strong></a>(self, log_name='this_log', log_level='')</dt><dd><tt>Initialize&nbsp;self.&nbsp;&nbsp;See&nbsp;help(type(self))&nbsp;for&nbsp;accurate&nbsp;signature.</tt></dd></dl>
-
-<dl><dt><a name="Mylog-get_logger"><strong>get_logger</strong></a>(self)</dt></dl>
-
-<dl><dt><a name="Mylog-set_file_hl"><strong>set_file_hl</strong></a>(self, file_name='all.log', log_level='info')</dt></dl>
-
-<dl><dt><a name="Mylog-set_stream_hl"><strong>set_stream_hl</strong></a>(self, log_level='info')</dt></dl>
-
-<hr>
-Data descriptors defined here:<br>
-<dl><dt><strong>__dict__</strong></dt>
-<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
-</dl>
-<dl><dt><strong>__weakref__</strong></dt>
-<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
-</dl>
-</td></tr></table></td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#55aa55">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%"><strong>CONF_PATH</strong> = r'D:\Platform\platform\CONFIGURE\'</td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#7799ee">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%">wlm</td></tr></table>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: module Log</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+</head><body bgcolor="#f0f0f8">
+
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+<tr bgcolor="#7799ee">
+<td valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong>Log</strong></big></big></font></td
+><td align=right valign=bottom
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:d%3A%5Cplatform%5Cplatform%5Cbackend%5Clog.py">d:\platform\platform\backend\log.py</a></font></td></tr></table>
+    <p><tt>Log类</tt></p>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#aa55cc">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="logging.html">logging</a><br>
+</td><td width="25%" valign=top><a href="os.html">os</a><br>
+</td><td width="25%" valign=top></td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ee77aa">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><dl>
+<dt><font face="helvetica, arial"><a href="builtins.html#object">builtins.object</a>
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="Log.html#Mylog">Mylog</a>
+</font></dt></dl>
+</dd>
+</dl>
+ <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="Mylog">class <strong>Mylog</strong></a>(<a href="builtins.html#object">builtins.object</a>)</font></td></tr>
+    
+<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
+<td colspan=2><tt><a href="#Mylog">Mylog</a>(log_name='this_log',&nbsp;log_level='')<br>
+&nbsp;<br>
+<br>&nbsp;</tt></td></tr>
+<tr><td>&nbsp;</td>
+<td width="100%">Methods defined here:<br>
+<dl><dt><a name="Mylog-__init__"><strong>__init__</strong></a>(self, log_name='this_log', log_level='')</dt><dd><tt>Initialize&nbsp;self.&nbsp;&nbsp;See&nbsp;help(type(self))&nbsp;for&nbsp;accurate&nbsp;signature.</tt></dd></dl>
+
+<dl><dt><a name="Mylog-get_logger"><strong>get_logger</strong></a>(self)</dt></dl>
+
+<dl><dt><a name="Mylog-set_file_hl"><strong>set_file_hl</strong></a>(self, file_name='all.log', log_level='info')</dt></dl>
+
+<dl><dt><a name="Mylog-set_stream_hl"><strong>set_stream_hl</strong></a>(self, log_level='info')</dt></dl>
+
+<hr>
+Data descriptors defined here:<br>
+<dl><dt><strong>__dict__</strong></dt>
+<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+</td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#55aa55">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><strong>CONF_PATH</strong> = r'D:\Platform\platform\CONFIGURE\'</td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#7799ee">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%">wlm</td></tr></table>
 </body></html>

+ 85 - 85
函数说明/Tools.html

@@ -1,86 +1,86 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html><head><title>Python: module Tools</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-</head><body bgcolor="#f0f0f8">
-
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
-<tr bgcolor="#7799ee">
-<td valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong>Tools</strong></big></big></font></td
-><td align=right valign=bottom
-><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:f%3A%5Cwork%5Cqx%5Cdata_analyze_platform%5Clib%5Cbackend%5Ctools.py">f:\work\qx\data_analyze_platform\lib\backend\tools.py</a></font></td></tr></table>
-    <p><tt>工具类</tt></p>
-<p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#aa55cc">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="DBManager.html">DBManager</a><br>
-<a href="CONFIGURE.PathSetting.html">CONFIGURE.PathSetting</a><br>
-<a href="datetime.html">datetime</a><br>
-</td><td width="25%" valign=top><a href="math.html">math</a><br>
-<a href="numpy.html">numpy</a><br>
-<a href="os.html">os</a><br>
-</td><td width="25%" valign=top><a href="pandas.html">pandas</a><br>
-<a href="pdb.html">pdb</a><br>
-<a href="sys.html">sys</a><br>
-</td><td width="25%" valign=top><a href="warnings.html">warnings</a><br>
-</td></tr></table></td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ee77aa">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%"><dl>
-<dt><font face="helvetica, arial"><a href="builtins.html#object">builtins.object</a>
-</font></dt><dd>
-<dl>
-<dt><font face="helvetica, arial"><a href="Tools.html#Tools">Tools</a>
-</font></dt></dl>
-</dd>
-</dl>
- <p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ffc8d8">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#000000" face="helvetica, arial"><a name="Tools">class <strong>Tools</strong></a>(<a href="builtins.html#object">builtins.object</a>)</font></td></tr>
-    
-<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%">Methods defined here:<br>
-<dl><dt><a name="Tools-__init__"><strong>__init__</strong></a>(self)</dt><dd><tt>Initialize&nbsp;self.&nbsp;&nbsp;See&nbsp;help(type(self))&nbsp;for&nbsp;accurate&nbsp;signature.</tt></dd></dl>
-
-<dl><dt><a name="Tools-cal_distance"><strong>cal_distance</strong></a>(self, latitude1, longitude1, latitude2, longitude2, radius=6371)</dt><dd><tt>输入两个地点的经纬度,输出两点间的距离</tt></dd></dl>
-
-<dl><dt><a name="Tools-data_download"><strong>data_download</strong></a>(self, write_path='', sn='', start_time='', end_time='', data_groups=['bms', 'gps'])</dt><dd><tt>数据下载函数<br>
---------------输入参数------------<br>
-write_path:&nbsp;文件保存路径,不需要指定文件名<br>
-sn:&nbsp;str,&nbsp;电池sn号<br>
-start_time:&nbsp;str,&nbsp;开始时间<br>
-end_time:&nbsp;str,&nbsp;结束时间<br>
-gps_switch:&nbsp;True:获取gps数据;&nbsp;False:不获取gps数据<br>
-mode:&nbsp;0:正常取数;&nbsp;1:7255&nbsp;取数<br>
-&nbsp;<br>
---------------输出参数------------<br>
-bms_data:&nbsp;获取到的bms数据<br>
-gps_data:&nbsp;获取到的gps数据</tt></dd></dl>
-
-<hr>
-Data descriptors defined here:<br>
-<dl><dt><strong>__dict__</strong></dt>
-<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
-</dl>
-<dl><dt><strong>__weakref__</strong></dt>
-<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
-</dl>
-</td></tr></table></td></tr></table><p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#7799ee">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
-    
-<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%">wlm</td></tr></table>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: module Tools</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+</head><body bgcolor="#f0f0f8">
+
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+<tr bgcolor="#7799ee">
+<td valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong>Tools</strong></big></big></font></td
+><td align=right valign=bottom
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:f%3A%5Cwork%5Cqx%5Cdata_analyze_platform%5Clib%5Cbackend%5Ctools.py">f:\work\qx\data_analyze_platform\lib\backend\tools.py</a></font></td></tr></table>
+    <p><tt>工具类</tt></p>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#aa55cc">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="DBManager.html">DBManager</a><br>
+<a href="CONFIGURE.PathSetting.html">CONFIGURE.PathSetting</a><br>
+<a href="datetime.html">datetime</a><br>
+</td><td width="25%" valign=top><a href="math.html">math</a><br>
+<a href="numpy.html">numpy</a><br>
+<a href="os.html">os</a><br>
+</td><td width="25%" valign=top><a href="pandas.html">pandas</a><br>
+<a href="pdb.html">pdb</a><br>
+<a href="sys.html">sys</a><br>
+</td><td width="25%" valign=top><a href="warnings.html">warnings</a><br>
+</td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ee77aa">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><dl>
+<dt><font face="helvetica, arial"><a href="builtins.html#object">builtins.object</a>
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="Tools.html#Tools">Tools</a>
+</font></dt></dl>
+</dd>
+</dl>
+ <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="Tools">class <strong>Tools</strong></a>(<a href="builtins.html#object">builtins.object</a>)</font></td></tr>
+    
+<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%">Methods defined here:<br>
+<dl><dt><a name="Tools-__init__"><strong>__init__</strong></a>(self)</dt><dd><tt>Initialize&nbsp;self.&nbsp;&nbsp;See&nbsp;help(type(self))&nbsp;for&nbsp;accurate&nbsp;signature.</tt></dd></dl>
+
+<dl><dt><a name="Tools-cal_distance"><strong>cal_distance</strong></a>(self, latitude1, longitude1, latitude2, longitude2, radius=6371)</dt><dd><tt>输入两个地点的经纬度,输出两点间的距离</tt></dd></dl>
+
+<dl><dt><a name="Tools-data_download"><strong>data_download</strong></a>(self, write_path='', sn='', start_time='', end_time='', data_groups=['bms', 'gps'])</dt><dd><tt>数据下载函数<br>
+--------------输入参数------------<br>
+write_path:&nbsp;文件保存路径,不需要指定文件名<br>
+sn:&nbsp;str,&nbsp;电池sn号<br>
+start_time:&nbsp;str,&nbsp;开始时间<br>
+end_time:&nbsp;str,&nbsp;结束时间<br>
+gps_switch:&nbsp;True:获取gps数据;&nbsp;False:不获取gps数据<br>
+mode:&nbsp;0:正常取数;&nbsp;1:7255&nbsp;取数<br>
+&nbsp;<br>
+--------------输出参数------------<br>
+bms_data:&nbsp;获取到的bms数据<br>
+gps_data:&nbsp;获取到的gps数据</tt></dd></dl>
+
+<hr>
+Data descriptors defined here:<br>
+<dl><dt><strong>__dict__</strong></dt>
+<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+</td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#7799ee">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%">wlm</td></tr></table>
 </body></html>