-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathFunc_event_num.py
More file actions
75 lines (61 loc) · 3.97 KB
/
Func_event_num.py
File metadata and controls
75 lines (61 loc) · 3.97 KB
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# data_processing.py
import numpy as np
import pandas as pd
def cal_event_num(models, ssp, TT, ExtremeSet, SevereSet, ModerateSet):
PATH = "./pr/results/"
eventSet = [f"{model}_{ss}" for model in models for ss in ssp]
num_pExtreme = np.zeros((len(eventSet), TT))
num_pSevere = np.zeros((len(eventSet), TT))
num_pModerate = np.zeros((len(eventSet), TT))
num_nExtreme = np.zeros((len(eventSet), TT))
num_nSevere = np.zeros((len(eventSet), TT))
num_nModerate = np.zeros((len(eventSet), TT))
num_cExtreme = np.zeros((len(eventSet), TT))
num_cSevere = np.zeros((len(eventSet), TT))
num_cModerate = np.zeros((len(eventSet), TT))
for s, scenario in enumerate(eventSet):
data = pd.read_csv(PATH + "SPI_" + scenario + ".csv", delimiter=",")
data = data.iloc[:, 3:38]
# Convert columns to numeric
data = data.apply(pd.to_numeric, errors='coerce')
num_pExtreme[s, :] = data.apply(lambda col: ((col >= 2) & ~col.isnull()).sum())
num_pSevere[s, :] = data.apply(lambda col: ((col >= 1.5) & (col < 2) & ~col.isnull()).sum())
num_pModerate[s, :] = data.apply(lambda col: ((col >= 1) & (col < 1.5) & ~col.isnull()).sum())
num_nExtreme[s, :] = data.apply(lambda col: ((col <= -2) & ~col.isnull()).sum())
num_nSevere[s, :] = data.apply(lambda col: ((col <= -1.5) & (col > -2) & ~col.isnull()).sum())
num_nModerate[s, :] = data.apply(lambda col: ((col <= -1) & (col > -1.5) & ~col.isnull()).sum())
num_cExtreme[s, :] = (num_pExtreme[s, :] + num_nExtreme[s, :]) / 2
num_cSevere[s, :] = (num_pSevere[s, :] + num_nSevere[s, :]) / 2
num_cModerate[s, :] = (num_pModerate[s, :] + num_nModerate[s, :]) / 2
cnum_pExtreme = np.zeros((len(eventSet), TT))
cnum_nExtreme = np.zeros((len(eventSet), TT))
cnum_cExtreme = np.zeros((len(eventSet), TT))
cnum_pSevere = np.zeros((len(eventSet), TT))
cnum_nSevere = np.zeros((len(eventSet), TT))
cnum_cSevere = np.zeros((len(eventSet), TT))
cnum_pModerate = np.zeros((len(eventSet), TT))
cnum_nModerate = np.zeros((len(eventSet), TT))
cnum_cModerate = np.zeros((len(eventSet), TT))
for i in range(0, num_pExtreme.shape[1]):
cnum_pExtreme[:, i] = np.sum(num_pExtreme[:, 0:i+1], axis=1)
cnum_nExtreme[:, i] = np.sum(num_nExtreme[:, 0:i+1], axis=1)
cnum_cExtreme[:, i] = np.sum(num_cExtreme[:, 0:i+1], axis=1)
cnum_pSevere[:, i] = np.sum(num_pSevere[:, 0:i+1], axis=1)
cnum_nSevere[:, i] = np.sum(num_nSevere[:, 0:i+1], axis=1)
cnum_cSevere[:, i] = np.sum(num_cSevere[:, 0:i+1], axis=1)
cnum_pModerate[:, i] = np.sum(num_pModerate[:, 0:i+1], axis=1)
cnum_nModerate[:, i] = np.sum(num_nModerate[:, 0:i+1], axis=1)
cnum_cModerate[:, i] = np.sum(num_cModerate[:, 0:i+1], axis=1)
num_Extreme = np.concatenate((num_pExtreme, num_nExtreme, num_cExtreme), axis=0)
num_Severe = np.concatenate((num_pSevere, num_nSevere, num_cSevere), axis=0)
num_Moderate = np.concatenate((num_pModerate, num_nModerate, num_cModerate), axis=0)
num_Extreme = pd.DataFrame(num_Extreme.T, columns=ExtremeSet, index=range(2016, 2051))
num_Severe = pd.DataFrame(num_Severe.T, columns=SevereSet, index=range(2016, 2051))
num_Moderate = pd.DataFrame(num_Moderate.T, columns=ModerateSet, index=range(2016, 2051))
cnum_Extreme = np.concatenate((cnum_pExtreme, cnum_nExtreme, cnum_cExtreme), axis=0)
cnum_Severe = np.concatenate((cnum_pSevere, cnum_nSevere, cnum_cSevere), axis=0)
cnum_Moderate = np.concatenate((cnum_pModerate, cnum_nModerate, cnum_cModerate), axis=0)
cnum_Extreme = pd.DataFrame(cnum_Extreme.T, columns=ExtremeSet, index=range(2016, 2051))
cnum_Severe = pd.DataFrame(cnum_Severe.T, columns=SevereSet, index=range(2016, 2051))
cnum_Moderate = pd.DataFrame(cnum_Moderate.T, columns=ModerateSet, index=range(2016, 2051))
return num_Extreme, num_Severe, num_Moderate, cnum_Extreme, cnum_Severe, cnum_Moderate