diff --git "a/app.py" "b/app.py" new file mode 100644--- /dev/null +++ "b/app.py" @@ -0,0 +1,2630 @@ +import gradio as gr +import pandas as pd +import plotly.graph_objects as go + +df_2019 = pd.read_csv("aggregate_data_2019_weather.csv") +df_2020 = pd.read_csv("aggregate_data_2020_weather.csv") +df_2021 = pd.read_csv("aggregate_data_2021_weather.csv") +df_2022 = pd.read_csv("aggregate_data_2022_weather.csv") + + +def merge_min_max_mean_2022_37027(df_2022,df_2021,df_2020,df_2019): + #2022 + df_site_2022 = df_2022.loc[df_2022['zipCode']==(37027)] + df_site_2022['year_month']=df_site_2022['year_month'].replace({'2022_1': '1', '2022_2': '2', '2022_3': '3', '2022_4': '4','2022_5': '5', '2022_6': '6', '2022_7': '7', '2022_8': '8','2022_9': '9', '2022_10': '10', '2022_11': '11', '2022_12': '12'}) + df_site_2022['year_month'] = df_site_2022['year_month'].astype(int) + df_site_2022 = df_site_2022.sort_values("year_month") + df_site_2022['year_month']=df_site_2022['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2022[['year_month','zipCode']] + df_site_mean_2022 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2022=df_site_mean_2022.rename(columns={'cloudCover_mean': '37027 Mean cloud cover in 2022', 'windSpeed_mean': '37027 Mean wind speed in 2022', 'snowDepth_mean': '37027 Mean snow depth in 2022','pressure_mean': '37027 Mean pressure in 2022', 'precipitation_mean': '37027 Mean precipitation in 2022','humidity_mean': '37027 Mean humidity in 2022','airTemperature_mean': '37027 Mean air temperature in 2022'}) + #Reseting index + df_site_mean_2022=df_site_mean_2022.reset_index() + + #max + df_site_max = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('max') ]] + df_site_max_2022 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2022=df_site_max_2022.rename(columns={'cloudCover_max': '37027 Max cloud cover in 2022', 'windSpeed_max': '37027 Max wind speed in 2022', 'snowDepth_max': '37027 Max snow depth in 2022','pressure_max': '37027 Max pressure in 2022', 'precipitation_max': '37027 Max precipitation in 2022','humidity_max': '37027 Max humidity in 2022','airTemperature_max': '37027 Max air temperature in 2022'}) + #Reseting index + df_site_max_2022=df_site_max_2022.reset_index() + + #min + df_site_min = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('min') ]] + df_site_min_2022 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2022=df_site_min_2022.rename(columns={'cloudCover_min': '37027 Min cloud cover in 2022', 'windSpeed_min': '37027 Min wind speed in 2022', 'snowDepth_min': '37027 Min snow depth in 2022','pressure_min': '37027 Min pressure in 2022','precipitation_min': '37027 Min precipitation in 2022','humidity_min': '37027 Min humidity in 2022','airTemperature_min': '37027 Min air temperature in 2022'}) + #Reseting index + df_site_min_2022=df_site_min_2022.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2022 = pd.concat([df_site_mean_2022,df_site_max_2022,df_site_min_2022], axis=1) + + #2021 + df_site_2021 = df_2021.loc[df_2021['zipCode']==(37027)] + df_site_2021['year_month']=df_site_2021['year_month'].replace({'2021_1': '1', '2021_2': '2', '2021_3': '3', '2021_4': '4','2021_5': '5', '2021_6': '6', '2021_7': '7', '2021_8': '8','2021_9': '9', '2021_10': '10', '2021_11': '11', '2021_12': '12'}) + df_site_2021['year_month'] = df_site_2021['year_month'].astype(int) + df_site_2021 = df_site_2021.sort_values("year_month") + df_site_2021['year_month']=df_site_2021['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2021[['year_month','zipCode']] + df_site_mean_2021 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2021=df_site_mean_2021.rename(columns={'cloudCover_mean': '37027 Mean cloud cover in 2021', 'windSpeed_mean': '37027 Mean wind speed in 2021', 'snowDepth_mean': '37027 Mean snow depth in 2021','pressure_mean': '37027 Mean pressure in 2021', 'precipitation_mean': '37027 Mean precipitation in 2021','humidity_mean': '37027 Mean humidity in 2021','airTemperature_mean': '37027 Mean air temperature in 2021'}) + #Reseting index + df_site_mean_2021=df_site_mean_2021.reset_index() + + #max + df_site_max = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('max') ]] + df_site_max_2021 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2021=df_site_max_2021.rename(columns={'cloudCover_max': '37027 Max cloud cover in 2021', 'windSpeed_max': '37027 Max wind speed in 2021', 'snowDepth_max': '37027 Max snow depth in 2021','pressure_max': '37027 Max pressure in 2021', 'precipitation_max': '37027 Max precipitation in 2021','humidity_max': '37027 Max humidity in 2021','airTemperature_max': '37027 Max air temperature in 2021'}) + #Reseting index + df_site_max_2021=df_site_max_2021.reset_index() + + #min + df_site_min = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('min') ]] + df_site_min_2021 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2021=df_site_min_2021.rename(columns={'cloudCover_min': '37027 Min cloud cover in 2021', 'windSpeed_min': '37027 Min wind speed in 2021', 'snowDepth_min': '37027 Min snow depth in 2021','pressure_min': '37027 Min pressure in 2021','precipitation_min': '37027 Min precipitation in 2021','humidity_min': '37027 Min humidity in 2021','airTemperature_min': '37027 Min air temperature in 2021'}) + #Reseting index + df_site_min_2021=df_site_min_2021.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2021 = pd.concat([df_site_mean_2021,df_site_max_2021,df_site_min_2021], axis=1) + + #2020 + df_site_2020 = df_2020.loc[df_2020['zipCode']==(37027)] + df_site_2020['year_month']=df_site_2020['year_month'].replace({'2020_1': '1', '2020_2': '2', '2020_3': '3', '2020_4': '4','2020_5': '5', '2020_6': '6', '2020_7': '7', '2020_8': '8', '2020_9': '9', '2020_10': '10', '2020_11': '11', '2020_12': '12'}) + df_site_2020['year_month'] = df_site_2020['year_month'].astype(int) + df_site_2020 = df_site_2020.sort_values("year_month") + df_site_2020['year_month']=df_site_2020['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2020[['year_month','zipCode']] + df_site_mean_2020 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2020=df_site_mean_2020.rename(columns={'cloudCover_mean': '37027 Mean cloud cover in 2020', 'windSpeed_mean': '37027 Mean wind speed in 2020', 'snowDepth_mean': '37027 Mean snow depth in 2020','pressure_mean': '37027 Mean pressure in 2020', 'precipitation_mean': '37027 Mean precipitation in 2020','humidity_mean': '37027 Mean humidity in 2020','airTemperature_mean': '37027 Mean air temperature in 2020'}) + #Reseting index + df_site_mean_2020=df_site_mean_2020.reset_index() + + #max + df_site_max = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('max') ]] + df_site_max_2020 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2020=df_site_max_2020.rename(columns={'cloudCover_max': ' 37027 Max cloud cover in 2020', 'windSpeed_max': '37027 Max wind speed in 2020', 'snowDepth_max': '37027 Max snow depth in 2020','pressure_max': '37027 Max pressure in 2020', 'precipitation_max': '37027 Max precipitation in 2020','humidity_max': '37027 Max humidity in 2020','airTemperature_max': '37027 Max air temperature in 2020'}) + #Reseting index + df_site_max_2020=df_site_max_2020.reset_index() + + #min + df_site_min = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('min') ]] + df_site_min_2020 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2020=df_site_min_2020.rename(columns={'cloudCover_min': '37027 Min cloud cover in 2020', 'windSpeed_min': '37027 Min wind speed in 2020', 'snowDepth_min': '37027 Min snow depth in 2020','pressure_min': '37027 Min pressure in 2020','precipitation_min': '37027 Min precipitation in 2020','humidity_min': '37027 Min humidity in 2020','airTemperature_min': '37027 Min air temperature in 2020'}) + #Reseting index + df_site_min_2020=df_site_min_2020.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2020 = pd.concat([df_site_mean_2020,df_site_max_2020,df_site_min_2020], axis=1) + + #2019 + df_site_2019 = df_2019.loc[df_2019['zipCode']==(37027)] + df_site_2019['year_month']=df_site_2019['year_month'].replace({'2019_1': '1', '2019_2': '2', '2019_3': '3', '2019_4': '4','2019_5': '5', '2019_6': '6', '2019_7': '7', '2019_8': '8', '2019_9': '9', '2019_10': '10', '2019_11': '11', '2019_12': '12'}) + df_site_2019['year_month'] = df_site_2019['year_month'].astype(int) + df_site_2019 = df_site_2019.sort_values("year_month") + df_site_2019['year_month']=df_site_2019['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2019[['year_month','zipCode']] + df_site_mean_2019 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2019=df_site_mean_2019.rename(columns={'cloudCover_mean': '37027 Mean cloud cover in 2019', 'windSpeed_mean': '37027 Mean wind speed in 2019', 'snowDepth_mean': '37027 Mean snow depth in 2019','pressure_mean': '37027 Mean pressure in 2019', 'precipitation_mean': '37027 Mean precipitation in 2019','humidity_mean': '37027 Mean humidity in 2019','airTemperature_mean': '37027 Mean air temperature in 2019'}) + #Reseting index + df_site_mean_2019=df_site_mean_2019.reset_index() + + #max + df_site_max = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('max') ]] + df_site_max_2019 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2019=df_site_max_2019.rename(columns={'cloudCover_max': '37027 Max cloud cover in 2019', 'windSpeed_max': '37027 Max wind speed in 2019', 'snowDepth_max': '37027 Max snow depth in 2019','pressure_max': '37027 Max pressure in 2019', 'precipitation_max': '37027 Max precipitation in 2019','humidity_max': '37027 Max humidity in 2019','airTemperature_max': '37027 Max air temperature in 2019'}) + #Reseting index + df_site_max_2019=df_site_max_2019.reset_index() + + #min + df_site_min = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('min') ]] + df_site_min_2019 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2019=df_site_min_2019.rename(columns={'cloudCover_min': '37027 Min cloud cover in 2019 ', 'windSpeed_min': '37027 Min wind speed in 2019', 'snowDepth_min': '37027 Min snow depth in 2019','pressure_min': '37027 Min pressure in 2019','precipitation_min': '37027 Min precipitation in 2019','humidity_min': '37027 Min humidity in 2019','airTemperature_min': '37027 Min air temperature in 2019'}) + #Reseting index + df_site_min_2019=df_site_min_2019.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2019 = pd.concat([df_site_mean_2019,df_site_max_2019,df_site_min_2019], axis=1) + + df1 = pd.concat([df_merged_min_max_mean_2019,df_merged_min_max_mean_2020],axis = 1) + df2 = pd.concat([df_merged_min_max_mean_2021,df_merged_min_max_mean_2022],axis = 1) + df_merge = pd.concat([df1,df2],axis = 1) + df_merge= df_merge.drop(['index'], axis=1) + df_merge = df_merge.loc[:, ~df_merge.columns.duplicated()] + df_merge=df_merge.set_index('year_month') + df_merge= df_merge.drop(['zipCode'], axis=1) + + return(df_merge) + + +def merge_min_max_mean_2022_83707(df_2022,df_2021,df_2020,df_2019): + #2022 + df_site_2022 = df_2022.loc[df_2022['zipCode']==(83707)] + df_site_2022['year_month']=df_site_2022['year_month'].replace({'2022_1': '1', '2022_2': '2', '2022_3': '3', '2022_4': '4','2022_5': '5', '2022_6': '6', '2022_7': '7', '2022_8': '8','2022_9': '9', '2022_10': '10', '2022_11': '11', '2022_12': '12'}) + df_site_2022['year_month'] = df_site_2022['year_month'].astype(int) + df_site_2022 = df_site_2022.sort_values("year_month") + df_site_2022['year_month']=df_site_2022['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2022[['year_month','zipCode']] + df_site_mean_2022 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2022=df_site_mean_2022.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2022', 'windSpeed_mean': '83707 Mean wind speed in 2022', 'snowDepth_mean': '83707 Mean snow depth in 2022','pressure_mean': '83707 Mean pressure in 2022', 'precipitation_mean': '83707 Mean precipitation in 2022','humidity_mean': '37027 Mean humidity in 2022','airTemperature_mean': '37027 Mean air temperature in 2022'}) + #Reseting index + df_site_mean_2022=df_site_mean_2022.reset_index() + + #max + df_site_max = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('max') ]] + df_site_max_2022 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2022=df_site_max_2022.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2022', 'windSpeed_max': '83707 Max wind speed in 2022', 'snowDepth_max': '83707 Max snow depth in 2022','pressure_max': '83707 Max pressure in 2022', 'precipitation_max': '83707 Max precipitation in 2022','humidity_max': '37027 Max humidity in 2022','airTemperature_max': '37027 Max air temperature in 2022'}) + #Reseting index + df_site_max_2022=df_site_max_2022.reset_index() + + #min + df_site_min = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('min') ]] + df_site_min_2022 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2022=df_site_min_2022.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2022', 'windSpeed_min': '83707 Min wind speed in 2022', 'snowDepth_min': '83707 Min snow depth in 2022','pressure_min': '83707 Min pressure in 2022','precipitation_min': '83707 Min precipitation in 2022','humidity_min': '37027 Min humidity in 2022','airTemperature_min': '37027 Min air temperature in 2022'}) + #Reseting index + df_site_min_2022=df_site_min_2022.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2022 = pd.concat([df_site_mean_2022,df_site_max_2022,df_site_min_2022], axis=1) + + #2021 + df_site_2021 = df_2021.loc[df_2021['zipCode']==(83707)] + df_site_2021['year_month']=df_site_2021['year_month'].replace({'2021_1': '1', '2021_2': '2', '2021_3': '3', '2021_4': '4','2021_5': '5', '2021_6': '6', '2021_7': '7', '2021_8': '8','2021_9': '9', '2021_10': '10', '2021_11': '11', '2021_12': '12'}) + df_site_2021['year_month'] = df_site_2021['year_month'].astype(int) + df_site_2021 = df_site_2021.sort_values("year_month") + df_site_2021['year_month']=df_site_2021['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2021[['year_month','zipCode']] + df_site_mean_2021 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2021=df_site_mean_2021.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2021', 'windSpeed_mean': '83707 Mean wind speed in 2021', 'snowDepth_mean': '37027 Mean snow depth in 2021','pressure_mean': '37027 Mean pressure in 2021', 'precipitation_mean': '37027 Mean precipitation in 2021','humidity_mean': '37027 Mean humidity in 2021','airTemperature_mean': '37027 Mean air temperature in 2021'}) + #Reseting index + df_site_mean_2021=df_site_mean_2021.reset_index() + + #max + df_site_max = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('max') ]] + df_site_max_2021 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2021=df_site_max_2021.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2021', 'windSpeed_max': '83707 Max wind speed in 2021', 'snowDepth_max': '37027 Max snow depth in 2021','pressure_max': '37027 Max pressure in 2021', 'precipitation_max': '37027 Max precipitation in 2021','humidity_max': '37027 Max humidity in 2021','airTemperature_max': '37027 Max air temperature in 2021'}) + #Reseting index + df_site_max_2021=df_site_max_2021.reset_index() + + #min + df_site_min = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('min') ]] + df_site_min_2021 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2021=df_site_min_2021.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2021', 'windSpeed_min': '83707 Min wind speed in 2021', 'snowDepth_min': '37027 Min snow depth in 2021','pressure_min': '37027 Min pressure in 2021','precipitation_min': '37027 Min precipitation in 2021','humidity_min': '37027 Min humidity in 2021','airTemperature_min': '37027 Min air temperature in 2021'}) + #Reseting index + df_site_min_2021=df_site_min_2021.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2021 = pd.concat([df_site_mean_2021,df_site_max_2021,df_site_min_2021], axis=1) + + #2020 + df_site_2020 = df_2020.loc[df_2020['zipCode']==(83707)] + df_site_2020['year_month']=df_site_2020['year_month'].replace({'2020_1': '1', '2020_2': '2', '2020_3': '3', '2020_4': '4','2020_5': '5', '2020_6': '6', '2020_7': '7', '2020_8': '8', '2020_9': '9', '2020_10': '10', '2020_11': '11', '2020_12': '12'}) + df_site_2020['year_month'] = df_site_2020['year_month'].astype(int) + df_site_2020 = df_site_2020.sort_values("year_month") + df_site_2020['year_month']=df_site_2020['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2020[['year_month','zipCode']] + df_site_mean_2020 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2020=df_site_mean_2020.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2020', 'windSpeed_mean': '83707 Mean wind speed in 2020', 'snowDepth_mean': '37027 Mean snow depth in 2020','pressure_mean': '37027 Mean pressure in 2020', 'precipitation_mean': '37027 Mean precipitation in 2020','humidity_mean': '37027 Mean humidity in 2020','airTemperature_mean': '37027 Mean air temperature in 2020'}) + #Reseting index + df_site_mean_2020=df_site_mean_2020.reset_index() + + #max + df_site_max = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('max') ]] + df_site_max_2020 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2020=df_site_max_2020.rename(columns={'cloudCover_max': ' 83707 Max cloud cover in 2020', 'windSpeed_max': '83707 Max wind speed in 2020', 'snowDepth_max': '37027 Max snow depth in 2020','pressure_max': '37027 Max pressure in 2020', 'precipitation_max': '37027 Max precipitation in 2020','humidity_max': '37027 Max humidity in 2020','airTemperature_max': '37027 Max air temperature in 2020'}) + #Reseting index + df_site_max_2020=df_site_max_2020.reset_index() + + #min + df_site_min = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('min') ]] + df_site_min_2020 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2020=df_site_min_2020.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2020', 'windSpeed_min': '83707 Min wind speed in 2020', 'snowDepth_min': '37027 Min snow depth in 2020','pressure_min': '37027 Min pressure in 2020','precipitation_min': '37027 Min precipitation in 2020','humidity_min': '37027 Min humidity in 2020','airTemperature_min': '37027 Min air temperature in 2020'}) + #Reseting index + df_site_min_2020=df_site_min_2020.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2020 = pd.concat([df_site_mean_2020,df_site_max_2020,df_site_min_2020], axis=1) + + #2019 + df_site_2019 = df_2019.loc[df_2019['zipCode']==(83707)] + df_site_2019['year_month']=df_site_2019['year_month'].replace({'2019_1': '1', '2019_2': '2', '2019_3': '3', '2019_4': '4','2019_5': '5', '2019_6': '6', '2019_7': '7', '2019_8': '8', '2019_9': '9', '2019_10': '10', '2019_11': '11', '2019_12': '12'}) + df_site_2019['year_month'] = df_site_2019['year_month'].astype(int) + df_site_2019 = df_site_2019.sort_values("year_month") + df_site_2019['year_month']=df_site_2019['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2019[['year_month','zipCode']] + df_site_mean_2019 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2019=df_site_mean_2019.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2019', 'windSpeed_mean': '83707 Mean wind speed in 2019', 'snowDepth_mean': '37027 Mean snow depth in 2019','pressure_mean': '37027 Mean pressure in 2019', 'precipitation_mean': '37027 Mean precipitation in 2019','humidity_mean': '37027 Mean humidity in 2019','airTemperature_mean': '37027 Mean air temperature in 2019'}) + df_site_mean_2019 = df_site_mean_2019.replace('37027','83707', regex=True) + #Reseting index + df_site_mean_2019=df_site_mean_2019.reset_index() + + #max + df_site_max = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('max') ]] + df_site_max_2019 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2019=df_site_max_2019.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2019', 'windSpeed_max': '83707 Max wind speed in 2019', 'snowDepth_max': '37027 Max snow depth in 2019','pressure_max': '37027 Max pressure in 2019', 'precipitation_max': '37027 Max precipitation in 2019','humidity_max': '37027 Max humidity in 2019','airTemperature_max': '37027 Max air temperature in 2019'}) + #Reseting index + df_site_max_2019=df_site_max_2019.reset_index() + + #min + df_site_min = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('min') ]] + df_site_min_2019 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2019=df_site_min_2019.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2019 ', 'windSpeed_min': '83707 Min wind speed in 2019', 'snowDepth_min': '37027 Min snow depth in 2019','pressure_min': '37027 Min pressure in 2019','precipitation_min': '37027 Min precipitation in 2019','humidity_min': '37027 Min humidity in 2019','airTemperature_min': '37027 Min air temperature in 2019'}) + #Reseting index + df_site_min_2019=df_site_min_2019.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2019 = pd.concat([df_site_mean_2019,df_site_max_2019,df_site_min_2019], axis=1) + + df1 = pd.concat([df_merged_min_max_mean_2019,df_merged_min_max_mean_2020],axis = 1) + df2 = pd.concat([df_merged_min_max_mean_2021,df_merged_min_max_mean_2022],axis = 1) + df_merge = pd.concat([df1,df2],axis = 1) + df_merge= df_merge.drop(['index'], axis=1) + df_merge = df_merge.loc[:, ~df_merge.columns.duplicated()] + df_merge=df_merge.set_index('year_month') + df_merge= df_merge.drop(['zipCode'], axis=1) + # df_merge = df_merge.replace('37027','83707', regex=True) + df_merge.columns = df_merge.columns.str.replace(r"37027", "83707") + + return(df_merge) + + +def merge_min_max_mean_2022_91106(df_2022,df_2021,df_2020,df_2019): + #2022 + df_site_2022 = df_2022.loc[df_2022['zipCode']==(91106)] + df_site_2022['year_month']=df_site_2022['year_month'].replace({'2022_1': '1', '2022_2': '2', '2022_3': '3', '2022_4': '4','2022_5': '5', '2022_6': '6', '2022_7': '7', '2022_8': '8','2022_9': '9', '2022_10': '10', '2022_11': '11', '2022_12': '12'}) + df_site_2022['year_month'] = df_site_2022['year_month'].astype(int) + df_site_2022 = df_site_2022.sort_values("year_month") + df_site_2022['year_month']=df_site_2022['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2022[['year_month','zipCode']] + df_site_mean_2022 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2022=df_site_mean_2022.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2022', 'windSpeed_mean': '83707 Mean wind speed in 2022', 'snowDepth_mean': '83707 Mean snow depth in 2022','pressure_mean': '83707 Mean pressure in 2022', 'precipitation_mean': '83707 Mean precipitation in 2022','humidity_mean': '37027 Mean humidity in 2022','airTemperature_mean': '37027 Mean air temperature in 2022'}) + #Reseting index + df_site_mean_2022=df_site_mean_2022.reset_index() + + #max + df_site_max = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('max') ]] + df_site_max_2022 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2022=df_site_max_2022.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2022', 'windSpeed_max': '83707 Max wind speed in 2022', 'snowDepth_max': '83707 Max snow depth in 2022','pressure_max': '83707 Max pressure in 2022', 'precipitation_max': '83707 Max precipitation in 2022','humidity_max': '37027 Max humidity in 2022','airTemperature_max': '37027 Max air temperature in 2022'}) + #Reseting index + df_site_max_2022=df_site_max_2022.reset_index() + + #min + df_site_min = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('min') ]] + df_site_min_2022 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2022=df_site_min_2022.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2022', 'windSpeed_min': '83707 Min wind speed in 2022', 'snowDepth_min': '83707 Min snow depth in 2022','pressure_min': '83707 Min pressure in 2022','precipitation_min': '83707 Min precipitation in 2022','humidity_min': '37027 Min humidity in 2022','airTemperature_min': '37027 Min air temperature in 2022'}) + #Reseting index + df_site_min_2022=df_site_min_2022.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2022 = pd.concat([df_site_mean_2022,df_site_max_2022,df_site_min_2022], axis=1) + + #2021 + df_site_2021 = df_2021.loc[df_2021['zipCode']==(91106)] + df_site_2021['year_month']=df_site_2021['year_month'].replace({'2021_1': '1', '2021_2': '2', '2021_3': '3', '2021_4': '4','2021_5': '5', '2021_6': '6', '2021_7': '7', '2021_8': '8','2021_9': '9', '2021_10': '10', '2021_11': '11', '2021_12': '12'}) + df_site_2021['year_month'] = df_site_2021['year_month'].astype(int) + df_site_2021 = df_site_2021.sort_values("year_month") + df_site_2021['year_month']=df_site_2021['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2021[['year_month','zipCode']] + df_site_mean_2021 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2021=df_site_mean_2021.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2021', 'windSpeed_mean': '83707 Mean wind speed in 2021', 'snowDepth_mean': '37027 Mean snow depth in 2021','pressure_mean': '37027 Mean pressure in 2021', 'precipitation_mean': '37027 Mean precipitation in 2021','humidity_mean': '37027 Mean humidity in 2021','airTemperature_mean': '37027 Mean air temperature in 2021'}) + #Reseting index + df_site_mean_2021=df_site_mean_2021.reset_index() + + #max + df_site_max = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('max') ]] + df_site_max_2021 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2021=df_site_max_2021.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2021', 'windSpeed_max': '83707 Max wind speed in 2021', 'snowDepth_max': '37027 Max snow depth in 2021','pressure_max': '37027 Max pressure in 2021', 'precipitation_max': '37027 Max precipitation in 2021','humidity_max': '37027 Max humidity in 2021','airTemperature_max': '37027 Max air temperature in 2021'}) + #Reseting index + df_site_max_2021=df_site_max_2021.reset_index() + + #min + df_site_min = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('min') ]] + df_site_min_2021 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2021=df_site_min_2021.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2021', 'windSpeed_min': '83707 Min wind speed in 2021', 'snowDepth_min': '37027 Min snow depth in 2021','pressure_min': '37027 Min pressure in 2021','precipitation_min': '37027 Min precipitation in 2021','humidity_min': '37027 Min humidity in 2021','airTemperature_min': '37027 Min air temperature in 2021'}) + #Reseting index + df_site_min_2021=df_site_min_2021.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2021 = pd.concat([df_site_mean_2021,df_site_max_2021,df_site_min_2021], axis=1) + + #2020 + df_site_2020 = df_2020.loc[df_2020['zipCode']==(91106)] + df_site_2020['year_month']=df_site_2020['year_month'].replace({'2020_1': '1', '2020_2': '2', '2020_3': '3', '2020_4': '4','2020_5': '5', '2020_6': '6', '2020_7': '7', '2020_8': '8', '2020_9': '9', '2020_10': '10', '2020_11': '11', '2020_12': '12'}) + df_site_2020['year_month'] = df_site_2020['year_month'].astype(int) + df_site_2020 = df_site_2020.sort_values("year_month") + df_site_2020['year_month']=df_site_2020['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2020[['year_month','zipCode']] + df_site_mean_2020 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2020=df_site_mean_2020.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2020', 'windSpeed_mean': '83707 Mean wind speed in 2020', 'snowDepth_mean': '37027 Mean snow depth in 2020','pressure_mean': '37027 Mean pressure in 2020', 'precipitation_mean': '37027 Mean precipitation in 2020','humidity_mean': '37027 Mean humidity in 2020','airTemperature_mean': '37027 Mean air temperature in 2020'}) + #Reseting index + df_site_mean_2020=df_site_mean_2020.reset_index() + + #max + df_site_max = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('max') ]] + df_site_max_2020 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2020=df_site_max_2020.rename(columns={'cloudCover_max': ' 83707 Max cloud cover in 2020', 'windSpeed_max': '83707 Max wind speed in 2020', 'snowDepth_max': '37027 Max snow depth in 2020','pressure_max': '37027 Max pressure in 2020', 'precipitation_max': '37027 Max precipitation in 2020','humidity_max': '37027 Max humidity in 2020','airTemperature_max': '37027 Max air temperature in 2020'}) + #Reseting index + df_site_max_2020=df_site_max_2020.reset_index() + + #min + df_site_min = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('min') ]] + df_site_min_2020 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2020=df_site_min_2020.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2020', 'windSpeed_min': '83707 Min wind speed in 2020', 'snowDepth_min': '37027 Min snow depth in 2020','pressure_min': '37027 Min pressure in 2020','precipitation_min': '37027 Min precipitation in 2020','humidity_min': '37027 Min humidity in 2020','airTemperature_min': '37027 Min air temperature in 2020'}) + #Reseting index + df_site_min_2020=df_site_min_2020.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2020 = pd.concat([df_site_mean_2020,df_site_max_2020,df_site_min_2020], axis=1) + + #2019 + df_site_2019 = df_2019.loc[df_2019['zipCode']==(91106)] + df_site_2019['year_month']=df_site_2019['year_month'].replace({'2019_1': '1', '2019_2': '2', '2019_3': '3', '2019_4': '4','2019_5': '5', '2019_6': '6', '2019_7': '7', '2019_8': '8', '2019_9': '9', '2019_10': '10', '2019_11': '11', '2019_12': '12'}) + df_site_2019['year_month'] = df_site_2019['year_month'].astype(int) + df_site_2019 = df_site_2019.sort_values("year_month") + df_site_2019['year_month']=df_site_2019['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2019[['year_month','zipCode']] + df_site_mean_2019 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2019=df_site_mean_2019.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2019', 'windSpeed_mean': '83707 Mean wind speed in 2019', 'snowDepth_mean': '37027 Mean snow depth in 2019','pressure_mean': '37027 Mean pressure in 2019', 'precipitation_mean': '37027 Mean precipitation in 2019','humidity_mean': '37027 Mean humidity in 2019','airTemperature_mean': '37027 Mean air temperature in 2019'}) + df_site_mean_2019 = df_site_mean_2019.replace('37027','83707', regex=True) + #Reseting index + df_site_mean_2019=df_site_mean_2019.reset_index() + + #max + df_site_max = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('max') ]] + df_site_max_2019 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2019=df_site_max_2019.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2019', 'windSpeed_max': '83707 Max wind speed in 2019', 'snowDepth_max': '37027 Max snow depth in 2019','pressure_max': '37027 Max pressure in 2019', 'precipitation_max': '37027 Max precipitation in 2019','humidity_max': '37027 Max humidity in 2019','airTemperature_max': '37027 Max air temperature in 2019'}) + #Reseting index + df_site_max_2019=df_site_max_2019.reset_index() + + #min + df_site_min = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('min') ]] + df_site_min_2019 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2019=df_site_min_2019.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2019 ', 'windSpeed_min': '83707 Min wind speed in 2019', 'snowDepth_min': '37027 Min snow depth in 2019','pressure_min': '37027 Min pressure in 2019','precipitation_min': '37027 Min precipitation in 2019','humidity_min': '37027 Min humidity in 2019','airTemperature_min': '37027 Min air temperature in 2019'}) + #Reseting index + df_site_min_2019=df_site_min_2019.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2019 = pd.concat([df_site_mean_2019,df_site_max_2019,df_site_min_2019], axis=1) + + df1 = pd.concat([df_merged_min_max_mean_2019,df_merged_min_max_mean_2020],axis = 1) + df2 = pd.concat([df_merged_min_max_mean_2021,df_merged_min_max_mean_2022],axis = 1) + df_merge = pd.concat([df1,df2],axis = 1) + df_merge= df_merge.drop(['index'], axis=1) + df_merge = df_merge.loc[:, ~df_merge.columns.duplicated()] + df_merge=df_merge.set_index('year_month') + df_merge= df_merge.drop(['zipCode'], axis=1) + # df_merge = df_merge.replace('37027','83707', regex=True) + df_merge.columns = df_merge.columns.str.replace(r"37027", "91106") + df_merge.columns = df_merge.columns.str.replace(r"83707", "91106") + + return(df_merge) + +def merge_min_max_mean_2022_91301(df_2022,df_2021,df_2020,df_2019): + #2022 + df_site_2022 = df_2022.loc[df_2022['zipCode']==(91301)] + df_site_2022['year_month']=df_site_2022['year_month'].replace({'2022_1': '1', '2022_2': '2', '2022_3': '3', '2022_4': '4','2022_5': '5', '2022_6': '6', '2022_7': '7', '2022_8': '8','2022_9': '9', '2022_10': '10', '2022_11': '11', '2022_12': '12'}) + df_site_2022['year_month'] = df_site_2022['year_month'].astype(int) + df_site_2022 = df_site_2022.sort_values("year_month") + df_site_2022['year_month']=df_site_2022['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2022[['year_month','zipCode']] + df_site_mean_2022 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2022=df_site_mean_2022.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2022', 'windSpeed_mean': '83707 Mean wind speed in 2022', 'snowDepth_mean': '83707 Mean snow depth in 2022','pressure_mean': '83707 Mean pressure in 2022', 'precipitation_mean': '83707 Mean precipitation in 2022','humidity_mean': '37027 Mean humidity in 2022','airTemperature_mean': '37027 Mean air temperature in 2022'}) + #Reseting index + df_site_mean_2022=df_site_mean_2022.reset_index() + + #max + df_site_max = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('max') ]] + df_site_max_2022 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2022=df_site_max_2022.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2022', 'windSpeed_max': '83707 Max wind speed in 2022', 'snowDepth_max': '83707 Max snow depth in 2022','pressure_max': '83707 Max pressure in 2022', 'precipitation_max': '83707 Max precipitation in 2022','humidity_max': '37027 Max humidity in 2022','airTemperature_max': '37027 Max air temperature in 2022'}) + #Reseting index + df_site_max_2022=df_site_max_2022.reset_index() + + #min + df_site_min = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('min') ]] + df_site_min_2022 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2022=df_site_min_2022.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2022', 'windSpeed_min': '83707 Min wind speed in 2022', 'snowDepth_min': '83707 Min snow depth in 2022','pressure_min': '83707 Min pressure in 2022','precipitation_min': '83707 Min precipitation in 2022','humidity_min': '37027 Min humidity in 2022','airTemperature_min': '37027 Min air temperature in 2022'}) + #Reseting index + df_site_min_2022=df_site_min_2022.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2022 = pd.concat([df_site_mean_2022,df_site_max_2022,df_site_min_2022], axis=1) + + #2021 + df_site_2021 = df_2021.loc[df_2021['zipCode']==(91301)] + df_site_2021['year_month']=df_site_2021['year_month'].replace({'2021_1': '1', '2021_2': '2', '2021_3': '3', '2021_4': '4','2021_5': '5', '2021_6': '6', '2021_7': '7', '2021_8': '8','2021_9': '9', '2021_10': '10', '2021_11': '11', '2021_12': '12'}) + df_site_2021['year_month'] = df_site_2021['year_month'].astype(int) + df_site_2021 = df_site_2021.sort_values("year_month") + df_site_2021['year_month']=df_site_2021['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2021[['year_month','zipCode']] + df_site_mean_2021 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2021=df_site_mean_2021.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2021', 'windSpeed_mean': '83707 Mean wind speed in 2021', 'snowDepth_mean': '37027 Mean snow depth in 2021','pressure_mean': '37027 Mean pressure in 2021', 'precipitation_mean': '37027 Mean precipitation in 2021','humidity_mean': '37027 Mean humidity in 2021','airTemperature_mean': '37027 Mean air temperature in 2021'}) + #Reseting index + df_site_mean_2021=df_site_mean_2021.reset_index() + + #max + df_site_max = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('max') ]] + df_site_max_2021 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2021=df_site_max_2021.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2021', 'windSpeed_max': '83707 Max wind speed in 2021', 'snowDepth_max': '37027 Max snow depth in 2021','pressure_max': '37027 Max pressure in 2021', 'precipitation_max': '37027 Max precipitation in 2021','humidity_max': '37027 Max humidity in 2021','airTemperature_max': '37027 Max air temperature in 2021'}) + #Reseting index + df_site_max_2021=df_site_max_2021.reset_index() + + #min + df_site_min = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('min') ]] + df_site_min_2021 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2021=df_site_min_2021.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2021', 'windSpeed_min': '83707 Min wind speed in 2021', 'snowDepth_min': '37027 Min snow depth in 2021','pressure_min': '37027 Min pressure in 2021','precipitation_min': '37027 Min precipitation in 2021','humidity_min': '37027 Min humidity in 2021','airTemperature_min': '37027 Min air temperature in 2021'}) + #Reseting index + df_site_min_2021=df_site_min_2021.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2021 = pd.concat([df_site_mean_2021,df_site_max_2021,df_site_min_2021], axis=1) + + #2020 + df_site_2020 = df_2020.loc[df_2020['zipCode']==(91301)] + df_site_2020['year_month']=df_site_2020['year_month'].replace({'2020_1': '1', '2020_2': '2', '2020_3': '3', '2020_4': '4','2020_5': '5', '2020_6': '6', '2020_7': '7', '2020_8': '8', '2020_9': '9', '2020_10': '10', '2020_11': '11', '2020_12': '12'}) + df_site_2020['year_month'] = df_site_2020['year_month'].astype(int) + df_site_2020 = df_site_2020.sort_values("year_month") + df_site_2020['year_month']=df_site_2020['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2020[['year_month','zipCode']] + df_site_mean_2020 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2020=df_site_mean_2020.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2020', 'windSpeed_mean': '83707 Mean wind speed in 2020', 'snowDepth_mean': '37027 Mean snow depth in 2020','pressure_mean': '37027 Mean pressure in 2020', 'precipitation_mean': '37027 Mean precipitation in 2020','humidity_mean': '37027 Mean humidity in 2020','airTemperature_mean': '37027 Mean air temperature in 2020'}) + #Reseting index + df_site_mean_2020=df_site_mean_2020.reset_index() + + #max + df_site_max = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('max') ]] + df_site_max_2020 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2020=df_site_max_2020.rename(columns={'cloudCover_max': ' 83707 Max cloud cover in 2020', 'windSpeed_max': '83707 Max wind speed in 2020', 'snowDepth_max': '37027 Max snow depth in 2020','pressure_max': '37027 Max pressure in 2020', 'precipitation_max': '37027 Max precipitation in 2020','humidity_max': '37027 Max humidity in 2020','airTemperature_max': '37027 Max air temperature in 2020'}) + #Reseting index + df_site_max_2020=df_site_max_2020.reset_index() + + #min + df_site_min = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('min') ]] + df_site_min_2020 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2020=df_site_min_2020.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2020', 'windSpeed_min': '83707 Min wind speed in 2020', 'snowDepth_min': '37027 Min snow depth in 2020','pressure_min': '37027 Min pressure in 2020','precipitation_min': '37027 Min precipitation in 2020','humidity_min': '37027 Min humidity in 2020','airTemperature_min': '37027 Min air temperature in 2020'}) + #Reseting index + df_site_min_2020=df_site_min_2020.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2020 = pd.concat([df_site_mean_2020,df_site_max_2020,df_site_min_2020], axis=1) + + #2019 + df_site_2019 = df_2019.loc[df_2019['zipCode']==(91301)] + df_site_2019['year_month']=df_site_2019['year_month'].replace({'2019_1': '1', '2019_2': '2', '2019_3': '3', '2019_4': '4','2019_5': '5', '2019_6': '6', '2019_7': '7', '2019_8': '8', '2019_9': '9', '2019_10': '10', '2019_11': '11', '2019_12': '12'}) + df_site_2019['year_month'] = df_site_2019['year_month'].astype(int) + df_site_2019 = df_site_2019.sort_values("year_month") + df_site_2019['year_month']=df_site_2019['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2019[['year_month','zipCode']] + df_site_mean_2019 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2019=df_site_mean_2019.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2019', 'windSpeed_mean': '83707 Mean wind speed in 2019', 'snowDepth_mean': '37027 Mean snow depth in 2019','pressure_mean': '37027 Mean pressure in 2019', 'precipitation_mean': '37027 Mean precipitation in 2019','humidity_mean': '37027 Mean humidity in 2019','airTemperature_mean': '37027 Mean air temperature in 2019'}) + df_site_mean_2019 = df_site_mean_2019.replace('37027','83707', regex=True) + #Reseting index + df_site_mean_2019=df_site_mean_2019.reset_index() + + #max + df_site_max = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('max') ]] + df_site_max_2019 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2019=df_site_max_2019.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2019', 'windSpeed_max': '83707 Max wind speed in 2019', 'snowDepth_max': '37027 Max snow depth in 2019','pressure_max': '37027 Max pressure in 2019', 'precipitation_max': '37027 Max precipitation in 2019','humidity_max': '37027 Max humidity in 2019','airTemperature_max': '37027 Max air temperature in 2019'}) + #Reseting index + df_site_max_2019=df_site_max_2019.reset_index() + + #min + df_site_min = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('min') ]] + df_site_min_2019 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2019=df_site_min_2019.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2019 ', 'windSpeed_min': '83707 Min wind speed in 2019', 'snowDepth_min': '37027 Min snow depth in 2019','pressure_min': '37027 Min pressure in 2019','precipitation_min': '37027 Min precipitation in 2019','humidity_min': '37027 Min humidity in 2019','airTemperature_min': '37027 Min air temperature in 2019'}) + #Reseting index + df_site_min_2019=df_site_min_2019.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2019 = pd.concat([df_site_mean_2019,df_site_max_2019,df_site_min_2019], axis=1) + + df1 = pd.concat([df_merged_min_max_mean_2019,df_merged_min_max_mean_2020],axis = 1) + df2 = pd.concat([df_merged_min_max_mean_2021,df_merged_min_max_mean_2022],axis = 1) + df_merge = pd.concat([df1,df2],axis = 1) + df_merge= df_merge.drop(['index'], axis=1) + df_merge = df_merge.loc[:, ~df_merge.columns.duplicated()] + df_merge=df_merge.set_index('year_month') + df_merge= df_merge.drop(['zipCode'], axis=1) + # df_merge = df_merge.replace('37027','83707', regex=True) + df_merge.columns = df_merge.columns.str.replace(r"37027", "91301") + df_merge.columns = df_merge.columns.str.replace(r"83707", "91301") + + return(df_merge) + +def merge_min_max_mean_2022_91710(df_2022,df_2021,df_2020,df_2019): + #2022 + df_site_2022 = df_2022.loc[df_2022['zipCode']==(91710)] + df_site_2022['year_month']=df_site_2022['year_month'].replace({'2022_1': '1', '2022_2': '2', '2022_3': '3', '2022_4': '4','2022_5': '5', '2022_6': '6', '2022_7': '7', '2022_8': '8','2022_9': '9', '2022_10': '10', '2022_11': '11', '2022_12': '12'}) + df_site_2022['year_month'] = df_site_2022['year_month'].astype(int) + df_site_2022 = df_site_2022.sort_values("year_month") + df_site_2022['year_month']=df_site_2022['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2022[['year_month','zipCode']] + df_site_mean_2022 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2022=df_site_mean_2022.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2022', 'windSpeed_mean': '83707 Mean wind speed in 2022', 'snowDepth_mean': '83707 Mean snow depth in 2022','pressure_mean': '83707 Mean pressure in 2022', 'precipitation_mean': '83707 Mean precipitation in 2022','humidity_mean': '37027 Mean humidity in 2022','airTemperature_mean': '37027 Mean air temperature in 2022'}) + #Reseting index + df_site_mean_2022=df_site_mean_2022.reset_index() + + #max + df_site_max = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('max') ]] + df_site_max_2022 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2022=df_site_max_2022.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2022', 'windSpeed_max': '83707 Max wind speed in 2022', 'snowDepth_max': '83707 Max snow depth in 2022','pressure_max': '83707 Max pressure in 2022', 'precipitation_max': '83707 Max precipitation in 2022','humidity_max': '37027 Max humidity in 2022','airTemperature_max': '37027 Max air temperature in 2022'}) + #Reseting index + df_site_max_2022=df_site_max_2022.reset_index() + + #min + df_site_min = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('min') ]] + df_site_min_2022 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2022=df_site_min_2022.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2022', 'windSpeed_min': '83707 Min wind speed in 2022', 'snowDepth_min': '83707 Min snow depth in 2022','pressure_min': '83707 Min pressure in 2022','precipitation_min': '83707 Min precipitation in 2022','humidity_min': '37027 Min humidity in 2022','airTemperature_min': '37027 Min air temperature in 2022'}) + #Reseting index + df_site_min_2022=df_site_min_2022.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2022 = pd.concat([df_site_mean_2022,df_site_max_2022,df_site_min_2022], axis=1) + + #2021 + df_site_2021 = df_2021.loc[df_2021['zipCode']==(91710)] + df_site_2021['year_month']=df_site_2021['year_month'].replace({'2021_1': '1', '2021_2': '2', '2021_3': '3', '2021_4': '4','2021_5': '5', '2021_6': '6', '2021_7': '7', '2021_8': '8','2021_9': '9', '2021_10': '10', '2021_11': '11', '2021_12': '12'}) + df_site_2021['year_month'] = df_site_2021['year_month'].astype(int) + df_site_2021 = df_site_2021.sort_values("year_month") + df_site_2021['year_month']=df_site_2021['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2021[['year_month','zipCode']] + df_site_mean_2021 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2021=df_site_mean_2021.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2021', 'windSpeed_mean': '83707 Mean wind speed in 2021', 'snowDepth_mean': '37027 Mean snow depth in 2021','pressure_mean': '37027 Mean pressure in 2021', 'precipitation_mean': '37027 Mean precipitation in 2021','humidity_mean': '37027 Mean humidity in 2021','airTemperature_mean': '37027 Mean air temperature in 2021'}) + #Reseting index + df_site_mean_2021=df_site_mean_2021.reset_index() + + #max + df_site_max = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('max') ]] + df_site_max_2021 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2021=df_site_max_2021.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2021', 'windSpeed_max': '83707 Max wind speed in 2021', 'snowDepth_max': '37027 Max snow depth in 2021','pressure_max': '37027 Max pressure in 2021', 'precipitation_max': '37027 Max precipitation in 2021','humidity_max': '37027 Max humidity in 2021','airTemperature_max': '37027 Max air temperature in 2021'}) + #Reseting index + df_site_max_2021=df_site_max_2021.reset_index() + + #min + df_site_min = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('min') ]] + df_site_min_2021 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2021=df_site_min_2021.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2021', 'windSpeed_min': '83707 Min wind speed in 2021', 'snowDepth_min': '37027 Min snow depth in 2021','pressure_min': '37027 Min pressure in 2021','precipitation_min': '37027 Min precipitation in 2021','humidity_min': '37027 Min humidity in 2021','airTemperature_min': '37027 Min air temperature in 2021'}) + #Reseting index + df_site_min_2021=df_site_min_2021.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2021 = pd.concat([df_site_mean_2021,df_site_max_2021,df_site_min_2021], axis=1) + + #2020 + df_site_2020 = df_2020.loc[df_2020['zipCode']==(91710)] + df_site_2020['year_month']=df_site_2020['year_month'].replace({'2020_1': '1', '2020_2': '2', '2020_3': '3', '2020_4': '4','2020_5': '5', '2020_6': '6', '2020_7': '7', '2020_8': '8', '2020_9': '9', '2020_10': '10', '2020_11': '11', '2020_12': '12'}) + df_site_2020['year_month'] = df_site_2020['year_month'].astype(int) + df_site_2020 = df_site_2020.sort_values("year_month") + df_site_2020['year_month']=df_site_2020['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2020[['year_month','zipCode']] + df_site_mean_2020 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2020=df_site_mean_2020.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2020', 'windSpeed_mean': '83707 Mean wind speed in 2020', 'snowDepth_mean': '37027 Mean snow depth in 2020','pressure_mean': '37027 Mean pressure in 2020', 'precipitation_mean': '37027 Mean precipitation in 2020','humidity_mean': '37027 Mean humidity in 2020','airTemperature_mean': '37027 Mean air temperature in 2020'}) + #Reseting index + df_site_mean_2020=df_site_mean_2020.reset_index() + + #max + df_site_max = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('max') ]] + df_site_max_2020 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2020=df_site_max_2020.rename(columns={'cloudCover_max': ' 83707 Max cloud cover in 2020', 'windSpeed_max': '83707 Max wind speed in 2020', 'snowDepth_max': '37027 Max snow depth in 2020','pressure_max': '37027 Max pressure in 2020', 'precipitation_max': '37027 Max precipitation in 2020','humidity_max': '37027 Max humidity in 2020','airTemperature_max': '37027 Max air temperature in 2020'}) + #Reseting index + df_site_max_2020=df_site_max_2020.reset_index() + + #min + df_site_min = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('min') ]] + df_site_min_2020 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2020=df_site_min_2020.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2020', 'windSpeed_min': '83707 Min wind speed in 2020', 'snowDepth_min': '37027 Min snow depth in 2020','pressure_min': '37027 Min pressure in 2020','precipitation_min': '37027 Min precipitation in 2020','humidity_min': '37027 Min humidity in 2020','airTemperature_min': '37027 Min air temperature in 2020'}) + #Reseting index + df_site_min_2020=df_site_min_2020.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2020 = pd.concat([df_site_mean_2020,df_site_max_2020,df_site_min_2020], axis=1) + + #2019 + df_site_2019 = df_2019.loc[df_2019['zipCode']==(91710)] + df_site_2019['year_month']=df_site_2019['year_month'].replace({'2019_1': '1', '2019_2': '2', '2019_3': '3', '2019_4': '4','2019_5': '5', '2019_6': '6', '2019_7': '7', '2019_8': '8', '2019_9': '9', '2019_10': '10', '2019_11': '11', '2019_12': '12'}) + df_site_2019['year_month'] = df_site_2019['year_month'].astype(int) + df_site_2019 = df_site_2019.sort_values("year_month") + df_site_2019['year_month']=df_site_2019['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2019[['year_month','zipCode']] + df_site_mean_2019 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2019=df_site_mean_2019.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2019', 'windSpeed_mean': '83707 Mean wind speed in 2019', 'snowDepth_mean': '37027 Mean snow depth in 2019','pressure_mean': '37027 Mean pressure in 2019', 'precipitation_mean': '37027 Mean precipitation in 2019','humidity_mean': '37027 Mean humidity in 2019','airTemperature_mean': '37027 Mean air temperature in 2019'}) + df_site_mean_2019 = df_site_mean_2019.replace('37027','83707', regex=True) + #Reseting index + df_site_mean_2019=df_site_mean_2019.reset_index() + + #max + df_site_max = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('max') ]] + df_site_max_2019 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2019=df_site_max_2019.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2019', 'windSpeed_max': '83707 Max wind speed in 2019', 'snowDepth_max': '37027 Max snow depth in 2019','pressure_max': '37027 Max pressure in 2019', 'precipitation_max': '37027 Max precipitation in 2019','humidity_max': '37027 Max humidity in 2019','airTemperature_max': '37027 Max air temperature in 2019'}) + #Reseting index + df_site_max_2019=df_site_max_2019.reset_index() + + #min + df_site_min = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('min') ]] + df_site_min_2019 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2019=df_site_min_2019.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2019 ', 'windSpeed_min': '83707 Min wind speed in 2019', 'snowDepth_min': '37027 Min snow depth in 2019','pressure_min': '37027 Min pressure in 2019','precipitation_min': '37027 Min precipitation in 2019','humidity_min': '37027 Min humidity in 2019','airTemperature_min': '37027 Min air temperature in 2019'}) + #Reseting index + df_site_min_2019=df_site_min_2019.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2019 = pd.concat([df_site_mean_2019,df_site_max_2019,df_site_min_2019], axis=1) + + df1 = pd.concat([df_merged_min_max_mean_2019,df_merged_min_max_mean_2020],axis = 1) + df2 = pd.concat([df_merged_min_max_mean_2021,df_merged_min_max_mean_2022],axis = 1) + df_merge = pd.concat([df1,df2],axis = 1) + df_merge= df_merge.drop(['index'], axis=1) + df_merge = df_merge.loc[:, ~df_merge.columns.duplicated()] + df_merge=df_merge.set_index('year_month') + df_merge= df_merge.drop(['zipCode'], axis=1) + # df_merge = df_merge.replace('37027','83707', regex=True) + df_merge.columns = df_merge.columns.str.replace(r"37027", "91710") + df_merge.columns = df_merge.columns.str.replace(r"83707", "91710") + + return(df_merge) + +def merge_min_max_mean_2022_95948(df_2022,df_2021,df_2020,df_2019): + #2022 + df_site_2022 = df_2022.loc[df_2022['zipCode']==(95948)] + df_site_2022['year_month']=df_site_2022['year_month'].replace({'2022_1': '1', '2022_2': '2', '2022_3': '3', '2022_4': '4','2022_5': '5', '2022_6': '6', '2022_7': '7', '2022_8': '8','2022_9': '9', '2022_10': '10', '2022_11': '11', '2022_12': '12'}) + df_site_2022['year_month'] = df_site_2022['year_month'].astype(int) + df_site_2022 = df_site_2022.sort_values("year_month") + df_site_2022['year_month']=df_site_2022['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2022[['year_month','zipCode']] + df_site_mean_2022 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2022=df_site_mean_2022.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2022', 'windSpeed_mean': '83707 Mean wind speed in 2022', 'snowDepth_mean': '83707 Mean snow depth in 2022','pressure_mean': '83707 Mean pressure in 2022', 'precipitation_mean': '83707 Mean precipitation in 2022','humidity_mean': '37027 Mean humidity in 2022','airTemperature_mean': '37027 Mean air temperature in 2022'}) + #Reseting index + df_site_mean_2022=df_site_mean_2022.reset_index() + + #max + df_site_max = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('max') ]] + df_site_max_2022 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2022=df_site_max_2022.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2022', 'windSpeed_max': '83707 Max wind speed in 2022', 'snowDepth_max': '83707 Max snow depth in 2022','pressure_max': '83707 Max pressure in 2022', 'precipitation_max': '83707 Max precipitation in 2022','humidity_max': '37027 Max humidity in 2022','airTemperature_max': '37027 Max air temperature in 2022'}) + #Reseting index + df_site_max_2022=df_site_max_2022.reset_index() + + #min + df_site_min = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('min') ]] + df_site_min_2022 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2022=df_site_min_2022.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2022', 'windSpeed_min': '83707 Min wind speed in 2022', 'snowDepth_min': '83707 Min snow depth in 2022','pressure_min': '83707 Min pressure in 2022','precipitation_min': '83707 Min precipitation in 2022','humidity_min': '37027 Min humidity in 2022','airTemperature_min': '37027 Min air temperature in 2022'}) + #Reseting index + df_site_min_2022=df_site_min_2022.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2022 = pd.concat([df_site_mean_2022,df_site_max_2022,df_site_min_2022], axis=1) + + #2021 + df_site_2021 = df_2021.loc[df_2021['zipCode']==(95948)] + df_site_2021['year_month']=df_site_2021['year_month'].replace({'2021_1': '1', '2021_2': '2', '2021_3': '3', '2021_4': '4','2021_5': '5', '2021_6': '6', '2021_7': '7', '2021_8': '8','2021_9': '9', '2021_10': '10', '2021_11': '11', '2021_12': '12'}) + df_site_2021['year_month'] = df_site_2021['year_month'].astype(int) + df_site_2021 = df_site_2021.sort_values("year_month") + df_site_2021['year_month']=df_site_2021['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2021[['year_month','zipCode']] + df_site_mean_2021 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2021=df_site_mean_2021.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2021', 'windSpeed_mean': '83707 Mean wind speed in 2021', 'snowDepth_mean': '37027 Mean snow depth in 2021','pressure_mean': '37027 Mean pressure in 2021', 'precipitation_mean': '37027 Mean precipitation in 2021','humidity_mean': '37027 Mean humidity in 2021','airTemperature_mean': '37027 Mean air temperature in 2021'}) + #Reseting index + df_site_mean_2021=df_site_mean_2021.reset_index() + + #max + df_site_max = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('max') ]] + df_site_max_2021 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2021=df_site_max_2021.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2021', 'windSpeed_max': '83707 Max wind speed in 2021', 'snowDepth_max': '37027 Max snow depth in 2021','pressure_max': '37027 Max pressure in 2021', 'precipitation_max': '37027 Max precipitation in 2021','humidity_max': '37027 Max humidity in 2021','airTemperature_max': '37027 Max air temperature in 2021'}) + #Reseting index + df_site_max_2021=df_site_max_2021.reset_index() + + #min + df_site_min = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('min') ]] + df_site_min_2021 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2021=df_site_min_2021.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2021', 'windSpeed_min': '83707 Min wind speed in 2021', 'snowDepth_min': '37027 Min snow depth in 2021','pressure_min': '37027 Min pressure in 2021','precipitation_min': '37027 Min precipitation in 2021','humidity_min': '37027 Min humidity in 2021','airTemperature_min': '37027 Min air temperature in 2021'}) + #Reseting index + df_site_min_2021=df_site_min_2021.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2021 = pd.concat([df_site_mean_2021,df_site_max_2021,df_site_min_2021], axis=1) + + #2020 + df_site_2020 = df_2020.loc[df_2020['zipCode']==(95948)] + df_site_2020['year_month']=df_site_2020['year_month'].replace({'2020_1': '1', '2020_2': '2', '2020_3': '3', '2020_4': '4','2020_5': '5', '2020_6': '6', '2020_7': '7', '2020_8': '8', '2020_9': '9', '2020_10': '10', '2020_11': '11', '2020_12': '12'}) + df_site_2020['year_month'] = df_site_2020['year_month'].astype(int) + df_site_2020 = df_site_2020.sort_values("year_month") + df_site_2020['year_month']=df_site_2020['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2020[['year_month','zipCode']] + df_site_mean_2020 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2020=df_site_mean_2020.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2020', 'windSpeed_mean': '83707 Mean wind speed in 2020', 'snowDepth_mean': '37027 Mean snow depth in 2020','pressure_mean': '37027 Mean pressure in 2020', 'precipitation_mean': '37027 Mean precipitation in 2020','humidity_mean': '37027 Mean humidity in 2020','airTemperature_mean': '37027 Mean air temperature in 2020'}) + #Reseting index + df_site_mean_2020=df_site_mean_2020.reset_index() + + #max + df_site_max = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('max') ]] + df_site_max_2020 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2020=df_site_max_2020.rename(columns={'cloudCover_max': ' 83707 Max cloud cover in 2020', 'windSpeed_max': '83707 Max wind speed in 2020', 'snowDepth_max': '37027 Max snow depth in 2020','pressure_max': '37027 Max pressure in 2020', 'precipitation_max': '37027 Max precipitation in 2020','humidity_max': '37027 Max humidity in 2020','airTemperature_max': '37027 Max air temperature in 2020'}) + #Reseting index + df_site_max_2020=df_site_max_2020.reset_index() + + #min + df_site_min = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('min') ]] + df_site_min_2020 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2020=df_site_min_2020.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2020', 'windSpeed_min': '83707 Min wind speed in 2020', 'snowDepth_min': '37027 Min snow depth in 2020','pressure_min': '37027 Min pressure in 2020','precipitation_min': '37027 Min precipitation in 2020','humidity_min': '37027 Min humidity in 2020','airTemperature_min': '37027 Min air temperature in 2020'}) + #Reseting index + df_site_min_2020=df_site_min_2020.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2020 = pd.concat([df_site_mean_2020,df_site_max_2020,df_site_min_2020], axis=1) + + #2019 + df_site_2019 = df_2019.loc[df_2019['zipCode']==(95948)] + df_site_2019['year_month']=df_site_2019['year_month'].replace({'2019_1': '1', '2019_2': '2', '2019_3': '3', '2019_4': '4','2019_5': '5', '2019_6': '6', '2019_7': '7', '2019_8': '8', '2019_9': '9', '2019_10': '10', '2019_11': '11', '2019_12': '12'}) + df_site_2019['year_month'] = df_site_2019['year_month'].astype(int) + df_site_2019 = df_site_2019.sort_values("year_month") + df_site_2019['year_month']=df_site_2019['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2019[['year_month','zipCode']] + df_site_mean_2019 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2019=df_site_mean_2019.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2019', 'windSpeed_mean': '83707 Mean wind speed in 2019', 'snowDepth_mean': '37027 Mean snow depth in 2019','pressure_mean': '37027 Mean pressure in 2019', 'precipitation_mean': '37027 Mean precipitation in 2019','humidity_mean': '37027 Mean humidity in 2019','airTemperature_mean': '37027 Mean air temperature in 2019'}) + df_site_mean_2019 = df_site_mean_2019.replace('37027','83707', regex=True) + #Reseting index + df_site_mean_2019=df_site_mean_2019.reset_index() + + #max + df_site_max = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('max') ]] + df_site_max_2019 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2019=df_site_max_2019.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2019', 'windSpeed_max': '83707 Max wind speed in 2019', 'snowDepth_max': '37027 Max snow depth in 2019','pressure_max': '37027 Max pressure in 2019', 'precipitation_max': '37027 Max precipitation in 2019','humidity_max': '37027 Max humidity in 2019','airTemperature_max': '37027 Max air temperature in 2019'}) + #Reseting index + df_site_max_2019=df_site_max_2019.reset_index() + + #min + df_site_min = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('min') ]] + df_site_min_2019 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2019=df_site_min_2019.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2019 ', 'windSpeed_min': '83707 Min wind speed in 2019', 'snowDepth_min': '37027 Min snow depth in 2019','pressure_min': '37027 Min pressure in 2019','precipitation_min': '37027 Min precipitation in 2019','humidity_min': '37027 Min humidity in 2019','airTemperature_min': '37027 Min air temperature in 2019'}) + #Reseting index + df_site_min_2019=df_site_min_2019.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2019 = pd.concat([df_site_mean_2019,df_site_max_2019,df_site_min_2019], axis=1) + + df1 = pd.concat([df_merged_min_max_mean_2019,df_merged_min_max_mean_2020],axis = 1) + df2 = pd.concat([df_merged_min_max_mean_2021,df_merged_min_max_mean_2022],axis = 1) + df_merge = pd.concat([df1,df2],axis = 1) + df_merge= df_merge.drop(['index'], axis=1) + df_merge = df_merge.loc[:, ~df_merge.columns.duplicated()] + df_merge=df_merge.set_index('year_month') + df_merge= df_merge.drop(['zipCode'], axis=1) + # df_merge = df_merge.replace('37027','83707', regex=True) + df_merge.columns = df_merge.columns.str.replace(r"37027", "95948") + df_merge.columns = df_merge.columns.str.replace(r"83707", "95948") + + return(df_merge) + + +def merge_min_max_mean_2022_95987(df_2022,df_2021,df_2020,df_2019): + #2022 + df_site_2022 = df_2022.loc[df_2022['zipCode']==(95987)] + df_site_2022['year_month']=df_site_2022['year_month'].replace({'2022_1': '1', '2022_2': '2', '2022_3': '3', '2022_4': '4','2022_5': '5', '2022_6': '6', '2022_7': '7', '2022_8': '8','2022_9': '9', '2022_10': '10', '2022_11': '11', '2022_12': '12'}) + df_site_2022['year_month'] = df_site_2022['year_month'].astype(int) + df_site_2022 = df_site_2022.sort_values("year_month") + df_site_2022['year_month']=df_site_2022['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2022[['year_month','zipCode']] + df_site_mean_2022 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2022=df_site_mean_2022.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2022', 'windSpeed_mean': '83707 Mean wind speed in 2022', 'snowDepth_mean': '83707 Mean snow depth in 2022','pressure_mean': '83707 Mean pressure in 2022', 'precipitation_mean': '83707 Mean precipitation in 2022','humidity_mean': '37027 Mean humidity in 2022','airTemperature_mean': '37027 Mean air temperature in 2022'}) + #Reseting index + df_site_mean_2022=df_site_mean_2022.reset_index() + + #max + df_site_max = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('max') ]] + df_site_max_2022 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2022=df_site_max_2022.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2022', 'windSpeed_max': '83707 Max wind speed in 2022', 'snowDepth_max': '83707 Max snow depth in 2022','pressure_max': '83707 Max pressure in 2022', 'precipitation_max': '83707 Max precipitation in 2022','humidity_max': '37027 Max humidity in 2022','airTemperature_max': '37027 Max air temperature in 2022'}) + #Reseting index + df_site_max_2022=df_site_max_2022.reset_index() + + #min + df_site_min = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('min') ]] + df_site_min_2022 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2022=df_site_min_2022.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2022', 'windSpeed_min': '83707 Min wind speed in 2022', 'snowDepth_min': '83707 Min snow depth in 2022','pressure_min': '83707 Min pressure in 2022','precipitation_min': '83707 Min precipitation in 2022','humidity_min': '37027 Min humidity in 2022','airTemperature_min': '37027 Min air temperature in 2022'}) + #Reseting index + df_site_min_2022=df_site_min_2022.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2022 = pd.concat([df_site_mean_2022,df_site_max_2022,df_site_min_2022], axis=1) + + #2021 + df_site_2021 = df_2021.loc[df_2021['zipCode']==(95987)] + df_site_2021['year_month']=df_site_2021['year_month'].replace({'2021_1': '1', '2021_2': '2', '2021_3': '3', '2021_4': '4','2021_5': '5', '2021_6': '6', '2021_7': '7', '2021_8': '8','2021_9': '9', '2021_10': '10', '2021_11': '11', '2021_12': '12'}) + df_site_2021['year_month'] = df_site_2021['year_month'].astype(int) + df_site_2021 = df_site_2021.sort_values("year_month") + df_site_2021['year_month']=df_site_2021['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2021[['year_month','zipCode']] + df_site_mean_2021 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2021=df_site_mean_2021.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2021', 'windSpeed_mean': '83707 Mean wind speed in 2021', 'snowDepth_mean': '37027 Mean snow depth in 2021','pressure_mean': '37027 Mean pressure in 2021', 'precipitation_mean': '37027 Mean precipitation in 2021','humidity_mean': '37027 Mean humidity in 2021','airTemperature_mean': '37027 Mean air temperature in 2021'}) + #Reseting index + df_site_mean_2021=df_site_mean_2021.reset_index() + + #max + df_site_max = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('max') ]] + df_site_max_2021 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2021=df_site_max_2021.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2021', 'windSpeed_max': '83707 Max wind speed in 2021', 'snowDepth_max': '37027 Max snow depth in 2021','pressure_max': '37027 Max pressure in 2021', 'precipitation_max': '37027 Max precipitation in 2021','humidity_max': '37027 Max humidity in 2021','airTemperature_max': '37027 Max air temperature in 2021'}) + #Reseting index + df_site_max_2021=df_site_max_2021.reset_index() + + #min + df_site_min = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('min') ]] + df_site_min_2021 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2021=df_site_min_2021.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2021', 'windSpeed_min': '83707 Min wind speed in 2021', 'snowDepth_min': '37027 Min snow depth in 2021','pressure_min': '37027 Min pressure in 2021','precipitation_min': '37027 Min precipitation in 2021','humidity_min': '37027 Min humidity in 2021','airTemperature_min': '37027 Min air temperature in 2021'}) + #Reseting index + df_site_min_2021=df_site_min_2021.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2021 = pd.concat([df_site_mean_2021,df_site_max_2021,df_site_min_2021], axis=1) + + #2020 + df_site_2020 = df_2020.loc[df_2020['zipCode']==(95987)] + df_site_2020['year_month']=df_site_2020['year_month'].replace({'2020_1': '1', '2020_2': '2', '2020_3': '3', '2020_4': '4','2020_5': '5', '2020_6': '6', '2020_7': '7', '2020_8': '8', '2020_9': '9', '2020_10': '10', '2020_11': '11', '2020_12': '12'}) + df_site_2020['year_month'] = df_site_2020['year_month'].astype(int) + df_site_2020 = df_site_2020.sort_values("year_month") + df_site_2020['year_month']=df_site_2020['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2020[['year_month','zipCode']] + df_site_mean_2020 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2020=df_site_mean_2020.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2020', 'windSpeed_mean': '83707 Mean wind speed in 2020', 'snowDepth_mean': '37027 Mean snow depth in 2020','pressure_mean': '37027 Mean pressure in 2020', 'precipitation_mean': '37027 Mean precipitation in 2020','humidity_mean': '37027 Mean humidity in 2020','airTemperature_mean': '37027 Mean air temperature in 2020'}) + #Reseting index + df_site_mean_2020=df_site_mean_2020.reset_index() + + #max + df_site_max = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('max') ]] + df_site_max_2020 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2020=df_site_max_2020.rename(columns={'cloudCover_max': ' 83707 Max cloud cover in 2020', 'windSpeed_max': '83707 Max wind speed in 2020', 'snowDepth_max': '37027 Max snow depth in 2020','pressure_max': '37027 Max pressure in 2020', 'precipitation_max': '37027 Max precipitation in 2020','humidity_max': '37027 Max humidity in 2020','airTemperature_max': '37027 Max air temperature in 2020'}) + #Reseting index + df_site_max_2020=df_site_max_2020.reset_index() + + #min + df_site_min = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('min') ]] + df_site_min_2020 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2020=df_site_min_2020.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2020', 'windSpeed_min': '83707 Min wind speed in 2020', 'snowDepth_min': '37027 Min snow depth in 2020','pressure_min': '37027 Min pressure in 2020','precipitation_min': '37027 Min precipitation in 2020','humidity_min': '37027 Min humidity in 2020','airTemperature_min': '37027 Min air temperature in 2020'}) + #Reseting index + df_site_min_2020=df_site_min_2020.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2020 = pd.concat([df_site_mean_2020,df_site_max_2020,df_site_min_2020], axis=1) + + #2019 + df_site_2019 = df_2019.loc[df_2019['zipCode']==(95987)] + df_site_2019['year_month']=df_site_2019['year_month'].replace({'2019_1': '1', '2019_2': '2', '2019_3': '3', '2019_4': '4','2019_5': '5', '2019_6': '6', '2019_7': '7', '2019_8': '8', '2019_9': '9', '2019_10': '10', '2019_11': '11', '2019_12': '12'}) + df_site_2019['year_month'] = df_site_2019['year_month'].astype(int) + df_site_2019 = df_site_2019.sort_values("year_month") + df_site_2019['year_month']=df_site_2019['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2019[['year_month','zipCode']] + df_site_mean_2019 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2019=df_site_mean_2019.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2019', 'windSpeed_mean': '83707 Mean wind speed in 2019', 'snowDepth_mean': '37027 Mean snow depth in 2019','pressure_mean': '37027 Mean pressure in 2019', 'precipitation_mean': '37027 Mean precipitation in 2019','humidity_mean': '37027 Mean humidity in 2019','airTemperature_mean': '37027 Mean air temperature in 2019'}) + + #Reseting index + df_site_mean_2019=df_site_mean_2019.reset_index() + + #max + df_site_max = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('max') ]] + df_site_max_2019 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2019=df_site_max_2019.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2019', 'windSpeed_max': '83707 Max wind speed in 2019', 'snowDepth_max': '37027 Max snow depth in 2019','pressure_max': '37027 Max pressure in 2019', 'precipitation_max': '37027 Max precipitation in 2019','humidity_max': '37027 Max humidity in 2019','airTemperature_max': '37027 Max air temperature in 2019'}) + #Reseting index + df_site_max_2019=df_site_max_2019.reset_index() + + #min + df_site_min = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('min') ]] + df_site_min_2019 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2019=df_site_min_2019.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2019 ', 'windSpeed_min': '83707 Min wind speed in 2019', 'snowDepth_min': '37027 Min snow depth in 2019','pressure_min': '37027 Min pressure in 2019','precipitation_min': '37027 Min precipitation in 2019','humidity_min': '37027 Min humidity in 2019','airTemperature_min': '37027 Min air temperature in 2019'}) + #Reseting index + df_site_min_2019=df_site_min_2019.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2019 = pd.concat([df_site_mean_2019,df_site_max_2019,df_site_min_2019], axis=1) + + df1 = pd.concat([df_merged_min_max_mean_2019,df_merged_min_max_mean_2020],axis = 1) + df2 = pd.concat([df_merged_min_max_mean_2021,df_merged_min_max_mean_2022],axis = 1) + df_merge = pd.concat([df1,df2],axis = 1) + df_merge= df_merge.drop(['index'], axis=1) + df_merge = df_merge.loc[:, ~df_merge.columns.duplicated()] + df_merge=df_merge.set_index('year_month') + df_merge= df_merge.drop(['zipCode'], axis=1) + # df_merge = df_merge.replace('37027','83707', regex=True) + df_merge.columns = df_merge.columns.str.replace(r"37027", "95987") + df_merge.columns = df_merge.columns.str.replace(r"83707", "95987") + + return(df_merge) + +def merge_min_max_mean_2022_93906(df_2022,df_2021,df_2020,df_2019): + #2022 + df_site_2022 = df_2022.loc[df_2022['zipCode']==(93906)] + df_site_2022['year_month']=df_site_2022['year_month'].replace({'2022_1': '1', '2022_2': '2', '2022_3': '3', '2022_4': '4','2022_5': '5', '2022_6': '6', '2022_7': '7', '2022_8': '8','2022_9': '9', '2022_10': '10', '2022_11': '11', '2022_12': '12'}) + df_site_2022['year_month'] = df_site_2022['year_month'].astype(int) + df_site_2022 = df_site_2022.sort_values("year_month") + df_site_2022['year_month']=df_site_2022['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2022[['year_month','zipCode']] + df_site_mean_2022 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2022=df_site_mean_2022.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2022', 'windSpeed_mean': '83707 Mean wind speed in 2022', 'snowDepth_mean': '83707 Mean snow depth in 2022','pressure_mean': '83707 Mean pressure in 2022', 'precipitation_mean': '83707 Mean precipitation in 2022','humidity_mean': '37027 Mean humidity in 2022','airTemperature_mean': '37027 Mean air temperature in 2022'}) + #Reseting index + df_site_mean_2022=df_site_mean_2022.reset_index() + + #max + df_site_max = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('max') ]] + df_site_max_2022 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2022=df_site_max_2022.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2022', 'windSpeed_max': '83707 Max wind speed in 2022', 'snowDepth_max': '83707 Max snow depth in 2022','pressure_max': '83707 Max pressure in 2022', 'precipitation_max': '83707 Max precipitation in 2022','humidity_max': '37027 Max humidity in 2022','airTemperature_max': '37027 Max air temperature in 2022'}) + #Reseting index + df_site_max_2022=df_site_max_2022.reset_index() + + #min + df_site_min = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('min') ]] + df_site_min_2022 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2022=df_site_min_2022.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2022', 'windSpeed_min': '83707 Min wind speed in 2022', 'snowDepth_min': '83707 Min snow depth in 2022','pressure_min': '83707 Min pressure in 2022','precipitation_min': '83707 Min precipitation in 2022','humidity_min': '37027 Min humidity in 2022','airTemperature_min': '37027 Min air temperature in 2022'}) + #Reseting index + df_site_min_2022=df_site_min_2022.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2022 = pd.concat([df_site_mean_2022,df_site_max_2022,df_site_min_2022], axis=1) + + #2021 + df_site_2021 = df_2021.loc[df_2021['zipCode']==(93906)] + df_site_2021['year_month']=df_site_2021['year_month'].replace({'2021_1': '1', '2021_2': '2', '2021_3': '3', '2021_4': '4','2021_5': '5', '2021_6': '6', '2021_7': '7', '2021_8': '8','2021_9': '9', '2021_10': '10', '2021_11': '11', '2021_12': '12'}) + df_site_2021['year_month'] = df_site_2021['year_month'].astype(int) + df_site_2021 = df_site_2021.sort_values("year_month") + df_site_2021['year_month']=df_site_2021['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2021[['year_month','zipCode']] + df_site_mean_2021 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2021=df_site_mean_2021.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2021', 'windSpeed_mean': '83707 Mean wind speed in 2021', 'snowDepth_mean': '37027 Mean snow depth in 2021','pressure_mean': '37027 Mean pressure in 2021', 'precipitation_mean': '37027 Mean precipitation in 2021','humidity_mean': '37027 Mean humidity in 2021','airTemperature_mean': '37027 Mean air temperature in 2021'}) + #Reseting index + df_site_mean_2021=df_site_mean_2021.reset_index() + + #max + df_site_max = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('max') ]] + df_site_max_2021 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2021=df_site_max_2021.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2021', 'windSpeed_max': '83707 Max wind speed in 2021', 'snowDepth_max': '37027 Max snow depth in 2021','pressure_max': '37027 Max pressure in 2021', 'precipitation_max': '37027 Max precipitation in 2021','humidity_max': '37027 Max humidity in 2021','airTemperature_max': '37027 Max air temperature in 2021'}) + #Reseting index + df_site_max_2021=df_site_max_2021.reset_index() + + #min + df_site_min = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('min') ]] + df_site_min_2021 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2021=df_site_min_2021.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2021', 'windSpeed_min': '83707 Min wind speed in 2021', 'snowDepth_min': '37027 Min snow depth in 2021','pressure_min': '37027 Min pressure in 2021','precipitation_min': '37027 Min precipitation in 2021','humidity_min': '37027 Min humidity in 2021','airTemperature_min': '37027 Min air temperature in 2021'}) + #Reseting index + df_site_min_2021=df_site_min_2021.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2021 = pd.concat([df_site_mean_2021,df_site_max_2021,df_site_min_2021], axis=1) + + #2020 + df_site_2020 = df_2020.loc[df_2020['zipCode']==(93906)] + df_site_2020['year_month']=df_site_2020['year_month'].replace({'2020_1': '1', '2020_2': '2', '2020_3': '3', '2020_4': '4','2020_5': '5', '2020_6': '6', '2020_7': '7', '2020_8': '8', '2020_9': '9', '2020_10': '10', '2020_11': '11', '2020_12': '12'}) + df_site_2020['year_month'] = df_site_2020['year_month'].astype(int) + df_site_2020 = df_site_2020.sort_values("year_month") + df_site_2020['year_month']=df_site_2020['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2020[['year_month','zipCode']] + df_site_mean_2020 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2020=df_site_mean_2020.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2020', 'windSpeed_mean': '83707 Mean wind speed in 2020', 'snowDepth_mean': '37027 Mean snow depth in 2020','pressure_mean': '37027 Mean pressure in 2020', 'precipitation_mean': '37027 Mean precipitation in 2020','humidity_mean': '37027 Mean humidity in 2020','airTemperature_mean': '37027 Mean air temperature in 2020'}) + #Reseting index + df_site_mean_2020=df_site_mean_2020.reset_index() + + #max + df_site_max = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('max') ]] + df_site_max_2020 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2020=df_site_max_2020.rename(columns={'cloudCover_max': ' 83707 Max cloud cover in 2020', 'windSpeed_max': '83707 Max wind speed in 2020', 'snowDepth_max': '37027 Max snow depth in 2020','pressure_max': '37027 Max pressure in 2020', 'precipitation_max': '37027 Max precipitation in 2020','humidity_max': '37027 Max humidity in 2020','airTemperature_max': '37027 Max air temperature in 2020'}) + #Reseting index + df_site_max_2020=df_site_max_2020.reset_index() + + #min + df_site_min = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('min') ]] + df_site_min_2020 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2020=df_site_min_2020.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2020', 'windSpeed_min': '83707 Min wind speed in 2020', 'snowDepth_min': '37027 Min snow depth in 2020','pressure_min': '37027 Min pressure in 2020','precipitation_min': '37027 Min precipitation in 2020','humidity_min': '37027 Min humidity in 2020','airTemperature_min': '37027 Min air temperature in 2020'}) + #Reseting index + df_site_min_2020=df_site_min_2020.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2020 = pd.concat([df_site_mean_2020,df_site_max_2020,df_site_min_2020], axis=1) + + #2019 + df_site_2019 = df_2019.loc[df_2019['zipCode']==(93906)] + df_site_2019['year_month']=df_site_2019['year_month'].replace({'2019_1': '1', '2019_2': '2', '2019_3': '3', '2019_4': '4','2019_5': '5', '2019_6': '6', '2019_7': '7', '2019_8': '8', '2019_9': '9', '2019_10': '10', '2019_11': '11', '2019_12': '12'}) + df_site_2019['year_month'] = df_site_2019['year_month'].astype(int) + df_site_2019 = df_site_2019.sort_values("year_month") + df_site_2019['year_month']=df_site_2019['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2019[['year_month','zipCode']] + df_site_mean_2019 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2019=df_site_mean_2019.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2019', 'windSpeed_mean': '83707 Mean wind speed in 2019', 'snowDepth_mean': '37027 Mean snow depth in 2019','pressure_mean': '37027 Mean pressure in 2019', 'precipitation_mean': '37027 Mean precipitation in 2019','humidity_mean': '37027 Mean humidity in 2019','airTemperature_mean': '37027 Mean air temperature in 2019'}) + + #Reseting index + df_site_mean_2019=df_site_mean_2019.reset_index() + + #max + df_site_max = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('max') ]] + df_site_max_2019 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2019=df_site_max_2019.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2019', 'windSpeed_max': '83707 Max wind speed in 2019', 'snowDepth_max': '37027 Max snow depth in 2019','pressure_max': '37027 Max pressure in 2019', 'precipitation_max': '37027 Max precipitation in 2019','humidity_max': '37027 Max humidity in 2019','airTemperature_max': '37027 Max air temperature in 2019'}) + #Reseting index + df_site_max_2019=df_site_max_2019.reset_index() + + #min + df_site_min = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('min') ]] + df_site_min_2019 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2019=df_site_min_2019.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2019 ', 'windSpeed_min': '83707 Min wind speed in 2019', 'snowDepth_min': '37027 Min snow depth in 2019','pressure_min': '37027 Min pressure in 2019','precipitation_min': '37027 Min precipitation in 2019','humidity_min': '37027 Min humidity in 2019','airTemperature_min': '37027 Min air temperature in 2019'}) + #Reseting index + df_site_min_2019=df_site_min_2019.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2019 = pd.concat([df_site_mean_2019,df_site_max_2019,df_site_min_2019], axis=1) + + df1 = pd.concat([df_merged_min_max_mean_2019,df_merged_min_max_mean_2020],axis = 1) + df2 = pd.concat([df_merged_min_max_mean_2021,df_merged_min_max_mean_2022],axis = 1) + df_merge = pd.concat([df1,df2],axis = 1) + df_merge= df_merge.drop(['index'], axis=1) + df_merge = df_merge.loc[:, ~df_merge.columns.duplicated()] + df_merge=df_merge.set_index('year_month') + df_merge= df_merge.drop(['zipCode'], axis=1) + # df_merge = df_merge.replace('37027','83707', regex=True) + df_merge.columns = df_merge.columns.str.replace(r"37027", "93906") + df_merge.columns = df_merge.columns.str.replace(r"83707", "93906") + + return(df_merge) + +def merge_min_max_mean_2022_93711(df_2022,df_2021,df_2020,df_2019): + #2022 + df_site_2022 = df_2022.loc[df_2022['zipCode']==(93711)] + df_site_2022['year_month']=df_site_2022['year_month'].replace({'2022_1': '1', '2022_2': '2', '2022_3': '3', '2022_4': '4','2022_5': '5', '2022_6': '6', '2022_7': '7', '2022_8': '8','2022_9': '9', '2022_10': '10', '2022_11': '11', '2022_12': '12'}) + df_site_2022['year_month'] = df_site_2022['year_month'].astype(int) + df_site_2022 = df_site_2022.sort_values("year_month") + df_site_2022['year_month']=df_site_2022['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2022[['year_month','zipCode']] + df_site_mean_2022 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2022=df_site_mean_2022.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2022', 'windSpeed_mean': '83707 Mean wind speed in 2022', 'snowDepth_mean': '83707 Mean snow depth in 2022','pressure_mean': '83707 Mean pressure in 2022', 'precipitation_mean': '83707 Mean precipitation in 2022','humidity_mean': '37027 Mean humidity in 2022','airTemperature_mean': '37027 Mean air temperature in 2022'}) + #Reseting index + df_site_mean_2022=df_site_mean_2022.reset_index() + + #max + df_site_max = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('max') ]] + df_site_max_2022 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2022=df_site_max_2022.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2022', 'windSpeed_max': '83707 Max wind speed in 2022', 'snowDepth_max': '83707 Max snow depth in 2022','pressure_max': '83707 Max pressure in 2022', 'precipitation_max': '83707 Max precipitation in 2022','humidity_max': '37027 Max humidity in 2022','airTemperature_max': '37027 Max air temperature in 2022'}) + #Reseting index + df_site_max_2022=df_site_max_2022.reset_index() + + #min + df_site_min = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('min') ]] + df_site_min_2022 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2022=df_site_min_2022.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2022', 'windSpeed_min': '83707 Min wind speed in 2022', 'snowDepth_min': '83707 Min snow depth in 2022','pressure_min': '83707 Min pressure in 2022','precipitation_min': '83707 Min precipitation in 2022','humidity_min': '37027 Min humidity in 2022','airTemperature_min': '37027 Min air temperature in 2022'}) + #Reseting index + df_site_min_2022=df_site_min_2022.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2022 = pd.concat([df_site_mean_2022,df_site_max_2022,df_site_min_2022], axis=1) + + #2021 + df_site_2021 = df_2021.loc[df_2021['zipCode']==(93711)] + df_site_2021['year_month']=df_site_2021['year_month'].replace({'2021_1': '1', '2021_2': '2', '2021_3': '3', '2021_4': '4','2021_5': '5', '2021_6': '6', '2021_7': '7', '2021_8': '8','2021_9': '9', '2021_10': '10', '2021_11': '11', '2021_12': '12'}) + df_site_2021['year_month'] = df_site_2021['year_month'].astype(int) + df_site_2021 = df_site_2021.sort_values("year_month") + df_site_2021['year_month']=df_site_2021['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2021[['year_month','zipCode']] + df_site_mean_2021 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2021=df_site_mean_2021.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2021', 'windSpeed_mean': '83707 Mean wind speed in 2021', 'snowDepth_mean': '37027 Mean snow depth in 2021','pressure_mean': '37027 Mean pressure in 2021', 'precipitation_mean': '37027 Mean precipitation in 2021','humidity_mean': '37027 Mean humidity in 2021','airTemperature_mean': '37027 Mean air temperature in 2021'}) + #Reseting index + df_site_mean_2021=df_site_mean_2021.reset_index() + + #max + df_site_max = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('max') ]] + df_site_max_2021 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2021=df_site_max_2021.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2021', 'windSpeed_max': '83707 Max wind speed in 2021', 'snowDepth_max': '37027 Max snow depth in 2021','pressure_max': '37027 Max pressure in 2021', 'precipitation_max': '37027 Max precipitation in 2021','humidity_max': '37027 Max humidity in 2021','airTemperature_max': '37027 Max air temperature in 2021'}) + #Reseting index + df_site_max_2021=df_site_max_2021.reset_index() + + #min + df_site_min = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('min') ]] + df_site_min_2021 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2021=df_site_min_2021.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2021', 'windSpeed_min': '83707 Min wind speed in 2021', 'snowDepth_min': '37027 Min snow depth in 2021','pressure_min': '37027 Min pressure in 2021','precipitation_min': '37027 Min precipitation in 2021','humidity_min': '37027 Min humidity in 2021','airTemperature_min': '37027 Min air temperature in 2021'}) + #Reseting index + df_site_min_2021=df_site_min_2021.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2021 = pd.concat([df_site_mean_2021,df_site_max_2021,df_site_min_2021], axis=1) + + #2020 + df_site_2020 = df_2020.loc[df_2020['zipCode']==(93711)] + df_site_2020['year_month']=df_site_2020['year_month'].replace({'2020_1': '1', '2020_2': '2', '2020_3': '3', '2020_4': '4','2020_5': '5', '2020_6': '6', '2020_7': '7', '2020_8': '8', '2020_9': '9', '2020_10': '10', '2020_11': '11', '2020_12': '12'}) + df_site_2020['year_month'] = df_site_2020['year_month'].astype(int) + df_site_2020 = df_site_2020.sort_values("year_month") + df_site_2020['year_month']=df_site_2020['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2020[['year_month','zipCode']] + df_site_mean_2020 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2020=df_site_mean_2020.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2020', 'windSpeed_mean': '83707 Mean wind speed in 2020', 'snowDepth_mean': '37027 Mean snow depth in 2020','pressure_mean': '37027 Mean pressure in 2020', 'precipitation_mean': '37027 Mean precipitation in 2020','humidity_mean': '37027 Mean humidity in 2020','airTemperature_mean': '37027 Mean air temperature in 2020'}) + #Reseting index + df_site_mean_2020=df_site_mean_2020.reset_index() + + #max + df_site_max = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('max') ]] + df_site_max_2020 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2020=df_site_max_2020.rename(columns={'cloudCover_max': ' 83707 Max cloud cover in 2020', 'windSpeed_max': '83707 Max wind speed in 2020', 'snowDepth_max': '37027 Max snow depth in 2020','pressure_max': '37027 Max pressure in 2020', 'precipitation_max': '37027 Max precipitation in 2020','humidity_max': '37027 Max humidity in 2020','airTemperature_max': '37027 Max air temperature in 2020'}) + #Reseting index + df_site_max_2020=df_site_max_2020.reset_index() + + #min + df_site_min = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('min') ]] + df_site_min_2020 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2020=df_site_min_2020.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2020', 'windSpeed_min': '83707 Min wind speed in 2020', 'snowDepth_min': '37027 Min snow depth in 2020','pressure_min': '37027 Min pressure in 2020','precipitation_min': '37027 Min precipitation in 2020','humidity_min': '37027 Min humidity in 2020','airTemperature_min': '37027 Min air temperature in 2020'}) + #Reseting index + df_site_min_2020=df_site_min_2020.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2020 = pd.concat([df_site_mean_2020,df_site_max_2020,df_site_min_2020], axis=1) + + #2019 + df_site_2019 = df_2019.loc[df_2019['zipCode']==(93711)] + df_site_2019['year_month']=df_site_2019['year_month'].replace({'2019_1': '1', '2019_2': '2', '2019_3': '3', '2019_4': '4','2019_5': '5', '2019_6': '6', '2019_7': '7', '2019_8': '8', '2019_9': '9', '2019_10': '10', '2019_11': '11', '2019_12': '12'}) + df_site_2019['year_month'] = df_site_2019['year_month'].astype(int) + df_site_2019 = df_site_2019.sort_values("year_month") + df_site_2019['year_month']=df_site_2019['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2019[['year_month','zipCode']] + df_site_mean_2019 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2019=df_site_mean_2019.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2019', 'windSpeed_mean': '83707 Mean wind speed in 2019', 'snowDepth_mean': '37027 Mean snow depth in 2019','pressure_mean': '37027 Mean pressure in 2019', 'precipitation_mean': '37027 Mean precipitation in 2019','humidity_mean': '37027 Mean humidity in 2019','airTemperature_mean': '37027 Mean air temperature in 2019'}) + + #Reseting index + df_site_mean_2019=df_site_mean_2019.reset_index() + + #max + df_site_max = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('max') ]] + df_site_max_2019 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2019=df_site_max_2019.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2019', 'windSpeed_max': '83707 Max wind speed in 2019', 'snowDepth_max': '37027 Max snow depth in 2019','pressure_max': '37027 Max pressure in 2019', 'precipitation_max': '37027 Max precipitation in 2019','humidity_max': '37027 Max humidity in 2019','airTemperature_max': '37027 Max air temperature in 2019'}) + #Reseting index + df_site_max_2019=df_site_max_2019.reset_index() + + #min + df_site_min = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('min') ]] + df_site_min_2019 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2019=df_site_min_2019.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2019 ', 'windSpeed_min': '83707 Min wind speed in 2019', 'snowDepth_min': '37027 Min snow depth in 2019','pressure_min': '37027 Min pressure in 2019','precipitation_min': '37027 Min precipitation in 2019','humidity_min': '37027 Min humidity in 2019','airTemperature_min': '37027 Min air temperature in 2019'}) + #Reseting index + df_site_min_2019=df_site_min_2019.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2019 = pd.concat([df_site_mean_2019,df_site_max_2019,df_site_min_2019], axis=1) + + df1 = pd.concat([df_merged_min_max_mean_2019,df_merged_min_max_mean_2020],axis = 1) + df2 = pd.concat([df_merged_min_max_mean_2021,df_merged_min_max_mean_2022],axis = 1) + df_merge = pd.concat([df1,df2],axis = 1) + df_merge= df_merge.drop(['index'], axis=1) + df_merge = df_merge.loc[:, ~df_merge.columns.duplicated()] + df_merge=df_merge.set_index('year_month') + df_merge= df_merge.drop(['zipCode'], axis=1) + # df_merge = df_merge.replace('37027','83707', regex=True) + df_merge.columns = df_merge.columns.str.replace(r"37027", "93711") + df_merge.columns = df_merge.columns.str.replace(r"83707", "93711") + + return(df_merge) + +def merge_min_max_mean_2022_93720(df_2022,df_2021,df_2020,df_2019): + #2022 + df_site_2022 = df_2022.loc[df_2022['zipCode']==(93720)] + df_site_2022['year_month']=df_site_2022['year_month'].replace({'2022_1': '1', '2022_2': '2', '2022_3': '3', '2022_4': '4','2022_5': '5', '2022_6': '6', '2022_7': '7', '2022_8': '8','2022_9': '9', '2022_10': '10', '2022_11': '11', '2022_12': '12'}) + df_site_2022['year_month'] = df_site_2022['year_month'].astype(int) + df_site_2022 = df_site_2022.sort_values("year_month") + df_site_2022['year_month']=df_site_2022['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2022[['year_month','zipCode']] + df_site_mean_2022 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2022=df_site_mean_2022.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2022', 'windSpeed_mean': '83707 Mean wind speed in 2022', 'snowDepth_mean': '83707 Mean snow depth in 2022','pressure_mean': '83707 Mean pressure in 2022', 'precipitation_mean': '83707 Mean precipitation in 2022','humidity_mean': '37027 Mean humidity in 2022','airTemperature_mean': '37027 Mean air temperature in 2022'}) + #Reseting index + df_site_mean_2022=df_site_mean_2022.reset_index() + + #max + df_site_max = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('max') ]] + df_site_max_2022 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2022=df_site_max_2022.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2022', 'windSpeed_max': '83707 Max wind speed in 2022', 'snowDepth_max': '83707 Max snow depth in 2022','pressure_max': '83707 Max pressure in 2022', 'precipitation_max': '83707 Max precipitation in 2022','humidity_max': '37027 Max humidity in 2022','airTemperature_max': '37027 Max air temperature in 2022'}) + #Reseting index + df_site_max_2022=df_site_max_2022.reset_index() + + #min + df_site_min = df_site_2022[df_site_2022.columns[df_site_2022.columns.str.endswith('min') ]] + df_site_min_2022 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2022=df_site_min_2022.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2022', 'windSpeed_min': '83707 Min wind speed in 2022', 'snowDepth_min': '83707 Min snow depth in 2022','pressure_min': '83707 Min pressure in 2022','precipitation_min': '83707 Min precipitation in 2022','humidity_min': '37027 Min humidity in 2022','airTemperature_min': '37027 Min air temperature in 2022'}) + #Reseting index + df_site_min_2022=df_site_min_2022.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2022 = pd.concat([df_site_mean_2022,df_site_max_2022,df_site_min_2022], axis=1) + + #2021 + df_site_2021 = df_2021.loc[df_2021['zipCode']==(93720)] + df_site_2021['year_month']=df_site_2021['year_month'].replace({'2021_1': '1', '2021_2': '2', '2021_3': '3', '2021_4': '4','2021_5': '5', '2021_6': '6', '2021_7': '7', '2021_8': '8','2021_9': '9', '2021_10': '10', '2021_11': '11', '2021_12': '12'}) + df_site_2021['year_month'] = df_site_2021['year_month'].astype(int) + df_site_2021 = df_site_2021.sort_values("year_month") + df_site_2021['year_month']=df_site_2021['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2021[['year_month','zipCode']] + df_site_mean_2021 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2021=df_site_mean_2021.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2021', 'windSpeed_mean': '83707 Mean wind speed in 2021', 'snowDepth_mean': '37027 Mean snow depth in 2021','pressure_mean': '37027 Mean pressure in 2021', 'precipitation_mean': '37027 Mean precipitation in 2021','humidity_mean': '37027 Mean humidity in 2021','airTemperature_mean': '37027 Mean air temperature in 2021'}) + #Reseting index + df_site_mean_2021=df_site_mean_2021.reset_index() + + #max + df_site_max = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('max') ]] + df_site_max_2021 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2021=df_site_max_2021.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2021', 'windSpeed_max': '83707 Max wind speed in 2021', 'snowDepth_max': '37027 Max snow depth in 2021','pressure_max': '37027 Max pressure in 2021', 'precipitation_max': '37027 Max precipitation in 2021','humidity_max': '37027 Max humidity in 2021','airTemperature_max': '37027 Max air temperature in 2021'}) + #Reseting index + df_site_max_2021=df_site_max_2021.reset_index() + + #min + df_site_min = df_site_2021[df_site_2021.columns[df_site_2021.columns.str.endswith('min') ]] + df_site_min_2021 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2021=df_site_min_2021.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2021', 'windSpeed_min': '83707 Min wind speed in 2021', 'snowDepth_min': '37027 Min snow depth in 2021','pressure_min': '37027 Min pressure in 2021','precipitation_min': '37027 Min precipitation in 2021','humidity_min': '37027 Min humidity in 2021','airTemperature_min': '37027 Min air temperature in 2021'}) + #Reseting index + df_site_min_2021=df_site_min_2021.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2021 = pd.concat([df_site_mean_2021,df_site_max_2021,df_site_min_2021], axis=1) + + #2020 + df_site_2020 = df_2020.loc[df_2020['zipCode']==(93720)] + df_site_2020['year_month']=df_site_2020['year_month'].replace({'2020_1': '1', '2020_2': '2', '2020_3': '3', '2020_4': '4','2020_5': '5', '2020_6': '6', '2020_7': '7', '2020_8': '8', '2020_9': '9', '2020_10': '10', '2020_11': '11', '2020_12': '12'}) + df_site_2020['year_month'] = df_site_2020['year_month'].astype(int) + df_site_2020 = df_site_2020.sort_values("year_month") + df_site_2020['year_month']=df_site_2020['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2020[['year_month','zipCode']] + df_site_mean_2020 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2020=df_site_mean_2020.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2020', 'windSpeed_mean': '83707 Mean wind speed in 2020', 'snowDepth_mean': '37027 Mean snow depth in 2020','pressure_mean': '37027 Mean pressure in 2020', 'precipitation_mean': '37027 Mean precipitation in 2020','humidity_mean': '37027 Mean humidity in 2020','airTemperature_mean': '37027 Mean air temperature in 2020'}) + #Reseting index + df_site_mean_2020=df_site_mean_2020.reset_index() + + #max + df_site_max = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('max') ]] + df_site_max_2020 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2020=df_site_max_2020.rename(columns={'cloudCover_max': ' 83707 Max cloud cover in 2020', 'windSpeed_max': '83707 Max wind speed in 2020', 'snowDepth_max': '37027 Max snow depth in 2020','pressure_max': '37027 Max pressure in 2020', 'precipitation_max': '37027 Max precipitation in 2020','humidity_max': '37027 Max humidity in 2020','airTemperature_max': '37027 Max air temperature in 2020'}) + #Reseting index + df_site_max_2020=df_site_max_2020.reset_index() + + #min + df_site_min = df_site_2020[df_site_2020.columns[df_site_2020.columns.str.endswith('min') ]] + df_site_min_2020 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2020=df_site_min_2020.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2020', 'windSpeed_min': '83707 Min wind speed in 2020', 'snowDepth_min': '37027 Min snow depth in 2020','pressure_min': '37027 Min pressure in 2020','precipitation_min': '37027 Min precipitation in 2020','humidity_min': '37027 Min humidity in 2020','airTemperature_min': '37027 Min air temperature in 2020'}) + #Reseting index + df_site_min_2020=df_site_min_2020.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2020 = pd.concat([df_site_mean_2020,df_site_max_2020,df_site_min_2020], axis=1) + + #2019 + df_site_2019 = df_2019.loc[df_2019['zipCode']==(93720)] + df_site_2019['year_month']=df_site_2019['year_month'].replace({'2019_1': '1', '2019_2': '2', '2019_3': '3', '2019_4': '4','2019_5': '5', '2019_6': '6', '2019_7': '7', '2019_8': '8', '2019_9': '9', '2019_10': '10', '2019_11': '11', '2019_12': '12'}) + df_site_2019['year_month'] = df_site_2019['year_month'].astype(int) + df_site_2019 = df_site_2019.sort_values("year_month") + df_site_2019['year_month']=df_site_2019['year_month'].replace({1: 'Jan', 2: 'Feb', 3: 'Mar',4: 'Apr',5: 'May', 6: 'June', 7: 'July', 8: 'Aug', 9: 'Sept', 10: 'Oct', 11: 'Nov', 12: 'Dec'}) + + #mean + df_site_mean = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('mean') ]] + df_site_year_month = df_site_2019[['year_month','zipCode']] + df_site_mean_2019 = pd.concat([df_site_mean,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_mean_2019=df_site_mean_2019.rename(columns={'cloudCover_mean': '83707 Mean cloud cover in 2019', 'windSpeed_mean': '83707 Mean wind speed in 2019', 'snowDepth_mean': '37027 Mean snow depth in 2019','pressure_mean': '37027 Mean pressure in 2019', 'precipitation_mean': '37027 Mean precipitation in 2019','humidity_mean': '37027 Mean humidity in 2019','airTemperature_mean': '37027 Mean air temperature in 2019'}) + + #Reseting index + df_site_mean_2019=df_site_mean_2019.reset_index() + + #max + df_site_max = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('max') ]] + df_site_max_2019 = pd.concat([df_site_max,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_max_2019=df_site_max_2019.rename(columns={'cloudCover_max': '83707 Max cloud cover in 2019', 'windSpeed_max': '83707 Max wind speed in 2019', 'snowDepth_max': '37027 Max snow depth in 2019','pressure_max': '37027 Max pressure in 2019', 'precipitation_max': '37027 Max precipitation in 2019','humidity_max': '37027 Max humidity in 2019','airTemperature_max': '37027 Max air temperature in 2019'}) + #Reseting index + df_site_max_2019=df_site_max_2019.reset_index() + + #min + df_site_min = df_site_2019[df_site_2019.columns[df_site_2019.columns.str.endswith('min') ]] + df_site_min_2019 = pd.concat([df_site_min,df_site_year_month],axis = 1) + # Renaming columns so that we get weather features with year + df_site_min_2019=df_site_min_2019.rename(columns={'cloudCover_min': '83707 Min cloud cover in 2019 ', 'windSpeed_min': '83707 Min wind speed in 2019', 'snowDepth_min': '37027 Min snow depth in 2019','pressure_min': '37027 Min pressure in 2019','precipitation_min': '37027 Min precipitation in 2019','humidity_min': '37027 Min humidity in 2019','airTemperature_min': '37027 Min air temperature in 2019'}) + #Reseting index + df_site_min_2019=df_site_min_2019.reset_index() + + #Merging weather features for all three years + df_merged_min_max_mean_2019 = pd.concat([df_site_mean_2019,df_site_max_2019,df_site_min_2019], axis=1) + + df1 = pd.concat([df_merged_min_max_mean_2019,df_merged_min_max_mean_2020],axis = 1) + df2 = pd.concat([df_merged_min_max_mean_2021,df_merged_min_max_mean_2022],axis = 1) + df_merge = pd.concat([df1,df2],axis = 1) + df_merge= df_merge.drop(['index'], axis=1) + df_merge = df_merge.loc[:, ~df_merge.columns.duplicated()] + df_merge=df_merge.set_index('year_month') + df_merge= df_merge.drop(['zipCode'], axis=1) + # df_merge = df_merge.replace('37027','83707', regex=True) + df_merge.columns = df_merge.columns.str.replace(r"37027", "93720") + df_merge.columns = df_merge.columns.str.replace(r"83707", "93720") + + return(df_merge) + + + +df_merge2 = pd.concat([merge_min_max_mean_2022_93720(df_2022,df_2021,df_2020,df_2019), + merge_min_max_mean_2022_93711(df_2022,df_2021,df_2020,df_2019), + merge_min_max_mean_2022_93906(df_2022,df_2021,df_2020,df_2019), + merge_min_max_mean_2022_95987(df_2022,df_2021,df_2020,df_2019), + merge_min_max_mean_2022_95948(df_2022,df_2021,df_2020,df_2019), + merge_min_max_mean_2022_91710(df_2022,df_2021,df_2020,df_2019), + merge_min_max_mean_2022_91106(df_2022,df_2021,df_2020,df_2019), + merge_min_max_mean_2022_83707(df_2022,df_2021,df_2020,df_2019), + merge_min_max_mean_2022_91301(df_2022,df_2021,df_2020,df_2019), + merge_min_max_mean_2022_37027(df_2022,df_2021,df_2020,df_2019)],axis = 1) + + +def draw_plotly(): + #latest + # Create figure + fig = go.Figure() + + # Add surface trace + for column in df_merge2.columns.to_list(): + fig.add_trace( + go.Scatter( + x = df_merge2.index, + y = df_merge2[column], + name = column + ) + ) + + + # Update plot sizing + fig.update_layout( + width=800, + height=900, + autosize=False, + margin=dict(t=100, b=0, l=0, r=0), + ) + + + # Add dropdowns + button_layer_1_height = 1.08 + fig.update_layout( + updatemenus=[ + dict( + buttons=list([ + dict(label = '93720', + method = 'restyle', + args = [{'visible': [True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False + + + + ]}, + ]), + + dict(label = ' 93711', + method = 'restyle', + args = [{'visible': [ + + + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + + + + + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False + + ]}, + ]), + dict(label = ' 93906 ', + method = 'restyle', + args = [{'visible': [ + + + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + + + + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False + + + ]}, + ]), + dict(label = '95987', + method = 'update', + args = [{'visible': [ False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + + + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + + ]}, + ]), + + dict(label = ' 95948', + method = 'update', + args = [{'visible': [ False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + + ]}, + ]), + dict(label = ' 91710 ', + method = 'update', + args = [{'visible': [False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + + ]}, + ]), + dict(label = '91106', + method = 'update', + args = [{'visible': [False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + + + ]}, + ]), + + dict(label = ' 83707', + method = 'update', + args = [{'visible': [False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + ]}, + ]), + dict(label = ' 91301 ', + method = 'update', + args = [{'visible': [False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + ]}, + ]), + dict(label = '37027', + method = 'update', + args = [{'visible': [False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False, + + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + True,True,True,True, True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True, + ]}, + ]), + + + + + ]), + direction="down", + pad={"r": 10, "t": 10}, + showactive=True, + x=0.1, + xanchor="right", + y=button_layer_1_height, + yanchor="top" + ), + dict( + buttons=list([ + dict(label = 'Mean', + method = 'restyle', + args = [{'visible': [ + + + True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False, False,False, False,False + + ]}, + ]), + + dict(label = ' Max', + method = 'update', + args = [{'visible': [ + + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + + + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + False,False,False, False,False, False,False,True, True,True,True,True,True,True,False, False,False, False,False, False,False, + + + ]}, + ]), + dict(label = ' Min ', + method = 'restyle', + args = [{'visible': [ + + + + + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True, + False, False,False, False,False, False,False, False,False, False,False, False,False, False,True, True,True,True,True,True,True + + + + + + ]}, + ]), + + + ]), + direction="down", + pad={"r": 10, "t": 10}, + showactive=True, + x=0.1, + xanchor="left", + y=button_layer_1_height, + yanchor="top" + ), + dict( + buttons=list([ + dict(label = 'Air temperature (deg C)', + method = 'restyle', + args = [{'visible': [True,False, False,False, False,False, False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + True,False,False, False,False, False,False,True,False, False,False, False,False, False,True,False, False,False, False,False, False, + + + + ]}, + ]), + + dict(label = ' Cloud cover (%)', + method = 'restyle', + args = [{'visible': [False,True, False,False, False,False, False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False,False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False,False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False, False, + False,True,False, False,False, False,False,False,True, False,False, False,False, False,False,True, False,False, False,False,False + + + + + ]}, + ]), + + + dict(label = ' Humidity (%) ', + method = 'restyle', + args = [{'visible': [False,False, True,False, False,False, False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True,False, False,False, False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True,False, False,False, False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True,False, False,False, False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False, + False,False, True, False,False, False,False,False,False, True,False, False,False, False,False,False, True,False, False,False, False + ]}, + ]), + + + dict(label = ' Precipitation (mm)', + method = 'restyle', + args = [{'visible': [False,False, False, True, False,False, False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True, False,False, False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True, False,False, False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True, False,False, False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False, + False,False, False, True,False, False,False,False,False, False, True, False,False, False,False,False, False, True, False,False, False + + ]}, + ]), + + + dict(label = 'Pressure (millibars)', + method = 'restyle', + args = [{'visible': [False,False, False, False, True,False, False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True,False, False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True,False, False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True,False, False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False, + False,False, False, False, True, False,False,False,False, False, False, True,False, False,False,False, False, False, True,False, False + + + + + + + ]}, + ]), + + dict(label = 'Snow depth (inches)', + method = 'restyle', + args = [{'visible': [False,False, False,False, False, True,False ,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, False,False, False, True,False ,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, False,False, False, True,False ,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, False,False, False, True,False ,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False , + False,False, True, False,False, True,False,False,False, False,False, False, True,False ,False,False, False,False, False, True,False + + + + + ]}, + ]), + + dict(label = 'Wind speed (km/h)', + method = 'restyle', + args = [{'visible': [False,False, False,False, False,False, True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False,False, False,False, True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False,False, False,False, True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False,False, False,False, True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True, + False,False, False, False,False, False,True,False,False, False,False, False,False, True,False,False, False,False, False,False, True + + + + ]}, + ]), + + + ]), + direction="down", + pad={"r": 10, "t": 10}, + showactive=True, + x=0.58, + xanchor="left", + y=button_layer_1_height, + yanchor="top" + ), + + ] + ) + + + #fig.show() + return fig + + + +demo = gr.Interface(fn=draw_plotly, inputs=[], outputs=gr.Plot()) + +demo.launch() \ No newline at end of file