Notebook
Earthquakes.info()
!pip install datasist # haversine
fig, ax = plt.subplots(1,1, figsize=(14, 5)) sns.scatterplot( data= Earthquakes,x=Earthquakes["ProxiMagnit"], y=Earthquakes["Dst"],hue=Earthquakes["Magnitude"],size= Earthquakes.Depth);
import datetime sns.set_style("whitegrid", {'grid.linestyle': '--'}) fig, ax = plt.subplots(1,1, figsize=(21, 8)) # #Earthquake15= Earthquake15[Earthquake15.Mw >= 5.0] vert= Earthquake15.index.date ##ax.vline( datetime.date(2015, 2, 28), [0] ,1) #list( ) for v in vert: plt.axvline( v, 0 ,1 , color="darkorange", lw=0.6) # datetime.date(2015, 2, 28) sns.scatterplot(x=dfC.index, y= dfC.Flow_Rate_Madonna_di_Canneto, data=dfC, s=4) sns.scatterplot(x=Earthquake15.index, y= Earthquake15.Mw *50, data=Earthquake15, label="Magnitude$ML*50$") #kind="line" ax=ax plt.xticks(rotation=90); #axe.setxaxis(rotation=90) plt.xlim(pd.to_datetime( "2015-01-01" ),pd.to_datetime("2019-12-29" ) );
#Water_Spring_Madonna_di_Canneto.set_index("Date", inplace=True) #Water_Spring_Madonna_di_Canneto.drop("Flow_Rate_Madonna_di_Canneto", inplace=True) Water_Spring_Madonna_di_Canneto.index = pd.to_datetime( Water_Spring_Madonna_di_Canneto.index, format='%Y-%m-%d' ) # %H:%M:%S
import os for dirname, _, filenames in os.walk('acea-water-prediction'): # /kaggle/input for filename in filenames: print(os.path.join(dirname, filename)) continue
type(averageTemp)
averageTemp.Rainfall_Settefrati.indexaverageTemp2019 = "2019-" + averageTemp.index.astype(str) #replace( ) df['col'] = 'str' + df['col'].astype(str)
#averageTemp2020 = averageTemp # copy of df averageTemp2020.index = "2020-" + averageTemp2020.index.astype(str) #.replace( "2019-","2020-") #d
AMC class Dormant season Growing season [mm] AMC I (dry) P<12.7 P<35.6 AMC II (medium) 12.7<P<27.9 35.6<P<53.3 AMC III (wet) P>27.9 P>53.3
rng = pd.date_range(start="2014-04-01", end="2014-04-15", freq='D') # was 2004!
Water_Spring_Madonna_di_Canneto["Wet"]= np.where(((Water_Spring_Madonna_di_Canneto["Rainfall_Settefrati"].rolling(5).sum()>(53.3)) & (Water_Spring_Madonna_di_Canneto["Dormant"]==0)), 2, 0) # some area correction /3 Water_Spring_Madonna_di_Canneto["Wet"]= np.where(((Water_Spring_Madonna_di_Canneto["Rainfall_Settefrati"].rolling(5).sum()>(27.9)) & (Water_Spring_Madonna_di_Canneto["Dormant"]==1)), 2, 0) # Medium Water_Spring_Madonna_di_Canneto["Avg"]= np.where((Water_Spring_Madonna_di_Canneto["Rainfall_Settefrati"].rolling(5).sum()>35.6 ) & (Water_Spring_Madonna_di_Canneto["Rainfall_Settefrati"].rolling(5).sum()<=53.3 ) & (Water_Spring_Madonna_di_Canneto["Dormant"]==0), 1, 0) Water_Spring_Madonna_di_Canneto["Avg"]= np.where((Water_Spring_Madonna_di_Canneto["Rainfall_Settefrati"].rolling(5).sum()>12.7 ) & (Water_Spring_Madonna_di_Canneto["Rainfall_Settefrati"].rolling(5).sum()<=27.9 ) & (Water_Spring_Madonna_di_Canneto["Dormant"]==1), 1, 0) # Dry Water_Spring_Madonna_di_Canneto["Dry"]= np.where((Water_Spring_Madonna_di_Canneto["Rainfall_Settefrati"].rolling(5).sum()<=35.6 ) & ( Water_Spring_Madonna_di_Canneto["Dormant"]==0), 0.1, 0) Water_Spring_Madonna_di_Canneto["Dry"]= np.where((Water_Spring_Madonna_di_Canneto["Rainfall_Settefrati"].rolling(5).sum()<=12.7 ) & ( Water_Spring_Madonna_di_Canneto["Dormant"]==1), 0.1, 0)
def WetorDry(dfW): dfW.loc["Rainfall_5"] =dfW["Rainfall_Settefrati"].rolling(5).sum() if dfW[(dfW["Rainfall_5"]>53.3) & (dfW["Dormant"]==0)]==True: dfW["Wet"]= 2 # some area correction /3 elif dfW[(dfW["Rainfall_5"]>27.9) & (dfW["Dormant"]==1)]==True: dfW["Wet"]= 2 # Medium #elif (dfW["Rainfall_5"]>35.6 ) & (dfW["Rainfall_5"]<=53.3 ) & (dfW["Dormant"]==0): dfW["Avg"]=1 #elif (dfW["Rainfall_5"]>12.7 ) & (dfW["Rainfall_5"]<=27.9 ) & (dfW["Dormant"]==1): dfW["Avg"]= 1 # Dry #elif (dfW["Rainfall_5"]<=35.6 ) & ( dfW["Dormant"]==0): dfW["Dry"]= 0.01 #else (dfW["Rainfall_5"]<=12.7 ) & ( dfW["Dormant"]==1): dfW["Dry"]= 0.01 return dfW["Wet"]
Water_Spring_Madonna_di_Canneto= dfW
conditions = [ (dfW["Rainfall_5"]>53.3) & (dfW["Dormant"]==0) , (dfW["Rainfall_5"]>27.9) & (dfW["Dormant"]==1), (dfW["Rainfall_5"]>35.6 ) & (dfW["Dormant"]==0) , (dfW["Rainfall_5"]>(27.9)) & (dfW["Dormant"]==1), (dfW["Rainfall_5"]<=35.6 ) & (dfW["Dormant"]==0) , (dfW["Rainfall_5"]<=(27.9)) & (dfW["Dormant"]==1), ] choices = [2,2,1,1, 0.01,0.01] dfW['Wet'] = np.select(conditions, choices, default=np.nan)
print(df2)
http://vanoproy.be/python/figs/rainfall-runoff-analysis-6-638.jpg http://vanoproy.be/python/figs/SoilConservationServiceRunoffEquation.jpg http://vanoproy.be/python/figs/Estimation_of_surface_runoff.png
def runoffdepth(P): CN=55 S= (1000/CN)-10 Q = (P- 0.2 *S)**2/(P + 0.8*S) # S is related to the soil and cover conditions of the watershed through the CN. return Q #round(, 4)
Water_Spring_Madonna_di_Canneto= Water_Spring_Madonna_di_Canneto.drop( columns=['runoffdepth'],axis=1 )
###### df['X'] = df.apply(lambda row : normalize(row['X'], row['Y']), axis = 1) Water_Spring_Madonna_di_Canneto['runoffdepth'] = Water_Spring_Madonna_di_Canneto.apply(lambda row : runoffdepthdry(Water_Spring_Madonna_di_Canneto['Rainfall_Settefrati'], Water_Spring_Madonna_di_Canneto['Wet']), axis = 1)
Water_Spring_Madonna_di_Canneto[['runoffdepth','runoffdepth2']]Water_Spring_Madonna_di_Canneto[['runoffdepth','runoffdepth2']].plot( figsize=(15, 4));
infiltration(dfW) # Water_Spring_Madonna_di_Canneto
http://vanoproy.be/python/figs/AMC%20table%20Soil%20Conservation%20Service%20Curve%20Number%20Methodology.png AMC table Soil Conservation Service Curve Number Methodology.png
Water_Spring_Madonna_di_Canneto= pd.read_csv("Madonna_di_Canneto_PET.csv", encoding="UTF-8", engine="python" )
CannetoFlowmonth =Water_Spring_Madonna_di_Canneto.Flow_Rate_Mad.resample('MS').mean()
Water_Spring_Madonna_di_Canneto.Flow_Rate_Madonna_di_Canneto["2016-04-14":"2016-04-22"]= "" Water_Spring_Madonna_di_Canneto.Flow_Rate_Madonna_di_Canneto["2017-02-05":"2017-02-19"]=""
# Drop rows where all data is the same dfC =Water_Spring_Madonna_di_Canneto.drop_duplicates( subset="Flow_Rate_Madonna_di_Canneto", keep='first') # last# Drop rows where all data is the same dfC =Water_Spring_Madonna_di_Canneto.drop_duplicates( subset="Flow_Rate_Mad", keep='first', ) # last
#dailypercentageofannualdaytimehours.csv Water_Spring_Madonna_di_Canneto.loc[Water_Spring_Madonna_di_Canneto["Month"]==1,"p"]= 0.22 # Water_Spring_Madonna_di_Canneto Water_Spring_Madonna_di_Canneto.loc[Water_Spring_Madonna_di_Canneto["Month"]==2,"p"]= 0.24 Water_Spring_Madonna_di_Canneto.loc[Water_Spring_Madonna_di_Canneto["Month"]==3,"p"]= 0.27 Water_Spring_Madonna_di_Canneto.loc[Water_Spring_Madonna_di_Canneto["Month"]==4,"p"]= 0.3 Water_Spring_Madonna_di_Canneto.loc[Water_Spring_Madonna_di_Canneto["Month"]==5,"p"]= 0.32 Water_Spring_Madonna_di_Canneto.loc[Water_Spring_Madonna_di_Canneto["Month"]==6,"p"]= 0.34 Water_Spring_Madonna_di_Canneto.loc[Water_Spring_Madonna_di_Canneto["Month"]==7,"p"]= 0.33 Water_Spring_Madonna_di_Canneto.loc[Water_Spring_Madonna_di_Canneto["Month"]==8,"p"]= 0.31 Water_Spring_Madonna_di_Canneto.loc[Water_Spring_Madonna_di_Canneto["Month"]==9,"p"]= 0.28 Water_Spring_Madonna_di_Canneto.loc[Water_Spring_Madonna_di_Canneto["Month"]==10,"p"]= 0.25 Water_Spring_Madonna_di_Canneto.loc[Water_Spring_Madonna_di_Canneto["Month"]==11,"p"]= 0.22 Water_Spring_Madonna_di_Canneto.loc[Water_Spring_Madonna_di_Canneto["Month"]==12,"p"]= 0.21
Water_Spring_Madonna_di_Canneto["𝐸𝑇𝑜"]=1.4 *Water_Spring_Madonna_di_Canneto["p"]* (0.457* (Water_Spring_Madonna_di_Canneto["Temperature_Settefrati"]-2)+8.128)
Rad01.head(2)
Water_Spring_Madonna_di_Canneto= Water_Spring_Madonna_di_Canneto.reset_index( drop=True )
[(0, 'doy'), (1, 'Month'), (2, 'Rainfall_5'), (3, 'Year'), (4, 'TmnStd'), (5, 'Flow_m3_90'), (6, 'Rainfall_m3_90'), (7, 'Flow_90'), (8, 'Rainfall_90'), (9, 'TmnStd_4'), (10, 'T_7'), (11, 'Rainfall_4'), (12, 'Rainfall_50'), (13, 'Rainfall_7'), (14, 'Rainfall_22'), (15, 'Rainfall_30'), (16, 'RainCutOff_6'), (17, 'RainOvers_6'), (18, 'RCO_F_cumdif'), (19, 'R_F_cumdif'), (20, 'Wet'), (21, 'runoffdepth'), (22, 'PET'), (23, 'Infilt'), (24, 'Infiltsum')] 1. feature 24 (0.647980) 2. feature 19 (0.105506) 3. feature 15 (0.044493) 4. feature 11 (0.032101) 5. feature 0 (0.028639) 6. feature 1 (0.020241) 7. feature 2 (0.019622) 8. feature 5 (0.015123) 9. feature 7 (0.015035) 10. feature 18 (0.014298) 11. feature 23 (0.010817) 12. feature 6 (0.008491) 13. feature 8 (0.008491) 14. feature 10 (0.004533) 15. feature 12 (0.003864) 16. feature 16 (0.003774) 17. feature 14 (0.003549) 18. feature 13 (0.003297) 19. feature 9 (0.002952) 20. feature 4 (0.002500) 21. feature 22 (0.001693) 22. feature 3 (0.001015) 23. feature 21 (0.000939) 24. feature 17 (0.000851) 25. feature 20 (0.000195) [(0, 'doy'), (1, 'Month'), (2, 'PET'), (3, 'Dormant'), (4, 'Rainfall_5'), (5, 'Wet'), (6, 'RainCutOff_6'), (7, 'RainOvers_6'), (8, 'Rainfall_4'), (9, 'Rainfall_50'), (10, 'Rainfall_7'), (11, 'Rainfall_22'), (12, 'Rainfall_30'), (13, 'RCO_F_cumdif'), (14, 'R_F_cumdif')] 1. feature 12 (0.340276) 2. feature 14 (0.194241) 3. feature 13 (0.165135) 4. feature 0 (0.104169) 5. feature 8 (0.049974) 6. feature 9 (0.044195) 7. feature 11 (0.029991) 8. feature 1 (0.022123) 9. feature 4 (0.012752) 10. feature 10 (0.011318) 11. feature 2 (0.010812) 12. feature 6 (0.009547) 13. feature 7 (0.003035) 14. feature 3 (0.001701) 15. feature 5 (0.000732) Feature ranking: 1. feature 15 (0.321605) 2. feature 7 (0.204519) 3. feature 14 (0.157351) 4. feature 11 (0.072381) 5. feature 2 (0.062029) 6. feature 9 (0.039827) 7. feature 16 (0.025730) 8. feature 3 (0.025531) 9. feature 5 (0.024280) 10. feature 10 (0.018382) 11. feature 12 (0.010949) 12. feature 6 (0.010140) 13. feature 13 (0.010096) 14. feature 8 (0.007798) 15. feature 4 (0.006739) 16. feature 1 (0.002054) 17. feature 0 (0.000590)
print(y_pred.shape, y_test.shape )
Water_Spring_Madonna_di_Canneto.info()
doy Month Rainfall_5 Year TmnStd Flow_m3_90 Rainfall_m3_90 Rainfall_90 TmnStd_4 T_7 Rainfall_50 Rainfall_7 Rainfall_22 Rainfall_30 RainCutOffmm RCO_F_cumdif R_F_cumdif Dormant Wet PET Infiltsum
Canneto= Canneto.drop(["Dormant","Wet","RainCutOffmm"], axis=1)
from sklearn.metrics import r2_score yy_true = [3, -0.5, 2, 7] yy_pred = [2.5, 0.0, 2, 8] r2_score(yy_true, yy_pred) #yy_true = [[0.5, 1], [-1, 1], [7, -6]] #yy_pred = [[0, 2], [-1, 2], [8, -5]] #r2_score(yy_true, yy_pred, multioutput='variance_weighted') #yy_true = [[0.5, 1], [-1, 1], [7, -6]] #yy_pred = [[0, 2], [-1, 2], [8, -5]] #r2_score(yy_true, yy_pred, multioutput='uniform_average')
print(y_test, type(y_test))