У меня есть температура в CSV-файле. Мой файл обновляется со временем. Я загрузил эти данные в панду DataFrame. Что я хочу сделать, это предсказать значение температуры в течение следующих 60 минут.
Я изменил время начала на 0 минут.
После изменения начального времени на 0 минут, я пишу код для отображения времени каждые 60 минут.
date time temp humidity wind
2018-10-03 06:00:00 0.0 63 0 0
2018-10-03 07:00:00 60.0 63 0 2
2018-10-03 08:00:00 120.0 104 11 0
2018-10-03 09:00:00 180.0 93 0 50
2018-10-03 10:00:00 240.0 177 0 2
2018-10-03 11:00:00 300.0 133 0 0
2018-10-03 12:00:00 360.0 70 0 0
2018-10-03 13:45:00 465.0 83 0 60
2018-10-03 15:00:00 540.0 127 0 50
2018-10-03 16:00:00 600.0 205 0 0
2018-10-03 17:00:00 660.0 298 0 0
2018-10-03 18:00:00 720.0 234 0 0
2018-10-03 19:00:00 780.0 148 0 20
2018-10-03 20:00:00 840.0 135 0 0
2018-10-03 21:30:00 930.0 100 0 50
2018-10-04 06:00:00 0.0 166 0 0
2018-10-04 07:00:00 60.0 0 0 0
После этого я написал код для следующего выходного значения температуры. означает, что мой первый вывод - 63 (темп) за 60 минут.
time(t) temp humidity wind output(temp )(t+60)
0 63 0 0 63
60 63 0 2 104
Как это должно быть запущено.
То, что я пытаюсь сделать, это отображать мое выходное значение (следующее значение температуры) каждые 60 минут. входы будут добавлены так же, как CSV-файл. Но вывод должен отображаться каждые 60 минут.
Я написал код для этого. Но это не правильно отображает мой вывод.
Может ли кто-нибудь помочь мне решить эту проблему.
мой код:
import datetime
data = pd.read_csv('data6.csv' , sep=',')
print(data)
data['date'] = pd.to_datetime(data['date'] + " " + data['time'], format='%m/%d/%Y %H:%M:%S')
lastday = data.loc[0, 'date']
def convert_time(x):
global lastday
if x.date() == lastday.date():
tm = x - lastday
return tm.total_seconds()/60
else:
lastday = x
return 0
data['time'] = data['date'].apply(convert_time)
data.set_index('date', inplace=True)
data = data.values
X = 1
n_out = 1
x,y=list(),list()
start =0
for _ in range(len(data)):
in_end = start+X
out_end= in_end + n_out
if out_end < len(data):
x_input = data[start:in_end]
x.append(x_input)
while y.append(data[in_end:out_end,1]):
if data['time'] <= 60:
print(y)
data['time']+=1
start +=1
x = np.asanyarray(x)
y = np.asanyarray(y)
мой вывод:
[[ 63.][104.][ 93.][177.][133.][ 70.][ 83.][127.][205.][298.][234.][148.[135.][100.][166.]]
Но тут возникла проблема, что
После 12:00:00 я измерил значение в 13:45. Таким образом, после 12:00:00 мой вывод отображается в соответствии со значением 13:45 (в среднем 465 минут). Но я хочу получать свои выходные данные каждые 60 минут, если в это время нет значения, я хочу установить его как 0 в это время.
Что я хочу написать для вывода:
time temp humidity wind
360 70 0 0
420 0 0 0
480 0 0 0
входы должны быть добавлены следующим образом
time temp humidity wind
0 min 63 0 0
0-60 min 63 0 2
:
:
Тогда здесь, в
12:00:00 ; 13:00:00
входы:
time (360:420 min ) 70 0 0
time (420:480 min) 83 0 0
Это метод, который я пытаюсь сделать. Но он не пришел хорошо в соответствии с моим кодом.
Может кто-нибудь помочь мне решить эту проблему?
CSV-файл:
Мой CSV-файл.
Используя метод передискретизации, выведите:
![enter image description here](https://i.stack.imgur.com/3V75J.png)
Тогда вывод:
Выход после повторной выборки:
![enter image description here](https://i.stack.imgur.com/wEofs.png)