[Python]正規化する過程でおかしな値が出てしまった。

python

1# 10分毎の時刻を提示して5分以内のデータを格納2import openpyxl 3import csv 4import datetime 5import numpy as np 6## 新規ファイルの作成7tmp_normalizer = Normalizer() # 気温の正規化8bp_normalizer = Normalizer() # 気圧の正規化9ws_normalizer = Normalizer() # 風速の正規化10teacher = []11# Book作成12wb=openpyxl.Workbook()13ws=wb.active 14# シート名の設定15ws.title="test"16# シートの読み込み17sheet = wb['test']18filename = 'drive/My Drive/masatoColab/akiho_data4.csv'19with open(filename, encoding='Shift-JIS', newline='') as f:20 csvreader = csv.reader(f)21 # 提示時間、風速、温度、湿度、気圧、風速時間、その他の時間、風速とその他の時間差22 my_list = ['', '', '', '', '', '', '', '']23 inter_list = ['', '', '', '', '', datetime.datetime(year=2021, month=7, day=1, hour=0, minute=10, second=0), datetime.datetime(year=2021, month=7, day=1, hour=0, minute=10, second=0), '']24 five_mins = datetime.timedelta(hours=0, minutes=5, seconds=0)25 ten_mins = datetime.timedelta(hours=0, minutes=10, seconds=0)26 _time = datetime.datetime(year=2021, month=7, day=1, hour=0, minute=10, second=0)27 28 i = 129 miss = 030 for row in csvreader:31 my_list[0] = _time 32 if row[1] != '':33 my_list[1] = float(row[1]) # 風速34 my_list[5] = row[0][:19]35 my_list[5] = datetime.datetime(int(my_list[5][0:4]),int(my_list[5][5:7]),int(my_list[5][8:10]),int(my_list[5][11:13]),int(my_list[5][14:16]),int(my_list[5][17:19]))36 if row[2] != '' and row[3] != '' and row[4] != '':37 my_list[6] = row[0][:19]38 my_list[6] = datetime.datetime(int(my_list[6][0:4]),int(my_list[6][5:7]),int(my_list[6][8:10]),int(my_list[6][11:13]),int(my_list[6][14:16]),int(my_list[6][17:19]))39 my_list[2] = float(row[2]) # 温度40 my_list[3] = float(row[3]) / 100 # 相対湿度は少数に41 my_list[4] = float(row[4]) # 気圧42 if my_list[1] != '' and my_list[2] != '' and my_list[3] != '' and my_list[4] != '':43 if my_list[5] < my_list[6]:44 my_list[7] = my_list[6] - my_list[5]45 else:46 my_list[7] = my_list[5] - my_list[6]47 # 風速時間と他の時間差が5分以内なら登録48 if my_list[7] < five_mins:49 if _time >= my_list[6]:50 time_lag = _time - my_list[6]51 else:52 time_lag = my_list[6] - _time 53 54 # 提示時間とその他の時間差が5分以内なら登録55 if time_lag <= five_mins:56 for j in range(1,9):57 # 値の代入58 sheet.cell(column=j,row=i).value = my_list[j-1]59 teacher.append(my_list)60 print(teacher[-1][4])61 tmp_normalizer.input(my_list[2])62 bp_normalizer.input(my_list[4])63 ws_normalizer.input(my_list[1])64 pre_my_list = my_list 65 my_list = ['', '', '', '', '', '', '', '']66 _time += datetime.timedelta(minutes=10)67 i += 168 # おそらく、観測値が提示より10分以上先の時間の場合69 elif time_lag > ten_mins and _time < my_list[6]:70 print('欠損値がある:',pre_my_list[5], '~', my_list[6], 'time_lag:', time_lag, '提示時間:', _time)71 a = 072 # 時間差が5分以内になるまで欠損値を挿入し、提示時間を10分ずつ進める73 while time_lag > five_mins:74 inter_list[0] = _time 75 inter_list[1] = (pre_my_list[1] + my_list[1]) / 276 inter_list[2] = (pre_my_list[2] + my_list[2]) / 277 inter_list[3] = (pre_my_list[3] + my_list[3]) / 278 inter_list[4] = (pre_my_list[4] + my_list[4]) / 279 inter_list[5] += datetime.timedelta(hours=0, minutes=10, seconds=0)80 inter_list[6] += datetime.timedelta(hours=0, minutes=10, seconds=0)81 inter_list[7] = pre_my_list[7]82 for j in range(1,9):83 sheet.cell(column=j,row=i).value = inter_list[j-1]84 teacher.append(inter_list)85 print(teacher[-1][4])86 i += 187 a += 188 _time += datetime.timedelta(minutes=10) # 提示時間を10分増やす89 pre_my_list = inter_list # 前リストを補間値にする90 if _time >= my_list[6]: # 提示時間とのmy_listを計算91 time_lag = _time - my_list[6]92 else:93 time_lag = my_list[6] - _time 94 tmp_normalizer.input(inter_list[2])95 bp_normalizer.input(inter_list[4])96 ws_normalizer.input(inter_list[1])97 print('1データ追加しました', 'time_lag:', time_lag)98 miss += a 99 # my_listを追加100 for j in range(1,9):101 # 値の代入102 sheet.cell(column=j,row=i).value = my_list[j-1]103 teacher.append(my_list)104 print(teacher[-1][4])105 tmp_normalizer.input(my_list[2])106 bp_normalizer.input(my_list[4])107 ws_normalizer.input(my_list[1])108 pre_my_list = my_list 109 my_list = ['', '', '', '', '', '', '', '']110 _time += datetime.timedelta(minutes=10)111 i += 1112 113print(bp_normalizer.output())114for t in teacher:115 print('風速:', t[1],'気温',t[2], '気圧:',t[4])116 t[2] = tmp_normalizer.encode(t[2])117 t[4] = bp_normalizer.encode(t[4])118 print('風速:', t[1],'気温',t[2], '気圧:',t[4])119 t[1] = ws_normalizer.encode(t[1])120print('欠損値:', miss)121print(teacher[-1])122print('データ数', i-1)123# 保存先とファイル名の設定124wb.save("drive/My Drive/abcColab/newFile4.xlsx")

コメントを投稿

0 コメント