-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdata_generation.py
60 lines (44 loc) · 1.89 KB
/
data_generation.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import numpy as np
import pandas as pd
import sys
import getopt
def data_generation(start_date, end_date, is_train=True):
dates = pd.date_range(start=pd.Timestamp(start_date), end=pd.Timestamp(end_date), freq='30min')
shape = len(dates)
mu, sigma = 4, 1
values = np.random.default_rng().normal(mu, sigma, shape)
rints = np.round(values)
rints[rints < 0] = 0
df = pd.DataFrame({
"datetime": dates,
"count": rints,
})
df['hour'] = df['datetime'].dt.hour
df = df[(6 <= df['hour']) & (df['hour'] <= 21)]
df['count'] = np.where(df['hour'] == 12, df['count'] + 3, df['count'] - 1)
df['count'] = np.where(df['hour'] == 13, df['count'] + 3, df['count'] - 1)
df['count'] = np.where(df['hour'] == 18, df['count'] + 3, df['count'] - 1)
df['count'] = np.where(df['hour'] == 19, df['count'] + 3, df['count'] - 1)
df['count'] = np.where(df['count'] < 0, 0, df['count'])
df.drop('hour', axis=1, inplace=True)
# print(df.info())
if is_train:
df.to_csv('train_data.csv', index=False)
else:
df.to_csv('test_data.csv', index=False)
if __name__ == "__main__":
print("Acquisizione intervalli temporali di training e testing...")
print("Inserire i datetime richiesti nel formato: 'YYYY-MM-DD hh:mm:ss'")
try:
train_start = input("Data di inizio training:")
train_end = input("Data di fine training:")
test_start = input("Data di inizio testing:")
test_end = input("Data di fine testing:")
except:
print("ERRORE: qualcosa non ha funzionato nell'acquisizione degli interavalli temporali!!!")
sys.exit(-1)
print("Generazione dati di training...")
data_generation(train_start, train_end)
print("Generazione dati di testing...")
data_generation(test_start, test_end, is_train=False)
print("Fatto!")