From efda55e769d09e8980e55baf4a5477c5625a96e1 Mon Sep 17 00:00:00 2001 From: zackAemmer Date: Wed, 30 Nov 2022 10:17:41 -0800 Subject: [PATCH 01/16] Testing for TRB update and the replaced mode implementation --- .../replacement_model_data_processing.ipynb | 580 ++++++++++++++++++ viz_scripts/replacement_models.py | 122 ++++ viz_scripts/run_replacement_models.ipynb | 454 ++++++++++++++ 3 files changed, 1156 insertions(+) create mode 100644 viz_scripts/replacement_model_data_processing.ipynb create mode 100644 viz_scripts/replacement_models.py create mode 100644 viz_scripts/run_replacement_models.ipynb diff --git a/viz_scripts/replacement_model_data_processing.ipynb b/viz_scripts/replacement_model_data_processing.ipynb new file mode 100644 index 0000000..30810e1 --- /dev/null +++ b/viz_scripts/replacement_model_data_processing.ipynb @@ -0,0 +1,580 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "year = None\n", + "month = None\n", + "program = \"prepilot\"\n", + "study_type = \"program\"\n", + "mode_of_interest = \"pilot_ebike\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "SAVE_DIR = '/plots/'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from collections import defaultdict\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "from sklearn import linear_model\n", + "\n", + "from plots import *\n", + "import scaffolding\n", + "\n", + "sns.set_style(\"whitegrid\")\n", + "sns.set()\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Settings and imports specific to this notebook\n", + "\n", + "include_replaced_modes_as_valid = True # Flip this when we want to get results versus generate the replaced_mode correction graphs\n", + "model_with_sensed = False\n", + "input_dataset = \"ONLY_LABELED\" # \"ONLY_LABELED\", \"ONLY_SENSED\" or \"BEST_AVAILABLE\" for sensitivity analysis\n", + "LABEL_ASSIST_THRESHOLD = 0.3\n", + "\n", + "# For reloading modules from Jupyter\n", + "# import importlib\n", + "# importlib.reload(replacement_models)\n", + "\n", + "import datetime\n", + "import pickle\n", + "import sklearn.metrics\n", + "from sklearn.ensemble import RandomForestClassifier\n", + "from sklearn.model_selection import KFold\n", + "from sklearn.model_selection import train_test_split\n", + "import emission.core.get_database as edb\n", + "import emission.core.wrapper.entry as ecwe\n", + "import emission.storage.decorations.analysis_timeseries_queries as esda\n", + "import emission.storage.decorations.trip_queries as esdt\n", + "import emission.storage.decorations.timeline as esdl\n", + "import emission.storage.timeseries.abstract_timeseries as esta\n", + "import emission.storage.timeseries.timequery as estt\n", + "from uuid import UUID" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Do not run this notebook at all unless it is for a program; nbclient will run up through this cell\n", + "if study_type != \"program\":\n", + " raise Exception(\"The plots in this notebook are only relevant to programs\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Loading mapping dictionaries from mapping_dictionaries notebook\n", + "%store -r dic_re\n", + "%store -r dic_pur\n", + "\n", + "# convert a dictionary to a defaultdict\n", + "dic_re = defaultdict(lambda: 'Other',dic_re)\n", + "dic_pur = defaultdict(lambda: 'Other',dic_pur)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get UUIDs by Program" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Split UUIDs by program\n", + "program_uuid_map = {}\n", + "for ue in edb.get_uuid_db().find():\n", + " program = ue['user_email'].split(\"_\")[0]\n", + " if program in program_uuid_map.keys():\n", + " program_uuid_map[program].append(str(ue['uuid']))\n", + " else:\n", + " print(f\"Found new program {program}, creating new list\")\n", + " program_uuid_map[program] = []\n", + " program_uuid_map[program].append(str(ue['uuid']))\n", + "\n", + "uuid_program_list = []\n", + "for ue in edb.get_uuid_db().find():\n", + " program = ue['user_email'].split(\"_\")[0]\n", + " uuid_program_list.append({\"program\": program, \"opcode\": ue[\"user_email\"], \"user_id_str\": str(ue['uuid'])})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "uuid_program_df = pd.DataFrame.from_dict(uuid_program_list)\n", + "uuid_program_df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Collect Data From Database" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "expanded_ct, file_suffix, quality_text = scaffolding.load_viz_notebook_data(year,\n", + " month,\n", + " program,\n", + " study_type,\n", + " dic_re,\n", + " dic_pur=dic_pur)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Join to the program df to get each user's program\n", + "expanded_ct['user_id_str'] = expanded_ct['user_id'].astype(str)\n", + "expanded_ct = expanded_ct.merge(uuid_program_df, on='user_id_str')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Add non-label category\n", + "expanded_ct['replaced_mode'] = expanded_ct['replaced_mode'].fillna('Unlabeled')\n", + "expanded_ct.loc[expanded_ct['replaced_mode'] == 'Unlabeled', 'Replaced_mode'] = \"Unlabeled\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Join the expanded database data to socioeconomic data\n", + "socio_data = pd.read_csv('./Can Do Colorado eBike Program - en.csv')\n", + "socio_data.rename(columns={'Unique User ID (auto-filled, do not edit)':'user_id',\n", + " 'Please identify which category represents your total household income, before taxes, for last year.':'HHINC',\n", + " 'How many motor vehicles are owned, leased, or available for regular use by the people who currently live in your household?':'VEH',\n", + " 'In which year were you born?':'AGE',\n", + " 'Including yourself, how many people live in your home?':'HHSIZE',\n", + " 'How many children under age 18 live in your home?':'CHILDREN',\n", + " 'What is your gender?':'GENDER',\n", + " 'If you were unable to use your household vehicle(s), which of the following options would be available to you to get you from place to place?':'available_modes',\n", + " 'Are you a student?':'STUDENT',\n", + " \"Including yourself, how many people have a driver's license in your household?\":'DRIVERS'}, inplace=True)\n", + "socio_data = socio_data[~socio_data.user_id.isnull()]\n", + "\n", + "# Deal with people who have multiple responses by using most recent\n", + "socio_data = socio_data.sort_values(by=['user_id', 'Timestamp'])\n", + "socio_data.drop_duplicates(subset=['user_id'], keep='last', inplace=True)\n", + "socio_data['user_id_socio'] = socio_data.user_id\n", + "socio_data = socio_data.drop(labels='user_id', axis=1)\n", + "\n", + "# Lose some trips due to people with no survey responses\n", + "expanded_ct['user_id_socio'] = expanded_ct.user_id.astype(str)\n", + "expanded_ct.user_id_socio = [i.replace('-','') for i in expanded_ct.user_id_socio] # remove all dashes from strings\n", + "expanded_ct = expanded_ct.merge(socio_data, on='user_id_socio')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Data Preprocessing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "## Filter database to variables of modeling interest\n", + "data = expanded_ct[['Mode_confirm','Replaced_mode','replaced_mode','Trip_purpose','duration','distance_miles','start_local_dt_weekday','available_modes','AGE','HHINC','VEH','HHSIZE','CHILDREN','GENDER','STUDENT','DRIVERS','user_id','_id','start_local_dt_year','start_local_dt_month','start_local_dt_day','cleaned_trip','start_fmt_time','start_loc','end_loc']].copy()\n", + "\n", + "\n", + "## Pre-filter round of variable creation\n", + "# Make copy of user_id to be categorized since both versions are needed\n", + "data['user_id_int'] = data['user_id']\n", + "\n", + "# Get timestamp from known year/month/day aggregated to days\n", + "data.rename(columns={'start_local_dt_year':'year','start_local_dt_month':'month','start_local_dt_day':'day'}, inplace=True)\n", + "data['date_time'] = pd.to_datetime(data[['year','month','day']])\n", + "data = data.drop(columns=['year','day'])\n", + "\n", + "# Get time of day\n", + "data['hour'] = [int(x[1][:2]) for x in expanded_ct.start_fmt_time.str.split('T')]\n", + "\n", + "# Fix age\n", + "data['AGE'] = 2022 - data['AGE']\n", + "\n", + "# Number of workers\n", + "data['WORKERS'] = (data['HHSIZE'] - data['CHILDREN']).astype(int)\n", + "\n", + "# Vehicles per driver\n", + "data['VEH'] = data['VEH'].replace('4+', '4')\n", + "\n", + "# Recoded Cyclical Time of Day\n", + "hours_in_day = 24\n", + "months_in_year = 12\n", + "data['sin_time'] = np.sin(2*np.pi*data.hour/hours_in_day)\n", + "data['cos_time'] = np.cos(2*np.pi*data.hour/hours_in_day)\n", + "data['sin_month'] = np.sin(2*np.pi*data.month/months_in_year)\n", + "data['cos_month'] = np.cos(2*np.pi*data.month/months_in_year)\n", + "\n", + "# Duration in minutes\n", + "data['duration'] = data['duration'] / 60\n", + "\n", + "# Add coordinates to the data\n", + "z = pd.json_normalize(data.start_loc)['coordinates']\n", + "olon = [str(x[0]) for x in z]\n", + "olat = [str(x[1]) for x in z]\n", + "data['olat'] = olat\n", + "data['olon'] = olon\n", + "z = pd.json_normalize(data.end_loc)['coordinates']\n", + "dlon = [str(x[0]) for x in z]\n", + "dlat = [str(x[1]) for x in z]\n", + "data['dlat'] = dlat\n", + "data['dlon'] = dlon\n", + "\n", + "# Recode variables\n", + "data.Mode_confirm = data.Mode_confirm.replace(\n", + " ['Gas Car, drove alone',\n", + " 'Gas Car, with others',\n", + " 'Bikeshare',\n", + " 'Scooter share',\n", + " 'Regular Bike',\n", + " 'Skate board',\n", + " 'Train',\n", + " 'Free Shuttle',\n", + " 'Bus',\n", + " 'Walk',\n", + " 'Taxi/Uber/Lyft',\n", + " 'E-bike'],\n", + " ['car',\n", + " 's_car',\n", + " 's_micro',\n", + " 's_micro',\n", + " 'p_micro',\n", + " 'p_micro',\n", + " 'transit',\n", + " 'transit',\n", + " 'transit',\n", + " 'walk',\n", + " 'ridehail',\n", + " 'ebike']\n", + ")\n", + "data.Replaced_mode = data.Replaced_mode.replace(\n", + " ['Gas Car, drove alone',\n", + " 'Gas Car, with others',\n", + " 'Bikeshare',\n", + " 'Scooter share',\n", + " 'Regular Bike',\n", + " 'Skate board',\n", + " 'Train',\n", + " 'Free Shuttle',\n", + " 'Bus',\n", + " 'Walk',\n", + " 'Taxi/Uber/Lyft',\n", + " 'E-bike',\n", + " 'No Travel'],\n", + " ['car',\n", + " 's_car',\n", + " 's_micro',\n", + " 's_micro',\n", + " 'p_micro',\n", + " 'p_micro',\n", + " 'transit',\n", + " 'transit',\n", + " 'transit',\n", + " 'walk',\n", + " 'ridehail',\n", + " 'ebike',\n", + " 'no_travel']\n", + ")\n", + "data.Trip_purpose = data.Trip_purpose.replace(\n", + " ['Work',\n", + " 'School',\n", + " 'Recreation/Exercise',\n", + " 'Transit transfer',\n", + " 'Meal',\n", + " 'Entertainment/Social',\n", + " 'Shopping',\n", + " 'Personal/Medical',\n", + " 'Religious',\n", + " 'Pick-up/Drop off'],\n", + " ['commute',\n", + " 'commute',\n", + " 'recreation',\n", + " 'transit_transfer',\n", + " 'discretionary',\n", + " 'discretionary',\n", + " 'discretionary',\n", + " 'discretionary',\n", + " 'discretionary',\n", + " 'pudo']\n", + ")\n", + "data['is_weekend'] = 0\n", + "data.loc[data['start_local_dt_weekday'].isin(['0','6']), 'is_weekend'] = 1\n", + "data['is_male'] = 0\n", + "data.loc[data['GENDER'].isin(['Man']), 'is_male'] = 1\n", + "\n", + "## Filter data\n", + "# Filter out responses to data that are not workable\n", + "data = data[~data['Mode_confirm'].isin(['Not a Trip','Other'])]\n", + "data = data[~data['Replaced_mode'].isin(['Not a Trip','Other','Unlabeled'])]\n", + "data = data[~data['available_modes'].isin(['None', 'Prefer not to say'])]\n", + "data = data[~data['Trip_purpose'].isin(['not_a_trip','Other'])]\n", + "data = data[~data['HHINC'].isin(['Prefer not to say','$100,000 -$149,999','$150,000','$150,000-$199,999','$200,000 or more'])] # Side note why is 150k (n=7) its own bin?\n", + "data = data[~data['VEH'].isin(['Prefer not to say / Prefiero no decir.'])]\n", + "data = data[data['distance_miles']<50]\n", + "data = data[data['AGE']<100]\n", + "data = data[data['HHSIZE']<10]\n", + "data = data[data['HHSIZE']>data['CHILDREN']]\n", + "\n", + "\n", + "## Post-filter round of variable creation\n", + "# OHE any categorical, non-ordinal variables\n", + "ohe_vars = ['Trip_purpose','HHINC','STUDENT']\n", + "ohe_prefixes = ['purp','hhinc','student']\n", + "data = pd.get_dummies(data, columns=ohe_vars, prefix=ohe_prefixes)\n", + "\n", + "# Calculate travel times for each trip, across every mode\n", + "def add_all_mode_tt(data, mode_col, duration_col, dist_col):\n", + " wait_times_init = {'car':0.00,\n", + " 's_car':0.00,\n", + " 'ridehail':5.00,\n", + " 's_micro':5.00,\n", + " 'p_micro':0.00,\n", + " 'transit':7.00,\n", + " 'walk':5.00,\n", + " 'ebike':0.00}\n", + " mode_travel_times = {}\n", + " for mode in pd.unique(data[mode_col]):\n", + "\n", + " # Linear model for duration based on distance for trips belonging to each mode\n", + " mode_data = data[data[mode_col]==mode]\n", + " regr = linear_model.LinearRegression()\n", + " regr.fit(np.log(mode_data[dist_col].values.reshape(-1,1)), np.log(mode_data[duration_col].values.reshape(-1,1)))\n", + " \n", + " # Make prediction for ALL trips, reverse the log transform to get mins\n", + " mode_duration_pred = regr.predict(np.log(data[dist_col].values.reshape(-1,1)))\n", + " mode_travel_times['tt_'+mode] = np.exp(mode_duration_pred) + wait_times_init[mode]\n", + "\n", + " # Apply for each mode existing in the dataframe\n", + " for mode in mode_travel_times:\n", + " data[mode] = mode_travel_times[mode]\n", + "\n", + " return regr, data\n", + "\n", + "# Calculate all mode travel times and add to dataframe\n", + "regr, data = add_all_mode_tt(data,'Mode_confirm','duration','distance_miles')\n", + "\n", + "# Calculate vehicle costs\n", + "cost_factors_init = {'car':0.00,\n", + " 's_car':0.00,\n", + " 'ridehail':5.00,\n", + " 's_micro':1.00,\n", + " 'p_micro':0.00,\n", + " 'transit':3.50,\n", + " 'ebike':0.00,\n", + " 'walk':0.00}\n", + "cost_factors = {'car':0.62,\n", + " 's_car':0.31,\n", + " 'ridehail':0.80,\n", + " 's_micro':0.90,\n", + " 'p_micro':0.00,\n", + " 'transit':0.00,\n", + " 'ebike':0.11,\n", + " 'walk':0.00}\n", + "\n", + "def add_all_mode_cost(data, cost_factors, dist_col):\n", + " for factor in cost_factors:\n", + " data['cost_'+factor] = cost_factors_init[factor] + (cost_factors[factor] * data[dist_col])\n", + " return data\n", + "\n", + "# Calculate all mode travel costs and add to dataframe\n", + "add_all_mode_cost(data, cost_factors, 'distance_miles')\n", + "\n", + "# Labels for modes in the availability survey\n", + "availability_codes = {'Public transportation (bus, subway, light rail, etc.)':'transit',\n", + " 'Get a ride from a friend or family member':'s_car',\n", + " 'Rental car (including Zipcar/ Car2Go)':'car',\n", + " 'Taxi (regular taxi, Uber, Lyft, etc)':'ridehail',\n", + " 'Bicycle':'p_micro',\n", + " 'Shared bicycle or scooter':'s_micro',\n", + " 'Walk/roll':'walk',\n", + " 'Skateboard':'p_micro',\n", + " 'ebike':'ebike',\n", + " 'None':'none'}\n", + "\n", + "def add_mode_availability(data, availability_codes, availability_col, choice_col, replaced_col, is_sp):\n", + " mode_list = np.unique(list(availability_codes.values())[:-1])\n", + " choice_list = data[choice_col].values\n", + " replaced_list = data[replaced_col].values\n", + " for mode in mode_list:\n", + " mode_avail = []\n", + " for i, available in enumerate(data[availability_col].values):\n", + " available_modes = [availability_codes[x] for x in available.split(';')]\n", + " # For SP: Replacement/stated available should be 1, chosen should be 0\n", + " if is_sp:\n", + " if mode==choice_list[i]:\n", + " mode_check = False\n", + " else:\n", + " mode_check = mode==replaced_list[i] or mode in available_modes\n", + " # For RP: Chosen/replacement/stated available should be 1\n", + " else:\n", + " mode_check = mode==choice_list[i] or mode==replaced_list[i] or mode in available_modes\n", + " # Keep binary list of which trips the mode was available for\n", + " if mode_check:\n", + " mode_avail.append(1)\n", + " else:\n", + " mode_avail.append(0)\n", + " # For each mode add a column with binary availability\n", + " data['av_'+mode] = mode_avail\n", + " return data\n", + "\n", + "# Add mode availability according to survey responses\n", + "data = add_mode_availability(data, availability_codes, 'available_modes', 'Mode_confirm', 'Replaced_mode', is_sp=False)\n", + "\n", + "# # Add mode availability as all available\n", + "mode_list = ['car','s_car','ridehail','transit','p_micro','s_micro','walk','ebike','no_travel']\n", + "# for mode in mode_list:\n", + "# data[f\"av_{mode}\"] = 1\n", + "\n", + "# Handle all variables that are ordinal; otherwise they may not end up in correct order\n", + "# Make sure that all mode variables align after being converted to numeric variables\n", + "data.Mode_confirm = pd.Categorical(data.Mode_confirm, ordered=True, categories=mode_list)\n", + "data.Replaced_mode = pd.Categorical(data.Replaced_mode, ordered=True, categories=mode_list)\n", + "data['Mode_confirm_num'] = data.Mode_confirm.cat.codes\n", + "data['Replaced_mode_num'] = data.Replaced_mode.cat.codes\n", + "data = data[data['Mode_confirm_num']!=data['Replaced_mode_num']]\n", + "\n", + "## Save cleaned data to be used in modeling\n", + "data.to_csv(\"processed_replacement_modeling_data.csv\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Data Checks" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Data stats before cleaning\n", + "print(f\"Trips: {len(expanded_ct)}\")\n", + "print(f\"Users: {len(np.unique(expanded_ct.user_id))}\")\n", + "print(f\"Trips per user: {len(expanded_ct) / len(pd.unique(expanded_ct.user_id))}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Data stats after cleaning + columns available\n", + "print(f\"Trips: {len(data)}\")\n", + "print(f\"Users: {len(np.unique(data.user_id))}\")\n", + "print(f\"Trips per user: {len(data) / len(pd.unique(data.user_id))}\\n\")\n", + "print(f\"Columns: \\n{data.columns.values}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# Check for NAs\n", + "data.isna().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Check # obs for each class\n", + "print(f\"Mode_confirm:\\n{pd.value_counts(data.Mode_confirm)}\\n\")\n", + "print(f\"Replaced_mode:\\n{pd.value_counts(data.Replaced_mode)}\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/viz_scripts/replacement_models.py b/viz_scripts/replacement_models.py new file mode 100644 index 0000000..5e303dc --- /dev/null +++ b/viz_scripts/replacement_models.py @@ -0,0 +1,122 @@ +import numpy as np +import pandas as pd +import sklearn.metrics +from sklearn.preprocessing import MinMaxScaler +from sklearn.neighbors import KNeighborsClassifier +from sklearn.ensemble import RandomForestClassifier +from sklearn.ensemble import GradientBoostingClassifier +from sklearn.svm import SVC + +def gbdt(data, choice_col, feature_list, kf): + # Save metrics from each run + accuracy = [] + f1 = [] + confusion = [] +# # Scale numeric variables +# scaler = MinMaxScaler() +# data_scaled = scaler.fit_transform(data[feature_list]) + data_scaled = data[feature_list].values + + for train_indices, test_indices in kf.split(data.values): + X_train, X_test = data_scaled[train_indices], data_scaled[test_indices] + y_train, y_test = data[choice_col].values[train_indices], data[choice_col].values[test_indices] + + # Train random forest on training set + model = GradientBoostingClassifier(n_estimators=50) + model.fit(X_train, y_train) + + # Predict for test set + y_pred = model.predict(X_test) + + # Track metrics + accuracy.append(sklearn.metrics.accuracy_score(y_test, y_pred)) + f1.append(sklearn.metrics.f1_score(y_test, y_pred, average='weighted')) + confusion.append(sklearn.metrics.confusion_matrix(y_test, y_pred, labels=[0,1,2,3,4,5,6,7], normalize='pred')) + + # Collect all model scores for comparison at the end + return model, accuracy, f1, confusion + +def rf(data, choice_col, feature_list, kf): + # Save metrics from each run + accuracy = [] + f1 = [] + confusion = [] +# # Scale numeric variables +# scaler = MinMaxScaler() +# data_scaled = scaler.fit_transform(data[feature_list]) + data_scaled = data[feature_list].values + + for train_indices, test_indices in kf.split(data.values): + X_train, X_test = data_scaled[train_indices], data_scaled[test_indices] + y_train, y_test = data[choice_col].values[train_indices], data[choice_col].values[test_indices] + + # Train random forest on training set + model = RandomForestClassifier(n_estimators=50) + model.fit(X_train, y_train) + + # Predict for test set + y_pred = model.predict(X_test) + + # Track metrics + accuracy.append(sklearn.metrics.accuracy_score(y_test, y_pred)) + f1.append(sklearn.metrics.f1_score(y_test, y_pred, average='weighted')) + confusion.append(sklearn.metrics.confusion_matrix(y_test, y_pred, labels=[0,1,2,3,4,5,6,7], normalize='pred')) + + # Collect all model scores for comparison at the end + return model, accuracy, f1, confusion + +def svm(data, choice_col, feature_list, kf): + # Save metrics from each run + accuracy = [] + f1 = [] + confusion = [] + # Scale numeric variables + scaler = MinMaxScaler() + data_scaled = scaler.fit_transform(data[feature_list]) + + for train_indices, test_indices in kf.split(data.values): + X_train, X_test = data_scaled[train_indices], data_scaled[test_indices] + y_train, y_test = data[choice_col].values[train_indices], data[choice_col].values[test_indices] + + # Train random forest on training set + model = SVC() + model.fit(X_train, y_train) + + # Predict for test set + y_pred = model.predict(X_test) + + # Track metrics + accuracy.append(sklearn.metrics.accuracy_score(y_test, y_pred)) + f1.append(sklearn.metrics.f1_score(y_test, y_pred, average='weighted')) + confusion.append(sklearn.metrics.confusion_matrix(y_test, y_pred, labels=[0,1,2,3,4,5,6,7], normalize='pred')) + + # Collect all model scores for comparison at the end + return model, accuracy, f1, confusion + +def knn(data, choice_col, feature_list, kf): + # Save metrics from each run + accuracy = [] + f1 = [] + confusion = [] + # Scale numeric variables + scaler = MinMaxScaler() + data_scaled = scaler.fit_transform(data[feature_list]) + + for train_indices, test_indices in kf.split(data.values): + X_train, X_test = data_scaled[train_indices], data_scaled[test_indices] + y_train, y_test = data[choice_col].values[train_indices], data[choice_col].values[test_indices] + + # Train random forest on training set + model = KNeighborsClassifier(n_neighbors=len(pd.unique(y_train))) + model.fit(X_train, y_train) + + # Predict for test set + y_pred = model.predict(X_test) + + # Track metrics + accuracy.append(sklearn.metrics.accuracy_score(y_test, y_pred)) + f1.append(sklearn.metrics.f1_score(y_test, y_pred, average='weighted')) + confusion.append(sklearn.metrics.confusion_matrix(y_test, y_pred, labels=[0,1,2,3,4,5,6,7], normalize='pred')) + + # Collect all model scores for comparison at the end + return model, accuracy, f1, confusion \ No newline at end of file diff --git a/viz_scripts/run_replacement_models.ipynb b/viz_scripts/run_replacement_models.ipynb new file mode 100644 index 0000000..364040c --- /dev/null +++ b/viz_scripts/run_replacement_models.ipynb @@ -0,0 +1,454 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "import sklearn\n", + "from sklearn.model_selection import KFold\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "from plots import *\n", + "import replacement_models as rm\n", + "import scaffolding\n", + "\n", + "# For reloading modules from Jupyter\n", + "import importlib\n", + "importlib.reload(rm)\n", + "\n", + "sns.set_style(\"whitegrid\")\n", + "sns.set()\n", + "%matplotlib inline\n", + "\n", + "SAVE_DIR = '/plots/'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data = pd.read_csv('./processed_replacement_modeling_data.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data.columns" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "choice_col = 'Replaced_mode_num'\n", + "feature_list = ['Mode_confirm_num',\n", + " 'hhinc_$25,000-$49,999',\n", + " 'hhinc_$50,000-$99,999',\n", + " 'hhinc_Less than $24,999',\n", + " 'purp_Home',\n", + " 'purp_commute',\n", + " 'purp_discretionary',\n", + " 'purp_pudo',\n", + " 'purp_recreation',\n", + " 'purp_transit_transfer',\n", + " 'AGE',\n", + " 'VEH',\n", + " 'HHSIZE',\n", + " 'is_male',\n", + " 'sin_time',\n", + " 'cos_time',\n", + " 'sin_month',\n", + " 'cos_month',\n", + " 'is_weekend',\n", + " 'duration',\n", + " 'distance_miles',\n", + " 'av_car',\n", + " 'av_s_car',\n", + " 'av_ebike',\n", + " 'av_p_micro',\n", + " 'av_s_micro',\n", + " 'av_ridehail',\n", + " 'av_transit',\n", + " 'av_walk']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Set up K-fold cross validation\n", + "kf = KFold(n_splits=3)\n", + "\n", + "# Collect all scores to show at end of modeling\n", + "score_results = {}\n", + "score_results_holdout = {}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Set up holdout users\n", + "all_users = pd.unique(data['user_id'])\n", + "holdout_users = np.random.choice(all_users, 10)\n", + "holdout_data = data[data['user_id'].isin(holdout_users)]\n", + "non_holdout_data = data[~data['user_id'].isin(holdout_users)]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Random Forest" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test on All Users" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Train and test model\n", + "rf, accuracy, f1, confusion = rm.rf(data, choice_col, feature_list, kf)\n", + "\n", + "# Save scores for model comparison\n", + "score_results['rf'] = (np.mean(accuracy), np.mean(f1))\n", + "print(f\"Accuracy: {np.mean(accuracy)}\")\n", + "print(f\"F1: {np.mean(f1)}\")\n", + "\n", + "# Average and plot the confusion matrices\n", + "confusion_mean = np.mean(np.array(confusion), axis=0)\n", + "fig, ax = plt.subplots(figsize=(6,6))\n", + "sns.heatmap(confusion_mean, annot=True, fmt='.1%', cmap='YlGnBu', linewidths=.5, cbar=False).set(title='Random Forest Confusion Matrix', xlabel='Predicted', ylabel='Actual')\n", + "plt.subplots_adjust(bottom=0.25)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test on Holdout Users" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Train and test model\n", + "rf, accuracy, f1, confusion = rm.rf(non_holdout_data, choice_col, feature_list, kf)\n", + "\n", + "holdout_true = holdout_data[choice_col].values\n", + "holdout_pred = rf.predict(holdout_data[feature_list].values)\n", + "\n", + "accuracy = sklearn.metrics.accuracy_score(holdout_true, holdout_pred)\n", + "f1 = sklearn.metrics.f1_score(holdout_true, holdout_pred, average='weighted')\n", + "score_results_holdout['rf'] = (np.mean(accuracy), np.mean(f1))\n", + "\n", + "print(f\"Holdout Accuracy: {accuracy}\")\n", + "print(f\"Holdout F1: {f1}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# GBDT" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test on All Users" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Train and test model\n", + "rf, accuracy, f1, confusion = rm.gbdt(data, choice_col, feature_list, kf)\n", + "\n", + "# Save scores for model comparison\n", + "score_results['gbdt'] = (np.mean(accuracy), np.mean(f1))\n", + "print(f\"Accuracy: {np.mean(accuracy)}\")\n", + "print(f\"F1: {np.mean(f1)}\")\n", + "\n", + "# Average and plot the confusion matrices\n", + "confusion_mean = np.mean(np.array(confusion), axis=0)\n", + "fig, ax = plt.subplots(figsize=(6,6))\n", + "sns.heatmap(confusion_mean, annot=True, fmt='.1%', cmap='YlGnBu', linewidths=.5, cbar=False).set(title='GBDT Confusion Matrix', xlabel='Predicted', ylabel='Actual')\n", + "plt.subplots_adjust(bottom=0.25)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test on Holdout Users" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Train and test model\n", + "gbdt, accuracy, f1, confusion = rm.gbdt(non_holdout_data, choice_col, feature_list, kf)\n", + "\n", + "holdout_true = holdout_data[choice_col].values\n", + "holdout_pred = gbdt.predict(holdout_data[feature_list].values)\n", + "\n", + "accuracy = sklearn.metrics.accuracy_score(holdout_true, holdout_pred)\n", + "f1 = sklearn.metrics.f1_score(holdout_true, holdout_pred, average='weighted')\n", + "score_results_holdout['gbdt'] = (np.mean(accuracy), np.mean(f1))\n", + "\n", + "print(f\"Holdout Accuracy: {accuracy}\")\n", + "print(f\"Holdout F1: {f1}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# SVM" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test on All Users" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Train and test model\n", + "rf, accuracy, f1, confusion = rm.svm(data, choice_col, feature_list, kf)\n", + "\n", + "# Save scores for model comparison\n", + "score_results['svm'] = (np.mean(accuracy), np.mean(f1))\n", + "print(f\"Accuracy: {np.mean(accuracy)}\")\n", + "print(f\"F1: {np.mean(f1)}\")\n", + "\n", + "# Average and plot the confusion matrices\n", + "confusion_mean = np.mean(np.array(confusion), axis=0)\n", + "fig, ax = plt.subplots(figsize=(6,6))\n", + "sns.heatmap(confusion_mean, annot=True, fmt='.1%', cmap='YlGnBu', linewidths=.5, cbar=False).set(title='SVM Confusion Matrix', xlabel='Predicted', ylabel='Actual')\n", + "plt.subplots_adjust(bottom=0.25)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test on Holdout Users" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Train and test model\n", + "svm, accuracy, f1, confusion = rm.svm(non_holdout_data, choice_col, feature_list, kf)\n", + "\n", + "holdout_true = holdout_data[choice_col].values\n", + "holdout_pred = svm.predict(holdout_data[feature_list].values)\n", + "\n", + "accuracy = sklearn.metrics.accuracy_score(holdout_true, holdout_pred)\n", + "f1 = sklearn.metrics.f1_score(holdout_true, holdout_pred, average='weighted')\n", + "score_results_holdout['svm'] = (np.mean(accuracy), np.mean(f1))\n", + "\n", + "print(f\"Holdout Accuracy: {accuracy}\")\n", + "print(f\"Holdout F1: {f1}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# K Nearest Neighbors" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test on All Users" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Train and test model\n", + "knn, accuracy, f1, confusion = rm.knn(data, choice_col, feature_list, kf)\n", + "\n", + "# Save scores for model comparison\n", + "score_results['knn'] = (np.mean(accuracy), np.mean(f1))\n", + "print(f\"Accuracy: {np.mean(accuracy)}\")\n", + "print(f\"F1: {np.mean(f1)}\")\n", + "\n", + "# Average and plot the confusion matrices\n", + "confusion_mean = np.mean(np.array(confusion), axis=0)\n", + "fig, ax = plt.subplots(figsize=(6,6))\n", + "sns.heatmap(confusion_mean, annot=True, fmt='.1%', cmap='YlGnBu', linewidths=.5, cbar=False).set(title='KNN Confusion Matrix', xlabel='Predicted', ylabel='Actual')\n", + "plt.subplots_adjust(bottom=0.25)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test on Holdout Users" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Train and test model\n", + "knn, accuracy, f1, confusion = rm.knn(non_holdout_data, choice_col, feature_list, kf)\n", + "\n", + "holdout_true = holdout_data[choice_col].values\n", + "holdout_pred = knn.predict(holdout_data[feature_list].values)\n", + "\n", + "accuracy = sklearn.metrics.accuracy_score(holdout_true, holdout_pred)\n", + "f1 = sklearn.metrics.f1_score(holdout_true, holdout_pred, average='weighted')\n", + "score_results_holdout['knn'] = (np.mean(accuracy), np.mean(f1))\n", + "\n", + "print(f\"Holdout Accuracy: {accuracy}\")\n", + "print(f\"Holdout F1: {f1}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Model Comparison" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Overall results\n", + "accuracy_all = pd.DataFrame(pd.DataFrame(score_results).iloc[0,:]).reset_index()\n", + "accuracy_all.columns = ['Model','Score']\n", + "accuracy_all['Type'] = 'All'\n", + "f1_all = pd.DataFrame(pd.DataFrame(score_results).iloc[1,:]).reset_index()\n", + "f1_all.columns = ['Model','Score']\n", + "f1_all['Type'] = 'All'\n", + "score_results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Overall results\n", + "accuracy_holdout = pd.DataFrame(pd.DataFrame(score_results_holdout).iloc[0,:]).reset_index()\n", + "accuracy_holdout.columns = ['Model','Score']\n", + "accuracy_holdout['Type'] = 'Holdout'\n", + "f1_holdout = pd.DataFrame(pd.DataFrame(score_results_holdout).iloc[1,:]).reset_index()\n", + "f1_holdout.columns = ['Model','Score']\n", + "f1_holdout['Type'] = 'Holdout'\n", + "score_results_holdout" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "accuracy = pd.concat([accuracy_all, accuracy_holdout])\n", + "f1 = pd.concat([f1_all, f1_holdout])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "sns.barplot(data=accuracy, x='Model', y='Score', hue='Type').set(title='Accuracy')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sns.barplot(data=f1, x='Model', y='Score', hue='Type').set(title='F1')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From 5e5014a8447aa255d4d8b49250ad07e6d672097d Mon Sep 17 00:00:00 2001 From: zackAemmer Date: Wed, 30 Nov 2022 10:43:12 -0800 Subject: [PATCH 02/16] Small change to accommodate scaffolding changes --- viz_scripts/replacement_model_data_processing.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/viz_scripts/replacement_model_data_processing.ipynb b/viz_scripts/replacement_model_data_processing.ipynb index 30810e1..19684a3 100644 --- a/viz_scripts/replacement_model_data_processing.ipynb +++ b/viz_scripts/replacement_model_data_processing.ipynb @@ -158,7 +158,7 @@ }, "outputs": [], "source": [ - "expanded_ct, file_suffix, quality_text = scaffolding.load_viz_notebook_data(year,\n", + "expanded_ct, file_suffix, quality_text, debug_df = scaffolding.load_viz_notebook_data(year,\n", " month,\n", " program,\n", " study_type,\n", From f574d1c5b86b617ef33e77fe31c0b88918d3b4a1 Mon Sep 17 00:00:00 2001 From: Rahul Kulhalli Date: Fri, 17 Nov 2023 13:43:22 -0500 Subject: [PATCH 03/16] Added exploratory, preprocessing, and intitial modeling notebooks --- viz_scripts/mapping_dictionaries.ipynb | 44 +- .../rm_src/biogeme_modeling train_test.ipynb | 530 ++++++++++++++++ viz_scripts/rm_src/biogeme_modeling.ipynb | 383 +++++++++++ .../rm_src/cost_time_avl_preprocessing.ipynb | 594 ++++++++++++++++++ .../rm_src/time_distance_estimation.ipynb | 235 +++++++ .../rm_src/user_data_preprocessing.ipynb | 586 +++++++++++++++++ viz_scripts/scaffolding.py | 86 ++- 7 files changed, 2442 insertions(+), 16 deletions(-) create mode 100644 viz_scripts/rm_src/biogeme_modeling train_test.ipynb create mode 100644 viz_scripts/rm_src/biogeme_modeling.ipynb create mode 100644 viz_scripts/rm_src/cost_time_avl_preprocessing.ipynb create mode 100644 viz_scripts/rm_src/time_distance_estimation.ipynb create mode 100644 viz_scripts/rm_src/user_data_preprocessing.ipynb diff --git a/viz_scripts/mapping_dictionaries.ipynb b/viz_scripts/mapping_dictionaries.ipynb index aa6046d..1252544 100644 --- a/viz_scripts/mapping_dictionaries.ipynb +++ b/viz_scripts/mapping_dictionaries.ipynb @@ -2,17 +2,18 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "available-fusion", "metadata": {}, "outputs": [], "source": [ - "import pandas as pd" + "import pandas as pd\n", + "import pickle" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "obvious-chapter", "metadata": {}, "outputs": [], @@ -29,21 +30,44 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "younger-indication", "metadata": {}, "outputs": [], "source": [ - "%store df_ei\n", - "%store dic_re\n", - "%store dic_pur\n", - "%store dic_fuel" + "# %store df_ei\n", + "# %store dic_re\n", + "# %store dic_pur\n", + "# %store dic_fuel\n", + "\n", + "with open('auxiliary_files/df_ei.pkl', 'wb') as f:\n", + " f.write(pickle.dumps(df_ei))\n", + "\n", + "with open('auxiliary_files/dic_re.pkl', 'wb') as f:\n", + " f.write(pickle.dumps(dic_re))\n", + "\n", + "with open('auxiliary_files/dic_pur.pkl', 'wb') as f:\n", + " f.write(pickle.dumps(dic_pur))\n", + "\n", + "with open('auxiliary_files/dic_fuel.pkl', 'wb') as f:\n", + " f.write(pickle.dumps(dic_fuel))" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8e389b3d", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { + "interpreter": { + "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" + }, "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.9.16 ('emission')", "language": "python", "name": "python3" }, @@ -57,7 +81,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.12" + "version": "3.9.16" } }, "nbformat": 4, diff --git a/viz_scripts/rm_src/biogeme_modeling train_test.ipynb b/viz_scripts/rm_src/biogeme_modeling train_test.ipynb new file mode 100644 index 0000000..ba15c71 --- /dev/null +++ b/viz_scripts/rm_src/biogeme_modeling train_test.ipynb @@ -0,0 +1,530 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import biogeme.biogeme as bio\n", + "import biogeme.database as db\n", + "from biogeme import models\n", + "from biogeme.expressions import Beta\n", + "from biogeme.expressions import Variable\n", + "import numpy as np\n", + "from enum import Enum" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data = pd.read_csv('../data/preprocessed_data.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data.user_id.value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class SPLIT_TYPE(Enum):\n", + " INTRA_USER = 0\n", + " INTER_USER = 1\n", + "\n", + "\n", + "def get_splits(count_df: pd.DataFrame, n:int, test_size=0.2):\n", + " maxsize = int(n * test_size)\n", + "\n", + " max_threshold = int(maxsize * 1.05)\n", + " min_threshold = int(maxsize * 0.95)\n", + "\n", + " print(f\"{min_threshold=}, {max_threshold=}\")\n", + " \n", + " # Allow a 10% tolerance\n", + " def _dp(ix, curr_size, ids, cache):\n", + " \n", + " if ix >= count_df.shape[0]:\n", + " return []\n", + "\n", + " key = ix\n", + "\n", + " if key in cache:\n", + " return cache[key]\n", + "\n", + " if curr_size > max_threshold:\n", + " return []\n", + "\n", + " if min_threshold <= curr_size <= max_threshold:\n", + " return ids\n", + "\n", + " # two options - either pick the current id or skip it.\n", + " branch_a = _dp(ix, curr_size+count_df.loc[ix, 'count'], ids+[count_df.loc[ix, 'index']], cache)\n", + " branch_b = _dp(ix+1, curr_size, ids, cache)\n", + " \n", + " curr_max = []\n", + " if branch_a and len(branch_a) > 0:\n", + " curr_max = branch_a\n", + " \n", + " if branch_b and len(branch_b) > len(branch_a):\n", + " curr_max = branch_b\n", + " \n", + " cache[key] = curr_max\n", + " return cache[key]\n", + " \n", + " return _dp(0, 0, ids=list(), cache=dict())\n", + "\n", + "\n", + "def get_train_test_splits(data: pd.DataFrame, how=SPLIT_TYPE, test_ratio=0.2, shuffle=True):\n", + "\n", + " n_users = list(data.user_id.unique())\n", + " n = data.shape[0]\n", + " \n", + " if shuffle:\n", + " data = data.sample(data.shape[0]).reset_index(drop=True, inplace=False)\n", + "\n", + " if how == SPLIT_TYPE.INTER_USER:\n", + " # Make the split, ensuring that a user in one fold is not leaked into the other fold.\n", + " # Basic idea: we want to start with the users with the highest instances and place alternating users in each set.\n", + " counts = data.user_id.value_counts().reset_index(drop=False, inplace=False, name='count')\n", + "\n", + " # Now, start with the user_id at the top, and keep adding to either split.\n", + " # This can be achieved using a simple DP program to fill a knapsack with at most (test_ratio * size) entries.\n", + " test_ids = get_splits(counts, data.shape[0])\n", + "\n", + " print(\"Final test IDs: \", test_ids)\n", + " \n", + " return test_ids" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ids = get_train_test_splits(data=data, how=SPLIT_TYPE.INTER_USER, shuffle=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ids" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data.user_id.value_counts()[ids]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a.loc[0, 'count']\n", + "a.loc[0, 'index']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "USER_MAP = {\n", + " u: i+1 for (i, u) in enumerate(data.user_id.unique())\n", + "}\n", + "\n", + "# Drop section_mode_argmax and available_modes.\n", + "data.drop(columns=[\n", + " 'section_mode_argmax', 'available_modes', 'section_distance_argmax', 'section_duration_argmax'\n", + " ], inplace=True)\n", + "\n", + "data['user_id'] = data['user_id'].apply(lambda x: USER_MAP[x])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Convert from min -> hrs\n", + "data[[c for c in data.columns if 'tt_' in c]] /= 60." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Scale currency by 1/10.\n", + "data[[c for c in data.columns if 'cost_' in c]] /= 10." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "display(data[[c for c in data.columns if 'tt_' in c]].describe())\n", + "display(data[[c for c in data.columns if 'cost_' in c]].describe())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "for c in data.columns:\n", + " if 'av_' in c:\n", + " print(f\"Feature {c} availability: {data.loc[:, c].sum()}/{data.shape[0]}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# data.drop(columns=['tt_unknown','av_unknown'], inplace=True)\n", + "# data.drop(index=data.loc[(data.chosen == 9)].index, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "database = db.Database('emission', data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Variable definitions.\n", + "\n", + "# ID.\n", + "USER_ID = Variable('user_id')\n", + "\n", + "# Availability.\n", + "AV_P_MICRO = Variable('av_p_micro')\n", + "AV_NO_TRIP = Variable('av_no_trip')\n", + "AV_S_CAR = Variable('av_s_car')\n", + "AV_TRANSIT = Variable('av_transit')\n", + "AV_CAR = Variable('av_car')\n", + "AV_S_MICRO = Variable('av_s_micro')\n", + "AV_RIDEHAIL = Variable('av_ridehail')\n", + "AV_WALK = Variable('av_walk')\n", + "AV_UNKNOWN = Variable('av_unknown')\n", + "\n", + "# Time.\n", + "TT_P_MICRO = Variable('tt_p_micro')\n", + "TT_NO_TRIP = Variable('tt_no_trip')\n", + "TT_S_CAR = Variable('tt_s_car')\n", + "TT_TRANSIT = Variable('tt_transit')\n", + "TT_CAR = Variable('tt_car')\n", + "TT_S_MICRO = Variable('tt_s_micro')\n", + "TT_RIDEHAIL = Variable('tt_ridehail')\n", + "TT_WALK = Variable('tt_walk')\n", + "TT_UNKNOWN = Variable('tt_unknown')\n", + "\n", + "# Cost.\n", + "CO_P_MICRO = Variable('cost_p_micro')\n", + "CO_NO_TRIP = Variable('cost_no_trip')\n", + "CO_S_CAR = Variable('cost_s_car')\n", + "CO_TRANSIT = Variable('cost_transit')\n", + "CO_CAR = Variable('cost_car')\n", + "CO_S_MICRO = Variable('cost_s_micro')\n", + "CO_RIDEHAIL = Variable('cost_ridehail')\n", + "CO_WALK = Variable('cost_walk')\n", + "CO_UNKNOWN = Variable('cost_unknown')\n", + "\n", + "# Choice.\n", + "CHOICE = Variable('chosen')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Parameters\n", + "\n", + "# Create a coefficient from time and set the initial value to 0. There is no lower bound for this coefficient,\n", + "# but we would like to constrain the ceil to 0 since we want these coefficients to denote the utiltiy function.\n", + "# Finally, we want this parameter to be updated by the optimization algorithm.\n", + "B_TIME = Beta('B_TIME', 0, None, 0, 0)\n", + "B_COST = Beta('B_COST', 0, None, 0, 0)\n", + "\n", + "# Alternative-Specific Constants.\n", + "ASC_P_MICRO = Beta('ASC_P_MICRO', 0, None, None, 0)\n", + "ASC_NO_TRIP = Beta('ASC_NO_TRIP', 0, None, None, 1)\n", + "ASC_S_CAR = Beta('ASC_S_CAR', 0, None, None, 0)\n", + "ASC_TRANSIT = Beta('ASC_TRANSIT', 0, None, None, 0)\n", + "ASC_CAR = Beta('ASC_CAR', 0, None, None, 0)\n", + "ASC_S_MICRO = Beta('ASC_S_MICRO', 0, None, None, 0)\n", + "ASC_RIDEHAIL = Beta('ASC_RIDEHAIL', 0, None, None, 0)\n", + "ASC_WALK = Beta('ASC_WALK', 0, None, None, 0)\n", + "ASC_UNKNOWN = Beta('ASC_UNKNOWN', 0, None, None, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Define the utility functions.\n", + "# number of alternatives = number of UFs.\n", + "\n", + "V_P_MICRO = (\n", + " ASC_P_MICRO +\n", + " B_TIME * TT_P_MICRO +\n", + " B_COST * CO_P_MICRO\n", + ")\n", + "\n", + "V_NO_TRIP = (\n", + " ASC_NO_TRIP +\n", + " B_TIME * TT_NO_TRIP +\n", + " B_COST * CO_NO_TRIP\n", + ")\n", + "\n", + "V_S_CAR = (\n", + " ASC_CAR +\n", + " B_TIME * TT_CAR +\n", + " B_COST * CO_CAR\n", + ")\n", + "\n", + "V_TRANSIT = (\n", + " ASC_TRANSIT +\n", + " B_TIME * TT_TRANSIT +\n", + " B_COST * CO_TRANSIT\n", + ")\n", + "\n", + "V_CAR = (\n", + " ASC_CAR +\n", + " B_TIME * TT_CAR +\n", + " B_COST * CO_CAR\n", + ")\n", + "\n", + "V_S_MICRO = (\n", + " ASC_S_MICRO +\n", + " B_TIME * TT_S_MICRO +\n", + " B_COST * CO_S_MICRO\n", + ")\n", + "\n", + "V_RIDEHAIL = (\n", + " ASC_RIDEHAIL +\n", + " B_TIME * TT_RIDEHAIL +\n", + " B_COST * CO_RIDEHAIL\n", + ")\n", + "\n", + "V_WALK = (\n", + " ASC_WALK +\n", + " B_TIME * TT_WALK +\n", + " B_COST * CO_WALK\n", + ")\n", + "\n", + "V_UNKNOWN = (\n", + " ASC_UNKNOWN +\n", + " B_TIME * TT_UNKNOWN +\n", + " B_COST * CO_UNKNOWN\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Map alterative to utility functions.\n", + "V = {\n", + " 1: V_P_MICRO, \n", + " 2: V_NO_TRIP,\n", + " 3: V_S_CAR, \n", + " 4: V_TRANSIT,\n", + " 5: V_CAR, \n", + " 6: V_S_MICRO,\n", + " 7: V_RIDEHAIL, \n", + " 8: V_WALK, \n", + " 9: V_UNKNOWN\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Availability.\n", + "# We have already masked-off costs and times for the instances where a particular mode is not available to the user.\n", + "# So here, we can specify the availability as 1 for every mode, saying that every other mode should be included when computing\n", + "# the logprob for a certain mode.\n", + "\n", + "av = {\n", + " 1: AV_P_MICRO,\n", + " 2: AV_NO_TRIP,\n", + " 3: AV_S_CAR,\n", + " 4: AV_TRANSIT,\n", + " 5: AV_CAR,\n", + " 6: AV_S_MICRO,\n", + " 7: AV_RIDEHAIL,\n", + " 8: AV_WALK,\n", + " 9: AV_UNKNOWN\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "logprob = models.loglogit(V, av, CHOICE)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model = bio.BIOGEME(database, logprob)\n", + "model.modelName = 'noMaskNoTrip'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "results = model.estimate()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(results.short_summary())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "results.getEstimatedParameters()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "results.getCorrelationResults()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def generate_metrics(model: bio.BIOGEME, data: pd.DataFrame):\n", + " \"\"\"\n", + " Given a test dataframe and the trained model, generate precision, recall, F1.\n", + " \"\"\"\n", + "\n", + " pass" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "vals = model.validate(results)\n", + "\n", + "for val in vals:\n", + " print(val.shape, val.columns)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" + }, + "kernelspec": { + "display_name": "emission", + "language": "python", + "name": "emission" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/viz_scripts/rm_src/biogeme_modeling.ipynb b/viz_scripts/rm_src/biogeme_modeling.ipynb new file mode 100644 index 0000000..54ccbd6 --- /dev/null +++ b/viz_scripts/rm_src/biogeme_modeling.ipynb @@ -0,0 +1,383 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import biogeme.biogeme as bio\n", + "import biogeme.database as db\n", + "from biogeme import models\n", + "from biogeme.expressions import Beta\n", + "from biogeme.expressions import Variable\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data = pd.read_csv('../data/preprocessed_data.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "USER_MAP = {\n", + " u: i+1 for (i, u) in enumerate(data.user_id.unique())\n", + "}\n", + "\n", + "# Drop section_mode_argmax and available_modes.\n", + "data.drop(columns=[\n", + " 'section_mode_argmax', 'available_modes', 'section_distance_argmax', 'section_duration_argmax'\n", + " ], inplace=True)\n", + "\n", + "data['user_id'] = data['user_id'].apply(lambda x: USER_MAP[x])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Convert from min -> hrs\n", + "data[[c for c in data.columns if 'tt_' in c]] /= 60." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Scale currency by 1/10.\n", + "data[[c for c in data.columns if 'cost_' in c]] /= 10." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "display(data[[c for c in data.columns if 'tt_' in c]].describe())\n", + "display(data[[c for c in data.columns if 'cost_' in c]].describe())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "for c in data.columns:\n", + " if 'av_' in c:\n", + " print(f\"Feature {c} availability: {data.loc[:, c].sum()}/{data.shape[0]}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# data.drop(columns=['tt_unknown','av_unknown'], inplace=True)\n", + "# data.drop(index=data.loc[(data.chosen == 9)].index, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "database = db.Database('emission', data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Variable definitions.\n", + "\n", + "# ID.\n", + "USER_ID = Variable('user_id')\n", + "\n", + "# Availability.\n", + "AV_P_MICRO = Variable('av_p_micro')\n", + "AV_NO_TRIP = Variable('av_no_trip')\n", + "AV_S_CAR = Variable('av_s_car')\n", + "AV_TRANSIT = Variable('av_transit')\n", + "AV_CAR = Variable('av_car')\n", + "AV_S_MICRO = Variable('av_s_micro')\n", + "AV_RIDEHAIL = Variable('av_ridehail')\n", + "AV_WALK = Variable('av_walk')\n", + "AV_UNKNOWN = Variable('av_unknown')\n", + "\n", + "# Time.\n", + "TT_P_MICRO = Variable('tt_p_micro')\n", + "TT_NO_TRIP = Variable('tt_no_trip')\n", + "TT_S_CAR = Variable('tt_s_car')\n", + "TT_TRANSIT = Variable('tt_transit')\n", + "TT_CAR = Variable('tt_car')\n", + "TT_S_MICRO = Variable('tt_s_micro')\n", + "TT_RIDEHAIL = Variable('tt_ridehail')\n", + "TT_WALK = Variable('tt_walk')\n", + "TT_UNKNOWN = Variable('tt_unknown')\n", + "\n", + "# Cost.\n", + "CO_P_MICRO = Variable('cost_p_micro')\n", + "CO_NO_TRIP = Variable('cost_no_trip')\n", + "CO_S_CAR = Variable('cost_s_car')\n", + "CO_TRANSIT = Variable('cost_transit')\n", + "CO_CAR = Variable('cost_car')\n", + "CO_S_MICRO = Variable('cost_s_micro')\n", + "CO_RIDEHAIL = Variable('cost_ridehail')\n", + "CO_WALK = Variable('cost_walk')\n", + "CO_UNKNOWN = Variable('cost_unknown')\n", + "\n", + "# Choice.\n", + "CHOICE = Variable('chosen')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Parameters\n", + "\n", + "# Create a coefficient from time and set the initial value to 0. There is no lower bound for this coefficient,\n", + "# but we would like to constrain the ceil to 0 since we want these coefficients to denote the utiltiy function.\n", + "# Finally, we want this parameter to be updated by the optimization algorithm.\n", + "B_TIME = Beta('B_TIME', 0, None, 0, 0)\n", + "B_COST = Beta('B_COST', 0, None, 0, 0)\n", + "\n", + "# Alternative-Specific Constants.\n", + "ASC_P_MICRO = Beta('ASC_P_MICRO', 0, None, None, 0)\n", + "ASC_NO_TRIP = Beta('ASC_NO_TRIP', 0, None, None, 1)\n", + "ASC_S_CAR = Beta('ASC_S_CAR', 0, None, None, 0)\n", + "ASC_TRANSIT = Beta('ASC_TRANSIT', 0, None, None, 0)\n", + "ASC_CAR = Beta('ASC_CAR', 0, None, None, 0)\n", + "ASC_S_MICRO = Beta('ASC_S_MICRO', 0, None, None, 0)\n", + "ASC_RIDEHAIL = Beta('ASC_RIDEHAIL', 0, None, None, 0)\n", + "ASC_WALK = Beta('ASC_WALK', 0, None, None, 0)\n", + "ASC_UNKNOWN = Beta('ASC_UNKNOWN', 0, None, None, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Define the utility functions.\n", + "# number of alternatives = number of UFs.\n", + "\n", + "V_P_MICRO = (\n", + " ASC_P_MICRO +\n", + " B_TIME * TT_P_MICRO +\n", + " B_COST * CO_P_MICRO\n", + ")\n", + "\n", + "V_NO_TRIP = (\n", + " ASC_NO_TRIP +\n", + " B_TIME * TT_NO_TRIP +\n", + " B_COST * CO_NO_TRIP\n", + ")\n", + "\n", + "V_S_CAR = (\n", + " ASC_CAR +\n", + " B_TIME * TT_CAR +\n", + " B_COST * CO_CAR\n", + ")\n", + "\n", + "V_TRANSIT = (\n", + " ASC_TRANSIT +\n", + " B_TIME * TT_TRANSIT +\n", + " B_COST * CO_TRANSIT\n", + ")\n", + "\n", + "V_CAR = (\n", + " ASC_CAR +\n", + " B_TIME * TT_CAR +\n", + " B_COST * CO_CAR\n", + ")\n", + "\n", + "V_S_MICRO = (\n", + " ASC_S_MICRO +\n", + " B_TIME * TT_S_MICRO +\n", + " B_COST * CO_S_MICRO\n", + ")\n", + "\n", + "V_RIDEHAIL = (\n", + " ASC_RIDEHAIL +\n", + " B_TIME * TT_RIDEHAIL +\n", + " B_COST * CO_RIDEHAIL\n", + ")\n", + "\n", + "V_WALK = (\n", + " ASC_WALK +\n", + " B_TIME * TT_WALK +\n", + " B_COST * CO_WALK\n", + ")\n", + "\n", + "V_UNKNOWN = (\n", + " ASC_UNKNOWN +\n", + " B_TIME * TT_UNKNOWN +\n", + " B_COST * CO_UNKNOWN\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Map alterative to utility functions.\n", + "V = {\n", + " 1: V_P_MICRO, \n", + " 2: V_NO_TRIP,\n", + " 3: V_S_CAR, \n", + " 4: V_TRANSIT,\n", + " 5: V_CAR, \n", + " 6: V_S_MICRO,\n", + " 7: V_RIDEHAIL, \n", + " 8: V_WALK, \n", + " 9: V_UNKNOWN\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Availability.\n", + "# We have already masked-off costs and times for the instances where a particular mode is not available to the user.\n", + "# So here, we can specify the availability as 1 for every mode, saying that every other mode should be included when computing\n", + "# the logprob for a certain mode.\n", + "\n", + "av = {\n", + " 1: AV_P_MICRO,\n", + " 2: AV_NO_TRIP,\n", + " 3: AV_S_CAR,\n", + " 4: AV_TRANSIT,\n", + " 5: AV_CAR,\n", + " 6: AV_S_MICRO,\n", + " 7: AV_RIDEHAIL,\n", + " 8: AV_WALK,\n", + " 9: AV_UNKNOWN\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "logprob = models.loglogit(V, av, CHOICE)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model = bio.BIOGEME(database, logprob)\n", + "model.modelName = 'noMaskNoTrip'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "results = model.estimate()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(results.short_summary())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "results.getEstimatedParameters()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "results.getCorrelationResults()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def generate_metrics(model: bio.BIOGEME, data: pd.DataFrame):\n", + " \"\"\"\n", + " Given a test dataframe and the trained model, generate precision, recall, F1.\n", + " \"\"\"\n", + "\n", + " pass" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" + }, + "kernelspec": { + "display_name": "Python 3.9.16 ('emission')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/viz_scripts/rm_src/cost_time_avl_preprocessing.ipynb b/viz_scripts/rm_src/cost_time_avl_preprocessing.ipynb new file mode 100644 index 0000000..e535e2f --- /dev/null +++ b/viz_scripts/rm_src/cost_time_avl_preprocessing.ipynb @@ -0,0 +1,594 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import ast\n", + "import geopandas as gpd\n", + "from traceback import print_exception\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Sections\n", + "\n", + "### 0: Refer to the mnl_exploration.ipynb notebook for specifics about user-level preprocessing\n", + "### 1. Creating the dummy variables for the available modes\n", + "### 2. Creating trip-specific variables for each available mode (cost and time)\n", + "### 3. ??" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Data loading. Refer to the mnl_exploration.ipynb file for details on how user-level features are generated.\n", + "\n", + "df = pd.read_csv('../data/modeling_w_duration.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df.drop_duplicates(inplace=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Creating the dummy variables for the available modes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def compute_argmax(df: pd.DataFrame):\n", + " # Create the two columns.\n", + " df[['section_distance_argmax', 'section_duration_argmax', 'section_mode_argmax', 'section_coordinates_argmax']] = None\n", + " rows = list()\n", + "\n", + " for ix, row in df.iterrows():\n", + " row_dict = row.to_dict()\n", + " \n", + " try:\n", + " parsed_distances = ast.literal_eval(row_dict['section_distances'])\n", + " parsed_durations = ast.literal_eval(row_dict['section_durations'])\n", + " parsed_modes = ast.literal_eval(row_dict['section_modes'])\n", + "\n", + " argmax_ix = np.argmax(parsed_distances)\n", + "\n", + " row_dict['section_distance_argmax'] = parsed_distances[argmax_ix] * 0.0006213712 # Pick the argmax and scale to miles.\n", + " row_dict['section_duration_argmax'] = parsed_durations[argmax_ix] / 60 # Pick the argmax and scale to minutes.\n", + " row_dict['section_mode_argmax'] = parsed_modes[argmax_ix]\n", + " \n", + " row_dict['mark'] = False\n", + "\n", + " except Exception as e:\n", + " row_dict['mark'] = True\n", + "\n", + " rows.append(row_dict)\n", + "\n", + " return pd.DataFrame(rows)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Let's plot the mode-wise durations as a function of distance.\n", + "df_modded = compute_argmax(df)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df_modded = df_modded.loc[~df_modded.mark, :].reset_index(drop=True, inplace=False).drop(columns=['mark'], inplace=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Intercept and coefficient values for determining the duration from distance (Obtained from time_distance_estimation.ipynb):\n", + "\n", + "```\n", + "Format:\n", + "-> mode train_r2 test_r2\n", + "-> intercept: x, coefficient: y\n", + "\n", + "\n", + "walking 0.24312136039586707 0.5572752052765471\n", + "intercept: 14.09698152519682 coeff: 19.153802211061134\n", + "bicycling 0.5986205637411164 0.646267142326254\n", + "intercept: 4.753590860550791 coeff: 4.2723965916811935\n", + "car 0.45228118668156203 0.6040302860034135\n", + "intercept: 10.515751350707365 coeff: 1.112111276629702\n", + "no_sensed 0.5188696686147352 0.5028191556675814\n", + "intercept: 9.423026094931313 coeff: 2.640429444466706\n", + "public_transport 0.47377939742617625 0.5916737429017003\n", + "intercept: 7.5000351741492395 coeff: 1.839562017986485\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df_modded['no_trip'] = df_modded.apply(\n", + " lambda x: 'Do not have vehicle' in x.available_modes or 'None' in x.available_modes, axis=1\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "no_sensed = df_modded.apply(\n", + " lambda x: 'no_sensed' == x.section_mode_argmax, axis=1\n", + ")\n", + "\n", + "n, d = no_sensed[no_sensed == True].shape[0], no_sensed.shape[0]\n", + "print(n, d)\n", + "print((n/d)*100.)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n = df_modded.loc[df_modded.no_trip, :].shape[0]\n", + "d = df_modded.shape[0]\n", + "print(n, d)\n", + "print((n/d) * 100.)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def generate_available_features(df: pd.DataFrame, available_mode_map: dict, section_mode_map: dict, ordinal_mapper: dict):\n", + " \"\"\"\n", + " This method generates the wide-form dummy features for available modes.\n", + " The current implementation uses (section_mode_argmax OR available_modes) to indicate mode availability.\n", + " \"\"\"\n", + "\n", + " # Reset indices.\n", + " df = df.reset_index(drop=True, inplace=False)\n", + "\n", + " columns = list(available_mode_map.values()) + ['unknown']\n", + "\n", + " # Create the columns along with the 'chosen' column.\n", + " df[columns + ['chosen']] = 0\n", + "\n", + " row_dicts = list()\n", + "\n", + " for _, row in df.iterrows():\n", + " row_dict = row.to_dict()\n", + "\n", + " # Access the available modes. Split on ; and strip all the elements.\n", + " available_modes = [x.strip() for x in str(row_dict['available_modes']).split(';')]\n", + "\n", + " # Update the available modes.\n", + " for available_mode in available_modes:\n", + " row_dict[available_mode_map[available_mode]] = 1\n", + " \n", + " # Now, look at the section_mode_argmax as a proxy for the confirmed mode.\n", + " chosen_modes = section_mode_map[row_dict['section_mode_argmax']]\n", + "\n", + " # Determine the length of the mapping.\n", + " n = len(chosen_modes)\n", + "\n", + " # Go ahead and modify the current dict with the first value.\n", + " row_dict['chosen'] = ordinal_mapper[chosen_modes[0]]\n", + " row_dict['primary_mode'] = 1\n", + "\n", + " # Also update the available modes.\n", + " for chosen_mode in chosen_modes:\n", + " row_dict[chosen_mode] = 1\n", + " \n", + " # Append thee first row to the list.\n", + " row_dicts.append(row_dict)\n", + " \n", + " constructed = pd.DataFrame(row_dicts)\n", + " constructed.rename(columns=dict([(c, 'av_'+c) for c in ordinal_mapper.keys()]), inplace=True)\n", + "\n", + " return constructed" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "## Define the mapping strategy\n", + "\n", + "available = {\n", + " 'Bicycle': 'p_micro',\n", + " 'Do not have vehicle': 'no_trip',\n", + " 'Get a ride from a friend or family member': 's_car',\n", + " 'None': 'no_trip',\n", + " 'Public transportation (bus, subway, light rail, etc.)': 'transit',\n", + " 'Rental car (including Zipcar/ Car2Go)': 'car',\n", + " 'Shared bicycle or scooter': 's_micro',\n", + " 'Skateboard': 'p_micro',\n", + " 'Taxi (regular taxi, Uber, Lyft, etc)': 'ridehail',\n", + " 'Walk/roll': 'walk'\n", + "}\n", + "\n", + "# Map each sensed mode to the binary indicators.\n", + "section_mode_mapping = {\n", + " 'bicycling': ['p_micro', 's_micro'],\n", + " 'bus': ['transit'],\n", + " 'car': ['s_car', 'car', 'ridehail'],\n", + " 'no_sensed': ['unknown'],\n", + " 'train': ['transit'],\n", + " 'walking': ['walk']\n", + "}\n", + "\n", + "# These values were obtained using a simple linear regression model. Specifics can be found in time_distance_estimation.ipynb\n", + "duration_dict = {\n", + " 'walk': {\n", + " 'intercept': 14.09698152519682,\n", + " 'coef': 19.153802211061134\n", + " },\n", + " 'p_micro': {\n", + " 'intercept': 4.753590860550791,\n", + " 'coef': 4.2723965916811935\n", + " },\n", + " 's_micro': {\n", + " 'intercept': 4.753590860550791,\n", + " 'coef': 4.2723965916811935\n", + " },\n", + " 's_car': {\n", + " 'intercept': 10.515751350707365, \n", + " 'coef': 1.112111276629702\n", + " },\n", + " 'car': {\n", + " 'intercept': 10.515751350707365, \n", + " 'coef': 1.112111276629702\n", + " },\n", + " 'ridehail': {\n", + " 'intercept': 10.515751350707365, \n", + " 'coef': 1.112111276629702\n", + " },\n", + " 'transit': {\n", + " 'intercept': 7.5000351741492395,\n", + " 'coef': 1.839562017986485\n", + " },\n", + " 'unknown': {\n", + " 'intercept': 9.423026094931313,\n", + " 'coef': 2.640429444466706\n", + " },\n", + " 'no_trip': {\n", + " 'intercept': 0.,\n", + " 'coef': 0.\n", + " }\n", + "}\n", + "\n", + "ordinal_mapping = {'p_micro': 1, 'no_trip': 2, 's_car': 3, 'transit': 4, 'car': 5, 's_micro': 6, 'ridehail': 7, 'walk': 8, 'unknown': 9}\n", + "reverse_ordinal_mapping = {v:k for k,v in ordinal_mapping.items()}\n", + "\n", + "print(ordinal_mapping)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Let's only select data that we require and copy it into a separate df.\n", + "av_df = df_modded[['user_id', 'section_distance_argmax', 'section_duration_argmax', 'section_mode_argmax', 'available_modes']].copy()\n", + "\n", + "# Update the same df.\n", + "av_df = generate_available_features(av_df, available, section_mode_mapping, ordinal_mapping)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "av_df.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def compute_alt_durations(df: pd.DataFrame, reverse_mapper: dict, duration_mapper: dict):\n", + " '''\n", + " We re-iterate over the generated available mode df and populate the modes.\n", + " We are only concerned with the rows that have primary_mode = 0, which indicates that they are alternate mode rows.\n", + " This method uses the intercept and coefficients obtained from the regression models.\n", + " '''\n", + "\n", + " column_names = list(reverse_mapper.values())\n", + "\n", + " # Start with a 0 cost for everyone.\n", + " df[column_names] = 0\n", + "\n", + " rows = list()\n", + " for ix, row in df.iterrows():\n", + " \n", + " # Convert to a dict\n", + " row_dict = row.to_dict()\n", + "\n", + " for mode in column_names:\n", + " if mode == reverse_mapper[row['chosen']]:\n", + " row_dict[mode] = row_dict['section_distance_argmax']\n", + " continue\n", + " \n", + " mode_params = duration_mapper[mode]\n", + " # use availability as a mask.\n", + " row_dict[mode] = row_dict['av_' + mode] * (mode_params['intercept'] + (mode_params['coef'] * row_dict['section_distance_argmax']))\n", + " \n", + " rows.append(row_dict)\n", + " \n", + " return pd.DataFrame(rows).rename(columns=dict([(c, 'tt_'+c) for c in column_names]), inplace=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def compute_durations_using_data(df: pd.DataFrame, section_mapper: dict, reverse_ordinal_mapping: dict):\n", + " \"\"\"\n", + " Function to perform imputation using historical averages. Instead of estimating mode duration from mode distance, we simply\n", + " impute it using the mean of the particular mode's historical duration.\n", + " \"\"\"\n", + "\n", + " # First, using the history, generate the average durations calculated per mode.\n", + " duration_dict = df.groupby('section_mode_argmax')['section_duration_argmax'].mean().to_dict()\n", + "\n", + " extended_dict = dict()\n", + " for k, v in duration_dict.items():\n", + " mapped_sections = section_mapper[k]\n", + " for _k in mapped_sections:\n", + " extended_dict[_k] = v\n", + "\n", + " # Manually add one more.\n", + " extended_dict['no_trip'] = 0.\n", + "\n", + " print(extended_dict)\n", + "\n", + " # NOW, we iterate over the dataframe.\n", + " new_columns = list(reverse_ordinal_mapping.values())\n", + "\n", + " # Create and init to 0.\n", + " df[new_columns] = 0.\n", + "\n", + " rows = []\n", + "\n", + " for _, row in df.iterrows():\n", + " row_dict = row.to_dict()\n", + "\n", + " # First, look at the section_mode_argmax\n", + " mapped_modes = section_mapper[row_dict['section_mode_argmax']]\n", + "\n", + " for mode in mapped_modes:\n", + " section_duration = row_dict['section_duration_argmax']\n", + " if section_duration > 0:\n", + " row_dict[mode] = row_dict['section_duration_argmax']\n", + " else:\n", + " row_dict[mode] = extended_dict[mode]\n", + "\n", + " # for the remaining modes, estimate their duration through the dict.\n", + " remaining = [mode for mode in new_columns if mode not in mapped_modes]\n", + "\n", + " for mode in remaining:\n", + " # If you'd like to use a mask here, use the av_ dummy values to mask-out irrelevant data.\n", + " row_dict[mode] = extended_dict[mode]\n", + " \n", + " rows.append(row_dict)\n", + " \n", + " return_df = pd.DataFrame(rows)\n", + " return_df.rename(columns=dict([(c, 'tt_'+c) for c in new_columns]), inplace=True)\n", + " return return_df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "av_time_df = compute_durations_using_data(av_df, section_mode_mapping, reverse_ordinal_mapping)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "av_time_df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cost estimation\n", + "\n", + "```\n", + "{'p_micro': 1, 'no_trip': 2, 's_car': 3, 'transit': 4, 'car': 5, 's_micro': 6, 'ridehail': 7, 'walk': 8, 'unknown': 9}\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# All values are taken from VTPI.\n", + "\n", + "mode_cost_per_mile = {\n", + " # bicycle/skateboard\n", + " 'p_micro': 0.,\n", + " 'no_trip': 0.,\n", + " # Shared car would be half the cost of regular car, which is $0.6/mile.\n", + " 's_car': 0.3,\n", + " # Rental car.\n", + " 'car': 0.6,\n", + " # Average of bus and train taken.\n", + " 'transit': 0.6,\n", + " # Shared bicyle or scooter - values taken from https://nacto.org/shared-micromobility-2020-2021/ and \n", + " # https://www.mckinsey.com/industries/automotive-and-assembly/our-insights/how-sharing-the-road-is-likely-to-transform-american-mobility\n", + " 's_micro': 0.3,\n", + " # uber/taxi/lyft\n", + " 'ridehail': 2.,\n", + " 'walk': 0.,\n", + " 'unknown': 0.\n", + "}\n", + "\n", + "# All 0 for now.\n", + "mode_init_cost = {\n", + " k: 0 for k in mode_cost_per_mile.keys()\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "av_time_df.columns" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def compute_cost_estimates(df: pd.DataFrame, cost_mapper: dict, init_cost_mapper: dict, ordinal_mapper: dict):\n", + " \n", + " # Create some extra colums.\n", + " columns = list(ordinal_mapper.keys())\n", + "\n", + " print(columns)\n", + "\n", + " # Initialize the columns to 0.\n", + " df[columns] = 0.\n", + "\n", + " rows = list()\n", + "\n", + " # Iterate over every row.\n", + " for _, row in df.iterrows():\n", + " # Check which flags are active.\n", + " row_dict = row.to_dict()\n", + "\n", + " # ---- Not using the av_ features as a mask. ----\n", + " # # Iterate over the columns and retain the columns with an available mode of 1. Returns a list of [av_* keys]\n", + " # columns = [c for c in row_dict.keys() if c.startswith('av_') and row_dict[c] == 1]\n", + "\n", + " # Access the section_distance_argmax attribute for the distance. Note that this is now in miles.\n", + " distance = row_dict['section_distance_argmax']\n", + "\n", + " for lookup in columns:\n", + " row_dict[lookup] = init_cost_mapper[lookup] + (cost_mapper[lookup] * distance)\n", + "\n", + " rows.append(row_dict)\n", + "\n", + " new_df = pd.DataFrame(rows)\n", + " new_df.rename(columns=dict([(c, 'cost_'+c) for c in ordinal_mapper.keys()]), inplace=True)\n", + "\n", + " return new_df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cost_df = compute_cost_estimates(av_time_df, cost_mapper=mode_cost_per_mile, init_cost_mapper=mode_init_cost, ordinal_mapper=ordinal_mapping)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cost_df[['user_id'] + [c for c in cost_df.columns if 'av_' in c or 'cost_' in c or 'tt_' in c]].head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cost_df.to_csv('../data/preprocessed_data.csv', index=False)" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" + }, + "kernelspec": { + "display_name": "Python 3.9.16 ('emission')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/viz_scripts/rm_src/time_distance_estimation.ipynb b/viz_scripts/rm_src/time_distance_estimation.ipynb new file mode 100644 index 0000000..7591030 --- /dev/null +++ b/viz_scripts/rm_src/time_distance_estimation.ipynb @@ -0,0 +1,235 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Data loading. Refer to the user_data_preprocessing.ipynb file for details on how user-level features are generated.\n", + "\n", + "df = pd.read_csv('../data/modeling_w_duration.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Drop duplicate rows (if any)\n", + "df.drop_duplicates(inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def compute_argmax(df: pd.DataFrame):\n", + " # Create the two columns.\n", + " df[['section_distance_argmax', 'section_duration_argmax', 'section_mode_argmax']] = None\n", + " rows = list()\n", + "\n", + " for ix, row in df.iterrows():\n", + " parsed_distances = eval(row['section_distances'])\n", + " parsed_durations = eval(row['section_durations'])\n", + " parsed_modes = eval(row['section_modes'])\n", + "\n", + " argmax_ix = np.argmax(parsed_distances)\n", + "\n", + " row['section_distance_argmax'] = parsed_distances[argmax_ix]\n", + " row['section_duration_argmax'] = parsed_durations[argmax_ix]\n", + " row['section_mode_argmax'] = parsed_modes[argmax_ix]\n", + "\n", + " rows.append(row.to_dict())\n", + " \n", + " return pd.DataFrame(rows)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Let's plot the mode-wise durations as a function of distance.\n", + "df_modded = compute_argmax(df)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df_modded.columns" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "analysis = df_modded[['section_mode_argmax', 'section_duration_argmax', 'section_distance_argmax']].copy()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "analysis.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.stats import pearsonr\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import r2_score\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.preprocessing import StandardScaler\n", + "\n", + "analysis.loc[(analysis.section_mode_argmax == 'bus') | (analysis.section_mode_argmax == 'train'), ['section_mode_argmax']] = 'public_transport'\n", + "\n", + "for mode in analysis.section_mode_argmax.unique():\n", + " mode_df = analysis.loc[(analysis.section_mode_argmax == mode) \n", + " & (analysis.section_duration_argmax >=0) \n", + " & ((analysis.section_distance_argmax >=0)), ['section_duration_argmax', 'section_distance_argmax']]\n", + "\n", + " X = mode_df[['section_distance_argmax']].values * 0.00062\n", + " Y = mode_df[['section_duration_argmax']].values / 60\n", + "\n", + " X_tr, X_te, Y_tr, Y_te = train_test_split(X, Y, test_size=0.2, random_state=42, shuffle=True)\n", + "\n", + " # scaler = StandardScaler()\n", + "\n", + " # X_tr = scaler.fit_transform(X_tr)\n", + " # X_te = scaler.transform(X_te)\n", + "\n", + " # regr = LinearRegression()\n", + " regr = LinearRegression(fit_intercept=True)\n", + " regr.fit(X_tr.reshape(-1,1), Y_tr.reshape(-1,1))\n", + "\n", + " y_tr_pred = regr.predict(X_tr)\n", + " y_te_pred = regr.predict(X_te)\n", + "\n", + " train_r2 = r2_score(y_true=Y_tr.flatten(), y_pred=y_tr_pred.flatten())\n", + " test_r2 = r2_score(y_true=Y_te.flatten(), y_pred=y_te_pred.flatten())\n", + "\n", + " print(mode, train_r2, test_r2)\n", + " print('intercept: ', regr.intercept_[0], 'coeff: ', regr.coef_[0][0])\n", + "\n", + "\n", + "'''\n", + "Previous results:\n", + "\n", + "walking 0.3843977052858275 0.3749466865077252\n", + "bicycling 0.7396768569714562 0.735986721086616\n", + "car 0.5839819702140339 0.5918942114399524\n", + "no_sensed 0.8045590529878717 0.8059202285373765\n", + "public_transport 0.44880904441364 0.6020723455289356\n", + "'''" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.stats import pearsonr\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.metrics import r2_score\n", + "\n", + "\n", + "# Combine bus and train into 'public transport'\n", + "analysis.loc[(analysis.section_mode_argmax == 'bus') | (analysis.section_mode_argmax == 'train'), ['section_mode_argmax']] = 'public_transport'\n", + "\n", + "for mode in analysis.section_mode_argmax.unique():\n", + "\n", + " mode_df = analysis.loc[\n", + " (analysis.section_mode_argmax == mode) & (analysis.section_duration_argmax >= 0) & (analysis.section_distance_argmax >= 0), \n", + " ['section_duration_argmax', 'section_distance_argmax']\n", + " ]\n", + " \n", + "\n", + " X = mode_df[['section_distance_argmax']].values\n", + " Y = mode_df[['section_duration_argmax']].values\n", + "\n", + " scaler = StandardScaler()\n", + "\n", + " X_tr, X_te, Y_tr, Y_te = train_test_split(X, Y, test_size=0.2, random_state=42, shuffle=True)\n", + "\n", + " X_tr = X_tr.flatten()\n", + " X_te = X_te.flatten()\n", + " Y_tr, Y_te = Y_tr.flatten(), Y_te.flatten()\n", + "\n", + " fit = np.polyfit(X_tr, Y_tr.flatten(), 1)\n", + " # Using the fit, predict tr and te.\n", + " y_tr_pred = np.poly1d(fit)(X_tr)\n", + " y_te_pred = np.poly1d(fit)(X_te)\n", + "\n", + " train_r2 = r2_score(y_true=Y_tr, y_pred=y_tr_pred)\n", + " test_r2 = r2_score(y_true=Y_te, y_pred=y_te_pred)\n", + "\n", + " fig, ax = plt.subplots()\n", + " # Plot the testing samples.\n", + " sns.scatterplot(x=X_te, y=Y_te, ax=ax)\n", + " # Plot the line.\n", + " # line = mode_model.intercept_ + (mode_model.coef_[0] * X_te.flatten())\n", + " sns.lineplot(x=X_te, y=y_te_pred, ax=ax)\n", + " plt.show()\n", + "\n", + " print(mode, train_r2, test_r2)" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" + }, + "kernelspec": { + "display_name": "Python 3.9.16 ('emission')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/viz_scripts/rm_src/user_data_preprocessing.ipynb b/viz_scripts/rm_src/user_data_preprocessing.ipynb new file mode 100644 index 0000000..b8a756c --- /dev/null +++ b/viz_scripts/rm_src/user_data_preprocessing.ipynb @@ -0,0 +1,586 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import sys\n", + "import pickle\n", + "import importlib\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "\n", + "from pathlib import Path\n", + "from uuid import UUID\n", + "from collections import defaultdict\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "emission_path = Path(os.getcwd()).parent.parent / 'my_emission_server' / 'e-mission-server'\n", + "sys.path.append(str(emission_path))\n", + "\n", + "# Also add the home (viz_scripts) to the path\n", + "sys.path.append('../viz_scripts')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import scaffolding\n", + "import emission.core.get_database as edb\n", + "import emission.core.wrapper.entry as ecwe\n", + "import emission.storage.decorations.analysis_timeseries_queries as esda\n", + "import emission.storage.decorations.trip_queries as esdt\n", + "import emission.storage.decorations.timeline as esdl\n", + "import emission.storage.timeseries.abstract_timeseries as esta\n", + "import emission.storage.timeseries.timequery as estt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "importlib.reload(scaffolding)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def r(df: pd.DataFrame) -> pd.DataFrame:\n", + " return df.reset_index(drop=True, inplace=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# (Please run the mapping_dictionaries.ipynb notebook before the next cell block is run)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "with open('../viz_scripts/auxiliary_files/dic_re.pkl', 'rb') as f:\n", + " dic_re = pickle.loads(f.read())\n", + "\n", + "with open('../viz_scripts/auxiliary_files/dic_pur.pkl', 'rb') as f:\n", + " dic_pur = pickle.loads(f.read())\n", + "\n", + "# convert a dictionary to a defaultdict\n", + "dic_re = defaultdict(lambda: 'Other', dic_re)\n", + "dic_pur = defaultdict(lambda: 'Other', dic_pur)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Split UUIDs by program\n", + "program_uuid_map = {}\n", + "for ue in edb.get_uuid_db().find():\n", + " uuid = str(ue['uuid'])\n", + " # uuid = str(ue['uuid'])\n", + " program = ue['user_email'].split(\"_\")[0]\n", + " if program in program_uuid_map.keys():\n", + " program_uuid_map[program].append(uuid)\n", + " else:\n", + " print(f\"Found new program {program}, creating new list\")\n", + " program_uuid_map[program] = []\n", + " program_uuid_map[program].append(uuid)\n", + "\n", + "uuid_program_list = []\n", + "for ue in edb.get_uuid_db().find():\n", + " # uuid = str(ue['uuid'].as_uuid(3))\n", + " uuid = str(ue['uuid'])\n", + " program = ue['user_email'].split(\"_\")[0]\n", + " uuid_program_list.append({\"program\": program, \"opcode\": ue[\"user_email\"], \"user_id\": uuid})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "uuid_program_df = pd.DataFrame.from_dict(uuid_program_list)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# %%capture\n", + "\n", + "# for program in uuid_program_df.program.unique():\n", + "expanded_ct, file_suffix, quality_text, debug_df = scaffolding.load_viz_notebook_data(None,\n", + " None,\n", + " 'prepilot',\n", + " 'program',\n", + " dic_re,\n", + " dic_pur=dic_pur)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Join to the program df to get each user's program\n", + "# Keep a copy of the user_id column for querying section durations.\n", + "expanded_ct['original_user_id'] = expanded_ct['user_id'].copy()\n", + "expanded_ct['user_id'] = expanded_ct['user_id'].apply(lambda x: str(x))\n", + "expanded_ct = expanded_ct.merge(uuid_program_df, on='user_id')\n", + "expanded_ct['user_id'] = expanded_ct['user_id'].apply(lambda x: str(x).replace(\"-\", \"\"))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Rename the target column.\n", + "expanded_ct.drop(columns=['replaced_mode'], axis='rows', inplace=True)\n", + "expanded_ct['Replaced_mode'] = expanded_ct['Replaced_mode'].fillna('Unlabeled')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# We only wish to focus on Denver data for now.\n", + "\n", + "denver_data = r(expanded_ct.loc[\n", + " (expanded_ct.start_local_dt_timezone == \"America/Denver\") & (expanded_ct.end_local_dt_timezone == \"America/Denver\"), \n", + " :])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Parse the datetime to Denver time.\n", + "denver_data['start_fmt_time'] = pd.to_datetime(denver_data['start_fmt_time'], utc=True).dt.tz_convert('America/Denver')\n", + "\n", + "# Re-compute all the start variables.\n", + "denver_data['start_local_dt_year'] = denver_data['start_fmt_time'].dt.year\n", + "denver_data['start_local_dt_month'] = denver_data['start_fmt_time'].dt.month\n", + "denver_data['start_local_dt_day'] = denver_data['start_fmt_time'].dt.day\n", + "denver_data['start_local_dt_hour'] = denver_data['start_fmt_time'].dt.hour\n", + "denver_data['start_local_dt_weekday'] = denver_data['start_fmt_time'].dt.weekday\n", + "\n", + "## Do the same with the end time.\n", + "denver_data['end_fmt_time'] = pd.to_datetime(denver_data['end_fmt_time'], utc=True).dt.tz_convert('America/Denver')\n", + "\n", + "# Re-compute all the end variables.\n", + "denver_data['end_local_dt_year'] = denver_data['end_fmt_time'].dt.year\n", + "denver_data['end_local_dt_month'] = denver_data['end_fmt_time'].dt.month\n", + "denver_data['end_local_dt_day'] = denver_data['end_fmt_time'].dt.day\n", + "denver_data['end_local_dt_hour'] = denver_data['end_fmt_time'].dt.hour\n", + "denver_data['end_local_dt_weekday'] = denver_data['end_fmt_time'].dt.weekday" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Read the Demographic data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Read the Denver dedmographic info\n", + "survey_data = pd.read_csv('../viz_scripts/Can Do Colorado eBike Program - en.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# column renaming here!\n", + "\n", + "survey_data.rename(\n", + " {\n", + " \"Unique User ID (auto-filled, do not edit)\": \"user_id\",\n", + " \"In which year were you born?\": \"birth_year\",\n", + " \"What is your gender?\": \"gender\",\n", + " \"Do you have a valid driver's license?\": \"has_drivers_license\",\n", + " \"Are you a student?\": \"is_student\",\n", + " \"What is the highest grade or degree that you have completed?\": \"highest_education\",\n", + " \"Do you work for either pay or profit?\": \"is_paid\",\n", + " \"Do you have more than one job?\": \"has_multiple_jobs\",\n", + " \"Do you work full-time or part-time at your primary job?\": \"primary_job_type\",\n", + " \"Which best describes your primary job?\": \"primary_job_description\",\n", + " \"How did you usually get to your primary job last week? \": \"primary_job_commute_mode\",\n", + " \"Thinking about your daily commute to work last week, how many minutes did it usually take to get from home to the primary job/work place?\": \"primary_job_commute_time\",\n", + " \"At your primary job, do you have the ability to set or change your own start time?\": \"is_primary_job_flexible\",\n", + " \"Do you have the option of working from home or an alternate location instead of going into your primary work place?\": \"primary_job_can_wfh\",\n", + " \"How many days per week do you usually work from home or an alternate location?\": \"wfh_days\",\n", + " \"Do you own or rent your place of residence?\": \"residence_ownership_type\",\n", + " \"What is your home type?\": \"residence_type\",\n", + " \"Please identify which category represents your total household income, before taxes, for last year.\": \"income_category\",\n", + " \"Including yourself, how many people live in your home?\": \"n_residence_members\",\n", + " \"How many children under age 18 live in your home?\": \"n_residents_u18\",\n", + " \"Including yourself, how many people have a driver's license in your household?\": \"n_residents_with_license\",\n", + " \"How many motor vehicles are owned, leased, or available for regular use by the people who currently live in your household?\": \"n_motor_vehicles\",\n", + " \"If you were unable to use your household vehicle(s), which of the following options would be available to you to get you from place to place?\": \"available_modes\",\n", + " \"Do you have a medical condition that makes it difficult to travel outside of the home?\": \"has_medical_condition\",\n", + " \"How long have you had this condition?\": \"medical_condition_duration\"\n", + " },\n", + " axis='columns',\n", + " inplace=True\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Now, if we have duplicate users, we'd like to retain the last chronological entry.\n", + "survey_data = survey_data.loc[~((survey_data.user_id.isna())|(survey_data.user_id == \"\")), :]\n", + "\n", + "# timezonoe-aware parsing:\n", + "survey_data['Timestamp'] = survey_data['Timestamp'].str.replace('PDT|PST', '', regex=True)\n", + "survey_data['Timestamp'] = pd.to_datetime(survey_data['Timestamp']).dt.tz_localize('America/Denver')\n", + "\n", + "# Sort by user_id and time, then drop everything but the last entry.\n", + "survey_data.sort_values(by=['user_id', 'Timestamp'], ascending=True, inplace=True, axis='rows')\n", + "survey_data.drop_duplicates(['user_id'], keep='last', inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Merge the trip data with the survey data.\n", + "\n", + "merged_data = denver_data.merge(\n", + " survey_data, left_on='user_id', right_on='user_id'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Let's start choosing features for modeling.\n", + "\n", + "base_time_features = ['fmt_time', 'local_dt_year', 'local_dt_month', 'local_dt_day', 'local_dt_hour', 'local_dt_weekday']\n", + "time_features = ['start_' + x for x in base_time_features] + ['end_' + x for x in base_time_features]\n", + "\n", + "demographic_features = ['available_modes',\n", + " 'birth_year', 'income_category', 'n_motor_vehicles', 'n_residence_members', 'n_residents_u18', 'gender', \n", + " 'is_student', 'n_residents_with_license']\n", + "\n", + "sensed_features = ['duration', 'distance_miles', 'cleaned_trip', 'start_loc', 'end_loc', 'section_modes', 'section_distances']\n", + "\n", + "modeling_data = merged_data[['user_id', '_id', 'original_user_id', 'cleaned_trip', 'Replaced_mode', 'Mode_confirm'] + time_features + demographic_features + sensed_features].copy()\n", + "\n", + "# Rename columns in-place.\n", + "modeling_data.rename(columns={\n", + " 'start_local_dt_year': 'start:year', 'start_local_dt_month': 'start:month', 'start_local_dt_day': 'start:day', 'start_local_dt_hour': 'start:hour',\n", + " 'end_local_dt_year': 'end:year', 'end_local_dt_month': 'end:month', 'end_local_dt_day': 'end:day', 'end_local_dt_hour': 'end:hour'\n", + " }, inplace=True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from calendar import monthrange\n", + "\n", + "# Find day of month: use monthrange with (mm, yyyy) args and find how many days that month had (leap years are supported).\n", + "def get_num_days_in_month(yyyy, mm):\n", + " return monthrange(yyyy, mm)[1]\n", + "\n", + "def is_overnight_trip(start_date, end_date):\n", + " return int((end_date - start_date).days > 0)\n", + "\n", + "# get the number of days for the start and end times.\n", + "modeling_data['start:n_days_in_month'] = modeling_data.apply(lambda x: get_num_days_in_month(x['start:year'], x['start:month']), axis=1)\n", + "modeling_data['end:n_days_in_month'] = modeling_data.apply(lambda x: get_num_days_in_month(x['end:year'], x['end:month']), axis=1)\n", + "\n", + "# age = current year - year of birth\n", + "modeling_data['age'] = 2023 - modeling_data['birth_year']\n", + "\n", + "# overnight trips may be more likely taken by car.\n", + "modeling_data['is_overnight_trip'] = modeling_data.apply(lambda x: is_overnight_trip(x.start_fmt_time, x.end_fmt_time), axis=1)\n", + "\n", + "# Number of working individuals in the household = number of individuals in the house - number of children.\n", + "modeling_data['n_working_residents'] = (modeling_data['n_residence_members'] - modeling_data['n_residents_u18']).astype(int)\n", + "\n", + "# Create a binary indicator.\n", + "modeling_data['is_male'] = modeling_data.gender.apply(lambda x: 1 if x==\"Male\" else 0)\n", + "\n", + "# Bin the number of vehicles owned.\n", + "# Drop the observations with (Prefer not to say)\n", + "modeling_data = modeling_data.loc[~modeling_data['n_motor_vehicles'].isin(['Prefer not to say / Prefiero no decir.']), :]\n", + "modeling_data.loc[modeling_data['n_motor_vehicles'].isin(['4+']), 'n_motor_vehicles'] = 4\n", + "modeling_data['n_motor_vehicles'] = modeling_data['n_motor_vehicles'].astype(int)\n", + "\n", + "# Convert the total duration of the trip into minutes.\n", + "modeling_data[['duration']] = modeling_data[['duration']]/60\n", + "\n", + "# Extract start and end latitudes and longitudes.\n", + "modeling_data['start_lat'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][1])\n", + "modeling_data['start_lng'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][0])\n", + "\n", + "modeling_data['end_lat'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][1])\n", + "modeling_data['end_lng'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from calendar import monthrange\n", + "\n", + "# Find day of month: use monthrange with (mm, yyyy) args and find how many days that month had (leap years are supported).\n", + "def get_num_days_in_month(yyyy, mm):\n", + " return monthrange(yyyy, mm)[1]\n", + "\n", + "def is_overnight_trip(start_date, end_date):\n", + " return int((end_date - start_date).days > 0)\n", + "\n", + "# get the number of days for the start and end times.\n", + "modeling_data['start:n_days_in_month'] = modeling_data.apply(lambda x: get_num_days_in_month(x['start:year'], x['start:month']), axis=1)\n", + "modeling_data['end:n_days_in_month'] = modeling_data.apply(lambda x: get_num_days_in_month(x['end:year'], x['end:month']), axis=1)\n", + "\n", + "# age = current year - year of birth\n", + "modeling_data['age'] = 2023 - modeling_data['birth_year']\n", + "\n", + "# overnight trips may be more likely taken by car.\n", + "modeling_data['is_overnight_trip'] = modeling_data.apply(lambda x: is_overnight_trip(x.start_fmt_time, x.end_fmt_time), axis=1)\n", + "\n", + "# Number of working individuals in the household = number of individuals in the house - number of children.\n", + "modeling_data['n_working_residents'] = (modeling_data['n_residence_members'] - modeling_data['n_residents_u18']).astype(int)\n", + "\n", + "# Create a binary indicator.\n", + "modeling_data['is_male'] = modeling_data.gender.apply(lambda x: 1 if x==\"Male\" else 0)\n", + "\n", + "# Bin the number of vehicles owned.\n", + "# Drop the observations with (Prefer not to say)\n", + "modeling_data = modeling_data.loc[~modeling_data['n_motor_vehicles'].isin(['Prefer not to say / Prefiero no decir.']), :]\n", + "modeling_data.loc[modeling_data['n_motor_vehicles'].isin(['4+']), 'n_motor_vehicles'] = 4\n", + "modeling_data['n_motor_vehicles'] = modeling_data['n_motor_vehicles'].astype(int)\n", + "\n", + "# Convert the total duration of the trip into minutes.\n", + "modeling_data[['duration']] = modeling_data[['duration']]/60\n", + "\n", + "# Extract start and end latitudes and longitudes.\n", + "modeling_data['start_lat'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][1])\n", + "modeling_data['start_lng'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][0])\n", + "\n", + "modeling_data['end_lat'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][1])\n", + "modeling_data['end_lng'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Time-related feature engineeering:\n", + "'''\n", + "HOD: hour of day\n", + "DOM: day of month\n", + "MOY: month of year\n", + "'''\n", + "\n", + "def get_HOD(hour, how='sin'):\n", + " if how == 'sin':\n", + " return np.sin(2 * np.pi * (hour/24))\n", + " return np.cos(2 * np.pi * (hour/24))\n", + "\n", + "def get_DOM(day, n_days, how='sin'):\n", + " if how == 'sin':\n", + " return np.sin(2 * np.pi * (day/n_days))\n", + " return np.cos(2 * np.pi * (day/n_days))\n", + "\n", + "def get_MOY(month, how='sin'):\n", + " if how == 'sin':\n", + " return np.sin(2 * np.pi * (month/12))\n", + " return np.cos(2 * np.pi * (month/12))\n", + "\n", + "# Start - sin\n", + "modeling_data['start:sin_HOD'] = modeling_data.apply(lambda x: get_HOD(x['start:hour']), axis=1)\n", + "modeling_data['start:sin_DOM'] = modeling_data.apply(lambda x: get_DOM(x['start:day'], x['start:n_days_in_month']), axis=1)\n", + "modeling_data['start:sin_MOY'] = modeling_data.apply(lambda x: get_MOY(x['start:year']), axis=1)\n", + "\n", + "# Start - cos\n", + "modeling_data['start:cos_HOD'] = modeling_data.apply(lambda x: get_HOD(x['start:hour'], how='cos'), axis=1)\n", + "modeling_data['start:cos_DOM'] = modeling_data.apply(lambda x: get_DOM(x['start:day'], x['start:n_days_in_month'], how='cos'), axis=1)\n", + "modeling_data['start:cos_MOY'] = modeling_data.apply(lambda x: get_MOY(x['start:year'], how='cos'), axis=1)\n", + "\n", + "# End - sin\n", + "modeling_data['end:sin_HOD'] = modeling_data.apply(lambda x: get_HOD(x['end:hour']), axis=1)\n", + "modeling_data['end:sin_DOM'] = modeling_data.apply(lambda x: get_DOM(x['end:day'], x['end:n_days_in_month']), axis=1)\n", + "modeling_data['end:sin_MOY'] = modeling_data.apply(lambda x: get_MOY(x['end:year']), axis=1)\n", + "\n", + "# End - cos\n", + "modeling_data['end:cos_HOD'] = modeling_data.apply(lambda x: get_HOD(x['end:hour'], how='cos'), axis=1)\n", + "modeling_data['end:cos_DOM'] = modeling_data.apply(lambda x: get_DOM(x['end:day'], x['end:n_days_in_month'], how='cos'), axis=1)\n", + "modeling_data['end:cos_MOY'] = modeling_data.apply(lambda x: get_MOY(x['end:year'], how='cos'), axis=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, for every trip, we have the corresponding section mode that covered the longest distance for the trip.\n", + "\n", + "Using this as well as the `available_modes` column:\n", + "\n", + "```language=python\n", + "\n", + " # unique available modes:\n", + " {'Bicycle',\n", + " 'Do not have vehicle ',\n", + " 'Get a ride from a friend or family member',\n", + " 'None',\n", + " 'Public transportation (bus, subway, light rail, etc.)',\n", + " 'Rental car (including Zipcar/ Car2Go)',\n", + " 'Shared bicycle or scooter',\n", + " 'Skateboard',\n", + " 'Taxi (regular taxi, Uber, Lyft, etc)',\n", + " 'Walk/roll'}\n", + "\n", + " # unique section modes:\n", + " {'bicycling', 'bus', 'car', 'no_sensed', 'train', 'walking'}\n", + "\n", + " \n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\"\n", + "Remove air trips.\n", + "\"\"\"\n", + "def remove_air_or_hsr(df):\n", + "\n", + " df['mark'] = 0\n", + "\n", + " for ix, row in df.iterrows():\n", + " sections = row['section_modes']\n", + " if 'air_or_hsr' in sections:\n", + " df.loc[ix, 'mark'] = 1\n", + " \n", + " df = r(df.loc[df.mark == 0, :])\n", + " df.drop(columns=['mark'], inplace=True)\n", + "\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "modeling_data = remove_air_or_hsr(modeling_data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Get section durations for trips.\n", + "modeling_data = scaffolding.get_section_durations(modeling_data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Save the dataframe.\n", + "# final_df.to_csv('../data/modeling_w_duration.csv', index=False)" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "88f8afe72b095c7f825e3358bd97ba362c33037cbe77fe6effd118f9a11a2d38" + }, + "kernelspec": { + "display_name": "Python 3.8.18 ('mnl')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.18" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/viz_scripts/scaffolding.py b/viz_scripts/scaffolding.py index 01b4158..5918672 100644 --- a/viz_scripts/scaffolding.py +++ b/viz_scripts/scaffolding.py @@ -1,10 +1,16 @@ import pandas as pd import numpy as np import sys +from tqdm import tqdm +from shapely import Point import emission.storage.timeseries.abstract_timeseries as esta +import emission.storage.timeseries.builtin_timeseries as bts import emission.storage.timeseries.tcquery as esttc import emission.core.wrapper.localdate as ecwl +import emission.storage.decorations.trip_queries as esdt +from pandarallel import pandarallel + # Module for pretty-printing outputs (e.g. head) to help users # understand what is going on @@ -45,14 +51,14 @@ def get_participant_uuids(program, load_test_users): else: participant_list = all_users[np.logical_not(all_users.user_email.str.contains("_test_"))] participant_uuid_str = participant_list.uuid - disp.display(participant_list.user_email) + # disp.display(participant_list.user_email) return participant_uuid_str def load_all_confirmed_trips(tq): agg = esta.TimeSeries.get_aggregate_time_series() all_ct = agg.get_data_df("analysis/confirmed_trip", tq) print("Loaded all confirmed trips of length %s" % len(all_ct)) - disp.display(all_ct.head()) + # disp.display(all_ct.head()) return all_ct def load_all_participant_trips(program, tq, load_test_users): @@ -63,7 +69,7 @@ def load_all_participant_trips(program, tq, load_test_users): return all_ct participant_ct_df = all_ct[all_ct.user_id.isin(participant_list)] print("After filtering, found %s participant trips " % len(participant_ct_df)) - disp.display(participant_ct_df.head()) + # disp.display(participant_ct_df.head()) return participant_ct_df def filter_labeled_trips(mixed_trip_df): @@ -72,7 +78,7 @@ def filter_labeled_trips(mixed_trip_df): return mixed_trip_df labeled_ct = mixed_trip_df[mixed_trip_df.user_input != {}] print("After filtering, found %s labeled trips" % len(labeled_ct)) - disp.display(labeled_ct.head()) + # disp.display(labeled_ct.head()) return labeled_ct def expand_userinputs(labeled_ct): @@ -87,7 +93,7 @@ def expand_userinputs(labeled_ct): if len(labeled_ct) == 0: return labeled_ct label_only = pd.DataFrame(labeled_ct.user_input.to_list(), index=labeled_ct.index) - disp.display(label_only.head()) + # disp.display(label_only.head()) labels_per_trip = len(label_only.columns) print("Found %s columns of length %d" % (label_only.columns, labels_per_trip)) expanded_ct = pd.concat([labeled_ct, label_only], axis=1) @@ -99,9 +105,76 @@ def expand_userinputs(labeled_ct): assert len(expanded_ct.columns) == len(labeled_ct.columns) + labels_per_trip, \ ("Mismatch after expanding labels, expanded_ct.columns = %s != labeled_ct.columns %s" % (len(expanded_ct.columns), len(labeled_ct.columns))) - disp.display(expanded_ct.head()) + # disp.display(expanded_ct.head()) return expanded_ct +def get_section_durations(confirmed_trips: pd.DataFrame): + + # Initialize the parallel processing. + pandarallel.initialize(progress_bar=True) + + """ + Extract section-wise durations from trips for every trips. + + TOOO: There is a massive scope to improve performance here. + Since we apply row-wise and there are no inter-row dependencies, + Speeding this up is very possible. Exploring packages like parallel-pandas + is definitely something we could do. + """ + + # No worries, the inner function has access to these variables. + fallback_key = 'analysis/inferred_section' + primary_key = 'analysis/cleaned_section' + + def get_durations(user_id, trip_id): + + inferred_sections = esdt.get_sections_for_trip(key = fallback_key, + user_id = user_id, trip_id = trip_id) + + if inferred_sections and len(inferred_sections) > 0: + return [x.data.duration for x in inferred_sections] + + print("Falling back to confirmed trips...") + + cleaned_sections = esdt.get_sections_for_trip(key = primary_key, + user_id = user_id, trip_id = trip_id) + + if cleaned_sections and len(cleaned_sections) > 0: + return [x.data.duration for x in cleaned_sections] + + return [] + + confirmed_trips['section_durations'] = confirmed_trips.parallel_apply( + lambda x: get_durations(x.original_user_id, x.cleaned_trip), axis=1 + ) + + return confirmed_trips + + +def get_section_coordinates(confirmed_trips: pd.DataFrame): + # Initialize pandarallel + pandarallel.initialize(progress_bar=True) + + key = 'analysis/inferred_section' + + def get_coordinates(user_id, trip_id, distances): + sections = esdt.get_sections_for_trip(key = key, + user_id = user_id, trip_id = trip_id) + + if sections and len(sections) > 0 and len(distances) == len(sections): + argmax = np.argmax(distances) + section = sections[argmax] + return section.data.start_loc['coordinates'], section.data.end_loc['coordinates'] + + return [] + + confirmed_trips['section_locations_argmax'] = confirmed_trips.parallel_apply( + lambda x: get_coordinates(x.original_user_id, x.cleaned_trip, x.section_distances), axis=1 + ) + + return confirmed_trips + + # CASE 2 of https://github.com/e-mission/em-public-dashboard/issues/69#issuecomment-1256835867 unique_users = lambda df: len(df.user_id.unique()) if "user_id" in df.columns else 0 trip_label_count = lambda s, df: len(df[s].dropna()) if s in df.columns else 0 @@ -117,6 +190,7 @@ def load_viz_notebook_data(year, month, program, study_type, dic_re, dic_pur=Non tq = get_time_query(year, month) participant_ct_df = load_all_participant_trips(program, tq, include_test_users) labeled_ct = filter_labeled_trips(participant_ct_df) + # labeled_ct = get_section_durations(labeled_ct) expanded_ct = expand_userinputs(labeled_ct) expanded_ct = data_quality_check(expanded_ct) From e1c74ecf46e38f2144c97bb813b3f42fb954b65e Mon Sep 17 00:00:00 2001 From: Rahul Kulhalli Date: Mon, 4 Dec 2023 12:21:08 -0500 Subject: [PATCH 04/16] Replaced biogeme modeling code --- viz_scripts/rm_src/biogeme_modeling.ipynb | 213 ++++++++++++++++++---- 1 file changed, 178 insertions(+), 35 deletions(-) diff --git a/viz_scripts/rm_src/biogeme_modeling.ipynb b/viz_scripts/rm_src/biogeme_modeling.ipynb index 54ccbd6..035d597 100644 --- a/viz_scripts/rm_src/biogeme_modeling.ipynb +++ b/viz_scripts/rm_src/biogeme_modeling.ipynb @@ -10,9 +10,11 @@ "import biogeme.biogeme as bio\n", "import biogeme.database as db\n", "from biogeme import models\n", - "from biogeme.expressions import Beta\n", + "from biogeme.expressions import Beta, DefineVariable\n", "from biogeme.expressions import Variable\n", - "import numpy as np" + "import numpy as np\n", + "\n", + "from sklearn.preprocessing import MinMaxScaler" ] }, { @@ -36,7 +38,7 @@ "\n", "# Drop section_mode_argmax and available_modes.\n", "data.drop(columns=[\n", - " 'section_mode_argmax', 'available_modes', 'section_distance_argmax', 'section_duration_argmax'\n", + " 'section_mode_argmax', 'available_modes', 'section_duration_argmax', 'section_distance_argmax'\n", " ], inplace=True)\n", "\n", "data['user_id'] = data['user_id'].apply(lambda x: USER_MAP[x])" @@ -49,7 +51,14 @@ "outputs": [], "source": [ "# Convert from min -> hrs\n", - "data[[c for c in data.columns if 'tt_' in c]] /= 60." + "data[[c for c in data.columns if 'tt_' in c]] /= 60.\n", + "\n", + "# Scale costs using StandardScaler.\n", + "costs = data[[c for c in data.columns if 'cost_' in c]].copy()\n", + "\n", + "scaler = MinMaxScaler()\n", + "cost_scaled = pd.DataFrame(scaler.fit_transform(costs), columns=['scaled_' + c for c in costs.columns], index=costs.index)\n", + "data = data.merge(right=cost_scaled, left_index=True, right_index=True)" ] }, { @@ -58,8 +67,7 @@ "metadata": {}, "outputs": [], "source": [ - "# Scale currency by 1/10.\n", - "data[[c for c in data.columns if 'cost_' in c]] /= 10." + "data.head()" ] }, { @@ -68,8 +76,8 @@ "metadata": {}, "outputs": [], "source": [ - "display(data[[c for c in data.columns if 'tt_' in c]].describe())\n", - "display(data[[c for c in data.columns if 'cost_' in c]].describe())" + "# display(data[[c for c in data.columns if 'tt_' in c]].describe())\n", + "# display(data[[c for c in data.columns if 'cost_' in c]].describe())" ] }, { @@ -137,18 +145,23 @@ "TT_UNKNOWN = Variable('tt_unknown')\n", "\n", "# Cost.\n", - "CO_P_MICRO = Variable('cost_p_micro')\n", - "CO_NO_TRIP = Variable('cost_no_trip')\n", - "CO_S_CAR = Variable('cost_s_car')\n", - "CO_TRANSIT = Variable('cost_transit')\n", - "CO_CAR = Variable('cost_car')\n", - "CO_S_MICRO = Variable('cost_s_micro')\n", - "CO_RIDEHAIL = Variable('cost_ridehail')\n", - "CO_WALK = Variable('cost_walk')\n", - "CO_UNKNOWN = Variable('cost_unknown')\n", + "CO_P_MICRO = Variable('scaled_cost_p_micro')\n", + "CO_NO_TRIP = Variable('scaled_cost_no_trip')\n", + "CO_S_CAR = Variable('scaled_cost_s_car')\n", + "CO_TRANSIT = Variable('scaled_cost_transit')\n", + "CO_CAR = Variable('scaled_cost_car')\n", + "CO_S_MICRO = Variable('scaled_cost_s_micro')\n", + "CO_RIDEHAIL = Variable('scaled_cost_ridehail')\n", + "CO_WALK = Variable('scaled_cost_walk')\n", + "CO_UNKNOWN = Variable('scaled_cost_unknown')\n", "\n", "# Choice.\n", - "CHOICE = Variable('chosen')" + "CHOICE = Variable('chosen')\n", + "\n", + "# Exclusion. Choice must not be equal to or either 2 or 9.\n", + "EXCLUDE = (CHOICE == 2) + (CHOICE == 9) > 0\n", + "\n", + "database.remove(EXCLUDE)" ] }, { @@ -163,18 +176,18 @@ "# but we would like to constrain the ceil to 0 since we want these coefficients to denote the utiltiy function.\n", "# Finally, we want this parameter to be updated by the optimization algorithm.\n", "B_TIME = Beta('B_TIME', 0, None, 0, 0)\n", - "B_COST = Beta('B_COST', 0, None, 0, 0)\n", + "B_COST = Beta('B_COST', 0, None, None, 0)\n", "\n", "# Alternative-Specific Constants.\n", "ASC_P_MICRO = Beta('ASC_P_MICRO', 0, None, None, 0)\n", - "ASC_NO_TRIP = Beta('ASC_NO_TRIP', 0, None, None, 1)\n", + "ASC_NO_TRIP = Beta('ASC_NO_TRIP', 0, None, None, 0)\n", "ASC_S_CAR = Beta('ASC_S_CAR', 0, None, None, 0)\n", "ASC_TRANSIT = Beta('ASC_TRANSIT', 0, None, None, 0)\n", "ASC_CAR = Beta('ASC_CAR', 0, None, None, 0)\n", "ASC_S_MICRO = Beta('ASC_S_MICRO', 0, None, None, 0)\n", "ASC_RIDEHAIL = Beta('ASC_RIDEHAIL', 0, None, None, 0)\n", "ASC_WALK = Beta('ASC_WALK', 0, None, None, 0)\n", - "ASC_UNKNOWN = Beta('ASC_UNKNOWN', 0, None, None, 1)" + "ASC_UNKNOWN = Beta('ASC_UNKNOWN', 0, None, None, 0)" ] }, { @@ -186,10 +199,11 @@ "# Define the utility functions.\n", "# number of alternatives = number of UFs.\n", "\n", + "# Not multiplying by cost.\n", "V_P_MICRO = (\n", " ASC_P_MICRO +\n", - " B_TIME * TT_P_MICRO +\n", - " B_COST * CO_P_MICRO\n", + " B_TIME * TT_P_MICRO\n", + " + B_COST * CO_P_MICRO\n", ")\n", "\n", "V_NO_TRIP = (\n", @@ -199,9 +213,9 @@ ")\n", "\n", "V_S_CAR = (\n", - " ASC_CAR +\n", - " B_TIME * TT_CAR +\n", - " B_COST * CO_CAR\n", + " ASC_S_CAR +\n", + " B_TIME * TT_S_CAR +\n", + " B_COST * CO_S_CAR\n", ")\n", "\n", "V_TRANSIT = (\n", @@ -228,10 +242,11 @@ " B_COST * CO_RIDEHAIL\n", ")\n", "\n", + "# Cost is 0, so no point multiplying.\n", "V_WALK = (\n", " ASC_WALK +\n", - " B_TIME * TT_WALK +\n", - " B_COST * CO_WALK\n", + " B_TIME * TT_WALK\n", + " + B_COST * CO_WALK\n", ")\n", "\n", "V_UNKNOWN = (\n", @@ -301,7 +316,7 @@ "outputs": [], "source": [ "model = bio.BIOGEME(database, logprob)\n", - "model.modelName = 'noMaskNoTrip'" + "model.modelName = 'linearModelCostsModel'" ] }, { @@ -337,7 +352,29 @@ "metadata": {}, "outputs": [], "source": [ - "results.getCorrelationResults()" + "def generate_metrics(model: bio.BIOGEME, database: db.Database, V: dict):\n", + " \"\"\"\n", + " Given a test dataframe and the trained model, generate precision, recall, F1.\n", + " \"\"\"\n", + "\n", + " predictions = list()\n", + "\n", + " for row_ix in range(data.shape[0]):\n", + " preds = dict()\n", + " for alt_id, utility in V.items():\n", + " preds[alt_id] = utility.getValue_c(database)\n", + " \n", + " predictions.append(preds)\n", + " return pd.DataFrame(predictions)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "results.getBetaValues()" ] }, { @@ -346,13 +383,119 @@ "metadata": {}, "outputs": [], "source": [ - "def generate_metrics(model: bio.BIOGEME, data: pd.DataFrame):\n", - " \"\"\"\n", - " Given a test dataframe and the trained model, generate precision, recall, F1.\n", - " \"\"\"\n", + "def get_utility_df(results, data):\n", + "\n", + " ''' \n", + " 1: V_P_MICRO, \n", + " 2: V_NO_TRIP,\n", + " 3: V_S_CAR, \n", + " 4: V_TRANSIT,\n", + " 5: V_CAR, \n", + " 6: V_S_MICRO,\n", + " 7: V_RIDEHAIL, \n", + " 8: V_WALK, \n", + " # 9: V_UNKNOWN\n", + " # '''\n", + "\n", + " def compute_utilities(betas, row: pd.Series):\n", + " data = row.to_dict()\n", + "\n", + " utility_p_micro = betas['ASC_P_MICRO'] + (betas['B_TIME'] * data['tt_p_micro'])\n", + " utility_no_trip = betas['ASC_NO_TRIP'] + (betas['B_TIME'] * data['tt_no_trip']) + (betas['B_COST'] * data['scaled_cost_no_trip'])\n", + " utility_s_car = betas['ASC_S_CAR'] + (betas['B_COST'] * data['scaled_cost_s_car']) + (betas['B_TIME'] * data['tt_s_car'])\n", + " utility_transit = betas['ASC_TRANSIT'] + (betas['B_COST'] * data['scaled_cost_transit']) + (betas['B_TIME'] * data['tt_transit'])\n", + " utility_car = betas['ASC_CAR'] + (betas['B_COST'] * data['scaled_cost_car'] + (betas['B_TIME'] * data['tt_car']))\n", + " utility_s_micro = betas['ASC_S_MICRO'] + (betas['B_COST'] * data['scaled_cost_s_micro']) + (betas['B_TIME'] * data['tt_s_micro'])\n", + " utility_ridehail = betas['ASC_RIDEHAIL'] + (betas['B_COST'] * data['scaled_cost_ridehail']) + (betas['B_TIME'] * data['tt_ridehail'])\n", + " utility_walk = betas['ASC_WALK'] + (betas['B_TIME'] * data['tt_walk'])\n", + " utility_unknown = betas['ASC_UNKNOWN'] + (betas['B_TIME'] * data['tt_unknown']) + (betas['B_COST'] * data['scaled_cost_unknown'])\n", + "\n", + " return {\n", + " 'utility_p_micro': utility_p_micro, 'utility_no_trip': utility_no_trip,\n", + " 'utility_s_car': utility_s_car, 'utility_transit': utility_transit,\n", + " 'utility_car': utility_car, 'utility_s_micro': utility_s_micro,\n", + " 'utility_ridehail': utility_ridehail, 'utility_walk': utility_walk, \n", + " 'utility_unknown': utility_unknown, \n", + " }\n", + " \n", + " betas = results.getBetaValues()\n", + "\n", + " u_data = data.apply(lambda x: compute_utilities(betas, x), axis=1).tolist()\n", + " return pd.DataFrame(u_data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "u_df = get_utility_df(results, database.fullData)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "u_np = u_df.values\n", + "choice_df = np.exp(u_np)/np.sum(np.exp(u_np), axis=1, keepdims=True)\n", + "\n", + "choice_df = pd.DataFrame(choice_df, columns=u_df.columns)\n", + "display(choice_df.head())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.metrics import f1_score\n", "\n", - " pass" + "y_pred = np.argmax(choice_df.values, axis=1) + 1\n", + "\n", + "print(np.unique(y_pred))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pd.Series(y_pred).hist()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# labels are 1-9\n", + "y_true = data.chosen\n", + "\n", + "pd.Series(y_true).hist()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "score = f1_score(y_true, y_pred, average='weighted')\n", + "print(score)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { From 9a1db4aec24b26a9fb9936cf929de8131607d541 Mon Sep 17 00:00:00 2001 From: Rahul Kulhalli Date: Mon, 4 Dec 2023 12:46:52 -0500 Subject: [PATCH 05/16] Modified biogeme_train_test.py by adding helper functions --- .../rm_src/biogeme_modeling train_test.ipynb | 530 -------- .../rm_src/biogeme_modeling_train_test.ipynb | 1099 +++++++++++++++++ 2 files changed, 1099 insertions(+), 530 deletions(-) delete mode 100644 viz_scripts/rm_src/biogeme_modeling train_test.ipynb create mode 100644 viz_scripts/rm_src/biogeme_modeling_train_test.ipynb diff --git a/viz_scripts/rm_src/biogeme_modeling train_test.ipynb b/viz_scripts/rm_src/biogeme_modeling train_test.ipynb deleted file mode 100644 index ba15c71..0000000 --- a/viz_scripts/rm_src/biogeme_modeling train_test.ipynb +++ /dev/null @@ -1,530 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import biogeme.biogeme as bio\n", - "import biogeme.database as db\n", - "from biogeme import models\n", - "from biogeme.expressions import Beta\n", - "from biogeme.expressions import Variable\n", - "import numpy as np\n", - "from enum import Enum" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data = pd.read_csv('../data/preprocessed_data.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data.user_id.value_counts()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "class SPLIT_TYPE(Enum):\n", - " INTRA_USER = 0\n", - " INTER_USER = 1\n", - "\n", - "\n", - "def get_splits(count_df: pd.DataFrame, n:int, test_size=0.2):\n", - " maxsize = int(n * test_size)\n", - "\n", - " max_threshold = int(maxsize * 1.05)\n", - " min_threshold = int(maxsize * 0.95)\n", - "\n", - " print(f\"{min_threshold=}, {max_threshold=}\")\n", - " \n", - " # Allow a 10% tolerance\n", - " def _dp(ix, curr_size, ids, cache):\n", - " \n", - " if ix >= count_df.shape[0]:\n", - " return []\n", - "\n", - " key = ix\n", - "\n", - " if key in cache:\n", - " return cache[key]\n", - "\n", - " if curr_size > max_threshold:\n", - " return []\n", - "\n", - " if min_threshold <= curr_size <= max_threshold:\n", - " return ids\n", - "\n", - " # two options - either pick the current id or skip it.\n", - " branch_a = _dp(ix, curr_size+count_df.loc[ix, 'count'], ids+[count_df.loc[ix, 'index']], cache)\n", - " branch_b = _dp(ix+1, curr_size, ids, cache)\n", - " \n", - " curr_max = []\n", - " if branch_a and len(branch_a) > 0:\n", - " curr_max = branch_a\n", - " \n", - " if branch_b and len(branch_b) > len(branch_a):\n", - " curr_max = branch_b\n", - " \n", - " cache[key] = curr_max\n", - " return cache[key]\n", - " \n", - " return _dp(0, 0, ids=list(), cache=dict())\n", - "\n", - "\n", - "def get_train_test_splits(data: pd.DataFrame, how=SPLIT_TYPE, test_ratio=0.2, shuffle=True):\n", - "\n", - " n_users = list(data.user_id.unique())\n", - " n = data.shape[0]\n", - " \n", - " if shuffle:\n", - " data = data.sample(data.shape[0]).reset_index(drop=True, inplace=False)\n", - "\n", - " if how == SPLIT_TYPE.INTER_USER:\n", - " # Make the split, ensuring that a user in one fold is not leaked into the other fold.\n", - " # Basic idea: we want to start with the users with the highest instances and place alternating users in each set.\n", - " counts = data.user_id.value_counts().reset_index(drop=False, inplace=False, name='count')\n", - "\n", - " # Now, start with the user_id at the top, and keep adding to either split.\n", - " # This can be achieved using a simple DP program to fill a knapsack with at most (test_ratio * size) entries.\n", - " test_ids = get_splits(counts, data.shape[0])\n", - "\n", - " print(\"Final test IDs: \", test_ids)\n", - " \n", - " return test_ids" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ids = get_train_test_splits(data=data, how=SPLIT_TYPE.INTER_USER, shuffle=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ids" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data.user_id.value_counts()[ids]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "a.loc[0, 'count']\n", - "a.loc[0, 'index']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "USER_MAP = {\n", - " u: i+1 for (i, u) in enumerate(data.user_id.unique())\n", - "}\n", - "\n", - "# Drop section_mode_argmax and available_modes.\n", - "data.drop(columns=[\n", - " 'section_mode_argmax', 'available_modes', 'section_distance_argmax', 'section_duration_argmax'\n", - " ], inplace=True)\n", - "\n", - "data['user_id'] = data['user_id'].apply(lambda x: USER_MAP[x])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Convert from min -> hrs\n", - "data[[c for c in data.columns if 'tt_' in c]] /= 60." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Scale currency by 1/10.\n", - "data[[c for c in data.columns if 'cost_' in c]] /= 10." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "display(data[[c for c in data.columns if 'tt_' in c]].describe())\n", - "display(data[[c for c in data.columns if 'cost_' in c]].describe())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "for c in data.columns:\n", - " if 'av_' in c:\n", - " print(f\"Feature {c} availability: {data.loc[:, c].sum()}/{data.shape[0]}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# data.drop(columns=['tt_unknown','av_unknown'], inplace=True)\n", - "# data.drop(index=data.loc[(data.chosen == 9)].index, inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "database = db.Database('emission', data)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Variable definitions.\n", - "\n", - "# ID.\n", - "USER_ID = Variable('user_id')\n", - "\n", - "# Availability.\n", - "AV_P_MICRO = Variable('av_p_micro')\n", - "AV_NO_TRIP = Variable('av_no_trip')\n", - "AV_S_CAR = Variable('av_s_car')\n", - "AV_TRANSIT = Variable('av_transit')\n", - "AV_CAR = Variable('av_car')\n", - "AV_S_MICRO = Variable('av_s_micro')\n", - "AV_RIDEHAIL = Variable('av_ridehail')\n", - "AV_WALK = Variable('av_walk')\n", - "AV_UNKNOWN = Variable('av_unknown')\n", - "\n", - "# Time.\n", - "TT_P_MICRO = Variable('tt_p_micro')\n", - "TT_NO_TRIP = Variable('tt_no_trip')\n", - "TT_S_CAR = Variable('tt_s_car')\n", - "TT_TRANSIT = Variable('tt_transit')\n", - "TT_CAR = Variable('tt_car')\n", - "TT_S_MICRO = Variable('tt_s_micro')\n", - "TT_RIDEHAIL = Variable('tt_ridehail')\n", - "TT_WALK = Variable('tt_walk')\n", - "TT_UNKNOWN = Variable('tt_unknown')\n", - "\n", - "# Cost.\n", - "CO_P_MICRO = Variable('cost_p_micro')\n", - "CO_NO_TRIP = Variable('cost_no_trip')\n", - "CO_S_CAR = Variable('cost_s_car')\n", - "CO_TRANSIT = Variable('cost_transit')\n", - "CO_CAR = Variable('cost_car')\n", - "CO_S_MICRO = Variable('cost_s_micro')\n", - "CO_RIDEHAIL = Variable('cost_ridehail')\n", - "CO_WALK = Variable('cost_walk')\n", - "CO_UNKNOWN = Variable('cost_unknown')\n", - "\n", - "# Choice.\n", - "CHOICE = Variable('chosen')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Parameters\n", - "\n", - "# Create a coefficient from time and set the initial value to 0. There is no lower bound for this coefficient,\n", - "# but we would like to constrain the ceil to 0 since we want these coefficients to denote the utiltiy function.\n", - "# Finally, we want this parameter to be updated by the optimization algorithm.\n", - "B_TIME = Beta('B_TIME', 0, None, 0, 0)\n", - "B_COST = Beta('B_COST', 0, None, 0, 0)\n", - "\n", - "# Alternative-Specific Constants.\n", - "ASC_P_MICRO = Beta('ASC_P_MICRO', 0, None, None, 0)\n", - "ASC_NO_TRIP = Beta('ASC_NO_TRIP', 0, None, None, 1)\n", - "ASC_S_CAR = Beta('ASC_S_CAR', 0, None, None, 0)\n", - "ASC_TRANSIT = Beta('ASC_TRANSIT', 0, None, None, 0)\n", - "ASC_CAR = Beta('ASC_CAR', 0, None, None, 0)\n", - "ASC_S_MICRO = Beta('ASC_S_MICRO', 0, None, None, 0)\n", - "ASC_RIDEHAIL = Beta('ASC_RIDEHAIL', 0, None, None, 0)\n", - "ASC_WALK = Beta('ASC_WALK', 0, None, None, 0)\n", - "ASC_UNKNOWN = Beta('ASC_UNKNOWN', 0, None, None, 1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Define the utility functions.\n", - "# number of alternatives = number of UFs.\n", - "\n", - "V_P_MICRO = (\n", - " ASC_P_MICRO +\n", - " B_TIME * TT_P_MICRO +\n", - " B_COST * CO_P_MICRO\n", - ")\n", - "\n", - "V_NO_TRIP = (\n", - " ASC_NO_TRIP +\n", - " B_TIME * TT_NO_TRIP +\n", - " B_COST * CO_NO_TRIP\n", - ")\n", - "\n", - "V_S_CAR = (\n", - " ASC_CAR +\n", - " B_TIME * TT_CAR +\n", - " B_COST * CO_CAR\n", - ")\n", - "\n", - "V_TRANSIT = (\n", - " ASC_TRANSIT +\n", - " B_TIME * TT_TRANSIT +\n", - " B_COST * CO_TRANSIT\n", - ")\n", - "\n", - "V_CAR = (\n", - " ASC_CAR +\n", - " B_TIME * TT_CAR +\n", - " B_COST * CO_CAR\n", - ")\n", - "\n", - "V_S_MICRO = (\n", - " ASC_S_MICRO +\n", - " B_TIME * TT_S_MICRO +\n", - " B_COST * CO_S_MICRO\n", - ")\n", - "\n", - "V_RIDEHAIL = (\n", - " ASC_RIDEHAIL +\n", - " B_TIME * TT_RIDEHAIL +\n", - " B_COST * CO_RIDEHAIL\n", - ")\n", - "\n", - "V_WALK = (\n", - " ASC_WALK +\n", - " B_TIME * TT_WALK +\n", - " B_COST * CO_WALK\n", - ")\n", - "\n", - "V_UNKNOWN = (\n", - " ASC_UNKNOWN +\n", - " B_TIME * TT_UNKNOWN +\n", - " B_COST * CO_UNKNOWN\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Map alterative to utility functions.\n", - "V = {\n", - " 1: V_P_MICRO, \n", - " 2: V_NO_TRIP,\n", - " 3: V_S_CAR, \n", - " 4: V_TRANSIT,\n", - " 5: V_CAR, \n", - " 6: V_S_MICRO,\n", - " 7: V_RIDEHAIL, \n", - " 8: V_WALK, \n", - " 9: V_UNKNOWN\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Availability.\n", - "# We have already masked-off costs and times for the instances where a particular mode is not available to the user.\n", - "# So here, we can specify the availability as 1 for every mode, saying that every other mode should be included when computing\n", - "# the logprob for a certain mode.\n", - "\n", - "av = {\n", - " 1: AV_P_MICRO,\n", - " 2: AV_NO_TRIP,\n", - " 3: AV_S_CAR,\n", - " 4: AV_TRANSIT,\n", - " 5: AV_CAR,\n", - " 6: AV_S_MICRO,\n", - " 7: AV_RIDEHAIL,\n", - " 8: AV_WALK,\n", - " 9: AV_UNKNOWN\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "logprob = models.loglogit(V, av, CHOICE)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "model = bio.BIOGEME(database, logprob)\n", - "model.modelName = 'noMaskNoTrip'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "results = model.estimate()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(results.short_summary())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "results.getEstimatedParameters()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "results.getCorrelationResults()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def generate_metrics(model: bio.BIOGEME, data: pd.DataFrame):\n", - " \"\"\"\n", - " Given a test dataframe and the trained model, generate precision, recall, F1.\n", - " \"\"\"\n", - "\n", - " pass" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "vals = model.validate(results)\n", - "\n", - "for val in vals:\n", - " print(val.shape, val.columns)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "interpreter": { - "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" - }, - "kernelspec": { - "display_name": "emission", - "language": "python", - "name": "emission" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.16" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/viz_scripts/rm_src/biogeme_modeling_train_test.ipynb b/viz_scripts/rm_src/biogeme_modeling_train_test.ipynb new file mode 100644 index 0000000..00ed265 --- /dev/null +++ b/viz_scripts/rm_src/biogeme_modeling_train_test.ipynb @@ -0,0 +1,1099 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from enum import Enum\n", + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "class SPLIT_TYPE(Enum):\n", + " INTRA_USER = 0\n", + " INTER_USER = 1\n", + " \n", + "\n", + "class SPLIT(Enum):\n", + " TRAIN = 0\n", + " TEST = 1\n", + "\n", + "\n", + "def get_splits(count_df: pd.DataFrame, n:int, test_size=0.2):\n", + " maxsize = int(n * test_size)\n", + "\n", + " max_threshold = int(maxsize * 1.05)\n", + " min_threshold = int(maxsize * 0.95)\n", + "\n", + " print(f\"{min_threshold=}, {max_threshold=}\")\n", + " \n", + " # Allow a 10% tolerance\n", + " def _dp(ix, curr_size, ids, cache):\n", + " \n", + " if ix >= count_df.shape[0]:\n", + " return []\n", + "\n", + " key = ix\n", + "\n", + " if key in cache:\n", + " return cache[key]\n", + "\n", + " if curr_size > max_threshold:\n", + " return []\n", + "\n", + " if min_threshold <= curr_size <= max_threshold:\n", + " return ids\n", + "\n", + " # two options - either pick the current id or skip it.\n", + " branch_a = _dp(ix, curr_size+count_df.loc[ix, 'count'], ids+[count_df.loc[ix, 'index']], cache)\n", + " branch_b = _dp(ix+1, curr_size, ids, cache)\n", + " \n", + " curr_max = []\n", + " if branch_a and len(branch_a) > 0:\n", + " curr_max = branch_a\n", + " \n", + " if branch_b and len(branch_b) > len(branch_a):\n", + " curr_max = branch_b\n", + " \n", + " cache[key] = curr_max\n", + " return cache[key]\n", + " \n", + " return _dp(0, 0, ids=list(), cache=dict())\n", + "\n", + "\n", + "def get_train_test_splits(data: pd.DataFrame, how=SPLIT_TYPE, test_ratio=0.2, shuffle=True):\n", + "\n", + " n_users = list(data.user_id.unique())\n", + " n = data.shape[0]\n", + " \n", + " if shuffle:\n", + " data = data.sample(data.shape[0]).reset_index(drop=True, inplace=False)\n", + "\n", + " if how == SPLIT_TYPE.INTER_USER:\n", + " # Make the split, ensuring that a user in one fold is not leaked into the other fold.\n", + " # Basic idea: we want to start with the users with the highest instances and place alternating users in each set.\n", + " counts = data.user_id.value_counts().reset_index(drop=False, inplace=False, name='count')\n", + "\n", + " # Now, start with the user_id at the top, and keep adding to either split.\n", + " # This can be achieved using a simple DP program.\n", + " test_ids = get_splits(counts, data.shape[0])\n", + " test_data = data.loc[data.user_id.isin(test_ids), :]\n", + " train_index = data.index.difference(test_data.index)\n", + " train_data = data.loc[data.user_id.isin(train_index), :]\n", + " \n", + " return train_data, test_data\n", + " \n", + " elif how == SPLIT_TYPE.INTRA_USER:\n", + " \n", + " # There are certain users with only one observation. What do we do with those?\n", + " # As per the mobilitynet modeling pipeline, we randomly assign them to either the\n", + " # training or test set.\n", + " \n", + " value_counts = data.user_id.value_counts()\n", + " single_count_ids = value_counts[value_counts == 1].index\n", + " \n", + " data_filtered = data.loc[~data.user_id.isin(single_count_ids), :].reset_index(drop=True)\n", + " data_single_counts = data.loc[data.user_id.isin(single_count_ids), :].reset_index(drop=True)\n", + " \n", + " X_tr, X_te = train_test_split(\n", + " data_filtered, test_size=test_ratio, shuffle=shuffle, stratify=data_filtered.user_id\n", + " )\n", + " \n", + " data_single_counts['assigned'] = np.random.choice(['train', 'test'], len(data_single_counts))\n", + " X_tr_merged = pd.concat(\n", + " [X_tr, data_single_counts.loc[data_single_counts.assigned == 'train', :].drop(\n", + " columns=['assigned'], inplace=False\n", + " )],\n", + " ignore_index=True, axis=0\n", + " )\n", + " \n", + " X_te_merged = pd.concat(\n", + " [X_te, data_single_counts.loc[data_single_counts.assigned == 'test', :].drop(\n", + " columns=['assigned'], inplace=False\n", + " )],\n", + " ignore_index=True, axis=0\n", + " )\n", + " \n", + " return X_tr_merged, X_te_merged\n", + " \n", + " raise NotImplementedError(\"Unknown split type\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Modeling" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import biogeme.biogeme as bio\n", + "import biogeme.database as db\n", + "from biogeme import models\n", + "from biogeme.expressions import Beta, DefineVariable\n", + "from biogeme.expressions import Variable\n", + "import numpy as np\n", + "\n", + "from sklearn.preprocessing import MinMaxScaler" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Read the data.\n", + "data = pd.read_csv('../data/preprocessed_data.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# First, we map the user IDs to ints.\n", + "\n", + "USER_MAP = {\n", + " u: i+1 for (i, u) in enumerate(data.user_id.unique())\n", + "}\n", + "\n", + "data['user_id'] = data['user_id'].apply(lambda x: USER_MAP[x])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Now, we split the data (either inter-user or intra-user split)\n", + "\n", + "# 0.98 with this approach.????\n", + "# train_data, test_data = get_train_test_splits(data=data, how=SPLIT_TYPE.INTER_USER, shuffle=True)\n", + "\n", + "# 0.965 with this approach.???\n", + "train_data, test_data = get_train_test_splits(data=data, how=SPLIT_TYPE.INTRA_USER, shuffle=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Some helper functions that will help ease redundancy in the code.\n", + "\n", + "def drop_columns(df: pd.DataFrame):\n", + " # Drop section_mode_argmax and available_modes.\n", + " return df.drop(columns=[\n", + " 'section_mode_argmax', 'available_modes', 'section_duration_argmax', 'section_distance_argmax'\n", + " ], inplace=False)\n", + "\n", + "\n", + "def scale_time(df: pd.DataFrame):\n", + " # Convert from min -> hrs\n", + " df[[c for c in df.columns if 'tt_' in c]] /= 60.\n", + " return df\n", + "\n", + "\n", + "def scale_cost(df: pd.DataFrame, split: SPLIT, scaler=None):\n", + " # Scale costs using MinMaxScaler.\n", + " costs = df[[c for c in df.columns if 'cost_' in c]].copy()\n", + " \n", + " if split == SPLIT.TRAIN and scaler is None:\n", + " scaler = MinMaxScaler()\n", + " cost_scaled = pd.DataFrame(\n", + " scaler.fit_transform(costs), \n", + " columns=['scaled_' + c for c in costs.columns], \n", + " index=costs.index\n", + " )\n", + " \n", + " elif split == SPLIT.TEST and scaler is not None:\n", + " cost_scaled = pd.DataFrame(\n", + " scaler.transform(costs), \n", + " columns=['scaled_' + c for c in costs.columns], \n", + " index=costs.index\n", + " )\n", + " \n", + " else:\n", + " raise NotImplementedError(\"Unknown split\")\n", + " \n", + " df = df.merge(right=cost_scaled, left_index=True, right_index=True)\n", + " \n", + " return df, scaler\n", + "\n", + "\n", + "def get_database(df: pd.DataFrame, split: SPLIT):\n", + " return db.Database(split.name + '_db', df)\n", + "\n", + "\n", + "def get_variables():\n", + " USER_ID = Variable('user_id')\n", + "\n", + " # Availability.\n", + " AV_P_MICRO = Variable('av_p_micro')\n", + " AV_NO_TRIP = Variable('av_no_trip')\n", + " AV_S_CAR = Variable('av_s_car')\n", + " AV_TRANSIT = Variable('av_transit')\n", + " AV_CAR = Variable('av_car')\n", + " AV_S_MICRO = Variable('av_s_micro')\n", + " AV_RIDEHAIL = Variable('av_ridehail')\n", + " AV_WALK = Variable('av_walk')\n", + " AV_UNKNOWN = Variable('av_unknown')\n", + "\n", + " # Time.\n", + " TT_P_MICRO = Variable('tt_p_micro')\n", + " TT_NO_TRIP = Variable('tt_no_trip')\n", + " TT_S_CAR = Variable('tt_s_car')\n", + " TT_TRANSIT = Variable('tt_transit')\n", + " TT_CAR = Variable('tt_car')\n", + " TT_S_MICRO = Variable('tt_s_micro')\n", + " TT_RIDEHAIL = Variable('tt_ridehail')\n", + " TT_WALK = Variable('tt_walk')\n", + " TT_UNKNOWN = Variable('tt_unknown')\n", + "\n", + " # Cost.\n", + " CO_P_MICRO = Variable('scaled_cost_p_micro')\n", + " CO_NO_TRIP = Variable('scaled_cost_no_trip')\n", + " CO_S_CAR = Variable('scaled_cost_s_car')\n", + " CO_TRANSIT = Variable('scaled_cost_transit')\n", + " CO_CAR = Variable('scaled_cost_car')\n", + " CO_S_MICRO = Variable('scaled_cost_s_micro')\n", + " CO_RIDEHAIL = Variable('scaled_cost_ridehail')\n", + " CO_WALK = Variable('scaled_cost_walk')\n", + " CO_UNKNOWN = Variable('scaled_cost_unknown')\n", + "\n", + " # Choice.\n", + " CHOICE = Variable('chosen')\n", + " \n", + " # return the filtered locals() dictionary.\n", + " return {k:v for k,v in locals().items() if not k.startswith('_')}\n", + "\n", + "\n", + "def exclude_from_db(v_dict: dict, db: db.Database):\n", + " EXCLUDE = (v_dict['CHOICE'] == 2) + (v_dict['CHOICE'] == 9) > 0\n", + " db.remove(EXCLUDE)\n", + "\n", + "\n", + "def get_params():\n", + " B_TIME = Beta('B_TIME', 0, None, 0, 0)\n", + " B_COST = Beta('B_COST', 0, None, None, 0)\n", + "\n", + " # Alternative-Specific Constants.\n", + " ASC_P_MICRO = Beta('ASC_P_MICRO', 0, None, None, 0)\n", + " ASC_NO_TRIP = Beta('ASC_NO_TRIP', 0, None, None, 0)\n", + " ASC_S_CAR = Beta('ASC_S_CAR', 0, None, None, 0)\n", + " ASC_TRANSIT = Beta('ASC_TRANSIT', 0, None, None, 0)\n", + " ASC_CAR = Beta('ASC_CAR', 0, None, None, 0)\n", + " ASC_S_MICRO = Beta('ASC_S_MICRO', 0, None, None, 0)\n", + " ASC_RIDEHAIL = Beta('ASC_RIDEHAIL', 0, None, None, 0)\n", + " ASC_WALK = Beta('ASC_WALK', 0, None, None, 0)\n", + " ASC_UNKNOWN = Beta('ASC_UNKNOWN', 0, None, None, 0)\n", + " \n", + " # Return filtered locals dict.\n", + " return {k:v for k,v in locals().items() if not k.startswith('_')}\n", + "\n", + "\n", + "def get_utility_functions(v: dict):\n", + " V_P_MICRO = (\n", + " v['ASC_P_MICRO'] +\n", + " v['B_TIME'] * v['TT_P_MICRO']\n", + " + v['B_COST'] * v['CO_P_MICRO']\n", + " )\n", + "\n", + " V_NO_TRIP = (\n", + " v['ASC_NO_TRIP'] +\n", + " v['B_TIME'] * v['TT_NO_TRIP'] +\n", + " v['B_COST'] * v['CO_NO_TRIP']\n", + " )\n", + "\n", + " V_S_CAR = (\n", + " v['ASC_S_CAR'] +\n", + " v['B_TIME'] * v['TT_S_CAR'] +\n", + " v['B_COST'] * v['CO_S_CAR']\n", + " )\n", + "\n", + " V_TRANSIT = (\n", + " v['ASC_TRANSIT'] +\n", + " v['B_TIME'] * v['TT_TRANSIT'] +\n", + " v['B_COST'] * v['CO_TRANSIT']\n", + " )\n", + "\n", + " V_CAR = (\n", + " v['ASC_CAR'] +\n", + " v['B_TIME'] * v['TT_CAR'] +\n", + " v['B_COST'] * v['CO_CAR']\n", + " )\n", + "\n", + " V_S_MICRO = (\n", + " v['ASC_S_MICRO'] +\n", + " v['B_TIME'] * v['TT_S_MICRO'] +\n", + " v['B_COST'] * v['CO_S_MICRO']\n", + " )\n", + "\n", + " V_RIDEHAIL = (\n", + " v['ASC_RIDEHAIL'] +\n", + " v['B_TIME'] * v['TT_RIDEHAIL'] +\n", + " v['B_COST'] * v['CO_RIDEHAIL']\n", + " )\n", + "\n", + " V_WALK = (\n", + " v['ASC_WALK'] +\n", + " v['B_TIME'] * v['TT_WALK']\n", + " + v['B_COST'] * v['CO_WALK']\n", + " )\n", + "\n", + " V_UNKNOWN = (\n", + " v['ASC_UNKNOWN'] +\n", + " v['B_TIME'] * v['TT_UNKNOWN'] +\n", + " v['B_COST'] * v['CO_UNKNOWN']\n", + " )\n", + " \n", + " # Remember to exclude the input argument.\n", + " return {k:v for k,v in locals().items() if not k.startswith('_') and k != 'v'}\n", + "\n", + "\n", + "def get_utility_mapping(var: dict):\n", + " # Map alterative to utility functions.\n", + " return {\n", + " 1: var['V_P_MICRO'], \n", + " 2: var['V_NO_TRIP'],\n", + " 3: var['V_S_CAR'], \n", + " 4: var['V_TRANSIT'],\n", + " 5: var['V_CAR'], \n", + " 6: var['V_S_MICRO'],\n", + " 7: var['V_RIDEHAIL'], \n", + " 8: var['V_WALK'], \n", + " 9: var['V_UNKNOWN']\n", + " }\n", + "\n", + "\n", + "def get_availability_mapping(var: dict):\n", + " return {\n", + " 1: var['AV_P_MICRO'],\n", + " 2: var['AV_NO_TRIP'],\n", + " 3: var['AV_S_CAR'],\n", + " 4: var['AV_TRANSIT'],\n", + " 5: var['AV_CAR'],\n", + " 6: var['AV_S_MICRO'],\n", + " 7: var['AV_RIDEHAIL'],\n", + " 8: var['AV_WALK'],\n", + " 9: var['AV_UNKNOWN']\n", + " }" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# First, drop columns.\n", + "\n", + "train_data = drop_columns(train_data)\n", + "\n", + "# Next, scale time.\n", + "train_data = scale_time(train_data)\n", + "\n", + "# Scale cost.\n", + "train_data, scaler = scale_cost(train_data, SPLIT.TRAIN, None)\n", + "\n", + "# get dbs.\n", + "train_db = get_database(train_data, SPLIT.TRAIN)\n", + "\n", + "# get vars.\n", + "train_vars = get_variables()\n", + "\n", + "# exclude wrong points.\n", + "exclude_from_db(train_vars, train_db)\n", + "\n", + "train_params = get_params()\n", + "train_vars.update(train_params)\n", + "\n", + "train_V = get_utility_functions(train_vars)\n", + "train_vars.update(train_V)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "V = get_utility_mapping(train_vars)\n", + "av = get_availability_mapping(train_vars)\n", + "train_logprob = models.loglogit(V, av, train_vars['CHOICE'])\n", + "\n", + "model = bio.BIOGEME(train_db, train_logprob)\n", + "model.modelName = 'linearModelCostsModel-intraUser'" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/rkulhall/miniconda3/envs/emission/lib/python3.9/site-packages/biogeme_optimization/simple_bounds.py:213: RuntimeWarning: invalid value encountered in scalar divide\n", + " rho = num / denom\n" + ] + } + ], + "source": [ + "train_results = model.estimate()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Results for model linearModelCostsModel-intraUser\n", + "Nbr of parameters:\t\t11\n", + "Sample size:\t\t\t57579\n", + "Excluded data:\t\t\t2118\n", + "Final log likelihood:\t\t-3.102707e-05\n", + "Akaike Information Criterion:\t22.00006\n", + "Bayesian Information Criterion:\t120.5701\n", + "\n" + ] + } + ], + "source": [ + "print(train_results.short_summary())" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ValueRob. Std errRob. t-testRob. p-value
ASC_CAR42.6844941.797693e+3082.374404e-3071.0
ASC_NO_TRIP-260.4133749.457320e+00-2.753564e+010.0
ASC_P_MICRO33.0861801.797693e+3081.840480e-3071.0
ASC_RIDEHAIL34.0023201.797693e+3081.891442e-3071.0
ASC_S_CAR40.6975321.797693e+3082.263875e-3071.0
ASC_S_MICRO18.9711891.797693e+3081.055307e-3071.0
ASC_TRANSIT35.8428131.797693e+3081.993823e-3071.0
ASC_UNKNOWN0.0000001.845808e-130.000000e+001.0
ASC_WALK55.1288451.797693e+3083.066644e-3071.0
B_COST-2272.7710031.214323e+02-1.871636e+010.0
B_TIME-145.5888655.280683e-01-2.757008e+020.0
\n", + "
" + ], + "text/plain": [ + " Value Rob. Std err Rob. t-test Rob. p-value\n", + "ASC_CAR 42.684494 1.797693e+308 2.374404e-307 1.0\n", + "ASC_NO_TRIP -260.413374 9.457320e+00 -2.753564e+01 0.0\n", + "ASC_P_MICRO 33.086180 1.797693e+308 1.840480e-307 1.0\n", + "ASC_RIDEHAIL 34.002320 1.797693e+308 1.891442e-307 1.0\n", + "ASC_S_CAR 40.697532 1.797693e+308 2.263875e-307 1.0\n", + "ASC_S_MICRO 18.971189 1.797693e+308 1.055307e-307 1.0\n", + "ASC_TRANSIT 35.842813 1.797693e+308 1.993823e-307 1.0\n", + "ASC_UNKNOWN 0.000000 1.845808e-13 0.000000e+00 1.0\n", + "ASC_WALK 55.128845 1.797693e+308 3.066644e-307 1.0\n", + "B_COST -2272.771003 1.214323e+02 -1.871636e+01 0.0\n", + "B_TIME -145.588865 5.280683e-01 -2.757008e+02 0.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(train_results.getEstimatedParameters())" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "def get_utility_df(results, data):\n", + "\n", + " def compute_utilities(betas, row: pd.Series):\n", + " data = row.to_dict()\n", + "\n", + " utility_p_micro = betas['ASC_P_MICRO'] + (betas['B_TIME'] * data['tt_p_micro'])\n", + " utility_no_trip = betas['ASC_NO_TRIP'] + (betas['B_TIME'] * data['tt_no_trip']) + (betas['B_COST'] * data['scaled_cost_no_trip'])\n", + " utility_s_car = betas['ASC_S_CAR'] + (betas['B_COST'] * data['scaled_cost_s_car']) + (betas['B_TIME'] * data['tt_s_car'])\n", + " utility_transit = betas['ASC_TRANSIT'] + (betas['B_COST'] * data['scaled_cost_transit']) + (betas['B_TIME'] * data['tt_transit'])\n", + " utility_car = betas['ASC_CAR'] + (betas['B_COST'] * data['scaled_cost_car'] + (betas['B_TIME'] * data['tt_car']))\n", + " utility_s_micro = betas['ASC_S_MICRO'] + (betas['B_COST'] * data['scaled_cost_s_micro']) + (betas['B_TIME'] * data['tt_s_micro'])\n", + " utility_ridehail = betas['ASC_RIDEHAIL'] + (betas['B_COST'] * data['scaled_cost_ridehail']) + (betas['B_TIME'] * data['tt_ridehail'])\n", + " utility_walk = betas['ASC_WALK'] + (betas['B_TIME'] * data['tt_walk'])\n", + " utility_unknown = betas['ASC_UNKNOWN'] + (betas['B_TIME'] * data['tt_unknown']) + (betas['B_COST'] * data['scaled_cost_unknown'])\n", + "\n", + " return {\n", + " 'utility_p_micro': utility_p_micro, 'utility_no_trip': utility_no_trip,\n", + " 'utility_s_car': utility_s_car, 'utility_transit': utility_transit,\n", + " 'utility_car': utility_car, 'utility_s_micro': utility_s_micro,\n", + " 'utility_ridehail': utility_ridehail, 'utility_walk': utility_walk, \n", + " 'utility_unknown': utility_unknown, \n", + " }\n", + " \n", + " betas = results.getBetaValues()\n", + "\n", + " u_data = data.apply(lambda x: compute_utilities(betas, x), axis=1).tolist()\n", + " return pd.DataFrame(u_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "test_data = drop_columns(test_data)\n", + "\n", + "# Next, scale time.\n", + "test_data = scale_time(test_data)\n", + "\n", + "# Scale cost.\n", + "test_data, _ = scale_cost(test_data, SPLIT.TEST, scaler)\n", + "\n", + "# get dbs.\n", + "test_db = get_database(test_data, SPLIT.TEST)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "test_utilities = get_utility_df(train_results, test_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
utility_p_microutility_no_triputility_s_carutility_transitutility_carutility_s_microutility_ridehailutility_walkutility_unknown
0-18.241189-260.41337417.827530-13.045518-6.745978-45.912237-15.428152-157.474693-47.457612
115.548732-260.41337411.62647013.06722113.613432-0.5584744.93125853.723791-26.574742
214.974088-260.413374-31.381507-42.094303-29.394545-96.365456-38.076719-325.992645-70.688496
3-21.417490-260.41337415.997066-15.500152-8.659791-50.175555-17.341965-171.714529-49.420631
4-54.925702-260.413374-3.313322-41.395187-28.849463-95.151201-37.531637-321.936932-70.129400
\n", + "
" + ], + "text/plain": [ + " utility_p_micro utility_no_trip utility_s_car utility_transit \\\n", + "0 -18.241189 -260.413374 17.827530 -13.045518 \n", + "1 15.548732 -260.413374 11.626470 13.067221 \n", + "2 14.974088 -260.413374 -31.381507 -42.094303 \n", + "3 -21.417490 -260.413374 15.997066 -15.500152 \n", + "4 -54.925702 -260.413374 -3.313322 -41.395187 \n", + "\n", + " utility_car utility_s_micro utility_ridehail utility_walk \\\n", + "0 -6.745978 -45.912237 -15.428152 -157.474693 \n", + "1 13.613432 -0.558474 4.931258 53.723791 \n", + "2 -29.394545 -96.365456 -38.076719 -325.992645 \n", + "3 -8.659791 -50.175555 -17.341965 -171.714529 \n", + "4 -28.849463 -95.151201 -37.531637 -321.936932 \n", + "\n", + " utility_unknown \n", + "0 -47.457612 \n", + "1 -26.574742 \n", + "2 -70.688496 \n", + "3 -49.420631 \n", + "4 -70.129400 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(test_utilities.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
utility_p_microutility_no_triputility_s_carutility_transitutility_carutility_s_microutility_ridehailutility_walkutility_unknown
02.165480e-161.450476e-1211.000000e+003.908458e-142.127458e-112.080515e-283.607785e-157.365664e-774.436322e-29
12.635013e-173.732181e-1375.216339e-192.203312e-183.804454e-182.663865e-246.451670e-221.000000e+001.339030e-35
21.000000e+002.516197e-1207.379397e-211.642527e-255.382046e-204.424358e-499.126982e-248.318201e-1496.269204e-38
35.637221e-179.046302e-1211.000000e+002.093784e-141.957325e-111.826401e-293.319272e-153.005315e-823.885574e-29
43.846168e-232.202248e-1121.000000e+002.892386e-178.124469e-121.304116e-401.377764e-154.202665e-1399.597242e-30
\n", + "
" + ], + "text/plain": [ + " utility_p_micro utility_no_trip utility_s_car utility_transit \\\n", + "0 2.165480e-16 1.450476e-121 1.000000e+00 3.908458e-14 \n", + "1 2.635013e-17 3.732181e-137 5.216339e-19 2.203312e-18 \n", + "2 1.000000e+00 2.516197e-120 7.379397e-21 1.642527e-25 \n", + "3 5.637221e-17 9.046302e-121 1.000000e+00 2.093784e-14 \n", + "4 3.846168e-23 2.202248e-112 1.000000e+00 2.892386e-17 \n", + "\n", + " utility_car utility_s_micro utility_ridehail utility_walk \\\n", + "0 2.127458e-11 2.080515e-28 3.607785e-15 7.365664e-77 \n", + "1 3.804454e-18 2.663865e-24 6.451670e-22 1.000000e+00 \n", + "2 5.382046e-20 4.424358e-49 9.126982e-24 8.318201e-149 \n", + "3 1.957325e-11 1.826401e-29 3.319272e-15 3.005315e-82 \n", + "4 8.124469e-12 1.304116e-40 1.377764e-15 4.202665e-139 \n", + "\n", + " utility_unknown \n", + "0 4.436322e-29 \n", + "1 1.339030e-35 \n", + "2 6.269204e-38 \n", + "3 3.885574e-29 \n", + "4 9.597242e-30 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "u_np = test_utilities.values\n", + "choice_df = np.exp(u_np)/np.sum(np.exp(u_np), axis=1, keepdims=True)\n", + "\n", + "choice_df = pd.DataFrame(choice_df, columns=test_utilities.columns)\n", + "display(choice_df.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1 2 3 4 5 8 9]\n" + ] + } + ], + "source": [ + "from sklearn.metrics import f1_score\n", + "\n", + "y_pred = np.argmax(choice_df.values, axis=1) + 1\n", + "\n", + "print(np.unique(y_pred))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.9692918926841162\n" + ] + } + ], + "source": [ + "y_true = test_data.chosen\n", + "score = f1_score(y_true, y_pred, average='weighted')\n", + "\n", + "print(score)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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ovDuu+9iwIABOHv2rPK6RqMxKC8iRsue9WyZzMq/aD02NjZKt7v+QUREBY892URE5s/kSYW1tTWqVq2Kxo0bY9asWahXrx6++OILuLq6AoBRb8KtW7eU3gtXV1ekpqYiPj7+uWVu3rxptN3bt28b9YIQEZH5YE82EVHhYfKk4lkigpSUFHh4eMDV1RU7duxQXktNTcXevXvh6+sLAGjUqBGsrKwMyty4cQMxMTFKGR8fH+h0Ohw+fFgpc+jQIeh0OqUMERGZH/ZkExEVHpam3PhHH32ETp06wd3dHYmJidi4cSN+/fVXREZGQqPRICQkBDNnzoSnpyc8PT0xc+ZM2NnZoV+/fgAArVaLwYMHY+zYsXBycoKjoyPGjRuHOnXqoF27dgCAmjVromPHjggKCsLSpUsBAEOHDoW/vz+qV69usn0nIqLn0/dkA0Djxo1x5MgRfPHFF5gwYQKApz0N5cqVU8pn1ZOdsbfi1q1bSoMSe7KJiPKOSXsqbt68icDAQFSvXh1t27bFoUOHEBkZCT8/PwDA+PHjERISghEjRqBx48b4559/sH37dtjb2yvrmDdvHl5//XX06tULzZs3h52dHbZu3QoLCwulzLp161CnTh20b98e7du3R926dbF27doC318iIso99mQTEZkvk/ZUrFix4rmvazQahIaGIjQ0NMsytra2CAsLQ1hYWJZlHB0dER4enttqEhFRAWNPNhFR4WLSpIKIiCgz+p7sGzduQKvVom7dukY92cnJyRgxYgTi4+Ph7e2daU+2paUlevXqheTkZLRt2xarV6826skODg5WZokKCAjAwoULC3ZniYheAkwqiIjI7LAnm4iocDG72Z+IiIiIiKhwYVJBRERERESqMKkgIiIiIiJVmFQQEREREZEqTCqIiIiIiEgVJhVERERERKQKkwoiIiIiIlKFSQUREREREanCpIKIiIiIiFRhUkFERERERKowqSAiIiIiIlWYVBARERERkSpMKoiIiIiISBUmFUREREREpAqTCiIiIiIiUoVJBRERERERqcKkgoiIiIiIVGFSQUREREREqjCpICIiIiIiVZhUEBERERGRKkwqiIiIiIhIFSYVRERERESkCpMKIiIiIiJShUkFERERERGpwqSCiIiIiIhUsTR1BV52t2/fhk6ny/H7tFotypYtmw81IiIiIiLKW0wq8tHt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+LF88803ythQUzt06JCMGDFC+XyuX78uI0eOFB8fH5k/f748efJErl69Kl26dJGuXbvm6XhZ/bouX74sFy9elNjYWOW1U6dOGQWNe/fuybJly+Svv/7K9bZEsg4cH374oVSuXFkmT54sN2/ezO1u5bkxY8aIp6en3L9/X0REfv/9d+nXr594eXnJ9u3bDcqa2/heMsYYUfRiBOND7hRUjCjM8UGk4GIEkwoT+u6772TMmDHy4YcfKstSUlKkZ8+e0qBBA+nWrZt8+umn8tprr4mXl5fqMXkZT77nz5+XFStWiEajkY8++khZrg8a1tbW4unpKcOGDZP69esrB5naE8KJEydk2rRpIiKyfft2cXZ2li+//FKuX78utWrVEicnJ4mMjMyy3nntu+++Ezs7O/nPf/5j1EXZt29fsbe3l02bNsmDBw9UbSclJUXu3r0ro0ePljt37sjVq1elWrVqMnToUDl37py0aNFCSpYsaXYX0m7atEnq1asnnp6eygwzIk9bM8aOHStOTk5K61zDhg2V4yQvWtD0x9oPP/wg9evXFw8PD6ldu7Z88sknShl9a5Sbm5syhjmnx2hW5aOiojINHO+99554eXmZdPiBvs4ZT/41atQwGLP8+++/S9++faV+/fry008/FXgdST3GiKIRIxgfcqcgYkRhjA8iposRTCoKkP5LTktLk6SkJKldu7ZoNBrp1q2bQbmUlBT54osvpEePHtKuXTsZPHiwcmDkxclzwoQJMmDAALl69aqsXr1arKysDILW8ePHlZNlxpO3moCl7y4XEeXH1qNHDxk7dqyIPN2v119/Xdzc3KRly5a53k5OnDp1SipUqCArVqwwWK6fRUVEpH///qLRaAwuzMqpHTt2SEhIiPz9999Kt+iYMWOkR48eytR3Q4cOlbJly8orr7wi9+/fN9kUdM+e7Pft2ycBAQFiY2Nj9DklJibK1atXJTw8XLZt26Ycm3l5QdpPP/0kJUqUkLCwMDl9+rR89tlnotFoDIY8xMTESKdOnaRq1aqSnJycq4Dx22+/yYwZM+S9996TXbt2Kd9LxsCR8Ri4detWHu1h7m3fvl0+/vhjOXTokIiI7N69W2rXri1fffWVUiYqKkr8/f3F19dXHj58aJZTG9K/GCOeKkoxgvFBnfyMEYU5PoiYJkYwqSggGX+M+m6x+Ph46dSpk1Sq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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(8, 5))\n", + "\n", + "sns.histplot(y_pred, ax=ax[0])\n", + "sns.histplot(y_true, ax=ax[1])\n", + "\n", + "labels = [\n", + " 'p_micro', \n", + " 'no_trip',\n", + " 's_car', \n", + " 'transit',\n", + " 'car', \n", + " 's_micro',\n", + " 'ridehail', \n", + " 'walk', \n", + " 'unknown'\n", + "]\n", + "\n", + "ax[0].set(\n", + " title='predicted label distribution',\n", + " xlabel='Labels',\n", + " xticks=range(1, 10),\n", + " xticklabels=labels\n", + ")\n", + "\n", + "ax[1].set(\n", + " title='true label distribution',\n", + " xlabel='Labels',\n", + " xticks=range(1, 10),\n", + " xticklabels=labels\n", + ")\n", + "\n", + "ax[0].set_xticklabels(ax[0].get_xticklabels(), rotation=45)\n", + "ax[1].set_xticklabels(ax[0].get_xticklabels(), rotation=45)\n", + "\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" + }, + "kernelspec": { + "display_name": "emission", + "language": "python", + "name": "emission" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 34d81757f9de7ef10a8a1ba2f492909407b1c5e0 Mon Sep 17 00:00:00 2001 From: Rahul Kulhalli Date: Fri, 9 Feb 2024 10:40:22 -0500 Subject: [PATCH 06/16] Added latest code --- viz_scripts/rm_src/LSTM.ipynb | 2774 +++++++++++++++++ viz_scripts/rm_src/baseline_modeling0.ipynb | 1136 +++++++ .../rm_src/cost_time_avl_preprocessing.ipynb | 1725 ++++++++-- viz_scripts/rm_src/mnl_exploration.ipynb | 935 ++++++ 4 files changed, 6305 insertions(+), 265 deletions(-) create mode 100644 viz_scripts/rm_src/LSTM.ipynb create mode 100644 viz_scripts/rm_src/baseline_modeling0.ipynb create mode 100644 viz_scripts/rm_src/mnl_exploration.ipynb diff --git a/viz_scripts/rm_src/LSTM.ipynb b/viz_scripts/rm_src/LSTM.ipynb new file mode 100644 index 0000000..fcaca73 --- /dev/null +++ b/viz_scripts/rm_src/LSTM.ipynb @@ -0,0 +1,2774 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "5f2cdb77", + "metadata": {}, + "outputs": [], + "source": [ + "import seaborn as sns\n", + "from abc import ABC, abstractmethod\n", + "from typing import List\n", + "import ast" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "0ebc3879", + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "import random\n", + "import torch.nn as nn\n", + "import torch.nn.functional as F\n", + "import torch.optim as optim\n", + "import numpy as np\n", + "import pandas as pd\n", + "from torch.utils.data import Dataset, DataLoader\n", + "from enum import Enum\n", + "import matplotlib.pyplot as plt\n", + "from torch.nn.utils.rnn import pad_sequence\n", + "from torch.nn.utils.rnn import pack_padded_sequence, pad_packed_sequence\n", + "\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.metrics import r2_score\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "a2ace37f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Global experiment flags and variables.\n", + "SEED = 19348\n", + "TARGETS = ['p_micro', 'no_trip', 's_car', 'transit', 'car', 's_micro', 'ridehail', 'walk', 'unknown']\n", + "\n", + "# Set the Numpy seed too.\n", + "random.seed(SEED)\n", + "np.random.seed(SEED)\n", + "torch.manual_seed(SEED)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "9addd580", + "metadata": {}, + "outputs": [], + "source": [ + "# lstm = nn.LSTM(12, 64, batch_first=True, bidirectional=True, bias=False, num_layers=3)\n", + "# inp = torch.FloatTensor(8, 3, 12).fill_(0.)\n", + "# out, _ = lstm(inp)\n", + "\n", + "# print(out.size())" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "889bd770", + "metadata": {}, + "outputs": [], + "source": [ + "class SPLIT_TYPE(Enum):\n", + " INTRA_USER = 0\n", + " INTER_USER = 1\n", + " TARGET = 2\n", + " MIXED = 3\n", + " \n", + "\n", + "class SPLIT(Enum):\n", + " TRAIN = 0\n", + " TEST = 1\n", + "\n", + "\n", + "def get_train_test_splits(data: pd.DataFrame, how=SPLIT_TYPE, test_ratio=0.2, shuffle=True):\n", + "\n", + " n_users = list(data.user_id.unique())\n", + " n = data.shape[0]\n", + " \n", + " if shuffle:\n", + " data = data.sample(data.shape[0], random_state=SEED).reset_index(drop=True, inplace=False)\n", + " \n", + " # There are certain users with only one observation. What do we do with those?\n", + " # As per the mobilitynet modeling pipeline, we randomly assign them to either the\n", + " # training or test set.\n", + "\n", + " value_counts = data.user_id.value_counts()\n", + " single_count_ids = value_counts[value_counts == 1].index\n", + "\n", + " data_filtered = data.loc[~data.user_id.isin(single_count_ids), :].reset_index(drop=True)\n", + " data_single_counts = data.loc[data.user_id.isin(single_count_ids), :].reset_index(drop=True)\n", + "\n", + " X_tr, X_te = train_test_split(\n", + " data_filtered, test_size=test_ratio, shuffle=shuffle, stratify=data_filtered.user_id,\n", + " random_state=SEED\n", + " )\n", + "\n", + " data_single_counts['assigned'] = np.random.choice(['train', 'test'], len(data_single_counts))\n", + " X_tr_merged = pd.concat(\n", + " [X_tr, data_single_counts.loc[data_single_counts.assigned == 'train', :].drop(\n", + " columns=['assigned'], inplace=False\n", + " )],\n", + " ignore_index=True, axis=0\n", + " )\n", + "\n", + " X_te_merged = pd.concat(\n", + " [X_te, data_single_counts.loc[data_single_counts.assigned == 'test', :].drop(\n", + " columns=['assigned'], inplace=False\n", + " )],\n", + " ignore_index=True, axis=0\n", + " )\n", + "\n", + " return X_tr_merged, X_te_merged" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "6cfa847a", + "metadata": {}, + "outputs": [], + "source": [ + "# RM_weather contains more samples because data is not processed.\n", + "# _Fix contains lesser samples, but is cleaned using heuristics.\n", + "\n", + "data = pd.read_csv('../data/FULL_preprocessed_data_RM_weather.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "8fa73ebc", + "metadata": {}, + "outputs": [], + "source": [ + "class DataPipeline(ABC):\n", + " \n", + " def __init__(self, df: pd.DataFrame):\n", + " self.df = df\n", + " \n", + " # Establish hooks.\n", + " @abstractmethod\n", + " def remove_negative_sections(self):\n", + " raise NotImplementedError()\n", + " \n", + " @abstractmethod\n", + " def get_mode_outliers(self):\n", + " raise NotImplementedError()\n", + " \n", + " @abstractmethod\n", + " def drop_outliers(self, outliers: List):\n", + " raise NotImplementedError()\n", + " \n", + " @abstractmethod\n", + " def compute_mph_feature(self):\n", + " raise NotImplementedError()\n", + " \n", + " def run_pipeline(self):\n", + " self.remove_negative_sections()\n", + " outlier_ix = self.get_mode_outliers()\n", + " self.drop_outliers(list(outlier_ix))\n", + " return self.compute_mph_feature()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "d8e129c8", + "metadata": {}, + "outputs": [], + "source": [ + "class SectionDataPipeline(DataPipeline):\n", + " def __init__(self, df: pd.DataFrame):\n", + " super().__init__(df)\n", + " \n", + " def remove_negative_sections(self):\n", + " f_rows = list()\n", + " for _, row in self.df[['section_durations', 'section_distances', 'section_modes']].iterrows():\n", + "\n", + " dist = np.array(ast.literal_eval(row['section_distances']))\n", + " dur = np.array(ast.literal_eval(row['section_durations']))\n", + " modes = np.array(ast.literal_eval(row['section_modes']))\n", + "\n", + " assert len(dist) == len(dur) == len(modes)\n", + "\n", + " mask = np.logical_and(dist > 0, dur > 0)\n", + "\n", + " f_dist, f_dur, f_modes = dist[mask], dur[mask], modes[mask]\n", + "\n", + " assert len(f_dist) == len(f_dur) == len(f_modes)\n", + "\n", + " f_rows.append({\n", + " # scale to miles.\n", + " 'distances': f_dist * 0.00062,\n", + " # Scale to hours.\n", + " 'durations': f_dur / 3600.,\n", + " 'modes': f_modes\n", + " })\n", + "\n", + " parsed = pd.DataFrame(f_rows, index=data.index)\n", + "\n", + " self.df.drop(columns=['section_durations', 'section_distances', 'section_modes'], inplace=True)\n", + " self.df = pd.concat([self.df, parsed], axis=1)\n", + " \n", + " def get_mode_outliers(self):\n", + " \n", + " def compute_outliers(mode: str):\n", + " x = self.df[self.df.modes.str.contains(mode, regex=False)]\n", + " outlier_ix = []\n", + " dist, dur = np.array([]), np.array([])\n", + "\n", + " # First, iterate to compute the 99th percentile for the mode.\n", + " for row_ix, row in x.iterrows():\n", + " ix = np.where(row['modes'] == mode)[0]\n", + " dist = np.append(dist, row['distances'][ix])\n", + " dur = np.append(dur, row['durations'][ix])\n", + "\n", + " dist_99p = np.percentile(dist, 99)\n", + " dur_99p = np.percentile(dur, 99)\n", + "\n", + " print(f\"99th Percentile for {mode}:\\n\\tdistance = {dist_99p}\\n\\tduration = {dur_99p}\")\n", + "\n", + " # Iterate again.\n", + " for row_ix, row in x.iterrows():\n", + " ix = np.where(row['modes'] == mode)[0]\n", + " row_distances = row['distances'][ix]\n", + " row_durations = row['durations'][ix]\n", + "\n", + " if np.any(np.logical_or(row_distances > dist_99p, row_durations > dur_99p)):\n", + " outlier_ix.append(row_ix)\n", + "\n", + " print(\"Number of candidate rows for deletion: \", len(outlier_ix))\n", + "\n", + " return outlier_ix\n", + " \n", + " all_bad_ix = set()\n", + " for mode in ['walking', 'bicycling', 'train', 'bus', 'car']:\n", + " bad_mode_ix = compute_outliers(mode)\n", + " all_bad_ix = all_bad_ix.union(set(bad_mode_ix))\n", + " print(50*'=')\n", + " \n", + " print(f\"After analysis, {len(all_bad_ix)} total unique rows will be dropped.\")\n", + " \n", + " return all_bad_ix\n", + " \n", + " def drop_outliers(self, outliers: List):\n", + " self.df.drop(index=outliers, inplace=True)\n", + " \n", + " def compute_mph_feature(self):\n", + " self.df['mph'] = self.df['distances']/self.df['durations']\n", + " return self.df" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "38af3aad", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "99th Percentile for walking:\n", + "\tdistance = 4.305297486707881\n", + "\tduration = 2.9548623706234824\n", + "Number of candidate rows for deletion: 765\n", + "==================================================\n", + "99th Percentile for bicycling:\n", + "\tdistance = 8.82048257219703\n", + "\tduration = 0.9153121545202207\n", + "Number of candidate rows for deletion: 228\n", + "==================================================\n", + "99th Percentile for train:\n", + "\tdistance = 16.629460194644828\n", + "\tduration = 0.7250753228180938\n", + "Number of candidate rows for deletion: 2\n", + "==================================================\n", + "99th Percentile for bus:\n", + "\tdistance = 7.551944729816364\n", + "\tduration = 0.7316025587360053\n", + "Number of candidate rows for deletion: 12\n", + "==================================================\n", + "99th Percentile for car:\n", + "\tdistance = 40.548478579524726\n", + "\tduration = 1.2145738347887987\n", + "Number of candidate rows for deletion: 721\n", + "==================================================\n", + "After analysis, 1718 total unique rows will be dropped.\n" + ] + } + ], + "source": [ + "pipeline = SectionDataPipeline(data)\n", + "cleaned = pipeline.run_pipeline()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "81151c12", + "metadata": {}, + "outputs": [], + "source": [ + "def preprocess(df: pd.DataFrame):\n", + " \n", + " # Offset by -1 for torch.\n", + " df.chosen -= 1\n", + " \n", + "# df['start_fmt_time'] = pd.to_datetime(df['start_fmt_time'], utc=True)\n", + "# df['start_fmt_time'] = df['start_fmt_time'].dt.tz_convert('America/Denver')\n", + " \n", + " df.rename(\n", + " columns={'start_local_dt_weekday': 'start:DOW', 'end_local_dt_weekday': 'end:DOW'},\n", + " inplace=True\n", + " )\n", + "\n", + " df.n_working_residents = df.n_working_residents.apply(lambda x: 0 if x < 0 else x)\n", + "\n", + " # Fix some age preprocessing issues.\n", + " df.age = df.age.apply(lambda x: x if x < 100 else 2024-x)\n", + " \n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "0d4d6b76", + "metadata": {}, + "outputs": [], + "source": [ + "def get_duration_estimate(df: pd.DataFrame, dset: SPLIT, model_dict: dict):\n", + " \n", + " X_features = ['section_distance_argmax', 'age']\n", + " \n", + " if 'mph' in df.columns:\n", + " X_features += ['mph']\n", + " \n", + " if dset == SPLIT.TRAIN and model_dict is None:\n", + " model_dict = dict()\n", + " \n", + " if dset == SPLIT.TEST and model_dict is None:\n", + " raise AttributeError(\"Expected model dict for testing.\")\n", + " \n", + " if dset == SPLIT.TRAIN:\n", + " for section_mode in df.section_mode_argmax.unique():\n", + " section_data = df.loc[df.section_mode_argmax == section_mode, :]\n", + " if section_mode not in model_dict:\n", + " model_dict[section_mode] = dict()\n", + "\n", + " model = LinearRegression(fit_intercept=True)\n", + "\n", + " X = section_data[\n", + " X_features\n", + " ]\n", + " Y = section_data[['section_duration_argmax']]\n", + "\n", + " model.fit(X, Y.values.ravel())\n", + "\n", + " r2 = r2_score(y_pred=model.predict(X), y_true=Y.values.ravel())\n", + " print(f\"Train R2 for {section_mode}: {r2}\")\n", + "\n", + " model_dict[section_mode]['model'] = model\n", + " \n", + " elif dset == SPLIT.TEST:\n", + " for section_mode in df.section_mode_argmax.unique():\n", + " section_data = df.loc[df.section_mode_argmax == section_mode, :]\n", + " X = section_data[\n", + " X_features\n", + " ]\n", + " \n", + " Y = section_data[['section_duration_argmax']]\n", + " \n", + " y_pred = model_dict[section_mode]['model'].predict(X)\n", + " r2 = r2_score(y_pred=y_pred, y_true=Y.values.ravel())\n", + " print(f\"Test R2 for {section_mode}: {r2}\")\n", + " \n", + " # Create the new columns for the duration.\n", + " df[TARGETS] = 0\n", + " df['temp'] = 0\n", + " \n", + " for section in df.section_mode_argmax.unique():\n", + " X_section = df.loc[df.section_mode_argmax == section, X_features]\n", + " \n", + " # broadcast to all columns.\n", + " df.loc[df.section_mode_argmax == section, 'temp'] = model_dict[section]['model'].predict(X_section)\n", + " \n", + " for c in TARGETS:\n", + " df[c] = df['av_' + c] * df['temp']\n", + " \n", + " df.drop(columns=['temp'], inplace=True)\n", + " \n", + " df.rename(columns=dict([(x, 'tt_'+x) for x in TARGETS]), inplace=True)\n", + " \n", + " # return model_dict, result_df\n", + " return model_dict, df" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "7b34ced0", + "metadata": {}, + "outputs": [], + "source": [ + "def drop_columns(df: pd.DataFrame):\n", + " u_time_features = [\n", + " 'start:year', 'start:month', 'start:day',\n", + " 'start:hour', 'end_fmt_time', 'end:year',\n", + " 'end:month', 'end:day', 'end:hour', 'end:n_days_in_month', \n", + " 'start:sin_DOM', 'start:sin_MOY', 'start:cos_MOY', 'start:cos_DOM',\n", + " 'end:sin_DOM', 'end:sin_MOY', 'end:cos_DOM', 'end:cos_MOY', 'start:n_days_in_month',\n", + " 'start_local_dt_weekday', 'end_local_dt_weekday', 'start_fmt_time'\n", + " ]\n", + "\n", + " u_user_features = [\n", + " '_id', 'original_user_id', 'gender', 'birth_year', 'user_id'\n", + " ]\n", + "\n", + " u_trip_features = [\n", + " 'cleaned_trip', 'Mode_confirm', 'available_modes', 'duration', 'start_loc',\n", + " 'end_loc', 'section_locations_argmax', 'section_coordinates_argmax',\n", + " 'start_lat', 'start_lng', 'end_lat', 'end_lng', 'section_duration_argmax',\n", + " 'section_distance_argmax', 'section_mode_argmax'\n", + " ]\n", + "\n", + " # Drop section_mode_argmax and available_modes.\n", + " return df.drop(\n", + " columns=u_time_features + u_user_features + u_trip_features, \n", + " inplace=False\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "904fa4dc", + "metadata": {}, + "outputs": [], + "source": [ + "train_df, test_df = get_train_test_splits(data=cleaned, how=SPLIT_TYPE.INTRA_USER, shuffle=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "da30bcdc", + "metadata": {}, + "outputs": [], + "source": [ + "train_df, test_df = preprocess(drop_columns(train_df)), preprocess(drop_columns(test_df))" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "78683828", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(train_df.columns == test_df.columns).all()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "cbb81799", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import StandardScaler\n", + "\n", + "def normalize_data(\n", + " df: pd.DataFrame, split: SPLIT, section_scalers: dict = None, scaler: StandardScaler = None\n", + "):\n", + " # We start by normalizing the temporal features first. This has to be done carefully.\n", + " \n", + " if split == SPLIT.TRAIN:\n", + " \n", + " mode_dict = dict()\n", + "\n", + " for _, row in df[['modes', 'durations', 'distances', 'mph']].iterrows():\n", + "\n", + " for (mode, duration, distance, mph) in zip(\n", + " row['modes'], row['durations'], row['distances'], row['mph']\n", + " ):\n", + " if mode not in mode_dict:\n", + " mode_dict[mode] = {\n", + " 'duration': np.array([duration]), \n", + " 'distance': np.array([distance]),\n", + " 'mph': np.array([mph])\n", + " }\n", + " else:\n", + " mode_dict[mode] = {\n", + " 'duration': np.append(mode_dict[mode]['duration'], duration),\n", + " 'distance': np.append(mode_dict[mode]['distance'], distance),\n", + " 'mph': np.append(mode_dict[mode]['mph'], mph)\n", + " }\n", + "\n", + " section_scalers = dict()\n", + "\n", + " for mode in mode_dict.keys():\n", + " # Fit, but don't transform. Instead, get the mean and scale.\n", + " section_scalers[mode] = {'duration': dict(), 'distance': dict(), 'mph': dict()}\n", + " \n", + " section_scalers[mode]['duration']['mean'] = mode_dict[mode]['duration'].mean()\n", + " section_scalers[mode]['duration']['std'] = mode_dict[mode]['duration'].std()\n", + " \n", + " section_scalers[mode]['distance']['mean'] = mode_dict[mode]['distance'].mean()\n", + " section_scalers[mode]['distance']['std'] = mode_dict[mode]['distance'].std()\n", + " \n", + " section_scalers[mode]['mph']['mean'] = mode_dict[mode]['mph'].mean()\n", + " section_scalers[mode]['mph']['std'] = mode_dict[mode]['mph'].std()\n", + " \n", + " # Normalize the temporal features.\n", + " rows = []\n", + " for _, row in df.iterrows():\n", + " row_dict = row.to_dict()\n", + " for ix, mode in enumerate(row_dict['modes']):\n", + " row_dict['durations'][ix] = (\n", + " row_dict['durations'][ix] - section_scalers[mode]['duration']['mean']\n", + " )/section_scalers[mode]['duration']['std']\n", + " \n", + " row_dict['distances'][ix] = (\n", + " row_dict['distances'][ix] - section_scalers[mode]['distance']['mean']\n", + " )/section_scalers[mode]['distance']['std']\n", + " \n", + " row_dict['mph'][ix] = (\n", + " row_dict['mph'][ix] - section_scalers[mode]['mph']['mean']\n", + " )/section_scalers[mode]['mph']['std']\n", + " \n", + " rows.append(row_dict)\n", + " \n", + " df = pd.DataFrame(rows)\n", + " \n", + " # -----------------------------------------\n", + " # Now, we start with the regular features.\n", + " # -----------------------------------------\n", + " \n", + " required_features = [\n", + " 'income_category', 'n_motor_vehicles', 'n_residence_members', 'n_residents_u18',\n", + " 'n_residents_with_license', 'distance_miles', 'age', 'n_working_residents', \n", + " 'start:sin_HOD', 'start:cos_HOD', 'end:sin_HOD', 'end:cos_HOD', \n", + " 'temperature_2m (°F)', 'relative_humidity_2m (%)', 'dew_point_2m (°F)', \n", + " 'rain (inch)', 'snowfall (inch)', 'cloud_cover (%)', 'wind_speed_10m (mp/h)',\n", + " 'wind_gusts_10m (mp/h)', 'cost_p_micro', 'cost_no_trip', 'cost_s_car', \n", + " 'cost_transit', 'cost_car', 'cost_s_micro', 'cost_ridehail', 'cost_walk', 'cost_unknown',\n", + " ]\n", + " \n", + " if split == SPLIT.TRAIN:\n", + " scaler = StandardScaler()\n", + " \n", + " t_df = pd.DataFrame(\n", + " scaler.fit_transform(df[required_features]),\n", + " columns=required_features,\n", + " index=df.index\n", + " )\n", + " else:\n", + " t_df = pd.DataFrame(\n", + " scaler.transform(df[required_features]),\n", + " columns=required_features,\n", + " index=df.index\n", + " )\n", + " \n", + " df.drop(columns=required_features, inplace=True)\n", + " \n", + " return pd.concat([df, t_df], axis=1), section_scalers, scaler" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "9b2ab162", + "metadata": {}, + "outputs": [], + "source": [ + "train_df, section_scaler, scaler = normalize_data(train_df, SPLIT.TRAIN)\n", + "test_df, _, _ = normalize_data(test_df, SPLIT.TEST, section_scaler, scaler)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "df774dd9", + "metadata": {}, + "outputs": [], + "source": [ + "train_df.reset_index(drop=True, inplace=True)\n", + "test_df.reset_index(drop=True, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "5ce6bafe", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Final features for training:\n", + "['is_student', 'is_overnight_trip', 'is_male', 'mph', 'chosen', 'av_no_trip', 'av_s_car', 'av_p_micro', 'av_walk', 'av_s_micro', 'av_transit', 'av_ridehail', 'av_car', 'av_unknown', 'distances', 'durations', 'modes', 'income_category', 'n_motor_vehicles', 'n_residence_members', 'n_residents_u18', 'n_residents_with_license', 'distance_miles', 'age', 'n_working_residents', 'start:sin_HOD', 'start:cos_HOD', 'end:sin_HOD', 'end:cos_HOD', 'temperature_2m (°F)', 'relative_humidity_2m (%)', 'dew_point_2m (°F)', 'rain (inch)', 'snowfall (inch)', 'cloud_cover (%)', 'wind_speed_10m (mp/h)', 'wind_gusts_10m (mp/h)', 'cost_p_micro', 'cost_no_trip', 'cost_s_car', 'cost_transit', 'cost_car', 'cost_s_micro', 'cost_ridehail', 'cost_walk', 'cost_unknown']\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
is_studentis_overnight_tripis_malemphchosenav_no_tripav_s_carav_p_microav_walkav_s_micro...wind_gusts_10m (mp/h)cost_p_microcost_no_tripcost_s_carcost_transitcost_carcost_s_microcost_ridehailcost_walkcost_unknown
000.01[-0.6226942218711282]800010...-1.1181550.00.0-0.614415-0.286713-0.550431-0.431234-0.5924650.00.0
100.01[-0.32572174462565845]801100...-0.5987570.00.00.102862-0.5290270.167956-0.4312340.1285160.00.0
200.01[1.2722796444295434]101110...0.0465550.00.0-0.409306-0.304397-0.550431-0.431234-0.3862960.00.0
300.01[1.785796573896156]200100...1.3057020.00.0-0.614415-0.529027-0.550431-0.431234-0.5924650.00.0
410.00[-0.12709085963426053, -0.8967034453081592]101110...-0.4571040.00.0-0.177887-0.529027-0.113227-0.431234-0.1536820.00.0
\n", + "

5 rows × 46 columns

\n", + "
" + ], + "text/plain": [ + " is_student is_overnight_trip is_male \\\n", + "0 0 0.0 1 \n", + "1 0 0.0 1 \n", + "2 0 0.0 1 \n", + "3 0 0.0 1 \n", + "4 1 0.0 0 \n", + "\n", + " mph chosen av_no_trip av_s_car \\\n", + "0 [-0.6226942218711282] 8 0 0 \n", + "1 [-0.32572174462565845] 8 0 1 \n", + "2 [1.2722796444295434] 1 0 1 \n", + "3 [1.785796573896156] 2 0 0 \n", + "4 [-0.12709085963426053, -0.8967034453081592] 1 0 1 \n", + "\n", + " av_p_micro av_walk av_s_micro ... wind_gusts_10m (mp/h) cost_p_micro \\\n", + "0 0 1 0 ... -1.118155 0.0 \n", + "1 1 0 0 ... -0.598757 0.0 \n", + "2 1 1 0 ... 0.046555 0.0 \n", + "3 1 0 0 ... 1.305702 0.0 \n", + "4 1 1 0 ... -0.457104 0.0 \n", + "\n", + " cost_no_trip cost_s_car cost_transit cost_car cost_s_micro \\\n", + "0 0.0 -0.614415 -0.286713 -0.550431 -0.431234 \n", + "1 0.0 0.102862 -0.529027 0.167956 -0.431234 \n", + "2 0.0 -0.409306 -0.304397 -0.550431 -0.431234 \n", + "3 0.0 -0.614415 -0.529027 -0.550431 -0.431234 \n", + "4 0.0 -0.177887 -0.529027 -0.113227 -0.431234 \n", + "\n", + " cost_ridehail cost_walk cost_unknown \n", + "0 -0.592465 0.0 0.0 \n", + "1 0.128516 0.0 0.0 \n", + "2 -0.386296 0.0 0.0 \n", + "3 -0.592465 0.0 0.0 \n", + "4 -0.153682 0.0 0.0 \n", + "\n", + "[5 rows x 46 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print(f\"Final features for training:\\n{list(train_df.columns)}\")\n", + "display(train_df.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "97a8d6b2", + "metadata": {}, + "outputs": [], + "source": [ + "class CustomDataset(Dataset):\n", + " def __init__(self, df: pd.DataFrame):\n", + " self.seq_df = df[['modes', 'durations', 'distances', 'mph']]\n", + " self.chosen = df['chosen']\n", + " self.features = df.drop(columns=[\n", + " 'modes', 'durations', 'distances', 'mph', 'chosen', 'distance_miles'\n", + " ])\n", + " \n", + " # Start from 1 so that 0 becomes padding.\n", + " self.modes_dict = {\n", + " m: ix+1 for (ix, m) in enumerate(['walking', 'car', 'train', 'bus', 'bicycling', 'no_sensed'])\n", + " }\n", + " \n", + " def __len__(self):\n", + " return self.seq_df.shape[0]\n", + " \n", + " def __getitem__(self, ix):\n", + " \n", + " t_modes = list()\n", + " t_metrics = list()\n", + " \n", + " chosen = self.chosen[ix]\n", + " seq = self.seq_df.loc[ix, :]\n", + " \n", + " # OHE the target.\n", + " y = F.one_hot(torch.tensor(chosen), num_classes=9)\n", + " \n", + " # Parse the sequence.\n", + " for seq_ix in range(len(seq['modes'])):\n", + " mode_ix = self.modes_dict[seq['modes'][seq_ix]]\n", + " \n", + " t_modes.append(torch.tensor(mode_ix))\n", + " \n", + " # distances, durations.\n", + " seq_vector = torch.cat(\n", + " [\n", + " torch.tensor([seq['durations'][seq_ix]]), \n", + " torch.tensor([seq['distances'][seq_ix]]), \n", + " torch.tensor([seq['mph'][seq_ix]])\n", + " ], dim=-1\n", + " )\n", + " \n", + " t_metrics.append(seq_vector)\n", + " \n", + " # Flat feature vector.\n", + " features = torch.tensor(self.features.loc[ix, :].values)\n", + " \n", + " return [torch.stack(t_modes).long(), torch.stack(t_metrics), features], y" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "02b78758", + "metadata": {}, + "outputs": [], + "source": [ + "train_dset = CustomDataset(train_df)\n", + "test_dset = CustomDataset(test_df)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "627b6fa4", + "metadata": {}, + "outputs": [], + "source": [ + "def collate(batch):\n", + " X, y = zip(*batch)\n", + " \n", + " seq_modes = [x[0] for x in X]\n", + " seq_metrics = [x[1] for x in X]\n", + " features = [x[-1] for x in X]\n", + "\n", + " padded_seq = pad_sequence([s for s in seq_modes], batch_first=True)\n", + " padded_metrics = pad_sequence([m for m in seq_metrics], batch_first=True)\n", + " lengths = [len(seq) for seq in seq_modes]\n", + " stacked_features = torch.stack(features)\n", + "\n", + " return (padded_seq, padded_metrics, stacked_features), torch.stack(y), lengths" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "5ca34681", + "metadata": {}, + "outputs": [], + "source": [ + "train_loader = DataLoader(train_dset, batch_size=16, collate_fn=collate, shuffle=True, drop_last=False)\n", + "test_loader = DataLoader(test_dset, batch_size=8, collate_fn=collate, shuffle=False, drop_last=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "31ca5ab1", + "metadata": {}, + "outputs": [], + "source": [ + "(modes, metrics, features), sY1, lX = next(iter(train_loader))" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "9eb5a93a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(torch.Size([16, 6, 3]), torch.Size([16, 6]))" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "metrics.size(), modes.size()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "a0abf380", + "metadata": {}, + "outputs": [], + "source": [ + "# Set to 0 for no dropout.\n", + "DROPOUT = 0." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "48871ea4", + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "\n", + "def new_gelu(x):\n", + " \"\"\"\n", + " Taken from OpenAI GPT-2 implementation.\n", + " \"\"\"\n", + " return 0.5 * x * (1.0 + torch.tanh(math.sqrt(2.0 / math.pi) * (x + 0.044715 * torch.pow(x, 3.0))))\n", + "\n", + "\n", + "class DilatedBlock(nn.Module):\n", + " def __init__(self, n_c):\n", + " super(DilatedBlock, self).__init__()\n", + " \n", + " self.block = nn.Sequential(\n", + " nn.Linear(n_c, 4*n_c, bias=False),\n", + " nn.ELU(),\n", + " nn.Linear(4*n_c, n_c, bias=False),\n", + " nn.Dropout(DROPOUT)\n", + " )\n", + " \n", + " def forward(self, x):\n", + " return self.block(x)\n", + "\n", + " \n", + "class SelfAttention(nn.Module):\n", + " def __init__(self, n_features, head_size):\n", + " super(SelfAttention, self).__init__()\n", + " # in: (B, F, 64)\n", + " self.k = nn.Linear(n_features, head_size, bias=False)\n", + " self.q = nn.Linear(n_features, head_size, bias=False)\n", + " self.v = nn.Linear(n_features, head_size, bias=False)\n", + " self.dpt = nn.Dropout(DROPOUT)\n", + " self.sqrt_d = torch.sqrt(torch.tensor(head_size))\n", + " \n", + " def forward(self, x):\n", + " k = self.k(x)\n", + " q = self.q(x)\n", + " v = self.v(x)\n", + " \n", + " # Q.K.t\n", + " dot = torch.bmm(q, k.permute(0, 2, 1))\n", + " \n", + " # normalize dot product.\n", + " dot /= self.sqrt_d\n", + " \n", + " # softmax over -1 dim.\n", + " softmax = self.dpt(torch.softmax(dot, dim=-1))\n", + " \n", + " # dot with values. (B, F, F) * (B, F, x) = (B, F, x)\n", + " return torch.bmm(softmax, v)\n", + " \n", + "\n", + "class MultiHeadAttention(nn.Module):\n", + " def __init__(self, n_heads, n_dim):\n", + " super(MultiHeadAttention, self).__init__()\n", + " \n", + " # 64 dims, 4 heads => 16 dims per head.\n", + " head_size = n_dim//n_heads\n", + " self.heads = nn.ModuleList([SelfAttention(n_dim, head_size) for _ in range(n_heads)])\n", + " self.proj = nn.Linear(n_dim, n_dim, bias=False)\n", + " \n", + " def forward(self, x):\n", + " # x is (B, seq, n_dim)\n", + " cat = torch.cat([head(x) for head in self.heads], dim=-1)\n", + " return self.proj(cat)\n", + "\n", + "\n", + "class Block(nn.Module):\n", + " def __init__(self, n_c):\n", + " super(Block, self).__init__()\n", + " \n", + " self.sa = MultiHeadAttention(n_heads=4, n_dim=n_c)\n", + " self.dilated = DilatedBlock(n_c)\n", + " self.ln1 = nn.LayerNorm(n_c)\n", + " self.ln2 = nn.LayerNorm(n_c)\n", + " \n", + " \n", + " def forward(self, x):\n", + " x = x + self.sa(self.ln1(x))\n", + " x = x + self.dilated(self.ln2(x))\n", + " return x\n", + " \n", + "\n", + "class LSTMLayer(nn.Module):\n", + " def __init__(\n", + " self, input_size: int, hidden_size: int, \n", + " output_size: int, n_lstm_layers: int = 1\n", + " ):\n", + " super(LSTMLayer, self).__init__()\n", + " \n", + " self.hidden_size = hidden_size\n", + " self.embedding = nn.Embedding(7, 4, padding_idx=0)\n", + " self.dpt = nn.Dropout(DROPOUT)\n", + " \n", + " self.lstm = nn.LSTM(\n", + " input_size=input_size + 4,\n", + " hidden_size=hidden_size,\n", + " bias=False,\n", + " bidirectional=True,\n", + " batch_first=True,\n", + " num_layers=n_lstm_layers\n", + " )\n", + " \n", + " def forward(self, modes, x, lengths):\n", + " mode_emb = self.embedding(modes)\n", + " x = torch.cat([x, mode_emb], dim=-1)\n", + " \n", + " packed = pack_padded_sequence(x, lengths, batch_first=True, enforce_sorted=False)\n", + " out, _ = self.lstm(packed)\n", + " unpacked, _ = pad_packed_sequence(out, batch_first=True)\n", + " \n", + " return self.dpt(unpacked)\n", + "\n", + "\n", + "class Model(nn.Module):\n", + " def __init__(\n", + " self, input_size: int, hidden_size: int, output_size: int, \n", + " n_features: int, n_lstm_layers: int = 1, **kwargs\n", + " ):\n", + " super(Model, self).__init__()\n", + " \n", + " block1_ip_dim = hidden_size*2\n", + " block2_ip_dim = (hidden_size*2) + n_features\n", + " \n", + " self.lstm = LSTMLayer(\n", + " input_size, hidden_size, \n", + " output_size, n_lstm_layers\n", + " )\n", + " \n", + " self.block_l1 = nn.ModuleList([Block(block1_ip_dim) for _ in range(kwargs['l1_blocks'])])\n", + " self.block_l2 = nn.ModuleList([Block(block2_ip_dim) for _ in range(kwargs['l2_blocks'])])\n", + " self.final_proj = nn.Linear(block2_ip_dim, output_size, bias=True)\n", + " \n", + " def forward(self, modes, x, features, lengths):\n", + " \n", + " b = x.size(0)\n", + " \n", + " # Out = (B, seq, hidden*2)\n", + " lstm_out = self.lstm(modes, x, lengths)\n", + " \n", + " # Pass the raw output through the blocks.\n", + " for module in self.block_l1:\n", + " lstm_out = module(lstm_out)\n", + " \n", + " features_rshp = features.unsqueeze(1).expand(b, lstm_out.size(1), -1)\n", + " \n", + " # Out = (B, seq, n+40)\n", + " cat = torch.cat([lstm_out, features_rshp], dim=-1)\n", + " \n", + " for module in self.block_l2:\n", + " cat = module(cat)\n", + " \n", + " # (8, 3, 104) -> (B, 104)\n", + " # flattened = cat.view(b, -1)\n", + " \n", + " # proj = self.runtime_ffw(flattened.size(-1), 64)(flattened)\n", + " proj = cat.mean(dim=1)\n", + " \n", + " return self.final_proj(proj)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "70b4d4ea", + "metadata": {}, + "outputs": [], + "source": [ + "import torch.nn.init as init\n", + "\n", + "def init_weights(module):\n", + " if isinstance(module, nn.Embedding):\n", + " module.weight.data.normal_(mean=0.0, std=1.0)\n", + " if module.padding_idx is not None:\n", + " module.weight.data[module.padding_idx].zero_()\n", + " elif isinstance(module, nn.LayerNorm):\n", + " module.bias.data.zero_()\n", + " module.weight.data.fill_(1.0)\n", + " elif isinstance(module, nn.BatchNorm1d):\n", + " init.normal_(m.weight.data, mean=1, std=0.02)\n", + " init.constant_(m.bias.data, 0)\n", + " elif isinstance(module, nn.Linear):\n", + " init.xavier_normal_(module.weight.data)\n", + " if module.bias is not None:\n", + " init.normal_(module.bias.data)\n", + " elif isinstance(module, nn.LSTM):\n", + " for param in module.parameters():\n", + " if len(param.shape) >= 2:\n", + " init.orthogonal_(param.data)\n", + " else:\n", + " init.normal_(param.data)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "282ecd1a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model(\n", + " (lstm): LSTMLayer(\n", + " (embedding): Embedding(7, 4, padding_idx=0)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " (lstm): LSTM(7, 16, bias=False, batch_first=True, bidirectional=True)\n", + " )\n", + " (block_l1): ModuleList(\n", + " (0): Block(\n", + " (sa): MultiHeadAttention(\n", + " (heads): ModuleList(\n", + " (0): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (1): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (2): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (3): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (proj): Linear(in_features=32, out_features=32, bias=False)\n", + " )\n", + " (dilated): DilatedBlock(\n", + " (block): Sequential(\n", + " (0): Linear(in_features=32, out_features=128, bias=False)\n", + " (1): ELU(alpha=1.0)\n", + " (2): Linear(in_features=128, out_features=32, bias=False)\n", + " (3): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (ln1): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", + " (ln2): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", + " )\n", + " (1): Block(\n", + " (sa): MultiHeadAttention(\n", + " (heads): ModuleList(\n", + " (0): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (1): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (2): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (3): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (proj): Linear(in_features=32, out_features=32, bias=False)\n", + " )\n", + " (dilated): DilatedBlock(\n", + " (block): Sequential(\n", + " (0): Linear(in_features=32, out_features=128, bias=False)\n", + " (1): ELU(alpha=1.0)\n", + " (2): Linear(in_features=128, out_features=32, bias=False)\n", + " (3): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (ln1): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", + " (ln2): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", + " )\n", + " (2): Block(\n", + " (sa): MultiHeadAttention(\n", + " (heads): ModuleList(\n", + " (0): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (1): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (2): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (3): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (proj): Linear(in_features=32, out_features=32, bias=False)\n", + " )\n", + " (dilated): DilatedBlock(\n", + " (block): Sequential(\n", + " (0): Linear(in_features=32, out_features=128, bias=False)\n", + " (1): ELU(alpha=1.0)\n", + " (2): Linear(in_features=128, out_features=32, bias=False)\n", + " (3): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (ln1): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", + " (ln2): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", + " )\n", + " (3): Block(\n", + " (sa): MultiHeadAttention(\n", + " (heads): ModuleList(\n", + " (0): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (1): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (2): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (3): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (proj): Linear(in_features=32, out_features=32, bias=False)\n", + " )\n", + " (dilated): DilatedBlock(\n", + " (block): Sequential(\n", + " (0): Linear(in_features=32, out_features=128, bias=False)\n", + " (1): ELU(alpha=1.0)\n", + " (2): Linear(in_features=128, out_features=32, bias=False)\n", + " (3): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (ln1): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", + " (ln2): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", + " )\n", + " (4): Block(\n", + " (sa): MultiHeadAttention(\n", + " (heads): ModuleList(\n", + " (0): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (1): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (2): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (3): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (proj): Linear(in_features=32, out_features=32, bias=False)\n", + " )\n", + " (dilated): DilatedBlock(\n", + " (block): Sequential(\n", + " (0): Linear(in_features=32, out_features=128, bias=False)\n", + " (1): ELU(alpha=1.0)\n", + " (2): Linear(in_features=128, out_features=32, bias=False)\n", + " (3): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (ln1): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", + " (ln2): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", + " )\n", + " (5): Block(\n", + " (sa): MultiHeadAttention(\n", + " (heads): ModuleList(\n", + " (0): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (1): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (2): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (3): SelfAttention(\n", + " (k): Linear(in_features=32, out_features=8, bias=False)\n", + " (q): Linear(in_features=32, out_features=8, bias=False)\n", + " (v): Linear(in_features=32, out_features=8, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (proj): Linear(in_features=32, out_features=32, bias=False)\n", + " )\n", + " (dilated): DilatedBlock(\n", + " (block): Sequential(\n", + " (0): Linear(in_features=32, out_features=128, bias=False)\n", + " (1): ELU(alpha=1.0)\n", + " (2): Linear(in_features=128, out_features=32, bias=False)\n", + " (3): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (ln1): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", + " (ln2): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", + " )\n", + " )\n", + " (block_l2): ModuleList(\n", + " (0): Block(\n", + " (sa): MultiHeadAttention(\n", + " (heads): ModuleList(\n", + " (0): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (1): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (2): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (3): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (proj): Linear(in_features=72, out_features=72, bias=False)\n", + " )\n", + " (dilated): DilatedBlock(\n", + " (block): Sequential(\n", + " (0): Linear(in_features=72, out_features=288, bias=False)\n", + " (1): ELU(alpha=1.0)\n", + " (2): Linear(in_features=288, out_features=72, bias=False)\n", + " (3): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (ln1): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", + " (ln2): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", + " )\n", + " (1): Block(\n", + " (sa): MultiHeadAttention(\n", + " (heads): ModuleList(\n", + " (0): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (1): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (2): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (3): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (proj): Linear(in_features=72, out_features=72, bias=False)\n", + " )\n", + " (dilated): DilatedBlock(\n", + " (block): Sequential(\n", + " (0): Linear(in_features=72, out_features=288, bias=False)\n", + " (1): ELU(alpha=1.0)\n", + " (2): Linear(in_features=288, out_features=72, bias=False)\n", + " (3): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (ln1): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", + " (ln2): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", + " )\n", + " (2): Block(\n", + " (sa): MultiHeadAttention(\n", + " (heads): ModuleList(\n", + " (0): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (1): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (2): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (3): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (proj): Linear(in_features=72, out_features=72, bias=False)\n", + " )\n", + " (dilated): DilatedBlock(\n", + " (block): Sequential(\n", + " (0): Linear(in_features=72, out_features=288, bias=False)\n", + " (1): ELU(alpha=1.0)\n", + " (2): Linear(in_features=288, out_features=72, bias=False)\n", + " (3): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (ln1): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", + " (ln2): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", + " )\n", + " (3): Block(\n", + " (sa): MultiHeadAttention(\n", + " (heads): ModuleList(\n", + " (0): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (1): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (2): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (3): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (proj): Linear(in_features=72, out_features=72, bias=False)\n", + " )\n", + " (dilated): DilatedBlock(\n", + " (block): Sequential(\n", + " (0): Linear(in_features=72, out_features=288, bias=False)\n", + " (1): ELU(alpha=1.0)\n", + " (2): Linear(in_features=288, out_features=72, bias=False)\n", + " (3): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (ln1): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", + " (ln2): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", + " )\n", + " (4): Block(\n", + " (sa): MultiHeadAttention(\n", + " (heads): ModuleList(\n", + " (0): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (1): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (2): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (3): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (proj): Linear(in_features=72, out_features=72, bias=False)\n", + " )\n", + " (dilated): DilatedBlock(\n", + " (block): Sequential(\n", + " (0): Linear(in_features=72, out_features=288, bias=False)\n", + " (1): ELU(alpha=1.0)\n", + " (2): Linear(in_features=288, out_features=72, bias=False)\n", + " (3): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (ln1): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", + " (ln2): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", + " )\n", + " (5): Block(\n", + " (sa): MultiHeadAttention(\n", + " (heads): ModuleList(\n", + " (0): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (1): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (2): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (3): SelfAttention(\n", + " (k): Linear(in_features=72, out_features=18, bias=False)\n", + " (q): Linear(in_features=72, out_features=18, bias=False)\n", + " (v): Linear(in_features=72, out_features=18, bias=False)\n", + " (dpt): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (proj): Linear(in_features=72, out_features=72, bias=False)\n", + " )\n", + " (dilated): DilatedBlock(\n", + " (block): Sequential(\n", + " (0): Linear(in_features=72, out_features=288, bias=False)\n", + " (1): ELU(alpha=1.0)\n", + " (2): Linear(in_features=288, out_features=72, bias=False)\n", + " (3): Dropout(p=0.0, inplace=False)\n", + " )\n", + " )\n", + " (ln1): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", + " (ln2): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", + " )\n", + " )\n", + " (final_proj): Linear(in_features=72, out_features=9, bias=True)\n", + ")\n" + ] + } + ], + "source": [ + "model = Model(\n", + " n_lstm_layers=1,\n", + " input_size=3,\n", + " hidden_size=16, \n", + " output_size=9,\n", + " n_features=40,\n", + " l1_blocks=6,\n", + " l2_blocks=6\n", + ")\n", + "\n", + "model = model.apply(init_weights)\n", + "\n", + "print(model)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "20fec22b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "453101\n" + ] + } + ], + "source": [ + "print(sum(p.numel() for p in model.parameters()))" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "1ca4b65a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 1.31637209 0.45785206 0.97595891 2.59617829 0.35062587 72.2209596\n", + " 4.71122642 1.08826104 1.53996715]\n" + ] + } + ], + "source": [ + "weights = train_df.shape[0]/(np.bincount(train_df.chosen.values) * len(np.unique(train_df.chosen)))\n", + "\n", + "print(weights)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "e7a2017b", + "metadata": {}, + "outputs": [], + "source": [ + "INIT_LR = 7e-4\n", + "optimizer = optim.Adam(model.parameters(), lr=INIT_LR)\n", + "criterion = nn.CrossEntropyLoss(weight=torch.Tensor(weights))" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "c6f1f235", + "metadata": {}, + "outputs": [], + "source": [ + "# sX, sY, sL = next(iter(train_loader))\n", + "\n", + "# print(sX.size())" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "e53e4fd1", + "metadata": {}, + "outputs": [], + "source": [ + "def train(epoch, model, loader, opt, criterion):\n", + " \n", + " print(\"\\tBeginning training.\")\n", + " \n", + " model.train()\n", + " \n", + " print_every = len(loader)//5\n", + " \n", + " losses = []\n", + " \n", + " for ix, (X, y, lengths) in enumerate(loader):\n", + " \n", + " modes, metrics, features = X\n", + " y = y.float()\n", + "\n", + " opt.zero_grad()\n", + "\n", + " y_pred = model(modes, metrics.float(), features.float(), lengths)\n", + "\n", + " loss = criterion(y_pred.view(-1, 9), y.view(-1, 9))\n", + "\n", + " losses.append(loss.item())\n", + " \n", + " if ix and ix % print_every == 0:\n", + " print(f\"\\t-> Average loss: {np.nanmean(losses)}\")\n", + "\n", + " loss.backward()\n", + "\n", + " optimizer.step()\n", + "\n", + " print(50*'-')" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "3a33fefa", + "metadata": {}, + "outputs": [], + "source": [ + "def evaluate(epoch, model, loader, criterion):\n", + " \n", + " print(\"\\tBeginning evaluation.\")\n", + " \n", + " model.eval()\n", + " \n", + " print_every = len(loader)//5\n", + " \n", + " losses = []\n", + " \n", + " for ix, (X, y, lengths) in enumerate(loader):\n", + " \n", + " modes, metrics, features = X\n", + "\n", + " y_pred = model(modes, metrics.float(), features.float(), lengths)\n", + " y = y.float()\n", + " \n", + " loss = criterion(y_pred.view(-1, 9), y.view(-1, 9))\n", + "\n", + " losses.append(loss.item())\n", + " \n", + " if ix and ix % print_every == 0:\n", + " print(f\"\\t -> Average loss: {np.nanmean(losses)}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "650a5240", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.metrics import f1_score\n", + "\n", + "\n", + "def evaluate_f1(model, tr_loader, te_loader):\n", + " tr_preds, te_preds = np.array([]), np.array([])\n", + " tr_gt, te_gt = np.array([]), np.array([])\n", + " \n", + " model.eval()\n", + " print(\"\\tEvaluating F1...\")\n", + " \n", + " with torch.no_grad():\n", + " for ix, (X, y, lengths) in enumerate(tr_loader):\n", + " \n", + " modes, metrics, features = X\n", + "\n", + " y_pred = model(modes, metrics.float(), features.float(), lengths).view(-1, 9)\n", + " y = y.float().view(-1, 9)\n", + "\n", + " preds = torch.argmax(F.softmax(y_pred, dim=-1), dim=-1).numpy().ravel()\n", + " true = torch.argmax(y.long(), dim=-1).numpy().ravel()\n", + "\n", + " tr_preds = np.append(tr_preds, preds)\n", + " tr_gt = np.append(tr_gt, true)\n", + " \n", + " tr_f1 = f1_score(y_true=tr_gt, y_pred=tr_preds, average='weighted')\n", + " print(f\"\\t -> Train F1: {tr_f1}\")\n", + " \n", + " for ix, (X, y, lengths) in enumerate(te_loader):\n", + " \n", + " modes, metrics, features = X\n", + "\n", + " y_pred = model(modes, metrics.float(), features.float(), lengths).view(-1, 9)\n", + " y = y.float().view(-1, 9)\n", + " \n", + " preds = torch.argmax(F.softmax(y_pred, dim=-1), dim=-1).numpy().ravel()\n", + " true = torch.argmax(y.long(), dim=-1).numpy().ravel()\n", + "\n", + " te_preds = np.append(te_preds, preds)\n", + " te_gt = np.append(te_gt, true)\n", + " \n", + " te_f1 = f1_score(y_true=te_gt, y_pred=te_preds, average='weighted')\n", + " print(f\"\\t -> Test F1: {te_f1}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "7191e78b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 - 5 :: 0.00070\n", + "5 - 10 :: 0.00067\n", + "10 - 15 :: 0.00063\n", + "15 - 20 :: 0.00060\n", + "20 - 25 :: 0.00057\n", + "25 - 30 :: 0.00054\n" + ] + } + ], + "source": [ + "# Other training hyperparameters.\n", + "num_epochs = 30\n", + "num_decays = 6\n", + "decay_at = num_epochs // num_decays\n", + "decay = 0.95\n", + "\n", + "# Just checking what LRs should be after decaying.\n", + "for power in range(num_decays):\n", + " print(f\"{decay_at * power} - {decay_at * (power + 1)} :: {INIT_LR * decay**power:.5f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fc4b72de", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1:\n", + "\tBeginning training.\n", + "\t-> Average loss: 3.4292205003553264\n", + "\t-> Average loss: 3.0203611136815667\n", + "\t-> Average loss: 2.9269992429190226\n", + "\t-> Average loss: 2.7440315224998524\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.9845308899546468\n", + "\t -> Average loss: 2.0912061837169675\n", + "\t -> Average loss: 2.0278757847845554\n", + "\t -> Average loss: 2.079901454872481\n", + "\t -> Average loss: 2.119112247215273\n", + "\tEvaluating F1...\n", + "\t -> Train F1: 0.17357571210719355\n", + "\t -> Test F1: 0.16929205554584628\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 2:\n", + "\tBeginning training.\n", + "\t-> Average loss: 2.2447872489024805\n", + "\t-> Average loss: 2.179984362536923\n", + "\t-> Average loss: 2.184303961117914\n", + "\t-> Average loss: 2.1579395363231675\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.8604771541483576\n", + "\t -> Average loss: 1.96936972224629\n", + "\t -> Average loss: 1.9072258116594\n", + "\t -> Average loss: 1.9617513231750632\n", + "\t -> Average loss: 1.9915817378616547\n", + "\tEvaluating F1...\n", + "\t -> Train F1: 0.2375672788266048\n", + "\t -> Test F1: 0.23161577435832603\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 3:\n", + "\tBeginning training.\n", + "\t-> Average loss: 2.009245126523785\n", + "\t-> Average loss: 1.9820919889074202\n", + "\t-> Average loss: 2.020936541432881\n", + "\t-> Average loss: 1.9902592548037359\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.948894374363915\n", + "\t -> Average loss: 2.0106319545865894\n", + "\t -> Average loss: 1.9851899344418475\n", + "\t -> Average loss: 2.007645890627648\n", + "\t -> Average loss: 1.9973548486545132\n", + "\tEvaluating F1...\n", + "\t -> Train F1: 0.178078853483658\n", + "\t -> Test F1: 0.17889559699341365\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 4:\n", + "\tBeginning training.\n", + "\t-> Average loss: 1.9483501227707836\n", + "\t-> Average loss: 1.954028883528493\n", + "\t-> Average loss: 1.9755866212591542\n", + "\t-> Average loss: 1.923766012835111\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.8338173299861353\n", + "\t -> Average loss: 1.917397732834716\n", + "\t -> Average loss: 1.8882776866875477\n", + "\t -> Average loss: 1.9411674299967547\n", + "\t -> Average loss: 1.9390272717393124\n", + "\tEvaluating F1...\n", + "\t -> Train F1: 0.2937676034584698\n", + "\t -> Test F1: 0.2797533840531726\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 5:\n", + "\tBeginning training.\n", + "\t-> Average loss: 1.912619205160514\n", + "\t-> Average loss: 1.9341210979918848\n", + "\t-> Average loss: 1.8943603618724927\n", + "\t-> Average loss: 1.8774088714056938\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.690006344844509\n", + "\t -> Average loss: 1.7453476386470395\n", + "\t -> Average loss: 1.7205723014229268\n", + "\t -> Average loss: 1.749604014185778\n", + "\t -> Average loss: 1.742094624483038\n", + "\tEvaluating F1...\n", + "\t -> Train F1: 0.19402127381450823\n", + "\t -> Test F1: 0.1897796133960193\n", + "Learning rate is now: 0.00067\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 6:\n", + "\tBeginning training.\n", + "\t-> Average loss: 1.6016220477040253\n", + "\t-> Average loss: 1.7033424217912552\n", + "\t-> Average loss: 1.6674059770536112\n", + "\t-> Average loss: 1.6761879756166485\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.5424185771515915\n", + "\t -> Average loss: 1.579921578193878\n", + "\t -> Average loss: 1.5411476174842065\n", + "\t -> Average loss: 1.5840133090508075\n", + "\t -> Average loss: 1.5650895305837256\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 7:\n", + "\tBeginning training.\n", + "\t-> Average loss: 1.6066383687810526\n", + "\t-> Average loss: 1.5486349471376795\n", + "\t-> Average loss: 1.5466778286405511\n", + "\t-> Average loss: 1.5999376366539295\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.6492426906551063\n", + "\t -> Average loss: 1.664988368999708\n", + "\t -> Average loss: 1.6178990316980366\n", + "\t -> Average loss: 1.6296465851319595\n", + "\t -> Average loss: 1.640547810166173\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 8:\n", + "\tBeginning training.\n", + "\t-> Average loss: 1.4707723498011434\n", + "\t-> Average loss: 1.5709665634680428\n", + "\t-> Average loss: 1.554789892461182\n", + "\t-> Average loss: 1.5148731287814903\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.3899180381324705\n", + "\t -> Average loss: 1.4627432638531799\n", + "\t -> Average loss: 1.4123834414101804\n", + "\t -> Average loss: 1.4201137627063722\n", + "\t -> Average loss: 1.4303626401260212\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 9:\n", + "\tBeginning training.\n", + "\t-> Average loss: 1.5543432552471508\n", + "\t-> Average loss: 1.4533692163074874\n", + "\t-> Average loss: 1.3998552637881245\n", + "\t-> Average loss: 1.4387366909199102\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.3969969056005584\n", + "\t -> Average loss: 1.4605997060562348\n", + "\t -> Average loss: 1.4105439760458114\n", + "\t -> Average loss: 1.4442899707441483\n", + "\t -> Average loss: 1.4501932569907734\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 10:\n", + "\tBeginning training.\n", + "\t-> Average loss: 1.4883403652789873\n", + "\t-> Average loss: 1.4671129221103143\n", + "\t-> Average loss: 1.4545180360540984\n", + "\t-> Average loss: 1.4436850206850294\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.508042848642978\n", + "\t -> Average loss: 1.502184015554148\n", + "\t -> Average loss: 1.44931043248012\n", + "\t -> Average loss: 1.4784588873428093\n", + "\t -> Average loss: 1.4841084074967386\n", + "\tEvaluating F1...\n", + "\t -> Train F1: 0.48333374111246125\n", + "\t -> Test F1: 0.4722792652308931\n", + "Learning rate is now: 0.00063\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 11:\n", + "\tBeginning training.\n", + "\t-> Average loss: 1.4074798150185766\n", + "\t-> Average loss: 1.3590504143056463\n", + "\t-> Average loss: 1.3730208680991913\n", + "\t-> Average loss: 1.4093443684042937\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.65324043395133\n", + "\t -> Average loss: 1.6848366409748585\n", + "\t -> Average loss: 1.639395641301995\n", + "\t -> Average loss: 1.626926458699458\n", + "\t -> Average loss: 1.6171495253501786\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 12:\n", + "\tBeginning training.\n", + "\t-> Average loss: 1.31716444697127\n", + "\t-> Average loss: 1.2871220497340277\n", + "\t-> Average loss: 1.2746168654707137\n", + "\t-> Average loss: 1.2706415657187125\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.2732290915270756\n", + "\t -> Average loss: 1.3285720576564748\n", + "\t -> Average loss: 1.2918836618982144\n", + "\t -> Average loss: 1.2952009379613474\n", + "\t -> Average loss: 1.2965014228495078\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 13:\n", + "\tBeginning training.\n", + "\t-> Average loss: 1.2921466177235768\n", + "\t-> Average loss: 1.2243878973021864\n", + "\t-> Average loss: 1.2450620088472837\n", + "\t-> Average loss: 1.251400762683901\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.206730307313983\n", + "\t -> Average loss: 1.2312866071721056\n", + "\t -> Average loss: 1.208183620277959\n", + "\t -> Average loss: 1.2216688226973618\n", + "\t -> Average loss: 1.2299620342197903\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 14:\n", + "\tBeginning training.\n", + "\t-> Average loss: 1.1780336717736788\n", + "\t-> Average loss: 1.2387724560844906\n", + "\t-> Average loss: 1.2171782795114152\n", + "\t-> Average loss: 1.2286130927401546\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.1736671675683399\n", + "\t -> Average loss: 1.214920432480065\n", + "\t -> Average loss: 1.1988129002083816\n", + "\t -> Average loss: 1.1989111086031705\n", + "\t -> Average loss: 1.2194756852068667\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 15:\n", + "\tBeginning training.\n", + "\t-> Average loss: 1.2168475217576133\n", + "\t-> Average loss: 1.1433030896716647\n", + "\t-> Average loss: 1.1906079676311259\n", + "\t-> Average loss: 1.2125332475604398\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.4089278240776595\n", + "\t -> Average loss: 1.445234133480312\n", + "\t -> Average loss: 1.4113176648240926\n", + "\t -> Average loss: 1.4362174157624148\n", + "\t -> Average loss: 1.435766333294876\n", + "\tEvaluating F1...\n", + "\t -> Train F1: 0.5093168030147552\n", + "\t -> Test F1: 0.5026682286547539\n", + "Learning rate is now: 0.00060\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 16:\n", + "\tBeginning training.\n", + "\t-> Average loss: 1.1724162185824782\n", + "\t-> Average loss: 1.1224480470021565\n", + "\t-> Average loss: 1.1285216524044377\n", + "\t-> Average loss: 1.1660368838476076\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.210316137894572\n", + "\t -> Average loss: 1.246378187157891\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\t -> Average loss: 1.2420701925267479\n", + "\t -> Average loss: 1.2695545183091919\n", + "\t -> Average loss: 1.273952293582052\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 17:\n", + "\tBeginning training.\n", + "\t-> Average loss: 1.0339172488734043\n", + "\t-> Average loss: 1.0751683378473684\n", + "\t-> Average loss: 1.1208586298338965\n", + "\t-> Average loss: 1.1269230102115642\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.248624034475681\n", + "\t -> Average loss: 1.2845101706423125\n", + "\t -> Average loss: 1.2307171229161877\n", + "\t -> Average loss: 1.2223140466163174\n", + "\t -> Average loss: 1.2198367260838676\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 18:\n", + "\tBeginning training.\n", + "\t-> Average loss: 1.0498548433933843\n", + "\t-> Average loss: 1.0665208559345316\n", + "\t-> Average loss: 1.0762758616007386\n", + "\t-> Average loss: 1.099983853102772\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.3901189185221101\n", + "\t -> Average loss: 1.4441073030024976\n", + "\t -> Average loss: 1.373450560356254\n", + "\t -> Average loss: 1.3496260701087575\n", + "\t -> Average loss: 1.3835973867276747\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 19:\n", + "\tBeginning training.\n", + "\t-> Average loss: 1.146373841807496\n", + "\t-> Average loss: 1.085291807392025\n", + "\t-> Average loss: 1.079380213429688\n", + "\t-> Average loss: 1.1145779568127758\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.263674235169115\n", + "\t -> Average loss: 1.2977842691269788\n", + "\t -> Average loss: 1.243837918641407\n", + "\t -> Average loss: 1.2629515259071111\n", + "\t -> Average loss: 1.2418897094670163\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 20:\n", + "\tBeginning training.\n", + "\t-> Average loss: 0.9654322663665483\n", + "\t-> Average loss: 1.0184031338499278\n", + "\t-> Average loss: 1.0715286856706412\n", + "\t-> Average loss: 1.0910986138052643\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.1675123429165206\n", + "\t -> Average loss: 1.2705587090520591\n", + "\t -> Average loss: 1.200293446571302\n", + "\t -> Average loss: 1.2205115221362584\n", + "\t -> Average loss: 1.2177007432530602\n", + "\tEvaluating F1...\n", + "\t -> Train F1: 0.6190054946992625\n", + "\t -> Test F1: 0.6097765604266691\n", + "Learning rate is now: 0.00057\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 21:\n", + "\tBeginning training.\n", + "\t-> Average loss: 1.0445893098855152\n", + "\t-> Average loss: 1.1112236296230893\n", + "\t-> Average loss: 1.0962648112726123\n", + "\t-> Average loss: 1.089011266353621\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.0674441020165741\n", + "\t -> Average loss: 1.1406326175361245\n", + "\t -> Average loss: 1.1207181137305364\n", + "\t -> Average loss: 1.1347275835346557\n", + "\t -> Average loss: 1.1342128750775322\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 22:\n", + "\tBeginning training.\n", + "\t-> Average loss: 1.0676555513877775\n", + "\t-> Average loss: 1.0773798781600055\n", + "\t-> Average loss: 1.0710756811421827\n", + "\t-> Average loss: 1.0416493509739522\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.1352787101068975\n", + "\t -> Average loss: 1.2286776423037469\n", + "\t -> Average loss: 1.1571767105262225\n", + "\t -> Average loss: 1.1650525711899125\n", + "\t -> Average loss: 1.1702847076456864\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 23:\n", + "\tBeginning training.\n", + "\t-> Average loss: 0.9855309208053783\n", + "\t-> Average loss: 1.0090662437060927\n", + "\t-> Average loss: 1.0291784378419606\n", + "\t-> Average loss: 1.0479850026693265\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.190445274031362\n", + "\t -> Average loss: 1.2569891696834898\n", + "\t -> Average loss: 1.1954538017761573\n", + "\t -> Average loss: 1.2319692372545819\n", + "\t -> Average loss: 1.2384895061925971\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 24:\n", + "\tBeginning training.\n", + "\t-> Average loss: 1.035038524541442\n", + "\t-> Average loss: 1.007654058233497\n", + "\t-> Average loss: 1.0265389064957022\n", + "\t-> Average loss: 1.0250597899920955\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.27851615721287\n", + "\t -> Average loss: 1.3390878153847647\n", + "\t -> Average loss: 1.315815781799159\n", + "\t -> Average loss: 1.2937761211286816\n", + "\t -> Average loss: 1.2826113693858314\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 25:\n", + "\tBeginning training.\n", + "\t-> Average loss: 0.993596878173298\n", + "\t-> Average loss: 1.0079565033431157\n", + "\t-> Average loss: 1.0364318410870301\n", + "\t-> Average loss: 1.032162597538999\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.2048218791378278\n", + "\t -> Average loss: 1.2166278918723126\n", + "\t -> Average loss: 1.1783969860607342\n", + "\t -> Average loss: 1.1786176204535408\n", + "\t -> Average loss: 1.1798632480913287\n", + "\tEvaluating F1...\n", + "\t -> Train F1: 0.6030226790226174\n", + "\t -> Test F1: 0.5861836286317499\n", + "Learning rate is now: 0.00054\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 26:\n", + "\tBeginning training.\n", + "\t-> Average loss: 0.9192066853189601\n", + "\t-> Average loss: 1.0098440380341351\n", + "\t-> Average loss: 1.006183010403619\n", + "\t-> Average loss: 1.0023870221366835\n", + "--------------------------------------------------\n", + "\tBeginning evaluation.\n", + "\t -> Average loss: 1.1226611448316601\n", + "\t -> Average loss: 1.1899717054792218\n", + "\t -> Average loss: 1.124479945067928\n", + "\t -> Average loss: 1.1427228787120112\n", + "\t -> Average loss: 1.1324994321057338\n", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", + "Epoch 27:\n", + "\tBeginning training.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "ERROR:root:Internal Python error in the inspect module.\n", + "Below is the traceback from this internal error.\n", + "\n", + "ERROR:root:Internal Python error in the inspect module.\n", + "Below is the traceback from this internal error.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Traceback (most recent call last):\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 3553, in run_code\n", + " exec(code_obj, self.user_global_ns, self.user_ns)\n", + " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/654011310.py\", line 5, in \n", + " train(epoch_ix, model, train_loader, optimizer, criterion)\n", + " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/2806942638.py\", line 18, in train\n", + " y_pred = model(modes, metrics.float(), features.float(), lengths)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", + " return forward_call(*input, **kwargs)\n", + " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 143, in forward\n", + " lstm_out = module(lstm_out)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", + " return forward_call(*input, **kwargs)\n", + " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 79, in forward\n", + " x = x + self.sa(self.ln1(x))\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", + " return forward_call(*input, **kwargs)\n", + " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 64, in forward\n", + " cat = torch.cat([head(x) for head in self.heads], dim=-1)\n", + " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 64, in \n", + " cat = torch.cat([head(x) for head in self.heads], dim=-1)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", + " return forward_call(*input, **kwargs)\n", + " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 37, in forward\n", + " q = self.q(x)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", + " return forward_call(*input, **kwargs)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/linear.py\", line 114, in forward\n", + " return F.linear(input, self.weight, self.bias)\n", + "KeyboardInterrupt\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 2099, in showtraceback\n", + " stb = value._render_traceback_()\n", + "AttributeError: 'KeyboardInterrupt' object has no attribute '_render_traceback_'\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1101, in get_records\n", + " return _fixed_getinnerframes(etb, number_of_lines_of_context, tb_offset)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 248, in wrapped\n", + " return f(*args, **kwargs)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 281, in _fixed_getinnerframes\n", + " records = fix_frame_records_filenames(inspect.getinnerframes(etb, context))\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 1502, in getinnerframes\n", + " frameinfo = (tb.tb_frame,) + getframeinfo(tb, context)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 1460, in getframeinfo\n", + " filename = getsourcefile(frame) or getfile(frame)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 696, in getsourcefile\n", + " if getattr(getmodule(object, filename), '__loader__', None) is not None:\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 742, in getmodule\n", + " os.path.realpath(f)] = module.__name__\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 395, in realpath\n", + " path, ok = _joinrealpath(filename[:0], filename, {})\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 428, in _joinrealpath\n", + " newpath = join(path, name)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 81, in join\n", + " sep = _get_sep(a)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 42, in _get_sep\n", + " if isinstance(path, bytes):\n", + "KeyboardInterrupt\n", + "Traceback (most recent call last):\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 3553, in run_code\n", + " exec(code_obj, self.user_global_ns, self.user_ns)\n", + " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/654011310.py\", line 5, in \n", + " train(epoch_ix, model, train_loader, optimizer, criterion)\n", + " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/2806942638.py\", line 18, in train\n", + " y_pred = model(modes, metrics.float(), features.float(), lengths)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", + " return forward_call(*input, **kwargs)\n", + " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 143, in forward\n", + " lstm_out = module(lstm_out)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", + " return forward_call(*input, **kwargs)\n", + " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 79, in forward\n", + " x = x + self.sa(self.ln1(x))\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", + " return forward_call(*input, **kwargs)\n", + " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 64, in forward\n", + " cat = torch.cat([head(x) for head in self.heads], dim=-1)\n", + " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 64, in \n", + " cat = torch.cat([head(x) for head in self.heads], dim=-1)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", + " return forward_call(*input, **kwargs)\n", + " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 37, in forward\n", + " q = self.q(x)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", + " return forward_call(*input, **kwargs)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/linear.py\", line 114, in forward\n", + " return F.linear(input, self.weight, self.bias)\n", + "KeyboardInterrupt\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 2099, in showtraceback\n", + " stb = value._render_traceback_()\n", + "AttributeError: 'KeyboardInterrupt' object has no attribute '_render_traceback_'\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 3473, in run_ast_nodes\n", + " if (await self.run_code(code, result, async_=asy)):\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 3575, in run_code\n", + " self.showtraceback(running_compiled_code=True)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 2102, in showtraceback\n", + " value, tb, tb_offset=tb_offset)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1368, in structured_traceback\n", + " self, etype, value, tb, tb_offset, number_of_lines_of_context)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1268, in structured_traceback\n", + " self, etype, value, tb, tb_offset, number_of_lines_of_context\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1125, in structured_traceback\n", + " tb_offset)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1082, in format_exception_as_a_whole\n", + " last_unique, recursion_repeat = find_recursion(orig_etype, evalue, records)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 382, in find_recursion\n", + " return len(records), 0\n", + "TypeError: object of type 'NoneType' has no len()\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 2099, in showtraceback\n", + " stb = value._render_traceback_()\n", + "AttributeError: 'TypeError' object has no attribute '_render_traceback_'\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1101, in get_records\n", + " return _fixed_getinnerframes(etb, number_of_lines_of_context, tb_offset)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 248, in wrapped\n", + " return f(*args, **kwargs)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 281, in _fixed_getinnerframes\n", + " records = fix_frame_records_filenames(inspect.getinnerframes(etb, context))\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 1502, in getinnerframes\n", + " frameinfo = (tb.tb_frame,) + getframeinfo(tb, context)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 1460, in getframeinfo\n", + " filename = getsourcefile(frame) or getfile(frame)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 696, in getsourcefile\n", + " if getattr(getmodule(object, filename), '__loader__', None) is not None:\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 742, in getmodule\n", + " os.path.realpath(f)] = module.__name__\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 395, in realpath\n", + " path, ok = _joinrealpath(filename[:0], filename, {})\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 429, in _joinrealpath\n", + " if not islink(newpath):\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 171, in islink\n", + " st = os.lstat(path)\n", + "KeyboardInterrupt\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "ERROR:root:Internal Python error in the inspect module.\n", + "Below is the traceback from this internal error.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Traceback (most recent call last):\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 3553, in run_code\n", + " exec(code_obj, self.user_global_ns, self.user_ns)\n", + " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/654011310.py\", line 5, in \n", + " train(epoch_ix, model, train_loader, optimizer, criterion)\n", + " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/2806942638.py\", line 18, in train\n", + " y_pred = model(modes, metrics.float(), features.float(), lengths)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", + " return forward_call(*input, **kwargs)\n", + " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 143, in forward\n", + " lstm_out = module(lstm_out)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", + " return forward_call(*input, **kwargs)\n", + " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 79, in forward\n", + " x = x + self.sa(self.ln1(x))\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", + " return forward_call(*input, **kwargs)\n", + " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 64, in forward\n", + " cat = torch.cat([head(x) for head in self.heads], dim=-1)\n", + " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 64, in \n", + " cat = torch.cat([head(x) for head in self.heads], dim=-1)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", + " return forward_call(*input, **kwargs)\n", + " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 37, in forward\n", + " q = self.q(x)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", + " return forward_call(*input, **kwargs)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/linear.py\", line 114, in forward\n", + " return F.linear(input, self.weight, self.bias)\n", + "KeyboardInterrupt\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 2099, in showtraceback\n", + " stb = value._render_traceback_()\n", + "AttributeError: 'KeyboardInterrupt' object has no attribute '_render_traceback_'\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 3473, in run_ast_nodes\n", + " if (await self.run_code(code, result, async_=asy)):\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 3575, in run_code\n", + " self.showtraceback(running_compiled_code=True)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 2102, in showtraceback\n", + " value, tb, tb_offset=tb_offset)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1368, in structured_traceback\n", + " self, etype, value, tb, tb_offset, number_of_lines_of_context)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1268, in structured_traceback\n", + " self, etype, value, tb, tb_offset, number_of_lines_of_context\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1125, in structured_traceback\n", + " tb_offset)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1082, in format_exception_as_a_whole\n", + " last_unique, recursion_repeat = find_recursion(orig_etype, evalue, records)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 382, in find_recursion\n", + " return len(records), 0\n", + "TypeError: object of type 'NoneType' has no len()\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 2099, in showtraceback\n", + " stb = value._render_traceback_()\n", + "AttributeError: 'TypeError' object has no attribute '_render_traceback_'\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 3030, in _run_cell\n", + " return runner(coro)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/async_helpers.py\", line 78, in _pseudo_sync_runner\n", + " coro.send(None)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 3258, in run_cell_async\n", + " interactivity=interactivity, compiler=compiler, result=result)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 3492, in run_ast_nodes\n", + " self.showtraceback()\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 2102, in showtraceback\n", + " value, tb, tb_offset=tb_offset)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1368, in structured_traceback\n", + " self, etype, value, tb, tb_offset, number_of_lines_of_context)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1268, in structured_traceback\n", + " self, etype, value, tb, tb_offset, number_of_lines_of_context\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1143, in structured_traceback\n", + " chained_exceptions_tb_offset)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1082, in format_exception_as_a_whole\n", + " last_unique, recursion_repeat = find_recursion(orig_etype, evalue, records)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 382, in find_recursion\n", + " return len(records), 0\n", + "TypeError: object of type 'NoneType' has no len()\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 2099, in showtraceback\n", + " stb = value._render_traceback_()\n", + "AttributeError: 'TypeError' object has no attribute '_render_traceback_'\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1101, in get_records\n", + " return _fixed_getinnerframes(etb, number_of_lines_of_context, tb_offset)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 248, in wrapped\n", + " return f(*args, **kwargs)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 281, in _fixed_getinnerframes\n", + " records = fix_frame_records_filenames(inspect.getinnerframes(etb, context))\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 1502, in getinnerframes\n", + " frameinfo = (tb.tb_frame,) + getframeinfo(tb, context)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 1460, in getframeinfo\n", + " filename = getsourcefile(frame) or getfile(frame)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 696, in getsourcefile\n", + " if getattr(getmodule(object, filename), '__loader__', None) is not None:\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 742, in getmodule\n", + " os.path.realpath(f)] = module.__name__\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 395, in realpath\n", + " path, ok = _joinrealpath(filename[:0], filename, {})\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 428, in _joinrealpath\n", + " newpath = join(path, name)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 81, in join\n", + " sep = _get_sep(a)\n", + " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 42, in _get_sep\n", + " if isinstance(path, bytes):\n", + "KeyboardInterrupt\n" + ] + } + ], + "source": [ + "# We'd like to start at a loss of at most -ln(1/9) ~ 2.19\n", + "\n", + "for epoch_ix in range(1, num_epochs+1):\n", + " print(f\"Epoch {epoch_ix}:\")\n", + " train(epoch_ix, model, train_loader, optimizer, criterion)\n", + " evaluate(epoch_ix, model, test_loader, criterion)\n", + " \n", + " if epoch_ix < 5 or epoch_ix % 5 == 0:\n", + " # Evaluate every 5 epochs.\n", + " evaluate_f1(model, train_loader, test_loader)\n", + " \n", + " if epoch_ix % decay_at == 0:\n", + " optimizer.param_groups[0]['lr'] *= decay\n", + " print(f\"Learning rate is now: {optimizer.param_groups[0]['lr']:.5f}\")\n", + " \n", + " print(40*'~')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8bcc396c", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "a7d53498", + "metadata": {}, + "source": [ + "## Benchmarking\n", + "\n", + "```\n", + "\n", + "model = Model(\n", + " n_lstm_layers=1,\n", + " input_size=3,\n", + " hidden_size=16, \n", + " output_size=9,\n", + " n_features=40,\n", + " l1_blocks=3,\n", + " l2_blocks=3\n", + ")\n", + "\n", + "emb_dim = 16\n", + "\n", + "Best stats:\n", + "-> Train F1: 0.6327794050521978\n", + "-> Test F1: 0.6208816430930885\n", + "```\n", + "\n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "46a8dc7d", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "pytorch", + "language": "python", + "name": "pytorch" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/viz_scripts/rm_src/baseline_modeling0.ipynb b/viz_scripts/rm_src/baseline_modeling0.ipynb new file mode 100644 index 0000000..043572e --- /dev/null +++ b/viz_scripts/rm_src/baseline_modeling0.ipynb @@ -0,0 +1,1136 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### All experiments are logged in Notion [here](https://www.notion.so/Replacement-mode-modeling-257c2f460377498d921e6b167f465945)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from enum import Enum\n", + "import random\n", + "\n", + "# Math and graphing.\n", + "import pandas as pd\n", + "import numpy as np\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# sklearn imports.\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.metrics import f1_score, r2_score, ConfusionMatrixDisplay\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Global experiment flags and variables.\n", + "SEED = 19348\n", + "TARGETS = ['p_micro', 'no_trip', 's_car', 'transit', 'car', 's_micro', 'ridehail', 'walk', 'unknown']\n", + "\n", + "# Set the Numpy seed too.\n", + "random.seed(SEED)\n", + "np.random.seed(SEED)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "class SPLIT_TYPE(Enum):\n", + " # 5 trips for user1, 4 trips in train, 1 in test\n", + " INTRA_USER = 0\n", + " # 5 users, 4 users in train, 1 user in test\n", + " INTER_USER = 1\n", + " # stratifying using target (chosen)\n", + " # [5000 samples (c=1), 8000 samples (c=2)]\n", + " # [4000 samples c=1, 3200 samples c=2 in train]\n", + " TARGET = 2\n", + " \n", + " MIXED = 3\n", + " \n", + "\n", + "class SPLIT(Enum):\n", + " TRAIN = 0\n", + " TEST = 1\n", + "\n", + "def get_splits(count_df: pd.DataFrame, n:int, test_size=0.2):\n", + " maxsize = int(n * test_size)\n", + "\n", + " max_threshold = int(maxsize * 1.05)\n", + " min_threshold = int(maxsize * 0.95)\n", + "\n", + " print(f\"{min_threshold}, {max_threshold}\")\n", + " \n", + " # Allow a 10% tolerance\n", + " def _dp(ix, curr_size, ids, cache):\n", + " \n", + " if ix >= count_df.shape[0]:\n", + " return []\n", + "\n", + " key = ix\n", + "\n", + " if key in cache:\n", + " return cache[key]\n", + "\n", + " if curr_size > max_threshold:\n", + " return []\n", + "\n", + " if min_threshold <= curr_size <= max_threshold:\n", + " return ids\n", + "\n", + " # two options - either pick the current id or skip it.\n", + " branch_a = _dp(ix, curr_size+count_df.loc[ix, 'count'], ids+[count_df.loc[ix, 'index']], cache)\n", + " branch_b = _dp(ix+1, curr_size, ids, cache)\n", + " \n", + " curr_max = []\n", + " if branch_a and len(branch_a) > 0:\n", + " curr_max = branch_a\n", + " \n", + " if branch_b and len(branch_b) > len(branch_a):\n", + " curr_max = branch_b\n", + " \n", + " cache[key] = curr_max\n", + " return cache[key]\n", + " \n", + " return _dp(0, 0, ids=list(), cache=dict())\n", + "\n", + "\n", + "def get_train_test_splits(data: pd.DataFrame, how=SPLIT_TYPE, test_ratio=0.2, shuffle=True):\n", + "\n", + " n_users = list(data.user_id.unique())\n", + " n = data.shape[0]\n", + " \n", + " if shuffle:\n", + " data = data.sample(data.shape[0], random_state=SEED).reset_index(drop=True, inplace=False)\n", + "\n", + " if how == SPLIT_TYPE.INTER_USER:\n", + " # Make the split, ensuring that a user in one fold is not leaked into the other fold.\n", + " # Basic idea: we want to start with the users with the highest instances and place \n", + " # alternating users in each set.\n", + " counts = data.user_id.value_counts().reset_index(drop=False, inplace=False, name='count')\n", + "\n", + " # Now, start with the user_id at the top, and keep adding to either split.\n", + " # This can be achieved using a simple DP program.\n", + " test_ids = get_splits(counts, data.shape[0])\n", + " test_data = data.loc[data.user_id.isin(test_ids), :]\n", + " train_index = data.index.difference(test_data.index)\n", + " train_data = data.loc[data.user_id.isin(train_index), :]\n", + " \n", + " return train_data, test_data\n", + " \n", + " elif how == SPLIT_TYPE.INTRA_USER:\n", + " \n", + " # There are certain users with only one observation. What do we do with those?\n", + " # As per the mobilitynet modeling pipeline, we randomly assign them to either the\n", + " # training or test set.\n", + " \n", + " value_counts = data.user_id.value_counts()\n", + " single_count_ids = value_counts[value_counts == 1].index\n", + " \n", + " data_filtered = data.loc[~data.user_id.isin(single_count_ids), :].reset_index(drop=True)\n", + " data_single_counts = data.loc[data.user_id.isin(single_count_ids), :].reset_index(drop=True)\n", + " \n", + " X_tr, X_te = train_test_split(\n", + " data_filtered, test_size=test_ratio, shuffle=shuffle, stratify=data_filtered.user_id,\n", + " random_state=SEED\n", + " )\n", + " \n", + " data_single_counts['assigned'] = np.random.choice(['train', 'test'], len(data_single_counts))\n", + " X_tr_merged = pd.concat(\n", + " [X_tr, data_single_counts.loc[data_single_counts.assigned == 'train', :].drop(\n", + " columns=['assigned'], inplace=False\n", + " )],\n", + " ignore_index=True, axis=0\n", + " )\n", + " \n", + " X_te_merged = pd.concat(\n", + " [X_te, data_single_counts.loc[data_single_counts.assigned == 'test', :].drop(\n", + " columns=['assigned'], inplace=False\n", + " )],\n", + " ignore_index=True, axis=0\n", + " )\n", + " \n", + " return X_tr_merged, X_te_merged\n", + " \n", + " elif how == SPLIT_TYPE.TARGET:\n", + " \n", + " X_tr, X_te = train_test_split(\n", + " data, test_size=test_ratio, shuffle=shuffle, stratify=data.chosen,\n", + " random_state=SEED\n", + " )\n", + " \n", + " return X_tr, X_te\n", + " \n", + " raise NotImplementedError(\"Unknown split type\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Modeling" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Read the data.\n", + "# data = pd.read_csv('../data/FULL_preprocessed_data_RM_weather.csv')\n", + "# data = pd.read_csv('../data/ReplacedMode_Fix.csv')\n", + "data = pd.read_csv('../data/ReplacedMode_Fix_02072024.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "data.drop_duplicates(inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def plot_hist(df, features=None):\n", + " if not features:\n", + " # All features.\n", + " features = df.columns.tolist()\n", + " \n", + " n_features = len(features)\n", + " \n", + " ncols = 6\n", + " nrows = n_features//ncols if n_features%ncols == 0 else (n_features//ncols) + 1\n", + " \n", + " fig, axes = plt.subplots(nrows=nrows, ncols=ncols, figsize=(10, 10))\n", + " for ix, ax in enumerate(axes.flatten()):\n", + " \n", + " if ix > n_features:\n", + " break\n", + " \n", + " df[features[ix]].hist(ax=ax)\n", + " ax.set(title=features[ix])\n", + " \n", + " plt.tight_layout()\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# First, we map the user IDs to ints.\n", + "\n", + "USERS = list(data.user_id.unique())\n", + "\n", + "USER_MAP = {\n", + " u: i+1 for (i, u) in enumerate(USERS)\n", + "}\n", + "\n", + "data['user_id'] = data['user_id'].apply(lambda x: USER_MAP[x])\n", + "\n", + "# data.rename(\n", + "# columns={'start_local_dt_weekday': 'start:DOW', 'end_local_dt_weekday': 'end:DOW'},\n", + "# inplace=True\n", + "# )\n", + "\n", + "# Drop the samples with chosen == no trip or chosen == unknown\n", + "# data.drop(index=data.loc[data.chosen.isin([2, 9])].index, inplace=True)\n", + "\n", + "# data.n_working_residents = data.n_working_residents.apply(lambda x: 0 if x < 0 else x)\n", + "\n", + "# Fix some age preprocessing issues.\n", + "# data.age = data.age.apply(lambda x: x if x < 100 else 2024-x)\n", + "\n", + "# Collapse 'train' and 'bus' into 'transit'\n", + "# data.loc[\n", + "# data.section_mode_argmax.isin(['train', 'bus']), 'section_mode_argmax'\n", + "# ] = 'transit'" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# display(data.section_mode_argmax.value_counts())" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# transit = data.loc[data.section_mode_argmax == 'transit', :].copy()\n", + "# transit['section_duration_argmax'] /= 60.\n", + "\n", + "# transit['mph'] = transit['section_distance_argmax']/transit['section_duration_argmax']\n", + "\n", + "# display(transit[['section_duration_argmax', 'section_distance_argmax', 'mph']].describe())" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# import plotly.express as px\n", + "\n", + "# sp = data.loc[data.section_mode_argmax.isin(['car', 'transit', 'walking']), :]\n", + "# fig = px.line(sp, y='section_distance_argmax', color='section_mode_argmax')\n", + "# fig.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# Close the figure above.\n", + "# plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def get_duration_estimate(df: pd.DataFrame, dset: SPLIT, model_dict: dict):\n", + " \n", + " X_features = ['section_distance_argmax', 'age']\n", + " \n", + " if 'mph' in df.columns:\n", + " X_features += ['mph']\n", + " \n", + " if dset == SPLIT.TRAIN and model_dict is None:\n", + " model_dict = dict()\n", + " \n", + " if dset == SPLIT.TEST and model_dict is None:\n", + " raise AttributeError(\"Expected model dict for testing.\")\n", + " \n", + " if dset == SPLIT.TRAIN:\n", + " for section_mode in df.section_mode_argmax.unique():\n", + " section_data = df.loc[df.section_mode_argmax == section_mode, :]\n", + " if section_mode not in model_dict:\n", + " model_dict[section_mode] = dict()\n", + "\n", + " model = LinearRegression(fit_intercept=True)\n", + "\n", + " X = section_data[\n", + " X_features\n", + " ]\n", + " Y = section_data[['section_duration_argmax']]\n", + "\n", + " model.fit(X, Y.values.ravel())\n", + "\n", + " r2 = r2_score(y_pred=model.predict(X), y_true=Y.values.ravel())\n", + " print(f\"Train R2 for {section_mode}: {r2}\")\n", + "\n", + " model_dict[section_mode]['model'] = model\n", + " \n", + " elif dset == SPLIT.TEST:\n", + " for section_mode in df.section_mode_argmax.unique():\n", + " section_data = df.loc[df.section_mode_argmax == section_mode, :]\n", + " X = section_data[\n", + " X_features\n", + " ]\n", + " Y = section_data[['section_duration_argmax']]\n", + " \n", + " y_pred = model_dict[section_mode]['model'].predict(X)\n", + " r2 = r2_score(y_pred=y_pred, y_true=Y.values.ravel())\n", + " print(f\"Test R2 for {section_mode}: {r2}\")\n", + " \n", + " # Create the new columns for the duration.\n", + " new_columns = ['p_micro','no_trip','s_car','transit','car','s_micro','ridehail','walk','unknown']\n", + " df[new_columns] = 0\n", + " df['temp'] = 0\n", + " \n", + " for section in df.section_mode_argmax.unique():\n", + " X_section = df.loc[df.section_mode_argmax == section, X_features]\n", + " \n", + " # broadcast to all columns.\n", + " df.loc[df.section_mode_argmax == section, 'temp'] = model_dict[section]['model'].predict(X_section)\n", + " \n", + " for c in new_columns:\n", + " df[c] = df['av_' + c] * df['temp']\n", + " \n", + " df.drop(columns=['temp'], inplace=True)\n", + " \n", + " df.rename(columns=dict([(x, 'tt_'+x) for x in new_columns]), inplace=True)\n", + " \n", + " # return model_dict, result_df\n", + " return model_dict, df" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "# Now, we split the data (either inter-user or intra-user split)\n", + "\n", + "# train_data, test_data = get_train_test_splits(data=data, how=SPLIT_TYPE.INTER_USER, shuffle=True)\n", + "\n", + "train_data, test_data = get_train_test_splits(data=data, how=SPLIT_TYPE.INTRA_USER, shuffle=True)\n", + "\n", + "# train_data, test_data = get_train_test_splits(data=data, how=SPLIT_TYPE.TARGET, shuffle=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Index(['user_id', '_id', 'original_user_id', 'cleaned_trip', 'Mode_confirm',\n", + " 'start_fmt_time', 'start:year', 'start:month', 'start:day',\n", + " 'start:hour', 'start:DOW', 'end_fmt_time', 'end:year', 'end:month',\n", + " 'end:day', 'end:hour', 'end:DOW', 'available_modes', 'birth_year',\n", + " 'income_category', 'n_motor_vehicles', 'n_residence_members',\n", + " 'n_residents_u18', 'gender', 'is_student', 'n_residents_with_license',\n", + " 'duration', 'distance_miles', 'start_loc', 'end_loc', 'section_modes',\n", + " 'section_distances', 'start:n_days_in_month', 'end:n_days_in_month',\n", + " 'age', 'is_overnight_trip', 'n_working_residents', 'is_male',\n", + " 'start_lat', 'start_lng', 'end_lat', 'end_lng', 'start:sin_HOD',\n", + " 'start:sin_DOM', 'start:sin_MOY', 'start:cos_HOD', 'start:cos_DOM',\n", + " 'start:cos_MOY', 'end:sin_HOD', 'end:sin_DOM', 'end:sin_MOY',\n", + " 'end:cos_HOD', 'end:cos_DOM', 'end:cos_MOY', 'section_durations',\n", + " 'section_locations_argmax', 'temperature_2m (°F)',\n", + " 'relative_humidity_2m (%)', 'dew_point_2m (°F)', 'rain (inch)',\n", + " 'snowfall (inch)', 'cloud_cover (%)', 'wind_speed_10m (mp/h)',\n", + " 'wind_gusts_10m (mp/h)', 'section_distance_argmax',\n", + " 'section_duration_argmax', 'section_mode_argmax',\n", + " 'section_coordinates_argmax', 'mph', 'chosen', 'av_car', 'av_s_car',\n", + " 'av_no_trip', 'av_walk', 'av_transit', 'av_s_micro', 'av_p_micro',\n", + " 'av_ridehail', 'av_unknown', 'cost_p_micro', 'cost_no_trip',\n", + " 'cost_s_car', 'cost_transit', 'cost_car', 'cost_s_micro',\n", + " 'cost_ridehail', 'cost_walk', 'cost_unknown'],\n", + " dtype='object')\n" + ] + } + ], + "source": [ + "print(train_data.columns)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train R2 for car: 0.9107819633844028\n", + "Train R2 for bicycling: 0.9381499933467025\n", + "Train R2 for walking: 0.7840120837242898\n", + "Train R2 for no_sensed: 0.838164213315293\n", + "Train R2 for transit: 0.9167190695089265\n", + "----------\n", + "Test R2 for car: 0.9115083509175145\n", + "Test R2 for walking: 0.7836715824022498\n", + "Test R2 for no_sensed: 0.8457638150514823\n", + "Test R2 for bicycling: 0.94215202813422\n", + "Test R2 for transit: 0.9130004787209818\n" + ] + } + ], + "source": [ + "params, train_data = get_duration_estimate(train_data, SPLIT.TRAIN, None)\n", + "print(10 * \"-\")\n", + "_, test_data = get_duration_estimate(test_data, SPLIT.TEST, params)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((34064, 97), (8517, 97))" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train_data.shape, test_data.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "# Some helper functions that will help ease redundancy in the code.\n", + "\n", + "def drop_columns(df: pd.DataFrame):\n", + " u_time_features = [\n", + " 'start_fmt_time', 'start:year', 'start:month', 'start:day',\n", + " 'start:hour', 'end_fmt_time', 'end:year',\n", + " 'end:month', 'end:day', 'end:hour', 'end:n_days_in_month', \n", + " 'start:sin_DOM', 'start:sin_MOY', 'start:cos_MOY', 'start:cos_DOM',\n", + " 'end:sin_DOM', 'end:sin_MOY', 'end:cos_DOM', 'end:cos_MOY', 'start:n_days_in_month'\n", + " ]\n", + "\n", + " u_user_features = [\n", + " '_id', 'original_user_id', 'gender', 'birth_year',\n", + "# 'user_id', \n", + " ]\n", + " \n", + " u_trip_features = [\n", + " 'cleaned_trip', 'Mode_confirm', 'available_modes', 'duration', 'start_loc',\n", + " 'end_loc', 'section_modes', 'section_distances', 'section_durations',\n", + " 'section_locations_argmax', 'section_mode_argmax', 'section_coordinates_argmax',\n", + "# 'start_lat', 'start_lng', 'end_lat', 'end_lng'\n", + " ]\n", + " \n", + " # Drop section_mode_argmax and available_modes.\n", + " return df.drop(\n", + " columns=u_time_features + u_user_features + u_trip_features, \n", + " inplace=False\n", + " )\n", + "\n", + "\n", + "def scale_values(df: pd.DataFrame, split: SPLIT, scalers=None):\n", + " # Scale costs using StandardScaler.\n", + " costs = df[[c for c in df.columns if 'cost_' in c]].copy()\n", + " times = df[[c for c in df.columns if 'tt_' in c or 'duration' in c]].copy()\n", + " distances = df[[c for c in df.columns if 'distance' in c]]\n", + " \n", + " print(\n", + " \"Cost columns to be scaled: \", costs.columns,\"\\nTime columns to be scaled: \", times.columns, \\\n", + " \"\\nDistance columns to be scaled: \", distances.columns\n", + " )\n", + " \n", + " if split == SPLIT.TRAIN and scalers is None:\n", + " cost_scaler = StandardScaler()\n", + " tt_scaler = StandardScaler()\n", + " dist_scaler = StandardScaler()\n", + " \n", + " cost_scaled = pd.DataFrame(\n", + " cost_scaler.fit_transform(costs), \n", + " columns=costs.columns, \n", + " index=costs.index\n", + " )\n", + " \n", + " tt_scaled = pd.DataFrame(\n", + " tt_scaler.fit_transform(times),\n", + " columns=times.columns,\n", + " index=times.index\n", + " )\n", + " \n", + " dist_scaled = pd.DataFrame(\n", + " dist_scaler.fit_transform(distances),\n", + " columns=distances.columns,\n", + " index=distances.index\n", + " )\n", + " \n", + " elif split == SPLIT.TEST and scalers is not None:\n", + " \n", + " cost_scaler, tt_scaler, dist_scaler = scalers\n", + " \n", + " cost_scaled = pd.DataFrame(\n", + " cost_scaler.transform(costs), \n", + " columns=costs.columns, \n", + " index=costs.index\n", + " )\n", + " \n", + " tt_scaled = pd.DataFrame(\n", + " tt_scaler.transform(times), \n", + " columns=times.columns, \n", + " index=times.index\n", + " )\n", + " \n", + " dist_scaled = pd.DataFrame(\n", + " dist_scaler.transform(distances),\n", + " columns=distances.columns,\n", + " index=distances.index\n", + " )\n", + " \n", + " else:\n", + " raise NotImplementedError(\"Unknown split\")\n", + " \n", + " # Drop the original columns.\n", + " df.drop(\n", + " columns=costs.columns.tolist() + times.columns.tolist() + distances.columns.tolist(), \n", + " inplace=True\n", + " )\n", + " \n", + " df = df.merge(right=cost_scaled, left_index=True, right_index=True)\n", + " df = df.merge(right=tt_scaled, left_index=True, right_index=True)\n", + " df = df.merge(right=dist_scaled, left_index=True, right_index=True)\n", + " \n", + " return df, (cost_scaler, tt_scaler, dist_scaler)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "# First, drop columns.\n", + "\n", + "train_data = drop_columns(train_data)\n", + "\n", + "# Scale cost.\n", + "# train_data, scalers = scale_values(train_data, SPLIT.TRAIN, None)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "test_data = drop_columns(test_data)\n", + "\n", + "# Scale cost.\n", + "# test_data, _ = scale_values(test_data, SPLIT.TEST, scalers)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['user_id', 'start:DOW', 'end:DOW', 'income_category',\n", + " 'n_motor_vehicles', 'n_residence_members', 'n_residents_u18',\n", + " 'is_student', 'n_residents_with_license', 'distance_miles', 'age',\n", + " 'is_overnight_trip', 'n_working_residents', 'is_male', 'start_lat',\n", + " 'start_lng', 'end_lat', 'end_lng', 'start:sin_HOD', 'start:cos_HOD',\n", + " 'end:sin_HOD', 'end:cos_HOD', 'temperature_2m (°F)',\n", + " 'relative_humidity_2m (%)', 'dew_point_2m (°F)', 'rain (inch)',\n", + " 'snowfall (inch)', 'cloud_cover (%)', 'wind_speed_10m (mp/h)',\n", + " 'wind_gusts_10m (mp/h)', 'section_distance_argmax',\n", + " 'section_duration_argmax', 'mph', 'chosen', 'av_car', 'av_s_car',\n", + " 'av_no_trip', 'av_walk', 'av_transit', 'av_s_micro', 'av_p_micro',\n", + " 'av_ridehail', 'av_unknown', 'cost_p_micro', 'cost_no_trip',\n", + " 'cost_s_car', 'cost_transit', 'cost_car', 'cost_s_micro',\n", + " 'cost_ridehail', 'cost_walk', 'cost_unknown', 'tt_p_micro',\n", + " 'tt_no_trip', 'tt_s_car', 'tt_transit', 'tt_car', 'tt_s_micro',\n", + " 'tt_ridehail', 'tt_walk', 'tt_unknown'],\n", + " dtype='object')" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train_data.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "9" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(train_data.chosen.unique())" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.metrics import classification_report\n", + "from sklearn.model_selection import GridSearchCV, StratifiedKFold\n", + "from pprint import pprint\n", + "from sklearn.inspection import permutation_importance\n", + "from time import perf_counter" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Random Forest classifier" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "CV = True" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 3 folds for each of 12 candidates, totalling 36 fits\n" + ] + } + ], + "source": [ + "from sklearn.ensemble import RandomForestClassifier\n", + "\n", + "# exp question - compute sample weights using user_id.\n", + "\n", + "rf_train = train_data.drop(columns=['chosen', 'start_lat', 'start_lng', 'end_lat', 'end_lng', 'user_id'])\n", + "rf_test = test_data.drop(columns=['chosen', 'start_lat', 'start_lng', 'end_lat', 'end_lng', 'user_id'])\n", + "\n", + "if CV:\n", + "\n", + " model = RandomForestClassifier(random_state=SEED)\n", + "\n", + " # We want to build bootstrapped trees that would not always use all the features.\n", + "\n", + " param_set2 = {\n", + " 'n_estimators': [150, 200, 250],\n", + " 'min_samples_split': [2, 3],\n", + " 'class_weight': ['balanced_subsample'],\n", + " 'max_features': [None, 'sqrt'],\n", + " 'bootstrap': [True]\n", + " }\n", + "\n", + " cv_set2 = StratifiedKFold(n_splits=3, shuffle=True, random_state=SEED)\n", + "\n", + " clf_set2 = GridSearchCV(model, param_set2, cv=cv_set2, n_jobs=-1, scoring='f1_weighted', verbose=1)\n", + "\n", + " start = perf_counter()\n", + "\n", + " clf_set2.fit(\n", + " rf_train,\n", + " train_data.chosen.values.ravel()\n", + " )\n", + "\n", + " time_req = (perf_counter() - start)/60.\n", + "\n", + " best_model = clf_set2.best_estimator_\n", + "else:\n", + " best_model = RandomForestClassifier(\n", + " n_estimators=200,\n", + " max_depth=None,\n", + " min_samples_split=3,\n", + " bootstrap=True,\n", + " class_weight='balanced_subsample',\n", + " random_state=SEED,\n", + " n_jobs=-1\n", + " ).fit(rf_train, train_data.chosen.values.ravel())" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "# tr_f1_set1 = f1_score(\n", + "# y_true=train_data.chosen.values,\n", + "# y_pred=model_set1.predict(rf_train),\n", + "# average='weighted'\n", + "# )\n", + "\n", + "tr_f1_set2 = f1_score(\n", + " y_true=train_data.chosen.values,\n", + " y_pred=best_model.predict(rf_train),\n", + " average='weighted'\n", + ")\n", + "\n", + "# print(tr_f1)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "# te_f1_set1 = f1_score(\n", + "# y_true=test_data.chosen.values,s\n", + "# y_pred=model_set1.predict(rf_test),\n", + "# average='weighted'\n", + "# )\n", + "\n", + "te_f1_set2 = f1_score(\n", + " y_true=test_data.chosen.values,\n", + " y_pred=best_model.predict(rf_test),\n", + " average='weighted'\n", + ")\n", + "\n", + "# print(te_f1)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[BOOTSTRAPPED] | Train F1: 1.0, Test F1: 0.7344136324607913\n" + ] + } + ], + "source": [ + "# print(f\"[NON BOOTSTRAPPED] | Train F1: {tr_f1_set1}, Test F1: {te_f1_set1}\")\n", + "print(f\"[BOOTSTRAPPED] | Train F1: {tr_f1_set2}, Test F1: {te_f1_set2}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[('age', 0.13052971325233453),\n", + " ('income_category', 0.05563529282438796),\n", + " ('n_motor_vehicles', 0.05117069898186447),\n", + " ('mph', 0.04901096852140811),\n", + " ('dew_point_2m (°F)', 0.046445523590839706),\n", + " ('temperature_2m (°F)', 0.04332851959366878),\n", + " ('n_residents_u18', 0.04079428459138862),\n", + " ('cost_transit', 0.03599739479849181),\n", + " ('distance_miles', 0.03410054518532979),\n", + " ('wind_gusts_10m (mp/h)', 0.02664916084517161),\n", + " ('relative_humidity_2m (%)', 0.026557460924608728),\n", + " ('wind_speed_10m (mp/h)', 0.02621237413168378),\n", + " ('n_residence_members', 0.024503799663918274),\n", + " ('section_duration_argmax', 0.024244750804804545),\n", + " ('n_working_residents', 0.023773443113737733),\n", + " ('n_residents_with_license', 0.023628029234229537),\n", + " ('cloud_cover (%)', 0.02246590194480327),\n", + " ('cost_s_micro', 0.022458268111427003),\n", + " ('tt_p_micro', 0.02038772534963909),\n", + " ('start:cos_HOD', 0.019229222189042564),\n", + " ('is_male', 0.01922412856640586),\n", + " ('end:cos_HOD', 0.019203897735717918),\n", + " ('section_distance_argmax', 0.015253896310661041),\n", + " ('end:sin_HOD', 0.015124047093651035),\n", + " ('tt_walk', 0.015027814935913562),\n", + " ('start:DOW', 0.014649650753683777),\n", + " ('start:sin_HOD', 0.014574215098017478),\n", + " ('cost_s_car', 0.013824194676480045),\n", + " ('end:DOW', 0.013763191399800697),\n", + " ('cost_car', 0.013558725784127607),\n", + " ('cost_ridehail', 0.013029878623553506),\n", + " ('tt_transit', 0.012674148135131848),\n", + " ('is_student', 0.010245832739145545),\n", + " ('tt_s_car', 0.009950842169405066),\n", + " ('tt_car', 0.00979054895155533),\n", + " ('tt_s_micro', 0.008712803885105263),\n", + " ('tt_ridehail', 0.008579952310351583),\n", + " ('av_p_micro', 0.005419336568222103),\n", + " ('av_walk', 0.003300488646146801),\n", + " ('av_transit', 0.0028638611907256797),\n", + " ('rain (inch)', 0.0026761074332931224),\n", + " ('av_car', 0.002642247634705974),\n", + " ('av_s_car', 0.0018072513622939949),\n", + " ('snowfall (inch)', 0.0016959335576669646),\n", + " ('tt_unknown', 0.001566922069109617),\n", + " ('av_ridehail', 0.0014388235245583704),\n", + " ('av_s_micro', 0.0009841196788956074),\n", + " ('tt_no_trip', 0.0007220255139425819),\n", + " ('av_unknown', 0.0004000980804160885),\n", + " ('av_no_trip', 0.00017193791853587658),\n", + " ('is_overnight_trip', 0.0),\n", + " ('cost_p_micro', 0.0),\n", + " ('cost_no_trip', 0.0),\n", + " ('cost_walk', 0.0),\n", + " ('cost_unknown', 0.0)]\n" + ] + } + ], + "source": [ + "# Feature importances - gini entropy\n", + "\n", + "pprint(\n", + " sorted(\n", + " zip(\n", + " best_model.feature_names_in_, \n", + " best_model.feature_importances_\n", + " ), \n", + " key=lambda x: x[-1], reverse=True\n", + " )\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'permutation_importance' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[15], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m importance \u001b[38;5;241m=\u001b[39m \u001b[43mpermutation_importance\u001b[49m(\n\u001b[1;32m 2\u001b[0m best_model,\n\u001b[1;32m 3\u001b[0m rf_test,\n\u001b[1;32m 4\u001b[0m test_data\u001b[38;5;241m.\u001b[39mchosen\u001b[38;5;241m.\u001b[39mvalues,\n\u001b[1;32m 5\u001b[0m n_repeats\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m5\u001b[39m,\n\u001b[1;32m 6\u001b[0m random_state\u001b[38;5;241m=\u001b[39mSEED,\n\u001b[1;32m 7\u001b[0m n_jobs\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m,\n\u001b[1;32m 8\u001b[0m scoring\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mf1_weighted\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 9\u001b[0m )\n", + "\u001b[0;31mNameError\u001b[0m: name 'permutation_importance' is not defined" + ] + } + ], + "source": [ + "importance = permutation_importance(\n", + " best_model,\n", + " rf_test,\n", + " test_data.chosen.values,\n", + " n_repeats=5,\n", + " random_state=SEED,\n", + " n_jobs=-1,\n", + " scoring='f1_weighted'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pd.DataFrame(\n", + " {\n", + " 'feature names': test_data.columns.delete(\n", + " test_data.columns.isin(['chosen'])\n", + " ),\n", + " 'imp_mean': importance.importances_mean, \n", + " 'imp_std': importance.importances_std\n", + " }\n", + ").sort_values(by=['imp_mean'], axis='rows', ascending=False).head(20)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# fig, ax = plt.subplots(nrows=1, ncols=2)\n", + "y_pred = best_model.predict(rf_test)\n", + "pred_df = pd.DataFrame(\n", + " {\n", + " 'y_pred': y_pred.ravel(),\n", + " 'y_true': test_data.chosen.values.ravel()\n", + " }\n", + ")\n", + "\n", + "# pred_df.y_pred.hist(ax=ax[0])\n", + "# pred_df.y_true.hist(ax=ax[1])\n", + "\n", + "# ax[0].set(\n", + "# xlabel=\"Label\",\n", + "# ylabel=\"Count\",\n", + "# title=\"Prediction\"\n", + "# )\n", + "\n", + "# ax[1].set(\n", + "# xlabel=\"Label\",\n", + "# ylabel=\"Count\",\n", + "# title=\"GT\"\n", + "# )\n", + "\n", + "# plt.tight_layout()\n", + "# plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(7, 7))\n", + "cm = ConfusionMatrixDisplay.from_estimator(\n", + " best_model,\n", + " X=rf_test,\n", + " y=test_data[['chosen']],\n", + " ax=ax\n", + ")\n", + "# ax.set_xticklabels(TARGETS, rotation=45)\n", + "# ax.set_yticklabels(TARGETS)\n", + "fig.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(classification_report(y_true=pred_df.y_true, y_pred=pred_df.y_pred))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## XGBoost" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# from sklearn.utils.class_weight import compute_sample_weight\n", + "\n", + "# sample_weights = compute_sample_weight(class_weight='balanced', y=train_data.user_id.values.ravel())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from xgboost import XGBClassifier\n", + "\n", + "y_train = train_data.chosen.values.ravel() - 1\n", + "y_test = test_data.chosen.values.ravel()\n", + "\n", + "# weights = compute_class_weight(class_weight='balanced', classes=np.unique(y_pred), y_pred)\n", + "\n", + "xgm = XGBClassifier(\n", + " n_estimators=250,\n", + " max_depth=None,\n", + " tree_method='hist',\n", + " objective='multi:softmax',\n", + " num_class=9\n", + ").fit(rf_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "preds = xgm.predict(rf_test) + 1\n", + "\n", + "print(classification_report(y_true=y_test, y_pred=preds))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import pickle\n", + "\n", + "# # RF_RM.pkl = 0.8625 on test.\n", + "# # RF_RM_1.pkl = 0.77 on test.\n", + "# with open('../models/RF_RM_1.pkl', 'wb') as f:\n", + "# f.write(pickle.dumps(model))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## TODO:\n", + "\n", + "\n", + "- Explain why location might not be a good feature to add (plot start and end on map and explain how model might just overfit to the raw coordinates)\n", + "- Merge `unknown` and `no_trip` into one category and validate against models trained on (a) separate labels (b) dropped labels\n", + "- Explore more of the abnormal `walking` trips" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" + }, + "kernelspec": { + "display_name": "emission", + "language": "python", + "name": "emission" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/viz_scripts/rm_src/cost_time_avl_preprocessing.ipynb b/viz_scripts/rm_src/cost_time_avl_preprocessing.ipynb index e535e2f..9f2bb05 100644 --- a/viz_scripts/rm_src/cost_time_avl_preprocessing.ipynb +++ b/viz_scripts/rm_src/cost_time_avl_preprocessing.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -11,42 +11,304 @@ "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "import ast\n", - "import geopandas as gpd\n", "from traceback import print_exception\n", "\n", "%matplotlib inline" ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 2, "metadata": {}, + "outputs": [], "source": [ - "# Sections\n", + "# Data loading. Refer to the mnl_exploration.ipynb file for details on how user-level features are generated.\n", "\n", - "### 0: Refer to the mnl_exploration.ipynb notebook for specifics about user-level preprocessing\n", - "### 1. Creating the dummy variables for the available modes\n", - "### 2. Creating trip-specific variables for each available mode (cost and time)\n", - "### 3. ??" + "df = pd.read_csv('../data/final_modeling_data.csv')" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Shape: (74631, 57)\n" + ] + } + ], + "source": [ + "print(\"Shape: \", df.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ - "# Data loading. Refer to the mnl_exploration.ipynb file for details on how user-level features are generated.\n", + "df.drop_duplicates(inplace=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Add weather info" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Downloaded using OpenMeteo API.\n", + "weather_df = pd.read_csv('../data/denver_weather_data.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "weather_df.time = pd.to_datetime(weather_df.time, utc=True).dt.tz_convert('America/Denver')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
temperature_2m (°F)relative_humidity_2m (%)dew_point_2m (°F)rain (inch)snowfall (inch)cloud_cover (%)wind_speed_10m (mp/h)wind_gusts_10m (mp/h)
count64728.00000064728.00000064728.00000064728.00000064728.00000064728.00000064728.00000064728.000000
mean49.36332552.40535829.1052540.0011580.00495829.3645415.53808411.855783
std21.50211223.37017915.5786720.0086320.03559033.1812153.1671995.973471
min-22.4000005.000000-27.8000000.0000000.0000000.0000000.0000001.100000
25%32.50000033.00000018.0000000.0000000.0000000.0000003.5000007.600000
50%49.20000053.00000028.9000000.0000000.00000018.0000004.90000010.500000
75%65.60000071.00000041.5000000.0000000.00000046.0000006.80000015.000000
max100.900000100.00000068.8000000.4490001.378000100.00000045.90000077.600000
\n", + "
" + ], + "text/plain": [ + " temperature_2m (°F) relative_humidity_2m (%) dew_point_2m (°F) \\\n", + "count 64728.000000 64728.000000 64728.000000 \n", + "mean 49.363325 52.405358 29.105254 \n", + "std 21.502112 23.370179 15.578672 \n", + "min -22.400000 5.000000 -27.800000 \n", + "25% 32.500000 33.000000 18.000000 \n", + "50% 49.200000 53.000000 28.900000 \n", + "75% 65.600000 71.000000 41.500000 \n", + "max 100.900000 100.000000 68.800000 \n", + "\n", + " rain (inch) snowfall (inch) cloud_cover (%) wind_speed_10m (mp/h) \\\n", + "count 64728.000000 64728.000000 64728.000000 64728.000000 \n", + "mean 0.001158 0.004958 29.364541 5.538084 \n", + "std 0.008632 0.035590 33.181215 3.167199 \n", + "min 0.000000 0.000000 0.000000 0.000000 \n", + "25% 0.000000 0.000000 0.000000 3.500000 \n", + "50% 0.000000 0.000000 18.000000 4.900000 \n", + "75% 0.000000 0.000000 46.000000 6.800000 \n", + "max 0.449000 1.378000 100.000000 45.900000 \n", + "\n", + " wind_gusts_10m (mp/h) \n", + "count 64728.000000 \n", + "mean 11.855783 \n", + "std 5.973471 \n", + "min 1.100000 \n", + "25% 7.600000 \n", + "50% 10.500000 \n", + "75% 15.000000 \n", + "max 77.600000 " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "weather_df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# First, convert to UTC. Then, parse to America/Denver.\n", + "df['start_fmt_time'] = pd.to_datetime(\n", + " df['start_fmt_time'], utc=True\n", + ").dt.tz_convert('America/Denver')\n", "\n", - "df = pd.read_csv('../data/modeling_w_duration.csv')" + "original_shape = df.shape[0]" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ - "df.drop_duplicates(inplace=True)" + "# Round start time to nearest hour.\n", + "df['start_time_rounded'] = df.start_fmt_time.dt.round(\n", + " 'H', ambiguous='infer', nonexistent='shift_backward'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# True intersection\n", + "df = df.merge(right=weather_df, left_on='start_time_rounded', right_on='time', how='inner')" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Old shape: 74631. new shape: 74622\n" + ] + } + ], + "source": [ + "print(f\"Old shape: {original_shape}. new shape: {df.shape[0]}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "df.drop(columns=['start_time_rounded', 'time'], inplace=True)" ] }, { @@ -58,10 +320,34 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ + "# We want this to be ordinal because 2 > 1 implies that it has higher associated value.\n", + "\n", + "income_ordinal_mapping = {\n", + " np.nan: 0,\n", + " 'Prefer not to say': 0,\n", + " 'Less than $24,999': 1,\n", + " '$25,000-$49,999': 2,\n", + " '$50,000-$99,999': 3,\n", + " '$100,000 -$149,999': 4,\n", + " '$150,000-$199,999': 5\n", + "}\n", + "\n", + "df.income_category = df.income_category.apply(lambda x: income_ordinal_mapping[x])" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# | [d1, d2, d3] | [t1, t2, t3] | [m1, m2, m3] |\n", + "\n", + "\n", "def compute_argmax(df: pd.DataFrame):\n", " # Create the two columns.\n", " df[['section_distance_argmax', 'section_duration_argmax', 'section_mode_argmax', 'section_coordinates_argmax']] = None\n", @@ -76,9 +362,14 @@ " parsed_modes = ast.literal_eval(row_dict['section_modes'])\n", "\n", " argmax_ix = np.argmax(parsed_distances)\n", - "\n", - " row_dict['section_distance_argmax'] = parsed_distances[argmax_ix] * 0.0006213712 # Pick the argmax and scale to miles.\n", - " row_dict['section_duration_argmax'] = parsed_durations[argmax_ix] / 60 # Pick the argmax and scale to minutes.\n", + " \n", + " # Pick the argmax and scale to miles. (meters -> miles)\n", + " row_dict['section_distance_argmax'] = parsed_distances[argmax_ix] * 0.0006213712\n", + " \n", + " # Pick the argmax and scale to minutes.\n", + " row_dict['section_duration_argmax'] = parsed_durations[argmax_ix] / 60\n", + " \n", + " # Pick the argmax mode.\n", " row_dict['section_mode_argmax'] = parsed_modes[argmax_ix]\n", " \n", " row_dict['mark'] = False\n", @@ -93,93 +384,676 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# Let's plot the mode-wise durations as a function of distance.\n", - "df_modded = compute_argmax(df)" + "df = compute_argmax(df)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ - "df_modded = df_modded.loc[~df_modded.mark, :].reset_index(drop=True, inplace=False).drop(columns=['mark'], inplace=False)" + "df = df.loc[~df.mark, :].reset_index(drop=True, inplace=False).drop(columns=['mark'], inplace=False)" ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 17, "metadata": {}, + "outputs": [], "source": [ - "Intercept and coefficient values for determining the duration from distance (Obtained from time_distance_estimation.ipynb):\n", - "\n", - "```\n", - "Format:\n", - "-> mode train_r2 test_r2\n", - "-> intercept: x, coefficient: y\n", - "\n", - "\n", - "walking 0.24312136039586707 0.5572752052765471\n", - "intercept: 14.09698152519682 coeff: 19.153802211061134\n", - "bicycling 0.5986205637411164 0.646267142326254\n", - "intercept: 4.753590860550791 coeff: 4.2723965916811935\n", - "car 0.45228118668156203 0.6040302860034135\n", - "intercept: 10.515751350707365 coeff: 1.112111276629702\n", - "no_sensed 0.5188696686147352 0.5028191556675814\n", - "intercept: 9.423026094931313 coeff: 2.640429444466706\n", - "public_transport 0.47377939742617625 0.5916737429017003\n", - "intercept: 7.5000351741492395 coeff: 1.839562017986485\n", - "```" + "# Drop instances where duration/distance is unusable.\n", + "df.drop(\n", + " index=df.loc[(df.section_distance_argmax <= 0) | (df.section_duration_argmax <= 0), :].index,\n", + " inplace=False\n", + ").reset_index(drop=True, inplace=True)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "# bus, train, bicycling, walking, car\n", + "# split-apply-combine\n", + "def drop_outliers(df: pd.DataFrame) -> pd.DataFrame:\n", + " def filter_by_percentiles(group):\n", + " distance_low = group['section_distance_argmax'].quantile(0.1)\n", + " distance_high = group['section_distance_argmax'].quantile(0.9)\n", + " duration_low = group['section_duration_argmax'].quantile(0.1)\n", + " duration_high = group['section_duration_argmax'].quantile(0.9)\n", + " \n", + " l1_filter = group[\n", + " (group['section_distance_argmax'] >= distance_low) &\n", + " (group['section_distance_argmax'] <= distance_high)\n", + " ].reset_index(drop=True)\n", + " \n", + " l2_filter = l1_filter[\n", + " (l1_filter['section_duration_argmax'] >= duration_low) &\n", + " (l1_filter['section_duration_argmax'] <= duration_high)\n", + " ].reset_index(drop=True)\n", + " \n", + " return l2_filter\n", + " \n", + " return df.groupby('section_mode_argmax').apply(filter_by_percentiles).reset_index(drop=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ - "df_modded['no_trip'] = df_modded.apply(\n", - " lambda x: 'Do not have vehicle' in x.available_modes or 'None' in x.available_modes, axis=1\n", + "filtered_df = drop_outliers(df)\n", + "\n", + "# Ideal speed. distance/time.\n", + "filtered_df['mph'] = (\n", + " (filtered_df['section_distance_argmax'] * 60.)/filtered_df['section_duration_argmax']\n", ")" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ - "no_sensed = df_modded.apply(\n", - " lambda x: 'no_sensed' == x.section_mode_argmax, axis=1\n", - ")\n", + "def filter_mph(df: pd.DataFrame) -> pd.DataFrame:\n", + " \n", + " MPH_THRESHOLDS = {\n", + " # https://www.sciencedirect.com/science/article/pii/S2210670718304682\n", + " 'bicycling': 15.,\n", + " # https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7806575/\n", + " 'walking': 2.93\n", + " }\n", + " \n", + " def custom_filter(group):\n", + " # Drop data specified in the dict manually.\n", + " if group.name in MPH_THRESHOLDS.keys():\n", + " f_df = group[group['mph'] <= MPH_THRESHOLDS[group.name]]\n", + " else:\n", + " mph_low = group['mph'].quantile(0.1)\n", + " mph_high = group['mph'].quantile(0.9)\n", "\n", - "n, d = no_sensed[no_sensed == True].shape[0], no_sensed.shape[0]\n", - "print(n, d)\n", - "print((n/d)*100.)" + " f_df = group[(group['mph'] >= mph_low) & (group['mph'] <= mph_high)]\n", + " \n", + " return f_df\n", + " \n", + " return df.groupby('section_mode_argmax').apply(custom_filter).reset_index(drop=True)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ - "n = df_modded.loc[df_modded.no_trip, :].shape[0]\n", - "d = df_modded.shape[0]\n", - "print(n, d)\n", - "print((n/d) * 100.)" + "filtered_df = filter_mph(filtered_df)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
section_distance_argmaxsection_duration_argmax
countmeanstdmin25%50%75%maxcountmeanstdmin25%50%75%max
section_mode_argmax
bicycling6894.02.1394110.8631500.8163011.5082451.9541512.5704084.8630866894.013.6059434.9737915.8833339.91527912.60526816.44149428.536488
bus262.01.4152400.5975870.3728750.9224741.4553521.9141972.790900262.08.8709383.4957832.9631776.5598038.24097410.53729019.882077
car22816.03.9718982.4654580.9025742.1413053.3318985.10122914.18317622816.013.6251996.4578265.6133498.62463511.84566416.99331134.438154
no_sensed1537.02.5943222.2860700.1759341.0195841.9249043.36957913.1542171537.015.28034811.2996531.0450787.12964912.03516720.78817652.847837
train40.011.0875402.2841916.35232510.18673010.38422312.41472215.74303740.026.4695555.94026318.18095321.97713524.72284429.04570040.568931
walking11032.00.4786250.3742180.1195070.2202220.3473970.5986982.25137111032.020.02442913.3724015.2842339.43475615.74349526.81028561.655195
\n", + "
" + ], + "text/plain": [ + " section_distance_argmax \\\n", + " count mean std min \n", + "section_mode_argmax \n", + "bicycling 6894.0 2.139411 0.863150 0.816301 \n", + "bus 262.0 1.415240 0.597587 0.372875 \n", + "car 22816.0 3.971898 2.465458 0.902574 \n", + "no_sensed 1537.0 2.594322 2.286070 0.175934 \n", + "train 40.0 11.087540 2.284191 6.352325 \n", + "walking 11032.0 0.478625 0.374218 0.119507 \n", + "\n", + " \\\n", + " 25% 50% 75% max \n", + "section_mode_argmax \n", + "bicycling 1.508245 1.954151 2.570408 4.863086 \n", + "bus 0.922474 1.455352 1.914197 2.790900 \n", + "car 2.141305 3.331898 5.101229 14.183176 \n", + "no_sensed 1.019584 1.924904 3.369579 13.154217 \n", + "train 10.186730 10.384223 12.414722 15.743037 \n", + "walking 0.220222 0.347397 0.598698 2.251371 \n", + "\n", + " section_duration_argmax \\\n", + " count mean std min \n", + "section_mode_argmax \n", + "bicycling 6894.0 13.605943 4.973791 5.883333 \n", + "bus 262.0 8.870938 3.495783 2.963177 \n", + "car 22816.0 13.625199 6.457826 5.613349 \n", + "no_sensed 1537.0 15.280348 11.299653 1.045078 \n", + "train 40.0 26.469555 5.940263 18.180953 \n", + "walking 11032.0 20.024429 13.372401 5.284233 \n", + "\n", + " \n", + " 25% 50% 75% max \n", + "section_mode_argmax \n", + "bicycling 9.915279 12.605268 16.441494 28.536488 \n", + "bus 6.559803 8.240974 10.537290 19.882077 \n", + "car 8.624635 11.845664 16.993311 34.438154 \n", + "no_sensed 7.129649 12.035167 20.788176 52.847837 \n", + "train 21.977135 24.722844 29.045700 40.568931 \n", + "walking 9.434756 15.743495 26.810285 61.655195 " + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "filtered_df.groupby('section_mode_argmax')[['section_distance_argmax', 'section_duration_argmax']].describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mph
countmeanstdmin25%50%75%max
section_mode_argmax
bicycling6894.09.6205812.3537762.8175807.9284989.65686611.28416714.998472
bus262.09.8418723.1534654.2331957.2158559.81802412.48795315.579753
car22816.017.1542125.4561968.51005512.61861016.42148521.20360829.536059
no_sensed1537.010.3879264.5759564.6081776.5969609.28998013.20603122.796647
train40.025.4152283.46861117.51393823.23404825.79593427.93265730.865389
walking11032.01.6053260.7474900.1315920.9830491.5913852.2474522.929953
\n", + "
" + ], + "text/plain": [ + " mph \\\n", + " count mean std min 25% \n", + "section_mode_argmax \n", + "bicycling 6894.0 9.620581 2.353776 2.817580 7.928498 \n", + "bus 262.0 9.841872 3.153465 4.233195 7.215855 \n", + "car 22816.0 17.154212 5.456196 8.510055 12.618610 \n", + "no_sensed 1537.0 10.387926 4.575956 4.608177 6.596960 \n", + "train 40.0 25.415228 3.468611 17.513938 23.234048 \n", + "walking 11032.0 1.605326 0.747490 0.131592 0.983049 \n", + "\n", + " \n", + " 50% 75% max \n", + "section_mode_argmax \n", + "bicycling 9.656866 11.284167 14.998472 \n", + "bus 9.818024 12.487953 15.579753 \n", + "car 16.421485 21.203608 29.536059 \n", + "no_sensed 9.289980 13.206031 22.796647 \n", + "train 25.795934 27.932657 30.865389 \n", + "walking 1.591385 2.247452 2.929953 " + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "filtered_df.groupby('section_mode_argmax')[['mph']].describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dropped 32041 rows.\n" + ] + } + ], + "source": [ + "print(f\"Dropped {df.shape[0] - filtered_df.shape[0]} rows.\")" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'p_micro': 1, 'no_trip': 2, 's_car': 3, 'transit': 4, 'car': 5, 's_micro': 6, 'ridehail': 7, 'walk': 8, 'unknown': 9}\n" + ] + } + ], + "source": [ + "## Define the mapping strategy\n", + "\n", + "\"\"\"\n", + "p_micro: Personal micromobility\n", + "s_micro: Shared micromobility\n", + "s_car: Shared car\n", + "car: Car/rental car\n", + "transit: train + bus\n", + "no_trip: No vehicle / None\n", + "ridehail: Uber/Lyft\n", + "\"\"\"\n", + "\n", + "available = {\n", + " 'Bicycle': 'p_micro',\n", + " 'Do not have vehicle': 'no_trip',\n", + " 'Get a ride from a friend or family member': 's_car',\n", + " 'None': 'no_trip',\n", + " 'Public transportation (bus, subway, light rail, etc.)': 'transit',\n", + " 'Rental car (including Zipcar/ Car2Go)': 'car',\n", + " 'Shared bicycle or scooter': 's_micro',\n", + " 'Skateboard': 'p_micro',\n", + " 'Taxi (regular taxi, Uber, Lyft, etc)': 'ridehail',\n", + " 'Walk/roll': 'walk'\n", + "}\n", + "\n", + "# Map each sensed mode to the binary indicators.\n", + "section_mode_mapping = {\n", + " 'bicycling': ['p_micro', 's_micro'],\n", + " 'bus': ['transit'],\n", + " 'car': ['s_car', 'car', 'ridehail'],\n", + " 'no_sensed': ['unknown'],\n", + " 'train': ['transit'],\n", + " 'walking': ['walk']\n", + "}\n", + "\n", + "# For target - mode_confirm\n", + "# target_mapping = {\n", + "# 'Regular Bike': 'p_micro',\n", + "# 'Walk': 'walk',\n", + "# 'Gas Car, with others': 's_car',\n", + "# 'Gas Car, drove alone': 'car',\n", + "# 'Bikeshare': 's_micro',\n", + "# 'Other': 'unknown',\n", + "# 'Bus': 'transit',\n", + "# 'Not a Trip': 'no_trip',\n", + "# 'E-bike': 'p_micro',\n", + "# 'Train': 'transit',\n", + "# 'Taxi/Uber/Lyft': 'ridehail',\n", + "# 'Free Shuttle': 'transit',\n", + "# 'Scooter share': 's_micro',\n", + "# 'Skate board': 'p_micro'\n", + "# }\n", + "\n", + "# For target - replaced_mode\n", + "target_mapping = {\n", + " 'Regular Bike': 'p_micro', \n", + " 'Walk': 'walk', \n", + " 'No Travel': 'no_trip', \n", + " 'Other': 'unknown',\n", + " 'Gas Car, with others': 's_car',\n", + " 'Gas Car, drove alone': 'car',\n", + " 'Train': 'transit',\n", + " 'Scooter share': 's_micro', \n", + " 'Taxi/Uber/Lyft': 'ridehail', \n", + " 'Free Shuttle': 'transit', \n", + " 'Skate board': 'p_micro',\n", + " 'Bikeshare': 's_micro',\n", + " 'Bus': 'transit',\n", + " 'Not a Trip': 'no_trip',\n", + " 'E-bike': 'p_micro'\n", + "}\n", + "\n", + "# # These values were obtained using a simple linear regression model. Specifics can be found in time_distance_estimation.ipynb\n", + "# duration_dict = {\n", + "# 'walk': {\n", + "# 'intercept': 14.09698152519682,\n", + "# 'coef': 19.153802211061134\n", + "# },\n", + "# 'p_micro': {\n", + "# 'intercept': 4.753590860550791,\n", + "# 'coef': 4.2723965916811935\n", + "# },\n", + "# 's_micro': {\n", + "# 'intercept': 4.753590860550791,\n", + "# 'coef': 4.2723965916811935\n", + "# },\n", + "# 's_car': {\n", + "# 'intercept': 10.515751350707365, \n", + "# 'coef': 1.112111276629702\n", + "# },\n", + "# 'car': {\n", + "# 'intercept': 10.515751350707365, \n", + "# 'coef': 1.112111276629702\n", + "# },\n", + "# 'ridehail': {\n", + "# 'intercept': 10.515751350707365, \n", + "# 'coef': 1.112111276629702\n", + "# },\n", + "# 'transit': {\n", + "# 'intercept': 7.5000351741492395,\n", + "# 'coef': 1.839562017986485\n", + "# },\n", + "# 'unknown': {\n", + "# 'intercept': 9.423026094931313,\n", + "# 'coef': 2.640429444466706\n", + "# },\n", + "# 'no_trip': {\n", + "# 'intercept': 0.,\n", + "# 'coef': 0.\n", + "# }\n", + "# }\n", + "\n", + "ordinal_mapping = {'p_micro': 1, 'no_trip': 2, 's_car': 3, 'transit': 4, 'car': 5, 's_micro': 6, 'ridehail': 7, 'walk': 8, 'unknown': 9}\n", + "reverse_ordinal_mapping = {v:k for k,v in ordinal_mapping.items()}\n", + "\n", + "print(ordinal_mapping)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, "metadata": {}, "outputs": [], "source": [ - "def generate_available_features(df: pd.DataFrame, available_mode_map: dict, section_mode_map: dict, ordinal_mapper: dict):\n", + "def generate_available_features(\n", + " df: pd.DataFrame, av: dict, sm: dict, target_mapper: dict\n", + "):\n", " \"\"\"\n", " This method generates the wide-form dummy features for available modes.\n", " The current implementation uses (section_mode_argmax OR available_modes) to indicate mode availability.\n", @@ -188,134 +1062,86 @@ " # Reset indices.\n", " df = df.reset_index(drop=True, inplace=False)\n", "\n", - " columns = list(available_mode_map.values()) + ['unknown']\n", + " columns = list(set(av.values())) + ['unknown']\n", "\n", " # Create the columns along with the 'chosen' column.\n", - " df[columns + ['chosen']] = 0\n", + " df[columns] = 0\n", "\n", " row_dicts = list()\n", "\n", - " for _, row in df.iterrows():\n", + " for i, row in df.iterrows():\n", " row_dict = row.to_dict()\n", "\n", " # Access the available modes. Split on ; and strip all the elements.\n", " available_modes = [x.strip() for x in str(row_dict['available_modes']).split(';')]\n", - "\n", + " \n", + " # Set all the available modes associated with the chosen modes too.\n", + " # Toggle this flag off if you don't want the target to be considered as an available mode.\n", + " # row_dict[row_dict['chosen']] = 1\n", + " \n", + " row_dict['chosen'] = target_mapper[row_dict['chosen']]\n", + " \n", " # Update the available modes.\n", " for available_mode in available_modes:\n", - " row_dict[available_mode_map[available_mode]] = 1\n", + " row_dict[av[available_mode]] = 1\n", " \n", " # Now, look at the section_mode_argmax as a proxy for the confirmed mode.\n", - " chosen_modes = section_mode_map[row_dict['section_mode_argmax']]\n", + " chosen_modes = sm[row_dict['section_mode_argmax']]\n", "\n", " # Determine the length of the mapping.\n", " n = len(chosen_modes)\n", "\n", - " # Go ahead and modify the current dict with the first value.\n", - " row_dict['chosen'] = ordinal_mapper[chosen_modes[0]]\n", - " row_dict['primary_mode'] = 1\n", + " # # Go ahead and modify the current dict with the first value.\n", + " # row_dict['chosen'] = ordinal_mapper[chosen_modes[0]]\n", + " # row_dict['primary_mode'] = 1\n", "\n", " # Also update the available modes.\n", " for chosen_mode in chosen_modes:\n", " row_dict[chosen_mode] = 1\n", - " \n", - " # Append thee first row to the list.\n", + "\n", + " # # Append the first row to the list.\n", " row_dicts.append(row_dict)\n", " \n", " constructed = pd.DataFrame(row_dicts)\n", - " constructed.rename(columns=dict([(c, 'av_'+c) for c in ordinal_mapper.keys()]), inplace=True)\n", + " constructed.rename(columns=dict([(c, 'av_'+c) for c in target_mapper.keys()]), inplace=True)\n", "\n", " return constructed" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```language=python\n", + "{'p_micro': 1, 'no_trip': 2, 's_car': 3, 'transit': 4, 'car': 5, 's_micro': 6, 'ridehail': 7, 'walk': 8, 'unknown': 9}\n", + "```" + ] + }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "metadata": {}, "outputs": [], "source": [ - "## Define the mapping strategy\n", + "def generate_target_variable(df: pd.DataFrame, mapper: dict):\n", + " df['chosen'] = df['Replaced_mode'].apply(lambda x: mapper[x])\n", + " df.drop(columns=['Replaced_mode'], inplace=True)\n", + " return df\n", "\n", - "available = {\n", - " 'Bicycle': 'p_micro',\n", - " 'Do not have vehicle': 'no_trip',\n", - " 'Get a ride from a friend or family member': 's_car',\n", - " 'None': 'no_trip',\n", - " 'Public transportation (bus, subway, light rail, etc.)': 'transit',\n", - " 'Rental car (including Zipcar/ Car2Go)': 'car',\n", - " 'Shared bicycle or scooter': 's_micro',\n", - " 'Skateboard': 'p_micro',\n", - " 'Taxi (regular taxi, Uber, Lyft, etc)': 'ridehail',\n", - " 'Walk/roll': 'walk'\n", - "}\n", - "\n", - "# Map each sensed mode to the binary indicators.\n", - "section_mode_mapping = {\n", - " 'bicycling': ['p_micro', 's_micro'],\n", - " 'bus': ['transit'],\n", - " 'car': ['s_car', 'car', 'ridehail'],\n", - " 'no_sensed': ['unknown'],\n", - " 'train': ['transit'],\n", - " 'walking': ['walk']\n", - "}\n", - "\n", - "# These values were obtained using a simple linear regression model. Specifics can be found in time_distance_estimation.ipynb\n", - "duration_dict = {\n", - " 'walk': {\n", - " 'intercept': 14.09698152519682,\n", - " 'coef': 19.153802211061134\n", - " },\n", - " 'p_micro': {\n", - " 'intercept': 4.753590860550791,\n", - " 'coef': 4.2723965916811935\n", - " },\n", - " 's_micro': {\n", - " 'intercept': 4.753590860550791,\n", - " 'coef': 4.2723965916811935\n", - " },\n", - " 's_car': {\n", - " 'intercept': 10.515751350707365, \n", - " 'coef': 1.112111276629702\n", - " },\n", - " 'car': {\n", - " 'intercept': 10.515751350707365, \n", - " 'coef': 1.112111276629702\n", - " },\n", - " 'ridehail': {\n", - " 'intercept': 10.515751350707365, \n", - " 'coef': 1.112111276629702\n", - " },\n", - " 'transit': {\n", - " 'intercept': 7.5000351741492395,\n", - " 'coef': 1.839562017986485\n", - " },\n", - " 'unknown': {\n", - " 'intercept': 9.423026094931313,\n", - " 'coef': 2.640429444466706\n", - " },\n", - " 'no_trip': {\n", - " 'intercept': 0.,\n", - " 'coef': 0.\n", - " }\n", - "}\n", - "\n", - "ordinal_mapping = {'p_micro': 1, 'no_trip': 2, 's_car': 3, 'transit': 4, 'car': 5, 's_micro': 6, 'ridehail': 7, 'walk': 8, 'unknown': 9}\n", - "reverse_ordinal_mapping = {v:k for k,v in ordinal_mapping.items()}\n", - "\n", - "print(ordinal_mapping)" + "filtered_df = generate_target_variable(filtered_df, target_mapping)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": {}, "outputs": [], "source": [ - "# Let's only select data that we require and copy it into a separate df.\n", - "av_df = df_modded[['user_id', 'section_distance_argmax', 'section_duration_argmax', 'section_mode_argmax', 'available_modes']].copy()\n", + "# Generate wide-format availability indicators..\n", + "av_df = generate_available_features(filtered_df, available, section_mode_mapping, ordinal_mapping)\n", "\n", - "# Update the same df.\n", - "av_df = generate_available_features(av_df, available, section_mode_mapping, ordinal_mapping)" + "# Collapse train and bus into 'transit'.\n", + "av_df.loc[av_df.section_mode_argmax.isin(['bus', 'train']), 'section_mode_argmax'] = 'transit'" ] }, { @@ -324,124 +1150,275 @@ "metadata": {}, "outputs": [], "source": [ - "av_df.head(10)" + "av_df.section_mode_argmax.unique()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
user_id_idoriginal_user_idcleaned_tripMode_confirmstart_fmt_timestart:yearstart:monthstart:daystart:hour...chosenav_s_carav_walkav_carav_ridehailav_p_microav_no_tripav_s_microav_transitav_unknown
06373dfb8cb9b47e88e8f76adcfadde20611fdd7cbc8ce4a9e3911adb6373dfb8-cb9b-47e8-8e8f-76adcfadde206082e48127dcf1f393b70ea8Regular Bike2021-04-22 18:48:48.365291-06:002021.04.022.018.0...1000010100
16373dfb8cb9b47e88e8f76adcfadde20611fdd7cbc8ce4a9e3911add6373dfb8-cb9b-47e8-8e8f-76adcfadde2060830ead2b9762e085f774f2Regular Bike2021-04-23 10:45:48.219950-06:002021.04.023.010.0...1000010100
26373dfb8cb9b47e88e8f76adcfadde20611fdd7ebc8ce4a9e3911af46373dfb8-cb9b-47e8-8e8f-76adcfadde20608b21db654c4a5ab2fa4364Other2021-04-29 14:05:50.979267-06:002021.04.029.014.0...9000010100
36373dfb8cb9b47e88e8f76adcfadde20611fdd7fbc8ce4a9e3911af96373dfb8-cb9b-47e8-8e8f-76adcfadde20608c1f002f548f5db71d16f9Other2021-04-30 08:34:49.162054-06:002021.04.030.08.0...9000010100
46373dfb8cb9b47e88e8f76adcfadde20611fdd7fbc8ce4a9e3911afb6373dfb8-cb9b-47e8-8e8f-76adcfadde20608c8f7fb2d3b88f6947766bRegular Bike2021-04-30 11:58:07.194775-06:002021.04.030.011.0...1000010100
\n", + "

5 rows × 79 columns

\n", + "
" + ], + "text/plain": [ + " user_id _id \\\n", + "0 6373dfb8cb9b47e88e8f76adcfadde20 611fdd7cbc8ce4a9e3911adb \n", + "1 6373dfb8cb9b47e88e8f76adcfadde20 611fdd7cbc8ce4a9e3911add \n", + "2 6373dfb8cb9b47e88e8f76adcfadde20 611fdd7ebc8ce4a9e3911af4 \n", + "3 6373dfb8cb9b47e88e8f76adcfadde20 611fdd7fbc8ce4a9e3911af9 \n", + "4 6373dfb8cb9b47e88e8f76adcfadde20 611fdd7fbc8ce4a9e3911afb \n", + "\n", + " original_user_id cleaned_trip \\\n", + "0 6373dfb8-cb9b-47e8-8e8f-76adcfadde20 6082e48127dcf1f393b70ea8 \n", + "1 6373dfb8-cb9b-47e8-8e8f-76adcfadde20 60830ead2b9762e085f774f2 \n", + "2 6373dfb8-cb9b-47e8-8e8f-76adcfadde20 608b21db654c4a5ab2fa4364 \n", + "3 6373dfb8-cb9b-47e8-8e8f-76adcfadde20 608c1f002f548f5db71d16f9 \n", + "4 6373dfb8-cb9b-47e8-8e8f-76adcfadde20 608c8f7fb2d3b88f6947766b \n", + "\n", + " Mode_confirm start_fmt_time start:year start:month \\\n", + "0 Regular Bike 2021-04-22 18:48:48.365291-06:00 2021.0 4.0 \n", + "1 Regular Bike 2021-04-23 10:45:48.219950-06:00 2021.0 4.0 \n", + "2 Other 2021-04-29 14:05:50.979267-06:00 2021.0 4.0 \n", + "3 Other 2021-04-30 08:34:49.162054-06:00 2021.0 4.0 \n", + "4 Regular Bike 2021-04-30 11:58:07.194775-06:00 2021.0 4.0 \n", + "\n", + " start:day start:hour ... chosen av_s_car av_walk av_car av_ridehail \\\n", + "0 22.0 18.0 ... 1 0 0 0 0 \n", + "1 23.0 10.0 ... 1 0 0 0 0 \n", + "2 29.0 14.0 ... 9 0 0 0 0 \n", + "3 30.0 8.0 ... 9 0 0 0 0 \n", + "4 30.0 11.0 ... 1 0 0 0 0 \n", + "\n", + " av_p_micro av_no_trip av_s_micro av_transit av_unknown \n", + "0 1 0 1 0 0 \n", + "1 1 0 1 0 0 \n", + "2 1 0 1 0 0 \n", + "3 1 0 1 0 0 \n", + "4 1 0 1 0 0 \n", + "\n", + "[5 rows x 79 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "def compute_alt_durations(df: pd.DataFrame, reverse_mapper: dict, duration_mapper: dict):\n", - " '''\n", - " We re-iterate over the generated available mode df and populate the modes.\n", - " We are only concerned with the rows that have primary_mode = 0, which indicates that they are alternate mode rows.\n", - " This method uses the intercept and coefficients obtained from the regression models.\n", - " '''\n", - "\n", - " column_names = list(reverse_mapper.values())\n", - "\n", - " # Start with a 0 cost for everyone.\n", - " df[column_names] = 0\n", - "\n", - " rows = list()\n", - " for ix, row in df.iterrows():\n", - " \n", - " # Convert to a dict\n", - " row_dict = row.to_dict()\n", - "\n", - " for mode in column_names:\n", - " if mode == reverse_mapper[row['chosen']]:\n", - " row_dict[mode] = row_dict['section_distance_argmax']\n", - " continue\n", - " \n", - " mode_params = duration_mapper[mode]\n", - " # use availability as a mask.\n", - " row_dict[mode] = row_dict['av_' + mode] * (mode_params['intercept'] + (mode_params['coef'] * row_dict['section_distance_argmax']))\n", - " \n", - " rows.append(row_dict)\n", - " \n", - " return pd.DataFrame(rows).rename(columns=dict([(c, 'tt_'+c) for c in column_names]), inplace=False)" + "display(av_df.head())" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "metadata": {}, "outputs": [], "source": [ - "def compute_durations_using_data(df: pd.DataFrame, section_mapper: dict, reverse_ordinal_mapping: dict):\n", - " \"\"\"\n", - " Function to perform imputation using historical averages. Instead of estimating mode duration from mode distance, we simply\n", - " impute it using the mean of the particular mode's historical duration.\n", - " \"\"\"\n", - "\n", - " # First, using the history, generate the average durations calculated per mode.\n", - " duration_dict = df.groupby('section_mode_argmax')['section_duration_argmax'].mean().to_dict()\n", - "\n", - " extended_dict = dict()\n", - " for k, v in duration_dict.items():\n", - " mapped_sections = section_mapper[k]\n", - " for _k in mapped_sections:\n", - " extended_dict[_k] = v\n", - "\n", - " # Manually add one more.\n", - " extended_dict['no_trip'] = 0.\n", - "\n", - " print(extended_dict)\n", - "\n", - " # NOW, we iterate over the dataframe.\n", - " new_columns = list(reverse_ordinal_mapping.values())\n", - "\n", - " # Create and init to 0.\n", - " df[new_columns] = 0.\n", - "\n", - " rows = []\n", - "\n", - " for _, row in df.iterrows():\n", - " row_dict = row.to_dict()\n", + "# def compute_alt_durations(df: pd.DataFrame, reverse_mapper: dict, duration_mapper: dict):\n", + "# '''\n", + "# We re-iterate over the generated available mode df and populate the modes.\n", + "# We are only concerned with the rows that have primary_mode = 0, which indicates that they are alternate mode rows.\n", + "# '''\n", "\n", - " # First, look at the section_mode_argmax\n", - " mapped_modes = section_mapper[row_dict['section_mode_argmax']]\n", + "# column_names = list(reverse_mapper.values())\n", "\n", - " for mode in mapped_modes:\n", - " section_duration = row_dict['section_duration_argmax']\n", - " if section_duration > 0:\n", - " row_dict[mode] = row_dict['section_duration_argmax']\n", - " else:\n", - " row_dict[mode] = extended_dict[mode]\n", + "# # Start with a 0 cost for everyone.\n", + "# df[column_names] = 0\n", "\n", - " # for the remaining modes, estimate their duration through the dict.\n", - " remaining = [mode for mode in new_columns if mode not in mapped_modes]\n", + "# rows = list()\n", + "# for ix, row in df.iterrows():\n", + " \n", + "# # Convert to a dict\n", + "# row_dict = row.to_dict()\n", "\n", - " for mode in remaining:\n", - " # If you'd like to use a mask here, use the av_ dummy values to mask-out irrelevant data.\n", - " row_dict[mode] = extended_dict[mode]\n", + "# for mode in column_names:\n", + "# if mode == reverse_mapper[row['chosen']]:\n", + "# row_dict[mode] = row_dict['section_distance_argmax']\n", + "# continue\n", + " \n", + "# mode_params = duration_mapper[mode]\n", + "# # use availability as a mask.\n", + "# row_dict[mode] = mode_params['intercept'] + (mode_params['coef'] * row_dict['section_distance_argmax'])\n", " \n", - " rows.append(row_dict)\n", + "# rows.append(row_dict)\n", " \n", - " return_df = pd.DataFrame(rows)\n", - " return_df.rename(columns=dict([(c, 'tt_'+c) for c in new_columns]), inplace=True)\n", - " return return_df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "av_time_df = compute_durations_using_data(av_df, section_mode_mapping, reverse_ordinal_mapping)" + "# return pd.DataFrame(rows).rename(columns=dict([(c, 'tt_'+c) for c in column_names]), inplace=False)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "metadata": {}, "outputs": [], "source": [ - "av_time_df.head()" + "# av_time_df = compute_alt_durations(av_df, reverse_ordinal_mapping, duration_dict)" ] }, { @@ -457,17 +1434,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "# All values are taken from VTPI.\n", - "\n", + "# https://www.vtpi.org/tca/tca0501.pdf\n", "mode_cost_per_mile = {\n", " # bicycle/skateboard\n", " 'p_micro': 0.,\n", " 'no_trip': 0.,\n", - " # Shared car would be half the cost of regular car, which is $0.6/mile.\n", + " # Shared car is half the cost of regular car, which is $0.6/mile.\n", " 's_car': 0.3,\n", " # Rental car.\n", " 'car': 0.6,\n", @@ -484,22 +1461,26 @@ "\n", "# All 0 for now.\n", "mode_init_cost = {\n", - " k: 0 for k in mode_cost_per_mile.keys()\n", + " 'p_micro': 0.,\n", + " 'no_trip': 0.,\n", + " # Shared car is half the cost of regular car, which is $0.6/mile.\n", + " 's_car': 0.,\n", + " # Rental car.\n", + " 'car': 0.,\n", + " # Average of bus and train taken.\n", + " 'transit': 0.,\n", + " # $1 unlocking cost.\n", + " 's_micro': 1.,\n", + " # uber/taxi/lyft\n", + " 'ridehail': 0.,\n", + " 'walk': 0.,\n", + " 'unknown': 0.\n", "}" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "av_time_df.columns" - ] - }, - { - "cell_type": "code", - "execution_count": null, + "execution_count": 33, "metadata": {}, "outputs": [], "source": [ @@ -508,8 +1489,6 @@ " # Create some extra colums.\n", " columns = list(ordinal_mapper.keys())\n", "\n", - " print(columns)\n", - "\n", " # Initialize the columns to 0.\n", " df[columns] = 0.\n", "\n", @@ -520,15 +1499,12 @@ " # Check which flags are active.\n", " row_dict = row.to_dict()\n", "\n", - " # ---- Not using the av_ features as a mask. ----\n", - " # # Iterate over the columns and retain the columns with an available mode of 1. Returns a list of [av_* keys]\n", - " # columns = [c for c in row_dict.keys() if c.startswith('av_') and row_dict[c] == 1]\n", - "\n", " # Access the section_distance_argmax attribute for the distance. Note that this is now in miles.\n", " distance = row_dict['section_distance_argmax']\n", - "\n", + " \n", + " # Mask using availability.\n", " for lookup in columns:\n", - " row_dict[lookup] = init_cost_mapper[lookup] + (cost_mapper[lookup] * distance)\n", + " row_dict[lookup] = row_dict['av_' + lookup] * (init_cost_mapper[lookup] + (cost_mapper[lookup] * distance))\n", "\n", " rows.append(row_dict)\n", "\n", @@ -538,13 +1514,195 @@ " return new_df" ] }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "cost_df = compute_cost_estimates(\n", + " av_df, cost_mapper=mode_cost_per_mile, \n", + " init_cost_mapper=mode_init_cost, \n", + " ordinal_mapper=ordinal_mapping\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cost_p_microcost_no_tripcost_s_carcost_transitcost_carcost_s_microcost_ridehailcost_walkcost_unknown
count42581.042581.042581.00000042581.00000042581.00000042581.00000042581.00000042581.042581.0
mean0.00.00.7306771.0990121.2922300.4135214.6961480.00.0
std0.00.00.7667831.4103881.6028410.7745875.1796420.00.0
min0.00.00.0000000.0000000.0000000.0000000.0000000.00.0
25%0.00.00.0640500.0000000.0000000.0000000.0000000.00.0
50%0.00.00.5569000.6609250.8623170.0000003.5109220.00.0
75%0.00.01.0790301.6329992.1067100.0000007.1414600.00.0
max0.00.04.2549539.4458228.5099055.25376428.3663510.00.0
\n", + "
" + ], + "text/plain": [ + " cost_p_micro cost_no_trip cost_s_car cost_transit cost_car \\\n", + "count 42581.0 42581.0 42581.000000 42581.000000 42581.000000 \n", + "mean 0.0 0.0 0.730677 1.099012 1.292230 \n", + "std 0.0 0.0 0.766783 1.410388 1.602841 \n", + "min 0.0 0.0 0.000000 0.000000 0.000000 \n", + "25% 0.0 0.0 0.064050 0.000000 0.000000 \n", + "50% 0.0 0.0 0.556900 0.660925 0.862317 \n", + "75% 0.0 0.0 1.079030 1.632999 2.106710 \n", + "max 0.0 0.0 4.254953 9.445822 8.509905 \n", + "\n", + " cost_s_micro cost_ridehail cost_walk cost_unknown \n", + "count 42581.000000 42581.000000 42581.0 42581.0 \n", + "mean 0.413521 4.696148 0.0 0.0 \n", + "std 0.774587 5.179642 0.0 0.0 \n", + "min 0.000000 0.000000 0.0 0.0 \n", + "25% 0.000000 0.000000 0.0 0.0 \n", + "50% 0.000000 3.510922 0.0 0.0 \n", + "75% 0.000000 7.141460 0.0 0.0 \n", + "max 5.253764 28.366351 0.0 0.0 " + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cost_df[[c for c in cost_df.columns if 'cost_' in c]].describe()" + ] + }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "cost_df = compute_cost_estimates(av_time_df, cost_mapper=mode_cost_per_mile, init_cost_mapper=mode_init_cost, ordinal_mapper=ordinal_mapping)" + "cost_df.is_male = cost_df.apply(lambda x: 1 if x.gender == 'Man' else 0, axis=1)" ] }, { @@ -553,7 +1711,23 @@ "metadata": {}, "outputs": [], "source": [ - "cost_df[['user_id'] + [c for c in cost_df.columns if 'av_' in c or 'cost_' in c or 'tt_' in c]].head()" + "student_status = {\n", + " 'Not a student': 0,\n", + " 'Yes - Full Time College/University': 1,\n", + " 'Yes - Vocation/Technical/Trade School': 1,\n", + " 'Yes - Part-Time College/University': 1,\n", + " 'Fire Fighter 2 Training': 0,\n", + " 'Taking prerequisites missing for grad program ': 1,\n", + " 'Work': 0,\n", + " 'Graduate': 1,\n", + " 'Work at csu': 0,\n", + " 'Custodian': 0, \n", + " 'taking classes toward early childhood licensure': 1,\n", + " 'Prefer not to say': 0\n", + "}\n", + "\n", + "\n", + "cost_df['is_student'] = cost_df['is_student'].apply(lambda x: student_status[x])" ] }, { @@ -562,8 +1736,30 @@ "metadata": {}, "outputs": [], "source": [ - "cost_df.to_csv('../data/preprocessed_data.csv', index=False)" + "cost_df['age'] = cost_df['age'].apply(lambda x: x if x < 100 else 2024 - x)\n", + "cost_df['n_working_residents'] = cost_df['n_working_residents'].apply(lambda x: 0 if x < 0 else x)\n", + "cost_df.rename(\n", + " columns={'start_local_dt_weekday': 'start:DOW', 'end_local_dt_weekday': 'end:DOW'},\n", + " inplace=True\n", + ")" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# cost_df.to_csv('../data/FULL_preprocessed_data_RM_weather.csv', index=False)\n", + "cost_df.to_csv('../data/ReplacedMode_Fix_02072024.csv', index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -571,9 +1767,9 @@ "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" }, "kernelspec": { - "display_name": "Python 3.9.16 ('emission')", + "display_name": "emission", "language": "python", - "name": "python3" + "name": "emission" }, "language_info": { "codemirror_mode": { @@ -586,8 +1782,7 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.16" - }, - "orig_nbformat": 4 + } }, "nbformat": 4, "nbformat_minor": 2 diff --git a/viz_scripts/rm_src/mnl_exploration.ipynb b/viz_scripts/rm_src/mnl_exploration.ipynb new file mode 100644 index 0000000..9ca40bb --- /dev/null +++ b/viz_scripts/rm_src/mnl_exploration.ipynb @@ -0,0 +1,935 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import sys\n", + "import pickle\n", + "import importlib\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "\n", + "from pathlib import Path\n", + "from uuid import UUID\n", + "from collections import defaultdict\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "emission_path = Path(os.getcwd()).parent.parent / 'my_emission_server' / 'e-mission-server'\n", + "sys.path.append(str(emission_path))\n", + "\n", + "# Also add the home (viz_scripts) to the path\n", + "sys.path.append('../viz_scripts')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import scaffolding\n", + "import emission.core.get_database as edb" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "importlib.reload(scaffolding)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def r(df: pd.DataFrame) -> pd.DataFrame:\n", + " return df.reset_index(drop=True, inplace=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "with open('../viz_scripts/auxiliary_files/dic_re.pkl', 'rb') as f:\n", + " dic_re = pickle.loads(f.read())\n", + "\n", + "with open('../viz_scripts/auxiliary_files/dic_pur.pkl', 'rb') as f:\n", + " dic_pur = pickle.loads(f.read())\n", + "\n", + "# convert a dictionary to a defaultdict\n", + "dic_re = defaultdict(lambda: 'Other', dic_re)\n", + "dic_pur = defaultdict(lambda: 'Other', dic_pur)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Found new program stage, creating new list\n", + "Found new program 4c, creating new list\n", + "Found new program cc, creating new list\n", + "Found new program fc, creating new list\n", + "Found new program pc, creating new list\n", + "Found new program sc, creating new list\n", + "Found new program vail, creating new list\n", + "Found new program prepilot, creating new list\n" + ] + } + ], + "source": [ + "# Split UUIDs by program\n", + "program_uuid_map = {}\n", + "for ue in edb.get_uuid_db().find():\n", + " uuid = str(ue['uuid'])\n", + " # uuid = str(ue['uuid'])\n", + " program = ue['user_email'].split(\"_\")[0]\n", + " if program in program_uuid_map.keys():\n", + " program_uuid_map[program].append(uuid)\n", + " else:\n", + " print(f\"Found new program {program}, creating new list\")\n", + " program_uuid_map[program] = []\n", + " program_uuid_map[program].append(uuid)\n", + "\n", + "uuid_program_list = []\n", + "for ue in edb.get_uuid_db().find():\n", + " # uuid = str(ue['uuid'].as_uuid(3))\n", + " uuid = str(ue['uuid'])\n", + " program = ue['user_email'].split(\"_\")[0]\n", + " uuid_program_list.append({\"program\": program, \"opcode\": ue[\"user_email\"], \"user_id\": uuid})" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "uuid_program_df = pd.DataFrame(uuid_program_list)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loaded all confirmed trips of length 241123\n", + "After filtering, found 241123 participant trips \n", + "After filtering, found 92446 labeled trips\n", + "Found Index(['mode_confirm', 'purpose_confirm', 'replaced_mode'], dtype='object') columns of length 3\n", + "After expanding, columns went from 41 -> 44\n", + "_prepilot\n", + "Based on 92395 confirmed trips from 235 users\n", + "of 241123 total trips from 261 users (38.32%)\n" + ] + } + ], + "source": [ + "# %%capture\n", + "\n", + "# for program in uuid_program_df.program.unique():\n", + "expanded_ct, file_suffix, quality_text, debug_df = scaffolding.load_viz_notebook_data(None,\n", + " None,\n", + " 'prepilot',\n", + " 'program',\n", + " dic_re,\n", + " dic_pur=dic_pur)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "# Join to the program df to get each user's program\n", + "expanded_ct['original_user_id'] = expanded_ct['user_id'].copy()\n", + "expanded_ct['user_id'] = expanded_ct['user_id'].apply(lambda x: str(x))\n", + "expanded_ct = expanded_ct.merge(uuid_program_df, on='user_id')\n", + "expanded_ct['user_id'] = expanded_ct['user_id'].apply(lambda x: str(x).replace(\"-\", \"\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['source', 'end_ts', 'end_fmt_time', 'end_loc', 'raw_trip', 'start_ts',\n", + " 'start_fmt_time', 'start_loc', 'duration', 'distance', 'start_place',\n", + " 'end_place', 'cleaned_trip', 'inferred_labels', 'inferred_trip',\n", + " 'expectation', 'confidence_threshold', 'expected_trip', 'user_input',\n", + " 'section_modes', 'section_distances', 'start_local_dt_year',\n", + " 'start_local_dt_month', 'start_local_dt_day', 'start_local_dt_hour',\n", + " 'start_local_dt_minute', 'start_local_dt_second',\n", + " 'start_local_dt_weekday', 'start_local_dt_timezone',\n", + " 'end_local_dt_year', 'end_local_dt_month', 'end_local_dt_day',\n", + " 'end_local_dt_hour', 'end_local_dt_minute', 'end_local_dt_second',\n", + " 'end_local_dt_weekday', 'end_local_dt_timezone', '_id', 'user_id',\n", + " 'metadata_write_ts', 'additions', 'mode_confirm', 'purpose_confirm',\n", + " 'replaced_mode', 'distance_miles', 'Mode_confirm', 'Replaced_mode',\n", + " 'Trip_purpose', 'original_user_id', 'program', 'opcode'],\n", + " dtype='object')" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "expanded_ct.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "# Rename the target column.\n", + "expanded_ct.drop(columns=['replaced_mode'], axis='rows', inplace=True)\n", + "expanded_ct['Replaced_mode'] = expanded_ct['Replaced_mode'].fillna('Unlabeled')" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "# We only wish to focus on Denver data for now.\n", + "\n", + "denver_data = r(expanded_ct.loc[\n", + " (expanded_ct.start_local_dt_timezone == \"America/Denver\") & (expanded_ct.end_local_dt_timezone == \"America/Denver\"), \n", + " :])" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "denver_data['start_fmt_time'] = pd.to_datetime(\n", + " denver_data['start_fmt_time'], utc=True\n", + ").dt.tz_convert('America/Denver')" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2020-09-22 17:13:55.883513-06:00 2022-12-30 23:33:27.147785-07:00\n" + ] + } + ], + "source": [ + "print(denver_data.start_fmt_time.min(), denver_data.start_fmt_time.max())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Parse the datetime to Denver time.\n", + "# denver_data['start_fmt_time'] = pd.to_datetime(denver_data['start_fmt_time'], utc=True).dt.tz_convert('America/Denver')\n", + "\n", + "# Re-compute all the start variables.\n", + "denver_data['start_local_dt_year'] = denver_data['start_fmt_time'].dt.year\n", + "denver_data['start_local_dt_month'] = denver_data['start_fmt_time'].dt.month\n", + "denver_data['start_local_dt_day'] = denver_data['start_fmt_time'].dt.day\n", + "denver_data['start_local_dt_hour'] = denver_data['start_fmt_time'].dt.hour\n", + "denver_data['start_local_dt_weekday'] = denver_data['start_fmt_time'].dt.weekday\n", + "\n", + "## Do the same with the end time.\n", + "denver_data['end_fmt_time'] = pd.to_datetime(denver_data['end_fmt_time'], utc=True).dt.tz_convert('America/Denver')\n", + "\n", + "# Re-compute all the end variables.\n", + "denver_data['end_local_dt_year'] = denver_data['end_fmt_time'].dt.year\n", + "denver_data['end_local_dt_month'] = denver_data['end_fmt_time'].dt.month\n", + "denver_data['end_local_dt_day'] = denver_data['end_fmt_time'].dt.day\n", + "denver_data['end_local_dt_hour'] = denver_data['end_fmt_time'].dt.hour\n", + "denver_data['end_local_dt_weekday'] = denver_data['end_fmt_time'].dt.weekday" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Read the Demographic data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Read the Denver dedmographic info\n", + "survey_data = pd.read_csv('../viz_scripts/Can Do Colorado eBike Program - en.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# column renaming here!\n", + "\n", + "survey_data.rename(\n", + " {\n", + " \"Unique User ID (auto-filled, do not edit)\": \"user_id\",\n", + " \"In which year were you born?\": \"birth_year\",\n", + " \"What is your gender?\": \"gender\",\n", + " \"Do you have a valid driver's license?\": \"has_drivers_license\",\n", + " \"Are you a student?\": \"is_student\",\n", + " \"What is the highest grade or degree that you have completed?\": \"highest_education\",\n", + " \"Do you work for either pay or profit?\": \"is_paid\",\n", + " \"Do you have more than one job?\": \"has_multiple_jobs\",\n", + " \"Do you work full-time or part-time at your primary job?\": \"primary_job_type\",\n", + " \"Which best describes your primary job?\": \"primary_job_description\",\n", + " \"How did you usually get to your primary job last week? \": \"primary_job_commute_mode\",\n", + " \"Thinking about your daily commute to work last week, how many minutes did it usually take to get from home to the primary job/work place?\": \"primary_job_commute_time\",\n", + " \"At your primary job, do you have the ability to set or change your own start time?\": \"is_primary_job_flexible\",\n", + " \"Do you have the option of working from home or an alternate location instead of going into your primary work place?\": \"primary_job_can_wfh\",\n", + " \"How many days per week do you usually work from home or an alternate location?\": \"wfh_days\",\n", + " \"Do you own or rent your place of residence?\": \"residence_ownership_type\",\n", + " \"What is your home type?\": \"residence_type\",\n", + " \"Please identify which category represents your total household income, before taxes, for last year.\": \"income_category\",\n", + " \"Including yourself, how many people live in your home?\": \"n_residence_members\",\n", + " \"How many children under age 18 live in your home?\": \"n_residents_u18\",\n", + " \"Including yourself, how many people have a driver's license in your household?\": \"n_residents_with_license\",\n", + " \"How many motor vehicles are owned, leased, or available for regular use by the people who currently live in your household?\": \"n_motor_vehicles\",\n", + " \"If you were unable to use your household vehicle(s), which of the following options would be available to you to get you from place to place?\": \"available_modes\",\n", + " \"Do you have a medical condition that makes it difficult to travel outside of the home?\": \"has_medical_condition\",\n", + " \"How long have you had this condition?\": \"medical_condition_duration\"\n", + " },\n", + " axis='columns',\n", + " inplace=True\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Now, if we have duplicate users, we'd like to retain the last chronological entry.\n", + "survey_data = survey_data.loc[~((survey_data.user_id.isna())|(survey_data.user_id == \"\")), :]\n", + "\n", + "# timezonoe-aware parsing:\n", + "survey_data['Timestamp'] = survey_data['Timestamp'].str.replace('PDT|PST', '', regex=True)\n", + "survey_data['Timestamp'] = pd.to_datetime(survey_data['Timestamp']).dt.tz_localize('America/Denver')\n", + "\n", + "# Sort by user_id and time, then drop everything but the last entry.\n", + "survey_data.sort_values(by=['user_id', 'Timestamp'], ascending=True, inplace=True, axis='rows')\n", + "survey_data.drop_duplicates(['user_id'], keep='last', inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Merge the trip data with the survey data.\n", + "\n", + "merged_data = denver_data.merge(\n", + " survey_data, left_on='user_id', right_on='user_id'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Let's start choosing features for modeling.\n", + "\n", + "base_time_features = ['fmt_time', 'local_dt_year', 'local_dt_month', 'local_dt_day', 'local_dt_hour', 'local_dt_weekday']\n", + "time_features = ['start_' + x for x in base_time_features] + ['end_' + x for x in base_time_features]\n", + "\n", + "demographic_features = ['available_modes',\n", + " 'birth_year', 'income_category', 'n_motor_vehicles', 'n_residence_members', 'n_residents_u18', 'gender', \n", + " 'is_student', 'n_residents_with_license']\n", + "\n", + "sensed_features = ['duration', 'distance_miles', 'cleaned_trip', 'start_loc', 'end_loc', 'section_modes', 'section_distances']\n", + "\n", + "modeling_data = merged_data[['user_id', '_id', 'original_user_id', 'cleaned_trip', 'Replaced_mode', 'Mode_confirm'] + time_features + demographic_features + sensed_features].copy()\n", + "\n", + "# Rename columns in-place.\n", + "modeling_data.rename(columns={\n", + " 'start_local_dt_year': 'start:year', 'start_local_dt_month': 'start:month', 'start_local_dt_day': 'start:day', 'start_local_dt_hour': 'start:hour',\n", + " 'end_local_dt_year': 'end:year', 'end_local_dt_month': 'end:month', 'end_local_dt_day': 'end:day', 'end_local_dt_hour': 'end:hour'\n", + " }, inplace=True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "modeling_data.columns" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from calendar import monthrange\n", + "\n", + "# Find day of month: use monthrange with (mm, yyyy) args and find how many days that month had (leap years are supported).\n", + "def get_num_days_in_month(yyyy, mm):\n", + " return monthrange(yyyy, mm)[1]\n", + "\n", + "def is_overnight_trip(start_date, end_date):\n", + " return int((end_date - start_date).days > 0)\n", + "\n", + "# get the number of days for the start and end times.\n", + "modeling_data['start:n_days_in_month'] = modeling_data.apply(lambda x: get_num_days_in_month(x['start:year'], x['start:month']), axis=1)\n", + "modeling_data['end:n_days_in_month'] = modeling_data.apply(lambda x: get_num_days_in_month(x['end:year'], x['end:month']), axis=1)\n", + "\n", + "# age = current year - year of birth\n", + "modeling_data['age'] = 2023 - modeling_data['birth_year']\n", + "\n", + "# overnight trips may be more likely taken by car.\n", + "modeling_data['is_overnight_trip'] = modeling_data.apply(lambda x: is_overnight_trip(x.start_fmt_time, x.end_fmt_time), axis=1)\n", + "\n", + "# Number of working individuals in the household = number of individuals in the house - number of children.\n", + "modeling_data['n_working_residents'] = (modeling_data['n_residence_members'] - modeling_data['n_residents_u18']).astype(int)\n", + "\n", + "# Create a binary indicator.\n", + "modeling_data['is_male'] = modeling_data.gender.apply(lambda x: 1 if x==\"Male\" else 0)\n", + "\n", + "# Bin the number of vehicles owned.\n", + "# Drop the observations with (Prefer not to say)\n", + "modeling_data = modeling_data.loc[~modeling_data['n_motor_vehicles'].isin(['Prefer not to say / Prefiero no decir.']), :]\n", + "modeling_data.loc[modeling_data['n_motor_vehicles'].isin(['4+']), 'n_motor_vehicles'] = 4\n", + "modeling_data['n_motor_vehicles'] = modeling_data['n_motor_vehicles'].astype(int)\n", + "\n", + "# Convert the total duration of the trip into minutes.\n", + "modeling_data[['duration']] = modeling_data[['duration']]/60\n", + "\n", + "# Extract start and end latitudes and longitudes.\n", + "modeling_data['start_lat'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][1])\n", + "modeling_data['start_lng'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][0])\n", + "\n", + "modeling_data['end_lat'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][1])\n", + "modeling_data['end_lng'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from calendar import monthrange\n", + "\n", + "# Find day of month: use monthrange with (mm, yyyy) args and find how many days that month had (leap years are supported).\n", + "def get_num_days_in_month(yyyy, mm):\n", + " return monthrange(yyyy, mm)[1]\n", + "\n", + "def is_overnight_trip(start_date, end_date):\n", + " return int((end_date - start_date).days > 0)\n", + "\n", + "# get the number of days for the start and end times.\n", + "modeling_data['start:n_days_in_month'] = modeling_data.apply(lambda x: get_num_days_in_month(x['start:year'], x['start:month']), axis=1)\n", + "modeling_data['end:n_days_in_month'] = modeling_data.apply(lambda x: get_num_days_in_month(x['end:year'], x['end:month']), axis=1)\n", + "\n", + "# age = current year - year of birth\n", + "modeling_data['age'] = 2023 - modeling_data['birth_year']\n", + "\n", + "# overnight trips may be more likely taken by car.\n", + "modeling_data['is_overnight_trip'] = modeling_data.apply(lambda x: is_overnight_trip(x.start_fmt_time, x.end_fmt_time), axis=1)\n", + "\n", + "# Number of working individuals in the household = number of individuals in the house - number of children.\n", + "modeling_data['n_working_residents'] = (modeling_data['n_residence_members'] - modeling_data['n_residents_u18']).astype(int)\n", + "\n", + "# Create a binary indicator.\n", + "modeling_data['is_male'] = modeling_data.gender.apply(lambda x: 1 if x==\"Male\" else 0)\n", + "\n", + "# Bin the number of vehicles owned.\n", + "# Drop the observations with (Prefer not to say)\n", + "modeling_data = modeling_data.loc[~modeling_data['n_motor_vehicles'].isin(['Prefer not to say / Prefiero no decir.']), :]\n", + "modeling_data.loc[modeling_data['n_motor_vehicles'].isin(['4+']), 'n_motor_vehicles'] = 4\n", + "modeling_data['n_motor_vehicles'] = modeling_data['n_motor_vehicles'].astype(int)\n", + "\n", + "# Convert the total duration of the trip into minutes.\n", + "modeling_data[['duration']] = modeling_data[['duration']]/60\n", + "\n", + "# Extract start and end latitudes and longitudes.\n", + "modeling_data['start_lat'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][1])\n", + "modeling_data['start_lng'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][0])\n", + "\n", + "modeling_data['end_lat'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][1])\n", + "modeling_data['end_lng'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Time-related feature engineeering:\n", + "'''\n", + "HOD: hour of day\n", + "DOM: day of month\n", + "MOY: month of year\n", + "'''\n", + "\n", + "def get_HOD(hour, how='sin'):\n", + " if how == 'sin':\n", + " return np.sin(2 * np.pi * (hour/24))\n", + " return np.cos(2 * np.pi * (hour/24))\n", + "\n", + "def get_DOM(day, n_days, how='sin'):\n", + " if how == 'sin':\n", + " return np.sin(2 * np.pi * (day/n_days))\n", + " return np.cos(2 * np.pi * (day/n_days))\n", + "\n", + "def get_MOY(month, how='sin'):\n", + " if how == 'sin':\n", + " return np.sin(2 * np.pi * (month/12))\n", + " return np.cos(2 * np.pi * (month/12))\n", + "\n", + "# Start - sin\n", + "modeling_data['start:sin_HOD'] = modeling_data.apply(lambda x: get_HOD(x['start:hour']), axis=1)\n", + "modeling_data['start:sin_DOM'] = modeling_data.apply(lambda x: get_DOM(x['start:day'], x['start:n_days_in_month']), axis=1)\n", + "modeling_data['start:sin_MOY'] = modeling_data.apply(lambda x: get_MOY(x['start:year']), axis=1)\n", + "\n", + "# Start - cos\n", + "modeling_data['start:cos_HOD'] = modeling_data.apply(lambda x: get_HOD(x['start:hour'], how='cos'), axis=1)\n", + "modeling_data['start:cos_DOM'] = modeling_data.apply(lambda x: get_DOM(x['start:day'], x['start:n_days_in_month'], how='cos'), axis=1)\n", + "modeling_data['start:cos_MOY'] = modeling_data.apply(lambda x: get_MOY(x['start:year'], how='cos'), axis=1)\n", + "\n", + "# End - sin\n", + "modeling_data['end:sin_HOD'] = modeling_data.apply(lambda x: get_HOD(x['end:hour']), axis=1)\n", + "modeling_data['end:sin_DOM'] = modeling_data.apply(lambda x: get_DOM(x['end:day'], x['end:n_days_in_month']), axis=1)\n", + "modeling_data['end:sin_MOY'] = modeling_data.apply(lambda x: get_MOY(x['end:year']), axis=1)\n", + "\n", + "# End - cos\n", + "modeling_data['end:cos_HOD'] = modeling_data.apply(lambda x: get_HOD(x['end:hour'], how='cos'), axis=1)\n", + "modeling_data['end:cos_DOM'] = modeling_data.apply(lambda x: get_DOM(x['end:day'], x['end:n_days_in_month'], how='cos'), axis=1)\n", + "modeling_data['end:cos_MOY'] = modeling_data.apply(lambda x: get_MOY(x['end:year'], how='cos'), axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "modeling_data.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, for every trip, we have the corresponding section mode that covered the longest distance for the trip.\n", + "\n", + "Using this as well as the `available_modes` column:\n", + "\n", + "```language=python\n", + "\n", + " # unique available modes:\n", + " {'Bicycle',\n", + " 'Do not have vehicle ',\n", + " 'Get a ride from a friend or family member',\n", + " 'None',\n", + " 'Public transportation (bus, subway, light rail, etc.)',\n", + " 'Rental car (including Zipcar/ Car2Go)',\n", + " 'Shared bicycle or scooter',\n", + " 'Skateboard',\n", + " 'Taxi (regular taxi, Uber, Lyft, etc)',\n", + " 'Walk/roll'}\n", + "\n", + " # unique section modes:\n", + " {'bicycling', 'bus', 'car', 'no_sensed', 'train', 'walking'}\n", + "\n", + " \n", + "```\n", + "\n", + "What mapping can we establish here? " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def remove_air_or_hsr(df):\n", + "\n", + " df['mark'] = 0\n", + "\n", + " for ix, row in df.iterrows():\n", + " sections = row['section_modes']\n", + " if 'air_or_hsr' in sections:\n", + " df.loc[ix, 'mark'] = 1\n", + " \n", + " df = r(df.loc[df.mark == 0, :])\n", + " df.drop(columns=['mark'], inplace=True)\n", + "\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "modeling_data = remove_air_or_hsr(modeling_data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "modeling_data.columns" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "importlib.reload(scaffolding)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "results = list()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "modeling_data = modeling_data.loc[:,~modeling_data.columns.duplicated()].copy()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# | [a, b, c] | start_time | end_time |\n", + "# -> | [a, b, c] | [s1, s2, s3] |" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# print(modeling_data.shape[0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# I manually split the modeling data into chunks of 10000 points at one time.\n", + "# This significantly expedited the processing time. Each chunk takes ~26 minutes to finish.\n", + "# split = modeling_data.loc[70000:, :]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# display(split[['original_user_id', 'cleaned_trip']].head())\n", + "# print(split.shape[0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# from time import perf_counter\n", + "\n", + "# now = perf_counter()\n", + "# result = scaffolding.get_section_durations(split)\n", + "# end = perf_counter() - now\n", + "\n", + "# print(f\"Took {end/60} minutes to complete\")\n", + "# results.append(result)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# print(len(results))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# final_df = pd.concat(results, axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# print(modeling_data.shape[0], final_df.shape[0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# modeling_data.to_csv('../data/modeling_data.csv', index=False)\n", + "# final_df.to_csv('../data/modeling_w_duration.csv', index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# from time import perf_counter\n", + "# importlib.reload(scaffolding)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv('../data/modeling_w_duration.csv')\n", + "df.drop_duplicates(inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# df.shape, modeling_data.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dummy = modeling_data.iloc[50000:, :]\n", + "\n", + "print(dummy.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# now = perf_counter()\n", + "df_modded = scaffolding.get_section_coordinates(dummy)\n", + "# end = perf_counter() - now\n", + "\n", + "# print(f\"Fetched sections in {end/60} minutes\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def verify(locations):\n", + " return locations is not None and len(locations) > 0\n", + "\n", + "\n", + "bools = df_modded.apply(lambda x: verify(x.section_locations_argmax), axis=1)\n", + "print(bools.all())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "results.append(df_modded)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(len(results))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "final_results = pd.concat(results, axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "final_df = pd.concat([df, final_results['section_locations_argmax']], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "final_df[['section_modes', 'section_distances', 'section_durations', 'section_locations_argmax']].head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "final_df.to_csv('../data/final_modeling_data.csv', index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "final_df.section_locations_argmax[0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" + }, + "kernelspec": { + "display_name": "emission", + "language": "python", + "name": "emission" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 9bc5760b51e4af97fd1ee639b19350c6049bdae8 Mon Sep 17 00:00:00 2001 From: Rahul Kulhalli Date: Wed, 14 Feb 2024 10:50:35 -0500 Subject: [PATCH 07/16] Fixed broken commit --- rm_src/benchmark_analysis.ipynb | 381 + rm_src/cost_time_avl_preprocessing.ipynb | 1847 ++ rm_src/mnl_exploration.ipynb | 2115 ++ viz_scripts/denver_weather_data.csv | 26329 +++++++++++++++++++++ 4 files changed, 30672 insertions(+) create mode 100644 rm_src/benchmark_analysis.ipynb create mode 100644 rm_src/cost_time_avl_preprocessing.ipynb create mode 100644 rm_src/mnl_exploration.ipynb create mode 100644 viz_scripts/denver_weather_data.csv diff --git a/rm_src/benchmark_analysis.ipynb b/rm_src/benchmark_analysis.ipynb new file mode 100644 index 0000000..104dd51 --- /dev/null +++ b/rm_src/benchmark_analysis.ipynb @@ -0,0 +1,381 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "269547d8", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "28343f2b", + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv('../data/FULL_preprocessed_data_RM_weather.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "fa60582f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "E-bike 20029\n", + "Gas Car, drove alone 18412\n", + "Gas Car, with others 16684\n", + "Walk 10857\n", + "Not a Trip 2420\n", + "Regular Bike 1703\n", + "Bus 1363\n", + "Other 1145\n", + "Taxi/Uber/Lyft 310\n", + "Bikeshare 84\n", + "Train 67\n", + "Scooter share 52\n", + "Free Shuttle 50\n", + "Skate board 41\n", + "Name: Mode_confirm, dtype: int64" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.Mode_confirm.value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "7e380c56", + "metadata": {}, + "outputs": [], + "source": [ + "# hyp = df[df.Mode_confirm == 'E-bike']\n", + "hyp = df.copy()\n", + "hyp = hyp[['income_category', 'n_motor_vehicles',\n", + " 'n_residence_members', 'n_residents_u18', 'is_student',\n", + " 'n_residents_with_license', 'duration', 'distance_miles',\n", + " 'age', 'is_overnight_trip', 'n_working_residents', 'is_male',\n", + " 'start:sin_HOD', \n", + " 'start:cos_HOD',\n", + " 'end:sin_HOD', 'end:cos_HOD', 'temperature_2m (°F)',\n", + " 'relative_humidity_2m (%)', 'dew_point_2m (°F)', 'rain (inch)',\n", + " 'snowfall (inch)', 'cloud_cover (%)', 'wind_speed_10m (mp/h)',\n", + " 'wind_gusts_10m (mp/h)', 'section_distance_argmax',\n", + " 'section_duration_argmax', 'mph', 'chosen', 'av_no_trip', 'av_s_car',\n", + " 'av_p_micro', 'av_walk', 'av_s_micro', 'av_transit', 'av_ridehail',\n", + " 'av_car', 'av_unknown', 'cost_p_micro', 'cost_no_trip', 'cost_s_car',\n", + " 'cost_transit', 'cost_car', 'cost_s_micro', 'cost_ridehail',\n", + " 'cost_walk', 'cost_unknown']]" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "77e331a5", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import f1_score\n", + "from sklearn.ensemble import RandomForestClassifier" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "1ccfe253", + "metadata": {}, + "outputs": [], + "source": [ + "X_tr, X_te, Y_tr, Y_te = train_test_split(\n", + " hyp.drop(columns=['chosen']), hyp[['chosen']], test_size=0.2, shuffle=True, stratify=hyp[['chosen']]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "2ea90f37", + "metadata": {}, + "outputs": [], + "source": [ + "model = RandomForestClassifier().fit(X_tr, Y_tr.values.ravel())" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "46c50e0d", + "metadata": {}, + "outputs": [], + "source": [ + "y_tr_pred = model.predict(X_tr)\n", + "y_te_pred = model.predict(X_te)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "77f9f005", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "f1_score(y_true=Y_tr.values.ravel(), y_pred=y_tr_pred, average='weighted')" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "c08ccd5a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.7247243014745804" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "f1_score(y_true=Y_te.values.ravel(), y_pred=y_te_pred, average='weighted')" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "bb5be29d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[('age', 0.07034490454052576), ('mph', 0.046077458861916464), ('distance_miles', 0.04227922185622416), ('income_category', 0.042045300984451986), ('dew_point_2m (°F)', 0.040326971736931075), ('temperature_2m (°F)', 0.04026013502695752), ('n_residence_members', 0.04011768641381229), ('duration', 0.038452743580322295), ('section_distance_argmax', 0.038170155240570436), ('cost_transit', 0.03781163632826536), ('section_duration_argmax', 0.035462758618913716), ('cost_s_car', 0.034390094889762884), ('n_motor_vehicles', 0.03379247604608051), ('n_residents_with_license', 0.03070869700490467), ('cost_ridehail', 0.03048846642958717), ('relative_humidity_2m (%)', 0.030090075033090597), ('wind_gusts_10m (mp/h)', 0.029081664383436266), ('n_working_residents', 0.028816144221162413), ('wind_speed_10m (mp/h)', 0.02858556819484081), ('cloud_cover (%)', 0.02495871571321774), ('cost_car', 0.023892323875139673), ('end:cos_HOD', 0.023765393583672044), ('start:cos_HOD', 0.023437391395931484), ('start:sin_HOD', 0.022230720826376518), ('end:sin_HOD', 0.02207708217592035), ('n_residents_u18', 0.021771464179907447), ('is_male', 0.02009990945010731), ('cost_s_micro', 0.01639305932751749), ('av_p_micro', 0.015927295338181373), ('av_walk', 0.012539972617736221), ('av_transit', 0.011339815089503233), ('is_student', 0.010405977662256977), ('av_s_micro', 0.007322014585269799), ('av_car', 0.006833582392128755), ('av_ridehail', 0.006552208955349027), ('av_s_car', 0.006497932334664742), ('rain (inch)', 0.0026762209888453866), ('av_unknown', 0.0016465804016971863), ('snowfall (inch)', 0.0016132591409545494), ('av_no_trip', 0.0007168051104359397), ('is_overnight_trip', 1.1546343053889719e-07), ('cost_p_micro', 0.0), ('cost_no_trip', 0.0), ('cost_walk', 0.0), ('cost_unknown', 0.0)]\n" + ] + } + ], + "source": [ + "print(\n", + " sorted(list(zip(model.feature_names_in_, model.feature_importances_)), key=lambda x: x[-1], reverse=True)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "7c886ef1", + "metadata": {}, + "outputs": [], + "source": [ + "survey_data = pd.read_csv('../viz_scripts/Can Do Colorado eBike Program - en.csv')\n", + "df = pd.read_csv('../data/FULL_preprocessed_data_RM_weather.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "88434a04", + "metadata": {}, + "outputs": [], + "source": [ + "# column renaming here!\n", + "\n", + "survey_data.rename(\n", + " {\n", + " \"Unique User ID (auto-filled, do not edit)\": \"user_id\",\n", + " \"In which year were you born?\": \"birth_year\",\n", + " \"What is your gender?\": \"gender\",\n", + " \"Do you have a valid driver's license?\": \"has_drivers_license\",\n", + " \"Are you a student?\": \"is_student\",\n", + " \"What is the highest grade or degree that you have completed?\": \"highest_education\",\n", + " \"Do you work for either pay or profit?\": \"is_paid\",\n", + " \"Do you have more than one job?\": \"has_multiple_jobs\",\n", + " \"Do you work full-time or part-time at your primary job?\": \"primary_job_type\",\n", + " \"Which best describes your primary job?\": \"primary_job_description\",\n", + " \"How did you usually get to your primary job last week? \": \"primary_job_commute_mode\",\n", + " \"Thinking about your daily commute to work last week, how many minutes did it usually take to get from home to the primary job/work place?\": \"primary_job_commute_time\",\n", + " \"At your primary job, do you have the ability to set or change your own start time?\": \"is_primary_job_flexible\",\n", + " \"Do you have the option of working from home or an alternate location instead of going into your primary work place?\": \"primary_job_can_wfh\",\n", + " \"How many days per week do you usually work from home or an alternate location?\": \"wfh_days\",\n", + " \"Do you own or rent your place of residence?\": \"residence_ownership_type\",\n", + " \"What is your home type?\": \"residence_type\",\n", + " \"Please identify which category represents your total household income, before taxes, for last year.\": \"income_category\",\n", + " \"Including yourself, how many people live in your home?\": \"n_residence_members\",\n", + " \"How many children under age 18 live in your home?\": \"n_residents_u18\",\n", + " \"Including yourself, how many people have a driver's license in your household?\": \"n_residents_with_license\",\n", + " \"How many motor vehicles are owned, leased, or available for regular use by the people who currently live in your household?\": \"n_motor_vehicles\",\n", + " \"If you were unable to use your household vehicle(s), which of the following options would be available to you to get you from place to place?\": \"available_modes\",\n", + " \"Do you have a medical condition that makes it difficult to travel outside of the home?\": \"has_medical_condition\",\n", + " \"How long have you had this condition?\": \"medical_condition_duration\"\n", + " },\n", + " axis='columns',\n", + " inplace=True\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "id": "48a2ece6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 a2d48b05d5454d428c0841432c7467b6\n", + "1 f2799dc202bc4249b42a4fda8770d1b6\n", + "2 b2bbe715b6a14fd19f751cae8adf6b4e\n", + "3 6373dfb8cb9b47e88e8f76adcfadde20\n", + "4 93c6e0f156a44e07b920ded664419dc6\n", + "Name: user_id, dtype: object" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(survey_data.user_id.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "f88441fe", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 6373dfb8cb9b47e88e8f76adcfadde20\n", + "1 6373dfb8cb9b47e88e8f76adcfadde20\n", + "2 6373dfb8cb9b47e88e8f76adcfadde20\n", + "3 6373dfb8cb9b47e88e8f76adcfadde20\n", + "4 6373dfb8cb9b47e88e8f76adcfadde20\n", + "Name: user_id, dtype: object" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(df.user_id.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "id": "2af9b36f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "203" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(survey_data.user_id.unique())" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "de46b68c", + "metadata": {}, + "outputs": [], + "source": [ + "f_survey = survey_data.loc[survey_data.user_id.isin(df.user_id), :]" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "id": "9b77fd2f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "156" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(f_survey.user_id.unique())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e23fa31b", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "emission", + "language": "python", + "name": "emission" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/rm_src/cost_time_avl_preprocessing.ipynb b/rm_src/cost_time_avl_preprocessing.ipynb new file mode 100644 index 0000000..1fee0a1 --- /dev/null +++ b/rm_src/cost_time_avl_preprocessing.ipynb @@ -0,0 +1,1847 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import ast\n", + "from traceback import print_exception\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_84693/3166671539.py:3: DtypeWarning: Columns (40) have mixed types. Specify dtype option on import or set low_memory=False.\n", + " df = pd.read_csv('../data/final_modeling_data_02142024.csv')\n" + ] + } + ], + "source": [ + "# Data loading. Refer to the mnl_exploration.ipynb file for details on how user-level features are generated.\n", + "\n", + "df = pd.read_csv('../data/final_modeling_data_02142024.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Shape: (80690, 105)\n" + ] + } + ], + "source": [ + "print(\"Shape: \", df.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [], + "source": [ + "df.drop_duplicates(inplace=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Add weather info" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [], + "source": [ + "df.start_fmt_time = pd.to_datetime(df.start_fmt_time, utc=True).dt.tz_convert('America/Denver')" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(Timestamp('2020-11-02 18:48:13.450000-0700', tz='America/Denver'),\n", + " Timestamp('2022-12-30 23:33:27.147785-0700', tz='America/Denver'))" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# We now need weather data. To get that, we download data from OpenMeteo for the given dates.\n", + "df.start_fmt_time.min(), df.start_fmt_time.max()" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [], + "source": [ + "# Downloaded using OpenMeteo API.\n", + "weather_df = pd.read_csv('../data/denver_weather_data.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [], + "source": [ + "weather_df.time = pd.to_datetime(weather_df.time, utc=True).dt.tz_convert('America/Denver')" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [], + "source": [ + "original_shape = df.shape[0]\n", + "\n", + "# Round start time to nearest hour.\n", + "df['start_time_rounded'] = df.start_fmt_time.dt.round(\n", + " 'H', ambiguous='infer', nonexistent='shift_backward'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [], + "source": [ + "# True intersection\n", + "df = df.merge(right=weather_df, left_on='start_time_rounded', right_on='time', how='left')" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [], + "source": [ + "# Drop rows where weather data is NA.\n", + "df.dropna(subset=['temperature_2m (°F)','relative_humidity_2m (%)', 'dew_point_2m (°F)', 'rain (inch)',\n", + " 'snowfall (inch)', 'wind_speed_10m (mp/h)', 'wind_gusts_10m (mp/h)'], inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Old shape: 80690. new shape: 80688\n" + ] + } + ], + "source": [ + "print(f\"Old shape: {original_shape}. new shape: {df.shape[0]}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [], + "source": [ + "df.drop(columns=['start_time_rounded', 'time'], inplace=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Creating the dummy variables for the available modes" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'source': 0,\n", + " 'end_ts': 0,\n", + " 'end_fmt_time': 0,\n", + " 'end_loc': 0,\n", + " 'raw_trip': 0,\n", + " 'start_ts': 0,\n", + " 'start_fmt_time': 0,\n", + " 'start_loc': 0,\n", + " 'duration': 0,\n", + " 'distance': 0,\n", + " 'start_place': 0,\n", + " 'end_place': 0,\n", + " 'cleaned_trip': 0,\n", + " 'inferred_labels': 216,\n", + " 'inferred_trip': 216,\n", + " 'expectation': 216,\n", + " 'confidence_threshold': 216,\n", + " 'expected_trip': 216,\n", + " 'user_input': 0,\n", + " 'section_modes': 0,\n", + " 'section_distances': 0,\n", + " 'start:year': 0,\n", + " 'start:month': 0,\n", + " 'start:day': 0,\n", + " 'start:hour': 0,\n", + " 'start_local_dt_minute': 0,\n", + " 'start_local_dt_second': 0,\n", + " 'start_local_dt_weekday': 0,\n", + " 'start_local_dt_timezone': 0,\n", + " 'end:year': 0,\n", + " 'end:month': 0,\n", + " 'end:day': 0,\n", + " 'end:hour': 0,\n", + " 'end_local_dt_minute': 0,\n", + " 'end_local_dt_second': 0,\n", + " 'end_local_dt_weekday': 0,\n", + " 'end_local_dt_timezone': 0,\n", + " '_id': 0,\n", + " 'user_id': 0,\n", + " 'metadata_write_ts': 0,\n", + " 'additions': 80686,\n", + " 'mode_confirm': 337,\n", + " 'purpose_confirm': 527,\n", + " 'distance_miles': 0,\n", + " 'Mode_confirm': 0,\n", + " 'Replaced_mode': 0,\n", + " 'Trip_purpose': 0,\n", + " 'original_user_id': 0,\n", + " 'program': 0,\n", + " 'opcode': 0,\n", + " 'Timestamp': 0,\n", + " 'birth_year': 0,\n", + " 'primary_job_commute_time': 0,\n", + " 'income_category': 0,\n", + " 'n_residence_members': 0,\n", + " 'n_residents_u18': 0,\n", + " 'n_residents_with_license': 0,\n", + " 'n_motor_vehicles': 0,\n", + " 'available_modes': 0,\n", + " 'age': 0,\n", + " 'gender_Man': 0,\n", + " 'gender_Man;Nonbinary/genderqueer/genderfluid': 0,\n", + " 'gender_Nonbinary/genderqueer/genderfluid': 0,\n", + " 'gender_Prefer not to say': 0,\n", + " 'gender_Woman': 0,\n", + " 'gender_Woman;Nonbinary/genderqueer/genderfluid': 0,\n", + " 'has_drivers_license_No': 0,\n", + " 'has_drivers_license_Prefer not to say': 0,\n", + " 'has_drivers_license_Yes': 0,\n", + " 'has_multiple_jobs_No': 0,\n", + " 'has_multiple_jobs_Prefer not to say': 0,\n", + " 'has_multiple_jobs_Yes': 0,\n", + " \"highest_education_Bachelor's degree\": 0,\n", + " 'highest_education_Graduate degree or professional degree': 0,\n", + " 'highest_education_High school graduate or GED': 0,\n", + " 'highest_education_Less than a high school graduate': 0,\n", + " 'highest_education_Prefer not to say': 0,\n", + " 'highest_education_Some college or associates degree': 0,\n", + " 'primary_job_type_Full-time': 0,\n", + " 'primary_job_type_Part-time': 0,\n", + " 'primary_job_type_Prefer not to say': 0,\n", + " 'primary_job_description_Clerical': 0,\n", + " 'primary_job_description_Clerical or administrative support': 0,\n", + " 'primary_job_description_Custodial': 0,\n", + " 'primary_job_description_Education': 0,\n", + " 'primary_job_description_Food service': 0,\n", + " 'primary_job_description_Maintenance': 0,\n", + " 'primary_job_description_Manufacturing, construction, maintenance, or farming': 0,\n", + " 'primary_job_description_Medical/healthcare': 0,\n", + " 'primary_job_description_Other': 0,\n", + " 'primary_job_description_Professional, managerial, or technical': 0,\n", + " 'primary_job_description_Sales or service': 0,\n", + " 'primary_job_commute_mode_Active transport': 0,\n", + " 'primary_job_commute_mode_Car transport': 0,\n", + " 'primary_job_commute_mode_Hybrid': 0,\n", + " 'primary_job_commute_mode_Public transport': 0,\n", + " 'primary_job_commute_mode_Unknown': 0,\n", + " 'primary_job_commute_mode_WFH': 0,\n", + " 'is_overnight_trip': 0,\n", + " 'n_working_residents': 0,\n", + " 'start_lat': 0,\n", + " 'start_lng': 0,\n", + " 'end_lat': 0,\n", + " 'end_lng': 0,\n", + " 'section_durations': 0,\n", + " 'temperature_2m (°F)': 0,\n", + " 'relative_humidity_2m (%)': 0,\n", + " 'dew_point_2m (°F)': 0,\n", + " 'rain (inch)': 0,\n", + " 'snowfall (inch)': 0,\n", + " 'wind_speed_10m (mp/h)': 0,\n", + " 'wind_gusts_10m (mp/h)': 0}" + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.isna().sum().to_dict()" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [], + "source": [ + "# | [d1, d2, d3] | [t1, t2, t3] | [m1, m2, m3] |\n", + "\n", + "\n", + "def compute_argmax(df: pd.DataFrame):\n", + " # Create the two columns.\n", + " df[['section_distance_argmax', 'section_duration_argmax', 'section_mode_argmax', 'section_coordinates_argmax']] = None\n", + " rows = list()\n", + "\n", + " for ix, row in df.iterrows():\n", + " row_dict = row.to_dict()\n", + " \n", + " try:\n", + " parsed_distances = ast.literal_eval(row_dict['section_distances'])\n", + " parsed_durations = ast.literal_eval(row_dict['section_durations'])\n", + " parsed_modes = ast.literal_eval(row_dict['section_modes'])\n", + "\n", + " argmax_ix = np.argmax(parsed_distances)\n", + " \n", + " # Pick the argmax and scale to miles. (meters -> miles)\n", + " row_dict['section_distance_argmax'] = parsed_distances[argmax_ix] * 0.0006213712\n", + " \n", + " # Pick the argmax and scale to minutes.\n", + " row_dict['section_duration_argmax'] = parsed_durations[argmax_ix] / 60\n", + " \n", + " # Pick the argmax mode.\n", + " row_dict['section_mode_argmax'] = parsed_modes[argmax_ix]\n", + " \n", + " row_dict['mark'] = False\n", + "\n", + " except Exception as e:\n", + " row_dict['mark'] = True\n", + "\n", + " rows.append(row_dict)\n", + "\n", + " return pd.DataFrame(rows)" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [], + "source": [ + "# Let's plot the mode-wise durations as a function of distance.\n", + "df = compute_argmax(df)" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [], + "source": [ + "df.drop(columns=['section_distances', 'section_durations', 'section_modes'], inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": {}, + "outputs": [], + "source": [ + "df = df.loc[~df.mark, :].reset_index(drop=True, inplace=False).drop(columns=['mark'], inplace=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [], + "source": [ + "# Drop instances where duration/distance is unusable.\n", + "df.drop(\n", + " index=df.loc[(df.section_distance_argmax <= 0) | (df.section_duration_argmax <= 0), :].index,\n", + " inplace=False\n", + ").reset_index(drop=True, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": {}, + "outputs": [], + "source": [ + "# bus, train, bicycling, walking, car\n", + "# split-apply-combine\n", + "def drop_outliers(df: pd.DataFrame) -> pd.DataFrame:\n", + " def filter_by_percentiles(group):\n", + " distance_low = group['section_distance_argmax'].quantile(0.1)\n", + " distance_high = group['section_distance_argmax'].quantile(0.9)\n", + " duration_low = group['section_duration_argmax'].quantile(0.1)\n", + " duration_high = group['section_duration_argmax'].quantile(0.9)\n", + " \n", + " l1_filter = group[\n", + " (group['section_distance_argmax'] >= distance_low) &\n", + " (group['section_distance_argmax'] <= distance_high)\n", + " ].reset_index(drop=True)\n", + " \n", + " l2_filter = l1_filter[\n", + " (l1_filter['section_duration_argmax'] >= duration_low) &\n", + " (l1_filter['section_duration_argmax'] <= duration_high)\n", + " ].reset_index(drop=True)\n", + " \n", + " return l2_filter\n", + " \n", + " return df.groupby('section_mode_argmax').apply(filter_by_percentiles).reset_index(drop=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [], + "source": [ + "filtered_df = drop_outliers(df)\n", + "\n", + "# Ideal speed. distance/time.\n", + "filtered_df['mph'] = (\n", + " (filtered_df['section_distance_argmax'] * 60.)/filtered_df['section_duration_argmax']\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": {}, + "outputs": [], + "source": [ + "def filter_mph(df: pd.DataFrame) -> pd.DataFrame:\n", + " \n", + " MPH_THRESHOLDS = {\n", + " # https://www.sciencedirect.com/science/article/pii/S2210670718304682\n", + " 'bicycling': 15.,\n", + " # https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7806575/\n", + " 'walking': 2.93\n", + " }\n", + " \n", + " def custom_filter(group):\n", + " # Drop data specified in the dict manually.\n", + " if group.name in MPH_THRESHOLDS.keys():\n", + " f_df = group[group['mph'] <= MPH_THRESHOLDS[group.name]]\n", + " else:\n", + " mph_low = group['mph'].quantile(0.1)\n", + " mph_high = group['mph'].quantile(0.9)\n", + "\n", + " f_df = group[(group['mph'] >= mph_low) & (group['mph'] <= mph_high)]\n", + " \n", + " return f_df\n", + " \n", + " return df.groupby('section_mode_argmax').apply(custom_filter).reset_index(drop=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [], + "source": [ + "filtered_df = filter_mph(filtered_df)" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
section_distance_argmaxsection_duration_argmax
countmeanstdmin25%50%75%maxcountmeanstdmin25%50%75%max
section_mode_argmax
bicycling7196.02.1472810.8880860.8022211.5001711.9554792.5857634.8921377196.013.7543135.1485645.8866399.92784412.65573016.65578029.141947
bus290.01.4324930.6188670.3728750.9402111.4867441.9175823.016720290.08.9601153.6159532.9631776.4969728.24097410.66893520.585433
car24744.04.1324102.6019940.9114462.1926613.4290225.35017014.68807724744.013.9729716.6663585.6728308.77901612.12382017.50581135.306784
no_sensed1681.02.6773262.3654480.1780711.0261751.9546733.54760013.5540131681.015.96726412.1124981.0798687.16666712.30740021.62607755.445744
subway7.023.44147910.54068713.11312814.80424123.58765527.44459042.8919057.041.87396817.61057223.75777229.86640734.40000051.80143371.624326
train63.012.2623004.0212154.32211010.03039210.69183015.44695222.82090863.029.72245110.54837212.51929621.97667226.40000038.51193755.713396
walking12072.00.4759990.3681410.1200820.2219630.3482520.5945412.20840812072.019.66887913.0490735.2842339.39120515.45729126.25143360.423767
\n", + "
" + ], + "text/plain": [ + " section_distance_argmax \\\n", + " count mean std min \n", + "section_mode_argmax \n", + "bicycling 7196.0 2.147281 0.888086 0.802221 \n", + "bus 290.0 1.432493 0.618867 0.372875 \n", + "car 24744.0 4.132410 2.601994 0.911446 \n", + "no_sensed 1681.0 2.677326 2.365448 0.178071 \n", + "subway 7.0 23.441479 10.540687 13.113128 \n", + "train 63.0 12.262300 4.021215 4.322110 \n", + "walking 12072.0 0.475999 0.368141 0.120082 \n", + "\n", + " \\\n", + " 25% 50% 75% max \n", + "section_mode_argmax \n", + "bicycling 1.500171 1.955479 2.585763 4.892137 \n", + "bus 0.940211 1.486744 1.917582 3.016720 \n", + "car 2.192661 3.429022 5.350170 14.688077 \n", + "no_sensed 1.026175 1.954673 3.547600 13.554013 \n", + "subway 14.804241 23.587655 27.444590 42.891905 \n", + "train 10.030392 10.691830 15.446952 22.820908 \n", + "walking 0.221963 0.348252 0.594541 2.208408 \n", + "\n", + " section_duration_argmax \\\n", + " count mean std min \n", + "section_mode_argmax \n", + "bicycling 7196.0 13.754313 5.148564 5.886639 \n", + "bus 290.0 8.960115 3.615953 2.963177 \n", + "car 24744.0 13.972971 6.666358 5.672830 \n", + "no_sensed 1681.0 15.967264 12.112498 1.079868 \n", + "subway 7.0 41.873968 17.610572 23.757772 \n", + "train 63.0 29.722451 10.548372 12.519296 \n", + "walking 12072.0 19.668879 13.049073 5.284233 \n", + "\n", + " \n", + " 25% 50% 75% max \n", + "section_mode_argmax \n", + "bicycling 9.927844 12.655730 16.655780 29.141947 \n", + "bus 6.496972 8.240974 10.668935 20.585433 \n", + "car 8.779016 12.123820 17.505811 35.306784 \n", + "no_sensed 7.166667 12.307400 21.626077 55.445744 \n", + "subway 29.866407 34.400000 51.801433 71.624326 \n", + "train 21.976672 26.400000 38.511937 55.713396 \n", + "walking 9.391205 15.457291 26.251433 60.423767 " + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "filtered_df.groupby('section_mode_argmax')[['section_distance_argmax', 'section_duration_argmax']].describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mph
countmeanstdmin25%50%75%max
section_mode_argmax
bicycling7196.09.5503662.3712042.8175807.8401119.58799411.23963914.998472
bus290.09.8481503.1127114.2643247.2754539.85353212.42111815.596840
car24744.017.3543815.5879488.56685312.71655816.57989421.47049530.036223
no_sensed1681.010.2995874.5143424.6083166.5719069.21338213.05042722.598194
subway7.034.70867612.04792424.45714426.51763932.86680736.51556659.570373
train63.025.0956163.08480819.88346822.69968724.74644127.29282431.597822
walking12072.01.6215290.7453580.1315920.9989441.6168222.2614442.929953
\n", + "
" + ], + "text/plain": [ + " mph \\\n", + " count mean std min 25% \n", + "section_mode_argmax \n", + "bicycling 7196.0 9.550366 2.371204 2.817580 7.840111 \n", + "bus 290.0 9.848150 3.112711 4.264324 7.275453 \n", + "car 24744.0 17.354381 5.587948 8.566853 12.716558 \n", + "no_sensed 1681.0 10.299587 4.514342 4.608316 6.571906 \n", + "subway 7.0 34.708676 12.047924 24.457144 26.517639 \n", + "train 63.0 25.095616 3.084808 19.883468 22.699687 \n", + "walking 12072.0 1.621529 0.745358 0.131592 0.998944 \n", + "\n", + " \n", + " 50% 75% max \n", + "section_mode_argmax \n", + "bicycling 9.587994 11.239639 14.998472 \n", + "bus 9.853532 12.421118 15.596840 \n", + "car 16.579894 21.470495 30.036223 \n", + "no_sensed 9.213382 13.050427 22.598194 \n", + "subway 32.866807 36.515566 59.570373 \n", + "train 24.746441 27.292824 31.597822 \n", + "walking 1.616822 2.261444 2.929953 " + ] + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "filtered_df.groupby('section_mode_argmax')[['mph']].describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dropped 34542 rows.\n" + ] + } + ], + "source": [ + "print(f\"Dropped {df.shape[0] - filtered_df.shape[0]} rows.\")" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['Regular Bike', 'Other', 'No Travel', 'Gas Car, drove alone',\n", + " 'Gas Car, with others', 'Walk', 'Taxi/Uber/Lyft', 'Train',\n", + " 'Bikeshare', 'Bus', 'Skate board', 'Free Shuttle', 'Scooter share',\n", + " 'E-bike', 'Not a Trip'], dtype=object)" + ] + }, + "execution_count": 100, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "filtered_df.Replaced_mode.unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'p_micro': 1, 'no_trip': 2, 's_car': 3, 'transit': 4, 'car': 5, 's_micro': 6, 'ridehail': 7, 'walk': 8, 'unknown': 9}\n" + ] + } + ], + "source": [ + "## Define the mapping strategy\n", + "\n", + "\"\"\"\n", + "p_micro: Personal micromobility\n", + "s_micro: Shared micromobility\n", + "s_car: Shared car\n", + "car: Car/rental car\n", + "transit: train + bus\n", + "no_trip: No vehicle / None\n", + "ridehail: Uber/Lyft\n", + "\"\"\"\n", + "\n", + "available = {\n", + " 'Bicycle': 'p_micro',\n", + " 'Do not have vehicle': 'unknown',\n", + " 'Get a ride from a friend or family member': 's_car',\n", + " 'None': 'no_trip',\n", + " 'Public transportation (bus, subway, light rail, etc.)': 'transit',\n", + " 'Rental car (including Zipcar/ Car2Go)': 'car',\n", + " 'Shared bicycle or scooter': 's_micro',\n", + " 'Skateboard': 'p_micro',\n", + " 'Taxi (regular taxi, Uber, Lyft, etc)': 'ridehail',\n", + " 'Walk/roll': 'walk',\n", + " 'Prefer not to say': 'unknown'\n", + "}\n", + "\n", + "# Map each sensed mode to the binary indicators.\n", + "section_mode_mapping = {\n", + " 'bicycling': ['p_micro', 's_micro'],\n", + " 'bus': ['transit'],\n", + " 'car': ['s_car', 'car', 'ridehail'],\n", + " 'no_sensed': ['unknown'],\n", + " 'train': ['transit'],\n", + " 'walking': ['walk'],\n", + " 'subway': ['transit']\n", + "}\n", + "\n", + "# For target - mode_confirm\n", + "# target_mapping = {\n", + "# 'Regular Bike': 'p_micro',\n", + "# 'Walk': 'walk',\n", + "# 'Gas Car, with others': 's_car',\n", + "# 'Gas Car, drove alone': 'car',\n", + "# 'Bikeshare': 's_micro',\n", + "# 'Other': 'unknown',\n", + "# 'Bus': 'transit',\n", + "# 'Not a Trip': 'no_trip',\n", + "# 'E-bike': 'p_micro',\n", + "# 'Train': 'transit',\n", + "# 'Taxi/Uber/Lyft': 'ridehail',\n", + "# 'Free Shuttle': 'transit',\n", + "# 'Scooter share': 's_micro',\n", + "# 'Skate board': 'p_micro'\n", + "# }\n", + "\n", + "# For target - replaced_mode\n", + "target_mapping = {\n", + " 'Regular Bike': 'p_micro', \n", + " 'Walk': 'walk', \n", + " 'No Travel': 'no_trip', \n", + " 'Other': 'unknown',\n", + " 'Gas Car, with others': 's_car',\n", + " 'Gas Car, drove alone': 'car',\n", + " 'Train': 'transit',\n", + " 'Scooter share': 's_micro', \n", + " 'Taxi/Uber/Lyft': 'ridehail', \n", + " 'Free Shuttle': 'transit', \n", + " 'Skate board': 'p_micro',\n", + " 'Bikeshare': 's_micro',\n", + " 'Bus': 'transit',\n", + " 'Not a Trip': 'no_trip',\n", + " 'E-bike': 'p_micro'\n", + "}\n", + "\n", + "# # These values were obtained using a simple linear regression model. Specifics can be found in time_distance_estimation.ipynb\n", + "# duration_dict = {\n", + "# 'walk': {\n", + "# 'intercept': 14.09698152519682,\n", + "# 'coef': 19.153802211061134\n", + "# },\n", + "# 'p_micro': {\n", + "# 'intercept': 4.753590860550791,\n", + "# 'coef': 4.2723965916811935\n", + "# },\n", + "# 's_micro': {\n", + "# 'intercept': 4.753590860550791,\n", + "# 'coef': 4.2723965916811935\n", + "# },\n", + "# 's_car': {\n", + "# 'intercept': 10.515751350707365, \n", + "# 'coef': 1.112111276629702\n", + "# },\n", + "# 'car': {\n", + "# 'intercept': 10.515751350707365, \n", + "# 'coef': 1.112111276629702\n", + "# },\n", + "# 'ridehail': {\n", + "# 'intercept': 10.515751350707365, \n", + "# 'coef': 1.112111276629702\n", + "# },\n", + "# 'transit': {\n", + "# 'intercept': 7.5000351741492395,\n", + "# 'coef': 1.839562017986485\n", + "# },\n", + "# 'unknown': {\n", + "# 'intercept': 9.423026094931313,\n", + "# 'coef': 2.640429444466706\n", + "# },\n", + "# 'no_trip': {\n", + "# 'intercept': 0.,\n", + "# 'coef': 0.\n", + "# }\n", + "# }\n", + "\n", + "ordinal_mapping = {'p_micro': 1, 'no_trip': 2, 's_car': 3, 'transit': 4, 'car': 5, 's_micro': 6, 'ridehail': 7, 'walk': 8, 'unknown': 9}\n", + "reverse_ordinal_mapping = {v:k for k,v in ordinal_mapping.items()}\n", + "\n", + "print(ordinal_mapping)" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": {}, + "outputs": [], + "source": [ + "def generate_available_features(\n", + " df: pd.DataFrame, av: dict, sm: dict, target_mapper: dict\n", + "):\n", + " \"\"\"\n", + " This method generates the wide-form dummy features for available modes.\n", + " The current implementation uses (section_mode_argmax OR available_modes) to indicate mode availability.\n", + " \"\"\"\n", + "\n", + " # Reset indices.\n", + " df = df.reset_index(drop=True, inplace=False)\n", + "\n", + " columns = list(set(av.values())) + ['unknown']\n", + "\n", + " # Create the columns along with the 'chosen' column.\n", + " df[columns] = 0\n", + "\n", + " row_dicts = list()\n", + "\n", + " for i, row in df.iterrows():\n", + " row_dict = row.to_dict()\n", + "\n", + " # Access the available modes. Split on ; and strip all the elements.\n", + " available_modes = [x.strip() for x in str(row_dict['available_modes']).split(';')]\n", + " \n", + " # Set all the available modes associated with the chosen modes too.\n", + " # Toggle this flag off if you don't want the target to be considered as an available mode.\n", + " # row_dict[row_dict['chosen']] = 1\n", + " \n", + " row_dict['target'] = target_mapper[row_dict['target']]\n", + " \n", + " # Update the available modes.\n", + " for available_mode in available_modes:\n", + " row_dict[av[available_mode]] = 1\n", + " \n", + " # Now, look at the section_mode_argmax as a proxy for the confirmed mode.\n", + " chosen_modes = sm[row_dict['section_mode_argmax']]\n", + "\n", + " # Determine the length of the mapping.\n", + " n = len(chosen_modes)\n", + "\n", + " # # Go ahead and modify the current dict with the first value.\n", + " # row_dict['chosen'] = ordinal_mapper[chosen_modes[0]]\n", + " # row_dict['primary_mode'] = 1\n", + "\n", + " # Also update the available modes.\n", + " for chosen_mode in chosen_modes:\n", + " row_dict[chosen_mode] = 1\n", + "\n", + " # # Append the first row to the list.\n", + " row_dicts.append(row_dict)\n", + " \n", + " constructed = pd.DataFrame(row_dicts)\n", + " constructed.rename(columns=dict([(c, 'av_'+c) for c in target_mapper.keys()]), inplace=True)\n", + "\n", + " return constructed" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```language=python\n", + "{'p_micro': 1, 'no_trip': 2, 's_car': 3, 'transit': 4, 'car': 5, 's_micro': 6, 'ridehail': 7, 'walk': 8, 'unknown': 9}\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": {}, + "outputs": [], + "source": [ + "def generate_target_variable(df: pd.DataFrame, mapper: dict):\n", + " df['target'] = df['Replaced_mode'].apply(lambda x: mapper[x])\n", + " df.drop(columns=['Replaced_mode'], inplace=True)\n", + " return df\n", + "\n", + "filtered_df = generate_target_variable(filtered_df, target_mapping)" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [], + "source": [ + "# Generate wide-format availability indicators..\n", + "av_df = generate_available_features(filtered_df, available, section_mode_mapping, ordinal_mapping)\n", + "\n", + "# Collapse train and bus into 'transit'.\n", + "av_df.loc[av_df.section_mode_argmax.isin(['bus', 'train', 'subway']), 'section_mode_argmax'] = 'transit'" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['bicycling', 'transit', 'car', 'no_sensed', 'walking'],\n", + " dtype=object)" + ] + }, + "execution_count": 105, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "av_df.section_mode_argmax.unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sourceend_tsend_fmt_timeend_locraw_tripstart_tsstart_fmt_timestart_locdurationdistance...targetav_s_microav_walkav_no_tripav_unknownav_p_microav_carav_transitav_s_carav_ridehail
0DwellSegmentationTimeFilter1.619140e+092021-04-22 18:59:39-06:00{'type': 'Point', 'coordinates': [-105.1002447...6082e47f27dcf1f393b70dd81.619139e+092021-04-22 18:48:48.365291-06:00{'type': 'Point', 'coordinates': [-105.0772567...10.8439121995.541857...1100010000
1DwellSegmentationTimeFilter1.619197e+092021-04-23 11:04:53-06:00{'type': 'Point', 'coordinates': [-105.0776493...60830eac2b9762e085f774e81.619196e+092021-04-23 10:45:48.219950-06:00{'type': 'Point', 'coordinates': [-105.1228294...19.0796674764.133777...1100010000
2DwellSegmentationTimeFilter1.619728e+092021-04-29 14:23:25-06:00{'type': 'Point', 'coordinates': [-105.0776309...608b21db654c4a5ab2fa435a1.619727e+092021-04-29 14:05:50.979267-06:00{'type': 'Point', 'coordinates': [-105.1228283...17.5670124731.604069...9100010000
3DwellSegmentationTimeFilter1.619794e+092021-04-30 08:54:03-06:00{'type': 'Point', 'coordinates': [-105.0775022...608c1f002f548f5db71d16ef1.619793e+092021-04-30 08:34:49.162054-06:00{'type': 'Point', 'coordinates': [-105.1226652...19.2306324675.329725...9100010000
4DwellSegmentationTimeFilter1.619807e+092021-04-30 12:15:42-06:00{'type': 'Point', 'coordinates': [-105.1228054...608c8f7fb2d3b88f6947765e1.619805e+092021-04-30 11:58:07.194775-06:00{'type': 'Point', 'coordinates': [-105.0960769...17.5800872855.830523...1100010000
\n", + "

5 rows × 123 columns

\n", + "
" + ], + "text/plain": [ + " source end_ts end_fmt_time \\\n", + "0 DwellSegmentationTimeFilter 1.619140e+09 2021-04-22 18:59:39-06:00 \n", + "1 DwellSegmentationTimeFilter 1.619197e+09 2021-04-23 11:04:53-06:00 \n", + "2 DwellSegmentationTimeFilter 1.619728e+09 2021-04-29 14:23:25-06:00 \n", + "3 DwellSegmentationTimeFilter 1.619794e+09 2021-04-30 08:54:03-06:00 \n", + "4 DwellSegmentationTimeFilter 1.619807e+09 2021-04-30 12:15:42-06:00 \n", + "\n", + " end_loc \\\n", + "0 {'type': 'Point', 'coordinates': [-105.1002447... \n", + "1 {'type': 'Point', 'coordinates': [-105.0776493... \n", + "2 {'type': 'Point', 'coordinates': [-105.0776309... \n", + "3 {'type': 'Point', 'coordinates': [-105.0775022... \n", + "4 {'type': 'Point', 'coordinates': [-105.1228054... \n", + "\n", + " raw_trip start_ts start_fmt_time \\\n", + "0 6082e47f27dcf1f393b70dd8 1.619139e+09 2021-04-22 18:48:48.365291-06:00 \n", + "1 60830eac2b9762e085f774e8 1.619196e+09 2021-04-23 10:45:48.219950-06:00 \n", + "2 608b21db654c4a5ab2fa435a 1.619727e+09 2021-04-29 14:05:50.979267-06:00 \n", + "3 608c1f002f548f5db71d16ef 1.619793e+09 2021-04-30 08:34:49.162054-06:00 \n", + "4 608c8f7fb2d3b88f6947765e 1.619805e+09 2021-04-30 11:58:07.194775-06:00 \n", + "\n", + " start_loc duration distance \\\n", + "0 {'type': 'Point', 'coordinates': [-105.0772567... 10.843912 1995.541857 \n", + "1 {'type': 'Point', 'coordinates': [-105.1228294... 19.079667 4764.133777 \n", + "2 {'type': 'Point', 'coordinates': [-105.1228283... 17.567012 4731.604069 \n", + "3 {'type': 'Point', 'coordinates': [-105.1226652... 19.230632 4675.329725 \n", + "4 {'type': 'Point', 'coordinates': [-105.0960769... 17.580087 2855.830523 \n", + "\n", + " ... target av_s_micro av_walk av_no_trip av_unknown av_p_micro av_car \\\n", + "0 ... 1 1 0 0 0 1 0 \n", + "1 ... 1 1 0 0 0 1 0 \n", + "2 ... 9 1 0 0 0 1 0 \n", + "3 ... 9 1 0 0 0 1 0 \n", + "4 ... 1 1 0 0 0 1 0 \n", + "\n", + " av_transit av_s_car av_ridehail \n", + "0 0 0 0 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + "[5 rows x 123 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(av_df.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": {}, + "outputs": [], + "source": [ + "# def compute_alt_durations(df: pd.DataFrame, reverse_mapper: dict, duration_mapper: dict):\n", + "# '''\n", + "# We re-iterate over the generated available mode df and populate the modes.\n", + "# We are only concerned with the rows that have primary_mode = 0, which indicates that they are alternate mode rows.\n", + "# '''\n", + "\n", + "# column_names = list(reverse_mapper.values())\n", + "\n", + "# # Start with a 0 cost for everyone.\n", + "# df[column_names] = 0\n", + "\n", + "# rows = list()\n", + "# for ix, row in df.iterrows():\n", + " \n", + "# # Convert to a dict\n", + "# row_dict = row.to_dict()\n", + "\n", + "# for mode in column_names:\n", + "# if mode == reverse_mapper[row['chosen']]:\n", + "# row_dict[mode] = row_dict['section_distance_argmax']\n", + "# continue\n", + " \n", + "# mode_params = duration_mapper[mode]\n", + "# # use availability as a mask.\n", + "# row_dict[mode] = mode_params['intercept'] + (mode_params['coef'] * row_dict['section_distance_argmax'])\n", + " \n", + "# rows.append(row_dict)\n", + " \n", + "# return pd.DataFrame(rows).rename(columns=dict([(c, 'tt_'+c) for c in column_names]), inplace=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [], + "source": [ + "# av_time_df = compute_alt_durations(av_df, reverse_ordinal_mapping, duration_dict)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cost estimation\n", + "\n", + "```\n", + "{'p_micro': 1, 'no_trip': 2, 's_car': 3, 'transit': 4, 'car': 5, 's_micro': 6, 'ridehail': 7, 'walk': 8, 'unknown': 9}\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": {}, + "outputs": [], + "source": [ + "# All values are taken from VTPI.\n", + "# https://www.vtpi.org/tca/tca0501.pdf\n", + "mode_cost_per_mile = {\n", + " # bicycle/skateboard\n", + " 'p_micro': 0.,\n", + " 'no_trip': 0.,\n", + " # Shared car is half the cost of regular car, which is $0.6/mile.\n", + " 's_car': 0.3,\n", + " # Rental car.\n", + " 'car': 0.6,\n", + " # Average of bus and train taken.\n", + " 'transit': 0.5,\n", + " # Shared bicyle or scooter - values taken from https://nacto.org/shared-micromobility-2020-2021/ and \n", + " # https://www.mckinsey.com/industries/automotive-and-assembly/our-insights/how-sharing-the-road-is-likely-to-transform-american-mobility\n", + " 's_micro': 0.3,\n", + " # uber/taxi/lyft\n", + " 'ridehail': 2.,\n", + " 'walk': 0.,\n", + " 'unknown': 0.\n", + "}\n", + "\n", + "# Assumptions.\n", + "mode_init_cost = {\n", + " 'p_micro': 0.,\n", + " 'no_trip': 0.,\n", + " # Shared car is half the cost of regular car, which is $0.6/mile.\n", + " 's_car': 0.,\n", + " # Rental car.\n", + " 'car': 0.,\n", + " # Average of bus and train taken.\n", + " 'transit': 0.,\n", + " # $1 unlocking cost.\n", + " 's_micro': 1.,\n", + " # uber/taxi/lyft\n", + " 'ridehail': 1.,\n", + " 'walk': 0.,\n", + " 'unknown': 0.\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "metadata": {}, + "outputs": [], + "source": [ + "def compute_cost_estimates(df: pd.DataFrame, cost_mapper: dict, init_cost_mapper: dict, ordinal_mapper: dict):\n", + " \n", + " # Create some extra colums.\n", + " columns = list(ordinal_mapper.keys())\n", + "\n", + " # Initialize the columns to 0.\n", + " df[columns] = 0.\n", + "\n", + " rows = list()\n", + "\n", + " # Iterate over every row.\n", + " for _, row in df.iterrows():\n", + " # Check which flags are active.\n", + " row_dict = row.to_dict()\n", + "\n", + " # Access the section_distance_argmax attribute for the distance. Note that this is now in miles.\n", + " distance = row_dict['section_distance_argmax']\n", + " \n", + " # Mask using availability.\n", + " for lookup in columns:\n", + " row_dict[lookup] = row_dict['av_' + lookup] * (init_cost_mapper[lookup] + (cost_mapper[lookup] * distance))\n", + "\n", + " rows.append(row_dict)\n", + "\n", + " new_df = pd.DataFrame(rows)\n", + " new_df.rename(columns=dict([(c, 'cost_'+c) for c in ordinal_mapper.keys()]), inplace=True)\n", + "\n", + " return new_df" + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "metadata": {}, + "outputs": [], + "source": [ + "cost_df = compute_cost_estimates(\n", + " av_df, cost_mapper=mode_cost_per_mile, \n", + " init_cost_mapper=mode_init_cost, \n", + " ordinal_mapper=ordinal_mapping\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cost_p_microcost_no_tripcost_s_carcost_transitcost_carcost_s_microcost_ridehailcost_walkcost_unknown
count46053.046053.046053.00000046053.00000046053.00000046053.00000046053.00000046053.046053.0
mean0.00.00.7596020.9246031.3549170.3996585.6044210.00.0
std0.00.00.8115861.2280511.6888350.7707155.7398800.00.0
min0.00.00.0000000.0000000.0000000.0000000.0000000.00.0
25%0.00.00.0685020.0000000.0000000.0000000.0000000.00.0
50%0.00.00.5656420.5084740.8908920.0000004.5696880.00.0
75%0.00.01.1122211.3611752.1780410.0000008.3663280.00.0
max0.00.012.86757221.44595325.7351435.35157486.7838110.00.0
\n", + "
" + ], + "text/plain": [ + " cost_p_micro cost_no_trip cost_s_car cost_transit cost_car \\\n", + "count 46053.0 46053.0 46053.000000 46053.000000 46053.000000 \n", + "mean 0.0 0.0 0.759602 0.924603 1.354917 \n", + "std 0.0 0.0 0.811586 1.228051 1.688835 \n", + "min 0.0 0.0 0.000000 0.000000 0.000000 \n", + "25% 0.0 0.0 0.068502 0.000000 0.000000 \n", + "50% 0.0 0.0 0.565642 0.508474 0.890892 \n", + "75% 0.0 0.0 1.112221 1.361175 2.178041 \n", + "max 0.0 0.0 12.867572 21.445953 25.735143 \n", + "\n", + " cost_s_micro cost_ridehail cost_walk cost_unknown \n", + "count 46053.000000 46053.000000 46053.0 46053.0 \n", + "mean 0.399658 5.604421 0.0 0.0 \n", + "std 0.770715 5.739880 0.0 0.0 \n", + "min 0.000000 0.000000 0.0 0.0 \n", + "25% 0.000000 0.000000 0.0 0.0 \n", + "50% 0.000000 4.569688 0.0 0.0 \n", + "75% 0.000000 8.366328 0.0 0.0 \n", + "max 5.351574 86.783811 0.0 0.0 " + ] + }, + "execution_count": 113, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cost_df[[c for c in cost_df.columns if 'cost_' in c]].describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": {}, + "outputs": [], + "source": [ + "# student_status = {\n", + "# 'Not a student': 0,\n", + "# 'Yes - Full Time College/University': 1,\n", + "# 'Yes - Vocation/Technical/Trade School': 1,\n", + "# 'Yes - Part-Time College/University': 1,\n", + "# 'Fire Fighter 2 Training': 0,\n", + "# 'Taking prerequisites missing for grad program ': 1,\n", + "# 'Work': 0,\n", + "# 'Graduate': 1,\n", + "# 'Work at csu': 0,\n", + "# 'Custodian': 0, \n", + "# 'taking classes toward early childhood licensure': 1,\n", + "# 'Prefer not to say': 0\n", + "# }\n", + "\n", + "\n", + "# cost_df['is_student'] = cost_df['is_student'].apply(lambda x: student_status[x])" + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "metadata": {}, + "outputs": [], + "source": [ + "# cost_df['age'] = cost_df['age'].apply(lambda x: x if x < 100 else 2024 - x)\n", + "# cost_df['n_working_residents'] = cost_df['n_working_residents'].apply(lambda x: 0 if x < 0 else x)\n", + "# cost_df.rename(\n", + "# columns={'start_local_dt_weekday': 'start:DOW', 'end_local_dt_weekday': 'end:DOW'},\n", + "# inplace=True\n", + "# )" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": {}, + "outputs": [], + "source": [ + "cost_df.to_csv('../data/ReplacedMode_Fix_02142024.csv', index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" + }, + "kernelspec": { + "display_name": "emission", + "language": "python", + "name": "emission" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/rm_src/mnl_exploration.ipynb b/rm_src/mnl_exploration.ipynb new file mode 100644 index 0000000..dacce32 --- /dev/null +++ b/rm_src/mnl_exploration.ipynb @@ -0,0 +1,2115 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import sys\n", + "import pickle\n", + "import importlib\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "\n", + "from pathlib import Path\n", + "from uuid import UUID\n", + "from collections import defaultdict\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "emission_path = Path(os.getcwd()).parent.parent / 'my_emission_server' / 'e-mission-server'\n", + "sys.path.append(str(emission_path))\n", + "\n", + "# Also add the home (viz_scripts) to the path\n", + "sys.path.append('../viz_scripts')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "storage not configured, falling back to sample, default configuration\n", + "URL not formatted, defaulting to \"Stage_database\"\n", + "Connecting to database URL localhost\n" + ] + } + ], + "source": [ + "import scaffolding\n", + "import emission.core.get_database as edb" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "importlib.reload(scaffolding)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "def r(df: pd.DataFrame) -> pd.DataFrame:\n", + " return df.reset_index(drop=True, inplace=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "with open('../viz_scripts/auxiliary_files/dic_re.pkl', 'rb') as f:\n", + " dic_re = pickle.loads(f.read())\n", + "\n", + "with open('../viz_scripts/auxiliary_files/dic_pur.pkl', 'rb') as f:\n", + " dic_pur = pickle.loads(f.read())\n", + "\n", + "# convert a dictionary to a defaultdict\n", + "dic_re = defaultdict(lambda: 'Other', dic_re)\n", + "dic_pur = defaultdict(lambda: 'Other', dic_pur)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Found new program stage, creating new list\n", + "Found new program 4c, creating new list\n", + "Found new program cc, creating new list\n", + "Found new program fc, creating new list\n", + "Found new program pc, creating new list\n", + "Found new program sc, creating new list\n", + "Found new program vail, creating new list\n", + "Found new program prepilot, creating new list\n" + ] + } + ], + "source": [ + "# Split UUIDs by program\n", + "program_uuid_map = {}\n", + "for ue in edb.get_uuid_db().find():\n", + " uuid = str(ue['uuid'])\n", + " # uuid = str(ue['uuid'])\n", + " program = ue['user_email'].split(\"_\")[0]\n", + " if program in program_uuid_map.keys():\n", + " program_uuid_map[program].append(uuid)\n", + " else:\n", + " print(f\"Found new program {program}, creating new list\")\n", + " program_uuid_map[program] = []\n", + " program_uuid_map[program].append(uuid)\n", + "\n", + "uuid_program_list = []\n", + "for ue in edb.get_uuid_db().find():\n", + " # uuid = str(ue['uuid'].as_uuid(3))\n", + " uuid = str(ue['uuid'])\n", + " program = ue['user_email'].split(\"_\")[0]\n", + " uuid_program_list.append({\"program\": program, \"opcode\": ue[\"user_email\"], \"user_id\": uuid})" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "uuid_program_df = pd.DataFrame(uuid_program_list)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loaded all confirmed trips of length 241123\n", + "After filtering, found 241123 participant trips \n", + "After filtering, found 92446 labeled trips\n", + "Found Index(['mode_confirm', 'purpose_confirm', 'replaced_mode'], dtype='object') columns of length 3\n", + "After expanding, columns went from 41 -> 44\n", + "_prepilot\n", + "Based on 92395 confirmed trips from 235 users\n", + "of 241123 total trips from 261 users (38.32%)\n" + ] + } + ], + "source": [ + "# %%capture\n", + "\n", + "# for program in uuid_program_df.program.unique():\n", + "expanded_ct, file_suffix, quality_text, debug_df = scaffolding.load_viz_notebook_data(None,\n", + " None,\n", + " 'prepilot',\n", + " 'program',\n", + " dic_re,\n", + " dic_pur=dic_pur)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# Join to the program df to get each user's program\n", + "expanded_ct['original_user_id'] = expanded_ct['user_id'].copy()\n", + "expanded_ct['user_id'] = expanded_ct['user_id'].apply(lambda x: str(x))\n", + "expanded_ct = expanded_ct.merge(uuid_program_df, on='user_id')\n", + "expanded_ct['user_id'] = expanded_ct['user_id'].apply(lambda x: str(x).replace(\"-\", \"\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['source', 'end_ts', 'end_fmt_time', 'end_loc', 'raw_trip', 'start_ts',\n", + " 'start_fmt_time', 'start_loc', 'duration', 'distance', 'start_place',\n", + " 'end_place', 'cleaned_trip', 'inferred_labels', 'inferred_trip',\n", + " 'expectation', 'confidence_threshold', 'expected_trip', 'user_input',\n", + " 'section_modes', 'section_distances', 'start_local_dt_year',\n", + " 'start_local_dt_month', 'start_local_dt_day', 'start_local_dt_hour',\n", + " 'start_local_dt_minute', 'start_local_dt_second',\n", + " 'start_local_dt_weekday', 'start_local_dt_timezone',\n", + " 'end_local_dt_year', 'end_local_dt_month', 'end_local_dt_day',\n", + " 'end_local_dt_hour', 'end_local_dt_minute', 'end_local_dt_second',\n", + " 'end_local_dt_weekday', 'end_local_dt_timezone', '_id', 'user_id',\n", + " 'metadata_write_ts', 'additions', 'mode_confirm', 'purpose_confirm',\n", + " 'replaced_mode', 'distance_miles', 'Mode_confirm', 'Replaced_mode',\n", + " 'Trip_purpose', 'original_user_id', 'program', 'opcode'],\n", + " dtype='object')" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "expanded_ct.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# Rename the target column.\n", + "expanded_ct.drop(columns=['replaced_mode'], axis='rows', inplace=True)\n", + "expanded_ct['Replaced_mode'] = expanded_ct['Replaced_mode'].fillna('Unlabeled')" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "235" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(expanded_ct.user_id.unique())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Survey Data preprocessing" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# Read the Denver dedmographic info\n", + "survey_data = pd.read_csv('../viz_scripts/Can Do Colorado eBike Program - en.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "survey_data.rename(\n", + " {\n", + " \"Unique User ID (auto-filled, do not edit)\": \"user_id\",\n", + " \"In which year were you born?\": \"birth_year\",\n", + " \"What is your gender?\": \"gender\",\n", + " \"Do you have a valid driver's license?\": \"has_drivers_license\",\n", + " \"Are you a student?\": \"is_student\",\n", + " \"What is the highest grade or degree that you have completed?\": \"highest_education\",\n", + " \"Do you work for either pay or profit?\": \"is_paid\",\n", + " \"Do you have more than one job?\": \"has_multiple_jobs\",\n", + " \"Do you work full-time or part-time at your primary job?\": \"primary_job_type\",\n", + " \"Which best describes your primary job?\": \"primary_job_description\",\n", + " \"How did you usually get to your primary job last week? \": \"primary_job_commute_mode\",\n", + " \"Thinking about your daily commute to work last week, how many minutes did it usually take to get from home to the primary job/work place?\": \"primary_job_commute_time\",\n", + " \"At your primary job, do you have the ability to set or change your own start time?\": \"is_primary_job_flexible\",\n", + " \"Do you have the option of working from home or an alternate location instead of going into your primary work place?\": \"primary_job_can_wfh\",\n", + " \"How many days per week do you usually work from home or an alternate location?\": \"wfh_days\",\n", + " \"Do you own or rent your place of residence?\": \"residence_ownership_type\",\n", + " \"What is your home type?\": \"residence_type\",\n", + " \"Please identify which category represents your total household income, before taxes, for last year.\": \"income_category\",\n", + " \"Including yourself, how many people live in your home?\": \"n_residence_members\",\n", + " \"How many children under age 18 live in your home?\": \"n_residents_u18\",\n", + " \"Including yourself, how many people have a driver's license in your household?\": \"n_residents_with_license\",\n", + " \"How many motor vehicles are owned, leased, or available for regular use by the people who currently live in your household?\": \"n_motor_vehicles\",\n", + " \"If you were unable to use your household vehicle(s), which of the following options would be available to you to get you from place to place?\": \"available_modes\",\n", + " \"Do you have a medical condition that makes it difficult to travel outside of the home?\": \"has_medical_condition\",\n", + " \"How long have you had this condition?\": \"medical_condition_duration\"\n", + " },\n", + " axis='columns',\n", + " inplace=True\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/rkulhall/miniconda3/envs/emission/lib/python3.9/site-packages/dateutil/parser/_parser.py:1207: UnknownTimezoneWarning: tzname PDT identified but not understood. Pass `tzinfos` argument in order to correctly return a timezone-aware datetime. In a future version, this will raise an exception.\n", + " warnings.warn(\"tzname {tzname} identified but not understood. \"\n", + "/Users/rkulhall/miniconda3/envs/emission/lib/python3.9/site-packages/dateutil/parser/_parser.py:1207: UnknownTimezoneWarning: tzname PST identified but not understood. Pass `tzinfos` argument in order to correctly return a timezone-aware datetime. In a future version, this will raise an exception.\n", + " warnings.warn(\"tzname {tzname} identified but not understood. \"\n" + ] + } + ], + "source": [ + "survey_data['Timestamp'] = pd.to_datetime(survey_data['Timestamp'])\n", + "survey_data['Timestamp'] = survey_data['Timestamp'].dt.tz_localize('America/Los_Angeles', ambiguous='infer')\n", + "survey_data['Timestamp'] = survey_data['Timestamp'].dt.tz_convert('America/Denver')" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(Timestamp('2021-05-23 16:21:52-0600', tz='America/Denver'),\n", + " Timestamp('2022-12-21 06:33:59-0700', tz='America/Denver'))" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "survey_data.Timestamp.min(), survey_data.Timestamp.max()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "f_survey = survey_data.loc[survey_data.user_id.isin(expanded_ct.user_id), :]" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(170, 203)" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(f_survey.user_id.unique()), len(survey_data.user_id.unique())" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "f_survey = f_survey.sort_values(\n", + " by=['user_id', 'Timestamp'], ascending=True\n", + ").drop_duplicates(\n", + " subset=['user_id'], keep='last', ignore_index=True\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "assert f_survey.user_id.value_counts().max() == 1" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "# Remove outliers.\n", + "\n", + "bad_ix = list()\n", + "\n", + "# obvious. WFH is not a good feature to include because of its high sparsity.\n", + "# wfh_mask = f_survey.wfh_days > 7\n", + "\n", + "# Computed by calculating 99th percentile.\n", + "commute_time_mask = f_survey.primary_job_commute_time > 75\n", + "\n", + "# Computed by calculating 99th percentile.\n", + "residence_members_mask = f_survey.n_residence_members > 8\n", + "\n", + "for mask in [commute_time_mask, residence_members_mask]:\n", + " bad_ix += f_survey[mask].index.tolist()\n", + "\n", + "f_survey.drop(index=set(bad_ix), inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "# Find age at the time of the timestamp. subtract birth year from timestamp year.\n", + "def compute_age(row):\n", + " if row['birth_year'] < 100:\n", + " return row['birth_year']\n", + " return row['Timestamp'].year - row['birth_year']\n", + "\n", + "f_survey['age'] = f_survey.apply(lambda x: compute_age(x), axis=1)\n", + "# f_survey.drop(columns=['birth_year'], inplace=True)\n", + "\n", + "\n", + "# For those who leave it NA, categorize them as 'prefer not to say'.\n", + "f_survey.loc[f_survey['has_multiple_jobs'].isna(), 'has_multiple_jobs'] = 'Prefer not to say'\n", + "\n", + "\n", + "# Fix primary commute mode.\n", + "f_survey.loc[\n", + " f_survey.primary_job_commute_mode.isna(), 'primary_job_commute_mode'\n", + "] = 'Unknown'\n", + "\n", + "f_survey.loc[\n", + " f_survey.primary_job_commute_mode.isin([\n", + " 'Car', 'SUV', 'Pickup truck', 'Taxi/Limo (including services like Uber or Lyft)', 'Van',\n", + " 'Shared vehicle'\n", + " ]), 'primary_job_commute_mode'\n", + "] = 'Car transport'\n", + "\n", + "f_survey.loc[\n", + " f_survey.primary_job_commute_mode.isin([\n", + " 'Public or commuter bus', 'Buss'\n", + " ]), 'primary_job_commute_mode'\n", + "] = 'Public transport'\n", + "\n", + "f_survey.loc[\n", + " f_survey.primary_job_commute_mode.isin([\n", + " 'Walk', 'Skateboard', 'Bicycle'\n", + " ]), 'primary_job_commute_mode'\n", + "] = 'Active transport'\n", + "\n", + "f_survey.loc[\n", + " f_survey.primary_job_commute_mode.isin([\n", + " 'Telecommute', 'Work from home', 'I work from home'\n", + " ]), 'primary_job_commute_mode'\n", + "] = 'WFH'\n", + "\n", + "f_survey.loc[\n", + " f_survey.primary_job_commute_mode.isin([\n", + " 'Walk, bike, bus, uber or lyft.', 'Car and E-Bike'\n", + " ]), 'primary_job_commute_mode'\n", + "] = 'Hybrid'\n", + "\n", + "# Fix primary job type\n", + "f_survey.loc[f_survey.primary_job_type.isna(), 'primary_job_type'] = 'Prefer not to say'\n", + "\n", + "# Normalize the job description. Inspired from the 'e-bike trips by occupation' graph.\n", + "f_survey.loc[\n", + " f_survey.primary_job_description.isin([\n", + " 'Paraprofessional ', 'Education ', 'education/early childhood', 'Teacher',\n", + " 'Education non-profit manager', 'Scientific research'\n", + " ]), 'primary_job_description', \n", + "] = 'Education'\n", + "\n", + "f_survey.loc[\n", + " f_survey.primary_job_description.isin([\n", + " 'Custodian', 'Custodial ', 'Csu custodian ', 'Janitorial '\n", + " ]), 'primary_job_description'\n", + "] = 'Custodial'\n", + "\n", + "f_survey.loc[\n", + " f_survey.primary_job_description.isin([\n", + " 'Inbound cs', 'Accounting Technician ', \n", + " ]), 'primary_job_description'\n", + "] = 'Clerical'\n", + "\n", + "f_survey.loc[\n", + " f_survey.primary_job_description.isin([\n", + " 'Restaurant manager', 'Transportaion Services',\n", + " ]), 'primary_job_description'\n", + "] = 'Sales or service'\n", + "\n", + "f_survey.loc[\n", + " f_survey.primary_job_description.isin([\n", + " 'Pastry chef and line cook', 'Cook', 'Chef', 'Dining Services',\n", + " 'Food Service', 'Cooking ', 'Residential Dining Services'\n", + " ]), 'primary_job_description'\n", + "] = 'Food service'\n", + "\n", + "f_survey.loc[\n", + " f_survey.primary_job_description.isin([\n", + " 'CNA', 'Caregiver/ Qmap', 'Health care', 'Nurse',\n", + " 'Healthcare', 'Medical', 'Medical field',\n", + " 'Family support '\n", + " ]), 'primary_job_description'\n", + "] = 'Medical/healthcare'\n", + "\n", + "f_survey.loc[\n", + " f_survey.primary_job_description.isin([\n", + " 'Amazon ', 'Hockey rink ', 'Caregiver', 'Security', 'Nonprofit social work '\n", + " ]), 'primary_job_description'\n", + "] = 'Other'\n", + "\n", + "f_survey.loc[\n", + " f_survey.primary_job_description.isin([\n", + " 'Hospital laundry', 'Maintenance ', 'Matreal handler',\n", + " 'Co op laundry'\n", + " ]), 'primary_job_description'\n", + "] = 'Manufacturing, construction, maintenance, or farming'\n", + "\n", + "f_survey.loc[f_survey.primary_job_description.isna(), 'primary_job_description'] = 'Other'" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "# Impute the commute time by grouping by occupation type and using median.\n", + "job_commutes = f_survey.groupby('primary_job_description')['primary_job_commute_time'].median()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "for job_type in job_commutes.index:\n", + " f_survey.loc[\n", + " (f_survey.primary_job_description == job_type)&(f_survey.primary_job_commute_time.isna()), \n", + " 'primary_job_commute_time'\n", + " ] = job_commutes[job_type]" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "# Fix motor vehicles. Keep this ordinal.\n", + "f_survey.loc[f_survey.n_motor_vehicles == '4+', 'n_motor_vehicles'] = 4\n", + "f_survey.loc[f_survey.n_motor_vehicles == 'Prefer not to say / Prefiero no decir.', 'n_motor_vehicles'] = 0\n", + "f_survey.n_motor_vehicles = f_survey.n_motor_vehicles.astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "to_drop = [\n", + " 'Which one below describe you best?', 'wfh_days', 'primary_job_can_wfh', 'is_primary_job_flexible',\n", + " 'medical_condition_duration', 'has_medical_condition', 'residence_type', 'residence_ownership_type',\n", + " 'is_paid', 'is_student'\n", + "]\n", + "\n", + "f_survey.drop(columns=to_drop, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Timestamp 0\n", + "user_id 0\n", + "birth_year 0\n", + "gender 0\n", + "has_drivers_license 0\n", + "highest_education 0\n", + "has_multiple_jobs 0\n", + "primary_job_type 0\n", + "primary_job_description 0\n", + "primary_job_commute_mode 0\n", + "primary_job_commute_time 0\n", + "income_category 0\n", + "n_residence_members 0\n", + "n_residents_u18 0\n", + "n_residents_with_license 0\n", + "n_motor_vehicles 0\n", + "available_modes 0\n", + "age 0\n", + "dtype: int64" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(f_survey.isna().sum())" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Let us think about this. Given that the income category is not defined, it does not make sense\n", + "to encode the factor as a non-zero ordinal number. 9.6% of the people in the dataset choose to\n", + "not disclose their income. We could just drop them, but then we risk losing quite a lot of information.\n", + "'''\n", + "\n", + "f_survey.loc[f_survey.income_category == 'Prefer not to say', 'income_category'] = 0\n", + "f_survey.loc[f_survey.income_category == 'Less than $24,999', 'income_category'] = 1\n", + "f_survey.loc[f_survey.income_category == '$25,000-$49,999', 'income_category'] = 2\n", + "f_survey.loc[f_survey.income_category == '$50,000-$99,999', 'income_category'] = 3\n", + "f_survey.loc[f_survey.income_category == '$100,000 -$149,999', 'income_category'] = 4\n", + "f_survey.loc[f_survey.income_category == '$150,000-$199,999', 'income_category'] = 5\n", + "f_survey.loc[f_survey.income_category == '$150,000', 'income_category'] = 5\n", + "f_survey.loc[f_survey.income_category == '$150,000-$199,999', 'income_category'] = 6\n", + "f_survey.loc[f_survey.income_category == '$200,000 or more', 'income_category'] = 7\n", + "f_survey.income_category = f_survey.income_category.astype(int)\n", + "\n", + "# TODO: Think of a strategy here." + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Sales or service 47\n", + "Professional, managerial, or technical 37\n", + "Manufacturing, construction, maintenance, or farming 17\n", + "Clerical or administrative support 17\n", + "Other 13\n", + "Education 9\n", + "Food service 8\n", + "Medical/healthcare 8\n", + "Custodial 7\n", + "Clerical 2\n", + "Maintenance 1\n", + "Name: primary_job_description, dtype: int64" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "f_survey.primary_job_description.value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Int64Index: 166 entries, 0 to 169\n", + "Data columns (total 18 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 Timestamp 166 non-null datetime64[ns, America/Denver]\n", + " 1 user_id 166 non-null object \n", + " 2 birth_year 166 non-null int64 \n", + " 3 gender 166 non-null object \n", + " 4 has_drivers_license 166 non-null object \n", + " 5 highest_education 166 non-null object \n", + " 6 has_multiple_jobs 166 non-null object \n", + " 7 primary_job_type 166 non-null object \n", + " 8 primary_job_description 166 non-null object \n", + " 9 primary_job_commute_mode 166 non-null object \n", + " 10 primary_job_commute_time 166 non-null float64 \n", + " 11 income_category 166 non-null int64 \n", + " 12 n_residence_members 166 non-null int64 \n", + " 13 n_residents_u18 166 non-null int64 \n", + " 14 n_residents_with_license 166 non-null int64 \n", + " 15 n_motor_vehicles 166 non-null int64 \n", + " 16 available_modes 166 non-null object \n", + " 17 age 166 non-null int64 \n", + "dtypes: datetime64[ns, America/Denver](1), float64(1), int64(7), object(9)\n", + "memory usage: 24.6+ KB\n" + ] + }, + { + "data": { + "text/plain": [ + "None" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(f_survey.info())" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import OneHotEncoder\n", + "\n", + "def generate_ohe_features(df, feature_name):\n", + " ohe = OneHotEncoder()\n", + " ohe.fit(df[[feature_name]])\n", + " return pd.DataFrame(\n", + " ohe.transform(df[[feature_name]]).todense(), \n", + " columns=ohe.get_feature_names_out(),\n", + " index=df.index\n", + " ), ohe" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "ohe_features = [\n", + " 'gender', 'has_drivers_license', 'has_multiple_jobs', 'highest_education', \n", + " 'primary_job_type', 'primary_job_description', 'primary_job_commute_mode'\n", + "]\n", + "\n", + "for feature in ohe_features:\n", + " df, _ = generate_ohe_features(f_survey, feature)\n", + " f_survey = f_survey.merge(right=df, left_index=True, right_index=True)\n", + "\n", + "f_survey.drop(columns=ohe_features, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Int64Index: 166 entries, 0 to 169\n", + "Data columns (total 49 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 Timestamp 166 non-null datetime64[ns, America/Denver]\n", + " 1 user_id 166 non-null object \n", + " 2 birth_year 166 non-null int64 \n", + " 3 primary_job_commute_time 166 non-null float64 \n", + " 4 income_category 166 non-null int64 \n", + " 5 n_residence_members 166 non-null int64 \n", + " 6 n_residents_u18 166 non-null int64 \n", + " 7 n_residents_with_license 166 non-null int64 \n", + " 8 n_motor_vehicles 166 non-null int64 \n", + " 9 available_modes 166 non-null object \n", + " 10 age 166 non-null int64 \n", + " 11 gender_Man 166 non-null float64 \n", + " 12 gender_Man;Nonbinary/genderqueer/genderfluid 166 non-null float64 \n", + " 13 gender_Nonbinary/genderqueer/genderfluid 166 non-null float64 \n", + " 14 gender_Prefer not to say 166 non-null float64 \n", + " 15 gender_Woman 166 non-null float64 \n", + " 16 gender_Woman;Nonbinary/genderqueer/genderfluid 166 non-null float64 \n", + " 17 has_drivers_license_No 166 non-null float64 \n", + " 18 has_drivers_license_Prefer not to say 166 non-null float64 \n", + " 19 has_drivers_license_Yes 166 non-null float64 \n", + " 20 has_multiple_jobs_No 166 non-null float64 \n", + " 21 has_multiple_jobs_Prefer not to say 166 non-null float64 \n", + " 22 has_multiple_jobs_Yes 166 non-null float64 \n", + " 23 highest_education_Bachelor's degree 166 non-null float64 \n", + " 24 highest_education_Graduate degree or professional degree 166 non-null float64 \n", + " 25 highest_education_High school graduate or GED 166 non-null float64 \n", + " 26 highest_education_Less than a high school graduate 166 non-null float64 \n", + " 27 highest_education_Prefer not to say 166 non-null float64 \n", + " 28 highest_education_Some college or associates degree 166 non-null float64 \n", + " 29 primary_job_type_Full-time 166 non-null float64 \n", + " 30 primary_job_type_Part-time 166 non-null float64 \n", + " 31 primary_job_type_Prefer not to say 166 non-null float64 \n", + " 32 primary_job_description_Clerical 166 non-null float64 \n", + " 33 primary_job_description_Clerical or administrative support 166 non-null float64 \n", + " 34 primary_job_description_Custodial 166 non-null float64 \n", + " 35 primary_job_description_Education 166 non-null float64 \n", + " 36 primary_job_description_Food service 166 non-null float64 \n", + " 37 primary_job_description_Maintenance 166 non-null float64 \n", + " 38 primary_job_description_Manufacturing, construction, maintenance, or farming 166 non-null float64 \n", + " 39 primary_job_description_Medical/healthcare 166 non-null float64 \n", + " 40 primary_job_description_Other 166 non-null float64 \n", + " 41 primary_job_description_Professional, managerial, or technical 166 non-null float64 \n", + " 42 primary_job_description_Sales or service 166 non-null float64 \n", + " 43 primary_job_commute_mode_Active transport 166 non-null float64 \n", + " 44 primary_job_commute_mode_Car transport 166 non-null float64 \n", + " 45 primary_job_commute_mode_Hybrid 166 non-null float64 \n", + " 46 primary_job_commute_mode_Public transport 166 non-null float64 \n", + " 47 primary_job_commute_mode_Unknown 166 non-null float64 \n", + " 48 primary_job_commute_mode_WFH 166 non-null float64 \n", + "dtypes: datetime64[ns, America/Denver](1), float64(39), int64(7), object(2)\n", + "memory usage: 68.9+ KB\n" + ] + }, + { + "data": { + "text/plain": [ + "None" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(f_survey.info())" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "from typing import List\n", + "\n", + "def plot_survey_distribution(df: pd.DataFrame, feature_names: List[str]):\n", + " \n", + " n = len(feature_names)\n", + " \n", + " # No more than 4 plots in on subplot.\n", + " assert n <= 4, \"Only 4 features can be visualized at a time.\"\n", + " \n", + " ncols = 2\n", + " nrows = n//ncols if n%ncols == 0 else (n//ncols) + 1\n", + " \n", + " h_scale = 4*nrows\n", + " \n", + " fig, axes = plt.subplots(nrows=nrows, ncols=ncols, figsize=(8, h_scale))\n", + " for ix, ax in enumerate(axes.flatten()):\n", + " if ix < n:\n", + " sns.histplot(data=df, y=feature_names[ix], ax=ax)\n", + " else:\n", + " ax.set_axis_off()\n", + " plt.tight_layout()\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "Could not interpret value `primary_job_commute_mode` for parameter `y`", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[36], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mplot_survey_distribution\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 2\u001b[0m \u001b[43m \u001b[49m\u001b[43mf_survey\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mincome_category\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mn_motor_vehicles\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mprimary_job_commute_mode\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\n\u001b[1;32m 3\u001b[0m \u001b[43m)\u001b[49m\n", + "Cell \u001b[0;32mIn[35], line 18\u001b[0m, in \u001b[0;36mplot_survey_distribution\u001b[0;34m(df, feature_names)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m ix, ax \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(axes\u001b[38;5;241m.\u001b[39mflatten()):\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m ix \u001b[38;5;241m<\u001b[39m n:\n\u001b[0;32m---> 18\u001b[0m \u001b[43msns\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhistplot\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfeature_names\u001b[49m\u001b[43m[\u001b[49m\u001b[43mix\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43max\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43max\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 20\u001b[0m ax\u001b[38;5;241m.\u001b[39mset_axis_off()\n", + "File \u001b[0;32m~/miniconda3/envs/emission/lib/python3.9/site-packages/seaborn/distributions.py:1395\u001b[0m, in \u001b[0;36mhistplot\u001b[0;34m(data, x, y, hue, weights, stat, bins, binwidth, binrange, discrete, cumulative, common_bins, common_norm, multiple, element, fill, shrink, kde, kde_kws, line_kws, thresh, pthresh, pmax, cbar, cbar_ax, cbar_kws, palette, hue_order, hue_norm, color, log_scale, legend, ax, **kwargs)\u001b[0m\n\u001b[1;32m 1374\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mhistplot\u001b[39m(\n\u001b[1;32m 1375\u001b[0m data\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;241m*\u001b[39m,\n\u001b[1;32m 1376\u001b[0m \u001b[38;5;66;03m# Vector variables\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1392\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[1;32m 1393\u001b[0m ):\n\u001b[0;32m-> 1395\u001b[0m p \u001b[38;5;241m=\u001b[39m \u001b[43m_DistributionPlotter\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1396\u001b[0m \u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1397\u001b[0m \u001b[43m \u001b[49m\u001b[43mvariables\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m_DistributionPlotter\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_semantics\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mlocals\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1398\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1400\u001b[0m p\u001b[38;5;241m.\u001b[39mmap_hue(palette\u001b[38;5;241m=\u001b[39mpalette, order\u001b[38;5;241m=\u001b[39mhue_order, norm\u001b[38;5;241m=\u001b[39mhue_norm)\n\u001b[1;32m 1402\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m ax \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", + "File \u001b[0;32m~/miniconda3/envs/emission/lib/python3.9/site-packages/seaborn/distributions.py:113\u001b[0m, in \u001b[0;36m_DistributionPlotter.__init__\u001b[0;34m(self, data, variables)\u001b[0m\n\u001b[1;32m 107\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\n\u001b[1;32m 108\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 109\u001b[0m data\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 110\u001b[0m variables\u001b[38;5;241m=\u001b[39m{},\n\u001b[1;32m 111\u001b[0m ):\n\u001b[0;32m--> 113\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvariables\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mvariables\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/emission/lib/python3.9/site-packages/seaborn/_oldcore.py:640\u001b[0m, in \u001b[0;36mVectorPlotter.__init__\u001b[0;34m(self, data, variables)\u001b[0m\n\u001b[1;32m 635\u001b[0m \u001b[38;5;66;03m# var_ordered is relevant only for categorical axis variables, and may\u001b[39;00m\n\u001b[1;32m 636\u001b[0m \u001b[38;5;66;03m# be better handled by an internal axis information object that tracks\u001b[39;00m\n\u001b[1;32m 637\u001b[0m \u001b[38;5;66;03m# such information and is set up by the scale_* methods. The analogous\u001b[39;00m\n\u001b[1;32m 638\u001b[0m \u001b[38;5;66;03m# information for numeric axes would be information about log scales.\u001b[39;00m\n\u001b[1;32m 639\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_var_ordered \u001b[38;5;241m=\u001b[39m {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mx\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;28;01mFalse\u001b[39;00m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124my\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;28;01mFalse\u001b[39;00m} \u001b[38;5;66;03m# alt., used DefaultDict\u001b[39;00m\n\u001b[0;32m--> 640\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43massign_variables\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvariables\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 642\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m var, \u001b[38;5;28mcls\u001b[39m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_semantic_mappings\u001b[38;5;241m.\u001b[39mitems():\n\u001b[1;32m 643\u001b[0m \n\u001b[1;32m 644\u001b[0m \u001b[38;5;66;03m# Create the mapping function\u001b[39;00m\n\u001b[1;32m 645\u001b[0m map_func \u001b[38;5;241m=\u001b[39m partial(\u001b[38;5;28mcls\u001b[39m\u001b[38;5;241m.\u001b[39mmap, plotter\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m)\n", + "File \u001b[0;32m~/miniconda3/envs/emission/lib/python3.9/site-packages/seaborn/_oldcore.py:701\u001b[0m, in \u001b[0;36mVectorPlotter.assign_variables\u001b[0;34m(self, data, variables)\u001b[0m\n\u001b[1;32m 699\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 700\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minput_format \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlong\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m--> 701\u001b[0m plot_data, variables \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_assign_variables_longform\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 702\u001b[0m \u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mvariables\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 703\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 705\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mplot_data \u001b[38;5;241m=\u001b[39m plot_data\n\u001b[1;32m 706\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mvariables \u001b[38;5;241m=\u001b[39m variables\n", + "File \u001b[0;32m~/miniconda3/envs/emission/lib/python3.9/site-packages/seaborn/_oldcore.py:938\u001b[0m, in \u001b[0;36mVectorPlotter._assign_variables_longform\u001b[0;34m(self, data, **kwargs)\u001b[0m\n\u001b[1;32m 933\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(val, (\u001b[38;5;28mstr\u001b[39m, \u001b[38;5;28mbytes\u001b[39m)):\n\u001b[1;32m 934\u001b[0m \n\u001b[1;32m 935\u001b[0m \u001b[38;5;66;03m# This looks like a column name but we don't know what it means!\u001b[39;00m\n\u001b[1;32m 937\u001b[0m err \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCould not interpret value `\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mval\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m` for parameter `\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mkey\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m`\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m--> 938\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(err)\n\u001b[1;32m 940\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 941\u001b[0m \n\u001b[1;32m 942\u001b[0m \u001b[38;5;66;03m# Otherwise, assume the value is itself data\u001b[39;00m\n\u001b[1;32m 943\u001b[0m \n\u001b[1;32m 944\u001b[0m \u001b[38;5;66;03m# Raise when data object is present and a vector can't matched\u001b[39;00m\n\u001b[1;32m 945\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(data, pd\u001b[38;5;241m.\u001b[39mDataFrame) \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(val, pd\u001b[38;5;241m.\u001b[39mSeries):\n", + "\u001b[0;31mValueError\u001b[0m: Could not interpret value `primary_job_commute_mode` for parameter `y`" + ] + }, + { + "data": { + "image/png": "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xenIkSMyDEMrV660xI0HOnbsqJ49e5pdBgBUm0cXdt16661avny5/v3vf9e6gAMHDigyMlIxMTG65557dOjQoSq3LS0tldPpdHsAgNk2b96svn37SpLWrl0rwzB08uRJzZ07Vy+88ILJ1QGAf/IoxMbGxurJJ59U69at9fDDD+vTTz/16MNvuukmLV++XB9++KEWLVqkwsJC9e7dWydOnKh0+9TUVDkcDteDtQ0B1AclJSVq3ry5JGnDhg2666671LhxY91xxx06cOCAydUBgH/yKMTOnDnTdYXsd999p379+qlz586aMWOGjh8/Xu33GTJkiO666y5169ZNAwcO1Pvvvy9JevPNNyvdPiUlRSUlJa5Hfn6+J+UDgFdFRUVp+/btOnPmjDZs2OC6FewPP/ygoKAgk6sDAP/k8TmxDRs21J133qk777xT3333nRYsWKDf//73mjJlioYOHaqkpCTdfvvtNXrPJk2aqFu3blUeuahqke4fvz+uRkGNPZqHdPGOXQDgqYkTJ+q+++5T06ZNFR0drVtvvVXSxdMMunXrZm5xAOCnan1h1+eff66lS5fqnXfeUatWrTRmzBgVFBRo2LBheuSRRzRjxoxqv1dpaalyc3Nd55ZV19Z5T9W07ApCQkPlcDhq/T4ArjyPPvqobrzxRuXn52vQoEFq0ODiL7nat2/PObEAUEc8CrFFRUX685//rKVLl+rAgQMaNmyYVq5cqcGDB7vu13333XdrxIgRlwyxkydP1rBhwxQdHa2ioiK98MILcjqdGj16dI3qWbduXZX3Fa8uh8PBmn0APBYXF6fu3bvr8OHD6tChgwICAnTHHXeYXRYA+C2PQmybNm3UoUMHPfDAAxozZoxatmxZYZsbb7xRvXr1uuT7fPvtt/rNb36j4uJitWzZUjfffLM+/fRTtW3btkb1REVFqUOHDjXaBwC85ccff9Rjjz3mOp//66+/Vvv27ZWUlKTIyEg9/fTTJlcIAP6nxiHWMAx99NFHiouLU+PGVZ+HGhoaqo8//viS77Vy5cqafjwA1DspKSn64osvlJGRoZ///Oeu8YEDB2ratGmEWACoAzVencAwDA0cOFDHjh2ri3oAwHLee+89vfbaa7rllltcp1RJUufOnXXw4EETKwMA/1XjENugQQNdc801Va7lCgBXmu+++06tWrWqMH7mzBm3UAsA8B6P1ol95ZVX9MQTT+jLL7/0dj0AYDm9evVyrXMtyRVcFy1apPj4eLPKAgC/5tGFXb/97W/1448/6vrrr1dgYKCCg4PdXv/++++9UhwAWEFqaqp+/vOfa9++fTp//rzmzJmjvXv3avv27crMzDS7PADwSx6F2NmzZ3u5DACwrt69e+uTTz7RjBkz1KFDB23cuFE9e/bU9u3budkBANQRj0JsTddxBQB/161btypvmQ0A8D6P79hVVlam9957T7m5ubLZbOrcubOGDx+uhg0berM+AKiXnE5ntbcNDQ2tw0oA4MrkUYj95ptvNHToUB07dkwdO3aUYRj6+uuvFRUVpffff58bDwDwe82aNbvsygOGYchms6msrMxHVQHAlcOjEJuUlKQOHTro008/VfPmzSVJJ06c0G9/+1slJSW5XaULAP7ocjdzAQDULY9CbGZmpluAlaQWLVropZdeUp8+fbxWHADUV/379ze7BAC4onm0TqzdbtepU6cqjJ8+fVqBgYG1LgoArGTp0qV69913K4y/++67XOwFAHXEoxD7i1/8Qr/73e/02WefyTAMGYahTz/9VImJiRo+fLi3awSAeu2ll15SWFhYhfFWrVrpD3/4gwkVAYD/8yjEzp07Vx06dFB8fLyCgoIUFBSkPn366Oqrr9acOXO8XSMA1GtHjx5VTExMhfG2bdsqLy+v2u+TmpqqXr16KSQkRK1atdKIESO0f//+S+6TkZEhm81W4fHVV1/VeB4AYCUenRPbrFkz/e1vf9OBAwf01VdfyTAMde7cWVdffbW36wOAeq9Vq1bavXu32rVr5zb+xRdfqEWLFtV+n8zMTI0bN069evXS+fPnNXXqVCUkJGjfvn1q0qTJJffdv3+/21JeLVu2rNEcGjTw6JgGAJjG43ViJemaa67RNddc461aAMCS7rnnHiUlJSkkJET9+vWTdDGQTpgwQffcc0+132fDhg1uz5cuXapWrVopKyvL9b5VadWqlZo1a3bZzygtLVVpaanrefl6txcuXKh2nQBQH3gUYpOTkysdt9lsCgoK0tVXX60777zTbfUCAPBXL7zwgo4ePaoBAwYoIOBiW71w4YJGjRpVq3NiS0pKJKlavbRHjx766aef1LlzZ/3f//2fbrvttkq3S01N1fTp0z2uCQDqC5thGEZNd7rtttu0a9culZWVuW52cODA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8wOA6goObqyvvsqtdpCtTh/1hEfnxC5dutRrBXhDVFRUtZf2AgBvCw0N1datW/XPf/5Tu3bt0oULF9SzZ08NHDjQ7NKqLfa3T6t5245mlwGgnnMWHNFnS6aruLjY9KOxHoVY6eKFDO+++67y8vJ09uxZt9fWrFlT68IAwCqOHDmidu3a6fbbb9ftt99udjkeCW0drebRhFgA1uHRElsrV65Unz59tG/fPq1du1bnzp3Tvn379M9//pNfSwG44rRv31633HKLFixY4LrRAQCgbnkUYv/whz/oj3/8o/7xj38oMDBQc+bMUW5uru6++27TDy0DgK/t3LlT8fHxeuGFFxQZGak777xT7777rkpLS80uDQD8lkch9uDBg7rjjjskXbyL1pkzZ2Sz2TRp0iQtXLjQqwUCQH3Xs2dPvfrqq8rLy9MHH3ygVq1a6X//93/VqlUrPfDAA2aXBwB+yaMQ27x5c506dUrSxcW8v/zyS0kX7x3+448/eq86ALAQm82m2267TYsWLdJHH32k9u3b68033zS7LADwSx6F2L59+yo9PV2SdPfdd2vChAl6+OGH9Zvf/EYDBgzwaoEAYBX5+fl65ZVXdMMNN6hXr15q0qSJXnvtNbPLAgC/5FGIfe2113TPPfdIklJSUjR58mQdP35cv/rVr7R48WKvFggA9d3ChQvVv39/xcTE6M0339Tdd9+tgwcPauvWrXrkkUeq/T6pqanq1auXQkJC1KpVK40YMUL79++/7H6ZmZmKjY1VUFCQ2rdvr/nz59dmOgBgCR4tsdW8eXPXfzdo0EBPPvmknnzySa8VBQBW8vzzz+uee+7RnDlzanXr7czMTI0bN069evXS+fPnNXXqVCUkJGjfvn1V3jDh8OHDGjp0qB5++GGtWLFCn3zyiR599FG1bNnSMncLAwBPeBRi169fr4YNG2rw4MFu4xs3blRZWZmGDBnileIAwAry8vJks9kuu92jjz6q5557rsq7AW7YsMHt+dKlS9WqVStlZWWpX79+le4zf/58RUdHa/bs2ZKkTp06aefOnZoxY0alIba0tNRt1QSn03nZugGgPvLodIKnn35aZWVlFcYvXLigp59+utZFAYCVVCfAStKKFStqFBpLSkokuf/2679t375dCQkJbmODBw/Wzp07de7cuQrbp6amyuFwuB5RUVHVrgcA6hOPQuyB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Pj5eH3zwgev1+l7/f7Pq3wfPPvusbDab26N169au160wB68wLGrlypVGo0aNjEWLFhn79u0zJkyYYDRp0sQ4evSo2aX53ODBg42lS5caX375pZGTk2PccccdRnR0tHH69GnXNi+99JIREhJirF692tizZ48xcuRIIyIiwnA6nSZW7nuff/650a5dO6N79+7GhAkTXONX+vfz/fffG23btjXGjBljfPbZZ8bhw4eNjz76yPjmm29c21zp35E/slofXb9+vTF16lRj9erVhiRj7dq1bq/X959Rf+jV69atM95//31j//79xv79+40pU6YYjRo1Mr788kvDMOp//f/Jyn8fTJs2zejSpYtRUFDgehQVFblet8IcvMGyIfbGG280EhMT3cauu+464+mnnzapovqjqKjIkGRkZmYahmEYFy5cMFq3bm289NJLrm1++uknw+FwGPPnzzerTJ87deqUcc011xjp6elG//79XU2L78cwnnrqKeOWW26p8nW+I/9k5T763yHWij+j/tKrf/aznxlvvPGGpeq3+t8H06ZNM66//vpKX7PKHLzBkqcTnD17VllZWUpISHAbT0hI0LZt20yqqv4oKSmRJDVv3lySdPjwYRUWFrp9X3a7Xf3797+ivq9x48bpjjvu0MCBA93G+X6kdevWKS4uTr/+9a/VqlUr9ejRQ4sWLXK9znfkf/ytj1rxZ9TqvbqsrEwrV67UmTNnFB8fb6n6/eHvgwMHDigyMlIxMTG65557dOjQIUnWmkNtWTLEFhcXq6ysTOHh4W7j4eHhKiwsNKmq+sEwDCUnJ+uWW25R165dJcn1nVzJ39fKlSu1a9cupaamVniN70c6dOiQ0tLSdM011+jDDz9UYmKikpKStHz5ckl8R/7I3/qo1X5Grdyr9+zZo6ZNm8putysxMVFr165V586dLVO/P/x9cNNNN2n58uX68MMPtWjRIhUWFqp37946ceKEZebgDQFmF1AbNpvN7blhGBXGrjTjx4/X7t27tXXr1gqvXanfV35+viZMmKCNGzcqKCioyu2u1O9Hki5cuKC4uDj94Q9/kCT16NFDe/fuVVpamkaNGuXa7kr+jvyVv/2ZWmU+Vu7VHTt2VE5Ojk6ePKnVq1dr9OjRyszMdL1en+v3l78PhgwZ4vrvbt26KT4+Xh06dNCbb76pm2++WVL9n4M3WPJI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YmKijh49quTkZOXm5mrJkiVavHixJk+eXO3PtNvtmjZtWqW/GvMX/j5H5md9/j5HX8/P173U3//8JP+fo7/PT/L/OTI/D3nzKrHXX3/daNu2rREYGGj07NnTyMzMdL02evRoo3///m7bZ2RkGD169DACAwONdu3aGWlpad4sBwAsiV4KAJfntXViAQAAAF/x3eW2AAAAgJcQYgEAAGA5hFgAAABYDiEWAAAAllPvQ+y8efMUExOjoKAgxcbGasuWLZfcPjMzU7GxsQoKClL79u01f/58H1XqmZrMb82aNRo0aJBatmyp0NBQxcfH68MPP/RhtZ6p6Z9huU8++UQBAQG64YYb6rbAWqrp/EpLSzV16lS1bdtWdrtdHTp00JIlS3xUrWdqOse33npL119/vRo3bqyIiAiNHTtWJ06c8FG1NbN582YNGzZMkZGRstlseu+99y67jz/3Gcl685P8v5fSR93RR+sX0/qo2csjXMrKlSuNRo0aGYsWLTL27dtnTJgwwWjSpIlx9OjRSrc/dOiQ0bhxY2PChAnGvn37jEWLFhmNGjUy/vrXv/q48uqp6fwmTJhgvPzyy8bnn39ufP3110ZKSorRqFEjY9euXT6uvPpqOsdyJ0+eNNq3b28kJCQY119/vW+K9YAn8xs+fLhx0003Genp6cbhw4eNzz77zPjkk098WHXN1HSOW7ZsMRo0aGDMmTPHOHTokLFlyxajS5cuxogRI3xcefWsX7/emDp1qrF69WpDkrF27dpLbu/vfcZq8zMM/++l9NGK6KP1i1l9tF6H2BtvvNFITEx0G7vuuuuMp59+utLtn3zySeO6665zG/vf//1f4+abb66zGmujpvOrTOfOnY3p06d7uzSv8XSOI0eONP7v//7PmDZtWr1uvjWd3wcffGA4HA7jxIkTvijPK2o6x1dffdVo376929jcuXONNm3a1FmN3lKd5uvvfcZq8zMM/++l9FF39NH6zZd9tN6eTnD27FllZWUpISHBbTwhIUHbtm2rdJ/t27dX2H7w4MHauXOnzp07V2e1esKT+f23Cxcu6NSpU2revHldlFhrns5x6dKlOnjwoKZNm1bXJdaKJ/Nbt26d4uLi9Morr+iqq67Stddeq8mTJ+vf//63L0quMU/m2Lt3b3377bdav369DMPQ8ePH9de//lV33HGHL0quc/7eZ6w0P8n/eyl9tCL6qPV5q88EeLswbykuLlZZWZnCw8PdxsPDw1VYWFjpPoWFhZVuf/78eRUXFysiIqLO6q0pT+b332bOnKkzZ87o7rvvrosSa82TOR44cEBPP/20tmzZooCAevvjKcmz+R06dEhbt25VUFCQ1q5dq+LiYj366KP6/vvv6+X5XJ7MsXfv3nrrrbc0cuRI/fTTTzp//ryGDx+uP/3pT74ouc75e5+x0vwk/++l9NGK6KPW560+U2+PxJaz2Wxuzw3DqDB2ue0rG68vajq/cu+8846effZZrVq1Sq1ataqr8ryiunMsKyvTvffeq+nTp+vaa6/1VXm1VpM/wwsXLshms+mtt97SjTfeqKFDh2rWrFlatmxZvT2KINVsjvv27VNSUpKeeeYZZWVlacOGDTp8+LASExN9UapP+Hufsdr8JP/vpfTR/48+6h+80Wfq7T/RwsLC1LBhwwr/SikqKqqQ3su1bt260u0DAgLUokWLOqvVE57Mr9yqVav04IMP6t1339XAgQPrssxaqekcT506pZ07dyo7O1vjx4+XdLFZGYahgIAAbdy4UbfffrtPaq8OT/4MIyIidNVVV8nhcLjGOnXqJMMw9O233+qaa66p05prypM5pqamqk+fPnriiSckSd27d1eTJk3Ut29fvfDCC/XuSF5N+XufsdL8JP/vpfTRiuij9NFy9fZIbGBgoGJjY5Wenu42np6ert69e1e6T3x8fIXtN27cqLi4ODVq1KjOavWEJ/OTLh41GDNmjN5+++16f25MTecYGhqqPXv2KCcnx/VITExUx44dlZOTo5tuuslXpVeLJ3+Gffr00b/+9S+dPn3aNfb111+rQYMGatOmTZ3W6wlP5vjjjz+qQQP31tKwYUNJ//9f2lbm733GSvOT/L+X0kcroo/SR11qdBmYj5UvSbF48WJj3759xsSJE40mTZoYR44cMQzDMJ5++mnj/vvvd21fvmTDpEmTjH379hmLFy+u10vD1HR+b7/9thEQEGC8/vrrRkFBgetx8uRJs6ZwWTWd43+r71fV1nR+p06dMtq0aWP8z//8j7F3714jMzPTuOaaa4yHHnrIrClcVk3nuHTpUiMgIMCYN2+ecfDgQWPr1q1GXFycceONN5o1hUs6deqUkZ2dbWRnZxuSjFmzZhnZ2dmupW+utD5jtfkZhv/3UvoofZQ+Wrl6HWINwzBef/11o23btkZgYKDRs2dPIzMz0/Xa6NGjjf79+7ttn5GRYfTo0cMIDAw02rVrZ6Slpfm44pqpyfz69+9vSKrwGD16tO8Lr4Ga/hn+p/refA2j5vPLzc01Bg4caAQHBxtt2rQxkpOTjR9//NHHVddMTec4d+5co3PnzkZwcLARERFh3Hfffca3337r46qr5+OPP77k/1dXWp8xDOvNzzD8v5fSR/u7bU8frV/M6qM2w/CD49IAAAC4otTbc2IBAACAqhBiAQAAYDmEWAAAAFgOIRYAAACWQ4gFAACA5RBiAQAAYDmEWAAAAFgOIRYAAACWQ4gFAACA5RBiAQAAYDmEWAAAAFjO/wPWcNcHKFhz5AAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_survey_distribution(\n", + " f_survey, ['income_category', 'n_motor_vehicles', 'primary_job_commute_mode']\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(len(f_survey.user_id.unique()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## GPS Data Preprocessing" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "# We only wish to focus on Denver data for now.\n", + "# denver_data = r(expanded_ct.loc[\n", + "# (expanded_ct.start_local_dt_timezone == \"America/Denver\") & (expanded_ct.end_local_dt_timezone == \"America/Denver\"), \n", + "# :])\n", + "\n", + "denver_data = expanded_ct.copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "denver_data['start_fmt_time'] = pd.to_datetime(\n", + " denver_data['start_fmt_time'], utc=True\n", + ").dt.tz_convert('America/Denver')" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2016-08-15 07:59:32.418000-06:00 2022-12-30 23:33:27.147785-07:00\n" + ] + } + ], + "source": [ + "print(denver_data.start_fmt_time.min(), denver_data.start_fmt_time.max())" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "# Parse the datetime to Denver time.\n", + "denver_data['start_fmt_time'] = pd.to_datetime(\n", + " denver_data['start_fmt_time'], utc=True\n", + ").dt.tz_convert('America/Denver')\n", + "\n", + "# Re-compute all the start variables.\n", + "# denver_data['start_local_dt_year'] = denver_data['start_fmt_time'].dt.year\n", + "# denver_data['start_local_dt_month'] = denver_data['start_fmt_time'].dt.month\n", + "# denver_data['start_local_dt_day'] = denver_data['start_fmt_time'].dt.day\n", + "# denver_data['start_local_dt_hour'] = denver_data['start_fmt_time'].dt.hour\n", + "# denver_data['start_local_dt_weekday'] = denver_data['start_fmt_time'].dt.weekday\n", + "\n", + "# ## Do the same with the end time.\n", + "denver_data['end_fmt_time'] = pd.to_datetime(\n", + " denver_data['end_fmt_time'], utc=True\n", + ").dt.tz_convert('America/Denver')\n", + "\n", + "# # Re-compute all the end variables.\n", + "# denver_data['end_local_dt_year'] = denver_data['end_fmt_time'].dt.year\n", + "# denver_data['end_local_dt_month'] = denver_data['end_fmt_time'].dt.month\n", + "# denver_data['end_local_dt_day'] = denver_data['end_fmt_time'].dt.day\n", + "# denver_data['end_local_dt_hour'] = denver_data['end_fmt_time'].dt.hour\n", + "# denver_data['end_local_dt_weekday'] = denver_data['end_fmt_time'].dt.weekday" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "# Merge the trip data with the survey data.\n", + "\n", + "# inner join.\n", + "merged_data = denver_data.merge(\n", + " f_survey, left_on='user_id', right_on='user_id'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "166\n" + ] + } + ], + "source": [ + "print(len(merged_data.user_id.unique()))" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "# Let's start choosing features for modeling.\n", + "\n", + "# base_time_features = ['fmt_time', 'local_dt_year', 'local_dt_month', 'local_dt_day', 'local_dt_hour', 'local_dt_weekday']\n", + "# time_features = ['start_' + x for x in base_time_features] + ['end_' + x for x in base_time_features]\n", + "\n", + "# demographic_features = ['available_modes',\n", + "# 'birth_year', 'income_category', 'n_motor_vehicles', 'n_residence_members', 'n_residents_u18', 'gender', \n", + "# 'is_student', 'n_residents_with_license']\n", + "\n", + "# sensed_features = ['duration', 'distance_miles', 'cleaned_trip', 'start_loc', 'end_loc', 'section_modes', 'section_distances']\n", + "\n", + "# modeling_data = merged_data[['user_id', '_id', 'original_user_id', 'cleaned_trip', 'Replaced_mode', 'Mode_confirm'] + time_features + demographic_features + sensed_features].copy()\n", + "modeling_data = merged_data.copy()\n", + "\n", + "# Rename columns in-place.\n", + "modeling_data.rename(columns={\n", + " 'start_local_dt_year': 'start:year', 'start_local_dt_month': 'start:month', 'start_local_dt_day': 'start:day', 'start_local_dt_hour': 'start:hour',\n", + " 'end_local_dt_year': 'end:year', 'end_local_dt_month': 'end:month', 'end_local_dt_day': 'end:day', 'end_local_dt_hour': 'end:hour'\n", + " }, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [], + "source": [ + "def is_overnight_trip(start_date, end_date):\n", + " return int((end_date - start_date).days > 0)\n", + "\n", + "# overnight trips may be more likely taken by car.\n", + "modeling_data['is_overnight_trip'] = modeling_data.apply(\n", + " lambda x: is_overnight_trip(x.start_fmt_time, x.end_fmt_time), axis=1\n", + ")\n", + "\n", + "# Number of working individuals in the household = number of individuals in the house - number of children.\n", + "modeling_data['n_working_residents'] = (modeling_data['n_residence_members'] - modeling_data['n_residents_u18']).astype(int)\n", + "\n", + "# Convert the total duration of the trip into minutes.\n", + "modeling_data[['duration']] = modeling_data[['duration']]/60\n", + "\n", + "# Extract start and end latitudes and longitudes.\n", + "modeling_data['start_lat'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][1])\n", + "modeling_data['start_lng'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][0])\n", + "\n", + "modeling_data['end_lat'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][1])\n", + "modeling_data['end_lng'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][0])" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "# from calendar import monthrange\n", + "\n", + "# # Find day of month: use monthrange with (mm, yyyy) args and find how many days that month had (leap years are supported).\n", + "# def get_num_days_in_month(yyyy, mm):\n", + "# return monthrange(yyyy, mm)[1]\n", + "\n", + "# def is_overnight_trip(start_date, end_date):\n", + "# return int((end_date - start_date).days > 0)\n", + "\n", + "# # get the number of days for the start and end times.\n", + "# modeling_data['start:n_days_in_month'] = modeling_data.apply(lambda x: get_num_days_in_month(x['start:year'], x['start:month']), axis=1)\n", + "# modeling_data['end:n_days_in_month'] = modeling_data.apply(lambda x: get_num_days_in_month(x['end:year'], x['end:month']), axis=1)\n", + "\n", + "# # age = current year - year of birth\n", + "# modeling_data['age'] = 2023 - modeling_data['birth_year']\n", + "\n", + "# # overnight trips may be more likely taken by car.\n", + "# modeling_data['is_overnight_trip'] = modeling_data.apply(lambda x: is_overnight_trip(x.start_fmt_time, x.end_fmt_time), axis=1)\n", + "\n", + "# # Number of working individuals in the household = number of individuals in the house - number of children.\n", + "# modeling_data['n_working_residents'] = (modeling_data['n_residence_members'] - modeling_data['n_residents_u18']).astype(int)\n", + "\n", + "# # Create a binary indicator.\n", + "# modeling_data['is_male'] = modeling_data.gender.apply(lambda x: 1 if x==\"Male\" else 0)\n", + "\n", + "# # Bin the number of vehicles owned.\n", + "# # Drop the observations with (Prefer not to say)\n", + "# modeling_data = modeling_data.loc[~modeling_data['n_motor_vehicles'].isin(['Prefer not to say / Prefiero no decir.']), :]\n", + "# modeling_data.loc[modeling_data['n_motor_vehicles'].isin(['4+']), 'n_motor_vehicles'] = 4\n", + "# modeling_data['n_motor_vehicles'] = modeling_data['n_motor_vehicles'].astype(int)\n", + "\n", + "# # Convert the total duration of the trip into minutes.\n", + "# modeling_data[['duration']] = modeling_data[['duration']]/60\n", + "\n", + "# # Extract start and end latitudes and longitudes.\n", + "# modeling_data['start_lat'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][1])\n", + "# modeling_data['start_lng'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][0])\n", + "\n", + "# modeling_data['end_lat'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][1])\n", + "# modeling_data['end_lng'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][0])" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [], + "source": [ + "# # Time-related feature engineeering:\n", + "# '''\n", + "# HOD: hour of day\n", + "# DOM: day of month\n", + "# MOY: month of year\n", + "# '''\n", + "\n", + "# def get_HOD(hour, how='sin'):\n", + "# if how == 'sin':\n", + "# return np.sin(2 * np.pi * (hour/24))\n", + "# return np.cos(2 * np.pi * (hour/24))\n", + "\n", + "# def get_DOM(day, n_days, how='sin'):\n", + "# if how == 'sin':\n", + "# return np.sin(2 * np.pi * (day/n_days))\n", + "# return np.cos(2 * np.pi * (day/n_days))\n", + "\n", + "# def get_MOY(month, how='sin'):\n", + "# if how == 'sin':\n", + "# return np.sin(2 * np.pi * (month/12))\n", + "# return np.cos(2 * np.pi * (month/12))\n", + "\n", + "# # Start - sin\n", + "# modeling_data['start:sin_HOD'] = modeling_data.apply(lambda x: get_HOD(x['start:hour']), axis=1)\n", + "# modeling_data['start:sin_DOM'] = modeling_data.apply(lambda x: get_DOM(x['start:day'], x['start:n_days_in_month']), axis=1)\n", + "# modeling_data['start:sin_MOY'] = modeling_data.apply(lambda x: get_MOY(x['start:year']), axis=1)\n", + "\n", + "# # Start - cos\n", + "# modeling_data['start:cos_HOD'] = modeling_data.apply(lambda x: get_HOD(x['start:hour'], how='cos'), axis=1)\n", + "# modeling_data['start:cos_DOM'] = modeling_data.apply(lambda x: get_DOM(x['start:day'], x['start:n_days_in_month'], how='cos'), axis=1)\n", + "# modeling_data['start:cos_MOY'] = modeling_data.apply(lambda x: get_MOY(x['start:year'], how='cos'), axis=1)\n", + "\n", + "# # End - sin\n", + "# modeling_data['end:sin_HOD'] = modeling_data.apply(lambda x: get_HOD(x['end:hour']), axis=1)\n", + "# modeling_data['end:sin_DOM'] = modeling_data.apply(lambda x: get_DOM(x['end:day'], x['end:n_days_in_month']), axis=1)\n", + "# modeling_data['end:sin_MOY'] = modeling_data.apply(lambda x: get_MOY(x['end:year']), axis=1)\n", + "\n", + "# # End - cos\n", + "# modeling_data['end:cos_HOD'] = modeling_data.apply(lambda x: get_HOD(x['end:hour'], how='cos'), axis=1)\n", + "# modeling_data['end:cos_DOM'] = modeling_data.apply(lambda x: get_DOM(x['end:day'], x['end:n_days_in_month'], how='cos'), axis=1)\n", + "# modeling_data['end:cos_MOY'] = modeling_data.apply(lambda x: get_MOY(x['end:year'], how='cos'), axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sourceend_tsend_fmt_timeend_locraw_tripstart_tsstart_fmt_timestart_locdurationdistance...primary_job_commute_mode_Hybridprimary_job_commute_mode_Public transportprimary_job_commute_mode_Unknownprimary_job_commute_mode_WFHis_overnight_tripn_working_residentsstart_latstart_lngend_latend_lng
0DwellSegmentationDistFilter1.629238e+092021-08-17 16:02:26.493017-06:00{'type': 'Point', 'coordinates': [-71.08788681...611c350df3bfdd5663c34e521.629237e+092021-08-17 15:51:32.998732-06:00{'type': 'Point', 'coordinates': [-71.11831245...10.8915712700.231495...0.00.01.00.00342.351336-71.11831242.347875-71.087887
1DwellSegmentationDistFilter1.645386e+092022-02-20 12:32:43.451677-07:00{'type': 'Point', 'coordinates': [-111.9450490...6212ce379106a670c421b8881.645383e+092022-02-20 11:58:02.051102-07:00{'type': 'Point', 'coordinates': [-111.9167906...34.69001018093.352854...0.00.01.00.00333.595163-111.91679133.461827-111.945049
2DwellSegmentationDistFilter1.645391e+092022-02-20 14:07:17.998778-07:00{'type': 'Point', 'coordinates': [-111.9440840...6212ce459106a670c421b88c1.645388e+092022-02-20 13:20:30.462982-07:00{'type': 'Point', 'coordinates': [-111.9437005...46.792263984.681194...0.00.01.00.00333.461366-111.94370133.460592-111.944084
3DwellSegmentationDistFilter1.645397e+092022-02-20 15:35:51.018136-07:00{'type': 'Point', 'coordinates': [-111.9448744...6212ce459106a670c421b88e1.645397e+092022-02-20 15:35:16.506669-07:00{'type': 'Point', 'coordinates': [-111.9440840...0.575191183.932256...0.00.01.00.00333.460592-111.94408433.462015-111.944874
4DwellSegmentationDistFilter1.645405e+092022-02-20 17:52:13.000176-07:00{'type': 'Point', 'coordinates': [-110.8175686...6214032d39cfe183d0343a071.645397e+092022-02-20 15:43:38.468902-07:00{'type': 'Point', 'coordinates': [-111.9448744...128.575521192258.374492...0.00.01.00.00333.462015-111.94487432.276548-110.817569
\n", + "

5 rows × 104 columns

\n", + "
" + ], + "text/plain": [ + " source end_ts end_fmt_time \\\n", + "0 DwellSegmentationDistFilter 1.629238e+09 2021-08-17 16:02:26.493017-06:00 \n", + "1 DwellSegmentationDistFilter 1.645386e+09 2022-02-20 12:32:43.451677-07:00 \n", + "2 DwellSegmentationDistFilter 1.645391e+09 2022-02-20 14:07:17.998778-07:00 \n", + "3 DwellSegmentationDistFilter 1.645397e+09 2022-02-20 15:35:51.018136-07:00 \n", + "4 DwellSegmentationDistFilter 1.645405e+09 2022-02-20 17:52:13.000176-07:00 \n", + "\n", + " end_loc \\\n", + "0 {'type': 'Point', 'coordinates': [-71.08788681... \n", + "1 {'type': 'Point', 'coordinates': [-111.9450490... \n", + "2 {'type': 'Point', 'coordinates': [-111.9440840... \n", + "3 {'type': 'Point', 'coordinates': [-111.9448744... \n", + "4 {'type': 'Point', 'coordinates': [-110.8175686... \n", + "\n", + " raw_trip start_ts start_fmt_time \\\n", + "0 611c350df3bfdd5663c34e52 1.629237e+09 2021-08-17 15:51:32.998732-06:00 \n", + "1 6212ce379106a670c421b888 1.645383e+09 2022-02-20 11:58:02.051102-07:00 \n", + "2 6212ce459106a670c421b88c 1.645388e+09 2022-02-20 13:20:30.462982-07:00 \n", + "3 6212ce459106a670c421b88e 1.645397e+09 2022-02-20 15:35:16.506669-07:00 \n", + "4 6214032d39cfe183d0343a07 1.645397e+09 2022-02-20 15:43:38.468902-07:00 \n", + "\n", + " start_loc duration \\\n", + "0 {'type': 'Point', 'coordinates': [-71.11831245... 10.891571 \n", + "1 {'type': 'Point', 'coordinates': [-111.9167906... 34.690010 \n", + "2 {'type': 'Point', 'coordinates': [-111.9437005... 46.792263 \n", + "3 {'type': 'Point', 'coordinates': [-111.9440840... 0.575191 \n", + "4 {'type': 'Point', 'coordinates': [-111.9448744... 128.575521 \n", + "\n", + " distance ... primary_job_commute_mode_Hybrid \\\n", + "0 2700.231495 ... 0.0 \n", + "1 18093.352854 ... 0.0 \n", + "2 984.681194 ... 0.0 \n", + "3 183.932256 ... 0.0 \n", + "4 192258.374492 ... 0.0 \n", + "\n", + " primary_job_commute_mode_Public transport primary_job_commute_mode_Unknown \\\n", + "0 0.0 1.0 \n", + "1 0.0 1.0 \n", + "2 0.0 1.0 \n", + "3 0.0 1.0 \n", + "4 0.0 1.0 \n", + "\n", + " primary_job_commute_mode_WFH is_overnight_trip n_working_residents \\\n", + "0 0.0 0 3 \n", + "1 0.0 0 3 \n", + "2 0.0 0 3 \n", + "3 0.0 0 3 \n", + "4 0.0 0 3 \n", + "\n", + " start_lat start_lng end_lat end_lng \n", + "0 42.351336 -71.118312 42.347875 -71.087887 \n", + "1 33.595163 -111.916791 33.461827 -111.945049 \n", + "2 33.461366 -111.943701 33.460592 -111.944084 \n", + "3 33.460592 -111.944084 33.462015 -111.944874 \n", + "4 33.462015 -111.944874 32.276548 -110.817569 \n", + "\n", + "[5 rows x 104 columns]" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "modeling_data.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, for every trip, we have the corresponding section mode that covered the longest distance for the trip.\n", + "\n", + "Using this as well as the `available_modes` column:\n", + "\n", + "```language=python\n", + "\n", + " # unique available modes:\n", + " {'Bicycle',\n", + " 'Do not have vehicle ',\n", + " 'Get a ride from a friend or family member',\n", + " 'None',\n", + " 'Public transportation (bus, subway, light rail, etc.)',\n", + " 'Rental car (including Zipcar/ Car2Go)',\n", + " 'Shared bicycle or scooter',\n", + " 'Skateboard',\n", + " 'Taxi (regular taxi, Uber, Lyft, etc)',\n", + " 'Walk/roll'}\n", + "\n", + " # unique section modes:\n", + " {'bicycling', 'bus', 'car', 'no_sensed', 'train', 'walking'}\n", + "\n", + " \n", + "```\n", + "\n", + "What mapping can we establish here? " + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [], + "source": [ + "def remove_air_or_hsr(df):\n", + "\n", + " df['mark'] = 0\n", + "\n", + " for ix, row in df.iterrows():\n", + " sections = row['section_modes']\n", + " if 'air_or_hsr' in sections:\n", + " df.loc[ix, 'mark'] = 1\n", + " \n", + " df = r(df.loc[df.mark == 0, :])\n", + " df.drop(columns=['mark'], inplace=True)\n", + "\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "modeling_data = remove_air_or_hsr(modeling_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "importlib.reload(scaffolding)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [], + "source": [ + "results = list()" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [], + "source": [ + "modeling_data = r(modeling_data.loc[:,~modeling_data.columns.duplicated()].copy())\n", + "subset = modeling_data[['original_user_id', 'cleaned_trip']]" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "num_splits = 10\n", + "samples_per_split = modeling_data.shape[0]//num_splits" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Split 0 size: 8069\n", + "INFO: Pandarallel will run on 4 workers.\n", + "INFO: Pandarallel will use standard multiprocessing data transfer (pipe) to transfer data between the main process and workers.\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Falling back to confirmed trips...\n", + "Took 13.07597050956667 minutes to complete\n", + "Split 1 size: 8069\n", + "INFO: Pandarallel will run on 4 workers.\n", + "INFO: Pandarallel will use standard multiprocessing data transfer (pipe) to transfer data between the main process and workers.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/rkulhall/em-public-dashboard/rm_src/../viz_scripts/scaffolding.py:147: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " confirmed_trips['section_durations'] = confirmed_trips.parallel_apply(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Took 20.352822523033332 minutes to complete\n", + "Split 2 size: 8069\n", + "INFO: Pandarallel will run on 4 workers.\n", + "INFO: Pandarallel will use standard multiprocessing data transfer (pipe) to transfer data between the main process and workers.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/rkulhall/em-public-dashboard/rm_src/../viz_scripts/scaffolding.py:147: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " confirmed_trips['section_durations'] = confirmed_trips.parallel_apply(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Took 19.824597845733333 minutes to complete\n", + "Split 3 size: 8069\n", + "INFO: Pandarallel will run on 4 workers.\n", + "INFO: Pandarallel will use standard multiprocessing data transfer (pipe) to transfer data between the main process and workers.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/rkulhall/em-public-dashboard/rm_src/../viz_scripts/scaffolding.py:147: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " confirmed_trips['section_durations'] = confirmed_trips.parallel_apply(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Took 20.249677114833336 minutes to complete\n", + "Split 4 size: 8069\n", + "INFO: Pandarallel will run on 4 workers.\n", + "INFO: Pandarallel will use standard multiprocessing data transfer (pipe) to transfer data between the main process and workers.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/rkulhall/em-public-dashboard/rm_src/../viz_scripts/scaffolding.py:147: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " confirmed_trips['section_durations'] = confirmed_trips.parallel_apply(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Took 18.196551645316656 minutes to complete\n", + "Split 5 size: 8069\n", + "INFO: Pandarallel will run on 4 workers.\n", + "INFO: Pandarallel will use standard multiprocessing data transfer (pipe) to transfer data between the main process and workers.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/rkulhall/em-public-dashboard/rm_src/../viz_scripts/scaffolding.py:147: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " confirmed_trips['section_durations'] = confirmed_trips.parallel_apply(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Took 14.953972044866669 minutes to complete\n", + "Split 6 size: 8069\n", + "INFO: Pandarallel will run on 4 workers.\n", + "INFO: Pandarallel will use standard multiprocessing data transfer (pipe) to transfer data between the main process and workers.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/rkulhall/em-public-dashboard/rm_src/../viz_scripts/scaffolding.py:147: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " confirmed_trips['section_durations'] = confirmed_trips.parallel_apply(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Took 13.908668193450012 minutes to complete\n", + "Split 7 size: 8069\n", + "INFO: Pandarallel will run on 4 workers.\n", + "INFO: Pandarallel will use standard multiprocessing data transfer (pipe) to transfer data between the main process and workers.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/rkulhall/em-public-dashboard/rm_src/../viz_scripts/scaffolding.py:147: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " confirmed_trips['section_durations'] = confirmed_trips.parallel_apply(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Took 15.91554533118333 minutes to complete\n", + "Split 8 size: 8069\n", + "INFO: Pandarallel will run on 4 workers.\n", + "INFO: Pandarallel will use standard multiprocessing data transfer (pipe) to transfer data between the main process and workers.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/rkulhall/em-public-dashboard/rm_src/../viz_scripts/scaffolding.py:147: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " confirmed_trips['section_durations'] = confirmed_trips.parallel_apply(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Took 14.596019812649986 minutes to complete\n", + "Split 9 size: 8069\n", + "INFO: Pandarallel will run on 4 workers.\n", + "INFO: Pandarallel will use standard multiprocessing data transfer (pipe) to transfer data between the main process and workers.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/rkulhall/em-public-dashboard/rm_src/../viz_scripts/scaffolding.py:147: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " confirmed_trips['section_durations'] = confirmed_trips.parallel_apply(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Took 12.495607870950002 minutes to complete\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/rkulhall/em-public-dashboard/rm_src/../viz_scripts/scaffolding.py:147: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " confirmed_trips['section_durations'] = confirmed_trips.parallel_apply(\n" + ] + } + ], + "source": [ + "from time import perf_counter\n", + "\n", + "for split_ix in range(num_splits):\n", + " low = samples_per_split * split_ix\n", + " high = samples_per_split * (split_ix + 1) - 1\n", + " split = subset.loc[low:high, :]\n", + " \n", + " print(f\"Split {split_ix} size: {split.shape[0]}\")\n", + " \n", + " now = perf_counter()\n", + " result = scaffolding.get_section_durations(split)\n", + " end = perf_counter() - now\n", + "\n", + " print(f\"Took {end/60} minutes to complete\")\n", + " results.append(result)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10\n" + ] + } + ], + "source": [ + "print(len(results))" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [], + "source": [ + "cat = pd.concat(results, axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "80691 80690\n" + ] + } + ], + "source": [ + "print(modeling_data.shape[0], cat.shape[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "80690\n" + ] + } + ], + "source": [ + "modeling_data = modeling_data.loc[:cat.shape[0]-1, :]\n", + "print(modeling_data.shape[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(modeling_data.original_user_id == cat.original_user_id).all()" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
original_user_idcleaned_tripsection_durations
08a0473ca-e53d-4720-a99c-0696cc1fb407611c350ef3bfdd5663c34e5b[393.00192403793335, 258.49230194091797]
18a0473ca-e53d-4720-a99c-0696cc1fb4076212ce4c9106a670c421b89b[2081.4005744457245]
28a0473ca-e53d-4720-a99c-0696cc1fb4076212ce4e9106a670c421b903[2807.5357959270477]
38a0473ca-e53d-4720-a99c-0696cc1fb4076212ce4f9106a670c421b965[34.51146650314331]
48a0473ca-e53d-4720-a99c-0696cc1fb4076214033c39cfe183d0343a2f[7714.531273841858]
\n", + "
" + ], + "text/plain": [ + " original_user_id cleaned_trip \\\n", + "0 8a0473ca-e53d-4720-a99c-0696cc1fb407 611c350ef3bfdd5663c34e5b \n", + "1 8a0473ca-e53d-4720-a99c-0696cc1fb407 6212ce4c9106a670c421b89b \n", + "2 8a0473ca-e53d-4720-a99c-0696cc1fb407 6212ce4e9106a670c421b903 \n", + "3 8a0473ca-e53d-4720-a99c-0696cc1fb407 6212ce4f9106a670c421b965 \n", + "4 8a0473ca-e53d-4720-a99c-0696cc1fb407 6214033c39cfe183d0343a2f \n", + "\n", + " section_durations \n", + "0 [393.00192403793335, 258.49230194091797] \n", + "1 [2081.4005744457245] \n", + "2 [2807.5357959270477] \n", + "3 [34.51146650314331] \n", + "4 [7714.531273841858] " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(cat.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [], + "source": [ + "modeling_data = pd.concat([modeling_data, cat[['section_durations']]], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [], + "source": [ + "modeling_data.to_csv('../data/final_modeling_data_02142024.csv', index=False)" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" + }, + "kernelspec": { + "display_name": "emission", + "language": "python", + "name": "emission" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/viz_scripts/denver_weather_data.csv b/viz_scripts/denver_weather_data.csv new file mode 100644 index 0000000..77def6f --- /dev/null +++ b/viz_scripts/denver_weather_data.csv @@ -0,0 +1,26329 @@ +time,temperature_2m (°F),relative_humidity_2m (%),dew_point_2m (°F),rain (inch),snowfall (inch),wind_speed_10m (mp/h),wind_gusts_10m (mp/h) +2020-01-01T00:00,24.1,56,10.8,0,0,7.3,15 +2020-01-01T01:00,24,58,11.3,0,0,6,12.5 +2020-01-01T02:00,26.7,57,13.5,0,0,7.7,14.1 +2020-01-01T03:00,27.1,57,13.7,0,0,6.5,13.2 +2020-01-01T04:00,24.9,61,13.3,0,0,5.6,11.2 +2020-01-01T05:00,30.8,57,17.3,0,0,8.9,8.9 +2020-01-01T06:00,28.7,61,16.9,0,0,10.6,17.7 +2020-01-01T07:00,27.1,68,18,0,0,5.5,17.4 +2020-01-01T08:00,30.7,67,21.1,0,0,5.6,9.8 +2020-01-01T09:00,33.6,65,23.3,0,0,5.1,9.2 +2020-01-01T10:00,38.3,59,25.3,0,0,8.1,13.2 +2020-01-01T11:00,42,54,26.7,0,0,9.5,16.8 +2020-01-01T12:00,39.5,67,29.3,0,0,5.1,16.8 +2020-01-01T13:00,38.3,72,30,0.008,0,6,42.1 +2020-01-01T14:00,39,75,31.6,0,0,5.8,10.1 +2020-01-01T15:00,42.8,59,29.7,0,0,3.2,9.4 +2020-01-01T16:00,38.1,65,27.5,0,0,7,8.5 +2020-01-01T17:00,31.2,67,21.5,0,0,7.4,11.2 +2020-01-01T18:00,30,70,21.6,0,0,6.3,10.5 +2020-01-01T19:00,29.3,73,21.6,0,0,8.2,13.9 +2020-01-01T20:00,26.9,71,18.9,0,0,6.7,13.6 +2020-01-01T21:00,23.7,65,13.7,0,0,10.4,13.2 +2020-01-01T22:00,24.5,58,11.9,0,0,10.1,13.2 +2020-01-01T23:00,34.7,43,14.4,0,0,6.5,12.8 +2020-01-02T00:00,32.2,47,14.4,0,0,3.6,8.5 +2020-01-02T01:00,28.3,52,13.1,0,0,6.9,8.5 +2020-01-02T02:00,26.1,51,10.6,0,0,8.9,11.2 +2020-01-02T03:00,18.3,57,5.6,0,0,12.2,14.8 +2020-01-02T04:00,32.3,36,8.1,0,0,4.3,16.1 +2020-01-02T05:00,24.9,69,16.1,0,0,6,10.5 +2020-01-02T06:00,24.9,63,14.1,0,0,7.5,11.2 +2020-01-02T07:00,22.2,72,14.5,0,0,8.4,12.1 +2020-01-02T08:00,20.1,73,12.9,0,0,7.9,11 +2020-01-02T09:00,30.7,62,19.3,0,0,5.3,11 +2020-01-02T10:00,36.2,53,20.9,0,0,6.5,12.1 +2020-01-02T11:00,37.7,50,20.8,0,0,5.7,12.5 +2020-01-02T12:00,38.6,51,22.1,0,0,3.4,11.2 +2020-01-02T13:00,42.6,30,13.2,0,0,4.8,11.6 +2020-01-02T14:00,42.4,30,13.4,0,0,8.9,15.7 +2020-01-02T15:00,39.8,35,14.5,0,0,11.6,19.7 +2020-01-02T16:00,36.4,39,13.8,0,0,10.7,19.9 +2020-01-02T17:00,33.9,52,18.3,0,0,4.8,17 +2020-01-02T18:00,29.7,62,18.1,0,0,3.8,5.6 +2020-01-02T19:00,30.1,53,15.2,0,0,1.8,6.3 +2020-01-02T20:00,26.3,61,14.6,0,0,4.6,5.4 +2020-01-02T21:00,29.2,46,10.9,0,0,9.6,13.2 +2020-01-02T22:00,28.2,48,11.2,0,0,6,17.4 +2020-01-02T23:00,24.3,57,11.3,0,0,4.7,9.4 +2020-01-03T00:00,22.6,58,10,0,0,4.1,6.7 +2020-01-03T01:00,22.6,53,8.2,0,0,4.3,6.9 +2020-01-03T02:00,22.8,51,7.3,0,0,3.6,6.9 +2020-01-03T03:00,22.3,51,6.9,0,0,4.3,6.3 +2020-01-03T04:00,22.6,49,6.4,0,0,3.3,6.5 +2020-01-03T05:00,24.9,49,8.5,0,0,6.4,5.6 +2020-01-03T06:00,25.3,50,9.1,0,0,5.3,8.3 +2020-01-03T07:00,23,55,9.2,0,0,9.8,14.3 +2020-01-03T08:00,23,53,8.3,0,0,9.6,14.8 +2020-01-03T09:00,28.8,44,9.7,0,0,9.4,16.3 +2020-01-03T10:00,34.2,38,10.9,0,0,8.4,16.1 +2020-01-03T11:00,40.2,29,10.6,0,0,7.1,15.7 +2020-01-03T12:00,42.5,27,11,0,0,0.9,14.1 +2020-01-03T13:00,43.3,31,14.7,0,0,2.7,8.5 +2020-01-03T14:00,43.3,33,16.3,0,0,5.8,10.3 +2020-01-03T15:00,41,42,19.9,0,0,9.1,16.6 +2020-01-03T16:00,37,49,19.7,0,0,5.9,14.3 +2020-01-03T17:00,42.6,34,16.4,0,0,4.8,8.7 +2020-01-03T18:00,36.5,46,17.9,0,0,3.2,6.5 +2020-01-03T19:00,32,60,19.6,0,0,4.1,5.6 +2020-01-03T20:00,32.1,60,19.7,0,0,3.6,6 +2020-01-03T21:00,31.2,63,20.1,0,0,4.5,9.4 +2020-01-03T22:00,30.7,64,19.9,0,0,1.6,7.6 +2020-01-03T23:00,30.3,66,20.2,0,0,2.7,4.5 +2020-01-04T00:00,29.8,67,20.1,0,0,5.9,9.6 +2020-01-04T01:00,29.8,64,19.1,0,0,3.7,9.6 +2020-01-04T02:00,28.6,67,18.9,0,0,5.2,6 +2020-01-04T03:00,28.2,66,18.1,0,0,4.4,6 +2020-01-04T04:00,29.9,59,17.5,0,0,5.5,8.9 +2020-01-04T05:00,29.6,63,18.5,0,0,5.1,8.9 +2020-01-04T06:00,30.2,61,18.3,0,0,4.6,8.3 +2020-01-04T07:00,29.9,61,18.2,0,0,7.4,8.7 +2020-01-04T08:00,33.7,53,18.5,0,0,5.9,9.2 +2020-01-04T09:00,40.9,44,20.4,0,0,5.9,9.2 +2020-01-04T10:00,45.2,45,25.3,0,0,7.9,13.9 +2020-01-04T11:00,49.6,41,26.6,0,0,8.6,15.2 +2020-01-04T12:00,50.6,39,26.3,0,0,10.3,18.1 +2020-01-04T13:00,53.1,35,26.2,0,0,10.3,18.1 +2020-01-04T14:00,54.4,33,26.2,0,0,7.6,18.1 +2020-01-04T15:00,54.1,38,29,0,0,3.2,13.2 +2020-01-04T16:00,49.7,49,31.6,0,0,4.5,5.6 +2020-01-04T17:00,50.5,43,28.8,0,0,1.6,5.6 +2020-01-04T18:00,35.5,73,27.8,0,0,5.6,6.5 +2020-01-04T19:00,39.7,55,24.8,0,0,3.8,8.1 +2020-01-04T20:00,38.7,54,23.4,0,0,4,5.4 +2020-01-04T21:00,35.3,53,19.8,0,0,6.5,9.8 +2020-01-04T22:00,39.2,39,16.3,0,0,9.8,15 +2020-01-04T23:00,43.2,30,13.6,0,0,15.2,24.2 +2020-01-05T00:00,44.2,29,13.7,0,0,22.1,36.2 +2020-01-05T01:00,43.6,30,14.1,0,0,22.2,38.9 +2020-01-05T02:00,41.7,31,13.2,0,0,6.4,37.1 +2020-01-05T03:00,32.6,55,18.1,0,0,9.1,13.4 +2020-01-05T04:00,27.7,71,19.6,0,0,5.6,16.1 +2020-01-05T05:00,25.9,73,18.3,0,0,6.3,9.2 +2020-01-05T06:00,25.9,67,16.4,0,0,5.4,10.1 +2020-01-05T07:00,24.5,68,15.6,0,0,4.8,8.7 +2020-01-05T08:00,26.8,61,15.2,0,0,2.9,7.2 +2020-01-05T09:00,31.3,49,14.5,0,0,4.1,8.7 +2020-01-05T10:00,36.3,43,16,0,0,5.6,10.7 +2020-01-05T11:00,38.5,37,14.4,0,0,9.2,17.4 +2020-01-05T12:00,41.3,35,15.7,0,0,7.2,17.7 +2020-01-05T13:00,43.5,36,18.1,0,0,4.1,15.2 +2020-01-05T14:00,44.2,36,18.9,0,0,4.2,11 +2020-01-05T15:00,43.9,38,19.7,0,0,6.6,12.3 +2020-01-05T16:00,39.9,48,21.6,0,0,10.3,16.3 +2020-01-05T17:00,30.9,60,18.8,0,0,11.1,18.8 +2020-01-05T18:00,29.1,61,17.4,0,0,5.6,18.3 +2020-01-05T19:00,26,68,17,0,0,6.5,8.9 +2020-01-05T20:00,25.4,67,16.1,0,0,2.9,7.8 +2020-01-05T21:00,27.6,58,14.9,0,0,2.4,4 +2020-01-05T22:00,28,54,13.4,0,0,1.4,5.4 +2020-01-05T23:00,23.4,66,13.7,0,0,3.4,5.6 +2020-01-06T00:00,22.6,72,14.8,0,0,2.9,7.2 +2020-01-06T01:00,23.1,68,14.1,0,0,5.4,7.4 +2020-01-06T02:00,30.4,41,9.6,0,0,12.3,18.3 +2020-01-06T03:00,30.9,35,6.3,0,0,15.7,25.9 +2020-01-06T04:00,30.2,33,4.2,0,0,16.4,27.5 +2020-01-06T05:00,23.8,46,6.1,0,0,7.1,27.3 +2020-01-06T06:00,23.4,52,8.2,0,0,3.8,9.2 +2020-01-06T07:00,23,49,6.5,0,0,6.2,10.1 +2020-01-06T08:00,24.6,45,6.1,0,0,6.1,10.3 +2020-01-06T09:00,29.2,39,7.3,0,0,6.8,12.1 +2020-01-06T10:00,33.7,35,8.9,0,0,6.3,13.9 +2020-01-06T11:00,37.9,29,8.2,0,0,6.5,15 +2020-01-06T12:00,40.1,23,5.5,0,0,14.9,23.9 +2020-01-06T13:00,39.9,24,6.4,0,0,14.1,27.3 +2020-01-06T14:00,40.2,25,6.7,0,0,10.8,24.8 +2020-01-06T15:00,40.1,25,6.6,0,0,5.3,19.2 +2020-01-06T16:00,36.9,38,13.6,0,0,4.2,15.7 +2020-01-06T17:00,29.4,42,9,0,0,7.9,7.4 +2020-01-06T18:00,34.8,31,7.3,0,0,3.4,9.2 +2020-01-06T19:00,26.4,47,8.7,0,0,4.7,7.2 +2020-01-06T20:00,24.1,54,9.9,0,0,6.1,8.1 +2020-01-06T21:00,23.9,54,9.5,0,0,6.6,8.3 +2020-01-06T22:00,25.3,47,8,0,0,5.8,8.3 +2020-01-06T23:00,26.2,42,6.4,0,0,9.7,15 +2020-01-07T00:00,26.2,43,7,0,0,10.9,17.4 +2020-01-07T01:00,25.9,46,7.8,0,0,11.1,17.4 +2020-01-07T02:00,23.6,50,7.9,0,0,9.7,18.6 +2020-01-07T03:00,25.5,47,8.2,0,0,2.7,14.8 +2020-01-07T04:00,23.2,54,8.9,0,0,3.6,5.6 +2020-01-07T05:00,24.2,61,12.5,0,0,5.9,7.6 +2020-01-07T06:00,26.1,58,13.3,0,0,4.5,7.2 +2020-01-07T07:00,26.2,57,13.2,0,0,5.2,7.8 +2020-01-07T08:00,28,56,14.4,0,0,3.7,7.6 +2020-01-07T09:00,33.2,49,15.9,0,0,5.7,10.1 +2020-01-07T10:00,39.2,41,17.7,0,0,6.7,13.4 +2020-01-07T11:00,44.9,34,18.5,0,0,5.2,13.4 +2020-01-07T12:00,48.2,31,18.9,0,0,6,13.2 +2020-01-07T13:00,50,28,18.1,0,0,6.9,14.1 +2020-01-07T14:00,50.9,27,18.2,0,0,6.6,14.3 +2020-01-07T15:00,50.5,29,19.8,0,0,5.9,13.2 +2020-01-07T16:00,45.1,55,29.9,0,0,4.5,10.1 +2020-01-07T17:00,36.8,59,23.6,0,0,7.4,5.4 +2020-01-07T18:00,34.7,60,22.4,0,0,4.3,8.9 +2020-01-07T19:00,30.7,67,21,0,0,5,8.9 +2020-01-07T20:00,27.6,69,18.6,0,0,4.4,7.6 +2020-01-07T21:00,26.4,66,16.6,0,0,5.5,7.2 +2020-01-07T22:00,25.6,64,15.2,0,0,6.7,8.3 +2020-01-07T23:00,25.5,62,14.5,0,0,6.5,8.1 +2020-01-08T00:00,25.4,62,14.3,0,0,6,8.1 +2020-01-08T01:00,25.8,62,14.6,0,0,5.9,7.6 +2020-01-08T02:00,25.4,62,14.2,0,0,6.2,7.8 +2020-01-08T03:00,25.9,58,13.3,0,0,4.5,7.6 +2020-01-08T04:00,25.9,57,12.7,0,0,4.3,6.7 +2020-01-08T05:00,24.5,61,13,0,0,6.3,6.7 +2020-01-08T06:00,25.2,59,12.7,0,0,6.6,7.8 +2020-01-08T07:00,25.8,55,11.9,0,0,6.2,8.1 +2020-01-08T08:00,29.5,47,11.5,0,0,4.5,7.8 +2020-01-08T09:00,35.6,42,14.5,0,0,5.8,10.5 +2020-01-08T10:00,42.6,35,16.6,0,0,6.6,12.8 +2020-01-08T11:00,47.5,29,16.9,0,0,9.1,16.6 +2020-01-08T12:00,51.2,25,16.5,0,0,10.6,19 +2020-01-08T13:00,53,24,16.7,0,0,13.5,23.3 +2020-01-08T14:00,53.2,23,16.5,0,0,12.1,23.7 +2020-01-08T15:00,52.3,27,19,0,0,8,21 +2020-01-08T16:00,44.9,51,27.6,0,0,6.3,12.8 +2020-01-08T17:00,43.5,31,14.5,0,0,8.3,7.6 +2020-01-08T18:00,36.6,40,14.4,0,0,5.9,13.9 +2020-01-08T19:00,35.7,41,14.5,0,0,1.4,9.4 +2020-01-08T20:00,33.4,51,17.2,0,0,1.4,4 +2020-01-08T21:00,28.5,50,12.4,0,0,5.2,8.1 +2020-01-08T22:00,28.8,43,8.9,0,0,6,9.4 +2020-01-08T23:00,27.7,48,10.5,0,0,6,11 +2020-01-09T00:00,26,55,11.9,0,0,5,9.8 +2020-01-09T01:00,23.4,65,13.2,0,0,6.5,8.3 +2020-01-09T02:00,22.3,68,13.4,0,0,3.2,8.1 +2020-01-09T03:00,22.5,67,13.2,0,0,4.3,5.4 +2020-01-09T04:00,24.6,56,11.3,0,0,2.3,5.4 +2020-01-09T05:00,22.6,63,12.1,0,0,3.5,4.7 +2020-01-09T06:00,23.2,63,12.5,0,0,3.4,4.7 +2020-01-09T07:00,24.6,58,12,0,0,3.9,5.8 +2020-01-09T08:00,25.3,56,11.9,0,0,4.7,6.3 +2020-01-09T09:00,30.7,46,12.6,0,0,1.6,7.6 +2020-01-09T10:00,35.2,40,13.4,0,0,3.5,8.7 +2020-01-09T11:00,37.9,33,11.3,0,0,4.3,11.6 +2020-01-09T12:00,40.1,29,10.6,0,0,1.6,11.2 +2020-01-09T13:00,40.7,29,11.1,0,0,4.1,11 +2020-01-09T14:00,41.3,28,10.9,0,0,6.9,14.1 +2020-01-09T15:00,40.9,29,10.9,0,0,7.7,15 +2020-01-09T16:00,38.7,46,19.5,0,0,2.8,13.9 +2020-01-09T17:00,36.2,49,18.9,0,0,5.1,8.7 +2020-01-09T18:00,35.6,49,18.1,0,0,4,7.4 +2020-01-09T19:00,31.3,59,18.8,0,0,4.1,6.3 +2020-01-09T20:00,30.8,66,20.9,0,0,4.7,6 +2020-01-09T21:00,31.1,68,21.9,0,0.028,0.4,5.6 +2020-01-09T22:00,30,72,22.2,0,0.028,1.8,2.9 +2020-01-09T23:00,27.5,79,21.9,0,0,3.4,4.7 +2020-01-10T00:00,29.1,72,21.4,0,0,1,4 +2020-01-10T01:00,27.2,76,20.8,0,0,0.8,1.6 +2020-01-10T02:00,22.2,85,18.4,0,0,4.6,4.9 +2020-01-10T03:00,22.3,73,15,0,0,4.5,6.3 +2020-01-10T04:00,21.7,67,12.3,0,0,3.3,6 +2020-01-10T05:00,23.5,58,10.9,0,0,4.7,4.5 +2020-01-10T06:00,23.5,63,12.9,0,0,5.2,7.4 +2020-01-10T07:00,21.9,67,12.7,0,0.028,5.6,7.6 +2020-01-10T08:00,25.1,59,12.9,0,0.028,1.6,6.7 +2020-01-10T09:00,28.3,55,14.1,0,0,3.2,7.4 +2020-01-10T10:00,30.7,48,13.5,0,0,5.4,12.1 +2020-01-10T11:00,32.2,42,11.8,0,0,7.5,15.7 +2020-01-10T12:00,32.9,41,11.5,0,0,8.2,17.2 +2020-01-10T13:00,32.1,43,12.3,0,0,8.3,17.2 +2020-01-10T14:00,31.6,46,13,0,0,7.7,17.4 +2020-01-10T15:00,30.8,44,11.6,0,0,6.5,15.9 +2020-01-10T16:00,29.1,44,9.9,0,0,5.6,13.2 +2020-01-10T17:00,22.6,58,10,0,0,6,9.4 +2020-01-10T18:00,19.9,65,10.1,0,0,3.2,9.8 +2020-01-10T19:00,18.2,71,10.5,0,0,3.6,5.4 +2020-01-10T20:00,18.1,70,10,0,0,3.2,4.7 +2020-01-10T21:00,18.3,70,10.2,0,0,1.8,3.6 +2020-01-10T22:00,18,71,10,0,0,3,4.3 +2020-01-10T23:00,17.9,72,10.4,0,0,3.3,5.6 +2020-01-11T00:00,17.7,74,10.8,0,0,2.8,5.6 +2020-01-11T01:00,19.2,70,10.9,0,0,0.5,3.8 +2020-01-11T02:00,17.7,74,10.8,0,0,3,3.6 +2020-01-11T03:00,16.6,72,9.2,0,0,2.6,3.4 +2020-01-11T04:00,15.8,65,6.1,0,0,1.8,2.9 +2020-01-11T05:00,15.1,47,-1.7,0,0,2.5,2.7 +2020-01-11T06:00,16.2,38,-5.1,0,0,2.7,6 +2020-01-11T07:00,16.8,37,-4.9,0,0,1.7,4.3 +2020-01-11T08:00,18.6,41,-1.5,0,0,5.6,9.4 +2020-01-11T09:00,19.5,48,2.8,0,0,5,11 +2020-01-11T10:00,21.9,39,0.9,0,0,3.3,12.5 +2020-01-11T11:00,26.3,32,0.4,0,0,4.1,12.5 +2020-01-11T12:00,31.3,26,0.6,0,0,5.4,13.2 +2020-01-11T13:00,35.9,23,1.4,0,0,6.3,14.5 +2020-01-11T14:00,38.9,21,2.7,0,0,5.7,14.5 +2020-01-11T15:00,39.5,22,3.7,0,0,3.2,12.8 +2020-01-11T16:00,34.4,29,5.1,0,0,4.1,7.8 +2020-01-11T17:00,30.5,54,15.6,0,0,6.2,5.8 +2020-01-11T18:00,32.5,54,17.7,0,0,4,7.6 +2020-01-11T19:00,30.2,66,20.1,0,0.028,4.9,6.7 +2020-01-11T20:00,30.7,58,17.5,0,0,4.5,6.7 +2020-01-11T21:00,30.7,53,15.4,0,0,5.5,8.9 +2020-01-11T22:00,26.8,60,14.6,0,0,4.9,8.9 +2020-01-11T23:00,24,62,13,0,0,4.3,7.8 +2020-01-12T00:00,21.9,63,11.2,0,0,3.6,7.4 +2020-01-12T01:00,19.9,64,9.7,0,0,3.8,5.8 +2020-01-12T02:00,19.9,62,9.1,0,0,3.8,6 +2020-01-12T03:00,19.5,57,6.9,0,0,4.4,7.6 +2020-01-12T04:00,20.2,52,5.5,0,0,4,7.6 +2020-01-12T05:00,19.7,53,5.5,0,0,2.8,8.9 +2020-01-12T06:00,20.7,49,4.6,0,0,3.6,5.6 +2020-01-12T07:00,19.9,47,2.8,0,0,6,9.6 +2020-01-12T08:00,20.9,43,1.8,0,0,8.1,12.1 +2020-01-12T09:00,28,31,1,0,0,6.5,13 +2020-01-12T10:00,35.2,23,1.3,0,0,5.8,12.5 +2020-01-12T11:00,37.5,21,1.5,0,0,3.8,12.5 +2020-01-12T12:00,39.7,18,-0.8,0,0,2.6,11 +2020-01-12T13:00,41.1,15,-3.5,0,0,2.5,9.6 +2020-01-12T14:00,41.8,14,-4.1,0,0,6.5,13 +2020-01-12T15:00,41,16,-2.4,0,0,7.1,13.9 +2020-01-12T16:00,37.3,23,3.1,0,0,10.3,17 +2020-01-12T17:00,33.8,34,8.3,0,0,6.5,17 +2020-01-12T18:00,31.3,37,7.7,0,0,7.6,10.3 +2020-01-12T19:00,25.3,45,7,0,0,3.2,8.9 +2020-01-12T20:00,21.7,58,9.1,0,0,2,4.7 +2020-01-12T21:00,20.1,62,9.3,0,0,4.7,5.4 +2020-01-12T22:00,19.8,60,8.1,0,0,4.8,6.3 +2020-01-12T23:00,19.6,57,7,0,0,5.1,5.8 +2020-01-13T00:00,20.8,50,5.1,0,0,4.4,6.7 +2020-01-13T01:00,19,53,4.6,0,0,4.5,6.7 +2020-01-13T02:00,21.1,47,4.2,0,0,3.8,6.3 +2020-01-13T03:00,19.5,48,3,0,0,4.6,6.3 +2020-01-13T04:00,19.6,46,2.2,0,0,4.3,6.3 +2020-01-13T05:00,19.9,46,2.6,0,0,6,6.5 +2020-01-13T06:00,19,47,2,0,0,4.1,7.4 +2020-01-13T07:00,18.1,49,1.9,0,0,4.7,5.8 +2020-01-13T08:00,21.6,42,2,0,0,3.2,6.3 +2020-01-13T09:00,28,32,2.1,0,0,0.8,5.6 +2020-01-13T10:00,32.9,27,2.3,0,0,1.3,7.6 +2020-01-13T11:00,37.6,23,3.3,0,0,1.6,7.8 +2020-01-13T12:00,40.1,22,3.8,0,0,5.3,12.8 +2020-01-13T13:00,38.9,24,5,0,0,8.1,15 +2020-01-13T14:00,40.3,25,7.3,0,0,6,17.4 +2020-01-13T15:00,41.8,23,6.8,0,0,1.8,12.5 +2020-01-13T16:00,38.9,23,4.3,0,0,5.1,7.8 +2020-01-13T17:00,29.7,45,10.7,0,0,7,10.5 +2020-01-13T18:00,32.5,41,11.4,0,0,2.2,7.8 +2020-01-13T19:00,23.5,61,11.9,0,0,6.5,7.8 +2020-01-13T20:00,24,60,12.1,0,0,4.9,8.1 +2020-01-13T21:00,25.4,50,9.1,0,0,7,11.2 +2020-01-13T22:00,24.4,48,7.3,0,0,6,11.2 +2020-01-13T23:00,23.4,51,8,0,0,6.5,8.7 +2020-01-14T00:00,23.6,52,8.6,0,0,5.2,8.1 +2020-01-14T01:00,22.6,53,7.9,0,0,5.5,6.5 +2020-01-14T02:00,21.7,54,7.4,0,0,5.6,7.4 +2020-01-14T03:00,21.3,54,7.1,0,0,5.5,6.9 +2020-01-14T04:00,22.4,50,6.5,0,0,4.2,6.7 +2020-01-14T05:00,21.2,51,5.7,0,0,5.4,7.2 +2020-01-14T06:00,20.9,50,5.2,0,0,5.4,7.2 +2020-01-14T07:00,21.2,49,4.9,0,0,5.6,6.7 +2020-01-14T08:00,25.5,41,4.9,0,0,3.7,7.6 +2020-01-14T09:00,35.3,27,5,0,0,3.5,7.2 +2020-01-14T10:00,45.5,19,5.6,0,0,6.9,12.3 +2020-01-14T11:00,51.3,16,6.3,0,0,14,23.7 +2020-01-14T12:00,52.7,16,7.2,0,0,17.7,30.2 +2020-01-14T13:00,52.9,16,8,0,0,19.2,32.9 +2020-01-14T14:00,53.1,17,9.8,0,0,18.4,32.9 +2020-01-14T15:00,52.3,21,13.7,0,0,15.4,30.6 +2020-01-14T16:00,47.8,27,15.1,0,0,7.1,25.5 +2020-01-14T17:00,37.3,34,11.4,0,0,2.7,11.6 +2020-01-14T18:00,32.3,44,12.7,0,0,2.7,3.4 +2020-01-14T19:00,26.7,59,14.1,0,0,4.4,6.7 +2020-01-14T20:00,24.9,65,14.8,0,0,4.2,6.7 +2020-01-14T21:00,24,66,14.2,0,0,4.5,6.5 +2020-01-14T22:00,24.4,62,13.1,0,0,3.2,6 +2020-01-14T23:00,23.5,61,12.2,0,0,4,5.4 +2020-01-15T00:00,27.6,51,11.8,0,0,2.6,5.1 +2020-01-15T01:00,26.8,57,13.7,0,0,9.3,16.3 +2020-01-15T02:00,23.6,70,15.4,0,0,4,15 +2020-01-15T03:00,23.3,70,14.9,0,0,5.8,6.9 +2020-01-15T04:00,23.5,67,14,0,0,5.2,7.6 +2020-01-15T05:00,23.3,70,14.9,0,0,5,7.4 +2020-01-15T06:00,21.6,74,14.5,0,0,4.8,7.6 +2020-01-15T07:00,22.3,69,13.7,0,0,4.8,7.4 +2020-01-15T08:00,24.4,62,13,0,0,4.5,7.8 +2020-01-15T09:00,28.4,52,13,0,0,4.1,9.6 +2020-01-15T10:00,33.9,40,11.8,0,0,2.9,9.6 +2020-01-15T11:00,40.5,28,10,0,0,4,11.2 +2020-01-15T12:00,44.1,24,9.6,0,0,7.3,14.3 +2020-01-15T13:00,41.8,31,13.3,0,0,15.4,27.3 +2020-01-15T14:00,43.8,30,14,0,0,13.9,27.5 +2020-01-15T15:00,39.3,38,15.9,0,0,16.3,28.6 +2020-01-15T16:00,35.8,47,17.3,0,0,14.3,27.7 +2020-01-15T17:00,30.8,47,13,0,0,9.8,23.9 +2020-01-15T18:00,29.2,47,11.5,0,0,12.3,20.1 +2020-01-15T19:00,26.7,52,11.5,0,0,7.5,19.9 +2020-01-15T20:00,25,58,12.3,0,0,4.7,8.7 +2020-01-15T21:00,26.1,58,13.4,0,0,5.4,6.5 +2020-01-15T22:00,23.6,63,13,0,0,6,8.3 +2020-01-15T23:00,22.8,64,12.6,0,0,4.5,7.6 +2020-01-16T00:00,22.7,61,11.1,0,0,5.7,7.6 +2020-01-16T01:00,22.5,51,7.2,0,0,6.9,8.5 +2020-01-16T02:00,23.6,49,7.1,0,0,5,8.7 +2020-01-16T03:00,22,54,8,0,0,3.8,6.5 +2020-01-16T04:00,21.3,55,7.8,0,0,4.1,6.5 +2020-01-16T05:00,19,56,5.8,0,0,6.7,10.7 +2020-01-16T06:00,17.4,59,5.6,0,0,6.1,10.5 +2020-01-16T07:00,16.7,61,5.7,0,0,5.2,9.4 +2020-01-16T08:00,17.3,61,6.2,0,0,3.5,7.8 +2020-01-16T09:00,20.4,55,6.8,0,0,3.5,9.4 +2020-01-16T10:00,24.9,46,6.8,0,0,3.7,10.7 +2020-01-16T11:00,30.4,36,6.7,0,0,5.1,12.8 +2020-01-16T12:00,34.5,31,7,0,0,7.5,15.7 +2020-01-16T13:00,36.8,29,7.4,0,0,9,17.4 +2020-01-16T14:00,37.8,29,8.3,0,0,9,17.4 +2020-01-16T15:00,36.2,32,9.4,0,0,9.2,17 +2020-01-16T16:00,32.6,39,10.3,0,0,9.4,16.3 +2020-01-16T17:00,24.2,47,6.7,0,0,4.9,15.2 +2020-01-16T18:00,23.4,49,6.9,0,0,5.8,9.2 +2020-01-16T19:00,23.1,50,7.3,0,0,4.9,9.2 +2020-01-16T20:00,23.9,50,7.9,0,0,6.1,9.6 +2020-01-16T21:00,24.4,51,8.7,0,0,4.9,10.1 +2020-01-16T22:00,25.3,50,9.2,0,0,5.6,8.9 +2020-01-16T23:00,24.8,50,8.7,0,0,7.9,13 +2020-01-17T00:00,23.3,52,8.2,0,0,6.1,13 +2020-01-17T01:00,22.8,52,7.9,0,0,4.5,9.8 +2020-01-17T02:00,22,54,8,0,0,5,8.7 +2020-01-17T03:00,21.9,55,8.1,0,0,3,8.1 +2020-01-17T04:00,21.1,57,8.1,0,0,2.6,4.9 +2020-01-17T05:00,21.3,54,7.3,0,0,2.8,4.5 +2020-01-17T06:00,20.9,58,8.3,0,0,5,7.4 +2020-01-17T07:00,20.4,64,10.3,0,0,5.1,6.5 +2020-01-17T08:00,24.9,61,13.4,0,0,4.3,6.3 +2020-01-17T09:00,33.7,46,15.3,0,0,4.9,9.8 +2020-01-17T10:00,45.2,31,16.2,0,0,6.2,12.1 +2020-01-17T11:00,51.7,27,18.5,0,0,13.8,23.9 +2020-01-17T12:00,52.1,21,13.6,0,0,10.5,24.8 +2020-01-17T13:00,52.1,15,6,0,0,12.5,22.4 +2020-01-17T14:00,50.5,19,9.5,0,0,11.6,23.7 +2020-01-17T15:00,47.4,21,9.1,0,0,10.5,21.9 +2020-01-17T16:00,39.7,33,12.9,0,0,19.7,34 +2020-01-17T17:00,35.4,39,12.7,0,0,8.3,33.6 +2020-01-17T18:00,35.2,37,11.4,0,0,9.6,15.9 +2020-01-17T19:00,35,35,10.1,0,0,10.5,20.4 +2020-01-17T20:00,30.8,40,9.3,0,0,7.9,17.2 +2020-01-17T21:00,32.3,35,7.5,0,0,4.5,12.3 +2020-01-17T22:00,30.4,37,7.3,0,0,1.9,6.3 +2020-01-17T23:00,27.5,41,6.8,0,0,6.4,8.7 +2020-01-18T00:00,29.1,36,5.2,0,0,10.3,17.2 +2020-01-18T01:00,26.9,37,3.9,0,0,6.4,16.8 +2020-01-18T02:00,28,35,3.9,0,0,9.7,16.3 +2020-01-18T03:00,22.3,45,4.3,0,0,6.5,15.9 +2020-01-18T04:00,19.8,52,4.8,0,0,5.4,8.1 +2020-01-18T05:00,19.3,54,5.5,0,0,4,6.7 +2020-01-18T06:00,20.9,50,5.3,0,0,3.6,4.9 +2020-01-18T07:00,19,53,4.8,0,0,5.9,6.9 +2020-01-18T08:00,22.9,44,4,0,0,1.9,6.9 +2020-01-18T09:00,27.5,34,2.8,0,0,1.8,6.7 +2020-01-18T10:00,32,26,1,0,0,2.9,9.2 +2020-01-18T11:00,36.4,20,-1.3,0,0,3.4,10.7 +2020-01-18T12:00,39.8,16,-3.2,0,0,1.5,10.7 +2020-01-18T13:00,41.8,14,-4.1,0,0,4.6,11.6 +2020-01-18T14:00,41.8,14,-4.1,0,0,8.4,16.6 +2020-01-18T15:00,42.2,16,-1.2,0,0,8,16.8 +2020-01-18T16:00,38.8,20,1.1,0,0,4.7,14.5 +2020-01-18T17:00,30.5,42,10,0,0,5.7,8.5 +2020-01-18T18:00,27.3,49,10.5,0,0,5.3,8.3 +2020-01-18T19:00,28,47,10.3,0,0,4.6,8.1 +2020-01-18T20:00,28.9,46,10.9,0,0,4.4,5.6 +2020-01-18T21:00,30,45,11.1,0,0,1.7,5.4 +2020-01-18T22:00,28,48,10.9,0,0,2.2,2.5 +2020-01-18T23:00,22.6,58,10,0,0,3.8,4.7 +2020-01-19T00:00,21.5,60,9.9,0,0,3.4,4.5 +2020-01-19T01:00,21,63,10.5,0,0,4.1,5.6 +2020-01-19T02:00,21.1,64,10.8,0,0,3.5,5.4 +2020-01-19T03:00,20.1,67,10.9,0,0,3.9,5.1 +2020-01-19T04:00,20.1,67,10.9,0,0,4.1,5.1 +2020-01-19T05:00,20,65,10.3,0,0,4.7,5.8 +2020-01-19T06:00,19.9,63,9.3,0,0,4.9,5.8 +2020-01-19T07:00,20,60,8.4,0,0,4.3,5.8 +2020-01-19T08:00,22.5,53,7.8,0,0,3.5,5.1 +2020-01-19T09:00,27.3,42,7.3,0,0,2,6.7 +2020-01-19T10:00,33.9,33,7.7,0,0,4.3,10.5 +2020-01-19T11:00,39.9,26,8.1,0,0,6,13.6 +2020-01-19T12:00,43.7,23,8.7,0,0,5.6,13.6 +2020-01-19T13:00,44.8,23,9.1,0,0,4.7,13.4 +2020-01-19T14:00,44.9,23,9.6,0,0,4.3,11.9 +2020-01-19T15:00,44,25,10.4,0,0,5.9,11.2 +2020-01-19T16:00,39.9,31,11.4,0,0,5.1,11.6 +2020-01-19T17:00,31.3,50,14.6,0,0,6.5,8.3 +2020-01-19T18:00,27.8,58,15.1,0,0,5.5,8.7 +2020-01-19T19:00,27.1,61,15.5,0,0,3.8,7.6 +2020-01-19T20:00,25.6,63,14.8,0,0,4.2,5.6 +2020-01-19T21:00,23.6,70,15.4,0,0,4,6 +2020-01-19T22:00,24.2,66,14.5,0,0,5.2,8.7 +2020-01-19T23:00,22.9,64,12.7,0,0,4.5,8.7 +2020-01-20T00:00,21.9,63,11.4,0,0,5.6,6.9 +2020-01-20T01:00,22,59,9.9,0,0,4.6,7.2 +2020-01-20T02:00,21,57,8,0,0,4.6,6.5 +2020-01-20T03:00,20.8,52,6.1,0,0,4.6,6.5 +2020-01-20T04:00,20.6,49,4.6,0,0,4.7,6.5 +2020-01-20T05:00,20.8,43,1.7,0,0,3.7,6.5 +2020-01-20T06:00,21.7,38,0.1,0,0,3,4.5 +2020-01-20T07:00,23.1,34,-1,0,0,1.6,3.6 +2020-01-20T08:00,22.2,35,-1.1,0,0,1.4,1.8 +2020-01-20T09:00,27,28,-1.7,0,0,1.5,6 +2020-01-20T10:00,32.8,21,-2.6,0,0,2.8,8.9 +2020-01-20T11:00,39,16,-3.7,0,0,2.6,9.6 +2020-01-20T12:00,44.5,11,-6.2,0,0,2.7,9.6 +2020-01-20T13:00,48.2,10,-6.7,0,0,2.8,9.8 +2020-01-20T14:00,49.5,10,-4,0,0,3.2,9.4 +2020-01-20T15:00,48.7,12,-1.6,0,0,4.9,9.2 +2020-01-20T16:00,42.4,17,0.3,0,0,4.7,9.4 +2020-01-20T17:00,32.5,31,5.1,0,0,7.6,9.2 +2020-01-20T18:00,31.3,34,5.8,0,0,5.9,9.2 +2020-01-20T19:00,33.6,29,4.4,0,0,5.2,7.6 +2020-01-20T20:00,32.1,32,5.5,0,0,5,6 +2020-01-20T21:00,27.1,46,9.1,0,0,6.6,8.1 +2020-01-20T22:00,32,39,10,0,0,2.9,7.8 +2020-01-20T23:00,31.3,43,11.6,0,0,1.4,3.6 +2020-01-21T00:00,31.1,45,12,0,0,0.5,2.2 +2020-01-21T01:00,31.2,43,11.4,0,0,1.6,2.2 +2020-01-21T02:00,31,41,10,0,0,3.4,3.4 +2020-01-21T03:00,30.1,41,9.2,0,0,4.1,6.9 +2020-01-21T04:00,28,43,8.6,0,0,2.4,6.7 +2020-01-21T05:00,30.5,54,15.6,0,0,2.9,4 +2020-01-21T06:00,31.7,51,15.8,0,0,4.5,5.8 +2020-01-21T07:00,33.4,58,20.2,0,0,4.2,7.4 +2020-01-21T08:00,33.5,63,22.1,0,0,3.5,6.3 +2020-01-21T09:00,37.1,58,23.7,0,0,3.6,5.6 +2020-01-21T10:00,41,53,25.2,0,0,0.2,6 +2020-01-21T11:00,44.2,46,24.7,0,0,4.5,8.9 +2020-01-21T12:00,45.6,42,23.7,0,0,5.7,13 +2020-01-21T13:00,43.7,45,23.9,0,0,2.6,12.5 +2020-01-21T14:00,45.4,44,24.8,0,0,3.4,6.7 +2020-01-21T15:00,44.9,49,26.7,0,0,3.4,7.8 +2020-01-21T16:00,42.7,55,27.6,0,0,3.3,6.3 +2020-01-21T17:00,41.1,53,25.2,0,0,3.5,6.5 +2020-01-21T18:00,35.6,65,25.2,0,0,5.6,6.5 +2020-01-21T19:00,31.3,65,21,0,0,6.1,8.1 +2020-01-21T20:00,35.4,55,20.8,0,0,2.4,7.2 +2020-01-21T21:00,33.1,67,23.4,0,0,4.3,6.5 +2020-01-21T22:00,33.7,72,25.7,0,0,5.2,6.9 +2020-01-21T23:00,33.6,73,25.8,0,0,3.6,6.3 +2020-01-22T00:00,34.6,68,25,0,0,3.4,5.8 +2020-01-22T01:00,35.2,66,24.8,0,0,1.5,4.5 +2020-01-22T02:00,28,83,23.5,0,0,5.4,6 +2020-01-22T03:00,26.9,84,22.6,0,0,6,7.8 +2020-01-22T04:00,28,81,22.7,0,0,5.8,8.1 +2020-01-22T05:00,35.8,55,21,0,0,7.6,7.6 +2020-01-22T06:00,36.2,54,21.2,0,0,6.7,12.8 +2020-01-22T07:00,36.1,57,22.1,0,0,5.6,11.4 +2020-01-22T08:00,34,63,22.6,0,0,4.8,9.2 +2020-01-22T09:00,39.4,53,23.5,0,0,6.8,11.2 +2020-01-22T10:00,46.3,40,23.5,0,0,8.8,15 +2020-01-22T11:00,47,36,21.2,0,0,11,19.5 +2020-01-22T12:00,47.8,32,19,0,0,12.9,23.5 +2020-01-22T13:00,49.6,29,18.2,0,0,10.6,23.5 +2020-01-22T14:00,49.6,30,19.3,0,0,10.1,20.1 +2020-01-22T15:00,48.6,30,18.7,0,0,10,19 +2020-01-22T16:00,45.7,36,20.1,0,0,7.2,17.9 +2020-01-22T17:00,40.6,37,16.5,0,0,6,16.3 +2020-01-22T18:00,43.3,40,20.4,0,0,16.9,26.8 +2020-01-22T19:00,39.3,42,18,0,0,9,28.2 +2020-01-22T20:00,37.4,45,17.9,0,0,5,14.8 +2020-01-22T21:00,33.1,54,18.4,0,0,4.1,6.5 +2020-01-22T22:00,33,55,18.7,0,0,7.1,11.2 +2020-01-22T23:00,32.9,55,18.3,0,0,6.5,12.3 +2020-01-23T00:00,32.4,54,17.6,0,0,6.7,10.7 +2020-01-23T01:00,32.6,46,14.3,0,0,8.6,13.9 +2020-01-23T02:00,31.6,47,13.5,0,0,7.8,14.1 +2020-01-23T03:00,31.6,45,12.7,0,0,8.7,14.1 +2020-01-23T04:00,31.4,40,10,0,0,9.5,16.3 +2020-01-23T05:00,31.5,49,14.5,0,0,1,17 +2020-01-23T06:00,25.8,64,15.2,0,0,6.6,6.9 +2020-01-23T07:00,25.9,59,13.5,0,0,5.8,8.1 +2020-01-23T08:00,28.7,50,12.4,0,0,3.1,7.4 +2020-01-23T09:00,31.8,43,11.8,0,0,3.1,6.7 +2020-01-23T10:00,33.8,41,12.4,0,0,5.5,11.9 +2020-01-23T11:00,35.6,40,13.6,0,0,7.4,15 +2020-01-23T12:00,38.4,38,14.9,0,0,9,17.9 +2020-01-23T13:00,40.3,37,16,0,0,7.1,17.9 +2020-01-23T14:00,42.4,36,17.2,0,0,4.2,15 +2020-01-23T15:00,43.3,37,18.5,0,0,5.8,11.6 +2020-01-23T16:00,41.4,42,19.9,0,0,6.5,12.1 +2020-01-23T17:00,36.1,42,15,0,0,5.5,10.7 +2020-01-23T18:00,35.3,43,14.9,0,0,5.5,10.3 +2020-01-23T19:00,34.7,45,15.6,0,0,3.9,9.2 +2020-01-23T20:00,34,49,17,0,0,3.8,6.3 +2020-01-23T21:00,32.2,56,18.2,0,0,4.1,6.5 +2020-01-23T22:00,29.5,66,19.4,0,0,4.5,7.2 +2020-01-23T23:00,28.5,71,20.3,0,0,3.6,7.2 +2020-01-24T00:00,30.4,67,20.7,0,0,3.3,6.3 +2020-01-24T01:00,30.5,67,20.9,0,0,3.7,5.6 +2020-01-24T02:00,30.7,67,21,0,0,3.9,4.7 +2020-01-24T03:00,30.2,67,20.4,0,0,3.4,5.4 +2020-01-24T04:00,30.4,63,19.4,0,0,3.7,6 +2020-01-24T05:00,29.7,62,18.1,0,0,3.8,5.8 +2020-01-24T06:00,30.8,58,17.9,0,0,2.1,4.7 +2020-01-24T07:00,29,59,16.5,0,0,3.7,5.4 +2020-01-24T08:00,31.1,54,16.3,0,0,7,10.1 +2020-01-24T09:00,37.3,43,16.9,0,0,7.4,13.2 +2020-01-24T10:00,45.1,32,17.2,0,0,4.9,13 +2020-01-24T11:00,49.3,32,20.8,0,0,3.3,11 +2020-01-24T12:00,51.4,31,21.6,0,0,1.2,8.9 +2020-01-24T13:00,52.4,30,22.2,0,0,0.6,6.9 +2020-01-24T14:00,52.8,31,22.9,0,0,2.4,7.6 +2020-01-24T15:00,52.1,32,23.4,0,0,3.5,8.1 +2020-01-24T16:00,48.7,42,26.8,0,0,4,8.1 +2020-01-24T17:00,41.1,50,23.7,0,0,7.1,10.3 +2020-01-24T18:00,40.2,51,23.7,0,0,5.8,8.5 +2020-01-24T19:00,43.9,42,22.4,0,0,3.5,7.2 +2020-01-24T20:00,38.6,55,24,0,0,4.6,4.9 +2020-01-24T21:00,41.1,50,23.8,0,0,2,5.8 +2020-01-24T22:00,40,52,23.9,0,0,1.3,2.7 +2020-01-24T23:00,35.5,65,25,0,0,0.9,2 +2020-01-25T00:00,32.5,74,25.1,0,0,2.5,3.8 +2020-01-25T01:00,30.8,80,25.3,0,0,2.7,4.9 +2020-01-25T02:00,29.6,85,25.7,0,0,3.8,6.7 +2020-01-25T03:00,31.6,78,25.4,0,0,5.4,8.9 +2020-01-25T04:00,30,80,24.7,0,0,5.1,9.2 +2020-01-25T05:00,35.2,61,23.1,0,0,1,8.5 +2020-01-25T06:00,32.3,72,24.3,0,0,3.4,4 +2020-01-25T07:00,32.2,71,23.9,0,0,3.5,4.9 +2020-01-25T08:00,35.2,67,25.2,0,0,1.8,4.7 +2020-01-25T09:00,41,51,24.3,0,0,4.5,7.8 +2020-01-25T10:00,44.8,40,21.7,0,0,3.8,8.5 +2020-01-25T11:00,47.4,34,20.3,0,0,4.5,11 +2020-01-25T12:00,48.9,31,19.4,0,0,4.1,11 +2020-01-25T13:00,50.4,29,19.5,0,0,5.2,12.5 +2020-01-25T14:00,51.5,26,18.1,0,0,8.2,16.1 +2020-01-25T15:00,50.9,28,19.1,0,0,9.2,17.7 +2020-01-25T16:00,48.9,32,20.7,0,0,4.5,17.2 +2020-01-25T17:00,44.2,38,20.5,0,0,8.6,7.6 +2020-01-25T18:00,41.1,43,20.4,0,0,10.3,17 +2020-01-25T19:00,36,55,21.2,0,0,5.8,17.2 +2020-01-25T20:00,31.8,67,22.1,0,0,3.7,9.4 +2020-01-25T21:00,31.2,71,22.9,0,0,2.4,7.2 +2020-01-25T22:00,31.8,73,24.1,0,0,2.4,4.9 +2020-01-25T23:00,30.7,73,23,0,0,2.2,3.1 +2020-01-26T00:00,33.5,63,22.2,0,0,4.3,3.8 +2020-01-26T01:00,31.2,69,22.1,0,0,4.6,6.7 +2020-01-26T02:00,29,74,21.7,0,0,3.5,6 +2020-01-26T03:00,28.7,75,21.8,0,0,3.6,4.3 +2020-01-26T04:00,26.3,79,20.7,0,0,5.4,6 +2020-01-26T05:00,29.3,67,19.6,0,0,5.7,6.3 +2020-01-26T06:00,28.1,67,18.5,0,0,5.6,6.7 +2020-01-26T07:00,27.5,65,17.4,0,0,4.1,7.4 +2020-01-26T08:00,28.9,63,17.9,0,0,4.1,6.3 +2020-01-26T09:00,33.7,53,18.3,0,0,2.8,7.6 +2020-01-26T10:00,38.9,44,19,0,0,3.4,9.4 +2020-01-26T11:00,44.8,36,19.3,0,0,3.8,10.7 +2020-01-26T12:00,49,30,19,0,0,4.4,12.1 +2020-01-26T13:00,51.5,25,17.1,0,0,3.3,11.9 +2020-01-26T14:00,52.8,23,16.4,0,0,2.3,10.5 +2020-01-26T15:00,53.1,23,16.7,0,0,3.2,8.5 +2020-01-26T16:00,51,29,19.9,0,0,6.3,10.5 +2020-01-26T17:00,44.2,43,23.2,0,0,4.6,10.3 +2020-01-26T18:00,41,47,22.5,0,0,5.6,6.9 +2020-01-26T19:00,40.9,46,21.8,0,0,3.8,6.9 +2020-01-26T20:00,33.4,63,22.3,0,0,3.4,4.9 +2020-01-26T21:00,31.6,68,22.3,0,0,2.5,4.9 +2020-01-26T22:00,29.6,74,22.5,0,0,3,5.1 +2020-01-26T23:00,27.6,80,22.4,0,0,4,5.6 +2020-01-27T00:00,27.4,79,21.8,0,0,4,5.6 +2020-01-27T01:00,28,73,20.7,0,0,4.5,6 +2020-01-27T02:00,30.9,64,20.3,0,0,2.3,5.8 +2020-01-27T03:00,31.1,64,20.3,0,0,0.9,2.5 +2020-01-27T04:00,31.2,64,20.3,0,0,3,2.9 +2020-01-27T05:00,31,66,20.8,0,0,1.5,6.7 +2020-01-27T06:00,29.9,72,21.9,0,0,2.1,2.9 +2020-01-27T07:00,30.7,70,21.9,0,0,2.1,2.5 +2020-01-27T08:00,32.2,65,21.7,0,0,2.8,4 +2020-01-27T09:00,32.5,67,22.7,0,0.028,4.1,8.7 +2020-01-27T10:00,33.7,67,23.9,0.004,0.138,2.7,8.9 +2020-01-27T11:00,36.2,62,24.4,0,0,4.4,10.7 +2020-01-27T12:00,36.2,63,25,0,0.028,5.4,11.9 +2020-01-27T13:00,36.1,68,26.6,0,0.11,5.7,12.5 +2020-01-27T14:00,33.7,80,28.3,0,0.276,2,12.1 +2020-01-27T15:00,32.9,86,29,0,0.165,1.2,6.3 +2020-01-27T16:00,33.7,85,29.8,0,0.028,0.5,6.5 +2020-01-27T17:00,33.5,98,33,0.004,0,6.2,4.5 +2020-01-27T18:00,33.1,99,32.9,0.004,0,4.7,11.4 +2020-01-27T19:00,32.9,100,32.8,0.004,0,5.1,8.1 +2020-01-27T20:00,33.4,99,33,0.004,0,3.8,8.3 +2020-01-27T21:00,33.1,94,31.6,0,0,2.8,6 +2020-01-27T22:00,34.4,66,24.2,0,0,6.3,9.6 +2020-01-27T23:00,32.6,63,21.3,0,0,5.2,9.8 +2020-01-28T00:00,32.5,58,19.1,0,0,5.1,7.2 +2020-01-28T01:00,29.2,64,18.4,0,0,6.2,7.6 +2020-01-28T02:00,31.4,56,17.5,0,0,4.4,7.8 +2020-01-28T03:00,29.7,62,18.3,0,0,5.2,6.5 +2020-01-28T04:00,32.8,52,17,0,0,3.4,6.5 +2020-01-28T05:00,27.5,71,19.3,0,0,3.4,4.3 +2020-01-28T06:00,31.3,58,18.1,0,0,1.5,4.5 +2020-01-28T07:00,26.6,65,16.3,0,0,4.2,5.1 +2020-01-28T08:00,28.7,55,14.5,0,0,3.3,6.5 +2020-01-28T09:00,33.9,46,15.2,0,0,1.4,7.2 +2020-01-28T10:00,37.2,38,14.1,0,0,0.5,5.8 +2020-01-28T11:00,40,32,12.2,0,0,1,7.2 +2020-01-28T12:00,42.5,26,9.9,0,0,1.7,8.5 +2020-01-28T13:00,44.3,24,9.4,0,0,1.8,8.9 +2020-01-28T14:00,45.6,23,9.5,0,0,1.7,8.5 +2020-01-28T15:00,46,23,9.9,0,0,2.1,8.1 +2020-01-28T16:00,45.2,26,12.4,0,0,2.9,7.4 +2020-01-28T17:00,34.7,49,17.3,0,0,8.5,6.7 +2020-01-28T18:00,32,48,14.4,0,0,7.4,10.1 +2020-01-28T19:00,32.7,43,12.7,0,0,4.1,9.8 +2020-01-28T20:00,27.7,55,13.6,0,0,4.4,7.2 +2020-01-28T21:00,24.4,65,14.3,0,0,6,7.2 +2020-01-28T22:00,25.3,61,13.7,0,0,4.3,7.2 +2020-01-28T23:00,26.9,57,13.6,0,0,4.3,6.9 +2020-01-29T00:00,25.4,60,13.4,0,0,4.1,6.9 +2020-01-29T01:00,25.6,59,13.4,0,0,3.1,6.7 +2020-01-29T02:00,25.3,63,14.4,0,0,2.9,4.7 +2020-01-29T03:00,27,60,15,0,0,3.3,5.6 +2020-01-29T04:00,28.3,63,17.2,0,0,3,6.3 +2020-01-29T05:00,31.4,50,14.9,0,0,1.6,3.8 +2020-01-29T06:00,29.6,60,17.4,0,0,4.1,4.7 +2020-01-29T07:00,29,61,17.3,0,0,3.6,5.6 +2020-01-29T08:00,30.3,57,16.9,0,0,4.6,6.5 +2020-01-29T09:00,32.3,54,17.3,0,0.028,4.4,8.7 +2020-01-29T10:00,35.5,52,19.6,0,0,4.3,10.1 +2020-01-29T11:00,37.9,47,19.7,0,0,3.8,10.5 +2020-01-29T12:00,40.2,45,20.3,0,0,3.3,10.7 +2020-01-29T13:00,41.7,43,20.8,0,0,3.1,10.3 +2020-01-29T14:00,42.5,43,21.4,0,0,2.8,10.3 +2020-01-29T15:00,42.6,43,21.8,0,0,3,9.4 +2020-01-29T16:00,42,45,22,0,0,4.2,8.7 +2020-01-29T17:00,35,69,25.8,0,0,5.4,8.1 +2020-01-29T18:00,32.7,79,26.9,0,0,4.9,7.6 +2020-01-29T19:00,31.7,91,29.4,0,0.083,5.3,9.4 +2020-01-29T20:00,32.1,90,29.5,0,0.11,2.9,9.4 +2020-01-29T21:00,31.6,90,29,0,0.055,2.6,4.5 +2020-01-29T22:00,30,93,28.2,0,0.083,4.3,6.7 +2020-01-29T23:00,27.1,90,24.5,0,0.055,2.7,6.9 +2020-01-30T00:00,27.7,77,21.4,0,0,4.2,6.7 +2020-01-30T01:00,25.4,67,16.2,0,0,4.1,6.9 +2020-01-30T02:00,23.9,70,15.4,0,0,5.3,8.3 +2020-01-30T03:00,23.4,70,14.9,0,0,5.7,8.7 +2020-01-30T04:00,22.7,61,11.1,0,0,5.4,9.8 +2020-01-30T05:00,22.9,56,9.4,0,0,3.7,8.5 +2020-01-30T06:00,25,50,9.1,0,0,5.2,9.6 +2020-01-30T07:00,25.7,49,9,0,0,5.1,8.9 +2020-01-30T08:00,28.7,41,7.8,0,0,4.7,8.5 +2020-01-30T09:00,33.5,33,7.8,0,0,1.6,7.6 +2020-01-30T10:00,38.7,29,9.1,0,0,3.4,9.2 +2020-01-30T11:00,40.7,29,10.6,0,0,7,14.5 +2020-01-30T12:00,41.6,31,12.8,0,0,6.8,15.2 +2020-01-30T13:00,41.5,34,15.1,0,0,9,17.4 +2020-01-30T14:00,38.9,43,18.5,0,0.028,6.2,17.7 +2020-01-30T15:00,37.8,48,20,0,0,8.4,13.6 +2020-01-30T16:00,36.4,55,21.6,0,0,9.8,16.6 +2020-01-30T17:00,33,64,22.1,0,0.055,5.4,16.1 +2020-01-30T18:00,31.2,84,27,0,0.193,5.8,12.5 +2020-01-30T19:00,30.2,84,26,0,0.165,4,10.7 +2020-01-30T20:00,26.5,94,25.1,0,0.138,3.4,11.6 +2020-01-30T21:00,27.1,92,25.1,0,0.083,1.8,10.5 +2020-01-30T22:00,25.9,91,23.5,0,0,4.1,6.5 +2020-01-30T23:00,23.5,88,20.5,0,0,2.9,6.9 +2020-01-31T00:00,23.3,76,16.8,0,0,4.3,6.9 +2020-01-31T01:00,23,60,11.2,0,0,4.3,6.9 +2020-01-31T02:00,22.9,50,7.1,0,0,5.3,7.6 +2020-01-31T03:00,27.4,41,6.5,0,0,9.6,14.5 +2020-01-31T04:00,28.9,38,6.6,0,0,13.2,20.8 +2020-01-31T05:00,28.4,39,6.4,0,0,10.8,23.7 +2020-01-31T06:00,29.4,34,4.6,0,0,9.4,18.3 +2020-01-31T07:00,27.1,34,2.8,0,0,7.5,14.8 +2020-01-31T08:00,32.3,28,2.8,0,0,5.4,10.3 +2020-01-31T09:00,38.8,23,3.7,0,0,7.2,12.3 +2020-01-31T10:00,43.1,19,4.1,0,0,6.6,12.8 +2020-01-31T11:00,46.6,17,3.7,0,0,9.2,17 +2020-01-31T12:00,48.9,15,3.7,0,0,12.9,22.6 +2020-01-31T13:00,49.7,15,4,0,0,12.9,23.9 +2020-01-31T14:00,50,17,7.1,0,0,12.3,23 +2020-01-31T15:00,48.9,21,10.8,0,0,10.3,21.3 +2020-01-31T16:00,45.1,25,11.2,0,0,9.5,17 +2020-01-31T17:00,39.6,32,12.1,0,0,13.3,15.2 +2020-01-31T18:00,38,35,13,0,0,14.2,23.3 +2020-01-31T19:00,37.2,37,13.6,0,0,13,22.8 +2020-01-31T20:00,37.1,39,14.5,0,0,13.1,20.8 +2020-01-31T21:00,37,39,14.3,0,0,13.4,22.1 +2020-01-31T22:00,37.5,40,15.4,0,0,13.5,21.9 +2020-01-31T23:00,38.1,41,16.6,0,0,11.6,22.1 +2020-02-01T00:00,36.3,47,17.8,0,0,7.7,19 +2020-02-01T01:00,33.2,55,18.6,0,0,8.8,12.1 +2020-02-01T02:00,35,51,18.7,0,0,8.8,10.7 +2020-02-01T03:00,33.6,56,19.5,0,0,9.3,11.4 +2020-02-01T04:00,34.1,56,20,0,0,8.6,11.4 +2020-02-01T05:00,35.1,56,21.1,0,0,9,11.2 +2020-02-01T06:00,36.9,56,22.7,0,0,5.4,10.7 +2020-02-01T07:00,33.5,64,22.7,0,0,4.4,11.4 +2020-02-01T08:00,37.9,63,26.3,0,0,4.2,6.9 +2020-02-01T09:00,46.7,41,24.4,0,0,5.6,7.4 +2020-02-01T10:00,54.1,31,24.2,0,0,10.4,15 +2020-02-01T11:00,57.9,25,22.3,0,0,15.4,24.2 +2020-02-01T12:00,60.8,20,19.3,0,0,19.1,31.5 +2020-02-01T13:00,61.4,18,17.8,0,0,21.3,35.1 +2020-02-01T14:00,61.3,19,18.1,0,0,21.9,36 +2020-02-01T15:00,60.6,18,16.3,0,0,22.5,37.6 +2020-02-01T16:00,58.1,17,13.7,0,0,22.6,38 +2020-02-01T17:00,49.3,28,17.6,0,0,7,37.1 +2020-02-01T18:00,44.2,31,15.7,0,0,5.4,8.3 +2020-02-01T19:00,40.4,39,17.6,0,0,5.3,8.5 +2020-02-01T20:00,38.3,49,20.6,0,0,7.8,11.2 +2020-02-01T21:00,39.8,43,19.3,0,0,7.1,14.3 +2020-02-01T22:00,38.8,44,18.7,0,0,8.4,13.2 +2020-02-01T23:00,37.5,43,17.2,0,0,6.8,13.4 +2020-02-02T00:00,34.5,46,15.7,0,0,6,11 +2020-02-02T01:00,34.4,40,12.7,0,0,7.6,9.8 +2020-02-02T02:00,35.2,36,10.9,0,0,7.5,10.3 +2020-02-02T03:00,34.3,37,10.8,0,0,7.3,10.3 +2020-02-02T04:00,33.8,38,10.8,0,0,8.1,10.7 +2020-02-02T05:00,32.5,42,12.1,0,0,10.3,10.7 +2020-02-02T06:00,37.3,32,10,0,0,8,13.2 +2020-02-02T07:00,36.1,34,10.6,0,0,8.3,11.2 +2020-02-02T08:00,42.3,30,13.3,0,0,7.7,11.6 +2020-02-02T09:00,50,27,17.2,0,0,10.8,16.1 +2020-02-02T10:00,57.4,22,19.3,0,0,12,19.9 +2020-02-02T11:00,61.6,19,19.2,0,0,12.4,21.9 +2020-02-02T12:00,63.5,18,19.2,0,0,15,25.7 +2020-02-02T13:00,64.2,17,18.6,0,0,17.3,29.8 +2020-02-02T14:00,65,16,18.3,0,0,17.8,30.6 +2020-02-02T15:00,64.4,19,21.1,0,0,16.5,30.4 +2020-02-02T16:00,62,21,21.3,0,0,14,27.7 +2020-02-02T17:00,57.6,22,18.9,0,0,10.8,23 +2020-02-02T18:00,51.4,24,15.9,0,0,8.7,17.9 +2020-02-02T19:00,46.6,27,14.2,0,0,7.7,14.1 +2020-02-02T20:00,41.3,34,15,0,0,6.2,12.3 +2020-02-02T21:00,39.9,37,15.5,0,0,7,11.4 +2020-02-02T22:00,37.9,43,17.6,0,0,7.3,12.8 +2020-02-02T23:00,34.1,66,23.7,0,0,12.8,36 +2020-02-03T00:00,33.1,70,24.3,0,0,11.9,22.4 +2020-02-03T01:00,31.8,74,24.5,0,0,10.6,21.7 +2020-02-03T02:00,32.1,73,24.5,0,0,9.8,18.6 +2020-02-03T03:00,31.6,75,24.7,0,0,7.9,16.8 +2020-02-03T04:00,30.7,80,25.1,0,0,7.6,13.6 +2020-02-03T05:00,28.5,80,23,0,0.028,7.6,15 +2020-02-03T06:00,27.7,82,22.9,0,0.055,6.7,13.2 +2020-02-03T07:00,26.1,84,21.8,0,0.055,7.9,14.1 +2020-02-03T08:00,24.7,81,19.6,0,0.055,6.9,14.1 +2020-02-03T09:00,24.6,77,18.6,0,0.028,5.6,13.2 +2020-02-03T10:00,24.4,76,18,0,0.028,6.6,13 +2020-02-03T11:00,24.4,73,16.9,0,0.055,8.1,15.4 +2020-02-03T12:00,24.3,70,15.9,0,0.028,10,18.6 +2020-02-03T13:00,24.1,66,14.4,0,0.028,11,20.4 +2020-02-03T14:00,24.2,62,13.1,0,0.028,10.7,20.8 +2020-02-03T15:00,23.9,61,12.3,0,0.028,9.1,19.9 +2020-02-03T16:00,23.4,61,12,0,0.028,7.8,17.2 +2020-02-03T17:00,18.8,74,11.8,0,0.055,6.5,15 +2020-02-03T18:00,19,76,12.6,0,0.083,5.6,12.1 +2020-02-03T19:00,19.1,73,11.8,0,0.165,7.6,13.6 +2020-02-03T20:00,18.7,73,11.4,0,0.138,8.2,14.5 +2020-02-03T21:00,18,74,11,0,0.11,8.5,15.7 +2020-02-03T22:00,17.5,71,9.8,0,0.11,7.9,15.7 +2020-02-03T23:00,17.1,72,9.5,0,0.083,7.8,14.1 +2020-02-04T00:00,16.8,71,9.1,0,0.055,7.8,14.3 +2020-02-04T01:00,16.5,71,8.7,0,0.028,7.3,14.1 +2020-02-04T02:00,16.3,71,8.7,0,0.028,7.6,13.4 +2020-02-04T03:00,16.2,73,9,0,0.028,7.3,13.4 +2020-02-04T04:00,16.2,73,9.1,0,0.028,7.1,13.2 +2020-02-04T05:00,15.5,76,9.4,0,0.028,8.5,13 +2020-02-04T06:00,14.4,75,7.9,0,0.055,6,14.1 +2020-02-04T07:00,13.4,75,6.8,0,0.028,4.6,11 +2020-02-04T08:00,13.5,76,7.2,0,0.028,6.1,10.7 +2020-02-04T09:00,14.1,73,7,0,0.028,7.2,12.8 +2020-02-04T10:00,15.2,66,5.9,0,0.028,6.8,12.8 +2020-02-04T11:00,16,63,5.6,0,0,5.1,12.1 +2020-02-04T12:00,17,61,5.7,0,0,5.4,11 +2020-02-04T13:00,17.9,61,6.6,0,0,5.9,11.6 +2020-02-04T14:00,18.1,56,4.8,0,0,5.7,11.9 +2020-02-04T15:00,17.8,53,3.5,0,0,3.9,11 +2020-02-04T16:00,16.2,58,3.8,0,0,2.9,8.3 +2020-02-04T17:00,13.3,63,3.2,0,0,5.5,9.6 +2020-02-04T18:00,8.5,69,0.4,0,0,4.7,9.6 +2020-02-04T19:00,8.9,64,-0.7,0,0,5.6,10.3 +2020-02-04T20:00,10.6,61,-0.3,0,0,3.8,7.8 +2020-02-04T21:00,3.5,65,-5.6,0,0,4.5,6.7 +2020-02-04T22:00,-3.2,67,-11.6,0,0,7.3,10.3 +2020-02-04T23:00,-2.3,60,-12.8,0,0,6.3,10.5 +2020-02-05T00:00,3,47,-12.6,0,0,4.8,8.9 +2020-02-05T01:00,2.5,46,-13.5,0,0,3.7,6.9 +2020-02-05T02:00,-4,54,-16.5,0,0,5.3,7.6 +2020-02-05T03:00,-5.7,56,-17.5,0,0,5.9,8.7 +2020-02-05T04:00,-7.7,58,-18.4,0,0,6.4,8.9 +2020-02-05T05:00,-4.1,57,-15.4,0,0,5.5,12.3 +2020-02-05T06:00,-10.1,58,-20.9,0,0,8.9,13.6 +2020-02-05T07:00,2.4,40,-16.4,0,0,5.2,12.3 +2020-02-05T08:00,7.4,34,-15.2,0,0,0.5,7.2 +2020-02-05T09:00,9.1,35,-13.3,0,0,4.3,6.7 +2020-02-05T10:00,11.7,49,-3.9,0,0,4.4,7.6 +2020-02-05T11:00,18.8,50,3.1,0,0,2.6,7.2 +2020-02-05T12:00,23.5,39,2.3,0,0,1.4,5.1 +2020-02-05T13:00,25.3,40,4.1,0,0,2.1,4.7 +2020-02-05T14:00,25.3,40,4.5,0,0,3.3,7.4 +2020-02-05T15:00,24,44,5.4,0,0,3,7.6 +2020-02-05T16:00,22.3,38,0.2,0,0,3.9,7.4 +2020-02-05T17:00,24.2,29,-3.8,0,0,2.3,6.5 +2020-02-05T18:00,22.7,31,-3.3,0,0,3.5,3.8 +2020-02-05T19:00,12.7,52,-1.6,0,0,8.8,13.9 +2020-02-05T20:00,15.7,51,0.7,0,0,7.4,13 +2020-02-05T21:00,14.8,56,2.1,0,0,9.4,12.8 +2020-02-05T22:00,22.4,38,0.7,0,0,1.4,12.5 +2020-02-05T23:00,20.6,39,-0.4,0,0,2.2,4.3 +2020-02-06T00:00,19.3,39,-1.4,0,0,2.4,3.1 +2020-02-06T01:00,15.4,44,-2.6,0,0,3.7,4.9 +2020-02-06T02:00,18.6,39,-2.2,0,0,2.1,5.4 +2020-02-06T03:00,21.4,36,-1.3,0,0,0.2,2.7 +2020-02-06T04:00,11.4,54,-2.2,0,0,3.3,4.9 +2020-02-06T05:00,17,53,2.8,0,0,4.2,8.7 +2020-02-06T06:00,18.6,53,4.5,0,0,6.9,11.6 +2020-02-06T07:00,19.1,59,7,0,0,7.1,12.8 +2020-02-06T08:00,21.4,59,9.3,0,0,6,12.8 +2020-02-06T09:00,26.2,53,11.2,0,0,5.8,10.7 +2020-02-06T10:00,31,44,11.8,0,0,7.2,13.2 +2020-02-06T11:00,33.2,51,16.9,0,0,2.8,13 +2020-02-06T12:00,34.3,57,20.4,0,0,1.8,5.6 +2020-02-06T13:00,35.4,49,18.3,0,0,3.3,6.7 +2020-02-06T14:00,35.4,51,19.2,0,0,3.5,7.4 +2020-02-06T15:00,35.6,55,21.1,0,0,3.2,7.4 +2020-02-06T16:00,34.6,58,21.3,0,0,4.1,7.2 +2020-02-06T17:00,33.3,55,18.9,0,0,6.1,8.9 +2020-02-06T18:00,27.9,73,20.2,0,0.028,5.4,10.5 +2020-02-06T19:00,25.5,84,21.4,0,0.083,5.4,8.5 +2020-02-06T20:00,26.2,87,22.9,0,0.193,3.7,6.3 +2020-02-06T21:00,27.4,89,24.6,0.004,0.358,3.6,5.8 +2020-02-06T22:00,27.5,90,25,0,0.303,4.8,8.1 +2020-02-06T23:00,27.1,90,24.6,0,0.248,4.8,8.1 +2020-02-07T00:00,26.3,90,23.9,0,0.248,5.1,8.3 +2020-02-07T01:00,26,89,23.2,0,0.193,6.1,9.6 +2020-02-07T02:00,25.8,88,22.6,0,0.165,6.9,11.2 +2020-02-07T03:00,25.2,88,22.2,0,0.11,9.1,14.5 +2020-02-07T04:00,24.5,87,21.3,0,0.083,8.9,14.8 +2020-02-07T05:00,22.4,80,17.2,0,0.083,8.1,14.3 +2020-02-07T06:00,22.1,81,17.1,0,0.055,9.9,15.9 +2020-02-07T07:00,21.4,80,16.3,0,0.055,8,16.3 +2020-02-07T08:00,21.6,80,16.4,0,0.11,7.2,13 +2020-02-07T09:00,23.1,79,17.6,0,0.138,6.3,11.9 +2020-02-07T10:00,23.8,80,18.5,0,0.22,4.6,10.3 +2020-02-07T11:00,25.2,78,19.2,0,0.165,6.3,11.6 +2020-02-07T12:00,26.1,76,19.4,0,0.055,6.9,13.9 +2020-02-07T13:00,27.4,76,20.9,0,0.11,4,11.6 +2020-02-07T14:00,28.9,76,22.1,0,0.028,4.8,7.8 +2020-02-07T15:00,28.4,78,22.5,0,0,3.6,8.1 +2020-02-07T16:00,28.1,80,22.8,0,0.028,2.9,6.3 +2020-02-07T17:00,26.2,92,24.1,0,0.083,2.4,5.4 +2020-02-07T18:00,26,92,24,0,0.055,2.2,3.8 +2020-02-07T19:00,25.9,92,24,0,0.11,2.7,2.7 +2020-02-07T20:00,22.8,91,20.7,0,0.055,4.7,5.1 +2020-02-07T21:00,22.3,86,18.9,0,0.028,4.2,6.7 +2020-02-07T22:00,20.7,86,17.1,0,0,5.1,6.7 +2020-02-07T23:00,23.5,82,18.9,0,0,4.9,8.5 +2020-02-08T00:00,20.8,85,16.9,0,0,5.1,8.3 +2020-02-08T01:00,20.2,83,15.9,0,0,5.2,6.9 +2020-02-08T02:00,17.8,83,13.6,0,0,6.3,8.5 +2020-02-08T03:00,13.2,86,9.7,0,0,6.8,7.8 +2020-02-08T04:00,11.3,82,6.9,0,0,8.5,10.1 +2020-02-08T05:00,16.8,77,10.8,0,0,3.3,10.1 +2020-02-08T06:00,17.3,73,10.1,0,0,1.7,4.3 +2020-02-08T07:00,18.1,70,10,0,0,2.6,2.5 +2020-02-08T08:00,14.5,80,9.5,0,0,4.3,5.8 +2020-02-08T09:00,17.7,85,14,0,0,1.3,5.6 +2020-02-08T10:00,21,80,15.8,0,0,1.8,3.6 +2020-02-08T11:00,27.1,76,20.4,0,0,0.5,4.3 +2020-02-08T12:00,32.5,73,24.8,0,0,2.1,3.4 +2020-02-08T13:00,34.5,73,26.6,0,0,3.6,6.3 +2020-02-08T14:00,32.7,79,27,0,0,5.4,8.7 +2020-02-08T15:00,31.6,77,25.3,0,0,5,9.8 +2020-02-08T16:00,33.6,63,22.6,0,0,4,7.8 +2020-02-08T17:00,28.7,81,23.5,0,0,5.5,4.9 +2020-02-08T18:00,28.9,71,20.7,0,0,5.4,6.5 +2020-02-08T19:00,26.8,74,19.8,0,0,6.9,9.4 +2020-02-08T20:00,20,88,17,0,0,4.7,8.3 +2020-02-08T21:00,19.9,83,15.5,0,0,7.3,11.2 +2020-02-08T22:00,28.3,69,19.6,0,0.028,1.6,11.2 +2020-02-08T23:00,24.1,79,18.4,0,0,7.4,11 +2020-02-09T00:00,25,84,20.8,0,0,6.7,14.1 +2020-02-09T01:00,25.2,86,21.5,0,0.055,4.2,10.5 +2020-02-09T02:00,24.8,85,21,0.004,0.055,6.1,9.2 +2020-02-09T03:00,25.2,86,21.5,0,0.138,6.7,11.4 +2020-02-09T04:00,24.7,90,22.2,0,0.165,3.8,10.5 +2020-02-09T05:00,25.3,86,21.7,0,0.11,1.3,4.9 +2020-02-09T06:00,24.7,88,21.7,0,0.055,3.5,3.8 +2020-02-09T07:00,25.2,91,22.8,0,0.248,3.1,4.9 +2020-02-09T08:00,25.5,92,23.6,0,0.276,5.2,7.8 +2020-02-09T09:00,25.4,89,22.7,0,0.11,7.2,12.1 +2020-02-09T10:00,25.3,87,21.9,0,0.055,7.7,12.8 +2020-02-09T11:00,24.6,83,20.2,0,0.028,9.3,15.4 +2020-02-09T12:00,24,83,19.6,0,0.028,8.6,16.1 +2020-02-09T13:00,24.2,84,20,0,0.028,7,15 +2020-02-09T14:00,24.2,85,20.4,0,0.028,6.1,12.5 +2020-02-09T15:00,23.3,88,20.1,0,0,5.7,10.7 +2020-02-09T16:00,21.2,89,18.6,0,0,4,9.6 +2020-02-09T17:00,22.6,88,19.5,0,0,3.8,6.5 +2020-02-09T18:00,21.9,84,18,0,0,4.9,8.3 +2020-02-09T19:00,19.9,83,15.6,0,0,5.4,7.6 +2020-02-09T20:00,17.3,82,12.8,0,0,6.8,8.3 +2020-02-09T21:00,12.6,85,8.9,0,0,7.5,8.9 +2020-02-09T22:00,9.3,88,6.5,0,0,7.2,8.9 +2020-02-09T23:00,4.8,87,1.8,0,0,8.1,9.6 +2020-02-10T00:00,9.4,78,3.8,0,0,3.4,9.6 +2020-02-10T01:00,9.3,74,2.6,0,0,2.7,4.3 +2020-02-10T02:00,11,69,2.8,0,0,1.5,3.4 +2020-02-10T03:00,10.8,71,3.3,0,0,0.5,2.2 +2020-02-10T04:00,9.6,80,4.6,0,0,1.6,2.2 +2020-02-10T05:00,5.5,92,3.7,0,0,1.9,5.6 +2020-02-10T06:00,4.8,93,3.3,0,0,4,5.4 +2020-02-10T07:00,10.1,93,8.4,0,0,3.8,6.9 +2020-02-10T08:00,9.4,87,6.3,0,0,2.9,4.5 +2020-02-10T09:00,10.2,88,7.4,0,0,5.1,8.9 +2020-02-10T10:00,14,85,10.3,0,0,2.9,8.5 +2020-02-10T11:00,16.9,84,12.9,0,0,1.8,5.8 +2020-02-10T12:00,19.8,84,15.7,0,0,3.4,7.4 +2020-02-10T13:00,22.7,83,18.3,0,0,5.4,9.4 +2020-02-10T14:00,24.4,83,20,0,0,5.9,10.1 +2020-02-10T15:00,24.4,82,19.8,0,0,3.5,9.6 +2020-02-10T16:00,22.6,87,19.3,0,0.028,5.6,8.5 +2020-02-10T17:00,23.3,85,19.4,0,0.028,4.2,10.5 +2020-02-10T18:00,22,87,18.9,0,0.083,3.3,6.9 +2020-02-10T19:00,21.7,87,18.4,0,0.11,5.8,8.5 +2020-02-10T20:00,21.3,88,18.4,0,0.193,8.1,12.5 +2020-02-10T21:00,21.2,90,18.7,0,0.193,9.6,15 +2020-02-10T22:00,21.1,91,19,0,0.138,9.8,17 +2020-02-10T23:00,20.5,90,18.1,0,0.055,6.3,15.7 +2020-02-11T00:00,20,88,17,0,0.055,5.6,10.1 +2020-02-11T01:00,19.6,87,16.3,0,0.028,4.3,8.9 +2020-02-11T02:00,17.5,87,14.4,0,0,4.4,6.9 +2020-02-11T03:00,15.4,89,12.8,0,0,4.9,5.8 +2020-02-11T04:00,10.7,94,9.2,0,0,5.2,6.3 +2020-02-11T05:00,11.1,93,9.6,0,0,6.6,8.1 +2020-02-11T06:00,14.1,89,11.6,0,0,4.7,8.7 +2020-02-11T07:00,13.9,94,12.6,0,0,4.9,8.1 +2020-02-11T08:00,5.6,92,3.8,0,0,4.5,6 +2020-02-11T09:00,9,79,3.8,0,0,4.1,6.3 +2020-02-11T10:00,14.8,71,7,0,0,4.9,6.7 +2020-02-11T11:00,20.1,68,11.4,0,0,6,7.2 +2020-02-11T12:00,22.7,70,14.4,0,0,2.3,7.4 +2020-02-11T13:00,21.8,73,14.5,0,0,5.4,8.7 +2020-02-11T14:00,19,77,13,0,0,6.7,11.4 +2020-02-11T15:00,16.9,77,10.9,0,0,2.9,10.7 +2020-02-11T16:00,13.5,76,7.4,0,0,2.7,4.7 +2020-02-11T17:00,11.2,85,7.5,0,0,4.7,3.6 +2020-02-11T18:00,16.3,74,9.3,0,0,1,5.6 +2020-02-11T19:00,17.6,69,9.2,0,0,2.6,2.7 +2020-02-11T20:00,6.4,87,3.3,0,0,5.8,6.9 +2020-02-11T21:00,2,87,-0.8,0,0,6,7.2 +2020-02-11T22:00,2.5,81,-1.9,0,0,5.1,7.8 +2020-02-11T23:00,0.6,76,-5.2,0,0,7.4,8.9 +2020-02-12T00:00,6.9,68,-1.3,0,0,6.2,8.7 +2020-02-12T01:00,8.3,70,0.5,0,0,6.9,8.3 +2020-02-12T02:00,13.6,61,2.7,0,0,3.1,9.2 +2020-02-12T03:00,9.2,66,0.2,0,0,2.8,3.8 +2020-02-12T04:00,15.3,57,2.8,0,0,4.3,4.7 +2020-02-12T05:00,27.3,51,11.7,0,0,12.3,7.6 +2020-02-12T06:00,26.2,51,10.5,0,0,13.6,21.9 +2020-02-12T07:00,26.7,51,11.1,0,0,14.1,23.3 +2020-02-12T08:00,25.6,58,12.9,0,0,11.4,22.6 +2020-02-12T09:00,25.6,64,15.3,0,0,5.4,18.3 +2020-02-12T10:00,29,67,19.4,0,0,2.3,8.5 +2020-02-12T11:00,27.6,72,19.9,0,0,7.6,11.6 +2020-02-12T12:00,27.8,68,18.5,0,0,2.9,12.1 +2020-02-12T13:00,29.5,65,19.1,0,0.028,3.2,5.8 +2020-02-12T14:00,28.9,69,20.1,0,0.028,3.4,6.5 +2020-02-12T15:00,28.3,74,21.1,0,0.028,2.5,6 +2020-02-12T16:00,27.2,80,22,0,0.028,3,5.4 +2020-02-12T17:00,23.8,82,19.1,0,0.055,4,6 +2020-02-12T18:00,21.1,85,17.3,0,0.055,5.4,6.7 +2020-02-12T19:00,23.2,85,19.2,0,0.138,4.3,6.9 +2020-02-12T20:00,23.3,91,20.9,0,0.276,8.6,13.9 +2020-02-12T21:00,22.6,92,20.7,0,0.138,4.5,13.9 +2020-02-12T22:00,22.2,92,20.1,0,0.055,3.8,7.6 +2020-02-12T23:00,21.1,92,19.2,0,0,2.8,6 +2020-02-13T00:00,20.6,92,18.7,0,0,3.1,3.6 +2020-02-13T01:00,19.6,92,17.6,0,0,2.9,4 +2020-02-13T02:00,18.2,88,15.3,0,0,3.3,5.6 +2020-02-13T03:00,14.3,87,11,0,0,2.6,5.6 +2020-02-13T04:00,13.2,89,10.6,0,0,1.6,3.4 +2020-02-13T05:00,16.5,88,13.6,0,0,6.6,2.9 +2020-02-13T06:00,15.7,87,12.5,0,0.028,3,10.7 +2020-02-13T07:00,16.3,83,12,0,0.028,1.8,4.9 +2020-02-13T08:00,15.6,85,12,0,0.028,2.1,2.9 +2020-02-13T09:00,16,85,12.3,0,0,3,5.4 +2020-02-13T10:00,16.5,83,12.3,0,0,1.8,6.7 +2020-02-13T11:00,16.3,86,12.9,0,0,0.8,5.1 +2020-02-13T12:00,16.4,89,13.6,0,0,2.8,6.7 +2020-02-13T13:00,16.5,91,14.5,0,0,4,8.7 +2020-02-13T14:00,17.5,89,14.9,0,0,1.3,8.3 +2020-02-13T15:00,18.5,86,15.1,0,0,0.9,4.5 +2020-02-13T16:00,18.3,86,14.9,0,0,1.9,2.7 +2020-02-13T17:00,16.4,91,14.3,0,0,1.3,2.7 +2020-02-13T18:00,14.6,90,12.1,0,0,2,4 +2020-02-13T19:00,16.3,89,13.6,0,0,2.2,3.1 +2020-02-13T20:00,11.9,90,9.7,0,0,5.5,6.5 +2020-02-13T21:00,9.3,86,6,0,0,5.4,6.5 +2020-02-13T22:00,3.7,83,-0.3,0,0,7.3,8.7 +2020-02-13T23:00,3.8,76,-1.9,0,0,5.8,8.9 +2020-02-14T00:00,2.7,75,-3.5,0,0,8.2,9.8 +2020-02-14T01:00,4.4,72,-2.6,0,0,8.1,10.1 +2020-02-14T02:00,9.2,69,1.1,0,0,6.5,10.1 +2020-02-14T03:00,12.9,67,3.9,0,0,6.4,9.6 +2020-02-14T04:00,15.5,65,6,0,0,6.5,10.1 +2020-02-14T05:00,18.3,69,9.9,0,0,7.1,10.7 +2020-02-14T06:00,18.4,69,10,0,0,7.8,12.1 +2020-02-14T07:00,17.7,70,9.7,0,0,7.4,13 +2020-02-14T08:00,19.6,69,11.2,0,0,6.3,11.4 +2020-02-14T09:00,20.8,72,13.1,0,0,6.8,9.6 +2020-02-14T10:00,28.2,67,18.8,0,0,5,8.3 +2020-02-14T11:00,33.4,66,23.4,0,0,4.5,7.8 +2020-02-14T12:00,39.1,47,20.6,0,0,2,7.6 +2020-02-14T13:00,41.9,41,19.9,0,0,1.1,2.2 +2020-02-14T14:00,44.6,34,17.8,0,0,1,2.5 +2020-02-14T15:00,38.2,60,25.4,0,0,4.7,5.6 +2020-02-14T16:00,35.2,58,22,0,0,6.5,8.1 +2020-02-14T17:00,44.9,38,20.8,0,0,2,7.8 +2020-02-14T18:00,39.6,43,19.1,0,0,2.5,3.6 +2020-02-14T19:00,26.8,73,19.2,0,0,7,7.8 +2020-02-14T20:00,28,69,19.1,0,0,7.1,9.8 +2020-02-14T21:00,29.5,63,18.6,0,0,2.7,8.5 +2020-02-14T22:00,23.7,71,15.6,0,0,3.4,3.4 +2020-02-14T23:00,17.5,83,13.3,0,0,5.5,8.3 +2020-02-15T00:00,20.8,76,14.3,0,0,2.8,9.2 +2020-02-15T01:00,19.9,74,12.9,0,0,2.9,2.9 +2020-02-15T02:00,19.6,70,11.5,0,0,2.6,5.1 +2020-02-15T03:00,14,74,7.2,0,0,4.2,4.7 +2020-02-15T04:00,11.9,71,4.3,0,0,5.8,6.9 +2020-02-15T05:00,7.2,77,1.4,0,0,8.3,8.3 +2020-02-15T06:00,12.1,71,4.4,0,0,5.8,10.1 +2020-02-15T07:00,10,70,2.3,0,0,6.8,7.6 +2020-02-15T08:00,15,61,4.1,0,0,4.7,8.3 +2020-02-15T09:00,16.3,63,5.7,0,0,4.7,5.6 +2020-02-15T10:00,22.6,58,9.9,0,0,4.5,6.3 +2020-02-15T11:00,27.6,57,14.2,0,0,2.7,5.4 +2020-02-15T12:00,29.5,63,18.3,0,0,3,4.9 +2020-02-15T13:00,29,70,20.3,0,0,6.4,10.3 +2020-02-15T14:00,27.8,74,20.5,0,0,8.2,13.4 +2020-02-15T15:00,26.6,73,19.1,0,0,7,13.6 +2020-02-15T16:00,23.5,78,17.8,0,0,3.8,11.4 +2020-02-15T17:00,22.9,78,17,0,0,1.3,4.7 +2020-02-15T18:00,16.3,87,13.3,0,0,4.8,6.5 +2020-02-15T19:00,16.7,89,14,0,0,5.1,7.8 +2020-02-15T20:00,21.3,84,17.2,0,0,4.2,6.7 +2020-02-15T21:00,22.2,81,17.3,0,0,4.3,5.1 +2020-02-15T22:00,22.6,79,17.1,0,0,4.2,5.8 +2020-02-15T23:00,20.8,77,14.6,0,0,2.7,4.9 +2020-02-16T00:00,12.8,83,8.6,0,0,4.5,5.4 +2020-02-16T01:00,13.9,80,8.9,0,0,2.8,5.4 +2020-02-16T02:00,15.4,74,8.7,0,0,3.4,5.1 +2020-02-16T03:00,10.4,75,4.2,0,0,4.7,5.8 +2020-02-16T04:00,10.3,72,3.1,0,0,7.2,8.1 +2020-02-16T05:00,20.4,54,6.5,0,0,3.8,8.7 +2020-02-16T06:00,17.5,62,6.5,0,0,4.3,5.1 +2020-02-16T07:00,14.1,74,7.3,0,0,5.8,7.4 +2020-02-16T08:00,14.4,77,8.6,0,0,5.5,8.1 +2020-02-16T09:00,21.2,74,14.4,0,0,3.1,6.7 +2020-02-16T10:00,27.4,72,19.5,0,0,3.8,6 +2020-02-16T11:00,31.3,71,22.9,0,0,4.1,5.8 +2020-02-16T12:00,33.8,76,27.1,0,0,2.4,4.9 +2020-02-16T13:00,34.9,73,27.1,0,0,2.9,4.9 +2020-02-16T14:00,35,76,28.3,0,0,5.1,8.1 +2020-02-16T15:00,34.4,81,29.1,0,0,5.2,8.5 +2020-02-16T16:00,33,79,27.1,0,0,4,9.2 +2020-02-16T17:00,37.3,56,23,0,0,3.9,7.8 +2020-02-16T18:00,29.4,74,22,0,0,5.7,6.7 +2020-02-16T19:00,30.7,72,22.7,0,0,6,7.4 +2020-02-16T20:00,27.2,76,20.7,0,0,5.9,7.6 +2020-02-16T21:00,33.4,65,23,0,0,2.8,7.4 +2020-02-16T22:00,28.4,78,22.5,0,0,1.8,3.8 +2020-02-16T23:00,24.7,84,20.7,0,0,1.8,4 +2020-02-17T00:00,23.2,81,18.2,0,0,7.4,11.6 +2020-02-17T01:00,27.5,78,21.5,0,0,5.2,11.4 +2020-02-17T02:00,22.2,80,17,0,0,5.2,7.6 +2020-02-17T03:00,18.6,81,13.7,0,0,6.8,8.3 +2020-02-17T04:00,18.2,79,12.8,0,0,6.1,9.4 +2020-02-17T05:00,20.9,67,11.6,0,0,4.6,8.5 +2020-02-17T06:00,12.6,78,7.1,0,0,7.2,7.8 +2020-02-17T07:00,10.1,83,5.9,0,0,7.1,9.4 +2020-02-17T08:00,13.1,81,8.4,0,0,5.9,8.3 +2020-02-17T09:00,21.5,76,15,0,0,3.1,7.2 +2020-02-17T10:00,28,74,20.8,0,0,3.6,5.1 +2020-02-17T11:00,32.5,78,26.4,0,0,6.7,9.6 +2020-02-17T12:00,33.6,80,28,0,0,5.7,11.4 +2020-02-17T13:00,34.9,80,29.3,0,0,5.8,9.4 +2020-02-17T14:00,35.1,80,29.4,0,0,8.2,13 +2020-02-17T15:00,34.3,80,28.7,0,0,7.6,13.2 +2020-02-17T16:00,32.7,74,25.3,0,0,7.3,12.1 +2020-02-17T17:00,30.9,68,21.6,0,0,7.2,11.9 +2020-02-17T18:00,29.4,73,21.7,0,0,3.8,11.6 +2020-02-17T19:00,28.4,69,19.6,0,0.028,8.9,12.8 +2020-02-17T20:00,25.8,80,20.6,0,0.083,3.1,15 +2020-02-17T21:00,25.3,85,21.6,0,0.138,2.5,4.7 +2020-02-17T22:00,24.9,87,21.5,0,0.11,3.9,6 +2020-02-17T23:00,23.9,87,20.6,0,0.055,3.5,6.7 +2020-02-18T00:00,21.1,89,18.4,0,0.028,4.5,5.8 +2020-02-18T01:00,21.6,91,19.3,0,0.028,3.3,5.1 +2020-02-18T02:00,21.3,93,19.7,0,0.055,3.5,6.5 +2020-02-18T03:00,19.7,94,18.3,0,0.055,3,5.6 +2020-02-18T04:00,18.5,95,17.2,0,0.028,3.2,4.7 +2020-02-18T05:00,20.8,90,18.4,0,0.055,1.5,3.8 +2020-02-18T06:00,20.3,90,17.9,0,0.028,3.5,3.8 +2020-02-18T07:00,14.4,93,12.7,0,0,7,7.8 +2020-02-18T08:00,17.1,89,14.4,0,0,4.8,9.2 +2020-02-18T09:00,20.8,84,16.6,0,0,3.8,7.2 +2020-02-18T10:00,25.1,78,19.2,0,0,5.7,8.5 +2020-02-18T11:00,26.2,75,19.4,0,0,8.2,13 +2020-02-18T12:00,27.1,61,15.4,0,0,8.1,14.1 +2020-02-18T13:00,27.6,51,12,0,0,7.4,13.4 +2020-02-18T14:00,27.2,58,14.3,0,0,5.9,12.1 +2020-02-18T15:00,27.3,65,17.1,0,0,4,9.6 +2020-02-18T16:00,25.7,76,19.3,0,0,2.6,6.5 +2020-02-18T17:00,21.7,78,15.9,0,0,4.7,4.7 +2020-02-18T18:00,25.9,69,17.1,0,0,3.5,5.6 +2020-02-18T19:00,22.2,78,16.4,0,0,6,6.7 +2020-02-18T20:00,16.2,86,12.7,0,0,7.2,8.7 +2020-02-18T21:00,14.3,86,10.8,0,0,6.8,8.7 +2020-02-18T22:00,12.2,84,8.4,0,0,6.4,8.7 +2020-02-18T23:00,15.5,78,10,0,0,2.1,7.6 +2020-02-19T00:00,12.2,78,6.5,0,0,4,4.3 +2020-02-19T01:00,10.8,82,6.3,0,0,5.9,7.2 +2020-02-19T02:00,14.3,85,10.5,0,0,3.8,7.2 +2020-02-19T03:00,14,86,10.5,0,0,0.7,4.5 +2020-02-19T04:00,10.1,89,7.4,0,0,3.4,4 +2020-02-19T05:00,15.4,82,11,0,0,1.4,4.5 +2020-02-19T06:00,12.1,78,6.4,0,0,4.5,5.6 +2020-02-19T07:00,11.1,70,3.4,0,0,3.8,5.4 +2020-02-19T08:00,11.7,72,4.3,0,0,5.2,6.7 +2020-02-19T09:00,17.4,73,10.2,0,0,5.4,7.8 +2020-02-19T10:00,19,79,13.5,0,0,9.7,15.4 +2020-02-19T11:00,19,78,13.1,0,0.028,10.4,17.2 +2020-02-19T12:00,19.5,77,13.4,0,0.028,10,17.2 +2020-02-19T13:00,20.2,77,14.2,0,0,9.8,17.2 +2020-02-19T14:00,20.8,78,14.9,0,0.028,10.2,17.2 +2020-02-19T15:00,20.3,82,15.6,0,0.028,9.3,17.4 +2020-02-19T16:00,19.6,84,15.6,0.004,0.055,9.1,15.4 +2020-02-19T17:00,19.7,85,16,0,0.083,7.2,14.5 +2020-02-19T18:00,18.7,89,15.9,0,0.165,9.4,14.1 +2020-02-19T19:00,17.4,87,14.3,0,0.083,7,14.8 +2020-02-19T20:00,16.7,87,13.5,0,0.055,4.3,11.2 +2020-02-19T21:00,15.6,88,12.7,0,0.055,2.1,6.7 +2020-02-19T22:00,15.1,88,12.2,0,0.028,2,4.7 +2020-02-19T23:00,15,89,12.4,0,0.028,0.7,2.7 +2020-02-20T00:00,14.4,91,12.2,0,0.028,2.1,2 +2020-02-20T01:00,10.9,93,9.4,0,0,3.6,4.3 +2020-02-20T02:00,11.7,96,10.9,0,0,1.7,4.3 +2020-02-20T03:00,6.5,94,5.2,0,0,4.5,4.9 +2020-02-20T04:00,6.7,90,4.4,0,0,5.2,6.5 +2020-02-20T05:00,4.5,91,2.4,0,0,4.9,6.3 +2020-02-20T06:00,1.9,89,-0.5,0,0,5.7,6.7 +2020-02-20T07:00,-0.1,87,-3.1,0,0,5,6.7 +2020-02-20T08:00,-1.9,83,-5.8,0,0,5.5,6.5 +2020-02-20T09:00,3.6,74,-3,0,0,2.7,6.5 +2020-02-20T10:00,8.5,66,-0.4,0,0,3.2,5.6 +2020-02-20T11:00,12.9,70,5,0,0,3.2,6.5 +2020-02-20T12:00,16.3,73,9.1,0,0,2.7,6.5 +2020-02-20T13:00,18.1,74,11.1,0,0,3.5,7.2 +2020-02-20T14:00,19.1,75,12.6,0,0,4.1,7.8 +2020-02-20T15:00,19.6,79,14,0,0,2.8,7.8 +2020-02-20T16:00,19.1,79,13.6,0,0,2.3,4.9 +2020-02-20T17:00,19.2,73,11.9,0,0,1.9,3.6 +2020-02-20T18:00,20.9,64,10.5,0,0,3.2,4.3 +2020-02-20T19:00,12.2,74,5.4,0,0,5.3,6.3 +2020-02-20T20:00,11.8,74,5.1,0,0,5.7,6.9 +2020-02-20T21:00,8.8,73,1.9,0,0,5.6,6.9 +2020-02-20T22:00,2,76,-3.7,0,0,5.5,6.7 +2020-02-20T23:00,-0.5,74,-6.8,0,0,6.7,7.8 +2020-02-21T00:00,-0.5,69,-8.2,0,0,8,9.4 +2020-02-21T01:00,0,66,-8.8,0,0,8.1,9.6 +2020-02-21T02:00,1.9,62,-8.2,0,0,7.1,9.6 +2020-02-21T03:00,1.9,63,-7.8,0,0,7.8,9.2 +2020-02-21T04:00,2.1,64,-7.4,0,0,6.8,9.2 +2020-02-21T05:00,2.1,65,-6.9,0,0,7.8,8.3 +2020-02-21T06:00,-1.7,70,-9.1,0,0,8.6,10.3 +2020-02-21T07:00,-1.7,69,-9.3,0,0,8.1,10.1 +2020-02-21T08:00,3.8,62,-6.3,0,0,7.4,9.6 +2020-02-21T09:00,12,55,-1.1,0,0,7.1,8.7 +2020-02-21T10:00,20.6,56,7.4,0,0,7.2,8.3 +2020-02-21T11:00,30.2,54,15.4,0,0,5.9,8.9 +2020-02-21T12:00,35.2,56,21.2,0,0,4.9,9.6 +2020-02-21T13:00,37.7,59,24.8,0,0,4.9,8.5 +2020-02-21T14:00,40.3,55,25.3,0,0,5.4,6.9 +2020-02-21T15:00,39.4,52,23.2,0,0,5.1,6.3 +2020-02-21T16:00,35.5,63,24,0,0,5.8,7.2 +2020-02-21T17:00,40.2,34,14.2,0,0,3.1,6.9 +2020-02-21T18:00,37.5,34,11.8,0,0,0.8,4 +2020-02-21T19:00,29.9,48,12.6,0,0,5.8,6.3 +2020-02-21T20:00,22.8,68,14,0,0,6.1,8.1 +2020-02-21T21:00,16.8,85,13.2,0,0,5.9,7.4 +2020-02-21T22:00,14.5,85,10.7,0,0,8.2,9.4 +2020-02-21T23:00,14.9,78,9.3,0,0,8.6,10.1 +2020-02-22T00:00,17.4,74,10.7,0,0,5.7,10.1 +2020-02-22T01:00,15.4,75,9,0,0,5.9,6.7 +2020-02-22T02:00,12.7,78,7.2,0,0,7.9,9.6 +2020-02-22T03:00,14.9,76,8.6,0,0,6.7,9.6 +2020-02-22T04:00,17.7,72,10.3,0,0,6,9.2 +2020-02-22T05:00,14.8,77,9.1,0,0,9.1,9.2 +2020-02-22T06:00,18.9,75,12.4,0,0,7.4,11 +2020-02-22T07:00,19.9,75,13.2,0,0,7.4,9.6 +2020-02-22T08:00,24.4,72,16.7,0,0,5.8,9.6 +2020-02-22T09:00,28.9,72,21,0,0,4.8,8.7 +2020-02-22T10:00,32.6,72,24.5,0,0,5.3,8.3 +2020-02-22T11:00,37.5,70,28.5,0,0,6.9,8.1 +2020-02-22T12:00,46.9,41,24.6,0,0,4.5,8.7 +2020-02-22T13:00,45,52,28.4,0,0,3.5,5.6 +2020-02-22T14:00,42.7,58,28.9,0,0,5,7.2 +2020-02-22T15:00,39.3,71,30.8,0,0,4.9,8.5 +2020-02-22T16:00,40.5,63,28.9,0,0,3.2,6.9 +2020-02-22T17:00,43.4,51,26.3,0,0,1.1,4.3 +2020-02-22T18:00,42.6,52,26.3,0,0,5.1,5.8 +2020-02-22T19:00,35.3,65,24.9,0,0,3.8,6 +2020-02-22T20:00,34.4,69,25.4,0,0,2.9,4.9 +2020-02-22T21:00,29.8,87,26.2,0,0,4,5.6 +2020-02-22T22:00,28.7,91,26.4,0,0,3.3,4.9 +2020-02-22T23:00,29.9,90,27.2,0,0,3.5,4.5 +2020-02-23T00:00,32.7,80,27.1,0,0,0.7,5.8 +2020-02-23T01:00,31.2,83,26.5,0,0,1.2,2.9 +2020-02-23T02:00,30.3,79,24.4,0,0,6.6,8.7 +2020-02-23T03:00,28.3,73,20.8,0,0,9.1,11 +2020-02-23T04:00,32.2,72,24.2,0,0,5.5,11.2 +2020-02-23T05:00,33,70,24.3,0,0,7.9,11.2 +2020-02-23T06:00,33.5,72,25.6,0,0,7.9,14.1 +2020-02-23T07:00,33.7,75,26.7,0,0.055,5.9,12.5 +2020-02-23T08:00,33.9,82,29,0,0.11,6.2,9.6 +2020-02-23T09:00,33.6,86,30,0,0.138,5.9,10.5 +2020-02-23T10:00,33.7,87,30.4,0.004,0.083,5.2,10.5 +2020-02-23T11:00,34.2,89,31.2,0.004,0.055,6.3,9.8 +2020-02-23T12:00,33.9,89,31.1,0,0.138,7.4,11.6 +2020-02-23T13:00,33.6,90,31.1,0,0.138,7.9,12.5 +2020-02-23T14:00,33.8,90,31.1,0,0.083,7.2,12.5 +2020-02-23T15:00,34.1,87,30.7,0.004,0.028,5.6,11.4 +2020-02-23T16:00,34,85,29.9,0,0,4.3,9.6 +2020-02-23T17:00,32.5,87,29,0,0,4.6,6.9 +2020-02-23T18:00,25.8,93,24,0,0,8.1,9.4 +2020-02-23T19:00,26.2,91,24,0,0,7.1,9.6 +2020-02-23T20:00,30.7,88,27.6,0,0,4.2,8.7 +2020-02-23T21:00,30.5,86,26.7,0,0,5.9,7.4 +2020-02-23T22:00,26.7,84,22.6,0,0,7.7,10.1 +2020-02-23T23:00,24.3,88,21.2,0,0,6.6,9.4 +2020-02-24T00:00,21.3,89,18.7,0,0,6.2,9.2 +2020-02-24T01:00,19.6,88,16.7,0,0,6.9,9.2 +2020-02-24T02:00,16.9,85,13.3,0,0,8.9,10.5 +2020-02-24T03:00,17.7,77,11.8,0,0,9.3,12.3 +2020-02-24T04:00,19,73,11.9,0,0,5.6,11 +2020-02-24T05:00,12.7,81,8.1,0,0,7.1,7.4 +2020-02-24T06:00,11.7,81,7.1,0,0,7.4,8.7 +2020-02-24T07:00,11.4,81,6.8,0,0,9.4,11.2 +2020-02-24T08:00,20.8,70,12.4,0,0,7.7,11.4 +2020-02-24T09:00,33,54,18.3,0,0.028,22.4,33.1 +2020-02-24T10:00,32.4,51,16.3,0,0,15.1,36.7 +2020-02-24T11:00,33,49,15.8,0,0,12.5,24.6 +2020-02-24T12:00,32.9,50,16.4,0,0,14.2,24.6 +2020-02-24T13:00,33.3,49,16.1,0,0,14.9,23.7 +2020-02-24T14:00,32.3,49,15.3,0,0,18.3,29.8 +2020-02-24T15:00,31.6,50,14.9,0,0,14.9,30 +2020-02-24T16:00,30.2,50,14,0,0,11.6,24.4 +2020-02-24T17:00,28.1,50,11.8,0,0,6.5,19 +2020-02-24T18:00,25.4,52,10.2,0,0,8.5,13.2 +2020-02-24T19:00,22.6,57,9.5,0,0,7.4,14.5 +2020-02-24T20:00,19.6,60,7.8,0,0,6.8,12.1 +2020-02-24T21:00,20.3,61,8.9,0,0,7.5,11.9 +2020-02-24T22:00,20.3,59,8.4,0,0,9.2,14.3 +2020-02-24T23:00,19.9,59,7.7,0,0,9.6,15.4 +2020-02-25T00:00,20.5,58,7.9,0,0,9.5,15.7 +2020-02-25T01:00,19.2,58,6.9,0,0,7.9,15.4 +2020-02-25T02:00,17.2,60,5.7,0,0,6.4,12.5 +2020-02-25T03:00,18.2,55,4.9,0,0,5.4,9.8 +2020-02-25T04:00,18.3,56,5.3,0,0,4,6.7 +2020-02-25T05:00,13.9,57,1.3,0,0,7.7,6.7 +2020-02-25T06:00,18.2,61,7.2,0,0,11.8,16.1 +2020-02-25T07:00,20,62,9.1,0,0,20.9,33.3 +2020-02-25T08:00,20.1,64,10,0,0,23.1,37.1 +2020-02-25T09:00,20.8,62,9.9,0,0,21.3,37.6 +2020-02-25T10:00,21.5,63,10.7,0,0.028,21.8,35.1 +2020-02-25T11:00,22.5,67,13,0,0.028,19.3,35.3 +2020-02-25T12:00,23.5,59,11,0,0.028,21.6,34.9 +2020-02-25T13:00,24.2,60,12.3,0,0.028,21.3,35.1 +2020-02-25T14:00,24.3,60,12.2,0,0.055,20.8,34.4 +2020-02-25T15:00,23.8,65,13.8,0,0,17.7,33.6 +2020-02-25T16:00,23,67,13.7,0,0,15.5,28.9 +2020-02-25T17:00,20.7,67,11.6,0,0,9.4,25.1 +2020-02-25T18:00,15.9,71,8.2,0,0,5.7,15.2 +2020-02-25T19:00,13.2,66,4,0,0,6.3,10.3 +2020-02-25T20:00,11,66,2,0,0,6,9.6 +2020-02-25T21:00,6.4,68,-1.8,0,0,8.1,10.3 +2020-02-25T22:00,4.3,67,-4.2,0,0,5.7,9.8 +2020-02-25T23:00,1.4,71,-5.9,0,0,5.1,7.2 +2020-02-26T00:00,-0.4,73,-7.1,0,0,5.7,7.2 +2020-02-26T01:00,-4.5,77,-10,0,0,6.3,7.4 +2020-02-26T02:00,-6.8,76,-12.5,0,0,8.6,9.8 +2020-02-26T03:00,-5.2,71,-12.3,0,0,7.2,9.8 +2020-02-26T04:00,-2.9,66,-11.6,0,0,6,9.2 +2020-02-26T05:00,-3.5,64,-12.5,0,0,7.5,8.7 +2020-02-26T06:00,-1.7,63,-11.4,0,0,6.1,9.4 +2020-02-26T07:00,-0.1,63,-9.7,0,0,5.5,8.5 +2020-02-26T08:00,6.1,63,-3.9,0,0,5.3,9.2 +2020-02-26T09:00,14,63,3.7,0,0,4.3,8.5 +2020-02-26T10:00,19.1,70,10.9,0,0,6.9,11.4 +2020-02-26T11:00,23.2,66,13.6,0,0,7.1,12.3 +2020-02-26T12:00,26.3,55,12.4,0,0,6.7,12.1 +2020-02-26T13:00,28.9,57,15.4,0,0,6.8,12.1 +2020-02-26T14:00,29.9,55,15.7,0,0,4.6,11.6 +2020-02-26T15:00,29.7,56,15.8,0,0,2.5,8.3 +2020-02-26T16:00,29.9,70,21.5,0,0,1.9,4.5 +2020-02-26T17:00,32.4,59,19.5,0,0,2.2,6.7 +2020-02-26T18:00,23,74,15.9,0,0,6.9,7.8 +2020-02-26T19:00,20,72,12.5,0,0,4.6,8.3 +2020-02-26T20:00,16.5,79,11,0,0,5.4,7.4 +2020-02-26T21:00,15.4,75,9.1,0,0,6,8.1 +2020-02-26T22:00,14.7,72,7.3,0,0,6,8.1 +2020-02-26T23:00,16.7,68,7.9,0,0,5.9,8.9 +2020-02-27T00:00,17.9,69,9.3,0,0,7.9,12.5 +2020-02-27T01:00,17.5,76,11.2,0,0,5.8,13.2 +2020-02-27T02:00,17.2,75,10.8,0,0,5,8.5 +2020-02-27T03:00,15.9,72,8.5,0,0,5.8,9.4 +2020-02-27T04:00,16,72,8.4,0,0,5.7,8.7 +2020-02-27T05:00,22.9,57,10.1,0,0,0.4,8.7 +2020-02-27T06:00,18.6,68,9.8,0,0,5.5,7.4 +2020-02-27T07:00,29.5,47,11.8,0,0,6.6,8.3 +2020-02-27T08:00,30.1,49,13,0,0,4.2,8.3 +2020-02-27T09:00,30.8,61,19,0,0,2.3,5.4 +2020-02-27T10:00,32.5,77,26.1,0,0,1.5,5.4 +2020-02-27T11:00,35.7,67,25.9,0,0,2.3,3.6 +2020-02-27T12:00,36.6,62,24.8,0,0,5.1,7.6 +2020-02-27T13:00,36.3,63,25,0,0,6.3,10.3 +2020-02-27T14:00,36.1,64,25.2,0,0,4.6,10.1 +2020-02-27T15:00,36,65,25.3,0,0,2.9,7.2 +2020-02-27T16:00,36.1,53,20.8,0,0,2.3,4.9 +2020-02-27T17:00,39.3,45,19.6,0,0,3.4,6.7 +2020-02-27T18:00,29.2,63,18.3,0,0,8.8,10.3 +2020-02-27T19:00,28.9,52,13.5,0,0,7.9,11.9 +2020-02-27T20:00,26.7,54,12.5,0,0,3.6,9.8 +2020-02-27T21:00,23.7,72,15.9,0,0,4.8,7.4 +2020-02-27T22:00,21,74,14.2,0,0,6.8,9.2 +2020-02-27T23:00,15.8,80,10.8,0,0,8.2,10.3 +2020-02-28T00:00,13.5,81,8.8,0,0,6.2,10.1 +2020-02-28T01:00,12.2,77,6.4,0,0,6.9,8.9 +2020-02-28T02:00,12.7,74,5.9,0,0,6.9,9.4 +2020-02-28T03:00,12,74,5.4,0,0,7,9.2 +2020-02-28T04:00,10.6,75,4.3,0,0,7.8,9.6 +2020-02-28T05:00,14.7,69,6.4,0,0,6.1,9.6 +2020-02-28T06:00,14,69,5.5,0,0,8.1,9.6 +2020-02-28T07:00,14.2,71,6.4,0,0,7.3,9.8 +2020-02-28T08:00,19.7,69,11.3,0,0,4.4,9.4 +2020-02-28T09:00,28.3,65,18.1,0,0,3.1,6.3 +2020-02-28T10:00,35.5,57,21.8,0,0,4.9,6.7 +2020-02-28T11:00,38.7,60,26,0,0,2.5,7.8 +2020-02-28T12:00,42.4,43,21.3,0,0,2.6,3.1 +2020-02-28T13:00,42.1,55,27.2,0,0,4.3,4.7 +2020-02-28T14:00,41.4,59,28,0,0,5.9,7.4 +2020-02-28T15:00,41.1,57,27.1,0,0,6.5,8.5 +2020-02-28T16:00,45.8,34,19,0,0,3.8,8.1 +2020-02-28T17:00,38.5,58,24.9,0,0,6.2,4.5 +2020-02-28T18:00,45.8,33,18.5,0,0,1.7,7.4 +2020-02-28T19:00,38,45,18.4,0,0,2.5,2.9 +2020-02-28T20:00,21.9,83,17.7,0,0,4.8,6 +2020-02-28T21:00,19,91,16.7,0,0,7.3,8.7 +2020-02-28T22:00,18.7,84,14.7,0,0,8.1,9.8 +2020-02-28T23:00,17.1,83,12.8,0,0,8.1,9.8 +2020-02-29T00:00,15.1,83,10.9,0,0,8.7,10.7 +2020-02-29T01:00,13.9,83,9.7,0,0,8.5,10.7 +2020-02-29T02:00,13.4,82,8.9,0,0,8.5,11 +2020-02-29T03:00,12.5,82,8.1,0,0,8.3,10.5 +2020-02-29T04:00,11.8,81,7.1,0,0,8.7,11 +2020-02-29T05:00,16,75,9.6,0,0,7.6,11 +2020-02-29T06:00,18.5,74,11.6,0,0,6.2,8.7 +2020-02-29T07:00,19.9,74,12.8,0,0,6,7.6 +2020-02-29T08:00,24.8,72,17.2,0,0,4.9,7.6 +2020-02-29T09:00,30.5,79,24.6,0,0,2.8,6.5 +2020-02-29T10:00,35.3,73,27.7,0,0,3.5,5.1 +2020-02-29T11:00,39.1,64,27.9,0,0,3.8,6 +2020-02-29T12:00,44.6,38,20.8,0,0,1.4,5.1 +2020-02-29T13:00,46.1,37,21,0,0,3.4,4.5 +2020-02-29T14:00,48.4,33,20.6,0,0,1.6,4.9 +2020-02-29T15:00,49.1,36,23,0,0,2.3,3.8 +2020-02-29T16:00,41.2,61,28.7,0,0,3.7,5.6 +2020-02-29T17:00,39.4,64,28.1,0,0,6.1,6 +2020-02-29T18:00,42.6,40,20.2,0,0,5,7.8 +2020-02-29T19:00,29.2,70,20.8,0,0,6.7,9.4 +2020-02-29T20:00,28,78,22,0,0,5.7,9.2 +2020-02-29T21:00,25.3,80,19.9,0,0,5.2,9.2 +2020-02-29T22:00,22.6,84,18.4,0,0,6.6,9.4 +2020-02-29T23:00,20.7,81,15.6,0,0,8.1,11 +2020-03-01T00:00,19.7,81,14.9,0,0,7.9,10.1 +2020-03-01T01:00,17.4,83,13,0,0,8.6,10.5 +2020-03-01T02:00,19.1,79,13.6,0,0,7.9,10.7 +2020-03-01T03:00,20.3,76,14.1,0,0,7.3,9.8 +2020-03-01T04:00,20.1,77,14,0,0,7,8.9 +2020-03-01T05:00,19.1,82,14.5,0,0,4,9.4 +2020-03-01T06:00,19.9,80,14.6,0,0,4.9,6.5 +2020-03-01T07:00,14.8,84,10.9,0,0,6.4,8.5 +2020-03-01T08:00,23.2,81,18.1,0,0,3.4,8.9 +2020-03-01T09:00,30.7,70,22.2,0,0,9.3,13.9 +2020-03-01T10:00,30.2,73,22.6,0,0,10.1,18.1 +2020-03-01T11:00,34.1,68,24.7,0,0,7.9,17.7 +2020-03-01T12:00,35.9,66,25.6,0,0,5.8,14.3 +2020-03-01T13:00,36.3,68,26.6,0,0,7.2,13.2 +2020-03-01T14:00,36.3,69,27,0,0,7.1,13.6 +2020-03-01T15:00,36.4,69,27.2,0,0.083,6.5,13.9 +2020-03-01T16:00,36.2,71,27.6,0,0.028,4.1,12.3 +2020-03-01T17:00,32.8,81,27.6,0,0.028,6.6,11 +2020-03-01T18:00,31.3,84,26.9,0,0.11,7.5,12.3 +2020-03-01T19:00,30.4,86,26.6,0,0.138,9.1,15.4 +2020-03-01T20:00,28.9,88,25.7,0,0.138,7.6,15 +2020-03-01T21:00,27.9,90,25.3,0,0.138,4.7,12.5 +2020-03-01T22:00,26.5,91,24.3,0,0.055,2.8,8.1 +2020-03-01T23:00,25.6,92,23.7,0,0.028,3,4.9 +2020-03-02T00:00,26,91,23.8,0,0,1.4,4 +2020-03-02T01:00,25.3,92,23.3,0,0,3,4 +2020-03-02T02:00,24.7,95,23.5,0,0,2.5,4 +2020-03-02T03:00,22,98,21.5,0,0,3,3.4 +2020-03-02T04:00,22,96,20.9,0,0,4.1,6.5 +2020-03-02T05:00,23.3,93,21.7,0,0.028,4.3,7.2 +2020-03-02T06:00,20.8,93,19.1,0,0,3.7,6.9 +2020-03-02T07:00,21.7,96,20.7,0,0,1.4,5.4 +2020-03-02T08:00,22.2,97,21.5,0,0,1.6,4.9 +2020-03-02T09:00,22.2,98,21.8,0,0,0.7,6 +2020-03-02T10:00,24.5,95,23.3,0,0,3.4,9.2 +2020-03-02T11:00,30.1,81,24.9,0,0,2.5,8.9 +2020-03-02T12:00,35.2,69,26.2,0,0,4.1,8.5 +2020-03-02T13:00,39.7,66,29.3,0,0,2.7,7.6 +2020-03-02T14:00,40.6,65,29.9,0,0,4.1,6.9 +2020-03-02T15:00,41.6,55,26.6,0,0,4.2,8.3 +2020-03-02T16:00,40.4,56,25.8,0,0,5.2,9.2 +2020-03-02T17:00,38.7,59,25.7,0,0,4.8,9.6 +2020-03-02T18:00,29.9,61,18,0,0,5.1,10.3 +2020-03-02T19:00,36.3,46,17.3,0,0,10.5,15.4 +2020-03-02T20:00,35.5,50,18.9,0,0,10.9,22.1 +2020-03-02T21:00,30.6,49,13.8,0,0,11,18.3 +2020-03-02T22:00,24.3,62,13.2,0,0,9.6,14.5 +2020-03-02T23:00,24.7,63,13.9,0,0,5.9,12.1 +2020-03-03T00:00,24.1,63,13.4,0,0,6.7,11.4 +2020-03-03T01:00,17.6,70,9.3,0,0,8.1,11.2 +2020-03-03T02:00,17.2,69,8.8,0,0,7.7,10.1 +2020-03-03T03:00,13.2,78,7.5,0,0,8.2,10.5 +2020-03-03T04:00,11.6,81,6.9,0,0,7.3,11 +2020-03-03T05:00,16.9,77,10.9,0,0,4.7,10.3 +2020-03-03T06:00,14.4,76,8.2,0,0,6.8,10.3 +2020-03-03T07:00,16.8,74,10,0,0,5.8,10.3 +2020-03-03T08:00,24.9,68,16,0,0,5.8,10.1 +2020-03-03T09:00,33.3,61,21.2,0,0,4.8,11.4 +2020-03-03T10:00,38.8,58,25.4,0,0,3.2,8.7 +2020-03-03T11:00,47.6,37,22.3,0,0,6.5,14.8 +2020-03-03T12:00,51.6,29,20.4,0,0,5,14.8 +2020-03-03T13:00,54.5,25,19.1,0,0,4.5,13.2 +2020-03-03T14:00,56.2,22,18.3,0,0,10.5,19 +2020-03-03T15:00,55,25,19.8,0,0,9.8,21.3 +2020-03-03T16:00,53.2,31,22.9,0,0,9,17.9 +2020-03-03T17:00,49.5,47,30.1,0,0,6,18.1 +2020-03-03T18:00,41.1,58,27.3,0,0,6.7,10.5 +2020-03-03T19:00,39.7,44,19.8,0,0,9.6,18.6 +2020-03-03T20:00,37.2,48,19.2,0,0,5.1,15.2 +2020-03-03T21:00,29.5,63,18.6,0,0,6.7,8.1 +2020-03-03T22:00,27.5,67,18,0,0,5.5,8.9 +2020-03-03T23:00,23.1,80,17.9,0,0,4.3,8.3 +2020-03-04T00:00,24.3,78,18.5,0,0,6.2,9.2 +2020-03-04T01:00,24.6,74,17.5,0,0,5.7,9.4 +2020-03-04T02:00,24.2,70,15.7,0,0,5.8,9.2 +2020-03-04T03:00,22.9,70,14.5,0,0,5.6,9.2 +2020-03-04T04:00,23.2,66,13.6,0,0,6.1,9.8 +2020-03-04T05:00,20,67,10.9,0,0,6.5,9.6 +2020-03-04T06:00,23.2,60,11.5,0,0,5,8.1 +2020-03-04T07:00,24.6,58,12.1,0,0,5.4,7.8 +2020-03-04T08:00,29.8,50,13.6,0,0,4.5,10.1 +2020-03-04T09:00,38.8,44,18.5,0,0,2.3,10.1 +2020-03-04T10:00,46.5,39,23.1,0,0,2.3,8.5 +2020-03-04T11:00,52.7,28,20.7,0,0,7.8,15.2 +2020-03-04T12:00,56,24,19.9,0,0,10.3,19.9 +2020-03-04T13:00,58.2,22,19.6,0,0,10.1,19.9 +2020-03-04T14:00,59.6,21,19.1,0,0,10.2,19.7 +2020-03-04T15:00,59.5,22,20.2,0,0,9.2,19.2 +2020-03-04T16:00,58.6,25,23.1,0,0,6.5,16.8 +2020-03-04T17:00,52.3,24,16.4,0,0,8.7,11 +2020-03-04T18:00,46.9,23,11.1,0,0,7,15.2 +2020-03-04T19:00,40.3,28,10,0,0,5.6,11.4 +2020-03-04T20:00,32.1,56,18.2,0,0,7.5,11.4 +2020-03-04T21:00,30.7,60,18.4,0,0,9.3,15 +2020-03-04T22:00,31.1,50,14.8,0,0,5.6,14.8 +2020-03-04T23:00,31.6,43,11.7,0,0,8.9,12.8 +2020-03-05T00:00,29.6,48,12.3,0,0,8.3,15.2 +2020-03-05T01:00,27.8,58,14.7,0,0,6.2,13.2 +2020-03-05T02:00,26.2,62,15,0,0,6.5,11 +2020-03-05T03:00,24.8,68,15.6,0,0,5.5,10.3 +2020-03-05T04:00,26.7,58,13.9,0,0,5.8,9.4 +2020-03-05T05:00,28,62,16.8,0,0,3,9.2 +2020-03-05T06:00,23.8,81,18.8,0,0,5.3,4.9 +2020-03-05T07:00,27,79,21.2,0,0,4.1,6.7 +2020-03-05T08:00,29.9,70,21.5,0,0,5,10.3 +2020-03-05T09:00,33.4,63,22.2,0,0,7.2,15.2 +2020-03-05T10:00,37.1,56,23,0,0,4.7,15.7 +2020-03-05T11:00,39.8,52,23.5,0,0,1.7,12.8 +2020-03-05T12:00,42.9,47,24.2,0,0,3.2,11.9 +2020-03-05T13:00,46.1,44,25.6,0,0,2.6,11.6 +2020-03-05T14:00,48.5,42,26.2,0,0,3.3,11.2 +2020-03-05T15:00,49.6,42,27.3,0,0,4.8,12.3 +2020-03-05T16:00,49.5,45,28.8,0,0,6.6,13.4 +2020-03-05T17:00,47.2,53,31.1,0,0,6.3,14.1 +2020-03-05T18:00,39.1,71,30.4,0,0,5,11.2 +2020-03-05T19:00,34.9,78,28.8,0,0,5,9.2 +2020-03-05T20:00,32,82,27.2,0,0,3.4,8.5 +2020-03-05T21:00,29.1,87,25.8,0,0,3.7,4.9 +2020-03-05T22:00,27.1,90,24.6,0,0,3.7,5.6 +2020-03-05T23:00,25.1,92,23,0,0,3,5.8 +2020-03-06T00:00,23.7,91,21.5,0,0,3.5,4.9 +2020-03-06T01:00,23.4,90,20.8,0,0,3.3,5.1 +2020-03-06T02:00,22.6,89,19.9,0,0,2.9,4.9 +2020-03-06T03:00,22.9,85,19,0,0,3.4,5.1 +2020-03-06T04:00,24,75,17.2,0,0,3.8,5.8 +2020-03-06T05:00,23.7,74,16.5,0,0,4,6.3 +2020-03-06T06:00,24.7,69,16,0,0,4.2,6.9 +2020-03-06T07:00,26.5,66,16.6,0,0,4.1,6.7 +2020-03-06T08:00,33.1,59,20.1,0,0,4.5,9.6 +2020-03-06T09:00,43.1,50,25.5,0,0,3.1,9.6 +2020-03-06T10:00,52.1,36,26,0,0,4.3,10.5 +2020-03-06T11:00,58.1,26,23.5,0,0,7.4,15.4 +2020-03-06T12:00,61.6,21,21.4,0,0,8.5,17.7 +2020-03-06T13:00,63.3,19,20.5,0,0,7.9,17.7 +2020-03-06T14:00,64,19,21.5,0,0,7.1,16.6 +2020-03-06T15:00,63.9,21,22.6,0,0,6.8,15 +2020-03-06T16:00,62.2,25,26.1,0,0,6.3,13.6 +2020-03-06T17:00,58.7,50,40,0,0,4.8,11.4 +2020-03-06T18:00,57.5,36,30.7,0,0,2.8,5.8 +2020-03-06T19:00,41.4,65,30.4,0,0,5.9,7.4 +2020-03-06T20:00,37.2,72,29,0,0,5.4,7.4 +2020-03-06T21:00,34.7,76,27.9,0,0,4.1,6.9 +2020-03-06T22:00,34.7,72,26.5,0,0,3.1,6.7 +2020-03-06T23:00,30.7,80,25.4,0,0,5.4,5.8 +2020-03-07T00:00,32,72,24,0,0,4.9,6.7 +2020-03-07T01:00,30.5,74,23.2,0,0,6.5,7.8 +2020-03-07T02:00,30.3,72,22.5,0,0,6.3,7.6 +2020-03-07T03:00,29.2,73,21.7,0,0,6.8,8.1 +2020-03-07T04:00,28,76,21.5,0,0,6.3,8.3 +2020-03-07T05:00,27.8,78,21.7,0,0,5.9,7.8 +2020-03-07T06:00,29.2,73,21.5,0,0,5.2,7.2 +2020-03-07T07:00,31.6,67,21.9,0,0,4.6,7.4 +2020-03-07T08:00,38.8,57,25,0,0,5.5,10.5 +2020-03-07T09:00,49,46,29.2,0,0,4,10.5 +2020-03-07T10:00,57.7,32,28.1,0,0,6.5,13.4 +2020-03-07T11:00,61.9,22,23.1,0,0,11.2,20.8 +2020-03-07T12:00,62.5,22,23.3,0,0,11.3,22.4 +2020-03-07T13:00,63,22,23.5,0,0,10.1,21.7 +2020-03-07T14:00,63.3,22,24.1,0,0,9.4,19.5 +2020-03-07T15:00,63,23,24.9,0,0,8.6,18.6 +2020-03-07T16:00,62,25,25.9,0,0,8.3,16.8 +2020-03-07T17:00,59.5,43,37.2,0,0,4.9,15.2 +2020-03-07T18:00,51.9,37,26.2,0,0,7,10.3 +2020-03-07T19:00,44.4,53,28.1,0,0,6.5,10.7 +2020-03-07T20:00,39.8,61,27.6,0,0,6.5,11.6 +2020-03-07T21:00,39,60,26.4,0,0,5.9,10.7 +2020-03-07T22:00,38.1,62,26.1,0,0,5.9,10.1 +2020-03-07T23:00,38.8,58,25.5,0,0,7.1,11.2 +2020-03-08T00:00,40.4,54,24.9,0,0,8.5,14.1 +2020-03-08T01:00,39.7,55,24.8,0,0,8.9,14.5 +2020-03-08T02:00,37.8,59,24.7,0,0,7.9,14.5 +2020-03-08T03:00,35.5,65,24.8,0,0,7.6,13 +2020-03-08T04:00,34.5,66,24.4,0,0,6.5,12.3 +2020-03-08T05:00,31.7,77,25.3,0,0,4.7,10.7 +2020-03-08T06:00,30.7,80,25.1,0,0,4.9,6.7 +2020-03-08T07:00,33.7,72,25.7,0,0,3.4,6.5 +2020-03-08T08:00,41.8,59,28.6,0,0,4.3,9.2 +2020-03-08T09:00,51.2,47,31.4,0,0,3.7,10.1 +2020-03-08T10:00,58,36,31.4,0,0,5.4,12.5 +2020-03-08T11:00,61.7,29,28.9,0,0,5.1,14.1 +2020-03-08T12:00,63.2,25,27.1,0,0,2.6,13.2 +2020-03-08T13:00,64.5,23,26.1,0,0,3.4,10.5 +2020-03-08T14:00,64.8,23,25.6,0,0,8.7,17.7 +2020-03-08T15:00,62.5,24,25.3,0,0,4.7,17.9 +2020-03-08T16:00,61.1,28,27.5,0,0,10.5,18.8 +2020-03-08T17:00,58.4,34,30.1,0,0,11,18.8 +2020-03-08T18:00,51.3,45,30.7,0,0,6.8,19.2 +2020-03-08T19:00,46.2,73,37.9,0.016,0,6.9,12.5 +2020-03-08T20:00,45.3,85,41,0.051,0,8.4,14.5 +2020-03-08T21:00,43.3,88,40,0.079,0,6.2,13.6 +2020-03-08T22:00,43.3,89,40.3,0.079,0,7.5,11.9 +2020-03-08T23:00,38.8,98,38.3,0.067,0,9.8,16.8 +2020-03-09T00:00,36.7,99,36.4,0.024,0,6.9,16.3 +2020-03-09T01:00,36.5,98,35.9,0.008,0,0.9,12.1 +2020-03-09T02:00,36.9,94,35.3,0.004,0,2.8,6.5 +2020-03-09T03:00,37.6,92,35.4,0,0,1.4,5.8 +2020-03-09T04:00,36.3,95,35,0,0,2.3,3.1 +2020-03-09T05:00,37.9,93,36.1,0,0,3.6,3.1 +2020-03-09T06:00,38.1,93,36.2,0,0,1.8,6 +2020-03-09T07:00,38.3,93,36.4,0,0,3,5.6 +2020-03-09T08:00,38.4,92,36.3,0,0,0,6.5 +2020-03-09T09:00,39.5,88,36.2,0,0,3.6,8.7 +2020-03-09T10:00,44.1,73,36.1,0,0,4.3,11.9 +2020-03-09T11:00,49.6,52,32.8,0,0,3.8,12.3 +2020-03-09T12:00,54.1,35,26.9,0,0,4,12.5 +2020-03-09T13:00,56.6,29,25.1,0,0,4.5,13.4 +2020-03-09T14:00,57.7,26,23.3,0,0,5.7,13.6 +2020-03-09T15:00,59.2,24,21.9,0,0,6.4,13.9 +2020-03-09T16:00,58.4,24,21.7,0,0,7.6,15.2 +2020-03-09T17:00,55,45,34.2,0,0,3.2,14.5 +2020-03-09T18:00,51.4,58,37,0.004,0,0.9,6.5 +2020-03-09T19:00,45.2,70,36.1,0,0,4.5,7.4 +2020-03-09T20:00,39.6,83,35,0,0,3.9,8.3 +2020-03-09T21:00,36.2,91,34,0,0,2.9,6.7 +2020-03-09T22:00,34.5,92,32.4,0,0,3.2,5.4 +2020-03-09T23:00,32.1,93,30.3,0,0,4,6.9 +2020-03-10T00:00,30.7,91,28.4,0,0,2.8,6.9 +2020-03-10T01:00,31.5,81,26.2,0,0,3.4,5.8 +2020-03-10T02:00,29.6,81,24.5,0,0,4.1,5.6 +2020-03-10T03:00,28.3,82,23.5,0,0,4.8,6.3 +2020-03-10T04:00,28.9,75,22,0,0,4.3,6.7 +2020-03-10T05:00,29.4,68,20.3,0,0,5.2,7.8 +2020-03-10T06:00,29.1,68,19.9,0,0,4.8,9.4 +2020-03-10T07:00,30.7,67,21,0,0,5.1,7.8 +2020-03-10T08:00,38.5,56,24,0,0,4.1,10.1 +2020-03-10T09:00,46.6,44,25.9,0,0,2.8,9.2 +2020-03-10T10:00,53,32,23.7,0,0,5.7,13.2 +2020-03-10T11:00,56.1,27,22.5,0,0,6.9,15.4 +2020-03-10T12:00,57.8,27,24.2,0,0,7.5,16.6 +2020-03-10T13:00,58.5,28,25.5,0,0,8.9,19 +2020-03-10T14:00,58.8,29,26.7,0,0,9.5,20.4 +2020-03-10T15:00,60.6,27,26.6,0,0,5.4,19.2 +2020-03-10T16:00,60.1,22,21.1,0,0,10.7,19 +2020-03-10T17:00,57.1,30,26.2,0,0,7.4,20.8 +2020-03-10T18:00,47.2,45,27.1,0,0,6.5,12.8 +2020-03-10T19:00,48.6,40,25.4,0,0,4.4,8.7 +2020-03-10T20:00,42.7,54,27.3,0,0,4.8,6.9 +2020-03-10T21:00,40.7,62,28.7,0,0,13.1,17.9 +2020-03-10T22:00,40.6,59,27.3,0,0,9.2,21 +2020-03-10T23:00,36.3,69,27.1,0,0,5.6,14.8 +2020-03-11T00:00,35.9,65,25.2,0,0,6.3,9.8 +2020-03-11T01:00,35,66,24.8,0,0,5.8,10.7 +2020-03-11T02:00,33.1,66,23.1,0,0,5.1,9.4 +2020-03-11T03:00,29.5,76,22.7,0,0,6.3,7.8 +2020-03-11T04:00,28.4,78,22.4,0,0,5.7,8.1 +2020-03-11T05:00,28.3,76,21.7,0,0,5.3,7.6 +2020-03-11T06:00,27.9,73,20.5,0,0,4.7,8.1 +2020-03-11T07:00,32.3,61,20.2,0,0,6,9.2 +2020-03-11T08:00,41.5,48,23.5,0,0,6.2,12.3 +2020-03-11T09:00,48.6,41,26.2,0,0,5.2,11.9 +2020-03-11T10:00,54.3,33,26,0,0,5.4,13.4 +2020-03-11T11:00,59.1,27,25.3,0,0,5.4,13.6 +2020-03-11T12:00,62.1,24,24.7,0,0,6.1,14.8 +2020-03-11T13:00,63.8,24,26.6,0,0,5.2,14.8 +2020-03-11T14:00,64.9,24,27.3,0,0,4.7,13.6 +2020-03-11T15:00,65,24,27.6,0,0,7.1,14.1 +2020-03-11T16:00,63.8,25,27,0,0,8.6,16.6 +2020-03-11T17:00,61.8,53,44.4,0,0,2.9,15.7 +2020-03-11T18:00,60.3,34,31.5,0,0,4.7,6.7 +2020-03-11T19:00,48.5,53,32.3,0,0,5.4,5.4 +2020-03-11T20:00,49.1,45,28.6,0,0,9.2,15.2 +2020-03-11T21:00,45.1,50,27.8,0,0,6.5,15.2 +2020-03-11T22:00,40.5,57,26.6,0,0,7.6,11 +2020-03-11T23:00,42.2,54,26.7,0,0,7.8,10.1 +2020-03-12T00:00,43,44,22.5,0,0,13,24.4 +2020-03-12T01:00,43.8,43,22.5,0,0,9.9,23 +2020-03-12T02:00,39.8,53,24.1,0,0,6.2,15.9 +2020-03-12T03:00,36,64,24.9,0,0,7.8,9.4 +2020-03-12T04:00,36.5,62,24.5,0,0,4,9.2 +2020-03-12T05:00,36.4,70,27.4,0,0,4.6,7.2 +2020-03-12T06:00,37.3,67,27.3,0,0,4.5,8.5 +2020-03-12T07:00,39.4,63,27.9,0,0,4,7.2 +2020-03-12T08:00,43.5,57,29.4,0,0,9.1,13 +2020-03-12T09:00,46.8,51,29.5,0,0,9.7,22.1 +2020-03-12T10:00,48.6,49,30.2,0,0,6.5,18.6 +2020-03-12T11:00,49.8,48,30.9,0,0,8.8,17.9 +2020-03-12T12:00,50.5,48,31.7,0,0,11.9,23.3 +2020-03-12T13:00,51.6,45,30.8,0,0,8.4,23.5 +2020-03-12T14:00,49.7,47,30.1,0,0,10.3,18.3 +2020-03-12T15:00,44.5,58,30.7,0,0,12.7,25.7 +2020-03-12T16:00,46.1,54,30.3,0,0,8.6,22.8 +2020-03-12T17:00,42,56,27.5,0,0,12.3,17 +2020-03-12T18:00,38.5,65,27.6,0,0,8.5,21.9 +2020-03-12T19:00,37.5,68,27.8,0,0,5.1,13.9 +2020-03-12T20:00,37.5,67,27.5,0,0,4.4,9.8 +2020-03-12T21:00,37.2,68,27.6,0,0,2.2,7.8 +2020-03-12T22:00,36.8,70,27.9,0,0,1.5,4.9 +2020-03-12T23:00,36.1,72,28,0,0,2.2,4.7 +2020-03-13T00:00,36.6,71,28.2,0,0,3.4,6.3 +2020-03-13T01:00,36.4,71,28,0,0,7.9,12.8 +2020-03-13T02:00,34.5,76,27.9,0,0,11.1,17.9 +2020-03-13T03:00,32.2,84,27.8,0,0,11.4,19.9 +2020-03-13T04:00,31.5,86,27.7,0,0,9.6,19.2 +2020-03-13T05:00,31,84,26.8,0,0,6.5,16.1 +2020-03-13T06:00,31.6,81,26.5,0,0,6,11.4 +2020-03-13T07:00,31,82,26.2,0,0,7,12.5 +2020-03-13T08:00,30.7,84,26.5,0,0.11,6.2,12.8 +2020-03-13T09:00,31.4,83,26.8,0,0.138,3.7,12.1 +2020-03-13T10:00,33.8,76,27.1,0,0.028,1.8,9.2 +2020-03-13T11:00,38.6,60,25.9,0,0,5.5,12.3 +2020-03-13T12:00,41.8,50,24.6,0,0,9.6,17.4 +2020-03-13T13:00,44.1,47,25.1,0,0,10.8,20.8 +2020-03-13T14:00,45.8,44,25.2,0,0,13.2,23 +2020-03-13T15:00,42.1,51,25.2,0,0,18.6,32.2 +2020-03-13T16:00,40.3,54,25.2,0,0,17.6,32.2 +2020-03-13T17:00,36.8,56,22.5,0,0,10.8,29.8 +2020-03-13T18:00,36.6,58,23.3,0,0,10,18.3 +2020-03-13T19:00,35.1,63,23.8,0,0,3,16.8 +2020-03-13T20:00,33.3,70,24.4,0,0,2,5.1 +2020-03-13T21:00,30.9,74,23.6,0,0,2.6,4.7 +2020-03-13T22:00,31.4,71,23.2,0,0,0.7,4.5 +2020-03-13T23:00,29.3,89,26.3,0,0,4,6 +2020-03-14T00:00,28.8,92,26.8,0,0,5.6,9.2 +2020-03-14T01:00,28.4,88,25.4,0,0,4.7,10.5 +2020-03-14T02:00,28.1,87,24.8,0,0,4.8,8.9 +2020-03-14T03:00,27.8,86,24,0,0,4.9,9.2 +2020-03-14T04:00,27.2,86,23.5,0,0,4.5,8.5 +2020-03-14T05:00,26.8,95,25.5,0,0,6.1,7.8 +2020-03-14T06:00,27.1,94,25.6,0,0,3.8,10.5 +2020-03-14T07:00,27.8,90,25.3,0,0,2.3,7.4 +2020-03-14T08:00,29,85,25.1,0,0,2,7.2 +2020-03-14T09:00,30.5,80,25,0,0,1.9,8.3 +2020-03-14T10:00,33.5,72,25.6,0,0,2.3,9.4 +2020-03-14T11:00,38.2,64,27.2,0,0,2.9,11.6 +2020-03-14T12:00,42.5,57,28.3,0,0,4,13.2 +2020-03-14T13:00,46.6,51,29.5,0,0,4.7,14.1 +2020-03-14T14:00,49.4,47,30.2,0,0,6.5,15.7 +2020-03-14T15:00,51.4,45,30.5,0,0,8.6,17.9 +2020-03-14T16:00,50.1,47,30.4,0,0,9.6,19 +2020-03-14T17:00,43.2,60,30,0,0,11.3,18.6 +2020-03-14T18:00,41.5,63,29.8,0,0,8.8,19 +2020-03-14T19:00,40.6,66,30,0,0,8.9,15.4 +2020-03-14T20:00,38.2,73,30.2,0,0,8.2,14.8 +2020-03-14T21:00,34.7,82,29.8,0,0,5.2,13.4 +2020-03-14T22:00,33.1,87,29.6,0,0,4.2,8.5 +2020-03-14T23:00,30.5,94,29,0,0,4.2,6.7 +2020-03-15T00:00,29.1,94,27.6,0,0,3.7,4.7 +2020-03-15T01:00,28.7,96,27.6,0,0,4.1,6 +2020-03-15T02:00,28.3,99,28,0,0,3.5,8.3 +2020-03-15T03:00,29.4,95,28.1,0,0,4.3,7.2 +2020-03-15T04:00,29.4,93,27.5,0,0,4.3,8.7 +2020-03-15T05:00,29.1,93,27.2,0,0,1.5,7.2 +2020-03-15T06:00,29.4,93,27.5,0,0,2.8,5.1 +2020-03-15T07:00,29.8,92,27.8,0,0,5.1,9.8 +2020-03-15T08:00,31,88,27.8,0,0,4.5,10.5 +2020-03-15T09:00,35.2,76,28.2,0,0,2.5,10.7 +2020-03-15T10:00,40.5,65,29.7,0,0,5.2,13.4 +2020-03-15T11:00,45.1,57,31,0,0,4.8,14.5 +2020-03-15T12:00,49.4,53,32.7,0,0,4.8,14.1 +2020-03-15T13:00,52.1,50,33.9,0,0,6.1,15.4 +2020-03-15T14:00,53.1,49,34.3,0,0,6.6,15.7 +2020-03-15T15:00,54,47,34.1,0,0,6.3,16.1 +2020-03-15T16:00,54.1,45,33.4,0,0,6.4,15 +2020-03-15T17:00,52.1,47,32.5,0,0,7.8,13.6 +2020-03-15T18:00,46.3,62,34.1,0,0,4.4,13.2 +2020-03-15T19:00,43.7,69,34.3,0,0,4.3,8.3 +2020-03-15T20:00,39.8,81,34.6,0,0,4.7,6.7 +2020-03-15T21:00,36.8,90,34.1,0,0,3.2,6 +2020-03-15T22:00,34,93,32.3,0,0,1.6,4.9 +2020-03-15T23:00,31.9,95,30.7,0,0,3.2,4.9 +2020-03-16T00:00,30.4,93,28.6,0,0,4.4,5.6 +2020-03-16T01:00,31.3,85,27.3,0,0,2.6,6 +2020-03-16T02:00,28.8,87,25.3,0,0,3.3,3.8 +2020-03-16T03:00,28.1,88,25,0,0,2.8,4.5 +2020-03-16T04:00,27.3,89,24.5,0,0,4.2,6.7 +2020-03-16T05:00,28.1,80,22.8,0,0,4.9,6.7 +2020-03-16T06:00,27.1,82,22.3,0,0,5.5,7.2 +2020-03-16T07:00,30.9,73,23.3,0,0,5.9,8.7 +2020-03-16T08:00,39.9,57,25.7,0,0,4.1,10.3 +2020-03-16T09:00,48.2,44,27.3,0,0,3.6,10.3 +2020-03-16T10:00,54.3,35,27.1,0,0,5.1,12.8 +2020-03-16T11:00,58.6,26,24.1,0,0,6.2,14.8 +2020-03-16T12:00,61.4,21,20.9,0,0,5.4,14.8 +2020-03-16T13:00,63,17,17.4,0,0,6.8,15.2 +2020-03-16T14:00,64.3,15,15.9,0,0,8.1,16.8 +2020-03-16T15:00,64.5,13,12.4,0,0,7.8,17.7 +2020-03-16T16:00,59.2,37,33.1,0,0,12,20.4 +2020-03-16T17:00,49.6,52,32.6,0,0,12.4,24.6 +2020-03-16T18:00,43.7,64,32.4,0,0,13.6,23 +2020-03-16T19:00,41.2,69,31.9,0,0,9.6,22.8 +2020-03-16T20:00,39.6,74,32.1,0,0,10.1,17.4 +2020-03-16T21:00,38.1,80,32.6,0,0,7,17.4 +2020-03-16T22:00,37.9,81,32.7,0,0,5.4,12.5 +2020-03-16T23:00,37.8,82,32.6,0,0,5.2,10.3 +2020-03-17T00:00,37.9,82,32.7,0,0,4.7,9.4 +2020-03-17T01:00,37.6,83,32.8,0,0,6.5,11.4 +2020-03-17T02:00,37.7,83,32.9,0,0,3.6,11.4 +2020-03-17T03:00,37.9,82,33,0,0,0.8,6.7 +2020-03-17T04:00,37,86,33.3,0,0,4.9,8.5 +2020-03-17T05:00,37.2,84,32.8,0,0,5.6,10.7 +2020-03-17T06:00,36.6,86,32.8,0,0,5.4,11 +2020-03-17T07:00,36,88,32.8,0,0,4,9.6 +2020-03-17T08:00,36.7,86,33,0,0,2.9,8.5 +2020-03-17T09:00,38.2,83,33.4,0,0,3.3,9.4 +2020-03-17T10:00,41.4,74,33.6,0,0,3.8,11.4 +2020-03-17T11:00,43.9,68,34.2,0,0,7.5,16.8 +2020-03-17T12:00,45.7,65,34.6,0,0,9.1,20.4 +2020-03-17T13:00,50.4,56,35.2,0,0,7.1,20.1 +2020-03-17T14:00,54.8,50,36.2,0,0,6.5,17 +2020-03-17T15:00,55.7,49,37,0,0,6.9,16.6 +2020-03-17T16:00,55.9,50,37.5,0,0,3.8,15.4 +2020-03-17T17:00,50.7,54,34.7,0,0,9,10.1 +2020-03-17T18:00,47.3,64,35.7,0,0,2.1,14.8 +2020-03-17T19:00,45.1,72,36.5,0,0,2.9,4.5 +2020-03-17T20:00,43.3,77,36.4,0,0,3.1,3.6 +2020-03-17T21:00,40.1,85,36.1,0,0,4,6.3 +2020-03-17T22:00,37,86,33.2,0,0,5.3,6.5 +2020-03-17T23:00,39.8,70,30.7,0,0,1.9,6.5 +2020-03-18T00:00,35.3,83,30.6,0,0,2.7,2.7 +2020-03-18T01:00,33.4,83,28.7,0,0,3.1,4.5 +2020-03-18T02:00,31.2,86,27.4,0,0,3.2,3.8 +2020-03-18T03:00,30.3,85,26.3,0,0,4.1,4.7 +2020-03-18T04:00,29.1,84,25,0,0,4.6,5.4 +2020-03-18T05:00,27.5,85,23.7,0,0,4.8,5.8 +2020-03-18T06:00,27.5,80,22.3,0,0,4.2,6 +2020-03-18T07:00,31.8,69,22.7,0,0,4.7,8.1 +2020-03-18T08:00,40.1,54,24.6,0,0,4.1,9.6 +2020-03-18T09:00,49.4,40,25.9,0,0,4.6,11.6 +2020-03-18T10:00,57.7,31,27.2,0,0,4.7,11.9 +2020-03-18T11:00,62.2,20,21,0,0,10.7,20.1 +2020-03-18T12:00,63.5,20,21.4,0,0,13.5,24.6 +2020-03-18T13:00,63.9,18,20.1,0,0,15.7,31.8 +2020-03-18T14:00,64,18,19.3,0,0,15.6,28.9 +2020-03-18T15:00,63.2,20,20.9,0,0,14.2,28.4 +2020-03-18T16:00,62.4,20,21.2,0,0,11.4,25.3 +2020-03-18T17:00,56.2,44,34.7,0,0,8.4,19.7 +2020-03-18T18:00,51.6,48,32.6,0,0,10.9,20.4 +2020-03-18T19:00,48.6,63,36.6,0,0,19.6,33.6 +2020-03-18T20:00,47.2,69,37.7,0,0,17.9,32.4 +2020-03-18T21:00,45.4,78,39.1,0,0,15.6,30 +2020-03-18T22:00,43.5,83,38.8,0.004,0,16.2,28 +2020-03-18T23:00,41.5,85,37.2,0.004,0,13.7,27.1 +2020-03-19T00:00,40.6,85,36.4,0,0,13.2,23.3 +2020-03-19T01:00,40.6,84,36.2,0,0,12.5,22.1 +2020-03-19T02:00,40.4,84,36.1,0,0,12.7,21.9 +2020-03-19T03:00,39.8,87,36.1,0.004,0,10.5,21.5 +2020-03-19T04:00,38.8,94,37.2,0.024,0,11,18.3 +2020-03-19T05:00,36.2,100,36.2,0.043,0,11.4,18.6 +2020-03-19T06:00,36,100,35.9,0.047,0.028,11.5,19 +2020-03-19T07:00,35.7,100,35.6,0.047,0.276,11.7,18.3 +2020-03-19T08:00,35.5,100,35.4,0.039,0.386,13.7,21 +2020-03-19T09:00,35.4,100,35.3,0.039,0.579,18.1,27.3 +2020-03-19T10:00,35.5,100,35.4,0.039,0.772,16.9,28.4 +2020-03-19T11:00,34.6,99,34.3,0.039,0.661,18.3,29.5 +2020-03-19T12:00,34.7,97,33.9,0.028,0.661,18.1,29.8 +2020-03-19T13:00,34.5,95,33.4,0.016,0.551,16.2,30.2 +2020-03-19T14:00,33.9,93,32.2,0.008,0.524,16.7,29.1 +2020-03-19T15:00,33.2,92,31.1,0.004,0.441,15.2,28.4 +2020-03-19T16:00,32.5,88,29.3,0,0.248,13.7,25.1 +2020-03-19T17:00,31.3,91,28.9,0,0.193,13.1,22.6 +2020-03-19T18:00,29.5,93,27.7,0,0.11,8.7,21.7 +2020-03-19T19:00,29.2,94,27.8,0,0.083,5.7,14.3 +2020-03-19T20:00,28.8,94,27.1,0,0.083,5.5,9.2 +2020-03-19T21:00,28.4,90,26,0,0.083,4.2,9.6 +2020-03-19T22:00,27.9,91,25.7,0,0.083,3.8,7.2 +2020-03-19T23:00,27,94,25.3,0,0.083,3.4,6 +2020-03-20T00:00,26.2,93,24.4,0,0.11,2.9,5.6 +2020-03-20T01:00,25.7,92,23.6,0,0.083,3.8,6 +2020-03-20T02:00,25.3,90,22.8,0,0.028,3.6,6.5 +2020-03-20T03:00,25,91,22.6,0,0.028,4,6.3 +2020-03-20T04:00,24.7,91,22.5,0,0.028,4.9,7.6 +2020-03-20T05:00,22.1,88,19.2,0,0,6.1,9.4 +2020-03-20T06:00,21.3,88,18.2,0,0.055,5.3,9.6 +2020-03-20T07:00,20.9,87,17.8,0,0.028,5.6,8.9 +2020-03-20T08:00,21.1,86,17.6,0,0,6.5,11.2 +2020-03-20T09:00,21.6,85,17.8,0,0,7.2,12.5 +2020-03-20T10:00,22.1,82,17.4,0,0,6.7,13.2 +2020-03-20T11:00,22.9,77,16.8,0,0,4.4,12.1 +2020-03-20T12:00,23.7,78,18,0,0,7.3,12.8 +2020-03-20T13:00,25.1,85,21.2,0,0,8.8,15.7 +2020-03-20T14:00,24.7,90,22.2,0,0,9,15.9 +2020-03-20T15:00,24.1,90,21.6,0,0,6.8,15.9 +2020-03-20T16:00,24.4,88,21.3,0,0,5.6,12.3 +2020-03-20T17:00,20.8,88,17.7,0,0,5.5,9.8 +2020-03-20T18:00,20.3,88,17.2,0,0,1.8,8.7 +2020-03-20T19:00,19.9,88,17,0,0.165,2.8,4.7 +2020-03-20T20:00,18,92,16,0,0,5.7,9.2 +2020-03-20T21:00,16.1,92,14.3,0,0,4.6,9.6 +2020-03-20T22:00,16.3,94,15,0,0,4.5,6.7 +2020-03-20T23:00,17.8,94,16.4,0,0,2.1,5.4 +2020-03-21T00:00,16.4,95,15.4,0,0,1.8,2.7 +2020-03-21T01:00,14.4,97,13.7,0,0,2.2,2.7 +2020-03-21T02:00,8.6,91,6.5,0,0,3.6,4.5 +2020-03-21T03:00,7.3,86,4,0,0,4.4,5.4 +2020-03-21T04:00,8.1,83,3.9,0,0,4.6,6.5 +2020-03-21T05:00,8.4,78,3,0,0,6.5,8.3 +2020-03-21T06:00,8.7,80,3.7,0,0,7.2,8.5 +2020-03-21T07:00,9.8,80,4.9,0,0,6.8,9.2 +2020-03-21T08:00,16.2,76,10,0,0,6,8.1 +2020-03-21T09:00,25.5,71,17.5,0,0,4.2,7.4 +2020-03-21T10:00,32.7,71,24.3,0,0,4.1,6.7 +2020-03-21T11:00,35.1,73,27.2,0,0,3.9,7.8 +2020-03-21T12:00,37,72,28.8,0,0,3.6,6.3 +2020-03-21T13:00,38.1,68,28.5,0,0,3.8,5.8 +2020-03-21T14:00,36.7,76,29.8,0,0,4.1,6 +2020-03-21T15:00,36.7,77,30.2,0,0,3.4,6 +2020-03-21T16:00,35.9,80,30.4,0,0,3.8,7.6 +2020-03-21T17:00,34.6,87,31,0,0,3.9,6.3 +2020-03-21T18:00,33.4,77,26.9,0.004,0.055,6.5,8.5 +2020-03-21T19:00,31.6,80,26.2,0.004,0,6.2,7.8 +2020-03-21T20:00,31.3,85,27.3,0,0,5.1,7.6 +2020-03-21T21:00,30.2,88,27.1,0,0,4.9,8.3 +2020-03-21T22:00,25.6,91,23.4,0,0,7.7,9.6 +2020-03-21T23:00,21.7,93,20.1,0,0,6.8,9.6 +2020-03-22T00:00,20,89,17.2,0,0,6.8,8.3 +2020-03-22T01:00,18.2,86,14.6,0,0,6.9,8.7 +2020-03-22T02:00,18,85,14.3,0,0,6.4,8.5 +2020-03-22T03:00,18.1,85,14.4,0,0,5.3,7.8 +2020-03-22T04:00,13.5,89,10.9,0,0,6.3,7.8 +2020-03-22T05:00,13.5,86,10,0,0,7.3,8.1 +2020-03-22T06:00,11.5,88,8.5,0,0,7.6,9.4 +2020-03-22T07:00,15,86,11.5,0,0,5.8,9.4 +2020-03-22T08:00,21.7,83,17.4,0,0,3.9,7.2 +2020-03-22T09:00,30.7,78,24.7,0,0,2.4,6.9 +2020-03-22T10:00,32.2,78,26.2,0,0,7.8,11.6 +2020-03-22T11:00,31.5,78,25.5,0,0,4.5,14.8 +2020-03-22T12:00,33.9,74,26.6,0,0,3,8.1 +2020-03-22T13:00,35.3,74,28,0,0,1.6,5.4 +2020-03-22T14:00,37,76,29.9,0,0,2.8,4.9 +2020-03-22T15:00,37.9,74,30.5,0,0,3.7,6.5 +2020-03-22T16:00,37.9,75,30.8,0,0,5,7.6 +2020-03-22T17:00,37.9,80,32.3,0,0,5.7,8.1 +2020-03-22T18:00,40.7,70,31.8,0,0,4.1,7.8 +2020-03-22T19:00,33.6,83,29,0,0,4.2,4.9 +2020-03-22T20:00,24.2,95,23,0,0,6.3,8.5 +2020-03-22T21:00,22.5,90,20,0,0,6.7,8.3 +2020-03-22T22:00,20,84,16.1,0,0,7,8.5 +2020-03-22T23:00,17,84,13,0,0,7.6,9.4 +2020-03-23T00:00,16,83,11.8,0,0,6.8,10.3 +2020-03-23T01:00,12.5,87,9.3,0,0,7.9,10.1 +2020-03-23T02:00,11.3,89,8.7,0,0,7.7,10.1 +2020-03-23T03:00,13.5,87,10.4,0,0,6,9.8 +2020-03-23T04:00,10.9,88,8.1,0,0,6.5,8.3 +2020-03-23T05:00,14.4,83,10.1,0,0,7.2,8.3 +2020-03-23T06:00,12.6,85,8.9,0,0,5.9,9.8 +2020-03-23T07:00,13.9,82,9.5,0,0,5.1,7.8 +2020-03-23T08:00,22.2,78,16.5,0,0,4.5,7.2 +2020-03-23T09:00,32.4,70,23.5,0,0,2.6,6.5 +2020-03-23T10:00,37.3,70,28.6,0,0,3.4,6.7 +2020-03-23T11:00,41,64,29.8,0,0,4.3,6.9 +2020-03-23T12:00,44.9,54,29,0,0,4.2,7.4 +2020-03-23T13:00,44.6,59,31.1,0,0,4.3,6.5 +2020-03-23T14:00,44.8,63,32.8,0,0,4.6,9.6 +2020-03-23T15:00,46.4,56,31.6,0,0,4.5,9.6 +2020-03-23T16:00,51.1,43,29.3,0,0,0.9,6.9 +2020-03-23T17:00,45.5,68,35.6,0,0,6.4,5.6 +2020-03-23T18:00,38.8,74,31.2,0,0,5.9,11 +2020-03-23T19:00,37.5,78,31.2,0,0,5.4,11.2 +2020-03-23T20:00,33.3,87,29.8,0,0,6.6,8.9 +2020-03-23T21:00,35.6,85,31.6,0,0,4.1,8.7 +2020-03-23T22:00,27.8,96,26.9,0,0,4,5.1 +2020-03-23T23:00,23.8,96,22.8,0,0,5,6.5 +2020-03-24T00:00,24.8,92,22.7,0,0,5.2,7.8 +2020-03-24T01:00,23,92,20.9,0,0,6,8.3 +2020-03-24T02:00,19.8,93,18.1,0,0,7.5,10.1 +2020-03-24T03:00,26.2,83,21.6,0,0,5.4,9.6 +2020-03-24T04:00,23.4,81,18.3,0,0,5.7,7.2 +2020-03-24T05:00,25.7,84,21.5,0,0,6,6.9 +2020-03-24T06:00,26.8,82,22,0,0,6.8,8.3 +2020-03-24T07:00,31.7,81,26.4,0,0,4.8,8.3 +2020-03-24T08:00,37.2,78,31.1,0,0,1.1,6.3 +2020-03-24T09:00,39.7,76,32.7,0,0,3,5.1 +2020-03-24T10:00,46.9,54,31,0,0,2,5.6 +2020-03-24T11:00,51.7,44,30.7,0,0,2.9,10.3 +2020-03-24T12:00,54.9,30,24.2,0,0,6,14.8 +2020-03-24T13:00,56.4,29,24.5,0,0,4.7,14.8 +2020-03-24T14:00,57.3,28,24.4,0,0,6.5,14.8 +2020-03-24T15:00,57.7,27,23.8,0,0,6.9,15.2 +2020-03-24T16:00,57.5,27,23.8,0,0,6,14.5 +2020-03-24T17:00,54.5,49,36,0,0,4,12.5 +2020-03-24T18:00,47.4,61,34.7,0,0,7.2,8.1 +2020-03-24T19:00,42.2,65,31.4,0,0,4.5,8.5 +2020-03-24T20:00,36.1,77,29.7,0,0,5.8,8.1 +2020-03-24T21:00,34.2,81,29,0,0,4.1,7.2 +2020-03-24T22:00,32.5,84,28.3,0,0,4.4,7.2 +2020-03-24T23:00,32.4,81,27.1,0,0,4.8,7.6 +2020-03-25T00:00,30.4,83,26,0,0,4.3,7.6 +2020-03-25T01:00,29.5,81,24.4,0,0,4.9,7.8 +2020-03-25T02:00,29,77,22.6,0,0,5,8.7 +2020-03-25T03:00,28.8,75,21.9,0,0,4.4,8.1 +2020-03-25T04:00,28.9,75,22.1,0,0,4.4,7.2 +2020-03-25T05:00,28,77,21.8,0,0,6,7.2 +2020-03-25T06:00,30.6,70,22.1,0,0,3.7,7.2 +2020-03-25T07:00,36.3,62,24.4,0,0,5.8,9.2 +2020-03-25T08:00,44.9,53,28.6,0,0,5.6,11.2 +2020-03-25T09:00,50.4,43,28.7,0,0,4.5,11.2 +2020-03-25T10:00,55.1,33,26.8,0,0,3.1,11.2 +2020-03-25T11:00,57.3,32,27.7,0,0,5.1,12.8 +2020-03-25T12:00,58.7,29,26.3,0,0,6.9,15.2 +2020-03-25T13:00,60.4,26,25.1,0,0,4.5,15.9 +2020-03-25T14:00,61.7,22,22,0,0,4,12.3 +2020-03-25T15:00,62.2,20,20.7,0,0,3.5,11.2 +2020-03-25T16:00,61.7,20,20.5,0,0,5.6,11 +2020-03-25T17:00,55.5,42,32.8,0,0,3.7,11.2 +2020-03-25T18:00,50.7,51,33.3,0,0,4.1,6.7 +2020-03-25T19:00,45.1,60,32.1,0,0,5,6 +2020-03-25T20:00,42.6,67,32.5,0,0,3.1,6.3 +2020-03-25T21:00,40.5,71,31.6,0,0,4.6,5.6 +2020-03-25T22:00,37.7,72,29.5,0,0,5.6,8.3 +2020-03-25T23:00,38,68,28.3,0,0,7.3,11.2 +2020-03-26T00:00,38.1,62,26.4,0,0,6.3,13 +2020-03-26T01:00,36.1,65,25.3,0,0,4.5,10.3 +2020-03-26T02:00,34.8,67,25.1,0,0,4.4,6.7 +2020-03-26T03:00,33.9,70,25.1,0,0,4,6.9 +2020-03-26T04:00,31,77,24.7,0,0,2.5,6.9 +2020-03-26T05:00,29,82,24.4,0,0,6.7,3.6 +2020-03-26T06:00,29.1,82,24.3,0,0,5.4,8.1 +2020-03-26T07:00,33.5,72,25.4,0,0,1.1,6.7 +2020-03-26T08:00,38.1,66,27.8,0,0,2.2,7.6 +2020-03-26T09:00,40.3,69,30.8,0,0,3.8,11.4 +2020-03-26T10:00,43.2,66,32.5,0,0,4.1,12.3 +2020-03-26T11:00,46.8,61,33.9,0,0,5.6,14.8 +2020-03-26T12:00,50.7,56,35.5,0,0,7.7,17.4 +2020-03-26T13:00,54.7,51,37,0,0,8.4,19.2 +2020-03-26T14:00,58,49,39,0,0,6.7,18.6 +2020-03-26T15:00,58.7,51,40.6,0,0,7.4,16.3 +2020-03-26T16:00,57.1,54,40.6,0,0,10.7,19.9 +2020-03-26T17:00,50,57,35.2,0,0,7.3,20.8 +2020-03-26T18:00,46.1,67,35.6,0,0,3.9,12.5 +2020-03-26T19:00,41.1,79,35.1,0,0,6.5,7.6 +2020-03-26T20:00,40.9,79,34.9,0,0,4.9,7.6 +2020-03-26T21:00,38.8,85,34.6,0,0,5.1,6.3 +2020-03-26T22:00,39.4,81,34.1,0,0,3.8,6.3 +2020-03-26T23:00,39,83,34.2,0,0,3.8,4.5 +2020-03-27T00:00,38.1,85,34.1,0,0,2.9,4.7 +2020-03-27T01:00,38.3,82,33.4,0,0,1.8,4.7 +2020-03-27T02:00,37.6,85,33.4,0,0,1.6,2.2 +2020-03-27T03:00,35.9,90,33.4,0,0,2.7,3.8 +2020-03-27T04:00,34.4,92,32.5,0,0,4.8,6.9 +2020-03-27T05:00,32.2,93,30.3,0,0,5.1,10.1 +2020-03-27T06:00,31,96,30,0,0,3.6,8.9 +2020-03-27T07:00,33.4,91,31.1,0,0,5.8,11.2 +2020-03-27T08:00,35.2,81,29.9,0,0,5.9,12.5 +2020-03-27T09:00,37,74,29.4,0,0,5.4,12.8 +2020-03-27T10:00,39.3,68,29.6,0,0,5.9,14.3 +2020-03-27T11:00,41.3,61,28.9,0,0,4.9,14.5 +2020-03-27T12:00,44.2,53,28,0,0,2.1,13.6 +2020-03-27T13:00,46.4,50,28.8,0,0,4.6,13.4 +2020-03-27T14:00,47.5,48,28.7,0,0,6.4,15.9 +2020-03-27T15:00,48.3,46,28.6,0,0,6,15.9 +2020-03-27T16:00,45.4,52,28.7,0.004,0,13,22.4 +2020-03-27T17:00,34.9,80,29.3,0.028,0,12.7,24.2 +2020-03-27T18:00,34.3,81,29,0,0.22,9.7,21.5 +2020-03-27T19:00,33.6,86,29.9,0,0.248,6.8,17 +2020-03-27T20:00,34.1,89,31.3,0,0.22,5.5,12.1 +2020-03-27T21:00,32.9,91,30.6,0.004,0.193,6.2,11.6 +2020-03-27T22:00,32.2,91,29.8,0,0.083,3.2,9.8 +2020-03-27T23:00,32.5,89,29.6,0,0.22,5.2,12.8 +2020-03-28T00:00,31.8,91,29.6,0,0.083,4.7,13.9 +2020-03-28T01:00,31.4,86,27.7,0,0,3.2,7.6 +2020-03-28T02:00,33.1,67,23.4,0,0,2.9,5.1 +2020-03-28T03:00,30.9,58,18.1,0,0,5,8.1 +2020-03-28T04:00,31.9,42,11.6,0,0,8.3,12.8 +2020-03-28T05:00,30.1,39,8,0,0,10.1,18.1 +2020-03-28T06:00,30.8,38,8.4,0,0,17,26.4 +2020-03-28T07:00,32.4,38,9.8,0,0,17.7,29.8 +2020-03-28T08:00,35.9,37,11.8,0,0,11.4,28.9 +2020-03-28T09:00,38.8,33,12.1,0,0,13,23.3 +2020-03-28T10:00,41.4,30,11.9,0,0,14.5,26.4 +2020-03-28T11:00,44,26,11.6,0,0,15.5,28.6 +2020-03-28T12:00,45.8,23,10.3,0,0,17.6,32 +2020-03-28T13:00,46.6,22,9.8,0,0,17.6,32.4 +2020-03-28T14:00,46.9,20,7.9,0,0,15.2,32 +2020-03-28T15:00,46.3,24,11.8,0,0,16.2,29.1 +2020-03-28T16:00,45.4,28,14.3,0,0,15.6,29.1 +2020-03-28T17:00,44.7,31,15.8,0,0,8.9,27.7 +2020-03-28T18:00,40.8,36,15.8,0,0,7.2,15.7 +2020-03-28T19:00,35.2,43,14.7,0,0,5,11.6 +2020-03-28T20:00,31.3,54,16.4,0,0,6.3,8.3 +2020-03-28T21:00,29.4,58,16.3,0,0,4.7,8.1 +2020-03-28T22:00,27.9,62,16.6,0,0,3.9,5.8 +2020-03-28T23:00,27.4,61,15.8,0,0,3.5,5.6 +2020-03-29T00:00,26.2,61,14.5,0,0,4.3,5.8 +2020-03-29T01:00,25.6,60,13.6,0,0,4.1,6 +2020-03-29T02:00,25.4,58,12.8,0,0,3.9,5.8 +2020-03-29T03:00,25.2,58,12.5,0,0,4.2,7.2 +2020-03-29T04:00,24.6,59,12.5,0,0,3.9,6.7 +2020-03-29T05:00,23.5,64,13.3,0,0,4.5,8.5 +2020-03-29T06:00,23.5,63,12.8,0,0,6.4,9.8 +2020-03-29T07:00,27.6,56,14,0,0,8.5,14.5 +2020-03-29T08:00,35.1,49,17.8,0,0,7.4,14.8 +2020-03-29T09:00,42.2,37,17.9,0,0,4.9,14.8 +2020-03-29T10:00,45.2,34,18.4,0,0,4.3,12.5 +2020-03-29T11:00,47.8,30,17.7,0,0,5.1,13.9 +2020-03-29T12:00,50,29,19.1,0,0,5.6,14.8 +2020-03-29T13:00,51.6,27,19,0,0,6.3,15.7 +2020-03-29T14:00,52.8,24,17.2,0,0,7.3,16.1 +2020-03-29T15:00,53.2,23,16.2,0,0,7.1,16.6 +2020-03-29T16:00,53.8,22,15.8,0,0,5.9,15.2 +2020-03-29T17:00,52,28,19.8,0,0,3.4,12.5 +2020-03-29T18:00,47.8,35,21.7,0,0,5.2,7.8 +2020-03-29T19:00,42.8,46,23.2,0,0,4.8,8.5 +2020-03-29T20:00,37.8,60,25,0,0,4.5,9.2 +2020-03-29T21:00,33.6,74,26.2,0,0,4.3,6.5 +2020-03-29T22:00,32.7,75,25.7,0,0,2.7,6 +2020-03-29T23:00,33.3,71,24.8,0.004,0,2.9,7.4 +2020-03-30T00:00,32.2,76,25.4,0,0,3.1,5.4 +2020-03-30T01:00,30.8,79,25.2,0,0,2.5,5.4 +2020-03-30T02:00,30.4,82,25.6,0,0,1.1,9.8 +2020-03-30T03:00,29.7,82,25,0,0.028,1.3,11.4 +2020-03-30T04:00,28.5,88,25.3,0,0.055,1.8,12.8 +2020-03-30T05:00,30,85,26,0,0.055,0.8,13 +2020-03-30T06:00,29.9,88,26.7,0,0,2.7,3.1 +2020-03-30T07:00,33.9,75,26.7,0,0,1.5,4.5 +2020-03-30T08:00,38.7,58,25.2,0,0,0.8,5.6 +2020-03-30T09:00,41.9,49,24,0,0,1.8,8.5 +2020-03-30T10:00,45.9,43,24.6,0,0,1.5,8.5 +2020-03-30T11:00,49.9,40,26.3,0,0,3.4,11 +2020-03-30T12:00,52.5,37,26.9,0,0,5.2,18.6 +2020-03-30T13:00,55.4,34,27.2,0,0,6.6,17.4 +2020-03-30T14:00,51.4,50,33.4,0.031,0,10.9,21.3 +2020-03-30T15:00,52.9,37,27.1,0,0,5.4,21.7 +2020-03-30T16:00,53.5,33,25.4,0,0,5.1,14.5 +2020-03-30T17:00,50.7,43,29.1,0,0,7.3,11.4 +2020-03-30T18:00,47.5,51,30.3,0,0,4.2,13.4 +2020-03-30T19:00,40.1,68,30.4,0,0,3.1,7.2 +2020-03-30T20:00,34.9,85,30.9,0,0,3.4,5.6 +2020-03-30T21:00,31.6,93,29.8,0,0,3.5,5.6 +2020-03-30T22:00,31.2,90,28.7,0,0,4.1,6 +2020-03-30T23:00,30.3,87,27,0,0,5.7,7.2 +2020-03-31T00:00,29.9,85,25.9,0,0,4.7,7.2 +2020-03-31T01:00,29.2,77,22.8,0,0,4.6,7.2 +2020-03-31T02:00,29.2,68,20.1,0,0,4.9,7.4 +2020-03-31T03:00,29.2,64,18.4,0,0,5,7.8 +2020-03-31T04:00,28.9,65,18.4,0,0,6.3,7.6 +2020-03-31T05:00,28.8,66,18.7,0,0,4.5,8.5 +2020-03-31T06:00,28.3,69,19.5,0,0,4.1,5.8 +2020-03-31T07:00,34.3,61,22,0,0,3.2,6.7 +2020-03-31T08:00,43.1,47,24.4,0,0,2.9,8.7 +2020-03-31T09:00,50.8,37,25.7,0,0,6.4,13.2 +2020-03-31T10:00,55.9,29,24,0,0,8,17.2 +2020-03-31T11:00,58.5,26,23.9,0,0,10.2,20.4 +2020-03-31T12:00,60,25,24,0,0,9.3,20.8 +2020-03-31T13:00,62.1,23,24.3,0,0,8.1,19.7 +2020-03-31T14:00,63,23,25,0,0,7,17.7 +2020-03-31T15:00,63.4,23,25.2,0,0,5.3,15.7 +2020-03-31T16:00,63.6,23,25.1,0,0,3,12.8 +2020-03-31T17:00,61.6,29,29.4,0,0,4.1,8.1 +2020-03-31T18:00,53.9,46,33.7,0,0,6.5,7.6 +2020-03-31T19:00,47.9,49,29.5,0,0,8.1,9.8 +2020-03-31T20:00,47.8,46,28.3,0,0,1.8,9.6 +2020-03-31T21:00,43.1,53,27.3,0,0,6.2,9.8 +2020-03-31T22:00,40.6,56,26.1,0,0,4.3,10.1 +2020-03-31T23:00,36.4,70,27.6,0,0,4.8,6.7 +2020-04-01T00:00,36.6,69,27.2,0,0,4.9,7.6 +2020-04-01T01:00,37.8,61,25.5,0,0,1.8,7.6 +2020-04-01T02:00,36.2,65,25.5,0,0,0.7,2.2 +2020-04-01T03:00,31.6,76,25.1,0,0,3.7,4.3 +2020-04-01T04:00,29.9,78,23.8,0,0,4.7,6.3 +2020-04-01T05:00,31.1,74,23.7,0,0,4.2,6.9 +2020-04-01T06:00,32.3,71,23.8,0,0,4.7,7.6 +2020-04-01T07:00,38.4,60,25.6,0,0,4.9,9.2 +2020-04-01T08:00,47,50,29.4,0,0,2.7,8.9 +2020-04-01T09:00,55.8,38,30.7,0,0,4.5,11 +2020-04-01T10:00,62.2,25,26.2,0,0,10.7,19.7 +2020-04-01T11:00,64.6,20,22.4,0,0,10.3,22.8 +2020-04-01T12:00,65.7,20,23.5,0,0,7.9,20.6 +2020-04-01T13:00,66.8,20,24,0,0,8.1,17.7 +2020-04-01T14:00,67.3,19,24,0,0,7.9,17.7 +2020-04-01T15:00,66.9,19,22.9,0,0,4.9,17 +2020-04-01T16:00,66.1,19,22.3,0,0,2,11.9 +2020-04-01T17:00,64.5,31,33.1,0,0,2.9,9.2 +2020-04-01T18:00,57.8,37,31.6,0,0,4.8,7.2 +2020-04-01T19:00,51,44,29.8,0,0,4.6,7.6 +2020-04-01T20:00,50.5,44,29.4,0,0,8.9,15.2 +2020-04-01T21:00,48.5,59,34.8,0,0,11.7,23.3 +2020-04-01T22:00,44.9,78,38.3,0,0,11.3,22.1 +2020-04-01T23:00,46,76,38.8,0,0,11,18.6 +2020-04-02T00:00,44.2,84,39.7,0.004,0,8.7,18.8 +2020-04-02T01:00,42.8,88,39.6,0.004,0,7.9,14.8 +2020-04-02T02:00,41.1,90,38.5,0.004,0,7.6,13.6 +2020-04-02T03:00,39.7,92,37.4,0,0,7.5,13.2 +2020-04-02T04:00,38.5,91,36.1,0,0,7.3,13.2 +2020-04-02T05:00,33.7,75,26.8,0.004,0,8.2,13 +2020-04-02T06:00,32.1,74,24.8,0,0,9.1,15.9 +2020-04-02T07:00,29.9,73,22.4,0,0,11.1,19.7 +2020-04-02T08:00,28.4,71,20.3,0,0,10.8,20.6 +2020-04-02T09:00,25.5,72,17.6,0,0,10.3,19.9 +2020-04-02T10:00,25,71,16.9,0,0,8,19.2 +2020-04-02T11:00,24.9,70,16.6,0,0,8,16.8 +2020-04-02T12:00,25.7,66,15.8,0,0,9.2,18.1 +2020-04-02T13:00,26.9,61,15.4,0,0.028,6.9,18.6 +2020-04-02T14:00,27.2,62,16,0,0.028,4.2,15.7 +2020-04-02T15:00,27.8,63,17,0,0,1.4,11.6 +2020-04-02T16:00,28.1,64,17.4,0,0.028,3.2,9.2 +2020-04-02T17:00,24.3,76,17.8,0,0.11,2.7,9.6 +2020-04-02T18:00,24.9,75,18.2,0,0.083,0.3,7.8 +2020-04-02T19:00,24.6,79,19.1,0,0.11,6.5,10.7 +2020-04-02T20:00,22.9,68,14,0,0.083,9.8,17.7 +2020-04-02T21:00,22,70,13.7,0,0.055,7.8,17.2 +2020-04-02T22:00,21.3,72,13.6,0,0.028,6.8,14.1 +2020-04-02T23:00,20.9,73,13.6,0,0.055,6,12.5 +2020-04-03T00:00,20.6,74,13.7,0,0.083,5.8,11.4 +2020-04-03T01:00,20.5,74,13.6,0,0.055,5.9,11.4 +2020-04-03T02:00,20.7,74,13.8,0,0.055,5.1,11 +2020-04-03T03:00,20.9,74,14,0,0.028,3.7,9.8 +2020-04-03T04:00,21.3,74,14.3,0,0.028,4.2,8.3 +2020-04-03T05:00,19.9,79,14.3,0,0.028,6,9.8 +2020-04-03T06:00,19.6,81,14.7,0,0,4.4,10.1 +2020-04-03T07:00,23.1,72,15.5,0,0,3.1,8.5 +2020-04-03T08:00,26.1,66,16.3,0,0,4.3,11 +2020-04-03T09:00,29.6,59,17.1,0,0,6.3,14.5 +2020-04-03T10:00,33.3,52,17.4,0,0,6.8,16.3 +2020-04-03T11:00,37.9,41,16,0,0,8.2,18.1 +2020-04-03T12:00,40.2,36,15.4,0,0,7.6,18.1 +2020-04-03T13:00,42.5,35,16.8,0,0,6.1,17 +2020-04-03T14:00,43.3,35,17.5,0,0,4.8,15 +2020-04-03T15:00,45.7,34,18.6,0,0,3.7,12.5 +2020-04-03T16:00,46,33,18.8,0,0,3.2,11.6 +2020-04-03T17:00,39.2,47,20.8,0,0,6.3,10.1 +2020-04-03T18:00,38.7,48,20.6,0,0,5.4,11.9 +2020-04-03T19:00,36.4,52,20.6,0,0,10,15 +2020-04-03T20:00,34.5,56,20.5,0,0,9.4,19 +2020-04-03T21:00,33.5,60,21.1,0,0,3.6,14.5 +2020-04-03T22:00,32.7,64,21.7,0,0,3.4,6 +2020-04-03T23:00,30.8,69,22,0,0,2.1,5.6 +2020-04-04T00:00,28.4,78,22.3,0,0,2.2,4.5 +2020-04-04T01:00,26.7,82,21.8,0,0,1.8,4 +2020-04-04T02:00,25.1,86,21.4,0,0,3,4.5 +2020-04-04T03:00,23.8,87,20.4,0,0,2.5,5.1 +2020-04-04T04:00,23.3,87,19.9,0,0,1.8,3.4 +2020-04-04T05:00,20.7,92,18.6,0,0,3.8,4.3 +2020-04-04T06:00,22.6,92,20.6,0,0,1.7,4.7 +2020-04-04T07:00,25.6,85,21.7,0,0,1.6,5.8 +2020-04-04T08:00,29.5,78,23.5,0,0,3.5,10.3 +2020-04-04T09:00,33.8,70,25.2,0,0,4,12.5 +2020-04-04T10:00,38.5,61,26.3,0,0,2.8,12.5 +2020-04-04T11:00,43.9,52,27.2,0,0,4.1,13 +2020-04-04T12:00,49.1,44,28,0,0,5.6,15.7 +2020-04-04T13:00,52.5,39,28.4,0,0,5.9,15.4 +2020-04-04T14:00,55.6,34,27.5,0,0,6,15.4 +2020-04-04T15:00,57.2,29,25.5,0,0,6.7,15 +2020-04-04T16:00,57.2,27,23.6,0,0,7.2,15.4 +2020-04-04T17:00,55.8,35,28.2,0,0,3.3,14.3 +2020-04-04T18:00,50.6,50,32.6,0,0,7,10.7 +2020-04-04T19:00,45.3,63,33.4,0,0,6.8,12.1 +2020-04-04T20:00,42.1,69,32.5,0,0,4.1,11.2 +2020-04-04T21:00,37.9,86,34,0,0,3.5,6.7 +2020-04-04T22:00,35.1,92,33,0,0,3.8,6.3 +2020-04-04T23:00,33.2,91,30.8,0,0,3.4,6 +2020-04-05T00:00,32.1,87,28.7,0,0,4.1,6.3 +2020-04-05T01:00,31.4,82,26.4,0,0,4.6,7.6 +2020-04-05T02:00,30.4,80,25.1,0,0,4,7.6 +2020-04-05T03:00,29.2,82,24.4,0,0,4.3,6.3 +2020-04-05T04:00,30.4,76,23.7,0,0,3.1,5.4 +2020-04-05T05:00,29,78,23.1,0,0,4,5.1 +2020-04-05T06:00,29.3,79,23.7,0,0,3.6,4.9 +2020-04-05T07:00,36.2,65,25.5,0,0,3.4,7.6 +2020-04-05T08:00,45.1,53,28.9,0,0,1.1,7.6 +2020-04-05T09:00,54.1,42,31.6,0,0,2.9,9.6 +2020-04-05T10:00,61.3,30,29.9,0,0,7,15 +2020-04-05T11:00,63.7,26,28,0,0,9.2,18.8 +2020-04-05T12:00,64.8,25,27.8,0,0,8.9,19.2 +2020-04-05T13:00,66,23,27,0,0,10,20.4 +2020-04-05T14:00,66.6,21,25.5,0,0,10.2,20.6 +2020-04-05T15:00,67.3,19,23.6,0,0,11.4,21.9 +2020-04-05T16:00,67.2,18,22.2,0,0,11.4,22.1 +2020-04-05T17:00,63.3,38,37,0,0,6.6,20.6 +2020-04-05T18:00,59,45,37.9,0,0,5.3,11.2 +2020-04-05T19:00,52.2,50,34.3,0,0,7.4,10.3 +2020-04-05T20:00,46.2,52,29.8,0,0,4.8,13.9 +2020-04-05T21:00,44.3,52,27.7,0,0,6.3,10.7 +2020-04-05T22:00,40.7,60,28,0,0,4.5,10.5 +2020-04-05T23:00,39.4,64,28.4,0,0,4.4,7.2 +2020-04-06T00:00,37.7,65,27.1,0,0,4.1,6.7 +2020-04-06T01:00,35.9,65,25.2,0,0,5.2,7.4 +2020-04-06T02:00,36.2,59,23.2,0,0,4.9,7.6 +2020-04-06T03:00,35.5,60,23,0,0,5.2,8.3 +2020-04-06T04:00,34.4,62,22.8,0,0,4.8,8.3 +2020-04-06T05:00,35.1,60,22.4,0,0,5.1,7.8 +2020-04-06T06:00,34,65,23.4,0,0,3.8,8.3 +2020-04-06T07:00,40.8,55,26.1,0,0,3.5,8.1 +2020-04-06T08:00,50.8,45,30.3,0,0,1.7,7.6 +2020-04-06T09:00,59.8,33,30.8,0,0,3.5,10.1 +2020-04-06T10:00,64.9,20,22.7,0,0,6.3,14.3 +2020-04-06T11:00,66.7,15,17.8,0,0,9.7,19.5 +2020-04-06T12:00,67.1,16,19.5,0,0,9.8,21.3 +2020-04-06T13:00,68,16,20.1,0,0,8.4,20.4 +2020-04-06T14:00,68.7,15,19.8,0,0,7,18.3 +2020-04-06T15:00,68.9,15,19.6,0,0,6.2,15.9 +2020-04-06T16:00,68.8,15,18.6,0,0,4.7,13.9 +2020-04-06T17:00,67.2,22,27,0,0,4.7,10.7 +2020-04-06T18:00,58.6,39,33.7,0,0,5.9,8.1 +2020-04-06T19:00,56.6,32,27.1,0,0,4,8.5 +2020-04-06T20:00,46.4,48,28,0,0,4.3,7.2 +2020-04-06T21:00,44.1,50,26.4,0,0,5.5,8.7 +2020-04-06T22:00,43.8,44,23.5,0,0,5.7,9.8 +2020-04-06T23:00,41.3,46,21.8,0,0,5.4,9.4 +2020-04-07T00:00,39.1,49,21.6,0,0,5,8.7 +2020-04-07T01:00,37.4,54,22.1,0,0,5.3,7.8 +2020-04-07T02:00,35.9,59,22.9,0,0,4.9,7.4 +2020-04-07T03:00,35.2,61,23.1,0,0,4.4,7.2 +2020-04-07T04:00,34.8,59,21.9,0,0,6.5,8.7 +2020-04-07T05:00,40.1,43,19.2,0,0,4.7,7.8 +2020-04-07T06:00,38.7,46,19.6,0,0,3.9,5.8 +2020-04-07T07:00,42.3,50,24.9,0,0,1.2,5.1 +2020-04-07T08:00,50.4,37,25.3,0,0,4.3,10.5 +2020-04-07T09:00,58.2,28,25.3,0,0,4,11.2 +2020-04-07T10:00,63.1,22,23.7,0,0,3.8,11.9 +2020-04-07T11:00,64.7,18,20.7,0,0,1.9,11.6 +2020-04-07T12:00,65.8,18,21.4,0,0,4.3,12.5 +2020-04-07T13:00,66.6,18,21.2,0,0,6.4,15.4 +2020-04-07T14:00,67.1,17,20.9,0,0,6.2,15.7 +2020-04-07T15:00,67.4,16,20.3,0,0,6.4,15 +2020-04-07T16:00,67.4,16,19.2,0,0,7.4,15.7 +2020-04-07T17:00,67.1,21,25.9,0,0,7.9,15 +2020-04-07T18:00,61.1,39,35.7,0,0,5.1,13 +2020-04-07T19:00,51.4,47,31.9,0,0,6.2,6.7 +2020-04-07T20:00,48,51,30.8,0,0,4.7,7.8 +2020-04-07T21:00,44.9,47,25.6,0,0,4.8,7.6 +2020-04-07T22:00,41.9,45,22.1,0,0,4.8,7.6 +2020-04-07T23:00,41.7,49,23.7,0,0,5.9,9.8 +2020-04-08T00:00,39.9,54,24.7,0,0,4.7,9.8 +2020-04-08T01:00,38.4,56,24.3,0,0,4.4,7.6 +2020-04-08T02:00,37,57,23,0,0,4.8,7.8 +2020-04-08T03:00,35.3,61,23.3,0,0,3.9,7.6 +2020-04-08T04:00,34.2,63,22.7,0,0,4.3,5.8 +2020-04-08T05:00,34.4,65,24,0,0,3.2,7.8 +2020-04-08T06:00,35.6,61,23.4,0,0,4.6,6.9 +2020-04-08T07:00,41.8,53,25.7,0,0,4.5,9.6 +2020-04-08T08:00,50.5,39,26.7,0,0,5,11.4 +2020-04-08T09:00,57.6,24,21,0,0,4.1,11.9 +2020-04-08T10:00,60.9,20,19.9,0,0,4.9,13.4 +2020-04-08T11:00,62.5,20,21.1,0,0,4,13.6 +2020-04-08T12:00,64.3,20,21.9,0,0,3.4,12.8 +2020-04-08T13:00,65.8,20,23.3,0,0,5.3,13.6 +2020-04-08T14:00,66,21,24.5,0,0,9.1,18.8 +2020-04-08T15:00,66.2,22,26.1,0,0,8.5,19.9 +2020-04-08T16:00,65.8,23,26.7,0,0,8.9,17.7 +2020-04-08T17:00,66.5,19,22.8,0,0,5.6,20.4 +2020-04-08T18:00,60.4,31,29.2,0,0,4.9,10.7 +2020-04-08T19:00,52.4,43,30.4,0,0,7.4,8.7 +2020-04-08T20:00,50.8,42,28.4,0,0,5.1,9.6 +2020-04-08T21:00,47.4,49,29,0,0,6.4,10.3 +2020-04-08T22:00,45.7,53,29.4,0,0,7.2,11.9 +2020-04-08T23:00,42.4,61,29.7,0,0,4.3,11.9 +2020-04-09T00:00,40.6,67,30.3,0,0,5,6.7 +2020-04-09T01:00,39.8,69,30.5,0,0,3.6,7.2 +2020-04-09T02:00,39.9,67,29.8,0,0,5.4,8.9 +2020-04-09T03:00,38.1,71,29.5,0,0,4.7,8.9 +2020-04-09T04:00,36.4,76,29.6,0,0,4.2,7.4 +2020-04-09T05:00,35.1,80,29.4,0,0,3.9,4.9 +2020-04-09T06:00,36.5,77,29.9,0,0,3,6.7 +2020-04-09T07:00,39.2,70,30.2,0,0,5.9,10.1 +2020-04-09T08:00,41.9,61,29.5,0,0,11.6,20.8 +2020-04-09T09:00,45.2,53,28.9,0,0,10.3,22.1 +2020-04-09T10:00,48,48,29.2,0,0,10.1,21.5 +2020-04-09T11:00,49.8,44,28.9,0,0,11.1,23.5 +2020-04-09T12:00,52.5,41,29.3,0,0,9.3,23.3 +2020-04-09T13:00,54.5,39,30.1,0,0,6.9,20.8 +2020-04-09T14:00,55.9,38,30.3,0,0,6.4,17.4 +2020-04-09T15:00,56.8,37,30.7,0,0,5.1,16.3 +2020-04-09T16:00,56.4,37,30.3,0,0,4.8,13.9 +2020-04-09T17:00,55.4,42,32.8,0,0,7.3,13.4 +2020-04-09T18:00,53.3,46,32.9,0,0,5.1,14.5 +2020-04-09T19:00,50.5,51,33.2,0,0,2.3,8.1 +2020-04-09T20:00,47.8,61,35.2,0,0,4.1,4.9 +2020-04-09T21:00,46.4,62,34.2,0,0,3.4,4.9 +2020-04-09T22:00,45.3,61,32.5,0,0,3.8,6.3 +2020-04-09T23:00,41.1,74,33.4,0,0,3.9,6.5 +2020-04-10T00:00,38.2,86,34.4,0,0,2.7,5.6 +2020-04-10T01:00,36.6,93,34.8,0,0,2.7,4.9 +2020-04-10T02:00,35.1,95,33.8,0,0,3.2,4.3 +2020-04-10T03:00,35.1,92,32.9,0,0,3.3,5.1 +2020-04-10T04:00,34.4,90,31.8,0,0,5,6 +2020-04-10T05:00,37.8,91,35.4,0,0,4.4,6.3 +2020-04-10T06:00,37,92,34.8,0,0,4.1,6.9 +2020-04-10T07:00,42.4,80,36.9,0,0,4.3,9.2 +2020-04-10T08:00,51.2,63,39.1,0,0,5,11.4 +2020-04-10T09:00,60.6,38,34.9,0,0,6.7,15 +2020-04-10T10:00,65.8,28,31.4,0,0,4.2,19.7 +2020-04-10T11:00,67.6,22,27.2,0,0,5.7,15.9 +2020-04-10T12:00,68.7,19,24.8,0,0,6.7,17 +2020-04-10T13:00,70.3,18,25.4,0,0,8.1,18.1 +2020-04-10T14:00,65.2,29,31.8,0.024,0,7.4,18.1 +2020-04-10T15:00,62.6,29,29.5,0,0,11.2,21.7 +2020-04-10T16:00,66,19,23.1,0,0,5.5,20.4 +2020-04-10T17:00,64.6,22,25.1,0,0,10.2,15 +2020-04-10T18:00,60.1,32,29.8,0,0,10.3,17.9 +2020-04-10T19:00,59.3,26,24.3,0,0,13.6,22.8 +2020-04-10T20:00,56.7,29,25.1,0,0,10.8,22.8 +2020-04-10T21:00,52.4,38,27.7,0,0,8.1,17.7 +2020-04-10T22:00,49.8,43,28.2,0,0,5.8,13.4 +2020-04-10T23:00,46.7,47,27.6,0,0,4.9,9.2 +2020-04-11T00:00,43,54,27.5,0,0,6.6,8.7 +2020-04-11T01:00,40.3,58,26.9,0,0,5.3,8.3 +2020-04-11T02:00,39,61,26.9,0,0,4.3,6.9 +2020-04-11T03:00,38.2,58,24.9,0,0,4.7,6.9 +2020-04-11T04:00,38.3,50,21.4,0,0,5.6,8.5 +2020-04-11T05:00,38.8,47,20,0,0,5.6,11 +2020-04-11T06:00,39.5,46,20.2,0,0,6.5,10.5 +2020-04-11T07:00,45.1,41,23.1,0,0,6,12.8 +2020-04-11T08:00,53.3,33,24.7,0,0,2.9,11.2 +2020-04-11T09:00,60.2,20,19,0,0,5.4,13.4 +2020-04-11T10:00,62.6,17,17.5,0,0,2.9,13.2 +2020-04-11T11:00,64.5,16,18,0,0,0.5,11.2 +2020-04-11T12:00,66,15,16.7,0,0,2.7,11.4 +2020-04-11T13:00,67.4,13,14,0,0,3.3,12.5 +2020-04-11T14:00,69,11,11.4,0,0,2.7,12.3 +2020-04-11T15:00,69.7,8,6.4,0,0,7.7,16.3 +2020-04-11T16:00,68.1,9,8.2,0,0,9.4,19.5 +2020-04-11T17:00,65,16,17.4,0,0,11.7,18.3 +2020-04-11T18:00,60.9,19,18.6,0,0,9,20.4 +2020-04-11T19:00,54,30,23.3,0,0,7.8,14.5 +2020-04-11T20:00,53.9,31,23.6,0,0,4.6,9.4 +2020-04-11T21:00,52.2,34,24.6,0,0,4.3,8.5 +2020-04-11T22:00,51,39,26.9,0,0,10.5,17 +2020-04-11T23:00,47.7,57,33.3,0,0,12.3,19.7 +2020-04-12T00:00,40.6,83,35.8,0.008,0,17,28 +2020-04-12T01:00,36.3,99,36.1,0.028,0.055,13.8,29.3 +2020-04-12T02:00,34.8,96,33.7,0.012,0.11,12.1,22.6 +2020-04-12T03:00,30.7,91,28.2,0.004,0.11,14.4,26.2 +2020-04-12T04:00,27.9,87,24.4,0,0.11,12.1,24.8 +2020-04-12T05:00,23.1,84,19,0,0.193,10.6,21 +2020-04-12T06:00,22.6,83,18.3,0,0.055,9.7,18.3 +2020-04-12T07:00,22.6,80,17.4,0,0.055,10.1,18.3 +2020-04-12T08:00,23.4,75,16.5,0,0.055,10.4,19.9 +2020-04-12T09:00,24.1,66,14.5,0,0.028,10.3,20.1 +2020-04-12T10:00,25.4,63,14.6,0,0.055,10.2,21 +2020-04-12T11:00,26.1,62,14.8,0,0.028,9.3,20.8 +2020-04-12T12:00,27.1,64,16.7,0,0.055,7.4,19.5 +2020-04-12T13:00,28,64,17.5,0,0.028,8.1,18.6 +2020-04-12T14:00,29.6,59,17,0,0.028,9,19.9 +2020-04-12T15:00,30,46,11.5,0,0,10,20.8 +2020-04-12T16:00,29.2,50,12.7,0,0,10.2,21 +2020-04-12T17:00,24.4,58,11.7,0,0.028,7.7,19.9 +2020-04-12T18:00,22.9,61,11.6,0,0,7.6,15.7 +2020-04-12T19:00,21.7,66,12.2,0,0.028,6.7,15 +2020-04-12T20:00,21.9,66,12.3,0,0.055,5.9,13.2 +2020-04-12T21:00,21.7,67,12.3,0,0.055,3.8,11.9 +2020-04-12T22:00,21.3,71,13.4,0,0.083,2.6,8.7 +2020-04-12T23:00,21.2,77,15.1,0,0.055,3,7.2 +2020-04-13T00:00,21.4,77,15.4,0,0.028,3.9,8.1 +2020-04-13T01:00,21.4,75,14.7,0,0.028,4.5,8.7 +2020-04-13T02:00,21.4,75,14.6,0,0.028,5.4,10.1 +2020-04-13T03:00,21.2,75,14.5,0,0.028,6.3,11.9 +2020-04-13T04:00,20.6,78,14.9,0,0.028,8.1,13.9 +2020-04-13T05:00,17.3,77,11.5,0,0.028,10.2,16.3 +2020-04-13T06:00,17.1,76,10.7,0,0.055,8.9,17.9 +2020-04-13T07:00,17,74,10.2,0,0.055,9.4,17.9 +2020-04-13T08:00,17.2,73,10.1,0,0.055,8.2,17.4 +2020-04-13T09:00,17.3,76,11.1,0,0.028,7.6,17 +2020-04-13T10:00,19.3,64,9.2,0,0.028,6.7,14.1 +2020-04-13T11:00,23.2,56,10,0,0.028,6.7,17.4 +2020-04-13T12:00,22,68,13.1,0,0.028,8.2,18.8 +2020-04-13T13:00,22.2,67,13,0,0.028,8.2,17.7 +2020-04-13T14:00,23.5,64,13.3,0,0.028,8,15.7 +2020-04-13T15:00,23.4,68,14.5,0,0.028,9.5,17.4 +2020-04-13T16:00,22.2,68,13.4,0,0.055,9.2,17.9 +2020-04-13T17:00,21.2,67,12,0,0.083,3.6,16.8 +2020-04-13T18:00,19.8,75,13.2,0,0.028,1.7,6.9 +2020-04-13T19:00,19.9,69,11.5,0,0.028,2,4.5 +2020-04-13T20:00,17.2,79,11.8,0,0.028,3.4,5.6 +2020-04-13T21:00,15.2,79,9.8,0,0,5.4,7.6 +2020-04-13T22:00,19.4,72,11.8,0,0,4.2,7.8 +2020-04-13T23:00,16.9,76,10.6,0,0,4.1,5.8 +2020-04-14T00:00,12,82,7.6,0,0,4.5,7.2 +2020-04-14T01:00,12.9,76,6.7,0,0,3.7,6.7 +2020-04-14T02:00,11.8,75,5.3,0,0,4.8,7.4 +2020-04-14T03:00,6.2,83,2.1,0,0,6.4,8.1 +2020-04-14T04:00,9.4,79,4.3,0,0,3.4,9.2 +2020-04-14T05:00,5.2,75,-1,0,0,6.1,10.3 +2020-04-14T06:00,0.6,75,-5.5,0,0,7.4,10.3 +2020-04-14T07:00,6.1,62,-4.2,0,0,6.5,10.5 +2020-04-14T08:00,13.6,56,0.7,0,0,5.9,9.8 +2020-04-14T09:00,25.4,43,5.9,0,0,5.2,10.5 +2020-04-14T10:00,29.6,38,6.8,0,0,4.5,11.6 +2020-04-14T11:00,33.7,43,13.6,0,0,2.3,9.6 +2020-04-14T12:00,35.1,56,20.8,0,0,2.8,5.8 +2020-04-14T13:00,37.4,36,12.6,0,0,4.6,9.6 +2020-04-14T14:00,37.7,38,14.2,0,0,4.4,11.4 +2020-04-14T15:00,37.1,48,19,0,0,4.1,9.8 +2020-04-14T16:00,36.9,40,14.6,0,0,4,8.5 +2020-04-14T17:00,42.4,36,17.3,0,0,4.3,9.6 +2020-04-14T18:00,30.9,48,13.4,0,0,8.4,12.1 +2020-04-14T19:00,37.1,30,8.3,0,0,6.1,11.6 +2020-04-14T20:00,30.7,40,9.1,0,0,4,6.9 +2020-04-14T21:00,20.9,66,11.4,0,0,6.3,8.7 +2020-04-14T22:00,14.6,78,9,0,0,7.3,10.1 +2020-04-14T23:00,16.9,75,10.3,0,0,6.3,10.1 +2020-04-15T00:00,20.7,68,11.8,0,0,5.1,8.5 +2020-04-15T01:00,18.5,72,11.1,0,0,4.8,6.9 +2020-04-15T02:00,16.8,75,10.2,0,0,5.4,7.6 +2020-04-15T03:00,15.7,78,10.1,0,0,5.9,8.1 +2020-04-15T04:00,13.1,79,7.7,0,0,7.5,10.1 +2020-04-15T05:00,17.6,77,11.7,0,0,5.6,10.1 +2020-04-15T06:00,16.1,75,9.4,0,0,6.2,11.4 +2020-04-15T07:00,20.9,68,11.9,0,0,6.5,10.7 +2020-04-15T08:00,30.7,55,16.6,0,0,5,10.3 +2020-04-15T09:00,39.1,43,18.4,0,0,5.5,11 +2020-04-15T10:00,41.3,39,18.1,0,0,6.5,13 +2020-04-15T11:00,42,43,21.1,0,0,4.4,13.2 +2020-04-15T12:00,49.8,21,11.7,0,0,7.7,17.4 +2020-04-15T13:00,50.5,21,12.5,0,0,8.6,20.1 +2020-04-15T14:00,51.5,23,14.5,0,0,7.4,19.2 +2020-04-15T15:00,51.7,24,16,0,0,9.3,19.2 +2020-04-15T16:00,50.9,26,17.3,0,0,10.5,19.5 +2020-04-15T17:00,42.8,61,30.3,0,0,13,24.6 +2020-04-15T18:00,40.8,68,31.2,0,0,9.9,24.6 +2020-04-15T19:00,37.6,80,31.8,0.004,0,10.5,17 +2020-04-15T20:00,35.1,86,31.4,0.012,0.028,7.9,17.2 +2020-04-15T21:00,34.6,88,31.5,0.004,0.083,5.6,13.6 +2020-04-15T22:00,33.9,90,31.3,0.004,0.11,4.8,9.6 +2020-04-15T23:00,33.5,90,31,0.004,0.083,2.2,12.1 +2020-04-16T00:00,31.6,97,30.9,0.004,0.193,2,5.1 +2020-04-16T01:00,31.6,97,31,0,0.193,2.1,4 +2020-04-16T02:00,31,99,30.7,0,0.193,4,14.5 +2020-04-16T03:00,31.2,97,30.4,0,0.248,4.7,19 +2020-04-16T04:00,31.2,97,30.5,0,0.138,3.3,8.3 +2020-04-16T05:00,30,97,29.3,0,0.11,8.7,6.9 +2020-04-16T06:00,28.9,95,27.5,0,0.579,10.2,16.6 +2020-04-16T07:00,27.3,95,26,0,0.469,12.4,20.4 +2020-04-16T08:00,27.1,95,25.8,0,0.276,9.3,19.9 +2020-04-16T09:00,27.7,92,25.8,0,0.165,9.3,15.9 +2020-04-16T10:00,27.6,94,26.1,0,0.055,11.3,19 +2020-04-16T11:00,26.7,94,25.1,0,0.11,11,19.5 +2020-04-16T12:00,27.4,92,25.4,0,0.303,10.1,18.6 +2020-04-16T13:00,26.7,90,24.2,0,0.331,10.7,17.4 +2020-04-16T14:00,26.2,90,23.6,0,0.22,11.5,20.1 +2020-04-16T15:00,26.2,89,23.5,0,0.11,11.7,19.2 +2020-04-16T16:00,25.8,91,23.6,0,0.165,13.2,21.5 +2020-04-16T17:00,22.6,92,20.6,0,0.138,10.1,21.7 +2020-04-16T18:00,22.4,91,20.1,0,0.055,8.1,16.3 +2020-04-16T19:00,21.4,89,18.8,0,0.028,7.4,13.4 +2020-04-16T20:00,20.2,90,17.8,0,0,3.6,11.6 +2020-04-16T21:00,19.5,90,17.2,0,0,2.3,5.6 +2020-04-16T22:00,18.7,90,16.2,0,0,2.4,4 +2020-04-16T23:00,18,88,15,0,0,3.6,6 +2020-04-17T00:00,13.2,88,10.2,0,0,5.8,6.9 +2020-04-17T01:00,15.4,85,11.8,0,0,5.1,6.9 +2020-04-17T02:00,15.4,87,12.3,0,0,5.3,6.5 +2020-04-17T03:00,13.2,89,10.6,0,0,5.8,6.9 +2020-04-17T04:00,10.7,90,8.2,0,0,5.4,7.4 +2020-04-17T05:00,14.3,82,9.7,0,0,5.7,8.3 +2020-04-17T06:00,12.3,79,7.1,0,0,4.9,9.2 +2020-04-17T07:00,13.6,77,7.8,0,0,6,9.2 +2020-04-17T08:00,18.7,75,12.1,0,0,7.5,11.6 +2020-04-17T09:00,23.9,77,17.7,0,0,7.5,12.5 +2020-04-17T10:00,29.5,71,21.4,0,0,4.1,11 +2020-04-17T11:00,32.5,79,26.8,0,0,2.2,7.2 +2020-04-17T12:00,34.5,67,24.5,0,0,2.2,3.8 +2020-04-17T13:00,35.2,67,25.5,0,0,3.6,6.7 +2020-04-17T14:00,35.6,71,27.2,0,0,3.2,6.9 +2020-04-17T15:00,35.8,75,28.6,0,0,2.6,6 +2020-04-17T16:00,35.5,76,28.7,0,0,3.2,5.1 +2020-04-17T17:00,32.4,80,26.8,0,0,5.2,5.6 +2020-04-17T18:00,34.5,66,24.4,0,0,1.9,6.3 +2020-04-17T19:00,32.3,71,23.8,0,0,3.7,4.7 +2020-04-17T20:00,29,75,22.2,0,0,3.2,6.3 +2020-04-17T21:00,20.8,90,18.4,0,0,7.1,8.7 +2020-04-17T22:00,18.4,88,15.5,0,0,7.3,9.2 +2020-04-17T23:00,16.4,84,12.5,0,0,8.1,10.1 +2020-04-18T00:00,17.8,76,11.6,0,0,7.3,9.4 +2020-04-18T01:00,18.9,72,11.4,0,0,6.9,8.7 +2020-04-18T02:00,18.5,71,10.8,0,0,7.3,8.7 +2020-04-18T03:00,18.9,71,11.1,0,0,6.7,8.7 +2020-04-18T04:00,19,72,11.5,0,0,6.1,8.1 +2020-04-18T05:00,14,83,9.9,0,0,7.1,7.2 +2020-04-18T06:00,15.3,83,11.1,0,0,6.3,9.2 +2020-04-18T07:00,21.5,80,16.2,0,0,4.6,8.1 +2020-04-18T08:00,29.7,79,23.9,0,0,4.3,6.3 +2020-04-18T09:00,35,73,27.1,0,0,4.9,5.8 +2020-04-18T10:00,41.4,52,25.2,0,0,1.6,5.8 +2020-04-18T11:00,40.3,66,29.8,0,0,3.8,5.4 +2020-04-18T12:00,36.9,77,30.4,0,0,6.3,11.6 +2020-04-18T13:00,37.4,73,29.6,0,0,5.9,11.9 +2020-04-18T14:00,38.5,71,30,0,0,3.5,11 +2020-04-18T15:00,37.5,73,29.6,0,0,5.1,8.7 +2020-04-18T16:00,38,70,29,0.004,0.028,4.7,8.7 +2020-04-18T17:00,37.1,84,32.7,0,0,3.3,8.1 +2020-04-18T18:00,34.5,89,31.6,0,0,5.7,7.2 +2020-04-18T19:00,31.1,87,27.8,0,0,6.3,8.3 +2020-04-18T20:00,31.4,89,28.4,0,0,4.5,8.1 +2020-04-18T21:00,31.3,89,28.5,0,0,5.4,8.5 +2020-04-18T22:00,30.4,91,28,0,0,4.6,8.5 +2020-04-18T23:00,32.3,89,29.3,0,0,5.5,8.7 +2020-04-19T00:00,35.2,84,30.9,0.004,0,7.1,11.4 +2020-04-19T01:00,35.1,86,31.3,0.004,0,5,11.4 +2020-04-19T02:00,34,87,30.4,0.004,0,6.2,8.3 +2020-04-19T03:00,34.3,85,30.3,0.004,0,5,7.6 +2020-04-19T04:00,38.1,75,30.8,0.004,0,0.2,6.9 +2020-04-19T05:00,28.9,87,25.4,0,0,5.2,4.9 +2020-04-19T06:00,27.4,89,24.6,0,0,4.7,7.8 +2020-04-19T07:00,30.4,89,27.6,0,0,4.3,8.5 +2020-04-19T08:00,32.5,87,29,0,0,4,7.8 +2020-04-19T09:00,33.1,87,29.6,0,0,1.1,6.9 +2020-04-19T10:00,35,84,30.7,0,0,1.6,4 +2020-04-19T11:00,37.6,85,33.6,0,0,1.1,3.4 +2020-04-19T12:00,39.9,81,34.7,0,0,2.2,4.7 +2020-04-19T13:00,42.5,74,34.8,0,0,3.2,6.9 +2020-04-19T14:00,41.8,73,33.8,0,0,10.1,17.7 +2020-04-19T15:00,44.9,59,31.3,0,0,8.4,23.3 +2020-04-19T16:00,48.3,50,30.5,0,0,6.2,18.1 +2020-04-19T17:00,51.9,47,32.5,0,0,1,14.1 +2020-04-19T18:00,49.1,62,36.8,0,0,4.2,7.4 +2020-04-19T19:00,43,63,31.2,0,0,4.9,8.1 +2020-04-19T20:00,38,68,28.3,0,0,3.5,7.6 +2020-04-19T21:00,34.4,84,30,0,0,4.6,5.4 +2020-04-19T22:00,33.8,84,29.4,0,0,3.8,6 +2020-04-19T23:00,33.9,77,27.4,0,0,5.6,9.4 +2020-04-20T00:00,31.3,85,27.4,0,0,4.7,8.7 +2020-04-20T01:00,30.5,88,27.2,0,0,4.8,6.7 +2020-04-20T02:00,29,88,25.8,0,0,3,6 +2020-04-20T03:00,28,85,24.1,0,0,3.6,3.8 +2020-04-20T04:00,27.2,82,22.6,0,0,3.8,4.9 +2020-04-20T05:00,25.2,87,21.7,0,0,5.6,5.8 +2020-04-20T06:00,29.4,79,23.7,0,0,5.7,8.7 +2020-04-20T07:00,35.9,68,26.3,0,0,4.3,10.3 +2020-04-20T08:00,44.2,57,30.1,0,0,3,9.8 +2020-04-20T09:00,51.2,46,30.9,0,0,1.4,9.6 +2020-04-20T10:00,54.9,38,30,0,0,0,8.7 +2020-04-20T11:00,56.8,34,28.9,0,0,3,11 +2020-04-20T12:00,58.6,27,24.4,0,0,4.6,13.4 +2020-04-20T13:00,60.3,24,23.3,0,0,4.2,13.6 +2020-04-20T14:00,61.4,24,24.6,0,0,4.3,12.8 +2020-04-20T15:00,61.3,25,24.9,0,0,5.3,13.2 +2020-04-20T16:00,60.3,28,26.8,0,0,8.5,15.7 +2020-04-20T17:00,58.7,44,36.6,0,0,8.6,22.6 +2020-04-20T18:00,54.1,53,37.5,0,0,7.2,16.1 +2020-04-20T19:00,46.8,61,34.2,0,0,4.1,11.4 +2020-04-20T20:00,42.4,72,34.1,0,0,3.6,6.9 +2020-04-20T21:00,38.9,82,33.9,0,0,2.1,6 +2020-04-20T22:00,37,85,33.1,0,0,2.1,4 +2020-04-20T23:00,34.9,89,32,0,0,3,5.6 +2020-04-21T00:00,33.2,93,31.5,0,0,1.5,4.9 +2020-04-21T01:00,32.9,91,30.7,0,0,3.8,5.8 +2020-04-21T02:00,31.8,94,30.3,0,0,3.1,7.4 +2020-04-21T03:00,31.6,92,29.5,0,0,1.8,4.9 +2020-04-21T04:00,30.4,93,28.6,0,0,2.6,3.4 +2020-04-21T05:00,29.1,97,28.5,0,0,1.7,4.3 +2020-04-21T06:00,30.3,97,29.6,0,0,3,6.7 +2020-04-21T07:00,37.4,83,32.6,0,0,1.8,7.2 +2020-04-21T08:00,45.3,63,33.4,0,0,0.7,7.6 +2020-04-21T09:00,49.9,53,33.6,0,0,2.9,10.5 +2020-04-21T10:00,54.1,47,34.1,0,0,4.3,13 +2020-04-21T11:00,57.5,43,35.2,0,0,4.7,14.1 +2020-04-21T12:00,60,41,36.3,0,0,6,15.4 +2020-04-21T13:00,60.4,40,36.1,0,0,6.1,17 +2020-04-21T14:00,62.4,34,33.7,0,0,2.6,15.9 +2020-04-21T15:00,62.1,35,34.4,0,0,5.4,13.4 +2020-04-21T16:00,62.1,36,34.7,0,0,6.1,13.6 +2020-04-21T17:00,54,66,42.7,0,0,12.2,13.4 +2020-04-21T18:00,54.8,64,42.7,0,0,2.2,22.4 +2020-04-21T19:00,50.5,73,42.1,0,0,4.3,6.7 +2020-04-21T20:00,48.1,69,38.3,0,0,6.5,10.7 +2020-04-21T21:00,44.8,71,36,0,0,5.1,10.7 +2020-04-21T22:00,42.1,75,34.8,0,0,5.1,8.5 +2020-04-21T23:00,40,74,32.3,0,0,4.4,8.7 +2020-04-22T00:00,38.8,73,30.8,0,0,3.8,7.2 +2020-04-22T01:00,37.5,73,29.7,0,0,5.4,6.7 +2020-04-22T02:00,37.1,70,28.3,0,0,6.8,8.3 +2020-04-22T03:00,36.9,67,27,0,0,7.3,8.7 +2020-04-22T04:00,37.6,61,25.3,0,0,7.8,9.4 +2020-04-22T05:00,45.2,42,23.3,0,0,9.6,10.5 +2020-04-22T06:00,47.8,40,24.6,0,0,10.3,18.8 +2020-04-22T07:00,51.5,43,29.5,0,0,5.2,16.8 +2020-04-22T08:00,55,41,31.9,0,0,5.4,12.3 +2020-04-22T09:00,57.6,38,32,0,0,7.2,15.7 +2020-04-22T10:00,60.1,31,29.4,0,0,7.7,17 +2020-04-22T11:00,60.6,37,34.3,0.02,0,7.5,20.1 +2020-04-22T12:00,60.8,38,34.8,0.031,0,1.7,17.7 +2020-04-22T13:00,61.2,38,35.2,0,0,5.9,14.1 +2020-04-22T14:00,58.1,47,38.2,0.043,0,1.4,19.2 +2020-04-22T15:00,61.3,36,33.8,0,0,2.7,11 +2020-04-22T16:00,61.8,34,33.2,0,0,2.9,10.1 +2020-04-22T17:00,60.3,39,35.3,0,0,2.4,9.4 +2020-04-22T18:00,57.7,50,39.2,0,0,5.5,10.1 +2020-04-22T19:00,50.5,65,39,0,0,5.4,9.4 +2020-04-22T20:00,47.7,72,39,0,0,4.3,6.9 +2020-04-22T21:00,45.1,71,36.1,0,0,6.1,9.6 +2020-04-22T22:00,44.6,52,27.9,0,0,7,11.9 +2020-04-22T23:00,42.4,51,25.7,0,0,6.9,11.9 +2020-04-23T00:00,41.5,54,26.1,0,0,7.1,12.3 +2020-04-23T01:00,39.2,60,26.6,0,0,5.3,12.1 +2020-04-23T02:00,35.5,74,28,0,0,3.6,8.9 +2020-04-23T03:00,33.7,82,28.7,0,0,3.5,6.3 +2020-04-23T04:00,34.6,79,28.7,0,0,3.4,6.7 +2020-04-23T05:00,36.5,71,27.9,0,0,5.7,11.9 +2020-04-23T06:00,42.8,56,28.2,0,0,5.8,10.7 +2020-04-23T07:00,49.5,49,30.9,0,0,5.4,10.1 +2020-04-23T08:00,55.4,38,30.1,0,0,3.4,10.7 +2020-04-23T09:00,58.7,34,30.2,0,0,10.6,20.4 +2020-04-23T10:00,59,34,30.4,0,0,5.4,20.8 +2020-04-23T11:00,61.3,32,31.3,0,0,6.1,17.2 +2020-04-23T12:00,62.8,30,30.7,0,0,8.4,20.6 +2020-04-23T13:00,64.2,27,29.7,0,0,10,23 +2020-04-23T14:00,65.6,23,26.2,0,0,10.4,23.3 +2020-04-23T15:00,65.2,22,25,0,0,12.4,24.2 +2020-04-23T16:00,64.9,22,24.9,0,0,9.7,24.6 +2020-04-23T17:00,64.7,23,26.5,0,0,8.6,18.3 +2020-04-23T18:00,59.5,34,31.2,0,0,7.3,14.8 +2020-04-23T19:00,54,45,33.4,0,0,7.6,14.5 +2020-04-23T20:00,50.8,64,39.1,0.016,0,9.4,13.4 +2020-04-23T21:00,48.8,86,44.7,0.02,0,5.2,15.4 +2020-04-23T22:00,48.2,87,44.5,0.008,0,3.4,9.2 +2020-04-23T23:00,46.8,91,44.2,0,0,6.4,10.3 +2020-04-24T00:00,43.3,90,40.7,0,0,7.4,12.1 +2020-04-24T01:00,43.2,73,35.2,0,0,10.1,16.8 +2020-04-24T02:00,44.1,66,33.4,0,0,6.3,17.2 +2020-04-24T03:00,41.9,68,32.1,0,0,4,10.5 +2020-04-24T04:00,39.7,74,32,0,0,4.6,7.4 +2020-04-24T05:00,38.1,97,37.3,0,0,5.5,6 +2020-04-24T06:00,37.9,98,37.2,0.063,0.055,4.1,14.3 +2020-04-24T07:00,39.8,92,37.7,0.004,0,5.4,11.4 +2020-04-24T08:00,42.5,82,37.5,0.004,0,5.7,13.4 +2020-04-24T09:00,46,69,36.3,0,0,2.5,13.4 +2020-04-24T10:00,49.3,56,34.3,0,0,2.3,10.5 +2020-04-24T11:00,53.2,45,32.5,0,0,3.9,21.5 +2020-04-24T12:00,54.9,39,30.7,0,0,5,21.5 +2020-04-24T13:00,56.3,36,29.4,0,0,6.9,18.1 +2020-04-24T14:00,58.4,31,28.1,0,0,9.1,20.4 +2020-04-24T15:00,57.5,32,28.1,0,0,7.5,20.6 +2020-04-24T16:00,57.1,35,29.7,0,0,7.6,17 +2020-04-24T17:00,52.3,47,32.8,0,0,2.3,16.3 +2020-04-24T18:00,51.4,49,32.8,0,0,1.3,7.6 +2020-04-24T19:00,46.1,65,35.1,0,0,3.8,5.8 +2020-04-24T20:00,45.5,71,36.6,0,0,0.9,6.7 +2020-04-24T21:00,42.4,81,37,0,0,2.6,3.1 +2020-04-24T22:00,40.8,86,36.9,0,0,3.5,5.1 +2020-04-24T23:00,38.8,91,36.2,0,0,3.3,5.6 +2020-04-25T00:00,37,94,35.3,0,0,3,5.1 +2020-04-25T01:00,38.1,91,35.8,0,0,1.7,5.6 +2020-04-25T02:00,37.3,94,35.7,0.004,0,3.6,4 +2020-04-25T03:00,38.4,92,36.2,0.012,0,1.6,8.5 +2020-04-25T04:00,38.6,93,36.7,0,0,1.8,4 +2020-04-25T05:00,40.6,89,37.7,0,0,0.9,4.3 +2020-04-25T06:00,40.6,90,37.9,0,0,2.2,4.3 +2020-04-25T07:00,42.7,82,37.6,0,0,3.8,8.5 +2020-04-25T08:00,47.9,66,37,0,0,6.3,13.6 +2020-04-25T09:00,52.5,47,32.9,0,0,2.9,19.9 +2020-04-25T10:00,55,38,29.7,0,0,2.7,18.8 +2020-04-25T11:00,56.2,36,29.3,0.02,0,5.3,14.8 +2020-04-25T12:00,56.9,33,28.4,0.02,0,7.7,17.9 +2020-04-25T13:00,57.7,33,28.8,0,0,6.4,18.3 +2020-04-25T14:00,58.2,34,29.8,0,0,6.7,16.3 +2020-04-25T15:00,59.6,31,29.3,0,0,4.6,16.6 +2020-04-25T16:00,59.5,31,28.9,0,0,4.2,13 +2020-04-25T17:00,60.5,29,28.2,0,0,7,11.2 +2020-04-25T18:00,58.5,51,40.3,0,0,2.5,13 +2020-04-25T19:00,57.7,33,28.9,0,0,3,3.4 +2020-04-25T20:00,49.5,49,31.2,0,0,4.6,6.9 +2020-04-25T21:00,46.7,61,33.9,0,0,4.9,8.5 +2020-04-25T22:00,44.5,70,35.3,0,0,4.8,8.1 +2020-04-25T23:00,44.1,70,34.9,0,0,5.1,8.3 +2020-04-26T00:00,41.8,72,33.4,0,0,4,8.3 +2020-04-26T01:00,39.3,73,31.4,0,0,3.8,6.7 +2020-04-26T02:00,37.6,74,30,0,0,5.3,6.5 +2020-04-26T03:00,37.5,69,28.1,0,0,5.2,6.5 +2020-04-26T04:00,39,60,26.2,0,0,4,6.5 +2020-04-26T05:00,37.9,69,28.6,0,0,3.7,4.9 +2020-04-26T06:00,41.6,60,28.6,0,0,3.6,5.1 +2020-04-26T07:00,48.6,50,30.8,0,0,2.5,7.2 +2020-04-26T08:00,57.6,41,33.8,0,0,1.6,7.4 +2020-04-26T09:00,64.5,32,34.2,0,0,3.2,9.6 +2020-04-26T10:00,68.5,23,29.6,0,0,4.2,11.6 +2020-04-26T11:00,70.2,21,28,0,0,2.9,11.6 +2020-04-26T12:00,72.1,19,27.6,0,0,0,11.6 +2020-04-26T13:00,72.1,19,27.2,0,0,1.8,10.3 +2020-04-26T14:00,72.6,19,28,0,0,8.4,15.7 +2020-04-26T15:00,66.6,30,34.3,0,0,15.4,26.4 +2020-04-26T16:00,62.7,37,36.1,0,0,15.7,27.3 +2020-04-26T17:00,60.4,45,38.8,0,0,2.5,26.4 +2020-04-26T18:00,59.1,50,40.6,0,0,5.4,11.4 +2020-04-26T19:00,56.1,54,39.6,0,0,4.2,8.5 +2020-04-26T20:00,56.7,51,38.8,0,0,2.9,6.7 +2020-04-26T21:00,53.6,57,38.8,0,0,3.8,5.8 +2020-04-26T22:00,50,60,36.9,0,0,3.9,7.6 +2020-04-26T23:00,45.2,67,35,0,0,5.4,6.5 +2020-04-27T00:00,43.3,69,33.9,0,0,5.1,6.5 +2020-04-27T01:00,42.4,70,33.2,0,0,3.8,6.3 +2020-04-27T02:00,40,76,33.2,0,0,4.2,6.3 +2020-04-27T03:00,38.9,80,33.2,0,0,3.6,5.8 +2020-04-27T04:00,39.7,76,32.9,0,0,4.5,7.4 +2020-04-27T05:00,40,72,31.8,0,0,4.1,7.6 +2020-04-27T06:00,42.5,68,32.6,0,0,5.9,8.7 +2020-04-27T07:00,49.6,57,34.9,0,0,2.6,9.4 +2020-04-27T08:00,58,44,36.1,0,0,3.7,9.6 +2020-04-27T09:00,64.9,32,34,0,0,5.4,13.2 +2020-04-27T10:00,68.6,25,31.3,0,0,4.4,14.1 +2020-04-27T11:00,70.3,24,31.8,0,0,1.7,12.8 +2020-04-27T12:00,71.7,24,33.4,0,0,2.3,10.5 +2020-04-27T13:00,73.1,23,33.3,0,0,2.7,11.4 +2020-04-27T14:00,73.9,22,32.5,0,0,4.6,12.8 +2020-04-27T15:00,74.4,21,32.1,0,0,4.6,13.2 +2020-04-27T16:00,74.1,20,30.7,0,0,2.9,12.3 +2020-04-27T17:00,73.9,18,27.3,0,0,6,8.7 +2020-04-27T18:00,68.5,46,46.9,0,0,4.7,9.6 +2020-04-27T19:00,64.9,28,31.3,0,0,1.9,5.6 +2020-04-27T20:00,57.2,41,33.6,0,0,5.4,8.7 +2020-04-27T21:00,53.1,54,36.9,0,0,3.6,9.6 +2020-04-27T22:00,50,63,37.9,0,0,4.3,6.7 +2020-04-27T23:00,50.3,61,37.1,0,0,3.1,8.1 +2020-04-28T00:00,46.8,69,37,0,0,4.6,5.4 +2020-04-28T01:00,51.8,55,36,0,0,2.5,8.1 +2020-04-28T02:00,47.3,59,33.9,0,0,7.6,12.1 +2020-04-28T03:00,45.9,62,33.5,0,0,5.4,12.3 +2020-04-28T04:00,45.7,63,33.7,0,0,4.7,8.9 +2020-04-28T05:00,47.2,64,35.6,0,0,1.1,7.6 +2020-04-28T06:00,48.7,63,36.7,0,0,0.3,2.9 +2020-04-28T07:00,53.8,56,38.3,0,0,3.4,8.5 +2020-04-28T08:00,61.5,37,35.2,0,0,1.2,8.9 +2020-04-28T09:00,63.5,29,31,0,0,5.1,13 +2020-04-28T10:00,65.6,29,32.6,0,0,7.4,16.6 +2020-04-28T11:00,69.4,17,23.2,0,0,12.5,23.7 +2020-04-28T12:00,70.3,16,22.6,0,0,16.8,32.2 +2020-04-28T13:00,71.1,16,23.2,0,0,16,31.3 +2020-04-28T14:00,70.9,16,22.6,0,0,16.7,30.6 +2020-04-28T15:00,70.2,16,22.3,0,0,16.8,30.9 +2020-04-28T16:00,68.5,18,23.4,0,0,16.2,30.4 +2020-04-28T17:00,65.5,22,26.1,0,0,13.1,28.9 +2020-04-28T18:00,57.3,36,30.3,0,0,13.5,25.9 +2020-04-28T19:00,53.8,40,30.2,0,0,3,21.9 +2020-04-28T20:00,51,49,32.3,0,0,4,7.4 +2020-04-28T21:00,50.2,52,33.2,0,0,3.7,6.7 +2020-04-28T22:00,46.3,61,33.7,0,0,5.2,6 +2020-04-28T23:00,45.1,63,33.2,0,0,4.2,6.3 +2020-04-29T00:00,44,66,33.4,0,0,4.8,6.5 +2020-04-29T01:00,42.1,71,33.4,0,0,5.8,6.9 +2020-04-29T02:00,40.6,76,33.5,0,0,5.2,7.4 +2020-04-29T03:00,39,81,33.6,0,0,4.3,6 +2020-04-29T04:00,38.7,83,33.8,0,0,2.2,5.4 +2020-04-29T05:00,36.7,89,33.7,0,0,3.3,4.3 +2020-04-29T06:00,40.1,79,34,0,0,5.4,8.7 +2020-04-29T07:00,46.9,54,31.3,0,0,5.4,11.2 +2020-04-29T08:00,52.6,29,21.3,0,0,6.6,14.8 +2020-04-29T09:00,57,27,23.3,0,0,5.1,14.8 +2020-04-29T10:00,61,25,24.9,0,0,4.5,13.6 +2020-04-29T11:00,64.5,22,24.4,0,0,4.8,14.1 +2020-04-29T12:00,66.5,20,23.7,0,0,6.5,16.3 +2020-04-29T13:00,68,19,24.5,0,0,6.8,17.2 +2020-04-29T14:00,68.7,20,26,0,0,6.5,17 +2020-04-29T15:00,68.6,21,27,0,0,6.4,16.1 +2020-04-29T16:00,67.8,22,27.5,0,0,5.9,15.2 +2020-04-29T17:00,68.6,20,26,0,0,4,13.6 +2020-04-29T18:00,65.6,28,31.5,0,0,3.7,9.8 +2020-04-29T19:00,60.9,31,29.8,0,0,5,6.5 +2020-04-29T20:00,61.9,25,25.5,0,0,3.5,5.8 +2020-04-29T21:00,58.4,28,25.4,0,0,0.9,4.3 +2020-04-29T22:00,48.1,54,32.2,0,0,3.2,5.4 +2020-04-29T23:00,45,70,35.9,0,0,3.3,5.6 +2020-04-30T00:00,43.3,77,36.7,0,0,3,5.6 +2020-04-30T01:00,42.6,77,36.1,0,0,3.7,4.7 +2020-04-30T02:00,42,75,34.7,0,0,3.8,5.1 +2020-04-30T03:00,40.8,76,34,0,0,4.1,5.4 +2020-04-30T04:00,41.1,75,33.9,0,0,3.8,5.4 +2020-04-30T05:00,42,70,33.1,0,0,4,5.6 +2020-04-30T06:00,45.9,61,33.2,0,0,3.5,5.1 +2020-04-30T07:00,52.1,52,35,0,0,4,8.9 +2020-04-30T08:00,61,37,34.4,0,0,3.9,10.5 +2020-04-30T09:00,68.6,27,33.7,0,0,2.3,10.5 +2020-04-30T10:00,76.2,21,32.9,0,0,3.8,11.6 +2020-04-30T11:00,80.2,15,27.9,0,0,3.1,11.6 +2020-04-30T12:00,82,14,27.8,0,0,3.6,11 +2020-04-30T13:00,83.3,13,28.1,0,0,3.3,11 +2020-04-30T14:00,83,13,27.2,0,0,3.2,10.5 +2020-04-30T15:00,81.3,17,32.5,0,0,3.3,8.9 +2020-04-30T16:00,81.7,16,31.8,0,0,6.8,13.2 +2020-04-30T17:00,79.5,21,36.1,0,0,5.8,15.7 +2020-04-30T18:00,75.7,32,43.7,0,0,4.4,8.9 +2020-04-30T19:00,66.8,40,41.5,0,0,5.5,7.8 +2020-04-30T20:00,62.5,47,41.9,0,0,4.1,9.6 +2020-04-30T21:00,55.9,56,40.3,0,0,4.8,7.8 +2020-04-30T22:00,55.8,49,37,0,0,6.2,10.7 +2020-04-30T23:00,56,47,36.2,0,0,6.5,13.9 +2020-05-01T00:00,53.9,49,35.2,0,0,4.8,10.5 +2020-05-01T01:00,51.2,50,33.4,0,0,5.7,12.5 +2020-05-01T02:00,50.5,50,32.3,0,0,5.5,9.6 +2020-05-01T03:00,47.4,55,32.1,0,0,4.6,8.7 +2020-05-01T04:00,47,55,31.6,0,0,4.1,6.7 +2020-05-01T05:00,46.3,58,32.4,0,0,4.2,7.6 +2020-05-01T06:00,51.2,50,33.2,0,0,6.5,9.6 +2020-05-01T07:00,59.1,42,36,0,0,3.3,10.5 +2020-05-01T08:00,66.1,36,38.4,0,0,4,9.6 +2020-05-01T09:00,70.3,28,35.4,0,0,8.9,18.1 +2020-05-01T10:00,74.9,23,34.3,0,0,8.9,19.2 +2020-05-01T11:00,78.4,21,34.9,0,0,6.5,18.8 +2020-05-01T12:00,80.1,19,33.9,0,0,4.5,19.7 +2020-05-01T13:00,80.1,19,34.2,0,0,7,16.1 +2020-05-01T14:00,80.4,18,32.7,0,0,7.1,19.7 +2020-05-01T15:00,81.8,16,31,0,0,8.8,19.9 +2020-05-01T16:00,80.1,19,34.3,0,0,10.2,19 +2020-05-01T17:00,74.3,40,48.1,0,0,15.1,19 +2020-05-01T18:00,71.8,42,47.4,0,0,10.1,25.7 +2020-05-01T19:00,66.1,49,46.2,0,0,6.9,16.8 +2020-05-01T20:00,64,53,46.5,0,0,14.9,24.4 +2020-05-01T21:00,61.4,61,48,0,0,14,25.3 +2020-05-01T22:00,58.6,73,50,0,0,10.2,23 +2020-05-01T23:00,57.3,79,51,0,0,10.3,17.4 +2020-05-02T00:00,56.7,83,51.5,0,0,7.6,16.8 +2020-05-02T01:00,55.4,88,51.9,0.004,0,7.3,12.5 +2020-05-02T02:00,54.7,90,51.9,0.004,0,6.4,12.5 +2020-05-02T03:00,54.2,91,51.8,0.004,0,4.5,10.7 +2020-05-02T04:00,53.2,95,51.8,0,0,1.6,7.6 +2020-05-02T05:00,51.8,89,48.7,0,0,4.7,2.7 +2020-05-02T06:00,52.1,81,46.4,0,0,6.2,10.7 +2020-05-02T07:00,52.6,76,45.3,0,0,6.6,12.3 +2020-05-02T08:00,55.3,68,44.9,0,0,6.3,13.2 +2020-05-02T09:00,58.9,57,43.9,0,0,5.7,15 +2020-05-02T10:00,61.4,51,43.3,0,0,5.5,14.1 +2020-05-02T11:00,62.9,48,42.8,0,0,4.5,14.1 +2020-05-02T12:00,66.9,41,42.5,0,0,2.1,12.8 +2020-05-02T13:00,68.5,38,42,0,0,6.6,16.1 +2020-05-02T14:00,67,40,42,0,0,8.1,18.3 +2020-05-02T15:00,64.9,52,46.9,0,0,16.4,28 +2020-05-02T16:00,63.4,58,48.3,0,0,19.1,33.1 +2020-05-02T17:00,57.3,77,50.1,0.055,0,8.3,35.3 +2020-05-02T18:00,57.9,74,49.7,0,0,7.8,15 +2020-05-02T19:00,55.3,83,50.2,0.004,0,8.1,14.1 +2020-05-02T20:00,53.4,93,51.4,0.098,0,8.1,16.3 +2020-05-02T21:00,52.4,93,50.5,0.02,0,3.3,14.1 +2020-05-02T22:00,50.6,98,50,0,0,5.4,9.4 +2020-05-02T23:00,51.1,95,49.8,0,0,6.8,11 +2020-05-03T00:00,49.5,95,48.2,0,0,4.3,11.2 +2020-05-03T01:00,47.7,97,46.9,0,0,2.2,7.4 +2020-05-03T02:00,45.4,98,45,0,0,2.9,5.6 +2020-05-03T03:00,43.8,97,42.9,0,0,3.3,6 +2020-05-03T04:00,43.9,96,42.8,0,0,3.2,6.7 +2020-05-03T05:00,45.6,94,44.1,0,0,3.5,6 +2020-05-03T06:00,47,96,46,0,0,2.8,6.3 +2020-05-03T07:00,49.6,92,47.3,0,0,1,7.2 +2020-05-03T08:00,53,80,46.9,0,0,2.4,9.4 +2020-05-03T09:00,58.3,64,46.1,0,0,2.2,10.3 +2020-05-03T10:00,63.3,55,47,0,0,4.5,13.2 +2020-05-03T11:00,67.4,49,47.4,0,0,5.1,14.8 +2020-05-03T12:00,70.9,45,48.6,0.016,0,7.9,18.6 +2020-05-03T13:00,71.2,43,47.3,0.02,0,7.7,18.6 +2020-05-03T14:00,71.6,35,42.5,0.008,0,9.6,20.4 +2020-05-03T15:00,70.3,42,46,0,0,14.4,26.6 +2020-05-03T16:00,70.4,39,44.5,0,0,8.8,26.6 +2020-05-03T17:00,67.9,47,47.2,0,0,9.6,20.4 +2020-05-03T18:00,64.9,55,48.2,0,0,11.8,19 +2020-05-03T19:00,60.3,66,48.9,0,0,13.1,22.8 +2020-05-03T20:00,56.3,81,50.6,0.012,0,10.8,23.3 +2020-05-03T21:00,53.6,84,49,0,0,10.3,18.8 +2020-05-03T22:00,53,86,48.9,0,0,6.9,16.8 +2020-05-03T23:00,52.1,88,48.6,0,0,5.3,11.4 +2020-05-04T00:00,52.9,85,48.7,0,0,5.1,10.1 +2020-05-04T01:00,52.6,86,48.6,0,0,1.7,8.5 +2020-05-04T02:00,51.4,92,49.2,0,0,4.2,6.3 +2020-05-04T03:00,51.9,89,48.7,0,0,6.7,10.7 +2020-05-04T04:00,51.4,87,47.8,0,0,8.7,13.9 +2020-05-04T05:00,49.9,85,45.5,0,0,7.8,14.1 +2020-05-04T06:00,49.8,76,42.7,0,0,4.6,13 +2020-05-04T07:00,51.3,68,41,0,0,1.1,8.9 +2020-05-04T08:00,53.4,60,39.9,0,0,1.6,8.9 +2020-05-04T09:00,55.9,54,39.5,0,0,2.6,10.5 +2020-05-04T10:00,58.7,50,40.1,0,0,4.1,13.2 +2020-05-04T11:00,64.4,36,36.8,0.004,0,8.6,24.2 +2020-05-04T12:00,68.7,21,26.7,0,0,12.4,24.4 +2020-05-04T13:00,69.4,21,27.7,0,0,14.1,27.7 +2020-05-04T14:00,68,23,28.9,0,0,22.4,38.7 +2020-05-04T15:00,68.1,20,25.2,0,0,22.5,42.3 +2020-05-04T16:00,67,17,21.1,0,0,19,39.8 +2020-05-04T17:00,65.6,16,17.5,0,0,18.7,33.8 +2020-05-04T18:00,60.4,23,22.1,0,0,17.6,33.1 +2020-05-04T19:00,56.7,22,18.6,0,0,15.6,30.9 +2020-05-04T20:00,53.7,26,19.3,0,0,10.1,25.9 +2020-05-04T21:00,50.6,32,21.5,0,0,6.2,16.8 +2020-05-04T22:00,47.4,40,24.4,0,0,6.2,9.8 +2020-05-04T23:00,44.6,51,27.8,0,0,3.3,10.1 +2020-05-05T00:00,42,57,27.9,0,0,4.8,6.3 +2020-05-05T01:00,43.3,52,26.7,0,0,2.5,6 +2020-05-05T02:00,37.9,69,28.6,0,0,5.4,6.9 +2020-05-05T03:00,36.5,72,28.2,0,0,5.4,6.7 +2020-05-05T04:00,35.7,70,27,0,0,4.6,6.7 +2020-05-05T05:00,34.8,76,28,0,0,4.7,6.3 +2020-05-05T06:00,38.5,62,26.4,0,0,5,8.7 +2020-05-05T07:00,44.5,50,27,0,0,4.3,10.7 +2020-05-05T08:00,52.7,33,24.4,0,0,4,11.2 +2020-05-05T09:00,58.2,24,21.2,0,0,1.9,11.9 +2020-05-05T10:00,61,19,18.6,0,0,3,11.9 +2020-05-05T11:00,63.3,19,20,0,0,2.5,12.1 +2020-05-05T12:00,65.8,18,20.6,0,0,4.5,13.9 +2020-05-05T13:00,67.1,17,21.3,0,0,6.2,16.1 +2020-05-05T14:00,67.5,18,22.9,0,0,6.9,16.8 +2020-05-05T15:00,66.9,20,24,0,0,10.9,21.5 +2020-05-05T16:00,66.3,19,22.8,0,0,11.4,22.6 +2020-05-05T17:00,66.6,17,21,0,0,10.4,21.5 +2020-05-05T18:00,64.7,21,24.4,0,0,4.6,17.7 +2020-05-05T19:00,62.3,24,25.2,0,0,2.9,7.4 +2020-05-05T20:00,59.7,26,25.1,0,0,2.8,3.6 +2020-05-05T21:00,52.9,37,27.4,0,0,4.5,7.2 +2020-05-05T22:00,51.4,40,27.7,0,0,5.1,11.9 +2020-05-05T23:00,49.2,46,29.5,0,0,8.1,12.5 +2020-05-06T00:00,47.4,46,27.8,0,0,8.1,14.1 +2020-05-06T01:00,45.2,50,27.9,0,0,6,13.2 +2020-05-06T02:00,42.2,60,29.3,0,0,3.9,9.8 +2020-05-06T03:00,40.7,66,30.2,0,0,3.5,5.8 +2020-05-06T04:00,40.3,68,30.6,0,0,1.8,4.9 +2020-05-06T05:00,38.8,69,29.6,0,0,4.9,3.1 +2020-05-06T06:00,42.1,63,30.3,0,0,2.7,6.3 +2020-05-06T07:00,46.6,51,29.3,0,0,0.9,6.5 +2020-05-06T08:00,51,44,29.8,0,0,1.6,8.7 +2020-05-06T09:00,55.8,37,29.9,0,0,0.7,8.9 +2020-05-06T10:00,60.3,32,30.2,0,0,2.7,11.4 +2020-05-06T11:00,64.1,28,30.6,0,0,5.4,15.2 +2020-05-06T12:00,67.4,25,30.4,0,0,6.5,16.8 +2020-05-06T13:00,69.8,22,28.7,0,0,7.2,17.7 +2020-05-06T14:00,71.2,20,27.8,0,0,7,17.7 +2020-05-06T15:00,71.2,20,28,0,0,8.8,18.1 +2020-05-06T16:00,69.1,28,34.4,0,0,13.7,25.1 +2020-05-06T17:00,65.4,33,35.8,0,0,9.1,25.5 +2020-05-06T18:00,63.8,34,35.2,0,0,6.7,17 +2020-05-06T19:00,61.7,39,36.3,0,0,2.9,11 +2020-05-06T20:00,55.9,43,33.5,0,0,5.6,8.3 +2020-05-06T21:00,52.5,49,34.1,0,0,3.8,7.8 +2020-05-06T22:00,50.3,53,33.6,0,0,7.6,11.6 +2020-05-06T23:00,48.7,54,32.7,0,0,6.2,12.3 +2020-05-07T00:00,48.7,51,31.5,0,0,9.2,15 +2020-05-07T01:00,46.5,57,32,0,0,5.9,15 +2020-05-07T02:00,44.6,69,35,0,0,5.6,11.2 +2020-05-07T03:00,44.4,64,32.9,0,0,3,6.9 +2020-05-07T04:00,42.4,64,31.1,0,0,2.9,4.7 +2020-05-07T05:00,39.9,72,31.5,0,0,4.3,4.3 +2020-05-07T06:00,44.3,61,31.6,0,0,2.1,5.1 +2020-05-07T07:00,51.8,49,33,0,0,3.5,8.9 +2020-05-07T08:00,59.1,37,32.8,0,0,6.6,14.1 +2020-05-07T09:00,62.2,33,32.6,0,0,11.2,21.7 +2020-05-07T10:00,64.8,27,30.3,0,0,9.4,22.1 +2020-05-07T11:00,66.7,26,30.6,0,0,7.4,19.9 +2020-05-07T12:00,67.8,26,32.1,0,0,8.1,18.8 +2020-05-07T13:00,68.3,26,31.7,0,0,10.7,21.9 +2020-05-07T14:00,70.2,21,28.2,0,0,13.7,25.7 +2020-05-07T15:00,72.1,15,22.6,0,0,9.9,27.3 +2020-05-07T16:00,66.6,13,14,0,0,26.6,44.7 +2020-05-07T17:00,65.1,11,8.9,0,0,28.1,47.4 +2020-05-07T18:00,62.6,12,9.1,0,0,19.4,47.6 +2020-05-07T19:00,57.2,17,12.4,0,0,14.8,33.1 +2020-05-07T20:00,54.1,22,15.9,0,0,14.7,24.8 +2020-05-07T21:00,48.7,38,24.5,0,0,17.5,31.3 +2020-05-07T22:00,45.9,46,26.1,0,0,10.6,29.3 +2020-05-07T23:00,42.4,60,29.3,0,0,5.5,17.7 +2020-05-08T00:00,41.1,66,30.7,0,0,4,9.2 +2020-05-08T01:00,42.3,59,28.8,0,0,5.1,10.7 +2020-05-08T02:00,41.8,54,26.3,0,0,5,9.8 +2020-05-08T03:00,40.8,55,25.8,0,0,6.3,11.4 +2020-05-08T04:00,39.4,63,27.9,0,0,6.7,12.8 +2020-05-08T05:00,37.4,78,31.2,0,0,4.2,12.1 +2020-05-08T06:00,37.7,78,31.6,0.004,0,1.6,8.5 +2020-05-08T07:00,38.4,76,31.6,0,0,2.3,7.2 +2020-05-08T08:00,39.6,71,31.1,0,0,3.7,9.8 +2020-05-08T09:00,42.4,58,28.5,0,0,4.9,12.1 +2020-05-08T10:00,47.1,46,27.3,0,0,6.6,16.1 +2020-05-08T11:00,53.4,33,25.3,0,0,3.6,16.6 +2020-05-08T12:00,57.3,29,25.2,0,0,4.7,14.8 +2020-05-08T13:00,60.2,26,25.1,0,0,5.5,15.7 +2020-05-08T14:00,63.6,22,24.3,0,0,5.7,15.7 +2020-05-08T15:00,64.3,22,24.3,0,0,5.1,15.4 +2020-05-08T16:00,63.1,23,24.9,0,0,1.1,14.1 +2020-05-08T17:00,59.9,28,27,0,0,8.7,13 +2020-05-08T18:00,57.8,32,27.9,0,0,6.2,17.2 +2020-05-08T19:00,54.1,38,29.4,0,0,3.6,11.9 +2020-05-08T20:00,52,39,28,0,0,5.2,8.5 +2020-05-08T21:00,48.9,43,27.5,0,0,4.5,8.7 +2020-05-08T22:00,47.9,41,25.4,0,0,5.5,8.7 +2020-05-08T23:00,46,42,24,0,0,4.7,8.7 +2020-05-09T00:00,43.6,55,28.4,0,0,4.8,7.4 +2020-05-09T01:00,45.3,53,29,0,0,11.9,19.2 +2020-05-09T02:00,44.9,48,26.5,0,0,9.4,21 +2020-05-09T03:00,45.1,51,28,0,0,5,15.7 +2020-05-09T04:00,42.5,59,29.3,0,0,6.2,10.3 +2020-05-09T05:00,42.8,68,33.1,0,0,5.9,10.3 +2020-05-09T06:00,45.3,63,33.5,0,0,7.8,13.4 +2020-05-09T07:00,48.4,56,33.4,0,0,9.4,17.9 +2020-05-09T08:00,50.6,49,32.1,0,0,13.1,23.7 +2020-05-09T09:00,53.1,41,29.8,0,0,13.3,26.2 +2020-05-09T10:00,55.5,35,28,0,0,9.9,24.8 +2020-05-09T11:00,56.8,32,27.5,0,0,9.2,20.1 +2020-05-09T12:00,58.6,31,27.8,0,0,9,19.7 +2020-05-09T13:00,58.6,32,28.9,0,0,10.3,21.5 +2020-05-09T14:00,59.9,32,29.8,0,0,7.8,22.4 +2020-05-09T15:00,60.1,31,29.7,0,0,6.8,18.3 +2020-05-09T16:00,60.3,30,28.8,0,0,7.6,16.8 +2020-05-09T17:00,55.7,38,30.3,0,0,11.9,23.5 +2020-05-09T18:00,52.3,39,27.9,0,0,13.3,23 +2020-05-09T19:00,51.2,39,27.2,0,0,8.1,23.3 +2020-05-09T20:00,50.4,38,26,0,0,6.7,14.1 +2020-05-09T21:00,48.7,37,23.6,0,0,8.3,14.5 +2020-05-09T22:00,48.1,38,23.5,0,0,5.8,13.9 +2020-05-09T23:00,47.7,39,23.7,0,0,4.2,9.8 +2020-05-10T00:00,46.2,40,23.5,0,0,5.4,7.8 +2020-05-10T01:00,45,39,21.7,0,0,7.1,11.2 +2020-05-10T02:00,43.3,40,20.7,0,0,6.7,11.2 +2020-05-10T03:00,40.5,49,22.8,0,0,5.9,10.7 +2020-05-10T04:00,42.6,42,21.3,0,0,0.8,6.9 +2020-05-10T05:00,38.9,57,25.1,0,0,5.8,5.8 +2020-05-10T06:00,39.7,56,25.3,0,0,13.3,21.5 +2020-05-10T07:00,41.3,51,24.4,0,0,12.8,23.5 +2020-05-10T08:00,43.3,47,24.3,0,0,10.2,23.7 +2020-05-10T09:00,46.2,43,24.7,0,0,7.2,20.8 +2020-05-10T10:00,49.6,41,26.5,0,0,6.6,17.4 +2020-05-10T11:00,52.9,37,27.6,0,0,6.7,17.4 +2020-05-10T12:00,56,34,28,0,0,7.1,17.9 +2020-05-10T13:00,58.6,31,28.1,0,0,7.7,18.6 +2020-05-10T14:00,60.3,30,28.3,0,0,6.9,18.6 +2020-05-10T15:00,61.3,28,28.3,0,0,8.4,18.8 +2020-05-10T16:00,61.5,29,28.8,0,0,7.9,18.8 +2020-05-10T17:00,60,31,28.9,0,0,8.4,17.7 +2020-05-10T18:00,59,32,28.9,0,0,10.6,18.6 +2020-05-10T19:00,54.9,39,30.2,0,0,9.1,18.8 +2020-05-10T20:00,52.3,43,30.4,0,0,10.1,17.2 +2020-05-10T21:00,49.5,44,28.3,0,0,10.6,19 +2020-05-10T22:00,47,50,29.1,0,0,8.5,17.7 +2020-05-10T23:00,45.8,52,29.1,0,0,6.8,14.1 +2020-05-11T00:00,43.7,54,28,0,0,7.1,11.4 +2020-05-11T01:00,40.5,62,28.3,0,0,8.3,13.6 +2020-05-11T02:00,39.3,64,28.3,0,0,7.5,13.6 +2020-05-11T03:00,38.2,67,28.1,0,0,6.9,12.3 +2020-05-11T04:00,36.9,70,28,0,0,6.8,11.2 +2020-05-11T05:00,36,71,27.6,0,0,8.3,12.3 +2020-05-11T06:00,35.1,76,28.1,0.004,0,8.6,19.5 +2020-05-11T07:00,36.5,71,28.1,0,0,5.6,15.7 +2020-05-11T08:00,38.9,65,28,0,0.138,1.8,12.1 +2020-05-11T09:00,40.3,62,28.3,0,0,0.7,8.5 +2020-05-11T10:00,41.9,60,29.2,0.004,0.028,3.4,10.5 +2020-05-11T11:00,41.3,64,29.9,0.02,0.028,3.4,11.2 +2020-05-11T12:00,40.4,71,31.8,0.02,0,2.4,10.3 +2020-05-11T13:00,41.4,74,33.5,0.004,0,1.6,8.5 +2020-05-11T14:00,44.2,70,35.2,0.004,0,0.5,8.9 +2020-05-11T15:00,46.2,68,36.1,0,0,1.8,9.6 +2020-05-11T16:00,50.4,61,37.6,0,0,2.7,10.1 +2020-05-11T17:00,53,62,40.5,0,0,7.2,10.3 +2020-05-11T18:00,53,63,40.6,0,0,7.7,13.2 +2020-05-11T19:00,50.2,71,41.1,0,0,9.9,17.7 +2020-05-11T20:00,48.2,77,41.2,0.012,0,5.2,15.9 +2020-05-11T21:00,46.8,83,41.8,0.004,0,2.9,8.5 +2020-05-11T22:00,45.3,93,43.3,0.016,0,1.6,5.1 +2020-05-11T23:00,44.9,93,43.1,0.035,0,2.5,9.2 +2020-05-12T00:00,44.7,94,43.2,0.035,0,5,7.8 +2020-05-12T01:00,43.7,96,42.5,0,0,2.3,8.1 +2020-05-12T02:00,41.5,98,40.9,0,0,9.4,14.8 +2020-05-12T03:00,39.9,100,39.8,0,0,11,17.9 +2020-05-12T04:00,40.3,98,39.7,0,0,6.8,17.2 +2020-05-12T05:00,37.8,97,37,0,0,4.1,11.2 +2020-05-12T06:00,38.2,95,36.9,0,0,2.6,7.2 +2020-05-12T07:00,38.6,95,37.2,0,0,5.2,11 +2020-05-12T08:00,41.1,87,37.6,0,0,5.7,13.4 +2020-05-12T09:00,46.1,79,40.1,0,0,2.2,14.1 +2020-05-12T10:00,52.1,69,42.3,0,0,4.3,13.4 +2020-05-12T11:00,57.6,60,43.9,0,0,6.5,16.8 +2020-05-12T12:00,64,51,45.5,0,0,6.5,16.6 +2020-05-12T13:00,68.4,45,46.3,0,0,9.2,19.5 +2020-05-12T14:00,70.7,43,46.9,0,0,10,21.3 +2020-05-12T15:00,71.4,41,46.7,0,0,12.2,23.9 +2020-05-12T16:00,72,40,46.1,0,0,9.9,23.5 +2020-05-12T17:00,68.7,45,46.8,0,0,3,19.2 +2020-05-12T18:00,66.1,50,46.9,0,0,4.7,8.3 +2020-05-12T19:00,60.4,53,43.4,0,0,4.7,8.7 +2020-05-12T20:00,55.5,63,43.3,0,0,2.9,7.8 +2020-05-12T21:00,53.3,70,43.6,0,0,6.7,7.6 +2020-05-12T22:00,50.7,76,43.3,0,0,4.3,8.9 +2020-05-12T23:00,48.1,76,40.9,0,0,5.3,8.3 +2020-05-13T00:00,47.7,63,35.9,0,0,7.2,11.2 +2020-05-13T01:00,48.6,52,31.8,0,0,6.2,11.9 +2020-05-13T02:00,50.5,45,30.1,0,0,8.1,12.3 +2020-05-13T03:00,51.7,42,29.1,0,0,10.1,16.8 +2020-05-13T04:00,51.4,39,27.3,0,0,10,16.8 +2020-05-13T05:00,44.7,45,24.7,0,0,5.9,16.3 +2020-05-13T06:00,49.7,44,28.9,0,0,6.2,9.6 +2020-05-13T07:00,58.9,39,34.3,0,0,6,11.6 +2020-05-13T08:00,66.9,30,34.1,0,0,4.1,11.4 +2020-05-13T09:00,70.3,18,25.1,0,0,2.1,10.1 +2020-05-13T10:00,71.5,18,26.2,0,0,2.7,10.3 +2020-05-13T11:00,73,18,27.1,0,0,0.9,10.7 +2020-05-13T12:00,75.9,15,24.9,0,0,3.7,11.6 +2020-05-13T13:00,76.8,14,23.2,0,0,6.1,14.3 +2020-05-13T14:00,75.8,17,28.6,0,0,8.8,17.4 +2020-05-13T15:00,73.4,19,28.9,0,0,16,27.7 +2020-05-13T16:00,73.4,17,25.3,0,0,11.1,27.7 +2020-05-13T17:00,73,20,29.1,0,0,7.2,19.2 +2020-05-13T18:00,70.1,33,39.4,0,0,4.1,13 +2020-05-13T19:00,68.1,29,34.3,0,0,1.4,6.7 +2020-05-13T20:00,63.1,34,34.2,0,0,1.8,3.6 +2020-05-13T21:00,57.2,48,37.5,0,0,12.3,18.8 +2020-05-13T22:00,55,62,42.2,0,0,9,20.6 +2020-05-13T23:00,53.9,63,41.6,0,0,9.7,15.7 +2020-05-14T00:00,51.6,70,42,0,0,5.3,16.1 +2020-05-14T01:00,49.9,77,43,0,0,4.5,8.7 +2020-05-14T02:00,52.3,71,43,0,0,4.4,6.7 +2020-05-14T03:00,51.7,83,46.7,0.02,0,7.7,15.9 +2020-05-14T04:00,51.2,88,47.8,0,0,4.4,12.8 +2020-05-14T05:00,49.4,76,42.2,0,0,3,7.2 +2020-05-14T06:00,51,81,45.2,0,0,4,7.8 +2020-05-14T07:00,52.8,85,48.3,0,0,5.7,12.1 +2020-05-14T08:00,56.1,73,47.5,0,0,3.4,12.5 +2020-05-14T09:00,59.8,59,45.4,0,0,2.2,11 +2020-05-14T10:00,64,47,43.1,0,0,5.6,14.3 +2020-05-14T11:00,67.6,35,38.8,0,0,4.4,15.9 +2020-05-14T12:00,68.9,32,37.6,0,0,6.5,15.2 +2020-05-14T13:00,64.3,50,45.5,0,0,17.9,30.4 +2020-05-14T14:00,64.3,50,45.3,0,0,11.1,33.1 +2020-05-14T15:00,65.5,50,46.5,0,0,6.1,21.9 +2020-05-14T16:00,62,61,48.3,0.02,0,4.4,17.2 +2020-05-14T17:00,60.5,59,46,0,0,1.7,19.2 +2020-05-14T18:00,58.3,68,47.9,0.016,0,7.4,13.2 +2020-05-14T19:00,55.3,82,50,0.004,0,2.5,13.2 +2020-05-14T20:00,54.4,86,50.5,0,0,1.4,4.5 +2020-05-14T21:00,53.2,89,49.9,0.012,0,2.8,3.6 +2020-05-14T22:00,51.7,90,48.8,0.016,0,4.1,8.5 +2020-05-14T23:00,50.1,94,48.4,0,0,4.4,5.1 +2020-05-15T00:00,49.3,96,48.2,0,0,3.6,5.8 +2020-05-15T01:00,49.7,95,48.4,0,0,3.8,6.5 +2020-05-15T02:00,50.3,95,48.9,0,0,1,4.9 +2020-05-15T03:00,48.9,96,47.9,0,0,2,2.2 +2020-05-15T04:00,49.1,96,47.9,0,0,2.8,3.1 +2020-05-15T05:00,47.7,95,46.3,0,0,4.4,4.3 +2020-05-15T06:00,49.6,90,46.9,0,0,3.8,8.7 +2020-05-15T07:00,51.4,84,46.9,0,0,3.1,7.8 +2020-05-15T08:00,53.2,78,46.7,0,0,2.1,8.3 +2020-05-15T09:00,56.4,69,46.2,0,0,2.4,8.7 +2020-05-15T10:00,59,61,45.4,0,0,3.4,11 +2020-05-15T11:00,62.1,51,43.7,0,0,3.6,11 +2020-05-15T12:00,63.1,48,42.9,0,0,7.8,15.7 +2020-05-15T13:00,65.3,46,44.2,0,0,3.1,16.8 +2020-05-15T14:00,63.3,52,45.1,0.004,0,8.9,19.7 +2020-05-15T15:00,62.7,53,45.4,0.004,0,3.8,20.1 +2020-05-15T16:00,60.8,60,46.8,0.008,0,7.3,19.7 +2020-05-15T17:00,60.8,70,50.8,0.02,0,8.1,20.6 +2020-05-15T18:00,56.2,86,52.2,0.118,0,12,21.5 +2020-05-15T19:00,53.7,92,51.5,0.083,0,10.3,21 +2020-05-15T20:00,52.8,93,50.8,0.028,0,6.7,17 +2020-05-15T21:00,52.6,87,48.9,0,0,3.2,10.7 +2020-05-15T22:00,51.7,85,47.2,0,0,2.1,6 +2020-05-15T23:00,49.5,93,47.4,0,0,2.5,4.3 +2020-05-16T00:00,49.1,94,47.4,0,0,5.1,8.7 +2020-05-16T01:00,48,94,46.4,0,0,4.7,8.7 +2020-05-16T02:00,46.7,94,45.1,0,0,4.4,8.3 +2020-05-16T03:00,45.2,95,43.9,0,0,4.2,7.4 +2020-05-16T04:00,43.3,96,42.3,0,0,3.9,6.9 +2020-05-16T05:00,46.4,91,44,0,0,2.1,6.3 +2020-05-16T06:00,48.5,88,45,0,0,2.2,4.9 +2020-05-16T07:00,51.9,76,44.5,0,0,1,5.8 +2020-05-16T08:00,54.6,57,39.7,0,0,1.1,6.7 +2020-05-16T09:00,57.8,44,35.9,0,0,3.2,10.1 +2020-05-16T10:00,60.6,36,33.4,0,0,5.4,14.3 +2020-05-16T11:00,62.8,35,34.6,0,0,4,14.8 +2020-05-16T12:00,64.9,34,35.8,0,0,5.1,13.9 +2020-05-16T13:00,66.6,33,36.4,0,0,9.4,19.9 +2020-05-16T14:00,67.1,33,36.7,0,0,9.9,20.6 +2020-05-16T15:00,66.8,33,36.6,0,0,7.8,20.6 +2020-05-16T16:00,67,32,36.1,0,0,6,17.2 +2020-05-16T17:00,66.1,29,32.9,0,0,4.9,13.9 +2020-05-16T18:00,64.8,31,33.6,0,0,5.3,10.3 +2020-05-16T19:00,59.8,44,37.9,0,0,3.6,9.4 +2020-05-16T20:00,57.3,41,33.8,0,0,6.6,12.3 +2020-05-16T21:00,56.8,41,33.6,0,0,1.5,10.5 +2020-05-16T22:00,52.8,53,36.1,0,0,2.9,4.5 +2020-05-16T23:00,50.9,61,37.9,0,0,3.5,6 +2020-05-17T00:00,51.6,57,37,0,0,0.3,4.3 +2020-05-17T01:00,48.4,67,37.8,0,0,1.3,1.8 +2020-05-17T02:00,46.8,70,37.6,0,0,1.8,2.5 +2020-05-17T03:00,43.7,79,37.8,0,0,3.2,4.5 +2020-05-17T04:00,43.1,80,37.3,0,0,3,5.4 +2020-05-17T05:00,43.3,79,37,0,0,3.8,5.4 +2020-05-17T06:00,46,74,38.1,0,0,3.8,8.3 +2020-05-17T07:00,49.6,67,39.2,0,0,4.3,10.5 +2020-05-17T08:00,52.8,61,39.6,0,0,4.6,12.8 +2020-05-17T09:00,56.1,55,40.3,0,0,3.8,12.8 +2020-05-17T10:00,60.1,51,42,0,0,5,14.3 +2020-05-17T11:00,64.2,47,43.6,0,0,6.2,16.3 +2020-05-17T12:00,67.6,43,44.2,0,0,6.9,17.2 +2020-05-17T13:00,70.3,40,44.9,0,0,6.8,17.2 +2020-05-17T14:00,72.2,38,45.4,0,0,7.6,17.9 +2020-05-17T15:00,73,36,44.8,0,0,6.5,17.7 +2020-05-17T16:00,73.9,35,44.2,0,0,6.5,15.7 +2020-05-17T17:00,73.3,32,41.9,0,0,8.5,15.4 +2020-05-17T18:00,71.1,37,43.3,0,0,6.3,15.7 +2020-05-17T19:00,64.9,48,44.9,0,0,4.4,10.5 +2020-05-17T20:00,61.2,58,46.3,0,0,4.3,7.4 +2020-05-17T21:00,59.6,63,47,0,0,6.3,9.8 +2020-05-17T22:00,57.7,68,47.2,0,0,4.4,10.3 +2020-05-17T23:00,54.5,77,47.3,0,0,4.7,7.2 +2020-05-18T00:00,55.5,72,46.7,0,0,2.7,5.6 +2020-05-18T01:00,54.6,75,46.9,0,0,2.6,3.1 +2020-05-18T02:00,49.3,89,46.1,0,0,4.6,5.6 +2020-05-18T03:00,51.1,80,45.1,0,0,3,5.6 +2020-05-18T04:00,50.2,83,45.3,0,0,1.9,3.4 +2020-05-18T05:00,49.4,87,45.8,0,0,2.5,2.5 +2020-05-18T06:00,50.2,85,45.8,0,0,0.7,3.8 +2020-05-18T07:00,52.6,77,45.6,0,0,0.8,6.3 +2020-05-18T08:00,55.6,71,46.3,0,0,1.6,8.7 +2020-05-18T09:00,60.2,62,47.2,0,0,1.7,9.8 +2020-05-18T10:00,66.3,51,47.7,0,0,3.2,11.9 +2020-05-18T11:00,72.3,43,48.8,0,0,4.3,13.4 +2020-05-18T12:00,77.7,39,50.5,0,0,6.6,15.9 +2020-05-18T13:00,80.7,34,49.6,0,0,8.2,18.1 +2020-05-18T14:00,83.2,28,46.3,0,0,7.6,18.1 +2020-05-18T15:00,84.4,24,43.6,0,0,7.6,16.6 +2020-05-18T16:00,84.4,24,44,0,0,9.2,17.7 +2020-05-18T17:00,84.2,23,42.6,0,0,4.7,19.2 +2020-05-18T18:00,77.5,35,47.8,0,0,12.9,20.1 +2020-05-18T19:00,69.4,45,47.1,0,0,6.5,21.9 +2020-05-18T20:00,66,51,47.4,0,0,4,10.7 +2020-05-18T21:00,62.1,56,46,0,0,4.5,8.5 +2020-05-18T22:00,59.2,57,44.2,0,0,5.7,7.8 +2020-05-18T23:00,57.7,57,42.4,0,0,4.6,8.1 +2020-05-19T00:00,55.9,57,40.9,0,0,5.2,8.7 +2020-05-19T01:00,52.3,64,40.5,0,0,5.2,8.5 +2020-05-19T02:00,51.5,67,41,0,0,5.7,8.1 +2020-05-19T03:00,53.4,61,40.3,0,0,1.5,6.9 +2020-05-19T04:00,49.5,67,39,0,0,2.1,2.5 +2020-05-19T05:00,49.6,75,41.9,0,0,4.2,5.4 +2020-05-19T06:00,52.8,72,43.9,0,0,5,9.6 +2020-05-19T07:00,58.2,65,46.5,0,0,2.6,9.4 +2020-05-19T08:00,62.9,60,48.7,0,0,2.8,9.6 +2020-05-19T09:00,70.3,40,45,0,0,3.4,11.2 +2020-05-19T10:00,81,23,40,0,0,3.9,12.3 +2020-05-19T11:00,86.7,11,26.8,0,0,10,18.6 +2020-05-19T12:00,89.2,10,24.4,0,0,12.8,23.9 +2020-05-19T13:00,86.3,16,34.2,0,0,16.1,29.1 +2020-05-19T14:00,86.3,14,31.3,0,0,14.2,29.3 +2020-05-19T15:00,84.5,16,32.8,0,0,20.3,34.2 +2020-05-19T16:00,85.9,14,31.7,0,0,18.5,34.7 +2020-05-19T17:00,85.1,15,31.7,0,0,13.9,35.1 +2020-05-19T18:00,79.3,25,40.6,0,0,20.2,34.7 +2020-05-19T19:00,75.7,29,41.4,0,0,20.4,34 +2020-05-19T20:00,72,43,48,0,0,17.8,34.7 +2020-05-19T21:00,69,47,47.9,0,0,13.2,29.3 +2020-05-19T22:00,67.1,50,47.7,0,0,11.2,22.1 +2020-05-19T23:00,66.1,52,47.8,0,0,10.6,19 +2020-05-20T00:00,63.9,56,47.9,0,0,8.7,17.7 +2020-05-20T01:00,61.5,60,47.4,0,0,6.9,14.5 +2020-05-20T02:00,58.4,65,46.5,0,0,5.9,11.4 +2020-05-20T03:00,56.9,66,45.6,0,0,6.5,10.7 +2020-05-20T04:00,55.2,67,44.5,0,0,6.5,11 +2020-05-20T05:00,54.3,67,43.7,0,0,5.9,11.2 +2020-05-20T06:00,57.7,61,44.2,0,0,6.5,11.6 +2020-05-20T07:00,65,47,44.1,0,0,7.3,13.9 +2020-05-20T08:00,72.9,33,42.4,0,0,10,18.6 +2020-05-20T09:00,78.1,20,33.7,0,0,13.9,25.5 +2020-05-20T10:00,81,12,24.2,0,0,15.9,29.1 +2020-05-20T11:00,82.9,10,21.4,0,0,16.4,29.8 +2020-05-20T12:00,84,10,22.7,0,0,17.5,32.2 +2020-05-20T13:00,85.6,8,16.7,0,0,19.2,34.4 +2020-05-20T14:00,85.5,9,20.2,0,0,18.6,34.7 +2020-05-20T15:00,86.5,7,15.1,0,0,19.6,33.8 +2020-05-20T16:00,83.9,9,18,0,0,15,34.7 +2020-05-20T17:00,83.1,8,15.8,0,0,14.5,26.8 +2020-05-20T18:00,80.1,10,18,0,0,8.6,24.6 +2020-05-20T19:00,71.2,18,25,0,0,10.5,14.5 +2020-05-20T20:00,64.9,15,15.7,0,0,16,28.6 +2020-05-20T21:00,62.4,12,9.8,0,0,6.5,26.6 +2020-05-20T22:00,59.2,22,20.8,0,0,5.5,11 +2020-05-20T23:00,54.1,37,28.7,0,0,5.5,6.7 +2020-05-21T00:00,53.2,49,34.7,0,0,3.6,7.2 +2020-05-21T01:00,49.6,57,35.2,0,0,4.5,6.5 +2020-05-21T02:00,48.5,52,31.7,0,0,2,5.8 +2020-05-21T03:00,45.9,47,27,0,0,2.9,5.6 +2020-05-21T04:00,43.9,48,25.4,0,0,3.8,7.2 +2020-05-21T05:00,44.1,45,24.2,0,0,2.9,6.9 +2020-05-21T06:00,48.8,45,28.4,0,0,3.1,7.4 +2020-05-21T07:00,55.7,37,29.9,0,0,1.9,7.4 +2020-05-21T08:00,58.6,34,30.2,0,0,2.7,9.8 +2020-05-21T09:00,62.3,27,27.6,0,0,5,13.6 +2020-05-21T10:00,66,22,25.7,0,0,6.3,16.1 +2020-05-21T11:00,69.2,18,24.3,0,0,5.2,16.3 +2020-05-21T12:00,71.2,17,24.2,0,0,4.7,15.2 +2020-05-21T13:00,72.7,16,24.2,0,0,5.1,14.8 +2020-05-21T14:00,73.2,15,22.6,0,0,5.6,15 +2020-05-21T15:00,73.3,14,21.4,0,0,6.3,14.3 +2020-05-21T16:00,72.1,15,22.1,0,0,11.1,20.1 +2020-05-21T17:00,72.1,15,21.8,0,0,6.1,22.6 +2020-05-21T18:00,70.3,17,23.7,0,0,5.6,9.8 +2020-05-21T19:00,65,26,29.2,0,0,5.4,12.8 +2020-05-21T20:00,59.5,35,32.2,0,0,4.8,8.9 +2020-05-21T21:00,55.1,46,34.9,0,0,5.7,9.8 +2020-05-21T22:00,57.4,40,33,0,0,1.2,7.2 +2020-05-21T23:00,53.5,48,34.3,0,0,2.2,3.4 +2020-05-22T00:00,50.8,46,30.7,0,0,5.2,8.7 +2020-05-22T01:00,48.9,44,28.1,0,0,5,8.7 +2020-05-22T02:00,47.1,46,27.4,0,0,4.1,8.3 +2020-05-22T03:00,45,52,28.4,0,0,5.3,6.5 +2020-05-22T04:00,43.9,55,28.9,0,0,5.3,6.7 +2020-05-22T05:00,44.6,68,34.8,0,0,2.8,6.5 +2020-05-22T06:00,49,54,33.1,0,0,2.2,5.8 +2020-05-22T07:00,55,44,33.4,0,0,2.7,8.7 +2020-05-22T08:00,61.4,33,31.8,0,0,2.2,9.2 +2020-05-22T09:00,68.1,24,30.3,0,0,4.3,12.3 +2020-05-22T10:00,73.1,16,24.7,0,0,6,15 +2020-05-22T11:00,75.9,13,21.1,0,0,7,17.2 +2020-05-22T12:00,78.3,10,17.9,0,0,7.4,17.7 +2020-05-22T13:00,80.2,8,13.7,0,0,8.5,18.8 +2020-05-22T14:00,81.2,7,11.8,0,0,9.6,20.4 +2020-05-22T15:00,81,7,12.1,0,0,9,20.1 +2020-05-22T16:00,80.8,7,11.8,0,0,4.9,18.8 +2020-05-22T17:00,79.9,10,18.6,0,0,12.2,12.1 +2020-05-22T18:00,78.6,9,15.1,0,0,9.4,20.8 +2020-05-22T19:00,69.3,15,20.3,0,0,5.2,15.7 +2020-05-22T20:00,63.4,23,24.5,0,0,6.1,8.5 +2020-05-22T21:00,65.8,19,22.1,0,0,1.3,7.2 +2020-05-22T22:00,58.6,28,25.6,0,0,5.6,7.6 +2020-05-22T23:00,56.1,33,27.7,0,0,5.9,7.8 +2020-05-23T00:00,55.8,34,28,0,0,4.3,7.6 +2020-05-23T01:00,52.9,42,30.6,0,0,5.4,5.6 +2020-05-23T02:00,50.5,52,33.7,0,0,5.6,7.4 +2020-05-23T03:00,48.8,54,33.1,0,0,2.8,7.2 +2020-05-23T04:00,47.3,56,32.5,0,0,2.5,4.9 +2020-05-23T05:00,49.9,57,35.2,0,0,2.2,4.5 +2020-05-23T06:00,53.2,51,35.6,0,0,3.8,7.2 +2020-05-23T07:00,56.6,53,39.7,0,0,1.3,8.1 +2020-05-23T08:00,60.3,45,39,0,0,1.6,8.5 +2020-05-23T09:00,65.4,36,37.4,0,0,3.2,11.4 +2020-05-23T10:00,71.8,24,33.1,0,0,6,15.4 +2020-05-23T11:00,75.8,18,29.3,0,0,5.2,16.6 +2020-05-23T12:00,78.3,13,23.4,0,0,2.9,15 +2020-05-23T13:00,79.5,10,18.4,0,0,1.7,12.1 +2020-05-23T14:00,79.7,10,18.1,0,0,4.4,12.8 +2020-05-23T15:00,76.3,19,31.3,0,0,14.4,25.1 +2020-05-23T16:00,75.3,15,24.4,0,0,13.2,27.7 +2020-05-23T17:00,73.9,21,31.6,0,0,13.1,23.3 +2020-05-23T18:00,71.9,23,31.6,0,0,7.2,22.6 +2020-05-23T19:00,67.6,28,33.2,0,0,6.7,11.9 +2020-05-23T20:00,65.5,30,33.2,0,0,12.2,20.1 +2020-05-23T21:00,61.2,42,37.8,0,0,13.1,21.5 +2020-05-23T22:00,57.7,59,43.4,0,0,9.1,21.9 +2020-05-23T23:00,55.8,65,44.2,0,0,5.5,15.2 +2020-05-24T00:00,52.6,75,45,0,0,5.1,9.4 +2020-05-24T01:00,52.2,76,44.9,0,0,2.8,6.5 +2020-05-24T02:00,50.6,79,44.2,0,0,3.2,4.9 +2020-05-24T03:00,50.6,78,44.1,0,0,3.5,5.1 +2020-05-24T04:00,49.5,82,44.1,0,0,3.3,5.4 +2020-05-24T05:00,49.7,80,43.8,0,0,2.1,5.6 +2020-05-24T06:00,52,72,43.3,0,0,3.4,7.2 +2020-05-24T07:00,53.6,65,42.2,0,0,2.9,9.2 +2020-05-24T08:00,55,64,42.8,0.004,0,3,9.6 +2020-05-24T09:00,57,60,43.1,0,0,4,14.1 +2020-05-24T10:00,58.4,53,41.5,0,0,4.4,13.9 +2020-05-24T11:00,59.5,46,38.6,0,0,3.7,14.1 +2020-05-24T12:00,62.9,39,37.6,0,0,3.5,13.9 +2020-05-24T13:00,65,37,38.1,0,0,5.9,16.1 +2020-05-24T14:00,56.6,63,44.2,0.047,0,10.1,18.6 +2020-05-24T15:00,53.6,80,47.7,0.154,0,5.1,18.1 +2020-05-24T16:00,50.6,82,45.2,0.118,0,15.9,22.1 +2020-05-24T17:00,46,79,39.7,0.268,0,8.6,35.6 +2020-05-24T18:00,45.3,85,41,0.079,0,6.2,15.4 +2020-05-24T19:00,45.1,82,40.1,0.024,0,3.5,11 +2020-05-24T20:00,44.5,84,40.1,0.004,0,5.2,8.7 +2020-05-24T21:00,44.2,90,41.4,0,0,4.4,10.1 +2020-05-24T22:00,43.6,93,41.6,0,0,3.1,7.8 +2020-05-24T23:00,42,95,40.6,0,0,3.7,6.5 +2020-05-25T00:00,41.5,93,39.7,0,0,3.8,6.7 +2020-05-25T01:00,40.3,93,38.5,0,0,3.6,6.7 +2020-05-25T02:00,38.6,95,37.2,0,0,3.3,6.7 +2020-05-25T03:00,37.7,94,36.2,0,0,3.4,6 +2020-05-25T04:00,37,92,35.1,0,0,3.7,6.5 +2020-05-25T05:00,38.4,97,37.7,0,0,3.2,6.9 +2020-05-25T06:00,41.8,88,38.6,0,0,3.4,8.3 +2020-05-25T07:00,46.7,70,37.5,0,0,4,9.6 +2020-05-25T08:00,49.8,60,36.4,0,0,5.4,13.9 +2020-05-25T09:00,52.3,55,36.7,0,0,3.1,13.6 +2020-05-25T10:00,55.7,49,37,0,0,3.3,11.6 +2020-05-25T11:00,57.8,42,34.7,0.012,0,7.2,17 +2020-05-25T12:00,58.6,41,34.7,0.02,0,7.6,19 +2020-05-25T13:00,60,39,34.7,0,0,7.7,19 +2020-05-25T14:00,61.3,35,33.6,0,0,7.4,18.6 +2020-05-25T15:00,61.4,33,32.4,0,0,5.5,17.9 +2020-05-25T16:00,61.5,31,30.8,0,0,4.1,14.1 +2020-05-25T17:00,59.2,45,37.6,0,0,6.1,11.4 +2020-05-25T18:00,58.6,47,38.6,0,0,4.8,13.4 +2020-05-25T19:00,57.7,51,39.7,0,0,3,9.2 +2020-05-25T20:00,55.9,55,40,0,0,1.6,3.8 +2020-05-25T21:00,49.6,74,41.5,0,0,4,4.9 +2020-05-25T22:00,46.9,77,40.1,0,0,3.5,6 +2020-05-25T23:00,44.3,82,39.3,0,0,4.6,7.4 +2020-05-26T00:00,43.4,81,37.9,0,0,4.3,7.6 +2020-05-26T01:00,41.9,75,34.6,0,0,3.6,7.2 +2020-05-26T02:00,39.7,73,31.8,0,0,3.5,6.5 +2020-05-26T03:00,38.7,71,29.9,0,0,4.4,6 +2020-05-26T04:00,38.9,62,27.1,0,0,4.1,6 +2020-05-26T05:00,40.1,59,26.9,0,0,3.8,6.7 +2020-05-26T06:00,44.7,54,28.9,0,0,4.2,8.1 +2020-05-26T07:00,51.7,51,34,0,0,3.2,8.9 +2020-05-26T08:00,59.9,41,36,0,0,2.1,9.4 +2020-05-26T09:00,65.1,33,35.3,0,0,0.6,8.7 +2020-05-26T10:00,68.3,27,33.2,0,0,2.4,10.1 +2020-05-26T11:00,70.3,26,34,0,0,3.7,12.1 +2020-05-26T12:00,71.9,26,35.2,0,0,5,13.6 +2020-05-26T13:00,73,26,36.1,0,0,3.7,14.5 +2020-05-26T14:00,75.3,24,36.5,0,0,7.8,15.7 +2020-05-26T15:00,75.1,24,36.2,0,0,8.9,20.8 +2020-05-26T16:00,74.4,25,36.8,0,0,7.8,18.1 +2020-05-26T17:00,73.6,29,39.3,0,0,4.5,15.2 +2020-05-26T18:00,72.1,41,46.9,0,0,2,9.2 +2020-05-26T19:00,66.6,40,41.6,0,0,9.9,15.7 +2020-05-26T20:00,62.4,46,41.5,0,0,9.2,17 +2020-05-26T21:00,61.7,44,39.6,0,0,12.1,19.2 +2020-05-26T22:00,60.8,39,36,0,0,10.6,21.3 +2020-05-26T23:00,55.3,53,38.5,0,0,4,17.4 +2020-05-27T00:00,53.1,60,39.7,0,0,3.2,7.6 +2020-05-27T01:00,53.6,56,38.1,0,0,6.2,11 +2020-05-27T02:00,50.9,63,38.8,0,0,5.1,9.8 +2020-05-27T03:00,52,64,40.2,0,0,4.3,6.7 +2020-05-27T04:00,53.4,63,41.2,0,0,3,6 +2020-05-27T05:00,54.5,54,38.4,0,0,2.6,3.6 +2020-05-27T06:00,55.6,58,41.2,0,0,3.3,6 +2020-05-27T07:00,60.7,53,43.3,0,0,1.1,6.5 +2020-05-27T08:00,66.2,45,44.2,0,0,2.8,8.9 +2020-05-27T09:00,71,35,41.7,0,0,2.7,9.8 +2020-05-27T10:00,73.8,30,40.7,0,0,3.8,12.1 +2020-05-27T11:00,74.8,30,41.4,0,0,3.1,12.1 +2020-05-27T12:00,75.9,29,41.5,0,0,1.9,11 +2020-05-27T13:00,76.8,28,41.6,0,0,2.6,10.3 +2020-05-27T14:00,77.7,28,41.8,0,0,4.3,12.1 +2020-05-27T15:00,76.6,29,41.7,0,0,3,12.3 +2020-05-27T16:00,76.5,29,42.2,0,0,4,10.3 +2020-05-27T17:00,75.2,34,44.9,0,0,4.8,12.5 +2020-05-27T18:00,71.5,44,48.2,0,0,5.6,8.9 +2020-05-27T19:00,66,56,49.9,0,0,7.7,19.5 +2020-05-27T20:00,62.8,67,51.8,0,0,2.6,17 +2020-05-27T21:00,60.7,70,50.8,0,0,4.9,7.2 +2020-05-27T22:00,58.9,73,50.3,0,0,6.7,11.2 +2020-05-27T23:00,57.1,73,48.7,0,0,4.9,11 +2020-05-28T00:00,54.9,75,47.2,0,0,3.5,8.1 +2020-05-28T01:00,55.2,66,43.9,0,0,6.6,11 +2020-05-28T02:00,53.3,73,44.9,0,0,6.8,11.4 +2020-05-28T03:00,55.9,66,44.5,0,0,4,8.5 +2020-05-28T04:00,51.7,78,45,0,0,5.3,7.2 +2020-05-28T05:00,54.5,78,47.9,0,0,5.7,8.7 +2020-05-28T06:00,56.8,75,48.9,0.004,0,6.4,11.2 +2020-05-28T07:00,58.8,71,49.3,0,0,7.8,15.2 +2020-05-28T08:00,60.4,67,49.5,0,0,7,15.2 +2020-05-28T09:00,62.9,61,49.4,0,0,6.7,15.4 +2020-05-28T10:00,66.1,55,49.6,0,0,6.4,15.7 +2020-05-28T11:00,69.1,50,49.6,0,0,5.8,15.7 +2020-05-28T12:00,70.7,46,49.2,0,0,5,15.2 +2020-05-28T13:00,72.8,44,49.4,0,0,4.2,13.9 +2020-05-28T14:00,73.9,42,49.1,0,0,3.4,13 +2020-05-28T15:00,74.3,41,49.1,0,0,1.8,12.5 +2020-05-28T16:00,73.9,40,48.3,0.008,0,3.5,11.9 +2020-05-28T17:00,70.7,53,52.5,0,0,3.9,11.6 +2020-05-28T18:00,69.6,55,52.8,0,0,3.9,10.1 +2020-05-28T19:00,66.5,62,53.2,0,0,6.4,10.7 +2020-05-28T20:00,62.7,71,53.2,0,0,4,10.7 +2020-05-28T21:00,61.2,77,53.9,0,0,3.1,6.7 +2020-05-28T22:00,60.2,78,53.2,0,0,3,5.1 +2020-05-28T23:00,57.4,83,52.2,0,0,4.5,5.4 +2020-05-29T00:00,56.5,83,51.5,0,0,3.7,5.1 +2020-05-29T01:00,55.7,86,51.6,0,0,3.4,5.4 +2020-05-29T02:00,54.2,89,51.2,0,0,3.2,5.4 +2020-05-29T03:00,52.4,92,50.3,0,0,3.4,3.8 +2020-05-29T04:00,50.5,96,49.4,0,0,4.1,5.4 +2020-05-29T05:00,51,90,48.1,0,0,3.2,5.4 +2020-05-29T06:00,54.7,76,47.4,0,0,1.4,4.5 +2020-05-29T07:00,58.4,74,50.1,0,0,2.8,8.7 +2020-05-29T08:00,62.7,66,51,0,0,2.4,9.8 +2020-05-29T09:00,67.6,56,51.4,0,0,2.6,10.5 +2020-05-29T10:00,72.1,50,52.7,0,0,4.8,13.2 +2020-05-29T11:00,76.7,46,54.2,0,0,6.1,15.9 +2020-05-29T12:00,80.8,41,54.9,0,0,7.5,17 +2020-05-29T13:00,80.4,41,54.6,0,0,3,17.4 +2020-05-29T14:00,80.5,38,52.5,0,0,0.9,11.2 +2020-05-29T15:00,84.4,24,44.2,0,0,4.7,11.9 +2020-05-29T16:00,84.5,21,40.7,0,0,1.4,12.3 +2020-05-29T17:00,82.5,26,44.6,0,0,7.8,12.5 +2020-05-29T18:00,78.6,34,48.3,0,0,10.7,17.9 +2020-05-29T19:00,73.9,42,49,0,0,8.9,17.7 +2020-05-29T20:00,67.4,55,50.7,0,0,5.4,14.8 +2020-05-29T21:00,65.6,59,50.7,0,0,5.4,8.3 +2020-05-29T22:00,64.2,58,49.3,0,0,5.5,10.3 +2020-05-29T23:00,61,56,45.2,0,0,5.2,8.9 +2020-05-30T00:00,58.5,56,42.7,0,0,5.6,7.4 +2020-05-30T01:00,57.7,57,42.7,0,0,5.7,7.4 +2020-05-30T02:00,58.7,60,44.8,0,0,4.3,6.9 +2020-05-30T03:00,57.7,66,46.4,0,0,3.3,6.5 +2020-05-30T04:00,56.9,68,46.6,0,0,5.5,6 +2020-05-30T05:00,59.6,60,45.9,0,0,3.9,7.2 +2020-05-30T06:00,61.3,60,47.1,0,0,3.4,6 +2020-05-30T07:00,66.9,50,47.7,0,0,4.6,10.3 +2020-05-30T08:00,72.1,43,48.7,0,0,3.4,10.7 +2020-05-30T09:00,76.4,40,50.3,0,0,3.8,10.5 +2020-05-30T10:00,78.4,38,50.6,0,0,8.9,18.1 +2020-05-30T11:00,78.6,37,50.1,0,0,7.2,19.5 +2020-05-30T12:00,77.1,38,49.3,0,0,3.3,16.6 +2020-05-30T13:00,79.7,34,48.7,0,0,1.2,11.4 +2020-05-30T14:00,79.7,31,46.2,0,0,2.2,10.1 +2020-05-30T15:00,79.1,33,47.8,0,0,5.4,13 +2020-05-30T16:00,77.3,39,50.4,0,0,8.2,16.3 +2020-05-30T17:00,74.3,50,54.6,0,0,13.7,16.1 +2020-05-30T18:00,71.2,59,56.2,0,0,8.4,23.5 +2020-05-30T19:00,69.4,63,56.3,0,0,5.6,15 +2020-05-30T20:00,67.4,70,57.2,0,0,2.5,9.6 +2020-05-30T21:00,65.9,77,58.4,0,0,1.8,4 +2020-05-30T22:00,64.9,81,58.8,0.004,0,4.6,10.3 +2020-05-30T23:00,63.5,84,58.6,0,0,0.7,7.6 +2020-05-31T00:00,60.5,91,58,0,0,4.7,8.1 +2020-05-31T01:00,58.8,93,56.8,0,0,2.8,7.6 +2020-05-31T02:00,57.4,95,55.9,0,0,1.8,4.9 +2020-05-31T03:00,57.1,91,54.5,0,0,1.6,2.9 +2020-05-31T04:00,56.3,87,52.3,0,0,2.1,3.1 +2020-05-31T05:00,56.8,87,53,0,0,3.5,4 +2020-05-31T06:00,59.5,77,52.3,0,0,2,5.8 +2020-05-31T07:00,62.6,70,52.8,0,0,0.9,6.3 +2020-05-31T08:00,66.8,61,53.1,0,0,2.3,9.2 +2020-05-31T09:00,72.3,48,51.7,0,0,1.7,9.6 +2020-05-31T10:00,77.9,37,49.6,0,0,2.9,10.5 +2020-05-31T11:00,82.2,30,47.7,0,0,3.8,11.9 +2020-05-31T12:00,84.7,27,46.9,0,0,4.6,13.9 +2020-05-31T13:00,85,26,46.6,0.004,0,1.6,13 +2020-05-31T14:00,85,23,42.8,0,0,2.3,9.4 +2020-05-31T15:00,83.9,26,45.1,0,0,5.5,12.8 +2020-05-31T16:00,82.6,26,44.4,0,0,5.7,12.5 +2020-05-31T17:00,78.4,37,50.1,0,0,7.6,12.1 +2020-05-31T18:00,76.1,44,52.5,0,0,6.9,12.8 +2020-05-31T19:00,72.7,48,51.8,0,0,7,12.3 +2020-05-31T20:00,68.6,54,51.1,0,0,4.3,11.6 +2020-05-31T21:00,64.7,63,52,0,0,5.1,6.7 +2020-05-31T22:00,63.4,62,50.3,0,0,4,6.5 +2020-05-31T23:00,63,56,47.1,0,0,5.1,7.8 +2020-06-01T00:00,62.2,52,44.2,0,0,4.2,8.5 +2020-06-01T01:00,59.8,58,44.9,0,0,5.7,6.7 +2020-06-01T02:00,59.2,56,43.5,0,0,5.2,6.9 +2020-06-01T03:00,57.7,58,43.2,0,0,5.9,7.2 +2020-06-01T04:00,57.7,55,41.5,0,0,5.6,7.2 +2020-06-01T05:00,56.9,65,45.2,0,0,4.8,7.2 +2020-06-01T06:00,62.7,51,44.4,0,0,4.7,8.1 +2020-06-01T07:00,68.8,46,47,0,0,4.2,9.4 +2020-06-01T08:00,75.5,36,46.5,0,0,4.7,11.9 +2020-06-01T09:00,80.7,29,45.8,0,0,3,11.6 +2020-06-01T10:00,84.1,26,45.2,0,0,3.5,11 +2020-06-01T11:00,86,20,39.7,0,0,3.8,12.1 +2020-06-01T12:00,87.4,19,39.5,0,0,6.9,16.6 +2020-06-01T13:00,87.6,18,39,0,0,2.2,16.3 +2020-06-01T14:00,87.8,17,37.8,0,0,2.5,10.3 +2020-06-01T15:00,87.6,17,37.5,0,0,3,9.8 +2020-06-01T16:00,87.2,17,37.8,0,0,5.4,11.2 +2020-06-01T17:00,87.3,20,40.8,0,0,7.6,13.9 +2020-06-01T18:00,82.6,28,46.4,0,0,5.1,13.6 +2020-06-01T19:00,78.2,32,45.9,0,0,9.6,14.8 +2020-06-01T20:00,75.2,35,45.8,0,0,11.3,18.3 +2020-06-01T21:00,73.9,34,43.5,0,0,12.6,21.3 +2020-06-01T22:00,71.2,36,42.6,0,0,9.5,20.8 +2020-06-01T23:00,67.7,42,43.5,0,0,5.1,15.7 +2020-06-02T00:00,64.7,48,44.6,0,0,4.6,8.1 +2020-06-02T01:00,62.6,53,45.4,0,0,5.5,6.7 +2020-06-02T02:00,62,51,43.6,0,0,4.4,6.7 +2020-06-02T03:00,61.1,53,43.6,0,0,5.4,6.7 +2020-06-02T04:00,60.7,50,42.1,0,0,5.4,6.9 +2020-06-02T05:00,61.2,54,44.2,0,0,2.8,7.2 +2020-06-02T06:00,67.2,43,44.2,0,0,0.9,4.7 +2020-06-02T07:00,72.2,36,43.8,0,0,1.7,6.3 +2020-06-02T08:00,76.6,31,44.1,0,0,0.7,6.3 +2020-06-02T09:00,79.3,24,39.8,0,0,2.7,9.4 +2020-06-02T10:00,81.8,20,36.9,0,0,2.9,9.4 +2020-06-02T11:00,83.5,18,35.7,0,0,4.2,12.1 +2020-06-02T12:00,84.8,17,35.2,0,0,4.5,13 +2020-06-02T13:00,86.4,16,34.8,0,0,6,14.8 +2020-06-02T14:00,87,15,34.3,0,0,7.6,17 +2020-06-02T15:00,87.3,15,33.5,0,0,8.3,17.9 +2020-06-02T16:00,86.5,15,33.4,0,0,9.3,18.6 +2020-06-02T17:00,79.3,24,39.2,0,0,8.3,20.4 +2020-06-02T18:00,79.9,24,40.2,0,0,4.4,14.1 +2020-06-02T19:00,74,42,49.5,0,0,4.1,8.1 +2020-06-02T20:00,70.8,41,45.8,0,0,4.1,5.1 +2020-06-02T21:00,68.3,44,45.2,0,0,4.7,6.9 +2020-06-02T22:00,65.1,55,48.7,0,0,3.6,8.5 +2020-06-02T23:00,63.1,67,51.8,0,0,4.1,5.6 +2020-06-03T00:00,61.4,75,53.4,0,0,4.7,5.6 +2020-06-03T01:00,59.9,87,55.9,0,0,9.4,15.4 +2020-06-03T02:00,58.4,86,54.2,0,0,5.9,15.7 +2020-06-03T03:00,58,80,51.7,0,0,3.2,9.6 +2020-06-03T04:00,57.9,85,53.5,0,0,3.8,6.5 +2020-06-03T05:00,55,76,47.6,0,0,3.9,6.7 +2020-06-03T06:00,60.2,57,45,0,0,2.2,5.6 +2020-06-03T07:00,65.1,52,46.9,0,0,0.9,6.7 +2020-06-03T08:00,69.4,50,50,0,0,1.7,8.3 +2020-06-03T09:00,74.5,42,49.9,0,0,1.4,9.6 +2020-06-03T10:00,79.9,27,42.9,0,0,2.1,9.6 +2020-06-03T11:00,82.8,20,37.4,0,0,5.1,13.2 +2020-06-03T12:00,84.4,18,36.5,0,0,8.5,18.1 +2020-06-03T13:00,86.2,17,36.1,0,0,4,18.6 +2020-06-03T14:00,84.6,19,37.1,0,0,10.9,21.9 +2020-06-03T15:00,85,15,31.6,0,0,3.5,21.5 +2020-06-03T16:00,84,15,32,0,0,8.3,15.4 +2020-06-03T17:00,83.9,17,33.7,0,0,15.9,18.1 +2020-06-03T18:00,77.4,31,44.6,0,0,12.6,28.4 +2020-06-03T19:00,74.5,43,50.3,0,0,1.8,20.1 +2020-06-03T20:00,69.6,47,48.6,0,0,5.1,8.3 +2020-06-03T21:00,64.7,61,51.1,0,0,2.6,8.3 +2020-06-03T22:00,62.9,62,49.8,0,0,5.7,8.7 +2020-06-03T23:00,61.5,52,43.7,0,0,5.8,11 +2020-06-04T00:00,60.5,51,42.4,0,0,5.2,9.8 +2020-06-04T01:00,59.5,51,41.1,0,0,5.1,8.7 +2020-06-04T02:00,58,48,38.7,0,0,5.3,8.9 +2020-06-04T03:00,56.5,49,37.6,0,0,4.4,8.7 +2020-06-04T04:00,55.4,50,37.2,0,0,4.2,7.2 +2020-06-04T05:00,54.7,60,41,0,0,3.9,6.7 +2020-06-04T06:00,59.5,48,39.8,0,0,3.2,6.9 +2020-06-04T07:00,66.6,41,42.4,0,0,3.6,9.6 +2020-06-04T08:00,73.9,32,42.2,0,0,1.9,9.6 +2020-06-04T09:00,79.7,22,37,0,0,3.3,10.5 +2020-06-04T10:00,82.7,17,33.7,0,0,3.8,11.6 +2020-06-04T11:00,83.6,18,35.1,0,0,5.9,15.9 +2020-06-04T12:00,82.5,20,37.3,0,0,4.7,21.7 +2020-06-04T13:00,82.8,19,36.1,0,0,4.1,22.1 +2020-06-04T14:00,85.2,19,37.9,0,0,8.6,18.6 +2020-06-04T15:00,79.8,29,44.3,0.004,0,11,22.8 +2020-06-04T16:00,82.6,20,37.4,0,0,6.8,21.3 +2020-06-04T17:00,82.5,19,36.4,0,0,6.4,17.2 +2020-06-04T18:00,81.6,23,40.1,0,0,4.8,12.5 +2020-06-04T19:00,75,34,44.4,0,0,5.8,8.3 +2020-06-04T20:00,70.7,33,39.9,0,0,3,7.4 +2020-06-04T21:00,66.9,38,40.6,0,0,2.7,4.3 +2020-06-04T22:00,62.8,47,42.1,0,0,4.1,6.5 +2020-06-04T23:00,61.4,47,41.2,0,0,5,8.9 +2020-06-05T00:00,59.5,49,40.3,0,0,4.6,8.3 +2020-06-05T01:00,58.2,51,40.3,0,0,4.3,7.8 +2020-06-05T02:00,56.6,53,39.8,0,0,4,6.9 +2020-06-05T03:00,55.2,55,39.3,0,0,5,6.7 +2020-06-05T04:00,55.7,50,37.4,0,0,4.5,6.9 +2020-06-05T05:00,56.6,56,41.1,0,0,3.6,7.4 +2020-06-05T06:00,60.4,51,42,0,0,2.4,5.8 +2020-06-05T07:00,65,43,42.3,0,0,1.2,6.3 +2020-06-05T08:00,71.7,34,41.8,0,0,2.9,9.6 +2020-06-05T09:00,78.4,27,41.5,0,0,1.8,9.8 +2020-06-05T10:00,83.6,23,41.4,0,0,0.9,9.2 +2020-06-05T11:00,87.4,18,38.9,0,0,2.5,9.6 +2020-06-05T12:00,90.1,14,34.3,0,0,6.5,16.6 +2020-06-05T13:00,91.9,13,33.6,0,0,6.9,17.2 +2020-06-05T14:00,92.6,13,33.6,0,0,6.3,16.3 +2020-06-05T15:00,91.8,14,35.1,0,0,8.8,17.7 +2020-06-05T16:00,91.9,13,33.4,0,0,7.8,17.7 +2020-06-05T17:00,89.8,14,34.6,0,0,15.6,21 +2020-06-05T18:00,84.1,22,41.2,0,0,12,26.2 +2020-06-05T19:00,79.8,27,42.7,0,0,10.3,19.7 +2020-06-05T20:00,75.5,33,44.3,0,0,9.6,17.2 +2020-06-05T21:00,74.2,35,44.6,0,0,7.9,15.7 +2020-06-05T22:00,72.1,37,44.2,0,0,6.2,13.2 +2020-06-05T23:00,68.8,43,45.6,0,0,5.1,10.3 +2020-06-06T00:00,66.5,51,47.6,0,0,4.8,8.5 +2020-06-06T01:00,65.9,52,47.8,0,0,3.8,6 +2020-06-06T02:00,64.8,52,46.7,0,0,2.8,5.1 +2020-06-06T03:00,63.1,53,46,0,0,3.6,5.8 +2020-06-06T04:00,60.5,57,45.3,0,0,4.6,7.2 +2020-06-06T05:00,64,46,42.6,0,0,5.3,7.6 +2020-06-06T06:00,67.7,41,43.4,0,0,4.5,20.1 +2020-06-06T07:00,71.4,35,42.4,0,0,10.2,15.2 +2020-06-06T08:00,74.4,35,45.1,0,0,16.2,28.4 +2020-06-06T09:00,72.4,43,48.7,0.008,0,17,33.8 +2020-06-06T10:00,74,42,49.6,0.008,0,13.8,41.2 +2020-06-06T11:00,72.4,46,50.5,0.004,0,10.3,36 +2020-06-06T12:00,81.1,32,48.4,0,0,15.8,30.6 +2020-06-06T13:00,84.5,26,46,0,0,24.6,45.4 +2020-06-06T14:00,82.9,26,44.9,0,0,25.7,45.9 +2020-06-06T15:00,81,30,46.6,0,0,26.6,49.9 +2020-06-06T16:00,79.1,31,46.1,0,0,20.2,44.7 +2020-06-06T17:00,78.9,29,44.3,0,0,13.9,35.3 +2020-06-06T18:00,79.4,42,54.2,0,0,2.8,23 +2020-06-06T19:00,71.7,43,48.3,0,0,14,23 +2020-06-06T20:00,68.1,48,47.4,0,0,3.5,23 +2020-06-06T21:00,67,50,47.6,0,0,1.1,4.5 +2020-06-06T22:00,61.7,62,48.7,0,0,4.1,5.1 +2020-06-06T23:00,59,70,49.1,0,0,2.9,5.1 +2020-06-07T00:00,57.8,73,49.1,0,0,2.9,5.1 +2020-06-07T01:00,55.9,75,48,0,0,3.1,6 +2020-06-07T02:00,53.2,79,46.9,0,0,3.4,5.4 +2020-06-07T03:00,52,76,44.8,0,0,3.4,4.9 +2020-06-07T04:00,50.8,70,41.3,0,0,3.2,4.9 +2020-06-07T05:00,51.4,61,38.3,0,0,3.8,5.1 +2020-06-07T06:00,56.7,48,37,0,0,3.6,7.8 +2020-06-07T07:00,66.2,34,37,0,0,4.5,9.4 +2020-06-07T08:00,76.2,17,27.8,0,0,11.6,20.1 +2020-06-07T09:00,78.8,16,29.3,0,0,14.6,26.8 +2020-06-07T10:00,82.4,15,30.3,0,0,12,26.8 +2020-06-07T11:00,84.3,14,29.8,0,0,16.1,29.1 +2020-06-07T12:00,85.6,13,29.8,0,0,17.3,31.3 +2020-06-07T13:00,86.8,13,29.4,0,0,19.2,34.2 +2020-06-07T14:00,88.7,10,25.7,0,0,21.3,35.3 +2020-06-07T15:00,89.1,10,25.6,0,0,21.8,37.4 +2020-06-07T16:00,88.8,10,24.7,0,0,20.1,38.7 +2020-06-07T17:00,88.3,10,23.7,0,0,16.9,34.7 +2020-06-07T18:00,84.4,14,30.1,0,0,10,28.4 +2020-06-07T19:00,80.4,15,28.6,0,0,10.9,20.4 +2020-06-07T20:00,72.6,21,29.8,0,0,5.5,17.7 +2020-06-07T21:00,70.2,21,28.9,0,0,7.9,12.3 +2020-06-07T22:00,66.3,24,28.3,0,0,6.7,13.2 +2020-06-07T23:00,61.4,31,30.7,0,0,4.4,11 +2020-06-08T00:00,59.2,37,32.7,0,0,4.8,9.4 +2020-06-08T01:00,60.2,52,42.4,0,0,13.2,25.9 +2020-06-08T02:00,56.1,64,44.1,0,0,5.6,21.7 +2020-06-08T03:00,57.6,59,43.3,0,0,1.7,7.4 +2020-06-08T04:00,54.2,69,44.2,0,0,4.5,5.1 +2020-06-08T05:00,53.5,74,45.6,0,0,2.4,5.8 +2020-06-08T06:00,58.3,57,43,0,0,6.2,11 +2020-06-08T07:00,60.5,51,42.4,0,0,5.5,13.9 +2020-06-08T08:00,63.1,46,41.7,0,0,4.7,13 +2020-06-08T09:00,66.3,37,39.3,0,0,5.7,14.8 +2020-06-08T10:00,69.4,30,36.8,0,0,8.2,18.1 +2020-06-08T11:00,72,27,36.3,0,0,10.5,22.1 +2020-06-08T12:00,73,26,35.9,0,0,9.5,22.1 +2020-06-08T13:00,74.3,25,36.1,0,0,8.6,20.6 +2020-06-08T14:00,75,25,36.6,0,0,7.8,19.2 +2020-06-08T15:00,76.7,25,37.8,0.008,0,8.4,17.4 +2020-06-08T16:00,76.6,25,37.9,0,0,10.4,21.7 +2020-06-08T17:00,75.8,29,41.5,0,0,18.4,21.7 +2020-06-08T18:00,66,43,43,0,0,24.1,40.7 +2020-06-08T19:00,61.7,51,43.2,0,0,18.4,55 +2020-06-08T20:00,58.6,52,40.9,0,0,9.9,31.1 +2020-06-08T21:00,56.2,56,40.6,0,0,12.2,21 +2020-06-08T22:00,52,74,43.9,0.055,0,7.2,26.4 +2020-06-08T23:00,49.3,86,45.4,0.079,0,7.7,25.3 +2020-06-09T00:00,46.5,86,42.6,0.059,0,11.7,23.9 +2020-06-09T01:00,45.8,82,40.6,0.067,0,9.8,19.5 +2020-06-09T02:00,45.3,82,40,0.035,0,7.6,16.6 +2020-06-09T03:00,45.1,87,41.6,0.024,0,5.1,13 +2020-06-09T04:00,46.3,85,42,0.016,0,3.3,9.2 +2020-06-09T05:00,44,79,37.9,0.028,0,2.2,9.8 +2020-06-09T06:00,44.7,82,39.6,0.031,0,8.2,12.5 +2020-06-09T07:00,44.5,84,39.8,0.055,0,10.5,18.8 +2020-06-09T08:00,46.9,76,39.7,0.039,0,7,17.7 +2020-06-09T09:00,47.7,77,40.6,0.008,0,3.4,13.6 +2020-06-09T10:00,50,71,41.1,0,0,5.7,20.1 +2020-06-09T11:00,55.4,54,38.8,0,0,9.2,23.9 +2020-06-09T12:00,59.2,41,35.3,0,0,8.1,20.4 +2020-06-09T13:00,64.1,32,33.9,0,0,11,21.9 +2020-06-09T14:00,66.2,22,26.6,0,0,18.9,32.7 +2020-06-09T15:00,67.2,20,25,0,0,17.9,35.3 +2020-06-09T16:00,66.4,21,25.4,0,0,14,32.2 +2020-06-09T17:00,66.5,21,25.1,0,0,10.2,25.5 +2020-06-09T18:00,62.9,24,25.1,0,0,10.9,22.6 +2020-06-09T19:00,59.4,27,25,0,0,10.5,18.6 +2020-06-09T20:00,55.9,31,25.3,0,0,8.7,17.7 +2020-06-09T21:00,52.7,37,27.1,0,0,6.9,14.5 +2020-06-09T22:00,51.7,40,27.9,0,0,9.4,15.4 +2020-06-09T23:00,48.7,49,30.5,0,0,3.6,15.4 +2020-06-10T00:00,47.3,58,33.3,0,0,3.1,6.3 +2020-06-10T01:00,49.9,54,34,0,0,1.6,6.3 +2020-06-10T02:00,45.1,69,35.3,0,0,3.1,2.9 +2020-06-10T03:00,43.9,70,34.8,0,0,5.9,6.7 +2020-06-10T04:00,44.7,69,35.1,0,0,3.6,6.9 +2020-06-10T05:00,48.9,57,34.5,0,0,1.3,5.4 +2020-06-10T06:00,49.7,60,36.4,0,0,1.8,5.1 +2020-06-10T07:00,54,46,33.9,0,0,4.8,10.7 +2020-06-10T08:00,59.7,37,33.1,0,0,7.2,15.4 +2020-06-10T09:00,63.1,34,34.3,0,0,5.7,15.4 +2020-06-10T10:00,66.3,32,35.2,0,0,3.4,14.5 +2020-06-10T11:00,69.4,29,35.3,0,0,1.7,12.1 +2020-06-10T12:00,73,22,32.1,0,0,3.8,11.9 +2020-06-10T13:00,74.9,19,30.3,0,0,8.7,18.6 +2020-06-10T14:00,75.2,19,30.4,0,0,9.4,22.1 +2020-06-10T15:00,74.8,20,30.7,0,0,8.2,19.9 +2020-06-10T16:00,74,23,33.4,0,0,7,17.2 +2020-06-10T17:00,74.9,19,30.4,0,0,4.7,15 +2020-06-10T18:00,72.9,25,34.7,0,0,2.4,10.3 +2020-06-10T19:00,68.8,37,41.5,0,0,3.6,3.8 +2020-06-10T20:00,61.8,46,41,0,0,6.6,8.3 +2020-06-10T21:00,57.7,52,40.4,0,0,4.8,8.1 +2020-06-10T22:00,55.7,56,40.4,0,0,4.6,7.6 +2020-06-10T23:00,53.7,59,39.7,0,0,4.2,7.6 +2020-06-11T00:00,51.9,63,39.7,0,0,5,8.3 +2020-06-11T01:00,50.9,61,38.1,0,0,4.5,8.3 +2020-06-11T02:00,48.7,65,37.3,0,0,4.3,7.4 +2020-06-11T03:00,47.2,70,37.9,0,0,4.4,6 +2020-06-11T04:00,46.7,71,37.7,0,0,4.1,5.8 +2020-06-11T05:00,48.4,63,36.5,0,0,3.6,5.8 +2020-06-11T06:00,52.7,59,38.8,0,0,2.4,6.3 +2020-06-11T07:00,58.8,52,41.5,0,0,2.7,8.3 +2020-06-11T08:00,65.8,38,39.7,0,0,3,10.1 +2020-06-11T09:00,70.4,28,36.1,0,0,2.8,10.1 +2020-06-11T10:00,73.6,23,33,0,0,4.2,12.8 +2020-06-11T11:00,75.7,21,33,0,0,3.8,12.8 +2020-06-11T12:00,77.4,21,33.8,0,0,5,14.1 +2020-06-11T13:00,78.1,20,34,0,0,5.5,14.8 +2020-06-11T14:00,78.9,19,33.6,0,0,3,14.5 +2020-06-11T15:00,79.6,19,33.5,0,0,3.2,11.2 +2020-06-11T16:00,79.7,19,34.2,0,0,6.4,13.6 +2020-06-11T17:00,79.6,19,33.5,0,0,7,14.1 +2020-06-11T18:00,77.4,22,36,0,0,6.3,14.5 +2020-06-11T19:00,71.2,40,45.9,0,0,4.7,10.1 +2020-06-11T20:00,71.5,32,40.1,0,0,1.8,5.8 +2020-06-11T21:00,62.2,47,41.5,0,0,5.3,6.3 +2020-06-11T22:00,60.6,46,39.8,0,0,4.6,7.2 +2020-06-11T23:00,56.4,56,40.7,0,0,5.2,7.2 +2020-06-12T00:00,53.8,61,40.6,0,0,2.6,6.5 +2020-06-12T01:00,51.5,70,42,0,0,4.5,5.8 +2020-06-12T02:00,50.8,71,41.8,0,0,2.2,6.3 +2020-06-12T03:00,49.8,74,41.7,0,0,2.7,5.1 +2020-06-12T04:00,47.8,77,41,0,0,2.2,5.1 +2020-06-12T05:00,48.7,76,41.5,0,0,3.1,4.7 +2020-06-12T06:00,54.4,63,42,0,0,3.6,8.3 +2020-06-12T07:00,62.7,48,42.8,0,0,2.7,8.3 +2020-06-12T08:00,70.6,36,42.4,0,0,4.5,11.6 +2020-06-12T09:00,76.9,28,41.1,0,0,5.2,13 +2020-06-12T10:00,82,22,39.5,0,0,5.4,14.1 +2020-06-12T11:00,85.2,17,35.5,0,0,4.2,15 +2020-06-12T12:00,87.1,14,33,0,0,5.4,14.1 +2020-06-12T13:00,88,14,32.4,0,0,5.4,15 +2020-06-12T14:00,88.3,14,32.3,0,0,7.2,15.4 +2020-06-12T15:00,87.5,14,32.5,0,0,10.1,19.5 +2020-06-12T16:00,87.4,14,31.6,0,0,9.7,19.9 +2020-06-12T17:00,87.5,14,31.9,0,0,6.2,22.8 +2020-06-12T18:00,82,24,41.5,0,0,10.2,19.7 +2020-06-12T19:00,77.8,30,43.8,0,0,7.7,18.1 +2020-06-12T20:00,72.7,31,40.6,0,0,8.8,15.4 +2020-06-12T21:00,68.7,37,41.4,0,0,5.6,14.5 +2020-06-12T22:00,65.7,42,41.8,0,0,5.2,9.2 +2020-06-12T23:00,64.5,44,42,0,0,5.6,8.5 +2020-06-13T00:00,63,47,42.4,0,0,5.2,9.8 +2020-06-13T01:00,60.6,51,42.4,0,0,4.9,8.7 +2020-06-13T02:00,57.1,59,43.1,0,0,4.6,7.8 +2020-06-13T03:00,55,64,43.2,0,0,4.3,6.5 +2020-06-13T04:00,54.6,61,41.5,0,0,3.6,5.8 +2020-06-13T05:00,54.8,67,43.9,0,0,3.3,5.8 +2020-06-13T06:00,59.3,56,43.6,0,0,1,4.5 +2020-06-13T07:00,64,45,42.2,0,0,1.6,6.7 +2020-06-13T08:00,67.3,41,43.1,0,0,3.1,10.7 +2020-06-13T09:00,72.7,35,43.5,0,0,3.8,11.4 +2020-06-13T10:00,78.5,28,42.3,0,0,3.6,12.8 +2020-06-13T11:00,83.6,24,43,0,0,7.3,18.6 +2020-06-13T12:00,84.7,19,38.4,0,0,4.7,17.4 +2020-06-13T13:00,87.8,19,39.9,0,0,2.7,16.3 +2020-06-13T14:00,78.4,34,47.5,0,0,15.7,34 +2020-06-13T15:00,79.5,33,47.6,0,0,8.1,28.2 +2020-06-13T16:00,81.9,30,47,0,0,5.6,17 +2020-06-13T17:00,79.6,34,49.1,0,0,8.2,16.3 +2020-06-13T18:00,78.1,38,50.1,0,0,3.1,14.1 +2020-06-13T19:00,75.4,35,46.1,0,0,6.9,13.6 +2020-06-13T20:00,71.3,43,47.8,0,0,4.2,11.4 +2020-06-13T21:00,68.7,49,48.7,0,0,4,6.9 +2020-06-13T22:00,66.6,51,48,0,0,5.8,9.4 +2020-06-13T23:00,65.1,52,47.2,0,0,6.3,10.1 +2020-06-14T00:00,65.6,52,47.3,0,0,7.6,12.3 +2020-06-14T01:00,65.8,49,45.9,0,0,8,13.4 +2020-06-14T02:00,64.3,47,43.7,0,0,7.1,13.4 +2020-06-14T03:00,62.2,48,42.4,0,0,6.7,11.9 +2020-06-14T04:00,59.8,50,41.2,0,0,6.9,11.6 +2020-06-14T05:00,62.6,49,43.3,0,0,12.3,12.3 +2020-06-14T06:00,65.5,46,44.4,0,0,11.9,20.4 +2020-06-14T07:00,71.6,39,45.2,0,0,12,21.3 +2020-06-14T08:00,76.5,32,44.4,0,0,14,24.8 +2020-06-14T09:00,79.5,26,42,0,0,13.7,26.8 +2020-06-14T10:00,82.4,21,38.2,0,0,12.2,25.5 +2020-06-14T11:00,85.1,17,35.7,0,0,12.5,25.7 +2020-06-14T12:00,87.4,14,32.8,0,0,10.5,25.7 +2020-06-14T13:00,89.2,12,30.7,0,0,10.8,23.3 +2020-06-14T14:00,90.3,11,29.4,0,0,12.4,24.8 +2020-06-14T15:00,90,11,29,0,0,13.2,26.4 +2020-06-14T16:00,89.8,11,28.7,0,0,7.6,25.5 +2020-06-14T17:00,89.2,11,27.2,0,0,10.3,17.2 +2020-06-14T18:00,82.8,18,35.6,0,0,15.2,24.8 +2020-06-14T19:00,79.3,21,35.5,0,0,4.7,24.8 +2020-06-14T20:00,72.6,27,37.1,0,0,4.5,7.6 +2020-06-14T21:00,67.8,36,40.2,0,0,4,6.9 +2020-06-14T22:00,65.8,40,41.1,0,0,5.1,7.4 +2020-06-14T23:00,62.3,44,40,0,0,5.7,10.7 +2020-06-15T00:00,59.8,46,38.9,0,0,3.8,9.4 +2020-06-15T01:00,58.4,46,37.6,0,0,3.5,6.3 +2020-06-15T02:00,55.9,48,36.3,0,0,4.2,6.3 +2020-06-15T03:00,54,48,34.9,0,0,4.2,6.5 +2020-06-15T04:00,52.8,47,33.2,0,0,4.2,6 +2020-06-15T05:00,53.4,42,30.8,0,0,3.8,6.3 +2020-06-15T06:00,57.5,39,32.6,0,0,3.9,8.1 +2020-06-15T07:00,64,33,34.3,0,0,0.6,8.1 +2020-06-15T08:00,68.7,26,32.3,0,0,3.7,11.2 +2020-06-15T09:00,74.9,22,33,0,0,2.7,11.4 +2020-06-15T10:00,80.4,17,32.1,0,0,2.9,11.2 +2020-06-15T11:00,84.8,13,29.4,0,0,4.4,13.4 +2020-06-15T12:00,88,11,26.5,0,0,6.4,15.7 +2020-06-15T13:00,90.4,10,25.5,0,0,8.3,18.6 +2020-06-15T14:00,90.7,10,25.8,0,0,6.5,18.6 +2020-06-15T15:00,90.9,10,26.2,0,0,4,15.7 +2020-06-15T16:00,90.8,9,25.1,0,0,2.2,11.9 +2020-06-15T17:00,90.1,10,26.5,0,0,5.2,14.3 +2020-06-15T18:00,88.1,12,29,0,0,1.4,10.7 +2020-06-15T19:00,80.8,22,38.4,0,0,4.1,7.2 +2020-06-15T20:00,74.4,27,38.6,0,0,5.4,7.2 +2020-06-15T21:00,71,31,38.8,0,0,4,7.6 +2020-06-15T22:00,68.5,33,38.2,0,0,5,8.3 +2020-06-15T23:00,65.3,37,38.3,0,0,3.9,8.1 +2020-06-16T00:00,63.3,40,38.8,0,0,4.1,6.7 +2020-06-16T01:00,61.3,43,38.4,0,0,4.3,6.7 +2020-06-16T02:00,59.9,44,37.9,0,0,4.7,7.6 +2020-06-16T03:00,59.6,43,36.9,0,0,6,9.6 +2020-06-16T04:00,59.6,39,34.5,0,0,6.5,10.5 +2020-06-16T05:00,60.6,34,31.9,0,0,5.9,12.8 +2020-06-16T06:00,65.8,31,34.1,0,0,5.8,9.4 +2020-06-16T07:00,73.1,26,36.1,0,0,4.3,9.8 +2020-06-16T08:00,80.5,21,36.4,0,0,6,12.8 +2020-06-16T09:00,86.1,14,31.6,0,0,9,17.7 +2020-06-16T10:00,88.7,12,29.8,0,0,14.5,26.4 +2020-06-16T11:00,89.5,12,29.7,0,0,12.9,29.1 +2020-06-16T12:00,90.4,12,31.1,0,0,11.1,25.3 +2020-06-16T13:00,92.4,11,29.8,0,0,12.1,24.8 +2020-06-16T14:00,92.9,10,29.3,0,0,15,28.6 +2020-06-16T15:00,91.6,12,31.7,0,0,12.9,28.9 +2020-06-16T16:00,91.2,13,33.7,0,0,13.4,25.1 +2020-06-16T17:00,92.6,11,29.3,0,0,11.1,25.5 +2020-06-16T18:00,90.1,12,30.4,0,0,10.2,19.5 +2020-06-16T19:00,85.2,14,30.5,0,0,10.8,17.9 +2020-06-16T20:00,79.6,16,30.1,0,0,9.8,18.3 +2020-06-16T21:00,72.9,22,32.3,0,0,5.3,16.3 +2020-06-16T22:00,68.8,27,33.4,0,0,5.9,10.1 +2020-06-16T23:00,65.9,31,34.6,0,0,5.8,9.8 +2020-06-17T00:00,64.4,34,35.2,0,0,6.8,12.1 +2020-06-17T01:00,61.3,38,35.8,0,0,5.4,11.6 +2020-06-17T02:00,60.4,39,35,0,0,6.5,12.5 +2020-06-17T03:00,58.6,42,35.7,0,0,5.1,11.6 +2020-06-17T04:00,59.6,40,35.3,0,0,1.3,7.8 +2020-06-17T05:00,55.5,56,39.8,0,0,2.9,3.6 +2020-06-17T06:00,60.1,44,38.1,0,0,4.1,8.5 +2020-06-17T07:00,64,38,37.7,0,0,4,10.7 +2020-06-17T08:00,68.1,32,37.3,0,0,2.7,11 +2020-06-17T09:00,76.4,24,36.4,0,0,1.6,10.3 +2020-06-17T10:00,84.5,15,31.8,0,0,3,11.4 +2020-06-17T11:00,88.7,9,22.8,0,0,4.3,13 +2020-06-17T12:00,91,9,23.6,0,0,6.2,15.7 +2020-06-17T13:00,93,8,22.2,0,0,6,16.6 +2020-06-17T14:00,94.3,7,20.4,0,0,3,15.7 +2020-06-17T15:00,93.4,9,25.4,0,0,9.3,18.1 +2020-06-17T16:00,90.1,11,29.4,0,0,18.4,33.1 +2020-06-17T17:00,88.5,12,30.2,0,0,9.8,32.7 +2020-06-17T18:00,87.4,14,32.1,0,0,12.5,19.5 +2020-06-17T19:00,81.4,17,32.1,0,0,17.8,27.7 +2020-06-17T20:00,74.7,24,36,0,0,13.3,37.6 +2020-06-17T21:00,72.1,27,36.5,0,0,7.6,21.7 +2020-06-17T22:00,70.1,29,36.5,0,0,7.2,12.8 +2020-06-17T23:00,67,29,33.4,0,0,8.3,13.6 +2020-06-18T00:00,63.7,32,33.5,0,0,5.1,13.9 +2020-06-18T01:00,62,36,34.6,0,0,5.1,8.5 +2020-06-18T02:00,60.3,25,24.4,0,0,6.3,11.4 +2020-06-18T03:00,58,25,22.7,0,0,4.7,10.5 +2020-06-18T04:00,55.7,28,22.9,0,0,5.2,7.6 +2020-06-18T05:00,55,39,30.7,0,0,3.2,7.6 +2020-06-18T06:00,56.1,36,29.6,0,0,4.9,9.6 +2020-06-18T07:00,58,34,30.1,0,0,6.2,13.9 +2020-06-18T08:00,59.9,34,31.2,0,0,6.5,15.7 +2020-06-18T09:00,62,33,32.2,0,0,5.1,15.7 +2020-06-18T10:00,64.5,31,33.2,0,0,4,14.5 +2020-06-18T11:00,66.8,30,34.3,0,0,4.7,14.8 +2020-06-18T12:00,69.3,29,35.5,0,0,5.1,15.4 +2020-06-18T13:00,71.7,27,36.1,0,0,3.7,15.4 +2020-06-18T14:00,73.4,26,36.1,0,0,3.6,13.6 +2020-06-18T15:00,73.9,25,36.1,0,0,6.9,15.2 +2020-06-18T16:00,72.2,26,35.1,0,0,5.9,15.4 +2020-06-18T17:00,66.8,36,38.7,0,0,4.9,13 +2020-06-18T18:00,62.6,46,41.6,0.008,0,6,13.6 +2020-06-18T19:00,60.3,59,45.9,0.02,0,3.5,14.5 +2020-06-18T20:00,58.4,76,50.7,0.016,0,4,10.7 +2020-06-18T21:00,57.3,79,50.9,0.024,0,1.1,8.9 +2020-06-18T22:00,56.2,87,52.3,0.028,0,3.4,10.5 +2020-06-18T23:00,55,91,52.4,0.012,0,4.4,8.5 +2020-06-19T00:00,53.2,92,50.8,0,0,2.6,7.8 +2020-06-19T01:00,53.1,91,50.5,0,0,2.2,4.7 +2020-06-19T02:00,52.3,95,51.1,0,0,2.7,3.8 +2020-06-19T03:00,53.9,92,51.6,0,0,2.5,4.5 +2020-06-19T04:00,53.9,92,51.7,0,0,1.4,4.5 +2020-06-19T05:00,54.3,85,50,0.047,0,8.7,15 +2020-06-19T06:00,54.1,81,48.2,0.008,0,7.9,19 +2020-06-19T07:00,55.5,74,47.2,0,0,7.7,15.7 +2020-06-19T08:00,57.4,67,46.6,0.039,0,3.9,20.6 +2020-06-19T09:00,58.6,66,47.3,0.02,0,0.9,20.8 +2020-06-19T10:00,61.4,60,47.6,0.004,0,1.7,20.1 +2020-06-19T11:00,67.6,43,44.4,0,0,1.3,10.3 +2020-06-19T12:00,71.1,34,41.4,0,0,2.6,15.2 +2020-06-19T13:00,74.1,31,41.5,0,0,10.6,19.5 +2020-06-19T14:00,67,47,46.1,0.004,0,15.7,27.5 +2020-06-19T15:00,65.2,52,47.4,0.004,0,14.4,28.6 +2020-06-19T16:00,66.8,44,44.4,0,0,9,29.1 +2020-06-19T17:00,67.3,44,44.4,0,0,2.9,18.6 +2020-06-19T18:00,64.3,56,48.4,0,0,10,17.2 +2020-06-19T19:00,61.4,66,50.1,0,0,7.3,18.1 +2020-06-19T20:00,58.9,73,50.3,0,0,5.3,12.1 +2020-06-19T21:00,55.6,85,51,0,0,4.3,8.7 +2020-06-19T22:00,55.1,85,50.7,0,0,2.3,5.1 +2020-06-19T23:00,54.1,87,50.2,0,0,4.6,7.8 +2020-06-20T00:00,51.9,91,49.3,0,0,3.8,7.6 +2020-06-20T01:00,50.4,90,47.5,0,0,3.4,6.3 +2020-06-20T02:00,49.5,86,45.5,0,0,3.6,6 +2020-06-20T03:00,48.2,82,43,0,0,4,6.9 +2020-06-20T04:00,46.5,77,39.6,0,0,3.2,6.7 +2020-06-20T05:00,46.6,74,38.7,0,0,4.7,5.8 +2020-06-20T06:00,51.3,59,37.6,0,0,5,9.6 +2020-06-20T07:00,60.4,45,39.1,0,0,3.4,9.8 +2020-06-20T08:00,69.2,32,38.1,0,0,3.2,10.3 +2020-06-20T09:00,75,21,32.3,0,0,2.6,10.1 +2020-06-20T10:00,77.5,17,28.5,0,0,2.4,10.7 +2020-06-20T11:00,79.3,16,29.1,0,0,4.8,13.2 +2020-06-20T12:00,81,15,29.1,0,0,5.1,14.5 +2020-06-20T13:00,81.6,15,28.8,0,0,5.5,15 +2020-06-20T14:00,82,15,29.8,0,0,5.6,15 +2020-06-20T15:00,82.6,16,31.4,0,0,7.1,16.3 +2020-06-20T16:00,83.5,14,30,0,0,7.2,16.1 +2020-06-20T17:00,83.6,14,29.2,0,0,6.3,17 +2020-06-20T18:00,79.3,20,34.3,0,0,9.3,15.7 +2020-06-20T19:00,74.3,27,38.5,0,0,4.5,15.2 +2020-06-20T20:00,71.5,32,40.5,0,0,5.5,9.8 +2020-06-20T21:00,68.6,34,39,0,0,4.9,8.9 +2020-06-20T22:00,67.6,34,38.1,0,0,3.1,6.9 +2020-06-20T23:00,66.9,38,40.4,0,0,4.7,8.7 +2020-06-21T00:00,65.2,40,40.6,0,0,3.8,7.4 +2020-06-21T01:00,64.4,38,38,0,0,6,10.3 +2020-06-21T02:00,62.2,40,37.2,0,0,4.6,10.1 +2020-06-21T03:00,59.5,46,38.9,0,0,3.4,7.6 +2020-06-21T04:00,59,46,38.2,0,0,4,6.7 +2020-06-21T05:00,58.9,59,44.7,0,0,3.5,6.7 +2020-06-21T06:00,61,44,39.1,0,0,3.4,6 +2020-06-21T07:00,64,41,39.7,0,0,4,8.3 +2020-06-21T08:00,68.6,34,39.4,0,0,5.2,11 +2020-06-21T09:00,73.6,27,37.1,0,0,3.5,11.4 +2020-06-21T10:00,77.5,22,35.4,0,0,3.1,10.7 +2020-06-21T11:00,80.1,22,37.3,0,0,3.1,11.2 +2020-06-21T12:00,81.6,21,38.4,0,0,5.4,15.4 +2020-06-21T13:00,81.4,21,37.5,0,0,6.8,16.3 +2020-06-21T14:00,81.5,21,37.9,0,0,10,19.9 +2020-06-21T15:00,79.4,24,40,0,0,7.7,21.3 +2020-06-21T16:00,79.4,24,39.1,0,0,7,16.8 +2020-06-21T17:00,67.1,61,53.1,0,0,17.3,14.3 +2020-06-21T18:00,68,55,51.4,0,0,9.1,28.6 +2020-06-21T19:00,67.9,53,50,0,0,2.1,16.6 +2020-06-21T20:00,64.9,61,51.1,0,0,3.3,5.1 +2020-06-21T21:00,63.4,65,51.4,0,0,4.5,6.5 +2020-06-21T22:00,61.2,71,51.6,0,0,3.5,9.2 +2020-06-21T23:00,59.5,76,51.9,0,0,3.4,6 +2020-06-22T00:00,59.1,74,50.8,0,0,2.9,4.7 +2020-06-22T01:00,57.9,73,49.4,0,0,4.7,8.3 +2020-06-22T02:00,57.9,66,46.6,0,0,3.6,8.7 +2020-06-22T03:00,57.8,71,48.6,0,0,12.6,20.1 +2020-06-22T04:00,56.4,78,49.7,0,0,8.2,21.3 +2020-06-22T05:00,56,70,46.4,0,0,4.1,13.6 +2020-06-22T06:00,60.4,58,45.5,0,0,2.7,7.2 +2020-06-22T07:00,64.6,49,44.8,0,0,2.9,8.7 +2020-06-22T08:00,67.1,45,44.9,0,0,2.7,10.1 +2020-06-22T09:00,70,43,46.5,0,0,4,12.3 +2020-06-22T10:00,73.1,39,46.9,0,0,6,15.4 +2020-06-22T11:00,74.3,37,46.4,0,0,5.7,15.9 +2020-06-22T12:00,76.1,34,45.3,0,0,5.5,15.4 +2020-06-22T13:00,77.4,31,44.2,0,0,5.7,15.9 +2020-06-22T14:00,78.5,29,43.8,0,0,5.8,15.4 +2020-06-22T15:00,78.8,29,43.6,0,0,6,16.3 +2020-06-22T16:00,79.3,27,42.6,0,0,6.6,15 +2020-06-22T17:00,77.2,35,47.7,0,0,10.4,16.1 +2020-06-22T18:00,76.8,33,45.1,0,0,7.2,19.7 +2020-06-22T19:00,73.9,37,46.2,0,0,5.4,13.2 +2020-06-22T20:00,68,53,50.4,0,0,11,18.3 +2020-06-22T21:00,65.2,63,52.3,0,0,7.1,18.1 +2020-06-22T22:00,63,69,52.7,0,0,4.3,12.1 +2020-06-22T23:00,61.9,71,52.5,0.004,0,2.4,6.9 +2020-06-23T00:00,61.8,75,53.7,0,0,3.9,6.3 +2020-06-23T01:00,63.1,67,52,0,0,8.3,13.2 +2020-06-23T02:00,61.5,61,47.9,0,0,7.3,13.9 +2020-06-23T03:00,58.8,64,46.8,0,0,4.2,12.1 +2020-06-23T04:00,56.2,75,48.4,0,0,2.9,6.7 +2020-06-23T05:00,56,82,50.6,0,0,4.6,4.7 +2020-06-23T06:00,58.5,76,51.1,0,0,0.2,7.6 +2020-06-23T07:00,62.9,62,49.5,0,0,0.9,6.7 +2020-06-23T08:00,66.7,53,49,0,0,0.8,7.6 +2020-06-23T09:00,70.2,48,49.3,0,0,1.6,9.4 +2020-06-23T10:00,73.8,43,49.7,0,0,3.1,11.9 +2020-06-23T11:00,76.9,39,50.1,0,0,4.7,13.6 +2020-06-23T12:00,79.3,33,47.7,0,0,5.3,15.2 +2020-06-23T13:00,82,28,45.8,0,0,7.8,16.1 +2020-06-23T14:00,77.1,33,46,0,0,9.3,23.9 +2020-06-23T15:00,80.7,28,44.3,0,0,8.5,19 +2020-06-23T16:00,79.4,29,44.8,0,0,9,19 +2020-06-23T17:00,81.2,27,43.6,0,0,4.9,17.9 +2020-06-23T18:00,79.7,29,45.1,0,0,5.6,10.3 +2020-06-23T19:00,74.5,45,51.8,0,0,4.1,9.8 +2020-06-23T20:00,69.7,51,50.5,0,0,4.6,6.7 +2020-06-23T21:00,68.5,50,49.2,0,0,5.4,8.7 +2020-06-23T22:00,64.9,58,49.7,0,0,4.7,8.9 +2020-06-23T23:00,62.6,63,49.8,0,0,4.5,7.8 +2020-06-24T00:00,60.5,66,49,0,0,3.6,7.4 +2020-06-24T01:00,58.4,69,48.1,0,0,3.8,5.6 +2020-06-24T02:00,57,70,47.4,0,0,4.4,5.6 +2020-06-24T03:00,56.7,66,45.4,0,0,3.8,5.6 +2020-06-24T04:00,55.5,66,44.2,0,0,4,5.6 +2020-06-24T05:00,55.9,66,44.8,0,0,3.6,5.8 +2020-06-24T06:00,60,60,46,0,0,4.4,8.9 +2020-06-24T07:00,67.6,48,47.4,0,0,2.8,8.9 +2020-06-24T08:00,74.7,37,46.4,0,0,2.2,8.7 +2020-06-24T09:00,80.1,29,44.8,0,0,2.5,9.8 +2020-06-24T10:00,83.9,24,43.5,0,0,1.7,10.5 +2020-06-24T11:00,85.6,18,36.7,0,0,2.6,12.1 +2020-06-24T12:00,87.4,16,36.2,0,0,6.3,15 +2020-06-24T13:00,87.6,17,37.5,0,0,10.1,20.8 +2020-06-24T14:00,88,16,36.5,0,0,8.1,21 +2020-06-24T15:00,87.8,16,36.5,0,0,4.5,17.9 +2020-06-24T16:00,87.3,16,36.3,0,0,5,13 +2020-06-24T17:00,87.1,18,37.9,0,0,7.5,12.3 +2020-06-24T18:00,79.8,30,45.2,0.004,0,5.4,13.2 +2020-06-24T19:00,75.5,35,45.7,0,0,10.6,18.1 +2020-06-24T20:00,72.4,42,48.2,0,0,3.4,17.2 +2020-06-24T21:00,70.2,51,51.3,0,0,3.5,5.4 +2020-06-24T22:00,68.7,53,51,0,0,4.8,7.2 +2020-06-24T23:00,66.4,58,51.2,0,0,5.2,9.4 +2020-06-25T00:00,63.8,64,51.4,0,0,4.1,8.9 +2020-06-25T01:00,60.6,73,51.9,0,0,5.1,8.3 +2020-06-25T02:00,59.7,70,49.8,0,0,4.5,8.5 +2020-06-25T03:00,58.6,65,46.9,0,0,4.6,7.6 +2020-06-25T04:00,61.3,55,45,0,0,3.6,7.4 +2020-06-25T05:00,58.2,66,46.9,0,0,5.5,4.5 +2020-06-25T06:00,64.3,53,46.6,0,0,4.5,7.4 +2020-06-25T07:00,71.1,38,44.5,0,0,4.9,10.5 +2020-06-25T08:00,78.6,28,42.8,0,0,2.9,10.7 +2020-06-25T09:00,85.6,21,41.5,0,0,1.9,9.4 +2020-06-25T10:00,87.5,17,37.7,0,0,7.9,17.2 +2020-06-25T11:00,86,21,41.9,0,0,13,24.2 +2020-06-25T12:00,88.6,14,34.1,0,0,4.6,24.8 +2020-06-25T13:00,86.6,19,39.1,0,0,12.1,23.3 +2020-06-25T14:00,87.4,17,37.8,0,0,3.9,23.3 +2020-06-25T15:00,87.5,18,38.9,0,0,8.6,14.8 +2020-06-25T16:00,84.9,23,42.5,0,0,9.7,23.5 +2020-06-25T17:00,84,23,41.7,0,0,7.5,19.2 +2020-06-25T18:00,83.6,22,40.7,0,0,10.6,17.4 +2020-06-25T19:00,78.4,29,43.3,0,0,14.8,23.9 +2020-06-25T20:00,74.7,35,44.9,0,0,9.2,25.3 +2020-06-25T21:00,73,38,45.8,0,0,4.3,15 +2020-06-25T22:00,71.9,43,48,0,0,10,16.8 +2020-06-25T23:00,68.2,55,51.5,0,0,8.6,16.8 +2020-06-26T00:00,67.6,55,50.8,0,0,7.1,14.3 +2020-06-26T01:00,64.1,64,51.6,0,0,3.5,11.9 +2020-06-26T02:00,62.4,66,50.9,0,0,2,4.7 +2020-06-26T03:00,59.5,73,50.8,0,0,1.8,5.1 +2020-06-26T04:00,57.8,79,51.4,0,0,1.1,3.6 +2020-06-26T05:00,58.4,81,52.7,0,0,4.5,2.7 +2020-06-26T06:00,61.8,71,52.4,0,0,3,7.4 +2020-06-26T07:00,66.7,59,52.2,0,0,3.6,9.8 +2020-06-26T08:00,71.2,48,50.5,0,0,3.4,10.7 +2020-06-26T09:00,74.6,43,50.4,0,0,4.7,13 +2020-06-26T10:00,76.6,41,51.2,0,0,4.7,14.3 +2020-06-26T11:00,78.7,39,52,0,0,4.2,14.1 +2020-06-26T12:00,77.5,42,52.6,0.008,0,1.2,14.5 +2020-06-26T13:00,78.2,41,52.3,0,0,3.4,13 +2020-06-26T14:00,76.7,45,53.5,0,0,8.8,17.2 +2020-06-26T15:00,74.8,48,54,0.004,0,6.3,22.6 +2020-06-26T16:00,70.9,60,56.3,0,0,5.7,17 +2020-06-26T17:00,67.3,77,59.8,0,0,8.7,18.6 +2020-06-26T18:00,67.8,81,61.8,0.016,0,8.5,22.1 +2020-06-26T19:00,68.5,64,55.9,0,0,4.1,17.2 +2020-06-26T20:00,65.3,82,59.8,0,0,7.2,11.4 +2020-06-26T21:00,63.9,88,60.4,0,0,5.5,11.6 +2020-06-26T22:00,62.9,79,56.2,0,0,5.9,10.5 +2020-06-26T23:00,62.2,74,53.8,0,0,5.3,9.6 +2020-06-27T00:00,59.9,74,51.5,0,0,4.6,8.7 +2020-06-27T01:00,58.6,70,48.8,0,0,4.9,7.8 +2020-06-27T02:00,57.2,72,48.1,0,0,4.4,7.8 +2020-06-27T03:00,56.5,68,46.2,0,0,4.3,7.2 +2020-06-27T04:00,55.2,66,44.1,0,0,6,7.8 +2020-06-27T05:00,59.4,51,41,0,0,7.4,7.2 +2020-06-27T06:00,64.9,42,40.9,0,0,4.5,11.9 +2020-06-27T07:00,70.1,36,41.6,0,0,3.3,8.1 +2020-06-27T08:00,75.3,31,42.4,0,0,3.2,10.3 +2020-06-27T09:00,79.9,27,43.1,0,0,2.7,10.1 +2020-06-27T10:00,82.7,22,40.4,0,0,5.1,13.6 +2020-06-27T11:00,84.7,19,37.8,0,0,5.2,15.9 +2020-06-27T12:00,86.6,17,36,0,0,6.5,17 +2020-06-27T13:00,87.7,15,34.4,0,0,7.6,18.6 +2020-06-27T14:00,87.8,15,34.4,0,0,4.4,18.3 +2020-06-27T15:00,85.3,18,37.5,0,0,9.7,17.7 +2020-06-27T16:00,85.1,17,35.1,0,0,4.5,21 +2020-06-27T17:00,85.2,18,37,0,0,10.7,19.5 +2020-06-27T18:00,82.3,20,37.1,0,0,8.7,19.7 +2020-06-27T19:00,77.8,41,52.3,0,0,2.1,14.8 +2020-06-27T20:00,73.8,30,40.2,0,0,5.4,8.7 +2020-06-27T21:00,71.5,32,40.1,0,0,5.8,8.7 +2020-06-27T22:00,69.3,35,40.6,0,0,6,10.1 +2020-06-27T23:00,66,38,39.5,0,0,5.2,9.6 +2020-06-28T00:00,64.2,38,38.4,0,0,4.9,8.3 +2020-06-28T01:00,63.2,37,36.7,0,0,5.5,8.5 +2020-06-28T02:00,62.2,35,34.3,0,0,6.2,10.1 +2020-06-28T03:00,61.8,33,32.1,0,0,6,10.1 +2020-06-28T04:00,61.9,30,30.1,0,0,6.6,11.2 +2020-06-28T05:00,59.5,40,35.2,0,0,4.3,10.7 +2020-06-28T06:00,65.5,35,36.8,0,0,6,10.1 +2020-06-28T07:00,73,30,40,0,0,3.5,10.1 +2020-06-28T08:00,80.5,24,40.6,0,0,4,9.6 +2020-06-28T09:00,85.8,17,35.5,0,0,4.7,14.3 +2020-06-28T10:00,88.3,15,34.6,0,0,6.5,15.4 +2020-06-28T11:00,86,18,37.4,0,0,10.4,21.3 +2020-06-28T12:00,89.3,14,34.6,0,0,4.3,21 +2020-06-28T13:00,85.1,20,40.1,0.004,0,12.1,25.5 +2020-06-28T14:00,87.6,16,35.2,0,0,2.7,23 +2020-06-28T15:00,85.7,19,38.1,0,0,5.2,14.5 +2020-06-28T16:00,87.7,17,37,0,0,10,19.2 +2020-06-28T17:00,81.4,28,45,0,0,4,30.2 +2020-06-28T18:00,82.4,27,44.7,0,0,2.4,10.1 +2020-06-28T19:00,78.3,37,49.6,0,0,4.5,6.7 +2020-06-28T20:00,72.8,38,45.8,0,0,6.1,7.6 +2020-06-28T21:00,69.1,44,46.1,0,0,4.7,7.6 +2020-06-28T22:00,66.4,50,47.2,0,0,3.6,6.7 +2020-06-28T23:00,63.8,54,46.9,0,0,4.6,6.5 +2020-06-29T00:00,62.9,52,45,0,0,4,6.5 +2020-06-29T01:00,61.9,53,44.3,0,0,4.7,7.6 +2020-06-29T02:00,61.5,53,44.2,0,0,6.2,9.8 +2020-06-29T03:00,60.8,51,42.4,0,0,6.8,11.2 +2020-06-29T04:00,59.8,49,40.5,0,0,7.1,11.9 +2020-06-29T05:00,56.8,63,44.2,0,0,4.6,12.8 +2020-06-29T06:00,63.2,45,41.4,0,0,6.1,10.1 +2020-06-29T07:00,71.6,33,40.8,0,0,6.9,13 +2020-06-29T08:00,80.1,22,37.6,0,0,8.1,16.1 +2020-06-29T09:00,84,16,33.4,0,0,7.6,17.4 +2020-06-29T10:00,86.1,15,33.5,0,0,6.1,16.8 +2020-06-29T11:00,87.8,15,34.1,0,0,5.6,15.4 +2020-06-29T12:00,89.6,14,34.3,0,0,5.2,15.2 +2020-06-29T13:00,90.9,14,34.6,0,0,4.3,14.8 +2020-06-29T14:00,92.1,13,33.4,0,0,3.5,13.2 +2020-06-29T15:00,93.7,12,34,0,0,7.8,17.2 +2020-06-29T16:00,92.8,13,34.3,0,0,4.9,18.3 +2020-06-29T17:00,90,14,34.5,0,0,8.8,13.6 +2020-06-29T18:00,88.8,15,35.7,0,0,7.9,16.1 +2020-06-29T19:00,83.1,20,38.3,0,0,6.8,13.4 +2020-06-29T20:00,79.4,21,35.5,0,0,9,14.8 +2020-06-29T21:00,77.4,20,33.5,0,0,9.2,15.4 +2020-06-29T22:00,73.7,25,36.1,0,0,7.9,15.2 +2020-06-29T23:00,68.4,38,41.5,0,0,4.8,13 +2020-06-30T00:00,64.6,46,43.3,0,0,3.4,7.8 +2020-06-30T01:00,64,51,45.7,0,0,6.7,10.1 +2020-06-30T02:00,63.2,43,40.6,0,0,6.8,12.3 +2020-06-30T03:00,62.4,45,41,0,0,3.7,8.5 +2020-06-30T04:00,62.9,44,40.6,0,0,2.9,5.6 +2020-06-30T05:00,60.3,51,42.2,0,0,4.3,3.8 +2020-06-30T06:00,64.1,44,41.5,0,0,5,8.5 +2020-06-30T07:00,67.2,39,41.5,0,0,7.1,14.3 +2020-06-30T08:00,69.9,35,41.2,0,0,7.3,17 +2020-06-30T09:00,70.7,34,40.9,0,0,0.7,16.3 +2020-06-30T10:00,69.5,38,42.9,0,0,6.7,17.2 +2020-06-30T11:00,72.9,31,40.3,0,0,1.6,19.7 +2020-06-30T12:00,76.8,18,30.3,0,0,4.6,20.4 +2020-06-30T13:00,79.9,10,18.5,0,0,6.3,17.4 +2020-06-30T14:00,81,8,15.2,0,0,8.5,19.2 +2020-06-30T15:00,82,8,16.2,0,0,8.8,19.9 +2020-06-30T16:00,81.3,9,16.8,0,0,9.4,19.7 +2020-06-30T17:00,82.8,8,14.6,0,0,7.1,21.5 +2020-06-30T18:00,78.4,14,25.4,0,0,10.8,21.7 +2020-06-30T19:00,71.8,28,37.2,0,0,11.3,19 +2020-06-30T20:00,69.4,31,37.3,0,0,6.9,18.6 +2020-06-30T21:00,66.7,35,38.3,0,0,4.2,10.7 +2020-06-30T22:00,64.9,38,38.8,0,0,5.8,12.1 +2020-06-30T23:00,62,43,39.4,0,0,7.4,12.5 +2020-07-01T00:00,59.4,48,39.5,0,0,4.5,12.1 +2020-07-01T01:00,58.2,56,42.4,0,0,2.7,8.3 +2020-07-01T02:00,57.2,58,42.7,0,0,5.8,9.6 +2020-07-01T03:00,55.2,59,41.1,0,0,3.3,9.6 +2020-07-01T04:00,53.6,67,42.9,0,0,2.6,4.9 +2020-07-01T05:00,53.9,56,38.6,0,0,4.3,4.3 +2020-07-01T06:00,58.4,43,36.1,0,0,3.2,9.8 +2020-07-01T07:00,64,41,39.7,0,0,5.4,11.9 +2020-07-01T08:00,71.4,27,35.2,0,0,8.8,17.4 +2020-07-01T09:00,77.3,17,29,0,0,10.9,21.9 +2020-07-01T10:00,80.6,13,25.2,0,0,9.4,21.9 +2020-07-01T11:00,83.3,11,23.6,0,0,9.5,20.6 +2020-07-01T12:00,85.2,13,28,0,0,13.9,26.6 +2020-07-01T13:00,85.8,13,30.2,0,0,15.5,29.5 +2020-07-01T14:00,86.2,13,30,0,0,15.8,31.1 +2020-07-01T15:00,85.8,13,29.3,0,0,16.8,30.6 +2020-07-01T16:00,86.1,12,28,0,0,18.6,32.9 +2020-07-01T17:00,85,14,30.7,0,0,15.7,32.9 +2020-07-01T18:00,84.5,14,30.6,0,0,14.7,28.4 +2020-07-01T19:00,80.2,17,30.9,0,0,16.1,26.2 +2020-07-01T20:00,76.7,18,30,0,0,14.6,26.6 +2020-07-01T21:00,73.6,21,30.9,0,0,11.8,23.9 +2020-07-01T22:00,69.5,25,31.9,0,0,6.5,19.5 +2020-07-01T23:00,65.3,31,33.7,0,0,4.3,11 +2020-07-02T00:00,62.9,36,35.4,0,0,3.3,6.5 +2020-07-02T01:00,61.8,40,37,0,0,4.5,7.4 +2020-07-02T02:00,61.9,39,36.7,0,0,4.7,8.5 +2020-07-02T03:00,60.8,42,37.6,0,0,5.8,7.6 +2020-07-02T04:00,60,46,39.1,0,0,5.5,8.1 +2020-07-02T05:00,58.7,53,41.6,0,0,3.9,7.6 +2020-07-02T06:00,63.1,42,39.8,0,0,3.1,6.7 +2020-07-02T07:00,68.2,33,38.2,0,0,3.4,8.9 +2020-07-02T08:00,72.5,29,38,0,0,3.4,11 +2020-07-02T09:00,77.6,23,37.4,0,0,2.8,11.2 +2020-07-02T10:00,83.8,17,34.3,0,0,4.1,12.8 +2020-07-02T11:00,88.6,13,30.7,0,0,6,18.1 +2020-07-02T12:00,90.9,10,27.3,0,0,3.6,17.4 +2020-07-02T13:00,92.4,9,25.9,0,0,5.2,15.4 +2020-07-02T14:00,92.8,8,24.4,0,0,5.8,16.3 +2020-07-02T15:00,92.4,9,24.3,0,0,6.2,15.9 +2020-07-02T16:00,92.3,9,25.3,0,0,5.3,15.7 +2020-07-02T17:00,90.9,11,28.9,0,0,15,13.4 +2020-07-02T18:00,85.8,17,35.5,0,0,9.4,26.8 +2020-07-02T19:00,80.7,30,46.5,0,0,15.4,25.1 +2020-07-02T20:00,74.5,41,48.9,0,0,6.2,25.5 +2020-07-02T21:00,75.3,37,47.5,0,0,9.2,15.4 +2020-07-02T22:00,73.1,39,46.9,0,0,2.9,15 +2020-07-02T23:00,74.2,37,46.2,0,0,4.1,11.2 +2020-07-03T00:00,70.4,37,43,0,0,5.6,9.6 +2020-07-03T01:00,68.5,39,42.5,0,0,3,9.4 +2020-07-03T02:00,67.6,43,44,0,0,2.1,4 +2020-07-03T03:00,63.9,43,40.8,0,0,5.6,9.2 +2020-07-03T04:00,61.3,43,38.5,0,0,4.9,9.4 +2020-07-03T05:00,61.1,56,45.1,0,0,3.5,6.3 +2020-07-03T06:00,64.7,49,45.1,0,0,2,5.6 +2020-07-03T07:00,69.1,50,49.8,0,0,3.8,9.8 +2020-07-03T08:00,73.9,43,49.9,0,0,6.7,14.1 +2020-07-03T09:00,77.4,37,48.9,0,0,6,17.9 +2020-07-03T10:00,82,31,48.1,0,0,3.8,15 +2020-07-03T11:00,84.9,26,46.1,0,0,2.1,13.4 +2020-07-03T12:00,87.2,21,42.9,0,0,3.2,12.3 +2020-07-03T13:00,89.6,18,39.9,0,0,7.7,18.3 +2020-07-03T14:00,90,16,38.4,0,0,4.4,18.3 +2020-07-03T15:00,90.8,17,39.3,0,0,9.7,19.2 +2020-07-03T16:00,89.4,18,40.6,0,0,7.6,21.5 +2020-07-03T17:00,83.5,23,41.9,0,0,16.6,16.1 +2020-07-03T18:00,82.2,23,40.8,0,0,10.6,28.4 +2020-07-03T19:00,80.7,25,41.5,0,0,5.1,18.6 +2020-07-03T20:00,76.9,29,42.4,0,0,12.7,19 +2020-07-03T21:00,74.9,43,51.2,0,0,13,24.6 +2020-07-03T22:00,73,49,52.4,0,0,9.7,21.3 +2020-07-03T23:00,71.7,54,54,0,0,7.5,15.9 +2020-07-04T00:00,68.9,54,51.4,0,0,4.5,12.5 +2020-07-04T01:00,68.1,52,50,0,0,4,7.6 +2020-07-04T02:00,67.8,52,49.4,0,0,4.9,8.3 +2020-07-04T03:00,65.6,52,47.5,0,0,2.6,8.1 +2020-07-04T04:00,64,53,46.8,0,0,3.3,4.7 +2020-07-04T05:00,64.3,62,50.9,0,0,5.1,4.3 +2020-07-04T06:00,68.3,51,49.3,0,0,1.2,6 +2020-07-04T07:00,71.2,44,47.9,0,0,2.9,8.5 +2020-07-04T08:00,74.3,39,47.6,0,0,5.7,13.9 +2020-07-04T09:00,78.7,33,47.3,0,0,6.2,15.7 +2020-07-04T10:00,84.2,27,46.1,0,0,6,15.7 +2020-07-04T11:00,86.8,21,42,0,0,4.7,19.5 +2020-07-04T12:00,87.7,21,42.4,0,0,11.7,23 +2020-07-04T13:00,88.6,21,44.1,0,0,11.3,25.7 +2020-07-04T14:00,87.7,23,45.2,0,0,9.3,23.9 +2020-07-04T15:00,86.7,24,45.4,0,0,6.1,20.1 +2020-07-04T16:00,87,22,43.5,0,0,8,16.3 +2020-07-04T17:00,75,44,51.6,0,0,4.6,19.9 +2020-07-04T18:00,70.2,64,57.3,0.02,0,8.6,15.7 +2020-07-04T19:00,69.1,70,58.7,0,0,7,15.9 +2020-07-04T20:00,67.8,75,59.7,0,0,8.3,13.2 +2020-07-04T21:00,67.4,76,59.5,0,0,6.5,13.4 +2020-07-04T22:00,66.1,79,59.3,0,0,4.8,10.3 +2020-07-04T23:00,64.9,82,59.3,0,0,4,7.8 +2020-07-05T00:00,63.3,84,58.6,0,0,4.4,7.2 +2020-07-05T01:00,61.6,83,56.5,0,0,2.7,7.4 +2020-07-05T02:00,59.9,88,56.4,0,0,3.4,5.4 +2020-07-05T03:00,58.1,92,55.9,0,0,3.9,6.7 +2020-07-05T04:00,57.1,92,54.7,0,0,2.6,6.5 +2020-07-05T05:00,57.7,87,53.7,0,0,1.3,4.3 +2020-07-05T06:00,61.6,70,51.8,0,0,0.8,5.1 +2020-07-05T07:00,66.8,58,51.8,0,0,1.3,7.4 +2020-07-05T08:00,73.6,43,49.7,0,0,1.1,7.8 +2020-07-05T09:00,80,32,47.1,0,0,4.3,12.8 +2020-07-05T10:00,84.7,23,43.2,0,0,5.9,15.7 +2020-07-05T11:00,88.1,19,40.1,0,0,3.5,15.9 +2020-07-05T12:00,90.2,16,38.5,0,0,4,13.2 +2020-07-05T13:00,90.3,16,37.5,0,0,4.6,14.5 +2020-07-05T14:00,91.1,15,36.6,0,0,7.9,17.7 +2020-07-05T15:00,92,16,38.8,0,0,10.4,20.8 +2020-07-05T16:00,85.3,24,44.5,0,0,14.6,27.7 +2020-07-05T17:00,85.6,21,41.7,0,0,8.1,26.8 +2020-07-05T18:00,84.7,23,42.6,0,0,6.6,16.6 +2020-07-05T19:00,81.6,27,44.3,0,0,3.1,12.5 +2020-07-05T20:00,77.5,31,44.9,0,0,6.9,11.2 +2020-07-05T21:00,74.5,37,46.5,0,0,6.9,11.2 +2020-07-05T22:00,70.7,43,47.3,0,0,4.6,11.6 +2020-07-05T23:00,67.8,48,47.2,0,0,3.8,7.4 +2020-07-06T00:00,65.5,52,47.3,0,0,4.6,8.1 +2020-07-06T01:00,63.7,55,47.2,0,0,3.2,7.8 +2020-07-06T02:00,62.1,57,46.9,0,0,4.7,5.8 +2020-07-06T03:00,61.2,59,46.7,0,0,4.5,6.3 +2020-07-06T04:00,60.1,59,45.9,0,0,3.8,6.3 +2020-07-06T05:00,59.3,58,44.6,0,0,3,5.8 +2020-07-06T06:00,63.3,51,44.7,0,0,3.8,7.8 +2020-07-06T07:00,70.1,41,45,0,0,2.8,8.5 +2020-07-06T08:00,76.3,32,44.2,0,0,2.7,10.1 +2020-07-06T09:00,81.7,26,43.2,0,0,1.6,9.8 +2020-07-06T10:00,86.2,22,43,0,0,4.3,13.6 +2020-07-06T11:00,89.8,19,41.5,0,0,4.3,14.3 +2020-07-06T12:00,91.9,14,35.7,0,0,3,14.1 +2020-07-06T13:00,92.7,12,31.6,0,0,2.3,12.1 +2020-07-06T14:00,94,10,29.9,0,0,3.1,12.1 +2020-07-06T15:00,94,10,30.2,0,0,5.6,15 +2020-07-06T16:00,93.5,10,29.5,0,0,5.5,15 +2020-07-06T17:00,91.1,12,32.5,0,0,3.1,13.9 +2020-07-06T18:00,88.4,16,36.9,0,0,6,11.6 +2020-07-06T19:00,85.3,23,43.3,0,0,3.4,11.4 +2020-07-06T20:00,82,24,41.1,0,0,2.9,6.9 +2020-07-06T21:00,77.7,26,40.1,0,0,4.3,5.4 +2020-07-06T22:00,75.3,30,41.7,0,0,11.7,17.7 +2020-07-06T23:00,75.4,28,39.6,0,0,13.1,22.8 +2020-07-07T00:00,74.6,27,38.5,0,0,12.2,21.7 +2020-07-07T01:00,71.7,30,38.9,0,0,9.2,20.1 +2020-07-07T02:00,70.1,34,40.3,0,0,8.4,15.2 +2020-07-07T03:00,69.6,35,40.6,0,0,9.7,15.9 +2020-07-07T04:00,69.1,35,40,0,0,10.2,16.8 +2020-07-07T05:00,69.6,32,38.8,0,0,9.7,16.8 +2020-07-07T06:00,71.7,32,40.5,0,0,8.8,16.1 +2020-07-07T07:00,77.9,26,40.6,0,0,6.8,14.1 +2020-07-07T08:00,84.2,21,40.2,0,0,7,14.5 +2020-07-07T09:00,90.4,16,38,0,0,9.6,19 +2020-07-07T10:00,94.1,12,34.3,0,0,10.2,20.6 +2020-07-07T11:00,93.2,12,32.5,0,0,14.3,28 +2020-07-07T12:00,95.4,9,28.7,0,0,10.5,27.1 +2020-07-07T13:00,97.4,9,29.4,0,0,9.6,22.4 +2020-07-07T14:00,96.1,12,35.1,0,0,16.3,28.4 +2020-07-07T15:00,92.5,14,36.3,0,0,19.4,40.7 +2020-07-07T16:00,95.1,12,33.8,0,0,12.3,34 +2020-07-07T17:00,88.8,19,40.6,0,0,11.4,23.9 +2020-07-07T18:00,88.2,19,40.9,0,0,6.5,19.5 +2020-07-07T19:00,85.1,21,41.4,0,0,6.2,12.3 +2020-07-07T20:00,80.1,24,40.6,0,0,5.6,11.6 +2020-07-07T21:00,78.8,32,46.9,0,0,15,25.5 +2020-07-07T22:00,76.3,36,47.2,0,0,9.1,24.8 +2020-07-07T23:00,72.6,37,44.6,0,0,7.3,15 +2020-07-08T00:00,69,35,39.8,0,0,6,12.1 +2020-07-08T01:00,67.8,23,29.1,0,0,5,10.1 +2020-07-08T02:00,65.8,20,23.5,0,0,5.3,8.7 +2020-07-08T03:00,63.7,21,23.4,0,0,5.1,8.9 +2020-07-08T04:00,61.3,22,22,0,0,4.9,8.7 +2020-07-08T05:00,59.6,21,20.1,0,0,4.7,8.5 +2020-07-08T06:00,64.5,18,20.2,0,0,6,10.3 +2020-07-08T07:00,73.4,15,23.3,0,0,3.3,10.1 +2020-07-08T08:00,80.7,12,22.9,0,0,0.2,8.9 +2020-07-08T09:00,84.4,11,23.2,0,0,1.7,9.2 +2020-07-08T10:00,87.9,8,19.3,0,0,3.8,12.5 +2020-07-08T11:00,91.5,7,19,0,0,5.4,15.4 +2020-07-08T12:00,93.3,7,18.8,0,0,5.4,15.2 +2020-07-08T13:00,94.6,7,19.6,0,0,7.5,18.6 +2020-07-08T14:00,94.8,7,19.5,0,0,5.7,18.6 +2020-07-08T15:00,94.9,6,17.9,0,0,2.3,15.4 +2020-07-08T16:00,94.7,6,16.3,0,0,1.1,10.3 +2020-07-08T17:00,92.8,6,17,0,0,9.2,7.6 +2020-07-08T18:00,91.9,6,16.2,0,0,5.7,15.4 +2020-07-08T19:00,87.4,8,19,0,0,4.9,9.2 +2020-07-08T20:00,83.5,9,17.4,0,0,4.6,9.2 +2020-07-08T21:00,76.9,13,23.2,0,0,4.3,7.6 +2020-07-08T22:00,76.3,16,26.6,0,0,3.1,7.4 +2020-07-08T23:00,73.3,25,35,0,0,9.4,13.9 +2020-07-09T00:00,70,29,36.2,0,0,4.4,16.1 +2020-07-09T01:00,67.8,30,35.2,0,0,3.9,6.7 +2020-07-09T02:00,64.2,34,35.5,0,0,5,6.3 +2020-07-09T03:00,63.6,34,34.9,0,0,4.3,6.3 +2020-07-09T04:00,61.2,40,36.5,0,0,4.7,5.8 +2020-07-09T05:00,59.5,39,34.8,0,0,5.1,6.3 +2020-07-09T06:00,64,33,34,0,0,1.4,6.7 +2020-07-09T07:00,72.1,23,31.7,0,0,4,9.8 +2020-07-09T08:00,76.5,18,30.5,0,0,1.8,10.3 +2020-07-09T09:00,80.2,16,30.3,0,0,1.4,9.2 +2020-07-09T10:00,84.2,14,29,0,0,3.5,12.3 +2020-07-09T11:00,87.5,12,28.9,0,0,4.7,14.8 +2020-07-09T12:00,89.7,12,29.5,0,0,5.7,15.7 +2020-07-09T13:00,91.3,11,29,0,0,7.2,18.1 +2020-07-09T14:00,91.6,11,29.9,0,0,8.1,18.1 +2020-07-09T15:00,91.6,11,30.4,0,0,7,20.8 +2020-07-09T16:00,92.7,10,28.6,0,0,3.4,17 +2020-07-09T17:00,86.1,23,44.1,0,0,11.2,14.1 +2020-07-09T18:00,85.4,30,50.8,0,0,13.1,21 +2020-07-09T19:00,72.1,66,60.1,0.091,0,7.3,24.8 +2020-07-09T20:00,67.4,77,60.1,0.02,0,4.6,13.9 +2020-07-09T21:00,67.6,79,60.7,0,0,4.6,9.4 +2020-07-09T22:00,67.8,80,61.3,0,0,0.9,8.1 +2020-07-09T23:00,67.1,83,61.6,0,0,1.9,3.4 +2020-07-10T00:00,67,82,61.4,0,0,3.8,6.3 +2020-07-10T01:00,65.7,83,60.4,0,0,4,7.2 +2020-07-10T02:00,64.1,85,59.6,0,0,4.4,7.2 +2020-07-10T03:00,63,79,56.4,0,0,3.3,7.2 +2020-07-10T04:00,61.8,65,50,0,0,3.4,5.6 +2020-07-10T05:00,61.9,44,39.7,0,0,4.1,6.5 +2020-07-10T06:00,64.5,49,45.1,0,0,5.5,11.6 +2020-07-10T07:00,67.6,58,52.2,0,0,0.3,11 +2020-07-10T08:00,72.3,47,50.8,0,0,4.3,12.3 +2020-07-10T09:00,80.4,26,42.5,0,0,3.8,12.8 +2020-07-10T10:00,89.2,11,27.3,0,0,4.1,13.4 +2020-07-10T11:00,93.6,6,16.6,0,0,4.8,14.3 +2020-07-10T12:00,95.6,6,17.1,0,0,4.1,14.5 +2020-07-10T13:00,97.4,6,17.9,0,0,4.7,14.3 +2020-07-10T14:00,98.7,5,17.9,0,0,6.5,16.6 +2020-07-10T15:00,99.1,5,17.8,0,0,7.6,17.9 +2020-07-10T16:00,98.9,5,17.8,0,0,6.6,17.7 +2020-07-10T17:00,96.1,6,19.6,0,0,0.6,17 +2020-07-10T18:00,95.7,6,19.2,0,0,3.2,6.7 +2020-07-10T19:00,89.5,10,26.3,0,0,4.9,7.4 +2020-07-10T20:00,90.1,9,22.6,0,0,0.9,7.2 +2020-07-10T21:00,77.6,16,27.1,0,0,4.1,6.9 +2020-07-10T22:00,76.1,17,27.6,0,0,4.4,7.2 +2020-07-10T23:00,74.8,13,21.4,0,0,6.3,7.8 +2020-07-11T00:00,71.9,15,21.7,0,0,6.5,8.7 +2020-07-11T01:00,71.1,18,25.8,0,0,5.1,8.9 +2020-07-11T02:00,70.4,21,28.1,0,0,7.3,12.3 +2020-07-11T03:00,68.9,24,30.8,0,0,6.5,12.1 +2020-07-11T04:00,66.7,28,32.8,0,0,4.8,11 +2020-07-11T05:00,64.8,37,38.2,0,0,4.1,7.6 +2020-07-11T06:00,69.3,37,41.8,0,0,4.8,8.9 +2020-07-11T07:00,72.3,37,44.7,0,0,6.3,13.4 +2020-07-11T08:00,74.7,37,46.9,0,0,4.1,13.6 +2020-07-11T09:00,77.5,34,46.9,0,0,3.6,12.5 +2020-07-11T10:00,81,30,46.2,0,0,3.7,13.2 +2020-07-11T11:00,85.1,25,45.2,0,0,4.1,13.9 +2020-07-11T12:00,89.5,19,42.3,0,0,5,15.2 +2020-07-11T13:00,91.6,16,39.4,0,0,6.6,17 +2020-07-11T14:00,92.7,14,37.2,0,0,7.5,17.9 +2020-07-11T15:00,93.7,12,34.2,0,0,7.7,18.3 +2020-07-11T16:00,93.5,12,33.3,0,0,8.6,18.3 +2020-07-11T17:00,91.5,13,34,0,0,12.2,18.3 +2020-07-11T18:00,90.6,13,32.5,0,0,9.6,21.7 +2020-07-11T19:00,86.9,13,30.7,0,0,8.3,17.2 +2020-07-11T20:00,80.7,20,35.3,0,0,4.7,13.6 +2020-07-11T21:00,79.3,23,38.4,0,0,5.4,8.5 +2020-07-11T22:00,79.4,30,45.1,0,0,11.9,19.5 +2020-07-11T23:00,75.8,31,42.6,0,0,8.8,19.9 +2020-07-12T00:00,72.1,33,41.2,0,0,6.8,14.3 +2020-07-12T01:00,70,34,40.6,0,0,7.6,12.1 +2020-07-12T02:00,70.1,37,42.3,0,0,9.2,15.4 +2020-07-12T03:00,69,40,43.6,0,0,6.3,15.2 +2020-07-12T04:00,67.6,44,45.1,0,0,4.5,10.3 +2020-07-12T05:00,66.5,54,49.1,0,0,5.2,7.6 +2020-07-12T06:00,71.1,44,48.1,0,0,3.8,6.9 +2020-07-12T07:00,77.3,35,47.4,0,0,4.3,10.1 +2020-07-12T08:00,83.9,27,46.6,0,0,3.3,10.7 +2020-07-12T09:00,88.4,19,41.3,0,0,3.6,11.6 +2020-07-12T10:00,91.6,14,36.2,0,0,5.5,15.9 +2020-07-12T11:00,95.2,10,30.3,0,0,6,15 +2020-07-12T12:00,95.2,10,30.4,0,0,5,17.7 +2020-07-12T13:00,95.9,9,28.7,0,0,4.9,14.8 +2020-07-12T14:00,90.9,13,33.9,0,0,10.9,18.6 +2020-07-12T15:00,92.2,12,32.6,0,0,8.7,24.4 +2020-07-12T16:00,92.6,13,34.5,0,0,10.6,22.6 +2020-07-12T17:00,88.7,18,40,0,0,8.8,20.4 +2020-07-12T18:00,90.8,14,35.7,0,0,6.7,17.2 +2020-07-12T19:00,86.7,16,35.2,0,0,4.5,12.5 +2020-07-12T20:00,80.8,21,36.8,0,0,4,7.8 +2020-07-12T21:00,80.6,24,40.3,0,0,7.9,13 +2020-07-12T22:00,77.5,28,41.6,0,0,5.7,13.2 +2020-07-12T23:00,74.6,32,42.5,0,0,5.1,9.2 +2020-07-13T00:00,72.6,34,42.6,0,0,4.6,8.5 +2020-07-13T01:00,70.7,36,42.1,0,0,5.2,7.4 +2020-07-13T02:00,70.7,34,41.3,0,0,4.5,7.4 +2020-07-13T03:00,69.9,35,40.7,0,0,5,7.8 +2020-07-13T04:00,68.7,36,40.5,0,0,4.8,7.8 +2020-07-13T05:00,65.9,42,42.3,0,0,5.6,7.4 +2020-07-13T06:00,72.5,32,41.4,0,0,2.6,6.9 +2020-07-13T07:00,78.9,27,42.1,0,0,3.8,9.2 +2020-07-13T08:00,84.5,22,42,0,0,4.3,11.4 +2020-07-13T09:00,89.4,18,40.7,0,0,5.4,13.2 +2020-07-13T10:00,92.9,17,41.4,0,0,12.2,24.8 +2020-07-13T11:00,92.4,16,39.1,0,0,4.1,24.4 +2020-07-13T12:00,96.1,14,38.3,0,0,5.4,15.9 +2020-07-13T13:00,87.2,28,50.5,0.016,0,14.6,26.8 +2020-07-13T14:00,92.4,17,41.3,0,0,7.9,27.3 +2020-07-13T15:00,88.3,20,41.6,0,0,2.9,18.1 +2020-07-13T16:00,88.9,19,40.9,0,0,6.5,15.4 +2020-07-13T17:00,93.3,17,41.8,0,0,16.1,15.9 +2020-07-13T18:00,78.1,44,54.3,0,0,16.7,30 +2020-07-13T19:00,75.9,50,56.2,0,0,6.4,28.6 +2020-07-13T20:00,74.5,53,56.2,0,0,2.8,11.9 +2020-07-13T21:00,73.9,53,55.8,0,0,5.7,8.9 +2020-07-13T22:00,71.9,54,54.4,0,0,5.4,9.4 +2020-07-13T23:00,70.5,57,54.3,0,0,5.9,9.6 +2020-07-14T00:00,69.4,57,53.8,0,0,4.9,9.8 +2020-07-14T01:00,68.4,54,51.3,0,0,4.6,8.5 +2020-07-14T02:00,67.6,51,49,0,0,4.6,7.6 +2020-07-14T03:00,68.2,46,46.9,0,0,5.2,9.2 +2020-07-14T04:00,68,43,45,0,0,5.1,8.7 +2020-07-14T05:00,66.5,46,45.2,0,0,5.2,8.3 +2020-07-14T06:00,70,41,45.2,0,0,7.9,11 +2020-07-14T07:00,68.9,50,49.6,0,0,8.6,21 +2020-07-14T08:00,70.3,42,46.1,0,0,10.1,21.3 +2020-07-14T09:00,72.5,36,44.2,0,0,6.5,20.8 +2020-07-14T10:00,75.3,34,45.1,0,0,6,16.3 +2020-07-14T11:00,78.8,33,47.6,0,0,6.8,18.1 +2020-07-14T12:00,80.2,33,48.4,0,0,6.4,18.3 +2020-07-14T13:00,81.3,32,48.5,0,0,3.1,16.8 +2020-07-14T14:00,85.6,27,48.1,0,0,2.9,12.5 +2020-07-14T15:00,82.9,30,48,0.016,0,7.5,18.3 +2020-07-14T16:00,83.2,30,48.7,0,0,5.6,17.2 +2020-07-14T17:00,72.5,58,57.1,0,0,6.4,13.6 +2020-07-14T18:00,70.2,70,59.9,0.012,0,9.2,17.2 +2020-07-14T19:00,70.8,72,61.3,0,0,11.4,19.9 +2020-07-14T20:00,70.9,67,59.5,0,0,9.4,19.9 +2020-07-14T21:00,69.4,70,59.1,0,0,4,15.7 +2020-07-14T22:00,68.1,74,59.4,0,0,7.1,11.2 +2020-07-14T23:00,66.8,76,59,0,0,4.3,13 +2020-07-15T00:00,66,75,57.7,0,0,4.9,10.3 +2020-07-15T01:00,64.5,77,57.2,0,0,1.9,8.1 +2020-07-15T02:00,63.8,79,57.2,0,0,4,5.8 +2020-07-15T03:00,62.2,81,56.1,0,0,3.3,6.9 +2020-07-15T04:00,60.5,78,53.7,0,0,3.8,4.5 +2020-07-15T05:00,58.9,81,53.2,0,0,3.6,9.6 +2020-07-15T06:00,62.4,67,51.2,0,0,0.2,4.3 +2020-07-15T07:00,65.4,64,52.8,0,0,1.8,7.4 +2020-07-15T08:00,70.6,57,54.9,0,0,9.2,17 +2020-07-15T09:00,72.7,55,55.6,0,0,10.7,24.6 +2020-07-15T10:00,75.3,49,54.6,0,0,8.6,22.4 +2020-07-15T11:00,77.5,43,53.4,0,0,8.7,19.9 +2020-07-15T12:00,77.4,41,52.1,0,0,3.7,20.1 +2020-07-15T13:00,79.1,38,51.1,0,0,4.6,13.9 +2020-07-15T14:00,80.8,34,50.1,0,0,2.5,14.1 +2020-07-15T15:00,81.1,34,49.7,0,0,10.1,20.8 +2020-07-15T16:00,82.2,31,48.4,0.004,0,4.3,20.6 +2020-07-15T17:00,71.3,67,59.6,0,0,4.3,14.3 +2020-07-15T18:00,73.3,61,59.2,0,0,2.8,10.7 +2020-07-15T19:00,73.9,58,58.4,0,0,1.6,9.6 +2020-07-15T20:00,73.6,55,56.3,0,0,4,6 +2020-07-15T21:00,72.6,47,51.4,0,0,4.5,8.1 +2020-07-15T22:00,69.7,50,50.1,0,0,4.1,7.4 +2020-07-15T23:00,69.6,51,50.5,0,0,1.7,6.7 +2020-07-16T00:00,67.2,56,51,0,0,1.5,2.5 +2020-07-16T01:00,63.6,64,51.4,0,0,2.9,3.6 +2020-07-16T02:00,62.4,65,50.5,0,0,4.5,5.4 +2020-07-16T03:00,64,59,49.4,0,0,3.6,5.4 +2020-07-16T04:00,61.6,62,48.7,0,0,4.3,4.9 +2020-07-16T05:00,62,63,49.3,0,0,4.3,5.1 +2020-07-16T06:00,66.8,47,45.9,0,0,5.2,8.5 +2020-07-16T07:00,73.9,35,44.7,0,0,3.3,8.9 +2020-07-16T08:00,80.9,27,44,0,0,2.1,8.9 +2020-07-16T09:00,86.5,20,40.9,0,0,3.7,11 +2020-07-16T10:00,88.6,19,41,0,0,4.9,12.8 +2020-07-16T11:00,91.9,15,37,0,0,5.8,17.9 +2020-07-16T12:00,92.9,14,37.5,0,0,7.8,18.1 +2020-07-16T13:00,88.8,19,41.7,0,0,13.7,23.7 +2020-07-16T14:00,90.3,16,38,0,0,6.3,30.4 +2020-07-16T15:00,91.1,15,36.3,0,0,6.5,15.2 +2020-07-16T16:00,90.1,17,39.7,0,0,7.6,18.8 +2020-07-16T17:00,81.1,28,44.8,0,0,15.1,17 +2020-07-16T18:00,79.9,31,46.7,0,0,12.3,26.6 +2020-07-16T19:00,78.9,34,47.8,0,0,7.8,21 +2020-07-16T20:00,76.7,36,48,0,0,8.1,13 +2020-07-16T21:00,73.2,42,48.7,0,0,6.9,13.2 +2020-07-16T22:00,72.1,43,48.6,0,0,6.7,11.2 +2020-07-16T23:00,70.4,46,48.7,0,0,6.1,11.2 +2020-07-17T00:00,69.1,47,48,0,0,5.1,10.1 +2020-07-17T01:00,68.3,45,46.4,0,0,5.3,8.7 +2020-07-17T02:00,66.7,46,45.5,0,0,4.9,8.3 +2020-07-17T03:00,65.2,49,45.3,0,0,6,7.6 +2020-07-17T04:00,64.9,48,44.9,0,0,6.9,8.3 +2020-07-17T05:00,65.5,44,43,0,0,6.4,8.7 +2020-07-17T06:00,70.4,39,44.2,0,0,3.2,8.5 +2020-07-17T07:00,75.6,33,44.6,0,0,2.2,7.4 +2020-07-17T08:00,81,27,44,0,0,1.3,7.4 +2020-07-17T09:00,86.1,22,42.4,0,0,4.5,12.3 +2020-07-17T10:00,89.8,17,39.3,0,0,8,18.3 +2020-07-17T11:00,90.4,17,38.9,0,0,11.7,23.5 +2020-07-17T12:00,91.9,15,38.1,0,0,8.5,23.9 +2020-07-17T13:00,92.3,15,37.8,0,0,5.7,19.5 +2020-07-17T14:00,92.8,15,37.5,0,0,4.6,15.9 +2020-07-17T15:00,93.4,14,37.2,0,0,4.2,13.9 +2020-07-17T16:00,86.9,27,49.1,0,0,18.5,31.5 +2020-07-17T17:00,89.9,16,37.7,0,0,11.1,32.9 +2020-07-17T18:00,83.2,25,44.2,0,0,17.5,30 +2020-07-17T19:00,80.3,33,48.5,0.004,0,14.3,29.5 +2020-07-17T20:00,76.6,42,52.1,0.016,0,13.3,23.7 +2020-07-17T21:00,73.5,50,53.7,0.008,0,11.4,21 +2020-07-17T22:00,74.3,44,51,0,0,9.7,18.3 +2020-07-17T23:00,73,45,50.4,0,0,6.1,15.9 +2020-07-18T00:00,69.3,55,52.3,0,0,4.8,10.3 +2020-07-18T01:00,66.8,61,52.8,0,0,4.3,8.1 +2020-07-18T02:00,66.2,55,49.5,0,0,5.4,9.6 +2020-07-18T03:00,65.8,49,46.1,0,0,5.6,9.2 +2020-07-18T04:00,65.2,50,46,0,0,6.5,7.8 +2020-07-18T05:00,69.7,41,45,0,0,5.2,7.8 +2020-07-18T06:00,72.8,38,45.6,0,0,1.3,6.3 +2020-07-18T07:00,78.4,31,45.1,0,0,2.7,7.6 +2020-07-18T08:00,85.9,23,43.5,0,0,3.9,10.5 +2020-07-18T09:00,91,15,37,0,0,2.7,11 +2020-07-18T10:00,93.4,11,31.3,0,0,5.6,13.6 +2020-07-18T11:00,94.7,10,30.3,0,0,11,22.1 +2020-07-18T12:00,96.3,10,30.5,0,0,11,23.7 +2020-07-18T13:00,97,10,31.2,0,0,11.7,23.7 +2020-07-18T14:00,96.1,10,30.4,0,0,11.6,24.6 +2020-07-18T15:00,95.2,11,31.6,0,0,9.6,23.5 +2020-07-18T16:00,94.3,11,31.9,0,0,8.7,20.1 +2020-07-18T17:00,89.3,17,38.8,0,0,11.4,19.9 +2020-07-18T18:00,87.6,15,35.1,0,0,15.1,25.5 +2020-07-18T19:00,85.9,19,39.4,0,0,7.2,25.7 +2020-07-18T20:00,81.8,23,40.7,0,0,4.5,12.1 +2020-07-18T21:00,79,29,44.4,0,0,6.5,11.2 +2020-07-18T22:00,76.4,35,46.6,0,0,3.9,11 +2020-07-18T23:00,73.3,40,47.8,0,0,2.4,6.5 +2020-07-19T00:00,70.6,44,47.4,0,0,4.1,6.3 +2020-07-19T01:00,67.5,49,47.6,0,0,3.3,7.2 +2020-07-19T02:00,68.9,48,48.3,0,0,2.6,4.9 +2020-07-19T03:00,67.7,54,50.3,0,0,5.7,8.7 +2020-07-19T04:00,67.1,58,51.6,0,0,6.3,10.7 +2020-07-19T05:00,62.4,76,54.8,0,0,3.6,10.3 +2020-07-19T06:00,64.1,64,51.5,0,0,2.5,7.2 +2020-07-19T07:00,66.5,60,52.3,0,0,3,8.7 +2020-07-19T08:00,69.5,57,53.7,0,0,3,10.7 +2020-07-19T09:00,73.9,51,54.5,0,0,2.9,11.9 +2020-07-19T10:00,79.4,40,52.8,0,0,3,11.6 +2020-07-19T11:00,84.5,32,51.1,0,0,5.2,14.8 +2020-07-19T12:00,86.7,25,46.4,0,0,6.4,15.2 +2020-07-19T13:00,89.7,19,41.7,0,0,4.9,18.8 +2020-07-19T14:00,89.8,19,41.9,0,0,7.8,17.7 +2020-07-19T15:00,90.1,16,37.9,0,0,2.7,18.8 +2020-07-19T16:00,89.6,17,39.5,0,0,10.4,18.3 +2020-07-19T17:00,87.2,19,39.5,0,0,7.2,23.3 +2020-07-19T18:00,86.6,19,39.4,0,0,8,15 +2020-07-19T19:00,83,22,40.8,0,0,4.1,14.5 +2020-07-19T20:00,78.1,28,42.4,0,0,5.2,7.8 +2020-07-19T21:00,75.2,33,44,0,0,6.7,10.5 +2020-07-19T22:00,74.2,35,44.7,0,0,6.8,13 +2020-07-19T23:00,72,39,45.8,0,0,5.9,11.4 +2020-07-20T00:00,69.9,41,45.2,0,0,5.6,9.8 +2020-07-20T01:00,68.5,41,43.9,0,0,5.3,9.2 +2020-07-20T02:00,67.8,40,42.5,0,0,5.4,8.7 +2020-07-20T03:00,66.3,40,41.5,0,0,4.9,8.7 +2020-07-20T04:00,64.2,42,40.6,0,0,4.8,7.8 +2020-07-20T05:00,66.4,37,39.7,0,0,1.2,6.9 +2020-07-20T06:00,66.5,40,41.4,0,0,2.1,3.8 +2020-07-20T07:00,69.5,35,40.8,0,0,3.5,9.2 +2020-07-20T08:00,74.9,30,41.3,0,0,3,10.1 +2020-07-20T09:00,81.3,24,40.7,0,0,4,12.5 +2020-07-20T10:00,86.5,19,40,0,0,8.5,17.9 +2020-07-20T11:00,88.7,20,42.5,0,0,8.6,22.8 +2020-07-20T12:00,89.2,19,41.2,0,0,8.4,21.3 +2020-07-20T13:00,89.4,19,42.1,0,0,4.6,21 +2020-07-20T14:00,90.3,19,42,0,0,8.7,17.9 +2020-07-20T15:00,90.1,17,40,0,0,8,20.4 +2020-07-20T16:00,89.1,17,38.9,0,0,6.7,17.9 +2020-07-20T17:00,89.6,17,39.1,0,0,7.8,15.2 +2020-07-20T18:00,87.1,22,43.5,0,0,9.2,16.6 +2020-07-20T19:00,78.4,37,50.3,0,0,16.1,27.1 +2020-07-20T20:00,75.4,43,51.4,0,0,6.3,26.8 +2020-07-20T21:00,73.4,43,49.8,0,0,3.6,10.7 +2020-07-20T22:00,71.5,48,50.6,0,0,3.3,6 +2020-07-20T23:00,71.6,51,52.4,0,0,5.2,7.8 +2020-07-21T00:00,69.4,56,52.9,0,0,4.1,9.8 +2020-07-21T01:00,67.4,58,52.1,0,0,4,6 +2020-07-21T02:00,66.2,60,51.7,0,0,3,5.6 +2020-07-21T03:00,63.6,65,51.6,0,0,2.9,3.8 +2020-07-21T04:00,62.7,65,50.7,0,0,2.6,4 +2020-07-21T05:00,63.6,68,53,0,0,2.9,4.3 +2020-07-21T06:00,64.8,69,54.2,0,0,3.2,7.4 +2020-07-21T07:00,66.3,70,56,0,0,6.1,13 +2020-07-21T08:00,69.2,65,57,0,0,6.5,15.4 +2020-07-21T09:00,72.6,58,57.1,0,0,5,15.2 +2020-07-21T10:00,76.3,51,56.8,0,0,2.8,14.3 +2020-07-21T11:00,80.8,43,56.5,0,0,3.6,13 +2020-07-21T12:00,84.2,38,55.8,0,0,5.9,15.9 +2020-07-21T13:00,82.1,38,54.1,0,0,6.8,18.1 +2020-07-21T14:00,83.8,32,51,0,0,1.8,17.2 +2020-07-21T15:00,84,29,48,0,0,9.7,22.6 +2020-07-21T16:00,86.6,24,46,0,0,5.9,20.6 +2020-07-21T17:00,81.4,36,52,0,0,0.6,20.6 +2020-07-21T18:00,84.6,24,43.3,0,0,10.1,16.1 +2020-07-21T19:00,81.7,27,44.2,0,0,7.5,19 +2020-07-21T20:00,77.7,30,43.4,0,0,7.8,12.8 +2020-07-21T21:00,74.6,32,43.1,0,0,7.8,13.4 +2020-07-21T22:00,70.9,39,44.6,0,0,4.5,12.8 +2020-07-21T23:00,69.4,44,46.3,0,0,3.6,5.6 +2020-07-22T00:00,67.5,49,47.7,0,0,4.2,7.6 +2020-07-22T01:00,64.5,55,47.8,0,0,3.9,7.2 +2020-07-22T02:00,63.9,55,47.4,0,0,4,7.6 +2020-07-22T03:00,62.8,55,46.4,0,0,4.1,6.7 +2020-07-22T04:00,61.7,56,46,0,0,3.8,6.9 +2020-07-22T05:00,60.5,65,48.8,0,0,2.1,6 +2020-07-22T06:00,62.2,61,48.7,0,0,1.4,4.5 +2020-07-22T07:00,66.3,54,49,0,0,3.8,9.4 +2020-07-22T08:00,72.1,45,49.4,0,0,3.8,11.4 +2020-07-22T09:00,77.6,35,47.6,0,0,2.7,11 +2020-07-22T10:00,83.8,26,45.2,0,0,2.6,11 +2020-07-22T11:00,89,20,42.3,0,0,3.6,12.1 +2020-07-22T12:00,91.5,16,39.7,0,0,3.6,12.1 +2020-07-22T13:00,92.8,15,38.3,0,0,2.7,12.1 +2020-07-22T14:00,93.5,14,37.3,0,0,2.7,11.2 +2020-07-22T15:00,94.3,14,37.8,0,0,4.4,11.9 +2020-07-22T16:00,88.7,21,44,0,0,13.2,22.6 +2020-07-22T17:00,85.8,24,45.1,0,0,12.8,23.9 +2020-07-22T18:00,82.6,29,47.1,0,0,16.4,28 +2020-07-22T19:00,79.6,35,49.6,0,0,9.3,27.7 +2020-07-22T20:00,78.7,37,50,0,0,2.7,15.2 +2020-07-22T21:00,75.4,42,50.9,0,0,3.3,6 +2020-07-22T22:00,72.5,51,53.2,0,0,5.3,8.3 +2020-07-22T23:00,70.3,56,54.1,0,0,4.3,9.4 +2020-07-23T00:00,71.8,52,53.1,0,0,9.2,15.2 +2020-07-23T01:00,72.1,49,52,0,0,6.5,15.4 +2020-07-23T02:00,71.3,47,50.1,0,0,5.9,11 +2020-07-23T03:00,70.3,47,48.9,0,0,3.8,10.1 +2020-07-23T04:00,70,45,47.8,0,0,4.4,8.1 +2020-07-23T05:00,66.2,60,51.8,0,0,3.2,7.4 +2020-07-23T06:00,68.6,53,51,0,0,5.5,9.4 +2020-07-23T07:00,74.9,42,50.1,0,0,3.1,9.6 +2020-07-23T08:00,79.2,34,48.7,0,0,3.6,10.1 +2020-07-23T09:00,82.4,30,48,0,0,5.1,13.2 +2020-07-23T10:00,85.2,26,46.9,0,0,5.1,14.1 +2020-07-23T11:00,87.2,24,46.5,0,0,4.6,14.1 +2020-07-23T12:00,88.5,23,46.2,0,0,4.5,14.1 +2020-07-23T13:00,89.5,23,46.6,0,0,3.2,13.9 +2020-07-23T14:00,89.8,23,46.9,0,0,1.1,12.3 +2020-07-23T15:00,91,22,47.4,0,0,2.4,10.7 +2020-07-23T16:00,89.8,23,47.4,0,0,2.5,10.7 +2020-07-23T17:00,85.6,27,47.4,0,0,9.5,9.4 +2020-07-23T18:00,85.7,25,45.9,0,0,11.4,19.7 +2020-07-23T19:00,83,28,46.6,0,0,8.1,19.7 +2020-07-23T20:00,79.4,33,47.9,0,0,4.7,13.6 +2020-07-23T21:00,76.6,38,49.1,0,0,3.7,8.1 +2020-07-23T22:00,73.6,41,48.4,0,0,4.7,6.9 +2020-07-23T23:00,71.7,42,47.3,0,0,5.1,8.5 +2020-07-24T00:00,70.6,45,48.1,0,0,4,8.5 +2020-07-24T01:00,70.3,46,48.6,0,0,3.3,7.2 +2020-07-24T02:00,68.7,50,49.5,0,0,3,5.6 +2020-07-24T03:00,65.8,57,50,0,0,3.8,5.6 +2020-07-24T04:00,65.2,58,50.1,0,0,3.5,5.1 +2020-07-24T05:00,66.6,59,52,0,0,1.4,4.5 +2020-07-24T06:00,67.9,59,52.9,0,0,1.8,5.4 +2020-07-24T07:00,71.6,52,52.8,0,0,0.7,5.6 +2020-07-24T08:00,76.9,42,51.8,0,0,1.4,7.6 +2020-07-24T09:00,81.8,34,50.4,0,0,3.9,11.4 +2020-07-24T10:00,85.6,28,49.1,0,0,3.8,13.2 +2020-07-24T11:00,87.2,28,49.8,0,0,3.8,12.8 +2020-07-24T12:00,85,30,50.2,0,0,8.3,17.4 +2020-07-24T13:00,87.1,26,47.8,0,0,4.8,19.7 +2020-07-24T14:00,88.3,25,47.8,0,0,5.6,15.9 +2020-07-24T15:00,83.5,31,49.8,0,0,4.5,14.3 +2020-07-24T16:00,83.6,33,51.6,0,0,7.1,18.1 +2020-07-24T17:00,79.7,41,53.6,0,0,2.8,15.2 +2020-07-24T18:00,75.7,53,57.2,0.004,0,6.7,12.3 +2020-07-24T19:00,73,61,58.8,0,0,7.4,13.4 +2020-07-24T20:00,70.9,68,59.8,0.008,0,6.3,13 +2020-07-24T21:00,69.1,81,62.9,0.02,0,4.8,10.7 +2020-07-24T22:00,68.8,83,63.3,0.012,0,1.6,8.5 +2020-07-24T23:00,67.7,88,64.1,0,0,3.4,5.4 +2020-07-25T00:00,67.2,94,65.3,0,0,3.9,6.9 +2020-07-25T01:00,65.8,96,64.8,0,0,3.8,6.7 +2020-07-25T02:00,63.6,97,62.8,0,0,4,7.2 +2020-07-25T03:00,62.4,96,61.3,0,0,4.3,7.6 +2020-07-25T04:00,62.3,88,58.7,0,0,4.8,8.1 +2020-07-25T05:00,62.7,69,52.5,0,0,4.7,8.1 +2020-07-25T06:00,67.7,56,51.4,0,0,3.5,6.5 +2020-07-25T07:00,72.9,46,50.7,0,0,1.1,6.5 +2020-07-25T08:00,76.8,40,50.9,0,0,1.8,7.4 +2020-07-25T09:00,81,34,49.6,0,0,4.1,11.4 +2020-07-25T10:00,83.9,30,48.8,0,0,6,15.2 +2020-07-25T11:00,85.9,25,46.3,0,0,8.8,19.2 +2020-07-25T12:00,86.6,24,45.8,0,0,7.6,19.7 +2020-07-25T13:00,87.1,24,46,0,0,7,17.7 +2020-07-25T14:00,84.4,28,47.6,0,0,13.2,23.5 +2020-07-25T15:00,82.8,30,48.4,0,0,11.6,28 +2020-07-25T16:00,83.7,28,47.5,0,0,4.3,21.7 +2020-07-25T17:00,68.5,76,60.5,0,0,4.1,11.4 +2020-07-25T18:00,70.9,64,58.3,0.004,0,5.5,12.3 +2020-07-25T19:00,68.9,76,61.1,0.012,0,7.9,13.6 +2020-07-25T20:00,68.4,78,61.3,0.004,0,6.8,13.4 +2020-07-25T21:00,68.4,77,60.8,0,0,5.9,11.2 +2020-07-25T22:00,67.4,79,60.5,0.016,0,7.8,12.5 +2020-07-25T23:00,65.8,90,62.9,0.043,0,5.4,12.5 +2020-07-26T00:00,65.8,92,63.4,0.024,0,3.7,9.2 +2020-07-26T01:00,65.3,91,62.5,0,0,2.1,6.3 +2020-07-26T02:00,65,92,62.6,0,0,2.3,4 +2020-07-26T03:00,62.4,97,61.6,0,0,3.4,4.9 +2020-07-26T04:00,61.9,98,61.3,0,0,2.6,4.9 +2020-07-26T05:00,64,82,58.2,0,0,4.2,5.1 +2020-07-26T06:00,66,75,57.9,0,0,1.8,7.4 +2020-07-26T07:00,68.5,70,58.4,0,0,0.8,4.9 +2020-07-26T08:00,71.9,60,57.3,0,0,1.3,6.5 +2020-07-26T09:00,76.5,45,53.5,0,0,4.5,11 +2020-07-26T10:00,80.1,37,51.4,0,0,8.9,18.3 +2020-07-26T11:00,81.5,35,51.2,0,0,10,20.4 +2020-07-26T12:00,81.1,35,51.3,0,0,9.9,20.6 +2020-07-26T13:00,79.3,40,53.2,0,0,12.3,23.5 +2020-07-26T14:00,78.4,43,54,0.004,0,7.9,23.3 +2020-07-26T15:00,80,41,54,0,0,6.4,17.9 +2020-07-26T16:00,80.6,39,53.6,0,0,3.9,15 +2020-07-26T17:00,72.4,59,57.3,0,0,0.7,11.2 +2020-07-26T18:00,73.6,54,55.7,0,0,4.8,10.3 +2020-07-26T19:00,71.8,55,54.5,0,0,5.1,10.5 +2020-07-26T20:00,69.8,58,54.6,0,0,3.7,8.5 +2020-07-26T21:00,67.8,65,55.7,0,0,2.6,6.3 +2020-07-26T22:00,67.6,66,55.9,0,0,0.5,5.1 +2020-07-26T23:00,66,74,57.4,0,0,2.5,3.4 +2020-07-27T00:00,66.1,75,58.1,0,0,1.6,3.4 +2020-07-27T01:00,64.9,78,58,0,0,1.9,2.7 +2020-07-27T02:00,64,76,56.4,0,0,3.2,5.1 +2020-07-27T03:00,62.3,79,55.7,0,0,3.1,5.4 +2020-07-27T04:00,62.7,77,55.4,0,0,1.8,3.8 +2020-07-27T05:00,60.9,82,55.4,0,0,2.2,3.4 +2020-07-27T06:00,63,75,55,0,0,2.9,6.3 +2020-07-27T07:00,66.2,73,57.1,0,0,4.1,10.3 +2020-07-27T08:00,69.7,65,57.6,0,0,2.5,10.3 +2020-07-27T09:00,73.6,57,57.4,0,0,2.7,10.7 +2020-07-27T10:00,77.5,48,55.9,0,0,3.9,12.8 +2020-07-27T11:00,80.6,40,54.1,0,0,4.9,14.3 +2020-07-27T12:00,82.7,36,53,0,0,5.6,15.7 +2020-07-27T13:00,83.6,32,50.5,0,0,5.8,15.7 +2020-07-27T14:00,83.7,30,48.7,0,0,6.2,15.7 +2020-07-27T15:00,84.7,28,47.6,0,0,5.8,15.4 +2020-07-27T16:00,84.3,28,47.2,0,0,6.5,14.5 +2020-07-27T17:00,84.5,28,47.4,0,0,6,15 +2020-07-27T18:00,79.3,41,53.4,0,0,13.5,22.6 +2020-07-27T19:00,76.6,46,54.3,0,0,10.4,23.9 +2020-07-27T20:00,74.6,54,56.8,0,0,10,17 +2020-07-27T21:00,72.9,54,55.4,0,0,13.3,21.9 +2020-07-27T22:00,70,62,56.2,0,0,9.4,22.4 +2020-07-27T23:00,68.2,64,55.7,0,0,6.3,15.4 +2020-07-28T00:00,66.8,65,54.9,0,0,5.9,10.5 +2020-07-28T01:00,64.8,66,53.2,0,0,4.5,9.8 +2020-07-28T02:00,63.2,67,52.2,0,0,3.2,7.6 +2020-07-28T03:00,61.7,70,51.8,0,0,3.8,4.9 +2020-07-28T04:00,61.2,69,51.1,0,0,4,4.9 +2020-07-28T05:00,63.2,68,52.5,0,0,3.6,4.9 +2020-07-28T06:00,65.5,66,53.9,0,0,2.2,5.6 +2020-07-28T07:00,67.8,67,56.3,0,0,1.6,6.7 +2020-07-28T08:00,70.3,62,56.5,0,0,2.2,8.9 +2020-07-28T09:00,73.1,55,56.2,0,0,1.6,8.9 +2020-07-28T10:00,76.9,46,54.7,0,0,3.7,11.4 +2020-07-28T11:00,80.2,38,52.6,0,0,4.8,13.6 +2020-07-28T12:00,81.6,36,51.9,0,0,6.2,17.4 +2020-07-28T13:00,81.3,39,53.8,0.008,0,5.8,19.2 +2020-07-28T14:00,79.7,39,52.5,0.004,0,7.6,18.1 +2020-07-28T15:00,82.3,31,49,0,0,5.4,16.3 +2020-07-28T16:00,82,31,48.4,0,0,2.8,15.2 +2020-07-28T17:00,77.5,43,53.2,0,0,8.9,13 +2020-07-28T18:00,73.6,56,56.8,0,0,8.4,20.6 +2020-07-28T19:00,70.1,63,57,0.008,0,8.1,16.6 +2020-07-28T20:00,67.5,79,60.7,0.031,0,4.5,13.6 +2020-07-28T21:00,66.6,80,60.3,0,0,4.3,9.2 +2020-07-28T22:00,65,82,59.5,0,0,5.2,8.5 +2020-07-28T23:00,64.1,83,58.8,0,0,5.4,8.9 +2020-07-29T00:00,62.8,85,58.1,0,0,5.5,9.2 +2020-07-29T01:00,61.8,84,56.8,0,0,4.7,9.2 +2020-07-29T02:00,60.4,84,55.4,0,0,4.3,8.1 +2020-07-29T03:00,58.1,83,52.9,0,0,3.3,7.2 +2020-07-29T04:00,57.2,75,49.3,0,0,3.7,6.3 +2020-07-29T05:00,60,50,41.5,0,0,4.6,6.5 +2020-07-29T06:00,63.1,44,41.1,0,0,6.3,9.8 +2020-07-29T07:00,69.9,38,43.1,0,0,4.3,10.3 +2020-07-29T08:00,78.7,28,43.3,0,0,4,10.7 +2020-07-29T09:00,84.6,19,37.6,0,0,5.4,13.4 +2020-07-29T10:00,87.1,16,35.5,0,0,6.7,17 +2020-07-29T11:00,89.9,13,31.8,0,0,17.1,32 +2020-07-29T12:00,89.9,14,33.8,0,0,14.3,35.1 +2020-07-29T13:00,92,10,28.6,0,0,16.1,29.8 +2020-07-29T14:00,92.6,11,30.2,0,0,15.1,32.7 +2020-07-29T15:00,92,11,30.4,0,0,11,29.8 +2020-07-29T16:00,92,11,29.2,0,0,16.9,29.3 +2020-07-29T17:00,87.3,19,40.5,0,0,11.5,30.9 +2020-07-29T18:00,84.8,20,39.7,0,0,12.7,19.7 +2020-07-29T19:00,77.4,37,49,0,0,13.5,27.7 +2020-07-29T20:00,74.3,42,49.7,0,0,4.9,22.4 +2020-07-29T21:00,72.2,47,50.7,0,0,5.1,8.5 +2020-07-29T22:00,70.3,51,51.4,0,0,3.6,8.7 +2020-07-29T23:00,69,54,51.8,0,0,4.3,6.5 +2020-07-30T00:00,66.4,62,52.8,0,0,4.1,6.9 +2020-07-30T01:00,64.8,67,53.6,0,0,4.4,5.8 +2020-07-30T02:00,63.8,69,53.5,0,0,3.4,5.4 +2020-07-30T03:00,62.8,69,52.6,0,0,1.6,4.5 +2020-07-30T04:00,60.7,71,51.1,0,0,3.4,5.8 +2020-07-30T05:00,59.5,69,49.3,0,0,0.3,6.3 +2020-07-30T06:00,60.5,67,49.5,0,0,2.7,5.6 +2020-07-30T07:00,65.9,53,48.6,0,0,2.7,9.4 +2020-07-30T08:00,70.2,48,49.4,0,0,3.9,11 +2020-07-30T09:00,74.5,41,49,0,0,5.8,14.1 +2020-07-30T10:00,76.5,37,48.5,0,0,11.9,23.7 +2020-07-30T11:00,74.8,42,50,0,0,12.9,25.3 +2020-07-30T12:00,75,43,51.1,0,0,12.5,25.1 +2020-07-30T13:00,76.3,42,51.7,0,0,12.5,25.9 +2020-07-30T14:00,77.5,42,52.7,0,0,12.3,25.9 +2020-07-30T15:00,77.2,42,52.6,0,0,10.6,25.1 +2020-07-30T16:00,74,50,54.3,0.02,0,10.4,22.1 +2020-07-30T17:00,70.2,59,55.1,0.012,0,6.3,20.1 +2020-07-30T18:00,68.9,64,56.3,0,0,12.2,21.3 +2020-07-30T19:00,65.9,76,58,0.004,0,7.2,22.4 +2020-07-30T20:00,65.2,78,58.2,0,0,4,13.4 +2020-07-30T21:00,64.5,83,59.1,0,0,1.4,7.2 +2020-07-30T22:00,63.3,86,58.9,0,0,2.2,3.4 +2020-07-30T23:00,62.3,87,58.6,0,0,2.2,3.6 +2020-07-31T00:00,60.7,92,58.3,0,0,2.9,4 +2020-07-31T01:00,59.8,93,57.9,0,0,3.2,4.7 +2020-07-31T02:00,58.2,96,57,0,0,1.7,3.8 +2020-07-31T03:00,57.1,94,55.4,0,0,1.5,3.8 +2020-07-31T04:00,55.9,92,53.5,0,0,1.6,3.1 +2020-07-31T05:00,56.8,86,52.7,0,0,3,3.6 +2020-07-31T06:00,59.5,74,51.3,0,0,2.6,6.3 +2020-07-31T07:00,65,61,51.2,0,0,2.1,7.6 +2020-07-31T08:00,70.6,51,51.4,0,0,1.4,8.5 +2020-07-31T09:00,75.1,43,51.3,0,0,1.2,8.7 +2020-07-31T10:00,79.3,31,45.8,0,0,4,13 +2020-07-31T11:00,82.4,25,42.8,0,0,5.2,14.8 +2020-07-31T12:00,84.5,22,41.2,0,0,7.4,18.8 +2020-07-31T13:00,85.3,21,40.6,0,0,11,22.1 +2020-07-31T14:00,85.6,20,39.9,0,0,10.2,22.6 +2020-07-31T15:00,85.4,21,40.9,0,0,7,21.3 +2020-07-31T16:00,85.1,21,41.4,0,0,6.7,17 +2020-07-31T17:00,83.1,25,43.9,0,0,6.5,18.1 +2020-07-31T18:00,82,27,44.6,0,0,2.6,13.6 +2020-07-31T19:00,77.9,31,44.4,0,0,10.3,16.6 +2020-07-31T20:00,73.1,39,47,0,0,3.8,17.4 +2020-07-31T21:00,70.6,47,49.5,0,0,6.7,11.2 +2020-07-31T22:00,67,55,50.3,0,0,3.9,11 +2020-07-31T23:00,65,61,51.1,0,0,3.6,5.6 +2020-08-01T00:00,63.7,62,50.5,0,0,4.4,7.4 +2020-08-01T01:00,61.7,65,50,0,0,3.5,7.6 +2020-08-01T02:00,60.2,69,50.1,0,0,2.9,5.8 +2020-08-01T03:00,58.8,74,50.6,0,0,2.8,4.7 +2020-08-01T04:00,57.4,80,51.3,0,0,3.2,4.5 +2020-08-01T05:00,57.7,64,45.5,0,0,3.6,4.3 +2020-08-01T06:00,59.8,59,45.2,0,0,3,6.7 +2020-08-01T07:00,65.7,48,45.7,0,0,1.6,6.9 +2020-08-01T08:00,72.1,38,45.2,0,0,1.4,8.3 +2020-08-01T09:00,77.9,30,43.8,0,0,1.6,8.9 +2020-08-01T10:00,82.5,25,43,0,0,2.6,11 +2020-08-01T11:00,85.8,19,39.2,0,0,5.2,14.3 +2020-08-01T12:00,87.7,17,37,0,0,6.3,16.8 +2020-08-01T13:00,88.8,16,37.1,0,0,9,19.5 +2020-08-01T14:00,88.3,17,37.3,0,0,8.5,20.8 +2020-08-01T15:00,86,21,41.1,0,0,12,23.3 +2020-08-01T16:00,84.9,20,39.8,0,0,14,25.9 +2020-08-01T17:00,80.7,28,44.6,0,0,10.4,25.7 +2020-08-01T18:00,80.1,27,43.3,0,0,9.3,18.1 +2020-08-01T19:00,77.3,30,43.8,0,0,4.7,16.1 +2020-08-01T20:00,73.8,36,45.1,0,0,3.7,7.8 +2020-08-01T21:00,70.3,41,45.8,0,0,4.3,6 +2020-08-01T22:00,69.5,43,45.8,0,0,5.1,8.9 +2020-08-01T23:00,65.8,51,46.9,0,0,3.7,8.1 +2020-08-02T00:00,64,55,47.7,0,0,2.7,5.4 +2020-08-02T01:00,62.5,59,48,0,0,3,5.1 +2020-08-02T02:00,60.8,63,48,0,0,2.9,5.1 +2020-08-02T03:00,60,64,47.8,0,0,4.2,7.2 +2020-08-02T04:00,57.8,69,47.8,0,0,3.5,7.2 +2020-08-02T05:00,60,64,47.7,0,0,3.7,4.5 +2020-08-02T06:00,62.6,60,48.4,0,0,5.9,8.9 +2020-08-02T07:00,66.8,57,51,0,0,6.3,13 +2020-08-02T08:00,71,51,51.7,0,0,5.1,13.4 +2020-08-02T09:00,74.5,45,51.6,0,0,6.4,15.4 +2020-08-02T10:00,77.4,40,51,0,0,5.5,16.3 +2020-08-02T11:00,80.2,34,49.5,0,0,5.8,15.7 +2020-08-02T12:00,82.7,30,48.2,0,0,6.3,17 +2020-08-02T13:00,82.5,29,47.3,0.008,0,6.4,17.2 +2020-08-02T14:00,84.7,24,44,0,0,6.2,16.8 +2020-08-02T15:00,84.7,23,42.8,0,0,8.4,19.2 +2020-08-02T16:00,84.3,24,44.1,0,0,6.2,18.1 +2020-08-02T17:00,83.9,26,45.7,0,0,4.2,14.8 +2020-08-02T18:00,80.5,33,48.6,0,0,8.6,16.3 +2020-08-02T19:00,77.3,37,48.7,0,0,2.9,15.2 +2020-08-02T20:00,77,37,48.6,0,0,2.8,6.5 +2020-08-02T21:00,70.4,48,49.8,0,0,4.1,6 +2020-08-02T22:00,67.9,54,50.6,0,0,4.8,7.8 +2020-08-02T23:00,65.7,60,51.3,0,0,3,8.1 +2020-08-03T00:00,64.6,63,51.8,0,0,3.4,5.1 +2020-08-03T01:00,62,70,52.2,0,0,3.3,6 +2020-08-03T02:00,62.2,72,53.1,0,0,6.7,10.3 +2020-08-03T03:00,60.9,76,53.4,0,0,4.6,11.9 +2020-08-03T04:00,58.7,81,52.9,0,0,5,7.4 +2020-08-03T05:00,60.9,76,53.4,0,0,1.5,6.3 +2020-08-03T06:00,60.6,78,53.8,0,0,1.1,3.4 +2020-08-03T07:00,63.9,69,53.5,0,0,0.4,6.3 +2020-08-03T08:00,67.7,62,54.2,0,0,2.7,9.6 +2020-08-03T09:00,71.8,55,54.7,0,0,2.6,11 +2020-08-03T10:00,75.6,48,54.3,0,0,2.8,11.9 +2020-08-03T11:00,79.4,41,53.8,0,0,3.7,13 +2020-08-03T12:00,83.7,35,52.8,0,0,3.7,13.6 +2020-08-03T13:00,85.6,31,51.9,0,0,1.4,13.4 +2020-08-03T14:00,84.7,33,52.2,0.02,0,1.5,10.7 +2020-08-03T15:00,86.1,28,49,0.004,0,4.9,14.3 +2020-08-03T16:00,85.1,27,47.4,0,0,4.3,14.8 +2020-08-03T17:00,82.3,37,53.5,0,0,8.5,11 +2020-08-03T18:00,80.5,40,53.7,0,0,10.4,22.1 +2020-08-03T19:00,78.7,39,51.9,0,0,9.9,18.3 +2020-08-03T20:00,75.7,41,50.4,0,0,7.6,16.6 +2020-08-03T21:00,74.2,44,50.9,0,0,6.3,12.8 +2020-08-03T22:00,72.7,52,54,0,0,18.6,25.7 +2020-08-03T23:00,68.5,64,55.7,0,0,8.8,32.7 +2020-08-04T00:00,66.9,67,55.7,0,0,7.3,15 +2020-08-04T01:00,65.6,69,55,0,0,3.4,13.2 +2020-08-04T02:00,63.3,75,55.4,0,0,3.8,5.4 +2020-08-04T03:00,63.1,75,54.9,0,0,2.8,4.9 +2020-08-04T04:00,62.1,68,51.4,0,0,3.8,5.8 +2020-08-04T05:00,62.6,69,52.3,0,0,3.2,6.5 +2020-08-04T06:00,65,62,51.5,0,0,3.8,5.4 +2020-08-04T07:00,68.5,54,51.4,0,0,4.5,7.8 +2020-08-04T08:00,75.9,39,49.1,0,0,4.8,15.9 +2020-08-04T09:00,80.1,35,49.8,0,0,5.9,13.9 +2020-08-04T10:00,83.8,30,49.3,0,0,3.4,15 +2020-08-04T11:00,89.5,24,47.6,0,0,6.4,14.8 +2020-08-04T12:00,86.7,28,49.3,0,0,6.1,23.5 +2020-08-04T13:00,89.8,24,48.4,0,0,7.8,21.3 +2020-08-04T14:00,87,25,46.6,0.012,0,7.8,23.9 +2020-08-04T15:00,84.8,25,45.2,0,0,10.1,22.6 +2020-08-04T16:00,83,29,47.4,0,0,17.2,29.5 +2020-08-04T17:00,81.1,42,55.9,0,0,18.7,31.5 +2020-08-04T18:00,79,41,53.1,0.004,0,4.9,31.8 +2020-08-04T19:00,73.6,52,54.7,0.004,0,2,9.6 +2020-08-04T20:00,71.4,58,55.8,0,0,5.8,9.8 +2020-08-04T21:00,70,60,55.7,0,0,6.8,11.2 +2020-08-04T22:00,68.9,63,55.6,0,0,7.3,11.9 +2020-08-04T23:00,68,63,55.1,0,0,6,12.3 +2020-08-05T00:00,66.3,67,55,0,0,4.2,10.1 +2020-08-05T01:00,63.9,73,55.1,0,0,2.8,7.2 +2020-08-05T02:00,63,75,54.9,0,0,3.3,4.7 +2020-08-05T03:00,62,75,53.9,0,0,3.6,5.6 +2020-08-05T04:00,61.5,69,51.4,0,0,4.2,6.7 +2020-08-05T05:00,61.1,81,55.1,0,0,3.4,6.7 +2020-08-05T06:00,62.3,74,54,0,0,3.7,7.4 +2020-08-05T07:00,66.7,65,54.4,0,0,4.3,9.4 +2020-08-05T08:00,73.3,48,52.2,0,0,5.4,13 +2020-08-05T09:00,79.3,36,50.2,0,0,4.2,13.2 +2020-08-05T10:00,83.8,29,48.3,0,0,1.4,12.5 +2020-08-05T11:00,87.2,24,46.3,0,0,3.4,12.5 +2020-08-05T12:00,85,29,49.2,0.008,0,4.3,18.3 +2020-08-05T13:00,86.2,24,45.1,0,0,2.7,13.6 +2020-08-05T14:00,85.2,27,47.1,0.008,0,1.8,11.4 +2020-08-05T15:00,84.4,28,47.8,0.004,0,7.5,14.5 +2020-08-05T16:00,84.2,27,46.4,0,0,5.8,18.3 +2020-08-05T17:00,83.1,37,54.1,0,0,10.4,15.7 +2020-08-05T18:00,79.1,42,54.1,0.008,0,4.1,19 +2020-08-05T19:00,66.8,79,60.3,0.122,0,13.2,26.4 +2020-08-05T20:00,68.6,71,58.7,0,0,6.4,22.4 +2020-08-05T21:00,68.5,71,58.8,0,0,5.2,11.6 +2020-08-05T22:00,67.3,74,58.8,0,0,4,8.7 +2020-08-05T23:00,67.6,73,58.6,0,0,5.5,9.4 +2020-08-06T00:00,65.6,74,56.9,0,0,3.2,9.2 +2020-08-06T01:00,63.8,80,57.6,0,0,4.2,5.4 +2020-08-06T02:00,64,78,56.8,0,0,4.2,7.2 +2020-08-06T03:00,63.3,72,54,0,0,3.6,6.7 +2020-08-06T04:00,62.8,70,52.9,0,0,1.7,4.3 +2020-08-06T05:00,60.8,73,52,0,0,4.4,4 +2020-08-06T06:00,63.6,59,48.9,0,0,2.2,5.4 +2020-08-06T07:00,67.4,52,49.1,0,0,2,7.2 +2020-08-06T08:00,72.9,43,49.2,0,0,4.5,11.9 +2020-08-06T09:00,82.5,25,43.6,0,0,3.4,12.1 +2020-08-06T10:00,88.3,19,40.9,0,0,3.4,14.1 +2020-08-06T11:00,85.1,24,44.1,0,0,5.2,13.6 +2020-08-06T12:00,85.6,21,41.8,0,0,4.2,17.7 +2020-08-06T13:00,89,18,40.3,0,0,10,20.4 +2020-08-06T14:00,88.5,19,40.7,0,0,11.5,26.2 +2020-08-06T15:00,88.5,18,39.6,0,0,2.8,22.8 +2020-08-06T16:00,87.5,19,40,0,0,10.6,19 +2020-08-06T17:00,86.5,21,41.6,0,0,6.8,21 +2020-08-06T18:00,83.1,25,43.8,0,0,5.6,15.4 +2020-08-06T19:00,79.9,30,45.6,0,0,5.2,9.8 +2020-08-06T20:00,76.4,35,46.4,0,0,4.8,13.6 +2020-08-06T21:00,72.8,42,48.1,0,0,3.8,7.8 +2020-08-06T22:00,69.4,50,50,0,0,4,6.5 +2020-08-06T23:00,66.9,55,50.2,0,0,4.2,6.5 +2020-08-07T00:00,65.8,57,50.3,0,0,3.4,5.6 +2020-08-07T01:00,64.3,57,48.9,0,0,4,6.7 +2020-08-07T02:00,63.1,55,46.4,0,0,5.2,8.9 +2020-08-07T03:00,62.3,48,42.5,0,0,6.1,10.3 +2020-08-07T04:00,62.3,41,38,0,0,6.2,10.7 +2020-08-07T05:00,59.1,40,34.9,0,0,5.4,10.5 +2020-08-07T06:00,63.4,33,34,0,0,5.1,7.6 +2020-08-07T07:00,70.9,26,34.3,0,0,4.6,10.1 +2020-08-07T08:00,80.4,20,35.2,0,0,3.2,10.1 +2020-08-07T09:00,87.1,13,29.6,0,0,1.4,9.8 +2020-08-07T10:00,89.7,9,23.5,0,0,2.3,10.1 +2020-08-07T11:00,91.3,9,24.4,0,0,4.6,13.4 +2020-08-07T12:00,93.2,9,25.4,0,0,6.5,16.3 +2020-08-07T13:00,93.7,9,25.3,0,0,6.3,16.6 +2020-08-07T14:00,94.8,8,24.4,0,0,4.5,15.7 +2020-08-07T15:00,95.5,8,23.5,0,0,3.6,13.2 +2020-08-07T16:00,94.7,7,22.7,0,0,3.8,11.4 +2020-08-07T17:00,94.6,7,22.6,0,0,5.8,15.7 +2020-08-07T18:00,91.6,9,26,0,0,6.2,11.4 +2020-08-07T19:00,82,14,27.8,0,0,5.9,10.3 +2020-08-07T20:00,80.3,15,29.1,0,0,6.2,9.4 +2020-08-07T21:00,74.8,18,28.9,0,0,5.4,8.7 +2020-08-07T22:00,71,26,34.7,0,0,4.6,8.9 +2020-08-07T23:00,66.4,38,40.1,0,0,4.6,7.6 +2020-08-08T00:00,66.4,37,39.6,0,0,4.1,6.5 +2020-08-08T01:00,68.5,23,29.7,0,0,7,11.4 +2020-08-08T02:00,67.3,16,19.2,0,0,5.8,11.6 +2020-08-08T03:00,70.3,13,17.6,0,0,4.5,10.5 +2020-08-08T04:00,61.8,26,26.2,0,0,6.2,7.4 +2020-08-08T05:00,61.7,31,30.7,0,0,4.7,7.4 +2020-08-08T06:00,63.1,32,32.6,0,0,4.7,7.4 +2020-08-08T07:00,69.2,26,32.4,0,0,2.4,8.3 +2020-08-08T08:00,76.6,19,31.4,0,0,1.5,7.2 +2020-08-08T09:00,84.3,12,25.6,0,0,0.9,7.6 +2020-08-08T10:00,88,9,20.9,0,0,5.1,13.9 +2020-08-08T11:00,89.2,9,22.4,0,0,2.1,13.9 +2020-08-08T12:00,91,8,22.2,0,0,6.3,15.2 +2020-08-08T13:00,92.1,8,23.6,0,0,8.9,19.5 +2020-08-08T14:00,92.5,9,24.7,0,0,9,19.7 +2020-08-08T15:00,92.4,8,23.9,0,0,8.8,19.2 +2020-08-08T16:00,92.5,8,23.5,0,0,10.6,20.1 +2020-08-08T17:00,91.1,8,22.1,0,0,9.3,22.4 +2020-08-08T18:00,88.3,11,28,0,0,12.5,20.8 +2020-08-08T19:00,83,14,28.9,0,0,10.2,20.8 +2020-08-08T20:00,79.7,15,28.4,0,0,8.9,17 +2020-08-08T21:00,76.5,19,31.1,0,0,9.5,15.9 +2020-08-08T22:00,72.1,25,34.3,0,0,7.9,15.9 +2020-08-08T23:00,70,28,35.4,0,0,6.5,13.2 +2020-08-09T00:00,68.3,30,35.5,0,0,5.4,11 +2020-08-09T01:00,67.6,29,34.5,0,0,6.7,11.4 +2020-08-09T02:00,63.9,32,33.8,0,0,5.3,11 +2020-08-09T03:00,61.4,34,32.9,0,0,6.8,8.1 +2020-08-09T04:00,60.7,33,31.3,0,0,6.8,8.3 +2020-08-09T05:00,61.4,27,27.4,0,0,6.1,8.5 +2020-08-09T06:00,65,26,29.8,0,0,4.5,8.7 +2020-08-09T07:00,72.5,22,31.3,0,0,3.8,9.2 +2020-08-09T08:00,81.7,17,31.9,0,0,2.3,8.5 +2020-08-09T09:00,89.2,10,24.7,0,0,5.8,13 +2020-08-09T10:00,91.7,8,21.7,0,0,6.5,16.1 +2020-08-09T11:00,92.8,8,22.1,0,0,2.8,15.7 +2020-08-09T12:00,93.8,8,22.2,0,0,1,11.6 +2020-08-09T13:00,94.6,7,21.9,0,0,4.8,13.4 +2020-08-09T14:00,94.9,7,21.7,0,0,6.3,15.7 +2020-08-09T15:00,94.5,7,20.8,0,0,7.7,17 +2020-08-09T16:00,93.7,7,20.2,0,0,9.1,17.4 +2020-08-09T17:00,93.1,7,18.8,0,0,5.4,18.6 +2020-08-09T18:00,91,9,25.4,0,0,3.7,10.5 +2020-08-09T19:00,87.1,11,25.3,0,0,1.7,6.7 +2020-08-09T20:00,78,16,28.5,0,0,6.5,8.7 +2020-08-09T21:00,74.5,17,27.4,0,0,5.3,8.7 +2020-08-09T22:00,71.5,21,29.2,0,0,4.3,7.6 +2020-08-09T23:00,69.9,23,30,0,0,7.1,11.9 +2020-08-10T00:00,66.3,26,30.3,0,0,3.8,11.9 +2020-08-10T01:00,63.8,31,32.3,0,0,5,6.3 +2020-08-10T02:00,64.1,26,28.9,0,0,6.2,7.6 +2020-08-10T03:00,64.9,26,29.4,0,0,7.1,8.7 +2020-08-10T04:00,64.7,28,30.7,0,0,5.3,9.4 +2020-08-10T05:00,62.1,53,44.5,0,0,6.9,8.1 +2020-08-10T06:00,61.9,58,47.1,0,0,6.9,11.4 +2020-08-10T07:00,64,58,49.1,0,0,5.3,13.4 +2020-08-10T08:00,66.7,55,49.8,0,0,0.7,11.6 +2020-08-10T09:00,71.2,46,49.6,0,0,2.3,10.3 +2020-08-10T10:00,76.9,36,47.9,0,0,3.5,12.3 +2020-08-10T11:00,82.1,28,46.1,0,0,3.5,13.9 +2020-08-10T12:00,86.9,22,43.7,0,0,6.5,16.1 +2020-08-10T13:00,89.2,20,42.8,0,0,8.6,19.7 +2020-08-10T14:00,88.9,16,36.5,0,0,3.7,19.2 +2020-08-10T15:00,89.2,14,33.8,0,0,3.8,13.6 +2020-08-10T16:00,88.8,14,34.3,0,0,9.3,17.7 +2020-08-10T17:00,87.4,22,43.3,0,0,6.7,22.1 +2020-08-10T18:00,85,23,43.3,0,0,2.3,12.1 +2020-08-10T19:00,80.7,26,42.8,0,0,3.5,5.8 +2020-08-10T20:00,76.1,33,44.8,0,0,4.1,6.5 +2020-08-10T21:00,72.1,41,46.8,0,0,5.9,7.8 +2020-08-10T22:00,68,49,48.2,0,0,5.1,7.6 +2020-08-10T23:00,65.3,55,48.7,0,0,2.6,6.3 +2020-08-11T00:00,63.4,56,47.4,0,0,3.2,5.1 +2020-08-11T01:00,62.4,54,45.7,0,0,3.8,5.8 +2020-08-11T02:00,62.3,46,41.2,0,0,4.3,7.4 +2020-08-11T03:00,60.8,45,39.3,0,0,3.8,7.2 +2020-08-11T04:00,59.4,46,38.5,0,0,3,6.5 +2020-08-11T05:00,61.3,45,39.7,0,0,3,5.8 +2020-08-11T06:00,63.1,46,42,0,0,1.3,6 +2020-08-11T07:00,66.8,36,39,0,0,2.1,7.2 +2020-08-11T08:00,72.8,28,38,0,0,1.3,7.8 +2020-08-11T09:00,80.6,20,35.9,0,0,1.3,8.9 +2020-08-11T10:00,87.9,14,32.2,0,0,3.5,11 +2020-08-11T11:00,90.7,10,25.4,0,0,3.7,13.9 +2020-08-11T12:00,92.3,9,24.4,0,0,5.4,13.9 +2020-08-11T13:00,93.2,8,23.5,0,0,6.6,15.9 +2020-08-11T14:00,93.1,8,23,0,0,5.5,15.9 +2020-08-11T15:00,93.4,8,22.6,0,0,2.4,14.1 +2020-08-11T16:00,92.8,8,22.6,0,0,3.9,9.8 +2020-08-11T17:00,90.4,10,25.9,0,0,11.9,13.2 +2020-08-11T18:00,89,10,25.6,0,0,11.1,21.3 +2020-08-11T19:00,84.2,12,25.6,0,0,4.9,18.6 +2020-08-11T20:00,80.9,15,28.6,0,0,8.9,13.9 +2020-08-11T21:00,74.6,23,34.2,0,0,4.7,15 +2020-08-11T22:00,73.6,23,33.8,0,0,3.9,6 +2020-08-11T23:00,71.2,27,35.6,0,0,4.7,8.1 +2020-08-12T00:00,67.3,35,38.7,0,0,6.4,7.6 +2020-08-12T01:00,66,37,38.7,0,0,6,7.8 +2020-08-12T02:00,64.1,36,36.5,0,0,5.3,7.4 +2020-08-12T03:00,62.9,34,34.3,0,0,4,6.7 +2020-08-12T04:00,61.7,34,33.2,0,0,5.2,8.7 +2020-08-12T05:00,59.4,70,49.6,0,0,4.1,8.7 +2020-08-12T06:00,61.5,59,47.1,0,0,5.4,9.4 +2020-08-12T07:00,66.5,50,47.1,0,0,4.3,8.5 +2020-08-12T08:00,72.1,40,46.7,0,0,6.6,15.4 +2020-08-12T09:00,79.3,25,40.2,0,0,4.7,14.8 +2020-08-12T10:00,86.2,15,33.5,0,0,4,13.4 +2020-08-12T11:00,90.1,11,27.6,0,0,4.2,13.4 +2020-08-12T12:00,90.4,10,25.8,0,0,5.3,14.3 +2020-08-12T13:00,90.9,10,27.4,0,0,3,14.5 +2020-08-12T14:00,91.4,11,28.4,0,0,2.4,12.1 +2020-08-12T15:00,91.6,11,28.8,0,0,5.2,13.2 +2020-08-12T16:00,90.9,11,28.9,0,0,8.3,17 +2020-08-12T17:00,91,13,33.4,0,0,7.4,22.1 +2020-08-12T18:00,85.9,17,35.8,0,0,7.8,18.8 +2020-08-12T19:00,81.6,19,35.5,0,0,5.4,13 +2020-08-12T20:00,75.9,24,36.8,0,0,4.4,8.9 +2020-08-12T21:00,73,26,36.2,0,0,5.2,8.9 +2020-08-12T22:00,71.6,21,29.8,0,0,5.4,8.5 +2020-08-12T23:00,70.5,21,28.1,0,0,6.2,10.1 +2020-08-13T00:00,67.6,24,29.8,0,0,5.6,10.1 +2020-08-13T01:00,64,31,32.8,0,0,4.3,8.9 +2020-08-13T02:00,61.8,37,35.4,0,0,3.8,6 +2020-08-13T03:00,61.9,36,34.8,0,0,4.1,6.9 +2020-08-13T04:00,60,36,33.1,0,0,4,6.9 +2020-08-13T05:00,58.7,27,25.1,0,0,4.6,6.3 +2020-08-13T06:00,61.5,26,26.6,0,0,4.8,6.7 +2020-08-13T07:00,68.7,23,29.7,0,0,4.7,10.3 +2020-08-13T08:00,77.5,17,29,0,0,4.1,11 +2020-08-13T09:00,84.1,11,25,0,0,2.7,10.7 +2020-08-13T10:00,88.5,9,22.4,0,0,1.6,10.3 +2020-08-13T11:00,90.6,8,21.8,0,0,4,12.5 +2020-08-13T12:00,92.2,8,22.3,0,0,3.2,14.1 +2020-08-13T13:00,93.2,8,22.1,0,0,1.6,12.3 +2020-08-13T14:00,94.3,7,21.5,0,0,5.5,14.8 +2020-08-13T15:00,94.5,7,20.5,0,0,7.3,17.2 +2020-08-13T16:00,94.7,7,19.5,0,0,3.4,16.8 +2020-08-13T17:00,93.3,8,23.4,0,0,4.3,15.4 +2020-08-13T18:00,90.2,22,46.1,0,0,2.7,8.9 +2020-08-13T19:00,85.6,12,27.1,0,0,5.5,5.4 +2020-08-13T20:00,81.2,14,27,0,0,5.5,8.9 +2020-08-13T21:00,76.5,18,30.5,0,0,5.7,10.5 +2020-08-13T22:00,70.8,26,34.3,0,0,5.1,9.4 +2020-08-13T23:00,67.5,32,36.2,0,0,4.7,6.9 +2020-08-14T00:00,66.1,32,35.7,0,0,3.9,6.3 +2020-08-14T01:00,66.6,29,33.1,0,0,6.5,10.5 +2020-08-14T02:00,65.1,28,31.6,0,0,6.5,11.2 +2020-08-14T03:00,63.5,29,30.6,0,0,6.1,11.2 +2020-08-14T04:00,62.7,29,29.8,0,0,5.5,10.5 +2020-08-14T05:00,63.5,23,25.5,0,0,6.6,8.7 +2020-08-14T06:00,64.7,28,30.5,0,0,3.6,8.1 +2020-08-14T07:00,71.6,23,32.2,0,0,5.4,11 +2020-08-14T08:00,79.1,19,32.7,0,0,4,11 +2020-08-14T09:00,85.7,13,28.9,0,0,1.8,10.7 +2020-08-14T10:00,89.9,9,22.9,0,0,7.2,16.3 +2020-08-14T11:00,90.7,9,24.4,0,0,11.2,22.4 +2020-08-14T12:00,92.3,9,24.8,0,0,10.7,24.8 +2020-08-14T13:00,94,8,24.4,0,0,9,22.4 +2020-08-14T14:00,93.9,8,24.8,0,0,9.2,20.1 +2020-08-14T15:00,93.8,9,26.1,0,0,8.9,19.9 +2020-08-14T16:00,92.3,11,29.2,0,0,11.1,21.3 +2020-08-14T17:00,88.8,15,34.8,0,0,8.8,21.9 +2020-08-14T18:00,86.3,17,35.6,0,0,9.8,16.3 +2020-08-14T19:00,79.5,27,42.3,0,0,11.1,20.6 +2020-08-14T20:00,76.1,31,43.6,0,0,5.2,18.1 +2020-08-14T21:00,75.9,32,43.9,0,0,1.3,8.3 +2020-08-14T22:00,71.7,38,45.1,0,0,2.9,3.4 +2020-08-14T23:00,72.2,37,44.5,0,0,1.2,3.4 +2020-08-15T00:00,65.4,49,46,0,0,3.2,4.5 +2020-08-15T01:00,63.1,55,46.5,0,0,2.6,4.5 +2020-08-15T02:00,61.2,58,46.5,0,0,2.4,4.9 +2020-08-15T03:00,59.6,60,45.7,0,0,1.2,4.5 +2020-08-15T04:00,59.6,55,43.6,0,0,3.5,4.7 +2020-08-15T05:00,61.3,49,42,0,0,4.7,6.5 +2020-08-15T06:00,62.1,47,41.7,0,0,4.9,7.8 +2020-08-15T07:00,67.7,39,42.1,0,0,2.6,7.6 +2020-08-15T08:00,72.9,35,43.3,0,0,3.2,10.3 +2020-08-15T09:00,78.7,28,42.9,0,0,1.4,10.5 +2020-08-15T10:00,84.5,20,39,0,0,4.1,12.5 +2020-08-15T11:00,89.1,15,35.7,0,0,5.6,15 +2020-08-15T12:00,91.9,13,34.5,0,0,6.7,17 +2020-08-15T13:00,92.6,13,34.8,0,0,9,19.7 +2020-08-15T14:00,92.7,14,35.7,0,0,8.6,20.4 +2020-08-15T15:00,92.8,13,35.2,0,0,8.6,19.2 +2020-08-15T16:00,91.7,14,35,0,0,9.8,19.2 +2020-08-15T17:00,89.5,15,35.1,0,0,11.4,19.7 +2020-08-15T18:00,87.7,15,35.2,0,0,6.8,20.4 +2020-08-15T19:00,81.9,20,37,0,0,5.5,11.2 +2020-08-15T20:00,82.7,19,35.7,0,0,3.2,6.7 +2020-08-15T21:00,80.8,20,36.1,0,0,1.1,3.8 +2020-08-15T22:00,74.1,26,37.1,0,0,4.1,5.1 +2020-08-15T23:00,68.8,32,37.8,0,0,3.3,5.1 +2020-08-16T00:00,65.9,38,39.5,0,0,4.3,5.6 +2020-08-16T01:00,64,42,40.2,0,0,4.7,6 +2020-08-16T02:00,63.6,40,38.7,0,0,3.7,6 +2020-08-16T03:00,61.6,43,39,0,0,3.8,5.8 +2020-08-16T04:00,61,45,39.7,0,0,3.8,5.8 +2020-08-16T05:00,61.9,47,41.6,0,0,3,6.3 +2020-08-16T06:00,63.9,46,42.5,0,0,5.1,7.4 +2020-08-16T07:00,70.6,38,43.4,0,0,3,8.3 +2020-08-16T08:00,78.4,28,42.4,0,0,2.6,8.9 +2020-08-16T09:00,84.2,22,41.5,0,0,2.1,9.8 +2020-08-16T10:00,88.5,18,39.4,0,0,1.6,9.6 +2020-08-16T11:00,91.9,13,33.4,0,0,6.2,15.4 +2020-08-16T12:00,93.4,10,28.9,0,0,7.8,18.8 +2020-08-16T13:00,94.4,10,28.8,0,0,7.3,18.6 +2020-08-16T14:00,94.8,10,29.3,0,0,8.1,18.6 +2020-08-16T15:00,94.4,11,31.1,0,0,9.9,19.9 +2020-08-16T16:00,87.4,23,45.5,0,0,19.1,33.6 +2020-08-16T17:00,93,12,33.5,0,0,10.7,33.8 +2020-08-16T18:00,89.9,14,35,0,0,12.7,21.5 +2020-08-16T19:00,85.1,18,37,0,0,10.5,21.7 +2020-08-16T20:00,80.1,24,40.1,0,0,4.2,17 +2020-08-16T21:00,78.5,26,41.3,0,0,4.7,6.7 +2020-08-16T22:00,77,33,45.6,0,0,4.7,10.1 +2020-08-16T23:00,72.7,40,46.7,0,0,4.1,7.4 +2020-08-17T00:00,70.1,41,45,0,0,3.6,5.6 +2020-08-17T01:00,69,38,42.4,0,0,4.2,6.3 +2020-08-17T02:00,67.5,48,46.9,0,0,5.9,7.4 +2020-08-17T03:00,66.7,50,47.8,0,0,4.7,7.6 +2020-08-17T04:00,64,52,45.8,0,0,3.2,5.6 +2020-08-17T05:00,63.6,53,46,0,0,2.7,4.3 +2020-08-17T06:00,64.5,50,45.4,0,0,2.4,5.1 +2020-08-17T07:00,70.1,46,48.2,0,0,1.2,5.8 +2020-08-17T08:00,74,44,50.8,0,0,2,8.7 +2020-08-17T09:00,78.9,37,50.5,0,0,2.8,11 +2020-08-17T10:00,83.6,31,49.7,0,0,3.2,11.9 +2020-08-17T11:00,88.1,25,48.3,0,0,3.7,13.2 +2020-08-17T12:00,91.9,19,43.7,0,0,3.8,13.4 +2020-08-17T13:00,93.8,16,40.2,0,0,10.7,20.8 +2020-08-17T14:00,91.9,13,34.3,0,0,9.7,24.8 +2020-08-17T15:00,93.7,11,32.1,0,0,8.8,19.9 +2020-08-17T16:00,92.8,14,36.3,0,0,7.4,18.8 +2020-08-17T17:00,92.8,15,38.6,0,0,9.8,15.9 +2020-08-17T18:00,89.4,33,56.3,0,0,2.2,17.4 +2020-08-17T19:00,85.3,20,40,0,0,5,9.6 +2020-08-17T20:00,80.9,25,41.6,0,0,4.5,8.5 +2020-08-17T21:00,77.5,28,41.5,0,0,4.4,7.6 +2020-08-17T22:00,73.9,34,43.9,0,0,6.5,7.8 +2020-08-17T23:00,71.7,36,43.3,0,0,4.6,7.6 +2020-08-18T00:00,69.9,39,43.8,0,0,4,6.3 +2020-08-18T01:00,67.7,42,43.9,0,0,3.7,6.9 +2020-08-18T02:00,65.7,44,43.4,0,0,4,6.3 +2020-08-18T03:00,64.6,45,43,0,0,3.5,6 +2020-08-18T04:00,63.7,46,42.6,0,0,3.8,6 +2020-08-18T05:00,62.8,49,43.3,0,0,5.4,6 +2020-08-18T06:00,65.6,43,42.4,0,0,3.9,6.7 +2020-08-18T07:00,72.1,35,42.5,0,0,3.5,8.7 +2020-08-18T08:00,80.7,26,42.4,0,0,1.1,8.7 +2020-08-18T09:00,86.8,20,40.9,0,0,3.4,10.5 +2020-08-18T10:00,91.3,16,39.6,0,0,3.2,11.9 +2020-08-18T11:00,93.9,13,35.8,0,0,2.8,13 +2020-08-18T12:00,95.2,12,33.8,0,0,4.5,14.5 +2020-08-18T13:00,96.3,11,32.1,0,0,8.5,19 +2020-08-18T14:00,96.6,11,33.3,0,0,10.4,21.3 +2020-08-18T15:00,95.6,11,33.4,0,0,9.7,21.5 +2020-08-18T16:00,93.7,13,34.5,0,0,12,21 +2020-08-18T17:00,93.7,11,30.7,0,0,8.2,24.8 +2020-08-18T18:00,90.1,14,33.6,0,0,10.9,18.3 +2020-08-18T19:00,86.5,16,35.2,0,0,5.4,18.3 +2020-08-18T20:00,81.5,19,35.5,0,0,3.2,8.9 +2020-08-18T21:00,80.2,21,36.2,0,0,4.5,5.4 +2020-08-18T22:00,79.2,22,36.6,0,0,1.8,6 +2020-08-18T23:00,73.1,29,38.6,0,0,3.2,3.6 +2020-08-19T00:00,72.3,30,38.9,0,0,4.8,7.4 +2020-08-19T01:00,69,35,40,0,0,6.4,7.8 +2020-08-19T02:00,68.4,35,39.6,0,0,5,7.8 +2020-08-19T03:00,66.1,37,39.1,0,0,4.6,7.2 +2020-08-19T04:00,64.7,38,38.7,0,0,3.7,5.6 +2020-08-19T05:00,65.5,45,43.3,0,0,4.3,5.8 +2020-08-19T06:00,66.9,42,43.1,0,0,4.3,7.4 +2020-08-19T07:00,71.7,35,42.6,0,0,0.7,7.6 +2020-08-19T08:00,75.6,32,43.4,0,0,2.4,8.9 +2020-08-19T09:00,80.1,28,43.7,0,0,2.5,10.5 +2020-08-19T10:00,85,23,43,0,0,1.6,10.7 +2020-08-19T11:00,89.2,19,41.7,0,0,1.5,10.5 +2020-08-19T12:00,92.3,16,39.6,0,0,1.6,14.8 +2020-08-19T13:00,93.5,14,37.5,0,0,3.2,13 +2020-08-19T14:00,93.1,14,37.7,0,0,12.8,23.5 +2020-08-19T15:00,91.4,14,36.1,0,0,7.1,25.1 +2020-08-19T16:00,88.4,20,42.8,0,0,17.7,32 +2020-08-19T17:00,87,19,39.1,0,0,11.8,31.3 +2020-08-19T18:00,85.5,21,41.4,0,0,2.1,20.1 +2020-08-19T19:00,82.7,21,38.9,0,0,6.8,11.4 +2020-08-19T20:00,79.4,26,41.4,0,0,4.9,11.6 +2020-08-19T21:00,78.2,32,45.9,0,0,3.7,7.8 +2020-08-19T22:00,73.5,38,46.3,0,0,2.9,4.3 +2020-08-19T23:00,72.8,40,47.2,0,0,4.2,7.6 +2020-08-20T00:00,70.3,48,49.9,0,0,5.1,7.6 +2020-08-20T01:00,69,53,51.1,0,0,2.9,9.2 +2020-08-20T02:00,67.7,54,50.4,0,0,1.4,3.6 +2020-08-20T03:00,64.4,53,47.1,0,0,2.7,5.4 +2020-08-20T04:00,62.2,52,44.3,0,0,2.1,5.1 +2020-08-20T05:00,60.9,60,47,0,0,2.2,3.6 +2020-08-20T06:00,62.3,58,47.6,0,0,2.3,3.6 +2020-08-20T07:00,67,51,48.5,0,0,2.1,7.2 +2020-08-20T08:00,71.8,44,48.5,0,0,4.1,11.6 +2020-08-20T09:00,79.2,31,45.8,0,0,3.1,11.6 +2020-08-20T10:00,86.6,22,42.7,0,0,7.5,16.8 +2020-08-20T11:00,90.6,19,42.8,0,0,7.9,21.5 +2020-08-20T12:00,91.1,19,43.1,0,0,8.1,20.8 +2020-08-20T13:00,91.9,18,41.8,0,0,6.7,19.5 +2020-08-20T14:00,90.8,18,41.2,0,0,13.3,27.7 +2020-08-20T15:00,90.1,17,39,0,0,10.6,25.7 +2020-08-20T16:00,89.2,18,40,0,0,9.1,21.9 +2020-08-20T17:00,85.5,23,43.9,0,0,6.5,18.3 +2020-08-20T18:00,84.3,25,44.2,0,0,5.8,13.9 +2020-08-20T19:00,78.6,31,45.8,0,0,4,10.5 +2020-08-20T20:00,79.1,31,45.7,0,0,5,8.5 +2020-08-20T21:00,76.4,37,48.2,0,0,12.3,19.9 +2020-08-20T22:00,75.1,38,48.1,0,0,11.5,20.4 +2020-08-20T23:00,73.7,41,48.7,0,0,3.3,19.2 +2020-08-21T00:00,71.4,44,48.5,0,0,5.9,9.8 +2020-08-21T01:00,68.9,47,47.9,0,0,5.9,10.1 +2020-08-21T02:00,67.5,49,47.8,0,0,6.5,10.7 +2020-08-21T03:00,66.6,50,47.1,0,0,5.2,10.7 +2020-08-21T04:00,65.4,49,46,0,0,4.5,8.9 +2020-08-21T05:00,63,51,44.4,0,0,4.3,7.4 +2020-08-21T06:00,65.6,48,45.1,0,0,2.9,6.9 +2020-08-21T07:00,72.5,36,43.8,0,0,2.1,6.9 +2020-08-21T08:00,79.5,27,42.4,0,0,2.2,8.3 +2020-08-21T09:00,84.9,20,40,0,0,3,10.5 +2020-08-21T10:00,88.3,17,38.7,0,0,5.8,14.5 +2020-08-21T11:00,90.2,16,37.5,0,0,6.6,17.2 +2020-08-21T12:00,91.6,15,36.7,0,0,5.9,17.2 +2020-08-21T13:00,93.3,13,35.2,0,0,5.8,16.6 +2020-08-21T14:00,94.1,12,34.3,0,0,7.8,18.1 +2020-08-21T15:00,93.8,12,33.4,0,0,7.9,18.8 +2020-08-21T16:00,93.4,12,32.3,0,0,6.5,17.4 +2020-08-21T17:00,90.8,16,39.2,0,0,5.9,14.8 +2020-08-21T18:00,88.9,18,40.2,0,0,5.9,14.3 +2020-08-21T19:00,86.8,19,40.3,0,0,1.4,9.8 +2020-08-21T20:00,78.9,27,41.9,0,0,5.2,6.7 +2020-08-21T21:00,76.7,28,41.5,0,0,5.6,8.3 +2020-08-21T22:00,73,34,42.7,0,0,4.2,10.3 +2020-08-21T23:00,69.8,39,43.7,0,0,4.5,6.9 +2020-08-22T00:00,67.7,42,43.6,0,0,4.7,6 +2020-08-22T01:00,67,40,41.8,0,0,4,6.3 +2020-08-22T02:00,66,37,38.8,0,0,4.9,8.1 +2020-08-22T03:00,64,34,35.2,0,0,4.7,8.1 +2020-08-22T04:00,61.8,34,33.4,0,0,5.5,6.9 +2020-08-22T05:00,63.4,30,31.6,0,0,3.8,7.4 +2020-08-22T06:00,64.7,28,30.9,0,0,4.3,7.2 +2020-08-22T07:00,72.3,22,31,0,0,3,7.8 +2020-08-22T08:00,81.7,16,31.6,0,0,2.2,8.1 +2020-08-22T09:00,89.5,11,28.9,0,0,1.4,8.5 +2020-08-22T10:00,93,9,26.1,0,0,5.6,13.9 +2020-08-22T11:00,94.8,8,25.4,0,0,7.5,17.4 +2020-08-22T12:00,96.1,8,25.7,0,0,8.8,19.7 +2020-08-22T13:00,97,8,26.2,0,0,9.2,21.3 +2020-08-22T14:00,97.6,7,23.8,0,0,10.5,21.5 +2020-08-22T15:00,97,7,21.6,0,0,9.8,21.9 +2020-08-22T16:00,96.3,6,20.4,0,0,9.7,20.1 +2020-08-22T17:00,93.9,8,22.5,0,0,7.1,19.2 +2020-08-22T18:00,90.6,11,29.3,0,0,3.5,13 +2020-08-22T19:00,87.4,10,24.5,0,0,2.3,6.9 +2020-08-22T20:00,80.6,16,29.9,0,0,3.8,5.1 +2020-08-22T21:00,75.1,18,29,0,0,4.1,6.3 +2020-08-22T22:00,72.1,21,30.4,0,0,3.8,6 +2020-08-22T23:00,70.3,23,31,0,0,3.4,5.6 +2020-08-23T00:00,67.5,28,33.5,0,0,4.2,6 +2020-08-23T01:00,65.8,32,34.8,0,0,5,6 +2020-08-23T02:00,68.4,28,33.6,0,0,2.5,6.3 +2020-08-23T03:00,63.9,33,34.3,0,0,4.3,4.9 +2020-08-23T04:00,61.8,35,33.8,0,0,4.3,5.8 +2020-08-23T05:00,61.3,38,35.4,0,0,5,5.4 +2020-08-23T06:00,63.1,37,36.1,0,0,3.6,7.4 +2020-08-23T07:00,70.2,28,35.8,0,0,3.9,9.4 +2020-08-23T08:00,77.6,21,34.8,0,0,2,8.7 +2020-08-23T09:00,85.1,14,31.3,0,0,2.8,10.3 +2020-08-23T10:00,91.1,11,29.8,0,0,3.8,11.9 +2020-08-23T11:00,94.7,10,29.8,0,0,4.2,13.2 +2020-08-23T12:00,96.7,9,28.9,0,0,4.8,14.1 +2020-08-23T13:00,97.2,9,28.5,0,0,5.9,15.2 +2020-08-23T14:00,97.3,9,28.7,0,0,7.4,17.2 +2020-08-23T15:00,96.9,9,28.4,0,0,6.8,17.2 +2020-08-23T16:00,96.3,9,28,0,0,6.3,15.9 +2020-08-23T17:00,92.8,12,32,0,0,13.8,13.9 +2020-08-23T18:00,90.6,12,30.8,0,0,4.8,22.8 +2020-08-23T19:00,86,16,35.2,0,0,8.1,13.6 +2020-08-23T20:00,79.7,22,37.7,0,0,4.5,13.4 +2020-08-23T21:00,77.3,26,39.7,0,0,5.4,7.2 +2020-08-23T22:00,74.8,28,39.4,0,0,5.2,8.7 +2020-08-23T23:00,71.6,30,38.4,0,0,4.1,8.5 +2020-08-24T00:00,69.4,34,39.9,0,0,5.1,8.7 +2020-08-24T01:00,68.1,36,39.9,0,0,5.7,9.4 +2020-08-24T02:00,67.4,33,37.2,0,0,4.1,10.3 +2020-08-24T03:00,66.7,36,39.1,0,0,4,6.5 +2020-08-24T04:00,64.4,41,40.4,0,0,3.8,6.7 +2020-08-24T05:00,65.8,38,39.1,0,0,4,5.1 +2020-08-24T06:00,66.5,35,37.9,0,0,4.6,7.8 +2020-08-24T07:00,73,28,38.2,0,0,3.6,8.9 +2020-08-24T08:00,81.9,21,38,0,0,2.3,8.5 +2020-08-24T09:00,87.1,16,35.9,0,0,0.9,8.5 +2020-08-24T10:00,90.4,14,35.4,0,0,4,12.3 +2020-08-24T11:00,93.4,13,34.9,0,0,6,15.4 +2020-08-24T12:00,95.5,12,34.7,0,0,5.7,16.3 +2020-08-24T13:00,96.4,11,33.9,0,0,5.9,15.7 +2020-08-24T14:00,97.3,11,33.5,0,0,7.1,16.3 +2020-08-24T15:00,94.2,13,36.8,0,0,11.8,23.3 +2020-08-24T16:00,93.7,13,35.3,0,0,8.4,23.3 +2020-08-24T17:00,90.7,16,37.8,0,0,18.3,16.8 +2020-08-24T18:00,88.5,19,40.6,0,0,13.6,31.1 +2020-08-24T19:00,83.8,24,43.2,0,0,10.3,22.8 +2020-08-24T20:00,81.6,26,43.3,0,0,7.1,17.2 +2020-08-24T21:00,79.2,28,43.6,0,0,4,11.9 +2020-08-24T22:00,76.4,32,44.6,0,0,6,10.3 +2020-08-24T23:00,73.3,36,44.7,0,0,6.4,11.2 +2020-08-25T00:00,71.6,37,44.2,0,0,4.8,10.7 +2020-08-25T01:00,69.4,40,43.9,0,0,3.6,8.3 +2020-08-25T02:00,69.7,38,43.1,0,0,5.3,8.9 +2020-08-25T03:00,68.6,39,42.6,0,0,4.5,9.2 +2020-08-25T04:00,67.4,40,41.9,0,0,4.3,7.6 +2020-08-25T05:00,66.5,40,41.5,0,0,5.4,6.7 +2020-08-25T06:00,68.8,38,42.4,0,0,3.8,6.9 +2020-08-25T07:00,74.6,30,41,0,0,3.1,7.4 +2020-08-25T08:00,81.7,24,41.3,0,0,1.9,7.8 +2020-08-25T09:00,87.9,18,39.4,0,0,2.5,9.4 +2020-08-25T10:00,91,16,38.5,0,0,3.8,11.9 +2020-08-25T11:00,94.5,14,37.5,0,0,3.9,13.6 +2020-08-25T12:00,95.6,13,37.4,0,0,3.3,13.4 +2020-08-25T13:00,95.8,13,37.6,0,0,3.1,12.1 +2020-08-25T14:00,96,13,37.5,0,0,4.9,13.2 +2020-08-25T15:00,96.1,13,37.4,0,0,5.6,15.4 +2020-08-25T16:00,93.2,17,41.2,0,0,15.6,25.7 +2020-08-25T17:00,90.7,18,41.3,0,0,4.5,31.5 +2020-08-25T18:00,86.8,25,46.4,0,0,13.2,21.7 +2020-08-25T19:00,81.8,31,47.9,0,0,14.2,27.5 +2020-08-25T20:00,80.9,32,48.1,0,0,7.9,23.3 +2020-08-25T21:00,78.1,36,48.8,0,0,5.8,13.2 +2020-08-25T22:00,75.6,40,49.7,0,0,6.1,10.5 +2020-08-25T23:00,73.4,44,50.2,0,0,4.9,10.3 +2020-08-26T00:00,70.8,48,50.2,0,0,3.6,8.1 +2020-08-26T01:00,69.5,47,48.6,0,0,3.9,6.3 +2020-08-26T02:00,69.1,45,47.1,0,0,4.3,7.4 +2020-08-26T03:00,67.9,47,46.7,0,0,3.7,7.2 +2020-08-26T04:00,66.9,46,45.7,0,0,3.8,5.8 +2020-08-26T05:00,72.9,35,43.3,0,0,4.4,6.5 +2020-08-26T06:00,73.3,33,42.8,0,0,1.6,5.6 +2020-08-26T07:00,75.3,32,43.5,0,0,2,6 +2020-08-26T08:00,78.9,29,43.6,0,0,2.8,9.6 +2020-08-26T09:00,84,24,43.3,0,0,1.4,9.2 +2020-08-26T10:00,87.9,21,42.6,0,0,6.9,15.9 +2020-08-26T11:00,88.7,21,43.3,0,0,10.1,21.7 +2020-08-26T12:00,88.7,20,42.6,0,0,3.8,21 +2020-08-26T13:00,91.6,18,41.7,0,0,3.5,13.2 +2020-08-26T14:00,92.8,17,41.7,0,0,5.4,14.5 +2020-08-26T15:00,92.5,18,42.2,0,0,6.7,15.2 +2020-08-26T16:00,90.5,19,42.4,0,0,10.8,19.7 +2020-08-26T17:00,80.5,35,50.5,0,0,6.6,21 +2020-08-26T18:00,76.3,50,56.2,0.028,0,6.3,11.6 +2020-08-26T19:00,70.6,75,62.2,0.035,0,11.7,18.8 +2020-08-26T20:00,69.9,72,60.3,0.008,0,15,24.6 +2020-08-26T21:00,69.7,67,58.4,0.004,0,11.6,24.6 +2020-08-26T22:00,69.6,66,57.7,0,0,5.9,18.6 +2020-08-26T23:00,70,57,54.2,0,0,4.6,9.2 +2020-08-27T00:00,69.4,55,52.3,0,0,5.8,9.8 +2020-08-27T01:00,67.3,57,51.6,0,0,5.9,9.8 +2020-08-27T02:00,66.2,59,51.4,0,0,5,9.8 +2020-08-27T03:00,64.3,64,51.9,0,0,3.9,8.3 +2020-08-27T04:00,63.2,64,51,0,0,3.5,6.5 +2020-08-27T05:00,61.9,74,53.6,0,0,3.9,5.6 +2020-08-27T06:00,64.1,58,48.8,0,0,4.1,6 +2020-08-27T07:00,70.4,41,45.6,0,0,2.4,8.7 +2020-08-27T08:00,77.1,31,44.3,0,0,3.5,9.8 +2020-08-27T09:00,82,26,43.9,0,0,4.1,12.3 +2020-08-27T10:00,86.1,22,43.3,0,0,4.4,13.4 +2020-08-27T11:00,89.7,19,41.6,0,0,3.8,13.4 +2020-08-27T12:00,92.4,16,39.6,0,0,5.6,15.4 +2020-08-27T13:00,94.3,14,38.1,0,0,6.9,17 +2020-08-27T14:00,94.6,13,36.3,0,0,6.8,17.4 +2020-08-27T15:00,94.5,12,34.8,0,0,6,16.8 +2020-08-27T16:00,94,13,34.8,0,0,6.3,14.8 +2020-08-27T17:00,88.4,20,42.7,0,0,15.4,14.8 +2020-08-27T18:00,85.6,24,44.7,0,0,10,26.6 +2020-08-27T19:00,82.1,26,44,0,0,6.7,16.6 +2020-08-27T20:00,79.3,29,44.1,0,0,6.1,11.9 +2020-08-27T21:00,76.1,34,45.9,0,0,4,10.3 +2020-08-27T22:00,73.2,39,46.6,0,0,3.4,6.7 +2020-08-27T23:00,71.2,42,47.1,0,0,3.7,5.8 +2020-08-28T00:00,69.8,44,46.7,0,0,5.5,9.4 +2020-08-28T01:00,68.3,45,46.1,0,0,4.4,9.4 +2020-08-28T02:00,67.2,45,45,0,0,4.3,7.6 +2020-08-28T03:00,65.8,44,43.5,0,0,3.7,7.2 +2020-08-28T04:00,64.5,45,42.8,0,0,4.6,5.8 +2020-08-28T05:00,65.4,53,47.7,0,0,8.8,17.9 +2020-08-28T06:00,65.5,56,49.4,0,0,5,14.5 +2020-08-28T07:00,68.9,49,49.2,0,0,5,9.8 +2020-08-28T08:00,71.8,46,50.1,0,0,10.8,20.6 +2020-08-28T09:00,74.1,43,50.2,0,0,9.9,21 +2020-08-28T10:00,76.7,38,49.6,0,0,9.5,20.6 +2020-08-28T11:00,78.4,36,49,0,0,9,20.4 +2020-08-28T12:00,79.9,33,48.3,0,0,9.6,21 +2020-08-28T13:00,80.6,30,46.6,0,0,7.9,21.3 +2020-08-28T14:00,81.1,29,45.6,0,0,6.5,18.1 +2020-08-28T15:00,80.4,29,45.1,0,0,4.5,15.9 +2020-08-28T16:00,78.4,33,46.5,0.004,0,4.6,12.3 +2020-08-28T17:00,67.3,78,60.1,0.008,0,5.4,14.5 +2020-08-28T18:00,65.9,82,60.2,0.067,0,4.5,9.4 +2020-08-28T19:00,64.6,88,61.1,0.067,0,7.7,11.9 +2020-08-28T20:00,64,89,60.8,0.02,0,8.5,15.4 +2020-08-28T21:00,63.2,89,59.9,0,0,7.4,13.6 +2020-08-28T22:00,62.6,87,58.7,0,0,7.4,12.3 +2020-08-28T23:00,63.1,83,57.8,0,0,3.9,12.1 +2020-08-29T00:00,62.6,81,56.8,0,0,3.6,6.7 +2020-08-29T01:00,60.3,93,58.2,0,0,3.8,6 +2020-08-29T02:00,60,96,58.9,0,0,4.9,8.7 +2020-08-29T03:00,58.5,98,57.8,0,0,3.9,8.3 +2020-08-29T04:00,58.8,99,58.5,0,0,1.9,5.1 +2020-08-29T05:00,61.5,89,58.4,0,0,1.5,6 +2020-08-29T06:00,61.6,87,57.8,0,0,0.9,4.5 +2020-08-29T07:00,62.6,87,58.6,0,0,1.8,5.8 +2020-08-29T08:00,64.4,79,57.7,0,0,0.9,6.5 +2020-08-29T09:00,67.1,67,55.9,0,0,1.6,8.7 +2020-08-29T10:00,70.3,56,54,0,0,2.1,9.4 +2020-08-29T11:00,71.9,49,51.9,0,0,3.5,10.7 +2020-08-29T12:00,74.8,41,49.7,0,0,2.7,10.7 +2020-08-29T13:00,80.3,32,47.8,0,0,3.2,10.7 +2020-08-29T14:00,79.7,30,46,0,0,1.8,14.8 +2020-08-29T15:00,80.9,26,43.3,0,0,6,12.8 +2020-08-29T16:00,81.7,26,43,0,0,7.2,16.8 +2020-08-29T17:00,77.4,31,44.1,0,0,9.2,15.9 +2020-08-29T18:00,74.1,36,45.4,0,0,7.5,16.8 +2020-08-29T19:00,67.5,47,46.4,0,0,5.5,12.1 +2020-08-29T20:00,69.2,46,47.8,0,0,11.2,15.7 +2020-08-29T21:00,64.7,62,51.5,0,0,3.8,19.2 +2020-08-29T22:00,65.2,62,52.1,0,0,3,5.4 +2020-08-29T23:00,61.5,69,51.3,0,0,3.8,6 +2020-08-30T00:00,59.6,71,50.2,0,0,4,6.5 +2020-08-30T01:00,58.7,71,49.2,0,0,3.7,6.3 +2020-08-30T02:00,59,67,48,0,0,4.6,7.4 +2020-08-30T03:00,59.5,58,44.5,0,0,5.2,8.1 +2020-08-30T04:00,60.6,49,41.5,0,0,5.3,9.8 +2020-08-30T05:00,60.6,45,39,0,0,5.9,8.7 +2020-08-30T06:00,59.6,48,39.7,0,0,4.5,9.6 +2020-08-30T07:00,65.4,41,41,0,0,1.8,7.6 +2020-08-30T08:00,74.4,30,40.6,0,0,3.8,9.8 +2020-08-30T09:00,80.5,20,35.8,0,0,1.2,11 +2020-08-30T10:00,82.4,19,35.6,0,0,1,10.1 +2020-08-30T11:00,85.5,17,35.2,0,0,2.1,14.8 +2020-08-30T12:00,89.5,11,28.8,0,0,9.9,20.1 +2020-08-30T13:00,88.3,12,30.2,0,0,13.1,27.3 +2020-08-30T14:00,88.4,13,31,0,0,7.7,25.9 +2020-08-30T15:00,88.9,13,30.9,0,0,6.2,18.3 +2020-08-30T16:00,88.7,12,29.7,0,0,8.5,17.7 +2020-08-30T17:00,83.5,17,34.8,0,0,13.1,21.5 +2020-08-30T18:00,81.8,20,36.7,0,0,7.6,22.8 +2020-08-30T19:00,74.2,28,39.2,0,0,3.8,13 +2020-08-30T20:00,70.9,35,42,0,0,6.4,9.8 +2020-08-30T21:00,67.9,41,43.5,0,0,6.3,11.2 +2020-08-30T22:00,67.4,38,40.6,0,0,21,31.5 +2020-08-30T23:00,64.5,35,35.9,0,0,14.8,35.3 +2020-08-31T00:00,61.9,38,36,0,0,12.6,24.8 +2020-08-31T01:00,58.4,43,36.2,0,0,11.9,23.3 +2020-08-31T02:00,56.3,48,36.7,0,0,9,19.9 +2020-08-31T03:00,54.5,51,36.9,0,0,5.6,15 +2020-08-31T04:00,52.4,56,37.4,0,0,3.4,9.4 +2020-08-31T05:00,51.6,63,39.3,0,0,2.1,4.5 +2020-08-31T06:00,52.1,62,39.7,0,0,2,4.3 +2020-08-31T07:00,54.6,55,38.7,0,0,6.1,12.1 +2020-08-31T08:00,58.1,48,38.8,0,0,5.6,14.3 +2020-08-31T09:00,63.1,41,38.8,0,0,4.9,14.1 +2020-08-31T10:00,67.7,35,39.1,0,0,0.6,14.1 +2020-08-31T11:00,73,30,39.4,0,0,4.1,13.4 +2020-08-31T12:00,77.3,26,39.4,0,0,6,17.2 +2020-08-31T13:00,79.8,24,39.8,0,0,3.3,17.9 +2020-08-31T14:00,81.5,23,39.7,0,0,4,16.1 +2020-08-31T15:00,81.2,23,40.2,0,0,3.1,13.2 +2020-08-31T16:00,79.1,27,42.2,0,0,4.3,18.6 +2020-08-31T17:00,76.1,26,38.6,0,0,7.6,11.4 +2020-08-31T18:00,74.1,29,39.8,0,0,8.8,14.5 +2020-08-31T19:00,69.3,40,43.8,0,0,6.9,16.6 +2020-08-31T20:00,67.1,42,43.3,0,0,6.5,11.2 +2020-08-31T21:00,60.8,64,48.6,0.031,0,15,30 +2020-08-31T22:00,60.2,66,48.9,0.008,0,8.3,23.9 +2020-08-31T23:00,59.2,70,49.4,0,0,1,13.2 +2020-09-01T00:00,58.6,77,51.4,0.004,0,5.4,7.8 +2020-09-01T01:00,57.8,76,50.5,0,0,5.2,10.1 +2020-09-01T02:00,56,80,50.1,0,0,4.1,8.5 +2020-09-01T03:00,57,77,49.9,0,0,2.3,7.6 +2020-09-01T04:00,56.9,76,49.5,0,0,2.1,3.8 +2020-09-01T05:00,54.7,87,50.9,0,0,3.7,4.7 +2020-09-01T06:00,55.9,79,49.5,0,0,1.9,4.9 +2020-09-01T07:00,58.2,69,47.9,0,0,2.2,6.7 +2020-09-01T08:00,61.2,57,45.8,0,0,3.4,10.1 +2020-09-01T09:00,65.6,45,43.8,0,0,6.9,15.7 +2020-09-01T10:00,71,36,42.9,0,0,7.9,18.6 +2020-09-01T11:00,74.8,30,41.3,0,0,4.2,18.6 +2020-09-01T12:00,77.7,25,39.3,0,0,3.1,14.3 +2020-09-01T13:00,80,22,37.4,0,0,6.2,16.3 +2020-09-01T14:00,81.2,18,33.4,0,0,8.5,19.7 +2020-09-01T15:00,81.8,18,33.7,0,0,6,19.5 +2020-09-01T16:00,81.7,18,34.7,0,0,7.6,16.1 +2020-09-01T17:00,79.6,20,34.6,0,0,6.2,18.3 +2020-09-01T18:00,77.1,22,35.7,0,0,5.7,13 +2020-09-01T19:00,72.1,28,37.2,0,0,4.4,9.2 +2020-09-01T20:00,72.4,27,36.9,0,0,1.8,5.4 +2020-09-01T21:00,65.4,38,39.4,0,0,3.3,5.1 +2020-09-01T22:00,62.4,46,41.5,0,0,4.1,6.5 +2020-09-01T23:00,60.9,45,39.6,0,0,4.8,8.3 +2020-09-02T00:00,59.5,42,36.6,0,0,3.6,8.3 +2020-09-02T01:00,58.5,42,35.5,0,0,4.3,6.9 +2020-09-02T02:00,57.1,42,34.3,0,0,3.8,6.9 +2020-09-02T03:00,55.9,46,35.5,0,0,3.8,6.7 +2020-09-02T04:00,54.8,48,35.2,0,0,4.5,6.5 +2020-09-02T05:00,55.9,38,30.9,0,0,4,5.6 +2020-09-02T06:00,54.9,40,31.1,0,0,3.1,5.8 +2020-09-02T07:00,60.5,32,30.8,0,0,2.4,7.2 +2020-09-02T08:00,65.2,29,32.2,0,0,1.3,7.4 +2020-09-02T09:00,70.2,25,32.4,0,0,2.8,10.7 +2020-09-02T10:00,76.2,19,31.3,0,0,3.4,12.1 +2020-09-02T11:00,81.5,16,31.7,0,0,4.3,13.6 +2020-09-02T12:00,85.2,14,31.1,0,0,4.1,14.1 +2020-09-02T13:00,87.8,13,30.7,0,0,4.3,14.1 +2020-09-02T14:00,89.2,12,29.8,0,0,5.1,14.5 +2020-09-02T15:00,89.6,11,29.2,0,0,5.6,14.8 +2020-09-02T16:00,89.5,11,28.6,0,0,5,14.5 +2020-09-02T17:00,89,12,28.9,0,0,4.4,12.3 +2020-09-02T18:00,83.9,17,34.2,0,0,4,9.2 +2020-09-02T19:00,77.4,19,32,0,0,5,5.6 +2020-09-02T20:00,74.8,23,34.5,0,0,6.2,9.6 +2020-09-02T21:00,71.2,27,35.4,0,0,7.8,13.9 +2020-09-02T22:00,68.5,28,34,0,0,5.5,12.8 +2020-09-02T23:00,66.9,25,30.2,0,0,5.3,8.9 +2020-09-03T00:00,67.1,22,27.2,0,0,6.4,9.8 +2020-09-03T01:00,65.8,23,27.2,0,0,6.3,9.8 +2020-09-03T02:00,63.3,26,28,0,0,8.3,10.3 +2020-09-03T03:00,65.1,25,28.2,0,0,6.3,9.6 +2020-09-03T04:00,63.3,34,34.3,0,0,13.1,23.9 +2020-09-03T05:00,56,51,38.4,0,0,5.4,21.7 +2020-09-03T06:00,55.9,54,39.6,0,0,4.3,8.9 +2020-09-03T07:00,60.4,45,38.9,0,0,1.8,7.8 +2020-09-03T08:00,63.3,39,37.8,0,0,3,9.4 +2020-09-03T09:00,66.9,34,37.6,0,0,6.1,15 +2020-09-03T10:00,71.6,28,36.6,0,0,7,17.2 +2020-09-03T11:00,76.6,22,35.2,0,0,6.5,17.4 +2020-09-03T12:00,81.2,18,33.9,0,0,6.5,17 +2020-09-03T13:00,85.2,15,32.9,0,0,6.5,17 +2020-09-03T14:00,87.5,14,32.8,0,0,6.4,16.8 +2020-09-03T15:00,88.6,14,34,0,0,5.5,16.1 +2020-09-03T16:00,88.6,15,34.4,0,0,5,14.3 +2020-09-03T17:00,86.4,14,31.9,0,0,4.3,12.3 +2020-09-03T18:00,82.2,17,33.4,0,0,6.8,11.9 +2020-09-03T19:00,76.9,22,35.1,0,0,6.8,12.1 +2020-09-03T20:00,72,27,36.3,0,0,6.3,11.4 +2020-09-03T21:00,67.7,33,37.6,0,0,2.7,7.6 +2020-09-03T22:00,65.9,37,38.9,0,0,4.1,6 +2020-09-03T23:00,63.2,42,39.7,0,0,4.2,6.7 +2020-09-04T00:00,61.2,47,40.8,0,0,4.5,5.8 +2020-09-04T01:00,62.4,45,40.9,0,0,0.5,5.6 +2020-09-04T02:00,59.5,50,40.9,0,0,4.9,6.7 +2020-09-04T03:00,58.2,50,39.4,0,0,3.6,6.5 +2020-09-04T04:00,56.9,48,37.4,0,0,3.5,5.1 +2020-09-04T05:00,54.7,57,39.6,0,0,2.9,5.6 +2020-09-04T06:00,54.5,58,40.2,0,0,3.3,4.9 +2020-09-04T07:00,62,44,39.6,0,0,3.7,8.7 +2020-09-04T08:00,70.4,30,37.2,0,0,2.9,9.4 +2020-09-04T09:00,77.5,23,36.4,0,0,1,9.4 +2020-09-04T10:00,82.7,19,36,0,0,5.4,13.9 +2020-09-04T11:00,86,17,35.8,0,0,8.1,18.3 +2020-09-04T12:00,88.3,15,34.5,0,0,8.2,19.5 +2020-09-04T13:00,89.9,13,33.3,0,0,6.5,19 +2020-09-04T14:00,90.6,13,32.9,0,0,6.7,16.6 +2020-09-04T15:00,90.6,13,32.7,0,0,7.6,16.8 +2020-09-04T16:00,90,13,32.6,0,0,7.3,17 +2020-09-04T17:00,87.3,14,31.9,0,0,9.9,16.3 +2020-09-04T18:00,83.8,16,32.7,0,0,4.8,17.2 +2020-09-04T19:00,78.5,20,34.1,0,0,4.6,7.8 +2020-09-04T20:00,76.7,22,34.6,0,0,3,5.6 +2020-09-04T21:00,71.5,27,35.8,0,0,4.5,5.6 +2020-09-04T22:00,67.6,33,37.5,0,0,5.1,6 +2020-09-04T23:00,67.8,33,37.6,0,0,5.1,8.3 +2020-09-05T00:00,65,37,38,0,0,5.2,8.3 +2020-09-05T01:00,63.1,40,38.5,0,0,5.4,7.2 +2020-09-05T02:00,60.4,45,38.8,0,0,3,7.2 +2020-09-05T03:00,58.8,48,39.4,0,0,4.9,7.6 +2020-09-05T04:00,58.4,50,39.6,0,0,4,7.6 +2020-09-05T05:00,57.9,50,39.5,0,0,3.4,6.3 +2020-09-05T06:00,58,49,39,0,0,3.1,5.8 +2020-09-05T07:00,64.1,39,38.9,0,0,3.6,8.5 +2020-09-05T08:00,73.5,29,39.1,0,0,3.3,9.6 +2020-09-05T09:00,82.8,19,36.4,0,0,3.9,11.4 +2020-09-05T10:00,89.7,14,34.5,0,0,6.1,14.5 +2020-09-05T11:00,94.3,11,30.8,0,0,5.4,15.7 +2020-09-05T12:00,96.4,9,27.9,0,0,3.3,14.8 +2020-09-05T13:00,97.4,8,27.1,0,0,3.4,12.1 +2020-09-05T14:00,98.3,8,25.7,0,0,5.2,13.9 +2020-09-05T15:00,98.5,7,24.8,0,0,6.5,15.2 +2020-09-05T16:00,97.4,7,24.4,0,0,2.3,15 +2020-09-05T17:00,95,10,30.1,0,0,11.2,16.6 +2020-09-05T18:00,89.2,12,30.3,0,0,7.9,19 +2020-09-05T19:00,82.2,15,30.4,0,0,5.8,13 +2020-09-05T20:00,77.3,19,32.4,0,0,5.2,9.2 +2020-09-05T21:00,73,24,34,0,0,4.9,7.2 +2020-09-05T22:00,71.3,24,32.5,0,0,6.3,7.8 +2020-09-05T23:00,68.8,24,30.4,0,0,6.2,7.8 +2020-09-06T00:00,68.8,23,29.8,0,0,6.2,9.8 +2020-09-06T01:00,69.1,22,28.4,0,0,7.9,13 +2020-09-06T02:00,67.5,22,27.1,0,0,7.6,13 +2020-09-06T03:00,65,25,28,0,0,7.9,13.2 +2020-09-06T04:00,65.8,23,26.5,0,0,10.2,16.6 +2020-09-06T05:00,67.8,21,26.2,0,0,10.5,17.4 +2020-09-06T06:00,68.9,20,26.1,0,0,11.2,18.3 +2020-09-06T07:00,76.1,16,27,0,0,13,20.8 +2020-09-06T08:00,85.1,13,28.1,0,0,13.7,23.5 +2020-09-06T09:00,91.7,9,25.3,0,0,13.2,25.1 +2020-09-06T10:00,94.4,8,23.7,0,0,11.3,24.6 +2020-09-06T11:00,96.1,7,21.9,0,0,12,23.9 +2020-09-06T12:00,96.8,7,23.3,0,0,12.1,24.2 +2020-09-06T13:00,96.7,7,24.2,0,0,10.7,24.4 +2020-09-06T14:00,96.8,6,20.8,0,0,7.7,21.9 +2020-09-06T15:00,96.7,7,20.8,0,0,7.6,16.6 +2020-09-06T16:00,94.3,7,22.3,0,0,8.1,15.4 +2020-09-06T17:00,92.8,7,20.4,0,0,6.4,15.7 +2020-09-06T18:00,90.6,8,22.2,0,0,2.1,10.5 +2020-09-06T19:00,79.9,13,24.4,0,0,4.6,6.3 +2020-09-06T20:00,75.4,16,26.5,0,0,4,6.7 +2020-09-06T21:00,73.7,18,27.8,0,0,7.6,13 +2020-09-06T22:00,72,22,30.5,0,0,5.2,12.3 +2020-09-06T23:00,71,22,29.9,0,0,5.4,9.2 +2020-09-07T00:00,65.6,29,32.7,0,0,6.8,8.9 +2020-09-07T01:00,63.9,32,33.5,0,0,5.1,8.3 +2020-09-07T02:00,61.7,34,33,0,0,3,6.5 +2020-09-07T03:00,61.6,34,32.6,0,0,4.7,7.2 +2020-09-07T04:00,59.8,35,32.3,0,0,5.7,7.8 +2020-09-07T05:00,57.8,39,33,0,0,2.6,6.9 +2020-09-07T06:00,56.4,43,34.2,0,0,2.8,4.7 +2020-09-07T07:00,62.8,35,34.5,0,0,3.4,8.1 +2020-09-07T08:00,70.6,25,32.8,0,0,6,13.2 +2020-09-07T09:00,81,15,28.9,0,0,8.3,16.8 +2020-09-07T10:00,88.5,8,19.7,0,0,6.5,17.9 +2020-09-07T11:00,90.8,7,18.3,0,0,5.7,15.7 +2020-09-07T12:00,92.6,5,11.8,0,0,7.5,18.1 +2020-09-07T13:00,94,5,11.6,0,0,8.1,18.8 +2020-09-07T14:00,94.8,5,13.2,0,0,8.6,18.8 +2020-09-07T15:00,94.7,6,15.7,0,0,9.2,19.7 +2020-09-07T16:00,94.4,6,15.5,0,0,4.8,19.2 +2020-09-07T17:00,76.6,18,30.4,0,0,23,11.6 +2020-09-07T18:00,73.9,26,36.8,0,0,18.2,38 +2020-09-07T19:00,68.5,44,45.7,0,0,23.9,39.6 +2020-09-07T20:00,64,56,47.8,0,0,17.5,40 +2020-09-07T21:00,60.8,72,51.6,0.039,0,17.4,29.3 +2020-09-07T22:00,50.8,76,43.4,0.039,0,17.9,35.3 +2020-09-07T23:00,49.5,74,41.6,0.024,0,16.4,30.2 +2020-09-08T00:00,47,88,43.8,0.028,0,14.9,27.3 +2020-09-08T01:00,46.5,93,44.6,0.043,0,14.5,26.4 +2020-09-08T02:00,45.4,92,43.2,0.024,0,12.7,24.6 +2020-09-08T03:00,44.2,85,40,0.012,0,11.4,22.1 +2020-09-08T04:00,43.3,92,41,0.016,0,12,20.4 +2020-09-08T05:00,37.5,100,37.5,0.039,0,13.2,21.3 +2020-09-08T06:00,35.3,98,34.9,0.031,0.11,15.4,24.6 +2020-09-08T07:00,35.9,100,35.9,0.016,0.22,12.5,25.7 +2020-09-08T08:00,35.9,100,35.9,0.02,0.165,12.4,22.6 +2020-09-08T09:00,35.2,100,35.2,0.016,0.138,14.3,23.3 +2020-09-08T10:00,35.1,94,33.5,0.008,0.138,12.8,23.7 +2020-09-08T11:00,35.4,87,31.9,0.008,0.11,12.7,22.6 +2020-09-08T12:00,36.5,78,30.4,0.004,0.083,12.6,23.3 +2020-09-08T13:00,36.5,74,29,0.004,0.083,12.9,23 +2020-09-08T14:00,36.9,73,29.1,0,0.083,12.2,23.9 +2020-09-08T15:00,36.5,73,28.7,0,0.138,11.3,21.9 +2020-09-08T16:00,35.4,79,29.7,0,0.579,10.3,20.4 +2020-09-08T17:00,34.5,88,31.4,0,0.303,9.5,20.1 +2020-09-08T18:00,34.5,87,31,0,0.331,9.1,18.1 +2020-09-08T19:00,33.2,90,30.7,0,0.248,6,16.3 +2020-09-08T20:00,32.8,90,30.2,0,0.303,6.5,11.2 +2020-09-08T21:00,32.6,92,30.6,0,0.386,3.8,11.6 +2020-09-08T22:00,32.4,92,30.4,0,0.22,2.9,7.2 +2020-09-08T23:00,31.6,93,29.8,0,0.083,2.6,5.4 +2020-09-09T00:00,31.1,92,29.1,0,0.028,2.9,4.5 +2020-09-09T01:00,32,90,29.4,0,0.028,3.2,5.4 +2020-09-09T02:00,32.1,88,29,0,0.028,4.3,7.6 +2020-09-09T03:00,31.5,90,28.8,0,0.028,2.9,7.6 +2020-09-09T04:00,31.6,90,28.9,0,0.055,3.3,6.3 +2020-09-09T05:00,31.4,91,28.9,0,0.11,5.4,6.9 +2020-09-09T06:00,31.1,90,28.5,0,0.055,3.7,8.9 +2020-09-09T07:00,31.6,89,28.7,0,0.055,3.4,6.5 +2020-09-09T08:00,32.2,86,28.5,0,0.055,5.1,8.5 +2020-09-09T09:00,32.8,83,28.1,0,0.055,4.9,8.9 +2020-09-09T10:00,33.8,80,28.2,0,0.028,4.3,9.4 +2020-09-09T11:00,35.2,75,28.2,0,0,3.6,8.3 +2020-09-09T12:00,36.1,75,28.9,0,0,2.2,6.9 +2020-09-09T13:00,37.3,71,28.8,0,0,2.5,5.8 +2020-09-09T14:00,37.7,71,29,0,0,2.8,6.5 +2020-09-09T15:00,37.7,70,28.8,0,0,3.5,7.6 +2020-09-09T16:00,37.4,70,28.5,0,0,4.8,9.8 +2020-09-09T17:00,37.9,72,29.7,0,0,5.3,11.2 +2020-09-09T18:00,34,81,28.7,0,0,4,9.6 +2020-09-09T19:00,37.1,69,27.8,0,0,3.5,6.7 +2020-09-09T20:00,33.3,75,26.2,0,0,4.5,6.3 +2020-09-09T21:00,27.6,85,23.8,0,0,6.7,9.2 +2020-09-09T22:00,33.2,82,28.2,0,0,5.1,9.2 +2020-09-09T23:00,33.2,83,28.6,0,0,4.1,7.2 +2020-09-10T00:00,30.9,87,27.4,0,0,2,4.9 +2020-09-10T01:00,26.8,90,24.2,0,0,3.6,5.6 +2020-09-10T02:00,29.8,89,27,0,0,3.5,5.8 +2020-09-10T03:00,30.7,87,27.1,0,0.055,3.4,6.3 +2020-09-10T04:00,31.4,91,29,0,0.193,2.1,6 +2020-09-10T05:00,34.4,91,32.1,0,0.028,2.2,4 +2020-09-10T06:00,35.2,89,32.2,0,0,2.9,4.9 +2020-09-10T07:00,34,93,32.3,0,0,2.8,4.5 +2020-09-10T08:00,37.5,85,33.4,0,0,1.2,4.5 +2020-09-10T09:00,37.1,89,34.1,0,0,2.9,4.9 +2020-09-10T10:00,40.1,79,34.3,0,0,2.8,5.4 +2020-09-10T11:00,44.6,66,33.8,0,0,1.6,4.5 +2020-09-10T12:00,48.4,59,34.7,0,0,0.9,3.4 +2020-09-10T13:00,49.8,58,35.6,0,0,4.9,14.1 +2020-09-10T14:00,51.7,56,36.6,0,0,4.5,14.8 +2020-09-10T15:00,52.3,55,36.8,0,0,7.4,16.6 +2020-09-10T16:00,51.7,55,35.9,0,0,8.4,17.2 +2020-09-10T17:00,48,67,37.4,0,0,12.4,17 +2020-09-10T18:00,46.6,68,36.5,0,0,10.6,21.3 +2020-09-10T19:00,47.7,66,36.7,0,0,5.6,17.2 +2020-09-10T20:00,48.1,64,36.5,0,0,4.2,9.6 +2020-09-10T21:00,46.9,68,37,0,0,1.9,7.4 +2020-09-10T22:00,44.6,81,39,0,0,2.6,4 +2020-09-10T23:00,43.4,82,38.4,0,0,2.5,4.3 +2020-09-11T00:00,40.6,92,38.4,0,0,3.9,6.3 +2020-09-11T01:00,38,96,37,0,0,3.8,6.5 +2020-09-11T02:00,37.3,94,35.9,0,0,3.5,6.3 +2020-09-11T03:00,37.1,93,35.3,0,0,3.3,5.8 +2020-09-11T04:00,35.4,96,34.3,0,0,2.8,5.6 +2020-09-11T05:00,34,96,32.9,0,0,4.6,4.7 +2020-09-11T06:00,36.1,89,33,0,0,4.5,7.2 +2020-09-11T07:00,39.6,79,33.7,0,0,1.4,7.6 +2020-09-11T08:00,43.5,70,34.4,0,0,1.6,7.8 +2020-09-11T09:00,48,62,35.8,0,0,4.3,12.5 +2020-09-11T10:00,53.2,53,36.7,0,0,4,13 +2020-09-11T11:00,56.7,50,38,0,0,4.6,13.9 +2020-09-11T12:00,60.1,43,37.5,0,0,3,13.6 +2020-09-11T13:00,61.3,38,35.7,0,0,1.8,11.6 +2020-09-11T14:00,63.2,37,36.7,0,0,1.8,10.1 +2020-09-11T15:00,66.2,34,36.7,0,0,7.2,14.8 +2020-09-11T16:00,67.6,30,35.2,0,0,5.2,15.9 +2020-09-11T17:00,62.7,43,40.1,0,0,2.9,11.2 +2020-09-11T18:00,56.5,60,42.8,0,0,4.4,8.3 +2020-09-11T19:00,51.4,74,43.4,0,0,2.9,6 +2020-09-11T20:00,49.6,75,42,0,0,5.1,8.1 +2020-09-11T21:00,48,69,38.2,0,0,5.7,10.1 +2020-09-11T22:00,46,68,36,0,0,5.9,9.6 +2020-09-11T23:00,46.5,61,33.9,0,0,5.2,9.8 +2020-09-12T00:00,46.8,60,33.6,0,0,3.8,8.3 +2020-09-12T01:00,47.6,58,33.7,0,0,5.6,8.7 +2020-09-12T02:00,46.8,60,33.4,0,0,6.2,10.7 +2020-09-12T03:00,43.9,67,33.7,0,0,4.1,9.8 +2020-09-12T04:00,43.3,69,34,0,0,4.3,6.7 +2020-09-12T05:00,41.9,75,34.7,0,0,4.3,7.8 +2020-09-12T06:00,44,70,34.7,0,0,4.3,6.5 +2020-09-12T07:00,49.9,59,36.2,0,0,6.2,11 +2020-09-12T08:00,58.6,47,38.2,0,0,6.5,13.2 +2020-09-12T09:00,65.8,34,37,0,0,4.5,13.4 +2020-09-12T10:00,70.2,31,37.8,0,0,2.2,11.6 +2020-09-12T11:00,72.9,24,34.3,0,0,1.8,9.4 +2020-09-12T12:00,74.9,19,30.3,0,0,1.9,9.6 +2020-09-12T13:00,76.2,17,28.5,0,0,2.6,10.1 +2020-09-12T14:00,76.7,18,29.5,0,0,4.5,12.1 +2020-09-12T15:00,76.7,19,31,0,0,5.2,12.8 +2020-09-12T16:00,76.3,20,32.2,0,0,5.2,12.5 +2020-09-12T17:00,74.8,30,41,0,0,3.3,11.2 +2020-09-12T18:00,70.2,34,40.1,0,0,4.7,6.3 +2020-09-12T19:00,70.3,30,37.8,0,0,1.8,5.6 +2020-09-12T20:00,64.3,38,38,0,0,2.9,2.7 +2020-09-12T21:00,60.2,45,39,0,0,3.7,5.8 +2020-09-12T22:00,53.3,61,40.1,0,0,4,6 +2020-09-12T23:00,51.2,65,39.9,0,0,4.4,6 +2020-09-13T00:00,49.1,70,39.8,0,0,4.1,5.8 +2020-09-13T01:00,47.7,74,39.9,0,0,5.2,6.3 +2020-09-13T02:00,47.1,74,39.3,0,0,4.9,6 +2020-09-13T03:00,46.4,73,38.4,0,0,4.8,6.5 +2020-09-13T04:00,46.1,71,37.2,0,0,3.9,6.3 +2020-09-13T05:00,45.9,68,36.1,0,0,3.9,6 +2020-09-13T06:00,45.8,68,35.8,0,0,3.4,6.5 +2020-09-13T07:00,51.4,59,37.3,0,0,4.9,9.6 +2020-09-13T08:00,60.4,48,40.4,0,0,2.7,9.6 +2020-09-13T09:00,68.3,37,41.3,0,0,1.9,8.5 +2020-09-13T10:00,74,27,38.1,0,0,1.4,8.7 +2020-09-13T11:00,78.1,22,35.9,0,0,2.7,10.3 +2020-09-13T12:00,80.4,17,32.1,0,0,4.8,13 +2020-09-13T13:00,81.7,15,28.8,0,0,5.5,14.1 +2020-09-13T14:00,82.1,13,27.1,0,0,5.3,14.3 +2020-09-13T15:00,82,13,26.4,0,0,4.5,13.2 +2020-09-13T16:00,81.3,13,26.4,0,0,4.9,11.4 +2020-09-13T17:00,79,20,34.3,0,0,4.3,10.5 +2020-09-13T18:00,69.5,30,37,0,0,6.2,7.6 +2020-09-13T19:00,64.4,39,38.8,0,0,5.9,8.3 +2020-09-13T20:00,60.8,48,40.7,0,0,4.1,7.4 +2020-09-13T21:00,56.9,57,41.9,0,0,1.3,5.6 +2020-09-13T22:00,54,62,41.1,0,0,2.4,3.6 +2020-09-13T23:00,52.1,64,40.4,0,0,2.9,4.7 +2020-09-14T00:00,50,70,40.6,0,0,2.9,5.1 +2020-09-14T01:00,48.7,75,41,0,0,2.9,4.7 +2020-09-14T02:00,47.6,78,40.9,0,0,3.2,5.4 +2020-09-14T03:00,46.6,78,40.2,0,0,2.9,5.4 +2020-09-14T04:00,46.5,74,38.7,0,0,4.3,5.6 +2020-09-14T05:00,47.4,66,36.5,0,0,4.5,6 +2020-09-14T06:00,46.9,69,37.3,0,0,4.5,5.1 +2020-09-14T07:00,53.5,54,37.1,0,0,3.3,7.4 +2020-09-14T08:00,61.3,43,38.8,0,0,1.6,7.6 +2020-09-14T09:00,68.5,32,37.5,0,0,1.5,8.3 +2020-09-14T10:00,74.5,24,35.8,0,0,0.7,8.5 +2020-09-14T11:00,78.9,20,34.3,0,0,2.5,10.3 +2020-09-14T12:00,82,17,33,0,0,3,11.4 +2020-09-14T13:00,83.7,15,31.8,0,0,3,11.4 +2020-09-14T14:00,84.5,15,31,0,0,2,11.2 +2020-09-14T15:00,84.6,14,29.8,0,0,0.6,9.6 +2020-09-14T16:00,84.2,13,28.5,0,0,2.8,7.8 +2020-09-14T17:00,82.3,39,54.9,0,0,2.9,8.5 +2020-09-14T18:00,73.2,30,40.2,0,0,5.3,7.4 +2020-09-14T19:00,67.1,39,41.2,0,0,6.6,8.1 +2020-09-14T20:00,68.3,30,35.3,0,0,8.3,13.6 +2020-09-14T21:00,63.2,39,37.6,0,0,6.7,13.6 +2020-09-14T22:00,59.6,46,38.8,0,0,4.9,11.2 +2020-09-14T23:00,58.1,47,37.8,0,0,5.8,9.2 +2020-09-15T00:00,57.3,44,35.7,0,0,5.4,9.4 +2020-09-15T01:00,54.3,48,35.2,0,0,6.1,8.7 +2020-09-15T02:00,53.1,49,34.2,0,0,5.2,7.2 +2020-09-15T03:00,52.9,46,32.8,0,0,5.2,6.9 +2020-09-15T04:00,52.3,46,32.2,0,0,5.4,6.9 +2020-09-15T05:00,51.9,46,31.6,0,0,5.5,7.2 +2020-09-15T06:00,51.4,50,33.4,0,0,5.8,7.8 +2020-09-15T07:00,59.1,39,34,0,0,3.6,7.2 +2020-09-15T08:00,67.2,32,36.6,0,0,0.9,7.2 +2020-09-15T09:00,75.6,25,37.2,0,0,1.8,7.8 +2020-09-15T10:00,81.4,15,30,0,0,4.7,12.3 +2020-09-15T11:00,84,11,24.1,0,0,7.4,16.6 +2020-09-15T12:00,85.2,10,23,0,0,7.4,17.2 +2020-09-15T13:00,86,10,23.2,0,0,6.9,17 +2020-09-15T14:00,86.3,11,25.3,0,0,7,16.6 +2020-09-15T15:00,86.1,11,24.6,0,0,7.4,16.1 +2020-09-15T16:00,85.4,10,23.6,0,0,6,15.9 +2020-09-15T17:00,83.3,11,23.3,0,0,7.8,12.5 +2020-09-15T18:00,75.9,20,31.4,0,0,6.6,13.2 +2020-09-15T19:00,71,29,37.1,0,0,6.6,11 +2020-09-15T20:00,67,32,36.2,0,0,4.6,10.7 +2020-09-15T21:00,64,34,34.9,0,0,5.9,7.8 +2020-09-15T22:00,61.5,37,35,0,0,6.3,7.8 +2020-09-15T23:00,59.5,40,35.2,0,0,5.1,7.6 +2020-09-16T00:00,57.5,43,35.2,0,0,5.5,6.7 +2020-09-16T01:00,57.4,42,34.4,0,0,4.2,6.5 +2020-09-16T02:00,57.6,41,33.8,0,0,3.3,5.4 +2020-09-16T03:00,55.4,45,34.3,0,0,3.8,4.9 +2020-09-16T04:00,55.4,47,35.4,0,0,3.8,4.9 +2020-09-16T05:00,54.3,45,33.4,0,0,6.7,5.6 +2020-09-16T06:00,55,44,33.5,0,0,6.3,9.6 +2020-09-16T07:00,61.5,41,37.6,0,0,9,14.1 +2020-09-16T08:00,65.6,42,41.6,0,0,9.9,18.3 +2020-09-16T09:00,67.5,39,41.9,0,0,8.3,19 +2020-09-16T10:00,69.8,35,41,0,0,7.6,17.9 +2020-09-16T11:00,72.1,31,40.2,0,0,7.6,17.9 +2020-09-16T12:00,74.2,27,38.4,0,0,7.2,18.1 +2020-09-16T13:00,75.7,25,37.3,0,0,6.1,17.4 +2020-09-16T14:00,76.6,24,37.2,0,0,4.8,16.1 +2020-09-16T15:00,77.2,24,37.5,0,0,3.9,14.1 +2020-09-16T16:00,76.8,25,37.9,0,0,3.6,11.9 +2020-09-16T17:00,74,26,37,0,0,3.1,10.3 +2020-09-16T18:00,70.1,33,39.3,0,0,3.6,6.5 +2020-09-16T19:00,65.8,41,41.4,0,0,4.7,7.6 +2020-09-16T20:00,63.3,49,43.7,0,0,6.4,10.3 +2020-09-16T21:00,60.3,55,44.2,0,0,4.5,10.5 +2020-09-16T22:00,57.3,62,44.2,0,0,3.6,7.2 +2020-09-16T23:00,54.5,69,44.5,0,0,3.1,5.6 +2020-09-17T00:00,53.2,72,44.3,0,0,3.2,5.4 +2020-09-17T01:00,52.1,72,43.3,0,0,3,5.6 +2020-09-17T02:00,50.9,73,42.4,0,0,3.8,4.7 +2020-09-17T03:00,50.3,71,41.2,0,0,3.8,4.9 +2020-09-17T04:00,49,74,40.9,0,0,4.3,5.1 +2020-09-17T05:00,48.4,71,39.3,0,0,4.7,5.6 +2020-09-17T06:00,48.1,70,38.8,0,0,4.5,6.3 +2020-09-17T07:00,54.8,56,39.3,0,0,3.6,7.6 +2020-09-17T08:00,63.2,43,40.3,0,0,3.5,9.6 +2020-09-17T09:00,72.1,29,37.7,0,0,2.9,10.1 +2020-09-17T10:00,78.8,19,33,0,0,2.9,10.1 +2020-09-17T11:00,82.9,13,27.9,0,0,6.9,15.9 +2020-09-17T12:00,84.9,11,24.7,0,0,9,19.7 +2020-09-17T13:00,86.1,10,23.4,0,0,8.9,19.7 +2020-09-17T14:00,86,10,22.4,0,0,9.9,20.4 +2020-09-17T15:00,85.7,10,23.5,0,0,8.7,20.1 +2020-09-17T16:00,84.9,11,24.8,0,0,7.6,18.1 +2020-09-17T17:00,82,16,30.8,0,0,2.2,15 +2020-09-17T18:00,78.8,15,27.1,0,0,3.4,4.7 +2020-09-17T19:00,75.7,16,26.5,0,0,3.1,4.5 +2020-09-17T20:00,69.2,22,28.8,0,0,2.5,3.8 +2020-09-17T21:00,66,32,35.7,0,0,10.3,15 +2020-09-17T22:00,63.7,36,36.5,0,0,10.4,17.9 +2020-09-17T23:00,62.2,41,38.2,0,0,6.3,17.9 +2020-09-18T00:00,59.4,49,40.3,0,0,4.7,10.1 +2020-09-18T01:00,57.5,55,41.5,0,0,4.2,7.4 +2020-09-18T02:00,53.5,64,41.5,0,0,2.3,5.1 +2020-09-18T03:00,51.7,67,41.3,0,0,1.9,3.6 +2020-09-18T04:00,49.8,73,41.4,0,0,2.9,4 +2020-09-18T05:00,48.7,76,41.6,0,0,2.4,4.5 +2020-09-18T06:00,48,78,41.4,0,0,2.4,4.3 +2020-09-18T07:00,53.4,64,41.6,0,0,2.5,6.7 +2020-09-18T08:00,59.5,50,41,0,0,1.3,7.6 +2020-09-18T09:00,64.9,39,39.5,0,0,2.4,9.8 +2020-09-18T10:00,71.2,31,38.8,0,0,2.7,11 +2020-09-18T11:00,77,26,39.4,0,0,4.7,13.6 +2020-09-18T12:00,81.8,22,38.8,0,0,5.4,15 +2020-09-18T13:00,85.1,15,32,0,0,4,15 +2020-09-18T14:00,86.3,12,27.6,0,0,4.3,13 +2020-09-18T15:00,86.2,13,30,0,0,7.3,15.9 +2020-09-18T16:00,84.5,16,33.4,0,0,9.5,18.3 +2020-09-18T17:00,76.2,27,39.4,0,0,7.1,17.9 +2020-09-18T18:00,73,32,41.5,0,0,2.1,11.4 +2020-09-18T19:00,72.8,33,41.8,0,0,2.8,3.4 +2020-09-18T20:00,67.9,42,43.8,0,0,4.3,4.9 +2020-09-18T21:00,66.9,43,43.8,0,0,2.1,4.9 +2020-09-18T22:00,62.1,50,43.2,0,0,3.6,5.4 +2020-09-18T23:00,60.1,57,44.7,0,0,1.8,5.1 +2020-09-19T00:00,58,63,45.3,0,0,2.4,3.8 +2020-09-19T01:00,57.8,61,44.4,0,0,3.5,5.8 +2020-09-19T02:00,56.7,55,40.6,0,0,3.6,5.8 +2020-09-19T03:00,56.2,50,37.9,0,0,3.5,5.8 +2020-09-19T04:00,55.4,49,36.5,0,0,3.5,5.6 +2020-09-19T05:00,56.6,45,35.2,0,0,3.8,5.8 +2020-09-19T06:00,54.4,45,33.6,0,0,4.3,6.9 +2020-09-19T07:00,59.9,37,33.6,0,0,5.4,9.6 +2020-09-19T08:00,68.8,30,36.1,0,0,3.4,9.6 +2020-09-19T09:00,78.5,21,35.3,0,0,1.8,9.2 +2020-09-19T10:00,83.8,13,28.5,0,0,2.1,9.2 +2020-09-19T11:00,85.7,12,27.5,0,0,2.3,10.5 +2020-09-19T12:00,86.7,11,26.3,0,0,2.1,10.5 +2020-09-19T13:00,87.8,10,25.4,0,0,4.6,12.5 +2020-09-19T14:00,87.8,10,25.4,0,0,5.9,14.8 +2020-09-19T15:00,85.8,11,26.2,0,0,8.5,16.6 +2020-09-19T16:00,84.3,13,28.9,0,0,13.2,23.3 +2020-09-19T17:00,82.6,15,30,0,0,7.5,24.6 +2020-09-19T18:00,75.8,23,35.2,0,0,5.3,14.3 +2020-09-19T19:00,71,29,37,0,0,5.6,8.5 +2020-09-19T20:00,65.9,37,39,0,0,4.4,9.4 +2020-09-19T21:00,62.8,43,40,0,0,4.7,9.6 +2020-09-19T22:00,60.6,51,42.2,0,0,6.1,10.3 +2020-09-19T23:00,58.2,54,41.8,0,0,4,10.7 +2020-09-20T00:00,57.3,52,39.7,0,0,4.5,6.9 +2020-09-20T01:00,55.4,54,39.2,0,0,4.7,6 +2020-09-20T02:00,56.8,47,36.6,0,0,5.6,9.4 +2020-09-20T03:00,55.1,49,36.1,0,0,4.7,9.2 +2020-09-20T04:00,56.8,45,36,0,0,1.6,5.6 +2020-09-20T05:00,52.6,55,36.9,0,0,4.5,4.9 +2020-09-20T06:00,52.2,56,37.1,0,0,4.7,6 +2020-09-20T07:00,58.6,44,36.6,0,0,2.6,6.7 +2020-09-20T08:00,66.2,34,37.2,0,0,3.6,8.9 +2020-09-20T09:00,72.1,25,34.4,0,0,7.4,15 +2020-09-20T10:00,76.6,21,34,0,0,8,17.9 +2020-09-20T11:00,79.2,21,35.6,0,0,4.9,17.4 +2020-09-20T12:00,82.3,17,33.7,0,0,1.7,13.6 +2020-09-20T13:00,83.6,16,32.6,0,0,1.4,9.8 +2020-09-20T14:00,85.3,14,31.3,0,0,1.1,9.6 +2020-09-20T15:00,84.8,14,30.8,0,0,7.9,15.9 +2020-09-20T16:00,82.5,18,34.5,0,0,9.7,18.3 +2020-09-20T17:00,80.2,20,35.7,0,0,2.9,18.1 +2020-09-20T18:00,78.1,22,36,0,0,3,5.1 +2020-09-20T19:00,69.7,31,37.9,0,0,3.8,4.5 +2020-09-20T20:00,65.4,39,40.1,0,0,3.5,6 +2020-09-20T21:00,61.8,44,39.9,0,0,6.2,9.8 +2020-09-20T22:00,60.9,43,38.1,0,0,6.1,10.3 +2020-09-20T23:00,59,46,38.4,0,0,4.7,10.1 +2020-09-21T00:00,57.7,51,39.5,0,0,5.5,7.4 +2020-09-21T01:00,57.1,49,38.3,0,0,3.4,6.9 +2020-09-21T02:00,54.9,52,37.7,0,0,4.7,7.8 +2020-09-21T03:00,53.6,53,37,0,0,3.9,8.1 +2020-09-21T04:00,52.4,56,37,0,0,3.8,6.5 +2020-09-21T05:00,52.1,60,38.7,0,0,4.3,4.9 +2020-09-21T06:00,50.9,66,39.8,0,0,4.1,6.7 +2020-09-21T07:00,56.8,54,40.5,0,0,4.8,9.2 +2020-09-21T08:00,64.1,41,40.2,0,0,3,9.4 +2020-09-21T09:00,71.6,28,36.8,0,0,2.4,9.6 +2020-09-21T10:00,78.1,21,34.4,0,0,2.4,10.1 +2020-09-21T11:00,82.8,16,31.7,0,0,3.1,11.4 +2020-09-21T12:00,84.7,14,29.7,0,0,2.7,11.4 +2020-09-21T13:00,85.6,13,29.1,0,0,3.6,12.1 +2020-09-21T14:00,86.2,13,28.9,0,0,6.7,15.2 +2020-09-21T15:00,85.9,13,29.2,0,0,7,16.1 +2020-09-21T16:00,84.7,14,29.7,0,0,4.8,15.2 +2020-09-21T17:00,79.2,20,35.1,0,0,9.9,10.1 +2020-09-21T18:00,73.9,27,37.5,0,0,3.1,16.3 +2020-09-21T19:00,69.6,32,38.6,0,0,6.3,9.8 +2020-09-21T20:00,67.3,34,37.9,0,0,4.6,10.3 +2020-09-21T21:00,66.4,35,37.9,0,0,6.6,10.3 +2020-09-21T22:00,63.8,38,37.9,0,0,5.8,10.7 +2020-09-21T23:00,61,43,38.6,0,0,4.6,9.4 +2020-09-22T00:00,59.1,47,39,0,0,4.1,7.2 +2020-09-22T01:00,55.9,54,39.7,0,0,4.9,6.9 +2020-09-22T02:00,54.2,58,39.6,0,0,4,5.8 +2020-09-22T03:00,53.9,57,39,0,0,4.1,5.1 +2020-09-22T04:00,53.2,57,38.2,0,0,4.1,4.9 +2020-09-22T05:00,54,53,37.3,0,0,3.8,5.8 +2020-09-22T06:00,52.7,59,38.8,0,0,3.8,5.4 +2020-09-22T07:00,58.6,48,38.8,0,0,6.4,11 +2020-09-22T08:00,66.7,37,39.9,0,0,3.4,11.2 +2020-09-22T09:00,73,28,37.7,0,0,5.8,13 +2020-09-22T10:00,79.4,21,35.8,0,0,7.2,15.7 +2020-09-22T11:00,82.6,18,34.3,0,0,8.2,18.6 +2020-09-22T12:00,83.3,16,33.1,0,0,5.9,18.1 +2020-09-22T13:00,82.3,18,34.1,0,0,10.3,21.3 +2020-09-22T14:00,82.9,16,31.6,0,0,4.3,20.8 +2020-09-22T15:00,83.5,14,29,0,0,1.8,12.1 +2020-09-22T16:00,82.9,13,27.9,0,0,1.8,9.2 +2020-09-22T17:00,80.8,16,29.9,0,0,3.6,7.8 +2020-09-22T18:00,75.1,22,34.2,0,0,4,6.5 +2020-09-22T19:00,72.9,27,37,0,0,7.8,12.3 +2020-09-22T20:00,69.2,31,37.4,0,0,9.5,15.4 +2020-09-22T21:00,67.9,32,37.1,0,0,7.6,15.7 +2020-09-22T22:00,65.1,36,37.8,0,0,4.3,12.8 +2020-09-22T23:00,62.5,40,37.7,0,0,4.9,7.8 +2020-09-23T00:00,59.8,42,37,0,0,7.2,8.1 +2020-09-23T01:00,61.6,40,36.9,0,0,4.3,8.5 +2020-09-23T02:00,58,46,37.1,0,0,6,8.1 +2020-09-23T03:00,58.7,44,37,0,0,5.2,7.8 +2020-09-23T04:00,57.2,47,37.2,0,0,8.1,9.6 +2020-09-23T05:00,60.1,44,38,0,0,4.7,9.8 +2020-09-23T06:00,57.8,49,38.6,0,0,4,6.7 +2020-09-23T07:00,61.2,44,38.8,0,0,2.4,6 +2020-09-23T08:00,67.2,37,39.7,0,0,2.7,8.5 +2020-09-23T09:00,71.7,31,39.2,0,0,6.3,12.8 +2020-09-23T10:00,77,21,34.3,0,0,4.5,14.5 +2020-09-23T11:00,79.5,17,31.4,0,0,0.8,12.8 +2020-09-23T12:00,80.7,15,29.5,0,0,2.3,11 +2020-09-23T13:00,82.1,14,28.3,0,0,2,11.2 +2020-09-23T14:00,82.5,14,28.1,0,0,2.7,10.7 +2020-09-23T15:00,82.4,13,27.1,0,0,4.7,12.8 +2020-09-23T16:00,82,13,26,0,0,3.2,12.8 +2020-09-23T17:00,80.9,15,28.9,0,0,2.2,9.2 +2020-09-23T18:00,75.7,19,31,0,0,4.3,5.1 +2020-09-23T19:00,70.3,24,31.6,0,0,5.1,6.5 +2020-09-23T20:00,68.2,27,32.8,0,0,4,6.5 +2020-09-23T21:00,64.9,32,34.4,0,0,4.5,7.2 +2020-09-23T22:00,61.6,35,33.7,0,0,5.2,7.2 +2020-09-23T23:00,59.7,34,31.1,0,0,5.7,7.8 +2020-09-24T00:00,58.5,34,30.1,0,0,4.5,7.4 +2020-09-24T01:00,56.2,36,29.9,0,0,6.7,8.1 +2020-09-24T02:00,55.4,37,29.7,0,0,6.4,8.3 +2020-09-24T03:00,54.1,40,30.1,0,0,6.5,8.1 +2020-09-24T04:00,54.7,39,30.4,0,0,4.9,7.8 +2020-09-24T05:00,54.1,43,32.3,0,0,4.4,7.4 +2020-09-24T06:00,52.7,45,32.1,0,0,5,6.9 +2020-09-24T07:00,59.5,36,32.8,0,0,5.2,9.2 +2020-09-24T08:00,67.8,28,33.4,0,0,5,11.2 +2020-09-24T09:00,75.9,20,31.5,0,0,5,12.8 +2020-09-24T10:00,80.5,16,29.6,0,0,4.1,12.5 +2020-09-24T11:00,83.6,14,28.5,0,0,3.9,12.8 +2020-09-24T12:00,85.9,12,27.5,0,0,3.2,12.5 +2020-09-24T13:00,87.8,11,26.6,0,0,2.7,11.9 +2020-09-24T14:00,89,10,25.8,0,0,2.6,11 +2020-09-24T15:00,89.5,10,25.3,0,0,3.4,10.5 +2020-09-24T16:00,89,10,24.5,0,0,4.7,10.7 +2020-09-24T17:00,85.2,16,34.7,0,0,2.9,10.5 +2020-09-24T18:00,83.7,12,25.3,0,0,3.4,5.1 +2020-09-24T19:00,73.5,18,27.2,0,0,5.4,5.6 +2020-09-24T20:00,67.4,25,30.6,0,0,3.8,7.6 +2020-09-24T21:00,63.1,33,33.7,0,0,4.1,6.9 +2020-09-24T22:00,62.8,35,34.5,0,0,4.6,7.8 +2020-09-24T23:00,60.7,37,34.3,0,0,4.1,8.1 +2020-09-25T00:00,59.4,38,33.5,0,0,4.3,7.4 +2020-09-25T01:00,58.6,37,32.6,0,0,4.4,7.2 +2020-09-25T02:00,57.2,39,32.3,0,0,5.4,7.2 +2020-09-25T03:00,55.5,40,31.6,0,0,6.4,7.8 +2020-09-25T04:00,54,42,31.4,0,0,6.5,8.1 +2020-09-25T05:00,53.7,44,32.5,0,0,5.1,7.8 +2020-09-25T06:00,53.1,45,32.3,0,0,4.9,7.2 +2020-09-25T07:00,60.5,35,32.5,0,0,5.1,8.5 +2020-09-25T08:00,69.4,27,33.9,0,0,2,9.8 +2020-09-25T09:00,71.6,24,33.4,0,0,12,22.1 +2020-09-25T10:00,75.6,19,30.7,0,0,6.6,22.4 +2020-09-25T11:00,79.5,17,30.7,0,0,6.7,15.9 +2020-09-25T12:00,82.6,15,29.7,0,0,3.2,15.9 +2020-09-25T13:00,85.6,13,28.5,0,0,2.8,11 +2020-09-25T14:00,88.8,11,28.1,0,0,4.6,12.5 +2020-09-25T15:00,89.3,11,27.4,0,0,3,12.8 +2020-09-25T16:00,89.3,11,27.1,0,0,3.1,9.8 +2020-09-25T17:00,83.9,16,32.9,0,0,9.8,9.2 +2020-09-25T18:00,76.4,21,34,0,0,6.4,16.3 +2020-09-25T19:00,71.6,25,34.2,0,0,4.7,7.4 +2020-09-25T20:00,70.2,27,34.8,0,0,4.6,6.9 +2020-09-25T21:00,66,32,35.6,0,0,4.5,6.7 +2020-09-25T22:00,64.9,31,33.7,0,0,6.8,11.2 +2020-09-25T23:00,63.2,31,32.2,0,0,5.9,11.6 +2020-09-26T00:00,62.7,30,31,0,0,6.7,11.2 +2020-09-26T01:00,61.8,31,30.7,0,0,6.1,11.2 +2020-09-26T02:00,61,32,30.8,0,0,4.8,10.3 +2020-09-26T03:00,61.2,31,30.5,0,0,6,9.6 +2020-09-26T04:00,60.7,31,29.8,0,0,5.1,9.8 +2020-09-26T05:00,59.4,34,30.7,0,0,5.9,9.6 +2020-09-26T06:00,58.8,34,30.4,0,0,4.9,8.5 +2020-09-26T07:00,64.1,28,30.4,0,0,7.8,11.9 +2020-09-26T08:00,74.7,20,30.4,0,0,8.9,15.9 +2020-09-26T09:00,81.4,14,28.4,0,0,12.6,22.4 +2020-09-26T10:00,84.2,11,24.9,0,0,13.4,26.2 +2020-09-26T11:00,86.5,10,24.3,0,0,6.9,25.3 +2020-09-26T12:00,88.3,9,22.6,0,0,9,19 +2020-09-26T13:00,89.7,9,22.3,0,0,9.7,20.6 +2020-09-26T14:00,89.8,9,22.6,0,0,11.2,21.7 +2020-09-26T15:00,89.2,9,22.7,0,0,11,22.1 +2020-09-26T16:00,87.9,9,23,0,0,12.2,22.4 +2020-09-26T17:00,79,15,26.8,0,0,13.9,21.9 +2020-09-26T18:00,73.8,18,27.8,0,0,6.6,22.8 +2020-09-26T19:00,71.3,20,28.2,0,0,6.5,12.3 +2020-09-26T20:00,68,24,29.9,0,0,5,10.5 +2020-09-26T21:00,64.3,28,30.4,0,0,5.7,8.5 +2020-09-26T22:00,63.3,32,33.2,0,0,4.5,10.5 +2020-09-26T23:00,62.4,35,34.6,0,0,3.9,7.2 +2020-09-27T00:00,58.7,41,35.1,0,0,5,5.6 +2020-09-27T01:00,56.7,44,34.8,0,0,5.2,6.9 +2020-09-27T02:00,56.3,45,35,0,0,4.8,6.7 +2020-09-27T03:00,57.6,42,34.6,0,0,2.4,6 +2020-09-27T04:00,57,43,34.8,0,0,2.3,3.1 +2020-09-27T05:00,53.1,59,38.9,0,0,5.1,3.8 +2020-09-27T06:00,52.6,63,40.4,0,0,4.9,6.7 +2020-09-27T07:00,54.8,59,40.6,0,0,11.2,19 +2020-09-27T08:00,54.8,55,39.1,0,0,15.5,25.7 +2020-09-27T09:00,50.2,49,31.8,0,0,15.5,31.5 +2020-09-27T10:00,48.7,53,32.2,0,0,8.5,27.3 +2020-09-27T11:00,49.8,51,32.2,0,0,4.5,16.1 +2020-09-27T12:00,53.4,45,32.5,0,0,4.7,13.2 +2020-09-27T13:00,56.3,39,31.9,0,0,6.3,15.4 +2020-09-27T14:00,57.5,37,31.2,0,0,11.4,21.3 +2020-09-27T15:00,54.3,42,31.6,0,0,13.8,26.4 +2020-09-27T16:00,52.4,45,31.6,0,0,10.1,25.3 +2020-09-27T17:00,48.5,63,36.3,0,0,14.8,18.8 +2020-09-27T18:00,47.2,62,34.8,0.012,0,8.1,24.6 +2020-09-27T19:00,46.9,66,36.2,0.02,0,4.3,14.8 +2020-09-27T20:00,46.1,71,37.1,0.016,0,4.8,8.7 +2020-09-27T21:00,45.3,78,38.8,0,0,5.8,9.8 +2020-09-27T22:00,45.9,76,38.8,0,0,6.3,11 +2020-09-27T23:00,45.9,72,37.5,0,0,5.4,10.5 +2020-09-28T00:00,44.2,69,34.6,0,0,5,9.2 +2020-09-28T01:00,41.6,68,31.8,0,0,3.9,8.5 +2020-09-28T02:00,40.2,71,31.5,0,0,4.4,6 +2020-09-28T03:00,40.7,68,30.8,0,0,4.1,6 +2020-09-28T04:00,39.6,65,28.9,0,0,4.4,6 +2020-09-28T05:00,42.5,59,29,0,0,4.3,5.6 +2020-09-28T06:00,42.4,60,29.3,0,0,3.6,6.9 +2020-09-28T07:00,44.5,57,30.2,0,0,3.8,8.5 +2020-09-28T08:00,49,40,25.6,0,0,2,8.9 +2020-09-28T09:00,51.7,30,21.1,0,0,0.4,8.5 +2020-09-28T10:00,54.2,24,18.5,0,0,2.5,10.7 +2020-09-28T11:00,57,20,16.6,0,0,6,15.9 +2020-09-28T12:00,59.7,17,14.4,0,0,9,20.1 +2020-09-28T13:00,61.2,16,15.2,0,0,9.2,21 +2020-09-28T14:00,61.7,16,14.5,0,0,6.8,20.4 +2020-09-28T15:00,61.9,15,13,0,0,5.6,17 +2020-09-28T16:00,61.6,13,10.9,0,0,5.6,14.3 +2020-09-28T17:00,59.8,15,12.4,0,0,4.1,13 +2020-09-28T18:00,58.3,17,13.3,0,0,1.6,7.2 +2020-09-28T19:00,53.2,24,17.6,0,0,4.6,6.7 +2020-09-28T20:00,50.8,28,19.2,0,0,6.6,11.4 +2020-09-28T21:00,47.8,35,21.2,0,0,4.5,11.2 +2020-09-28T22:00,45.5,42,23.5,0,0,5.1,8.5 +2020-09-28T23:00,45.5,40,22.5,0,0,5.1,9.2 +2020-09-29T00:00,45.8,33,18.4,0,0,4.8,8.1 +2020-09-29T01:00,44.9,30,15.4,0,0,6,7.6 +2020-09-29T02:00,44,31,15.5,0,0,5.9,7.8 +2020-09-29T03:00,43.2,34,16.5,0,0,6,7.4 +2020-09-29T04:00,42.8,34,16.6,0,0,6.4,7.6 +2020-09-29T05:00,45.4,32,16.9,0,0,7.8,8.1 +2020-09-29T06:00,44.5,35,18.6,0,0,7.9,9.6 +2020-09-29T07:00,52.6,28,20.7,0,0,5.4,9.4 +2020-09-29T08:00,60.8,23,22.9,0,0,5.2,11.2 +2020-09-29T09:00,69,18,24.3,0,0,4.3,11.9 +2020-09-29T10:00,73.8,17,25.9,0,0,4.1,12.3 +2020-09-29T11:00,76,16,26.4,0,0,5.2,14.1 +2020-09-29T12:00,78,15,25.8,0,0,5.4,15.2 +2020-09-29T13:00,79.7,13,24.4,0,0,4.1,14.8 +2020-09-29T14:00,80.7,12,23.9,0,0,2.8,12.8 +2020-09-29T15:00,80.8,12,23.9,0,0,1.6,11 +2020-09-29T16:00,80.1,12,23.7,0,0,2.6,8.5 +2020-09-29T17:00,75.2,18,28.1,0,0,2.7,8.5 +2020-09-29T18:00,70,19,25.9,0,0,2.9,5.1 +2020-09-29T19:00,62.4,28,28.9,0,0,3.7,5.1 +2020-09-29T20:00,58.1,34,30.1,0,0,4.8,7.6 +2020-09-29T21:00,59.8,24,23,0,0,7.2,11.6 +2020-09-29T22:00,61.8,16,15.4,0,0,6.9,11.6 +2020-09-29T23:00,56.8,20,16.1,0,0,8.9,11.2 +2020-09-30T00:00,62.8,16,15.6,0,0,5.6,11 +2020-09-30T01:00,52.5,23,15.6,0,0,8,9.4 +2020-09-30T02:00,51.4,23,15.3,0,0,8.5,10.5 +2020-09-30T03:00,52.3,23,15.2,0,0,7.9,11.2 +2020-09-30T04:00,56.9,19,15.5,0,0,1.8,9.4 +2020-09-30T05:00,53.2,26,19.1,0,0,5.4,4.3 +2020-09-30T06:00,49.7,32,21.1,0,0,3.8,6.5 +2020-09-30T07:00,53.5,29,22,0,0,2.6,4.7 +2020-09-30T08:00,60.9,22,21.3,0,0,1.6,6.9 +2020-09-30T09:00,65.1,17,19.8,0,0,7,13.9 +2020-09-30T10:00,67.3,21,26.3,0,0,7.4,17.2 +2020-09-30T11:00,69.4,20,26.5,0,0,7.1,17.4 +2020-09-30T12:00,71.2,19,26.2,0,0,5.9,17.2 +2020-09-30T13:00,72.7,18,27.1,0,0,6.2,16.1 +2020-09-30T14:00,73.2,19,28.4,0,0,6.3,16.1 +2020-09-30T15:00,72.9,20,29.2,0,0,6.5,15.7 +2020-09-30T16:00,72.1,21,30,0,0,6.4,15.2 +2020-09-30T17:00,69.3,25,31.6,0,0,5,13.4 +2020-09-30T18:00,64.1,31,33,0,0,5.8,8.5 +2020-09-30T19:00,61.7,35,33.8,0,0,6,11.2 +2020-09-30T20:00,59.7,38,34,0,0,4,9.6 +2020-09-30T21:00,58.8,39,34.2,0,0,2.4,4.7 +2020-09-30T22:00,56.9,44,35.2,0,0,3.4,3.8 +2020-09-30T23:00,53.7,50,35.7,0,0,4.5,5.1 +2020-10-01T00:00,52.5,54,36.5,0,0,5.2,7.6 +2020-10-01T01:00,50.5,54,34.5,0,0,6.5,11.4 +2020-10-01T02:00,49,54,33.2,0,0,7.9,13 +2020-10-01T03:00,47,56,32.3,0,0,4.8,13 +2020-10-01T04:00,45,62,32.5,0,0,4.7,7.8 +2020-10-01T05:00,45.3,61,32.6,0,0,1.8,5.8 +2020-10-01T06:00,45.1,61,32.6,0,0,0.5,2 +2020-10-01T07:00,46,57,31.6,0,0,0.4,3.1 +2020-10-01T08:00,49.8,44,28.6,0,0,1.6,7.2 +2020-10-01T09:00,53.2,37,27.4,0,0,2.9,10.7 +2020-10-01T10:00,56.4,33,27.3,0,0,4.1,13 +2020-10-01T11:00,60.1,29,27.4,0,0,3.7,13.2 +2020-10-01T12:00,63.6,25,27.5,0,0,2.8,13.2 +2020-10-01T13:00,65.9,23,26.9,0,0,5.2,14.8 +2020-10-01T14:00,67.1,21,25.9,0,0,5.3,15.4 +2020-10-01T15:00,67.6,20,25.6,0,0,4.3,14.5 +2020-10-01T16:00,67,21,25.5,0,0,4.5,12.5 +2020-10-01T17:00,64.4,23,26.2,0,0,0.4,11.2 +2020-10-01T18:00,60.5,28,27.3,0,0,2.8,3.4 +2020-10-01T19:00,59.2,30,28,0,0,3.3,4.3 +2020-10-01T20:00,59.5,29,27.6,0,0,2.1,4 +2020-10-01T21:00,54.1,39,29.4,0,0,2,3.4 +2020-10-01T22:00,51.1,48,32.2,0,0,2.6,4.9 +2020-10-01T23:00,49.6,53,33.3,0,0,3.6,5.6 +2020-10-02T00:00,49,51,31.7,0,0,3.5,6 +2020-10-02T01:00,49,46,29.1,0,0,2.9,6.3 +2020-10-02T02:00,46.9,46,27.2,0,0,3.5,5.6 +2020-10-02T03:00,45.3,50,28,0,0,4,5.6 +2020-10-02T04:00,44.4,53,28.4,0,0,5,6.3 +2020-10-02T05:00,46,47,27.1,0,0,3.5,6.3 +2020-10-02T06:00,46.8,43,25.5,0,0,2.7,4.5 +2020-10-02T07:00,49.6,37,24.5,0,0,2.8,4.5 +2020-10-02T08:00,56.5,26,22.2,0,0,2.7,8.5 +2020-10-02T09:00,63.7,20,21.6,0,0,3.6,10.5 +2020-10-02T10:00,68.5,17,21.4,0,0,5.1,13.6 +2020-10-02T11:00,71.3,15,21.6,0,0,5.3,15 +2020-10-02T12:00,73.4,14,21.6,0,0,3.3,14.5 +2020-10-02T13:00,75,13,21.2,0,0,3.5,12.3 +2020-10-02T14:00,75.8,13,20.8,0,0,3.2,12.3 +2020-10-02T15:00,75.7,13,20.9,0,0,5.1,13.4 +2020-10-02T16:00,74.2,13,20.8,0,0,1.3,13.2 +2020-10-02T17:00,72.3,14,19.6,0,0,1.7,8.1 +2020-10-02T18:00,64.7,20,22.2,0,0,5.2,5.8 +2020-10-02T19:00,63.4,22,23.4,0,0,4.5,6.3 +2020-10-02T20:00,63.2,23,24.4,0,0,4.8,7.8 +2020-10-02T21:00,59.8,28,26.3,0,0,4.3,10.1 +2020-10-02T22:00,57.2,35,30.1,0,0,6.8,25.5 +2020-10-02T23:00,52.2,46,32.1,0,0,4.8,11.2 +2020-10-03T00:00,53.5,44,32.4,0,0,2.7,6 +2020-10-03T01:00,49.9,52,33.1,0,0,3.8,5.6 +2020-10-03T02:00,49.2,56,34,0,0,3.6,5.6 +2020-10-03T03:00,48.1,58,34,0,0,2.1,4 +2020-10-03T04:00,44.9,65,34,0,0,3.2,4 +2020-10-03T05:00,43.1,70,33.9,0,0,1.5,4 +2020-10-03T06:00,41.3,74,33.7,0,0,1.9,3.4 +2020-10-03T07:00,45.7,63,33.8,0,0,3.5,7.6 +2020-10-03T08:00,53.2,46,32.9,0,0,1.8,7.6 +2020-10-03T09:00,57.5,39,32.6,0,0,2.8,10.1 +2020-10-03T10:00,60.2,35,32.7,0,0,5,13.9 +2020-10-03T11:00,62.8,32,32.5,0,0,5.2,14.8 +2020-10-03T12:00,64.7,29,32.1,0,0,7,17 +2020-10-03T13:00,65.7,28,31.5,0,0,8,18.8 +2020-10-03T14:00,66.2,27,31.2,0,0,6.4,18.6 +2020-10-03T15:00,66.6,27,31.1,0,0,4.3,15.9 +2020-10-03T16:00,66,27,30.9,0,0,3.8,12.3 +2020-10-03T17:00,63.5,30,31.6,0,0,0.7,10.3 +2020-10-03T18:00,58.3,39,33.4,0,0,4.5,5.6 +2020-10-03T19:00,55.6,45,34.6,0,0,3.9,5.8 +2020-10-03T20:00,53.5,50,35.3,0,0,3.7,5.4 +2020-10-03T21:00,51.6,54,35.6,0,0,4.4,5.6 +2020-10-03T22:00,50.7,56,35.6,0,0,3.6,6 +2020-10-03T23:00,50.5,56,35.4,0,0,2.4,4.5 +2020-10-04T00:00,47.2,63,35.2,0,0,2.8,4.9 +2020-10-04T01:00,46.5,62,34.1,0,0,3.7,5.6 +2020-10-04T02:00,46,58,31.8,0,0,4,6 +2020-10-04T03:00,44.5,58,30.8,0,0,4.6,6 +2020-10-04T04:00,45.6,52,29.1,0,0,3.4,5.6 +2020-10-04T05:00,43.5,55,28.4,0,0,3.9,4.3 +2020-10-04T06:00,41.3,63,29.7,0,0,5.3,6.5 +2020-10-04T07:00,47,52,30.1,0,0,4.1,7.4 +2020-10-04T08:00,55.1,39,30.7,0,0,3.3,8.9 +2020-10-04T09:00,64,26,28.2,0,0,3.9,11 +2020-10-04T10:00,71.9,16,23.6,0,0,5.3,13.4 +2020-10-04T11:00,76.9,12,19.6,0,0,6.8,16.1 +2020-10-04T12:00,79.5,10,18.5,0,0,7,16.6 +2020-10-04T13:00,81.1,9,17.4,0,0,5.8,16.6 +2020-10-04T14:00,82,9,16.8,0,0,4.7,15 +2020-10-04T15:00,82.5,8,16.5,0,0,4.2,13 +2020-10-04T16:00,81.7,9,17.3,0,0,6.4,11.9 +2020-10-04T17:00,76.3,12,20.1,0,0,6.3,12.8 +2020-10-04T18:00,70,16,22.3,0,0,6.4,10.5 +2020-10-04T19:00,64.6,20,23.1,0,0,5.3,8.9 +2020-10-04T20:00,59.4,27,25,0,0,4.6,8.3 +2020-10-04T21:00,55.6,32,26.5,0,0,3.9,7.4 +2020-10-04T22:00,55.8,32,26.7,0,0,4.8,7.4 +2020-10-04T23:00,56.8,31,26.1,0,0,6.1,9.8 +2020-10-05T00:00,53.8,34,26.3,0,0,4.6,10.1 +2020-10-05T01:00,50.8,39,26.9,0,0,4.4,7.6 +2020-10-05T02:00,48.2,44,27.1,0,0,5,6.9 +2020-10-05T03:00,47.6,45,27.1,0,0,4.7,6.9 +2020-10-05T04:00,47.6,44,26.5,0,0,4,5.6 +2020-10-05T05:00,47.2,39,23.5,0,0,5.9,7.2 +2020-10-05T06:00,46,40,22.9,0,0,4.6,7.6 +2020-10-05T07:00,52.8,31,23.1,0,0,7,11.2 +2020-10-05T08:00,64.2,22,24.3,0,0,5.9,12.5 +2020-10-05T09:00,71.3,14,19.9,0,0,2,11.9 +2020-10-05T10:00,74.8,12,19.2,0,0,0.9,8.7 +2020-10-05T11:00,78.6,10,18.5,0,0,3.4,11 +2020-10-05T12:00,80.6,10,18.2,0,0,7.5,17 +2020-10-05T13:00,81.5,10,19.4,0,0,8.1,18.6 +2020-10-05T14:00,82.9,8,16.9,0,0,8,17.9 +2020-10-05T15:00,83.1,8,15,0,0,8.4,18.3 +2020-10-05T16:00,81.1,10,18.8,0,0,8.4,17.2 +2020-10-05T17:00,74.3,13,20.6,0,0,12.5,17.2 +2020-10-05T18:00,64.8,23,25.6,0,0,4.8,23.3 +2020-10-05T19:00,61.8,26,27,0,0,4,7.2 +2020-10-05T20:00,58,32,28.5,0,0,3.9,6.7 +2020-10-05T21:00,55.1,37,29.3,0,0,3.3,6 +2020-10-05T22:00,52.3,42,29.8,0,0,3,5.1 +2020-10-05T23:00,50.5,46,30.3,0,0,3.7,5.6 +2020-10-06T00:00,49.3,46,29.2,0,0,4.1,6.7 +2020-10-06T01:00,47,48,28.1,0,0,5,6.7 +2020-10-06T02:00,45.9,48,27.3,0,0,5.1,6.3 +2020-10-06T03:00,45.1,45,25.2,0,0,5.1,6.5 +2020-10-06T04:00,44.8,40,22.2,0,0,3.8,6.5 +2020-10-06T05:00,45.9,39,22,0,0,4.4,6.3 +2020-10-06T06:00,44.9,39,21.6,0,0,5,7.4 +2020-10-06T07:00,51.4,30,21,0,0,5.9,8.9 +2020-10-06T08:00,60.8,22,21.4,0,0,3.8,10.7 +2020-10-06T09:00,69,17,21.7,0,0,2.7,9.6 +2020-10-06T10:00,73.6,14,20.7,0,0,2.4,9.6 +2020-10-06T11:00,77.5,10,16.9,0,0,4.1,12.5 +2020-10-06T12:00,81,8,13.6,0,0,4.4,13 +2020-10-06T13:00,83.8,7,11.9,0,0,4.5,13.2 +2020-10-06T14:00,84.8,6,11.3,0,0,3.9,13 +2020-10-06T15:00,84.7,6,9.6,0,0,4.5,11.4 +2020-10-06T16:00,83.5,6,8.8,0,0,6.2,12.1 +2020-10-06T17:00,79.1,11,19.2,0,0,4.1,11.2 +2020-10-06T18:00,76.6,9,13.9,0,0,2.1,4.7 +2020-10-06T19:00,70.9,12,15.9,0,0,1.3,2.7 +2020-10-06T20:00,61.7,19,19.6,0,0,4,4.7 +2020-10-06T21:00,55,29,23.6,0,0,4,5.4 +2020-10-06T22:00,54,31,24.3,0,0,4.6,6.9 +2020-10-06T23:00,52.8,32,24.1,0,0,4.3,6.9 +2020-10-07T00:00,51.1,34,23.7,0,0,4.3,6.9 +2020-10-07T01:00,50.1,34,23,0,0,5.7,7.4 +2020-10-07T02:00,49.2,34,21.7,0,0,7.3,8.7 +2020-10-07T03:00,52.9,27,19.9,0,0,5.5,8.7 +2020-10-07T04:00,54.9,24,19,0,0,3.5,6.7 +2020-10-07T05:00,47.8,36,21.9,0,0,5.2,5.6 +2020-10-07T06:00,46.4,37,21.7,0,0,6.5,7.6 +2020-10-07T07:00,52.3,31,22.3,0,0,3.5,7.6 +2020-10-07T08:00,60.4,25,24.3,0,0,4.7,10.1 +2020-10-07T09:00,70.2,16,21.6,0,0,4.4,11.2 +2020-10-07T10:00,77.2,11,19.4,0,0,3.7,11.2 +2020-10-07T11:00,80.2,9,16,0,0,6.5,15 +2020-10-07T12:00,81.3,8,15.5,0,0,7.8,17.4 +2020-10-07T13:00,81.9,8,16,0,0,7,17.7 +2020-10-07T14:00,82.3,9,16.5,0,0,5.6,16.6 +2020-10-07T15:00,82.2,9,17.2,0,0,5.1,13.9 +2020-10-07T16:00,81.4,9,18.3,0,0,4.9,12.1 +2020-10-07T17:00,75.2,14,22.9,0,0,5.5,9.8 +2020-10-07T18:00,67.7,17,21,0,0,6.7,8.9 +2020-10-07T19:00,66.2,19,23,0,0,4.8,8.3 +2020-10-07T20:00,64.6,22,24.5,0,0,4.4,5.6 +2020-10-07T21:00,64.8,22,24.5,0,0,0.6,5.1 +2020-10-07T22:00,55.7,31,25.6,0,0,3.6,4.5 +2020-10-07T23:00,54.5,33,26.2,0,0,3.6,4.7 +2020-10-08T00:00,51.8,37,26.5,0,0,1.1,4.5 +2020-10-08T01:00,48.9,43,27.3,0,0,2.3,3.8 +2020-10-08T02:00,46.5,48,28,0,0,3,4.7 +2020-10-08T03:00,45.1,52,28.4,0,0,3.5,4.7 +2020-10-08T04:00,44.1,54,28.5,0,0,3.4,4.9 +2020-10-08T05:00,43.9,52,27.3,0,0,2.6,4.5 +2020-10-08T06:00,42.2,55,27.2,0,0,3.4,4 +2020-10-08T07:00,47.4,46,27.8,0,0,4,6.7 +2020-10-08T08:00,56,32,26.4,0,0,4.5,10.3 +2020-10-08T09:00,65,21,24.2,0,0,3.9,11.2 +2020-10-08T10:00,73.9,13,20.2,0,0,3.3,11.2 +2020-10-08T11:00,79.4,10,17.2,0,0,1.9,11 +2020-10-08T12:00,82.7,8,16,0,0,2.2,10.1 +2020-10-08T13:00,84.7,7,15.3,0,0,3.5,11.4 +2020-10-08T14:00,85.7,7,14.8,0,0,5.1,13 +2020-10-08T15:00,85.5,7,13.8,0,0,8.7,16.6 +2020-10-08T16:00,82.9,8,14.5,0,0,11.5,19.9 +2020-10-08T17:00,80.6,8,13.6,0,0,1.3,19.7 +2020-10-08T18:00,73.7,11,16.3,0,0,2.9,3.8 +2020-10-08T19:00,63.9,17,18.6,0,0,4.9,6.9 +2020-10-08T20:00,60.6,21,20.4,0,0,4.5,7.6 +2020-10-08T21:00,59,20,17.5,0,0,5.9,9.4 +2020-10-08T22:00,57.5,18,14.8,0,0,6,10.1 +2020-10-08T23:00,56.8,19,14.9,0,0,5.9,10.3 +2020-10-09T00:00,55,21,16.2,0,0,5.3,9.6 +2020-10-09T01:00,53.7,24,17.6,0,0,5.2,8.5 +2020-10-09T02:00,52.4,26,18.7,0,0,5,8.1 +2020-10-09T03:00,50.5,30,19.9,0,0,6,7.8 +2020-10-09T04:00,51.2,30,20.6,0,0,4.7,7.8 +2020-10-09T05:00,50.1,34,22.9,0,0,5.9,11 +2020-10-09T06:00,50,34,22.6,0,0,5.4,8.1 +2020-10-09T07:00,54,31,23.9,0,0,3.7,7.6 +2020-10-09T08:00,61.5,25,25.8,0,0,2.7,8.1 +2020-10-09T09:00,70.5,19,26.2,0,0,3.4,9.6 +2020-10-09T10:00,77.9,13,23.3,0,0,3.6,11.6 +2020-10-09T11:00,81.1,11,22.2,0,0,1.1,11.2 +2020-10-09T12:00,82.6,11,22.3,0,0,1.4,9.8 +2020-10-09T13:00,82.3,11,22.2,0,0,1,9.2 +2020-10-09T14:00,82.6,11,21.9,0,0,2.9,10.1 +2020-10-09T15:00,82.8,10,21.2,0,0,5.8,12.5 +2020-10-09T16:00,81.7,11,21.7,0,0,8.1,14.3 +2020-10-09T17:00,74.9,17,27.1,0,0,6.3,14.3 +2020-10-09T18:00,74.3,14,22.6,0,0,6.8,10.7 +2020-10-09T19:00,69.8,17,22.6,0,0,4.7,11.2 +2020-10-09T20:00,67.8,19,23.5,0,0,3.7,7.2 +2020-10-09T21:00,64.3,24,26.5,0,0,4.7,7.6 +2020-10-09T22:00,58.8,31,28.6,0,0,5.4,8.1 +2020-10-09T23:00,62.7,26,27.7,0,0,3.3,6.3 +2020-10-10T00:00,56.2,34,28,0,0,3.5,4 +2020-10-10T01:00,51.7,42,29.1,0,0,3.9,6.3 +2020-10-10T02:00,49.2,46,29,0,0,3.2,5.4 +2020-10-10T03:00,47.7,49,29.3,0,0,3.5,4.9 +2020-10-10T04:00,48,46,28.3,0,0,4.9,6.5 +2020-10-10T05:00,46.3,50,28.7,0,0,5.1,7.4 +2020-10-10T06:00,44.9,53,28.6,0,0,2.9,6.3 +2020-10-10T07:00,48.4,48,29.6,0,0,2.7,5.4 +2020-10-10T08:00,56.6,34,28.7,0,0,1.5,6.5 +2020-10-10T09:00,62.7,24,25.8,0,0,2.2,9.2 +2020-10-10T10:00,68.2,19,24.3,0,0,1.9,9.6 +2020-10-10T11:00,73.6,15,23.3,0,0,1.4,9.6 +2020-10-10T12:00,78.2,13,22.6,0,0,1.8,9.8 +2020-10-10T13:00,81.1,11,21.3,0,0,3,10.7 +2020-10-10T14:00,82.6,10,20.8,0,0,7.9,15.7 +2020-10-10T15:00,80.6,13,24.4,0,0,15,26.2 +2020-10-10T16:00,79.4,13,24.7,0,0,11.8,26.6 +2020-10-10T17:00,75.8,16,26.6,0,0,2.4,19.7 +2020-10-10T18:00,71.5,19,27.4,0,0,4.2,5.4 +2020-10-10T19:00,65.5,25,28.4,0,0,4.5,4.9 +2020-10-10T20:00,62.1,29,29.5,0,0,4.4,7.2 +2020-10-10T21:00,57.7,34,29.2,0,0,4.2,6.7 +2020-10-10T22:00,56.4,35,29.1,0,0,5.4,8.7 +2020-10-10T23:00,55.4,35,28.1,0,0,4.9,8.9 +2020-10-11T00:00,54.4,35,27.2,0,0,5.6,9.2 +2020-10-11T01:00,53.7,34,26.1,0,0,6.2,10.3 +2020-10-11T02:00,55.6,30,24.4,0,0,6.9,10.7 +2020-10-11T03:00,56.3,28,23.2,0,0,8.2,13 +2020-10-11T04:00,56.5,27,22.9,0,0,10.4,16.8 +2020-10-11T05:00,53.9,32,24.6,0,0,9.4,17.7 +2020-10-11T06:00,51.5,35,24.7,0,0,8.1,15.4 +2020-10-11T07:00,54.8,32,25.2,0,0,8.9,14.3 +2020-10-11T08:00,64.5,23,25.7,0,0,8.6,15.7 +2020-10-11T09:00,72.3,16,23.5,0,0,9,17.4 +2020-10-11T10:00,74.1,15,23,0,0,10.7,19.7 +2020-10-11T11:00,74.5,16,26,0,0,12.7,24.6 +2020-10-11T12:00,73.5,18,27.6,0,0,15.9,28.9 +2020-10-11T13:00,61.5,31,30.9,0.004,0,24.4,45.9 +2020-10-11T14:00,60.2,29,28,0.008,0,24.7,43 +2020-10-11T15:00,59.1,28,25.7,0.004,0,21.5,42.7 +2020-10-11T16:00,55.3,26,21.3,0,0,21.9,38.9 +2020-10-11T17:00,52.3,28,20.5,0,0,16.3,37.6 +2020-10-11T18:00,50.5,32,21.5,0,0,12,28.4 +2020-10-11T19:00,48.5,37,23.5,0,0,7.9,20.4 +2020-10-11T20:00,46.2,41,24.1,0,0,4.3,13.2 +2020-10-11T21:00,46.7,40,23.5,0,0,2.5,7.2 +2020-10-11T22:00,44.6,42,22.6,0,0,8.5,11.9 +2020-10-11T23:00,44.2,39,20.8,0,0,10,16.3 +2020-10-12T00:00,43,41,20.8,0,0,9.9,15.9 +2020-10-12T01:00,42.5,42,20.9,0,0,11.5,18.3 +2020-10-12T02:00,41.5,43,20.6,0,0,10,18.3 +2020-10-12T03:00,40.1,45,20.5,0,0,5.9,15.9 +2020-10-12T04:00,38,51,21.7,0,0,4.1,9.2 +2020-10-12T05:00,39,48,20.9,0,0,4.4,7.8 +2020-10-12T06:00,36.7,51,20.4,0,0,5.1,6.7 +2020-10-12T07:00,41.6,38,17.9,0,0,7.6,10.5 +2020-10-12T08:00,48.5,26,15.3,0,0,4.1,12.5 +2020-10-12T09:00,55.2,19,13.3,0,0,4,10.7 +2020-10-12T10:00,59.5,16,13.7,0,0,4.7,13.2 +2020-10-12T11:00,64.5,15,15.4,0,0,2.7,13.2 +2020-10-12T12:00,69.5,13,16.4,0,0,2.9,11.2 +2020-10-12T13:00,73.6,11,15.4,0,0,5.2,13.6 +2020-10-12T14:00,75.8,9,11.8,0,0,9.5,19 +2020-10-12T15:00,75.7,8,9.7,0,0,11,21 +2020-10-12T16:00,74.3,8,9.5,0,0,8.9,20.8 +2020-10-12T17:00,68.9,12,14.3,0,0,7.2,15.9 +2020-10-12T18:00,63.3,15,14.8,0,0,7.1,12.8 +2020-10-12T19:00,56.5,22,18.1,0,0,4.1,11.4 +2020-10-12T20:00,51.9,31,22,0,0,3.7,6.7 +2020-10-12T21:00,55.3,27,21.7,0,0,1.9,4.7 +2020-10-12T22:00,55.2,27,21.7,0,0,1.4,2.5 +2020-10-12T23:00,50.9,31,21.1,0,0,3.5,4.3 +2020-10-13T00:00,46.8,34,19.8,0,0,6,7.8 +2020-10-13T01:00,49,31,19.4,0,0,4.1,8.3 +2020-10-13T02:00,43.6,39,20,0,0,5.8,7.6 +2020-10-13T03:00,42.6,42,21.1,0,0,4.4,7.4 +2020-10-13T04:00,42.1,44,21.7,0,0,4.5,7.2 +2020-10-13T05:00,42.3,45,22.6,0,0,5.2,7.4 +2020-10-13T06:00,42.5,43,21.7,0,0,5.3,8.7 +2020-10-13T07:00,46.4,41,24.2,0,0,1.6,8.3 +2020-10-13T08:00,54.3,28,22.2,0,0,1.4,6 +2020-10-13T09:00,58.4,25,22.9,0,0,10.4,19.5 +2020-10-13T10:00,61.3,21,21,0,0,8,20.1 +2020-10-13T11:00,66.3,17,20.6,0,0,1.6,17.7 +2020-10-13T12:00,73.5,13,20.4,0,0,5.9,14.1 +2020-10-13T13:00,77.7,11,20,0,0,3.5,15.7 +2020-10-13T14:00,78.5,11,20.3,0,0,5.4,13.2 +2020-10-13T15:00,79.6,11,20.9,0,0,3.8,13.4 +2020-10-13T16:00,79,11,20.9,0,0,3.6,10.1 +2020-10-13T17:00,68.5,21,27.1,0,0,5.8,8.3 +2020-10-13T18:00,64.2,21,23.9,0,0,6.3,6.7 +2020-10-13T19:00,61.3,23,23.4,0,0,5.1,8.5 +2020-10-13T20:00,56.8,28,23.9,0,0,5.2,8.3 +2020-10-13T21:00,55.9,30,25,0,0,5.2,8.5 +2020-10-13T22:00,55.5,30,24.8,0,0,7,11 +2020-10-13T23:00,59.4,23,21.5,0,0,10.1,15.9 +2020-10-14T00:00,60.9,18,17.5,0,0,11.7,19.2 +2020-10-14T01:00,59.7,19,17,0,0,11.4,19.2 +2020-10-14T02:00,58.1,20,17.2,0,0,10.3,18.3 +2020-10-14T03:00,55.6,23,18.3,0,0,7.8,16.8 +2020-10-14T04:00,52.1,28,20.1,0,0,5.6,12.5 +2020-10-14T05:00,51.4,30,21.3,0,0,5,9.2 +2020-10-14T06:00,52.6,28,20.5,0,0,6.5,10.1 +2020-10-14T07:00,55.5,26,21.5,0,0,5.6,12.5 +2020-10-14T08:00,62.7,23,24.7,0,0,3.4,9.2 +2020-10-14T09:00,69.5,17,22.5,0,0,3.8,10.3 +2020-10-14T10:00,73.8,14,20.9,0,0,1.4,10.3 +2020-10-14T11:00,78.2,13,23.8,0,0,4.7,11.4 +2020-10-14T12:00,80.5,12,23.6,0,0,10.1,21.5 +2020-10-14T13:00,80.4,12,22.9,0,0,14,25.9 +2020-10-14T14:00,82.4,11,22.3,0,0,11.4,26.6 +2020-10-14T15:00,71.4,21,29.8,0,0,16.4,27.7 +2020-10-14T16:00,65.6,27,30.9,0,0,16.7,31.8 +2020-10-14T17:00,55.6,48,36.3,0,0,12.2,28.2 +2020-10-14T18:00,52.5,54,36.4,0,0,9.7,20.6 +2020-10-14T19:00,48.8,59,35.3,0,0,13.1,21.9 +2020-10-14T20:00,46.6,54,31,0,0,7.6,22.1 +2020-10-14T21:00,46.5,56,31.7,0,0,7.4,13.6 +2020-10-14T22:00,45.2,63,33.3,0,0,4,13.2 +2020-10-14T23:00,44.4,66,33.8,0,0,2.1,8.5 +2020-10-15T00:00,44.3,66,33.6,0,0,0.9,5.6 +2020-10-15T01:00,43.7,63,32.1,0,0,0.5,4.3 +2020-10-15T02:00,43.4,57,29,0,0,2.9,2.9 +2020-10-15T03:00,43.3,46,24.2,0,0,2.9,3.4 +2020-10-15T04:00,42.4,48,23.9,0,0,1.6,3.1 +2020-10-15T05:00,41.5,53,25.5,0,0,7.4,3.6 +2020-10-15T06:00,40.2,54,24.9,0,0,6.4,12.3 +2020-10-15T07:00,40.5,54,25.3,0,0,5.5,11 +2020-10-15T08:00,41.8,51,25.1,0,0,4.8,11 +2020-10-15T09:00,44.4,46,25.1,0,0,2.2,11.6 +2020-10-15T10:00,47.6,41,25,0,0,1.5,9.2 +2020-10-15T11:00,50.5,36,24.6,0,0,4.3,13 +2020-10-15T12:00,53.2,32,24.2,0,0,6.3,16.3 +2020-10-15T13:00,54.6,29,23,0,0,5.3,16.8 +2020-10-15T14:00,56.1,27,22.5,0,0,5.5,14.8 +2020-10-15T15:00,55.9,28,22.9,0,0,7.1,15.9 +2020-10-15T16:00,54.5,30,23.5,0,0,8,15.9 +2020-10-15T17:00,51.3,29,19.9,0,0,6.3,15.9 +2020-10-15T18:00,47.6,35,21,0,0,9.5,12.3 +2020-10-15T19:00,42.1,49,24.4,0,0,6.3,22.6 +2020-10-15T20:00,41.5,52,25,0,0,3.5,10.3 +2020-10-15T21:00,39.5,59,26.2,0,0,3,6 +2020-10-15T22:00,38.8,61,26.4,0,0,2,4.3 +2020-10-15T23:00,37.6,64,26.4,0,0,3.5,5.4 +2020-10-16T00:00,37,65,26.3,0,0,4.3,7.6 +2020-10-16T01:00,36.1,69,26.7,0,0,4.7,8.1 +2020-10-16T02:00,34.3,74,27.1,0,0,3.8,7.8 +2020-10-16T03:00,35.2,72,27.1,0,0,2,4.9 +2020-10-16T04:00,32.5,81,27.3,0,0,3,4 +2020-10-16T05:00,31.6,88,28.5,0,0,3,4.3 +2020-10-16T06:00,30.5,91,28,0,0,3.4,5.1 +2020-10-16T07:00,32.8,80,27.4,0,0,3.7,7.4 +2020-10-16T08:00,38.2,60,25.4,0,0,1.1,7.4 +2020-10-16T09:00,44.1,44,23.5,0,0,2,8.7 +2020-10-16T10:00,50.8,29,19.9,0,0,2.3,10.1 +2020-10-16T11:00,56.5,21,17.4,0,0,2.7,12.1 +2020-10-16T12:00,61,17,15.8,0,0,2,11.2 +2020-10-16T13:00,66,15,17,0,0,3.3,11.6 +2020-10-16T14:00,70.3,13,17.2,0,0,2.7,11.6 +2020-10-16T15:00,72,13,18.1,0,0,2.9,10.1 +2020-10-16T16:00,71.6,14,19.1,0,0,0.8,8.9 +2020-10-16T17:00,62.6,24,25.2,0,0,5.6,6.9 +2020-10-16T18:00,59.5,27,25.3,0,0,4.8,8.7 +2020-10-16T19:00,54.6,35,27.1,0,0,4.3,8.1 +2020-10-16T20:00,52.5,34,25.2,0,0,5.1,7.6 +2020-10-16T21:00,51.9,30,21.7,0,0,5.6,8.7 +2020-10-16T22:00,52.8,26,18.9,0,0,6.1,10.5 +2020-10-16T23:00,51.3,27,18.1,0,0,4.9,9.6 +2020-10-17T00:00,50.4,28,18.5,0,0,4.8,7.4 +2020-10-17T01:00,50.1,28,18.5,0,0,7.1,11.4 +2020-10-17T02:00,48.7,31,19.1,0,0,7.7,12.8 +2020-10-17T03:00,45.6,40,22.4,0,0,5.1,12.3 +2020-10-17T04:00,47.2,40,23.9,0,0,2.4,6.5 +2020-10-17T05:00,51.6,33,23.4,0,0,2.3,7.2 +2020-10-17T06:00,45.6,41,23,0,0,4.7,5.8 +2020-10-17T07:00,50.5,32,21.5,0,0,3,6 +2020-10-17T08:00,56.1,29,24.4,0,0,2.1,5.6 +2020-10-17T09:00,62.1,22,23.2,0,0,2.4,7.8 +2020-10-17T10:00,66.4,18,21.5,0,0,5.4,12.3 +2020-10-17T11:00,69.2,16,21.7,0,0,7.5,16.3 +2020-10-17T12:00,72,15,22.2,0,0,6.5,17 +2020-10-17T13:00,74.4,15,23,0,0,2.9,15.4 +2020-10-17T14:00,74.5,15,23.4,0,0,0.3,10.7 +2020-10-17T15:00,74.5,15,23.2,0,0,3.7,9.6 +2020-10-17T16:00,73,18,26.6,0,0,2.1,9.8 +2020-10-17T17:00,62,28,28.3,0,0,6.8,4.5 +2020-10-17T18:00,62.5,24,24.8,0,0,4.2,8.1 +2020-10-17T19:00,61.3,24,24.6,0,0,4.7,5.6 +2020-10-17T20:00,54.1,33,25.9,0,0,3.4,5.6 +2020-10-17T21:00,52.8,43,30.7,0,0,17,28.2 +2020-10-17T22:00,46.9,62,34.6,0,0,12.4,28.9 +2020-10-17T23:00,43.3,73,35.2,0,0,3.1,20.6 +2020-10-18T00:00,42.1,76,35,0,0,3.2,5.1 +2020-10-18T01:00,40.8,80,35.1,0,0,3,4.5 +2020-10-18T02:00,40.7,80,35.1,0,0,2.6,3.6 +2020-10-18T03:00,39.5,83,34.8,0,0,5,8.1 +2020-10-18T04:00,39.4,82,34.3,0,0,5.6,10.1 +2020-10-18T05:00,38.9,77,32.2,0,0,6.3,12.1 +2020-10-18T06:00,37.9,76,30.8,0,0,9.4,16.6 +2020-10-18T07:00,37.7,77,31.1,0,0,6.4,16.8 +2020-10-18T08:00,38.5,75,31.2,0.004,0,4.8,12.3 +2020-10-18T09:00,39.7,70,30.8,0,0,6.4,13.4 +2020-10-18T10:00,41.1,66,30.7,0,0,5.2,13.4 +2020-10-18T11:00,43.3,60,30.4,0,0,4.8,12.8 +2020-10-18T12:00,46.8,52,30.2,0,0,3.1,12.8 +2020-10-18T13:00,50.3,46,30.2,0,0,4.9,13.6 +2020-10-18T14:00,52.7,42,30.4,0,0,6.4,15.2 +2020-10-18T15:00,53.6,41,30.7,0,0,4.5,15.4 +2020-10-18T16:00,54.5,41,31.1,0,0,4.7,11.9 +2020-10-18T17:00,46,54,30.5,0,0,4.3,12.3 +2020-10-18T18:00,43.2,62,30.8,0,0,1.8,7.2 +2020-10-18T19:00,41.3,66,30.7,0,0,3.4,5.6 +2020-10-18T20:00,38.8,73,30.7,0,0,5,8.3 +2020-10-18T21:00,38.8,75,31.4,0,0,4,8.9 +2020-10-18T22:00,38.1,76,31.3,0,0,5.2,9.4 +2020-10-18T23:00,36.9,82,31.8,0,0,4.5,8.9 +2020-10-19T00:00,37.6,81,32.2,0,0,1.2,7.8 +2020-10-19T01:00,36,87,32.4,0,0,3.4,6.3 +2020-10-19T02:00,34.5,91,32.3,0,0,3,5.8 +2020-10-19T03:00,37,82,32.1,0,0,2.9,3.8 +2020-10-19T04:00,35.2,89,32.2,0,0,3,4 +2020-10-19T05:00,35.2,84,30.8,0,0,5.7,5.8 +2020-10-19T06:00,35.7,81,30.5,0,0,5.9,7.2 +2020-10-19T07:00,41.5,59,28.4,0,0,5.2,7.6 +2020-10-19T08:00,49.7,40,26.2,0,0,5.2,11.6 +2020-10-19T09:00,57.7,30,26.3,0,0,2.5,10.3 +2020-10-19T10:00,62.8,25,26.2,0,0,4.2,10.1 +2020-10-19T11:00,66,21,24.7,0,0,6.8,17 +2020-10-19T12:00,69.1,20,26.2,0,0,6.8,15.9 +2020-10-19T13:00,69.4,22,29.1,0,0,8.5,18.1 +2020-10-19T14:00,69.7,22,29.5,0,0,7,18.1 +2020-10-19T15:00,70.1,22,29.1,0,0,4.7,15 +2020-10-19T16:00,68.5,23,29.7,0,0,3.3,10.7 +2020-10-19T17:00,60.3,31,29.1,0,0,7.5,6.7 +2020-10-19T18:00,54.8,41,31.6,0,0,4.7,12.3 +2020-10-19T19:00,54.6,42,32.1,0,0,2.7,7.8 +2020-10-19T20:00,48.7,54,32.6,0,0,3.8,4.3 +2020-10-19T21:00,48.7,52,31.9,0,0,4,5.8 +2020-10-19T22:00,45.6,56,30.7,0,0,4.1,5.1 +2020-10-19T23:00,42.7,59,29.3,0,0,1.7,5.1 +2020-10-20T00:00,40.3,62,28.4,0,0,2.6,4.3 +2020-10-20T01:00,39.9,59,26.6,0,0,3.4,5.1 +2020-10-20T02:00,42.7,52,26.2,0,0,0.9,4.3 +2020-10-20T03:00,40.4,55,25.3,0,0,4.1,4.7 +2020-10-20T04:00,39.9,47,21.5,0,0,7.4,8.7 +2020-10-20T05:00,52,23,15.7,0,0,10,11 +2020-10-20T06:00,49.5,26,16.1,0,0,6.9,16.3 +2020-10-20T07:00,47.7,32,19.4,0,0,5.2,11 +2020-10-20T08:00,51,37,25.3,0,0,3.9,8.9 +2020-10-20T09:00,55.9,32,26.3,0,0,3.2,8.5 +2020-10-20T10:00,62.8,21,22.1,0,0,1.2,10.3 +2020-10-20T11:00,67.4,17,20.5,0,0,3.2,11 +2020-10-20T12:00,70.6,16,22.6,0,0,2.2,11 +2020-10-20T13:00,72.7,16,24.3,0,0,6,13.9 +2020-10-20T14:00,72.6,17,25.7,0,0,7.3,16.1 +2020-10-20T15:00,72.5,17,25.6,0,0,5,15.2 +2020-10-20T16:00,70.1,20,27.1,0,0,7.1,11.6 +2020-10-20T17:00,56.5,40,32.2,0,0,9.1,17.2 +2020-10-20T18:00,53.4,45,32.5,0,0,5,15 +2020-10-20T19:00,50.8,50,33,0,0,4.3,8.1 +2020-10-20T20:00,52.5,47,32.8,0,0,0.9,5.8 +2020-10-20T21:00,49.6,53,33.4,0,0,2.2,3.1 +2020-10-20T22:00,49,55,33.6,0,0,0.5,2.9 +2020-10-20T23:00,44.1,67,33.8,0,0,4.8,5.6 +2020-10-21T00:00,42.4,73,34.3,0,0,4.1,6.5 +2020-10-21T01:00,41.2,76,34.3,0,0,2.8,5.4 +2020-10-21T02:00,39.3,82,34.2,0,0,2.1,4.7 +2020-10-21T03:00,38.2,81,32.8,0,0,2.8,4.3 +2020-10-21T04:00,40.6,68,30.8,0,0,2.4,5.6 +2020-10-21T05:00,37.1,85,33.1,0,0,3.2,3.4 +2020-10-21T06:00,34.9,95,33.6,0,0,3.4,7.2 +2020-10-21T07:00,36.2,93,34.5,0,0,2.9,5.6 +2020-10-21T08:00,41.2,76,34.2,0,0,3.4,8.3 +2020-10-21T09:00,47.6,58,33.6,0,0,3.7,10.5 +2020-10-21T10:00,53.4,47,33.5,0,0,7.2,15.4 +2020-10-21T11:00,58.2,33,28.9,0,0,2,16.6 +2020-10-21T12:00,67.1,23,27.6,0,0,3.7,11 +2020-10-21T13:00,73.3,16,24.2,0,0,5.5,13.2 +2020-10-21T14:00,76,13,21,0,0,5,13.2 +2020-10-21T15:00,76.5,13,22,0,0,4.1,12.1 +2020-10-21T16:00,73.9,19,29.6,0,0,2.8,9.4 +2020-10-21T17:00,65.1,21,24.4,0,0,5.6,9.2 +2020-10-21T18:00,57.7,32,27.9,0,0,5.8,8.9 +2020-10-21T19:00,54.6,37,29.1,0,0,4.7,7.6 +2020-10-21T20:00,51.3,42,28.9,0,0,3.8,6.7 +2020-10-21T21:00,48.6,46,28.8,0,0,5.9,7.4 +2020-10-21T22:00,45.6,51,28.7,0,0,3,7.8 +2020-10-21T23:00,44.4,51,27.3,0,0,4.4,6 +2020-10-22T00:00,44.3,40,21.6,0,0,5,6.9 +2020-10-22T01:00,43.7,36,18.8,0,0,6.8,8.5 +2020-10-22T02:00,43.3,35,17.3,0,0,6.2,8.5 +2020-10-22T03:00,42.2,35,16.3,0,0,7.1,8.7 +2020-10-22T04:00,42.7,33,15.4,0,0,8.3,10.1 +2020-10-22T05:00,36.6,98,36.1,0,0,9.8,10.1 +2020-10-22T06:00,35.3,97,34.5,0,0,10.4,17.9 +2020-10-22T07:00,36.4,88,33.3,0,0,8.3,17 +2020-10-22T08:00,37.1,79,31.4,0,0,9.1,17 +2020-10-22T09:00,37.1,76,30.1,0,0,6.7,17 +2020-10-22T10:00,38.8,69,29.4,0,0,6.3,14.1 +2020-10-22T11:00,41.3,61,28.9,0,0,7.4,15.7 +2020-10-22T12:00,44.2,54,28.8,0,0,12.2,22.4 +2020-10-22T13:00,44.6,53,28.3,0,0,13.1,24.6 +2020-10-22T14:00,43.9,52,27.6,0,0,9,24.6 +2020-10-22T15:00,44.7,50,27.1,0,0,10.3,18.8 +2020-10-22T16:00,42.8,55,27.7,0,0,13.6,24.2 +2020-10-22T17:00,35.2,60,22.6,0,0,16.9,23.9 +2020-10-22T18:00,32.5,58,19.4,0,0.028,12.7,28.4 +2020-10-22T19:00,30.4,57,16.9,0,0.028,11.7,22.6 +2020-10-22T20:00,28.3,60,16.3,0,0,11.7,21.5 +2020-10-22T21:00,27.1,64,16.3,0,0,9.2,20.8 +2020-10-22T22:00,26,66,16.3,0,0,7.2,16.8 +2020-10-22T23:00,25,68,15.8,0,0,7.1,13.9 +2020-10-23T00:00,23.4,70,15.1,0,0,7.9,14.8 +2020-10-23T01:00,22.7,71,14.7,0,0,7.4,15 +2020-10-23T02:00,22.6,71,14.5,0,0,6.1,13.9 +2020-10-23T03:00,22.1,72,14.5,0,0,6.5,12.3 +2020-10-23T04:00,21.7,74,14.7,0,0,6.3,12.3 +2020-10-23T05:00,20.3,78,14.5,0,0,6.1,12.1 +2020-10-23T06:00,20,79,14.5,0,0,5.9,12.5 +2020-10-23T07:00,19.9,77,13.8,0,0,3.8,11.4 +2020-10-23T08:00,20.8,73,13.5,0,0,3.7,10.1 +2020-10-23T09:00,23.3,65,13.2,0,0,2.9,10.3 +2020-10-23T10:00,25.3,58,12.7,0,0,2.3,10.3 +2020-10-23T11:00,28.6,52,13,0,0,2.9,11.6 +2020-10-23T12:00,34.1,44,14.5,0,0,3.7,14.1 +2020-10-23T13:00,36.1,41,14.8,0,0,2.9,13 +2020-10-23T14:00,37.7,39,15.1,0,0,6.4,15.4 +2020-10-23T15:00,38.7,37,14.9,0,0,6.6,16.1 +2020-10-23T16:00,38.7,38,15,0,0,5.2,15 +2020-10-23T17:00,33.7,54,19,0,0,1.8,11.4 +2020-10-23T18:00,32.1,60,19.7,0,0,4.7,7.6 +2020-10-23T19:00,29.9,64,19.3,0,0,1.4,8.3 +2020-10-23T20:00,28,66,18.2,0,0,0.9,3.1 +2020-10-23T21:00,27.8,68,18.5,0,0,3.1,5.1 +2020-10-23T22:00,27.6,72,19.7,0,0,3.4,7.4 +2020-10-23T23:00,28.6,69,19.9,0,0,2.1,5.6 +2020-10-24T00:00,26.9,75,19.9,0,0,3.6,6.9 +2020-10-24T01:00,25.3,79,19.6,0,0,3,7.4 +2020-10-24T02:00,23.9,80,18.7,0,0,4.8,8.3 +2020-10-24T03:00,21.9,84,17.9,0,0,5.9,11 +2020-10-24T04:00,20.9,87,17.8,0,0,5,10.5 +2020-10-24T05:00,20.4,92,18.5,0,0,4.6,12.5 +2020-10-24T06:00,21.7,89,18.9,0,0,3.6,11.6 +2020-10-24T07:00,24.1,82,19.4,0,0,5.9,11.9 +2020-10-24T08:00,32.8,61,20.7,0,0,5.1,11.2 +2020-10-24T09:00,41.1,47,22.5,0,0,5.5,12.1 +2020-10-24T10:00,46.3,41,23.6,0,0,8.1,18.3 +2020-10-24T11:00,52.7,34,25.1,0,0,3.5,17.4 +2020-10-24T12:00,56.8,29,24.6,0,0,7,16.3 +2020-10-24T13:00,59.4,27,25.1,0,0,7.3,16.8 +2020-10-24T14:00,59.5,27,25.4,0,0,7.1,17.4 +2020-10-24T15:00,59.2,27,25.6,0,0,7.3,15.7 +2020-10-24T16:00,57.5,30,25.9,0,0,5.4,14.8 +2020-10-24T17:00,47.1,39,23.6,0,0,4.7,9.6 +2020-10-24T18:00,44.9,45,24.7,0,0,7.9,12.5 +2020-10-24T19:00,42.7,49,24.9,0,0,10.1,15.9 +2020-10-24T20:00,38.8,56,24.3,0,0,11.9,19.5 +2020-10-24T21:00,36.5,60,24.1,0,0,11.4,19.9 +2020-10-24T22:00,34.2,65,23.5,0,0,9,19 +2020-10-24T23:00,32.5,68,23.1,0,0,5.9,15 +2020-10-25T00:00,32.2,67,22.6,0,0,5.7,10.5 +2020-10-25T01:00,31.6,68,22.2,0,0,6.6,11.2 +2020-10-25T02:00,31.2,69,22.4,0,0,7.1,12.5 +2020-10-25T03:00,28.4,76,21.7,0,0.055,12.8,20.6 +2020-10-25T04:00,23.3,76,17,0,0.083,13,25.9 +2020-10-25T05:00,17.7,70,9.7,0,0.055,13.1,23 +2020-10-25T06:00,16.3,72,8.8,0,0.055,12.3,23.5 +2020-10-25T07:00,15.1,71,7.3,0,0.055,12.2,23.7 +2020-10-25T08:00,15.3,65,5.6,0.004,0.028,8.4,21.7 +2020-10-25T09:00,15.7,62,5.1,0,0.028,9.2,19.7 +2020-10-25T10:00,16.3,62,5.6,0,0.055,6.3,18.1 +2020-10-25T11:00,17.2,62,6.3,0,0.11,7.3,16.1 +2020-10-25T12:00,17.5,62,6.5,0,0.083,9,17.2 +2020-10-25T13:00,17.8,61,6.6,0,0.083,11.2,22.6 +2020-10-25T14:00,17,64,6.9,0,0.138,12.8,23 +2020-10-25T15:00,16.1,66,6.8,0,0.138,11.4,23.3 +2020-10-25T16:00,15.3,68,6.6,0,0.11,11,21.7 +2020-10-25T17:00,11.2,76,5.2,0,0.11,10.2,21 +2020-10-25T18:00,10.8,73,3.9,0,0.22,9.5,17.2 +2020-10-25T19:00,10.6,75,4.2,0,0.165,9.2,17.7 +2020-10-25T20:00,10.1,83,6.1,0,0.11,8.1,15.9 +2020-10-25T21:00,9.5,83,5.5,0,0.11,7.4,14.1 +2020-10-25T22:00,9.4,83,5.3,0,0.11,6,12.5 +2020-10-25T23:00,8.6,84,4.8,0,0.11,6.2,11.9 +2020-10-26T00:00,8.2,85,4.7,0,0.11,5.4,10.5 +2020-10-26T01:00,8,87,4.8,0,0.055,4.6,9.4 +2020-10-26T02:00,7.6,88,4.8,0,0.055,6.5,10.7 +2020-10-26T03:00,7.1,88,4.3,0,0.11,6.8,10.3 +2020-10-26T04:00,6.5,88,3.7,0,0.083,7.8,11.6 +2020-10-26T05:00,6.5,89,3.9,0,0.055,4.8,11.9 +2020-10-26T06:00,6,89,3.5,0,0.055,5.8,8.9 +2020-10-26T07:00,6.3,89,3.7,0,0.055,4.5,8.7 +2020-10-26T08:00,7.1,88,4.3,0,0.028,4.5,7.6 +2020-10-26T09:00,7.3,88,4.5,0,0,4.8,8.5 +2020-10-26T10:00,7.6,86,4.2,0,0,2.8,9.2 +2020-10-26T11:00,8.5,77,2.7,0,0,1.3,6.7 +2020-10-26T12:00,9.2,75,2.8,0,0.028,2.8,6.9 +2020-10-26T13:00,10.4,72,3.3,0,0.028,3.8,8.5 +2020-10-26T14:00,10.5,74,3.7,0,0,2.7,8.7 +2020-10-26T15:00,9.9,77,4.1,0,0,1.8,6.3 +2020-10-26T16:00,7.1,79,1.9,0,0,4,5.6 +2020-10-26T17:00,6.2,89,3.6,0,0,2.9,5.1 +2020-10-26T18:00,6.6,88,3.7,0,0,4.1,4.3 +2020-10-26T19:00,1.8,92,0,0,0,5.7,6.3 +2020-10-26T20:00,-1.4,95,-2.5,0,0,5.5,7.6 +2020-10-26T21:00,-2.5,91,-4.4,0,0,4.7,6.7 +2020-10-26T22:00,-5.3,89,-7.9,0,0,5.7,6.5 +2020-10-26T23:00,-7.8,83,-11.6,0,0,7.7,8.7 +2020-10-27T00:00,-4.4,77,-9.8,0,0,8.6,10.3 +2020-10-27T01:00,-1.8,77,-7.4,0,0,7.7,10.1 +2020-10-27T02:00,-2.6,78,-7.6,0,0,8.5,9.6 +2020-10-27T03:00,1,75,-5.3,0,0,7,10.3 +2020-10-27T04:00,-1.4,78,-6.6,0,0,7.5,8.9 +2020-10-27T05:00,-0.3,73,-7,0,0,7.5,9.2 +2020-10-27T06:00,-4.1,73,-10.7,0,0,8.4,9.8 +2020-10-27T07:00,-5.6,72,-12.2,0,0,9.8,12.1 +2020-10-27T08:00,0.4,67,-8,0,0,8.1,11.9 +2020-10-27T09:00,8.4,63,-1.5,0,0,7,9.6 +2020-10-27T10:00,21.4,44,2.9,0,0,3,8.5 +2020-10-27T11:00,22.7,59,10.7,0,0,4.4,6 +2020-10-27T12:00,29,60,16.8,0,0,5.8,11 +2020-10-27T13:00,33.8,47,15.8,0,0,5.8,8.7 +2020-10-27T14:00,37.9,34,12,0,0,3.8,7.2 +2020-10-27T15:00,31,56,17.1,0,0,5.1,7.8 +2020-10-27T16:00,24.4,69,15.7,0,0,5.6,10.3 +2020-10-27T17:00,23,71,14.9,0,0,2.1,9.6 +2020-10-27T18:00,22.4,73,14.9,0,0,1.4,2.5 +2020-10-27T19:00,15.9,75,9.2,0,0,6.7,7.2 +2020-10-27T20:00,14,80,9,0,0,5.9,9.4 +2020-10-27T21:00,7.6,87,4.5,0,0,6.2,7.6 +2020-10-27T22:00,7.2,81,2.7,0,0,5.7,7.4 +2020-10-27T23:00,7.2,75,1,0,0,7.2,8.7 +2020-10-28T00:00,7.5,79,2.4,0,0,6.3,8.5 +2020-10-28T01:00,9,78,3.5,0,0,5.9,7.8 +2020-10-28T02:00,9.5,76,3.5,0,0,7.2,8.7 +2020-10-28T03:00,10.3,77,4.5,0,0,7.1,8.7 +2020-10-28T04:00,13.3,74,6.5,0,0,8.2,9.8 +2020-10-28T05:00,18,76,11.6,0,0,7.2,9.8 +2020-10-28T06:00,18.9,74,11.8,0,0,6.9,9.8 +2020-10-28T07:00,23,71,14.9,0,0,4.2,8.1 +2020-10-28T08:00,22.2,74,15.1,0,0,7.4,10.3 +2020-10-28T09:00,36.1,52,20.4,0,0,2.6,9.2 +2020-10-28T10:00,35.2,68,25.7,0,0,6.3,7.8 +2020-10-28T11:00,40,63,28.3,0,0,4.3,8.7 +2020-10-28T12:00,41.2,64,29.8,0,0,5.2,8.3 +2020-10-28T13:00,41.7,60,28.7,0,0,4.6,8.7 +2020-10-28T14:00,41.2,60,28.4,0,0,4.8,9.4 +2020-10-28T15:00,39.2,65,28.6,0,0,5.4,8.7 +2020-10-28T16:00,44.1,48,25.5,0,0,4,8.5 +2020-10-28T17:00,35.7,71,27.1,0,0,7.5,6 +2020-10-28T18:00,40.5,58,26.8,0,0,4,8.9 +2020-10-28T19:00,33.5,68,24.3,0,0,4.9,5.6 +2020-10-28T20:00,28.3,80,22.8,0,0,6.2,8.7 +2020-10-28T21:00,24.1,87,20.7,0,0,6,8.5 +2020-10-28T22:00,21.6,88,18.7,0,0,6.1,8.5 +2020-10-28T23:00,19.2,88,16.3,0,0,7,9.2 +2020-10-29T00:00,18.3,87,15.1,0,0,8.6,10.7 +2020-10-29T01:00,19.7,84,15.5,0,0,8.3,11.2 +2020-10-29T02:00,18.9,85,15,0,0,8.4,11.4 +2020-10-29T03:00,21.2,82,16.7,0,0,7,10.5 +2020-10-29T04:00,20.4,82,15.8,0,0,7.1,8.9 +2020-10-29T05:00,20.4,84,16.3,0,0,7.9,9.6 +2020-10-29T06:00,19.3,84,15.2,0,0,8.1,10.7 +2020-10-29T07:00,21.6,81,16.7,0,0,7.3,10.7 +2020-10-29T08:00,27.5,75,20.7,0,0,6.5,10.3 +2020-10-29T09:00,37.5,65,26.8,0,0,4.6,9.6 +2020-10-29T10:00,41.9,59,28.8,0,0,5.4,9.2 +2020-10-29T11:00,44.6,56,30,0,0,6.3,9.8 +2020-10-29T12:00,56.3,31,26,0,0,4.6,10.3 +2020-10-29T13:00,54.1,36,28,0,0,4.9,6.9 +2020-10-29T14:00,46.8,53,30.6,0,0,6.8,10.5 +2020-10-29T15:00,49.8,45,29.1,0,0,6.1,10.3 +2020-10-29T16:00,56.6,34,28.3,0,0,5.3,9.2 +2020-10-29T17:00,51.6,48,32.6,0,0,3.4,6.7 +2020-10-29T18:00,50,50,32.1,0,0,5,7.6 +2020-10-29T19:00,45.1,56,30.4,0,0,6.1,6.7 +2020-10-29T20:00,33.7,76,26.9,0,0,8.9,11.9 +2020-10-29T21:00,33.1,76,26.3,0,0,8.2,11.6 +2020-10-29T22:00,32.5,72,24.6,0,0,8.5,11.6 +2020-10-29T23:00,34.6,63,23.2,0,0,7.4,12.1 +2020-10-30T00:00,36.3,60,23.8,0,0,5.5,8.9 +2020-10-30T01:00,34.1,64,23.1,0,0,5.7,6.7 +2020-10-30T02:00,28.8,70,20.3,0,0,6.8,8.1 +2020-10-30T03:00,27,71,18.8,0,0,7.4,8.9 +2020-10-30T04:00,26.6,70,18.2,0,0,7.3,9.2 +2020-10-30T05:00,26,76,19.6,0,0,7.4,8.9 +2020-10-30T06:00,24.4,74,17.4,0,0,7.6,10.1 +2020-10-30T07:00,25.8,72,18,0,0,6.5,9.4 +2020-10-30T08:00,30.4,69,21.3,0,0,5.4,8.9 +2020-10-30T09:00,42.6,48,24.2,0,0,3.3,8.1 +2020-10-30T10:00,50.2,35,23.7,0,0,3.1,5.6 +2020-10-30T11:00,56.1,29,24.6,0,0,4.1,11.4 +2020-10-30T12:00,59.5,27,25.2,0,0,4.8,12.5 +2020-10-30T13:00,61.9,25,25.8,0,0,4.9,12.8 +2020-10-30T14:00,62.7,25,26.5,0,0,5.6,12.3 +2020-10-30T15:00,61.5,28,27.9,0,0,7.2,13.4 +2020-10-30T16:00,57.8,36,30.8,0,0,5.4,13.2 +2020-10-30T17:00,46,56,30.9,0,0,7.9,8.5 +2020-10-30T18:00,47.6,53,31.4,0,0,2.1,9.4 +2020-10-30T19:00,42.4,63,30.5,0,0,4.5,6.5 +2020-10-30T20:00,38.2,69,29,0,0,4.4,6.9 +2020-10-30T21:00,35.2,73,27.5,0,0,4.8,7.8 +2020-10-30T22:00,33.8,72,25.7,0,0,4.6,7.4 +2020-10-30T23:00,34.1,67,24.3,0,0,5.7,8.3 +2020-10-31T00:00,37.2,54,21.9,0,0,7.2,11 +2020-10-31T01:00,39.1,45,19.5,0,0,7.5,11.9 +2020-10-31T02:00,36.6,48,18.7,0,0,6.4,11.4 +2020-10-31T03:00,32.6,56,18.7,0,0,8,9.8 +2020-10-31T04:00,31.1,59,18.6,0,0,6.9,9.8 +2020-10-31T05:00,28.6,68,19.5,0,0,7,8.7 +2020-10-31T06:00,31.2,63,19.9,0,0,4.3,8.3 +2020-10-31T07:00,34.3,57,20.8,0,0,4.3,7.4 +2020-10-31T08:00,40.7,51,23.9,0,0,4.7,9.2 +2020-10-31T09:00,49.2,41,26.5,0,0,3.6,9.4 +2020-10-31T10:00,56.6,27,22.7,0,0,4.7,10.7 +2020-10-31T11:00,59.8,22,20.7,0,0,5.5,12.8 +2020-10-31T12:00,60.4,25,24.2,0,0,11.1,20.4 +2020-10-31T13:00,55.9,33,27.1,0,0,15.3,27.7 +2020-10-31T14:00,55.7,33,26.7,0,0,9.9,27.3 +2020-10-31T15:00,54.3,35,27,0,0,8.2,19 +2020-10-31T16:00,52.6,39,28,0,0,4.7,15.4 +2020-10-31T17:00,51.3,37,25.8,0,0,2.1,7.6 +2020-10-31T18:00,48.3,41,25.8,0,0,1.1,2.9 +2020-10-31T19:00,43.3,52,26.8,0,0,2.4,2.9 +2020-10-31T20:00,36.1,74,28.6,0,0,3.4,5.1 +2020-10-31T21:00,34,82,29,0,0,3.4,4.9 +2020-10-31T22:00,31.9,88,28.9,0,0,4.4,5.8 +2020-10-31T23:00,31.1,88,27.9,0,0,4.9,6.5 +2020-11-01T00:00,29.8,87,26.4,0,0,4.3,6.7 +2020-11-01T01:00,29.7,82,24.9,0,0,4,5.1 +2020-11-01T02:00,28.1,82,23.5,0,0,5.1,6 +2020-11-01T03:00,28.9,74,21.7,0,0,3.6,6 +2020-11-01T04:00,31.1,66,21.1,0,0,1.2,4.5 +2020-11-01T05:00,31.3,67,21.7,0,0,1,1.8 +2020-11-01T06:00,26.3,79,20.6,0,0,4.6,4.9 +2020-11-01T07:00,28.2,72,20.2,0,0,4,6.7 +2020-11-01T08:00,36,54,21.1,0,0,6.3,11.2 +2020-11-01T09:00,45.3,40,22.4,0,0,6.6,13.2 +2020-11-01T10:00,53.5,28,21.2,0,0,6.5,14.1 +2020-11-01T11:00,60.7,22,21.4,0,0,5.1,14.1 +2020-11-01T12:00,64.9,18,20.6,0,0,4.4,12.1 +2020-11-01T13:00,62.4,26,26.9,0,0,11.1,20.6 +2020-11-01T14:00,61.2,28,27.8,0,0,9,20.8 +2020-11-01T15:00,60.5,29,28,0,0,6.9,17.4 +2020-11-01T16:00,57.5,38,31.7,0,0,3.9,13.2 +2020-11-01T17:00,49.8,45,29.6,0,0,6.1,7.6 +2020-11-01T18:00,45.7,56,30.8,0,0,6,8.5 +2020-11-01T19:00,51.1,42,28.7,0,0,2.9,7.8 +2020-11-01T20:00,52.1,37,26.8,0,0,1.6,3.6 +2020-11-01T21:00,45.6,47,26.4,0,0,1.6,2.2 +2020-11-01T22:00,37.6,63,26,0,0,3.6,4.5 +2020-11-01T23:00,34.8,67,24.8,0,0,4,4.7 +2020-11-02T00:00,33.7,65,23.4,0,0,5.2,6.5 +2020-11-02T01:00,34.1,61,21.8,0,0,5.5,7.4 +2020-11-02T02:00,33.8,62,22,0,0,6.5,8.1 +2020-11-02T03:00,33.4,62,21.6,0,0,6.9,8.3 +2020-11-02T04:00,33,61,20.8,0,0,7.1,8.5 +2020-11-02T05:00,35.3,53,20,0,0,6.1,8.5 +2020-11-02T06:00,34.2,56,19.9,0,0,6.1,7.4 +2020-11-02T07:00,34.6,60,22.2,0,0,5.9,7.6 +2020-11-02T08:00,43.5,43,22.6,0,0,4.5,8.3 +2020-11-02T09:00,51.7,36,25.8,0,0,3.6,9.2 +2020-11-02T10:00,59,29,26.8,0,0,4.4,11 +2020-11-02T11:00,65.8,19,22.4,0,0,4.8,11.6 +2020-11-02T12:00,69.5,15,20.1,0,0,3.1,11.4 +2020-11-02T13:00,71.2,15,20.5,0,0,3,9.6 +2020-11-02T14:00,71.6,15,21.9,0,0,3.4,9.2 +2020-11-02T15:00,70.4,18,25.1,0,0,4.5,8.9 +2020-11-02T16:00,64.4,31,33.4,0,0,4.4,8.5 +2020-11-02T17:00,57.3,33,28.7,0,0,6.9,8.5 +2020-11-02T18:00,53.5,41,30.2,0,0,5.2,8.3 +2020-11-02T19:00,46.9,53,30.7,0,0,3.4,6.5 +2020-11-02T20:00,42.9,61,30.2,0,0,3.8,5.4 +2020-11-02T21:00,41.7,59,28.3,0,0,5.7,7.4 +2020-11-02T22:00,41,55,25.9,0,0,5.4,7.4 +2020-11-02T23:00,39.7,53,23.8,0,0,5.7,7.4 +2020-11-03T00:00,38.9,53,23.1,0,0,7,8.7 +2020-11-03T01:00,38.2,56,23.7,0,0,7.8,9.2 +2020-11-03T02:00,37.4,58,24.1,0,0,7.7,9.4 +2020-11-03T03:00,37.4,58,23.9,0,0,7.9,9.2 +2020-11-03T04:00,37.8,56,23.6,0,0,7.5,9.6 +2020-11-03T05:00,37.1,58,23.5,0,0,7.9,8.9 +2020-11-03T06:00,38.2,55,23.5,0,0,6.8,9.2 +2020-11-03T07:00,40.1,54,24.9,0,0,5.7,8.7 +2020-11-03T08:00,48.7,42,26.4,0,0,5.4,7.8 +2020-11-03T09:00,57.3,34,29.5,0,0,3.9,9.2 +2020-11-03T10:00,64.9,28,31.5,0,0,4,9.8 +2020-11-03T11:00,69.7,23,29.8,0,0,3.4,10.3 +2020-11-03T12:00,71.3,22,30.1,0,0,3,9.8 +2020-11-03T13:00,71.4,21,29.9,0,0,3.4,9.2 +2020-11-03T14:00,70.8,20,28,0,0,3.6,9.2 +2020-11-03T15:00,70.8,19,26.7,0,0,2.9,8.7 +2020-11-03T16:00,65.3,42,41.8,0,0,4.8,6.3 +2020-11-03T17:00,59.6,29,27.2,0,0,6.3,8.7 +2020-11-03T18:00,54.4,39,29.8,0,0,5.6,9.2 +2020-11-03T19:00,50.4,49,31.7,0,0,6,7.6 +2020-11-03T20:00,50.7,42,28.4,0,0,6.1,9.8 +2020-11-03T21:00,51.4,39,27.1,0,0,6.3,10.3 +2020-11-03T22:00,48.8,39,25.1,0,0,6.5,10.1 +2020-11-03T23:00,45.7,42,24,0,0,8.7,10.3 +2020-11-04T00:00,45.3,44,24.8,0,0,7,10.5 +2020-11-04T01:00,42.8,55,27.7,0,0,6.5,8.5 +2020-11-04T02:00,41.3,62,29.1,0,0,6.3,7.8 +2020-11-04T03:00,41,62,29.1,0,0,5.2,7.6 +2020-11-04T04:00,41.2,61,28.9,0,0,4.2,6.9 +2020-11-04T05:00,40.6,61,28.3,0,0,5,7.4 +2020-11-04T06:00,40.6,60,27.7,0,0,4.6,7.8 +2020-11-04T07:00,42.3,56,27.7,0,0,4.6,7.4 +2020-11-04T08:00,50.4,45,29.7,0,0,5.9,9.8 +2020-11-04T09:00,59,36,32,0,0,7.1,13.2 +2020-11-04T10:00,66.1,27,30.8,0,0,5.8,14.3 +2020-11-04T11:00,70.2,24,31.9,0,0,1.6,12.5 +2020-11-04T12:00,72.6,22,31.9,0,0,4.5,11 +2020-11-04T13:00,73.8,17,26.6,0,0,7.8,15.7 +2020-11-04T14:00,73.7,17,26.1,0,0,10.3,18.8 +2020-11-04T15:00,71.6,20,28.5,0,0,12,21.5 +2020-11-04T16:00,67.7,27,32.1,0,0,5.7,20.6 +2020-11-04T17:00,61.8,32,31.5,0,0,7.3,10.5 +2020-11-04T18:00,59.4,32,29.8,0,0,7.7,13.6 +2020-11-04T19:00,54.7,39,30.4,0,0,6.4,12.5 +2020-11-04T20:00,56,37,30.4,0,0,6.4,10.3 +2020-11-04T21:00,56.8,36,29.8,0,0,1.8,8.1 +2020-11-04T22:00,47.9,53,31.8,0,0,4.5,6.9 +2020-11-04T23:00,46.4,58,32.5,0,0,5,8.3 +2020-11-05T00:00,44,63,32.2,0,0,5.4,7.8 +2020-11-05T01:00,43.1,64,31.6,0,0,6,7.6 +2020-11-05T02:00,42.1,63,30.5,0,0,6.7,8.1 +2020-11-05T03:00,41.4,62,29.2,0,0,7,8.3 +2020-11-05T04:00,41.2,60,28.4,0,0,6.3,8.5 +2020-11-05T05:00,42,58,28.3,0,0,5,8.1 +2020-11-05T06:00,41.2,59,28,0,0,5,7.8 +2020-11-05T07:00,41.6,57,27.7,0,0,5,8.1 +2020-11-05T08:00,48.7,45,28.4,0,0,5.6,9.8 +2020-11-05T09:00,56.4,36,29.8,0,0,4.5,10.5 +2020-11-05T10:00,63.2,27,28.7,0,0,4.1,11 +2020-11-05T11:00,68.1,21,26.4,0,0,4,11.2 +2020-11-05T12:00,70.9,17,24.5,0,0,3.5,11.2 +2020-11-05T13:00,72.2,17,24.9,0,0,2.1,10.5 +2020-11-05T14:00,73,16,24.6,0,0,2.3,8.7 +2020-11-05T15:00,72.9,16,24.4,0,0,2.5,8.1 +2020-11-05T16:00,67.5,36,39.7,0,0,3.2,6.3 +2020-11-05T17:00,62.1,28,28.3,0,0,5.8,6.7 +2020-11-05T18:00,65.1,24,27.1,0,0,1.6,6.9 +2020-11-05T19:00,51.8,41,28.6,0,0,5.2,6.3 +2020-11-05T20:00,47.4,51,30.2,0,0,4.9,6.9 +2020-11-05T21:00,46.4,52,29.7,0,0,4.4,6.9 +2020-11-05T22:00,44.7,54,29,0,0,5.2,7.2 +2020-11-05T23:00,44.1,53,28,0,0,4.6,7.4 +2020-11-06T00:00,43.3,50,26.1,0,0,5,7.8 +2020-11-06T01:00,42.2,49,24.2,0,0,5.3,7.8 +2020-11-06T02:00,42.4,45,22.8,0,0,5.4,8.3 +2020-11-06T03:00,42.5,41,20.4,0,0,6.1,8.9 +2020-11-06T04:00,39.9,43,19.4,0,0,8.1,9.8 +2020-11-06T05:00,43.4,35,17.9,0,0,6.2,9.8 +2020-11-06T06:00,45.1,34,18.2,0,0,5.4,7.2 +2020-11-06T07:00,42.5,42,20.8,0,0,6.1,6.9 +2020-11-06T08:00,49.7,33,21.6,0,0,3.4,6.9 +2020-11-06T09:00,58.2,26,23.2,0,0,4,8.9 +2020-11-06T10:00,65.9,20,24,0,0,4.6,11 +2020-11-06T11:00,71.1,16,22.1,0,0,3.3,11.2 +2020-11-06T12:00,73.1,15,22,0,0,3.8,10.5 +2020-11-06T13:00,74,15,23.5,0,0,7.2,14.8 +2020-11-06T14:00,73.7,15,23.5,0,0,7.8,15.9 +2020-11-06T15:00,72.3,16,24.1,0,0,7.4,15.2 +2020-11-06T16:00,67.1,23,27.9,0,0,8.1,13 +2020-11-06T17:00,57.4,33,28.9,0,0,7.4,13 +2020-11-06T18:00,61.7,27,27.3,0,0,2.7,8.3 +2020-11-06T19:00,61.1,28,27.3,0,0,1,2.9 +2020-11-06T20:00,59.2,30,27.4,0,0,1.7,2 +2020-11-06T21:00,53.5,40,29.8,0,0,4.3,6.5 +2020-11-06T22:00,54.3,39,30.1,0,0,6,9.8 +2020-11-06T23:00,55,37,28.9,0,0,7.6,12.3 +2020-11-07T00:00,52.8,39,28.8,0,0,9.2,15 +2020-11-07T01:00,52.2,41,28.9,0,0,10.4,17 +2020-11-07T02:00,52.3,41,29.1,0,0,11.4,18.8 +2020-11-07T03:00,53,40,29.5,0,0,10.8,19.2 +2020-11-07T04:00,53.9,39,29.8,0,0,11.5,18.8 +2020-11-07T05:00,53,41,29.9,0,0,9.9,18.8 +2020-11-07T06:00,51.6,43,30.1,0,0,11.5,19 +2020-11-07T07:00,50.5,45,29.8,0,0,9.6,19 +2020-11-07T08:00,55.7,38,30.2,0,0,10.1,16.1 +2020-11-07T09:00,62.2,30,30.7,0,0,11.3,18.3 +2020-11-07T10:00,67.2,25,30,0,0,19.2,32.2 +2020-11-07T11:00,67.8,25,31.1,0,0,22.4,38.5 +2020-11-07T12:00,71.2,23,31,0,0,19.7,38.5 +2020-11-07T13:00,70.5,23,31.3,0,0,17.9,34.2 +2020-11-07T14:00,71.2,23,31.3,0,0,18.3,31.3 +2020-11-07T15:00,70.6,23,31.1,0,0,18.8,32.2 +2020-11-07T16:00,68,25,31.2,0,0,20.1,33.1 +2020-11-07T17:00,63.1,29,30.1,0,0,8.9,33.6 +2020-11-07T18:00,56.2,38,30.8,0,0,5.9,15 +2020-11-07T19:00,54.5,41,31.6,0,0,6.4,10.1 +2020-11-07T20:00,58.4,36,31.3,0,0,13.7,20.6 +2020-11-07T21:00,57.5,40,33.4,0,0,14.8,25.7 +2020-11-07T22:00,55,45,33.9,0,0,11.6,24.8 +2020-11-07T23:00,53.4,48,34.1,0,0,10.7,19.5 +2020-11-08T00:00,54,45,33.1,0,0,16,25.5 +2020-11-08T01:00,50.4,69,40.6,0.024,0,15.5,27.3 +2020-11-08T02:00,51,70,41.7,0.047,0,14.7,28 +2020-11-08T03:00,48.7,73,40.6,0.004,0,10,23.7 +2020-11-08T04:00,49.4,71,40.4,0,0,9.8,16.6 +2020-11-08T05:00,48.9,71,40,0,0,5.2,16.1 +2020-11-08T06:00,48.1,69,38.4,0.004,0,5.7,9.2 +2020-11-08T07:00,45.7,63,34,0,0,6.1,9.8 +2020-11-08T08:00,49.5,36,23.4,0,0,10.3,16.3 +2020-11-08T09:00,51.6,19,10.4,0,0,15.4,26.4 +2020-11-08T10:00,52.6,16,8.1,0,0,12.3,27.5 +2020-11-08T11:00,54.3,15,7,0,0,9.9,23.3 +2020-11-08T12:00,56.2,13,5.1,0,0,10.3,20.8 +2020-11-08T13:00,57.7,10,2.3,0,0,12.8,23.7 +2020-11-08T14:00,57.6,13,6.5,0,0,15.2,27.3 +2020-11-08T15:00,57.7,13,7.3,0,0,13.6,27.3 +2020-11-08T16:00,55.4,17,11.3,0,0,14.1,25.1 +2020-11-08T17:00,51.4,20,12,0,0,17.7,25.7 +2020-11-08T18:00,49.5,24,13.9,0,0,12.3,30 +2020-11-08T19:00,43.3,34,16.5,0,0,4.6,20.1 +2020-11-08T20:00,39.8,43,19.1,0,0,5.3,8.3 +2020-11-08T21:00,43.5,40,21,0,0,5.7,17.9 +2020-11-08T22:00,41.5,47,22.7,0,0,2.7,9.4 +2020-11-08T23:00,39.5,54,24.3,0,0,2.5,3.8 +2020-11-09T00:00,37.6,61,25.3,0,0,4.9,4.5 +2020-11-09T01:00,40.5,35,15,0,0,7.6,12.8 +2020-11-09T02:00,39.1,38,15.5,0,0,8.6,13.2 +2020-11-09T03:00,38.1,43,17.3,0,0,9.4,15.9 +2020-11-09T04:00,37.2,47,19,0,0,6.4,15.4 +2020-11-09T05:00,37.3,54,22.2,0,0,6.3,10.5 +2020-11-09T06:00,35.4,60,22.8,0,0,6.1,10.1 +2020-11-09T07:00,34.5,65,24,0,0,5.4,10.7 +2020-11-09T08:00,36.4,72,28.1,0,0,8.7,15.4 +2020-11-09T09:00,35.6,75,28.5,0.004,0,9.6,17.4 +2020-11-09T10:00,35.2,72,27,0,0.028,10.2,19.7 +2020-11-09T11:00,36,68,26.5,0,0.028,9,19 +2020-11-09T12:00,34.6,72,26.6,0,0.11,8.9,17.7 +2020-11-09T13:00,34.8,70,26.1,0,0.028,7.6,16.8 +2020-11-09T14:00,36.6,64,25.4,0.004,0,7.1,16.1 +2020-11-09T15:00,35.8,67,25.9,0,0.055,6.1,15.2 +2020-11-09T16:00,35.1,69,26,0,0.165,6.9,13 +2020-11-09T17:00,29.8,81,24.7,0,0.331,7,13.6 +2020-11-09T18:00,29.2,80,23.9,0,0.055,5.6,12.8 +2020-11-09T19:00,28.9,79,23.4,0,0.055,3.4,10.5 +2020-11-09T20:00,29.1,79,23.3,0,0.055,2.1,7.6 +2020-11-09T21:00,28.8,80,23.3,0,0.055,2.4,6.3 +2020-11-09T22:00,28.6,80,23.2,0,0.028,1.6,6 +2020-11-09T23:00,27.8,83,23.2,0,0,1.4,5.1 +2020-11-10T00:00,26.8,86,23.1,0,0,1.3,4.5 +2020-11-10T01:00,26.2,88,23.3,0,0,5.2,7.2 +2020-11-10T02:00,26.9,89,24,0,0,8.4,12.3 +2020-11-10T03:00,27.8,69,19,0,0,8.6,14.5 +2020-11-10T04:00,27.1,49,10.4,0,0,7.7,13.6 +2020-11-10T05:00,27.5,45,9.1,0,0,7.5,14.5 +2020-11-10T06:00,26.2,48,9.2,0,0,6.4,12.1 +2020-11-10T07:00,25.2,50,9.1,0,0,6.6,10.3 +2020-11-10T08:00,31.3,39,9.4,0,0,7.4,12.3 +2020-11-10T09:00,38.6,27,7.8,0,0,8.1,15.9 +2020-11-10T10:00,40.6,24,6.8,0,0,4.8,15.4 +2020-11-10T11:00,42.5,21,5.5,0,0,3.4,12.8 +2020-11-10T12:00,44.4,19,4.8,0,0,3.5,11.9 +2020-11-10T13:00,46,18,5.4,0,0,5.7,13.9 +2020-11-10T14:00,46.3,18,5.1,0,0,10.7,19.7 +2020-11-10T15:00,43.4,21,6.1,0,0,13.6,25.1 +2020-11-10T16:00,40.7,27,9,0,0,14.6,24.4 +2020-11-10T17:00,37,36,12.7,0,0,10.6,25.7 +2020-11-10T18:00,35.9,38,12.7,0,0,7.8,17.4 +2020-11-10T19:00,35.1,36,10.9,0,0,6,12.8 +2020-11-10T20:00,34.6,36,10.6,0,0,2.2,10.7 +2020-11-10T21:00,29.1,52,13.5,0,0,3.7,4.7 +2020-11-10T22:00,27.7,57,14.3,0,0,2.7,4.9 +2020-11-10T23:00,28.8,54,14.2,0,0,2.3,3.6 +2020-11-11T00:00,24.2,70,15.9,0,0,5.6,6.3 +2020-11-11T01:00,22.8,72,15.2,0,0,4.4,6.9 +2020-11-11T02:00,23.2,67,13.8,0,0,3.6,6 +2020-11-11T03:00,21.3,71,13.3,0,0,4.3,5.1 +2020-11-11T04:00,21.1,69,12.6,0,0,3.2,5.4 +2020-11-11T05:00,20.7,77,14.5,0,0,5.2,5.6 +2020-11-11T06:00,20,74,13,0,0,5.4,6.3 +2020-11-11T07:00,21.7,67,12.3,0,0,3.9,6.9 +2020-11-11T08:00,27.6,49,11,0,0,4.7,9.6 +2020-11-11T09:00,33.9,35,9.1,0,0,4.5,10.7 +2020-11-11T10:00,37.9,27,6.6,0,0,5,12.8 +2020-11-11T11:00,40.9,23,6.1,0,0,4.3,12.5 +2020-11-11T12:00,43.9,20,5.6,0,0,5.6,14.1 +2020-11-11T13:00,46,18,5.4,0,0,6.1,14.5 +2020-11-11T14:00,47.2,17,4.3,0,0,7,15.7 +2020-11-11T15:00,47.2,16,3.4,0,0,6.3,15 +2020-11-11T16:00,44.7,19,5.2,0,0,9.4,15.7 +2020-11-11T17:00,35,41,13.6,0,0,5.9,15.4 +2020-11-11T18:00,34,43,13.6,0,0,4.9,8.3 +2020-11-11T19:00,29.8,53,14.7,0,0,4.5,8.1 +2020-11-11T20:00,30.9,50,14.6,0,0,1.8,5.8 +2020-11-11T21:00,26.2,62,14.8,0,0,3.4,5.6 +2020-11-11T22:00,26,62,14.7,0,0,1.4,5.6 +2020-11-11T23:00,26.9,60,14.7,0,0,2.9,5.4 +2020-11-12T00:00,23.6,68,14.7,0,0,3.3,5.6 +2020-11-12T01:00,22.7,68,13.9,0,0,4.3,5.6 +2020-11-12T02:00,22.6,69,13.9,0,0,4.7,6 +2020-11-12T03:00,22.5,70,14.1,0,0,4.7,6 +2020-11-12T04:00,23.6,66,13.9,0,0,4.3,6.5 +2020-11-12T05:00,25.5,59,13.3,0,0,0.9,6.3 +2020-11-12T06:00,23.8,64,13.5,0,0,3.7,3.4 +2020-11-12T07:00,26.2,62,15.1,0,0,5.2,7.4 +2020-11-12T08:00,28.7,54,14.1,0,0,6.8,12.3 +2020-11-12T09:00,33.1,44,13.3,0,0,8.3,15.4 +2020-11-12T10:00,35,41,13.6,0,0,11.4,20.1 +2020-11-12T11:00,36.4,37,12.7,0,0,8.3,22.1 +2020-11-12T12:00,38.8,32,11.6,0,0,3.1,17.4 +2020-11-12T13:00,42.4,26,10.1,0,0,1.6,11 +2020-11-12T14:00,44.2,25,10.8,0,0,8.8,15.7 +2020-11-12T15:00,41.3,27,10.1,0,0,11.2,23.9 +2020-11-12T16:00,40.2,28,10,0,0,8.1,19.9 +2020-11-12T17:00,36.1,45,16.9,0,0,8.8,13 +2020-11-12T18:00,31.4,53,16.2,0,0,6.9,14.3 +2020-11-12T19:00,34,47,15.6,0,0,1.6,8.5 +2020-11-12T20:00,27.1,63,16.1,0,0,4.7,6 +2020-11-12T21:00,25.3,63,14.6,0,0,3.7,6.3 +2020-11-12T22:00,23,65,13.1,0,0,4.9,6.3 +2020-11-12T23:00,22.1,62,11,0,0,4.7,6.5 +2020-11-13T00:00,21.5,55,7.9,0,0,4.9,6.3 +2020-11-13T01:00,21.2,49,5,0,0,5.6,6.7 +2020-11-13T02:00,21.8,44,3.3,0,0,4.6,6.9 +2020-11-13T03:00,23.5,39,2.3,0,0,3.3,5.6 +2020-11-13T04:00,23,40,2.3,0,0,3.6,4.3 +2020-11-13T05:00,20.9,46,3.4,0,0,4.4,4.5 +2020-11-13T06:00,19.7,47,2.5,0,0,3.8,5.4 +2020-11-13T07:00,21.7,39,0.5,0,0,4.1,6.7 +2020-11-13T08:00,31.6,23,-1.7,0,0,10.4,15.2 +2020-11-13T09:00,43.6,15,-0.8,0,0,14.8,23.7 +2020-11-13T10:00,51.7,13,2.6,0,0,15,25.9 +2020-11-13T11:00,55.9,13,5.1,0,0,9,25.5 +2020-11-13T12:00,58.8,12,6.4,0,0,6,17 +2020-11-13T13:00,61,11,6.9,0,0,7.6,14.5 +2020-11-13T14:00,60.7,13,9.9,0,0,10.3,17.9 +2020-11-13T15:00,58.5,17,14.3,0,0,11.1,19.7 +2020-11-13T16:00,53.4,23,17,0,0,9.9,18.1 +2020-11-13T17:00,44.7,33,17.6,0,0,7.8,15.9 +2020-11-13T18:00,44.9,35,18.8,0,0,7.1,11.9 +2020-11-13T19:00,43.5,37,18.8,0,0,9.4,14.1 +2020-11-13T20:00,44.8,33,17.1,0,0,14.8,24.2 +2020-11-13T21:00,42.4,34,15.9,0,0,12.5,24.4 +2020-11-13T22:00,41.5,34,15,0,0,14.9,23.7 +2020-11-13T23:00,41.9,31,13.6,0,0,15,24.8 +2020-11-14T00:00,40.4,32,12.8,0,0,9.7,23.9 +2020-11-14T01:00,39.4,35,13.7,0,0,5.1,15.2 +2020-11-14T02:00,38.3,38,15.2,0,0,4.6,8.3 +2020-11-14T03:00,39.5,44,19.1,0.004,0,6.4,9.8 +2020-11-14T04:00,39.5,49,22.1,0,0,8,13 +2020-11-14T05:00,35.1,61,22.9,0,0,7.4,17.4 +2020-11-14T06:00,38.6,61,26.2,0,0,6,10.1 +2020-11-14T07:00,38.8,65,27.9,0,0,7.2,11 +2020-11-14T08:00,42,61,29.6,0,0,9.8,15 +2020-11-14T09:00,48,38,23.9,0.004,0,13.4,21.3 +2020-11-14T10:00,43.1,29,13.3,0.008,0,23.8,39.4 +2020-11-14T11:00,41.8,27,10.3,0,0.055,22.5,40.5 +2020-11-14T12:00,42.1,21,4.7,0,0,23.8,42.7 +2020-11-14T13:00,42.4,19,3.4,0,0,22.4,41.4 +2020-11-14T14:00,41.2,19,2.5,0,0,22.4,39.1 +2020-11-14T15:00,39.1,21,2.3,0,0,21.5,38.7 +2020-11-14T16:00,37.2,24,3.5,0,0,15.5,36.7 +2020-11-14T17:00,34.6,27,4.2,0,0,12.5,29.5 +2020-11-14T18:00,32.1,30,4.4,0,0,10.1,21.3 +2020-11-14T19:00,31.5,33,5.6,0,0,9.8,18.3 +2020-11-14T20:00,29.1,34,4.5,0,0,5.6,16.8 +2020-11-14T21:00,28.1,33,2.8,0,0,5.4,9.8 +2020-11-14T22:00,28.9,32,2.7,0,0,7.2,10.7 +2020-11-14T23:00,29.8,31,2.9,0,0,12.6,20.6 +2020-11-15T00:00,28.2,33,2.8,0,0,6.4,20.6 +2020-11-15T01:00,23.7,39,2.5,0,0,4.7,10.3 +2020-11-15T02:00,20.8,41,1,0,0,9.5,15.4 +2020-11-15T03:00,22.6,40,1.9,0,0,6.3,15 +2020-11-15T04:00,22,41,1.8,0,0,4.3,10.3 +2020-11-15T05:00,23.9,40,3.3,0,0,4.8,8.1 +2020-11-15T06:00,24.6,36,1.4,0,0,6.8,9.6 +2020-11-15T07:00,26.6,30,-0.7,0,0,14.7,22.1 +2020-11-15T08:00,35.3,25,3.4,0,0,9.8,22.6 +2020-11-15T09:00,42.5,24,8.2,0,0,7.4,14.8 +2020-11-15T10:00,47.8,23,11.6,0,0,7.6,14.3 +2020-11-15T11:00,52.6,22,14.5,0,0,10.7,19.5 +2020-11-15T12:00,56.5,21,16.5,0,0,6.3,19.9 +2020-11-15T13:00,57.6,21,17.4,0,0,2.4,13.9 +2020-11-15T14:00,57.8,20,17.4,0,0,3.2,8.9 +2020-11-15T15:00,57.2,22,18.6,0,0,2.7,8.9 +2020-11-15T16:00,53.2,32,23.9,0,0,2.3,6 +2020-11-15T17:00,45.5,37,20.6,0,0,7.2,8.5 +2020-11-15T18:00,40.7,46,21.7,0,0,6.1,11.4 +2020-11-15T19:00,40.6,47,22.1,0,0,2.7,7.2 +2020-11-15T20:00,37.5,53,21.8,0,0,5.1,7.2 +2020-11-15T21:00,36.1,57,22.4,0,0,5,7.2 +2020-11-15T22:00,35.4,60,22.8,0,0,4.4,6.7 +2020-11-15T23:00,33.7,66,23.5,0,0,4.5,6.9 +2020-11-16T00:00,32,70,23.3,0,0,4.5,6.9 +2020-11-16T01:00,30.5,72,22.6,0,0,6.9,7.8 +2020-11-16T02:00,30.2,71,21.9,0,0,5.2,8.1 +2020-11-16T03:00,31.4,66,21.4,0,0,4.8,7.8 +2020-11-16T04:00,31,67,21.3,0,0,5.6,9.4 +2020-11-16T05:00,32.2,65,21.6,0,0,6.3,9.2 +2020-11-16T06:00,37.8,51,21.4,0,0,4.3,8.7 +2020-11-16T07:00,34.4,59,21.7,0,0,4.6,5.4 +2020-11-16T08:00,37.2,55,22.5,0,0,5.7,9.8 +2020-11-16T09:00,44.8,43,23.9,0,0,3.2,10.1 +2020-11-16T10:00,52.3,34,24.6,0,0,3.8,10.3 +2020-11-16T11:00,57.8,27,24.2,0,0,1.6,10.1 +2020-11-16T12:00,61.3,23,23.1,0,0,4.5,11.2 +2020-11-16T13:00,63.6,20,22.1,0,0,4.3,11.9 +2020-11-16T14:00,64.8,19,22.1,0,0,3.5,11.2 +2020-11-16T15:00,64.4,20,22.4,0,0,3.1,9.2 +2020-11-16T16:00,57.5,35,30.1,0,0,4.7,6.5 +2020-11-16T17:00,53.9,35,27.1,0,0,5,7.8 +2020-11-16T18:00,48.9,43,27.3,0,0,3.3,5.8 +2020-11-16T19:00,45.6,49,27.6,0,0,3.6,5.6 +2020-11-16T20:00,39.7,63,28,0,0,4.6,5.4 +2020-11-16T21:00,37.8,66,27.6,0,0,4.5,6.9 +2020-11-16T22:00,37.2,61,25.2,0,0,4.6,7.8 +2020-11-16T23:00,34.3,66,24.3,0,0,5.1,7.4 +2020-11-17T00:00,33.6,65,23,0,0,5.7,7.4 +2020-11-17T01:00,33.4,62,21.8,0,0,6.5,8.1 +2020-11-17T02:00,32.5,63,21.4,0,0,6.1,8.1 +2020-11-17T03:00,33,60,20.8,0,0,5.2,7.2 +2020-11-17T04:00,32.2,61,20.1,0,0,6.9,8.3 +2020-11-17T05:00,31.4,63,20.3,0,0,7.3,8.5 +2020-11-17T06:00,30.6,65,20.2,0,0,7.5,8.9 +2020-11-17T07:00,30,66,20,0,0,6.9,8.9 +2020-11-17T08:00,38.5,47,20.1,0,0,4.4,8.5 +2020-11-17T09:00,46.7,36,21.4,0,0,4.1,9.2 +2020-11-17T10:00,55.4,25,20.3,0,0,5.1,11.6 +2020-11-17T11:00,62.2,19,19.3,0,0,4,11.6 +2020-11-17T12:00,66.7,16,18.6,0,0,2.6,10.5 +2020-11-17T13:00,69.2,14,17.2,0,0,2.6,8.9 +2020-11-17T14:00,69.7,13,17.2,0,0,4.5,10.1 +2020-11-17T15:00,67.9,16,20.2,0,0,5.6,10.5 +2020-11-17T16:00,59.6,28,26.6,0,0,4.9,9.2 +2020-11-17T17:00,53.2,38,28.5,0,0,6.5,8.1 +2020-11-17T18:00,47.6,52,30.8,0,0,7,10.3 +2020-11-17T19:00,46.7,49,28.7,0,0,2,8.9 +2020-11-17T20:00,40.4,58,26.6,0,0,4.5,6.7 +2020-11-17T21:00,38.1,58,24.7,0,0,5.6,7.4 +2020-11-17T22:00,36.4,60,23.8,0,0,7.5,8.5 +2020-11-17T23:00,37.1,51,20.7,0,0,6.5,9.4 +2020-11-18T00:00,38.3,45,19,0,0,5.9,8.9 +2020-11-18T01:00,37.8,46,18.9,0,0,6.1,9.4 +2020-11-18T02:00,38.8,45,19.2,0,0,6.5,10.3 +2020-11-18T03:00,40.4,44,19.9,0,0,6.7,10.7 +2020-11-18T04:00,41.5,42,20.1,0,0,6.8,10.7 +2020-11-18T05:00,38.3,50,21.2,0,0,8.5,10.7 +2020-11-18T06:00,41.5,44,21.4,0,0,5.4,10.5 +2020-11-18T07:00,42,43,21.3,0,0,5.4,8.1 +2020-11-18T08:00,48.9,34,21.7,0,0,7.2,10.5 +2020-11-18T09:00,56.3,27,22.5,0,0,10.7,17 +2020-11-18T10:00,60.9,24,23.6,0,0,12.2,19.2 +2020-11-18T11:00,65.6,20,23.8,0,0,13.2,22.6 +2020-11-18T12:00,66.7,20,24.6,0,0,12.6,22.4 +2020-11-18T13:00,68.5,20,25.5,0,0,11.9,22.1 +2020-11-18T14:00,69.3,20,26.4,0,0,12.5,21.3 +2020-11-18T15:00,67.1,24,29.1,0,0,13.2,23.5 +2020-11-18T16:00,63.5,30,31.1,0,0,7.5,21.7 +2020-11-18T17:00,59.5,26,24.9,0,0,4.7,12.1 +2020-11-18T18:00,53.2,34,25.6,0,0,6.7,9.8 +2020-11-18T19:00,46.6,44,25.7,0,0,4.1,8.1 +2020-11-18T20:00,42.5,57,28.2,0,0,4.4,6.5 +2020-11-18T21:00,42,60,28.9,0,0,5.6,7.6 +2020-11-18T22:00,44.2,52,27.7,0,0,6.2,9.8 +2020-11-18T23:00,43,52,26.5,0,0,6.8,10.7 +2020-11-19T00:00,41.2,54,25.8,0,0,7,11.2 +2020-11-19T01:00,40.6,54,25.2,0,0,7.4,11.6 +2020-11-19T02:00,40.6,53,24.9,0,0,7.4,12.3 +2020-11-19T03:00,40,55,25.2,0,0,7.9,13 +2020-11-19T04:00,38.1,61,25.9,0,0,5.8,13 +2020-11-19T05:00,37,62,25.2,0,0,4.3,9.4 +2020-11-19T06:00,35.3,67,25.5,0,0,3,6.5 +2020-11-19T07:00,39.9,56,25.4,0,0,1.8,4 +2020-11-19T08:00,40.6,57,26.5,0,0,0.7,2.9 +2020-11-19T09:00,47.7,46,27.8,0,0,2.3,6.9 +2020-11-19T10:00,54.5,35,27.3,0,0,6.2,12.8 +2020-11-19T11:00,59.9,27,25.5,0,0,7.8,15.4 +2020-11-19T12:00,62.3,24,24.8,0,0,11.3,21 +2020-11-19T13:00,63.1,24,25.5,0,0,11.1,22.1 +2020-11-19T14:00,63.8,25,26.9,0,0,9.6,20.8 +2020-11-19T15:00,62.4,28,29.2,0,0,9.5,18.1 +2020-11-19T16:00,57.8,37,31.6,0,0,5,16.8 +2020-11-19T17:00,49.1,50,31.1,0,0,5.8,8.3 +2020-11-19T18:00,46.1,57,31.6,0,0,5.9,7.8 +2020-11-19T19:00,47.7,52,30.8,0,0,4.3,7.2 +2020-11-19T20:00,44.1,59,30.7,0,0,8,9.2 +2020-11-19T21:00,45.3,53,29.1,0,0,7.4,11 +2020-11-19T22:00,43.5,49,25.6,0,0,9.5,15.9 +2020-11-19T23:00,40.9,52,24.6,0,0,6.7,15.4 +2020-11-20T00:00,38,57,24.3,0,0,5.3,10.5 +2020-11-20T01:00,35.8,62,24,0,0,7.4,8.9 +2020-11-20T02:00,38.3,54,23,0,0,6.8,9.2 +2020-11-20T03:00,37,54,21.7,0,0,7.2,8.9 +2020-11-20T04:00,41.5,42,20.1,0,0,4.9,8.9 +2020-11-20T05:00,39.2,44,19.1,0,0,3.9,6.3 +2020-11-20T06:00,38.2,43,17.7,0,0,2.8,5.1 +2020-11-20T07:00,37,44,17.3,0,0,3,4 +2020-11-20T08:00,36.6,54,21.4,0,0,2.1,4 +2020-11-20T09:00,41.2,44,20.7,0,0,3,8.1 +2020-11-20T10:00,44.6,38,20.8,0,0,3.5,10.5 +2020-11-20T11:00,47.8,37,23,0,0,2.7,10.5 +2020-11-20T12:00,50.3,34,22.6,0,0,0.9,10.1 +2020-11-20T13:00,51.6,31,22.1,0,0,6.2,13.9 +2020-11-20T14:00,51.3,31,21.6,0,0,10.6,19.9 +2020-11-20T15:00,51.8,25,17.4,0,0,12.8,22.1 +2020-11-20T16:00,48.2,28,16.8,0,0,15.8,25.9 +2020-11-20T17:00,46,28,14.7,0,0,15.6,26.4 +2020-11-20T18:00,43.8,31,14.8,0,0,17.5,28.9 +2020-11-20T19:00,40.6,31,12.1,0,0,14.7,29.1 +2020-11-20T20:00,39.9,32,12.7,0,0,11.5,24.2 +2020-11-20T21:00,39.6,34,13.2,0,0,7.3,19 +2020-11-20T22:00,37.1,38,13.8,0,0,4.8,12.1 +2020-11-20T23:00,35.7,41,14.5,0,0,5.1,7.8 +2020-11-21T00:00,34.7,44,15.2,0,0,2.7,6.3 +2020-11-21T01:00,33.4,50,16.7,0,0,3.4,4.5 +2020-11-21T02:00,32.4,54,17.7,0,0,4.7,5.6 +2020-11-21T03:00,35.1,46,16.5,0,0,2.7,5.8 +2020-11-21T04:00,33,53,17.9,0,0,5,7.8 +2020-11-21T05:00,31.1,56,17.2,0,0,4.7,9.6 +2020-11-21T06:00,28.9,61,17.2,0,0,4.1,7.8 +2020-11-21T07:00,27.9,65,17.7,0,0,4.1,6.3 +2020-11-21T08:00,30.8,57,17.2,0,0,3.6,7.6 +2020-11-21T09:00,35.2,48,17.4,0,0,3.1,9.2 +2020-11-21T10:00,39,42,17.7,0,0,4.6,12.1 +2020-11-21T11:00,42.6,37,18.2,0,0,5.6,14.1 +2020-11-21T12:00,44.2,37,19.4,0,0,4.7,14.8 +2020-11-21T13:00,46.4,36,20.8,0,0,3.4,13.2 +2020-11-21T14:00,47.8,35,21.7,0,0,3.8,10.7 +2020-11-21T15:00,47.5,36,21.7,0,0,4.8,11 +2020-11-21T16:00,45.6,39,22.3,0,0,3.8,10.7 +2020-11-21T17:00,39.7,49,22.1,0,0,5.4,6.9 +2020-11-21T18:00,37.3,61,25,0,0,4.9,6.5 +2020-11-21T19:00,37.2,66,27.1,0,0,2.3,6 +2020-11-21T20:00,38.7,62,26.9,0,0,2.7,3.1 +2020-11-21T21:00,38.5,62,26.4,0,0,2.3,3.1 +2020-11-21T22:00,37.8,61,25.7,0,0,4.1,5.4 +2020-11-21T23:00,37.1,60,24.6,0,0,1.7,5.1 +2020-11-22T00:00,30.4,73,22.9,0,0,5.1,5.8 +2020-11-22T01:00,29.1,76,22.4,0,0,6,8.1 +2020-11-22T02:00,27.1,79,21.6,0,0,5.6,8.1 +2020-11-22T03:00,25.5,84,21.4,0,0,5.8,6.7 +2020-11-22T04:00,25.9,83,21.4,0,0,4.5,6.7 +2020-11-22T05:00,28,71,19.9,0,0,3.9,5.6 +2020-11-22T06:00,26.3,62,15,0,0,5.1,6.3 +2020-11-22T07:00,24.5,60,12.7,0,0,4.1,5.8 +2020-11-22T08:00,29.3,50,13,0,0,2.5,5.4 +2020-11-22T09:00,32.3,38,9.4,0,0,3,8.5 +2020-11-22T10:00,35.2,30,7,0,0,3,9.8 +2020-11-22T11:00,38.2,26,6.7,0,0,3.4,10.5 +2020-11-22T12:00,41.5,24,7.3,0,0,3.3,11 +2020-11-22T13:00,44,23,8.8,0,0,4.1,11.2 +2020-11-22T14:00,44.9,23,9.3,0,0,7.4,15.2 +2020-11-22T15:00,43.3,25,9.6,0,0,10.6,19 +2020-11-22T16:00,40.4,30,11,0,0,7.5,19.2 +2020-11-22T17:00,36.1,34,10.3,0,0,6.3,12.3 +2020-11-22T18:00,32.2,46,13.6,0,0,5.4,10.3 +2020-11-22T19:00,32.6,43,12.5,0,0,3.8,6.3 +2020-11-22T20:00,33.4,40,11.6,0,0,3.7,6.5 +2020-11-22T21:00,35.2,35,10.3,0,0,2.7,5.6 +2020-11-22T22:00,31.9,39,9.7,0,0,1.9,3.8 +2020-11-22T23:00,29.4,44,10,0,0,3.2,4 +2020-11-23T00:00,30.3,42,10.1,0,0,3.4,4.9 +2020-11-23T01:00,27.9,49,11,0,0,4.5,5.4 +2020-11-23T02:00,29.3,46,11.2,0,0,2.7,5.1 +2020-11-23T03:00,27.4,54,12.8,0,0,2.7,3.8 +2020-11-23T04:00,28.9,55,14.8,0,0,2.1,3.6 +2020-11-23T05:00,29.5,55,15.4,0,0,2.5,3.4 +2020-11-23T06:00,27.7,56,14.2,0,0,3.6,4.3 +2020-11-23T07:00,30.8,52,15.1,0,0,1.6,4.7 +2020-11-23T08:00,33.8,51,17.8,0,0,2.7,4.5 +2020-11-23T09:00,42.2,48,24,0,0,4.1,8.5 +2020-11-23T10:00,51.3,44,29.8,0,0,8.3,14.8 +2020-11-23T11:00,58.3,35,30.6,0,0,6.2,16.8 +2020-11-23T12:00,60.6,31,29.8,0,0,4.1,13 +2020-11-23T13:00,59.7,31,29,0,0,10.4,19.2 +2020-11-23T14:00,57.5,32,27.5,0,0,12.8,23 +2020-11-23T15:00,56.2,33,27.3,0,0,10.1,22.8 +2020-11-23T16:00,52.2,40,28.5,0,0,5.2,17.7 +2020-11-23T17:00,43.7,56,28.9,0,0,7,8.7 +2020-11-23T18:00,43.7,53,27.6,0,0,5.4,8.7 +2020-11-23T19:00,41.8,54,26.4,0,0,5.7,9.2 +2020-11-23T20:00,40.5,58,27,0,0,8.3,12.3 +2020-11-23T21:00,41.1,66,30.6,0,0,8.8,15.9 +2020-11-23T22:00,40.6,69,31.3,0,0,7.2,14.5 +2020-11-23T23:00,38.6,72,30.3,0,0,4.7,11.9 +2020-11-24T00:00,39.8,67,29.8,0,0,4.9,7.6 +2020-11-24T01:00,41,64,29.8,0,0,3.8,5.8 +2020-11-24T02:00,37.3,74,29.8,0,0,4.7,8.1 +2020-11-24T03:00,37.3,76,30.4,0.004,0,9,15.9 +2020-11-24T04:00,34.8,93,32.9,0.012,0.028,6.1,14.8 +2020-11-24T05:00,33.6,98,33.1,0.012,0.138,6.7,9.8 +2020-11-24T06:00,32.9,96,31.9,0.004,0.579,8.6,13.9 +2020-11-24T07:00,31,93,29.1,0,0.606,9.6,16.6 +2020-11-24T08:00,29.7,86,25.9,0,0.413,5,16.6 +2020-11-24T09:00,29.8,88,26.5,0,0.276,3.1,9.4 +2020-11-24T10:00,31.2,80,25.6,0,0.11,2.6,6.7 +2020-11-24T11:00,32.4,75,25.3,0,0.028,1.6,5.6 +2020-11-24T12:00,33.3,71,24.8,0,0,1.6,4.5 +2020-11-24T13:00,34.1,67,24.4,0,0,2.1,4.5 +2020-11-24T14:00,37.1,40,15.2,0,0,0.2,4.3 +2020-11-24T15:00,37.9,37,14.2,0,0,0.8,1.8 +2020-11-24T16:00,37.8,37,14,0,0,2.4,4 +2020-11-24T17:00,32,73,24.2,0,0,4.1,8.1 +2020-11-24T18:00,30.7,72,22.7,0,0,4.5,7.2 +2020-11-24T19:00,29.1,72,21.4,0,0,4.3,8.1 +2020-11-24T20:00,26.2,76,19.7,0,0,5.7,8.5 +2020-11-24T21:00,25.3,70,16.9,0,0,5.7,9.4 +2020-11-24T22:00,24,69,15.4,0,0,4.8,9.2 +2020-11-24T23:00,21.9,75,15.4,0,0,5.3,7.8 +2020-11-25T00:00,21.3,76,15,0,0,6,9.2 +2020-11-25T01:00,22.8,68,13.8,0,0,5,9.2 +2020-11-25T02:00,23.8,62,12.8,0,0,5.4,8.5 +2020-11-25T03:00,24.3,59,12,0,0,6,9.6 +2020-11-25T04:00,23.9,58,11.4,0,0,6.4,9.8 +2020-11-25T05:00,21.3,68,12.3,0,0,5.2,9.8 +2020-11-25T06:00,23.1,61,11.5,0,0,6.4,10.1 +2020-11-25T07:00,23.1,59,10.8,0,0,5.9,10.3 +2020-11-25T08:00,27.3,49,10.5,0,0,7.4,11.9 +2020-11-25T09:00,34.4,36,10.1,0,0,5.8,12.1 +2020-11-25T10:00,41.5,24,7.5,0,0,5.4,12.3 +2020-11-25T11:00,46.5,18,5.1,0,0,5.6,13 +2020-11-25T12:00,49.5,17,6.4,0,0,3.7,13 +2020-11-25T13:00,51.1,17,7.7,0,0,2.2,10.3 +2020-11-25T14:00,52.2,17,9.1,0,0,1.5,7.8 +2020-11-25T15:00,51.4,21,12.7,0,0,3.8,6 +2020-11-25T16:00,43.9,27,12.4,0,0,4.8,7.8 +2020-11-25T17:00,32.9,52,17,0,0,6.6,7.8 +2020-11-25T18:00,31.5,60,19.3,0,0,4.4,8.3 +2020-11-25T19:00,28,77,21.7,0,0,3.9,6.3 +2020-11-25T20:00,25.4,83,21.1,0,0,3,5.8 +2020-11-25T21:00,22.9,87,19.6,0,0,4.3,5.1 +2020-11-25T22:00,24.8,77,18.7,0,0,3.3,5.1 +2020-11-25T23:00,26.3,70,17.9,0,0,4.5,5.4 +2020-11-26T00:00,25.1,67,15.8,0,0,4,6 +2020-11-26T01:00,22.6,71,14.7,0,0,3.7,6 +2020-11-26T02:00,21.1,73,13.8,0,0,5.5,8.3 +2020-11-26T03:00,22,67,12.7,0,0,4.1,8.5 +2020-11-26T04:00,21.7,64,11.4,0,0,5.1,6.5 +2020-11-26T05:00,20.4,64,10,0,0,7,6.5 +2020-11-26T06:00,22.6,57,9.7,0,0,4.7,8.5 +2020-11-26T07:00,23.9,58,11.3,0,0,4.9,7.4 +2020-11-26T08:00,29.5,48,12.3,0,0,6.7,10.1 +2020-11-26T09:00,35.3,42,14.3,0,0,4.9,10.5 +2020-11-26T10:00,39.6,37,15.5,0,0,5.5,12.3 +2020-11-26T11:00,41.6,35,15.7,0,0,6.3,13.6 +2020-11-26T12:00,43.4,33,16.1,0,0,7.7,15.7 +2020-11-26T13:00,44.6,31,16.2,0,0,7.9,15.9 +2020-11-26T14:00,45.1,31,16.3,0,0,7.2,15.4 +2020-11-26T15:00,44.9,32,16.8,0,0,8.9,14.5 +2020-11-26T16:00,40,40,17.8,0,0,9.1,15.9 +2020-11-26T17:00,36.4,54,21.4,0,0,11.9,14.3 +2020-11-26T18:00,34.1,63,22.7,0,0,9,21 +2020-11-26T19:00,33.2,66,23,0,0,8.4,14.5 +2020-11-26T20:00,33,64,22.2,0,0,4.7,13.4 +2020-11-26T21:00,32.6,70,24,0,0.028,1.9,7.4 +2020-11-26T22:00,31.9,72,23.8,0,0.028,2.3,3.6 +2020-11-26T23:00,29.1,82,24.3,0,0,3.4,4.7 +2020-11-27T00:00,27.4,86,23.8,0,0,3.5,5.6 +2020-11-27T01:00,25.4,88,22.5,0,0,3.7,5.8 +2020-11-27T02:00,24,87,20.6,0,0,3.8,6 +2020-11-27T03:00,22.6,84,18.4,0,0,3.2,6 +2020-11-27T04:00,21.4,77,15.2,0,0,2.5,5.1 +2020-11-27T05:00,18.7,78,12.8,0,0,3.9,4 +2020-11-27T06:00,20.2,62,9.2,0,0,2,4.7 +2020-11-27T07:00,20.1,54,6.1,0,0,3.6,6 +2020-11-27T08:00,22.2,49,6,0,0,3.2,7.6 +2020-11-27T09:00,27.6,39,5.7,0,0,0.5,7.6 +2020-11-27T10:00,32.3,38,9.5,0,0,3.3,9.8 +2020-11-27T11:00,35.3,38,11.9,0,0,4.5,12.3 +2020-11-27T12:00,37.8,35,12.7,0,0,2.9,12.3 +2020-11-27T13:00,39.9,32,12.7,0,0,0.7,10.3 +2020-11-27T14:00,41.5,30,12.3,0,0,2,8.1 +2020-11-27T15:00,41.3,30,12.4,0,0,2.2,7.8 +2020-11-27T16:00,38.3,38,15.1,0,0,2.7,6 +2020-11-27T17:00,35.1,43,14.7,0,0,3.8,4.5 +2020-11-27T18:00,28.3,56,14.7,0,0,6.4,7.8 +2020-11-27T19:00,25,61,13.5,0,0,3.7,7.8 +2020-11-27T20:00,21.5,69,12.9,0,0,3,5.1 +2020-11-27T21:00,21.1,68,12.2,0,0,3.6,5.1 +2020-11-27T22:00,21.8,60,10.1,0,0,4,6 +2020-11-27T23:00,22.4,52,7.3,0,0,4.1,6.5 +2020-11-28T00:00,22.2,49,6.1,0,0,4.1,6.5 +2020-11-28T01:00,21.9,49,5.8,0,0,3.8,6.3 +2020-11-28T02:00,21.4,52,6.4,0,0,3.8,5.8 +2020-11-28T03:00,20.9,53,6.6,0,0,3.9,5.4 +2020-11-28T04:00,21.3,52,6.4,0,0,3.8,5.6 +2020-11-28T05:00,18.8,57,6.2,0,0,7,6.3 +2020-11-28T06:00,21.7,51,6.4,0,0,4.2,8.3 +2020-11-28T07:00,21.6,53,7,0,0,4.8,6.5 +2020-11-28T08:00,27,44,8.1,0,0,6.1,9.6 +2020-11-28T09:00,34.5,34,8.8,0,0,4.4,10.5 +2020-11-28T10:00,43,24,8.3,0,0,2.2,9.8 +2020-11-28T11:00,48.5,18,6.3,0,0,1.9,8.1 +2020-11-28T12:00,51.5,15,5.6,0,0,2.3,8.5 +2020-11-28T13:00,53.1,16,7.4,0,0,3.5,9.2 +2020-11-28T14:00,53.2,17,9.4,0,0,2.8,9.2 +2020-11-28T15:00,50.5,45,30.2,0,0,2.2,6.7 +2020-11-28T16:00,43.8,34,17,0,0,3.7,4.7 +2020-11-28T17:00,37.5,35,12.2,0,0,4.9,5.1 +2020-11-28T18:00,31.8,50,15.1,0,0,5.8,7.4 +2020-11-28T19:00,32.1,50,15.6,0,0,6.2,8.7 +2020-11-28T20:00,35.2,41,13.8,0,0,7.2,11 +2020-11-28T21:00,32.9,44,13.1,0,0,7.8,11 +2020-11-28T22:00,30.2,49,13.2,0,0,9.9,11.6 +2020-11-28T23:00,30.9,47,13.2,0,0,8.5,11.9 +2020-11-29T00:00,30.4,52,14.6,0,0,7,11 +2020-11-29T01:00,25.6,65,15.4,0,0,6.2,11.4 +2020-11-29T02:00,27.1,62,15.7,0,0,6.4,10.1 +2020-11-29T03:00,28.9,53,13.8,0,0,5.5,13 +2020-11-29T04:00,24.9,62,13.6,0,0,6.5,8.9 +2020-11-29T05:00,29.1,51,13.1,0,0,2.7,8.3 +2020-11-29T06:00,29.6,50,13,0,0,2.9,4 +2020-11-29T07:00,29.6,50,13.1,0,0,1.7,4 +2020-11-29T08:00,29.1,51,13.1,0,0,1.2,2.7 +2020-11-29T09:00,32.9,43,12.9,0,0,2.4,7.2 +2020-11-29T10:00,34.8,40,12.8,0,0,1.9,8.3 +2020-11-29T11:00,35.7,39,13.1,0,0,3.8,11.2 +2020-11-29T12:00,36.1,39,13.5,0,0,3.7,11.9 +2020-11-29T13:00,36.7,38,13.6,0,0,3.1,11.4 +2020-11-29T14:00,37.1,38,13.6,0,0,2.5,10.3 +2020-11-29T15:00,36.9,38,13.6,0,0,2.1,8.9 +2020-11-29T16:00,33.7,48,16.3,0,0,2.7,6.9 +2020-11-29T17:00,31.9,48,14.3,0,0,2.8,5.6 +2020-11-29T18:00,26.3,61,14.8,0,0,4.2,6 +2020-11-29T19:00,24.1,67,14.8,0,0,4.1,6.7 +2020-11-29T20:00,22,73,14.7,0,0,4.3,6.5 +2020-11-29T21:00,20.8,74,13.9,0,0,3.7,6 +2020-11-29T22:00,19.6,73,12.5,0,0,2.7,6 +2020-11-29T23:00,20.1,68,11.4,0,0,3.2,4.7 +2020-11-30T00:00,20.2,64,9.9,0,0,3.4,5.1 +2020-11-30T01:00,20.4,57,7.5,0,0,3.7,5.8 +2020-11-30T02:00,20.2,51,5.1,0,0,4.2,6.9 +2020-11-30T03:00,19.4,50,3.6,0,0,4.1,7.2 +2020-11-30T04:00,19.6,45,1.7,0,0,4,6.9 +2020-11-30T05:00,17.2,48,1,0,0,7.1,6.5 +2020-11-30T06:00,20.6,41,0.8,0,0,4.7,8.3 +2020-11-30T07:00,21.1,41,1,0,0,4.5,7.2 +2020-11-30T08:00,26.7,32,0.7,0,0,6.7,10.1 +2020-11-30T09:00,35.8,22,0.6,0,0,6.5,12.3 +2020-11-30T10:00,44.8,16,1.2,0,0,5.9,12.3 +2020-11-30T11:00,51.6,12,0.1,0,0,4.7,12.3 +2020-11-30T12:00,55,10,-1.5,0,0,4.2,11 +2020-11-30T13:00,56.1,9,-0.9,0,0,5.8,11.6 +2020-11-30T14:00,55.1,11,1.9,0,0,5.9,12.1 +2020-11-30T15:00,50.5,15,4.6,0,0,4.8,10.5 +2020-11-30T16:00,48.8,17,5.3,0,0,7.2,10.5 +2020-11-30T17:00,42.7,25,9.3,0,0,3.4,8.9 +2020-11-30T18:00,29.5,44,10.1,0,0,5,8.5 +2020-11-30T19:00,25,65,14.8,0,0,4.1,7.2 +2020-11-30T20:00,27.5,49,10.9,0,0,6.1,9.2 +2020-11-30T21:00,26.5,48,9.2,0,0,4.7,10.1 +2020-11-30T22:00,26.4,47,9,0,0,7,11 +2020-11-30T23:00,28.3,41,7.5,0,0,6.9,11.9 +2020-12-01T00:00,27.9,41,7.3,0,0,5.1,11 +2020-12-01T01:00,27.8,42,7.9,0,0,4.1,7.8 +2020-12-01T02:00,28.5,42,8.2,0,0,5.4,8.9 +2020-12-01T03:00,28.4,43,8.9,0,0,5,9.2 +2020-12-01T04:00,29.4,45,10.5,0,0,4,7.8 +2020-12-01T05:00,38.8,26,7,0,0,2.8,6.3 +2020-12-01T06:00,30.4,37,7.3,0,0,6.6,8.5 +2020-12-01T07:00,31.1,38,8.6,0,0,5.8,8.5 +2020-12-01T08:00,34.7,37,11,0,0,7,10.5 +2020-12-01T09:00,36.4,40,14.2,0,0,9.2,14.5 +2020-12-01T10:00,35.2,48,17.4,0,0.055,4.1,15 +2020-12-01T11:00,38.7,37,14.5,0,0.028,6.4,11.6 +2020-12-01T12:00,40.3,33,13.2,0,0,7.2,16.6 +2020-12-01T13:00,41.1,33,13.9,0,0,8.9,17 +2020-12-01T14:00,37.9,49,20.6,0,0,12.3,22.1 +2020-12-01T15:00,38.7,41,16.9,0,0,9.5,21.5 +2020-12-01T16:00,36.8,39,14.4,0,0,8.1,15.9 +2020-12-01T17:00,33.3,57,19.7,0,0,13.3,27.7 +2020-12-01T18:00,31.3,64,20.6,0,0,11.2,22.1 +2020-12-01T19:00,28.7,72,20.9,0,0,8.5,18.3 +2020-12-01T20:00,28.2,74,20.9,0,0,6.5,14.1 +2020-12-01T21:00,27.1,73,19.5,0,0,7.6,12.1 +2020-12-01T22:00,26.9,61,15.3,0,0,9.1,15 +2020-12-01T23:00,26.2,60,14.3,0,0,7.8,14.8 +2020-12-02T00:00,25.8,59,13.4,0,0,7,12.8 +2020-12-02T01:00,24.8,58,12.1,0,0,5.4,11.6 +2020-12-02T02:00,24.6,58,11.8,0,0,5.7,9.2 +2020-12-02T03:00,22.8,61,11.2,0,0,5.1,9.2 +2020-12-02T04:00,21.2,63,10.4,0,0,3.6,8.3 +2020-12-02T05:00,19.9,59,7.8,0,0,4.7,6 +2020-12-02T06:00,18.9,61,7.6,0,0,4.4,7.2 +2020-12-02T07:00,18.7,64,8.4,0,0,3.7,6.3 +2020-12-02T08:00,22.1,56,8.9,0,0,1.4,5.1 +2020-12-02T09:00,24.8,47,7.4,0,0,3.4,8.7 +2020-12-02T10:00,27.7,35,3.7,0,0,9.4,17.2 +2020-12-02T11:00,29.3,32,2.8,0,0,11.2,21.3 +2020-12-02T12:00,30.3,30,2.8,0,0,11.8,21.7 +2020-12-02T13:00,31.6,29,3.3,0,0,12.5,23.7 +2020-12-02T14:00,31.9,30,4.1,0,0,11.9,23.3 +2020-12-02T15:00,31.4,32,4.7,0,0,9.1,21.3 +2020-12-02T16:00,29,37,6,0,0,6.1,15.7 +2020-12-02T17:00,23.2,57,10.2,0,0,6.8,9.6 +2020-12-02T18:00,22.7,61,11.3,0,0,5.1,8.5 +2020-12-02T19:00,23.8,59,11.4,0,0,3.8,6.5 +2020-12-02T20:00,25.3,54,10.9,0,0,1.6,6.5 +2020-12-02T21:00,22.9,60,11,0,0,2,2.7 +2020-12-02T22:00,20.4,60,8.9,0,0,3.4,4.7 +2020-12-02T23:00,19.6,57,7,0,0,4.2,5.4 +2020-12-03T00:00,19.5,54,5.6,0,0,4.6,5.6 +2020-12-03T01:00,19.3,52,4.4,0,0,4,5.6 +2020-12-03T02:00,19,50,3.3,0,0,4.5,5.4 +2020-12-03T03:00,19.1,47,2.3,0,0,4.5,5.8 +2020-12-03T04:00,19.4,45,1.5,0,0,4.5,5.8 +2020-12-03T05:00,19.7,44,1.2,0,0,5.4,6.5 +2020-12-03T06:00,18.6,45,1,0,0,5.9,6.9 +2020-12-03T07:00,18.3,46,1,0,0,6,7.6 +2020-12-03T08:00,23.9,36,0.9,0,0,5.9,8.5 +2020-12-03T09:00,30.4,27,0.7,0,0,3.4,9.4 +2020-12-03T10:00,37,20,-0.8,0,0,3,8.9 +2020-12-03T11:00,41.5,15,-3.2,0,0,3.6,10.5 +2020-12-03T12:00,43.8,12,-5.6,0,0,2.5,10.5 +2020-12-03T13:00,45,9,-11.4,0,0,1.6,8.9 +2020-12-03T14:00,45.1,7,-16.2,0,0,3.9,8.9 +2020-12-03T15:00,43.4,7,-15.5,0,0,3,9.2 +2020-12-03T16:00,41.8,9,-13.2,0,0,2.2,5.1 +2020-12-03T17:00,39.1,13,-7.3,0,0,3.4,2.7 +2020-12-03T18:00,27.3,32,1,0,0,5.9,7.6 +2020-12-03T19:00,26.1,43,6.8,0,0,4.7,7.6 +2020-12-03T20:00,25.2,49,8.7,0,0,5.2,7.2 +2020-12-03T21:00,25.3,48,8.5,0,0,5.4,7.4 +2020-12-03T22:00,25.2,49,8.7,0,0,6.2,7.8 +2020-12-03T23:00,24.6,51,9.1,0,0,7.3,8.5 +2020-12-04T00:00,24.8,51,9.4,0,0,7,8.5 +2020-12-04T01:00,25.3,52,10.2,0,0,6,8.3 +2020-12-04T02:00,25.1,55,11.1,0,0,6.4,7.8 +2020-12-04T03:00,25.3,55,11.5,0,0,5.9,7.8 +2020-12-04T04:00,24.9,57,11.7,0,0,6.7,8.1 +2020-12-04T05:00,24.1,57,11.1,0,0,6.9,8.3 +2020-12-04T06:00,24.1,58,11.3,0,0,7.1,8.3 +2020-12-04T07:00,24.4,57,11.5,0,0,6.5,8.3 +2020-12-04T08:00,30,46,11.6,0,0,5.2,8.1 +2020-12-04T09:00,37.6,34,11.9,0,0,5,10.3 +2020-12-04T10:00,45.9,25,12.2,0,0,3.1,9.8 +2020-12-04T11:00,51.8,20,11.4,0,0,3.5,9.4 +2020-12-04T12:00,55,16,10,0,0,3.2,9.6 +2020-12-04T13:00,55.9,17,11.9,0,0,2.6,8.9 +2020-12-04T14:00,55.4,19,13.2,0,0,2.3,7.6 +2020-12-04T15:00,54.1,21,15.4,0,0,1.1,4.9 +2020-12-04T16:00,51.3,25,16.2,0,0,1.4,1.8 +2020-12-04T17:00,48,28,16.1,0,0,1.6,2 +2020-12-04T18:00,36.5,44,16.8,0,0,3,3.6 +2020-12-04T19:00,28,67,18.6,0,0,3.3,5.4 +2020-12-04T20:00,24.6,79,19,0,0,3.8,6 +2020-12-04T21:00,23.3,81,18.2,0,0,5.1,8.3 +2020-12-04T22:00,22.9,78,17.2,0,0,3.2,8.1 +2020-12-04T23:00,22.1,80,16.9,0,0,2.8,5.4 +2020-12-05T00:00,22.1,77,16.1,0,0,2.1,3.6 +2020-12-05T01:00,23.1,69,14.5,0,0,3.6,5.8 +2020-12-05T02:00,24.1,61,12.5,0,0,5.5,6.7 +2020-12-05T03:00,24.3,58,11.7,0,0,5.4,7.2 +2020-12-05T04:00,24.5,56,11.2,0,0,5.1,6.9 +2020-12-05T05:00,23.3,60,11.4,0,0,6.9,7.4 +2020-12-05T06:00,23.5,59,11.1,0,0,6.1,8.1 +2020-12-05T07:00,22.8,60,10.9,0,0,5,7.4 +2020-12-05T08:00,26,52,10.8,0,0,6.2,9.6 +2020-12-05T09:00,35.9,35,10.7,0,0,6,11.4 +2020-12-05T10:00,46.1,23,10.7,0,0,5.1,11.4 +2020-12-05T11:00,50.2,20,10.8,0,0,5.6,12.3 +2020-12-05T12:00,50.5,23,13.8,0,0,7.7,15 +2020-12-05T13:00,50.5,24,14.7,0,0,6.1,15.2 +2020-12-05T14:00,50.3,25,15.4,0,0,2.7,12.5 +2020-12-05T15:00,49.1,32,20.6,0,0,1.3,7.2 +2020-12-05T16:00,42.2,41,20.3,0,0,4.2,4.5 +2020-12-05T17:00,38.8,43,18.3,0,0,4.5,9.4 +2020-12-05T18:00,33.4,56,19.5,0,0,6.5,7.8 +2020-12-05T19:00,29,69,20,0,0,4.6,7.6 +2020-12-05T20:00,27.8,70,19.2,0,0,4.4,6.7 +2020-12-05T21:00,27.5,63,16.5,0,0,4.3,6.9 +2020-12-05T22:00,26.2,62,15,0,0,4.3,6.9 +2020-12-05T23:00,25.5,61,13.8,0,0,4.5,6.3 +2020-12-06T00:00,25.5,59,13,0,0,5.1,6.5 +2020-12-06T01:00,25.3,58,12.7,0,0,5.5,7.4 +2020-12-06T02:00,25.4,57,12.2,0,0,5.4,7.2 +2020-12-06T03:00,25.8,55,11.7,0,0,6,7.8 +2020-12-06T04:00,25.6,53,10.9,0,0,6.7,7.8 +2020-12-06T05:00,24.9,53,10.3,0,0,6.7,8.1 +2020-12-06T06:00,29.1,43,9.1,0,0,4.5,7.8 +2020-12-06T07:00,28.7,42,8.7,0,0,4.7,5.4 +2020-12-06T08:00,32.2,37,8.6,0,0,4.2,6.9 +2020-12-06T09:00,41.1,26,9.1,0,0,3.7,8.1 +2020-12-06T10:00,47.4,24,12.6,0,0,2.1,7.6 +2020-12-06T11:00,51.9,22,14.5,0,0,2.9,8.3 +2020-12-06T12:00,54.8,21,15.5,0,0,2.7,8.7 +2020-12-06T13:00,56.9,19,15.3,0,0,2.7,8.3 +2020-12-06T14:00,57.8,19,15.9,0,0,3.2,7.8 +2020-12-06T15:00,55.9,26,21.5,0,0,3.3,7.6 +2020-12-06T16:00,46.9,34,19.6,0,0,6.4,7.8 +2020-12-06T17:00,50.4,21,12.2,0,0,5.8,9.4 +2020-12-06T18:00,38.1,37,14.3,0,0,5,6.7 +2020-12-06T19:00,32.9,50,16.3,0,0,4.9,8.1 +2020-12-06T20:00,30,54,15.4,0,0,5.2,7.4 +2020-12-06T21:00,28.8,53,13.6,0,0,5.2,7.4 +2020-12-06T22:00,27.3,52,12,0,0,5.4,7.4 +2020-12-06T23:00,26.2,53,11.2,0,0,5.9,7.6 +2020-12-07T00:00,25.8,53,11,0,0,6.6,8.1 +2020-12-07T01:00,26.6,50,10.6,0,0,5.2,7.8 +2020-12-07T02:00,25,54,10.5,0,0,6.1,6.7 +2020-12-07T03:00,25.2,52,10.1,0,0,5.4,7.2 +2020-12-07T04:00,24.4,54,10.1,0,0,5.1,6.7 +2020-12-07T05:00,23.8,56,10.3,0,0,5.9,6.3 +2020-12-07T06:00,24.4,53,9.5,0,0,5.7,7.2 +2020-12-07T07:00,25.5,49,9,0,0,5,7.2 +2020-12-07T08:00,30.8,39,8.8,0,0,5.7,8.9 +2020-12-07T09:00,38.3,31,10.2,0,0,5.1,10.5 +2020-12-07T10:00,46.5,27,14.1,0,0,4.3,9.8 +2020-12-07T11:00,53.1,20,13.2,0,0,5,10.7 +2020-12-07T12:00,56.6,15,9.5,0,0,5,11.2 +2020-12-07T13:00,58.1,14,8.9,0,0,4.4,11 +2020-12-07T14:00,58,14,9.2,0,0,3.6,9.8 +2020-12-07T15:00,55.3,27,21.8,0,0,2.4,8.1 +2020-12-07T16:00,45.8,35,19.9,0,0,6.7,7.8 +2020-12-07T17:00,38.8,35,13.6,0,0,6.8,9.8 +2020-12-07T18:00,36.2,42,15.3,0,0,5.9,8.9 +2020-12-07T19:00,33.7,46,14.9,0,0,5.2,8.9 +2020-12-07T20:00,31,50,14.7,0,0,4.8,8.1 +2020-12-07T21:00,29,49,12.1,0,0,6.7,8.3 +2020-12-07T22:00,33.4,37,9.9,0,0,4.6,8.9 +2020-12-07T23:00,28,45,9.3,0,0,6.2,6.9 +2020-12-08T00:00,30.3,39,8.1,0,0,5,7.6 +2020-12-08T01:00,27.1,44,8.1,0,0,5.7,6.5 +2020-12-08T02:00,24.8,50,8.9,0,0,6.6,7.8 +2020-12-08T03:00,24.5,52,9.5,0,0,6.1,7.8 +2020-12-08T04:00,24.1,53,9.5,0,0,6.2,7.8 +2020-12-08T05:00,24.4,49,7.9,0,0,6.8,7.8 +2020-12-08T06:00,24.9,44,6.2,0,0,6.4,8.5 +2020-12-08T07:00,24.2,42,4.1,0,0,7.5,8.9 +2020-12-08T08:00,31,30,3,0,0,5.2,8.9 +2020-12-08T09:00,40.3,21,3.8,0,0,7.1,12.3 +2020-12-08T10:00,48.8,20,9.2,0,0,5.9,12.1 +2020-12-08T11:00,55.3,18,12.9,0,0,5.5,11.9 +2020-12-08T12:00,59.5,16,13.7,0,0,4.5,11.2 +2020-12-08T13:00,61.4,15,13.8,0,0,4.2,9.8 +2020-12-08T14:00,62.2,17,16.6,0,0,2.8,9.2 +2020-12-08T15:00,60,32,29.9,0,0,1.6,6 +2020-12-08T16:00,57.7,24,21.4,0,0,4.4,5.1 +2020-12-08T17:00,51.5,24,15.8,0,0,3.7,12.1 +2020-12-08T18:00,49.1,24,14.3,0,0,6.9,6.9 +2020-12-08T19:00,37.5,28,7,0,0,9.7,12.3 +2020-12-08T20:00,35.3,27,4.6,0,0,10.4,12.5 +2020-12-08T21:00,32.8,33,6.5,0,0,9.2,12.3 +2020-12-08T22:00,30.8,40,9.4,0,0,7.6,11.2 +2020-12-08T23:00,29.6,41,8.7,0,0,7.8,9.4 +2020-12-09T00:00,29.8,38,7.4,0,0,6.7,9.2 +2020-12-09T01:00,28.9,40,7.4,0,0,6,8.1 +2020-12-09T02:00,27.8,41,7.1,0,0,7.7,8.9 +2020-12-09T03:00,28.3,38,5.9,0,0,7.6,9.4 +2020-12-09T04:00,28.7,37,5.7,0,0,6.4,9.2 +2020-12-09T05:00,27.3,36,4,0,0,7.8,8.5 +2020-12-09T06:00,28,36,4.2,0,0,5.7,9.6 +2020-12-09T07:00,27,37,3.9,0,0,5.4,8.5 +2020-12-09T08:00,30.5,30,2.8,0,0,4.2,8.3 +2020-12-09T09:00,36.8,22,1.6,0,0,4.9,9.8 +2020-12-09T10:00,44.6,17,2.8,0,0,3.4,9.6 +2020-12-09T11:00,51.1,16,6.9,0,0,3.1,8.9 +2020-12-09T12:00,55.2,15,7.9,0,0,4.5,9.8 +2020-12-09T13:00,58.3,11,4.7,0,0,4.6,10.7 +2020-12-09T14:00,59.3,11,4.9,0,0,3.2,9.6 +2020-12-09T15:00,55.5,40,31.4,0,0,4,6.5 +2020-12-09T16:00,55.9,15,8.3,0,0,2.9,5.4 +2020-12-09T17:00,46,26,13.1,0,0,5.7,4.5 +2020-12-09T18:00,39.3,36,14.4,0,0,7.2,8.5 +2020-12-09T19:00,36.5,35,11.7,0,0,7.9,9.2 +2020-12-09T20:00,32.2,43,11.9,0,0,7.9,10.3 +2020-12-09T21:00,29.7,49,12.8,0,0,7.6,9.6 +2020-12-09T22:00,28.2,52,12.8,0,0,7.4,9.2 +2020-12-09T23:00,27.3,53,12.3,0,0,7.4,8.9 +2020-12-10T00:00,26.9,51,11.2,0,0,6.8,8.7 +2020-12-10T01:00,27,49,10.1,0,0,6.4,8.5 +2020-12-10T02:00,26.7,48,9.7,0,0,6.9,8.1 +2020-12-10T03:00,27.2,47,9.4,0,0,6.9,8.3 +2020-12-10T04:00,30.2,41,9.2,0,0,5.2,8.3 +2020-12-10T05:00,31.2,40,9.4,0,0,5.6,7.8 +2020-12-10T06:00,29.5,49,12.5,0,0,5.4,9.6 +2020-12-10T07:00,26.7,57,13.5,0,0,7.6,9.2 +2020-12-10T08:00,31.1,55,16.7,0,0,5.7,9.2 +2020-12-10T09:00,37,39,14.2,0,0,4.8,9.4 +2020-12-10T10:00,40.1,40,17.4,0,0,6.7,12.5 +2020-12-10T11:00,40.4,43,19.9,0,0,7.1,14.5 +2020-12-10T12:00,40.6,43,19.9,0,0,4.7,14.5 +2020-12-10T13:00,40.5,44,20.3,0,0,4.2,10.7 +2020-12-10T14:00,40.3,46,20.9,0,0,4,10.1 +2020-12-10T15:00,40.1,47,21.6,0,0,4.7,9.6 +2020-12-10T16:00,37.8,55,23,0,0,3.4,9.2 +2020-12-10T17:00,35.6,56,21.3,0,0,6.5,6.3 +2020-12-10T18:00,33.7,62,22.2,0,0,6.3,11.2 +2020-12-10T19:00,32.1,68,22.8,0,0,5.7,10.3 +2020-12-10T20:00,30.3,77,23.8,0,0.028,5.9,9.8 +2020-12-10T21:00,29.4,82,24.5,0,0.083,5.8,10.5 +2020-12-10T22:00,28.5,85,24.6,0,0.11,6.4,11.2 +2020-12-10T23:00,27.9,86,24.1,0,0.055,5.9,11.2 +2020-12-11T00:00,27.2,85,23.3,0,0.028,4.8,10.3 +2020-12-11T01:00,26.8,84,22.7,0,0.028,4.4,8.7 +2020-12-11T02:00,26.3,84,22.3,0,0.028,3.8,8.3 +2020-12-11T03:00,26.1,84,21.8,0,0,3.2,7.2 +2020-12-11T04:00,26,83,21.4,0,0,2.9,6.5 +2020-12-11T05:00,25.6,83,21.3,0,0,3.5,6.3 +2020-12-11T06:00,25.8,82,21.1,0,0.028,3,7.4 +2020-12-11T07:00,25.8,81,20.8,0,0.028,2.4,6.5 +2020-12-11T08:00,26,81,20.9,0,0.028,2.7,6.3 +2020-12-11T09:00,26.9,79,21.3,0,0.028,3.3,8.5 +2020-12-11T10:00,27.4,79,21.7,0,0.028,4,9.6 +2020-12-11T11:00,28,77,21.6,0,0.055,3.8,10.3 +2020-12-11T12:00,28.3,76,21.7,0,0.055,3.2,10.1 +2020-12-11T13:00,28.8,72,20.9,0,0.055,4.1,10.3 +2020-12-11T14:00,29.1,70,20.6,0,0.055,4.8,11 +2020-12-11T15:00,29.5,68,20.2,0,0.028,4.8,11.4 +2020-12-11T16:00,28.6,69,19.8,0,0,4.9,10.7 +2020-12-11T17:00,23.1,79,17.6,0,0,4.4,8.7 +2020-12-11T18:00,22.7,81,17.7,0,0,3.7,8.1 +2020-12-11T19:00,22.8,80,17.7,0,0,1.1,6.3 +2020-12-11T20:00,23.2,79,17.5,0,0,0.6,3.8 +2020-12-11T21:00,22.7,76,16.3,0,0,0.5,3.8 +2020-12-11T22:00,21.7,78,15.8,0,0,1.4,3.4 +2020-12-11T23:00,20.6,82,15.9,0,0,1.6,3.4 +2020-12-12T00:00,19.2,88,16.2,0,0,2.6,4.3 +2020-12-12T01:00,19,89,16.3,0,0,2.7,4.5 +2020-12-12T02:00,18.3,90,15.8,0,0,3.6,4.7 +2020-12-12T03:00,18.1,90,15.7,0,0,2.9,4.7 +2020-12-12T04:00,18.5,88,15.4,0,0,2.6,4 +2020-12-12T05:00,16.2,92,14.4,0,0,3.6,4.5 +2020-12-12T06:00,17.2,94,15.8,0,0,3.8,6 +2020-12-12T07:00,17.7,91,15.6,0,0,5.3,9.2 +2020-12-12T08:00,18.2,88,15.4,0,0,4.5,9.8 +2020-12-12T09:00,19.2,85,15.4,0,0,3.2,9.2 +2020-12-12T10:00,20.8,78,15.1,0,0,3.8,9.6 +2020-12-12T11:00,22.7,72,14.9,0,0,4.7,11.6 +2020-12-12T12:00,25.7,63,14.9,0,0,5.5,13.6 +2020-12-12T13:00,27.3,60,15.3,0,0,6.2,14.5 +2020-12-12T14:00,26.8,61,15.3,0,0,8.2,16.1 +2020-12-12T15:00,25.9,65,15.7,0,0,9.1,16.3 +2020-12-12T16:00,24.8,69,16.2,0,0,9.4,18.1 +2020-12-12T17:00,20.7,77,14.5,0,0.028,6.5,15.7 +2020-12-12T18:00,20.7,78,14.8,0,0.055,8,14.3 +2020-12-12T19:00,21.3,78,15.4,0,0.055,7.3,14.3 +2020-12-12T20:00,21.3,78,15.6,0,0.028,8.3,14.1 +2020-12-12T21:00,21.6,77,15.5,0,0.055,7.9,14.8 +2020-12-12T22:00,22.2,80,17,0,0.11,9,15 +2020-12-12T23:00,22.9,84,18.8,0,0.138,9.3,16.6 +2020-12-13T00:00,23.5,85,19.8,0,0.083,10.6,17.4 +2020-12-13T01:00,24.4,80,19,0,0.028,10.7,17.9 +2020-12-13T02:00,23.2,76,16.8,0,0,6.7,17.7 +2020-12-13T03:00,22.2,77,16.2,0,0,1.9,10.7 +2020-12-13T04:00,20.7,81,15.8,0,0,1.6,3.8 +2020-12-13T05:00,16,86,12.7,0,0,3.4,4 +2020-12-13T06:00,16.5,87,13.4,0,0,4.7,7.2 +2020-12-13T07:00,15.9,82,11.4,0,0,4.4,7.6 +2020-12-13T08:00,17.2,64,6.9,0,0,6.3,9.8 +2020-12-13T09:00,21.8,48,5.2,0,0,6.3,12.1 +2020-12-13T10:00,27.1,42,7,0,0,10.6,18.8 +2020-12-13T11:00,30.6,31,3.2,0,0,12.5,22.8 +2020-12-13T12:00,34.6,26,2.9,0,0,11.9,22.8 +2020-12-13T13:00,37.9,20,0.8,0,0,9.8,22.1 +2020-12-13T14:00,39.5,18,-0.5,0,0,7.8,18.3 +2020-12-13T15:00,39.3,18,-1,0,0,5.1,14.5 +2020-12-13T16:00,35.1,21,-0.8,0,0,3.3,7.8 +2020-12-13T17:00,22.4,52,7.3,0,0,6.3,8.1 +2020-12-13T18:00,22.7,52,7.7,0,0,4.6,8.3 +2020-12-13T19:00,27.2,43,7.5,0,0,2.3,6.7 +2020-12-13T20:00,20.8,55,7.1,0,0,4.5,5.1 +2020-12-13T21:00,18.4,59,6.4,0,0,4.4,6 +2020-12-13T22:00,19.2,52,4.6,0,0,3.6,5.6 +2020-12-13T23:00,20.9,46,3.3,0,0,1.9,4.7 +2020-12-14T00:00,20.9,45,2.8,0,0,0.9,2.5 +2020-12-14T01:00,17.8,52,2.9,0,0,3,3.8 +2020-12-14T02:00,17.3,57,4.6,0,0,3,4 +2020-12-14T03:00,17.6,61,6.4,0,0,3.4,4.5 +2020-12-14T04:00,16.7,64,6.6,0,0,6.9,12.8 +2020-12-14T05:00,13.6,80,8.6,0,0,3.7,11.4 +2020-12-14T06:00,13.6,75,7.1,0,0,2.6,4.7 +2020-12-14T07:00,14.2,68,5.6,0,0,2.5,4.3 +2020-12-14T08:00,14.8,66,5.4,0,0,4.6,8.3 +2020-12-14T09:00,19.1,52,4.3,0,0,4.3,10.3 +2020-12-14T10:00,25.2,40,4.1,0,0,3.7,10.5 +2020-12-14T11:00,30.5,34,5.2,0,0,2,10.5 +2020-12-14T12:00,34.3,32,7.5,0,0,5.1,11.6 +2020-12-14T13:00,33.9,32,7.3,0,0,5.9,12.3 +2020-12-14T14:00,33.9,34,8.3,0,0,5.1,12.5 +2020-12-14T15:00,32.9,36,9,0,0,6.5,11.9 +2020-12-14T16:00,28.9,44,10,0,0,3.6,11.6 +2020-12-14T17:00,21.5,68,12.4,0,0,6.5,6 +2020-12-14T18:00,25.3,59,12.9,0,0,3.8,8.1 +2020-12-14T19:00,26.4,60,14.5,0,0.028,4.1,6 +2020-12-14T20:00,25.7,70,17.2,0,0.055,5.1,8.3 +2020-12-14T21:00,25.2,77,19,0,0.055,5.1,8.1 +2020-12-14T22:00,24.5,81,19.6,0,0.055,6.5,10.5 +2020-12-14T23:00,23.9,81,19,0,0.055,6.3,11.6 +2020-12-15T00:00,23.7,83,19.2,0,0.055,5.4,10.3 +2020-12-15T01:00,23.2,83,18.9,0,0.055,4,8.9 +2020-12-15T02:00,23.1,83,18.6,0,0.028,2.2,7.2 +2020-12-15T03:00,22.7,83,18.3,0,0,2.3,4.5 +2020-12-15T04:00,22.2,84,18.1,0,0,1.1,4 +2020-12-15T05:00,19.5,89,16.8,0,0,5.4,2.9 +2020-12-15T06:00,22.2,83,17.9,0,0,4.7,7.4 +2020-12-15T07:00,20.4,81,15.4,0,0,5.5,7.8 +2020-12-15T08:00,23.5,76,16.9,0,0.028,4.5,7.8 +2020-12-15T09:00,22.9,78,17.2,0,0.028,3.6,7.4 +2020-12-15T10:00,26.8,67,17.2,0,0.028,4.1,7.8 +2020-12-15T11:00,27.9,62,16.4,0,0.028,5.8,10.7 +2020-12-15T12:00,28.8,60,16.4,0,0,5,11.6 +2020-12-15T13:00,29.4,57,15.9,0,0,3.9,9.4 +2020-12-15T14:00,29.6,56,16,0,0,2.1,7.4 +2020-12-15T15:00,27.3,66,17.4,0,0,2.7,4.7 +2020-12-15T16:00,21.1,68,12.3,0,0,6.8,8.9 +2020-12-15T17:00,27.9,56,14,0,0,2.1,10.7 +2020-12-15T18:00,23.7,66,14.2,0,0,3.6,4.7 +2020-12-15T19:00,21.2,73,13.8,0,0,8.5,12.3 +2020-12-15T20:00,19.8,72,12.1,0,0,10.6,16.6 +2020-12-15T21:00,16.1,70,8.2,0,0,5.2,16.6 +2020-12-15T22:00,16.1,63,5.8,0,0,10.6,16.1 +2020-12-15T23:00,15.4,60,3.8,0,0,11.9,18.1 +2020-12-16T00:00,15.7,59,3.8,0,0,11.3,18.1 +2020-12-16T01:00,16.9,58,4.5,0,0,11.6,17.7 +2020-12-16T02:00,17,57,4.3,0,0,12,17.7 +2020-12-16T03:00,16.5,59,4.8,0,0,13.6,20.4 +2020-12-16T04:00,16.6,61,5.4,0,0,12.5,20.6 +2020-12-16T05:00,20.3,60,8.7,0,0,5.5,19.9 +2020-12-16T06:00,21.7,60,10.1,0,0,14.3,22.8 +2020-12-16T07:00,21,64,10.8,0,0,7.6,21.5 +2020-12-16T08:00,25.3,53,10.7,0,0,2.5,8.5 +2020-12-16T09:00,27.9,48,10.6,0,0,1.4,5.8 +2020-12-16T10:00,33.5,39,11,0,0,2.6,7.2 +2020-12-16T11:00,36.6,36,12.2,0,0,4.5,11.2 +2020-12-16T12:00,38.5,33,11.7,0,0,4.8,11 +2020-12-16T13:00,40.4,29,10.8,0,0,4,11.6 +2020-12-16T14:00,39.9,29,10,0,0,2.4,9.8 +2020-12-16T15:00,38.8,31,10.7,0,0,6.3,9.8 +2020-12-16T16:00,34.2,40,12.4,0,0,6.7,11.4 +2020-12-16T17:00,30,55,15.6,0,0,5.9,10.3 +2020-12-16T18:00,30.3,53,15.1,0,0,4.7,8.1 +2020-12-16T19:00,31.6,44,12,0,0,6.3,8.3 +2020-12-16T20:00,33.4,39,11.4,0,0,2.7,9.2 +2020-12-16T21:00,27.8,56,14.2,0,0,4.9,6.7 +2020-12-16T22:00,24.7,66,14.8,0,0,9.9,14.8 +2020-12-16T23:00,25.2,61,13.5,0,0,8.5,15.4 +2020-12-17T00:00,25.4,58,12.7,0,0,5.8,13.2 +2020-12-17T01:00,25.5,56,11.9,0,0,4.8,9.2 +2020-12-17T02:00,24.4,57,11.1,0,0,6.6,10.3 +2020-12-17T03:00,23.5,56,10.1,0,0,7.2,11.2 +2020-12-17T04:00,22.6,55,9,0,0,6.5,11.2 +2020-12-17T05:00,20.3,61,9,0,0,7.3,11 +2020-12-17T06:00,21.4,57,8.4,0,0,5.9,12.1 +2020-12-17T07:00,21,58,8.5,0,0,4.5,9.2 +2020-12-17T08:00,23.7,52,8.6,0,0,6.1,8.5 +2020-12-17T09:00,29.5,42,9.1,0,0,4.8,10.7 +2020-12-17T10:00,36.3,34,10.5,0,0,5.8,11.9 +2020-12-17T11:00,42.1,29,12.3,0,0,6.4,13.2 +2020-12-17T12:00,41.7,33,14.8,0,0,6.9,13.2 +2020-12-17T13:00,43.2,32,15.3,0,0,5.9,11.2 +2020-12-17T14:00,42.4,34,15.7,0,0,3.2,9.4 +2020-12-17T15:00,39.5,39,16.7,0,0,4.6,5.8 +2020-12-17T16:00,35.3,47,17.2,0,0,6.1,6.9 +2020-12-17T17:00,33.5,52,18,0,0,4.3,7.8 +2020-12-17T18:00,28.5,69,19.7,0,0,5.5,8.1 +2020-12-17T19:00,29,70,20.5,0,0,5.8,6.9 +2020-12-17T20:00,25.7,78,19.9,0,0,5,6.9 +2020-12-17T21:00,25.4,76,19,0,0,5.7,7.2 +2020-12-17T22:00,24.4,75,17.5,0,0,5.2,6.9 +2020-12-17T23:00,24.3,72,16.4,0,0,3.5,6 +2020-12-18T00:00,22.1,76,15.6,0,0,2.1,4.7 +2020-12-18T01:00,19.7,81,14.8,0,0,2.7,3.6 +2020-12-18T02:00,19.6,79,14,0,0,3.2,5.1 +2020-12-18T03:00,18.8,78,13.1,0,0,2.6,5.4 +2020-12-18T04:00,18,79,12.7,0,0,1.4,4.5 +2020-12-18T05:00,16.6,79,11.2,0,0,4.5,6.9 +2020-12-18T06:00,20.8,70,12.7,0,0,2.6,5.8 +2020-12-18T07:00,23.2,65,13.2,0,0,3.4,4 +2020-12-18T08:00,27.7,55,13.6,0,0,2.4,4.7 +2020-12-18T09:00,30.1,53,15.2,0,0,7.3,12.8 +2020-12-18T10:00,33.1,55,18.9,0,0,2.2,12.1 +2020-12-18T11:00,34.9,63,23.5,0,0.055,5.2,11.9 +2020-12-18T12:00,33.5,77,27.1,0,0.11,3.6,11.9 +2020-12-18T13:00,33.4,79,27.6,0,0.055,4.2,8.3 +2020-12-18T14:00,33.7,78,27.6,0,0.028,5,9.2 +2020-12-18T15:00,33.8,77,27.4,0,0,3.7,9.4 +2020-12-18T16:00,33.4,74,26,0,0,2.9,6.9 +2020-12-18T17:00,27.7,86,24,0,0,4.7,3.6 +2020-12-18T18:00,25.8,86,22.2,0,0,5.2,7.6 +2020-12-18T19:00,24.1,86,20.6,0,0,6,8.1 +2020-12-18T20:00,22.8,86,19.1,0,0,6.5,8.9 +2020-12-18T21:00,19.9,85,16.1,0,0,7.4,9.8 +2020-12-18T22:00,16.2,87,13.1,0,0,7.6,10.5 +2020-12-18T23:00,13.5,87,10.4,0,0,7.6,11 +2020-12-19T00:00,12.8,84,8.9,0,0,7.6,10.3 +2020-12-19T01:00,12.7,81,7.9,0,0,6.9,10.7 +2020-12-19T02:00,15,74,8.2,0,0,5.4,10.1 +2020-12-19T03:00,15.8,72,8.2,0,0,5.6,9.2 +2020-12-19T04:00,15.9,70,7.9,0,0,6,9.4 +2020-12-19T05:00,19.9,68,10.9,0,0,8.1,9.6 +2020-12-19T06:00,18.8,66,9.1,0,0,7.2,13.2 +2020-12-19T07:00,16.5,66,7.3,0,0,6.1,12.3 +2020-12-19T08:00,20.1,63,9.5,0,0,4.6,8.9 +2020-12-19T09:00,27.2,59,14.7,0,0,3.8,8.5 +2020-12-19T10:00,34.3,54,19.5,0,0,5,10.3 +2020-12-19T11:00,38.4,48,20.5,0,0,8.3,15.4 +2020-12-19T12:00,39.7,44,19.6,0,0,16,27.7 +2020-12-19T13:00,43.5,30,14.2,0,0,13.2,28.4 +2020-12-19T14:00,43.8,31,15.3,0,0,13.5,22.1 +2020-12-19T15:00,41.5,35,16,0,0,10.6,22.4 +2020-12-19T16:00,36.7,39,14.2,0,0,5.4,15.9 +2020-12-19T17:00,32.5,46,13.9,0,0,7.8,9.6 +2020-12-19T18:00,31.6,52,15.9,0,0,6.8,13.2 +2020-12-19T19:00,29.1,57,15.8,0,0,4.9,11.4 +2020-12-19T20:00,28.8,55,14.5,0,0,6,8.9 +2020-12-19T21:00,29.8,52,14.5,0,0,7.2,10.7 +2020-12-19T22:00,28.3,56,14.5,0,0,6.7,10.1 +2020-12-19T23:00,29.8,52,14.4,0,0,3.1,8.7 +2020-12-20T00:00,25,60,13.1,0,0,3.7,6.3 +2020-12-20T01:00,23.3,58,10.9,0,0,8.5,12.1 +2020-12-20T02:00,23.1,56,9.9,0,0,8.9,13.4 +2020-12-20T03:00,23.1,56,9.9,0,0,9,13.6 +2020-12-20T04:00,22.4,57,9.6,0,0,8.7,14.1 +2020-12-20T05:00,22.5,61,11.2,0,0,7.8,13.9 +2020-12-20T06:00,23.2,60,11.2,0,0,6.8,14.1 +2020-12-20T07:00,24.7,56,11.2,0,0,5.7,10.3 +2020-12-20T08:00,27.4,51,11.5,0,0,7.4,9.8 +2020-12-20T09:00,32.8,40,11.3,0,0,9.9,13.9 +2020-12-20T10:00,38,38,14.6,0,0,11.9,18.8 +2020-12-20T11:00,44,32,16.2,0,0,13.5,22.1 +2020-12-20T12:00,47.9,30,18.1,0,0,15.4,23.9 +2020-12-20T13:00,51,28,18.7,0,0,13.8,26.8 +2020-12-20T14:00,52.4,29,20.8,0,0,4.7,23 +2020-12-20T15:00,50.2,32,21.7,0,0,1.4,9.6 +2020-12-20T16:00,48.3,36,22.6,0,0,4.1,5.8 +2020-12-20T17:00,38.8,52,22.7,0,0,7.6,6.9 +2020-12-20T18:00,37,57,23,0,0,7.3,9.6 +2020-12-20T19:00,33.3,67,23.4,0,0,7.5,8.5 +2020-12-20T20:00,39.1,52,22.8,0,0,7.7,11.2 +2020-12-20T21:00,40.3,50,23.2,0,0,8.8,14.3 +2020-12-20T22:00,36.1,58,22.9,0,0,6.5,14.1 +2020-12-20T23:00,31.7,68,22.4,0,0,7.7,9.6 +2020-12-21T00:00,31.6,68,22.4,0,0,6.7,9.4 +2020-12-21T01:00,35.3,59,22.6,0,0,6.8,10.1 +2020-12-21T02:00,36.4,58,23.1,0,0,7.7,12.1 +2020-12-21T03:00,35.8,60,23.4,0,0,7.5,12.1 +2020-12-21T04:00,34.5,64,23.6,0,0,5.9,11.6 +2020-12-21T05:00,30.8,72,22.7,0,0,7.2,8.9 +2020-12-21T06:00,30.4,72,22.6,0,0,5.9,8.7 +2020-12-21T07:00,30,75,22.9,0,0,5.8,7.2 +2020-12-21T08:00,35.3,62,23.5,0,0,5.9,8.3 +2020-12-21T09:00,43.1,47,24.1,0,0,7.4,11.2 +2020-12-21T10:00,49.7,39,25.5,0,0,2.3,11.2 +2020-12-21T11:00,52,39,27.6,0,0,2.9,6 +2020-12-21T12:00,53.4,38,28.5,0,0,6.8,11.9 +2020-12-21T13:00,54.2,36,27.9,0,0,10.4,16.8 +2020-12-21T14:00,54.1,35,27.1,0,0,12,20.1 +2020-12-21T15:00,53,37,27.4,0,0,8.9,19.7 +2020-12-21T16:00,46.1,50,28.5,0,0,6,13.6 +2020-12-21T17:00,39.7,55,24.9,0,0,9.5,9.6 +2020-12-21T18:00,37.9,64,26.8,0,0,6.3,11.4 +2020-12-21T19:00,34.1,76,27.4,0,0,6.7,11.4 +2020-12-21T20:00,30.9,80,25.6,0,0,5.8,10.5 +2020-12-21T21:00,29.9,81,24.8,0,0,4.7,8.1 +2020-12-21T22:00,29.7,78,23.7,0,0,5.2,8.1 +2020-12-21T23:00,29.5,74,22.1,0,0,5,8.5 +2020-12-22T00:00,28,75,20.9,0,0,4.8,8.1 +2020-12-22T01:00,26.2,77,20,0,0,5.9,7.4 +2020-12-22T02:00,26.3,75,19.5,0,0,4.7,7.2 +2020-12-22T03:00,25.8,76,19.2,0,0,5.8,6.9 +2020-12-22T04:00,26.1,75,19.1,0,0,6.2,7.4 +2020-12-22T05:00,24.9,77,18.8,0,0,7.1,7.4 +2020-12-22T06:00,25.8,76,19.2,0,0,6.9,8.5 +2020-12-22T07:00,26.1,73,18.5,0,0,8.2,9.4 +2020-12-22T08:00,33,52,17.3,0,0,6.4,9.8 +2020-12-22T09:00,40,40,17.8,0,0,11.6,17.4 +2020-12-22T10:00,45.9,34,18.8,0,0,12.4,20.8 +2020-12-22T11:00,51,29,20.2,0,0,15.1,24.8 +2020-12-22T12:00,53.8,29,22,0,0,17.7,29.5 +2020-12-22T13:00,55.8,28,23.3,0,0,15.4,29.5 +2020-12-22T14:00,56.4,29,24.5,0,0,13,25.5 +2020-12-22T15:00,54.9,32,25.2,0,0,9.9,21 +2020-12-22T16:00,48.7,39,24.8,0,0,6.9,15.9 +2020-12-22T17:00,43.2,42,21.7,0,0,8.2,11 +2020-12-22T18:00,40.7,54,25.5,0,0,8.5,15 +2020-12-22T19:00,42.2,52,25.6,0,0,11,20.6 +2020-12-22T20:00,39,54,23.7,0,0,10.6,17.9 +2020-12-22T21:00,36,40,14.2,0,0,19.3,31.5 +2020-12-22T22:00,30.7,32,4.5,0,0,20.7,37.6 +2020-12-22T23:00,24.9,35,1,0,0,6.6,33.8 +2020-12-23T00:00,24.1,37,1.6,0,0,4.1,8.7 +2020-12-23T01:00,24.9,37,2,0,0,5,8.1 +2020-12-23T02:00,26.3,36,2.8,0,0,7.6,14.8 +2020-12-23T03:00,25.3,37,2.5,0,0,7.4,14.1 +2020-12-23T04:00,24.6,38,2.7,0,0,7.1,12.3 +2020-12-23T05:00,25.3,35,1.4,0,0,8.4,15.4 +2020-12-23T06:00,23.1,38,1.4,0,0,4.7,14.3 +2020-12-23T07:00,21.4,38,-0.1,0,0,5.3,8.7 +2020-12-23T08:00,22.6,35,-1.3,0,0,5.1,8.9 +2020-12-23T09:00,25.4,32,-0.1,0,0,6.7,11.9 +2020-12-23T10:00,27.1,34,2.1,0,0,8.6,17.2 +2020-12-23T11:00,29.4,21,-5.6,0,0,12.5,22.1 +2020-12-23T12:00,29.8,19,-7.3,0,0,16.9,29.5 +2020-12-23T13:00,29.1,21,-6.2,0,0,17.7,32.2 +2020-12-23T14:00,28.6,21,-6.6,0,0,16.7,31.5 +2020-12-23T15:00,28,19,-9.1,0,0,14.2,29.1 +2020-12-23T16:00,25.8,21,-8.4,0,0,12.7,24.8 +2020-12-23T17:00,21.1,29,-6.2,0,0,4.9,21.5 +2020-12-23T18:00,23.4,27,-5.7,0,0,0.8,8.3 +2020-12-23T19:00,19.6,36,-3,0,0,3.6,5.4 +2020-12-23T20:00,22.8,30,-4.3,0,0,9.8,14.3 +2020-12-23T21:00,23.8,29,-4.1,0,0,9.7,19.7 +2020-12-23T22:00,22.7,29,-4.7,0,0,5,16.1 +2020-12-23T23:00,21,30,-5.6,0,0,6.9,9.8 +2020-12-24T00:00,23.9,26,-5.7,0,0,2.1,9.2 +2020-12-24T01:00,20,33,-4.6,0,0,2.6,4.5 +2020-12-24T02:00,19.9,33,-4.9,0,0,3.6,6.5 +2020-12-24T03:00,19.9,33,-4.9,0,0,3.1,6.5 +2020-12-24T04:00,20.8,32,-4.4,0,0,2.7,5.4 +2020-12-24T05:00,24.9,29,-3.2,0,0,4.5,4.9 +2020-12-24T06:00,28.3,25,-2.7,0,0,4.3,6.7 +2020-12-24T07:00,27.2,30,-0.3,0,0,7.8,11.6 +2020-12-24T08:00,30.8,29,2.1,0,0,9.4,16.6 +2020-12-24T09:00,35.1,25,2.8,0,0,4.5,15.2 +2020-12-24T10:00,39.4,22,3.2,0,0,3.2,9.2 +2020-12-24T11:00,44.4,20,6.2,0,0,11.2,20.1 +2020-12-24T12:00,47.5,20,7.9,0,0,10.1,20.8 +2020-12-24T13:00,49,19,8.8,0,0,7.6,18.6 +2020-12-24T14:00,49.2,20,9.6,0,0,8,15.2 +2020-12-24T15:00,47.2,23,11.1,0,0,8.6,15 +2020-12-24T16:00,41.3,29,11.7,0,0,8.5,14.3 +2020-12-24T17:00,37.1,34,11.3,0,0,10.2,16.1 +2020-12-24T18:00,37.1,34,11.2,0,0,13.2,21 +2020-12-24T19:00,37.3,33,10.9,0,0,13.4,22.6 +2020-12-24T20:00,36.7,34,11,0,0,10.1,21.9 +2020-12-24T21:00,34.7,37,11.2,0,0,7.7,16.6 +2020-12-24T22:00,32.6,41,11.6,0,0,6.5,12.3 +2020-12-24T23:00,29.9,47,12.1,0,0,7.3,9.6 +2020-12-25T00:00,28.2,51,12.6,0,0,7.3,9.8 +2020-12-25T01:00,27.5,53,12.6,0,0,6.5,9.2 +2020-12-25T02:00,26.6,54,12.3,0,0,5.6,8.5 +2020-12-25T03:00,26.9,53,11.8,0,0,5.4,8.1 +2020-12-25T04:00,27.2,49,10.5,0,0,6.3,9.8 +2020-12-25T05:00,27.7,45,8.9,0,0,6.2,10.5 +2020-12-25T06:00,26.7,44,7.8,0,0,5.2,9.8 +2020-12-25T07:00,25.6,45,7.4,0,0,5.3,8.1 +2020-12-25T08:00,28.7,40,7.5,0,0,5.4,8.3 +2020-12-25T09:00,35.2,32,8,0,0,6.5,11.9 +2020-12-25T10:00,43,24,8.5,0,0,6.2,12.5 +2020-12-25T11:00,49.6,19,8.9,0,0,6.2,13 +2020-12-25T12:00,53.2,20,13.5,0,0,5.7,13 +2020-12-25T13:00,55.1,19,13.3,0,0,5.6,11.9 +2020-12-25T14:00,55.7,18,12.6,0,0,5.1,11.4 +2020-12-25T15:00,52.9,33,24.9,0,0,3.3,9.4 +2020-12-25T16:00,46,35,20.1,0,0,5.8,6.9 +2020-12-25T17:00,46.6,33,18.9,0,0,3.1,6.9 +2020-12-25T18:00,31.8,62,20.3,0,0,6.1,7.6 +2020-12-25T19:00,27.5,75,20.7,0,0,6.7,7.6 +2020-12-25T20:00,28,65,17.6,0,0,5.8,8.1 +2020-12-25T21:00,27.8,54,13.4,0,0,7.4,9.4 +2020-12-25T22:00,27.4,52,11.9,0,0,8.3,10.1 +2020-12-25T23:00,28.2,50,11.9,0,0,5.2,9.8 +2020-12-26T00:00,27.1,51,11.2,0,0,5.4,9.4 +2020-12-26T01:00,24.3,55,10.4,0,0,7,8.9 +2020-12-26T02:00,25.2,49,8.8,0,0,6.4,8.3 +2020-12-26T03:00,26.5,48,9.2,0,0,5.1,8.3 +2020-12-26T04:00,25.9,47,8.6,0,0,8,13.2 +2020-12-26T05:00,25.3,51,9.7,0,0,5,14.3 +2020-12-26T06:00,27.2,47,9.4,0,0,6.4,10.1 +2020-12-26T07:00,30,43,10.4,0,0,6.2,11.2 +2020-12-26T08:00,31.6,42,11.3,0,0,7.6,12.1 +2020-12-26T09:00,37.8,37,14,0,0,7.7,12.8 +2020-12-26T10:00,45.2,32,17.2,0,0,2.5,12.5 +2020-12-26T11:00,50.1,29,18.7,0,0,0.5,6.9 +2020-12-26T12:00,53.8,23,17.1,0,0,4.2,9.6 +2020-12-26T13:00,55.9,20,15.5,0,0,2.3,10.1 +2020-12-26T14:00,56.9,21,17,0,0,6.5,11.4 +2020-12-26T15:00,56.7,30,25.6,0,0,2,11.9 +2020-12-26T16:00,47.7,44,26.6,0,0,6.9,8.3 +2020-12-26T17:00,40.2,44,19.9,0,0,7.4,8.1 +2020-12-26T18:00,39.4,46,20.1,0,0,8.4,10.1 +2020-12-26T19:00,42.9,40,20.5,0,0,0.9,11 +2020-12-26T20:00,32.4,59,19.5,0,0,5.1,7.6 +2020-12-26T21:00,33.7,48,16,0,0,7.1,11 +2020-12-26T22:00,37.3,41,16,0,0,12,18.8 +2020-12-26T23:00,37.8,47,19.5,0,0,15.2,24.6 +2020-12-27T00:00,37,51,20.5,0,0,12.2,25.1 +2020-12-27T01:00,35.2,58,22,0,0,10.4,19.9 +2020-12-27T02:00,36.3,56,22.1,0,0,10.4,17.7 +2020-12-27T03:00,36.4,53,20.8,0,0,12.7,19.9 +2020-12-27T04:00,37.8,45,18.5,0,0,14.8,24.8 +2020-12-27T05:00,36.6,46,17.8,0,0,12.8,24.8 +2020-12-27T06:00,35.5,39,12.7,0,0,13,22.1 +2020-12-27T07:00,33.8,40,12,0,0,7.7,21.7 +2020-12-27T08:00,33.2,46,14.7,0,0,6.2,12.8 +2020-12-27T09:00,36.9,40,14.7,0,0,4.1,9.8 +2020-12-27T10:00,40.5,33,13.6,0,0,4,9.4 +2020-12-27T11:00,43.1,27,11,0,0,5.4,12.3 +2020-12-27T12:00,45,23,9.2,0,0,5.1,13.4 +2020-12-27T13:00,46.2,21,8.1,0,0,8.2,15.7 +2020-12-27T14:00,45.7,21,8.1,0,0,10.1,19.7 +2020-12-27T15:00,44.2,23,8.4,0,0,8.1,19.2 +2020-12-27T16:00,40.9,30,11.7,0,0,6.7,14.8 +2020-12-27T17:00,32.8,42,12.5,0,0,6.6,14.3 +2020-12-27T18:00,30.2,51,14.3,0,0,6.2,8.3 +2020-12-27T19:00,29.2,54,14.7,0,0,5.1,7.6 +2020-12-27T20:00,28.7,51,12.7,0,0,4,6.3 +2020-12-27T21:00,27.1,51,11.3,0,0,3.3,5.1 +2020-12-27T22:00,26.6,49,9.9,0,0,4.1,6.9 +2020-12-27T23:00,25.4,50,9.5,0,0,4.4,6.7 +2020-12-28T00:00,24.1,60,12.1,0,0,4.5,6.5 +2020-12-28T01:00,24.6,61,13,0,0,2.9,5.4 +2020-12-28T02:00,23.6,66,14.1,0,0,3.1,4.9 +2020-12-28T03:00,26.2,62,14.7,0,0,1.8,3.6 +2020-12-28T04:00,25.3,66,15.7,0,0,2.1,2.5 +2020-12-28T05:00,25,74,17.8,0,0,2.8,3.4 +2020-12-28T06:00,24.6,75,17.8,0,0,2.6,3.8 +2020-12-28T07:00,24,76,17.6,0,0,1.9,3.4 +2020-12-28T08:00,24,76,17.5,0,0,0.5,2.7 +2020-12-28T09:00,27.5,63,16.4,0,0,2.4,6.7 +2020-12-28T10:00,29.7,54,15,0,0.028,5.2,11 +2020-12-28T11:00,29.7,62,18.1,0,0.028,6.4,13 +2020-12-28T12:00,30.5,68,21.2,0,0,5.3,13.6 +2020-12-28T13:00,30.7,72,22.7,0,0.028,5.1,12.1 +2020-12-28T14:00,30.5,75,23.4,0,0.028,5.1,11.6 +2020-12-28T15:00,30,77,23.7,0,0.028,4.5,11 +2020-12-28T16:00,28.9,82,24.3,0,0.083,4.6,9.4 +2020-12-28T17:00,24.9,90,22.3,0,0.055,3.2,8.7 +2020-12-28T18:00,26.3,85,22.6,0,0.028,3.6,8.1 +2020-12-28T19:00,26.2,86,22.7,0,0.11,5.6,10.1 +2020-12-28T20:00,25.7,89,22.9,0,0.138,5.3,19.2 +2020-12-28T21:00,25.6,89,22.7,0,0.22,5.8,21 +2020-12-28T22:00,25.8,88,22.6,0,0.11,3.7,10.1 +2020-12-28T23:00,25.3,89,22.5,0,0.055,3.9,7.2 +2020-12-29T00:00,24,94,22.5,0,0.028,4,7.2 +2020-12-29T01:00,24.1,93,22.3,0,0.028,3.7,8.3 +2020-12-29T02:00,24.6,91,22.4,0,0.028,4.1,7.4 +2020-12-29T03:00,24.7,89,21.9,0,0.055,2.8,7.8 +2020-12-29T04:00,23.3,93,21.6,0,0,1.5,5.8 +2020-12-29T05:00,23.6,91,21.4,0,0,5,5.6 +2020-12-29T06:00,23.5,91,21.2,0,0,0.9,8.7 +2020-12-29T07:00,21,97,20.2,0,0,3,5.4 +2020-12-29T08:00,21.2,95,20,0,0,8.5,11.2 +2020-12-29T09:00,21.2,94,19.7,0,0,8.6,20.6 +2020-12-29T10:00,26.1,72,18.4,0,0,2.8,15.7 +2020-12-29T11:00,29.5,63,18.5,0,0,1.3,8.9 +2020-12-29T12:00,31.2,59,18.5,0,0,3.5,10.7 +2020-12-29T13:00,32.9,57,19.4,0,0,4.3,11.4 +2020-12-29T14:00,33.7,56,19.5,0,0,5.8,12.8 +2020-12-29T15:00,33.4,54,18.4,0,0,3.4,12.8 +2020-12-29T16:00,32.6,53,17.2,0,0,0.9,8.3 +2020-12-29T17:00,25.1,72,17.3,0,0,3.4,2 +2020-12-29T18:00,24.2,80,19,0,0,4.5,6 +2020-12-29T19:00,25.9,73,18.5,0,0,3.9,6 +2020-12-29T20:00,22.7,78,17,0,0,4.3,6.5 +2020-12-29T21:00,21.1,74,14,0,0,4.1,7.2 +2020-12-29T22:00,20,71,12,0,0,3.7,6.3 +2020-12-29T23:00,19.5,64,9.2,0,0,5.1,8.1 +2020-12-30T00:00,18.9,61,7.6,0,0,4.6,8.1 +2020-12-30T01:00,18.1,61,6.9,0,0,4.7,7.4 +2020-12-30T02:00,17.5,60,5.8,0,0,6,9.4 +2020-12-30T03:00,17.7,49,1.8,0,0,5.3,9.4 +2020-12-30T04:00,18.1,40,-2.1,0,0,4,8.5 +2020-12-30T05:00,14.2,44,-3.5,0,0,7.3,6.7 +2020-12-30T06:00,17.6,38,-3.6,0,0,5,8.5 +2020-12-30T07:00,17.5,37,-4.6,0,0,4.5,6.7 +2020-12-30T08:00,20.4,31,-5.4,0,0,4.5,6.7 +2020-12-30T09:00,26.7,24,-5.3,0,0,5.1,10.5 +2020-12-30T10:00,33.2,19,-4.5,0,0,3.4,10.3 +2020-12-30T11:00,37.9,17,-3.7,0,0,1.7,9.6 +2020-12-30T12:00,40.3,15,-3.3,0,0,1.6,8.1 +2020-12-30T13:00,42.3,14,-3.3,0,0,1.1,8.1 +2020-12-30T14:00,43.2,14,-3,0,0,0.9,7.4 +2020-12-30T15:00,42.3,15,-2.2,0,0,2.9,6 +2020-12-30T16:00,33.4,25,1.6,0,0,6.9,8.1 +2020-12-30T17:00,37.3,24,4,0,0,3.6,8.7 +2020-12-30T18:00,31.8,32,5,0,0,3.8,4.9 +2020-12-30T19:00,24.8,46,6.8,0,0,4.8,6.7 +2020-12-30T20:00,23.4,53,8.6,0,0,6.3,9.8 +2020-12-30T21:00,22.6,51,7.2,0,0,4.9,9.8 +2020-12-30T22:00,23.6,46,6,0,0,4.1,7.8 +2020-12-30T23:00,24.7,43,5.2,0,0,4.6,7.4 +2020-12-31T00:00,24.3,43,5,0,0,5.7,8.9 +2020-12-31T01:00,23.5,46,5.7,0,0,7.1,11.2 +2020-12-31T02:00,23.1,49,6.8,0,0,6.8,11.9 +2020-12-31T03:00,22.4,53,7.7,0,0,3.6,10.7 +2020-12-31T04:00,21.9,56,8.5,0,0,4.7,5.6 +2020-12-31T05:00,23.3,58,10.8,0,0,4.7,6.7 +2020-12-31T06:00,23.5,57,10.3,0,0,4,8.5 +2020-12-31T07:00,23.6,56,10.2,0,0,4.7,6.9 +2020-12-31T08:00,24.7,53,10,0,0,6.7,10.3 +2020-12-31T09:00,30,43,10.2,0,0,2.7,10.3 +2020-12-31T10:00,35.1,35,10.2,0,0,2.2,7.8 +2020-12-31T11:00,39.1,30,10,0,0,4.5,11 +2020-12-31T12:00,41.3,28,10.4,0,0,6.7,14.5 +2020-12-31T13:00,42.2,27,10.6,0,0,6.9,15 +2020-12-31T14:00,42.4,27,10.6,0,0,6,14.5 +2020-12-31T15:00,41.6,28,10.7,0,0,5.2,12.8 +2020-12-31T16:00,35.2,37,11.2,0,0,5.1,9.6 +2020-12-31T17:00,29.6,50,13.1,0,0,6.3,8.9 +2020-12-31T18:00,28.9,49,12.3,0,0,6.3,9.2 +2020-12-31T19:00,27,52,11.7,0,0,4.5,7.4 +2020-12-31T20:00,28.8,51,13,0,0,4.1,5.6 +2020-12-31T21:00,26.1,57,12.7,0,0,5.7,6.7 +2020-12-31T22:00,25.5,57,12.4,0,0,5.5,6.7 +2020-12-31T23:00,28.3,50,12,0,0,3.5,6.5 +2021-01-01T00:00,23.5,61,11.9,0,0,3.2,4 +2021-01-01T01:00,21.4,66,11.8,0,0,2.7,4.3 +2021-01-01T02:00,20.8,64,10.6,0,0,2.5,4.3 +2021-01-01T03:00,19.9,64,9.8,0,0,3.5,5.8 +2021-01-01T04:00,20,61,8.9,0,0,2.9,5.8 +2021-01-01T05:00,18.8,64,8.6,0,0,4,5.1 +2021-01-01T06:00,21,57,8.2,0,0,2.1,5.4 +2021-01-01T07:00,21.5,56,8.2,0,0,4,4.7 +2021-01-01T08:00,25.3,48,8.4,0,0,2.2,5.4 +2021-01-01T09:00,31.2,39,9.1,0,0,0.8,5.4 +2021-01-01T10:00,35.2,36,11.2,0,0,1.6,6.9 +2021-01-01T11:00,37.2,41,15.4,0,0,2.7,9.6 +2021-01-01T12:00,38.1,40,16.1,0,0,1.4,9.8 +2021-01-01T13:00,38.6,40,16.3,0,0,2.5,8.9 +2021-01-01T14:00,38.4,43,17.6,0,0,4.1,10.5 +2021-01-01T15:00,37.9,44,17.9,0,0,3.2,10.3 +2021-01-01T16:00,36.9,46,17.9,0,0,2.1,7.4 +2021-01-01T17:00,35.8,49,18.3,0,0,3.7,2.7 +2021-01-01T18:00,33.4,54,18.4,0,0,1.4,4.3 +2021-01-01T19:00,30.4,60,18.2,0,0,1.7,2.2 +2021-01-01T20:00,27.5,66,17.8,0,0,1.5,2.2 +2021-01-01T21:00,21.8,82,17.1,0,0,3.4,4.7 +2021-01-01T22:00,21.5,77,15.4,0,0,3.3,4.9 +2021-01-01T23:00,21.9,67,12.7,0,0,3.5,5.8 +2021-01-02T00:00,21.5,61,10,0,0,3.3,5.8 +2021-01-02T01:00,21.3,57,8.3,0,0,4,6.3 +2021-01-02T02:00,21.9,54,7.6,0,0,3.9,6.5 +2021-01-02T03:00,22,53,7.6,0,0,4.4,7.2 +2021-01-02T04:00,21.4,54,7.3,0,0,3.8,6.9 +2021-01-02T05:00,19.9,56,6.5,0,0,4.3,7.2 +2021-01-02T06:00,21.6,49,5.2,0,0,4.3,8.3 +2021-01-02T07:00,21.5,47,4.6,0,0,6.2,7.4 +2021-01-02T08:00,26.2,38,4.2,0,0,4.2,8.5 +2021-01-02T09:00,33.8,28,3.7,0,0,4.9,8.9 +2021-01-02T10:00,39.6,22,3.9,0,0,2.9,8.9 +2021-01-02T11:00,43.9,19,4.4,0,0,4.5,10.5 +2021-01-02T12:00,46.6,17,3.6,0,0,3.5,11.6 +2021-01-02T13:00,47.9,15,2.9,0,0,3,10.1 +2021-01-02T14:00,47.8,15,2.2,0,0,6.6,12.3 +2021-01-02T15:00,44.8,22,8.1,0,0,9.2,14.3 +2021-01-02T16:00,39.6,29,9.9,0,0,5.7,16.6 +2021-01-02T17:00,34.1,38,11.2,0,0,5.7,10.3 +2021-01-02T18:00,37.5,30,9,0,0,3.5,9.4 +2021-01-02T19:00,29.6,46,11.3,0,0,5.9,9.6 +2021-01-02T20:00,30.9,42,10.3,0,0,8.9,13.2 +2021-01-02T21:00,28.5,47,10.9,0,0,5.5,15.4 +2021-01-02T22:00,27,51,11,0,0,5.4,7.8 +2021-01-02T23:00,25.3,52,10,0,0,8.7,13.9 +2021-01-03T00:00,25.7,48,8.5,0,0,8.3,15.4 +2021-01-03T01:00,26,47,8.5,0,0,3.9,13.4 +2021-01-03T02:00,25.1,49,8.5,0,0,3.9,6.5 +2021-01-03T03:00,25.5,47,8.2,0,0,4.6,7.4 +2021-01-03T04:00,25.4,47,8.1,0,0,4.8,8.3 +2021-01-03T05:00,25.2,53,10.3,0,0,5.7,8.5 +2021-01-03T06:00,28,44,8.9,0,0,8.6,13.4 +2021-01-03T07:00,25.7,48,8.8,0,0,7.8,15.4 +2021-01-03T08:00,26.2,48,9.3,0,0,7.7,12.3 +2021-01-03T09:00,33.6,37,10.3,0,0,6.1,12.1 +2021-01-03T10:00,40.7,29,10.6,0,0,5.8,11.9 +2021-01-03T11:00,43.8,26,10.7,0,0,6,13.4 +2021-01-03T12:00,46.2,27,13.8,0,0,5.7,13.2 +2021-01-03T13:00,48.1,26,14.9,0,0,7.4,14.1 +2021-01-03T14:00,48.8,25,14.9,0,0,9,16.3 +2021-01-03T15:00,46.8,31,17.3,0,0,5.2,16.3 +2021-01-03T16:00,42.9,36,17.7,0,0,3.9,8.1 +2021-01-03T17:00,43.6,32,15.4,0,0,16.8,13.4 +2021-01-03T18:00,42.6,36,17.2,0,0,14,28.2 +2021-01-03T19:00,38.8,43,18.3,0,0,10.1,22.8 +2021-01-03T20:00,33.8,53,18.7,0,0,4.9,16.3 +2021-01-03T21:00,31.1,58,18,0,0,6.7,9.2 +2021-01-03T22:00,36.8,46,17.7,0,0,8.3,14.1 +2021-01-03T23:00,35.4,48,17.7,0,0,6.7,14.1 +2021-01-04T00:00,36.2,47,18.1,0,0,7.4,12.8 +2021-01-04T01:00,35.3,49,18,0,0,8.1,12.8 +2021-01-04T02:00,32.4,53,17.3,0,0,5.7,13.6 +2021-01-04T03:00,34,50,17.2,0,0,1,9.6 +2021-01-04T04:00,27.1,66,17.3,0,0,6.5,10.3 +2021-01-04T05:00,25.7,71,17.7,0,0,6.2,10.3 +2021-01-04T06:00,26.6,66,16.8,0,0,4.5,8.1 +2021-01-04T07:00,26.2,62,15.1,0,0,5.2,8.9 +2021-01-04T08:00,26.3,63,15.4,0,0,3.9,8.3 +2021-01-04T09:00,33.5,43,13.3,0,0,4.2,8.5 +2021-01-04T10:00,39.2,35,13.7,0,0,4.3,8.7 +2021-01-04T11:00,43.8,27,12,0,0,7.5,15 +2021-01-04T12:00,48.1,23,11.6,0,0,6.2,15.2 +2021-01-04T13:00,51.5,18,9.6,0,0,6.9,13.6 +2021-01-04T14:00,53,17,9.9,0,0,6.4,14.5 +2021-01-04T15:00,52.4,19,11.5,0,0,3.2,12.5 +2021-01-04T16:00,50.6,21,12.2,0,0,1.9,5.8 +2021-01-04T17:00,47.8,26,14.3,0,0,2.7,5.4 +2021-01-04T18:00,34.3,46,15.9,0,0,8.3,9.2 +2021-01-04T19:00,31,57,17.7,0,0,5.5,9.8 +2021-01-04T20:00,28.2,64,17.6,0,0,4.5,7.6 +2021-01-04T21:00,27.2,62,15.8,0,0,4.8,7.4 +2021-01-04T22:00,27.3,54,12.9,0,0,5,8.1 +2021-01-04T23:00,26.4,55,12.4,0,0,4.4,8.1 +2021-01-05T00:00,25.8,57,12.5,0,0,5.6,6.9 +2021-01-05T01:00,26.1,56,12.5,0,0,5.2,6.9 +2021-01-05T02:00,25.5,60,13.5,0,0,5.5,6.7 +2021-01-05T03:00,25.3,63,14.5,0,0,5.4,6.9 +2021-01-05T04:00,25.2,66,15.4,0,0,5.9,6.9 +2021-01-05T05:00,25.3,71,17.2,0,0,4.4,6.9 +2021-01-05T06:00,25.6,71,17.5,0,0,4,6.3 +2021-01-05T07:00,26.5,70,18,0,0,3.1,4.7 +2021-01-05T08:00,28.7,66,18.6,0,0,2.8,5.4 +2021-01-05T09:00,35.8,51,19.6,0,0,3.7,8.5 +2021-01-05T10:00,44.4,38,20.3,0,0,2.4,8.3 +2021-01-05T11:00,49.9,36,23.8,0,0,4.3,13.6 +2021-01-05T12:00,51.2,29,20.1,0,0,11.5,19 +2021-01-05T13:00,50.9,27,18.1,0,0,12.9,23.5 +2021-01-05T14:00,47.8,29,17.3,0,0,11.7,22.8 +2021-01-05T15:00,45.4,31,16.8,0,0,8.5,20.4 +2021-01-05T16:00,42.7,36,17.5,0,0,6.7,14.8 +2021-01-05T17:00,40.2,34,13.7,0,0,9.7,14.5 +2021-01-05T18:00,38.3,37,14.3,0,0,12,22.1 +2021-01-05T19:00,37,41,15.5,0,0,4.5,19.7 +2021-01-05T20:00,35.4,46,16.8,0,0,5,8.7 +2021-01-05T21:00,33.5,60,21.2,0,0,5.6,9.8 +2021-01-05T22:00,33.1,63,22,0,0,4.9,9.2 +2021-01-05T23:00,30.8,68,21.6,0,0,4.8,8.3 +2021-01-06T00:00,31.6,65,21.4,0,0,3.2,6.5 +2021-01-06T01:00,30.9,64,20.2,0,0,0.6,4.3 +2021-01-06T02:00,27.1,71,19,0,0,4.1,4.7 +2021-01-06T03:00,26.7,60,14.7,0,0,6.9,8.3 +2021-01-06T04:00,28.9,44,9.9,0,0,5.4,8.9 +2021-01-06T05:00,29.4,53,14.4,0,0,2.8,8.5 +2021-01-06T06:00,30,47,12,0,0,3.8,4.7 +2021-01-06T07:00,26.2,48,9.4,0,0,7.4,8.1 +2021-01-06T08:00,30,38,7.6,0,0,5.4,9.8 +2021-01-06T09:00,34.9,31,7.3,0,0,5,10.1 +2021-01-06T10:00,38.8,26,6.8,0,0,1.6,9.2 +2021-01-06T11:00,41.2,26,9.2,0,0,4,9.8 +2021-01-06T12:00,41.5,28,10.6,0,0,6.1,13.9 +2021-01-06T13:00,41.9,26,9.2,0,0,5.9,13.9 +2021-01-06T14:00,42.2,22,6.1,0,0,7.3,14.8 +2021-01-06T15:00,41.9,21,4.6,0,0,6.7,14.8 +2021-01-06T16:00,38.3,38,14.7,0,0,4,12.5 +2021-01-06T17:00,31.9,43,11.8,0,0,6.1,6.9 +2021-01-06T18:00,36.1,34,10.7,0,0,1.3,7.2 +2021-01-06T19:00,29.7,48,12.3,0,0,3.3,3.4 +2021-01-06T20:00,25.3,64,14.7,0,0,4.5,6 +2021-01-06T21:00,24.6,69,16,0,0,3.7,6 +2021-01-06T22:00,24.3,69,15.6,0,0,4,6.3 +2021-01-06T23:00,25.2,63,14.5,0,0,4.3,7.2 +2021-01-07T00:00,25.3,58,12.6,0,0,4,6.9 +2021-01-07T01:00,24.6,56,11.3,0,0,4.3,6.5 +2021-01-07T02:00,23.8,58,11.2,0,0,4.7,6.3 +2021-01-07T03:00,23.5,58,11,0,0,4,6 +2021-01-07T04:00,23.6,59,11.5,0,0,3.8,5.4 +2021-01-07T05:00,26.3,56,12.7,0,0,1.8,4.3 +2021-01-07T06:00,24.2,61,12.7,0,0,1.1,2 +2021-01-07T07:00,22.8,65,12.9,0,0,3,3.4 +2021-01-07T08:00,25.3,59,13,0,0,3.4,4.5 +2021-01-07T09:00,30.6,47,12.7,0,0,3.7,7.8 +2021-01-07T10:00,37.9,34,12.2,0,0,4.1,9.8 +2021-01-07T11:00,43.3,28,12.7,0,0,3.4,9.8 +2021-01-07T12:00,46.6,26,13.3,0,0,3.1,9.2 +2021-01-07T13:00,47.4,27,14.8,0,0,4.3,8.9 +2021-01-07T14:00,48.1,28,16.8,0,0,5.6,10.5 +2021-01-07T15:00,46,32,18.1,0,0,8,13.4 +2021-01-07T16:00,40.1,41,18.2,0,0,8.5,14.5 +2021-01-07T17:00,31.9,53,16.5,0,0,5.5,14.3 +2021-01-07T18:00,30.4,54,15.7,0,0,6.7,10.7 +2021-01-07T19:00,30,54,15.2,0,0,6.1,12.1 +2021-01-07T20:00,30,55,15.9,0,0.028,4.7,10.1 +2021-01-07T21:00,30.9,53,15.8,0,0,2.7,7.8 +2021-01-07T22:00,25.5,67,16.2,0,0,3.9,6 +2021-01-07T23:00,23.7,72,16.2,0,0,4.1,6.7 +2021-01-08T00:00,24.1,67,14.7,0,0,4.9,7.8 +2021-01-08T01:00,23.7,64,13.2,0,0,5.8,9.4 +2021-01-08T02:00,23.3,61,11.7,0,0,4.4,9.2 +2021-01-08T03:00,23.3,56,9.7,0,0,4,6.9 +2021-01-08T04:00,22.6,54,8.4,0,0,3.8,6.9 +2021-01-08T05:00,22.3,56,9.1,0,0,3.2,6 +2021-01-08T06:00,21.7,57,8.6,0,0,3.2,4.7 +2021-01-08T07:00,21.2,56,8.1,0,0,4.3,5.8 +2021-01-08T08:00,24,46,6.2,0,0,4,6.3 +2021-01-08T09:00,29.6,33,3.7,0,0,4.1,9.2 +2021-01-08T10:00,35.7,24,2.8,0,0,5.6,11.9 +2021-01-08T11:00,39.2,24,5.5,0,0,8.5,17 +2021-01-08T12:00,41.6,22,5.1,0,0,8.7,18.1 +2021-01-08T13:00,43.3,19,3.8,0,0,7.6,17.7 +2021-01-08T14:00,43.8,21,6.3,0,0,7.1,15.9 +2021-01-08T15:00,43,23,7.3,0,0,6.3,13.9 +2021-01-08T16:00,36.1,46,17.2,0,0,6.2,11 +2021-01-08T17:00,30.5,52,14.8,0,0,6,10.5 +2021-01-08T18:00,27.1,60,14.8,0,0,7.8,9.6 +2021-01-08T19:00,31.9,47,14.2,0,0,2.6,9.4 +2021-01-08T20:00,28.3,55,14.4,0,0,3.6,4.9 +2021-01-08T21:00,28.3,55,14.1,0,0,2.4,4.3 +2021-01-08T22:00,25.3,62,14.2,0,0,6,6.9 +2021-01-08T23:00,25.2,63,14.3,0,0,5,7.2 +2021-01-09T00:00,24.1,62,13.1,0,0,5.3,7.4 +2021-01-09T01:00,24.2,61,12.7,0,0,4.9,6.3 +2021-01-09T02:00,25.9,60,14,0,0,3.3,6 +2021-01-09T03:00,25.3,61,13.6,0,0,2.2,4.3 +2021-01-09T04:00,26.3,57,13.1,0,0,1.4,3.1 +2021-01-09T05:00,26.8,59,14.2,0,0,0,2 +2021-01-09T06:00,24.5,68,15.4,0,0,2.2,2.9 +2021-01-09T07:00,23.8,73,16.5,0,0,2.7,4.3 +2021-01-09T08:00,24.7,72,17,0,0,3.4,5.6 +2021-01-09T09:00,27.8,65,17.4,0,0,3,7.6 +2021-01-09T10:00,29.6,63,18.5,0,0,3.1,8.9 +2021-01-09T11:00,30.6,64,19.7,0,0,3.3,9.2 +2021-01-09T12:00,30.8,66,20.7,0,0.028,4.1,9.8 +2021-01-09T13:00,32.3,62,20.7,0,0,6.1,13.4 +2021-01-09T14:00,33.2,62,21.6,0,0,7.6,15.7 +2021-01-09T15:00,32.4,65,21.9,0,0,7.1,15.9 +2021-01-09T16:00,31.2,68,21.8,0,0,6.1,13.9 +2021-01-09T17:00,28.4,79,22.7,0,0.028,5.7,10.5 +2021-01-09T18:00,27.4,83,23,0,0,6.6,11 +2021-01-09T19:00,27.1,86,23.5,0,0.028,7.1,12.1 +2021-01-09T20:00,28,86,24.5,0,0.083,7.6,13 +2021-01-09T21:00,28.4,89,25.6,0,0.138,7.4,12.8 +2021-01-09T22:00,28.1,91,25.9,0,0.11,6.3,12.3 +2021-01-09T23:00,28.1,89,25.4,0,0.028,5.4,10.7 +2021-01-10T00:00,28,89,25.3,0,0,5.3,9.2 +2021-01-10T01:00,27.8,89,25.1,0,0,5.3,9.4 +2021-01-10T02:00,27,92,25,0,0,4.5,9.2 +2021-01-10T03:00,26.9,92,24.9,0,0,3.8,7.6 +2021-01-10T04:00,26.3,94,24.8,0,0,2.6,6.5 +2021-01-10T05:00,26.1,93,24.3,0,0,5.6,4.3 +2021-01-10T06:00,25.8,93,24.1,0,0,5.1,9.4 +2021-01-10T07:00,25.8,92,23.9,0,0,5.6,9.8 +2021-01-10T08:00,25.7,92,23.6,0,0,5.4,10.1 +2021-01-10T09:00,26.6,83,22.1,0,0,3.2,10.1 +2021-01-10T10:00,28.3,75,21.3,0,0,2.1,8.5 +2021-01-10T11:00,30,71,21.8,0,0,2.7,9.4 +2021-01-10T12:00,32.4,60,19.9,0,0,1.4,10.1 +2021-01-10T13:00,34,54,19.2,0,0,2.1,9.4 +2021-01-10T14:00,35.1,50,18.5,0,0,2.4,9.4 +2021-01-10T15:00,35.2,49,18,0,0,3,9.2 +2021-01-10T16:00,33.8,51,17.8,0,0,4.8,8.5 +2021-01-10T17:00,23.7,80,18.4,0,0,5.4,8.1 +2021-01-10T18:00,23.7,81,18.8,0,0,3.6,6.5 +2021-01-10T19:00,27.2,70,18.9,0,0,1,4.7 +2021-01-10T20:00,21.7,83,17.4,0,0,3.8,4 +2021-01-10T21:00,21.6,73,14.1,0,0,3.7,5.6 +2021-01-10T22:00,20.9,63,10.1,0,0,3.8,5.8 +2021-01-10T23:00,20.5,56,7.2,0,0,3.8,5.8 +2021-01-11T00:00,20.1,51,4.7,0,0,4.3,5.8 +2021-01-11T01:00,19.9,46,2.5,0,0,4.4,6 +2021-01-11T02:00,20,41,0.3,0,0,4.2,6.3 +2021-01-11T03:00,19.9,39,-1.4,0,0,3.9,6 +2021-01-11T04:00,19.4,37,-2.6,0,0,4.1,6 +2021-01-11T05:00,16.4,39,-4,0,0,6.6,6.3 +2021-01-11T06:00,19.3,33,-5,0,0,4,8.1 +2021-01-11T07:00,18.8,33,-5.5,0,0,4,6.3 +2021-01-11T08:00,20.8,30,-6,0,0,4.7,7.2 +2021-01-11T09:00,26.2,23,-6.9,0,0,4.3,9.8 +2021-01-11T10:00,33.2,16,-7.9,0,0,2.8,9.8 +2021-01-11T11:00,38.4,13,-8.4,0,0,2.7,9.2 +2021-01-11T12:00,42.1,10,-10.2,0,0,4.2,11.2 +2021-01-11T13:00,44.9,9,-11.5,0,0,5.7,13 +2021-01-11T14:00,46.4,8,-12.8,0,0,6.7,13.6 +2021-01-11T15:00,46,8,-11.3,0,0,5.3,13.2 +2021-01-11T16:00,40.3,13,-6.9,0,0,5.1,8.5 +2021-01-11T17:00,38.2,14,-7.1,0,0,1.3,6 +2021-01-11T18:00,32.7,19,-5.6,0,0,4.4,4.9 +2021-01-11T19:00,23.5,30,-3.3,0,0,6,7.4 +2021-01-11T20:00,22.2,40,1.4,0,0,5.2,7.4 +2021-01-11T21:00,22.6,41,2.3,0,0,5,7.6 +2021-01-11T22:00,23,38,1.4,0,0,5.3,8.1 +2021-01-11T23:00,21.7,37,-0.6,0,0,4.6,8.1 +2021-01-12T00:00,21.7,35,-1.7,0,0,4.5,7.2 +2021-01-12T01:00,21.3,34,-2.6,0,0,4.7,8.1 +2021-01-12T02:00,21,33,-3.4,0,0,4.1,7.6 +2021-01-12T03:00,19.9,34,-3.9,0,0,5.7,6.9 +2021-01-12T04:00,19.7,34,-4.4,0,0,5.8,7.2 +2021-01-12T05:00,19.1,37,-3,0,0,6.8,6.9 +2021-01-12T06:00,22,34,-2.2,0,0,4.7,8.3 +2021-01-12T07:00,21.2,35,-2,0,0,5.6,7.2 +2021-01-12T08:00,25.4,30,-1.5,0,0,3.6,7.2 +2021-01-12T09:00,31.7,25,-0.5,0,0,5,10.1 +2021-01-12T10:00,39.9,19,1,0,0,4.6,11 +2021-01-12T11:00,46.6,15,1.1,0,0,5,11.4 +2021-01-12T12:00,50.5,12,0.3,0,0,8.5,16.3 +2021-01-12T13:00,53.8,12,1.7,0,0,6.1,16.8 +2021-01-12T14:00,55.2,12,3.9,0,0,2.2,12.5 +2021-01-12T15:00,52.9,17,8.7,0,0,4.4,7.8 +2021-01-12T16:00,44.2,26,11.1,0,0,6.5,8.5 +2021-01-12T17:00,41.2,27,9.7,0,0,6.6,11.4 +2021-01-12T18:00,32.7,45,13.5,0,0,7.4,9.8 +2021-01-12T19:00,30.7,53,15.8,0,0,7.4,10.1 +2021-01-12T20:00,28.6,63,17.4,0,0,6.8,9.8 +2021-01-12T21:00,27.1,70,18.5,0,0,7.1,10.1 +2021-01-12T22:00,28.9,53,14,0,0,6.8,12.8 +2021-01-12T23:00,30,47,12.2,0,0,6.8,11.6 +2021-01-13T00:00,29.3,47,11.6,0,0,10.4,16.1 +2021-01-13T01:00,28,50,11.6,0,0,11.6,17.4 +2021-01-13T02:00,31.8,46,13.2,0,0,12.2,19.7 +2021-01-13T03:00,34.7,42,13.9,0,0,9.3,19.5 +2021-01-13T04:00,32.8,46,14.2,0,0,12,19.9 +2021-01-13T05:00,35.1,51,18.8,0,0,6.8,19.5 +2021-01-13T06:00,34.8,51,18.4,0,0,6.6,11.6 +2021-01-13T07:00,34.2,54,19.4,0,0,5.3,11 +2021-01-13T08:00,37.7,52,21.5,0,0,4,8.7 +2021-01-13T09:00,45.6,46,25.9,0,0,2.2,6.7 +2021-01-13T10:00,53.2,32,24.4,0,0,9.2,13 +2021-01-13T11:00,56.4,28,23.6,0,0,9.8,16.1 +2021-01-13T12:00,58.7,28,25.5,0,0,14.6,25.3 +2021-01-13T13:00,59.8,28,26.3,0,0,11.9,25.1 +2021-01-13T14:00,57.3,42,34.6,0,0,2.1,23 +2021-01-13T15:00,52.7,41,29.4,0,0,10.9,16.1 +2021-01-13T16:00,53,36,26.7,0,0,14,22.4 +2021-01-13T17:00,48.7,41,26.3,0,0,6.8,22.4 +2021-01-13T18:00,52,34,24.7,0,0,3.2,11.6 +2021-01-13T19:00,39.5,58,26,0,0,5.3,9.6 +2021-01-13T20:00,35.5,69,26.3,0,0,6,11.6 +2021-01-13T21:00,37.8,60,25.2,0,0,8.1,12.8 +2021-01-13T22:00,39.3,52,23.2,0,0,5.5,16.1 +2021-01-13T23:00,35.1,70,26.4,0.004,0,17,26.6 +2021-01-14T00:00,35.8,63,24.3,0,0,10.5,27.5 +2021-01-14T01:00,37,39,14.5,0,0,15.7,26.4 +2021-01-14T02:00,31.5,42,11,0,0,5.8,25.9 +2021-01-14T03:00,30.9,46,12.7,0,0,5.5,9.6 +2021-01-14T04:00,31.8,35,7.3,0,0,7,10.7 +2021-01-14T05:00,25.8,48,8.9,0,0,6.7,11.9 +2021-01-14T06:00,26.8,42,6.5,0,0,4.3,8.7 +2021-01-14T07:00,26.7,42,6.4,0,0,5.5,8.9 +2021-01-14T08:00,27.8,41,7.3,0,0,5.3,9.4 +2021-01-14T09:00,32.8,32,6.4,0,0,4.7,10.3 +2021-01-14T10:00,34,27,3.5,0,0,6.4,12.8 +2021-01-14T11:00,35.8,25,3.4,0,0,8.9,18.3 +2021-01-14T12:00,37,25,4,0,0,6.6,17.7 +2021-01-14T13:00,36.8,25,4.3,0,0,9,17.9 +2021-01-14T14:00,36.8,24,3.2,0,0,7.4,19.2 +2021-01-14T15:00,36,25,3.5,0,0,5.8,15.7 +2021-01-14T16:00,34.7,26,3.7,0,0,5.7,12.5 +2021-01-14T17:00,28.3,37,5.1,0,0,7.2,9.8 +2021-01-14T18:00,26.7,40,5.5,0,0,5.9,12.8 +2021-01-14T19:00,23.7,48,6.7,0,0,3.8,9.8 +2021-01-14T20:00,23,52,8.1,0,0,2.1,6.5 +2021-01-14T21:00,22,54,7.8,0,0,5.5,6.3 +2021-01-14T22:00,21.2,55,7.6,0,0,6.8,8.1 +2021-01-14T23:00,20.8,56,7.3,0,0,6.2,8.1 +2021-01-15T00:00,22.1,52,7.2,0,0,4.3,7.2 +2021-01-15T01:00,20.7,57,7.8,0,0,3.7,6 +2021-01-15T02:00,20.4,53,6.1,0,0,4,6 +2021-01-15T03:00,19.5,52,4.8,0,0,4.4,7.4 +2021-01-15T04:00,18.3,54,4.5,0,0,5.2,7.6 +2021-01-15T05:00,19,56,5.7,0,0,4.6,7.2 +2021-01-15T06:00,19.2,49,3.1,0,0,4.6,6.5 +2021-01-15T07:00,19,45,1.2,0,0,4.8,6.9 +2021-01-15T08:00,20.8,40,0.1,0,0,4.6,6.9 +2021-01-15T09:00,27.1,30,-0.3,0,0,3.4,8.7 +2021-01-15T10:00,32.4,24,-0.8,0,0,4.3,10.7 +2021-01-15T11:00,36.9,21,0.6,0,0,7.1,14.8 +2021-01-15T12:00,42,18,1.5,0,0,4.8,15.4 +2021-01-15T13:00,45.5,17,3.2,0,0,4.1,12.3 +2021-01-15T14:00,47.6,18,5.5,0,0,4.4,11.2 +2021-01-15T15:00,47.6,19,6.8,0,0,4.4,10.7 +2021-01-15T16:00,40.9,26,8.4,0,0,4.4,8.5 +2021-01-15T17:00,32.1,38,9.5,0,0,6.6,5.6 +2021-01-15T18:00,28.7,44,9.6,0,0,5.5,8.3 +2021-01-15T19:00,25.8,53,10.9,0,0,4.3,7.4 +2021-01-15T20:00,27.1,50,10.9,0,0,4.3,6.9 +2021-01-15T21:00,27.5,48,10.5,0,0,5,8.9 +2021-01-15T22:00,26.2,56,12.5,0,0,5.7,8.9 +2021-01-15T23:00,26.8,52,11.5,0,0,8.3,13.2 +2021-01-16T00:00,26.2,50,10,0,0,7.4,13.2 +2021-01-16T01:00,25.5,52,10.1,0,0,4.7,11.9 +2021-01-16T02:00,26.6,49,10.1,0,0,5,8.3 +2021-01-16T03:00,27.6,47,10,0,0,3.8,8.7 +2021-01-16T04:00,28.1,46,10,0,0,4,6 +2021-01-16T05:00,28.1,49,11.2,0,0,4.4,5.1 +2021-01-16T06:00,30.4,48,12.9,0,0,5.1,6.7 +2021-01-16T07:00,30.1,53,15.2,0,0,5.1,7.2 +2021-01-16T08:00,31.9,49,14.8,0,0,4,6 +2021-01-16T09:00,34.2,45,14.9,0,0,4.3,6.9 +2021-01-16T10:00,37.3,43,16.6,0,0,6.5,11.2 +2021-01-16T11:00,41.5,38,17.5,0,0,6.8,14.8 +2021-01-16T12:00,45,36,19.5,0,0,3.8,13.9 +2021-01-16T13:00,45.9,36,20.2,0,0,4.7,11 +2021-01-16T14:00,46,34,19.1,0,0,5.4,11.2 +2021-01-16T15:00,45.7,32,17.7,0,0,5.9,11.6 +2021-01-16T16:00,43,39,19.7,0,0,4.8,11 +2021-01-16T17:00,35.6,56,21.5,0,0,7.1,8.5 +2021-01-16T18:00,32.1,67,22.2,0,0,5.9,11.4 +2021-01-16T19:00,31.4,67,21.6,0,0,4,6.9 +2021-01-16T20:00,32,65,21.4,0,0,3,4.7 +2021-01-16T21:00,26.7,79,21,0,0,5.4,5.4 +2021-01-16T22:00,28,78,21.9,0,0,6.6,9.8 +2021-01-16T23:00,27.9,79,22.2,0,0,5.8,10.7 +2021-01-17T00:00,27.8,78,21.9,0,0,5.2,9.2 +2021-01-17T01:00,27.6,77,21.5,0,0,4.1,8.1 +2021-01-17T02:00,27.8,75,20.8,0,0,3.9,6.5 +2021-01-17T03:00,27.1,76,20.5,0,0,3.8,6 +2021-01-17T04:00,26,79,20.5,0,0,3.4,6 +2021-01-17T05:00,26.2,74,19,0,0,3,4.9 +2021-01-17T06:00,25.9,69,17.1,0,0,3.4,4.7 +2021-01-17T07:00,26.9,59,14.6,0,0,3.3,5.6 +2021-01-17T08:00,29.1,48,11.8,0,0,4.5,6.9 +2021-01-17T09:00,33.5,39,11.1,0,0,6,11 +2021-01-17T10:00,38.4,34,12.7,0,0,7.5,13.6 +2021-01-17T11:00,41.5,32,13.5,0,0,8.2,15.9 +2021-01-17T12:00,44.7,29,14.4,0,0,6.6,15.9 +2021-01-17T13:00,47.3,27,14.7,0,0,6.5,13.9 +2021-01-17T14:00,48.7,26,15.3,0,0,6.7,13.6 +2021-01-17T15:00,48.7,26,15.6,0,0,7.1,13.2 +2021-01-17T16:00,45.1,33,17.9,0,0,5.7,12.5 +2021-01-17T17:00,37.7,45,18.3,0,0,6.8,8.5 +2021-01-17T18:00,38.8,41,17.2,0,0,4.6,8.1 +2021-01-17T19:00,36.5,45,17.2,0,0,6.6,10.1 +2021-01-17T20:00,31.7,60,19.3,0,0,4.3,9.8 +2021-01-17T21:00,31.6,65,21.4,0,0,3.4,6 +2021-01-17T22:00,33.2,62,21.5,0,0,3.2,4.9 +2021-01-17T23:00,34.8,57,21.1,0,0,0.9,4 +2021-01-18T00:00,30.1,71,21.9,0,0,3.4,4.7 +2021-01-18T01:00,29.6,74,22.4,0,0,3.9,6.3 +2021-01-18T02:00,27.8,79,22.1,0,0,3.5,6.3 +2021-01-18T03:00,29.5,73,22,0,0,6,9.6 +2021-01-18T04:00,30,71,21.7,0,0,6.3,10.3 +2021-01-18T05:00,30.5,77,24,0,0.028,1.6,9.6 +2021-01-18T06:00,30.7,78,24.8,0,0,2.4,4.5 +2021-01-18T07:00,30.2,81,25.2,0,0,1.1,5.1 +2021-01-18T08:00,31.1,72,23.3,0,0,1.4,3.1 +2021-01-18T09:00,31.8,59,19,0,0,1.6,4.9 +2021-01-18T10:00,33,54,18.2,0,0,3.3,8.5 +2021-01-18T11:00,33.4,51,17.2,0,0,2.2,8.9 +2021-01-18T12:00,33.7,49,16.6,0,0,1.6,7.6 +2021-01-18T13:00,35.5,46,16.9,0,0,0.8,7.8 +2021-01-18T14:00,36.7,44,16.9,0,0,0.7,7.2 +2021-01-18T15:00,37.3,43,16.7,0,0,1.9,7.6 +2021-01-18T16:00,37,44,16.9,0,0,1,7.4 +2021-01-18T17:00,31.3,66,21.2,0,0,4,4.7 +2021-01-18T18:00,29.1,74,21.8,0,0.028,4.3,5.1 +2021-01-18T19:00,29.8,72,21.8,0,0.028,5.1,7.2 +2021-01-18T20:00,30,54,15.4,0,0.028,8.1,14.1 +2021-01-18T21:00,28.5,56,14.8,0,0.028,2.4,13 +2021-01-18T22:00,28.3,58,15.4,0,0,0.2,4.3 +2021-01-18T23:00,28.2,58,15.3,0,0,1,1.1 +2021-01-19T00:00,27,64,16.3,0,0,1.9,2.9 +2021-01-19T01:00,26,67,16.6,0,0,3.1,4.7 +2021-01-19T02:00,24.2,71,16.3,0,0,4.1,6.3 +2021-01-19T03:00,24.4,70,15.9,0,0,3.7,6.9 +2021-01-19T04:00,24.4,69,15.7,0,0,2.9,6 +2021-01-19T05:00,25.3,67,15.7,0,0,2.4,4.3 +2021-01-19T06:00,24.4,68,15.4,0,0,3.2,4 +2021-01-19T07:00,24.7,68,15.5,0,0,2.7,4 +2021-01-19T08:00,26.9,62,15.7,0,0,3.3,5.6 +2021-01-19T09:00,29.3,56,15.4,0,0,1.6,6 +2021-01-19T10:00,31.1,41,10,0,0,1.5,7.4 +2021-01-19T11:00,32.5,42,12.2,0,0,4.2,11.2 +2021-01-19T12:00,35.1,41,13.6,0,0,5.6,14.1 +2021-01-19T13:00,37.2,35,12,0,0,4.6,13.6 +2021-01-19T14:00,37.9,34,12.2,0,0,7,14.8 +2021-01-19T15:00,36.1,40,13.9,0,0,9.7,18.6 +2021-01-19T16:00,34.3,42,13.6,0,0,7.1,18.6 +2021-01-19T17:00,30.7,53,15.4,0,0,4.4,12.5 +2021-01-19T18:00,28,58,15.2,0,0,6.1,7.2 +2021-01-19T19:00,30,51,14.3,0,0,0.7,6.7 +2021-01-19T20:00,28.2,56,14.5,0,0,1.6,2.7 +2021-01-19T21:00,27.1,58,14.5,0,0,1.1,2.2 +2021-01-19T22:00,22,71,14.1,0,0,2.8,4.5 +2021-01-19T23:00,23.4,63,12.5,0,0,8.6,14.8 +2021-01-20T00:00,23.1,58,10.4,0,0,3.6,13.9 +2021-01-20T01:00,25.6,49,9.2,0,0,7.7,12.1 +2021-01-20T02:00,25.2,50,9,0,0,8.7,13.4 +2021-01-20T03:00,24.8,49,8.5,0,0,7.4,16.3 +2021-01-20T04:00,27.9,42,8,0,0,2.2,11.9 +2021-01-20T05:00,26.1,46,7.9,0,0,8.7,7.2 +2021-01-20T06:00,24.8,47,7.6,0,0,6.5,13.6 +2021-01-20T07:00,23.8,51,8.4,0,0,7.9,9.8 +2021-01-20T08:00,29.8,42,9.8,0,0,6.4,9.6 +2021-01-20T09:00,37.6,33,11.2,0,0,6.9,11.9 +2021-01-20T10:00,45.8,25,12.1,0,0,6.7,12.5 +2021-01-20T11:00,50.8,21,12.1,0,0,6.9,14.5 +2021-01-20T12:00,52.5,20,12.6,0,0,5.6,14.3 +2021-01-20T13:00,53.8,20,13.2,0,0,6.7,14.1 +2021-01-20T14:00,53.7,23,16.3,0,0,7.1,14.1 +2021-01-20T15:00,52.6,26,18.3,0,0,6.7,13.2 +2021-01-20T16:00,46.9,35,21,0,0,6.1,11 +2021-01-20T17:00,44.3,30,15.1,0,0,7.4,10.7 +2021-01-20T18:00,44.2,34,17.3,0,0,11.9,19.2 +2021-01-20T19:00,37,47,18.6,0,0,5.8,19.7 +2021-01-20T20:00,34.1,55,19.5,0,0,4.9,8.7 +2021-01-20T21:00,30.2,64,19.3,0,0,4.4,8.9 +2021-01-20T22:00,27.1,72,19.1,0,0,3,6.5 +2021-01-20T23:00,24.8,77,18.5,0,0,4.3,5.4 +2021-01-21T00:00,27.4,66,17.7,0,0,2.5,5.6 +2021-01-21T01:00,26.6,68,17.4,0,0,1.9,3.4 +2021-01-21T02:00,25.3,72,17.4,0,0,4.3,5.1 +2021-01-21T03:00,30.5,57,17.1,0,0,3.2,5.1 +2021-01-21T04:00,28.9,61,17.2,0,0,3.9,4.5 +2021-01-21T05:00,28.8,63,17.7,0,0,4.3,4.7 +2021-01-21T06:00,27.7,64,17.2,0,0,5.8,8.1 +2021-01-21T07:00,28.4,60,16.3,0,0,4.3,8.1 +2021-01-21T08:00,31,55,16.6,0,0,5.5,8.1 +2021-01-21T09:00,35.2,48,17.7,0,0,5.7,11.2 +2021-01-21T10:00,41.5,41,19.4,0,0,3.5,10.3 +2021-01-21T11:00,44.7,35,18.4,0,0,6.1,12.3 +2021-01-21T12:00,46.5,33,19.1,0,0,7.9,15.9 +2021-01-21T13:00,47.8,32,19,0,0,6.7,16.1 +2021-01-21T14:00,47.9,31,18.8,0,0,5.9,14.3 +2021-01-21T15:00,46.7,32,18.5,0,0,7.7,13.6 +2021-01-21T16:00,43.2,41,21.3,0,0,5.1,13.6 +2021-01-21T17:00,38.6,51,21.8,0,0,4.5,8.3 +2021-01-21T18:00,36.1,56,21.7,0,0,4.3,6.5 +2021-01-21T19:00,34.2,63,22.9,0,0,5.2,6.7 +2021-01-21T20:00,33,64,22.3,0,0,5.4,8.1 +2021-01-21T21:00,30.2,67,20.6,0,0,7.4,12.1 +2021-01-21T22:00,27.7,72,19.7,0,0,5,11.9 +2021-01-21T23:00,27.2,71,19,0,0,4.4,8.1 +2021-01-22T00:00,25.9,73,18.4,0,0,2.9,5.4 +2021-01-22T01:00,26.2,73,18.9,0,0,3.8,5.1 +2021-01-22T02:00,24.5,80,19.1,0,0,4.7,5.1 +2021-01-22T03:00,23.6,82,19,0,0,4.7,6 +2021-01-22T04:00,26.7,70,18.1,0,0,1.7,5.8 +2021-01-22T05:00,23.8,80,18.5,0,0,3.8,4 +2021-01-22T06:00,24,79,18.3,0,0,2.6,5.8 +2021-01-22T07:00,22.6,83,18.1,0,0,3.8,4.5 +2021-01-22T08:00,24.4,77,18.1,0,0,4.1,7.4 +2021-01-22T09:00,27.1,67,17.6,0,0,1.9,7.6 +2021-01-22T10:00,31.6,55,17.4,0,0,2.4,8.7 +2021-01-22T11:00,36.4,45,17.2,0,0,4.1,11.2 +2021-01-22T12:00,39.3,40,17.1,0,0,6.8,15.4 +2021-01-22T13:00,41.3,38,17.3,0,0,8.5,17.7 +2021-01-22T14:00,41.8,39,18.9,0,0,7.5,17.7 +2021-01-22T15:00,41.2,40,18.8,0,0,8.2,15.4 +2021-01-22T16:00,37.9,46,19,0,0,8.6,16.6 +2021-01-22T17:00,36.1,49,19,0,0,7.4,14.3 +2021-01-22T18:00,32.1,60,19.7,0,0,5.3,12.5 +2021-01-22T19:00,29.4,67,19.9,0,0,5.6,8.5 +2021-01-22T20:00,31.8,60,19.4,0,0,3.5,6.5 +2021-01-22T21:00,30.7,62,19.2,0,0,2.1,4 +2021-01-22T22:00,26.4,75,19.5,0,0,2.9,4.7 +2021-01-22T23:00,29.8,65,19.3,0,0,0.9,3.8 +2021-01-23T00:00,28.3,68,19.2,0,0,3.1,3.6 +2021-01-23T01:00,26.2,74,19.2,0,0,3,4.5 +2021-01-23T02:00,25.8,75,18.9,0,0,1.9,3.8 +2021-01-23T03:00,22.2,87,18.9,0,0,4,5.1 +2021-01-23T04:00,22,89,19.2,0,0,3.5,5.1 +2021-01-23T05:00,23,84,18.9,0,0,3.5,6.5 +2021-01-23T06:00,22.2,85,18.3,0,0,4,4.9 +2021-01-23T07:00,24,80,18.6,0,0,3.1,5.4 +2021-01-23T08:00,24.8,76,18.3,0,0,1.8,3.8 +2021-01-23T09:00,28.3,64,17.8,0,0,3.3,8.3 +2021-01-23T10:00,32.8,54,17.8,0,0,5,12.3 +2021-01-23T11:00,37.4,44,17.6,0,0,4.8,12.8 +2021-01-23T12:00,40.4,40,17.9,0,0,7.2,15.7 +2021-01-23T13:00,41.5,41,19.6,0,0,7.2,17.2 +2021-01-23T14:00,43,40,20.4,0,0,7.6,16.1 +2021-01-23T15:00,42.6,42,20.9,0,0,7.7,15.7 +2021-01-23T16:00,40.8,46,21.7,0,0,6.1,14.5 +2021-01-23T17:00,35,57,21.1,0,0,7.7,10.1 +2021-01-23T18:00,32,69,23,0,0.083,5,13.6 +2021-01-23T19:00,30.4,73,22.9,0,0.055,8.5,13 +2021-01-23T20:00,25.7,82,21,0,0,8.1,15.4 +2021-01-23T21:00,26.3,76,19.8,0,0,6.1,14.3 +2021-01-23T22:00,25.9,76,19.4,0,0,4.8,10.5 +2021-01-23T23:00,25.7,76,19.2,0,0,2.8,8.9 +2021-01-24T00:00,25.4,77,19.1,0,0,2.6,6.3 +2021-01-24T01:00,25.2,77,19,0,0,2.7,6.3 +2021-01-24T02:00,24.9,78,19,0,0,2.1,6 +2021-01-24T03:00,24.5,79,19,0,0,2.2,5.4 +2021-01-24T04:00,24.3,81,19.1,0,0,3.8,7.6 +2021-01-24T05:00,22.6,85,18.7,0,0,4.5,7.8 +2021-01-24T06:00,22.7,84,18.6,0,0,3.8,9.2 +2021-01-24T07:00,22.7,83,18.4,0,0,2.8,8.1 +2021-01-24T08:00,23,82,18.4,0,0,2.8,6.9 +2021-01-24T09:00,24.4,78,18.5,0,0,1.8,7.4 +2021-01-24T10:00,26.1,69,17.3,0,0,1.9,8.3 +2021-01-24T11:00,28.4,59,16,0,0,0.6,8.7 +2021-01-24T12:00,30.7,53,15.5,0,0,3,10.1 +2021-01-24T13:00,34.6,49,17.2,0,0,5,12.5 +2021-01-24T14:00,36.1,49,18.8,0,0,6.3,14.5 +2021-01-24T15:00,35.7,50,18.9,0,0,6.5,14.3 +2021-01-24T16:00,34.8,52,19,0,0,6.1,13.9 +2021-01-24T17:00,26.9,72,19,0,0,4.7,11.4 +2021-01-24T18:00,24.7,78,18.9,0,0,4.1,9.4 +2021-01-24T19:00,24.4,80,19.2,0,0,3.8,6.5 +2021-01-24T20:00,24.1,80,18.7,0,0,2.4,4.7 +2021-01-24T21:00,23.1,82,18.3,0,0,3.1,5.1 +2021-01-24T22:00,22.5,83,18,0,0,1.4,3.8 +2021-01-24T23:00,20.6,89,17.8,0,0,3.1,4.3 +2021-01-25T00:00,21.4,85,17.5,0,0,3.5,5.1 +2021-01-25T01:00,22.3,79,16.9,0,0,3.4,4.9 +2021-01-25T02:00,22.6,76,16.2,0,0,2.2,6 +2021-01-25T03:00,23.5,73,16.3,0,0,1.1,4.7 +2021-01-25T04:00,24.5,71,16.3,0,0,1.6,4 +2021-01-25T05:00,25.3,71,17.2,0,0,2.7,4.3 +2021-01-25T06:00,23.9,77,17.7,0,0,4,6.3 +2021-01-25T07:00,23.3,79,17.8,0,0,3.8,6.3 +2021-01-25T08:00,24,76,17.4,0,0,2.5,6 +2021-01-25T09:00,26.1,69,17.2,0,0,3.2,8.3 +2021-01-25T10:00,29.2,59,16.5,0,0,2.9,9.6 +2021-01-25T11:00,31.7,51,15.7,0,0,5.3,13 +2021-01-25T12:00,33.6,47,15.4,0,0,7.6,16.8 +2021-01-25T13:00,34.5,47,16.5,0,0,7.4,17.4 +2021-01-25T14:00,34.8,47,16.6,0,0,6.8,16.6 +2021-01-25T15:00,34.3,47,16.3,0,0,6.8,15.2 +2021-01-25T16:00,32.9,49,15.8,0,0,6.3,14.1 +2021-01-25T17:00,28.6,62,17.2,0,0,7.6,11.2 +2021-01-25T18:00,26.6,69,17.8,0,0.028,7.8,13 +2021-01-25T19:00,25.5,72,17.6,0,0.028,7.2,13 +2021-01-25T20:00,24.7,74,17.5,0,0.028,6.1,12.3 +2021-01-25T21:00,24,75,17.2,0,0.028,5.7,11 +2021-01-25T22:00,23.5,75,16.7,0,0.028,5.5,10.5 +2021-01-25T23:00,23,76,16.4,0,0,4.5,10.3 +2021-01-26T00:00,22.7,76,16.2,0,0,3.1,8.7 +2021-01-26T01:00,22.4,76,15.9,0,0,3.8,7.2 +2021-01-26T02:00,22.2,75,15.4,0,0,4.9,8.7 +2021-01-26T03:00,22.1,74,15,0,0,4.3,8.9 +2021-01-26T04:00,21.7,74,14.8,0,0,4.7,9.4 +2021-01-26T05:00,22.5,80,17.2,0,0,3.5,9.6 +2021-01-26T06:00,22.5,80,17.3,0,0.028,5.2,9.8 +2021-01-26T07:00,22.5,81,17.4,0,0.028,5.4,10.1 +2021-01-26T08:00,22.7,80,17.5,0,0.055,5.7,10.7 +2021-01-26T09:00,23.6,75,16.9,0,0.055,5.9,11.9 +2021-01-26T10:00,24.4,71,16.3,0,0.055,4.8,11.6 +2021-01-26T11:00,25.7,67,16.3,0,0.055,3.1,11 +2021-01-26T12:00,26.4,67,17,0,0.083,5.7,12.5 +2021-01-26T13:00,27.3,66,17.3,0,0.055,7.4,15.4 +2021-01-26T14:00,27.5,67,18,0,0.055,7.6,16.1 +2021-01-26T15:00,27.4,67,18,0,0.028,8.1,15.9 +2021-01-26T16:00,26.7,69,18,0,0.028,8.1,15.7 +2021-01-26T17:00,21.9,78,16.3,0,0.083,11.9,15.7 +2021-01-26T18:00,21.2,82,16.4,0,0.083,10.7,20.1 +2021-01-26T19:00,21.2,82,16.4,0,0.083,8.5,18.1 +2021-01-26T20:00,21.3,82,16.5,0,0.055,6.5,15 +2021-01-26T21:00,21,81,16.2,0,0.028,4.3,11.6 +2021-01-26T22:00,20.8,79,15.4,0,0,2.4,8.5 +2021-01-26T23:00,20,80,15,0,0,1,5.6 +2021-01-27T00:00,19,82,14.5,0,0,0.4,4 +2021-01-27T01:00,17.8,86,14.4,0,0,0.8,2.7 +2021-01-27T02:00,16,91,13.8,0,0,1.8,2.5 +2021-01-27T03:00,15.9,91,13.6,0,0,3.2,4.5 +2021-01-27T04:00,15.9,83,11.6,0,0,4.7,6.9 +2021-01-27T05:00,12.9,75,6.5,0,0,5.6,8.3 +2021-01-27T06:00,14.1,52,-0.5,0,0,5.4,8.5 +2021-01-27T07:00,12.7,48,-3.4,0,0,4.8,8.5 +2021-01-27T08:00,14.5,44,-3.4,0,0,5.4,9.2 +2021-01-27T09:00,21.5,33,-3.2,0,0,5.5,10.7 +2021-01-27T10:00,29.8,23,-3.2,0,0,7.5,16.6 +2021-01-27T11:00,35.5,17,-4.8,0,0,5.6,15.7 +2021-01-27T12:00,38.7,15,-5.3,0,0,3,13.6 +2021-01-27T13:00,40.4,14,-5.3,0,0,4.7,12.3 +2021-01-27T14:00,41.7,13,-6.1,0,0,4.1,12.8 +2021-01-27T15:00,42.5,12,-6.2,0,0,2.1,11 +2021-01-27T16:00,40.2,14,-6,0,0,4.1,6.9 +2021-01-27T17:00,29.1,40,7.8,0,0,7.5,8.3 +2021-01-27T18:00,27.3,42,7.3,0,0,7.4,9.6 +2021-01-27T19:00,26.7,43,7,0,0,6.3,8.5 +2021-01-27T20:00,29,39,7.1,0,0,2.9,7.6 +2021-01-27T21:00,25.6,47,8,0,0,1.2,3.4 +2021-01-27T22:00,24.4,49,7.9,0,0,1.3,2 +2021-01-27T23:00,20.7,57,8,0,0,2.7,3.4 +2021-01-28T00:00,20.8,60,8.9,0,0,3.6,4.7 +2021-01-28T01:00,22.2,59,10.1,0,0,3.3,5.4 +2021-01-28T02:00,21.8,63,11.1,0,0,5.6,6.7 +2021-01-28T03:00,27.6,51,11.8,0,0,4.8,6.9 +2021-01-28T04:00,27.7,51,11.9,0,0,4.2,5.6 +2021-01-28T05:00,24.6,64,14.2,0,0,4,5.4 +2021-01-28T06:00,22,71,14.1,0,0,4,5.1 +2021-01-28T07:00,21,74,13.9,0,0,4.1,4.9 +2021-01-28T08:00,25.2,62,14.1,0,0,3.2,5.8 +2021-01-28T09:00,32.5,48,14.7,0,0,4.9,9.6 +2021-01-28T10:00,41.1,35,15.7,0,0,5.1,11 +2021-01-28T11:00,47.7,28,16.3,0,0,7.1,13.6 +2021-01-28T12:00,51.8,24,16.4,0,0,8.2,15.7 +2021-01-28T13:00,54.1,23,16.8,0,0,7.8,15.7 +2021-01-28T14:00,54.6,23,17.2,0,0,7.2,15 +2021-01-28T15:00,53,25,17.7,0,0,4.7,13 +2021-01-28T16:00,44.8,35,18.5,0,0,6.8,7.4 +2021-01-28T17:00,40.6,44,20.6,0,0,5.4,8.3 +2021-01-28T18:00,32.2,62,20.8,0,0,7.2,9.6 +2021-01-28T19:00,29.4,68,20.3,0,0,6.5,9.4 +2021-01-28T20:00,27.3,75,20.3,0,0,2.9,7.8 +2021-01-28T21:00,23.8,87,20.5,0,0,4.3,6 +2021-01-28T22:00,22.6,88,19.5,0,0,4.7,6 +2021-01-28T23:00,22.7,82,18.1,0,0,6,7.2 +2021-01-29T00:00,23.5,76,17.2,0,0,6.3,8.1 +2021-01-29T01:00,23.3,74,16.2,0,0,6.2,7.6 +2021-01-29T02:00,23.7,70,15.3,0,0,6.8,8.1 +2021-01-29T03:00,24.5,65,14.4,0,0,7.1,8.5 +2021-01-29T04:00,25.3,61,13.6,0,0,7.1,8.7 +2021-01-29T05:00,23.9,66,14.1,0,0,7.4,8.5 +2021-01-29T06:00,24.7,64,14.2,0,0,6.9,8.9 +2021-01-29T07:00,26.2,60,14.3,0,0,5.3,8.3 +2021-01-29T08:00,29.7,53,14.5,0,0,3.4,6.3 +2021-01-29T09:00,38.5,38,15.1,0,0,1.8,6.3 +2021-01-29T10:00,46.8,27,14.2,0,0,3.9,8.9 +2021-01-29T11:00,54.1,20,13.5,0,0,6.3,12.8 +2021-01-29T12:00,58.7,17,13.6,0,0,7.9,15.9 +2021-01-29T13:00,60.6,15,12.7,0,0,7.3,15.7 +2021-01-29T14:00,60.4,15,12.7,0,0,5.9,14.8 +2021-01-29T15:00,58,17,13.4,0,0,3.3,12.1 +2021-01-29T16:00,48.6,39,24.4,0,0,6.3,7.4 +2021-01-29T17:00,42.7,41,20.4,0,0,5,9.4 +2021-01-29T18:00,43.6,38,19.5,0,0,1.7,6.9 +2021-01-29T19:00,32.4,58,19.1,0,0,5.8,6.9 +2021-01-29T20:00,31.2,62,19.5,0,0,5.2,7.4 +2021-01-29T21:00,28,69,19,0,0,6,8.1 +2021-01-29T22:00,28.7,62,17.2,0,0,5.5,8.5 +2021-01-29T23:00,30.5,54,15.7,0,0,6,9.2 +2021-01-30T00:00,31.2,51,15.2,0,0,5.8,11.4 +2021-01-30T01:00,30.5,53,15.2,0,0,5.3,8.9 +2021-01-30T02:00,31.2,52,15.6,0,0,1.7,6.7 +2021-01-30T03:00,28.5,59,16,0,0,5.2,7.6 +2021-01-30T04:00,27.9,62,16.6,0,0,7.3,9.2 +2021-01-30T05:00,32.7,61,20.8,0,0,7.9,9.8 +2021-01-30T06:00,35.5,56,21.6,0.004,0,6,10.5 +2021-01-30T07:00,32.2,65,21.7,0,0,4.6,9.4 +2021-01-30T08:00,33.2,67,23.5,0,0,4.5,7.4 +2021-01-30T09:00,38.7,58,25.3,0,0,1.8,7.8 +2021-01-30T10:00,44.3,41,22.2,0,0,2.3,6.7 +2021-01-30T11:00,45.9,33,18.6,0,0,6.4,13.4 +2021-01-30T12:00,47.2,32,18.5,0,0,4.1,13.6 +2021-01-30T13:00,48.3,30,18.2,0,0,4.5,12.5 +2021-01-30T14:00,48.7,27,16.5,0,0,5.5,13 +2021-01-30T15:00,48,25,13.7,0,0,5,13.4 +2021-01-30T16:00,46.3,27,13.9,0,0,3.6,11.6 +2021-01-30T17:00,41.2,43,20.1,0,0,5.6,9.8 +2021-01-30T18:00,37,38,14,0,0,6,10.1 +2021-01-30T19:00,34.1,46,15.6,0,0,5.7,9.6 +2021-01-30T20:00,36.8,43,16.3,0,0,4.6,9.8 +2021-01-30T21:00,35.3,43,14.8,0,0,1.6,6.3 +2021-01-30T22:00,30.8,50,14.3,0,0,4.1,6.3 +2021-01-30T23:00,28.1,54,13.7,0,0,5.2,9.6 +2021-01-31T00:00,25.4,63,14.7,0,0,3.6,8.9 +2021-01-31T01:00,23.9,68,14.9,0,0,4.1,6 +2021-01-31T02:00,24.7,63,13.8,0,0,3.4,5.4 +2021-01-31T03:00,24.1,60,12.3,0,0,3.6,5.4 +2021-01-31T04:00,27.5,50,11.2,0,0,2,4.7 +2021-01-31T05:00,25.8,59,13.5,0,0,8.4,2.9 +2021-01-31T06:00,28.3,52,12.7,0,0,4.6,10.1 +2021-01-31T07:00,23.8,59,11.6,0,0,5.9,6.7 +2021-01-31T08:00,28.4,46,10.3,0,0,4.8,7.4 +2021-01-31T09:00,33.4,34,8.3,0,0,4.3,9.8 +2021-01-31T10:00,39.1,25,6.6,0,0,5.1,11.9 +2021-01-31T11:00,43.3,19,3.7,0,0,4.4,12.3 +2021-01-31T12:00,45.7,20,6.5,0,0,3,11.9 +2021-01-31T13:00,47.5,19,6.9,0,0,3.4,10.1 +2021-01-31T14:00,48.7,17,6.2,0,0,4.5,11.2 +2021-01-31T15:00,48.9,16,4.2,0,0,4.2,11.2 +2021-01-31T16:00,47,30,17.1,0,0,2.1,9.4 +2021-01-31T17:00,45.1,20,6,0,0,4.7,6 +2021-01-31T18:00,42.5,21,5.4,0,0,3.8,5.6 +2021-01-31T19:00,30.6,36,6.4,0,0,5.4,6.5 +2021-01-31T20:00,25.6,50,9.4,0,0,5,6.7 +2021-01-31T21:00,22.8,64,12.6,0,0,4.2,6.9 +2021-01-31T22:00,22.9,62,11.9,0,0,5.3,6.9 +2021-01-31T23:00,22.7,57,9.7,0,0,5.4,6.7 +2021-02-01T00:00,23.2,51,7.5,0,0,4.8,6.9 +2021-02-01T01:00,25,43,5.5,0,0,3.4,5.6 +2021-02-01T02:00,25.3,42,5.3,0,0,3,4 +2021-02-01T03:00,25.3,42,5.3,0,0,3.1,3.8 +2021-02-01T04:00,24.7,43,5.5,0,0,3,3.6 +2021-02-01T05:00,25.4,44,6.4,0,0,3.3,3.6 +2021-02-01T06:00,24.3,46,6.6,0,0,3.4,3.8 +2021-02-01T07:00,22.8,49,6.7,0,0,5.3,6.3 +2021-02-01T08:00,29,38,6.4,0,0,4.2,6.3 +2021-02-01T09:00,36,27,5.2,0,0,4.3,9.2 +2021-02-01T10:00,43.3,19,3.7,0,0,2.9,9.2 +2021-02-01T11:00,48.9,14,2.1,0,0,4.2,10.3 +2021-02-01T12:00,53.4,11,-0.6,0,0,5.2,11.6 +2021-02-01T13:00,55.3,13,4.6,0,0,5.2,11.9 +2021-02-01T14:00,55.2,17,10.5,0,0,1.4,10.3 +2021-02-01T15:00,52.4,28,20.6,0,0,3.4,5.1 +2021-02-01T16:00,47,30,17.4,0,0,5.4,8.7 +2021-02-01T17:00,40.2,41,18.4,0,0,6.7,8.7 +2021-02-01T18:00,38.4,39,15.7,0,0,4.7,8.7 +2021-02-01T19:00,36.4,39,13.7,0,0,5.8,6.9 +2021-02-01T20:00,42,26,9.7,0,0,1.7,7.2 +2021-02-01T21:00,37.8,34,11.8,0,0,2.1,2.9 +2021-02-01T22:00,31.5,53,16.4,0,0,2.1,2.9 +2021-02-01T23:00,28.9,69,19.9,0,0,3.6,5.6 +2021-02-02T00:00,26.9,77,20.8,0,0,4.1,6.5 +2021-02-02T01:00,26.7,76,20.2,0,0,5.9,7.2 +2021-02-02T02:00,27.5,74,20.2,0,0,5,7.2 +2021-02-02T03:00,28.9,69,20,0,0,4.3,6.5 +2021-02-02T04:00,28.7,68,19.3,0,0,4.9,8.1 +2021-02-02T05:00,27.8,69,19,0,0,4.9,8.5 +2021-02-02T06:00,27.8,69,18.8,0,0,5.1,7.4 +2021-02-02T07:00,27.4,69,18.5,0,0,5.4,5.8 +2021-02-02T08:00,33.2,57,19.7,0,0,5.6,8.5 +2021-02-02T09:00,40.3,48,22.2,0,0,7.6,13.6 +2021-02-02T10:00,48.9,37,23.9,0,0,8.5,16.1 +2021-02-02T11:00,55.1,30,24.5,0,0,4.9,15.7 +2021-02-02T12:00,57.4,30,25.8,0,0,3.6,11.6 +2021-02-02T13:00,58.9,29,27,0,0,4.4,11.6 +2021-02-02T14:00,59.4,30,28,0,0,4.7,11.6 +2021-02-02T15:00,59.5,30,28.2,0,0,4.6,11.6 +2021-02-02T16:00,58,39,33,0,0,2.2,10.1 +2021-02-02T17:00,49.3,48,30.5,0,0,6.7,7.2 +2021-02-02T18:00,52.9,37,27.3,0,0,4.7,9.4 +2021-02-02T19:00,46.4,47,27.1,0,0,3.4,5.4 +2021-02-02T20:00,36.5,70,27.8,0,0,3.7,6.5 +2021-02-02T21:00,32.2,84,28,0,0,2.7,5.8 +2021-02-02T22:00,30,89,27.1,0,0,3,5.1 +2021-02-02T23:00,30.2,84,25.9,0,0,4.8,7.4 +2021-02-03T00:00,29.9,79,24.3,0,0,4.7,7.6 +2021-02-03T01:00,29,80,23.7,0,0,6,7.4 +2021-02-03T02:00,28.8,79,23.2,0,0,7.2,8.5 +2021-02-03T03:00,30.1,75,23.1,0,0,6.1,8.5 +2021-02-03T04:00,30.7,74,23.5,0,0,8.6,9.6 +2021-02-03T05:00,31.3,72,23.5,0,0,7.8,10.7 +2021-02-03T06:00,31.6,73,23.8,0,0,6.9,9.4 +2021-02-03T07:00,31.1,76,24.4,0,0,8.3,10.3 +2021-02-03T08:00,39.7,57,25.8,0,0,7.2,11.2 +2021-02-03T09:00,48.6,45,28.3,0,0,9.9,15.2 +2021-02-03T10:00,55,37,29.5,0,0,10.2,17.7 +2021-02-03T11:00,58.8,31,28.2,0,0,11.6,21.9 +2021-02-03T12:00,60.4,28,26.9,0,0,6.9,21.5 +2021-02-03T13:00,62.1,24,24.8,0,0,1.9,15 +2021-02-03T14:00,61.4,23,22.8,0,0,3.1,11.6 +2021-02-03T15:00,57.5,40,33.2,0.008,0,3.2,9.8 +2021-02-03T16:00,52.1,54,36.1,0.016,0,6.5,10.7 +2021-02-03T17:00,45.2,79,39,0,0,5.2,12.3 +2021-02-03T18:00,46.9,71,38.1,0.028,0,2.5,6.5 +2021-02-03T19:00,42.4,90,39.6,0.024,0,3.4,6.5 +2021-02-03T20:00,40.2,87,36.8,0.024,0,6.2,8.5 +2021-02-03T21:00,37,88,33.8,0.012,0,6.6,12.8 +2021-02-03T22:00,35.1,94,33.4,0.012,0.028,2.3,10.7 +2021-02-03T23:00,34.9,93,33.1,0.004,0.028,3.2,5.4 +2021-02-04T00:00,32.9,58,19.7,0,0.028,14.5,18.8 +2021-02-04T01:00,28.9,71,20.5,0,0.028,6,25.9 +2021-02-04T02:00,28.7,74,21.3,0,0.028,3.8,10.1 +2021-02-04T03:00,27.4,82,22.6,0,0,2.4,6.7 +2021-02-04T04:00,26.3,87,23.1,0,0,1.4,4.3 +2021-02-04T05:00,23.4,84,19.3,0,0,5,5.8 +2021-02-04T06:00,22.5,84,18.4,0,0,4,8.7 +2021-02-04T07:00,22,86,18.4,0,0,4.7,6.5 +2021-02-04T08:00,27.2,73,19.6,0,0,2.9,5.8 +2021-02-04T09:00,33.9,29,5.3,0,0,10,16.8 +2021-02-04T10:00,35.7,26,4,0,0,8.6,19.7 +2021-02-04T11:00,38.3,22,3.2,0,0,12.6,23.5 +2021-02-04T12:00,39.3,19,0.6,0,0,15.7,28 +2021-02-04T13:00,38.8,21,2.1,0,0,18.1,33.3 +2021-02-04T14:00,38.7,22,3.4,0,0,14.9,32.2 +2021-02-04T15:00,38.4,22,2.8,0,0,14,27.3 +2021-02-04T16:00,37.6,23,2.8,0,0,11.2,25.1 +2021-02-04T17:00,35,28,5.2,0,0,4.9,19.9 +2021-02-04T18:00,31.2,35,6.8,0,0,7.7,12.1 +2021-02-04T19:00,30.1,37,7,0,0,7.2,14.1 +2021-02-04T20:00,27.4,44,8.3,0,0,6.5,11.9 +2021-02-04T21:00,29.3,41,8.2,0,0,3.8,8.1 +2021-02-04T22:00,26.7,49,10.1,0,0,4.5,4.9 +2021-02-04T23:00,24.7,51,9.2,0,0,5.2,7.4 +2021-02-05T00:00,23.1,56,9.8,0,0,5.9,6.9 +2021-02-05T01:00,23.2,55,9.2,0,0,3.3,6.9 +2021-02-05T02:00,22.4,56,9.2,0,0,3.8,5.8 +2021-02-05T03:00,21.8,57,9.1,0,0,3.9,6.3 +2021-02-05T04:00,20.9,60,9.1,0,0,4.9,6 +2021-02-05T05:00,23,52,8.2,0,0,3.4,6 +2021-02-05T06:00,22.8,50,7.1,0,0,4.2,8.3 +2021-02-05T07:00,22.8,50,6.9,0,0,3.6,6.7 +2021-02-05T08:00,26.2,44,7.4,0,0,4.7,8.3 +2021-02-05T09:00,32.4,33,6.3,0,0,7.1,13.2 +2021-02-05T10:00,36.3,28,6.2,0,0,11.2,19.9 +2021-02-05T11:00,39.8,24,6.1,0,0,11.5,22.6 +2021-02-05T12:00,42.4,23,7.5,0,0,6.7,21.7 +2021-02-05T13:00,43.8,23,8.8,0,0,1.6,14.8 +2021-02-05T14:00,44.2,23,9.1,0,0,2.9,8.9 +2021-02-05T15:00,44.6,23,8.9,0,0,4.7,12.3 +2021-02-05T16:00,43.8,24,9.3,0,0,4.7,11.2 +2021-02-05T17:00,37.9,39,15.2,0,0,3.7,9.6 +2021-02-05T18:00,34.3,43,14,0,0,3.8,4.7 +2021-02-05T19:00,31,49,13.9,0,0,4.5,6.9 +2021-02-05T20:00,28.7,53,13.7,0,0,4.2,7.2 +2021-02-05T21:00,28,55,14.1,0,0,5.2,6.9 +2021-02-05T22:00,28.6,53,13.7,0,0,5.4,8.1 +2021-02-05T23:00,29.1,53,14,0,0,5.6,8.3 +2021-02-06T00:00,33.8,41,12.7,0,0,7.9,12.1 +2021-02-06T01:00,34.4,39,11.9,0,0,12.4,20.8 +2021-02-06T02:00,32.5,41,11.1,0,0,8,21 +2021-02-06T03:00,27.6,50,11.4,0,0,7,13.6 +2021-02-06T04:00,29.5,46,11.3,0,0,5.8,9.6 +2021-02-06T05:00,28,56,14.2,0,0,5.8,8.3 +2021-02-06T06:00,30.6,53,15.3,0,0,5,7.4 +2021-02-06T07:00,33.2,44,13.6,0,0,2.4,6.9 +2021-02-06T08:00,33,48,15.4,0,0,1.8,3.4 +2021-02-06T09:00,35.6,41,14.4,0,0,0.5,6.5 +2021-02-06T10:00,38.7,28,8.2,0,0,3.4,8.9 +2021-02-06T11:00,41.6,22,5.5,0,0,10.3,19.5 +2021-02-06T12:00,43.3,20,4.9,0,0,9.3,21.9 +2021-02-06T13:00,45.1,18,3.7,0,0,8.9,19.2 +2021-02-06T14:00,45.9,18,4.1,0,0,9.4,19.7 +2021-02-06T15:00,46.1,18,4.4,0,0,6.7,18.8 +2021-02-06T16:00,46.9,17,4.2,0,0,5.7,13.6 +2021-02-06T17:00,42.6,25,8.9,0,0,1.6,10.3 +2021-02-06T18:00,34.3,41,13,0,0,5.5,5.1 +2021-02-06T19:00,34,42,13.2,0,0,6.2,9.2 +2021-02-06T20:00,33.8,41,12.7,0,0,5.2,10.3 +2021-02-06T21:00,33.7,40,11.7,0,0,3.6,8.7 +2021-02-06T22:00,31.8,43,11.8,0,0,2.1,4.7 +2021-02-06T23:00,28.8,51,12.9,0,0,3.8,4.9 +2021-02-07T00:00,28.9,52,13.6,0,0,1.4,4.7 +2021-02-07T01:00,27.4,59,14.8,0,0,3.3,4.5 +2021-02-07T02:00,29.8,54,15.3,0,0,4,5.6 +2021-02-07T03:00,32.2,46,13.5,0,0,5.1,7.4 +2021-02-07T04:00,32.5,45,13.5,0,0,5.7,8.7 +2021-02-07T05:00,34.1,45,14.8,0,0,5.1,8.5 +2021-02-07T06:00,33.6,47,15.5,0,0,4.9,8.1 +2021-02-07T07:00,32.5,49,15.4,0,0,5.3,8.3 +2021-02-07T08:00,33.6,49,16.4,0,0,6.9,10.7 +2021-02-07T09:00,43,32,15.2,0,0,8.8,14.8 +2021-02-07T10:00,48.2,19,7.6,0,0,18.9,31.1 +2021-02-07T11:00,50.5,16,6.2,0,0,16.2,32.7 +2021-02-07T12:00,53.1,12,2,0,0,17.2,31.5 +2021-02-07T13:00,54.1,10,-2.5,0,0,18.8,33.1 +2021-02-07T14:00,54.2,9,-4.3,0,0,19,34 +2021-02-07T15:00,53.7,8,-6.1,0,0,17.9,33.3 +2021-02-07T16:00,52.2,9,-5.4,0,0,13.5,31.1 +2021-02-07T17:00,46.5,15,1.5,0,0,6.3,22.8 +2021-02-07T18:00,41.6,18,1.1,0,0,6.2,12.5 +2021-02-07T19:00,23.8,69,15.3,0,0,18.7,30.9 +2021-02-07T20:00,19.3,71,11.4,0,0,11.9,30.9 +2021-02-07T21:00,17.4,71,9.7,0,0,5.9,21.3 +2021-02-07T22:00,16.5,72,9.1,0,0,0.4,11.4 +2021-02-07T23:00,13.9,81,9.1,0,0,0.5,6.9 +2021-02-08T00:00,11.5,84,7.5,0,0,2.7,7.8 +2021-02-08T01:00,9.7,95,8.4,0,0,2.3,8.1 +2021-02-08T02:00,8.7,91,6.5,0,0,3.1,8.7 +2021-02-08T03:00,8.1,91,5.9,0,0,3.5,8.9 +2021-02-08T04:00,7.9,90,5.5,0,0,4.7,10.7 +2021-02-08T05:00,9,91,6.8,0,0,1.3,10.7 +2021-02-08T06:00,7.3,88,4.6,0,0,3,8.3 +2021-02-08T07:00,6.4,88,3.5,0,0,6.8,12.8 +2021-02-08T08:00,11.5,77,5.5,0,0,6.9,14.1 +2021-02-08T09:00,20.7,51,5.3,0,0,4.8,14.1 +2021-02-08T10:00,28.7,37,5.4,0,0,9.5,18.3 +2021-02-08T11:00,30.4,35,6.2,0,0,14.4,26.4 +2021-02-08T12:00,32.4,32,5.6,0,0,11.5,26.8 +2021-02-08T13:00,35.3,28,5.4,0,0,10.8,22.8 +2021-02-08T14:00,37.2,25,4.9,0,0,11.4,21.9 +2021-02-08T15:00,36.9,26,4.9,0,0,9.8,21.9 +2021-02-08T16:00,34.7,28,5,0,0,8.3,18.8 +2021-02-08T17:00,26.4,41,5.8,0,0,4.7,14.8 +2021-02-08T18:00,21,52,6.1,0,0,4,8.1 +2021-02-08T19:00,20.2,54,6.2,0,0,3.8,5.4 +2021-02-08T20:00,19,56,5.9,0,0,3.5,5.4 +2021-02-08T21:00,18.6,58,6.1,0,0,2.7,4.7 +2021-02-08T22:00,17.8,60,6.3,0,0,2.6,5.6 +2021-02-08T23:00,16,64,6.1,0,0,3.2,5.6 +2021-02-09T00:00,14.2,69,6,0,0,2.5,5.6 +2021-02-09T01:00,13.3,72,5.8,0,0,4.5,7.8 +2021-02-09T02:00,12.1,75,5.8,0,0,5.9,11 +2021-02-09T03:00,10.9,80,6,0,0,4.4,11 +2021-02-09T04:00,9.7,84,5.8,0,0,2.4,8.7 +2021-02-09T05:00,10,87,6.9,0,0,2.4,7.2 +2021-02-09T06:00,9.9,85,6.2,0,0,2.6,8.3 +2021-02-09T07:00,10,84,6,0,0,3.1,7.6 +2021-02-09T08:00,11.2,81,6.5,0,0,0.9,7.4 +2021-02-09T09:00,13,75,6.5,0,0,1.5,9.8 +2021-02-09T10:00,18.2,61,7.1,0,0,3.2,11.6 +2021-02-09T11:00,24.4,47,7.3,0,0,3.4,12.3 +2021-02-09T12:00,29.3,39,7.3,0,0,5.4,14.5 +2021-02-09T13:00,33,34,7.8,0,0,5.5,15.4 +2021-02-09T14:00,34.4,33,8.1,0,0,6.3,15 +2021-02-09T15:00,34.6,33,8.2,0,0,5.3,15.2 +2021-02-09T16:00,35.4,32,8.2,0,0,2.8,12.5 +2021-02-09T17:00,27.7,46,9.8,0,0,3.4,7.2 +2021-02-09T18:00,22.4,57,9.5,0,0,3.9,6.5 +2021-02-09T19:00,20.5,62,9.5,0,0,3.2,5.1 +2021-02-09T20:00,19,67,9.7,0,0,5.1,8.9 +2021-02-09T21:00,17.7,70,9.7,0,0,3.1,8.5 +2021-02-09T22:00,18,69,9.6,0,0,3.5,6.3 +2021-02-09T23:00,17.8,70,9.7,0,0,2,6.5 +2021-02-10T00:00,18.3,69,9.8,0,0,3.2,5.8 +2021-02-10T01:00,18.2,70,10.2,0,0,4.6,8.5 +2021-02-10T02:00,18.2,72,10.8,0,0,4.3,9.2 +2021-02-10T03:00,19.2,70,10.9,0,0,5.8,10.3 +2021-02-10T04:00,18.4,72,11,0,0,5.4,11.4 +2021-02-10T05:00,15.4,80,10.4,0,0,5.3,9.8 +2021-02-10T06:00,14.7,80,9.8,0,0,2.4,10.5 +2021-02-10T07:00,14.7,79,9.5,0,0,2.5,7.2 +2021-02-10T08:00,15.1,78,9.4,0,0,1.1,6.7 +2021-02-10T09:00,15.5,76,9.4,0,0,2.5,7.6 +2021-02-10T10:00,16.2,75,9.5,0,0,2.2,9.4 +2021-02-10T11:00,20.2,63,9.7,0,0,2.9,11.4 +2021-02-10T12:00,24.3,54,10,0,0,2.1,11 +2021-02-10T13:00,29.9,43,10.1,0,0,2.6,11.2 +2021-02-10T14:00,34.2,37,10.5,0,0,2.8,11.2 +2021-02-10T15:00,36.5,35,11.2,0,0,4.5,11.6 +2021-02-10T16:00,36.7,35,11.5,0,0,8,14.8 +2021-02-10T17:00,26.9,53,12.1,0,0,3.2,15 +2021-02-10T18:00,21.8,67,12.6,0,0,3.8,5.1 +2021-02-10T19:00,25.1,61,13.5,0,0,2.4,4.9 +2021-02-10T20:00,20.4,68,11.4,0,0,9.9,14.3 +2021-02-10T21:00,16.4,72,8.9,0,0,8.4,17.7 +2021-02-10T22:00,14,74,7.3,0,0,5.5,14.1 +2021-02-10T23:00,11.3,82,6.9,0,0,3.8,9.4 +2021-02-11T00:00,10.8,83,6.6,0,0,3.7,7.8 +2021-02-11T01:00,11.5,79,6.4,0,0,6,10.7 +2021-02-11T02:00,11.4,78,6,0,0,7.1,13 +2021-02-11T03:00,10.8,82,6.3,0,0,3.3,12.5 +2021-02-11T04:00,10.2,86,6.9,0,0,5.5,10.3 +2021-02-11T05:00,8.4,87,5.3,0,0,3.9,10.1 +2021-02-11T06:00,8.3,86,5.1,0,0,2.2,7.4 +2021-02-11T07:00,10,80,5.2,0,0,4,8.5 +2021-02-11T08:00,12,78,6.4,0,0,3.5,9.2 +2021-02-11T09:00,16.5,63,6.1,0,0,5.1,12.1 +2021-02-11T10:00,20.9,50,5.4,0,0,5,14.1 +2021-02-11T11:00,25.2,43,6,0,0,4.9,13.6 +2021-02-11T12:00,30.7,35,6.3,0,0,7.6,17.7 +2021-02-11T13:00,33.5,31,6.1,0,0,7.4,17.9 +2021-02-11T14:00,34.9,29,5.8,0,0,9.5,19.5 +2021-02-11T15:00,33.8,29,5,0,0,8.9,19.9 +2021-02-11T16:00,31.7,31,4.4,0,0,9,18.1 +2021-02-11T17:00,16.7,51,1.9,0,0,8.6,17.2 +2021-02-11T18:00,13.8,54,0.3,0,0,9.2,16.1 +2021-02-11T19:00,12.2,58,0.1,0,0,6.8,14.8 +2021-02-11T20:00,11.3,60,0.1,0,0,7.8,13.4 +2021-02-11T21:00,11,60,-0.1,0,0,7,15 +2021-02-11T22:00,10.8,61,0.1,0,0,4.3,13.2 +2021-02-11T23:00,10.7,62,0.2,0,0,3.6,9.6 +2021-02-12T00:00,10.4,64,0.5,0,0,4.3,9.2 +2021-02-12T01:00,9.7,65,0.1,0,0,4.7,10.1 +2021-02-12T02:00,9.2,65,-0.1,0,0,4.7,10.1 +2021-02-12T03:00,8.8,66,-0.3,0,0,4.2,10.1 +2021-02-12T04:00,8,68,-0.4,0,0,4,9.6 +2021-02-12T05:00,5.8,68,-2.4,0,0,8.6,12.3 +2021-02-12T06:00,4.4,69,-3.5,0,0.028,8.3,15.4 +2021-02-12T07:00,4,68,-4.2,0,0,7.3,15.4 +2021-02-12T08:00,4,66,-4.7,0,0,6.1,14.3 +2021-02-12T09:00,5.5,60,-5.3,0,0,4.8,13 +2021-02-12T10:00,6.5,55,-6.1,0,0,5,12.8 +2021-02-12T11:00,10,50,-5.2,0,0,3.8,13.6 +2021-02-12T12:00,15.5,43,-3.2,0,0,3.8,13.2 +2021-02-12T13:00,17.1,40,-3.1,0,0,6.3,15.7 +2021-02-12T14:00,17.2,39,-3.5,0,0,7.4,18.1 +2021-02-12T15:00,18.2,38,-3.4,0,0,7.2,17.9 +2021-02-12T16:00,17.7,38,-3.9,0,0,9.8,18.6 +2021-02-12T17:00,7.3,58,-4.5,0,0,6,18.8 +2021-02-12T18:00,7.4,57,-4.7,0,0,3.4,11.9 +2021-02-12T19:00,7.5,57,-4.7,0,0,1.6,8.9 +2021-02-12T20:00,6.6,60,-4.4,0,0,3,7.6 +2021-02-12T21:00,7.1,61,-3.7,0,0,3.4,8.7 +2021-02-12T22:00,6.6,64,-3.1,0,0,1.4,8.3 +2021-02-12T23:00,7.2,63,-2.9,0,0.028,3.1,6.5 +2021-02-13T00:00,7.6,60,-3.5,0,0,5.9,12.8 +2021-02-13T01:00,7.3,61,-3.4,0,0.028,5.4,12.5 +2021-02-13T02:00,6.4,65,-2.9,0,0.028,4.3,11 +2021-02-13T03:00,6.4,64,-3,0,0,5,10.7 +2021-02-13T04:00,5.7,65,-3.6,0,0,5.1,10.3 +2021-02-13T05:00,1.8,62,-8.4,0,0,7.6,10.7 +2021-02-13T06:00,0.8,64,-8.7,0,0,4.3,13.9 +2021-02-13T07:00,0.1,64,-9,0,0,4.5,10.1 +2021-02-13T08:00,1.1,61,-9.3,0,0,2.7,10.3 +2021-02-13T09:00,1.9,56,-10,0,0,3.7,11.2 +2021-02-13T10:00,4.2,51,-10,0,0,2.4,11.2 +2021-02-13T11:00,6.3,47,-9.8,0,0,2.7,11.2 +2021-02-13T12:00,7.8,46,-8.7,0,0,2.5,11.2 +2021-02-13T13:00,8.7,46,-8,0,0,3.9,11 +2021-02-13T14:00,8.8,48,-7.1,0,0.028,5.9,14.1 +2021-02-13T15:00,10,49,-5.5,0,0.055,6,14.5 +2021-02-13T16:00,10.5,51,-4.1,0,0.083,8.1,15.9 +2021-02-13T17:00,3.5,59,-7.6,0,0.055,4,16.1 +2021-02-13T18:00,3.6,62,-6.7,0,0.11,4.5,11 +2021-02-13T19:00,3.8,62,-6.3,0,0.083,2.8,10.5 +2021-02-13T20:00,4.2,64,-5.3,0,0.083,4.2,9.6 +2021-02-13T21:00,4.2,63,-5.6,0,0.083,6.6,12.3 +2021-02-13T22:00,3.8,62,-6.2,0,0.055,7.9,15 +2021-02-13T23:00,3.5,63,-6.4,0,0.055,7.5,14.8 +2021-02-14T00:00,2.9,64,-6.6,0,0.055,8.6,15.7 +2021-02-14T01:00,2.1,63,-7.5,0,0.055,8,15.9 +2021-02-14T02:00,1.8,63,-7.8,0,0.055,7.2,15 +2021-02-14T03:00,1.7,64,-7.6,0,0.055,6.4,13.9 +2021-02-14T04:00,1.5,63,-8,0,0.055,7.1,13 +2021-02-14T05:00,-2.6,61,-12.5,0,0.028,7.8,14.5 +2021-02-14T06:00,-2.9,60,-13.4,0,0,7.8,15.2 +2021-02-14T07:00,-3.5,59,-14.2,0,0.028,7.3,14.5 +2021-02-14T08:00,-3.3,57,-14.6,0,0.028,7.6,15.2 +2021-02-14T09:00,-2.2,53,-15.1,0,0,5.9,15.4 +2021-02-14T10:00,-1.1,49,-15.8,0,0,3.8,14.1 +2021-02-14T11:00,0.5,41,-17.9,0,0,3.4,13.2 +2021-02-14T12:00,2.1,38,-17.6,0,0,4.3,14.5 +2021-02-14T13:00,3.2,38,-16.8,0,0,4.1,15 +2021-02-14T14:00,4.1,38,-16,0,0,4.9,15 +2021-02-14T15:00,4.3,38,-15.5,0,0,6,15.4 +2021-02-14T16:00,3.1,42,-14.8,0,0,7.2,15.9 +2021-02-14T17:00,-0.8,53,-14.1,0,0,4.4,16.1 +2021-02-14T18:00,-0.8,53,-13.9,0,0,4.2,12.3 +2021-02-14T19:00,-0.3,52,-13.6,0,0,4.1,9.6 +2021-02-14T20:00,-0.3,51,-14.3,0,0,4.1,9.4 +2021-02-14T21:00,-0.4,49,-15.1,0,0,4.9,9.8 +2021-02-14T22:00,-1,52,-14.5,0,0,5.3,10.3 +2021-02-14T23:00,-2,55,-14.2,0,0,4.3,9.8 +2021-02-15T00:00,-3.2,58,-14.3,0,0,4,8.9 +2021-02-15T01:00,-4.5,62,-14.3,0,0,4.2,8.5 +2021-02-15T02:00,-6.2,67,-14.3,0,0,3.1,8.3 +2021-02-15T03:00,-7.2,70,-14.4,0,0,3,8.3 +2021-02-15T04:00,-7.9,72,-14.4,0,0,3,7.8 +2021-02-15T05:00,-8.5,77,-13.7,0,0,0.4,7.8 +2021-02-15T06:00,-7.8,73,-14.2,0,0,2.4,7.2 +2021-02-15T07:00,-8.1,74,-14.2,0,0,2.4,7.4 +2021-02-15T08:00,-6,68,-13.9,0,0,2,8.1 +2021-02-15T09:00,-0.8,54,-13.4,0,0,3.3,11 +2021-02-15T10:00,7.2,40,-12,0,0,3.1,12.1 +2021-02-15T11:00,16,33,-8.2,0,0,4.3,13.2 +2021-02-15T12:00,22.7,29,-4.6,0,0,5.7,15.4 +2021-02-15T13:00,25.8,27,-3.5,0,0,8.2,18.1 +2021-02-15T14:00,26.2,28,-2.4,0,0,9.7,19.7 +2021-02-15T15:00,25,31,-1.3,0,0,9.6,20.4 +2021-02-15T16:00,24.6,32,-1.1,0,0,8.7,19.2 +2021-02-15T17:00,19.7,47,2.7,0,0,7.1,16.6 +2021-02-15T18:00,18.3,49,2.2,0,0,5.7,13.9 +2021-02-15T19:00,16.2,53,1.9,0,0,4.4,8.7 +2021-02-15T20:00,16.3,51,1.5,0,0,2,5.4 +2021-02-15T21:00,15.6,54,1.8,0,0,3.6,5.8 +2021-02-15T22:00,16.2,54,2.5,0,0,1.1,6.5 +2021-02-15T23:00,16.4,54,2.8,0,0,1.6,4.5 +2021-02-16T00:00,15.4,57,2.8,0,0,2.1,4.7 +2021-02-16T01:00,15.6,57,2.9,0,0,5.5,7.8 +2021-02-16T02:00,16.3,57,3.7,0,0,6.9,10.5 +2021-02-16T03:00,16.9,58,4.5,0,0,7.2,10.7 +2021-02-16T04:00,17.1,58,4.7,0,0,5.6,10.7 +2021-02-16T05:00,19,58,6.7,0,0,2.2,8.7 +2021-02-16T06:00,17.9,62,7,0,0,1.6,3.4 +2021-02-16T07:00,15.5,68,6.7,0,0,3.6,5.1 +2021-02-16T08:00,19.7,55,6.3,0,0,7,12.3 +2021-02-16T09:00,28.8,38,6.5,0,0,0.9,12.1 +2021-02-16T10:00,33.7,32,7,0,0,3.2,9.8 +2021-02-16T11:00,37.6,30,8.7,0,0,4,11.9 +2021-02-16T12:00,40.4,27,9.1,0,0,3.8,12.1 +2021-02-16T13:00,41.5,24,7.3,0,0,4.7,12.5 +2021-02-16T14:00,41.8,24,7.2,0,0,6.9,15 +2021-02-16T15:00,41.1,23,6.4,0,0,6.9,15.7 +2021-02-16T16:00,39.7,24,6,0,0,6.8,14.1 +2021-02-16T17:00,28.9,49,12.4,0,0,5.4,11.4 +2021-02-16T18:00,26.2,57,13.2,0,0,4.6,6.9 +2021-02-16T19:00,24,65,13.8,0,0,3.5,6.3 +2021-02-16T20:00,21.8,71,13.8,0,0,4.4,5.8 +2021-02-16T21:00,20.7,72,13.1,0,0,3.2,5.4 +2021-02-16T22:00,19.9,70,11.6,0,0,4,5.8 +2021-02-16T23:00,18.9,69,10.2,0,0,3.5,6.3 +2021-02-17T00:00,18.5,68,9.8,0,0,3.2,5.4 +2021-02-17T01:00,18.6,65,8.8,0,0,2.1,5.6 +2021-02-17T02:00,17.2,67,8.1,0,0,0.9,3.1 +2021-02-17T03:00,16.8,63,6.5,0,0,1.4,2.9 +2021-02-17T04:00,17.2,59,5.2,0,0,2.6,4.3 +2021-02-17T05:00,14.5,82,10.1,0,0,6.1,5.4 +2021-02-17T06:00,17.2,82,12.7,0,0,4,7.4 +2021-02-17T07:00,16.7,86,13.4,0,0,2.2,6.5 +2021-02-17T08:00,19,82,14.5,0,0,0.3,5.6 +2021-02-17T09:00,22.6,76,16.3,0,0,0.4,6.3 +2021-02-17T10:00,26.1,67,16.5,0,0,2.4,9.6 +2021-02-17T11:00,29.8,58,16.8,0,0,2.9,11.4 +2021-02-17T12:00,32.9,49,15.7,0,0,3.8,12.5 +2021-02-17T13:00,34.2,45,15,0,0,5,13.6 +2021-02-17T14:00,34.5,44,14.8,0,0,6.7,15.2 +2021-02-17T15:00,33.5,47,15.4,0,0,7.6,15.7 +2021-02-17T16:00,32,53,16.6,0,0,7.7,15.4 +2021-02-17T17:00,27.1,77,20.7,0,0.028,6.1,13.9 +2021-02-17T18:00,25.6,82,21,0,0.083,7.2,11.2 +2021-02-17T19:00,25.3,84,21.1,0,0.138,7.3,12.5 +2021-02-17T20:00,24.9,88,21.9,0,0.276,7.2,11.9 +2021-02-17T21:00,23.8,87,20.6,0,0.22,5.6,13 +2021-02-17T22:00,23.4,88,20.3,0,0.165,4.4,9.8 +2021-02-17T23:00,23,90,20.4,0,0.165,4.7,8.5 +2021-02-18T00:00,22.6,91,20.2,0,0.138,4.7,8.5 +2021-02-18T01:00,22.2,90,19.8,0,0.083,4.7,8.3 +2021-02-18T02:00,21,91,18.9,0,0.055,2.9,7.8 +2021-02-18T03:00,20.1,91,17.9,0,0.028,3,5.4 +2021-02-18T04:00,20.6,93,19,0,0.028,1.3,4 +2021-02-18T05:00,18.1,99,17.8,0,0,3,3.4 +2021-02-18T06:00,17.2,98,16.6,0,0,2.9,4 +2021-02-18T07:00,14.5,97,13.8,0,0,4.3,6 +2021-02-18T08:00,12.5,85,8.7,0,0,3.2,6 +2021-02-18T09:00,19.1,77,13,0,0,0.3,5.6 +2021-02-18T10:00,20.7,78,14.8,0,0,2.4,5.6 +2021-02-18T11:00,25.3,65,15.2,0,0,1.8,5.4 +2021-02-18T12:00,28.2,52,12.7,0,0,2.1,4.5 +2021-02-18T13:00,29.9,45,11.3,0,0,2.8,6.3 +2021-02-18T14:00,30.3,43,10.4,0,0,4.2,8.7 +2021-02-18T15:00,29.4,48,12,0,0,3.7,8.9 +2021-02-18T16:00,25.9,54,11.4,0,0,4.9,8.1 +2021-02-18T17:00,24.1,68,15.2,0,0,5.4,9.6 +2021-02-18T18:00,25.9,60,13.9,0,0,3.7,6.5 +2021-02-18T19:00,25.7,59,13.2,0,0,2.6,4.9 +2021-02-18T20:00,18.1,67,8.8,0,0,6.7,8.3 +2021-02-18T21:00,12.3,73,5.3,0,0,6.3,8.5 +2021-02-18T22:00,11.2,70,3.3,0,0,5.1,8.5 +2021-02-18T23:00,9.9,65,0.6,0,0,5.2,7.2 +2021-02-19T00:00,1.8,68,-6.4,0,0,8.2,11 +2021-02-19T01:00,1.8,65,-7.4,0,0,8.6,12.3 +2021-02-19T02:00,3.8,61,-6.7,0,0,7.4,11.4 +2021-02-19T03:00,-0.2,66,-8.9,0,0,8.6,11.4 +2021-02-19T04:00,1,64,-8.2,0,0,7.9,12.1 +2021-02-19T05:00,12.3,64,2.5,0,0,5.8,10.7 +2021-02-19T06:00,17.8,43,-0.9,0,0,2.8,8.1 +2021-02-19T07:00,14.5,56,1.8,0,0,5.8,7.2 +2021-02-19T08:00,17.4,60,5.9,0,0,4.8,8.7 +2021-02-19T09:00,23.5,49,7.1,0,0,4.5,9.4 +2021-02-19T10:00,31.3,41,10,0,0,8.4,14.5 +2021-02-19T11:00,38.4,33,11.8,0,0,11.7,19.9 +2021-02-19T12:00,41.5,35,15.7,0,0,7.8,20.6 +2021-02-19T13:00,41.1,43,20.1,0,0,4.2,15 +2021-02-19T14:00,41.5,41,19.4,0,0,4.6,9.4 +2021-02-19T15:00,41.6,39,18.3,0,0,10.4,17.7 +2021-02-19T16:00,39.1,45,19.3,0,0,12,21.7 +2021-02-19T17:00,36.4,49,19.1,0,0,9.2,20.8 +2021-02-19T18:00,29.2,59,16.8,0,0,7.4,14.8 +2021-02-19T19:00,26.9,60,14.7,0,0,5.1,10.7 +2021-02-19T20:00,23,69,14.3,0,0,6,9.8 +2021-02-19T21:00,19.3,74,12.4,0,0,9.3,11.6 +2021-02-19T22:00,19,70,10.9,0,0,7.6,12.1 +2021-02-19T23:00,16.9,71,9.1,0,0,7.2,9.4 +2021-02-20T00:00,11.6,76,5.4,0,0,8.4,11 +2021-02-20T01:00,13.9,71,6.4,0,0,6.9,11 +2021-02-20T02:00,12.1,72,4.7,0,0,8.2,10.5 +2021-02-20T03:00,11,73,3.9,0,0,9.3,12.1 +2021-02-20T04:00,16.3,65,6.5,0,0,7.9,12.1 +2021-02-20T05:00,16.3,73,9.1,0,0,7.8,9.8 +2021-02-20T06:00,15,71,7.3,0,0,8.6,10.5 +2021-02-20T07:00,12.5,76,6.4,0,0,9.5,13 +2021-02-20T08:00,21.3,67,12.2,0,0,6.6,13 +2021-02-20T09:00,31.2,58,18.2,0,0,5.4,11 +2021-02-20T10:00,38.1,59,25.2,0,0,5.1,9.8 +2021-02-20T11:00,40.6,55,25.8,0,0,5.4,8.9 +2021-02-20T12:00,43.2,50,25.6,0,0,5.4,9.4 +2021-02-20T13:00,54.7,18,12.3,0,0,5.3,14.8 +2021-02-20T14:00,51.4,24,16,0,0,10.2,16.3 +2021-02-20T15:00,42.3,42,20.9,0,0,15.7,29.3 +2021-02-20T16:00,40.9,51,24.1,0,0,16.3,26.4 +2021-02-20T17:00,37.3,68,27.7,0,0,6.8,27.1 +2021-02-20T18:00,34.2,80,28.6,0.004,0.055,4.6,11.9 +2021-02-20T19:00,34.3,80,28.7,0,0.165,3.6,9.2 +2021-02-20T20:00,30.7,92,28.7,0,0.358,6,10.1 +2021-02-20T21:00,28.9,94,27.2,0,0.165,2.3,9.8 +2021-02-20T22:00,28.8,93,27.1,0,0.028,3.7,6.5 +2021-02-20T23:00,28.8,91,26.5,0.004,0.11,3.5,7.6 +2021-02-21T00:00,23.4,91,21.2,0,0.055,4.3,8.5 +2021-02-21T01:00,22,91,19.7,0,0,4,6 +2021-02-21T02:00,21.2,81,16.3,0,0.028,5.2,17 +2021-02-21T03:00,17.2,77,11.2,0,0,4,9.2 +2021-02-21T04:00,18,76,11.7,0,0,4.8,7.4 +2021-02-21T05:00,23.5,70,15.2,0,0,7.7,7.8 +2021-02-21T06:00,27.2,57,14.2,0,0,4.9,9.6 +2021-02-21T07:00,26.7,62,15.4,0,0,1.5,6.5 +2021-02-21T08:00,27.8,57,14.5,0,0,3.8,4.9 +2021-02-21T09:00,26.8,56,13.2,0,0,3.6,6.5 +2021-02-21T10:00,30.6,49,13.8,0,0,2.8,6.9 +2021-02-21T11:00,32.9,50,16.4,0,0,1.9,6 +2021-02-21T12:00,33.8,47,15.9,0,0,2.7,6.5 +2021-02-21T13:00,35.1,48,17.2,0,0,2.3,5.8 +2021-02-21T14:00,35.9,47,17.5,0,0,3.2,6.3 +2021-02-21T15:00,36.2,42,15.3,0,0,5.5,10.1 +2021-02-21T16:00,34.6,46,16.1,0,0,6,12.8 +2021-02-21T17:00,34.9,44,14.9,0,0,9.2,12.3 +2021-02-21T18:00,31.3,47,13.3,0,0,15,25.1 +2021-02-21T19:00,30.7,48,13.1,0,0,12.8,25.5 +2021-02-21T20:00,29.2,50,12.7,0,0,8.4,21.7 +2021-02-21T21:00,25.3,54,11,0,0,8,14.1 +2021-02-21T22:00,28.3,50,12.2,0,0,8.8,14.5 +2021-02-21T23:00,29.1,50,12.7,0,0,9.2,16.8 +2021-02-22T00:00,31.9,38,9.1,0,0,1.8,15.4 +2021-02-22T01:00,18.3,62,7.6,0,0,6.7,8.5 +2021-02-22T02:00,20.4,56,7.3,0,0,5.1,9.4 +2021-02-22T03:00,30.9,40,9.4,0,0,1.8,6.3 +2021-02-22T04:00,18.4,63,7.9,0,0,5.6,7.2 +2021-02-22T05:00,25.8,60,13.9,0,0,12.7,10.3 +2021-02-22T06:00,18.3,67,9.1,0,0,7.9,19.2 +2021-02-22T07:00,24.2,61,12.7,0,0,8.2,13 +2021-02-22T08:00,28.9,60,16.7,0,0,6.8,14.8 +2021-02-22T09:00,35.5,60,22.9,0,0,3.7,12.3 +2021-02-22T10:00,45.1,31,16,0,0,2.8,7.2 +2021-02-22T11:00,44.7,41,22.5,0,0,6,9.2 +2021-02-22T12:00,46.2,41,23.9,0,0,7.8,13.4 +2021-02-22T13:00,48.8,38,24.1,0,0,13.3,22.6 +2021-02-22T14:00,54.5,26,20.3,0,0,20.8,35.8 +2021-02-22T15:00,55,26,20.7,0,0,17.9,34.9 +2021-02-22T16:00,53.6,27,20,0,0,16.9,29.5 +2021-02-22T17:00,48.8,31,19.3,0,0,7.6,27.1 +2021-02-22T18:00,47.4,30,17.7,0,0,16.5,27.5 +2021-02-22T19:00,41,40,18.3,0,0,9.7,26.6 +2021-02-22T20:00,34.3,55,19.9,0,0,5.7,15.4 +2021-02-22T21:00,29.8,67,20.1,0,0,5.9,8.5 +2021-02-22T22:00,30.1,63,18.9,0,0,4,7.8 +2021-02-22T23:00,29.5,60,17.2,0,0,5.3,8.3 +2021-02-23T00:00,28.7,60,16.3,0,0,5.8,10.1 +2021-02-23T01:00,26.2,64,15.8,0,0,6.1,9.2 +2021-02-23T02:00,25.1,65,15,0,0,6.5,8.1 +2021-02-23T03:00,29.2,54,14.5,0,0,2.7,7.6 +2021-02-23T04:00,26.8,58,14,0,0,3,3.4 +2021-02-23T05:00,21.1,74,14.2,0,0,6.3,5.8 +2021-02-23T06:00,23.7,67,14.4,0,0,3.5,7.4 +2021-02-23T07:00,24.6,63,13.8,0,0,3.4,5.4 +2021-02-23T08:00,32.2,46,13.9,0,0,5.7,10.1 +2021-02-23T09:00,40.8,35,15.3,0,0,6.3,12.8 +2021-02-23T10:00,47.8,26,14.3,0,0,5.5,12.8 +2021-02-23T11:00,52.1,22,14.5,0,0,2.7,13 +2021-02-23T12:00,55,17,11.1,0,0,8.1,16.8 +2021-02-23T13:00,55.9,17,12.1,0,0,7.8,17.7 +2021-02-23T14:00,56.5,18,13.3,0,0,7.3,16.8 +2021-02-23T15:00,55.5,20,15.5,0,0,10.5,19 +2021-02-23T16:00,53.6,26,19.5,0,0,11.1,19.7 +2021-02-23T17:00,49.1,29,18.1,0,0,13.1,18.3 +2021-02-23T18:00,44.5,37,19.8,0,0,16.7,28.2 +2021-02-23T19:00,39.2,44,19.3,0,0,9,27.1 +2021-02-23T20:00,36.5,49,19.3,0,0,8.8,15 +2021-02-23T21:00,32.5,60,20.1,0,0,7.3,15.2 +2021-02-23T22:00,28.7,68,19.6,0,0,10.5,18.1 +2021-02-23T23:00,27.5,69,18.7,0,0,2.9,17.2 +2021-02-24T00:00,25.7,75,18.8,0,0,4.3,6.9 +2021-02-24T01:00,24.6,78,18.9,0,0,3.8,7.4 +2021-02-24T02:00,22.6,83,18.3,0,0,5.2,6.7 +2021-02-24T03:00,22,81,17,0,0,3.5,6.7 +2021-02-24T04:00,22.3,71,14.4,0,0,4.6,6.7 +2021-02-24T05:00,20.8,66,11.1,0,0,5.9,8.3 +2021-02-24T06:00,21.5,65,11.6,0,0,4.1,7.6 +2021-02-24T07:00,21.3,67,12.2,0,0,3.5,6.3 +2021-02-24T08:00,27.3,51,11.5,0,0,5.6,10.3 +2021-02-24T09:00,30.9,48,13.7,0,0,7.9,15.4 +2021-02-24T10:00,33.7,45,14.5,0,0,7.6,16.3 +2021-02-24T11:00,37,38,13.9,0,0,6.3,16.8 +2021-02-24T12:00,39.1,37,14.9,0,0,6.2,15.4 +2021-02-24T13:00,40.6,36,15.6,0,0,7.8,17 +2021-02-24T14:00,40.9,36,15.9,0,0,7.2,17 +2021-02-24T15:00,40.6,36,15.5,0,0,4.9,15.7 +2021-02-24T16:00,38.8,41,16.9,0,0,7,11.9 +2021-02-24T17:00,35.3,52,19.2,0.004,0.028,5,12.1 +2021-02-24T18:00,31.5,64,20.6,0,0.055,9.2,12.5 +2021-02-24T19:00,27.8,75,21,0,0.165,17.8,28.6 +2021-02-24T20:00,25.1,82,20.3,0,0.386,14.9,30.2 +2021-02-24T21:00,24.9,84,20.8,0,0.441,11.4,24.6 +2021-02-24T22:00,24.1,86,20.5,0,0.413,10.8,19 +2021-02-24T23:00,23.8,85,20,0,0.358,10.2,17.9 +2021-02-25T00:00,23.3,87,19.9,0,0.276,10.1,17.7 +2021-02-25T01:00,22.8,89,20.1,0,0.22,10,17.2 +2021-02-25T02:00,22.4,90,19.9,0,0.165,9.9,16.3 +2021-02-25T03:00,21.6,91,19.2,0,0.138,9.9,16.8 +2021-02-25T04:00,20.9,91,18.6,0,0.083,8.1,16.1 +2021-02-25T05:00,21.9,90,19.4,0,0.028,4.5,13.2 +2021-02-25T06:00,20.3,89,17.6,0,0.028,2.8,7.2 +2021-02-25T07:00,20.6,89,17.8,0,0,2.2,4.9 +2021-02-25T08:00,19.8,89,17,0,0,2.5,3.4 +2021-02-25T09:00,21.7,83,17.4,0,0,3.3,5.8 +2021-02-25T10:00,24.4,76,17.9,0,0,4.8,8.3 +2021-02-25T11:00,27.1,70,18.7,0,0,4.2,8.3 +2021-02-25T12:00,26.2,75,19.5,0,0,9.6,16.8 +2021-02-25T13:00,27.4,71,19.4,0,0,7.1,16.8 +2021-02-25T14:00,29.7,68,20.5,0,0,5.7,12.8 +2021-02-25T15:00,29.3,71,21,0,0,5.2,10.5 +2021-02-25T16:00,27.6,74,20.4,0,0,2.9,9.6 +2021-02-25T17:00,23.5,77,17.5,0,0,3.3,6 +2021-02-25T18:00,22.5,81,17.5,0,0,2,5.8 +2021-02-25T19:00,17.3,91,15.1,0,0,4.6,5.1 +2021-02-25T20:00,19.5,86,16.1,0,0,5,6.9 +2021-02-25T21:00,18,87,14.6,0,0,4.2,6 +2021-02-25T22:00,12.9,93,11.3,0,0,2.8,5.4 +2021-02-25T23:00,5.6,91,3.5,0,0,4.8,6.5 +2021-02-26T00:00,8.5,78,3,0,0,3.4,6.5 +2021-02-26T01:00,8.7,73,1.8,0,0,1.6,4.5 +2021-02-26T02:00,8.9,68,0.6,0,0,3.8,5.4 +2021-02-26T03:00,10.9,64,1.1,0,0,1.6,5.1 +2021-02-26T04:00,10.9,64,1,0,0,3.3,4.9 +2021-02-26T05:00,11.7,66,2.4,0,0,2.6,4.3 +2021-02-26T06:00,4.6,74,-1.8,0,0,6,7.6 +2021-02-26T07:00,6.4,70,-1.3,0,0,5.6,8.1 +2021-02-26T08:00,10,65,0.5,0,0,5.7,7.6 +2021-02-26T09:00,19.9,59,7.9,0,0,6.1,9.8 +2021-02-26T10:00,28,58,15.1,0,0,5.1,12.3 +2021-02-26T11:00,34.8,46,16,0,0,3.1,8.9 +2021-02-26T12:00,36.6,53,20.9,0,0,3.5,6.3 +2021-02-26T13:00,38.1,43,17.7,0,0,3.7,7.8 +2021-02-26T14:00,38.5,45,18.8,0,0,4.3,7.4 +2021-02-26T15:00,44.6,12,-5.3,0,0,3,7.6 +2021-02-26T16:00,39.1,32,11.8,0,0,4.7,4.9 +2021-02-26T17:00,36.9,31,9.3,0,0,3,9.8 +2021-02-26T18:00,29.7,45,11,0,0,3.2,4 +2021-02-26T19:00,22,62,10.9,0,0,6.7,7.8 +2021-02-26T20:00,14.2,81,9.5,0,0,8.1,9.6 +2021-02-26T21:00,11.1,83,7,0,0,8.9,11.6 +2021-02-26T22:00,14.8,76,8.6,0,0,6.5,11.4 +2021-02-26T23:00,17.8,70,9.5,0,0,3.3,8.1 +2021-02-27T00:00,9.4,76,3.3,0,0,8.6,11.9 +2021-02-27T01:00,19,65,9.1,0,0,6.8,11.4 +2021-02-27T02:00,18.4,68,9.7,0,0,7.2,15.9 +2021-02-27T03:00,14.5,72,7.1,0,0,8.1,11.9 +2021-02-27T04:00,19.7,65,9.9,0,0,5.9,9.8 +2021-02-27T05:00,16.6,67,7.7,0,0,5.2,6.9 +2021-02-27T06:00,13.9,66,4.7,0,0,6.5,8.9 +2021-02-27T07:00,10.9,72,3.7,0,0,6.9,8.7 +2021-02-27T08:00,15.6,65,5.8,0,0,4.7,9.8 +2021-02-27T09:00,21.2,65,11.4,0,0,2.7,6.5 +2021-02-27T10:00,25.3,60,13.5,0,0,4.5,7.8 +2021-02-27T11:00,26.8,59,14.4,0,0.028,1.6,16.6 +2021-02-27T12:00,27.9,58,14.8,0,0.028,4.3,8.3 +2021-02-27T13:00,30.3,58,17.2,0,0,5.1,9.8 +2021-02-27T14:00,32.3,57,18.9,0,0,4.8,9.6 +2021-02-27T15:00,32.5,58,19.5,0,0,6.7,11.9 +2021-02-27T16:00,31.6,58,18.4,0,0,5,12.1 +2021-02-27T17:00,29.7,56,16.1,0,0,7.6,12.1 +2021-02-27T18:00,25.1,51,9.3,0,0,12.9,20.4 +2021-02-27T19:00,22.2,52,7.3,0,0,15.4,24.8 +2021-02-27T20:00,21.5,52,6.4,0,0,16.7,27.7 +2021-02-27T21:00,20.9,53,6.4,0,0,12.7,27.7 +2021-02-27T22:00,19.3,54,5.3,0,0,9.7,21.3 +2021-02-27T23:00,17.4,55,3.8,0,0,8.4,16.3 +2021-02-28T00:00,12.7,59,1,0,0,9,13.9 +2021-02-28T01:00,17.3,47,0.7,0,0,2.8,13.9 +2021-02-28T02:00,5.1,62,-5.1,0,0,7.8,10.5 +2021-02-28T03:00,5.5,61,-5.3,0,0,7.2,10.5 +2021-02-28T04:00,11.8,49,-3.8,0,0,7.6,11.4 +2021-02-28T05:00,10,55,-2.8,0,0,6.6,9.2 +2021-02-28T06:00,7.4,58,-4.4,0,0,3.7,7.6 +2021-02-28T07:00,7.8,62,-2.4,0,0,5.8,9.8 +2021-02-28T08:00,9.4,63,-0.5,0,0,4.9,9.8 +2021-02-28T09:00,18.7,54,4.9,0,0,3.5,8.1 +2021-02-28T10:00,25.3,45,7,0,0,3.6,7.4 +2021-02-28T11:00,28.9,32,2.8,0,0,1.6,7.2 +2021-02-28T12:00,30.5,32,4.2,0,0,2.7,5.6 +2021-02-28T13:00,31.3,32,4.7,0,0,3.8,6.9 +2021-02-28T14:00,31.9,34,6.8,0,0,4.6,8.3 +2021-02-28T15:00,32,37,8.6,0,0,3.8,8.3 +2021-02-28T16:00,30.2,47,12.2,0,0,3.9,6.9 +2021-02-28T17:00,31.8,22,-2.6,0,0,1.9,8.1 +2021-02-28T18:00,22.4,37,0,0,0,5.1,5.6 +2021-02-28T19:00,12.8,58,0.9,0,0,8.4,11 +2021-02-28T20:00,9.4,62,-0.9,0,0,10.4,13 +2021-02-28T21:00,9.9,54,-3.4,0,0,11.2,15 +2021-02-28T22:00,14.5,46,-2.6,0,0,7.2,14.1 +2021-02-28T23:00,12.8,48,-3.4,0,0,5,8.9 +2021-03-01T00:00,9.1,52,-4.9,0,0,5.2,7.4 +2021-03-01T01:00,6.7,56,-5.6,0,0,6.4,8.5 +2021-03-01T02:00,4.9,60,-5.8,0,0,7.7,10.1 +2021-03-01T03:00,4.8,62,-5.3,0,0,8.3,10.5 +2021-03-01T04:00,4.5,65,-4.6,0,0,8.6,11.2 +2021-03-01T05:00,9.2,65,-0.2,0,0,8.4,11.9 +2021-03-01T06:00,6.7,67,-2,0,0,9.6,13 +2021-03-01T07:00,8,66,-0.9,0,0,8.4,12.5 +2021-03-01T08:00,15.2,63,4.9,0,0,5.4,11.4 +2021-03-01T09:00,24.2,64,13.9,0,0,2.9,8.3 +2021-03-01T10:00,30.9,45,12,0,0,2.5,4.5 +2021-03-01T11:00,34.2,52,18.3,0,0,1.4,5.4 +2021-03-01T12:00,37.2,60,24.8,0,0,2.5,3.8 +2021-03-01T13:00,38.8,56,24.5,0,0,3.4,5.6 +2021-03-01T14:00,39.7,52,23.4,0,0,3.5,5.8 +2021-03-01T15:00,39.3,53,23.4,0,0,4.1,7.2 +2021-03-01T16:00,39.7,46,20.5,0,0,4.7,9.2 +2021-03-01T17:00,39.7,56,25.3,0,0,6.9,10.3 +2021-03-01T18:00,33.4,45,14.5,0,0,7.4,11.2 +2021-03-01T19:00,38.9,34,13,0,0,2,8.7 +2021-03-01T20:00,26.8,56,13.3,0,0,4.1,5.4 +2021-03-01T21:00,19.3,76,13,0,0,5.4,6.5 +2021-03-01T22:00,17,79,11.6,0,0,7.2,9.2 +2021-03-01T23:00,16.6,77,10.6,0,0,7.5,9.4 +2021-03-02T00:00,14.8,74,8.2,0,0,7.9,10.1 +2021-03-02T01:00,13.8,72,6.4,0,0,8.4,10.5 +2021-03-02T02:00,14.5,68,5.8,0,0,8.1,10.7 +2021-03-02T03:00,14.5,65,5,0,0,8.4,10.5 +2021-03-02T04:00,16,61,4.9,0,0,8,10.5 +2021-03-02T05:00,17.2,65,7.5,0,0,8.4,10.1 +2021-03-02T06:00,13.6,63,3.3,0,0,9,11.4 +2021-03-02T07:00,14,62,3.4,0,0,8.8,11.6 +2021-03-02T08:00,23.4,57,10.5,0,0,6,11.9 +2021-03-02T09:00,34.3,54,19.1,0,0,3.6,9.6 +2021-03-02T10:00,40.7,51,23.8,0,0,4,8.5 +2021-03-02T11:00,44.6,45,24.8,0,0,4.6,9.2 +2021-03-02T12:00,45.2,47,26.3,0,0,5.5,9.4 +2021-03-02T13:00,56.7,18,14,0,0,4.1,13.6 +2021-03-02T14:00,57.8,18,14.6,0,0,2.3,11.6 +2021-03-02T15:00,58.1,19,15.4,0,0,0.7,9.2 +2021-03-02T16:00,57,19,14.9,0,0,3.5,7.6 +2021-03-02T17:00,49.4,43,27.8,0,0,7.4,7.6 +2021-03-02T18:00,45.3,37,20.8,0,0,6.1,9.2 +2021-03-02T19:00,35.4,55,21,0,0,6.9,7.2 +2021-03-02T20:00,30.7,66,20.6,0,0,3.9,8.7 +2021-03-02T21:00,26.2,79,20.4,0,0,6.7,7.2 +2021-03-02T22:00,29,66,19.1,0,0,2.5,7.8 +2021-03-02T23:00,25.7,73,18.2,0,0,3.8,5.8 +2021-03-03T00:00,23.5,77,17.4,0,0,2.2,6.9 +2021-03-03T01:00,22,80,16.8,0,0,3.1,4 +2021-03-03T02:00,22.6,74,15.4,0,0,4.9,5.8 +2021-03-03T03:00,23.9,62,12.8,0,0,4.4,6.5 +2021-03-03T04:00,23.5,61,12,0,0,4.5,6.3 +2021-03-03T05:00,19.8,73,12.6,0,0,7,6.3 +2021-03-03T06:00,23.1,62,12.1,0,0,3.6,8.1 +2021-03-03T07:00,23.9,60,12,0,0,4.9,6.7 +2021-03-03T08:00,30.1,50,13.8,0,0,4.7,9.8 +2021-03-03T09:00,38.7,41,17.2,0,0,3.6,10.3 +2021-03-03T10:00,46,34,19.3,0,0,3,9.8 +2021-03-03T11:00,51.1,26,17.2,0,0,4.3,11.9 +2021-03-03T12:00,55.1,21,15.4,0,0,4.6,12.5 +2021-03-03T13:00,57.5,16,11.1,0,0,4.3,12.5 +2021-03-03T14:00,58.2,14,9.1,0,0,3.1,12.1 +2021-03-03T15:00,58.7,14,10,0,0,1.8,10.3 +2021-03-03T16:00,58.1,16,12.1,0,0,5.4,9.8 +2021-03-03T17:00,52.4,35,25.3,0,0,5.1,11.9 +2021-03-03T18:00,45.1,43,24.2,0,0,6.6,11 +2021-03-03T19:00,43.2,43,22.1,0,0,5.2,10.5 +2021-03-03T20:00,43,41,20.8,0,0,4.2,5.8 +2021-03-03T21:00,30.7,67,21,0,0,5,8.1 +2021-03-03T22:00,26.6,77,20.4,0,0,4.4,6.9 +2021-03-03T23:00,25.3,78,19.3,0,0,4.2,6.9 +2021-03-04T00:00,24.1,78,18.3,0,0,4.2,6.5 +2021-03-04T01:00,23.8,76,17.3,0,0,3.4,6 +2021-03-04T02:00,22.4,78,16.5,0,0,3.7,5.6 +2021-03-04T03:00,23.7,72,16.1,0,0,2.2,4.9 +2021-03-04T04:00,26.7,69,17.9,0,0,1.1,3.1 +2021-03-04T05:00,27.2,61,15.5,0,0,1.8,3.8 +2021-03-04T06:00,28.5,55,14.3,0,0.055,3,5.1 +2021-03-04T07:00,30.7,48,13.4,0,0,1.5,6 +2021-03-04T08:00,32.9,48,15.3,0,0,2,6.3 +2021-03-04T09:00,36.9,44,16.8,0,0,2.9,7.6 +2021-03-04T10:00,37.6,43,17.1,0,0,5.1,11.9 +2021-03-04T11:00,38.2,43,17.9,0,0,6.7,13 +2021-03-04T12:00,40.9,40,18.6,0,0,11.7,21 +2021-03-04T13:00,42.9,40,20.4,0,0,14,25.3 +2021-03-04T14:00,44.1,46,24.5,0,0,13.3,26.4 +2021-03-04T15:00,42,56,27.6,0.004,0,8.7,24.4 +2021-03-04T16:00,40.3,70,31.1,0.008,0,14.9,22.8 +2021-03-04T17:00,34.8,96,33.7,0.008,0,5.6,28.4 +2021-03-04T18:00,34.3,94,32.9,0.043,0.193,10.2,16.1 +2021-03-04T19:00,34.6,94,33.2,0.031,0.083,9.7,17.4 +2021-03-04T20:00,34.3,97,33.4,0.028,0.055,9.9,16.3 +2021-03-04T21:00,34.2,98,33.5,0.024,0.11,10.4,16.8 +2021-03-04T22:00,34.5,96,33.5,0.024,0.028,9.9,16.8 +2021-03-04T23:00,35.5,92,33.4,0.012,0,8.6,16.3 +2021-03-05T00:00,36.1,89,33.1,0.008,0,9.2,15.2 +2021-03-05T01:00,37,81,31.6,0.004,0,9.9,16.6 +2021-03-05T02:00,33.5,79,27.7,0,0,7.2,15.9 +2021-03-05T03:00,32.1,76,25.4,0,0,7.2,11.4 +2021-03-05T04:00,30,79,24.2,0,0,6.4,11.4 +2021-03-05T05:00,25.7,84,21.6,0,0,5.3,10.1 +2021-03-05T06:00,26.2,83,21.7,0,0,4.4,6.9 +2021-03-05T07:00,28.3,76,21.7,0,0,6.3,9.2 +2021-03-05T08:00,34,68,24.4,0,0,6.4,12.1 +2021-03-05T09:00,40.9,58,27.4,0,0,3.6,11.6 +2021-03-05T10:00,46.9,47,27.9,0,0,3.4,10.5 +2021-03-05T11:00,51.4,32,22.6,0,0,4,11.9 +2021-03-05T12:00,54.1,26,19.9,0,0,4.9,13 +2021-03-05T13:00,55.4,24,18.9,0,0,6,14.8 +2021-03-05T14:00,56.2,21,16.7,0,0,6.2,15 +2021-03-05T15:00,56.5,19,14.7,0,0,5.9,14.5 +2021-03-05T16:00,55.9,19,14.5,0,0,5.6,13.2 +2021-03-05T17:00,50.5,51,33.1,0,0,5.7,11.2 +2021-03-05T18:00,42.7,43,22,0,0,6.7,8.7 +2021-03-05T19:00,38.2,52,22.2,0,0,7.5,10.3 +2021-03-05T20:00,32.4,65,21.9,0,0,6.1,8.9 +2021-03-05T21:00,29.2,71,21.1,0,0,4.9,7.4 +2021-03-05T22:00,26.1,75,19.3,0,0,5.5,8.7 +2021-03-05T23:00,24.8,73,17.4,0,0,5,8.7 +2021-03-06T00:00,25.3,67,16.1,0,0,4.4,8.1 +2021-03-06T01:00,25.1,66,15.3,0,0,4.1,6.9 +2021-03-06T02:00,24.8,65,14.5,0,0,4.5,6.7 +2021-03-06T03:00,24.4,64,13.9,0,0,4.4,6.9 +2021-03-06T04:00,23.9,63,13.2,0,0,4.1,6.9 +2021-03-06T05:00,21.9,67,12.7,0,0,5.5,6.7 +2021-03-06T06:00,23,62,12,0,0,5.4,6.7 +2021-03-06T07:00,26.5,54,12.1,0,0,3.5,7.4 +2021-03-06T08:00,32.6,46,14.4,0,0,3.5,8.5 +2021-03-06T09:00,40.3,41,18.2,0,0,2.8,8.9 +2021-03-06T10:00,48.2,32,19.6,0,0,4.7,11.9 +2021-03-06T11:00,54.9,23,17.8,0,0,6,13.9 +2021-03-06T12:00,59.1,20,18,0,0,7.2,15.7 +2021-03-06T13:00,61.3,17,15.6,0,0,8.1,17 +2021-03-06T14:00,62.2,16,15.4,0,0,8.6,17.4 +2021-03-06T15:00,61.9,17,16.6,0,0,6.5,17 +2021-03-06T16:00,61.3,18,17.2,0,0,4.2,13.4 +2021-03-06T17:00,55.6,46,35.2,0,0,4.9,8.5 +2021-03-06T18:00,46.7,40,23.5,0,0,7.6,9.4 +2021-03-06T19:00,41.3,48,23,0,0,5.7,9.2 +2021-03-06T20:00,37.5,52,21.5,0,0,5,8.5 +2021-03-06T21:00,32.5,68,23,0,0,4.3,7.8 +2021-03-06T22:00,31.9,65,21.7,0,0,4.9,7.8 +2021-03-06T23:00,30.9,60,18.8,0,0,4.9,8.1 +2021-03-07T00:00,28.8,61,17,0,0,5.1,8.1 +2021-03-07T01:00,27.2,61,15.6,0,0,6.7,7.8 +2021-03-07T02:00,26.6,62,15.4,0,0,6.7,8.3 +2021-03-07T03:00,26.6,62,15.4,0,0,5.5,8.1 +2021-03-07T04:00,28.6,59,16.1,0,0,4.8,7.6 +2021-03-07T05:00,28.7,60,16.4,0,0,6.2,7.8 +2021-03-07T06:00,30.5,57,17,0,0,5.5,8.5 +2021-03-07T07:00,32.3,56,18.3,0,0,5.2,8.5 +2021-03-07T08:00,39.1,48,20.8,0,0,4.9,10.3 +2021-03-07T09:00,47.8,40,24.5,0,0,4.3,10.5 +2021-03-07T10:00,55.3,29,23.8,0,0,7.6,15.2 +2021-03-07T11:00,60.9,21,21.1,0,0,9.8,19 +2021-03-07T12:00,64,17,18.6,0,0,9.9,19.7 +2021-03-07T13:00,65,17,18.8,0,0,10.5,20.4 +2021-03-07T14:00,65.2,16,18.4,0,0,10,20.6 +2021-03-07T15:00,64.9,17,18.7,0,0,7.3,19 +2021-03-07T16:00,64.1,19,21,0,0,5.4,14.3 +2021-03-07T17:00,61.2,23,23.2,0,0,7,9.6 +2021-03-07T18:00,54.3,24,18.7,0,0,8,16.3 +2021-03-07T19:00,49.9,32,21.3,0,0,5.8,12.8 +2021-03-07T20:00,40.2,53,24.3,0,0,7.1,8.5 +2021-03-07T21:00,37,60,24.4,0,0,5.7,8.7 +2021-03-07T22:00,35.5,60,23,0,0,4.4,7.4 +2021-03-07T23:00,34.2,61,21.9,0,0,4.5,7.4 +2021-03-08T00:00,32.7,64,21.8,0,0,5.9,7.2 +2021-03-08T01:00,33,62,21.6,0,0,4.5,7.6 +2021-03-08T02:00,35,55,20.5,0,0,2.7,5.4 +2021-03-08T03:00,31,63,20,0,0,3.2,3.4 +2021-03-08T04:00,27.1,74,19.8,0,0,4.4,5.4 +2021-03-08T05:00,26.4,76,19.9,0,0,5.7,6.3 +2021-03-08T06:00,30,67,20.4,0,0,4.9,6.7 +2021-03-08T07:00,32.6,63,21.4,0,0,3,6.3 +2021-03-08T08:00,38.9,52,22.6,0,0,3.2,7.2 +2021-03-08T09:00,43.5,48,25.3,0,0,2.6,7.2 +2021-03-08T10:00,47.5,44,26.5,0,0,4.3,8.9 +2021-03-08T11:00,51.2,37,25.9,0,0,3.3,9.4 +2021-03-08T12:00,52.3,36,26.2,0,0,3.1,8.1 +2021-03-08T13:00,53,37,27.1,0,0,2.1,7.6 +2021-03-08T14:00,60.2,26,25.5,0,0,6.2,13.9 +2021-03-08T15:00,60.4,26,25.3,0,0,8.7,17.4 +2021-03-08T16:00,61.2,25,25.1,0,0,6.4,17.4 +2021-03-08T17:00,59.3,31,28.9,0,0,5.1,12.5 +2021-03-08T18:00,51,40,27.6,0,0,6.2,9.4 +2021-03-08T19:00,46.2,46,26.8,0,0,6,11.4 +2021-03-08T20:00,43,50,25.6,0,0,6.7,10.7 +2021-03-08T21:00,41,51,24.4,0,0,6.7,10.7 +2021-03-08T22:00,40.6,54,25.2,0,0,8.1,13.2 +2021-03-08T23:00,40.3,53,24.6,0,0,7.7,13.2 +2021-03-09T00:00,40.3,51,23.5,0,0,10.1,16.3 +2021-03-09T01:00,38.9,53,23.1,0,0,7.2,16.6 +2021-03-09T02:00,36.1,58,22.9,0,0,6.3,11.9 +2021-03-09T03:00,37.8,52,21.9,0,0,7.1,10.7 +2021-03-09T04:00,38.3,51,21.7,0,0,7.6,13 +2021-03-09T05:00,31.3,70,22.6,0,0,6.6,12.5 +2021-03-09T06:00,29.6,74,22.2,0,0,6,8.3 +2021-03-09T07:00,33.8,63,22.6,0,0,4.5,7.4 +2021-03-09T08:00,41.9,51,24.9,0,0,4.8,9.8 +2021-03-09T09:00,52.1,36,26.2,0,0,2.3,9.8 +2021-03-09T10:00,58.1,30,26.7,0,0,3.3,9.6 +2021-03-09T11:00,61.5,26,26.7,0,0,3.7,11.6 +2021-03-09T12:00,63.5,23,25.5,0,0,3.7,11.6 +2021-03-09T13:00,64.9,21,23.9,0,0,5.6,13.9 +2021-03-09T14:00,65.5,20,23.3,0,0,6.7,15 +2021-03-09T15:00,65,18,20.3,0,0,8.2,16.1 +2021-03-09T16:00,63.1,15,14.3,0,0,9.1,16.6 +2021-03-09T17:00,59,25,22.8,0,0,9.3,15.9 +2021-03-09T18:00,52.1,27,19.3,0,0,6.7,15.7 +2021-03-09T19:00,50.2,34,23.2,0,0,14.5,21.7 +2021-03-09T20:00,48.9,34,22.1,0,0,15.4,28.4 +2021-03-09T21:00,47.4,39,23.6,0,0,12.2,25.7 +2021-03-09T22:00,43.2,51,26.2,0.004,0,9.7,20.1 +2021-03-09T23:00,42,53,26.2,0,0,10.3,18.6 +2021-03-10T00:00,38.8,62,27,0,0,6.3,17 +2021-03-10T01:00,39.9,61,27.5,0,0,7.3,11.6 +2021-03-10T02:00,38.1,69,28.7,0,0,6.6,12.1 +2021-03-10T03:00,36.8,77,30.1,0,0,5.9,11.4 +2021-03-10T04:00,34.9,88,31.6,0.004,0,6.4,10.7 +2021-03-10T05:00,34.3,99,34,0.004,0,2.5,10.7 +2021-03-10T06:00,34.2,99,33.9,0.012,0.083,2.7,8.1 +2021-03-10T07:00,34.3,99,33.9,0.012,0.248,4.1,11.6 +2021-03-10T08:00,35.4,96,34.5,0.008,0.276,3,12.3 +2021-03-10T09:00,35.9,97,35.1,0.008,0.055,3,13.2 +2021-03-10T10:00,38.3,78,32.1,0,0,4.1,11.4 +2021-03-10T11:00,42.8,52,26.3,0,0.028,5.8,14.5 +2021-03-10T12:00,46.8,43,25.3,0,0,4.6,30.9 +2021-03-10T13:00,49.4,42,27.4,0,0,7.1,26.4 +2021-03-10T14:00,51.1,14,3.4,0,0,10.6,21.3 +2021-03-10T15:00,49.8,15,3.3,0,0,13,24.8 +2021-03-10T16:00,48.7,14,2,0,0,12.3,24.2 +2021-03-10T17:00,45.2,17,2.7,0,0,13.1,22.4 +2021-03-10T18:00,39.5,22,4.2,0,0,5.3,22.1 +2021-03-10T19:00,32.8,37,9.3,0,0,6,8.7 +2021-03-10T20:00,29.8,44,10.2,0,0,6.1,7.8 +2021-03-10T21:00,30.5,40,9.1,0,0,2.8,7.4 +2021-03-10T22:00,25.7,59,13.3,0,0,6.7,7.8 +2021-03-10T23:00,25.7,62,14.6,0,0,2.8,8.1 +2021-03-11T00:00,24.3,55,10.4,0,0,4.3,8.3 +2021-03-11T01:00,21.9,57,9.1,0,0,3.6,6.9 +2021-03-11T02:00,22.8,52,8,0,0,2,4.9 +2021-03-11T03:00,22.7,53,8.2,0,0,1.3,2.7 +2021-03-11T04:00,21.6,62,10.7,0,0,3.9,4.3 +2021-03-11T05:00,21.5,83,17.1,0,0,3.9,5.8 +2021-03-11T06:00,20.8,89,18.1,0,0,3.8,6.5 +2021-03-11T07:00,22.5,83,18,0,0,6.2,10.7 +2021-03-11T08:00,27.1,79,21.3,0,0,4.5,11.2 +2021-03-11T09:00,31,70,22.4,0,0,4,11.4 +2021-03-11T10:00,34.8,61,22.7,0,0,4.2,13.2 +2021-03-11T11:00,38.5,53,22.6,0,0,5.7,15 +2021-03-11T12:00,41.4,45,21.4,0,0,9.1,19.9 +2021-03-11T13:00,44.4,38,20.1,0,0,8.9,20.4 +2021-03-11T14:00,46.9,34,19.9,0,0,10.1,21 +2021-03-11T15:00,47.6,33,20.2,0,0,6.7,21.3 +2021-03-11T16:00,48.5,31,19.1,0,0,2.5,15.4 +2021-03-11T17:00,45.3,42,23.5,0,0,4.6,8.7 +2021-03-11T18:00,42.2,51,25.2,0,0,5.2,12.3 +2021-03-11T19:00,39.6,63,28,0,0,8.8,14.5 +2021-03-11T20:00,37.1,65,26.5,0,0,9.2,16.3 +2021-03-11T21:00,36,70,27.1,0.004,0,6.8,15 +2021-03-11T22:00,35.4,76,28.7,0,0.11,7.1,11.6 +2021-03-11T23:00,34.2,81,29,0,0.083,5.4,11.4 +2021-03-12T00:00,33.4,85,29.3,0,0.055,4,8.5 +2021-03-12T01:00,33,85,28.9,0,0.055,4.3,7.4 +2021-03-12T02:00,32.5,86,28.8,0,0.055,4.7,8.3 +2021-03-12T03:00,31.7,88,28.7,0,0,3.8,8.3 +2021-03-12T04:00,30.7,92,28.7,0,0,3.5,6 +2021-03-12T05:00,30.2,96,29.2,0,0,3.1,6.3 +2021-03-12T06:00,32,93,30.2,0,0,5.1,8.7 +2021-03-12T07:00,32.6,90,30.1,0,0,5.2,9.4 +2021-03-12T08:00,33.8,86,30.1,0,0,5.3,11 +2021-03-12T09:00,34.8,82,29.8,0,0,5.4,11.4 +2021-03-12T10:00,36.9,75,29.6,0,0,5.4,12.3 +2021-03-12T11:00,39.7,64,28.3,0,0,4.3,13 +2021-03-12T12:00,41.7,57,27.6,0,0,4.1,12.1 +2021-03-12T13:00,42.3,55,27.3,0,0,4.6,11.6 +2021-03-12T14:00,43,54,27.5,0,0,4.8,11.2 +2021-03-12T15:00,43.4,55,28.1,0,0,3.3,11.2 +2021-03-12T16:00,43.6,55,28.3,0,0,4.1,8.5 +2021-03-12T17:00,38.7,67,28.7,0,0,4.8,15.2 +2021-03-12T18:00,38.7,67,28.7,0,0,4,11 +2021-03-12T19:00,37.8,71,29.2,0,0,3,6.5 +2021-03-12T20:00,38,74,30.4,0,0,6.1,9.8 +2021-03-12T21:00,37.4,78,31,0,0,4.2,9.6 +2021-03-12T22:00,36.7,82,31.7,0.004,0,3.1,6.7 +2021-03-12T23:00,36.1,87,32.5,0.004,0,3.2,5.6 +2021-03-13T00:00,35.6,89,32.8,0,0,3.1,5.1 +2021-03-13T01:00,35.2,91,32.7,0,0,4.3,6.9 +2021-03-13T02:00,34.9,92,32.9,0,0,4.7,8.3 +2021-03-13T03:00,34.8,94,33.4,0,0,5,8.1 +2021-03-13T04:00,34.8,95,33.6,0.004,0,5.2,9.2 +2021-03-13T05:00,33.8,92,31.8,0.008,0,3.8,8.7 +2021-03-13T06:00,34.2,92,32,0,0,5,8.1 +2021-03-13T07:00,34.4,92,32.4,0.004,0,6.7,11 +2021-03-13T08:00,34.1,98,33.5,0.008,0.11,8.5,13.9 +2021-03-13T09:00,34.2,99,33.8,0.008,0.028,9.9,17.7 +2021-03-13T10:00,34.5,96,33.6,0.008,0.055,8.9,16.3 +2021-03-13T11:00,34.3,98,33.9,0.008,0.331,9.3,15.7 +2021-03-13T12:00,34.6,98,34,0.008,0.248,10.9,19.2 +2021-03-13T13:00,35.7,88,32.4,0.008,0.165,12.3,22.4 +2021-03-13T14:00,34.9,90,32.3,0.004,0.248,10.2,21.7 +2021-03-13T15:00,34.5,92,32.5,0.008,0.22,9.6,19 +2021-03-13T16:00,34.1,96,33.1,0.008,0.22,11.3,18.3 +2021-03-13T17:00,31.9,93,30.2,0.004,0.331,8.7,19 +2021-03-13T18:00,30.7,95,29.4,0,0.441,7.8,14.5 +2021-03-13T19:00,30.3,96,29.4,0,0.909,9.9,15 +2021-03-13T20:00,30.1,94,28.7,0,0.413,9.6,19.7 +2021-03-13T21:00,30.5,93,28.8,0,0.028,6.6,15.7 +2021-03-13T22:00,30.5,96,29.4,0,0.138,11.7,18.6 +2021-03-13T23:00,30.5,95,29.3,0,0.083,11.5,19.7 +2021-03-14T00:00,30.7,95,29.4,0,0.083,12.6,20.4 +2021-03-14T01:00,31.5,96,30.5,0,0.303,12.9,21.3 +2021-03-14T02:00,31.6,96,30.7,0,0.248,16.4,26.6 +2021-03-14T03:00,31.9,95,30.7,0,0.358,17.7,28.4 +2021-03-14T04:00,32,95,30.7,0,0.524,19.9,32.2 +2021-03-14T05:00,32,95,30.7,0,0.717,18.8,34.9 +2021-03-14T06:00,31.7,95,30.5,0,0.524,21.5,34.2 +2021-03-14T07:00,31.6,95,30.3,0,0.634,23.3,36.9 +2021-03-14T08:00,31.4,95,30.1,0,0.551,25.9,40.9 +2021-03-14T09:00,31.3,94,29.8,0,0.579,25.4,41.8 +2021-03-14T10:00,31,94,29.6,0,0.524,25.2,40.7 +2021-03-14T11:00,30.7,94,29.1,0,0.551,25.2,40.7 +2021-03-14T12:00,30.7,92,28.6,0,0.469,25,40.7 +2021-03-14T13:00,30.6,90,27.9,0,0.496,24.5,39.6 +2021-03-14T14:00,29.9,89,27.1,0,0.579,27.4,42.7 +2021-03-14T15:00,29.8,87,26.5,0,0.551,27.8,42.5 +2021-03-14T16:00,29.6,86,26,0,0.524,26.3,42.5 +2021-03-14T17:00,28.4,82,23.7,0,0.276,26.7,39.8 +2021-03-14T18:00,27.8,82,23,0,0.276,26.4,39.4 +2021-03-14T19:00,27.7,81,22.7,0,0.138,24.1,38.9 +2021-03-14T20:00,27.8,80,22.6,0,0.055,19.2,35.1 +2021-03-14T21:00,27.5,81,22.5,0,0.028,14.8,28 +2021-03-14T22:00,27,83,22.6,0,0.028,11.3,21.5 +2021-03-14T23:00,27,82,22.3,0,0.028,10.5,16.6 +2021-03-15T00:00,26.8,81,21.7,0,0,8,15.2 +2021-03-15T01:00,23.9,82,19.3,0,0,6,11.6 +2021-03-15T02:00,22.2,80,17,0,0,3.8,8.1 +2021-03-15T03:00,16.8,83,12.7,0,0,6.7,8.3 +2021-03-15T04:00,15.4,82,10.9,0,0,6,8.3 +2021-03-15T05:00,16.5,78,10.9,0,0,3.8,8.5 +2021-03-15T06:00,13.3,80,8.3,0,0,6.2,7.6 +2021-03-15T07:00,13.6,80,8.7,0,0,4.7,7.6 +2021-03-15T08:00,18.9,76,12.6,0,0,5.6,7.4 +2021-03-15T09:00,23.1,74,16,0,0,6.9,9.8 +2021-03-15T10:00,27.4,75,20.4,0,0,6.4,9.8 +2021-03-15T11:00,31.8,67,22.2,0,0,2.2,9.2 +2021-03-15T12:00,33.5,67,23.9,0,0,4.3,6 +2021-03-15T13:00,34.1,71,25.5,0,0,6.2,8.9 +2021-03-15T14:00,34,69,25,0,0,10.3,13.9 +2021-03-15T15:00,32.3,78,26.3,0,0,9.2,14.8 +2021-03-15T16:00,31.6,83,27,0,0,4.7,13.2 +2021-03-15T17:00,29.2,84,25,0,0,4,6.5 +2021-03-15T18:00,28,83,23.5,0,0,9,11.2 +2021-03-15T19:00,30.1,77,23.9,0,0,10.8,14.5 +2021-03-15T20:00,29.4,80,24,0,0,10.8,15.2 +2021-03-15T21:00,25.9,86,22.2,0,0,8.7,14.5 +2021-03-15T22:00,26.5,81,21.6,0,0,3.2,11.6 +2021-03-15T23:00,23.2,83,18.9,0,0,4.3,5.1 +2021-03-16T00:00,26.6,79,20.8,0,0,2,5.4 +2021-03-16T01:00,19.8,91,17.5,0,0,7.8,8.3 +2021-03-16T02:00,17.2,96,16.2,0,0,6,11.9 +2021-03-16T03:00,19.9,95,18.6,0,0,1.4,7.6 +2021-03-16T04:00,18.6,95,17.3,0,0,3.4,4 +2021-03-16T05:00,18.2,95,17.2,0,0,3,4 +2021-03-16T06:00,16.4,94,15.1,0,0,3.6,4.3 +2021-03-16T07:00,18.1,94,16.7,0,0,2.4,4.3 +2021-03-16T08:00,20,96,19,0,0,1.8,4 +2021-03-16T09:00,21.9,97,21.1,0,0,1.7,5.1 +2021-03-16T10:00,24.4,95,23.1,0,0,0.9,5.4 +2021-03-16T11:00,26.7,93,25,0,0,3.5,7.2 +2021-03-16T12:00,28.8,89,25.9,0,0,4.3,8.1 +2021-03-16T13:00,29.6,89,26.7,0,0,3.5,8.3 +2021-03-16T14:00,29.8,90,27.2,0,0.055,3,6.9 +2021-03-16T15:00,30,91,27.7,0,0.055,4.4,6.9 +2021-03-16T16:00,30,89,27.2,0,0.028,4,7.6 +2021-03-16T17:00,30.6,91,28.3,0,0.028,5.6,6.9 +2021-03-16T18:00,29.6,93,27.9,0,0.028,4.7,8.5 +2021-03-16T19:00,28.6,94,27.1,0,0.028,3.6,6.5 +2021-03-16T20:00,28.9,95,27.5,0,0.028,3.9,5.4 +2021-03-16T21:00,28.7,95,27.4,0,0.028,4,5.6 +2021-03-16T22:00,28.4,95,27.1,0,0.028,4.6,6.5 +2021-03-16T23:00,28.7,95,27.4,0,0.028,3.3,6.7 +2021-03-17T00:00,28.6,96,27.6,0,0.028,1.3,4.9 +2021-03-17T01:00,28.4,97,27.6,0,0.055,2.7,3.8 +2021-03-17T02:00,28.3,96,27.3,0,0.055,3.9,5.4 +2021-03-17T03:00,28.5,94,27,0,0.028,3,5.6 +2021-03-17T04:00,28.6,95,27.2,0,0,1.4,4.3 +2021-03-17T05:00,29.4,93,27.6,0,0,2.2,3.8 +2021-03-17T06:00,29.6,94,28,0,0.028,4.1,5.6 +2021-03-17T07:00,28.9,96,28,0,0.11,4,6.7 +2021-03-17T08:00,28.9,96,27.9,0,0.028,3.2,6.3 +2021-03-17T09:00,29.3,94,27.9,0,0.028,4.4,7.8 +2021-03-17T10:00,29.5,93,27.6,0,0.028,2.4,8.1 +2021-03-17T11:00,30.1,89,27.3,0,0,1.1,5.6 +2021-03-17T12:00,31.1,85,27.2,0,0,2.3,4.9 +2021-03-17T13:00,32.2,81,26.9,0,0,5.1,8.7 +2021-03-17T14:00,33.1,75,26,0,0,5.3,9.2 +2021-03-17T15:00,34.3,70,25.5,0,0,4.7,8.7 +2021-03-17T16:00,34,72,26,0,0,4,6.9 +2021-03-17T17:00,32.3,73,24.7,0,0,5.7,5.1 +2021-03-17T18:00,27.9,70,19.5,0,0,4.3,7.4 +2021-03-17T19:00,27,70,18.5,0,0,4.3,4.9 +2021-03-17T20:00,24.2,75,17.5,0,0,4.6,5.8 +2021-03-17T21:00,21.1,82,16.4,0,0,6.2,7.4 +2021-03-17T22:00,19.5,84,15.4,0,0,6.7,8.5 +2021-03-17T23:00,17.2,83,13,0,0,5.7,8.5 +2021-03-18T00:00,16.2,83,11.8,0,0,5.3,7.2 +2021-03-18T01:00,13.7,84,9.8,0,0,5.3,6.7 +2021-03-18T02:00,11.5,84,7.6,0,0,5.4,6.9 +2021-03-18T03:00,9.4,84,5.5,0,0,5.6,7.2 +2021-03-18T04:00,7.9,83,3.8,0,0,6.2,7.6 +2021-03-18T05:00,7.4,82,3.1,0,0,5.3,7.6 +2021-03-18T06:00,6.4,82,1.9,0,0,5.5,6.7 +2021-03-18T07:00,9.4,79,4.2,0,0,5.9,7.4 +2021-03-18T08:00,16.4,74,9.5,0,0,4.8,7.4 +2021-03-18T09:00,23.8,68,14.9,0,0,4.4,7.4 +2021-03-18T10:00,28.8,72,20.9,0,0,5.2,8.7 +2021-03-18T11:00,33.5,72,25.4,0,0,4,7.2 +2021-03-18T12:00,37.2,65,26.7,0,0,5.6,7.6 +2021-03-18T13:00,36.5,75,29.4,0,0,10,14.5 +2021-03-18T14:00,33.8,81,28.5,0,0,10.2,17.2 +2021-03-18T15:00,33.5,85,29.5,0,0,8.2,16.1 +2021-03-18T16:00,32,88,28.9,0,0,9.3,14.1 +2021-03-18T17:00,32.1,82,27.1,0,0,5.9,14.1 +2021-03-18T18:00,26.2,84,21.9,0,0,7.2,8.9 +2021-03-18T19:00,31.1,72,23.2,0,0,4.5,9.4 +2021-03-18T20:00,30.6,75,23.5,0,0,1.7,5.1 +2021-03-18T21:00,29.8,77,23.5,0,0,2.9,3.6 +2021-03-18T22:00,26.1,79,20.6,0,0,3.1,4 +2021-03-18T23:00,21.6,87,18.2,0,0,3.1,4.3 +2021-03-19T00:00,19,92,17,0,0,2.8,4 +2021-03-19T01:00,17.9,94,16.3,0,0,3.4,4 +2021-03-19T02:00,14.5,92,12.7,0,0,5.4,6.3 +2021-03-19T03:00,15.3,88,12.4,0,0,3.7,6.5 +2021-03-19T04:00,17.7,81,12.8,0,0,2.2,4.5 +2021-03-19T05:00,18.6,81,13.8,0,0,2,3.4 +2021-03-19T06:00,15.5,83,11.2,0,0,3.1,3.6 +2021-03-19T07:00,14.7,83,10.4,0,0,4.9,5.6 +2021-03-19T08:00,22.7,73,15.5,0,0,3.4,5.8 +2021-03-19T09:00,28.7,76,22.2,0,0,4.3,7.6 +2021-03-19T10:00,35.3,71,26.9,0,0,4,9.6 +2021-03-19T11:00,40.5,71,31.6,0,0,4.9,6.3 +2021-03-19T12:00,43.4,67,33.4,0,0,6.6,7.8 +2021-03-19T13:00,45,64,33.4,0,0,6.6,8.3 +2021-03-19T14:00,45.2,60,32.4,0,0,6.6,8.7 +2021-03-19T15:00,42.8,65,31.7,0,0,7.3,8.9 +2021-03-19T16:00,40.6,69,31,0,0,4.4,9.2 +2021-03-19T17:00,38.8,73,30.8,0,0,5.9,9.6 +2021-03-19T18:00,33.8,80,28.4,0,0,5.8,8.7 +2021-03-19T19:00,37.8,69,28.4,0,0,3.9,9.4 +2021-03-19T20:00,33.5,73,25.7,0,0,3.6,4.5 +2021-03-19T21:00,29.6,81,24.4,0,0,3.9,5.1 +2021-03-19T22:00,27.4,84,23.2,0,0,4.5,6 +2021-03-19T23:00,27.1,84,23.1,0,0,2.2,5.4 +2021-03-20T00:00,24.5,88,21.4,0,0,2.9,3.4 +2021-03-20T01:00,25.9,83,21.3,0,0,3.8,4.7 +2021-03-20T02:00,27.3,77,21,0,0,4.1,4.9 +2021-03-20T03:00,25.3,78,19.4,0,0,5.4,6.3 +2021-03-20T04:00,22.2,79,16.8,0,0,6.6,7.8 +2021-03-20T05:00,24.7,79,19,0,0,6.2,9.4 +2021-03-20T06:00,22,82,17.3,0,0,8.7,10.3 +2021-03-20T07:00,25.1,80,19.7,0,0,9,10.7 +2021-03-20T08:00,34.9,74,27.6,0,0,5.4,10.7 +2021-03-20T09:00,38.1,71,29.5,0,0,7.6,10.3 +2021-03-20T10:00,44.8,59,31.5,0,0,6.3,9.6 +2021-03-20T11:00,48.5,53,32,0,0,8.7,13.6 +2021-03-20T12:00,50.3,50,32.5,0,0,9.5,15.2 +2021-03-20T13:00,50.2,53,33.6,0,0,7.7,15.2 +2021-03-20T14:00,52,43,30.4,0,0,8.3,12.8 +2021-03-20T15:00,53.2,37,27.7,0,0,2.6,10.3 +2021-03-20T16:00,42.3,70,33.2,0,0,4.1,4.9 +2021-03-20T17:00,40.5,67,30.4,0,0,5.1,7.6 +2021-03-20T18:00,46.1,41,24,0,0,2.3,7.8 +2021-03-20T19:00,35.5,68,25.9,0,0,7,11.4 +2021-03-20T20:00,31.9,77,25.5,0,0,6.4,10.5 +2021-03-20T21:00,30.3,78,24.4,0,0,6.1,10.3 +2021-03-20T22:00,28.7,76,22.1,0,0,7.4,9.8 +2021-03-20T23:00,27.6,70,19,0,0,8.2,11.6 +2021-03-21T00:00,27.1,69,18.4,0,0,6.9,10.3 +2021-03-21T01:00,31,64,20.1,0,0,4.5,8.7 +2021-03-21T02:00,24.4,75,17.6,0,0,3.5,5.8 +2021-03-21T03:00,24.3,77,18.2,0,0,3.8,6.5 +2021-03-21T04:00,21,84,16.9,0,0,5.5,8.9 +2021-03-21T05:00,23.5,77,17.3,0,0,7.6,10.1 +2021-03-21T06:00,22.1,80,17,0,0,9.1,10.5 +2021-03-21T07:00,30.7,75,23.7,0,0,4.1,11.4 +2021-03-21T08:00,33,80,27.5,0,0,4.1,7.4 +2021-03-21T09:00,35.9,75,28.6,0,0,3.4,7.2 +2021-03-21T10:00,38.4,71,29.7,0,0,5,8.1 +2021-03-21T11:00,39.4,67,29.2,0,0,6.7,11.9 +2021-03-21T12:00,39.4,64,28.3,0,0,4.9,11.9 +2021-03-21T13:00,38.6,70,29.7,0,0,5.6,10.1 +2021-03-21T14:00,36.9,76,29.9,0,0,7.3,13.4 +2021-03-21T15:00,35.4,83,30.7,0.004,0,6.2,13.2 +2021-03-21T16:00,34.9,87,31.4,0.004,0,5.9,11.2 +2021-03-21T17:00,33.3,92,31.1,0,0.028,6.3,11.4 +2021-03-21T18:00,31.8,94,30.3,0,0.083,4.8,10.3 +2021-03-21T19:00,31.2,96,30.2,0,0.22,4.9,9.6 +2021-03-21T20:00,30.6,97,29.8,0,0.22,4.5,8.1 +2021-03-21T21:00,30.7,96,29.8,0,0.331,3.8,7.6 +2021-03-21T22:00,30.4,96,29.4,0,0.413,3.8,6.7 +2021-03-21T23:00,29.8,96,28.7,0,0.22,3.8,7.2 +2021-03-22T00:00,29.6,95,28.2,0,0.165,3,6.3 +2021-03-22T01:00,28.9,95,27.8,0,0.193,3.1,4.7 +2021-03-22T02:00,29.6,94,28.1,0,0.193,2.2,4 +2021-03-22T03:00,29.2,96,28.1,0,0.138,1.1,4 +2021-03-22T04:00,28.6,97,27.9,0,0.083,2.4,2.9 +2021-03-22T05:00,29.9,98,29.5,0.004,0.028,1.8,4.5 +2021-03-22T06:00,28.5,98,28,0,0.055,3,4.5 +2021-03-22T07:00,29.3,97,28.5,0,0.055,3.5,6.9 +2021-03-22T08:00,30.5,94,28.9,0,0.11,0.6,5.4 +2021-03-22T09:00,30.9,94,29.4,0,0.083,4.6,7.2 +2021-03-22T10:00,31.9,89,29.1,0,0.055,4.8,9.2 +2021-03-22T11:00,33.1,85,29,0,0.028,3.3,8.7 +2021-03-22T12:00,33.7,83,29.1,0,0,2.9,6.7 +2021-03-22T13:00,34,84,29.7,0,0,4.3,8.3 +2021-03-22T14:00,34.3,85,30.3,0,0,4.5,8.1 +2021-03-22T15:00,34.3,85,30.3,0,0,4.9,9.2 +2021-03-22T16:00,34,82,29.1,0,0,5.4,9.8 +2021-03-22T17:00,33.9,82,29,0,0,2.4,9.6 +2021-03-22T18:00,31.6,80,26.2,0,0,3.6,4.5 +2021-03-22T19:00,26.2,87,22.9,0,0,6.5,8.1 +2021-03-22T20:00,25.1,89,22.2,0,0,6.6,8.3 +2021-03-22T21:00,24.9,89,22.2,0,0,6.1,8.1 +2021-03-22T22:00,26.6,88,23.5,0,0,5.6,7.4 +2021-03-22T23:00,27.8,86,24.2,0,0,4.8,7.2 +2021-03-23T00:00,28.9,82,24.1,0,0,1.1,5.8 +2021-03-23T01:00,24.8,88,21.7,0,0,3.6,4 +2021-03-23T02:00,17.2,94,15.7,0,0,5.6,7.4 +2021-03-23T03:00,20.2,84,16.1,0,0,4.1,7.4 +2021-03-23T04:00,19.7,74,12.8,0,0,4.5,5.4 +2021-03-23T05:00,23.6,64,13.3,0,0,3.8,6.7 +2021-03-23T06:00,19.9,73,12.5,0,0,3.2,4.5 +2021-03-23T07:00,20.8,80,15.5,0,0,4,7.2 +2021-03-23T08:00,26.9,75,20,0,0,0.8,6.3 +2021-03-23T09:00,31.2,65,20.9,0,0,1.3,4.5 +2021-03-23T10:00,33.7,61,21.6,0,0,0.4,3.8 +2021-03-23T11:00,35.2,66,25.1,0,0,5.5,9.6 +2021-03-23T12:00,35.8,69,26.5,0,0,7.3,13.6 +2021-03-23T13:00,37,66,26.8,0,0,10.4,17.7 +2021-03-23T14:00,37.4,64,26.2,0,0,12.5,22.1 +2021-03-23T15:00,37,65,26.4,0,0,11,22.1 +2021-03-23T16:00,36.3,71,28,0,0.028,10,19.9 +2021-03-23T17:00,35.2,80,29.7,0,0.028,9.1,17.7 +2021-03-23T18:00,32.6,83,28,0,0.028,8.7,15.4 +2021-03-23T19:00,31.4,86,27.6,0,0.055,8.7,16.3 +2021-03-23T20:00,31.4,87,27.9,0,0.055,7.3,17.2 +2021-03-23T21:00,31.4,82,26.5,0,0.055,9.7,15.9 +2021-03-23T22:00,30.6,85,26.6,0,0.028,9.7,17.2 +2021-03-23T23:00,30.2,88,27.1,0,0.138,9.6,16.3 +2021-03-24T00:00,30.1,89,27.3,0,0.193,11.6,18.8 +2021-03-24T01:00,29.8,89,27.1,0,0.22,12,19.7 +2021-03-24T02:00,29.2,90,26.6,0,0.193,11.3,20.4 +2021-03-24T03:00,28.8,90,26.2,0,0.22,9.3,18.6 +2021-03-24T04:00,28.4,90,25.8,0,0.193,9.3,15.4 +2021-03-24T05:00,28.2,87,25,0,0.138,6.2,15.4 +2021-03-24T06:00,27.9,89,25,0,0.028,5,10.3 +2021-03-24T07:00,28.2,90,25.7,0,0.083,4.1,8.3 +2021-03-24T08:00,28.7,89,25.9,0,0.055,4.6,7.8 +2021-03-24T09:00,29,86,25.3,0,0.055,4.7,8.9 +2021-03-24T10:00,29.2,86,25.5,0,0.028,3.6,8.9 +2021-03-24T11:00,29.8,84,25.4,0,0,1.4,7.8 +2021-03-24T12:00,30.7,81,25.5,0,0,1.5,5.1 +2021-03-24T13:00,31.8,76,25.2,0,0,3.9,7.8 +2021-03-24T14:00,32.4,72,24.4,0,0,3.6,8.1 +2021-03-24T15:00,33.3,70,24.4,0,0,4.7,8.9 +2021-03-24T16:00,33.4,75,26.3,0,0,1.6,8.1 +2021-03-24T17:00,33.8,82,28.8,0,0,8.6,5.6 +2021-03-24T18:00,30.9,86,27.2,0,0,4.6,14.3 +2021-03-24T19:00,24.9,88,21.7,0,0,5.1,8.5 +2021-03-24T20:00,26.8,85,22.8,0,0,2.1,6.5 +2021-03-24T21:00,21.6,92,19.5,0,0,4.3,5.1 +2021-03-24T22:00,16.5,96,15.6,0,0,6,7.2 +2021-03-24T23:00,14,92,12.2,0,0,8.1,10.5 +2021-03-25T00:00,13,86,9.7,0,0,7.5,10.7 +2021-03-25T01:00,11.3,86,8,0,0,7.1,10.5 +2021-03-25T02:00,12.1,84,8.2,0,0,6.5,8.9 +2021-03-25T03:00,17.3,77,11.4,0,0,4.5,8.3 +2021-03-25T04:00,17.7,75,11.1,0,0,3.5,5.8 +2021-03-25T05:00,18.5,71,10.7,0,0,2.6,5.8 +2021-03-25T06:00,11.6,79,6.4,0,0,5.7,7.2 +2021-03-25T07:00,14.1,80,9.1,0,0,5.5,9.4 +2021-03-25T08:00,23.6,76,17.1,0,0,4.3,8.1 +2021-03-25T09:00,32.3,67,22.6,0,0,4.6,8.3 +2021-03-25T10:00,37,62,25.3,0,0,5.1,9.2 +2021-03-25T11:00,40.7,56,26.2,0,0,5.4,10.5 +2021-03-25T12:00,42,52,25.4,0,0,5.2,10.7 +2021-03-25T13:00,42.2,52,25.8,0,0,4.1,10.5 +2021-03-25T14:00,42.5,52,26.3,0,0,3.9,8.1 +2021-03-25T15:00,41.7,54,26.2,0,0,4.7,8.5 +2021-03-25T16:00,42.6,46,23.4,0,0,4.8,8.5 +2021-03-25T17:00,43.9,63,32.3,0,0,5.6,7.4 +2021-03-25T18:00,45.3,37,20.3,0,0,1.4,6.9 +2021-03-25T19:00,36.2,68,26.6,0,0,7.6,12.1 +2021-03-25T20:00,34.9,76,28.2,0,0,5.5,14.3 +2021-03-25T21:00,31.6,84,27.2,0,0,5.9,9.4 +2021-03-25T22:00,31,86,27.3,0.004,0,5.4,7.4 +2021-03-25T23:00,29.9,87,26.5,0,0.028,4.2,7.2 +2021-03-26T00:00,33,82,28.1,0.004,0,2.4,5.6 +2021-03-26T01:00,31.1,85,27.1,0,0,1,3.1 +2021-03-26T02:00,27.7,87,24.3,0,0,2.8,4.5 +2021-03-26T03:00,26,87,22.6,0,0,3.6,4.9 +2021-03-26T04:00,24.7,88,21.7,0,0,4.3,6.5 +2021-03-26T05:00,26.5,90,24.1,0,0,3.3,6.3 +2021-03-26T06:00,25.2,88,22.1,0,0.028,4.2,7.6 +2021-03-26T07:00,28.7,88,25.6,0,0.11,4.7,8.5 +2021-03-26T08:00,33.1,89,30.2,0,0.083,2.9,8.7 +2021-03-26T09:00,35.9,82,31,0,0,2.5,7.6 +2021-03-26T10:00,37.6,78,31.2,0,0,2.1,4.9 +2021-03-26T11:00,41.8,60,29.1,0,0,3.4,12.1 +2021-03-26T12:00,43.3,58,29.4,0,0,3.8,12.8 +2021-03-26T13:00,43.8,56,29.3,0,0,6.2,14.8 +2021-03-26T14:00,43.4,59,29.9,0,0,6.8,15.7 +2021-03-26T15:00,43.3,58,29.3,0,0,5.8,15.9 +2021-03-26T16:00,42.4,59,29.1,0.004,0,6.1,13.4 +2021-03-26T17:00,41,73,33.1,0,0,12.1,17 +2021-03-26T18:00,36.7,91,34.3,0.024,0.055,9.6,20.6 +2021-03-26T19:00,34.4,95,33.2,0.012,0.11,2.9,15.4 +2021-03-26T20:00,34.3,93,32.5,0,0,3,5.4 +2021-03-26T21:00,32.5,94,30.8,0,0,2.8,5.4 +2021-03-26T22:00,31.4,93,29.5,0,0,2.2,4.5 +2021-03-26T23:00,29.8,94,28.2,0,0,2.1,4.3 +2021-03-27T00:00,27.3,95,26,0,0,2.8,5.1 +2021-03-27T01:00,25.2,95,23.8,0,0,3.2,5.6 +2021-03-27T02:00,24.5,94,23.1,0,0,4,7.2 +2021-03-27T03:00,24.3,93,22.5,0,0,4,7.4 +2021-03-27T04:00,22.7,92,20.8,0,0,5.2,8.5 +2021-03-27T05:00,25.1,84,20.8,0,0,5.9,10.7 +2021-03-27T06:00,28.2,73,20.6,0,0,7.2,11.4 +2021-03-27T07:00,33.9,61,21.8,0,0,9.7,14.5 +2021-03-27T08:00,38.7,52,22.5,0,0,6.7,14.8 +2021-03-27T09:00,42.4,41,20.2,0,0,4.5,12.5 +2021-03-27T10:00,43.9,40,21.3,0,0,7.9,16.8 +2021-03-27T11:00,44.1,41,21.9,0,0,8.9,18.6 +2021-03-27T12:00,45.6,39,22.3,0,0,5.6,19 +2021-03-27T13:00,46,39,22.3,0,0,2.5,15 +2021-03-27T14:00,47.1,36,21.5,0,0,2.7,11.4 +2021-03-27T15:00,48.2,34,21,0,0,4.1,12.3 +2021-03-27T16:00,47.9,35,21.5,0,0,3.5,12.1 +2021-03-27T17:00,48,37,23.3,0,0,6,10.1 +2021-03-27T18:00,43,58,29.4,0,0,5.4,11.6 +2021-03-27T19:00,37.2,61,25.1,0,0,3.3,6.3 +2021-03-27T20:00,31.5,79,25.6,0,0,4.8,8.7 +2021-03-27T21:00,28.1,88,25.2,0,0,3.8,8.1 +2021-03-27T22:00,28,83,23.5,0,0,3.6,6.3 +2021-03-27T23:00,28.4,78,22.3,0,0,4.5,7.2 +2021-03-28T00:00,28.3,73,20.7,0,0,5.2,8.3 +2021-03-28T01:00,27.2,71,19,0,0,6.7,11 +2021-03-28T02:00,27.1,66,17.4,0,0,6.1,11.2 +2021-03-28T03:00,27.2,64,16.8,0,0,5.2,9.8 +2021-03-28T04:00,27.2,64,16.5,0,0,4.5,8.5 +2021-03-28T05:00,25.3,68,16.1,0,0,7.9,7.2 +2021-03-28T06:00,26.7,64,16,0,0,5.5,13 +2021-03-28T07:00,31.1,59,18.4,0,0,11.5,17.7 +2021-03-28T08:00,38.6,50,21.7,0,0,11,19.9 +2021-03-28T09:00,46.2,41,23.7,0,0,9.2,19 +2021-03-28T10:00,51.4,32,22.8,0,0,6.5,17.7 +2021-03-28T11:00,54.2,30,23.2,0,0,5.1,14.5 +2021-03-28T12:00,57.1,26,22.7,0,0,6.5,15.4 +2021-03-28T13:00,59.3,24,22.8,0,0,5.9,15.4 +2021-03-28T14:00,60.9,23,23.2,0,0,6.9,15.4 +2021-03-28T15:00,61.1,23,22.8,0,0,7.5,15.4 +2021-03-28T16:00,61,24,24.2,0,0,6.8,15.4 +2021-03-28T17:00,59.5,35,31.8,0,0,3.8,13 +2021-03-28T18:00,52.3,42,29.7,0,0,5.7,6.9 +2021-03-28T19:00,43.4,59,30.1,0,0,4.9,8.9 +2021-03-28T20:00,37.9,77,31.3,0,0,4,7.8 +2021-03-28T21:00,33.5,88,30.3,0,0,2.6,6.3 +2021-03-28T22:00,32.3,88,29.1,0,0,4,6.3 +2021-03-28T23:00,31.5,84,27.1,0,0,4.3,6.9 +2021-03-29T00:00,31.2,77,24.9,0,0,4.8,7.6 +2021-03-29T01:00,30.6,73,22.8,0,0,4.6,7.6 +2021-03-29T02:00,30.7,67,20.9,0,0,5.7,8.3 +2021-03-29T03:00,33,55,18.7,0,0,7.1,10.7 +2021-03-29T04:00,33.3,52,17.7,0,0,6.5,11.6 +2021-03-29T05:00,28.4,67,18.8,0,0,4.4,10.1 +2021-03-29T06:00,26.8,74,19.6,0,0,4.8,6.7 +2021-03-29T07:00,33.8,64,23.1,0,0,5.4,9.2 +2021-03-29T08:00,45.7,49,27.8,0,0,3.9,9.2 +2021-03-29T09:00,54.2,33,25.5,0,0,8.2,14.8 +2021-03-29T10:00,60.1,23,21.9,0,0,13.4,23.9 +2021-03-29T11:00,63.2,21,22.1,0,0,11.7,24.6 +2021-03-29T12:00,66.7,19,23.5,0,0,5.2,22.6 +2021-03-29T13:00,70,13,17.4,0,0,9.9,18.1 +2021-03-29T14:00,70.1,12,14.8,0,0,13.6,24.8 +2021-03-29T15:00,69,12,14.8,0,0,12.9,25.7 +2021-03-29T16:00,66.9,16,19.1,0,0,11,23.3 +2021-03-29T17:00,64.6,53,46.9,0,0,1.6,19.2 +2021-03-29T18:00,55,39,30.4,0,0,5.7,6.7 +2021-03-29T19:00,47.8,41,25.5,0,0,8.6,7.6 +2021-03-29T20:00,42.7,47,23.7,0,0,12.1,34.7 +2021-03-29T21:00,39.3,45,19.6,0,0,10.3,20.1 +2021-03-29T22:00,35.7,46,16.9,0,0,11.1,18.6 +2021-03-29T23:00,33.4,48,15.8,0.004,0,9.1,18.1 +2021-03-30T00:00,31.5,57,17.8,0,0.083,8.6,19.9 +2021-03-30T01:00,29.3,66,19.3,0,0.22,6.9,15.2 +2021-03-30T02:00,28.2,68,19,0,0.248,6,12.5 +2021-03-30T03:00,27.4,67,17.9,0,0.22,5.9,11 +2021-03-30T04:00,26.6,69,18,0,0.193,6.4,12.1 +2021-03-30T05:00,26.7,65,16.6,0,0.193,4.9,11.6 +2021-03-30T06:00,26.8,67,17.4,0,0.138,6.7,11.9 +2021-03-30T07:00,27.5,70,19,0,0.11,7.1,13 +2021-03-30T08:00,28.6,68,19.2,0,0.083,7.4,14.3 +2021-03-30T09:00,30.8,63,19.7,0,0.028,7.4,16.1 +2021-03-30T10:00,33.6,54,18.6,0,0.028,11.5,21.7 +2021-03-30T11:00,35.9,47,17.4,0,0,12.5,25.1 +2021-03-30T12:00,37.2,46,18.5,0,0,9.1,24.6 +2021-03-30T13:00,37.9,47,19.6,0,0,7.9,19.9 +2021-03-30T14:00,38.4,48,20.2,0,0.028,6.8,18.3 +2021-03-30T15:00,38.8,46,19.6,0,0.028,4.8,16.3 +2021-03-30T16:00,38.9,45,19.3,0,0.028,3,13 +2021-03-30T17:00,37.4,48,19.5,0,0,5.9,9.8 +2021-03-30T18:00,35.3,65,24.9,0,0,5.2,12.1 +2021-03-30T19:00,31.8,76,25.2,0,0,6.2,9.2 +2021-03-30T20:00,29.1,79,23.5,0,0,3.4,10.1 +2021-03-30T21:00,26.6,80,21.3,0,0,2.9,5.6 +2021-03-30T22:00,23,75,16.3,0,0,3.4,6.3 +2021-03-30T23:00,21.1,66,11.7,0,0,5.9,8.9 +2021-03-31T00:00,20.8,56,7.6,0,0,5.3,10.3 +2021-03-31T01:00,19.6,59,7.5,0,0,3.8,8.7 +2021-03-31T02:00,17.7,63,7.3,0,0,6.8,10.1 +2021-03-31T03:00,15.5,66,6.4,0,0,7.3,11.9 +2021-03-31T04:00,15.6,64,5.5,0,0,7.6,12.1 +2021-03-31T05:00,13.5,75,7,0,0,4.8,12.3 +2021-03-31T06:00,14.9,69,6.4,0,0,5.6,8.7 +2021-03-31T07:00,19.6,58,7.1,0,0,5.1,10.7 +2021-03-31T08:00,26.7,48,9.7,0,0,5.9,13.2 +2021-03-31T09:00,34.3,36,10.4,0,0,6.6,15.4 +2021-03-31T10:00,38.8,31,10.7,0,0,6.6,15.9 +2021-03-31T11:00,42.3,27,11,0,0,6.4,17 +2021-03-31T12:00,44.5,26,11.4,0,0,4,16.1 +2021-03-31T13:00,46.3,25,12.4,0,0,0.9,13.2 +2021-03-31T14:00,47.9,24,12.9,0,0,3.8,12.3 +2021-03-31T15:00,48.6,24,13,0,0,5,13.4 +2021-03-31T16:00,48.6,23,12.7,0,0,4.1,13.2 +2021-03-31T17:00,48.9,26,15.4,0,0,5.7,11 +2021-03-31T18:00,42.6,42,21,0,0,5.3,10.5 +2021-03-31T19:00,37.5,43,17.1,0,0,7.1,8.9 +2021-03-31T20:00,35.2,45,16.2,0,0,5.7,9.6 +2021-03-31T21:00,31,56,17.3,0,0,2.8,6.9 +2021-03-31T22:00,27.2,71,19.2,0,0,1.6,5.4 +2021-03-31T23:00,25.5,76,19,0,0,2.5,3.6 +2021-04-01T00:00,23.1,81,18.1,0,0,3.6,5.6 +2021-04-01T01:00,21.8,80,16.7,0,0,2.6,5.8 +2021-04-01T02:00,21.2,79,15.7,0,0,1.5,4 +2021-04-01T03:00,20.5,80,15.2,0,0,1.7,2.9 +2021-04-01T04:00,20,80,14.8,0,0,2.2,3.1 +2021-04-01T05:00,19,78,13.4,0,0,4,3.4 +2021-04-01T06:00,21,70,12.8,0,0,2.7,4.7 +2021-04-01T07:00,26.2,59,13.9,0,0,3.5,8.3 +2021-04-01T08:00,34.3,48,16.8,0,0,2.8,9.2 +2021-04-01T09:00,42.5,38,18.5,0,0,3.7,11.2 +2021-04-01T10:00,50.3,30,19.8,0,0,4.8,12.8 +2021-04-01T11:00,56.4,20,16,0,0,7.4,16.1 +2021-04-01T12:00,60.1,19,17.2,0,0,8.8,18.8 +2021-04-01T13:00,62.7,18,18,0,0,8.1,18.8 +2021-04-01T14:00,64.2,16,16.7,0,0,6.6,17.4 +2021-04-01T15:00,64.9,15,16.4,0,0,4.6,15 +2021-04-01T16:00,64.9,16,17.3,0,0,4.4,11.6 +2021-04-01T17:00,63,43,40.2,0,0,4,9.6 +2021-04-01T18:00,54.2,42,31.6,0,0,3.8,6.5 +2021-04-01T19:00,41.9,63,30.3,0,0,5.5,7.4 +2021-04-01T20:00,36.7,77,30,0,0,3.7,7.2 +2021-04-01T21:00,35.2,73,27.4,0,0,4.2,6.3 +2021-04-01T22:00,34.9,65,24.4,0,0,4.5,7.6 +2021-04-01T23:00,33.2,66,23,0,0,4.5,7.6 +2021-04-02T00:00,31.5,69,22.4,0,0,4.4,7.4 +2021-04-02T01:00,29.8,71,21.7,0,0,4.2,7.2 +2021-04-02T02:00,28.8,71,20.7,0,0,4.6,6.5 +2021-04-02T03:00,27.8,72,19.9,0,0,5.5,6.9 +2021-04-02T04:00,28.8,68,19.6,0,0,5.6,6.9 +2021-04-02T05:00,29.8,65,19.6,0,0,4.3,7.2 +2021-04-02T06:00,30.6,62,19.2,0,0,5.8,8.7 +2021-04-02T07:00,35.4,57,21.8,0,0,5.9,11 +2021-04-02T08:00,41.9,50,24.5,0,0,4.8,10.1 +2021-04-02T09:00,49.6,42,27.5,0,0,3.3,10.3 +2021-04-02T10:00,57.7,32,28,0,0,1.7,9.4 +2021-04-02T11:00,64.2,22,24.7,0,0,3.3,11 +2021-04-02T12:00,67.1,20,24.7,0,0,4.8,13.2 +2021-04-02T13:00,68.5,20,26.1,0,0,4.5,13.2 +2021-04-02T14:00,69.3,20,26.8,0,0,3.8,12.8 +2021-04-02T15:00,69.4,20,27,0,0,4,11.6 +2021-04-02T16:00,68.9,21,27.1,0,0,4.1,11 +2021-04-02T17:00,67,34,37.9,0,0,3.2,9.8 +2021-04-02T18:00,56.6,53,39.7,0,0,6.7,7.8 +2021-04-02T19:00,49.9,57,35.1,0,0,5.2,8.7 +2021-04-02T20:00,44,61,31.6,0,0,5.4,10.1 +2021-04-02T21:00,39.9,69,30.7,0,0,4.4,8.5 +2021-04-02T22:00,37.7,74,30,0,0,3.5,7.4 +2021-04-02T23:00,36.3,74,28.9,0,0,4.4,6.5 +2021-04-03T00:00,33.9,80,28.3,0,0,4.9,9.8 +2021-04-03T01:00,32.1,84,27.9,0,0,4.4,7.8 +2021-04-03T02:00,30.6,88,27.4,0,0,3.1,7.2 +2021-04-03T03:00,30.4,85,26.3,0,0,4.1,6.9 +2021-04-03T04:00,32.2,74,24.9,0,0,4.2,6.9 +2021-04-03T05:00,33,73,25.4,0,0,4.3,6.9 +2021-04-03T06:00,33.4,70,24.7,0,0,5.4,7.8 +2021-04-03T07:00,40.5,57,26.2,0,0,5.6,9.8 +2021-04-03T08:00,49.4,47,30.1,0,0,4.5,10.5 +2021-04-03T09:00,59,38,33.5,0,0,3.6,10.7 +2021-04-03T10:00,66.2,26,30.6,0,0,2.2,10.3 +2021-04-03T11:00,70.4,18,25.3,0,0,1.5,9.4 +2021-04-03T12:00,72.1,16,22.9,0,0,1.6,8.9 +2021-04-03T13:00,73,14,21.8,0,0,3.2,10.7 +2021-04-03T14:00,73.6,14,21.3,0,0,6.1,14.1 +2021-04-03T15:00,73.4,13,19,0,0,8,16.3 +2021-04-03T16:00,72.1,13,18.1,0,0,8.2,16.3 +2021-04-03T17:00,70.8,39,44.7,0,0,3.4,15.4 +2021-04-03T18:00,60.1,45,38.8,0,0,7,8.5 +2021-04-03T19:00,52.5,46,32.3,0,0,4.9,8.5 +2021-04-03T20:00,46.1,54,30.3,0,0,5.8,10.1 +2021-04-03T21:00,43.4,58,29.8,0,0,6.8,9.4 +2021-04-03T22:00,42.1,56,27.4,0,0,6.5,8.3 +2021-04-03T23:00,39.2,61,26.8,0,0,4.1,7.6 +2021-04-04T00:00,42.4,54,26.9,0,0,3.3,6.5 +2021-04-04T01:00,38.6,64,27.5,0,0,3,4 +2021-04-04T02:00,35.4,73,27.7,0,0,3.5,5.6 +2021-04-04T03:00,35.1,72,27,0,0,4.9,6.5 +2021-04-04T04:00,35.5,68,25.9,0,0,6,7.6 +2021-04-04T05:00,36.1,66,25.9,0,0,5.1,7.6 +2021-04-04T06:00,36.9,65,26.1,0,0,4.3,7.2 +2021-04-04T07:00,42.9,57,28.7,0,0,5.9,9.8 +2021-04-04T08:00,53.2,46,33.1,0,0,5,11 +2021-04-04T09:00,63.9,35,35.5,0,0,3.8,11.2 +2021-04-04T10:00,70.8,25,32.7,0,0,2.8,10.5 +2021-04-04T11:00,73.9,17,27,0,0,0.3,9.8 +2021-04-04T12:00,74.8,15,23.7,0,0,1.2,8.3 +2021-04-04T13:00,75.3,14,23.2,0,0,0.9,8.9 +2021-04-04T14:00,75.5,14,23.4,0,0,2.7,9.4 +2021-04-04T15:00,75.5,15,23.8,0,0,4.6,11.6 +2021-04-04T16:00,74.8,15,23.4,0,0,4.9,11.6 +2021-04-04T17:00,68.8,37,41.5,0,0,2.2,10.7 +2021-04-04T18:00,62.7,44,40.2,0,0,2.9,4.7 +2021-04-04T19:00,56.5,52,39.1,0,0,4.5,8.7 +2021-04-04T20:00,51.5,55,36,0,0,4.6,7.2 +2021-04-04T21:00,46.8,58,32.9,0,0,5.8,8.9 +2021-04-04T22:00,44.6,61,32.2,0,0,5.2,8.9 +2021-04-04T23:00,41.2,71,32.5,0,0,4.2,8.5 +2021-04-05T00:00,41.5,66,31.1,0,0,3.6,5.8 +2021-04-05T01:00,40.7,63,29,0,0,4.1,6.3 +2021-04-05T02:00,40,61,27.7,0,0,4.1,6.7 +2021-04-05T03:00,38.8,63,27.1,0,0,4.2,6.9 +2021-04-05T04:00,37.5,66,27.1,0,0,5.3,6.9 +2021-04-05T05:00,39.7,59,26.7,0,0,4.5,7.2 +2021-04-05T06:00,39.2,60,26.4,0,0,4.5,7.4 +2021-04-05T07:00,46.6,47,27.6,0,0,5.8,9.8 +2021-04-05T08:00,56.9,38,31.5,0,0,5,10.7 +2021-04-05T09:00,67.1,25,30.6,0,0,8.2,15.2 +2021-04-05T10:00,71.4,19,26.9,0,0,13.5,24.4 +2021-04-05T11:00,73.9,15,23.6,0,0,15.7,28.2 +2021-04-05T12:00,74.6,15,23.2,0,0,15.6,29.5 +2021-04-05T13:00,75.2,16,25.3,0,0,11.8,28.4 +2021-04-05T14:00,77,13,23.1,0,0,8.9,22.4 +2021-04-05T15:00,76.1,14,22.7,0,0,6.6,18.3 +2021-04-05T16:00,75.5,14,22.2,0,0,2.1,13.9 +2021-04-05T17:00,71.9,20,28.2,0,0,7.1,6.7 +2021-04-05T18:00,62.9,42,39.2,0,0,6.3,12.3 +2021-04-05T19:00,55.3,50,36.9,0,0,4.6,7.6 +2021-04-05T20:00,51.6,46,31.5,0,0,6.7,11.9 +2021-04-05T21:00,49.1,41,26.2,0,0,5.1,10.5 +2021-04-05T22:00,44.8,49,26.7,0,0,5.1,8.7 +2021-04-05T23:00,42.7,57,28.5,0,0,5.8,7.4 +2021-04-06T00:00,50,37,25,0,0,0.9,9.2 +2021-04-06T01:00,41,54,25.5,0,0,6.2,7.4 +2021-04-06T02:00,42.1,46,23,0,0,6.7,8.7 +2021-04-06T03:00,40.8,50,23.6,0,0,8.1,10.1 +2021-04-06T04:00,40.6,52,24.5,0,0,5.9,9.8 +2021-04-06T05:00,40.9,61,28.3,0,0,5.1,8.3 +2021-04-06T06:00,40.6,62,28.6,0,0,5.9,8.9 +2021-04-06T07:00,44.2,56,29.3,0.004,0,7.2,12.5 +2021-04-06T08:00,45.2,54,29.4,0,0,7.2,15.2 +2021-04-06T09:00,47.7,51,30.3,0,0,6,15.2 +2021-04-06T10:00,50.5,47,31,0,0,7.4,17.4 +2021-04-06T11:00,53.4,43,31.6,0,0,9.4,20.6 +2021-04-06T12:00,56.3,39,31.7,0,0,11.5,23.7 +2021-04-06T13:00,57.7,36,31.1,0,0,10.7,24.2 +2021-04-06T14:00,54.8,42,32.4,0.012,0,13,26.8 +2021-04-06T15:00,54.1,42,31.5,0.008,0,15.6,24.8 +2021-04-06T16:00,44.9,73,36.8,0.071,0,21.7,37.8 +2021-04-06T17:00,35.8,96,34.8,0.067,0,10.2,37.1 +2021-04-06T18:00,38.5,92,36.3,0.039,0,10.8,19.9 +2021-04-06T19:00,39.1,89,36.1,0.024,0,5.9,18.8 +2021-04-06T20:00,38,92,35.8,0.016,0,5.8,10.1 +2021-04-06T21:00,37.4,93,35.7,0.02,0,3.8,11 +2021-04-06T22:00,37.5,90,34.9,0.008,0,3,7.2 +2021-04-06T23:00,36.6,96,35.5,0,0,2.8,6.5 +2021-04-07T00:00,36.1,96,35.2,0,0,3.2,4.9 +2021-04-07T01:00,36,94,34.5,0,0,3.3,4.3 +2021-04-07T02:00,37.2,88,34.1,0,0,4.3,6 +2021-04-07T03:00,37.2,94,35.7,0,0,6,9.2 +2021-04-07T04:00,38,83,33.4,0,0,8.8,13.6 +2021-04-07T05:00,36.8,85,32.8,0,0,4.5,13.4 +2021-04-07T06:00,34.9,92,32.8,0,0,2.4,6.5 +2021-04-07T07:00,37,82,32.1,0,0,2.3,5.6 +2021-04-07T08:00,38.3,76,31.6,0,0,5.1,10.3 +2021-04-07T09:00,41.5,65,30.5,0,0,5,11.9 +2021-04-07T10:00,45.8,53,29.8,0,0,4.5,12.1 +2021-04-07T11:00,49.5,49,31.1,0,0,5.5,13.6 +2021-04-07T12:00,53.3,44,32.1,0,0,6.6,16.3 +2021-04-07T13:00,56.9,37,30.8,0,0,7,16.8 +2021-04-07T14:00,58.8,32,29.2,0,0,9.4,20.4 +2021-04-07T15:00,59,31,28.3,0,0,5.4,20.1 +2021-04-07T16:00,59.7,24,22.9,0,0,10.9,19.9 +2021-04-07T17:00,59,25,23.3,0,0,10.1,21.7 +2021-04-07T18:00,53.8,36,27.4,0,0,4.3,17.2 +2021-04-07T19:00,47.8,41,25.2,0,0,6.6,8.7 +2021-04-07T20:00,45.5,46,25.9,0,0,6.3,9.8 +2021-04-07T21:00,40.8,55,26.1,0,0,5.3,10.7 +2021-04-07T22:00,36.2,68,26.7,0,0,5.1,8.9 +2021-04-07T23:00,34.2,76,27.5,0,0,5.1,6.9 +2021-04-08T00:00,34.7,72,26.7,0,0,3,6.5 +2021-04-08T01:00,34.1,71,25.8,0,0,2.7,4.9 +2021-04-08T02:00,35.3,64,24.3,0,0,3.7,6.3 +2021-04-08T03:00,34.8,61,22.7,0,0,4.4,7.8 +2021-04-08T04:00,32.1,68,22.6,0,0,3.3,7.6 +2021-04-08T05:00,31,73,23.5,0,0,3.2,5.4 +2021-04-08T06:00,30.7,73,23,0,0,3,5.6 +2021-04-08T07:00,37.6,59,24.4,0,0,4.7,9.6 +2021-04-08T08:00,48.4,41,25.5,0,0,2.5,9.6 +2021-04-08T09:00,54.7,30,24.1,0,0,4,11.2 +2021-04-08T10:00,58.6,23,21.1,0,0,1.8,11.4 +2021-04-08T11:00,60.8,22,21.7,0,0,3.7,12.3 +2021-04-08T12:00,64.3,19,21.2,0,0,5.8,13.4 +2021-04-08T13:00,65.8,16,18.9,0,0,13.9,26.2 +2021-04-08T14:00,67.4,13,15.5,0,0,13.4,27.1 +2021-04-08T15:00,68.2,13,15.7,0,0,15.8,28.6 +2021-04-08T16:00,66.3,16,18.5,0,0,12,28.9 +2021-04-08T17:00,64.5,21,24.2,0,0,8.4,21.9 +2021-04-08T18:00,59.2,33,30.3,0,0,4.8,14.8 +2021-04-08T19:00,53.1,42,30.8,0,0,5.2,7.8 +2021-04-08T20:00,46.8,50,28.9,0,0,5.3,8.9 +2021-04-08T21:00,43.6,44,23.4,0,0,5.7,9.2 +2021-04-08T22:00,41.9,44,21.4,0,0,4.5,9.2 +2021-04-08T23:00,42.4,41,20.7,0,0,6.1,8.7 +2021-04-09T00:00,50.1,27,17.4,0,0,16.5,27.7 +2021-04-09T01:00,43.5,35,17.4,0,0,6.3,27.5 +2021-04-09T02:00,42.5,37,17.9,0,0,8.9,15 +2021-04-09T03:00,39.6,41,18.1,0,0,6.5,15.2 +2021-04-09T04:00,39,42,17.6,0,0,9.5,15.4 +2021-04-09T05:00,34.1,62,22.5,0,0,4.8,16.8 +2021-04-09T06:00,33.9,73,26.2,0,0,5.4,11.6 +2021-04-09T07:00,37.4,65,26.8,0,0.055,6.6,11.4 +2021-04-09T08:00,39.3,60,26.6,0,0,10.7,22.4 +2021-04-09T09:00,41.1,47,22.6,0.004,0.331,14.7,27.3 +2021-04-09T10:00,44,35,18.1,0,0,12.8,27.7 +2021-04-09T11:00,45.3,35,19.1,0,0,13.6,26.6 +2021-04-09T12:00,48.4,31,18.9,0,0,10.9,26.4 +2021-04-09T13:00,51,26,17.2,0,0,11.6,24.2 +2021-04-09T14:00,51,27,18.2,0,0,11.2,23.9 +2021-04-09T15:00,51.1,26,17.3,0,0,11,23.3 +2021-04-09T16:00,52.8,21,13.7,0,0,7.9,22.4 +2021-04-09T17:00,49.9,26,16.6,0,0,8,17 +2021-04-09T18:00,46.4,32,18.1,0,0,8.9,16.1 +2021-04-09T19:00,41.7,38,18.2,0,0,5.6,14.5 +2021-04-09T20:00,38.8,43,18.2,0,0,4.1,8.9 +2021-04-09T21:00,36.8,47,18.3,0,0,4.2,6.5 +2021-04-09T22:00,34.4,54,19.4,0,0,4.3,6.5 +2021-04-09T23:00,32.6,62,21,0,0,5.1,7.2 +2021-04-10T00:00,30.4,69,21.6,0,0,5.4,6.5 +2021-04-10T01:00,29,73,21.6,0,0,4.5,6.7 +2021-04-10T02:00,27.6,78,21.7,0,0,3.7,5.8 +2021-04-10T03:00,26.8,80,21.6,0,0,3.3,5.1 +2021-04-10T04:00,26.2,79,20.7,0,0,3.7,6 +2021-04-10T05:00,24.9,84,20.7,0,0,2.6,5.8 +2021-04-10T06:00,25.9,84,21.7,0,0,2.1,3.6 +2021-04-10T07:00,32.1,64,21.1,0,0,2.2,6.7 +2021-04-10T08:00,40.1,43,19.6,0,0,3.2,9.8 +2021-04-10T09:00,49,28,17,0,0,5.1,13.2 +2021-04-10T10:00,55,21,15.5,0,0,4,13.6 +2021-04-10T11:00,58.2,20,16.8,0,0,2.2,12.8 +2021-04-10T12:00,61.2,19,18.5,0,0,3.3,12.3 +2021-04-10T13:00,64,16,17.4,0,0,2.3,13 +2021-04-10T14:00,66.8,10,8.3,0,0,7.4,15.4 +2021-04-10T15:00,66.7,11,10.4,0,0,15.4,28 +2021-04-10T16:00,66,11,9.2,0,0,16.3,28.9 +2021-04-10T17:00,65.8,11,10,0,0,5.2,28.6 +2021-04-10T18:00,57.4,36,30.7,0,0,5.4,9.6 +2021-04-10T19:00,52,34,24.4,0,0,5.2,8.1 +2021-04-10T20:00,46.4,44,25.4,0,0,6.1,10.1 +2021-04-10T21:00,44.9,36,19.3,0,0,6.6,10.7 +2021-04-10T22:00,44.2,31,15.2,0,0,6.3,10.7 +2021-04-10T23:00,43.1,34,16.3,0,0,7.6,12.3 +2021-04-11T00:00,41.6,35,16.1,0,0,6,12.3 +2021-04-11T01:00,39.7,37,15.4,0,0,6.1,9.4 +2021-04-11T02:00,37,42,15.9,0,0,6.4,9.4 +2021-04-11T03:00,35.8,46,16.8,0,0,4.5,8.7 +2021-04-11T04:00,33.6,53,18.5,0,0,5,6.9 +2021-04-11T05:00,33.2,53,18.1,0,0,4.2,8.1 +2021-04-11T06:00,34.2,56,20.2,0,0,3.6,6.9 +2021-04-11T07:00,41.9,44,21.4,0,0,6.2,8.7 +2021-04-11T08:00,42.9,43,21.7,0,0,10.4,22.8 +2021-04-11T09:00,45.1,42,23.1,0,0,7.1,20.4 +2021-04-11T10:00,47.9,38,23.3,0,0,10.2,21.3 +2021-04-11T11:00,50.4,34,22.8,0,0,11.7,23.7 +2021-04-11T12:00,52.1,31,22,0,0,11,24.4 +2021-04-11T13:00,53.4,28,21.1,0,0,11,23.5 +2021-04-11T14:00,54.3,27,21.1,0,0,9.9,23 +2021-04-11T15:00,54.6,27,21.2,0,0,10.1,21.5 +2021-04-11T16:00,53.6,28,21.1,0,0,9.7,20.8 +2021-04-11T17:00,52.7,28,20.5,0,0,8.7,19.5 +2021-04-11T18:00,48.5,29,17.2,0,0,10.7,20.1 +2021-04-11T19:00,46.5,28,15.4,0,0,6.8,17.7 +2021-04-11T20:00,44.5,20,5.6,0,0,10.9,19.9 +2021-04-11T21:00,42.4,23,7.4,0,0,7.6,17.9 +2021-04-11T22:00,40.2,27,9,0,0,7.3,13 +2021-04-11T23:00,37,33,10.6,0,0,4.6,11.9 +2021-04-12T00:00,35,37,11,0,0,5.2,8.7 +2021-04-12T01:00,31.4,45,12.6,0,0,4.9,8.5 +2021-04-12T02:00,30.7,48,13.2,0,0,4.1,6.7 +2021-04-12T03:00,29.4,51,13.6,0,0,4.4,5.8 +2021-04-12T04:00,28.3,57,15,0,0,4.5,5.8 +2021-04-12T05:00,27.5,64,17.1,0,0,3.6,6 +2021-04-12T06:00,28.1,64,17.5,0,0,5.9,8.5 +2021-04-12T07:00,31,55,16.7,0,0,6.5,13 +2021-04-12T08:00,33.4,51,17.1,0,0,5.1,14.1 +2021-04-12T09:00,35.2,48,17.5,0,0,3.5,13.2 +2021-04-12T10:00,37.5,44,17.6,0,0,3.1,12.8 +2021-04-12T11:00,39.4,41,17.7,0,0,3.7,13.2 +2021-04-12T12:00,42.2,37,17.7,0,0,4.5,14.5 +2021-04-12T13:00,43.8,34,17.4,0,0,5.7,15.4 +2021-04-12T14:00,45,33,17.7,0,0,6.2,15.7 +2021-04-12T15:00,45.2,33,17.9,0,0,6.9,16.8 +2021-04-12T16:00,45.3,33,18.1,0,0,9.1,18.3 +2021-04-12T17:00,38.5,43,18,0,0,12.2,22.6 +2021-04-12T18:00,37,48,19.1,0,0,9.7,20.8 +2021-04-12T19:00,36.2,49,19,0,0,6.6,17.7 +2021-04-12T20:00,36.6,49,19.4,0,0,4.7,12.1 +2021-04-12T21:00,36.4,51,20.1,0,0,5.6,10.3 +2021-04-12T22:00,36.1,53,20.5,0,0,3.8,10.1 +2021-04-12T23:00,35.8,54,20.6,0,0,3.1,7.4 +2021-04-13T00:00,35,56,20.8,0,0,2.7,6.5 +2021-04-13T01:00,34,60,21.7,0,0.028,2,5.4 +2021-04-13T02:00,33.1,66,22.8,0,0.055,3.3,6.3 +2021-04-13T03:00,32.3,72,24.2,0,0.055,4.8,8.7 +2021-04-13T04:00,31.7,75,24.7,0,0.055,4.7,8.9 +2021-04-13T05:00,31.2,62,19.7,0,0.055,5.1,9.8 +2021-04-13T06:00,30.7,61,19,0,0.055,5.1,9.4 +2021-04-13T07:00,30.5,59,17.7,0,0.055,5.6,11.2 +2021-04-13T08:00,31,54,16.3,0,0.028,5.6,12.3 +2021-04-13T09:00,32.5,50,16,0,0,7.1,15.4 +2021-04-13T10:00,35,47,16.9,0,0,5.2,16.6 +2021-04-13T11:00,37,46,18.2,0,0,4.4,14.8 +2021-04-13T12:00,39.4,44,19.2,0,0,7.3,17.4 +2021-04-13T13:00,41.7,41,19.8,0,0,11.4,23.5 +2021-04-13T14:00,43.3,40,20.6,0,0,11.1,23.7 +2021-04-13T15:00,42,45,22.1,0,0,11.8,22.6 +2021-04-13T16:00,42.3,45,22.5,0,0,8.3,22.4 +2021-04-13T17:00,39.8,48,21.8,0,0,12.7,18.3 +2021-04-13T18:00,38,51,21.6,0,0,9.4,22.1 +2021-04-13T19:00,36.1,57,22.3,0,0.028,10.3,17.4 +2021-04-13T20:00,35.7,60,23.2,0,0,8.3,17.4 +2021-04-13T21:00,35.5,62,23.6,0,0.055,5.4,13.9 +2021-04-13T22:00,34.8,67,24.9,0,0.083,2.2,11 +2021-04-13T23:00,33.8,72,25.9,0,0.028,0.7,5.6 +2021-04-14T00:00,33.2,75,26.2,0,0,2,2.2 +2021-04-14T01:00,32.8,72,24.6,0,0,5.7,8.7 +2021-04-14T02:00,32.3,69,23.2,0,0,5.2,9.6 +2021-04-14T03:00,32.3,67,22.5,0,0,4.7,9.2 +2021-04-14T04:00,31.4,66,21.5,0,0,6.3,10.5 +2021-04-14T05:00,31,63,19.9,0,0,7.3,11.9 +2021-04-14T06:00,30.9,64,20.2,0,0,8,13.6 +2021-04-14T07:00,31.4,62,19.7,0,0,9.4,16.8 +2021-04-14T08:00,33,56,19.1,0,0,9.1,17.9 +2021-04-14T09:00,33.8,54,18.9,0,0,9.3,18.8 +2021-04-14T10:00,35.2,50,18.4,0,0,8.3,18.8 +2021-04-14T11:00,36.5,49,19,0,0,5.5,17.9 +2021-04-14T12:00,39.9,46,20.8,0,0,4,14.8 +2021-04-14T13:00,43,44,22.4,0,0,8.8,20.6 +2021-04-14T14:00,45.8,41,23.5,0,0,6.9,20.6 +2021-04-14T15:00,47.8,39,24.3,0,0,3.2,17.4 +2021-04-14T16:00,48.7,38,24.4,0,0,4.7,12.3 +2021-04-14T17:00,41.2,46,22.2,0,0,8.3,12.5 +2021-04-14T18:00,40,53,24.3,0.004,0,10.1,24.2 +2021-04-14T19:00,39.1,57,25.1,0,0,7.9,17.7 +2021-04-14T20:00,38.4,60,25.8,0,0,5,13.4 +2021-04-14T21:00,38,64,26.9,0,0,5.4,8.7 +2021-04-14T22:00,37,69,27.7,0,0,3.5,9.2 +2021-04-14T23:00,37,70,28,0,0,2.9,5.4 +2021-04-15T00:00,34.3,79,28.4,0,0,2.7,5.4 +2021-04-15T01:00,35,74,27.7,0,0,3.4,7.4 +2021-04-15T02:00,35.6,74,28,0,0,2.2,5.8 +2021-04-15T03:00,35.9,77,29.3,0,0,1.4,4.3 +2021-04-15T04:00,36.1,74,28.6,0,0,1.9,3.1 +2021-04-15T05:00,32.5,69,23.4,0,0,7.3,4.5 +2021-04-15T06:00,32.6,69,23.7,0,0,6.9,12.1 +2021-04-15T07:00,34.6,65,24.2,0,0,6.5,13.2 +2021-04-15T08:00,36.1,64,25.2,0,0,4.2,13.2 +2021-04-15T09:00,36.4,65,25.7,0,0,6.3,13.2 +2021-04-15T10:00,37.1,65,26.4,0,0,9.1,17.4 +2021-04-15T11:00,38.2,65,27.6,0,0,10.2,20.4 +2021-04-15T12:00,40.4,62,28.5,0,0,10,20.1 +2021-04-15T13:00,40.5,63,28.9,0,0,12.8,23.3 +2021-04-15T14:00,39.9,67,30,0.004,0,15.9,28 +2021-04-15T15:00,37.2,81,32,0.016,0.028,16.9,29.8 +2021-04-15T16:00,36.1,99,35.9,0.028,0.331,13.7,29.1 +2021-04-15T17:00,35,93,33.1,0.031,0.441,12.7,28 +2021-04-15T18:00,34.3,98,33.6,0.008,0.496,10.7,21 +2021-04-15T19:00,33.5,96,32.5,0.008,0.413,9.8,17.4 +2021-04-15T20:00,32.3,96,31.4,0,0.303,8.6,16.1 +2021-04-15T21:00,31.6,97,30.8,0,0.248,9.3,15.4 +2021-04-15T22:00,30.8,96,29.9,0,0.193,8.2,15.9 +2021-04-15T23:00,30.4,96,29.4,0,0.138,7.9,13.6 +2021-04-16T00:00,30.2,97,29.4,0,0.083,7.2,13 +2021-04-16T01:00,30,94,28.5,0,0.165,8.3,13.2 +2021-04-16T02:00,29.7,96,28.6,0,0.165,8.5,13.9 +2021-04-16T03:00,29.3,95,28,0,0.11,8.5,15.2 +2021-04-16T04:00,29.2,94,27.6,0,0.165,8.4,14.3 +2021-04-16T05:00,27.5,92,25.4,0,0.138,11.5,13.6 +2021-04-16T06:00,27.4,91,25.3,0,0.11,11,19 +2021-04-16T07:00,27.5,91,25.3,0,0.083,9.9,17.9 +2021-04-16T08:00,27.8,90,25.2,0,0.055,8.8,16.3 +2021-04-16T09:00,28.4,87,24.9,0,0.028,8.2,15 +2021-04-16T10:00,29.2,84,25.1,0,0.028,7.2,14.5 +2021-04-16T11:00,30.1,80,24.6,0,0,6.8,13 +2021-04-16T12:00,31.1,75,24,0,0,7.3,13.4 +2021-04-16T13:00,32.1,71,23.8,0,0,6.6,13.2 +2021-04-16T14:00,33.5,66,23.3,0,0,4.5,11.6 +2021-04-16T15:00,34.4,66,24.4,0,0,3.2,8.3 +2021-04-16T16:00,34.6,71,26.1,0,0.028,3.5,6.7 +2021-04-16T17:00,31.4,81,26.3,0,0,2.7,6.7 +2021-04-16T18:00,30.8,86,27.1,0,0.055,2.7,4.9 +2021-04-16T19:00,30.4,90,27.7,0,0.083,2.4,4.5 +2021-04-16T20:00,30.3,92,28.3,0,0.083,2.7,4.5 +2021-04-16T21:00,29.9,93,28,0,0.028,3.2,5.1 +2021-04-16T22:00,29.6,92,27.4,0,0.11,3.7,11.2 +2021-04-16T23:00,29.2,91,26.9,0,0.055,5.1,8.3 +2021-04-17T00:00,28.9,89,26.2,0,0.028,4.8,8.3 +2021-04-17T01:00,28.2,87,24.8,0,0,4.5,7.8 +2021-04-17T02:00,26.7,85,22.8,0,0,5,7.8 +2021-04-17T03:00,27.9,83,23.5,0,0,4.9,8.7 +2021-04-17T04:00,27.1,83,22.6,0,0,4.7,8.1 +2021-04-17T05:00,24.9,87,21.6,0,0,6,7.6 +2021-04-17T06:00,24.6,86,20.9,0,0,4.7,7.4 +2021-04-17T07:00,28,84,23.6,0,0,2.6,5.8 +2021-04-17T08:00,30.8,77,24.4,0,0,4.2,6.9 +2021-04-17T09:00,31.9,72,23.9,0,0,4.4,8.5 +2021-04-17T10:00,32.3,73,24.4,0,0,5.2,9.8 +2021-04-17T11:00,32.6,72,24.7,0,0,4.3,10.3 +2021-04-17T12:00,33.6,68,24.3,0,0,3.2,8.7 +2021-04-17T13:00,34.6,64,23.7,0,0,3.9,7.6 +2021-04-17T14:00,35.3,60,22.6,0,0,4.1,8.3 +2021-04-17T15:00,35.8,53,20.5,0,0,4.4,9.2 +2021-04-17T16:00,36,51,19.6,0,0,5.4,10.5 +2021-04-17T17:00,39,52,22.8,0,0,3.4,11.2 +2021-04-17T18:00,31.9,60,19.8,0,0,6.4,8.5 +2021-04-17T19:00,27.1,70,18.4,0,0,7.9,10.1 +2021-04-17T20:00,27.1,73,19.5,0,0,5.6,10.3 +2021-04-17T21:00,25.2,77,19,0,0,5.4,9.2 +2021-04-17T22:00,22.9,80,17.6,0,0,5.7,9.8 +2021-04-17T23:00,21.3,80,16,0,0,6,10.1 +2021-04-18T00:00,20.2,78,14.5,0,0,6.3,10.7 +2021-04-18T01:00,19.2,76,12.9,0,0,5.9,10.7 +2021-04-18T02:00,18.4,75,11.8,0,0,5.8,10.1 +2021-04-18T03:00,18.2,73,10.9,0,0,6.2,10.5 +2021-04-18T04:00,18.1,70,9.9,0,0,5.9,10.7 +2021-04-18T05:00,19.9,68,10.9,0,0,5.9,10.1 +2021-04-18T06:00,20.4,68,11.4,0,0,5.8,11 +2021-04-18T07:00,26.7,66,17,0,0,4.7,9.4 +2021-04-18T08:00,33.8,65,23.5,0,0,3.8,8.3 +2021-04-18T09:00,40.3,58,26.9,0,0,3.5,7.4 +2021-04-18T10:00,42.5,55,27.4,0,0,3.9,7.6 +2021-04-18T11:00,45.1,46,25.7,0,0,4.5,9.2 +2021-04-18T12:00,46.6,44,26,0,0,5,10.7 +2021-04-18T13:00,54.1,26,19.7,0,0,7.5,18.6 +2021-04-18T14:00,54.9,25,20,0,0,7.2,17.2 +2021-04-18T15:00,54.4,27,20.9,0,0,6.5,16.6 +2021-04-18T16:00,54,27,21,0,0,6.1,15.2 +2021-04-18T17:00,52.4,45,31.8,0,0,2.5,13.6 +2021-04-18T18:00,50.2,55,34.8,0,0,1.9,5.1 +2021-04-18T19:00,43.4,50,25.9,0,0,4.8,6.9 +2021-04-18T20:00,38.1,63,26.5,0,0,7.4,11.4 +2021-04-18T21:00,35.2,68,25.9,0,0,7.1,11.4 +2021-04-18T22:00,33.7,71,25.3,0,0,6.7,11.4 +2021-04-18T23:00,32.4,72,24.4,0,0,6.7,10.5 +2021-04-19T00:00,30.2,75,23.2,0,0,5.6,10.5 +2021-04-19T01:00,28.8,74,21.7,0,0,5.7,8.9 +2021-04-19T02:00,29,69,20.2,0,0,5.9,9.4 +2021-04-19T03:00,29.2,67,19.5,0,0,5.6,9.2 +2021-04-19T04:00,29.2,66,19.1,0,0,5.8,8.7 +2021-04-19T05:00,27.5,75,20.5,0,0,5.1,11.4 +2021-04-19T06:00,33.1,64,22.2,0,0,9.9,14.8 +2021-04-19T07:00,34.3,70,25.5,0,0,17.1,28.4 +2021-04-19T08:00,34.2,79,28.2,0,0,13.7,29.1 +2021-04-19T09:00,33.1,82,28.3,0,0,7.3,24.8 +2021-04-19T10:00,33.4,83,28.7,0,0.028,7.8,15.9 +2021-04-19T11:00,33.2,82,28.3,0,0.028,8.2,16.8 +2021-04-19T12:00,34.4,78,28.3,0,0,8.9,17.9 +2021-04-19T13:00,34.5,76,27.6,0,0.028,10.1,19 +2021-04-19T14:00,35.5,71,27,0,0.028,10.7,21 +2021-04-19T15:00,34.3,70,25.7,0,0.028,9.2,20.6 +2021-04-19T16:00,33.6,69,24.6,0,0.11,8.7,17.7 +2021-04-19T17:00,27.9,74,20.8,0,0.138,5.7,16.1 +2021-04-19T18:00,27.2,79,21.6,0,0.22,6.9,13 +2021-04-19T19:00,25.6,88,22.6,0,0.469,5.7,15 +2021-04-19T20:00,25.4,89,22.6,0,0.579,3.7,13 +2021-04-19T21:00,25.1,91,22.8,0.004,0.441,7.5,11.4 +2021-04-19T22:00,23,91,20.8,0,0.496,12.2,21.5 +2021-04-19T23:00,20.5,85,16.8,0,0.193,11.3,20.4 +2021-04-20T00:00,19.7,85,15.9,0,0.055,6.5,18.8 +2021-04-20T01:00,18.2,85,14.4,0,0.028,3.6,10.7 +2021-04-20T02:00,14.5,84,10.6,0,0,5.2,6.5 +2021-04-20T03:00,14.5,80,9.5,0,0,3.5,6.5 +2021-04-20T04:00,9.6,84,5.8,0,0,5.8,6.9 +2021-04-20T05:00,11.8,80,6.9,0,0,6.1,9.4 +2021-04-20T06:00,10.6,79,5.5,0,0,6.3,10.3 +2021-04-20T07:00,12.8,78,7.2,0,0,5.1,9.2 +2021-04-20T08:00,19.7,71,11.7,0,0,3,7.2 +2021-04-20T09:00,23.6,62,12.4,0,0,5.7,9.8 +2021-04-20T10:00,25.8,48,8.9,0,0,4.9,10.1 +2021-04-20T11:00,26.8,40,5.8,0,0,1.8,9.2 +2021-04-20T12:00,27.3,40,6.1,0,0,1.8,6 +2021-04-20T13:00,28.5,41,8,0,0,3.4,8.1 +2021-04-20T14:00,30,43,10.3,0,0,4.6,9.2 +2021-04-20T15:00,30.7,46,12.3,0,0,4.3,9.2 +2021-04-20T16:00,30.3,50,13.8,0,0,3.2,7.8 +2021-04-20T17:00,26.8,65,16.4,0,0,3.9,6.3 +2021-04-20T18:00,22.1,75,15.4,0,0,4.2,6.7 +2021-04-20T19:00,19.7,77,13.7,0,0,5.4,7.2 +2021-04-20T20:00,18.7,78,13,0,0,5.4,7.6 +2021-04-20T21:00,21.6,77,15.4,0,0,1.6,6.9 +2021-04-20T22:00,19.2,81,14.5,0,0,3.2,4.5 +2021-04-20T23:00,21.8,77,15.8,0,0,1.4,4.5 +2021-04-21T00:00,22.1,78,16.3,0,0,1.1,2.5 +2021-04-21T01:00,22,79,16.6,0,0,0.9,1.8 +2021-04-21T02:00,20.9,81,15.9,0,0,1.7,2.7 +2021-04-21T03:00,18.7,84,14.7,0,0,3.2,4.5 +2021-04-21T04:00,19,84,14.9,0,0,2,4.7 +2021-04-21T05:00,22.3,87,19,0,0,0.9,3.4 +2021-04-21T06:00,23.5,86,19.9,0,0.028,2.7,4.3 +2021-04-21T07:00,25.1,87,21.7,0,0.028,5.5,8.7 +2021-04-21T08:00,26,87,22.6,0,0,7.1,12.8 +2021-04-21T09:00,26.6,89,23.8,0,0,7.2,13.6 +2021-04-21T10:00,26.7,92,24.6,0,0,7.2,14.1 +2021-04-21T11:00,27,87,23.7,0,0,7.2,13.9 +2021-04-21T12:00,28.1,84,24,0,0,6.1,14.1 +2021-04-21T13:00,29.3,82,24.4,0,0.028,6.6,12.8 +2021-04-21T14:00,30.4,80,24.9,0,0.028,6.5,13.2 +2021-04-21T15:00,31,80,25.5,0,0.055,5.9,12.3 +2021-04-21T16:00,30.7,83,26.1,0,0.055,6,11.2 +2021-04-21T17:00,29.7,88,26.5,0,0.055,5.4,11.4 +2021-04-21T18:00,28.8,90,26.3,0,0.11,3.1,9.4 +2021-04-21T19:00,28.3,93,26.6,0,0.055,0.7,5.6 +2021-04-21T20:00,27.7,94,26.2,0,0.055,2,3.4 +2021-04-21T21:00,27.4,94,26,0,0,2.6,4.3 +2021-04-21T22:00,26.3,95,25.1,0,0.11,3.8,21 +2021-04-21T23:00,26.7,94,25.3,0,0.055,2.6,18.6 +2021-04-22T00:00,25.3,92,23.3,0,0.083,2.3,12.8 +2021-04-22T01:00,21.3,96,20.2,0,0,4.9,7.6 +2021-04-22T02:00,22.2,97,21.4,0,0,5.8,10.5 +2021-04-22T03:00,21.1,98,20.8,0,0,5.4,9.8 +2021-04-22T04:00,21.7,96,20.7,0,0,3.4,9.2 +2021-04-22T05:00,25.4,89,22.6,0,0,0.5,4.7 +2021-04-22T06:00,23.5,94,22,0,0,2,2 +2021-04-22T07:00,24.9,93,23.3,0,0,3.3,6.5 +2021-04-22T08:00,25.7,95,24.5,0,0,2.5,6.7 +2021-04-22T09:00,26.9,91,24.6,0,0,2.6,7.8 +2021-04-22T10:00,29,88,25.8,0,0,3.8,8.5 +2021-04-22T11:00,31,86,27.4,0,0,6.5,12.3 +2021-04-22T12:00,33.9,77,27.6,0,0.028,3.8,12.3 +2021-04-22T13:00,35.3,76,28.5,0,0.055,2.7,7.6 +2021-04-22T14:00,37.3,76,30.5,0,0,1.9,8.7 +2021-04-22T15:00,40,59,26.9,0,0,1.3,6 +2021-04-22T16:00,41.3,59,27.9,0,0,1.6,5.8 +2021-04-22T17:00,41.1,80,35.2,0.004,0,1.9,3.8 +2021-04-22T18:00,36.1,85,32.1,0,0,3.9,19.2 +2021-04-22T19:00,32.9,89,30,0,0,4.5,7.6 +2021-04-22T20:00,28.5,92,26.5,0,0,6,8.1 +2021-04-22T21:00,29.6,92,27.6,0,0,7,8.7 +2021-04-22T22:00,29.5,92,27.3,0,0,6.4,8.9 +2021-04-22T23:00,28,91,25.9,0,0,6.8,8.7 +2021-04-23T00:00,25.4,92,23.4,0,0,7.5,9.6 +2021-04-23T01:00,23.5,92,21.7,0,0,7.4,9.2 +2021-04-23T02:00,22.6,92,20.5,0,0,7.5,9.8 +2021-04-23T03:00,22.3,91,20,0,0,7.5,9.6 +2021-04-23T04:00,23.4,88,20.4,0,0,7,9.6 +2021-04-23T05:00,30.2,76,23.6,0,0,3.2,8.7 +2021-04-23T06:00,30.9,75,23.8,0,0,2.8,4 +2021-04-23T07:00,30.5,79,24.8,0,0,3.7,6.3 +2021-04-23T08:00,38.1,62,26.4,0,0,1.5,5.8 +2021-04-23T09:00,41.3,51,24.5,0,0,1.4,2.7 +2021-04-23T10:00,41.1,63,29.3,0,0,2.7,4.5 +2021-04-23T11:00,47.9,39,24.4,0,0,5.6,14.8 +2021-04-23T12:00,50.2,37,25,0,0,6.1,15.7 +2021-04-23T13:00,51.4,37,25.9,0,0,2.9,15.7 +2021-04-23T14:00,52.9,35,25.7,0,0,2.1,11.4 +2021-04-23T15:00,54.1,32,24.9,0,0,6.2,13.9 +2021-04-23T16:00,52.3,34,24.5,0,0,11,19.7 +2021-04-23T17:00,50.9,40,27.4,0,0,7.9,19.9 +2021-04-23T18:00,48.2,50,30.6,0,0,4.5,14.3 +2021-04-23T19:00,42.2,55,27,0,0,7.5,11.2 +2021-04-23T20:00,38.8,61,26.7,0,0,4.8,12.8 +2021-04-23T21:00,37.9,66,27.5,0,0,4.7,7.6 +2021-04-23T22:00,36.1,73,28.1,0,0,5.1,7.6 +2021-04-23T23:00,32.5,80,27.1,0,0,2.3,7.4 +2021-04-24T00:00,28.9,88,25.7,0,0,2.7,4.7 +2021-04-24T01:00,27.3,88,24.4,0,0,3,5.4 +2021-04-24T02:00,25.9,89,23.2,0,0,2.3,4.5 +2021-04-24T03:00,25.5,85,21.7,0,0,1.8,3.1 +2021-04-24T04:00,24.9,82,20.1,0,0,2.2,3.8 +2021-04-24T05:00,22.9,87,19.5,0,0,2.6,3.8 +2021-04-24T06:00,27.3,77,20.9,0,0,3.3,6.7 +2021-04-24T07:00,33.4,75,26.2,0,0,1.4,7.6 +2021-04-24T08:00,35.7,80,30.1,0,0,1.8,8.7 +2021-04-24T09:00,39.7,74,32.2,0,0,3,11 +2021-04-24T10:00,45.3,62,33.1,0,0,2.7,11.6 +2021-04-24T11:00,51.9,49,33.4,0,0,3,11.9 +2021-04-24T12:00,57.7,39,33.2,0,0,2.8,12.1 +2021-04-24T13:00,60.9,32,30.5,0,0,3.9,11.9 +2021-04-24T14:00,64.6,21,24.2,0,0,4.8,13 +2021-04-24T15:00,66.2,19,22.2,0,0,5.3,13 +2021-04-24T16:00,66,19,22.4,0,0,6.1,13.2 +2021-04-24T17:00,62.7,38,36.5,0,0,8.8,13 +2021-04-24T18:00,56.8,53,39.9,0,0,7.4,15.9 +2021-04-24T19:00,49.4,60,36.1,0,0,4.7,12.3 +2021-04-24T20:00,46,57,31.5,0,0,4.5,7.2 +2021-04-24T21:00,41.7,66,31.2,0,0,3.4,7.2 +2021-04-24T22:00,39.4,73,31.6,0,0,3.3,6 +2021-04-24T23:00,37.4,81,32.2,0,0,2.1,5.8 +2021-04-25T00:00,35.1,88,31.9,0,0,1.8,4.5 +2021-04-25T01:00,33.1,93,31.2,0,0,2.7,4 +2021-04-25T02:00,32.2,91,29.9,0,0,5.4,6.3 +2021-04-25T03:00,32.1,87,28.7,0,0,5.3,6.7 +2021-04-25T04:00,31.7,86,28,0,0,4.6,6.7 +2021-04-25T05:00,30.9,87,27.4,0,0,4.1,6.5 +2021-04-25T06:00,34.9,77,28.3,0,0,5.1,8.1 +2021-04-25T07:00,44.7,57,30.5,0,0,3.1,8.9 +2021-04-25T08:00,54.6,43,32.5,0,0,3.6,9.6 +2021-04-25T09:00,62.8,34,34.2,0,0,6.5,13.6 +2021-04-25T10:00,67.3,24,29.5,0,0,8.3,17.9 +2021-04-25T11:00,69.4,23,29.8,0,0,6.4,17.4 +2021-04-25T12:00,71,23,30.9,0,0,4.4,15.4 +2021-04-25T13:00,72.3,22,31.6,0,0,3,12.8 +2021-04-25T14:00,73.3,22,31.7,0,0,2.9,11.2 +2021-04-25T15:00,73.8,23,33.7,0,0,6.5,14.3 +2021-04-25T16:00,72.5,27,36.8,0,0,8.6,16.6 +2021-04-25T17:00,73.5,22,32.1,0,0,0.5,16.8 +2021-04-25T18:00,70.8,25,33.6,0,0,1.6,3.4 +2021-04-25T19:00,56,51,38.1,0,0,8.3,8.7 +2021-04-25T20:00,52.8,44,31.5,0,0,8.6,14.1 +2021-04-25T21:00,52.9,32,23.9,0,0,8.9,14.5 +2021-04-25T22:00,49.6,35,22.9,0,0,6.5,14.5 +2021-04-25T23:00,45.6,44,24.8,0,0,5.9,10.1 +2021-04-26T00:00,43.8,48,25.4,0,0,5.9,9.4 +2021-04-26T01:00,44.5,44,23.9,0,0,9.2,14.3 +2021-04-26T02:00,45.9,39,22.6,0,0,10.7,17.7 +2021-04-26T03:00,45.4,39,21.7,0,0,9.9,17.7 +2021-04-26T04:00,41.6,47,22.7,0,0,8.8,16.3 +2021-04-26T05:00,40.9,49,23.4,0,0,8.7,14.5 +2021-04-26T06:00,43,48,24.8,0,0,9.2,14.5 +2021-04-26T07:00,51.6,40,28,0,0,9,15.4 +2021-04-26T08:00,60.4,31,29.5,0,0,8.3,15.9 +2021-04-26T09:00,65.6,24,28,0,0,9.2,17.9 +2021-04-26T10:00,69.2,19,25.4,0,0,10.3,20.6 +2021-04-26T11:00,71.1,16,22.7,0,0,5.7,20.4 +2021-04-26T12:00,72.8,15,22.6,0,0,3.3,14.5 +2021-04-26T13:00,74,13,20.4,0,0,3.4,11.4 +2021-04-26T14:00,74.9,11,17.3,0,0,8.1,16.6 +2021-04-26T15:00,74.5,11,15.6,0,0,14.8,26.2 +2021-04-26T16:00,73.1,12,17.7,0,0,16.5,29.1 +2021-04-26T17:00,70,22,28.9,0,0,5.2,28.6 +2021-04-26T18:00,64.2,51,45.5,0,0,4.9,9.4 +2021-04-26T19:00,64.6,30,32.3,0,0,1.3,6 +2021-04-26T20:00,53.7,43,31.8,0,0,7.1,9.8 +2021-04-26T21:00,58,25,22,0,0,4,9.8 +2021-04-26T22:00,56.5,27,22.8,0,0,1.3,5.4 +2021-04-26T23:00,47.8,46,28.1,0,0,5.5,8.3 +2021-04-27T00:00,44.2,53,28.1,0,0,6.3,10.5 +2021-04-27T01:00,40.2,65,29.2,0,0,5,10.5 +2021-04-27T02:00,42.6,56,28,0,0,2.5,6.5 +2021-04-27T03:00,39.6,67,29.6,0,0,4.5,5.6 +2021-04-27T04:00,41.5,60,28.5,0,0,6,7.2 +2021-04-27T05:00,38.8,66,28.3,0,0,4,7.2 +2021-04-27T06:00,42.7,63,30.9,0,0,5.6,8.3 +2021-04-27T07:00,49.2,49,31,0,0,4.6,8.7 +2021-04-27T08:00,49.6,61,36.5,0,0,13.2,24.2 +2021-04-27T09:00,51.2,62,38.7,0.004,0,8.3,23 +2021-04-27T10:00,51.4,65,39.9,0.004,0,6.9,16.3 +2021-04-27T11:00,52.5,65,41.3,0.016,0,3.5,15 +2021-04-27T12:00,54,66,43,0.02,0,3.8,13 +2021-04-27T13:00,49.1,76,42,0.118,0,5.6,15 +2021-04-27T14:00,49.8,76,42.6,0.024,0,4.7,19.5 +2021-04-27T15:00,54.5,62,41.8,0,0,2.1,14.8 +2021-04-27T16:00,52.8,67,42.2,0.004,0,3.2,11.4 +2021-04-27T17:00,44.1,87,40.6,0.075,0,14.1,15 +2021-04-27T18:00,43.6,91,41.2,0.051,0,15.2,28.2 +2021-04-27T19:00,43.2,91,40.6,0.039,0,11.7,25.9 +2021-04-27T20:00,42.4,91,39.8,0.047,0,12.9,21.9 +2021-04-27T21:00,41.5,93,39.5,0.059,0,13.3,22.8 +2021-04-27T22:00,40.5,95,39.1,0.043,0,12.2,21.9 +2021-04-27T23:00,40.1,94,38.5,0.039,0,13.3,23.3 +2021-04-28T00:00,39.7,95,38.3,0.039,0,11.4,22.4 +2021-04-28T01:00,39.2,96,38,0.035,0,9.4,19.2 +2021-04-28T02:00,38.9,95,37.7,0.031,0,9.8,16.8 +2021-04-28T03:00,38.3,97,37.4,0.051,0,8.2,16.8 +2021-04-28T04:00,37.7,98,37.2,0.087,0,6.8,14.1 +2021-04-28T05:00,39.7,90,37,0.059,0,9.3,14.3 +2021-04-28T06:00,40,93,38.1,0.047,0,6.3,16.3 +2021-04-28T07:00,41.2,92,38.9,0.031,0,4.5,15.4 +2021-04-28T08:00,42.4,90,39.6,0.028,0,4.2,7.8 +2021-04-28T09:00,43.1,88,39.8,0.031,0,6.9,11.4 +2021-04-28T10:00,44.8,79,38.8,0.016,0,8,14.5 +2021-04-28T11:00,46.2,73,38.1,0,0,6.3,15 +2021-04-28T12:00,50.2,57,35.6,0,0,6.8,16.1 +2021-04-28T13:00,54.3,43,32.2,0,0,4.3,15 +2021-04-28T14:00,59.2,29,27.1,0,0,12.1,21.9 +2021-04-28T15:00,58.4,29,26.5,0,0,12.8,25.7 +2021-04-28T16:00,58.1,30,26.7,0,0,11.4,23.7 +2021-04-28T17:00,56.9,36,30.1,0,0,6.7,21.3 +2021-04-28T18:00,54.1,49,35.2,0,0,3,11.6 +2021-04-28T19:00,49.6,51,32.3,0,0,5.6,8.3 +2021-04-28T20:00,45.4,63,33.4,0,0,6.3,11.2 +2021-04-28T21:00,40.2,77,33.4,0,0,5.6,10.1 +2021-04-28T22:00,38.7,78,32.3,0,0,5.7,7.4 +2021-04-28T23:00,37,79,31.1,0,0,6.2,7.4 +2021-04-29T00:00,36.3,78,30.1,0,0,4.6,7.4 +2021-04-29T01:00,34.9,80,29.3,0,0,5.2,6.7 +2021-04-29T02:00,34.3,78,28.1,0,0,5.7,6.9 +2021-04-29T03:00,33.9,76,27.1,0,0,6.2,7.2 +2021-04-29T04:00,34.2,72,26.1,0,0,5.8,7.4 +2021-04-29T05:00,38.4,59,25.4,0,0,3.4,6.7 +2021-04-29T06:00,38.8,61,26.5,0,0,1.8,4 +2021-04-29T07:00,45.1,56,30.2,0,0,1.2,5.8 +2021-04-29T08:00,52.3,45,31.6,0,0,0.3,6.9 +2021-04-29T09:00,56.8,37,30.8,0,0,2.9,10.3 +2021-04-29T10:00,59.8,34,31,0,0,2.4,10.7 +2021-04-29T11:00,62.2,30,30.4,0,0,3.4,11.6 +2021-04-29T12:00,64,28,30,0,0,3.8,12.8 +2021-04-29T13:00,65.1,28,31.1,0,0,4.1,13 +2021-04-29T14:00,65.8,29,32.3,0,0,3.5,13 +2021-04-29T15:00,66.2,29,32.6,0,0,2.2,11.9 +2021-04-29T16:00,66.4,29,33.1,0,0,2.7,9.8 +2021-04-29T17:00,66.2,30,33.5,0,0,1.8,9.2 +2021-04-29T18:00,62.1,62,48.8,0,0,2.9,5.4 +2021-04-29T19:00,60.5,42,37.3,0,0,3.6,5.4 +2021-04-29T20:00,55.4,52,37.9,0,0,3.1,4.3 +2021-04-29T21:00,46.5,75,38.9,0,0,3.5,6 +2021-04-29T22:00,42.8,85,38.5,0,0,1.9,5.1 +2021-04-29T23:00,40.9,88,37.8,0,0,3.1,4.3 +2021-04-30T00:00,40,87,36.4,0,0,4.2,6.7 +2021-04-30T01:00,40.5,76,33.4,0,0,5.1,8.3 +2021-04-30T02:00,40.3,71,31.7,0,0,4.9,8.9 +2021-04-30T03:00,39.6,70,30.6,0,0,4.4,8.1 +2021-04-30T04:00,39,69,29.8,0,0,4.1,6.9 +2021-04-30T05:00,41.4,62,29.1,0,0,4,6.5 +2021-04-30T06:00,44.5,58,30.7,0,0,4.3,6 +2021-04-30T07:00,51.4,55,35.5,0,0,4.1,9.4 +2021-04-30T08:00,60.4,46,39.5,0,0,2.7,9.4 +2021-04-30T09:00,66.7,31,35.3,0,0,2.1,9.2 +2021-04-30T10:00,69.5,25,32.2,0,0,2.5,9.8 +2021-04-30T11:00,71.2,24,32.5,0,0,2.8,10.7 +2021-04-30T12:00,72.8,24,33.6,0,0,3.2,11.2 +2021-04-30T13:00,74.3,23,34.3,0,0,4.3,12.5 +2021-04-30T14:00,75.6,22,34.2,0,0,5.1,13.4 +2021-04-30T15:00,76.4,21,34.1,0,0,4.8,13.2 +2021-04-30T16:00,76.5,22,34.4,0,0,5.1,12.1 +2021-04-30T17:00,75.7,25,37,0,0,6.6,11.4 +2021-04-30T18:00,69.9,53,52,0,0,4.9,11 +2021-04-30T19:00,64,44,41.5,0,0,5.8,7.2 +2021-04-30T20:00,55.1,63,42.7,0,0,4.6,7.8 +2021-04-30T21:00,50.7,73,42.4,0,0,4.3,6.7 +2021-04-30T22:00,49.5,69,39.7,0,0,5,8.5 +2021-04-30T23:00,48.4,64,36.9,0,0,4.6,8.1 +2021-05-01T00:00,47.3,61,34.3,0,0,4.6,7.4 +2021-05-01T01:00,46.9,57,32.4,0,0,4.8,7.6 +2021-05-01T02:00,45.8,58,31.9,0,0,4.8,7.6 +2021-05-01T03:00,45.3,58,31.4,0,0,4.9,7.6 +2021-05-01T04:00,44.3,58,30.5,0,0,6.4,8.1 +2021-05-01T05:00,44.4,60,31.3,0,0,5.9,8.1 +2021-05-01T06:00,50.5,53,33.8,0,0,4.4,7.6 +2021-05-01T07:00,58.8,44,36.7,0,0,4.6,9.4 +2021-05-01T08:00,67.8,38,41,0,0,3.3,9.2 +2021-05-01T09:00,74.7,32,42.9,0,0,2.2,9.2 +2021-05-01T10:00,79,20,34.4,0,0,2.1,8.7 +2021-05-01T11:00,80.8,16,30.5,0,0,5.4,13 +2021-05-01T12:00,81.6,15,29,0,0,7.1,15.7 +2021-05-01T13:00,81.5,14,28.3,0,0,7.9,16.6 +2021-05-01T14:00,81.6,14,28.2,0,0,7.4,16.3 +2021-05-01T15:00,81.3,14,28.2,0,0,6.7,15.7 +2021-05-01T16:00,81,14,27.9,0,0,3.8,14.3 +2021-05-01T17:00,74.5,32,42.5,0,0,8.2,7.8 +2021-05-01T18:00,69.3,41,44.2,0,0,4.7,13.9 +2021-05-01T19:00,62.7,51,44.2,0,0,4.8,7.8 +2021-05-01T20:00,61.1,47,40.8,0,0,4,9.4 +2021-05-01T21:00,59.4,52,41.6,0,0,1.9,6.5 +2021-05-01T22:00,55.1,52,38,0,0,4.7,8.7 +2021-05-01T23:00,53.5,56,38.2,0,0,4.1,7.8 +2021-05-02T00:00,52.7,51,34.9,0,0,4.7,7.8 +2021-05-02T01:00,50.2,55,34.7,0,0,5.9,7.6 +2021-05-02T02:00,48.1,57,33.8,0,0,3.4,7.2 +2021-05-02T03:00,47.1,61,34.4,0,0,4,6 +2021-05-02T04:00,44.1,72,35.8,0,0,5.2,6.3 +2021-05-02T05:00,50.8,64,39.2,0,0,6.1,7.4 +2021-05-02T06:00,53.2,64,41.3,0,0,3.3,7.4 +2021-05-02T07:00,57.7,56,42.1,0,0,4.9,10.5 +2021-05-02T08:00,60.7,52,42.9,0,0,4,11 +2021-05-02T09:00,63.3,47,42.7,0,0,3.5,11.4 +2021-05-02T10:00,65.9,43,43.1,0,0,3.5,12.3 +2021-05-02T11:00,63.4,51,44.8,0.016,0,4,13.2 +2021-05-02T12:00,64,49,44.2,0.004,0,4,16.8 +2021-05-02T13:00,57.1,66,45.9,0.008,0,8.3,17 +2021-05-02T14:00,57.2,68,46.8,0,0,7.1,18.1 +2021-05-02T15:00,60.4,58,45.6,0.004,0,2,14.3 +2021-05-02T16:00,55,74,46.9,0.201,0,9.4,17.4 +2021-05-02T17:00,60.7,44,38.7,0.035,0,14.1,18.8 +2021-05-02T18:00,54.4,65,43,0.004,0,16.3,28.2 +2021-05-02T19:00,51,76,43.5,0.028,0,14.8,29.3 +2021-05-02T20:00,49.8,87,46.1,0.035,0,7.5,24.2 +2021-05-02T21:00,49.4,87,45.8,0.043,0,6.5,20.1 +2021-05-02T22:00,48.8,89,45.6,0.051,0,7.5,17.2 +2021-05-02T23:00,47.3,93,45.3,0.059,0,10.7,17.4 +2021-05-03T00:00,46.5,94,44.9,0.114,0,11.2,18.6 +2021-05-03T01:00,45,93,43.2,0.161,0,16.2,27.1 +2021-05-03T02:00,43.6,95,42.4,0.126,0,12.1,27.5 +2021-05-03T03:00,42.6,96,41.6,0.087,0,12,22.1 +2021-05-03T04:00,41.5,96,40.6,0.079,0,11.5,21.5 +2021-05-03T05:00,41.2,90,38.5,0.083,0,7.3,20.6 +2021-05-03T06:00,41,96,39.8,0.055,0,6.3,15.7 +2021-05-03T07:00,41,95,39.7,0.028,0,6.5,15.4 +2021-05-03T08:00,40.6,94,39.1,0.024,0,7.8,15.7 +2021-05-03T09:00,40.6,96,39.4,0.035,0,6,15.4 +2021-05-03T10:00,40.8,94,39.1,0.039,0,6.3,13 +2021-05-03T11:00,41.4,98,40.8,0.028,0,8.8,16.6 +2021-05-03T12:00,42.5,89,39.7,0.02,0,10.6,20.1 +2021-05-03T13:00,40.8,94,39.1,0.039,0,10.7,20.8 +2021-05-03T14:00,42.6,88,39.2,0.02,0,7.8,19.5 +2021-05-03T15:00,42.9,83,37.9,0.008,0,7.4,18.6 +2021-05-03T16:00,43.8,73,35.9,0.008,0,7.2,17.4 +2021-05-03T17:00,39.9,96,38.8,0.012,0,8.7,15 +2021-05-03T18:00,39.8,97,39.1,0.035,0,5.1,15.4 +2021-05-03T19:00,39.6,91,37.1,0.02,0,5.6,15.9 +2021-05-03T20:00,39.4,91,37,0.016,0,5.6,9.8 +2021-05-03T21:00,36.5,99,36.3,0.055,0,6.5,13.2 +2021-05-03T22:00,36.1,99,35.8,0.035,0,3,11.9 +2021-05-03T23:00,36.6,95,35.2,0.004,0,0.9,7.4 +2021-05-04T00:00,37,93,35.3,0,0,0.5,3.6 +2021-05-04T01:00,36.9,95,35.6,0,0,1.1,2 +2021-05-04T02:00,36.1,98,35.5,0,0,2.4,4.3 +2021-05-04T03:00,36.7,97,35.9,0,0,3.4,6.3 +2021-05-04T04:00,36.7,95,35.3,0,0,2.9,6.3 +2021-05-04T05:00,35.2,97,34.3,0,0,3.2,5.8 +2021-05-04T06:00,37.3,93,35.4,0,0,1.1,4 +2021-05-04T07:00,39.1,86,35.2,0,0,0.6,5.4 +2021-05-04T08:00,42.4,75,35.2,0,0,1.1,7.8 +2021-05-04T09:00,46.2,67,35.8,0,0,0.3,8.5 +2021-05-04T10:00,50.2,60,36.7,0,0,1.3,9.6 +2021-05-04T11:00,53.8,53,37,0,0,2.4,11.2 +2021-05-04T12:00,55.9,48,36.2,0,0,3.5,11.9 +2021-05-04T13:00,58,42,35.1,0,0,3.8,13.4 +2021-05-04T14:00,59,38,33.6,0,0,6.5,14.5 +2021-05-04T15:00,55,55,39.1,0,0,11.2,21 +2021-05-04T16:00,56.5,47,36.5,0,0,5.4,20.8 +2021-05-04T17:00,55.2,57,40.2,0,0,2.9,12.5 +2021-05-04T18:00,52.4,63,40.2,0.004,0,0.7,16.6 +2021-05-04T19:00,48.3,76,41.2,0,0,3,3.8 +2021-05-04T20:00,45,87,41.4,0,0,4.2,6.5 +2021-05-04T21:00,43.1,91,40.6,0,0,3.9,6.9 +2021-05-04T22:00,42.6,90,39.8,0,0,5,7.6 +2021-05-04T23:00,42.1,90,39.4,0,0,4.9,10.3 +2021-05-05T00:00,39.9,95,38.6,0,0,2.8,8.3 +2021-05-05T01:00,37.3,96,36.3,0,0,3,5.8 +2021-05-05T02:00,38.2,96,37,0,0,3,5.8 +2021-05-05T03:00,37.1,93,35.3,0,0,3.2,5.4 +2021-05-05T04:00,35.4,89,32.6,0,0,4,5.8 +2021-05-05T05:00,35.8,94,34.3,0,0,2.2,5.6 +2021-05-05T06:00,38,89,35.2,0,0,3.2,6.7 +2021-05-05T07:00,43.3,77,36.7,0,0,2.8,7.6 +2021-05-05T08:00,47.2,71,38.1,0,0,5.4,12.8 +2021-05-05T09:00,50.8,67,40.4,0,0,7.5,16.6 +2021-05-05T10:00,52.7,63,40.4,0,0,5,18.8 +2021-05-05T11:00,55.1,53,38.1,0,0,4.9,17.2 +2021-05-05T12:00,53.7,56,38.2,0.039,0,4.9,15 +2021-05-05T13:00,56.8,49,37.9,0,0,3.7,13.9 +2021-05-05T14:00,55.3,53,38.3,0.004,0,10.5,18.8 +2021-05-05T15:00,54.4,56,39.2,0,0,10.1,24.8 +2021-05-05T16:00,56.3,49,37.1,0,0,5.5,20.1 +2021-05-05T17:00,55.3,54,39.1,0,0,1.8,13.2 +2021-05-05T18:00,54.6,56,39.1,0,0,0.9,7.4 +2021-05-05T19:00,48.5,72,39.7,0,0,4.1,6.3 +2021-05-05T20:00,45.7,79,39.6,0,0,5.1,8.3 +2021-05-05T21:00,42.5,86,38.8,0,0,4.3,8.3 +2021-05-05T22:00,39.9,91,37.5,0,0,3.9,6.9 +2021-05-05T23:00,37.9,95,36.6,0,0,4,6 +2021-05-06T00:00,36.4,97,35.6,0,0,3.9,5.6 +2021-05-06T01:00,35.4,93,33.5,0,0,2.2,5.1 +2021-05-06T02:00,35.8,84,31.6,0,0,3.5,5.4 +2021-05-06T03:00,36.4,82,31.5,0,0,4.2,6.5 +2021-05-06T04:00,36.1,83,31.6,0,0,4.7,7.4 +2021-05-06T05:00,38.8,75,31.6,0,0,1.4,6 +2021-05-06T06:00,39.6,73,31.7,0,0,2.9,6 +2021-05-06T07:00,43.3,70,34.1,0,0,1,6.3 +2021-05-06T08:00,46.5,68,36.4,0,0,2.5,9.6 +2021-05-06T09:00,50.7,61,37.8,0,0,3.4,11.2 +2021-05-06T10:00,55,55,39,0,0,4.2,13 +2021-05-06T11:00,58.5,50,39.7,0,0,4,13.2 +2021-05-06T12:00,61.7,44,39.6,0,0,5.1,14.1 +2021-05-06T13:00,64.6,39,39.3,0,0,6.5,15.9 +2021-05-06T14:00,66.6,38,39.8,0,0,6.6,16.3 +2021-05-06T15:00,67.8,35,39.4,0,0,6.8,15.7 +2021-05-06T16:00,68,34,38.9,0,0,7.2,15.4 +2021-05-06T17:00,69.1,31,37.5,0,0,6.7,15 +2021-05-06T18:00,64.9,43,41.7,0,0,7.4,13 +2021-05-06T19:00,60.3,46,39.4,0,0,7.9,13.2 +2021-05-06T20:00,56.3,57,41.3,0,0,5.1,13 +2021-05-06T21:00,48.8,80,43,0,0,3.3,8.3 +2021-05-06T22:00,45.4,87,41.7,0,0,3.8,6.3 +2021-05-06T23:00,44.1,87,40.4,0,0,3.7,6.3 +2021-05-07T00:00,41.9,90,39.3,0,0,2.9,5.4 +2021-05-07T01:00,40.4,88,37.2,0,0,3.4,4.7 +2021-05-07T02:00,39.6,83,34.9,0,0,5.3,6.3 +2021-05-07T03:00,39.2,80,33.5,0,0,5,6.5 +2021-05-07T04:00,38.7,78,32.5,0,0,4.8,6 +2021-05-07T05:00,38.5,75,31.3,0,0,5.2,6.5 +2021-05-07T06:00,43.7,63,32.1,0,0,5,7.8 +2021-05-07T07:00,51.4,57,36.6,0,0,3.5,9.2 +2021-05-07T08:00,61.5,48,41.5,0,0,3.6,9.6 +2021-05-07T09:00,70.6,33,40.5,0,0,4.2,11 +2021-05-07T10:00,76.8,21,33.6,0,0,5.7,13 +2021-05-07T11:00,79.3,16,29.3,0,0,6.9,15.2 +2021-05-07T12:00,80.2,16,30.1,0,0,9.1,17.9 +2021-05-07T13:00,79.4,16,29.5,0,0,7,18.3 +2021-05-07T14:00,77.8,17,30.1,0,0,2.6,14.5 +2021-05-07T15:00,79,17,30.6,0,0,7.8,14.1 +2021-05-07T16:00,75.8,23,35.3,0,0,9.3,17.4 +2021-05-07T17:00,75,30,41.7,0,0,7.3,15.7 +2021-05-07T18:00,68.8,51,50.1,0,0,5.7,12.1 +2021-05-07T19:00,63.4,48,43.3,0,0,6.3,9.6 +2021-05-07T20:00,55,70,45.3,0,0,5.7,9.4 +2021-05-07T21:00,52,67,41.5,0,0,4.8,7.8 +2021-05-07T22:00,49.9,63,37.9,0,0,4.3,6.7 +2021-05-07T23:00,49.1,61,36.3,0,0,5.4,8.5 +2021-05-08T00:00,48.3,58,34.1,0,0,5.2,8.7 +2021-05-08T01:00,48.7,51,31.2,0,0,6,9.2 +2021-05-08T02:00,50.2,43,28.7,0,0,8.1,13.2 +2021-05-08T03:00,48.8,45,28.3,0,0,6.8,13.2 +2021-05-08T04:00,49.7,42,27.8,0,0,7.8,12.5 +2021-05-08T05:00,47.4,52,30.8,0,0,6.5,15 +2021-05-08T06:00,51.4,55,35.9,0,0,2.7,11.6 +2021-05-08T07:00,58,43,35.8,0,0,2.4,6.9 +2021-05-08T08:00,62.7,40,38.1,0,0,1.8,7.4 +2021-05-08T09:00,66.8,33,36.8,0,0,5.4,12.8 +2021-05-08T10:00,70.7,27,35.2,0,0,4.3,13.9 +2021-05-08T11:00,72.8,25,34.5,0,0,1.3,15.4 +2021-05-08T12:00,71,34,40.8,0.059,0,11.1,19.7 +2021-05-08T13:00,71.2,22,30.7,0,0,13.8,28.9 +2021-05-08T14:00,70.1,24,31.1,0,0,19.3,33.3 +2021-05-08T15:00,69.2,24,30.8,0,0,17.7,36.7 +2021-05-08T16:00,67.9,23,28.5,0.004,0,8,30.9 +2021-05-08T17:00,61,41,37,0.004,0,3.1,24.4 +2021-05-08T18:00,54.7,67,43.8,0.008,0,11.2,19.9 +2021-05-08T19:00,51,70,41.5,0,0,4.2,18.3 +2021-05-08T20:00,49.3,80,43.3,0.004,0,1.7,7.4 +2021-05-08T21:00,48.5,88,45.1,0.02,0,4.9,11.9 +2021-05-08T22:00,48.5,86,44.3,0.02,0,7.8,12.8 +2021-05-08T23:00,45.7,90,42.8,0.035,0,11.9,18.3 +2021-05-09T00:00,43.8,89,40.7,0.063,0,9.4,22.4 +2021-05-09T01:00,43.3,87,39.6,0.012,0,8.5,15.4 +2021-05-09T02:00,42.6,89,39.5,0.008,0,8.1,15.7 +2021-05-09T03:00,41.9,89,38.9,0.024,0,5.4,13.4 +2021-05-09T04:00,41.4,88,38.1,0.043,0,3.5,9.4 +2021-05-09T05:00,39.8,81,34.5,0.028,0,4.2,7.2 +2021-05-09T06:00,39.5,85,35.4,0.008,0,2.4,7.4 +2021-05-09T07:00,38.8,85,34.6,0.008,0,2.1,5.8 +2021-05-09T08:00,38.6,81,33.3,0.008,0,4.7,10.1 +2021-05-09T09:00,39.4,78,33.2,0.008,0,6.3,13 +2021-05-09T10:00,41.9,71,33.3,0,0,7.4,15.4 +2021-05-09T11:00,46,61,33.3,0.02,0.11,7.2,17.4 +2021-05-09T12:00,48.7,53,32.4,0,0,5.8,16.6 +2021-05-09T13:00,48.8,54,32.8,0.028,0.028,1.7,14.3 +2021-05-09T14:00,49.1,54,33,0.008,0,1.8,8.7 +2021-05-09T15:00,48.9,59,35.1,0.016,0,4.3,10.7 +2021-05-09T16:00,46.6,67,36.2,0.02,0,3.5,11.2 +2021-05-09T17:00,44.9,75,37.5,0.008,0,4.1,9.4 +2021-05-09T18:00,45.1,74,37.2,0.004,0,1.4,8.9 +2021-05-09T19:00,42.2,89,39.2,0,0,3.4,4.5 +2021-05-09T20:00,43,83,38.2,0,0,2.9,4.9 +2021-05-09T21:00,41.3,89,38.2,0,0,4.3,5.4 +2021-05-09T22:00,39.7,93,37.8,0,0,4.7,5.8 +2021-05-09T23:00,39.1,96,38,0,0,4.1,5.8 +2021-05-10T00:00,39.5,98,38.8,0,0,2.8,5.4 +2021-05-10T01:00,40.2,96,39.2,0.004,0,2.8,5.6 +2021-05-10T02:00,40.6,93,38.7,0.008,0,4.5,7.4 +2021-05-10T03:00,40.3,95,38.8,0.008,0,6.6,10.7 +2021-05-10T04:00,39.7,96,38.7,0.008,0,5.2,11.2 +2021-05-10T05:00,39.9,92,37.9,0.004,0,3.7,10.7 +2021-05-10T06:00,40.6,90,37.9,0.008,0,6,10.7 +2021-05-10T07:00,41.5,91,38.9,0.016,0,5.4,12.1 +2021-05-10T08:00,41.7,93,39.7,0.031,0,1.8,10.3 +2021-05-10T09:00,41.6,94,39.9,0.028,0,4.4,9.2 +2021-05-10T10:00,44.5,85,40.2,0.012,0,1.4,12.3 +2021-05-10T11:00,45.9,80,40.2,0.004,0,6.7,15.2 +2021-05-10T12:00,46.9,68,36.8,0.004,0,9,19.5 +2021-05-10T13:00,45.9,71,37.1,0.028,0,8.3,19 +2021-05-10T14:00,48.5,68,38.4,0.008,0,4.3,17 +2021-05-10T15:00,49.1,68,38.8,0.008,0,4.9,11.9 +2021-05-10T16:00,47.1,70,37.8,0.012,0,7.5,14.3 +2021-05-10T17:00,45.7,67,35.5,0.02,0,5.6,14.5 +2021-05-10T18:00,42.8,78,36.3,0.012,0,8.9,12.5 +2021-05-10T19:00,36,99,35.6,0.043,0.055,19.2,31.3 +2021-05-10T20:00,35.1,99,34.8,0.016,0.22,19.6,34.9 +2021-05-10T21:00,35.6,98,35.1,0.024,0.22,13.6,30.4 +2021-05-10T22:00,35.3,99,35.2,0.024,0.193,12,22.1 +2021-05-10T23:00,35.2,99,35,0.02,0.11,9.3,19.5 +2021-05-11T00:00,35.2,99,34.9,0.02,0.055,8.7,15.2 +2021-05-11T01:00,34.7,98,34.2,0.016,0.083,9.9,16.1 +2021-05-11T02:00,34.3,98,33.8,0.008,0.028,10.9,17.7 +2021-05-11T03:00,33.9,97,33.2,0.004,0,10.7,17.9 +2021-05-11T04:00,33.9,96,32.9,0,0,9.7,17.2 +2021-05-11T05:00,33.3,94,31.7,0,0,9.2,15.9 +2021-05-11T06:00,33.8,93,32,0,0.028,8.2,15 +2021-05-11T07:00,35.3,89,32.4,0.004,0,8.4,15.9 +2021-05-11T08:00,37.3,82,32.3,0,0,8.3,16.6 +2021-05-11T09:00,38.2,80,32.5,0,0,8.1,17 +2021-05-11T10:00,40.2,74,32.5,0,0,8.1,17.4 +2021-05-11T11:00,41.5,72,33.1,0,0,7.5,17.4 +2021-05-11T12:00,41,74,33.4,0.004,0,6.7,16.8 +2021-05-11T13:00,40.6,78,34.3,0.016,0,5.9,15 +2021-05-11T14:00,41.9,77,35.2,0.02,0,4.8,14.3 +2021-05-11T15:00,41.3,80,35.5,0.016,0,6.1,13.4 +2021-05-11T16:00,43.3,71,34.6,0.004,0,5.8,15.7 +2021-05-11T17:00,38.4,91,36.1,0,0,8.7,13.6 +2021-05-11T18:00,38.7,88,35.4,0,0,5.2,16.1 +2021-05-11T19:00,37,94,35.4,0,0,2,10.3 +2021-05-11T20:00,34.8,98,34.2,0,0,2.3,2.9 +2021-05-11T21:00,35.6,98,35.2,0,0,1.1,3.4 +2021-05-11T22:00,33.8,98,33.2,0,0,2.4,3.8 +2021-05-11T23:00,32.6,96,31.7,0,0,2.2,4.3 +2021-05-12T00:00,32.6,97,31.9,0,0,2.2,4.5 +2021-05-12T01:00,31.4,97,30.7,0,0,0.9,4.3 +2021-05-12T02:00,30.6,95,29.4,0,0,1.1,2.9 +2021-05-12T03:00,29,95,27.7,0,0,1.1,3.1 +2021-05-12T04:00,27.2,94,25.7,0,0,1.1,3.1 +2021-05-12T05:00,34.4,96,33.5,0,0,2.3,3.4 +2021-05-12T06:00,35,93,33.2,0,0,1.8,6 +2021-05-12T07:00,35.5,97,34.8,0,0,2.1,6.7 +2021-05-12T08:00,36.9,90,34.1,0,0,3,9.6 +2021-05-12T09:00,42.8,77,36.1,0,0,2.1,10.5 +2021-05-12T10:00,48.9,65,37.7,0,0,1.9,10.5 +2021-05-12T11:00,53.4,55,37.7,0,0,2.9,11.9 +2021-05-12T12:00,56.7,43,34.3,0,0,3.8,12.8 +2021-05-12T13:00,58.6,37,32.2,0,0,4.9,13.6 +2021-05-12T14:00,59.7,34,31.6,0,0,4.3,14.1 +2021-05-12T15:00,60.5,33,31.4,0,0,4.4,13 +2021-05-12T16:00,60.7,33,31.5,0,0,6,13.2 +2021-05-12T17:00,60.4,38,34.6,0,0,4.1,14.8 +2021-05-12T18:00,58.2,49,39.1,0,0,3.2,8.7 +2021-05-12T19:00,51.3,58,36.9,0,0,6.5,7.6 +2021-05-12T20:00,51.9,52,34.8,0,0,2.5,7.6 +2021-05-12T21:00,43.7,75,36.1,0,0,2.9,3.1 +2021-05-12T22:00,39.5,88,36.2,0,0,3.3,5.6 +2021-05-12T23:00,37.2,94,35.6,0,0,4.4,6.9 +2021-05-13T00:00,36.2,92,34.2,0,0,3.5,6.9 +2021-05-13T01:00,35.7,90,33.2,0,0,3.6,5.4 +2021-05-13T02:00,34.3,91,31.8,0,0,4,5.6 +2021-05-13T03:00,34.5,85,30.4,0,0,3.2,5.4 +2021-05-13T04:00,34.5,80,28.9,0,0,3.4,4 +2021-05-13T05:00,33,84,28.8,0,0,4.7,4.7 +2021-05-13T06:00,38.7,70,29.7,0,0,4.4,8.1 +2021-05-13T07:00,44.9,63,33,0,0,4.3,9.8 +2021-05-13T08:00,52.9,50,34.7,0,0,4.5,11.4 +2021-05-13T09:00,60.3,39,35.4,0,0,3.5,11.6 +2021-05-13T10:00,64.9,34,35.9,0,0,1.1,10.7 +2021-05-13T11:00,67.6,30,35.4,0,0,0.2,9.2 +2021-05-13T12:00,70.1,26,33.8,0,0,1.3,17 +2021-05-13T13:00,71,25,33.1,0,0,2.5,15.9 +2021-05-13T14:00,72.6,22,31.1,0,0,7,16.3 +2021-05-13T15:00,70.8,26,34,0,0,7.9,20.8 +2021-05-13T16:00,69.9,28,34.9,0,0,8.1,16.1 +2021-05-13T17:00,68.8,37,41.4,0,0,3.4,15.9 +2021-05-13T18:00,60.3,57,45,0,0,12.4,20.1 +2021-05-13T19:00,54.8,68,44.4,0,0,8.3,20.1 +2021-05-13T20:00,50.7,79,44.3,0,0,3.6,13.6 +2021-05-13T21:00,46.4,87,42.9,0,0,2.7,6 +2021-05-13T22:00,45.4,86,41.5,0,0,3.7,5.8 +2021-05-13T23:00,44.4,80,38.7,0,0,4.2,7.6 +2021-05-14T00:00,44.7,76,37.5,0,0,3.5,7.2 +2021-05-14T01:00,41.1,84,36.8,0,0,3.8,4.7 +2021-05-14T02:00,41.9,78,35.5,0,0,3.6,4.9 +2021-05-14T03:00,39.9,82,34.9,0,0,2.8,4.5 +2021-05-14T04:00,38.5,86,34.8,0,0,3.2,4.7 +2021-05-14T05:00,39.7,82,34.6,0,0,3,4.5 +2021-05-14T06:00,44.4,72,36.1,0,0,1.1,4.3 +2021-05-14T07:00,49.6,64,37.9,0,0,0.8,6 +2021-05-14T08:00,53.2,64,41.3,0,0,1.5,8.3 +2021-05-14T09:00,57.5,58,42.8,0,0,2.2,10.1 +2021-05-14T10:00,61.3,52,43.3,0,0,2.5,15.2 +2021-05-14T11:00,63.5,49,44.1,0,0,3,11 +2021-05-14T12:00,67.2,44,44.7,0,0,6,14.5 +2021-05-14T13:00,68.1,41,43.8,0,0,4.6,15.2 +2021-05-14T14:00,68.1,38,41.5,0,0,1.4,13 +2021-05-14T15:00,68.6,37,41.6,0,0,4.5,10.1 +2021-05-14T16:00,65.5,48,45.5,0,0,9.8,20.8 +2021-05-14T17:00,65.1,53,47.4,0,0,3.3,18.1 +2021-05-14T18:00,63.4,67,52.1,0,0,0.4,7.6 +2021-05-14T19:00,59.5,65,47.9,0,0,10.3,14.3 +2021-05-14T20:00,54.1,76,46.7,0,0,14.4,34 +2021-05-14T21:00,51.5,81,46,0,0,3.8,23.3 +2021-05-14T22:00,51.3,80,45.4,0,0,5.7,9.2 +2021-05-14T23:00,51.4,78,44.9,0,0,5.4,9.6 +2021-05-15T00:00,49.2,84,44.7,0,0,4.8,8.9 +2021-05-15T01:00,49.1,86,45.1,0,0,5.2,8.7 +2021-05-15T02:00,50.5,84,45.7,0,0,5.2,10.3 +2021-05-15T03:00,50.1,85,45.9,0,0,4.5,8.3 +2021-05-15T04:00,49.8,86,45.7,0,0,3.5,7.2 +2021-05-15T05:00,49.7,91,47.2,0,0,3.8,6.7 +2021-05-15T06:00,51,84,46.3,0.004,0,5.1,9.2 +2021-05-15T07:00,52.2,84,47.6,0.004,0,3.8,9.6 +2021-05-15T08:00,53.2,84,48.7,0.004,0,1.2,8.3 +2021-05-15T09:00,56.4,74,48.3,0.004,0,0.8,7.6 +2021-05-15T10:00,58.2,68,47.8,0.004,0,0.7,7.6 +2021-05-15T11:00,60.7,62,47.6,0,0,2.8,9.4 +2021-05-15T12:00,64.1,55,47.8,0,0,7.2,17 +2021-05-15T13:00,67.6,52,49.4,0,0,7,17.4 +2021-05-15T14:00,62.6,67,51.6,0.047,0,2.4,18.1 +2021-05-15T15:00,64.5,58,49.5,0,0,8.4,16.8 +2021-05-15T16:00,64.1,59,49.7,0,0,4.2,16.6 +2021-05-15T17:00,57.4,81,51.4,0,0,10.3,10.3 +2021-05-15T18:00,57.5,80,51.3,0,0,5.8,18.1 +2021-05-15T19:00,56.4,82,51.1,0,0,3.2,10.7 +2021-05-15T20:00,52.8,93,50.8,0,0,3.1,5.6 +2021-05-15T21:00,53.1,94,51.4,0,0,3.5,6 +2021-05-15T22:00,50.3,96,49.3,0,0,3.8,6 +2021-05-15T23:00,47.8,97,46.9,0,0,4.8,6.5 +2021-05-16T00:00,48.7,97,48,0,0,0.3,6.3 +2021-05-16T01:00,46,96,45.1,0,0,3.3,5.6 +2021-05-16T02:00,46.9,93,45,0,0,6.2,11 +2021-05-16T03:00,47.6,88,44.3,0,0,3.3,10.1 +2021-05-16T04:00,48.7,81,43.2,0,0,6.5,9.6 +2021-05-16T05:00,50.2,82,44.9,0,0,5.4,11 +2021-05-16T06:00,51.7,85,47.2,0,0,6.7,11.2 +2021-05-16T07:00,53.3,86,49.2,0,0,7.7,12.5 +2021-05-16T08:00,54.6,83,49.6,0,0,11,19 +2021-05-16T09:00,54.1,86,50,0.012,0,11,19.9 +2021-05-16T10:00,56.5,80,50.5,0.016,0,9.2,19.2 +2021-05-16T11:00,59.4,73,50.6,0.012,0,8.4,17.2 +2021-05-16T12:00,62.2,64,49.8,0,0,7.8,17.4 +2021-05-16T13:00,63.6,55,47.3,0.004,0,6.7,16.6 +2021-05-16T14:00,64.5,53,47.1,0.008,0,8.1,16.6 +2021-05-16T15:00,63.9,54,46.9,0.004,0,8.6,16.8 +2021-05-16T16:00,57.1,81,51.2,0.067,0,3.3,16.8 +2021-05-16T17:00,55,85,50.6,0.047,0,4.4,11 +2021-05-16T18:00,56.4,80,50.2,0,0,2.2,10.3 +2021-05-16T19:00,53.3,90,50.5,0.004,0,3.3,5.4 +2021-05-16T20:00,51.9,92,49.6,0,0,4.3,5.6 +2021-05-16T21:00,53.3,88,49.7,0,0,1.8,5.4 +2021-05-16T22:00,50.5,94,49,0,0,3.1,4.7 +2021-05-16T23:00,50.6,95,49.4,0,0,3,6 +2021-05-17T00:00,48.8,96,47.8,0,0,3.4,5.1 +2021-05-17T01:00,48.7,94,47.1,0,0,3.2,4.9 +2021-05-17T02:00,49.3,92,46.9,0.004,0,2.5,4 +2021-05-17T03:00,49.1,91,46.6,0,0,2.2,3.8 +2021-05-17T04:00,48.7,92,46.6,0,0,0.3,2.9 +2021-05-17T05:00,49.6,89,46.4,0,0,2.5,5.6 +2021-05-17T06:00,49.9,89,46.7,0,0,1.9,4.7 +2021-05-17T07:00,52.2,84,47.5,0,0,1.2,5.4 +2021-05-17T08:00,54.2,80,48.2,0,0,2.9,8.1 +2021-05-17T09:00,57,72,48.1,0,0,1.8,9.6 +2021-05-17T10:00,59.5,65,47.8,0,0,2.7,8.7 +2021-05-17T11:00,61,62,47.9,0.004,0,3.4,15 +2021-05-17T12:00,57.5,73,48.8,0.043,0,7.2,16.8 +2021-05-17T13:00,60.9,61,47.5,0,0,3.2,15.4 +2021-05-17T14:00,61.4,57,46,0.012,0,4.1,14.3 +2021-05-17T15:00,60.4,62,47.1,0,0,4.6,15.9 +2021-05-17T16:00,60.4,63,47.8,0,0,1.9,11.6 +2021-05-17T17:00,58.6,66,47.2,0.008,0,3.4,12.1 +2021-05-17T18:00,55,85,50.6,0.154,0,3.6,12.1 +2021-05-17T19:00,52.5,95,51.3,0.181,0,4.6,12.1 +2021-05-17T20:00,52.1,95,50.7,0.039,0,4.6,11.2 +2021-05-17T21:00,52,95,50.5,0.024,0,5.5,10.1 +2021-05-17T22:00,51.5,97,50.6,0.012,0,1.6,8.9 +2021-05-17T23:00,51.1,97,50.2,0,0,2.2,2.9 +2021-05-18T00:00,48.4,98,47.8,0,0,3.5,3.1 +2021-05-18T01:00,47.2,99,47,0,0,4,6.5 +2021-05-18T02:00,47.1,99,46.8,0,0,1.7,5.1 +2021-05-18T03:00,47.4,98,46.9,0.004,0,3.6,5.8 +2021-05-18T04:00,47.2,94,45.5,0,0,3,6.9 +2021-05-18T05:00,47.6,94,46,0,0,7.8,4.9 +2021-05-18T06:00,48.2,93,46.3,0,0,7.5,13 +2021-05-18T07:00,49.3,89,46.2,0,0,7.6,14.1 +2021-05-18T08:00,51.7,80,45.9,0,0,7.5,14.3 +2021-05-18T09:00,54.2,71,45.1,0,0,8.6,17 +2021-05-18T10:00,54.1,71,44.8,0.008,0,6.3,17 +2021-05-18T11:00,54.6,70,45.1,0.012,0,1.9,12.8 +2021-05-18T12:00,54.5,74,46.3,0.008,0,2.5,7.8 +2021-05-18T13:00,54.9,75,47.2,0.012,0,3.2,10.3 +2021-05-18T14:00,54.9,80,48.9,0.024,0,5.3,11.2 +2021-05-18T15:00,55.3,80,49.3,0.008,0,5.2,11.6 +2021-05-18T16:00,56.2,76,48.7,0,0,7.2,13.6 +2021-05-18T17:00,57.5,66,46.4,0,0,4.1,14.5 +2021-05-18T18:00,56.5,75,48.6,0,0,2.9,8.1 +2021-05-18T19:00,51.7,86,47.7,0,0,4.8,6.5 +2021-05-18T20:00,49.8,85,45.6,0,0,4.9,7.6 +2021-05-18T21:00,46.9,91,44.2,0,0,5.8,7.6 +2021-05-18T22:00,44.1,96,43,0,0,4,7.4 +2021-05-18T23:00,42.3,98,41.8,0,0,3.6,5.1 +2021-05-19T00:00,40.8,99,40.6,0,0,3.2,5.1 +2021-05-19T01:00,39.8,99,39.7,0,0,3.9,5.4 +2021-05-19T02:00,39.4,98,38.9,0,0,2.7,5.4 +2021-05-19T03:00,38.7,99,38.3,0,0,1.9,4.7 +2021-05-19T04:00,37.9,99,37.5,0,0,2.8,3.8 +2021-05-19T05:00,38.5,96,37.4,0,0,3.2,4.9 +2021-05-19T06:00,43.5,86,39.5,0,0,2.5,6 +2021-05-19T07:00,49.7,73,41.5,0,0,2.2,7.6 +2021-05-19T08:00,55.2,61,41.9,0,0,1.9,8.5 +2021-05-19T09:00,60.4,54,43.5,0,0,1.4,8.5 +2021-05-19T10:00,64.5,49,44.9,0,0,4.3,12.3 +2021-05-19T11:00,67.1,44,44.4,0,0,4.9,13.4 +2021-05-19T12:00,69.5,40,44.2,0,0,5.3,13.9 +2021-05-19T13:00,69,43,45.5,0.004,0,10.8,22.4 +2021-05-19T14:00,68.5,44,45.6,0,0,7.7,21.9 +2021-05-19T15:00,68.7,42,44.9,0,0,6.2,16.6 +2021-05-19T16:00,68.6,43,45.1,0,0,6.8,14.3 +2021-05-19T17:00,67,45,45.2,0.004,0,0.9,14.3 +2021-05-19T18:00,65.3,57,49.9,0,0,2.7,6 +2021-05-19T19:00,58.6,72,49.6,0,0,4.4,6.5 +2021-05-19T20:00,53.5,84,48.8,0,0,4.7,7.2 +2021-05-19T21:00,51.4,88,48,0,0,4.3,6.9 +2021-05-19T22:00,48.8,92,46.6,0,0,4.3,7.2 +2021-05-19T23:00,46.9,93,44.9,0,0,4.1,6.7 +2021-05-20T00:00,45.7,88,42.4,0,0,3.8,6.7 +2021-05-20T01:00,43.6,87,40.1,0,0,4.8,5.8 +2021-05-20T02:00,44.2,81,38.7,0,0,3.5,5.8 +2021-05-20T03:00,42.4,82,37.4,0,0,3.3,4.3 +2021-05-20T04:00,41.5,80,35.9,0,0,3.1,4.9 +2021-05-20T05:00,41,85,36.8,0,0,2.2,4.7 +2021-05-20T06:00,47.4,73,39.1,0,0,4,8.7 +2021-05-20T07:00,54.3,65,42.7,0,0,2.6,7.6 +2021-05-20T08:00,61.7,54,44.8,0,0,1.6,9.2 +2021-05-20T09:00,67.1,47,46,0,0,0.7,7.8 +2021-05-20T10:00,72.2,40,46.9,0,0,3,10.1 +2021-05-20T11:00,75.5,32,43.7,0,0,4.3,11.9 +2021-05-20T12:00,78.1,22,36.1,0,0,12.3,21.7 +2021-05-20T13:00,78.5,22,36.2,0,0,11.8,25.5 +2021-05-20T14:00,80.8,21,37,0,0,13.1,25.5 +2021-05-20T15:00,78.4,20,34.3,0,0,9.6,24.4 +2021-05-20T16:00,75.9,28,40.4,0,0,3.4,19.9 +2021-05-20T17:00,72.1,36,43.7,0,0,5.8,11.6 +2021-05-20T18:00,69.5,47,48.2,0,0,3.9,13.6 +2021-05-20T19:00,65.1,53,47.8,0,0,4.1,6.5 +2021-05-20T20:00,58,70,48.3,0,0,3.8,5.1 +2021-05-20T21:00,54.2,80,48.3,0,0,4.2,6.3 +2021-05-20T22:00,51.4,81,46,0,0,4.1,6.5 +2021-05-20T23:00,49.6,66,38.9,0,0,5.8,7.8 +2021-05-21T00:00,50.7,51,33.4,0,0,6.6,9.6 +2021-05-21T01:00,54.1,41,30.7,0,0,6.7,11 +2021-05-21T02:00,51.7,48,32.5,0,0,7.4,11.9 +2021-05-21T03:00,50.1,53,33.6,0,0,6.8,12.5 +2021-05-21T04:00,48.3,56,33.4,0,0,6.4,11.4 +2021-05-21T05:00,49.6,52,32.7,0,0,6.5,13 +2021-05-21T06:00,55.5,46,35,0,0,9,14.5 +2021-05-21T07:00,62.3,41,38.5,0,0,9.9,19.5 +2021-05-21T08:00,62.4,46,41.2,0,0,7.8,20.1 +2021-05-21T09:00,70.8,36,42.6,0,0,7.9,15.7 +2021-05-21T10:00,73.9,27,38.1,0,0,17.7,30.4 +2021-05-21T11:00,76.9,25,37.9,0,0,15.1,31.1 +2021-05-21T12:00,79,22,36.3,0,0,13.9,26.8 +2021-05-21T13:00,79,23,37.9,0,0,17.3,30 +2021-05-21T14:00,79.2,23,37.7,0,0,18.5,32 +2021-05-21T15:00,78.2,24,38.4,0,0,15,32 +2021-05-21T16:00,75.3,30,41.5,0,0,15.3,28.4 +2021-05-21T17:00,73.8,35,44.7,0,0,5.1,26.6 +2021-05-21T18:00,71.5,47,50.2,0,0,4.1,9.8 +2021-05-21T19:00,65.8,51,47.1,0,0,8,13.4 +2021-05-21T20:00,65.2,40,40,0,0,11.5,18.6 +2021-05-21T21:00,65,38,38.8,0,0,12.2,22.4 +2021-05-21T22:00,61,46,39.8,0,0,7.8,20.4 +2021-05-21T23:00,55.9,57,41,0,0,5.8,12.8 +2021-05-22T00:00,54.1,61,40.7,0,0,5.3,8.7 +2021-05-22T01:00,53.1,63,40.6,0,0,5.8,9.4 +2021-05-22T02:00,48.6,76,41.5,0,0,4.8,9.8 +2021-05-22T03:00,48.1,79,41.9,0,0,4,6.5 +2021-05-22T04:00,45.8,91,43.4,0,0,3.2,6.9 +2021-05-22T05:00,47.7,89,44.6,0,0,3.6,4.9 +2021-05-22T06:00,49.2,87,45.6,0,0,2.1,5.6 +2021-05-22T07:00,52.8,78,46,0,0,5.9,12.1 +2021-05-22T08:00,56.5,71,47.1,0,0,6.3,15.4 +2021-05-22T09:00,60.4,64,48.1,0,0,7.4,16.6 +2021-05-22T10:00,63.7,58,48.8,0,0,7.8,17.9 +2021-05-22T11:00,66.8,54,49.5,0,0,7.4,18.3 +2021-05-22T12:00,68.6,51,49.6,0,0,6.3,17.7 +2021-05-22T13:00,70.2,48,49.8,0,0,3.7,15.9 +2021-05-22T14:00,65.7,62,52.3,0.051,0,3.3,19.5 +2021-05-22T15:00,68.9,55,51.9,0,0,2.8,26.4 +2021-05-22T16:00,68.9,48,48.3,0.02,0,8.6,20.6 +2021-05-22T17:00,60.2,72,51,0,0,14.5,28.6 +2021-05-22T18:00,55.3,85,50.9,0,0,17.2,30.6 +2021-05-22T19:00,54.5,85,50.1,0,0,11.9,28.9 +2021-05-22T20:00,55,83,50,0,0,5.7,19.7 +2021-05-22T21:00,53.9,86,49.9,0,0,3.8,9.4 +2021-05-22T22:00,55.2,80,49.1,0,0,3.4,5.8 +2021-05-22T23:00,51.8,91,49.2,0,0,2.7,4.3 +2021-05-23T00:00,50.5,96,49.5,0,0,2.2,4.5 +2021-05-23T01:00,51.4,95,50.1,0,0,2.3,4 +2021-05-23T02:00,51.5,95,50.1,0,0,4.3,6.3 +2021-05-23T03:00,52.1,91,49.6,0.008,0,7.2,11.2 +2021-05-23T04:00,52.3,94,50.6,0.024,0,2.8,26.2 +2021-05-23T05:00,52,92,49.8,0,0,4.3,5.1 +2021-05-23T06:00,52.9,90,50.1,0,0,0.9,7.2 +2021-05-23T07:00,54.7,89,51.4,0,0,2.8,8.7 +2021-05-23T08:00,59.2,75,51.3,0,0,3.1,10.1 +2021-05-23T09:00,64.2,63,51.2,0,0,4.8,12.1 +2021-05-23T10:00,70.1,39,44.1,0,0,12.1,27.3 +2021-05-23T11:00,73.5,23,33.2,0,0,16.8,29.5 +2021-05-23T12:00,74.1,22,33.4,0,0,19,33.1 +2021-05-23T13:00,74,22,32.7,0,0,20.2,36.2 +2021-05-23T14:00,72.7,21,30.3,0,0,18.1,36.9 +2021-05-23T15:00,73.3,17,25.3,0,0,15.8,32.2 +2021-05-23T16:00,71.5,17,24,0,0,13.5,28.6 +2021-05-23T17:00,69.1,18,24,0,0,11.1,23.9 +2021-05-23T18:00,66.5,23,27.4,0,0,10.7,18.8 +2021-05-23T19:00,61.6,23,23.8,0,0,9.9,19.7 +2021-05-23T20:00,53.9,40,30.2,0,0,6.4,15.9 +2021-05-23T21:00,50.5,51,33.2,0,0,4,7.8 +2021-05-23T22:00,48.7,58,34.7,0,0,4.7,6.5 +2021-05-23T23:00,46,64,34.5,0,0,3.8,6.7 +2021-05-24T00:00,45.8,56,30.8,0,0,5,8.1 +2021-05-24T01:00,44.5,60,31.5,0,0,4.9,8.3 +2021-05-24T02:00,45.1,57,30.9,0,0,2.9,7.4 +2021-05-24T03:00,41.4,66,30.7,0,0,4,4.9 +2021-05-24T04:00,41.1,61,28.5,0,0,4.4,6.5 +2021-05-24T05:00,39.7,71,31,0,0,4.7,6.5 +2021-05-24T06:00,43.7,59,30.3,0,0,4.9,9.4 +2021-05-24T07:00,49.6,51,32.1,0,0,3.5,9.6 +2021-05-24T08:00,55.9,37,30.2,0,0,3.9,11 +2021-05-24T09:00,60.9,31,30.1,0,0,3.9,11.9 +2021-05-24T10:00,64.8,25,28.1,0,0,1.4,11.9 +2021-05-24T11:00,67.1,21,26.3,0,0,1.9,9.6 +2021-05-24T12:00,69.3,21,27.8,0,0,6.2,14.8 +2021-05-24T13:00,71,21,28.7,0,0,8.8,19.2 +2021-05-24T14:00,72.7,20,29.5,0,0,7.3,19.2 +2021-05-24T15:00,72.5,22,31.2,0,0,10,19.5 +2021-05-24T16:00,71.4,22,31.1,0,0,9.5,21 +2021-05-24T17:00,70.3,23,30.2,0,0,7,18.3 +2021-05-24T18:00,68.2,28,33.6,0,0,6.8,13 +2021-05-24T19:00,62.3,38,36.2,0,0,6.7,11.2 +2021-05-24T20:00,57.7,44,35.7,0,0,4.6,7.8 +2021-05-24T21:00,53.6,54,37.1,0,0,3.4,6 +2021-05-24T22:00,49.1,69,39.3,0,0,2.7,6.7 +2021-05-24T23:00,49,65,37.7,0,0,4.4,6.5 +2021-05-25T00:00,49.6,53,33.1,0,0,4,7.4 +2021-05-25T01:00,48.7,60,35.3,0,0,4.5,6.9 +2021-05-25T02:00,48.1,46,28.4,0,0,6.9,11 +2021-05-25T03:00,46.9,43,25.8,0,0,7.4,12.5 +2021-05-25T04:00,44.7,48,26.3,0,0,4.6,12.1 +2021-05-25T05:00,43.3,71,34.6,0,0,4.1,7.4 +2021-05-25T06:00,49.5,60,36,0,0,6.1,11 +2021-05-25T07:00,55.3,53,38.7,0,0,4.8,11 +2021-05-25T08:00,60.2,43,37.9,0,0,4.9,12.1 +2021-05-25T09:00,64.1,34,35.4,0,0,3.8,12.5 +2021-05-25T10:00,67.3,28,33.4,0,0,1.8,11.6 +2021-05-25T11:00,69.3,25,31.8,0,0,1.1,9.6 +2021-05-25T12:00,70.2,24,32.2,0,0,2.2,9.8 +2021-05-25T13:00,71.9,23,32.1,0,0,2.1,10.5 +2021-05-25T14:00,73.6,22,31.8,0,0,2.2,9.8 +2021-05-25T15:00,74.1,21,31.5,0,0,8.4,16.1 +2021-05-25T16:00,73.5,23,33,0,0,10.3,19.9 +2021-05-25T17:00,70.7,34,40.8,0,0,12.6,19 +2021-05-25T18:00,70.1,39,43.7,0,0,3.5,20.8 +2021-05-25T19:00,63.5,48,43.7,0,0,9.4,14.8 +2021-05-25T20:00,60.6,50,41.6,0,0,5.6,15.4 +2021-05-25T21:00,56.5,57,41.4,0,0,5.7,8.7 +2021-05-25T22:00,54,64,42.3,0,0,4.1,7.8 +2021-05-25T23:00,52.1,68,42,0,0,5.5,8.9 +2021-05-26T00:00,50.1,70,40.8,0,0,4.2,9.2 +2021-05-26T01:00,50.1,70,40.7,0,0,6.2,9.6 +2021-05-26T02:00,51,67,40.5,0,0,7.5,12.3 +2021-05-26T03:00,49.5,68,39.4,0,0,7.3,12.3 +2021-05-26T04:00,47.7,71,38.6,0,0,5.3,12.1 +2021-05-26T05:00,46.5,74,38.7,0,0,3.3,8.7 +2021-05-26T06:00,51.4,62,38.7,0,0,2.4,6 +2021-05-26T07:00,56.7,51,38.8,0,0,0.9,6.5 +2021-05-26T08:00,59.5,49,40.3,0,0,1.7,6.9 +2021-05-26T09:00,63.4,47,42.7,0,0,2.9,9.6 +2021-05-26T10:00,69.7,42,45.8,0,0,2.3,11 +2021-05-26T11:00,75.8,30,41.9,0,0,3.6,10.1 +2021-05-26T12:00,78.9,16,29.3,0,0,9.7,17.9 +2021-05-26T13:00,80.2,15,28.6,0,0,8.2,18.8 +2021-05-26T14:00,78.4,17,29.8,0,0,9.3,19.5 +2021-05-26T15:00,77,33,45.9,0,0,6.3,17.4 +2021-05-26T16:00,73.9,36,45,0,0,9.7,20.6 +2021-05-26T17:00,69.8,35,41.1,0,0,3.5,26.2 +2021-05-26T18:00,67.4,41,43,0,0,6.5,11 +2021-05-26T19:00,63.1,48,43.3,0,0,7.1,12.1 +2021-05-26T20:00,61.2,52,43.2,0,0,7.5,11.9 +2021-05-26T21:00,57.9,47,37.9,0,0,6.7,12.8 +2021-05-26T22:00,53.9,45,32.9,0,0,6.9,11 +2021-05-26T23:00,53,41,29.8,0,0,4.9,15.7 +2021-05-27T00:00,54,45,33.2,0,0,1.4,8.7 +2021-05-27T01:00,49.4,56,34.2,0,0,3,6 +2021-05-27T02:00,51.6,52,34.7,0,0,6.2,7.4 +2021-05-27T03:00,55.4,43,33.1,0,0,2.7,7.6 +2021-05-27T04:00,47.8,60,34.5,0,0,6.5,6.7 +2021-05-27T05:00,48.7,74,40.6,0,0,4.6,8.3 +2021-05-27T06:00,50.8,75,43.3,0,0,2.1,7.4 +2021-05-27T07:00,52.9,75,45.2,0,0,0.9,6 +2021-05-27T08:00,56.3,60,42.7,0,0,1.1,7.8 +2021-05-27T09:00,60.2,51,42.1,0,0,3.2,11.2 +2021-05-27T10:00,63.6,46,42.5,0,0,3.5,12.3 +2021-05-27T11:00,66.7,41,42.2,0,0,3.6,12.3 +2021-05-27T12:00,69.3,37,41.6,0,0,3,12.8 +2021-05-27T13:00,71.4,34,41.5,0,0,5.7,14.5 +2021-05-27T14:00,71.8,32,40.6,0,0,6.4,15.7 +2021-05-27T15:00,71.9,32,40.5,0,0,5.2,15.7 +2021-05-27T16:00,72.1,31,40.2,0,0,3.7,13.2 +2021-05-27T17:00,71.7,31,39.1,0,0,5.3,10.5 +2021-05-27T18:00,70,38,43,0,0,4.1,10.7 +2021-05-27T19:00,66.6,49,46.9,0,0,2.9,6.9 +2021-05-27T20:00,61.9,59,47.6,0,0,4.6,5.6 +2021-05-27T21:00,60.5,62,47.5,0,0,4.4,5.6 +2021-05-27T22:00,58.5,66,47.2,0,0,0.2,5.4 +2021-05-27T23:00,52.7,80,46.8,0,0,5.2,6.9 +2021-05-28T00:00,52.1,79,45.8,0,0,4.4,6.9 +2021-05-28T01:00,49.8,76,42.7,0,0,4.2,7.2 +2021-05-28T02:00,47.9,68,37.9,0,0,4.5,6.5 +2021-05-28T03:00,47.2,62,34.7,0,0,4.5,6.5 +2021-05-28T04:00,47.5,58,33.6,0,0,4.3,7.4 +2021-05-28T05:00,45.4,83,40.6,0,0,0.7,5.4 +2021-05-28T06:00,46,84,41.5,0,0,1.4,5.1 +2021-05-28T07:00,49,78,42.4,0,0,3.7,9.4 +2021-05-28T08:00,55.8,63,43.4,0,0,3.5,13.2 +2021-05-28T09:00,63.6,48,43.3,0,0,2,11.2 +2021-05-28T10:00,70.1,36,42,0,0,4,12.3 +2021-05-28T11:00,75.6,27,38.9,0,0,4.1,12.8 +2021-05-28T12:00,78.4,18,31.3,0,0,4.2,13.4 +2021-05-28T13:00,81,15,29.5,0,0,3.8,12.5 +2021-05-28T14:00,76.5,25,38.1,0,0,10.3,20.6 +2021-05-28T15:00,75.8,21,33.6,0,0,3,20.4 +2021-05-28T16:00,76.5,23,35.8,0,0,6.3,13 +2021-05-28T17:00,75.8,26,38.8,0,0,4.9,15 +2021-05-28T18:00,71.8,36,43.6,0,0,6.8,11.2 +2021-05-28T19:00,65.4,51,47,0,0,3.8,13 +2021-05-28T20:00,61.4,62,48.2,0,0,5.6,9.2 +2021-05-28T21:00,58.8,64,46.7,0,0,4.2,9.2 +2021-05-28T22:00,55.5,66,44.2,0,0,4.2,7.6 +2021-05-28T23:00,54.4,64,42.4,0,0,5.7,9.2 +2021-05-29T00:00,53.6,58,39.2,0,0,6.2,10.5 +2021-05-29T01:00,51.5,58,37.2,0,0,4.6,10.3 +2021-05-29T02:00,50.6,57,35.8,0,0,4.9,9.2 +2021-05-29T03:00,48,64,36.6,0,0,3.5,7.8 +2021-05-29T04:00,46.9,65,35.7,0,0,3.7,5.6 +2021-05-29T05:00,46.6,70,37.4,0,0,4.1,5.6 +2021-05-29T06:00,52,63,39.9,0,0,2.6,7.4 +2021-05-29T07:00,59.7,51,41.5,0,0,0,6 +2021-05-29T08:00,65.1,41,40.9,0,0,2,7.8 +2021-05-29T09:00,69.5,30,37,0,0,5,12.1 +2021-05-29T10:00,71.2,32,39.7,0,0,8.6,18.1 +2021-05-29T11:00,72.1,35,43.1,0,0,9.8,20.4 +2021-05-29T12:00,72.4,38,45.5,0,0,8,20.6 +2021-05-29T13:00,72.1,41,47.2,0,0,2.6,17.7 +2021-05-29T14:00,72.2,39,46,0,0,3.9,11.4 +2021-05-29T15:00,69.8,48,49.1,0.02,0,2.1,11.4 +2021-05-29T16:00,68.8,47,47.8,0,0,9.9,20.1 +2021-05-29T17:00,62.8,68,52.3,0,0,2.6,24.2 +2021-05-29T18:00,62.8,66,51.4,0,0,1.9,7.6 +2021-05-29T19:00,60.7,71,51.1,0,0,8.1,12.3 +2021-05-29T20:00,57.2,76,49.8,0,0,7,15.4 +2021-05-29T21:00,55.6,80,49.6,0,0,6.3,11.2 +2021-05-29T22:00,53.8,91,51.3,0,0,2.1,10.3 +2021-05-29T23:00,53.2,92,50.9,0,0,3.6,6 +2021-05-30T00:00,55,89,51.6,0,0,2.7,8.1 +2021-05-30T01:00,55,89,51.8,0,0,2.5,5.6 +2021-05-30T02:00,54.4,91,51.7,0.004,0,5.2,8.5 +2021-05-30T03:00,51.9,96,50.9,0,0,3.2,8.9 +2021-05-30T04:00,51.9,96,50.7,0,0,3.2,5.4 +2021-05-30T05:00,52.1,97,51.3,0,0,8.8,5.4 +2021-05-30T06:00,52.9,95,51.6,0.098,0,7.1,14.3 +2021-05-30T07:00,52.8,91,50.2,0.031,0,6.4,12.8 +2021-05-30T08:00,53.4,92,51.1,0.138,0,8.4,15.9 +2021-05-30T09:00,54.9,87,51.1,0.047,0,7.9,16.3 +2021-05-30T10:00,53.8,91,51.4,0.024,0,5.4,16.1 +2021-05-30T11:00,55.8,81,50.1,0.028,0,7,14.1 +2021-05-30T12:00,55.9,83,50.7,0.035,0,6.5,15.7 +2021-05-30T13:00,55.9,82,50.6,0.028,0,5.1,15.4 +2021-05-30T14:00,57.1,77,50.1,0.012,0,6.1,13.2 +2021-05-30T15:00,57.5,70,47.8,0.039,0,8.2,15.9 +2021-05-30T16:00,55.9,73,47.3,0.087,0,7.3,16.1 +2021-05-30T17:00,50.1,90,47.4,0.039,0,11.5,14.1 +2021-05-30T18:00,49.7,92,47.5,0.035,0,7.5,21 +2021-05-30T19:00,50.1,89,47,0.004,0,2.9,13.2 +2021-05-30T20:00,49.6,93,47.7,0.008,0,4.4,6.9 +2021-05-30T21:00,49,94,47.3,0.016,0,5.1,8.7 +2021-05-30T22:00,48.3,93,46.5,0.008,0,6.3,10.5 +2021-05-30T23:00,47.7,90,45,0,0,3.4,10.3 +2021-05-31T00:00,46.8,95,45.5,0,0,2,5.6 +2021-05-31T01:00,46.9,94,45.3,0,0,2.5,4.7 +2021-05-31T02:00,45.3,97,44.4,0,0,2.7,4.9 +2021-05-31T03:00,44.9,95,43.6,0,0,2.9,4.5 +2021-05-31T04:00,46.2,93,44.3,0,0,1.9,3.8 +2021-05-31T05:00,47.6,94,46,0,0,2.7,4.3 +2021-05-31T06:00,47.9,96,46.8,0.028,0,1.6,5.4 +2021-05-31T07:00,48.7,94,46.9,0.028,0,1.4,4.7 +2021-05-31T08:00,49.1,94,47.6,0.031,0,3.8,7.6 +2021-05-31T09:00,49.7,94,48.1,0.02,0,5.9,11.6 +2021-05-31T10:00,51.5,87,47.7,0.016,0,4.9,12.3 +2021-05-31T11:00,52.6,82,47.2,0.008,0,4.9,11.9 +2021-05-31T12:00,54.8,80,48.6,0.008,0,4.7,13 +2021-05-31T13:00,56.4,78,49.6,0.004,0,3.8,13 +2021-05-31T14:00,57.5,77,50.2,0.012,0,2.2,11.4 +2021-05-31T15:00,58,73,49.4,0.008,0,3.7,10.3 +2021-05-31T16:00,58.4,68,47.8,0.004,0,5.4,12.3 +2021-05-31T17:00,58.4,68,48,0.004,0,3.1,12.5 +2021-05-31T18:00,55.5,83,50.3,0.106,0,5.6,11.9 +2021-05-31T19:00,53.2,93,51.1,0.004,0,2.7,10.7 +2021-05-31T20:00,53.2,91,50.5,0,0,1.9,3.8 +2021-05-31T21:00,52.1,94,50.5,0,0,1.1,2.2 +2021-05-31T22:00,47.3,99,47,0,0,3.2,3.8 +2021-05-31T23:00,44.6,100,44.5,0,0,3.4,4.9 +2021-06-01T00:00,43.4,100,43.4,0,0,3,4.7 +2021-06-01T01:00,43.2,100,43.1,0,0,2.3,4.7 +2021-06-01T02:00,43.8,99,43.5,0,0,2.2,4.7 +2021-06-01T03:00,43,99,42.8,0,0,1.9,4.5 +2021-06-01T04:00,40.9,99,40.7,0,0,2.9,4.7 +2021-06-01T05:00,39.7,97,38.8,0,0,2.5,4.7 +2021-06-01T06:00,44.2,85,40.1,0,0,3.5,7.8 +2021-06-01T07:00,50.3,74,42.4,0,0,3.3,9.2 +2021-06-01T08:00,56.3,60,42.8,0,0,2,10.3 +2021-06-01T09:00,59.4,55,43.1,0,0,7.1,17.2 +2021-06-01T10:00,62.2,53,45,0,0,2.9,16.1 +2021-06-01T11:00,64.9,47,44.3,0,0,3.1,11.2 +2021-06-01T12:00,64.7,45,42.9,0.004,0,6.8,18.8 +2021-06-01T13:00,65,40,40.2,0,0,1.5,16.8 +2021-06-01T14:00,65.7,43,42.8,0,0,4.6,13 +2021-06-01T15:00,65.8,44,43.6,0,0,1.8,12.8 +2021-06-01T16:00,65.8,42,41.9,0.004,0,5.5,11.9 +2021-06-01T17:00,62.1,52,44.2,0,0,10.8,13 +2021-06-01T18:00,61,60,47.2,0,0,4.3,18.6 +2021-06-01T19:00,58.6,70,48.8,0,0,2.7,7.4 +2021-06-01T20:00,55.3,73,46.8,0,0,5.1,8.9 +2021-06-01T21:00,52.3,83,47.5,0,0,4.7,7.8 +2021-06-01T22:00,48.9,92,46.6,0,0,4.3,6.5 +2021-06-01T23:00,47.8,91,45.2,0,0,3.4,5.8 +2021-06-02T00:00,45.3,93,43.3,0,0,4.5,5.8 +2021-06-02T01:00,44.2,93,42.3,0,0,3.8,5.8 +2021-06-02T02:00,44,87,40.5,0,0,3.5,5.8 +2021-06-02T03:00,43,85,38.7,0,0,5.1,6.3 +2021-06-02T04:00,43.7,78,37.4,0,0,4.6,6.5 +2021-06-02T05:00,44.7,82,39.5,0,0,2.7,5.4 +2021-06-02T06:00,48.8,74,41,0,0,3.9,8.1 +2021-06-02T07:00,54.3,68,44.2,0,0,2.1,8.1 +2021-06-02T08:00,61,55,44.8,0,0,2.4,8.5 +2021-06-02T09:00,65.4,44,42.8,0,0,5.1,13 +2021-06-02T10:00,68.5,39,42.4,0,0,5.3,13.6 +2021-06-02T11:00,70.8,35,41.5,0,0,6,15 +2021-06-02T12:00,71.8,32,40.6,0,0,5.9,15 +2021-06-02T13:00,72.7,32,41.2,0,0,5.4,14.8 +2021-06-02T14:00,73.3,32,41.5,0,0,7.6,16.6 +2021-06-02T15:00,72.6,33,42.1,0,0,6.3,17.7 +2021-06-02T16:00,72.3,34,42.5,0,0,5.4,14.5 +2021-06-02T17:00,69.8,43,46,0,0,4.7,12.5 +2021-06-02T18:00,67.8,47,46.8,0,0,3.4,9.6 +2021-06-02T19:00,63.2,60,49.3,0,0,3.8,6 +2021-06-02T20:00,59.1,71,49.6,0,0,3.4,7.6 +2021-06-02T21:00,54.8,84,50.1,0,0,4.3,5.4 +2021-06-02T22:00,52,92,49.7,0,0,3.5,5.1 +2021-06-02T23:00,50.1,96,49.1,0,0,2.7,4.7 +2021-06-03T00:00,47.8,98,47.4,0,0,2.4,4.7 +2021-06-03T01:00,46.9,97,46.2,0,0,3,4.9 +2021-06-03T02:00,47.1,91,44.7,0,0,3.3,5.1 +2021-06-03T03:00,47.3,85,43.2,0,0,3.4,5.1 +2021-06-03T04:00,46.3,86,42.4,0,0,3.9,5.4 +2021-06-03T05:00,48.1,81,42.4,0,0,2.5,5.4 +2021-06-03T06:00,52.3,70,42.9,0,0,2.2,5.6 +2021-06-03T07:00,58.7,61,45.1,0,0,1.7,6.9 +2021-06-03T08:00,64.4,51,45.9,0,0,1.1,7.4 +2021-06-03T09:00,69.2,45,47,0,0,2.6,9.4 +2021-06-03T10:00,73.2,40,47.2,0,0,4.3,12.3 +2021-06-03T11:00,76,34,45.8,0,0,4.4,12.8 +2021-06-03T12:00,77.8,29,42.8,0,0,5,13.6 +2021-06-03T13:00,78.9,28,43.1,0,0,6.2,15.4 +2021-06-03T14:00,79.3,29,44.4,0,0,6.3,15.9 +2021-06-03T15:00,79.1,29,44.2,0,0,5.7,15 +2021-06-03T16:00,79,29,44.3,0,0,3.6,13.2 +2021-06-03T17:00,79.3,29,44.5,0,0,2.8,9.6 +2021-06-03T18:00,77.8,34,47,0,0,2.2,6.3 +2021-06-03T19:00,74.5,40,48.4,0,0,4.3,4.5 +2021-06-03T20:00,68.7,49,48.9,0,0,5,5.8 +2021-06-03T21:00,61.3,66,49.9,0,0,5.1,6.9 +2021-06-03T22:00,57.6,76,50.1,0,0,3.7,6.7 +2021-06-03T23:00,55.3,82,50,0,0,4.1,5.8 +2021-06-04T00:00,54.1,82,48.8,0,0,3.4,5.8 +2021-06-04T01:00,52.9,82,47.6,0,0,3.3,5.4 +2021-06-04T02:00,51.4,83,46.3,0,0,4.6,5.6 +2021-06-04T03:00,50.5,83,45.4,0,0,4.8,6 +2021-06-04T04:00,49.5,82,44.3,0,0,4.9,6.3 +2021-06-04T05:00,50.2,78,43.5,0,0,3.2,6 +2021-06-04T06:00,55.4,65,43.8,0,0,1.8,5.6 +2021-06-04T07:00,61.3,59,46.9,0,0,1.7,6.7 +2021-06-04T08:00,67.6,47,46.9,0,0,2.3,8.7 +2021-06-04T09:00,73,42,48.7,0,0,1.8,8.9 +2021-06-04T10:00,77.6,36,48.9,0,0,2.1,9.6 +2021-06-04T11:00,80.9,30,46.9,0,0,2.6,10.5 +2021-06-04T12:00,82.9,23,41.5,0,0,3.8,11.6 +2021-06-04T13:00,84.4,19,37.9,0,0,5.1,13.2 +2021-06-04T14:00,85.4,20,39.2,0,0,4.9,13.2 +2021-06-04T15:00,85.6,19,38.8,0,0,4.5,12.8 +2021-06-04T16:00,85,20,39.7,0,0,3.8,11.6 +2021-06-04T17:00,84.9,18,37.2,0,0,4.1,9.8 +2021-06-04T18:00,82.3,28,45.9,0,0,3.3,7.6 +2021-06-04T19:00,77.4,32,45.3,0,0,3.6,5.1 +2021-06-04T20:00,72.3,37,44.8,0,0,1.3,4.5 +2021-06-04T21:00,63.1,57,47.7,0,0,3.8,4.9 +2021-06-04T22:00,60,61,46.6,0,0,3.7,5.6 +2021-06-04T23:00,58.2,61,44.7,0,0,4.3,6.7 +2021-06-05T00:00,55.9,63,43.5,0,0,4,6.7 +2021-06-05T01:00,54.4,65,42.8,0,0,3.7,6 +2021-06-05T02:00,53.1,66,42,0,0,4,5.8 +2021-06-05T03:00,51.6,69,41.8,0,0,5.4,6.5 +2021-06-05T04:00,51.1,69,41.3,0,0,5.8,6.9 +2021-06-05T05:00,54,67,43.1,0,0,4.9,6.7 +2021-06-05T06:00,60.3,51,42.1,0,0,5.1,8.1 +2021-06-05T07:00,67.2,44,44.8,0,0,1.2,8.3 +2021-06-05T08:00,72.5,41,47.6,0,0,4.3,10.7 +2021-06-05T09:00,76.8,37,48.3,0,0,5.1,12.8 +2021-06-05T10:00,81.6,28,45.8,0,0,5.1,14.1 +2021-06-05T11:00,84.7,26,46.2,0,0,0.9,13.2 +2021-06-05T12:00,87.1,24,45.5,0,0,4.4,11.6 +2021-06-05T13:00,86.5,22,42.7,0,0,7.9,21.9 +2021-06-05T14:00,87.6,18,39.6,0,0,5.7,16.6 +2021-06-05T15:00,86.4,22,42.5,0.004,0,7.8,17 +2021-06-05T16:00,85.6,22,42.4,0,0,3.6,16.1 +2021-06-05T17:00,84.7,28,47.7,0,0,5.4,8.9 +2021-06-05T18:00,78.1,40,51.5,0,0,12.6,21.3 +2021-06-05T19:00,74.7,39,47.9,0,0,6.5,20.8 +2021-06-05T20:00,71,48,50.2,0,0,3.1,10.7 +2021-06-05T21:00,70,43,46.3,0,0,6.1,10.7 +2021-06-05T22:00,66.7,45,44.9,0,0,7,11.6 +2021-06-05T23:00,65.3,45,43.6,0,0,7.1,12.5 +2021-06-06T00:00,64.6,45,42.9,0,0,5.3,11.9 +2021-06-06T01:00,62.2,49,43.1,0,0,4.3,8.9 +2021-06-06T02:00,60.3,54,43.5,0,0,4.5,6.5 +2021-06-06T03:00,59.4,60,45.4,0,0,4,6.5 +2021-06-06T04:00,58.1,65,46.2,0,0,4.5,7.8 +2021-06-06T05:00,58.5,70,48.6,0,0,4.9,7.2 +2021-06-06T06:00,64.9,55,48.4,0,0,4.6,6.9 +2021-06-06T07:00,71.2,47,50,0,0,4.8,10.1 +2021-06-06T08:00,77.6,37,49,0,0,2.2,10.7 +2021-06-06T09:00,83,28,46.6,0,0,5.5,12.8 +2021-06-06T10:00,83.5,27,46,0.008,0,4.3,13 +2021-06-06T11:00,84.7,22,41.6,0,0,2.1,11.6 +2021-06-06T12:00,86.6,19,39.8,0,0,4.9,13.9 +2021-06-06T13:00,84.7,22,41.5,0,0,8.8,16.8 +2021-06-06T14:00,83.7,23,41.7,0,0,9.2,23.3 +2021-06-06T15:00,85,20,39.3,0,0,7.2,18.1 +2021-06-06T16:00,81.2,27,44.5,0,0,14.9,25.7 +2021-06-06T17:00,81.9,25,42.4,0,0,0.8,25.5 +2021-06-06T18:00,76.6,38,48.8,0,0,5.1,12.3 +2021-06-06T19:00,72.7,48,52.1,0,0,16.9,24.6 +2021-06-06T20:00,69.6,53,51.7,0,0,15.6,32.7 +2021-06-06T21:00,65.4,64,52.8,0,0,4.7,25.7 +2021-06-06T22:00,64.6,64,52.3,0,0,3.7,6.5 +2021-06-06T23:00,62.2,74,53.9,0,0,3.8,6 +2021-06-07T00:00,59.3,81,53.4,0,0,4.1,5.4 +2021-06-07T01:00,58.1,80,51.9,0,0,4.2,7.4 +2021-06-07T02:00,56.2,80,50,0,0,3.8,7.4 +2021-06-07T03:00,54.4,78,47.8,0,0,3.5,6.3 +2021-06-07T04:00,53.4,71,44.4,0,0,4,6 +2021-06-07T05:00,55.9,70,46.4,0,0,6.4,6.9 +2021-06-07T06:00,62,52,44,0,0,4.5,8.1 +2021-06-07T07:00,66.9,46,45.2,0,0,1.7,7.4 +2021-06-07T08:00,71.6,38,44.9,0,0,3.6,10.1 +2021-06-07T09:00,77.6,31,44.8,0,0,4.1,11.2 +2021-06-07T10:00,82,25,43.1,0,0,3.3,12.1 +2021-06-07T11:00,85.2,22,41.9,0,0,2.3,11 +2021-06-07T12:00,87,19,40.2,0,0,4.3,12.1 +2021-06-07T13:00,86.4,17,37,0,0,6.9,14.5 +2021-06-07T14:00,87.9,13,31.6,0,0,10.3,19.7 +2021-06-07T15:00,89.3,12,30.1,0,0,7.8,20.6 +2021-06-07T16:00,88.3,13,31.6,0,0,4.1,15.7 +2021-06-07T17:00,80.2,29,45.2,0,0,7.2,17.2 +2021-06-07T18:00,79.6,39,52.3,0,0,1.9,13.9 +2021-06-07T19:00,74.3,44,51.1,0,0,4.9,7.6 +2021-06-07T20:00,68.1,52,49.6,0,0,4.3,8.5 +2021-06-07T21:00,66.7,57,50.7,0,0,1.8,6.7 +2021-06-07T22:00,61.3,73,52.7,0,0,2.1,3.6 +2021-06-07T23:00,59.2,79,52.8,0,0,3.6,6 +2021-06-08T00:00,57.6,78,50.8,0,0,3.7,6.5 +2021-06-08T01:00,56.6,73,48,0,0,4.2,6 +2021-06-08T02:00,56.3,67,45.6,0,0,4.3,6.9 +2021-06-08T03:00,53.4,72,44.7,0,0,5.2,6.9 +2021-06-08T04:00,52.8,72,44.1,0,0,3.8,6.3 +2021-06-08T05:00,54.1,71,44.8,0,0,3,4.7 +2021-06-08T06:00,58.5,61,45.1,0,0,2.8,6.7 +2021-06-08T07:00,64.6,52,46.6,0,0,1.6,6.9 +2021-06-08T08:00,70.1,42,45.8,0,0,0.6,7.4 +2021-06-08T09:00,74.9,35,45.6,0,0,1.9,9.4 +2021-06-08T10:00,79.3,29,44.6,0,0,2.2,10.1 +2021-06-08T11:00,84.3,25,45.1,0,0,3,11.2 +2021-06-08T12:00,89.2,19,42.2,0,0,2.3,11.6 +2021-06-08T13:00,92.1,11,29.7,0,0,5,15.2 +2021-06-08T14:00,93.8,9,27.7,0,0,11.2,20.1 +2021-06-08T15:00,93.6,9,26.2,0,0,15,26.2 +2021-06-08T16:00,92.3,10,28,0,0,15.3,28.2 +2021-06-08T17:00,91.3,13,33.8,0,0,12.7,26.4 +2021-06-08T18:00,87.7,19,39.9,0,0,1.4,21.5 +2021-06-08T19:00,76,47,54.3,0,0,6.2,7.2 +2021-06-08T20:00,79.6,35,49.6,0,0,2.3,7.8 +2021-06-08T21:00,71.8,51,52.7,0,0,4.9,5.6 +2021-06-08T22:00,68.4,51,49.7,0,0,5.8,13.2 +2021-06-08T23:00,65.4,33,35.9,0,0,7.3,15.9 +2021-06-09T00:00,65.1,30,33,0,0,2.8,12.3 +2021-06-09T01:00,59.5,50,40.8,0,0,4.3,6.5 +2021-06-09T02:00,58.6,37,32.2,0,0,5.8,9.8 +2021-06-09T03:00,55,38,29.9,0,0,7.2,8.9 +2021-06-09T04:00,53.6,40,30,0,0,6.4,8.5 +2021-06-09T05:00,53,55,37.3,0,0,4.9,7.6 +2021-06-09T06:00,58.7,40,34.7,0,0,3.4,7.4 +2021-06-09T07:00,65.5,35,36.9,0,0,3,8.5 +2021-06-09T08:00,71.5,28,36.6,0,0,3.2,9.8 +2021-06-09T09:00,76.6,27,40,0,0,3.6,11 +2021-06-09T10:00,81.1,19,35.6,0,0,3.1,11.6 +2021-06-09T11:00,84,16,33.7,0,0,3.3,11.6 +2021-06-09T12:00,86.1,15,32.7,0,0,2.4,11.6 +2021-06-09T13:00,87.7,13,31.4,0,0,1.6,10.5 +2021-06-09T14:00,88.8,13,31.5,0,0,1.9,9.4 +2021-06-09T15:00,89.6,14,33.4,0,0,4.2,11 +2021-06-09T16:00,89.7,15,35.2,0,0,7.2,14.5 +2021-06-09T17:00,88.4,17,38.2,0,0,9.9,14.8 +2021-06-09T18:00,86.1,22,42.5,0,0,8.1,16.6 +2021-06-09T19:00,81.1,27,43.9,0,0,8,13.9 +2021-06-09T20:00,77.5,37,48.9,0,0,13.8,22.6 +2021-06-09T21:00,74.6,43,50.4,0,0,13.9,22.6 +2021-06-09T22:00,72.1,47,50.8,0,0,13.4,24.2 +2021-06-09T23:00,69.1,50,49.5,0,0,9.5,22.1 +2021-06-10T00:00,64.8,52,46.9,0,0,5.9,15.4 +2021-06-10T01:00,62.1,55,45.8,0,0,6.2,10.3 +2021-06-10T02:00,59.9,57,44.6,0,0,6,10.3 +2021-06-10T03:00,59,57,44,0,0,5,9.8 +2021-06-10T04:00,57.1,61,43.8,0,0,5.4,8.1 +2021-06-10T05:00,56.6,61,43.2,0,0,3,6.7 +2021-06-10T06:00,60.1,54,43.4,0,0,1.4,4.7 +2021-06-10T07:00,64.9,50,46,0,0,2.2,7.6 +2021-06-10T08:00,71.3,42,46.9,0,0,1.4,9.2 +2021-06-10T09:00,77.5,32,45.7,0,0,1.5,8.3 +2021-06-10T10:00,85,24,44.2,0,0,3.2,10.5 +2021-06-10T11:00,92.2,11,29.7,0,0,7.6,14.8 +2021-06-10T12:00,93.8,9,26.3,0,0,14.2,26.6 +2021-06-10T13:00,94.5,10,28.9,0,0,13.9,26.4 +2021-06-10T14:00,95.5,9,27.5,0,0,14.3,26.2 +2021-06-10T15:00,95.5,9,28,0,0,13.2,27.7 +2021-06-10T16:00,94.4,9,28,0,0,11.1,25.5 +2021-06-10T17:00,91.9,13,33.1,0,0,3.2,19.9 +2021-06-10T18:00,85.9,30,50.5,0,0,2.8,5.8 +2021-06-10T19:00,80,25,41.4,0,0,8.9,15 +2021-06-10T20:00,74.6,24,35.7,0,0,5,14.5 +2021-06-10T21:00,73.9,24,34.4,0,0,11.4,17.4 +2021-06-10T22:00,73.9,13,20.8,0,0,11.7,21 +2021-06-10T23:00,67.7,20,24.6,0,0,9.3,19.5 +2021-06-11T00:00,62.7,25,26.4,0,0,7.8,15.4 +2021-06-11T01:00,63.5,23,24.6,0,0,11.2,17.7 +2021-06-11T02:00,64.9,21,23.5,0,0,13.6,24.8 +2021-06-11T03:00,62.4,24,24.7,0,0,3.5,22.6 +2021-06-11T04:00,55.3,36,28.5,0,0,5.6,8.1 +2021-06-11T05:00,54.6,46,34.3,0,0,6.8,9.6 +2021-06-11T06:00,58.9,29,26.9,0,0,4.2,8.3 +2021-06-11T07:00,60.7,22,21.7,0,0,9.1,16.6 +2021-06-11T08:00,63.1,17,16.9,0,0,7.4,18.3 +2021-06-11T09:00,65.2,17,18.6,0,0,5.4,15.9 +2021-06-11T10:00,68.1,17,21.7,0,0,5.3,14.3 +2021-06-11T11:00,71.2,18,25.3,0,0,6.8,17 +2021-06-11T12:00,73.9,17,26.9,0,0,4.9,17 +2021-06-11T13:00,76.6,17,28.1,0,0,3.1,14.5 +2021-06-11T14:00,78.4,16,28.2,0,0,2.6,12.3 +2021-06-11T15:00,79.5,15,28,0,0,3.6,11.2 +2021-06-11T16:00,80.9,14,28,0,0,6.9,15.2 +2021-06-11T17:00,78,18,31.6,0,0,10.9,15.7 +2021-06-11T18:00,76.4,21,33.2,0,0,11.3,19.7 +2021-06-11T19:00,72.4,25,34.5,0,0,6.3,19 +2021-06-11T20:00,67.7,32,36.5,0,0,4.4,10.5 +2021-06-11T21:00,62.5,45,40.8,0,0,5.2,7.2 +2021-06-11T22:00,59.8,51,41.5,0,0,4.9,6.3 +2021-06-11T23:00,57.4,55,41.5,0,0,4,6 +2021-06-12T00:00,55.1,60,41.6,0,0,3.1,5.6 +2021-06-12T01:00,53,68,42.5,0,0,2,5.4 +2021-06-12T02:00,51.1,74,43.3,0,0,1.6,3.8 +2021-06-12T03:00,49.3,80,43.4,0,0,2.8,3.8 +2021-06-12T04:00,48.7,79,42.5,0,0,2.1,3.8 +2021-06-12T05:00,49.6,71,40.4,0,0,2.1,3.4 +2021-06-12T06:00,54.1,63,41.7,0,0,3.3,7.4 +2021-06-12T07:00,60.2,48,40.5,0,0,1.6,7.8 +2021-06-12T08:00,65.2,38,39.1,0,0,2.1,8.9 +2021-06-12T09:00,70.6,32,39.7,0,0,3.5,11.2 +2021-06-12T10:00,75.6,28,40.5,0,0,4.2,12.8 +2021-06-12T11:00,80.4,24,40.8,0,0,5.3,14.3 +2021-06-12T12:00,84.8,22,41.5,0,0,7.2,16.6 +2021-06-12T13:00,87.9,18,39.3,0,0,9.1,19.5 +2021-06-12T14:00,88.8,16,37.2,0,0,7.6,19.5 +2021-06-12T15:00,88.5,17,38.3,0,0,10.7,20.4 +2021-06-12T16:00,88.2,19,40.3,0,0,12.6,22.8 +2021-06-12T17:00,85.7,22,43,0,0,10.4,23.9 +2021-06-12T18:00,82.7,30,47.9,0,0,4.7,18.1 +2021-06-12T19:00,79.8,35,50,0,0,1.1,7.8 +2021-06-12T20:00,74.8,43,50.6,0,0,4.8,5.6 +2021-06-12T21:00,72.1,45,49.6,0,0,6,6.5 +2021-06-12T22:00,70.5,50,51.2,0,0,7.1,11.4 +2021-06-12T23:00,65.8,59,51.2,0,0,7.2,11.9 +2021-06-13T00:00,62.6,62,49.6,0,0,4.7,11.6 +2021-06-13T01:00,59.1,65,47.4,0,0,3.3,7.6 +2021-06-13T02:00,57.9,54,41.5,0,0,3.9,6 +2021-06-13T03:00,56.2,56,40.6,0,0,5.1,6.5 +2021-06-13T04:00,55.5,59,41.4,0,0,3,6.3 +2021-06-13T05:00,55.8,70,46.3,0,0,1.6,3.8 +2021-06-13T06:00,60.2,62,47,0,0,3,6.3 +2021-06-13T07:00,68.1,46,46.4,0,0,3.1,8.9 +2021-06-13T08:00,72.8,42,48.6,0,0,1.3,8.9 +2021-06-13T09:00,77.5,38,49.9,0,0,1.4,8.3 +2021-06-13T10:00,81.6,38,53.5,0,0,4.3,12.3 +2021-06-13T11:00,85.4,30,50.2,0,0,11.1,22.6 +2021-06-13T12:00,87.4,23,45.2,0,0,3.4,22.6 +2021-06-13T13:00,88.3,24,47.2,0,0,4.5,11.9 +2021-06-13T14:00,89.5,20,43.1,0,0,1.4,13.2 +2021-06-13T15:00,88.9,21,43.3,0,0,8.1,15 +2021-06-13T16:00,88.5,22,44.7,0,0,10.5,19.2 +2021-06-13T17:00,77.9,55,60.6,0,0,5.6,20.8 +2021-06-13T18:00,79.8,47,57.8,0,0,4.7,9.6 +2021-06-13T19:00,79.4,45,56.5,0,0,1.9,9.6 +2021-06-13T20:00,77.1,50,56.9,0,0,2.7,3.1 +2021-06-13T21:00,72.2,62,58.4,0,0,3.4,5.1 +2021-06-13T22:00,67.8,73,58.8,0,0,3.5,5.6 +2021-06-13T23:00,63.9,84,58.8,0,0,3.1,6.3 +2021-06-14T00:00,62.3,90,59.4,0,0,3.3,5.1 +2021-06-14T01:00,59.9,92,57.7,0,0,3,5.6 +2021-06-14T02:00,58.4,91,55.7,0,0,3.2,4.9 +2021-06-14T03:00,58.1,80,51.9,0,0,3.7,5.4 +2021-06-14T04:00,56.8,77,49.6,0,0,4.3,5.8 +2021-06-14T05:00,57.7,66,46.4,0,0,2.7,5.1 +2021-06-14T06:00,63.3,54,46.6,0,0,1.4,4.7 +2021-06-14T07:00,68.4,51,49.6,0,0,0.7,5.6 +2021-06-14T08:00,72.6,51,53.2,0,0,1.5,8.5 +2021-06-14T09:00,77.4,48,56.1,0,0,0.3,8.3 +2021-06-14T10:00,82,42,56.8,0,0,2.2,10.3 +2021-06-14T11:00,86.8,35,55.9,0,0,2.1,10.7 +2021-06-14T12:00,90.7,29,54.2,0,0,1.3,10.3 +2021-06-14T13:00,93.7,23,49.8,0,0,1.7,9.4 +2021-06-14T14:00,95.5,13,37.3,0,0,3.4,11.9 +2021-06-14T15:00,96.1,10,30.9,0,0,3.6,10.5 +2021-06-14T16:00,96.1,10,30.2,0,0,5.1,11.4 +2021-06-14T17:00,93.1,15,38,0,0,7.2,11.4 +2021-06-14T18:00,89.5,24,47.8,0,0,5,13.2 +2021-06-14T19:00,80.7,39,53.5,0,0,4.3,8.5 +2021-06-14T20:00,76.4,37,47.9,0,0,5,8.5 +2021-06-14T21:00,71,42,46.7,0,0,6.2,8.7 +2021-06-14T22:00,68.8,40,43.7,0,0,5.1,9.4 +2021-06-14T23:00,64.9,48,44.9,0,0,4,8.5 +2021-06-15T00:00,64.5,47,43.8,0,0,5.2,8.3 +2021-06-15T01:00,62.3,49,43,0,0,4.4,8.3 +2021-06-15T02:00,60.4,50,41.5,0,0,4.1,7.2 +2021-06-15T03:00,58.2,52,40.7,0,0,3.9,6.5 +2021-06-15T04:00,58.6,50,40.3,0,0,3.7,6 +2021-06-15T05:00,59.1,54,42.6,0,0,4.1,4.5 +2021-06-15T06:00,64.5,45,42.8,0,0,3.7,7.4 +2021-06-15T07:00,71,41,46.3,0,0,1.6,7.2 +2021-06-15T08:00,76.9,32,45,0,0,5,12.1 +2021-06-15T09:00,81.4,27,44.7,0,0,4.3,13 +2021-06-15T10:00,85.9,26,46.7,0,0,3.8,12.3 +2021-06-15T11:00,90,25,49.2,0,0,3.7,12.3 +2021-06-15T12:00,93.5,21,47.3,0,0,4.6,13.2 +2021-06-15T13:00,95.2,16,41.3,0,0,6.8,15 +2021-06-15T14:00,96.8,14,39.1,0,0,6.5,17 +2021-06-15T15:00,96.1,14,39.3,0,0,5.4,14.8 +2021-06-15T16:00,96.5,10,32.1,0,0,5.8,12.8 +2021-06-15T17:00,96,16,42.4,0,0,7.5,13 +2021-06-15T18:00,90.2,33,56.8,0,0,2.5,13 +2021-06-15T19:00,82.9,41,56.6,0,0,4.1,5.4 +2021-06-15T20:00,76.4,44,52.9,0,0,6.3,6.7 +2021-06-15T21:00,75.1,35,45.2,0,0,5.4,8.7 +2021-06-15T22:00,70.7,41,45.7,0,0,4.9,7.8 +2021-06-15T23:00,68.7,45,46.5,0,0,5.2,8.5 +2021-06-16T00:00,67.1,44,44.2,0,0,5.4,8.3 +2021-06-16T01:00,66.6,36,39.1,0,0,6.9,9.2 +2021-06-16T02:00,66,33,36.3,0,0,7,9.4 +2021-06-16T03:00,64,37,37,0,0,8.4,10.3 +2021-06-16T04:00,65.8,34,36.5,0,0,6.6,10.1 +2021-06-16T05:00,64.4,39,39,0,0,7.8,7.8 +2021-06-16T06:00,71.3,31,38.9,0,0,3.1,9.6 +2021-06-16T07:00,78.6,26,40.7,0,0,3.2,7.6 +2021-06-16T08:00,87.2,21,42.8,0,0,3.2,8.7 +2021-06-16T09:00,93,17,42,0,0,5.5,11.9 +2021-06-16T10:00,94.1,14,38,0,0,11.7,22.6 +2021-06-16T11:00,96,10,30.3,0,0,3.8,22.8 +2021-06-16T12:00,97.4,10,30.9,0,0,7.2,14.3 +2021-06-16T13:00,94.2,14,37.2,0,0,16.1,32.2 +2021-06-16T14:00,96.7,11,32.8,0,0,5.9,29.1 +2021-06-16T15:00,95.6,12,34.3,0,0,5,14.3 +2021-06-16T16:00,95.2,12,34.6,0,0,7,13.4 +2021-06-16T17:00,92.7,13,33.8,0,0,16.7,16.3 +2021-06-16T18:00,90.7,16,38.5,0,0,7,27.7 +2021-06-16T19:00,82.7,29,47.1,0,0,4.6,11.4 +2021-06-16T20:00,78.2,29,43.2,0,0,6.3,10.5 +2021-06-16T21:00,72.5,34,42.8,0,0,4.2,10.1 +2021-06-16T22:00,69.6,40,44.2,0,0,4.4,6.9 +2021-06-16T23:00,67.3,43,44.2,0,0,4.7,6.7 +2021-06-17T00:00,67.2,40,42.2,0,0,5.5,8.9 +2021-06-17T01:00,65.8,41,41.5,0,0,4.8,9.2 +2021-06-17T02:00,64.9,41,40.8,0,0,4.9,8.3 +2021-06-17T03:00,63.4,42,39.9,0,0,6.9,8.7 +2021-06-17T04:00,64.6,39,38.9,0,0,6.6,9.4 +2021-06-17T05:00,62.4,51,44,0,0,6.7,8.3 +2021-06-17T06:00,68.7,36,40.6,0,0,5.6,7.8 +2021-06-17T07:00,76,30,42.5,0,0,3.6,9.4 +2021-06-17T08:00,84.6,24,44.2,0,0,2.5,8.9 +2021-06-17T09:00,91.2,16,38.5,0,0,2.5,8.7 +2021-06-17T10:00,94.6,10,29.8,0,0,4.8,12.8 +2021-06-17T11:00,96.1,10,30.2,0,0,4.3,13 +2021-06-17T12:00,97,10,30.5,0,0,3.4,14.5 +2021-06-17T13:00,98.4,10,32.1,0,0,5.6,13 +2021-06-17T14:00,91.9,16,38.9,0,0,19.1,33.8 +2021-06-17T15:00,93.7,12,32.5,0,0,4.3,33.6 +2021-06-17T16:00,95.1,10,30.4,0,0,11.1,22.1 +2021-06-17T17:00,92.3,15,38.5,0,0,11.9,19.7 +2021-06-17T18:00,90.5,17,40.2,0,0,8.4,21.3 +2021-06-17T19:00,85.2,23,43.3,0,0,6.7,14.1 +2021-06-17T20:00,81.9,23,40.5,0,0,9.4,15.2 +2021-06-17T21:00,76,30,42.7,0,0,6.8,15.7 +2021-06-17T22:00,71.5,37,43.8,0,0,4.4,11.2 +2021-06-17T23:00,69.3,39,43.3,0,0,4.3,7.2 +2021-06-18T00:00,67.3,38,41.1,0,0,5,7.6 +2021-06-18T01:00,66.9,36,38.8,0,0,5.2,8.3 +2021-06-18T02:00,65.1,38,38.6,0,0,6,8.3 +2021-06-18T03:00,64.4,39,38.8,0,0,6.9,8.9 +2021-06-18T04:00,65.4,35,37.3,0,0,5,8.1 +2021-06-18T05:00,64.4,42,40.8,0,0,5.2,6 +2021-06-18T06:00,69.8,38,42.8,0,0,3,6.7 +2021-06-18T07:00,74.8,31,42.5,0,0,3.4,7.8 +2021-06-18T08:00,81.3,22,39.4,0,0,5.8,12.3 +2021-06-18T09:00,84.8,17,34.9,0,0,9.2,18.1 +2021-06-18T10:00,87,14,32,0,0,12,23.3 +2021-06-18T11:00,87.4,15,33.5,0,0,14.6,27.5 +2021-06-18T12:00,88.3,17,38.6,0,0,11.6,27.7 +2021-06-18T13:00,87.6,22,43.7,0,0,12.1,24.6 +2021-06-18T14:00,87.6,23,44.9,0,0,4.6,23.9 +2021-06-18T15:00,86.9,21,42.2,0,0,2.4,13.2 +2021-06-18T16:00,88.7,18,39.6,0,0,6.2,14.1 +2021-06-18T17:00,85.8,25,45.9,0,0,11.9,13.2 +2021-06-18T18:00,83.9,27,46,0,0,10.4,20.8 +2021-06-18T19:00,82.8,23,41.7,0,0,12.1,19.5 +2021-06-18T20:00,78.4,26,40.6,0,0,11.6,21 +2021-06-18T21:00,77,28,41.8,0,0,12.2,20.6 +2021-06-18T22:00,75.5,30,41.9,0,0,9.9,20.4 +2021-06-18T23:00,73.1,33,42.5,0,0,8.1,16.6 +2021-06-19T00:00,71.2,37,43.7,0,0,8.1,13.9 +2021-06-19T01:00,68.1,42,44.4,0,0,5.8,13.4 +2021-06-19T02:00,65,46,43.9,0,0,4.9,9.4 +2021-06-19T03:00,61.2,54,44.2,0,0,4.9,7.8 +2021-06-19T04:00,59.8,55,43.6,0,0,4,6 +2021-06-19T05:00,61.3,51,43.1,0,0,4.8,4.9 +2021-06-19T06:00,65.3,46,44.2,0,0,4,7.8 +2021-06-19T07:00,69.8,43,46.2,0,0,1.3,7.4 +2021-06-19T08:00,73.9,37,45.7,0,0,1.8,7.4 +2021-06-19T09:00,76.5,32,44.5,0,0,2.4,8.1 +2021-06-19T10:00,81.4,27,44.4,0,0,4.4,12.1 +2021-06-19T11:00,86.2,24,45.1,0,0,1.3,12.8 +2021-06-19T12:00,89.2,18,39.5,0,0,6.8,15 +2021-06-19T13:00,85.8,25,45.6,0,0,12.9,23.9 +2021-06-19T14:00,83.2,30,48.5,0.008,0,7.4,24.8 +2021-06-19T15:00,84.4,29,48.6,0,0,2.9,19.5 +2021-06-19T16:00,80.8,39,53.9,0.071,0,7,14.1 +2021-06-19T17:00,84.5,23,43.2,0,0,9,15 +2021-06-19T18:00,83.3,24,42.5,0,0,9.2,17 +2021-06-19T19:00,80.1,27,42.7,0,0,6,16.3 +2021-06-19T20:00,75.1,32,43.3,0,0,4.3,10.3 +2021-06-19T21:00,72.1,41,46.9,0,0,6.1,9.8 +2021-06-19T22:00,69.9,44,46.9,0,0,9,14.3 +2021-06-19T23:00,68.6,37,41.5,0,0,10.1,16.3 +2021-06-20T00:00,67.8,36,40.2,0,0,9.1,16.3 +2021-06-20T01:00,66,39,40.2,0,0,5.8,14.8 +2021-06-20T02:00,63.8,42,40.1,0,0,4.9,9.2 +2021-06-20T03:00,62.8,42,39.6,0,0,5.5,8.5 +2021-06-20T04:00,61.9,42,38.5,0,0,5.9,9.6 +2021-06-20T05:00,62.5,44,40.3,0,0,5.9,9.6 +2021-06-20T06:00,65.8,41,41.6,0,0,9.5,15.9 +2021-06-20T07:00,68.7,38,41.9,0,0,11.2,19.9 +2021-06-20T08:00,71.9,31,39.6,0,0,8,20.6 +2021-06-20T09:00,74.3,28,38.8,0,0,6.7,17 +2021-06-20T10:00,76.8,26,39.5,0,0,5.7,16.1 +2021-06-20T11:00,78.7,26,40.6,0,0,6.4,17.2 +2021-06-20T12:00,81.2,25,41.6,0,0,5.7,16.3 +2021-06-20T13:00,83.2,24,42.4,0,0,3.5,15.7 +2021-06-20T14:00,84.7,23,42.9,0,0,7,17 +2021-06-20T15:00,86.3,22,43.5,0,0,8.9,17.7 +2021-06-20T16:00,84.7,23,43.2,0,0,13.8,25.3 +2021-06-20T17:00,79.4,33,47.7,0,0,9.1,25.9 +2021-06-20T18:00,78.4,34,47.6,0.004,0,7.1,18.3 +2021-06-20T19:00,75.1,37,47.4,0,0,6.6,13.9 +2021-06-20T20:00,68.5,52,50,0.004,0,8.1,18.1 +2021-06-20T21:00,65.3,67,54.1,0.028,0,8,14.1 +2021-06-20T22:00,61.2,84,56.2,0.083,0,10.6,18.1 +2021-06-20T23:00,59.1,91,56.6,0.039,0,10,18.8 +2021-06-21T00:00,58.2,92,55.8,0.031,0,7.6,16.8 +2021-06-21T01:00,57.2,91,54.6,0.035,0,7.4,13 +2021-06-21T02:00,55.5,94,53.7,0.067,0,9.6,15 +2021-06-21T03:00,53.9,91,51.4,0.039,0,9.4,17.9 +2021-06-21T04:00,53.6,87,49.7,0.008,0,7.2,15.4 +2021-06-21T05:00,52.5,84,47.9,0,0,3.1,12.3 +2021-06-21T06:00,53,81,47.3,0,0,1.6,6.3 +2021-06-21T07:00,54.1,77,46.9,0,0,2.9,8.1 +2021-06-21T08:00,55.5,72,46.7,0,0,1.4,8.7 +2021-06-21T09:00,58.6,65,46.9,0,0,1.3,8.7 +2021-06-21T10:00,61.5,59,47.2,0,0,1.1,9.8 +2021-06-21T11:00,63.9,55,47.4,0,0,0.7,9.4 +2021-06-21T12:00,66.1,51,47.3,0,0,1.6,9.4 +2021-06-21T13:00,67.4,48,46.9,0,0,3.4,11.6 +2021-06-21T14:00,69.2,45,47.1,0,0,4.2,13 +2021-06-21T15:00,69.9,43,46.2,0,0,7.9,17.2 +2021-06-21T16:00,70.8,40,45.4,0,0,6.3,18.1 +2021-06-21T17:00,68.5,49,48.7,0,0,5.2,14.8 +2021-06-21T18:00,68.8,49,48.9,0,0,3.7,11.9 +2021-06-21T19:00,66.7,54,49.7,0,0,4.2,8.9 +2021-06-21T20:00,63.4,61,49.6,0,0,3.7,7.6 +2021-06-21T21:00,60.9,69,50.8,0,0,4.6,6 +2021-06-21T22:00,60.4,69,50,0,0,4.1,8.3 +2021-06-21T23:00,56.6,82,51,0,0,3.5,6.7 +2021-06-22T00:00,54.9,88,51.3,0,0,4.2,5.6 +2021-06-22T01:00,53.2,91,50.8,0,0,3.8,5.6 +2021-06-22T02:00,52.4,88,48.8,0,0,3.8,5.1 +2021-06-22T03:00,51.2,81,45.4,0,0,3.7,5.1 +2021-06-22T04:00,50.8,73,42.4,0,0,4,5.1 +2021-06-22T05:00,52.6,68,42.2,0,0,3.8,5.4 +2021-06-22T06:00,59.1,51,40.7,0,0,3.5,6.3 +2021-06-22T07:00,66.1,45,43.9,0,0,4.7,10.1 +2021-06-22T08:00,74.2,35,45.1,0,0,3.3,11 +2021-06-22T09:00,80.4,25,41.4,0,0,1.8,9.6 +2021-06-22T10:00,84.5,20,39,0,0,4,11.6 +2021-06-22T11:00,86.6,17,36.6,0,0,2.9,12.5 +2021-06-22T12:00,88.2,17,37.5,0,0,3.6,11 +2021-06-22T13:00,89.9,17,38.8,0,0,5.4,13.6 +2021-06-22T14:00,90.4,17,40,0,0,7.6,17 +2021-06-22T15:00,89.2,17,39.2,0,0,7.2,16.8 +2021-06-22T16:00,90,17,38.8,0,0,5.2,14.8 +2021-06-22T17:00,89.7,18,41,0,0,5.4,11.4 +2021-06-22T18:00,84.9,35,54.6,0,0,2.7,10.5 +2021-06-22T19:00,83.4,29,48,0,0,1.1,4 +2021-06-22T20:00,72.7,47,51.1,0,0,3.6,5.8 +2021-06-22T21:00,68.1,56,51.7,0,0,5.1,7.8 +2021-06-22T22:00,66,55,49.4,0,0,4.7,9.4 +2021-06-22T23:00,67.7,49,48,0,0,1.4,7.6 +2021-06-23T00:00,67,53,49.2,0,0,1.4,2.7 +2021-06-23T01:00,59.7,61,46.3,0,0,5.2,6.9 +2021-06-23T02:00,59.6,53,42.3,0,0,4.8,7.4 +2021-06-23T03:00,58.9,48,39.1,0,0,5,8.3 +2021-06-23T04:00,58,44,36.1,0,0,6.1,7.8 +2021-06-23T05:00,59.5,49,40.3,0,0,6.2,8.9 +2021-06-23T06:00,65.3,37,38,0,0,5.2,7.6 +2021-06-23T07:00,71.8,37,44,0,0,5.6,11 +2021-06-23T08:00,80.8,31,47.6,0,0,6.3,13 +2021-06-23T09:00,88,19,40.7,0,0,3.7,13.2 +2021-06-23T10:00,90.9,16,38.3,0,0,1.1,10.3 +2021-06-23T11:00,92.2,13,33.8,0,0,1.3,7.6 +2021-06-23T12:00,92.8,12,31.9,0,0,2.5,8.5 +2021-06-23T13:00,94.6,11,31.3,0,0,4.5,12.3 +2021-06-23T14:00,94.6,11,32,0,0,3.4,12.5 +2021-06-23T15:00,94.7,11,32.8,0,0,2.3,10.7 +2021-06-23T16:00,92.5,13,34.4,0,0,12.7,19.9 +2021-06-23T17:00,90,14,35.2,0,0,8.4,31.3 +2021-06-23T18:00,87.9,18,39.5,0,0,7.9,15 +2021-06-23T19:00,81.7,23,40.6,0,0,7.1,13.4 +2021-06-23T20:00,77.7,25,39.4,0,0,6,12.1 +2021-06-23T21:00,75.1,31,42.5,0,0,2.7,9.6 +2021-06-23T22:00,72.8,38,45.5,0,0,5.9,6 +2021-06-23T23:00,73.9,32,42,0,0,4.7,6.7 +2021-06-24T00:00,74.8,27,38.9,0,0,14.2,21.9 +2021-06-24T01:00,72,32,40.1,0,0,16.1,27.7 +2021-06-24T02:00,70.5,35,41.3,0,0,9.2,26.6 +2021-06-24T03:00,67.5,45,45.1,0.008,0,2.9,14.8 +2021-06-24T04:00,64.8,58,49.6,0.004,0,4.9,12.5 +2021-06-24T05:00,62.8,69,52.3,0,0,7.9,7.8 +2021-06-24T06:00,65,69,54.5,0,0,7.6,14.3 +2021-06-24T07:00,69.6,58,54.2,0,0,1.1,12.3 +2021-06-24T08:00,73.3,49,53.2,0,0,0.9,6.9 +2021-06-24T09:00,77.8,34,46.9,0,0,1.9,8.7 +2021-06-24T10:00,81.1,27,44.2,0,0,6,13.9 +2021-06-24T11:00,80.4,31,46.8,0,0,8,17.9 +2021-06-24T12:00,79.6,31,46.7,0,0,6.5,21.5 +2021-06-24T13:00,81.1,29,46.1,0,0,1.9,15.9 +2021-06-24T14:00,78.5,36,49.2,0,0,9.4,20.8 +2021-06-24T15:00,78.7,34,47.8,0,0,1.3,19.9 +2021-06-24T16:00,78.4,34,47.6,0,0,4.4,11 +2021-06-24T17:00,74.3,45,51.4,0.016,0,1.2,11.6 +2021-06-24T18:00,72.1,53,54.2,0.012,0,3.3,10.7 +2021-06-24T19:00,70.6,64,57.7,0.004,0,6.8,11.6 +2021-06-24T20:00,69.8,62,56.1,0,0,2.4,11.2 +2021-06-24T21:00,67.2,61,53.2,0,0,3.6,5.6 +2021-06-24T22:00,66.9,55,50.3,0,0,6.3,9.2 +2021-06-24T23:00,65.9,45,44.2,0,0,12.9,20.8 +2021-06-25T00:00,64.5,51,46,0,0,6.5,21.3 +2021-06-25T01:00,61.8,62,48.8,0,0,4,10.7 +2021-06-25T02:00,59.1,67,48,0,0,3,6.7 +2021-06-25T03:00,57,74,48.7,0,0,3.9,4.7 +2021-06-25T04:00,56,75,48.3,0,0,2.7,4.9 +2021-06-25T05:00,57.1,87,53.2,0,0,4.7,5.8 +2021-06-25T06:00,58.8,84,54.1,0,0,1.4,7.8 +2021-06-25T07:00,63.4,69,53.2,0,0,0.5,6 +2021-06-25T08:00,67.6,58,52.2,0,0,1.8,8.7 +2021-06-25T09:00,71.5,49,51.6,0,0,1.7,9.6 +2021-06-25T10:00,72.7,48,51.7,0,0,2.1,11.2 +2021-06-25T11:00,73.9,49,53.3,0.031,0,6.6,15.4 +2021-06-25T12:00,71,55,54.2,0.11,0,4.1,17.2 +2021-06-25T13:00,75.8,40,50,0,0,7.4,16.6 +2021-06-25T14:00,69.2,60,54.6,0.02,0,11.1,20.6 +2021-06-25T15:00,69.9,60,55.6,0.004,0,5.9,23.5 +2021-06-25T16:00,65.3,72,55.9,0.122,0,9.9,19.5 +2021-06-25T17:00,60.9,89,57.6,0.024,0,6.8,19.7 +2021-06-25T18:00,61,87,57.1,0.118,0,7.4,13.2 +2021-06-25T19:00,59.5,89,56.4,0.146,0,7.7,14.3 +2021-06-25T20:00,59.4,90,56.3,0.102,0,7.1,12.5 +2021-06-25T21:00,59.5,85,55,0.035,0,3.6,11.6 +2021-06-25T22:00,59.2,89,56,0.024,0,5.1,9.4 +2021-06-25T23:00,57.8,93,55.7,0.039,0,2.4,9.6 +2021-06-26T00:00,58.2,90,55.2,0.031,0,4,9.2 +2021-06-26T01:00,57.6,92,55.1,0.039,0,4.1,9.2 +2021-06-26T02:00,57.4,91,54.9,0.059,0,4,10.5 +2021-06-26T03:00,57.2,92,55,0.012,0,3.2,9.6 +2021-06-26T04:00,56.4,94,54.7,0.004,0,1.9,5.1 +2021-06-26T05:00,57.8,93,55.7,0.012,0,2.2,5.1 +2021-06-26T06:00,58.2,85,53.8,0.004,0,3,5.4 +2021-06-26T07:00,59.9,77,52.7,0,0,4.3,9.4 +2021-06-26T08:00,62.9,66,51.2,0,0,2.4,16.6 +2021-06-26T09:00,65,62,51.5,0,0,2.7,16.1 +2021-06-26T10:00,67.2,60,52.6,0,0,3.4,17.4 +2021-06-26T11:00,68.2,58,53,0.004,0,4.8,17.9 +2021-06-26T12:00,69.1,54,51.5,0.004,0,6,20.1 +2021-06-26T13:00,70.9,49,50.7,0,0,5.8,19 +2021-06-26T14:00,66.5,63,53.4,0.083,0,12.3,21.3 +2021-06-26T15:00,64.9,62,51.4,0.028,0,5,23.9 +2021-06-26T16:00,64.5,61,50.8,0.02,0,5.4,13.2 +2021-06-26T17:00,64.9,54,47.8,0.004,0,7.5,14.5 +2021-06-26T18:00,64.7,52,46.8,0,0,7.7,16.3 +2021-06-26T19:00,64,54,47.1,0,0,5,14.3 +2021-06-26T20:00,62.2,58,47,0,0,4.1,8.3 +2021-06-26T21:00,58.4,63,46,0,0,4.7,7.6 +2021-06-26T22:00,56.7,66,45.3,0,0,4.8,8.1 +2021-06-26T23:00,58,66,46.6,0,0,8.2,13.9 +2021-06-27T00:00,57.5,69,47.6,0,0,3.6,13.4 +2021-06-27T01:00,57.7,70,48.1,0,0,2.4,6 +2021-06-27T02:00,54.5,80,48.6,0,0,2.2,3.4 +2021-06-27T03:00,53.9,82,48.5,0,0,2.7,4.5 +2021-06-27T04:00,52.3,85,48,0,0,3.3,5.6 +2021-06-27T05:00,56.1,88,52.6,0,0,3.8,6.3 +2021-06-27T06:00,56.9,85,52.6,0,0,5,8.9 +2021-06-27T07:00,60.6,72,51.5,0,0,3.3,9.2 +2021-06-27T08:00,63.6,54,46.8,0,0,2.2,13.9 +2021-06-27T09:00,65.8,46,44.4,0,0,3.2,13.6 +2021-06-27T10:00,67.4,43,44,0,0,5.6,14.5 +2021-06-27T11:00,69,42,45.1,0,0,6.1,15.7 +2021-06-27T12:00,66.7,50,47.2,0.004,0,9.2,20.4 +2021-06-27T13:00,68.4,45,46,0,0,2.6,19.7 +2021-06-27T14:00,70.8,41,45.9,0,0,4.8,14.8 +2021-06-27T15:00,70.8,39,44.7,0,0,7.2,16.1 +2021-06-27T16:00,69.7,40,44.2,0,0,11.5,20.1 +2021-06-27T17:00,63.7,56,47.8,0.004,0,11.8,26.2 +2021-06-27T18:00,63.1,56,47.3,0,0,1.9,19.5 +2021-06-27T19:00,61.6,66,50.1,0,0,4.8,8.3 +2021-06-27T20:00,58.3,81,52.3,0,0,3.8,8.3 +2021-06-27T21:00,57.3,85,52.7,0.004,0,2.1,10.3 +2021-06-27T22:00,56.1,90,53.2,0.004,0,1.6,8.1 +2021-06-27T23:00,56,89,52.9,0,0,3.4,6.3 +2021-06-28T00:00,55,90,52.1,0,0,3,6 +2021-06-28T01:00,55,85,50.6,0,0,3.4,5.4 +2021-06-28T02:00,54.4,82,49,0,0,3.2,6.3 +2021-06-28T03:00,54.2,81,48.7,0,0,3.8,5.4 +2021-06-28T04:00,55.8,74,47.6,0,0,2.5,4.7 +2021-06-28T05:00,53.6,88,50.3,0,0,2.1,3.6 +2021-06-28T06:00,56.8,77,49.7,0,0,4.9,9.4 +2021-06-28T07:00,61.1,63,48.3,0,0,4.6,9.6 +2021-06-28T08:00,62.8,59,48.2,0,0,4.8,15.9 +2021-06-28T09:00,65.1,55,48.7,0,0,5.9,15.9 +2021-06-28T10:00,67.4,52,49.1,0,0,6,16.6 +2021-06-28T11:00,68.7,49,48.9,0,0,6.5,15.9 +2021-06-28T12:00,69.4,47,48.4,0.004,0,7.7,17.4 +2021-06-28T13:00,70.3,43,46.8,0,0,7.2,17.7 +2021-06-28T14:00,71.3,39,45.1,0,0,7.2,17.2 +2021-06-28T15:00,71.6,37,44.2,0,0,6.7,16.6 +2021-06-28T16:00,71.4,37,43.9,0,0,5.7,15.4 +2021-06-28T17:00,68.6,51,49.9,0,0,4.7,13.4 +2021-06-28T18:00,64,66,52.4,0.035,0,1.4,10.5 +2021-06-28T19:00,60.7,82,55.1,0.043,0,4.6,13 +2021-06-28T20:00,59.1,90,56,0.008,0,4.3,8.5 +2021-06-28T21:00,59.1,90,56,0,0,3.2,8.3 +2021-06-28T22:00,56,93,54,0,0,3.8,6.3 +2021-06-28T23:00,55.1,92,53,0,0,3.8,6.7 +2021-06-29T00:00,52.7,95,51.4,0,0,3.6,6.7 +2021-06-29T01:00,51.4,95,50.2,0,0,3.8,5.8 +2021-06-29T02:00,49.5,99,49.2,0,0,2.9,4.9 +2021-06-29T03:00,48.9,99,48.7,0,0,3,4.7 +2021-06-29T04:00,48.7,100,48.6,0,0,2.3,4.7 +2021-06-29T05:00,51.8,87,48,0,0,1.1,4.3 +2021-06-29T06:00,54.8,79,48.3,0,0,1.4,4.9 +2021-06-29T07:00,58.9,67,48.1,0,0,1.9,6.9 +2021-06-29T08:00,63.1,59,48.4,0,0,3.3,10.3 +2021-06-29T09:00,66,54,48.9,0,0,3.5,11.2 +2021-06-29T10:00,69.3,49,49.3,0,0,1.9,11.4 +2021-06-29T11:00,71.5,45,48.8,0,0,0.5,15.9 +2021-06-29T12:00,73.6,40,47.7,0,0,0.6,14.8 +2021-06-29T13:00,75.7,35,46.2,0,0,2.3,12.5 +2021-06-29T14:00,76.7,32,45,0,0,5.2,13.6 +2021-06-29T15:00,77.2,33,45.6,0,0,7.2,15.7 +2021-06-29T16:00,76.3,33,45.3,0,0,6.8,15.4 +2021-06-29T17:00,69.4,65,57.1,0,0,6.6,14.3 +2021-06-29T18:00,68.7,66,57.1,0.004,0,2.1,12.8 +2021-06-29T19:00,67.7,63,54.8,0,0,4.3,7.2 +2021-06-29T20:00,64.6,76,56.8,0,0,2.6,7.2 +2021-06-29T21:00,62.3,84,57.3,0,0,3.2,4.7 +2021-06-29T22:00,60.2,90,57.2,0,0,2.7,4.9 +2021-06-29T23:00,58.3,93,56.1,0,0,2.8,4.7 +2021-06-30T00:00,56.9,94,55.3,0,0,2.4,4.7 +2021-06-30T01:00,55.9,94,54.3,0,0,2.2,3.8 +2021-06-30T02:00,55.2,93,53.3,0,0,2.7,4.3 +2021-06-30T03:00,55.2,88,51.6,0,0,3.2,5.4 +2021-06-30T04:00,53.5,89,50.5,0,0,3,5.4 +2021-06-30T05:00,53.2,82,48,0,0,3.6,4.9 +2021-06-30T06:00,57.6,70,47.8,0,0,2.2,7.2 +2021-06-30T07:00,62.7,61,48.9,0,0,1.9,6.5 +2021-06-30T08:00,65.7,64,53.1,0,0,3.7,11 +2021-06-30T09:00,68.9,61,54.7,0,0,2.7,11.2 +2021-06-30T10:00,72.5,53,54.2,0,0,3.8,12.1 +2021-06-30T11:00,75.3,45,52.4,0,0,4,13.2 +2021-06-30T12:00,77.5,39,50.9,0,0,3.6,13 +2021-06-30T13:00,78.7,37,50.4,0,0,4.1,12.8 +2021-06-30T14:00,79.5,35,49.6,0,0,4.5,13 +2021-06-30T15:00,79.9,34,48.7,0,0,4.1,13 +2021-06-30T16:00,80.1,33,48.1,0,0,6.3,13.4 +2021-06-30T17:00,79.4,36,50,0,0,2.3,13.9 +2021-06-30T18:00,76.3,42,51.4,0,0,2.7,8.7 +2021-06-30T19:00,72.7,62,58.8,0,0,2.7,6.3 +2021-06-30T20:00,69.8,63,56.7,0,0,2.2,4.9 +2021-06-30T21:00,66.2,73,57.4,0,0,4.5,6.5 +2021-06-30T22:00,63,83,57.7,0,0,2.8,7.4 +2021-06-30T23:00,61.3,88,57.7,0,0,2.9,4.7 +2021-07-01T00:00,59.8,92,57.4,0,0,3,4.9 +2021-07-01T01:00,58.3,93,56.1,0,0,2.6,5.1 +2021-07-01T02:00,58,90,55,0,0,2.2,4.5 +2021-07-01T03:00,57.7,86,53.6,0,0,3.4,5.1 +2021-07-01T04:00,58.1,81,52.3,0,0,4,7.4 +2021-07-01T05:00,58.4,90,55.3,0,0,4.7,6.3 +2021-07-01T06:00,60.7,88,57.1,0,0,0.4,7.4 +2021-07-01T07:00,64,78,57.1,0,0,4.3,10.1 +2021-07-01T08:00,67.5,75,59.4,0,0,3.3,11 +2021-07-01T09:00,71.7,63,58.6,0,0,4.2,11.9 +2021-07-01T10:00,73,63,59.5,0.008,0,5.1,13.9 +2021-07-01T11:00,70.8,67,59.2,0.008,0,7,15.4 +2021-07-01T12:00,72.7,59,57.5,0,0,3.1,17.9 +2021-07-01T13:00,74.8,51,55.6,0.031,0,0.9,11.2 +2021-07-01T14:00,74.8,53,56.5,0.02,0,6,13.6 +2021-07-01T15:00,72.3,64,59.6,0.008,0,5.7,17.4 +2021-07-01T16:00,72.1,65,59.5,0.051,0,4.4,14.3 +2021-07-01T17:00,65.1,88,61.3,0.091,0,7.3,13.4 +2021-07-01T18:00,65.2,85,60.4,0.004,0,7.4,16.1 +2021-07-01T19:00,64.9,84,60,0,0,3.7,13.6 +2021-07-01T20:00,61.8,94,60,0,0,3,6 +2021-07-01T21:00,60.9,96,59.8,0,0,3.6,7.6 +2021-07-01T22:00,60.1,97,59.3,0,0,3.6,5.8 +2021-07-01T23:00,59.7,97,58.9,0,0,3.6,6.3 +2021-07-02T00:00,58.9,95,57.5,0,0,3.5,6 +2021-07-02T01:00,58.6,96,57.6,0,0,2.9,4.5 +2021-07-02T02:00,56.2,98,55.7,0,0,1.8,3.8 +2021-07-02T03:00,55.3,98,54.7,0,0,3.5,5.6 +2021-07-02T04:00,56.5,98,56,0,0,5.4,8.9 +2021-07-02T05:00,57.7,94,55.9,0,0,4.3,11 +2021-07-02T06:00,60,87,56.1,0,0,0.4,8.1 +2021-07-02T07:00,62.4,84,57.4,0,0,2.9,7.8 +2021-07-02T08:00,64.3,80,58,0,0,2.3,8.1 +2021-07-02T09:00,67.1,72,57.7,0,0,2.1,8.7 +2021-07-02T10:00,70.4,64,57.8,0,0,4,12.1 +2021-07-02T11:00,73.8,58,57.8,0,0,5.5,15 +2021-07-02T12:00,75.7,52,57,0,0,4.1,15 +2021-07-02T13:00,78.5,46,55.9,0,0,2.2,13.2 +2021-07-02T14:00,80.6,43,56.3,0,0,4,11.6 +2021-07-02T15:00,80.2,42,55.3,0,0,4.5,14.3 +2021-07-02T16:00,80.3,44,56.3,0,0,4.3,12.1 +2021-07-02T17:00,78.9,46,56.2,0,0,6.8,13.4 +2021-07-02T18:00,73.1,61,58.7,0.008,0,8.8,18.6 +2021-07-02T19:00,72.4,68,61.1,0,0,2.7,15 +2021-07-02T20:00,68.5,74,60,0,0,3.2,5.1 +2021-07-02T21:00,65.5,84,60.4,0,0,4.3,6.9 +2021-07-02T22:00,63.3,86,58.9,0,0,4.2,7.2 +2021-07-02T23:00,60.5,90,57.5,0,0,4.1,6.7 +2021-07-03T00:00,59.4,89,56.2,0,0,3.8,5.6 +2021-07-03T01:00,58.9,83,53.6,0,0,3.5,5.6 +2021-07-03T02:00,58.3,78,51.4,0,0,3.8,6 +2021-07-03T03:00,57.4,74,49.3,0,0,4,6.7 +2021-07-03T04:00,56,73,47.4,0,0,4.9,6.7 +2021-07-03T05:00,57.7,70,47.9,0,0,4.5,6.7 +2021-07-03T06:00,63,56,47.1,0,0,2.1,5.1 +2021-07-03T07:00,68.4,51,49.7,0,0,2.8,7.8 +2021-07-03T08:00,74.1,45,51.4,0,0,2.5,8.9 +2021-07-03T09:00,79.4,38,51.9,0,0,2.7,9.4 +2021-07-03T10:00,83.8,31,50.3,0,0,5,12.5 +2021-07-03T11:00,85.9,29,49.6,0,0,4.7,14.3 +2021-07-03T12:00,85.6,28,48.4,0,0,4.8,14.3 +2021-07-03T13:00,85.3,30,50.6,0,0,9.9,20.1 +2021-07-03T14:00,87.4,23,45,0,0,7.6,19.9 +2021-07-03T15:00,83.2,35,52.8,0,0,13.3,27.1 +2021-07-03T16:00,83.8,31,49.7,0,0,7.9,24.2 +2021-07-03T17:00,86,30,50.8,0,0,5.4,16.6 +2021-07-03T18:00,82,39,54.9,0.004,0,5.9,12.1 +2021-07-03T19:00,77.4,60,62.4,0,0,3.8,9.6 +2021-07-03T20:00,72.7,56,55.9,0,0,3.5,5.8 +2021-07-03T21:00,71.4,57,55.3,0,0,6.3,9.8 +2021-07-03T22:00,67.2,66,55.6,0,0,5.6,10.1 +2021-07-03T23:00,65.4,70,55.2,0,0,3.7,6.7 +2021-07-04T00:00,63.4,74,55,0,0,4.4,7.6 +2021-07-04T01:00,61.4,75,53.6,0,0,3.7,7.4 +2021-07-04T02:00,60.2,76,52.4,0,0,5.8,6.5 +2021-07-04T03:00,60.4,68,49.8,0,0,5.9,7.4 +2021-07-04T04:00,61.1,63,48.6,0,0,5.9,8.3 +2021-07-04T05:00,60,71,50.7,0,0,3.8,7.2 +2021-07-04T06:00,63.4,65,51.5,0,0,5.6,9.6 +2021-07-04T07:00,69.4,56,52.9,0,0,2.9,9.8 +2021-07-04T08:00,74.5,47,53.1,0,0,3.2,9.6 +2021-07-04T09:00,78.8,44,55.3,0,0,3.8,11 +2021-07-04T10:00,81.7,41,55.5,0,0,4,13.2 +2021-07-04T11:00,84.2,35,54,0,0,1.6,12.1 +2021-07-04T12:00,82.2,41,56.4,0.024,0,10.2,18.8 +2021-07-04T13:00,75.1,60,60.3,0.039,0,6.8,23.9 +2021-07-04T14:00,80.1,49,59.2,0,0,2.5,15.9 +2021-07-04T15:00,82,44,57.7,0,0,3.6,11.4 +2021-07-04T16:00,80.3,43,56,0,0,2.8,11.9 +2021-07-04T17:00,81.6,39,54,0,0,6.8,9.6 +2021-07-04T18:00,77.5,50,57.4,0,0,11,19.9 +2021-07-04T19:00,74.9,57,58.6,0,0,7.4,19 +2021-07-04T20:00,71.3,68,60.4,0,0,4.8,11.9 +2021-07-04T21:00,68.1,77,60.7,0,0,3.9,8.1 +2021-07-04T22:00,66,81,59.9,0,0,4.3,6.9 +2021-07-04T23:00,63.7,84,58.9,0,0,3.3,6.9 +2021-07-05T00:00,62.5,87,58.5,0,0,3.1,5.4 +2021-07-05T01:00,60.4,93,58.4,0,0,3.6,5.4 +2021-07-05T02:00,59.2,94,57.6,0,0,3.3,5.4 +2021-07-05T03:00,58,93,56,0,0,3.2,5.4 +2021-07-05T04:00,57.7,88,54.1,0,0,2.9,5.4 +2021-07-05T05:00,57.9,86,53.9,0,0,2.9,4.7 +2021-07-05T06:00,63.1,71,53.7,0,0,1.6,4.9 +2021-07-05T07:00,68.5,60,54.1,0,0,0.9,5.8 +2021-07-05T08:00,73.2,52,54.6,0,0,3.4,9.8 +2021-07-05T09:00,77.7,44,54.2,0,0,3.6,11.4 +2021-07-05T10:00,81.4,39,54.1,0,0,2.8,11.4 +2021-07-05T11:00,84,36,54,0,0,2.6,11.2 +2021-07-05T12:00,87.2,31,53.1,0,0,2.7,10.7 +2021-07-05T13:00,88.5,29,52.6,0,0,3.8,13 +2021-07-05T14:00,87.7,29,52,0,0,1.1,12.8 +2021-07-05T15:00,85.8,32,52.7,0,0,7.9,15 +2021-07-05T16:00,77.2,52,58.3,0.02,0,2.2,18.1 +2021-07-05T17:00,76.9,45,54,0,0,7.2,14.1 +2021-07-05T18:00,71.3,67,60,0.028,0,7.1,16.3 +2021-07-05T19:00,71,70,60.7,0,0,7.1,12.8 +2021-07-05T20:00,70.4,65,57.9,0,0,4.5,11.4 +2021-07-05T21:00,68.6,70,58.3,0,0,4.7,7.6 +2021-07-05T22:00,67.4,71,57.8,0,0,5.8,9.6 +2021-07-05T23:00,64.8,80,58.4,0,0,3.9,9.6 +2021-07-06T00:00,65.6,76,57.7,0,0,4.9,7.8 +2021-07-06T01:00,65.9,74,57.6,0,0,4.2,8.3 +2021-07-06T02:00,63.3,82,57.8,0,0,5.1,6.9 +2021-07-06T03:00,66,74,57.5,0,0,3.3,7.8 +2021-07-06T04:00,64.5,78,57.6,0,0,3.9,4.3 +2021-07-06T05:00,63.1,83,57.7,0,0,2.8,8.9 +2021-07-06T06:00,65.7,75,57.6,0,0,3.8,7.6 +2021-07-06T07:00,67.8,70,57.7,0,0,5.2,11.4 +2021-07-06T08:00,69.7,65,57.4,0,0,5.9,13.4 +2021-07-06T09:00,71.7,60,57.1,0,0,5.7,13.6 +2021-07-06T10:00,74.2,55,57.1,0,0,6,14.5 +2021-07-06T11:00,74.7,53,56.4,0.004,0,6,15.2 +2021-07-06T12:00,77.7,48,56.5,0,0,5,15.7 +2021-07-06T13:00,78.5,48,57.1,0,0,4,15 +2021-07-06T14:00,80.2,45,56.8,0.004,0,4.3,13.6 +2021-07-06T15:00,77.6,49,56.8,0.016,0,4.6,13.9 +2021-07-06T16:00,78.5,46,55.8,0,0,0.6,12.3 +2021-07-06T17:00,77.8,48,56.5,0.004,0,4.9,7.8 +2021-07-06T18:00,73.4,62,59.6,0.012,0,9.4,20.4 +2021-07-06T19:00,71.9,64,58.9,0.004,0,3.3,18.8 +2021-07-06T20:00,68.9,75,60.6,0,0,3.2,6.3 +2021-07-06T21:00,67.7,78,60.8,0,0,3.4,5.6 +2021-07-06T22:00,66.3,80,59.8,0,0,3.4,5.4 +2021-07-06T23:00,65.3,82,59.7,0,0,3,4.9 +2021-07-07T00:00,64.5,83,59.1,0,0,2.8,4.3 +2021-07-07T01:00,62,87,58,0,0,2.9,5.1 +2021-07-07T02:00,60.2,89,56.9,0,0,3.6,4.9 +2021-07-07T03:00,59.5,86,55.2,0,0,2.8,4.9 +2021-07-07T04:00,58.3,85,53.8,0,0,3.2,5.4 +2021-07-07T05:00,58.3,86,54.1,0,0,2.7,5.4 +2021-07-07T06:00,61.3,77,54,0,0,1.9,6.3 +2021-07-07T07:00,66.2,67,54.8,0,0,0.8,6 +2021-07-07T08:00,71.2,57,55.1,0,0,1,7.4 +2021-07-07T09:00,75.9,49,55.1,0,0,1.7,8.9 +2021-07-07T10:00,80.1,40,53.3,0,0,3.6,12.1 +2021-07-07T11:00,83,33,50.9,0,0,2.9,12.1 +2021-07-07T12:00,85.6,26,46.8,0,0,3.6,11.9 +2021-07-07T13:00,87.2,22,43.4,0,0,4.5,12.8 +2021-07-07T14:00,88.1,20,42.2,0,0,5.4,13.6 +2021-07-07T15:00,88.7,19,41.3,0,0,5.2,13.9 +2021-07-07T16:00,88.6,19,40.6,0,0,4.8,13 +2021-07-07T17:00,87.6,18,39.1,0,0,6.6,12.5 +2021-07-07T18:00,86.2,21,42.3,0,0,6,12.8 +2021-07-07T19:00,79.1,33,47.8,0,0,5.3,9.8 +2021-07-07T20:00,76.4,34,46.1,0,0,9.7,15.2 +2021-07-07T21:00,73.1,42,48.7,0,0,11,17.9 +2021-07-07T22:00,71.7,46,49.6,0,0,12.4,20.1 +2021-07-07T23:00,70.4,47,49.4,0,0,13.1,21.3 +2021-07-08T00:00,68.9,49,48.9,0,0,12.1,21.5 +2021-07-08T01:00,67.7,49,48,0,0,9.8,20.1 +2021-07-08T02:00,66.1,50,47,0,0,6.8,16.1 +2021-07-08T03:00,64.6,51,46.2,0,0,6.4,11.2 +2021-07-08T04:00,63,53,45.4,0,0,5.4,10.3 +2021-07-08T05:00,62.9,54,46.1,0,0,8,8.3 +2021-07-08T06:00,69.8,41,45.3,0,0,3.1,9.8 +2021-07-08T07:00,75.6,36,46.7,0,0,1.4,6.7 +2021-07-08T08:00,81.8,32,49.2,0,0,3,8.9 +2021-07-08T09:00,88,26,49.2,0,0,2.4,9.4 +2021-07-08T10:00,92.6,21,47.2,0,0,1.1,14.8 +2021-07-08T11:00,95.1,15,40.6,0,0,8.7,17.7 +2021-07-08T12:00,94.2,16,41,0,0,10.6,21.5 +2021-07-08T13:00,94.5,16,41,0,0,5.6,20.8 +2021-07-08T14:00,95.5,15,40.8,0,0,6,14.1 +2021-07-08T15:00,93.3,17,41.6,0,0,11.9,21 +2021-07-08T16:00,93.6,16,40.2,0,0,5.9,22.1 +2021-07-08T17:00,92.5,19,44.1,0,0,5.4,12.3 +2021-07-08T18:00,87.5,26,48.2,0,0,9,14.8 +2021-07-08T19:00,81.3,39,53.8,0,0,4.8,14.8 +2021-07-08T20:00,76,47,54.2,0,0,5.9,7.6 +2021-07-08T21:00,79.2,39,51.8,0,0,1.7,7.8 +2021-07-08T22:00,73.6,45,50.7,0,0,6.7,11.2 +2021-07-08T23:00,69.9,46,48.1,0,0,5.2,11.2 +2021-07-09T00:00,68.3,50,48.7,0,0,5.4,9.2 +2021-07-09T01:00,65.8,51,47,0,0,5.5,8.5 +2021-07-09T02:00,64.7,48,44.8,0,0,6,7.6 +2021-07-09T03:00,69.3,37,42.1,0,0,5,8.3 +2021-07-09T04:00,62.3,50,43.5,0,0,5.9,6 +2021-07-09T05:00,63.9,59,49.1,0,0,5.6,7.6 +2021-07-09T06:00,69.7,48,48.9,0,0,5.4,7.8 +2021-07-09T07:00,75.5,41,49.9,0,0,5.5,11.2 +2021-07-09T08:00,82,33,49.7,0,0,4.5,11.4 +2021-07-09T09:00,87.4,25,47.2,0,0,3.8,11 +2021-07-09T10:00,90.1,21,45.5,0,0,4.6,13.6 +2021-07-09T11:00,92.3,20,45.2,0,0,6.2,14.3 +2021-07-09T12:00,93.6,18,43.5,0,0,2.1,15.4 +2021-07-09T13:00,92.9,18,42.8,0,0,5.3,12.8 +2021-07-09T14:00,96.3,15,41.3,0,0,8.3,17.9 +2021-07-09T15:00,96.4,15,40.5,0,0,5.5,17.4 +2021-07-09T16:00,91.9,18,42.6,0,0,4.4,21.3 +2021-07-09T17:00,85.6,34,53.7,0,0,10,17.9 +2021-07-09T18:00,86.3,35,55.2,0,0,2.2,19.7 +2021-07-09T19:00,80.6,37,52.2,0,0,9.8,19.9 +2021-07-09T20:00,76.6,46,54.1,0,0,8.6,15.7 +2021-07-09T21:00,73.6,56,57,0,0,6.8,13.9 +2021-07-09T22:00,71.2,60,56.8,0,0,4.3,11.9 +2021-07-09T23:00,66.9,64,54.5,0,0,5.9,7.4 +2021-07-10T00:00,70.4,43,46.6,0,0,8.8,12.5 +2021-07-10T01:00,70.4,47,49.5,0,0,10.7,17.9 +2021-07-10T02:00,68.9,62,55.4,0,0,16.4,29.5 +2021-07-10T03:00,66.4,75,58.4,0,0,12.3,27.3 +2021-07-10T04:00,66,75,57.8,0,0,9.6,20.6 +2021-07-10T05:00,66.9,62,53.5,0,0,6.5,17.4 +2021-07-10T06:00,67.2,60,53,0,0,4.1,11.2 +2021-07-10T07:00,68.8,56,52.5,0,0,1.8,8.1 +2021-07-10T08:00,70.9,52,52.6,0,0,2.2,9.4 +2021-07-10T09:00,73.2,48,52.6,0,0,1.3,9.4 +2021-07-10T10:00,76.2,42,51.7,0,0,3.2,11.9 +2021-07-10T11:00,79,36,49.7,0,0,3.7,13.2 +2021-07-10T12:00,81,32,48.5,0,0,4.8,14.1 +2021-07-10T13:00,82.4,31,48.4,0,0,8.2,18.3 +2021-07-10T14:00,83.1,29,47.3,0,0,8.4,19.2 +2021-07-10T15:00,83.8,27,45.9,0,0,7.6,18.8 +2021-07-10T16:00,83.5,26,45.4,0,0,9.4,19 +2021-07-10T17:00,82.2,28,46.3,0,0,7.6,19 +2021-07-10T18:00,80.9,29,45.5,0,0,8.1,15.2 +2021-07-10T19:00,78.2,31,45,0,0,4.5,14.5 +2021-07-10T20:00,75,30,41.7,0,0,6,9.4 +2021-07-10T21:00,71.1,38,44.1,0,0,5.8,9.8 +2021-07-10T22:00,69.3,40,44.2,0,0,3.6,6.7 +2021-07-10T23:00,67.6,42,44,0,0,5.2,6.3 +2021-07-11T00:00,64.9,46,43.8,0,0,6.3,7.6 +2021-07-11T01:00,63.1,52,45.1,0,0,4.9,7.8 +2021-07-11T02:00,60.2,61,46.6,0,0,3.8,6 +2021-07-11T03:00,59,63,46.3,0,0,4.3,6.3 +2021-07-11T04:00,57.8,68,47.5,0,0,4.1,6.3 +2021-07-11T05:00,55.3,80,49.3,0,0,2,6.7 +2021-07-11T06:00,59.5,69,49.4,0,0,1.8,6.5 +2021-07-11T07:00,64.9,57,49.5,0,0,1.6,6.9 +2021-07-11T08:00,69.4,47,48.2,0,0,3.3,10.3 +2021-07-11T09:00,73.5,40,47.6,0,0,3.9,12.3 +2021-07-11T10:00,76.9,34,46.7,0,0,3.6,12.5 +2021-07-11T11:00,79.7,29,44.9,0,0,4.1,13.2 +2021-07-11T12:00,82,25,42.2,0,0,4.8,14.3 +2021-07-11T13:00,83.4,23,42.3,0,0,4.7,14.8 +2021-07-11T14:00,84.7,22,42.3,0,0,3.3,14.3 +2021-07-11T15:00,85.7,21,41.8,0,0,3.9,12.1 +2021-07-11T16:00,86.1,21,41.5,0,0,5.5,13.2 +2021-07-11T17:00,85.5,22,42.1,0,0,6.8,13.6 +2021-07-11T18:00,84.1,23,42.2,0,0,6.3,13.9 +2021-07-11T19:00,78.5,38,50.9,0,0,5,11.4 +2021-07-11T20:00,79.1,27,42.1,0,0,4,6.5 +2021-07-11T21:00,75.3,31,42.4,0,0,2.8,4.7 +2021-07-11T22:00,69.8,41,45.1,0,0,2.7,3.6 +2021-07-11T23:00,64.7,56,48.7,0,0,3.4,5.4 +2021-07-12T00:00,62.7,64,50.3,0,0,3.5,5.4 +2021-07-12T01:00,60.8,67,49.7,0,0,4,6.5 +2021-07-12T02:00,59.9,67,48.7,0,0,3.5,6.7 +2021-07-12T03:00,58.3,68,47.8,0,0,3.2,5.6 +2021-07-12T04:00,57,69,46.9,0,0,4.3,5.1 +2021-07-12T05:00,57,72,48,0,0,4,7.2 +2021-07-12T06:00,61.6,59,47.2,0,0,1,4.9 +2021-07-12T07:00,66.1,53,48.5,0,0,1.6,6.7 +2021-07-12T08:00,71.2,46,49.4,0,0,1.3,8.1 +2021-07-12T09:00,76.6,39,49.8,0,0,1.4,8.9 +2021-07-12T10:00,81.4,33,49.2,0,0,2.8,11.2 +2021-07-12T11:00,85.5,24,44.6,0,0,3.9,12.5 +2021-07-12T12:00,88.4,18,40.1,0,0,5.7,15 +2021-07-12T13:00,90.3,16,37.3,0,0,5.9,15.9 +2021-07-12T14:00,91.2,15,36.3,0,0,6.2,15.4 +2021-07-12T15:00,91.1,15,36.4,0,0,7.7,16.6 +2021-07-12T16:00,90.2,15,36.6,0,0,7.4,16.6 +2021-07-12T17:00,87.7,16,36.4,0,0,1.1,15.4 +2021-07-12T18:00,87.2,17,37.6,0,0,0.4,6.3 +2021-07-12T19:00,82.8,28,46.7,0,0,2.7,3.1 +2021-07-12T20:00,77.2,32,45.2,0,0,3.5,4.7 +2021-07-12T21:00,76.4,31,43.8,0,0,1.3,4.5 +2021-07-12T22:00,69.3,45,47.3,0,0,4.1,4.9 +2021-07-12T23:00,66.8,49,47.2,0,0,3.3,6.5 +2021-07-13T00:00,64,55,47.7,0,0,4.1,6.9 +2021-07-13T01:00,62.6,57,47.2,0,0,4.7,7.6 +2021-07-13T02:00,62.3,56,46.6,0,0,4.4,7.6 +2021-07-13T03:00,62.1,54,45.1,0,0,4.3,7.4 +2021-07-13T04:00,62.2,53,44.6,0,0,3.3,7.4 +2021-07-13T05:00,62.9,58,47.9,0,0,4.3,5.6 +2021-07-13T06:00,66.3,52,48,0,0,3.9,7.4 +2021-07-13T07:00,71.7,43,48.1,0,0,2.2,7.6 +2021-07-13T08:00,77,36,47.8,0,0,3.5,8.3 +2021-07-13T09:00,79.3,31,46.2,0,0,13.5,25.3 +2021-07-13T10:00,82.5,30,47.8,0,0,12,25.3 +2021-07-13T11:00,83.6,28,47,0,0,11.9,23.9 +2021-07-13T12:00,85.5,25,45.1,0,0,6.4,24.2 +2021-07-13T13:00,87.3,25,46.7,0,0,1.6,16.1 +2021-07-13T14:00,87.5,24,46,0,0,6.2,14.1 +2021-07-13T15:00,86.7,23,45,0,0,6.7,17.7 +2021-07-13T16:00,87.5,22,44.1,0,0,5.2,15 +2021-07-13T17:00,82,30,47.3,0,0,6.3,15.2 +2021-07-13T18:00,82.1,31,48.3,0,0,6.2,11.4 +2021-07-13T19:00,77.7,35,48.1,0,0,13.9,22.6 +2021-07-13T20:00,76.3,36,47.2,0,0,10.9,23 +2021-07-13T21:00,75.4,38,48.3,0,0,10.5,18.1 +2021-07-13T22:00,73.7,40,47.6,0,0,5.8,17.4 +2021-07-13T23:00,71.5,43,48,0,0,2.9,9.6 +2021-07-14T00:00,70.8,44,48,0,0,2.9,4.7 +2021-07-14T01:00,68.1,50,49,0,0,4.5,5.4 +2021-07-14T02:00,67,49,47.1,0,0,4.2,6.5 +2021-07-14T03:00,65.1,51,46.5,0,0,5.1,6.9 +2021-07-14T04:00,65.1,50,45.8,0,0,3.4,8.3 +2021-07-14T05:00,61.5,76,54,0,0,3.6,7.4 +2021-07-14T06:00,64.1,71,54.5,0,0,2.7,5.8 +2021-07-14T07:00,66.4,65,54.4,0,0,6.9,13.2 +2021-07-14T08:00,67.9,66,56.3,0,0,6.8,14.3 +2021-07-14T09:00,69.7,64,56.8,0,0,5.7,14.1 +2021-07-14T10:00,70.3,63,57.2,0,0,2.2,13.2 +2021-07-14T11:00,72.9,58,57.1,0,0,1.3,8.5 +2021-07-14T12:00,75.4,53,57,0,0,2.1,9.6 +2021-07-14T13:00,77,49,56.3,0,0,0.8,10.1 +2021-07-14T14:00,79.7,44,55.7,0,0,2,9.4 +2021-07-14T15:00,80,42,54.8,0,0,3.8,10.5 +2021-07-14T16:00,79.2,42,54.1,0.02,0,4.9,11.9 +2021-07-14T17:00,75.2,44,51.6,0.043,0,4.2,15.9 +2021-07-14T18:00,71.3,49,51.4,0.012,0,9,14.8 +2021-07-14T19:00,68.8,61,55,0.004,0,9,16.1 +2021-07-14T20:00,66.9,64,54.5,0,0,3.9,14.8 +2021-07-14T21:00,64.9,69,54.4,0,0,3.1,6.5 +2021-07-14T22:00,62.1,77,54.6,0,0,3.7,5.1 +2021-07-14T23:00,60.4,83,55.3,0,0,2.9,5.1 +2021-07-15T00:00,59.6,81,53.8,0,0,3.5,6 +2021-07-15T01:00,57.5,85,53,0,0,2.8,5.8 +2021-07-15T02:00,56.1,88,52.5,0,0,3.5,4.5 +2021-07-15T03:00,56,86,51.8,0,0,2.8,4.9 +2021-07-15T04:00,55.3,84,50.5,0,0,3.4,4.3 +2021-07-15T05:00,56.2,83,51.2,0,0,2.1,4.3 +2021-07-15T06:00,59,74,50.9,0,0,1.9,5.4 +2021-07-15T07:00,63,65,51.1,0,0,3.7,9.4 +2021-07-15T08:00,66.7,58,51.6,0,0,4.3,12.1 +2021-07-15T09:00,71.4,49,51.4,0,0,2.8,11.9 +2021-07-15T10:00,76.6,41,51.2,0,0,3.7,12.1 +2021-07-15T11:00,81.1,36,51.7,0,0,3.7,14.5 +2021-07-15T12:00,82.1,31,48.7,0.004,0,2.2,14.8 +2021-07-15T13:00,84.6,24,44.1,0,0,1.4,13.9 +2021-07-15T14:00,85.9,22,42.2,0,0,3.3,13 +2021-07-15T15:00,86,23,43.8,0,0,8.9,16.8 +2021-07-15T16:00,81.9,32,48.9,0,0,10.6,24.8 +2021-07-15T17:00,83.6,24,43.3,0,0,2.5,20.8 +2021-07-15T18:00,83.5,23,41.6,0,0,0.9,7.4 +2021-07-15T19:00,79.1,32,46.6,0,0,3.2,4.5 +2021-07-15T20:00,76.7,34,46.6,0,0,5.3,9.8 +2021-07-15T21:00,74.8,40,48.8,0,0,2.4,8.7 +2021-07-15T22:00,68.3,52,49.9,0,0,3,4.9 +2021-07-15T23:00,64.4,62,51.2,0,0,3.5,6.3 +2021-07-16T00:00,63.2,63,50.6,0,0,4.4,7.2 +2021-07-16T01:00,62.7,59,48.1,0,0,4.9,8.1 +2021-07-16T02:00,62.5,53,45.1,0,0,6.2,10.1 +2021-07-16T03:00,62.4,50,43.3,0,0,5.7,10.3 +2021-07-16T04:00,61.6,51,43.1,0,0,5.1,9.4 +2021-07-16T05:00,63.1,49,43.5,0,0,1.7,7.8 +2021-07-16T06:00,64.6,52,46.7,0,0,1.8,3.1 +2021-07-16T07:00,69.1,43,46,0,0,1.5,6.5 +2021-07-16T08:00,75.4,34,45.1,0,0,2,8.3 +2021-07-16T09:00,81.4,25,42.1,0,0,1.3,8.9 +2021-07-16T10:00,85.6,20,39.4,0,0,0.9,8.5 +2021-07-16T11:00,88.2,17,38,0,0,2.5,10.5 +2021-07-16T12:00,89.9,15,36.8,0,0,4.6,13.6 +2021-07-16T13:00,90.7,15,36.4,0,0,4.6,14.3 +2021-07-16T14:00,91.3,15,36.9,0,0,5.2,13.6 +2021-07-16T15:00,90.6,15,36.3,0,0,4,13.9 +2021-07-16T16:00,90.7,15,36.2,0,0,4.2,11.9 +2021-07-16T17:00,88.1,19,40.4,0,0,9.2,15.4 +2021-07-16T18:00,84.9,23,42.9,0,0,13.4,23 +2021-07-16T19:00,80.2,29,44.6,0,0,9.2,23 +2021-07-16T20:00,77.6,32,45.5,0,0,2.3,15.2 +2021-07-16T21:00,73.4,39,46.9,0,0,4.5,6.9 +2021-07-16T22:00,69.6,47,48.7,0,0,3.6,6.9 +2021-07-16T23:00,67.3,55,50.4,0,0,3.5,5.4 +2021-07-17T00:00,66.7,56,50.6,0,0,3.9,6.3 +2021-07-17T01:00,64.7,60,50.6,0,0,4.2,7.4 +2021-07-17T02:00,63.1,60,49.2,0,0,4.3,7.4 +2021-07-17T03:00,61.8,61,48.3,0,0,3.7,7.4 +2021-07-17T04:00,60.7,63,48,0,0,3.4,6.3 +2021-07-17T05:00,63.6,65,51.6,0,0,3.3,6.3 +2021-07-17T06:00,65.8,58,50.6,0,0,4,6.3 +2021-07-17T07:00,69.8,47,48.5,0,0,4.6,11 +2021-07-17T08:00,74.5,39,48.1,0,0,3.3,11 +2021-07-17T09:00,78.8,33,47.7,0,0,2.7,10.7 +2021-07-17T10:00,82.9,28,46.8,0,0,2.7,11.2 +2021-07-17T11:00,86.3,25,46.1,0,0,3.1,11.9 +2021-07-17T12:00,89.2,22,45.4,0,0,5.1,14.5 +2021-07-17T13:00,90.5,21,45.1,0,0,6.1,15.7 +2021-07-17T14:00,91.1,20,44.6,0,0,7.4,16.8 +2021-07-17T15:00,91.6,19,43.2,0,0,8.2,18.8 +2021-07-17T16:00,90.7,19,43.4,0,0,6.9,17.9 +2021-07-17T17:00,80.5,39,53.6,0,0,11.8,14.8 +2021-07-17T18:00,81.8,36,52.4,0,0,6.4,20.8 +2021-07-17T19:00,80.1,40,53.7,0,0,2.6,12.3 +2021-07-17T20:00,76.8,46,54.6,0,0,2.5,5.4 +2021-07-17T21:00,74.3,47,52.9,0,0,2.8,3.4 +2021-07-17T22:00,73,46,51.1,0,0,2.1,3.6 +2021-07-17T23:00,69.5,50,49.9,0,0,3.5,5.1 +2021-07-18T00:00,68.1,47,47.2,0,0,3.7,6.3 +2021-07-18T01:00,65.8,51,47.2,0,0,3.6,6 +2021-07-18T02:00,63.5,58,48.5,0,0,3.8,6 +2021-07-18T03:00,62.1,63,49.2,0,0,3.3,5.4 +2021-07-18T04:00,60.6,68,49.9,0,0,3.4,4.7 +2021-07-18T05:00,61.1,58,46.4,0,0,3.8,4 +2021-07-18T06:00,63.1,57,47.8,0,0,3.6,7.8 +2021-07-18T07:00,68.5,49,48.6,0,0,1.3,7.6 +2021-07-18T08:00,73.4,42,48.9,0,0,2.3,8.7 +2021-07-18T09:00,78.2,36,49.1,0,0,3.5,11.4 +2021-07-18T10:00,82.6,32,49.4,0,0,4,12.8 +2021-07-18T11:00,86.4,27,48.4,0,0,4.3,13.2 +2021-07-18T12:00,89.1,23,46,0,0,6.4,15.9 +2021-07-18T13:00,90.3,20,44.1,0,0,9.8,20.4 +2021-07-18T14:00,91,19,42.4,0,0,9.9,21.5 +2021-07-18T15:00,90.8,19,42.8,0,0,8.5,20.8 +2021-07-18T16:00,90.2,20,43.9,0,0,8.2,18.3 +2021-07-18T17:00,89.9,17,38.9,0,0,8.4,18.1 +2021-07-18T18:00,88.4,18,39.6,0,0,6.6,15.7 +2021-07-18T19:00,82.2,27,44.6,0,0,5,11.4 +2021-07-18T20:00,77.9,31,44.7,0,0,5.5,8.1 +2021-07-18T21:00,76.6,37,48,0,0,5.6,8.3 +2021-07-18T22:00,74.7,44,51.2,0,0,8.2,14.8 +2021-07-18T23:00,69.1,55,52.3,0,0,3.6,13.4 +2021-07-19T00:00,67,62,53.7,0,0,4.7,7.6 +2021-07-19T01:00,64.5,66,52.7,0,0,3,7.8 +2021-07-19T02:00,62.1,66,50.6,0,0,2.2,5.1 +2021-07-19T03:00,61.3,66,49.8,0,0,3.1,4.9 +2021-07-19T04:00,60.4,63,47.7,0,0,3.2,5.1 +2021-07-19T05:00,59.6,69,49.6,0,0,2.2,5.1 +2021-07-19T06:00,63.6,59,49.1,0,0,2.8,6.3 +2021-07-19T07:00,71.2,46,49.2,0,0,2.3,7.6 +2021-07-19T08:00,78,36,48.7,0,0,0.8,7.8 +2021-07-19T09:00,82.7,33,50.7,0,0,0.6,8.1 +2021-07-19T10:00,86.3,26,47.7,0,0,1,8.9 +2021-07-19T11:00,88.8,20,43.1,0,0,1.9,10.5 +2021-07-19T12:00,91,17,39.8,0,0,3.7,12.5 +2021-07-19T13:00,92.5,14,37.2,0,0,6.8,16.3 +2021-07-19T14:00,93,14,36.5,0,0,8.3,18.6 +2021-07-19T15:00,92.9,15,37.7,0,0,9.2,19.2 +2021-07-19T16:00,92.2,15,38.6,0,0,9.6,19.2 +2021-07-19T17:00,90.2,16,37.4,0,0,11.2,19 +2021-07-19T18:00,89.1,16,36.6,0,0,10.1,20.8 +2021-07-19T19:00,84.3,20,38.4,0,0,5.2,17 +2021-07-19T20:00,78.9,26,41.1,0,0,4.9,8.5 +2021-07-19T21:00,76,34,45.3,0,0,4.5,7.2 +2021-07-19T22:00,72.5,41,47.4,0,0,5.8,9.2 +2021-07-19T23:00,70.3,43,46.4,0,0,5.8,10.1 +2021-07-20T00:00,68.3,44,45.5,0,0,4.5,9.6 +2021-07-20T01:00,67.1,45,45.2,0,0,5.1,8.3 +2021-07-20T02:00,65.6,47,44.6,0,0,5,8.7 +2021-07-20T03:00,63.9,49,44.5,0,0,4.4,8.3 +2021-07-20T04:00,62,54,45.1,0,0,3.8,7.4 +2021-07-20T05:00,61.6,58,46.8,0,0,2,5.6 +2021-07-20T06:00,64.1,55,47.6,0,0,3,6 +2021-07-20T07:00,71.2,41,46.5,0,0,1.8,7.2 +2021-07-20T08:00,76.6,34,46.1,0,0,0.6,7.2 +2021-07-20T09:00,81.5,29,46.3,0,0,0.6,7.8 +2021-07-20T10:00,85.6,25,46,0,0,2.8,11 +2021-07-20T11:00,89.4,21,45,0,0,3.8,13 +2021-07-20T12:00,92,19,43.6,0,0,2.8,12.8 +2021-07-20T13:00,94.1,17,42.4,0,0,3,11.9 +2021-07-20T14:00,95.3,16,42.4,0,0,3.2,13 +2021-07-20T15:00,95.8,16,42.3,0,0,4.4,13.2 +2021-07-20T16:00,95,16,41.9,0,0,6.4,13.9 +2021-07-20T17:00,92.4,21,46.3,0,0,5.1,15.9 +2021-07-20T18:00,90.4,22,46.9,0,0,3.9,10.7 +2021-07-20T19:00,86.5,25,46.6,0,0,6.5,10.5 +2021-07-20T20:00,82.3,28,46,0,0,5.1,11.4 +2021-07-20T21:00,79.1,34,48.6,0,0,3.2,8.5 +2021-07-20T22:00,78.5,34,48.1,0,0,6.9,10.7 +2021-07-20T23:00,76.6,34,46.3,0,0,9.2,15 +2021-07-21T00:00,74.9,38,47.3,0,0,8.7,15.4 +2021-07-21T01:00,72.2,42,48.1,0,0,6.1,14.5 +2021-07-21T02:00,70.3,47,48.9,0,0,4.6,10.3 +2021-07-21T03:00,69.3,49,49.5,0,0,3.6,7.6 +2021-07-21T04:00,68.4,52,50,0,0,3.7,5.8 +2021-07-21T05:00,66.8,55,49.9,0,0,3.3,5.8 +2021-07-21T06:00,69.4,50,50,0,0,4.7,7.8 +2021-07-21T07:00,73.8,47,52.2,0,0,1.1,8.5 +2021-07-21T08:00,78.1,43,53.7,0,0,2.2,8.5 +2021-07-21T09:00,82,36,52.5,0,0,3.4,10.5 +2021-07-21T10:00,84.5,32,51,0,0,5.7,14.5 +2021-07-21T11:00,86.8,29,50.5,0,0,5.8,15.4 +2021-07-21T12:00,89.3,26,50.4,0,0,5.8,15.7 +2021-07-21T13:00,89.5,25,49.1,0.004,0,6.3,16.6 +2021-07-21T14:00,89,25,49,0,0,5,16.1 +2021-07-21T15:00,90.3,24,48.7,0,0,5.8,14.3 +2021-07-21T16:00,88.7,25,48.7,0,0,7.8,16.6 +2021-07-21T17:00,84.8,36,55.2,0,0,11.8,16.6 +2021-07-21T18:00,81.9,40,55.1,0,0,5.3,20.6 +2021-07-21T19:00,80.7,41,55.1,0,0,4.7,10.7 +2021-07-21T20:00,79.3,49,58.5,0,0,9,14.5 +2021-07-21T21:00,77,51,57.4,0,0,7.6,14.8 +2021-07-21T22:00,74.8,51,55.3,0,0,7.6,12.5 +2021-07-21T23:00,73.2,53,55.2,0,0,5.2,12.5 +2021-07-22T00:00,71.4,55,54.5,0,0,4.5,8.7 +2021-07-22T01:00,70,56,53.3,0,0,4,7.8 +2021-07-22T02:00,67.7,59,52.8,0,0,3.2,6.5 +2021-07-22T03:00,66,61,52.3,0,0,3.8,4.9 +2021-07-22T04:00,65.8,61,51.7,0,0,3.8,5.1 +2021-07-22T05:00,68.8,50,49.4,0,0,3.4,4.9 +2021-07-22T06:00,70.7,46,48.7,0,0,0.5,6.3 +2021-07-22T07:00,74,42,49.5,0,0,1.6,6 +2021-07-22T08:00,78.3,40,52.2,0,0,3.7,10.5 +2021-07-22T09:00,82.8,35,52.3,0,0,4.6,12.5 +2021-07-22T10:00,87.1,28,50.1,0,0,6.2,15 +2021-07-22T11:00,89.7,27,51.3,0,0,5.9,15.7 +2021-07-22T12:00,92.2,25,51.4,0,0,5.9,15.9 +2021-07-22T13:00,93.3,23,49.5,0,0,8,17.7 +2021-07-22T14:00,92.1,22,48.4,0,0,7.8,18.1 +2021-07-22T15:00,91.9,22,48.1,0,0,2.5,17 +2021-07-22T16:00,91.4,23,47.9,0,0,1.1,10.5 +2021-07-22T17:00,83.1,39,55.9,0,0,9.6,15 +2021-07-22T18:00,84.7,36,55,0,0,9.1,16.8 +2021-07-22T19:00,80.5,46,57.6,0.004,0,10.5,16.1 +2021-07-22T20:00,78.7,49,57.9,0,0,10.5,20.1 +2021-07-22T21:00,77.3,48,56.3,0,0,6.3,16.8 +2021-07-22T22:00,74.8,53,56.4,0,0,4.1,10.3 +2021-07-22T23:00,72.6,58,56.8,0,0,4.2,7.2 +2021-07-23T00:00,72.6,57,56.4,0,0,4.7,7.8 +2021-07-23T01:00,73,53,55,0,0,3.7,8.5 +2021-07-23T02:00,71.5,54,53.8,0,0,3.3,6.3 +2021-07-23T03:00,70.8,50,51.4,0,0,5.1,6.7 +2021-07-23T04:00,70.1,51,51,0,0,6.6,8.1 +2021-07-23T05:00,68.3,57,52.3,0,0,6.2,8.1 +2021-07-23T06:00,73.4,49,53,0,0,4.6,7.8 +2021-07-23T07:00,77.1,45,54.3,0,0,5.5,11 +2021-07-23T08:00,80.3,40,53.9,0,0,6.1,14.3 +2021-07-23T09:00,83.5,34,52.4,0,0,5.9,14.1 +2021-07-23T10:00,86.3,31,51.8,0,0,6,15.4 +2021-07-23T11:00,88.6,28,51.3,0,0,3.9,15.2 +2021-07-23T12:00,90.1,27,51.2,0,0,4.9,14.3 +2021-07-23T13:00,91,26,51.1,0,0,5.9,15 +2021-07-23T14:00,89.2,28,51.8,0,0,10.2,21.5 +2021-07-23T15:00,89.1,28,51.3,0.004,0,3.6,21.5 +2021-07-23T16:00,86.6,30,51.1,0,0,8.4,15.9 +2021-07-23T17:00,79.8,44,55.9,0,0,14.6,18.1 +2021-07-23T18:00,79.6,40,53.4,0,0,10.1,25.9 +2021-07-23T19:00,77.5,45,54.7,0,0,7.5,18.3 +2021-07-23T20:00,72.1,65,59.5,0.024,0,3,16.1 +2021-07-23T21:00,68.7,84,63.7,0.02,0,8,19.2 +2021-07-23T22:00,68.3,78,61.3,0,0,7.5,19.7 +2021-07-23T23:00,68.8,76,60.9,0,0,5.8,14.3 +2021-07-24T00:00,68.2,78,61.1,0,0,6.9,12.3 +2021-07-24T01:00,66.7,81,60.6,0,0,2.6,11.2 +2021-07-24T02:00,65.3,84,60.3,0,0,2.6,4.3 +2021-07-24T03:00,64.3,87,60.3,0,0,2.8,4 +2021-07-24T04:00,64.6,82,59,0,0,2.7,4.9 +2021-07-24T05:00,66.7,65,54.7,0,0,4,4.3 +2021-07-24T06:00,67.7,63,54.5,0,0,1.9,6.5 +2021-07-24T07:00,72.4,54,55,0,0,1.8,6.7 +2021-07-24T08:00,76.8,43,52.7,0,0,5.9,12.1 +2021-07-24T09:00,78.5,41,52.9,0,0,8.4,16.8 +2021-07-24T10:00,80.6,37,52.1,0,0,7.1,17 +2021-07-24T11:00,83.7,30,49.4,0,0,6.8,15.9 +2021-07-24T12:00,84.5,25,45.2,0,0,8.1,17.2 +2021-07-24T13:00,84.7,24,43.9,0,0,5.3,17 +2021-07-24T14:00,88.3,20,42.4,0,0,7.3,16.3 +2021-07-24T15:00,87,21,42.7,0,0,10.1,19.9 +2021-07-24T16:00,86.8,20,40.4,0,0,8.9,20.1 +2021-07-24T17:00,82.1,28,46,0,0,7.2,17.4 +2021-07-24T18:00,80.9,29,46,0,0,5.5,12.8 +2021-07-24T19:00,78.3,35,48.7,0,0,7.4,11.6 +2021-07-24T20:00,75.1,41,49.6,0,0,5.5,13 +2021-07-24T21:00,74.5,43,50.8,0,0,1.9,9.2 +2021-07-24T22:00,71.7,51,52.7,0,0,3.1,3.6 +2021-07-24T23:00,68.6,57,52.9,0,0,3.8,4.9 +2021-07-25T00:00,66.7,61,52.7,0,0,3.4,5.6 +2021-07-25T01:00,65.4,64,53.1,0,0,4.9,8.1 +2021-07-25T02:00,65.1,64,52.8,0,0,4.4,8.5 +2021-07-25T03:00,63.4,69,53,0,0,3.1,7.4 +2021-07-25T04:00,63.1,71,53.4,0,0,2.7,4.7 +2021-07-25T05:00,61.9,73,53.2,0,0,2.9,4.5 +2021-07-25T06:00,65.4,63,52.4,0,0,3.3,6.9 +2021-07-25T07:00,70.1,54,52.4,0,0,2.7,7.4 +2021-07-25T08:00,75.4,43,51.4,0,0,1.5,8.9 +2021-07-25T09:00,79.5,35,49.8,0,0,2.3,9.6 +2021-07-25T10:00,83.7,30,49,0,0,3.2,12.1 +2021-07-25T11:00,86.6,27,48.3,0,0,2.4,14.3 +2021-07-25T12:00,89,24,47.2,0,0,2.7,13 +2021-07-25T13:00,90.3,23,47.3,0,0,4.3,13.9 +2021-07-25T14:00,84.8,38,56.6,0.02,0,14.1,23 +2021-07-25T15:00,85.3,30,50.5,0,0,3.6,31.8 +2021-07-25T16:00,84.2,31,50.2,0,0,3.5,14.8 +2021-07-25T17:00,84.5,33,52.1,0,0,15.7,12.5 +2021-07-25T18:00,81.7,40,54.8,0,0,13.7,26.6 +2021-07-25T19:00,78.5,45,55.6,0,0,8.6,23.7 +2021-07-25T20:00,75.6,52,56.8,0,0,7.9,14.3 +2021-07-25T21:00,73,58,57.5,0,0,5.2,12.8 +2021-07-25T22:00,70.9,63,57.7,0,0,3.5,8.3 +2021-07-25T23:00,70,62,56.5,0,0,2.6,6.3 +2021-07-26T00:00,66.5,69,55.9,0,0,3,4.3 +2021-07-26T01:00,65.5,65,53.6,0,0,3.4,4.5 +2021-07-26T02:00,64.1,65,52.2,0,0,4.2,5.1 +2021-07-26T03:00,64.6,60,50.5,0,0,2.9,5.4 +2021-07-26T04:00,63,62,49.6,0,0,3.9,4.5 +2021-07-26T05:00,61.8,62,48.7,0,0,2.5,4.7 +2021-07-26T06:00,63.7,57,48,0,0,1,3.6 +2021-07-26T07:00,67.9,52,49.6,0,0,1.1,6 +2021-07-26T08:00,72.7,46,50.6,0,0,1.6,8.3 +2021-07-26T09:00,78.5,37,50.1,0,0,1.7,9.6 +2021-07-26T10:00,84.1,30,49.4,0,0,0.7,9.6 +2021-07-26T11:00,87.7,26,48.1,0,0,1.9,10.5 +2021-07-26T12:00,90,20,44,0,0,3.5,12.1 +2021-07-26T13:00,91.5,18,42.4,0,0,5,14.1 +2021-07-26T14:00,91.9,17,40.4,0,0,5.6,15 +2021-07-26T15:00,93,15,39.4,0,0,5.4,15 +2021-07-26T16:00,92.6,15,38.3,0,0,6.1,14.5 +2021-07-26T17:00,92.1,12,32.6,0,0,7.8,14.5 +2021-07-26T18:00,90.3,13,33.4,0,0,7.4,14.8 +2021-07-26T19:00,84.8,18,37,0,0,6.1,12.5 +2021-07-26T20:00,80.8,24,40.9,0,0,6.5,10.1 +2021-07-26T21:00,78.7,30,44.9,0,0,7.6,13 +2021-07-26T22:00,75.9,34,45.6,0,0,7.4,12.5 +2021-07-26T23:00,73.2,40,47.7,0,0,5.7,12.5 +2021-07-27T00:00,68,49,48.1,0,0,3.7,9.4 +2021-07-27T01:00,66.1,54,48.8,0,0,3.8,5.8 +2021-07-27T02:00,64.2,56,48.3,0,0,3.7,6.5 +2021-07-27T03:00,61.2,59,46.7,0,0,4.3,6.3 +2021-07-27T04:00,60.3,59,46,0,0,3,5.1 +2021-07-27T05:00,59.9,61,46.5,0,0,4.1,4.3 +2021-07-27T06:00,63.8,50,44.9,0,0,2.6,5.6 +2021-07-27T07:00,70,40,44.9,0,0,1.9,7.2 +2021-07-27T08:00,75.3,34,45.3,0,0,2.7,9.6 +2021-07-27T09:00,80.2,30,46.3,0,0,2.8,10.5 +2021-07-27T10:00,84.3,27,47,0,0,2.2,11 +2021-07-27T11:00,87.4,25,47.3,0,0,1.6,10.7 +2021-07-27T12:00,90,21,44.9,0,0,1.6,10.5 +2021-07-27T13:00,91.6,19,43.4,0,0,2.5,11.2 +2021-07-27T14:00,93,17,41.8,0,0,3.6,11.9 +2021-07-27T15:00,94,16,40.5,0,0,6.9,15.2 +2021-07-27T16:00,93.5,18,43.3,0,0,9.2,18.1 +2021-07-27T17:00,91.3,23,48.6,0,0,11.1,18.8 +2021-07-27T18:00,88.8,26,49.5,0,0,9.1,20.1 +2021-07-27T19:00,84.3,34,53.1,0,0,4,15.4 +2021-07-27T20:00,79.7,39,52.5,0,0,4.7,6.5 +2021-07-27T21:00,77.7,37,49.1,0,0,4.9,7.8 +2021-07-27T22:00,75.4,38,47.9,0,0,6.9,11.2 +2021-07-27T23:00,73.2,41,48.3,0,0,6.3,11.2 +2021-07-28T00:00,71.3,44,48.6,0,0,6.2,10.7 +2021-07-28T01:00,69.3,48,48.7,0,0,6,10.3 +2021-07-28T02:00,67.5,51,48.8,0,0,6.4,10.7 +2021-07-28T03:00,65.9,53,48.6,0,0,5.4,10.5 +2021-07-28T04:00,64.8,55,48.3,0,0,3.5,8.7 +2021-07-28T05:00,65.3,54,48.4,0,0,4.3,6 +2021-07-28T06:00,70,47,49.1,0,0,2.6,6.7 +2021-07-28T07:00,75,40,49.4,0,0,2.7,6.9 +2021-07-28T08:00,79.1,36,50,0,0,5,12.1 +2021-07-28T09:00,83.6,31,49.6,0,0,5,13.2 +2021-07-28T10:00,88.3,26,49,0,0,6.7,15.9 +2021-07-28T11:00,92.1,22,47.5,0,0,6.9,16.8 +2021-07-28T12:00,94.6,18,45.1,0,0,7,17 +2021-07-28T13:00,96.1,16,42.9,0,0,6.9,17.9 +2021-07-28T14:00,96.2,16,42.1,0,0,5.8,17.7 +2021-07-28T15:00,96.4,15,41.6,0,0,5.3,15.2 +2021-07-28T16:00,96.4,14,38.9,0,0,6.3,14.3 +2021-07-28T17:00,96.4,13,36.6,0,0,8.7,15 +2021-07-28T18:00,94.4,14,37.1,0,0,7.9,16.3 +2021-07-28T19:00,86.8,21,41.8,0,0,5.8,13 +2021-07-28T20:00,84.9,20,39.4,0,0,5.9,9.6 +2021-07-28T21:00,84.4,22,40.9,0,0,3.4,9.6 +2021-07-28T22:00,80.5,27,43.2,0,0,3.4,4.3 +2021-07-28T23:00,79,28,43,0,0,1.1,4 +2021-07-29T00:00,73.5,36,45,0,0,3.2,3.4 +2021-07-29T01:00,70.3,40,44.7,0,0,4.8,6 +2021-07-29T02:00,69.9,38,43.3,0,0,4.3,6.3 +2021-07-29T03:00,68.8,41,44.2,0,0,6.1,7.6 +2021-07-29T04:00,68,43,44.4,0,0,6.1,7.6 +2021-07-29T05:00,69.4,50,49.8,0,0,6.5,7.8 +2021-07-29T06:00,71.5,48,50.6,0,0,7.2,11.9 +2021-07-29T07:00,73.8,44,50.5,0,0,10.4,17.4 +2021-07-29T08:00,76.2,45,53.3,0,0,12.6,23.5 +2021-07-29T09:00,79.1,44,55.3,0,0,11.9,23.7 +2021-07-29T10:00,82,41,55.9,0,0,9.3,23 +2021-07-29T11:00,84.8,37,55.4,0,0,7.2,19.9 +2021-07-29T12:00,87.2,33,55,0,0,5,17.7 +2021-07-29T13:00,88.6,31,53.9,0,0,2.6,14.8 +2021-07-29T14:00,88.9,29,52.6,0,0,2.5,11.9 +2021-07-29T15:00,90,27,52,0,0,4.3,12.3 +2021-07-29T16:00,90.8,26,51,0,0,4.1,12.5 +2021-07-29T17:00,91,24,49.4,0,0,6,13.6 +2021-07-29T18:00,88.7,26,49,0,0,5.2,12.5 +2021-07-29T19:00,85,35,54.1,0,0,1.6,9.2 +2021-07-29T20:00,81.2,39,54.1,0,0,2.3,3.8 +2021-07-29T21:00,76.3,47,54.5,0,0,2.7,4.5 +2021-07-29T22:00,74.7,49,54.5,0,0,6.3,10.1 +2021-07-29T23:00,73.3,46,51.1,0,0,6.7,11.2 +2021-07-30T00:00,71.3,48,50.4,0,0,5.5,11.2 +2021-07-30T01:00,69.7,50,50.5,0,0,5.2,9.2 +2021-07-30T02:00,68.5,52,50.4,0,0,4.7,8.5 +2021-07-30T03:00,66.1,56,50.1,0,0,5,8.3 +2021-07-30T04:00,64.7,58,49.6,0,0,5.1,8.7 +2021-07-30T05:00,64,59,49.6,0,0,5.2,8.5 +2021-07-30T06:00,68.6,59,53.5,0,0,8.5,14.1 +2021-07-30T07:00,72.3,49,52.3,0,0,7.6,14.5 +2021-07-30T08:00,75.7,45,52.5,0,0,9.9,19.2 +2021-07-30T09:00,78.3,42,53,0,0,7.4,19.7 +2021-07-30T10:00,81.3,38,53.2,0,0,4.1,16.6 +2021-07-30T11:00,84.6,34,53.2,0,0,3.3,13.2 +2021-07-30T12:00,87.8,31,53.1,0,0,4.3,15.4 +2021-07-30T13:00,90.3,28,52.9,0,0,5.2,15.7 +2021-07-30T14:00,90.4,28,52.5,0,0,4.9,15.9 +2021-07-30T15:00,91,27,52.9,0,0,6.6,15.2 +2021-07-30T16:00,90.2,27,51.8,0,0,6.9,15.2 +2021-07-30T17:00,82,49,60.8,0.004,0,18.6,24.4 +2021-07-30T18:00,78.4,52,59.2,0,0,15,33.3 +2021-07-30T19:00,78.1,50,57.9,0,0,10.4,25.9 +2021-07-30T20:00,73.5,62,59.7,0.008,0,11.2,17.9 +2021-07-30T21:00,71.3,69,60.6,0.004,0,9.6,19.7 +2021-07-30T22:00,70.1,75,61.8,0.016,0,7,16.1 +2021-07-30T23:00,69.4,79,62.5,0.008,0,3.8,13 +2021-07-31T00:00,68.7,84,63.6,0,0,1.4,6.3 +2021-07-31T01:00,68.1,81,62.1,0,0,2.3,7.8 +2021-07-31T02:00,66.7,89,63.3,0,0,2.1,4 +2021-07-31T03:00,66.3,91,63.7,0,0,3.2,5.8 +2021-07-31T04:00,66.5,90,63.5,0,0,1.6,6 +2021-07-31T05:00,63.8,86,59.5,0.004,0,2.6,5.1 +2021-07-31T06:00,64.7,93,62.5,0.098,0,4.7,7.4 +2021-07-31T07:00,64.5,91,61.7,0.063,0,7.1,15.9 +2021-07-31T08:00,66.5,81,60.4,0.008,0,5.8,14.1 +2021-07-31T09:00,67.9,79,61.2,0.008,0,2.8,14.1 +2021-07-31T10:00,71.3,71,61.3,0.004,0,4.1,14.8 +2021-07-31T11:00,74.8,62,60.9,0.004,0,7.5,18.6 +2021-07-31T12:00,75.7,56,58.9,0.004,0,9.4,20.1 +2021-07-31T13:00,76.5,52,57.7,0,0,9.9,20.4 +2021-07-31T14:00,75.9,53,57.7,0,0,7.5,20.6 +2021-07-31T15:00,75.7,53,57.2,0.02,0,9.1,17.4 +2021-07-31T16:00,73.8,52,54.9,0.035,0,6.3,17.2 +2021-07-31T17:00,65.6,84,60.6,0,0,6.4,13.9 +2021-07-31T18:00,65.8,89,62.5,0.016,0,4.9,12.1 +2021-07-31T19:00,64.1,90,61.2,0.024,0,6.9,11.6 +2021-07-31T20:00,63.7,89,60.3,0.02,0,5.5,11.2 +2021-07-31T21:00,63.5,89,60.1,0.047,0,5.1,10.3 +2021-07-31T22:00,63.2,90,60.2,0.142,0,4.9,9.6 +2021-07-31T23:00,62.9,93,60.9,0.028,0,4.5,9.4 +2021-08-01T00:00,62.9,95,61.4,0.004,0,2.3,7.4 +2021-08-01T01:00,60.7,95,59.3,0,0,3.4,4.9 +2021-08-01T02:00,62.3,88,58.8,0,0,2.5,5.6 +2021-08-01T03:00,61.8,91,59.3,0,0,3,3.6 +2021-08-01T04:00,61.6,97,60.9,0.004,0,2.2,3.8 +2021-08-01T05:00,60.5,99,60.4,0,0,0.5,4 +2021-08-01T06:00,61.2,96,59.9,0,0,3.4,5.6 +2021-08-01T07:00,63.1,84,58.4,0,0,2.6,6.5 +2021-08-01T08:00,64.2,79,57.7,0,0,0.2,5.1 +2021-08-01T09:00,66.5,73,57.7,0,0,1.7,6.7 +2021-08-01T10:00,68.8,65,56.6,0.004,0,3.3,10.1 +2021-08-01T11:00,71.6,53,53.6,0,0,4.1,12.1 +2021-08-01T12:00,73.7,47,52.1,0,0,4.3,12.5 +2021-08-01T13:00,74.4,45,51.5,0,0,4.2,12.8 +2021-08-01T14:00,76.4,40,50.5,0,0,2.6,12.5 +2021-08-01T15:00,77.5,36,48.7,0,0,2.1,10.5 +2021-08-01T16:00,78.2,33,47.1,0,0,1.8,9.2 +2021-08-01T17:00,76.5,32,44.2,0,0,6.9,8.1 +2021-08-01T18:00,74.5,37,46.4,0,0,5.6,13.2 +2021-08-01T19:00,71.2,50,51.8,0,0,2.6,9.2 +2021-08-01T20:00,67.2,63,54.2,0,0,3.4,5.1 +2021-08-01T21:00,67.1,61,53.4,0,0,3.1,5.6 +2021-08-01T22:00,65.3,69,54.9,0,0,3.1,5.6 +2021-08-01T23:00,63.6,73,54.9,0,0,3.8,3.8 +2021-08-02T00:00,62.2,77,54.7,0,0,4.1,6.5 +2021-08-02T01:00,59.1,86,54.8,0,0,3.3,6.5 +2021-08-02T02:00,58.4,88,54.8,0,0,3.2,5.1 +2021-08-02T03:00,57.4,91,54.7,0,0,2.2,5.1 +2021-08-02T04:00,56.8,92,54.5,0,0,2.2,3.8 +2021-08-02T05:00,56.8,82,51.3,0,0,3.5,3.8 +2021-08-02T06:00,58.5,78,51.7,0,0,4.2,7.8 +2021-08-02T07:00,63.6,70,53.7,0,0,3.6,8.9 +2021-08-02T08:00,69.6,56,53.2,0,0,2.7,9.4 +2021-08-02T09:00,73.9,48,52.9,0,0,2.4,8.9 +2021-08-02T10:00,76.8,45,54.1,0,0,3.5,11.4 +2021-08-02T11:00,79.5,41,54,0,0,3,11.4 +2021-08-02T12:00,81.8,37,53.3,0,0,3.4,11.6 +2021-08-02T13:00,83.2,34,51.6,0,0,3.2,11.9 +2021-08-02T14:00,83.7,32,50.7,0,0,2.7,11.2 +2021-08-02T15:00,83.8,31,50.4,0,0,3.4,10.5 +2021-08-02T16:00,83.3,32,50.5,0,0,8.1,15 +2021-08-02T17:00,81.6,37,52.7,0,0,12.3,22.1 +2021-08-02T18:00,78.7,44,54.9,0,0,8.9,21 +2021-08-02T19:00,76.1,47,54.6,0,0,6.4,14.5 +2021-08-02T20:00,74.8,46,52.9,0,0,6.7,11.4 +2021-08-02T21:00,73.1,47,51.7,0,0,5.1,11.2 +2021-08-02T22:00,69.8,60,55.4,0,0,4.3,8.1 +2021-08-02T23:00,68.1,68,57.1,0,0,3.2,4.9 +2021-08-03T00:00,67.3,69,56.7,0,0,1.8,3.8 +2021-08-03T01:00,66.2,69,55.8,0,0,3.1,4.9 +2021-08-03T02:00,65.9,65,53.9,0,0,5.2,8.1 +2021-08-03T03:00,66,59,51.1,0,0,6.5,10.7 +2021-08-03T04:00,67.6,52,49.6,0,0,7.8,13.2 +2021-08-03T05:00,67.8,54,50.4,0.012,0,1.9,12.8 +2021-08-03T06:00,66.9,60,52.6,0,0,1.1,4 +2021-08-03T07:00,70.6,55,53.9,0,0,6.4,11.4 +2021-08-03T08:00,72.7,49,52.3,0,0,9.6,16.6 +2021-08-03T09:00,75.2,46,53,0,0,11.4,21.7 +2021-08-03T10:00,77.6,44,53.7,0,0,11.5,22.6 +2021-08-03T11:00,79,41,53.3,0,0,10.3,22.6 +2021-08-03T12:00,80.2,38,52,0,0,9.4,21.3 +2021-08-03T13:00,81.6,34,50.9,0,0,8.1,20.1 +2021-08-03T14:00,81.3,34,50.6,0,0,9.4,19 +2021-08-03T15:00,78.4,38,51,0,0,6.8,19.5 +2021-08-03T16:00,78.5,38,50.8,0,0,5.6,14.3 +2021-08-03T17:00,77.7,44,53.8,0,0,7,15 +2021-08-03T18:00,70.2,68,59,0.024,0,11.1,19.2 +2021-08-03T19:00,68.5,73,59.6,0,0,3.7,18.1 +2021-08-03T20:00,66.8,82,61.2,0,0,1.9,6.5 +2021-08-03T21:00,66.1,84,61.1,0.004,0,6.6,10.3 +2021-08-03T22:00,64.9,83,59.6,0.012,0,6.3,11.2 +2021-08-03T23:00,64,84,59.3,0.008,0,4.8,10.5 +2021-08-04T00:00,63.3,87,59.3,0.004,0,2.7,9.6 +2021-08-04T01:00,63.1,84,58.3,0.004,0,1.4,4.9 +2021-08-04T02:00,62.3,86,58.2,0,0,1.7,3.1 +2021-08-04T03:00,61.3,94,59.6,0,0,3.1,5.6 +2021-08-04T04:00,60.6,95,59.1,0,0,2.8,5.6 +2021-08-04T05:00,62.4,85,57.7,0,0,2.6,5.1 +2021-08-04T06:00,62.4,91,59.7,0.028,0,1.4,5.6 +2021-08-04T07:00,63,82,57.3,0.008,0,2.2,8.7 +2021-08-04T08:00,64.2,82,58.6,0,0,1.3,6.9 +2021-08-04T09:00,67.7,71,58.1,0,0,3.1,18.6 +2021-08-04T10:00,71.2,61,56.9,0,0,2.7,24.4 +2021-08-04T11:00,74.1,49,53.8,0.004,0,7.3,15.9 +2021-08-04T12:00,75,47,53.2,0,0,9.6,19.9 +2021-08-04T13:00,76.3,43,52.3,0,0,8.8,19.9 +2021-08-04T14:00,78,39,51.2,0,0,5.8,18.6 +2021-08-04T15:00,78.8,38,51,0,0,4,14.5 +2021-08-04T16:00,78.9,37,50.5,0,0,2.9,11.9 +2021-08-04T17:00,80.2,36,51,0,0,6.5,9.8 +2021-08-04T18:00,78.9,35,48.6,0,0,5.9,14.1 +2021-08-04T19:00,74.2,45,51.4,0,0,4.7,10.1 +2021-08-04T20:00,69.2,55,52.5,0,0,4.3,7.8 +2021-08-04T21:00,66.1,62,52.8,0,0,5,6.7 +2021-08-04T22:00,64.8,66,53.1,0,0,4.1,6.5 +2021-08-04T23:00,62.2,71,52.8,0,0,3.8,4.7 +2021-08-05T00:00,61.3,69,51.1,0,0,3.7,5.8 +2021-08-05T01:00,60.1,67,48.9,0,0,4,6.3 +2021-08-05T02:00,59.4,64,47.2,0,0,4.3,6.9 +2021-08-05T03:00,58.3,65,46.4,0,0,4.4,7.4 +2021-08-05T04:00,57.3,65,45.6,0,0,4.4,7.4 +2021-08-05T05:00,55.9,64,44.1,0,0,4,7.4 +2021-08-05T06:00,59.2,58,44.5,0,0,4.4,6.7 +2021-08-05T07:00,64.2,55,47.6,0,0,2.8,8.1 +2021-08-05T08:00,71.1,45,48.8,0,0,2,8.1 +2021-08-05T09:00,77.3,33,45.8,0,0,2.6,9.6 +2021-08-05T10:00,81.9,26,44,0,0,1.3,9.6 +2021-08-05T11:00,84.7,22,41.8,0,0,1.6,9.2 +2021-08-05T12:00,86.5,20,40.6,0,0,2.3,10.1 +2021-08-05T13:00,87.7,18,38.5,0,0,4,12.3 +2021-08-05T14:00,87.5,17,37.9,0,0,2.4,12.3 +2021-08-05T15:00,87.7,18,38.3,0,0,2.7,9.8 +2021-08-05T16:00,87.9,18,39.1,0,0,5.1,11.6 +2021-08-05T17:00,88.3,17,38,0,0,11,13.4 +2021-08-05T18:00,83.6,28,47.3,0,0,7,19.5 +2021-08-05T19:00,76.4,43,52.3,0,0,4.7,11.4 +2021-08-05T20:00,70.3,56,53.6,0,0,5.1,6.9 +2021-08-05T21:00,68,56,51.5,0,0,4.8,6.7 +2021-08-05T22:00,66.7,51,48.1,0,0,7.7,12.8 +2021-08-05T23:00,65.6,48,45.6,0,0,6.7,12.8 +2021-08-06T00:00,65.3,44,42.9,0,0,5.7,11.2 +2021-08-06T01:00,63.7,44,41.5,0,0,5,9.2 +2021-08-06T02:00,60.8,49,41.7,0,0,6.5,8.1 +2021-08-06T03:00,60.1,49,40.6,0,0,5.5,8.1 +2021-08-06T04:00,59.6,48,39.9,0,0,5.2,7.4 +2021-08-06T05:00,57.6,57,42.3,0,0,5.9,7.4 +2021-08-06T06:00,62.1,47,41.4,0,0,3.7,7.8 +2021-08-06T07:00,67.9,41,43.2,0,0,3.5,8.5 +2021-08-06T08:00,75.8,36,47.1,0,0,4,10.1 +2021-08-06T09:00,83.9,25,44.7,0,0,4.1,11.2 +2021-08-06T10:00,88.6,22,44.9,0,0,6.7,13.9 +2021-08-06T11:00,90.7,17,39.3,0,0,4.5,16.1 +2021-08-06T12:00,91.9,15,37.5,0,0,8.5,19.5 +2021-08-06T13:00,90.6,17,39.3,0,0,6.1,18.6 +2021-08-06T14:00,89.9,17,39.1,0,0,9.5,15.9 +2021-08-06T15:00,85.8,27,47.6,0,0,12.3,28.6 +2021-08-06T16:00,87.1,22,43.5,0,0,3.4,21.9 +2021-08-06T17:00,87.6,21,42.4,0,0,6.9,17.4 +2021-08-06T18:00,84.5,29,48.4,0,0,3.7,11.6 +2021-08-06T19:00,76.7,37,48.2,0,0,5.1,6.9 +2021-08-06T20:00,74.2,45,51.3,0,0,10.3,16.6 +2021-08-06T21:00,72.1,48,51.1,0,0,3.9,17.2 +2021-08-06T22:00,68,55,51.4,0,0,4,7.4 +2021-08-06T23:00,65.1,67,53.9,0,0,4.2,6.5 +2021-08-07T00:00,65.8,58,50.4,0,0,4.5,8.5 +2021-08-07T01:00,64,61,50.3,0,0,4.6,7.4 +2021-08-07T02:00,62.9,61,49.4,0,0,3.8,5.6 +2021-08-07T03:00,61,64,48.6,0,0,5.2,6.5 +2021-08-07T04:00,60.4,62,47.3,0,0,4.3,6 +2021-08-07T05:00,59.8,64,47.6,0,0,4.8,5.6 +2021-08-07T06:00,62.4,60,48.6,0,0,4.2,7.6 +2021-08-07T07:00,65.5,56,49.3,0,0,11.5,18.3 +2021-08-07T08:00,70.1,44,47.3,0,0,7.3,21.7 +2021-08-07T09:00,75.4,36,46.5,0,0,9.2,18.3 +2021-08-07T10:00,77.7,28,42.4,0,0,5.1,18.8 +2021-08-07T11:00,78.9,28,42.9,0,0,2.2,13.4 +2021-08-07T12:00,79.8,28,43.7,0,0,5.9,17.4 +2021-08-07T13:00,81.3,26,42.9,0,0,2.7,17.9 +2021-08-07T14:00,83.8,16,32.8,0,0,2.2,13.4 +2021-08-07T15:00,85.6,15,32.5,0,0,12,21.5 +2021-08-07T16:00,82.5,17,33.1,0,0,15.8,28 +2021-08-07T17:00,80.2,21,36.6,0,0,10.7,28 +2021-08-07T18:00,78,23,37.6,0,0,8.6,18.8 +2021-08-07T19:00,72.1,30,38.7,0,0,4.8,14.1 +2021-08-07T20:00,69,37,41.4,0,0,5.1,7.4 +2021-08-07T21:00,67.4,40,42.4,0,0,4.5,6.9 +2021-08-07T22:00,64.5,43,41.7,0,0,5.8,10.7 +2021-08-07T23:00,60.8,53,43.8,0,0,4.8,9.6 +2021-08-08T00:00,59.7,58,45.1,0,0,5.6,6.5 +2021-08-08T01:00,59.5,56,43.5,0,0,4.1,6.7 +2021-08-08T02:00,57.6,56,42.1,0,0,3.8,6.3 +2021-08-08T03:00,56.9,57,41.7,0,0,4.3,6.9 +2021-08-08T04:00,56.3,57,41.4,0,0,4.4,7.4 +2021-08-08T05:00,57.1,51,39.2,0,0,5,7.2 +2021-08-08T06:00,60.8,45,39.5,0,0,5.9,9.2 +2021-08-08T07:00,68.1,38,41.3,0,0,5,10.5 +2021-08-08T08:00,75.7,32,43.4,0,0,3.1,9.8 +2021-08-08T09:00,81,26,43.3,0,0,1.1,9.2 +2021-08-08T10:00,83.9,21,40.1,0,0,1.8,9.6 +2021-08-08T11:00,85.6,20,39.9,0,0,2.6,10.7 +2021-08-08T12:00,87,19,40.4,0,0,4.9,13.6 +2021-08-08T13:00,88.1,19,40.2,0,0,5.4,15.2 +2021-08-08T14:00,89.8,17,39.7,0,0,3.4,14.5 +2021-08-08T15:00,90.4,17,39.7,0,0,3.6,11.6 +2021-08-08T16:00,89.5,18,39.7,0,0,2.2,11 +2021-08-08T17:00,89.2,17,38.4,0,0,1.6,8.3 +2021-08-08T18:00,88.1,20,42.2,0,0,1.3,4.5 +2021-08-08T19:00,84.3,24,43.3,0,0,1.7,2.9 +2021-08-08T20:00,77.3,33,46.1,0,0,3.4,3.4 +2021-08-08T21:00,71.7,45,49,0,0,4.1,7.2 +2021-08-08T22:00,67.5,54,50.3,0,0,3.8,6.3 +2021-08-08T23:00,64.9,58,49.8,0,0,3.5,5.8 +2021-08-09T00:00,63.4,59,49,0,0,3.7,5.6 +2021-08-09T01:00,62.6,58,47.8,0,0,4,6.5 +2021-08-09T02:00,62.2,53,45.1,0,0,4.7,7.8 +2021-08-09T03:00,60.8,50,42.1,0,0,5.2,8.5 +2021-08-09T04:00,60.1,46,39.3,0,0,5.3,8.9 +2021-08-09T05:00,59.7,43,37.4,0,0,5.3,8.7 +2021-08-09T06:00,63,42,39.7,0,0,3.4,8.3 +2021-08-09T07:00,69.6,37,42.5,0,0,5,10.1 +2021-08-09T08:00,76.8,32,44.8,0,0,4.7,11.2 +2021-08-09T09:00,84,23,42.4,0,0,3,11.2 +2021-08-09T10:00,88.6,17,37.5,0,0,0.6,9.8 +2021-08-09T11:00,89.7,15,35.1,0,0,0.7,9.4 +2021-08-09T12:00,90.8,14,35.4,0,0,3.1,11.2 +2021-08-09T13:00,91.8,13,34.8,0,0,3.2,11.9 +2021-08-09T14:00,91.9,13,34.5,0,0,0.8,11.6 +2021-08-09T15:00,91.2,14,35.6,0,0,6.9,13.2 +2021-08-09T16:00,88.8,15,35.7,0,0,11.4,22.8 +2021-08-09T17:00,90.6,12,30.7,0,0,7.6,20.8 +2021-08-09T18:00,86.9,15,32.9,0,0,9.3,18.1 +2021-08-09T19:00,78.9,21,36.1,0,0,5.4,15.2 +2021-08-09T20:00,75.7,28,40.6,0,0,6.3,11.6 +2021-08-09T21:00,69.9,38,43.2,0,0,6.5,10.3 +2021-08-09T22:00,69.4,41,45,0,0,4.8,8.1 +2021-08-09T23:00,67.2,43,44,0,0,5.3,8.3 +2021-08-10T00:00,67.5,36,39.6,0,0,6.2,11.4 +2021-08-10T01:00,64.9,36,37.6,0,0,5.6,10.1 +2021-08-10T02:00,63.8,34,35.2,0,0,4.6,7.8 +2021-08-10T03:00,60.8,39,35.6,0,0,4.2,7.6 +2021-08-10T04:00,58,47,37.8,0,0,5.6,6.9 +2021-08-10T05:00,58.9,46,38.2,0,0,4.3,6.5 +2021-08-10T06:00,61.3,44,39.3,0,0,3.7,7.2 +2021-08-10T07:00,66.3,40,41,0,0,0.9,7.6 +2021-08-10T08:00,73,33,42.2,0,0,1.2,7.2 +2021-08-10T09:00,80.5,24,40.9,0,0,0.7,7.8 +2021-08-10T10:00,86.2,21,41.5,0,0,3.5,11 +2021-08-10T11:00,89.8,15,35.6,0,0,5.4,19.5 +2021-08-10T12:00,91.5,11,30.6,0,0,3.9,16.6 +2021-08-10T13:00,91,12,32,0,0,6.1,15.7 +2021-08-10T14:00,91.3,12,31.1,0,0,5.1,15.2 +2021-08-10T15:00,91.3,11,29.5,0,0,2.6,14.8 +2021-08-10T16:00,91.2,11,29.4,0,0,4,10.5 +2021-08-10T17:00,90.6,11,28.1,0,0,7.4,10.5 +2021-08-10T18:00,87.1,16,35.8,0,0,4.5,13.4 +2021-08-10T19:00,80.7,19,35.1,0,0,5.3,8.1 +2021-08-10T20:00,76,25,37.9,0,0,4.6,8.5 +2021-08-10T21:00,70.7,34,41.2,0,0,6,9.2 +2021-08-10T22:00,68.8,33,38.5,0,0,7.7,13 +2021-08-10T23:00,68.2,31,36.7,0,0,6.9,12.8 +2021-08-11T00:00,67.1,32,36.3,0,0,6.7,11.6 +2021-08-11T01:00,64.9,35,36.5,0,0,6.3,11.2 +2021-08-11T02:00,62.5,38,36.8,0,0,5,10.7 +2021-08-11T03:00,60,43,37.2,0,0,4.1,8.3 +2021-08-11T04:00,60.4,43,37.8,0,0,4,6.5 +2021-08-11T05:00,63.7,33,34.3,0,0,3,4.7 +2021-08-11T06:00,61.6,44,39.2,0,0,2.9,4.3 +2021-08-11T07:00,66.7,37,39.4,0,0,4.2,9.4 +2021-08-11T08:00,73,29,38.8,0,0,3.5,10.3 +2021-08-11T09:00,79.3,23,37.8,0,0,3,10.1 +2021-08-11T10:00,83.6,20,37.8,0,0,3.4,11.2 +2021-08-11T11:00,87.4,17,36.6,0,0,4.9,13.4 +2021-08-11T12:00,90.1,15,35.4,0,0,5.8,15 +2021-08-11T13:00,92.2,13,35,0,0,5.5,15 +2021-08-11T14:00,93.7,12,34.1,0,0,6.2,15 +2021-08-11T15:00,93.8,12,32.6,0,0,8.4,17 +2021-08-11T16:00,92.9,12,32.3,0,0,10.8,19.9 +2021-08-11T17:00,92.9,12,32.1,0,0,6.8,20.1 +2021-08-11T18:00,89.4,15,35.5,0,0,5.4,12.8 +2021-08-11T19:00,81.5,26,43.4,0,0,6.9,10.5 +2021-08-11T20:00,78.1,31,44.7,0,0,6.6,12.8 +2021-08-11T21:00,76.1,30,42.5,0,0,5,11 +2021-08-11T22:00,72.9,34,42.7,0,0,5.6,7.8 +2021-08-11T23:00,70.6,36,42.2,0,0,5.9,7.4 +2021-08-12T00:00,66.4,44,44,0,0,3.9,7.8 +2021-08-12T01:00,64.5,45,42.6,0,0,4.2,7.2 +2021-08-12T02:00,62.7,45,41.3,0,0,5.3,6.9 +2021-08-12T03:00,61,48,40.9,0,0,4.6,6.9 +2021-08-12T04:00,59.2,53,42.2,0,0,5.1,6.3 +2021-08-12T05:00,59.9,47,39.6,0,0,6.2,6.3 +2021-08-12T06:00,63.3,42,39.7,0,0,2.7,8.1 +2021-08-12T07:00,69.6,34,40.3,0,0,3,7.8 +2021-08-12T08:00,75.1,26,37.4,0,0,2.1,7.4 +2021-08-12T09:00,78.3,25,39.8,0,0,12.4,23.3 +2021-08-12T10:00,80.7,26,42.7,0,0,13.5,25.9 +2021-08-12T11:00,82.9,26,44,0,0,13.4,26.2 +2021-08-12T12:00,84.4,25,44.7,0,0,12.4,26.2 +2021-08-12T13:00,85.7,24,45.3,0,0,10.7,24.8 +2021-08-12T14:00,86.7,24,45.7,0,0,9.6,22.4 +2021-08-12T15:00,86.5,24,45.5,0,0,8.5,20.6 +2021-08-12T16:00,86,24,45.4,0,0,8.1,18.6 +2021-08-12T17:00,83.9,32,50.6,0,0,5.2,17.7 +2021-08-12T18:00,82.7,33,51,0,0,4.3,10.5 +2021-08-12T19:00,76.7,46,54.2,0,0,11,18.1 +2021-08-12T20:00,74.6,52,55.9,0,0,3.4,17.9 +2021-08-12T21:00,71.2,60,56.5,0,0,5.6,9.2 +2021-08-12T22:00,69.2,64,56.7,0,0,8,13 +2021-08-12T23:00,69.1,64,56.2,0,0,3.4,14.1 +2021-08-13T00:00,68.9,63,55.9,0,0,3.1,5.6 +2021-08-13T01:00,67.5,62,54.1,0,0,4.8,7.2 +2021-08-13T02:00,65.6,53,47.9,0,0,3.8,7.8 +2021-08-13T03:00,64.4,54,47.4,0,0,4.4,7.6 +2021-08-13T04:00,61.7,64,49.5,0,0,5,7.2 +2021-08-13T05:00,61.3,90,58.4,0,0,1.8,6.5 +2021-08-13T06:00,61.6,90,58.6,0,0,4.8,8.1 +2021-08-13T07:00,66.7,69,56.4,0,0,4.9,10.7 +2021-08-13T08:00,70.5,58,55,0,0,2.5,11.2 +2021-08-13T09:00,73.7,53,55.3,0,0,4.4,12.3 +2021-08-13T10:00,75.9,49,55.4,0,0,4.6,13.9 +2021-08-13T11:00,78,44,54.6,0,0,3.4,13.6 +2021-08-13T12:00,80.1,41,54.3,0,0,2.9,13 +2021-08-13T13:00,81.5,38,53.7,0,0,1.1,13.2 +2021-08-13T14:00,81.2,39,54.1,0,0,2.7,11 +2021-08-13T15:00,77.2,49,56.3,0.012,0,5.7,18.8 +2021-08-13T16:00,79.7,42,54.7,0,0,4.2,13.9 +2021-08-13T17:00,76.1,50,56.1,0,0,9.6,11.2 +2021-08-13T18:00,77.3,47,55.5,0,0,6.3,16.3 +2021-08-13T19:00,73.7,55,56.8,0,0,3,13.9 +2021-08-13T20:00,70.7,63,57.5,0,0,3.4,4.5 +2021-08-13T21:00,70.1,65,57.7,0,0,4.2,6.5 +2021-08-13T22:00,68.4,73,59.5,0,0,4.6,8.5 +2021-08-13T23:00,67.8,76,60,0,0,2.1,7.4 +2021-08-14T00:00,63.6,86,59.3,0,0,1.9,3.1 +2021-08-14T01:00,61.3,87,57.5,0,0,2.3,4.5 +2021-08-14T02:00,59.3,92,56.9,0,0,2.3,4.3 +2021-08-14T03:00,58.5,93,56.4,0,0,2.8,5.4 +2021-08-14T04:00,57.3,91,54.7,0,0,2.7,4.7 +2021-08-14T05:00,57.5,80,51.4,0,0,2.2,4.3 +2021-08-14T06:00,59.4,72,50.5,0,0,2.3,4.9 +2021-08-14T07:00,64.9,60,50.5,0,0,1.9,6.7 +2021-08-14T08:00,69.3,57,53.2,0,0,3.6,10.5 +2021-08-14T09:00,74.3,50,54.6,0,0,2.5,10.7 +2021-08-14T10:00,79.3,42,54.5,0,0,3.1,11.4 +2021-08-14T11:00,83.3,36,53.5,0,0,3.3,12.3 +2021-08-14T12:00,86.5,30,51.4,0,0,1.8,12.1 +2021-08-14T13:00,89.4,23,46.8,0,0,1,10.1 +2021-08-14T14:00,91,18,42,0,0,3.8,11 +2021-08-14T15:00,88.3,22,45.1,0,0,13.9,25.3 +2021-08-14T16:00,88,20,42.4,0,0,7.2,25.5 +2021-08-14T17:00,89.1,24,47.6,0,0,6.4,17.9 +2021-08-14T18:00,83.9,22,41.5,0,0,12.3,19.5 +2021-08-14T19:00,76.6,36,47.8,0,0,4,21.7 +2021-08-14T20:00,74.9,45,52.3,0,0,9.6,17.7 +2021-08-14T21:00,74.4,46,52.4,0,0,6.8,15.4 +2021-08-14T22:00,71.6,48,50.8,0,0,4.6,11.2 +2021-08-14T23:00,66.6,57,50.7,0,0,5.3,7.4 +2021-08-15T00:00,66.1,53,48.4,0,0,4.6,7.8 +2021-08-15T01:00,63,59,48.6,0,0,3.3,7.8 +2021-08-15T02:00,61.2,64,48.8,0,0,4.5,5.6 +2021-08-15T03:00,62.2,57,46.8,0,0,4.9,5.8 +2021-08-15T04:00,66.1,45,44.2,0,0,3.3,5.8 +2021-08-15T05:00,61.8,50,43,0,0,4.4,4.3 +2021-08-15T06:00,64.3,46,42.9,0,0,4,15 +2021-08-15T07:00,71.1,37,43.5,0,0,8.1,13.9 +2021-08-15T08:00,78,32,45.4,0,0,6.4,14.8 +2021-08-15T09:00,81.4,28,44.9,0,0,3.8,13.6 +2021-08-15T10:00,85.3,22,42.5,0,0,2.1,12.5 +2021-08-15T11:00,87.1,21,42,0,0,0.7,10.5 +2021-08-15T12:00,87,21,42.4,0,0,0.9,9.8 +2021-08-15T13:00,88,19,41.1,0,0,9.8,18.6 +2021-08-15T14:00,87.1,19,40.4,0,0,6.9,22.8 +2021-08-15T15:00,87.9,18,39.3,0,0,6.1,16.1 +2021-08-15T16:00,86.9,19,40,0,0,10.5,19.2 +2021-08-15T17:00,84.6,23,42.2,0,0,4.6,20.1 +2021-08-15T18:00,83.1,25,43.6,0,0,2.9,11 +2021-08-15T19:00,76.9,34,46,0,0,4.8,5.4 +2021-08-15T20:00,78.3,29,43.4,0,0,1.6,6 +2021-08-15T21:00,76.5,32,44.4,0,0,1.1,2.7 +2021-08-15T22:00,73.2,37,45.5,0,0,3.8,4.7 +2021-08-15T23:00,67.9,46,46.6,0,0,3.1,4.7 +2021-08-16T00:00,63.8,58,48.7,0,0,4,6.7 +2021-08-16T01:00,61.9,64,49.6,0,0,3.6,6.9 +2021-08-16T02:00,60.9,66,49.4,0,0,3.6,5.6 +2021-08-16T03:00,61,63,48.4,0,0,4.1,6.3 +2021-08-16T04:00,59.6,64,47.4,0,0,4,6.3 +2021-08-16T05:00,59.5,56,44,0,0,4.3,5.8 +2021-08-16T06:00,61.8,53,44.4,0,0,4.4,7.4 +2021-08-16T07:00,67.2,47,46.1,0,0,2.3,7.8 +2021-08-16T08:00,74.7,38,47,0,0,0.4,6.9 +2021-08-16T09:00,80.3,28,44.3,0,0,3.2,10.3 +2021-08-16T10:00,84.1,23,42.4,0,0,4,12.3 +2021-08-16T11:00,86.6,20,41.1,0,0,3.8,12.8 +2021-08-16T12:00,88.3,18,39.6,0,0,3.3,12.5 +2021-08-16T13:00,89.3,16,38,0,0,3.7,13.2 +2021-08-16T14:00,89.9,15,36.8,0,0,4.2,13.2 +2021-08-16T15:00,90,15,35.5,0,0,5.3,13.4 +2021-08-16T16:00,89.5,15,35.3,0,0,6.8,15 +2021-08-16T17:00,88.8,15,34.9,0,0,2.3,14.8 +2021-08-16T18:00,87.2,16,35.8,0,0,0.5,6.3 +2021-08-16T19:00,83.9,20,38.3,0,0,2.1,2.5 +2021-08-16T20:00,80.2,23,38.7,0,0,4.1,4.7 +2021-08-16T21:00,72,35,42.9,0,0,6.9,8.5 +2021-08-16T22:00,72.7,31,40.2,0,0,5.6,8.7 +2021-08-16T23:00,68.7,34,39.5,0,0,7.4,12.1 +2021-08-17T00:00,66.1,40,40.8,0,0,6,12.1 +2021-08-17T01:00,64.9,41,40.4,0,0,6,10.1 +2021-08-17T02:00,64.1,40,39.5,0,0,4.9,10.1 +2021-08-17T03:00,62.2,44,40,0,0,5.6,7.8 +2021-08-17T04:00,60.7,47,40.4,0,0,6.7,8.1 +2021-08-17T05:00,61.3,43,38.8,0,0,5.2,8.1 +2021-08-17T06:00,62.7,42,39.5,0,0,4.2,6.9 +2021-08-17T07:00,68.5,37,40.9,0,0,5.2,10.5 +2021-08-17T08:00,77,30,43.4,0,0,3.9,10.5 +2021-08-17T09:00,83.8,23,41.6,0,0,4,11.2 +2021-08-17T10:00,88.3,17,38.4,0,0,4.1,11.9 +2021-08-17T11:00,90.5,15,36.6,0,0,5,13.9 +2021-08-17T12:00,91.2,14,36,0,0,2.4,13.9 +2021-08-17T13:00,92,14,35.8,0,0,3.2,11 +2021-08-17T14:00,92,13,34.1,0,0,5.4,14.5 +2021-08-17T15:00,91.9,12,32.7,0,0,1.4,13.9 +2021-08-17T16:00,93.2,11,32,0,0,4.1,11.4 +2021-08-17T17:00,73.9,46,52,0,0,18.4,11.2 +2021-08-17T18:00,68.3,80,62,0.11,0,15.1,31.5 +2021-08-17T19:00,69.6,71,59.9,0.016,0,11.5,24.6 +2021-08-17T20:00,69.4,66,57.4,0,0,6.2,18.1 +2021-08-17T21:00,68.8,65,56.6,0,0,5.6,10.1 +2021-08-17T22:00,66.1,66,54.2,0,0,4.5,9.2 +2021-08-17T23:00,65.1,64,52.4,0,0,5.1,7.8 +2021-08-18T00:00,64.9,56,48.7,0,0,5.2,8.1 +2021-08-18T01:00,63.1,53,45.5,0,0,5,8.3 +2021-08-18T02:00,65,47,44.2,0,0,4.9,8.5 +2021-08-18T03:00,67.4,41,42.6,0,0,3,6 +2021-08-18T04:00,65.7,44,43.1,0,0,3.2,3.8 +2021-08-18T05:00,62.9,51,44.4,0,0,4.9,5.4 +2021-08-18T06:00,64.9,49,45.3,0,0,5.1,7.6 +2021-08-18T07:00,70.5,42,46.4,0,0,4.8,10.7 +2021-08-18T08:00,76.9,35,47,0,0,2.4,9.8 +2021-08-18T09:00,82.3,27,44.7,0,0,3,10.3 +2021-08-18T10:00,86.6,22,42.8,0,0,2.7,10.5 +2021-08-18T11:00,89.6,19,42.1,0,0,3,11.6 +2021-08-18T12:00,91.1,16,38.7,0,0,3.3,11.6 +2021-08-18T13:00,92.3,14,37,0,0,3,11.9 +2021-08-18T14:00,92,14,36.7,0,0,6.4,14.5 +2021-08-18T15:00,92.2,15,37.4,0,0,10.2,20.4 +2021-08-18T16:00,93.4,13,35.2,0,0,10.4,20.6 +2021-08-18T17:00,86.9,24,45.6,0,0,9.2,19.9 +2021-08-18T18:00,83.4,32,50.5,0,0,10.6,19 +2021-08-18T19:00,80.6,29,45.4,0,0,14.2,24.4 +2021-08-18T20:00,76.6,37,48.7,0,0,5.2,23.3 +2021-08-18T21:00,75.7,40,49.6,0,0,3.1,8.3 +2021-08-18T22:00,70.6,51,51.7,0,0,3,4.3 +2021-08-18T23:00,68.2,53,50.6,0,0,2.9,5.1 +2021-08-19T00:00,65.7,60,51.3,0,0,3,6.3 +2021-08-19T01:00,65,59,50.4,0,0,3.4,5.6 +2021-08-19T02:00,64.1,61,50.5,0,0,4.2,5.4 +2021-08-19T03:00,64.1,60,50,0,0,3.2,5.4 +2021-08-19T04:00,64.8,60,50.5,0,0,2.9,4.7 +2021-08-19T05:00,64.7,79,58.1,0.016,0,12.8,5.1 +2021-08-19T06:00,65.2,77,57.7,0,0,9.1,21.3 +2021-08-19T07:00,65.9,74,57.5,0,0,7.4,15.7 +2021-08-19T08:00,67.4,70,57.1,0,0,7.5,15.4 +2021-08-19T09:00,70.4,60,55.9,0,0,5.2,15.9 +2021-08-19T10:00,74.9,50,55,0,0,2.8,13.4 +2021-08-19T11:00,76.8,48,55.5,0,0,4.3,13.4 +2021-08-19T12:00,74.3,50,54.5,0,0,0.2,14.5 +2021-08-19T13:00,78.6,41,53,0,0,6,15.7 +2021-08-19T14:00,70.3,66,58.6,0.067,0,9.7,21 +2021-08-19T15:00,74.6,53,56.6,0,0,4.9,20.6 +2021-08-19T16:00,73.9,54,56.5,0,0,5.5,16.8 +2021-08-19T17:00,69.3,66,57.5,0,0,9.5,13.2 +2021-08-19T18:00,70.3,64,57.7,0,0,4.9,17 +2021-08-19T19:00,68,77,60.5,0,0,1.2,9.6 +2021-08-19T20:00,65.6,82,59.9,0,0,2.3,3.4 +2021-08-19T21:00,64.7,85,59.9,0,0,4.3,4.9 +2021-08-19T22:00,63.1,92,60.7,0,0,3.8,5.1 +2021-08-19T23:00,62.1,94,60.3,0,0,3.7,6.3 +2021-08-20T00:00,61.2,92,58.7,0,0,2.5,6.7 +2021-08-20T01:00,60.4,92,58.1,0,0,3.8,5.4 +2021-08-20T02:00,60.3,90,57.4,0,0,2.1,4.7 +2021-08-20T03:00,56.3,75,48.4,0.134,0,17.2,30.4 +2021-08-20T04:00,58.9,69,48.9,0,0,2.2,27.3 +2021-08-20T05:00,57.2,84,52.3,0,0,2.7,4.7 +2021-08-20T06:00,56.1,82,50.8,0,0,4.3,7.8 +2021-08-20T07:00,58.7,61,45.5,0,0,9.3,16.8 +2021-08-20T08:00,60.8,62,47.7,0,0,2.6,16.6 +2021-08-20T09:00,63.4,47,43,0,0,2.1,10.7 +2021-08-20T10:00,67.8,41,43,0,0,3.9,12.5 +2021-08-20T11:00,70.7,34,41,0,0,3.1,12.5 +2021-08-20T12:00,72.7,32,41.4,0,0,3.2,12.1 +2021-08-20T13:00,75.9,28,40.1,0,0,2.1,12.1 +2021-08-20T14:00,78.5,25,40.1,0,0,3,11 +2021-08-20T15:00,78.4,25,39.5,0,0,6.8,15.2 +2021-08-20T16:00,79.1,22,36.5,0,0,6.3,15.7 +2021-08-20T17:00,74.8,27,38.7,0,0,13.1,15.7 +2021-08-20T18:00,73.3,29,39.2,0,0,8.1,22.1 +2021-08-20T19:00,68,35,39.6,0,0,4.6,13.2 +2021-08-20T20:00,69.3,34,39.8,0,0,3.4,6.9 +2021-08-20T21:00,67.7,37,40.8,0,0,1.6,4 +2021-08-20T22:00,60.4,56,44.8,0,0,4.3,5.4 +2021-08-20T23:00,57.7,65,46,0,0,3.8,5.4 +2021-08-21T00:00,58.1,63,45.6,0,0,4.1,6.3 +2021-08-21T01:00,58.6,62,45.5,0,0,5.6,6.7 +2021-08-21T02:00,59.7,59,45.6,0,0,4.8,6.7 +2021-08-21T03:00,59.5,58,44.8,0,0,4,6 +2021-08-21T04:00,61,50,42.2,0,0,3.5,5.4 +2021-08-21T05:00,57.1,58,42.4,0,0,5.1,11.2 +2021-08-21T06:00,56.6,60,43,0,0,6.5,10.5 +2021-08-21T07:00,58.5,55,42.4,0,0,5.9,11.9 +2021-08-21T08:00,60.1,51,41.9,0,0,3.6,12.1 +2021-08-21T09:00,66.3,45,44.1,0,0,5.7,13.4 +2021-08-21T10:00,76,31,43.6,0,0,10.1,18.8 +2021-08-21T11:00,78.5,28,43,0,0,12.8,25.5 +2021-08-21T12:00,80.7,26,42.5,0,0,10.9,25.1 +2021-08-21T13:00,82.7,24,42.1,0,0,12.5,23.9 +2021-08-21T14:00,82.9,25,43.1,0,0,7.9,24.2 +2021-08-21T15:00,78.9,31,45.7,0.004,0,8.6,17 +2021-08-21T16:00,79.3,30,45.6,0,0,15.5,27.1 +2021-08-21T17:00,76.4,37,48.2,0,0,8.6,27.5 +2021-08-21T18:00,75.1,42,50.7,0,0,4.4,14.3 +2021-08-21T19:00,71.2,50,51.5,0,0,4.9,8.1 +2021-08-21T20:00,69.3,51,50.3,0,0,8.2,13.2 +2021-08-21T21:00,67.6,49,47.9,0,0,7,13.6 +2021-08-21T22:00,67.8,49,48.2,0,0,11.7,18.8 +2021-08-21T23:00,66.9,55,50,0,0,12.5,20.6 +2021-08-22T00:00,65.5,59,50.7,0,0,10.6,20.6 +2021-08-22T01:00,63.4,65,51.5,0,0,8.7,17.7 +2021-08-22T02:00,61.3,70,51.4,0,0,6.2,14.3 +2021-08-22T03:00,59.2,72,50.1,0,0,4.7,10.3 +2021-08-22T04:00,59.2,68,48.6,0,0,5.2,7.6 +2021-08-22T05:00,56.8,73,48.3,0,0,4,12.3 +2021-08-22T06:00,57.4,71,48.2,0,0,10.6,16.6 +2021-08-22T07:00,60.5,67,49.5,0,0,6.4,16.6 +2021-08-22T08:00,65.1,56,49,0,0,5.2,12.8 +2021-08-22T09:00,70.2,46,48.7,0,0,4.1,12.8 +2021-08-22T10:00,74.7,42,50,0,0,4.4,12.3 +2021-08-22T11:00,80.2,34,49,0,0,5.3,14.1 +2021-08-22T12:00,82,25,42.6,0,0,5.2,14.5 +2021-08-22T13:00,83.7,23,41.5,0,0,0.8,13.4 +2021-08-22T14:00,85.6,22,41.9,0,0,2.5,9.4 +2021-08-22T15:00,85.8,22,42.4,0,0,2.6,10.3 +2021-08-22T16:00,86.7,20,40.6,0,0,3,8.9 +2021-08-22T17:00,85.4,24,44.2,0,0,7.4,11.4 +2021-08-22T18:00,81.9,31,48.4,0,0,4.8,12.5 +2021-08-22T19:00,77.3,37,48.7,0,0,3.3,7.8 +2021-08-22T20:00,70.6,50,51.3,0,0,3.4,5.8 +2021-08-22T21:00,70.2,52,51.8,0,0,4.7,6.7 +2021-08-22T22:00,67.1,53,49.6,0,0,5.3,7.4 +2021-08-22T23:00,64.7,52,46.5,0,0,4.6,6.9 +2021-08-23T00:00,62,55,45.4,0,0,5.1,6.3 +2021-08-23T01:00,61.2,50,42.2,0,0,4.5,6.5 +2021-08-23T02:00,60.1,52,42.3,0,0,5.2,6.7 +2021-08-23T03:00,59.5,53,42.2,0,0,5,7.2 +2021-08-23T04:00,57,58,42.3,0,0,3.4,6 +2021-08-23T05:00,55.8,64,43.9,0,0,3.6,4.7 +2021-08-23T06:00,56.8,65,45.2,0,0,4.6,6 +2021-08-23T07:00,63.2,54,46.3,0,0,1.7,8.3 +2021-08-23T08:00,69.6,45,47.3,0,0,2.9,8.9 +2021-08-23T09:00,74.8,37,46.9,0,0,0.9,9.4 +2021-08-23T10:00,79.3,30,45.6,0,0,1.8,9.4 +2021-08-23T11:00,83.4,23,42.1,0,0,2,9.4 +2021-08-23T12:00,86.6,20,40.2,0,0,3.4,11.2 +2021-08-23T13:00,87.6,20,41.6,0,0,4.2,12.8 +2021-08-23T14:00,88.9,20,42.1,0,0,4.7,15.4 +2021-08-23T15:00,90.4,16,38.7,0,0,2.9,15.4 +2021-08-23T16:00,90.5,16,38.4,0,0,4.8,12.1 +2021-08-23T17:00,83,29,47.4,0,0,2.8,10.7 +2021-08-23T18:00,80.9,39,53.5,0,0,2.4,6.5 +2021-08-23T19:00,73.1,50,53.2,0,0,5.9,7.2 +2021-08-23T20:00,69.7,56,53.2,0,0,3.8,6.9 +2021-08-23T21:00,66.2,63,53.4,0,0,2.7,4.7 +2021-08-23T22:00,65.1,64,52.4,0,0,3.8,5.6 +2021-08-23T23:00,64.9,55,48.4,0,0,5.1,9.4 +2021-08-24T00:00,63.9,51,45.4,0,0,3.5,8.1 +2021-08-24T01:00,63,45,41,0,0,6,10.1 +2021-08-24T02:00,61.2,44,39.1,0,0,4.3,10.3 +2021-08-24T03:00,59.5,47,39.1,0,0,4.1,7.4 +2021-08-24T04:00,58.3,51,40.2,0,0,4.3,7.2 +2021-08-24T05:00,56.6,53,39.7,0,0,4.8,6.9 +2021-08-24T06:00,58,53,40.8,0,0,3,6.9 +2021-08-24T07:00,64,45,42.2,0,0,3.8,8.7 +2021-08-24T08:00,73,36,44.4,0,0,2.5,9.4 +2021-08-24T09:00,80.4,25,41.4,0,0,1.7,8.5 +2021-08-24T10:00,85.1,19,38.3,0,0,1.4,9.4 +2021-08-24T11:00,87,17,37.6,0,0,4.6,12.3 +2021-08-24T12:00,87.5,17,37.7,0,0,5.2,14.3 +2021-08-24T13:00,89.2,16,36.6,0,0,1.4,13.9 +2021-08-24T14:00,90.7,14,35.2,0,0,4.7,12.8 +2021-08-24T15:00,90.7,14,34.9,0,0,5.7,13.2 +2021-08-24T16:00,89.8,15,35.3,0,0,8.7,17.2 +2021-08-24T17:00,90,14,35.1,0,0,5.2,17 +2021-08-24T18:00,85.1,20,39.3,0,0,4.3,9.8 +2021-08-24T19:00,77.6,22,35.9,0,0,6.9,9.4 +2021-08-24T20:00,82,18,34.4,0,0,5.7,10.3 +2021-08-24T21:00,69.8,33,39.4,0,0,4,6.9 +2021-08-24T22:00,66.3,46,44.8,0,0,4.7,7.6 +2021-08-24T23:00,64.2,48,44.2,0,0,5.4,7.6 +2021-08-25T00:00,63.2,48,43.2,0,0,4.5,6.9 +2021-08-25T01:00,61.2,53,44,0,0,5.1,5.4 +2021-08-25T02:00,62.7,49,43.1,0,0,5,11.6 +2021-08-25T03:00,59.8,51,41.7,0,0,6.5,8.5 +2021-08-25T04:00,61.3,46,40.2,0,0,4.7,8.3 +2021-08-25T05:00,61.3,56,45.5,0,0,6.5,8.9 +2021-08-25T06:00,61.2,60,47.2,0,0,6.7,11.2 +2021-08-25T07:00,64.6,59,49.8,0,0,9,16.1 +2021-08-25T08:00,66.5,60,52.2,0,0,7.2,17.2 +2021-08-25T09:00,69.3,56,52.8,0,0,4.7,15.7 +2021-08-25T10:00,72.9,50,52.9,0,0,3.7,13.4 +2021-08-25T11:00,76.9,43,52.4,0,0,4.5,13.9 +2021-08-25T12:00,80.6,36,51.2,0,0,4.7,14.3 +2021-08-25T13:00,83.4,31,49.4,0,0,3.8,14.3 +2021-08-25T14:00,85.6,28,48.6,0,0,3.8,13.2 +2021-08-25T15:00,87.3,26,48.5,0,0,4.6,13 +2021-08-25T16:00,88,25,48.3,0,0,6.5,14.8 +2021-08-25T17:00,80.1,48,58.7,0,0,5.1,16.3 +2021-08-25T18:00,78.8,50,58.7,0,0,3.4,9.8 +2021-08-25T19:00,72.6,64,59.8,0.008,0,9.3,13.9 +2021-08-25T20:00,70.2,72,60.5,0,0,4.3,15.7 +2021-08-25T21:00,68.8,76,61,0,0,3.2,7.4 +2021-08-25T22:00,68.2,72,59,0,0,4.5,6.9 +2021-08-25T23:00,67,71,57.3,0,0,5.1,8.7 +2021-08-26T00:00,64.9,74,56.4,0,0,3.3,8.3 +2021-08-26T01:00,64.2,74,55.9,0,0,2.4,5.4 +2021-08-26T02:00,61.5,81,55.8,0,0,2.5,3.6 +2021-08-26T03:00,60.4,80,54.1,0,0,3.8,4.7 +2021-08-26T04:00,61.3,73,52.5,0,0,1.5,4.9 +2021-08-26T05:00,62.7,67,51.7,0,0,2.9,3.1 +2021-08-26T06:00,61.6,73,52.9,0,0,1.4,3.8 +2021-08-26T07:00,63.7,75,55.5,0,0,2.7,8.1 +2021-08-26T08:00,67.4,71,57.5,0,0,3,10.1 +2021-08-26T09:00,73.2,54,55.6,0,0,2.7,10.5 +2021-08-26T10:00,79.2,40,53,0,0,2.4,10.7 +2021-08-26T11:00,82.6,34,51.4,0,0,4.6,12.5 +2021-08-26T12:00,80.6,38,52.4,0,0,3.8,14.3 +2021-08-26T13:00,79.3,40,53.2,0,0,3.4,14.1 +2021-08-26T14:00,82.6,30,48.2,0,0,9.7,19.7 +2021-08-26T15:00,85.8,23,43.3,0,0,9.4,20.1 +2021-08-26T16:00,86,23,43.3,0,0,6,19.2 +2021-08-26T17:00,84,21,40.1,0,0,11.4,14.8 +2021-08-26T18:00,81,25,41.6,0,0,7.7,19.7 +2021-08-26T19:00,73.8,33,43.3,0,0,4.6,12.8 +2021-08-26T20:00,68.8,42,45,0,0,4.4,9.8 +2021-08-26T21:00,69.5,48,49.1,0,0,13.5,21.5 +2021-08-26T22:00,66.6,57,50.9,0,0,4.6,22.4 +2021-08-26T23:00,65,60,50.8,0,0,4.3,6.9 +2021-08-27T00:00,63.5,62,50.5,0,0,4.1,7.4 +2021-08-27T01:00,62.1,64,49.8,0,0,5.4,8.5 +2021-08-27T02:00,61.3,67,50.3,0,0,5.5,9.6 +2021-08-27T03:00,59.6,70,49.9,0,0,4.3,8.9 +2021-08-27T04:00,57.7,71,48.3,0,0,4.1,7.2 +2021-08-27T05:00,57.1,66,45.9,0,0,4.4,7.2 +2021-08-27T06:00,58.6,60,44.9,0,0,4.7,7.4 +2021-08-27T07:00,64.7,50,45.6,0,0,5.2,10.5 +2021-08-27T08:00,72.4,41,47.1,0,0,3.6,10.7 +2021-08-27T09:00,79.4,30,45.4,0,0,3.3,10.3 +2021-08-27T10:00,84.5,24,43.4,0,0,3,11.4 +2021-08-27T11:00,87.1,20,40.6,0,0,3.7,11.4 +2021-08-27T12:00,89.3,18,40.5,0,0,6.4,15.9 +2021-08-27T13:00,91.3,17,39.8,0,0,7.5,17 +2021-08-27T14:00,92,16,38.8,0,0,4.2,16.8 +2021-08-27T15:00,91,15,37.8,0,0,2.4,12.3 +2021-08-27T16:00,89.2,17,38,0,0,5.2,10.7 +2021-08-27T17:00,83.8,23,42.1,0,0,5.4,11.6 +2021-08-27T18:00,80.9,37,52,0.004,0,1.3,10.1 +2021-08-27T19:00,75.7,41,50.2,0,0,8.9,14.1 +2021-08-27T20:00,75.6,31,42.6,0,0,6.7,15.4 +2021-08-27T21:00,70,39,44.1,0,0,6.6,11 +2021-08-27T22:00,66.9,45,44.6,0,0,4.7,7.8 +2021-08-27T23:00,64.1,53,46.7,0,0,4.5,6 +2021-08-28T00:00,63.9,51,45.2,0,0,4.5,6.7 +2021-08-28T01:00,64.7,44,42.4,0,0,6.4,10.3 +2021-08-28T02:00,63.6,43,40.6,0,0,5.5,10.5 +2021-08-28T03:00,59.5,52,41.8,0,0,5.8,8.9 +2021-08-28T04:00,57.9,55,41.8,0,0,4,6.9 +2021-08-28T05:00,57.1,55,41.2,0,0,4.7,5.1 +2021-08-28T06:00,58.6,52,41.1,0,0,3.6,6 +2021-08-28T07:00,64.8,43,41.9,0,0,3.5,8.1 +2021-08-28T08:00,70.7,37,43.3,0,0,3.8,10.3 +2021-08-28T09:00,75.3,33,44.2,0,0,4.9,12.8 +2021-08-28T10:00,80,28,44.2,0,0,4.7,14.1 +2021-08-28T11:00,84.6,24,44,0,0,6.2,15.4 +2021-08-28T12:00,88.3,20,42.5,0,0,6.1,16.3 +2021-08-28T13:00,90.1,18,40.6,0,0,4.1,15.7 +2021-08-28T14:00,91,16,38.9,0,0,6.5,14.8 +2021-08-28T15:00,90.1,16,38.3,0,0,9.1,18.6 +2021-08-28T16:00,90.2,14,35.4,0,0,7.2,18.3 +2021-08-28T17:00,87.3,23,45.1,0,0,8.5,18.3 +2021-08-28T18:00,79,42,53.8,0,0,12.6,24.6 +2021-08-28T19:00,75.7,43,51.4,0,0,4.5,21 +2021-08-28T20:00,73.3,48,52.4,0,0,9.2,14.8 +2021-08-28T21:00,70.4,53,52.5,0,0,11.9,24.4 +2021-08-28T22:00,68.7,55,51.8,0,0,6,19.5 +2021-08-28T23:00,68.2,53,50.3,0,0,6.2,10.3 +2021-08-29T00:00,66.8,51,48.3,0,0,10.7,17.7 +2021-08-29T01:00,65.5,50,46.3,0,0,11.3,19.2 +2021-08-29T02:00,64.4,52,46.3,0,0,9.1,18.8 +2021-08-29T03:00,63.3,56,47.4,0,0,6.4,15.4 +2021-08-29T04:00,62.2,61,48.6,0,0,3,10.7 +2021-08-29T05:00,61.6,66,50.3,0,0,2.6,5.4 +2021-08-29T06:00,61,70,51.2,0,0,2.4,4.3 +2021-08-29T07:00,62,68,51.4,0,0,2.6,7.6 +2021-08-29T08:00,64,65,51.9,0,0,2,8.5 +2021-08-29T09:00,67.6,59,52.5,0,0,4.1,12.3 +2021-08-29T10:00,72.2,50,52.5,0,0,6,15.4 +2021-08-29T11:00,75.1,43,51.4,0,0,2.1,15.4 +2021-08-29T12:00,78.6,39,51.4,0,0,2,11 +2021-08-29T13:00,80.8,36,51.7,0,0,1.4,11.2 +2021-08-29T14:00,81.1,36,51.6,0.004,0,1,15.9 +2021-08-29T15:00,81.2,35,50.8,0,0,7.3,15.2 +2021-08-29T16:00,81.9,31,48.3,0,0,4.9,15.7 +2021-08-29T17:00,78.7,41,52.8,0,0,5.3,11.6 +2021-08-29T18:00,77.1,42,52.4,0,0,5.1,10.7 +2021-08-29T19:00,73.7,47,52,0,0,7.8,12.5 +2021-08-29T20:00,71.8,53,53.7,0,0,8.7,14.1 +2021-08-29T21:00,70.3,55,53.3,0,0,4.8,14.3 +2021-08-29T22:00,66.2,64,53.8,0,0,2.9,8.1 +2021-08-29T23:00,63.3,74,54.9,0,0,2.4,4.3 +2021-08-30T00:00,61.5,79,54.9,0,0,2.4,4 +2021-08-30T01:00,59.5,84,54.7,0,0,1.7,4 +2021-08-30T02:00,57.7,85,53.4,0,0,2.2,4 +2021-08-30T03:00,56.1,85,51.8,0,0,2.7,4.7 +2021-08-30T04:00,54.7,88,51.3,0,0,2.6,4.7 +2021-08-30T05:00,55,74,46.8,0,0,4.1,4.5 +2021-08-30T06:00,55.9,62,43.2,0,0,2.2,5.1 +2021-08-30T07:00,61.2,51,42.8,0,0,2.3,6.9 +2021-08-30T08:00,68.9,43,45.3,0,0,1.6,7.6 +2021-08-30T09:00,77.5,28,42.2,0,0,3.3,10.3 +2021-08-30T10:00,85.1,16,34.5,0,0,3.7,11.9 +2021-08-30T11:00,88.9,12,30,0,0,2.9,11.6 +2021-08-30T12:00,90.1,10,27.2,0,0,6,14.8 +2021-08-30T13:00,91,10,26,0,0,9.1,19 +2021-08-30T14:00,91.2,9,25.3,0,0,8.1,20.1 +2021-08-30T15:00,92.1,9,25.3,0,0,6.9,17.4 +2021-08-30T16:00,91.8,9,25.3,0,0,10.6,18.8 +2021-08-30T17:00,88.6,11,28,0,0,6.3,21 +2021-08-30T18:00,82,28,45.9,0,0,6.1,10.5 +2021-08-30T19:00,81.1,17,31.5,0,0,3.6,7.2 +2021-08-30T20:00,72.1,27,36.3,0,0,5.4,7.6 +2021-08-30T21:00,68,32,36.7,0,0,4,6.9 +2021-08-30T22:00,64.2,38,37.9,0,0,5,9.6 +2021-08-30T23:00,63.1,40,38.4,0,0,4.2,8.3 +2021-08-31T00:00,60.7,44,38.6,0,0,3.7,6.7 +2021-08-31T01:00,59.7,43,37.3,0,0,4,5.8 +2021-08-31T02:00,59.2,41,35.2,0,0,4.3,6.5 +2021-08-31T03:00,59.1,38,33.4,0,0,4.4,6.9 +2021-08-31T04:00,58.4,38,33,0,0,4.9,6.9 +2021-08-31T05:00,58.3,37,32.1,0,0,7.3,6.9 +2021-08-31T06:00,59.7,43,37,0,0,5,8.5 +2021-08-31T07:00,65.4,31,34.1,0,0,2.2,6 +2021-08-31T08:00,72,29,38,0,0,3.8,9.6 +2021-08-31T09:00,79.7,20,35.2,0,0,5.2,12.8 +2021-08-31T10:00,85.7,15,32.2,0,0,4.6,13 +2021-08-31T11:00,89.5,12,30.1,0,0,3.9,12.8 +2021-08-31T12:00,91.6,11,28.7,0,0,4.7,13.2 +2021-08-31T13:00,92.6,10,28.7,0,0,6.9,15.9 +2021-08-31T14:00,92.5,10,28.4,0,0,6.5,16.8 +2021-08-31T15:00,92.4,10,28,0,0,4.1,15 +2021-08-31T16:00,92.3,10,28.6,0,0,6.7,12.8 +2021-08-31T17:00,90.1,13,31.8,0,0,4.1,15.7 +2021-08-31T18:00,84.1,27,46.4,0,0,5.4,7.6 +2021-08-31T19:00,84.6,17,35.3,0,0,2.9,6.5 +2021-08-31T20:00,76.2,23,35.2,0,0,5.7,9.2 +2021-08-31T21:00,78.9,18,31.1,0,0,10.8,19.7 +2021-08-31T22:00,71.7,25,33.7,0,0,6.1,17.7 +2021-08-31T23:00,70.6,26,34.4,0,0,5,8.5 +2021-09-01T00:00,71.9,26,34.7,0,0,3.4,8.5 +2021-09-01T01:00,63.9,38,37.7,0,0,5.3,5.6 +2021-09-01T02:00,63,40,38,0,0,5.4,7.4 +2021-09-01T03:00,62.8,41,38.6,0,0,3.7,8.3 +2021-09-01T04:00,58.6,48,39.1,0,0,2.5,4.7 +2021-09-01T05:00,58.6,51,40.7,0,0,2.2,5.8 +2021-09-01T06:00,58.8,54,42.2,0,0,1.5,4.3 +2021-09-01T07:00,65.3,45,43.4,0,0,2.3,6.5 +2021-09-01T08:00,71.5,35,42.4,0,0,5.4,11.4 +2021-09-01T09:00,74.3,35,45.1,0,0,7.7,16.1 +2021-09-01T10:00,79.3,31,45.7,0,0,6.8,17 +2021-09-01T11:00,84,27,46.6,0,0,6.3,16.3 +2021-09-01T12:00,87.8,24,46.6,0,0,7.1,16.8 +2021-09-01T13:00,88.4,23,46,0,0,9.5,19.7 +2021-09-01T14:00,89.3,21,44.3,0,0,10.5,20.6 +2021-09-01T15:00,89,20,42.5,0,0,12.3,24.6 +2021-09-01T16:00,88.3,20,41.5,0,0,8.6,23.3 +2021-09-01T17:00,79.6,31,46.6,0,0,8.4,15.9 +2021-09-01T18:00,77.3,36,47.9,0,0,11.1,18.1 +2021-09-01T19:00,73,45,50.4,0,0,10.1,19.5 +2021-09-01T20:00,69.3,66,57.4,0.024,0,4.7,16.3 +2021-09-01T21:00,67.4,85,62.9,0.055,0,0.7,7.2 +2021-09-01T22:00,66.3,90,63.2,0.016,0,1.4,3.1 +2021-09-01T23:00,65.5,88,62,0,0,2.3,4 +2021-09-02T00:00,64.8,89,61.5,0.004,0,1.8,3.8 +2021-09-02T01:00,62.9,98,62.3,0,0,2.6,4.5 +2021-09-02T02:00,62.4,97,61.7,0,0,2.7,6 +2021-09-02T03:00,61.4,97,60.5,0,0,2.6,4.9 +2021-09-02T04:00,60,98,59.5,0,0,2.4,4.7 +2021-09-02T05:00,59.5,90,56.8,0,0,4.5,4.9 +2021-09-02T06:00,60.2,86,56.1,0,0,4.6,7.4 +2021-09-02T07:00,64.6,75,56.3,0,0,3,9.2 +2021-09-02T08:00,69.1,56,52.9,0,0,1.5,7.8 +2021-09-02T09:00,71.4,53,53.2,0,0,2.4,10.1 +2021-09-02T10:00,73.4,48,52.5,0,0,1.1,10.1 +2021-09-02T11:00,74.6,45,51.7,0,0,2.3,10.1 +2021-09-02T12:00,76.7,38,49.4,0,0,3,11.2 +2021-09-02T13:00,80.2,30,46,0,0,4.2,13.2 +2021-09-02T14:00,81.3,28,45.1,0,0,6.6,15.9 +2021-09-02T15:00,81.5,27,44.3,0,0,6.1,16.1 +2021-09-02T16:00,81.2,26,43.4,0,0,5.3,14.5 +2021-09-02T17:00,78.6,35,49,0,0,7.7,12.3 +2021-09-02T18:00,74.8,46,52.8,0.012,0,8.7,15 +2021-09-02T19:00,72.9,48,52.1,0,0,6.5,14.3 +2021-09-02T20:00,71.4,52,52.8,0,0,4.1,10.7 +2021-09-02T21:00,70,56,53.7,0,0,4.9,7.8 +2021-09-02T22:00,67.2,63,54.2,0,0,7.1,11.4 +2021-09-02T23:00,65.1,69,54.5,0,0,5.8,11.9 +2021-09-03T00:00,64.6,67,53.2,0,0,3.4,9.4 +2021-09-03T01:00,63,70,53,0,0,2.1,5.4 +2021-09-03T02:00,60.7,77,53.4,0,0,3.5,5.4 +2021-09-03T03:00,59.4,81,53.6,0,0,3.9,6.5 +2021-09-03T04:00,58.1,85,53.7,0,0,2.4,6.3 +2021-09-03T05:00,60.5,74,52.3,0,0,3.4,4 +2021-09-03T06:00,59.8,72,50.7,0,0,2.2,5.6 +2021-09-03T07:00,62.3,66,50.7,0,0,1.1,6.3 +2021-09-03T08:00,66.1,59,51.3,0,0,2.1,7.8 +2021-09-03T09:00,70.3,51,51.5,0,0,4.1,11.4 +2021-09-03T10:00,74.5,46,52.6,0,0,5.3,14.1 +2021-09-03T11:00,76.5,47,54.7,0,0,6.1,16.1 +2021-09-03T12:00,78.9,43,54.4,0,0,2.6,18.8 +2021-09-03T13:00,78.3,44,54.9,0.004,0,6.7,16.8 +2021-09-03T14:00,71.7,63,58.6,0.071,0,6.9,17.2 +2021-09-03T15:00,75.2,52,56.4,0,0,7.2,15.9 +2021-09-03T16:00,74.8,50,55.2,0,0,1.9,16.1 +2021-09-03T17:00,73.9,46,51.6,0,0,7,8.3 +2021-09-03T18:00,72.3,54,54.9,0,0,5.7,13.6 +2021-09-03T19:00,69.9,59,55,0,0,7.8,8.9 +2021-09-03T20:00,66.8,64,54.2,0,0,11.7,23.5 +2021-09-03T21:00,64.3,71,54.6,0,0,8.9,19.5 +2021-09-03T22:00,62.8,77,55.3,0,0,7.9,15.4 +2021-09-03T23:00,61.3,81,55.3,0,0,4.1,13.2 +2021-09-04T00:00,60.6,82,55.1,0,0,2,6.9 +2021-09-04T01:00,60.6,81,54.7,0,0,3.1,4.9 +2021-09-04T02:00,58.7,86,54.5,0,0,3.6,5.6 +2021-09-04T03:00,56.9,91,54.3,0,0,3.5,5.8 +2021-09-04T04:00,55.7,91,53,0,0,3.2,5.8 +2021-09-04T05:00,54.7,82,49.2,0,0,3,6.7 +2021-09-04T06:00,54.6,82,49.1,0,0,2.2,5.4 +2021-09-04T07:00,57.7,76,50.2,0,0,0.2,4.9 +2021-09-04T08:00,63,64,50.5,0,0,1.9,8.3 +2021-09-04T09:00,69.7,45,47.5,0,0,2.2,9.8 +2021-09-04T10:00,75.2,33,44.5,0,0,1.3,9.8 +2021-09-04T11:00,78.5,27,42,0,0,2.1,10.7 +2021-09-04T12:00,80.6,24,40.6,0,0,1.2,10.7 +2021-09-04T13:00,82,23,40.4,0,0,1.6,10.5 +2021-09-04T14:00,82.9,22,40.1,0,0,2.3,11.2 +2021-09-04T15:00,83.1,21,39.7,0,0,4.7,12.3 +2021-09-04T16:00,82.3,22,40,0,0,8.1,16.1 +2021-09-04T17:00,81.6,22,39,0,0,6.5,16.8 +2021-09-04T18:00,78,27,41.4,0,0,9.5,15.9 +2021-09-04T19:00,73.9,32,42.6,0,0,4.8,15.7 +2021-09-04T20:00,71.5,47,50,0,0,8,13.6 +2021-09-04T21:00,66.5,62,53.1,0,0,3.8,13.2 +2021-09-04T22:00,63.5,67,52.3,0,0,3.4,6.3 +2021-09-04T23:00,60.9,67,49.8,0,0,3.7,6.5 +2021-09-05T00:00,59.5,60,45.9,0,0,3.8,6.3 +2021-09-05T01:00,58.3,49,39.4,0,0,4,6.9 +2021-09-05T02:00,57.1,41,33.4,0,0,4.2,6.5 +2021-09-05T03:00,55.3,38,30.3,0,0,4.5,7.6 +2021-09-05T04:00,54.1,38,29.3,0,0,5.2,8.7 +2021-09-05T05:00,54.9,36,28.6,0,0,5.2,8.9 +2021-09-05T06:00,54.7,38,29.3,0,0,4.5,8.7 +2021-09-05T07:00,60,36,32.6,0,0,4.9,9.8 +2021-09-05T08:00,69.6,29,36.1,0,0,4,10.5 +2021-09-05T09:00,76.9,18,30.8,0,0,2,10.5 +2021-09-05T10:00,80.4,11,21.1,0,0,2.3,10.1 +2021-09-05T11:00,82.6,9,18.8,0,0,2.9,11.4 +2021-09-05T12:00,84.4,9,18.8,0,0,3.8,12.8 +2021-09-05T13:00,85.8,9,19.6,0,0,5.1,14.3 +2021-09-05T14:00,86.7,9,20.4,0,0,6.8,16.1 +2021-09-05T15:00,86.5,9,20.7,0,0,8.2,17.4 +2021-09-05T16:00,85.2,9,20.9,0,0,7.8,17.7 +2021-09-05T17:00,83.8,10,22.3,0,0,6.4,15.9 +2021-09-05T18:00,77.5,16,28.4,0,0,4.6,11.2 +2021-09-05T19:00,77.4,15,25.8,0,0,4.2,7.6 +2021-09-05T20:00,68.7,22,28.5,0,0,5.8,7.6 +2021-09-05T21:00,65.1,28,31.1,0,0,4.8,7.4 +2021-09-05T22:00,61.9,34,33.4,0,0,4.2,8.1 +2021-09-05T23:00,58.6,41,35.2,0,0,3.3,6.9 +2021-09-06T00:00,57.5,45,36.5,0,0,3.7,5.6 +2021-09-06T01:00,56.3,46,35.6,0,0,3.8,6.3 +2021-09-06T02:00,55.1,45,34.3,0,0,3.6,6.3 +2021-09-06T03:00,54.4,43,32.3,0,0,3.6,5.8 +2021-09-06T04:00,53.7,41,30.4,0,0,4.3,6 +2021-09-06T05:00,54.1,38,28.8,0,0,5.6,7.2 +2021-09-06T06:00,56,36,29.8,0,0,5.1,7.8 +2021-09-06T07:00,63.4,30,31.8,0,0,6.2,11.2 +2021-09-06T08:00,73.9,21,32,0,0,4.1,11.2 +2021-09-06T09:00,82,15,29.8,0,0,2,10.1 +2021-09-06T10:00,86.1,10,23.9,0,0,1.4,8.7 +2021-09-06T11:00,88.3,9,23,0,0,3.7,12.1 +2021-09-06T12:00,89.9,9,24.1,0,0,4.2,13.2 +2021-09-06T13:00,91.1,9,25.1,0,0,5.4,14.5 +2021-09-06T14:00,91.9,9,25.5,0,0,5.8,15 +2021-09-06T15:00,92.1,9,25.4,0,0,6.6,15.2 +2021-09-06T16:00,91.5,9,25.1,0,0,7.4,15.2 +2021-09-06T17:00,90.4,8,20.4,0,0,7.3,15 +2021-09-06T18:00,85,10,21.2,0,0,6.7,13.6 +2021-09-06T19:00,80.3,12,22.2,0,0,12,18.6 +2021-09-06T20:00,78.1,12,20.4,0,0,12.3,22.4 +2021-09-06T21:00,75.2,13,21.7,0,0,10.4,20.4 +2021-09-06T22:00,72.7,15,22.6,0,0,9.2,17.2 +2021-09-06T23:00,69.1,17,22.9,0,0,5.4,15.2 +2021-09-07T00:00,64.1,21,23.5,0,0,6.8,8.7 +2021-09-07T01:00,62.7,23,23.8,0,0,6.5,8.5 +2021-09-07T02:00,62.2,23,23.7,0,0,5.6,9.4 +2021-09-07T03:00,66.6,19,23.3,0,0,4.3,9.4 +2021-09-07T04:00,59.5,28,26.7,0,0,5.2,6.3 +2021-09-07T05:00,58.2,31,27.9,0,0,5.6,6.3 +2021-09-07T06:00,60.4,32,30.7,0,0,3.8,6.7 +2021-09-07T07:00,65.6,27,30.9,0,0,1.6,6 +2021-09-07T08:00,71.7,20,28.7,0,0,2.2,8.9 +2021-09-07T09:00,76.2,17,27.6,0,0,6.8,15.4 +2021-09-07T10:00,78,18,31.3,0,0,7,17 +2021-09-07T11:00,80.3,18,32.4,0,0,6.3,16.8 +2021-09-07T12:00,82.5,16,32.1,0,0,5.3,16.3 +2021-09-07T13:00,84.1,15,32.1,0,0,5,15.2 +2021-09-07T14:00,85.2,15,32.7,0,0,4,14.5 +2021-09-07T15:00,85.6,15,33.2,0,0,3.6,13 +2021-09-07T16:00,85.1,16,33.3,0,0,5,12.5 +2021-09-07T17:00,83.5,15,31,0,0,5,12.5 +2021-09-07T18:00,77.9,23,37,0,0,4.6,9.8 +2021-09-07T19:00,73,26,35.7,0,0,6.2,7.6 +2021-09-07T20:00,70.3,30,37.7,0,0,5.9,8.1 +2021-09-07T21:00,72.9,27,36.8,0,0,2.7,7.2 +2021-09-07T22:00,64.8,36,37.5,0,0,5.4,6.3 +2021-09-07T23:00,62,40,37.2,0,0,3.3,6.7 +2021-09-08T00:00,59.3,46,38.7,0,0,3.2,5.4 +2021-09-08T01:00,58.4,50,39.6,0,0,4,5.8 +2021-09-08T02:00,59.5,46,38.8,0,0,2.7,4.7 +2021-09-08T03:00,56.8,50,38.2,0,0,3.2,3.8 +2021-09-08T04:00,58.1,45,37,0,0,2.4,4 +2021-09-08T05:00,58.3,44,36.7,0,0,2.3,2.9 +2021-09-08T06:00,57.5,48,38,0,0,2.9,4.3 +2021-09-08T07:00,59,49,40,0,0,1.6,5.6 +2021-09-08T08:00,63.6,42,40.2,0,0,1.1,6.9 +2021-09-08T09:00,69.8,33,39.3,0,0,1.1,8.5 +2021-09-08T10:00,75.5,26,38.3,0,0,3.6,11.9 +2021-09-08T11:00,80.1,22,37.5,0,0,5.9,15.4 +2021-09-08T12:00,83.5,18,35.7,0,0,6.7,17 +2021-09-08T13:00,85.7,17,35.2,0,0,7.1,17.4 +2021-09-08T14:00,86.8,16,35.9,0,0,7.5,17.4 +2021-09-08T15:00,86.9,16,36.1,0,0,8,17.9 +2021-09-08T16:00,86.1,17,36.5,0,0,7.9,17.7 +2021-09-08T17:00,84.7,18,36.5,0,0,5.1,16.3 +2021-09-08T18:00,79.2,23,38,0,0,3.8,10.1 +2021-09-08T19:00,73.9,27,37.6,0,0,5,6.7 +2021-09-08T20:00,72.4,30,38.9,0,0,5.3,7.4 +2021-09-08T21:00,73.7,28,38.6,0,0,3.7,6.3 +2021-09-08T22:00,71.8,30,38.8,0,0,0.9,4.5 +2021-09-08T23:00,68.2,35,39.7,0,0,3.4,4.3 +2021-09-09T00:00,62.4,45,40.8,0,0,4.3,4.5 +2021-09-09T01:00,60.7,44,38.9,0,0,4.3,6.9 +2021-09-09T02:00,57.9,40,33.5,0,0,4.5,7.2 +2021-09-09T03:00,55.5,42,33,0,0,4.5,6.3 +2021-09-09T04:00,53.6,53,36.9,0,0,5.2,6.5 +2021-09-09T05:00,53.3,53,36.5,0,0,3.7,6.9 +2021-09-09T06:00,53.8,49,35,0,0,4.2,6.5 +2021-09-09T07:00,60.2,38,34.3,0,0,4.5,9.4 +2021-09-09T08:00,70.8,27,35.6,0,0,2.6,9.2 +2021-09-09T09:00,81.3,18,33.6,0,0,3.1,10.1 +2021-09-09T10:00,88.1,11,25.9,0,0,2.9,11.2 +2021-09-09T11:00,90.9,8,20.6,0,0,1.6,10.7 +2021-09-09T12:00,92.8,6,16.9,0,0,4.9,13.4 +2021-09-09T13:00,94.2,6,18,0,0,6.3,15.4 +2021-09-09T14:00,94.7,7,19.4,0,0,7.4,16.6 +2021-09-09T15:00,94.4,7,20.7,0,0,8.2,17.2 +2021-09-09T16:00,93.2,8,22.2,0,0,8.2,17.2 +2021-09-09T17:00,91.8,9,24.7,0,0,4.7,16.1 +2021-09-09T18:00,82.7,16,31.9,0,0,6.2,7.6 +2021-09-09T19:00,83.9,12,26.4,0,0,3.1,7.4 +2021-09-09T20:00,73.5,19,28.6,0,0,5.2,7.8 +2021-09-09T21:00,68,25,30.4,0,0,4.1,7.6 +2021-09-09T22:00,64.1,30,32.2,0,0,4,6.3 +2021-09-09T23:00,60.7,37,34.6,0,0,3.2,6 +2021-09-10T00:00,58.8,43,36.1,0,0,2.7,4.5 +2021-09-10T01:00,58.5,41,34.9,0,0,3.7,5.6 +2021-09-10T02:00,58.5,36,31.4,0,0,4,6.3 +2021-09-10T03:00,57.7,33,29,0,0,4,6.5 +2021-09-10T04:00,57.3,34,29,0,0,4.4,6.7 +2021-09-10T05:00,56.1,38,30.8,0,0,5.2,6.9 +2021-09-10T06:00,56.8,39,32,0,0,4.8,7.2 +2021-09-10T07:00,64.9,29,32,0,0,4.4,8.5 +2021-09-10T08:00,73.9,24,34.9,0,0,2.7,8.5 +2021-09-10T09:00,83,18,35.2,0,0,3.2,10.3 +2021-09-10T10:00,89.7,12,29.9,0,0,2.6,10.3 +2021-09-10T11:00,93.5,9,25.5,0,0,3.6,11.6 +2021-09-10T12:00,94.8,8,25.5,0,0,4.5,13.2 +2021-09-10T13:00,95.5,8,26.2,0,0,4.6,13.4 +2021-09-10T14:00,95.9,8,26.2,0,0,4.2,13.2 +2021-09-10T15:00,95.7,8,26.1,0,0,4.1,12.3 +2021-09-10T16:00,95.3,8,25.3,0,0,6.5,13 +2021-09-10T17:00,92.6,30,56.6,0,0,1.5,15.2 +2021-09-10T18:00,86.5,13,29.9,0,0,3.9,4.5 +2021-09-10T19:00,78.6,16,28.6,0,0,5,5.8 +2021-09-10T20:00,73.5,20,29.6,0,0,4.5,6.9 +2021-09-10T21:00,70.4,23,31.1,0,0,3.1,6 +2021-09-10T22:00,66.9,27,31.6,0,0,3.8,5.4 +2021-09-10T23:00,65.2,27,30.7,0,0,4.3,6.9 +2021-09-11T00:00,62.5,29,30.1,0,0,4.9,6.9 +2021-09-11T01:00,67.2,24,29,0,0,3.6,7.8 +2021-09-11T02:00,67,25,30,0,0,2.7,6 +2021-09-11T03:00,60.7,31,30,0,0,7,8.3 +2021-09-11T04:00,59.5,32,29.5,0,0,7.6,9.4 +2021-09-11T05:00,58.4,35,30.8,0,0,6.5,8.9 +2021-09-11T06:00,58,40,33.7,0,0,6,8.1 +2021-09-11T07:00,64.8,32,34.3,0,0,4.6,8.7 +2021-09-11T08:00,73.1,26,35.8,0,0,4.8,11 +2021-09-11T09:00,82.5,17,32.8,0,0,5,12.1 +2021-09-11T10:00,89,13,31.2,0,0,6.7,15.9 +2021-09-11T11:00,91.7,12,31,0,0,5.3,15.7 +2021-09-11T12:00,94,10,28.4,0,0,4.7,16.3 +2021-09-11T13:00,94.8,9,27.1,0,0,3.2,15.4 +2021-09-11T14:00,96.4,9,28,0,0,4.6,12.8 +2021-09-11T15:00,89.8,15,36.6,0,0,13.2,25.9 +2021-09-11T16:00,91.7,11,30.5,0,0,8.4,24.2 +2021-09-11T17:00,86.1,22,42.5,0,0,4.3,16.3 +2021-09-11T18:00,81.9,27,44.8,0,0,6.1,12.3 +2021-09-11T19:00,77.8,34,47,0,0,3,10.1 +2021-09-11T20:00,73.6,38,46.6,0,0,3.9,9.8 +2021-09-11T21:00,73.8,35,44.2,0,0,4.5,9.6 +2021-09-11T22:00,72.5,37,45,0,0,4.5,7.8 +2021-09-11T23:00,70.2,42,46.3,0,0,2.7,5.6 +2021-09-12T00:00,67.1,45,45.2,0,0,4.3,4.9 +2021-09-12T01:00,64.9,45,42.8,0,0,5,6.7 +2021-09-12T02:00,63.9,45,42.4,0,0,4.5,6.5 +2021-09-12T03:00,62.6,48,42.8,0,0,4.5,6.5 +2021-09-12T04:00,60.2,54,43.3,0,0,4.4,5.4 +2021-09-12T05:00,58.9,54,42.2,0,0,4.6,6 +2021-09-12T06:00,58.8,53,41.6,0,0,4.4,7.8 +2021-09-12T07:00,63.8,45,42.3,0,0,4,9.4 +2021-09-12T08:00,68.5,40,43.3,0,0,1.4,8.5 +2021-09-12T09:00,75.9,30,41.9,0,0,3.4,10.3 +2021-09-12T10:00,78.5,28,42.9,0,0,6.5,16.1 +2021-09-12T11:00,80.8,27,43.4,0,0,6.7,16.6 +2021-09-12T12:00,84.4,23,42.3,0,0,5.2,16.6 +2021-09-12T13:00,85.3,20,40.2,0,0,4,14.8 +2021-09-12T14:00,86.2,18,38.1,0,0,4.9,13.4 +2021-09-12T15:00,84.2,21,40.6,0,0,9.9,20.8 +2021-09-12T16:00,83,22,40.7,0,0,3,19.5 +2021-09-12T17:00,76.5,37,48.2,0,0,6,9.2 +2021-09-12T18:00,75.1,39,48.4,0,0,3.7,10.3 +2021-09-12T19:00,72.4,44,49.5,0,0,3.9,7.2 +2021-09-12T20:00,69.2,50,49.9,0,0,2.4,6.7 +2021-09-12T21:00,66.6,56,50.3,0,0,4.4,6.7 +2021-09-12T22:00,64.7,60,50.4,0,0,3.9,7.2 +2021-09-12T23:00,63.1,64,50.7,0,0,4.3,6.9 +2021-09-13T00:00,61.5,68,50.7,0,0,4.1,6.9 +2021-09-13T01:00,61,63,48.3,0,0,3.8,7.2 +2021-09-13T02:00,59.9,61,46.2,0,0,3.6,6.3 +2021-09-13T03:00,59,59,44.7,0,0,3.9,6 +2021-09-13T04:00,57.5,57,42.4,0,0,4.1,6.7 +2021-09-13T05:00,57.4,58,42.8,0,0,4.2,7.2 +2021-09-13T06:00,56.8,58,42.3,0,0,4.1,6.3 +2021-09-13T07:00,64,44,41.5,0,0,2.6,6.3 +2021-09-13T08:00,66.3,48,46,0,0,18,30.4 +2021-09-13T09:00,72.3,38,45,0,0,8.5,30.6 +2021-09-13T10:00,74.7,33,43.3,0,0,4.2,18.8 +2021-09-13T11:00,77.8,29,43,0,0,7.1,16.8 +2021-09-13T12:00,80.2,26,42.4,0,0,4.7,17.2 +2021-09-13T13:00,82.4,24,41.9,0,0,2.7,14.3 +2021-09-13T14:00,83.9,22,41,0,0,4.2,12.8 +2021-09-13T15:00,83.8,21,40,0,0,2.9,12.8 +2021-09-13T16:00,84.4,20,38.7,0,0,2.3,10.1 +2021-09-13T17:00,82.6,22,40.5,0,0,3.8,8.3 +2021-09-13T18:00,77.4,28,42,0,0,5.1,10.3 +2021-09-13T19:00,72.1,41,47,0,0,15.1,23.5 +2021-09-13T20:00,68.4,51,49.4,0,0,5.6,24.8 +2021-09-13T21:00,66.5,57,50.5,0,0,4.2,9.4 +2021-09-13T22:00,63.8,64,51.4,0,0,4.3,7.8 +2021-09-13T23:00,63.1,65,51,0,0,2.7,5.4 +2021-09-14T00:00,60.6,75,52.6,0,0,3.7,5.6 +2021-09-14T01:00,59.3,78,52.3,0,0,3.2,4.9 +2021-09-14T02:00,58.1,82,52.7,0,0,3.3,4.9 +2021-09-14T03:00,56.2,86,52.1,0,0,3.8,7.6 +2021-09-14T04:00,55,88,51.5,0,0,2.2,6 +2021-09-14T05:00,55.1,80,48.9,0,0,2.6,4.5 +2021-09-14T06:00,54.2,83,49.1,0,0,6.1,8.5 +2021-09-14T07:00,60.4,63,47.8,0,0,5.9,12.3 +2021-09-14T08:00,67.4,46,45.8,0,0,6.7,13.4 +2021-09-14T09:00,74.5,33,43.6,0,0,10.8,20.8 +2021-09-14T10:00,79.1,26,41.5,0,0,3.8,20.6 +2021-09-14T11:00,81.7,21,38.3,0,0,7.2,15.9 +2021-09-14T12:00,80.8,23,39.8,0,0,11.5,23 +2021-09-14T13:00,81,23,40.1,0,0,6.5,23.7 +2021-09-14T14:00,77.7,27,41.1,0,0,11.5,23.5 +2021-09-14T15:00,78.3,27,41.5,0,0,10.9,22.4 +2021-09-14T16:00,76.2,31,43.4,0,0,9.7,22.6 +2021-09-14T17:00,73.9,39,47.2,0,0,5.3,18.8 +2021-09-14T18:00,70.9,43,47.6,0,0,3.7,10.5 +2021-09-14T19:00,67.5,51,48.8,0,0,5.7,8.9 +2021-09-14T20:00,65,60,50.8,0,0,6.7,12.1 +2021-09-14T21:00,62.2,69,51.9,0,0,3.2,11.6 +2021-09-14T22:00,60.6,72,51.6,0,0,2.2,4.7 +2021-09-14T23:00,58.7,74,50.5,0,0,2.7,5.6 +2021-09-15T00:00,56.5,76,49,0,0,1.4,4.5 +2021-09-15T01:00,54.7,72,45.9,0,0,2.8,5.1 +2021-09-15T02:00,53,68,42.7,0,0,3.9,4.9 +2021-09-15T03:00,52.3,63,39.9,0,0,4.3,5.6 +2021-09-15T04:00,51.9,59,38.2,0,0,3.8,5.6 +2021-09-15T05:00,52,59,38.3,0,0,5.5,5.1 +2021-09-15T06:00,51.6,56,36.5,0,0,3.5,6.7 +2021-09-15T07:00,57.4,46,36.8,0,0,3.7,8.1 +2021-09-15T08:00,66,37,38.8,0,0,2.2,8.1 +2021-09-15T09:00,74.1,27,38.2,0,0,2.7,9.8 +2021-09-15T10:00,81,18,33.4,0,0,4,12.1 +2021-09-15T11:00,84.7,14,30.6,0,0,3,13 +2021-09-15T12:00,86.5,13,30.4,0,0,2.2,11.6 +2021-09-15T13:00,88.1,12,30,0,0,2.7,11.4 +2021-09-15T14:00,89.2,12,29.3,0,0,5.1,13.6 +2021-09-15T15:00,89.3,11,28.5,0,0,5.4,14.3 +2021-09-15T16:00,88.8,11,28.1,0,0,5.3,13.6 +2021-09-15T17:00,86.6,12,27.3,0,0,8.4,12.5 +2021-09-15T18:00,79.7,16,28.8,0,0,5.3,14.1 +2021-09-15T19:00,73.3,22,32.6,0,0,5.6,8.3 +2021-09-15T20:00,75.4,21,32.9,0,0,1.8,6.7 +2021-09-15T21:00,71.9,25,34.2,0,0,2.7,2.7 +2021-09-15T22:00,64.6,35,36,0,0,5,6.5 +2021-09-15T23:00,62.9,36,35.4,0,0,4,6.3 +2021-09-16T00:00,61.3,36,33.9,0,0,4.4,7.2 +2021-09-16T01:00,59.5,37,33.3,0,0,4.3,7.2 +2021-09-16T02:00,58.3,39,33.5,0,0,4.3,6.7 +2021-09-16T03:00,56.8,39,32.1,0,0,4.3,6.7 +2021-09-16T04:00,55,39,30.5,0,0,4.3,6.5 +2021-09-16T05:00,54.1,39,29.5,0,0,6.3,6.3 +2021-09-16T06:00,53.2,40,29.6,0,0,5.1,7.6 +2021-09-16T07:00,59.5,31,28.9,0,0,4.5,8.9 +2021-09-16T08:00,68.4,25,30.8,0,0,3.4,9.4 +2021-09-16T09:00,78.2,16,28.6,0,0,2.9,9.8 +2021-09-16T10:00,85,9,20.3,0,0,4.2,12.1 +2021-09-16T11:00,87.9,8,20,0,0,6.1,15 +2021-09-16T12:00,89.7,9,22.1,0,0,5.9,16.1 +2021-09-16T13:00,91,8,21,0,0,4.1,15.4 +2021-09-16T14:00,91,7,19.9,0,0,0.2,13 +2021-09-16T15:00,90.6,8,20.6,0,0,8.7,15.4 +2021-09-16T16:00,85.6,11,24.7,0,0,18.8,31.5 +2021-09-16T17:00,86.4,11,26,0,0,8.7,31.5 +2021-09-16T18:00,80.4,17,31.3,0,0,7.1,14.8 +2021-09-16T19:00,74,21,31.4,0,0,5.1,11.9 +2021-09-16T20:00,71,25,33.5,0,0,4.3,8.5 +2021-09-16T21:00,69.7,28,34.9,0,0,6.3,9.2 +2021-09-16T22:00,66.6,29,33.1,0,0,5.9,13 +2021-09-16T23:00,69.1,24,30.8,0,0,0.3,7.8 +2021-09-17T00:00,65.9,25,29.3,0,0,10.7,16.1 +2021-09-17T01:00,63.1,38,37.2,0,0,13,23.7 +2021-09-17T02:00,60.8,46,40.1,0,0,13.2,22.6 +2021-09-17T03:00,59.3,51,41.3,0,0,10.5,22.1 +2021-09-17T04:00,57.6,56,42,0,0,11.6,18.8 +2021-09-17T05:00,50.5,65,39.4,0,0,10.3,20.1 +2021-09-17T06:00,49.9,65,38.8,0,0,8.6,17.7 +2021-09-17T07:00,50.3,62,37.9,0,0,6.8,15.4 +2021-09-17T08:00,51.4,58,37.3,0,0,4.6,13.6 +2021-09-17T09:00,53.2,55,37.6,0,0,1.8,11.9 +2021-09-17T10:00,55.8,51,37.9,0,0,2.1,10.7 +2021-09-17T11:00,59.9,45,38.3,0,0,2.7,12.3 +2021-09-17T12:00,63.4,40,38.8,0,0,2,12.5 +2021-09-17T13:00,67,36,39.1,0,0,1.3,11.6 +2021-09-17T14:00,69.9,33,39.4,0,0,1.8,10.5 +2021-09-17T15:00,71.2,32,39.6,0,0,2.2,10.5 +2021-09-17T16:00,71.7,31,39.7,0,0,2.2,10.3 +2021-09-17T17:00,71.3,33,40.8,0,0,4.1,8.9 +2021-09-17T18:00,68.2,38,41.3,0,0,5.8,9.4 +2021-09-17T19:00,65.2,43,41.9,0,0,6.1,11.2 +2021-09-17T20:00,63,47,42.5,0,0,3.9,10.1 +2021-09-17T21:00,60.9,52,43.2,0,0,4.2,6.3 +2021-09-17T22:00,58.9,56,43.3,0,0,4.8,5.6 +2021-09-17T23:00,60.4,53,43.3,0,0,2.8,6.3 +2021-09-18T00:00,57.4,60,43.6,0,0,2.1,3.4 +2021-09-18T01:00,53.4,68,43.1,0,0,2.8,4 +2021-09-18T02:00,51.3,72,42.7,0,0,3.3,4.5 +2021-09-18T03:00,49.2,78,42.5,0,0,3.1,4.5 +2021-09-18T04:00,48,80,42.1,0,0,3.3,4.3 +2021-09-18T05:00,48.3,69,38.7,0,0,4.7,5.6 +2021-09-18T06:00,48,60,34.7,0,0,4.1,6.7 +2021-09-18T07:00,54.9,42,31.9,0,0,3.4,7.4 +2021-09-18T08:00,64,30,32.3,0,0,1.2,7.4 +2021-09-18T09:00,73,22,31.5,0,0,2.5,9.4 +2021-09-18T10:00,80.4,13,26,0,0,3,10.7 +2021-09-18T11:00,84.7,9,20.8,0,0,2.6,11.2 +2021-09-18T12:00,87.4,9,21.7,0,0,3.9,12.8 +2021-09-18T13:00,89.5,10,25.6,0,0,4.3,13 +2021-09-18T14:00,91.3,10,26.3,0,0,3.2,13.2 +2021-09-18T15:00,91.1,10,26.2,0,0,7.7,14.8 +2021-09-18T16:00,89.6,10,26.2,0,0,9.9,19.7 +2021-09-18T17:00,86.3,13,30.1,0,0,17.1,18.3 +2021-09-18T18:00,81.4,16,30.7,0,0,11.3,28.4 +2021-09-18T19:00,78.2,17,29.9,0,0,7.2,18.8 +2021-09-18T20:00,71.1,25,33.2,0,0,5.8,11.9 +2021-09-18T21:00,67.7,30,35,0,0,3.8,7.6 +2021-09-18T22:00,65,36,37.2,0,0,4.5,6.7 +2021-09-18T23:00,62.3,42,39.2,0,0,4.4,8.9 +2021-09-19T00:00,63.2,41,38.9,0,0,4.7,8.3 +2021-09-19T01:00,65.8,37,38.5,0,0,6.4,9.4 +2021-09-19T02:00,65.1,39,39.5,0,0,5.4,12.5 +2021-09-19T03:00,64.9,41,40.3,0,0,6.7,10.3 +2021-09-19T04:00,63.8,44,41.5,0,0,5.4,18.3 +2021-09-19T05:00,61,48,41.4,0,0,3.2,8.7 +2021-09-19T06:00,59.4,53,42.4,0,0,3.8,5.4 +2021-09-19T07:00,63.5,46,42.3,0,0,6.2,11.4 +2021-09-19T08:00,72.5,32,41,0,0,7.6,14.3 +2021-09-19T09:00,78.4,22,36.1,0,0,12.2,22.4 +2021-09-19T10:00,79.4,23,38.1,0,0,8.4,23.9 +2021-09-19T11:00,83.5,18,35,0,0,1.7,18.6 +2021-09-19T12:00,85.7,16,34.3,0,0,5.3,14.3 +2021-09-19T13:00,86,16,34.9,0,0,6.7,17.4 +2021-09-19T14:00,86.4,15,34,0,0,5.4,16.8 +2021-09-19T15:00,87.4,14,33,0,0,8.8,18.8 +2021-09-19T16:00,87.6,14,32.2,0,0,7.6,18.3 +2021-09-19T17:00,82.7,18,34.2,0,0,6.5,23 +2021-09-19T18:00,76.7,21,34.3,0,0,5.1,10.7 +2021-09-19T19:00,74.6,25,36.1,0,0,5.1,11.2 +2021-09-19T20:00,71.9,28,37.1,0,0,2.6,7.8 +2021-09-19T21:00,67,34,37.7,0,0,5.4,8.9 +2021-09-19T22:00,63.1,42,39.7,0,0,3.5,8.7 +2021-09-19T23:00,61.5,47,41.2,0,0,4,6 +2021-09-20T00:00,59.5,51,41.3,0,0,4.6,5.1 +2021-09-20T01:00,59.8,52,42,0,0,14.3,28 +2021-09-20T02:00,58.7,47,38.8,0,0,8.3,23.3 +2021-09-20T03:00,56.2,50,37.6,0,0,3.5,13.9 +2021-09-20T04:00,55.1,51,37.3,0,0,5.7,9.2 +2021-09-20T05:00,51.7,56,36.5,0.004,0,3.4,10.5 +2021-09-20T06:00,51.5,56,36.3,0,0,5.2,6.9 +2021-09-20T07:00,55,47,35.3,0,0,5.2,12.3 +2021-09-20T08:00,59.9,28,26.6,0,0,16.5,28.2 +2021-09-20T09:00,61.2,25,25.2,0,0,12.4,29.8 +2021-09-20T10:00,62.2,26,26.9,0,0,9.3,23.7 +2021-09-20T11:00,64.3,25,27.7,0,0,11.4,23 +2021-09-20T12:00,66.4,21,25.3,0,0,11.4,24.4 +2021-09-20T13:00,68.1,18,23.2,0,0,9.3,23.7 +2021-09-20T14:00,68.9,17,22.5,0,0,9.1,20.6 +2021-09-20T15:00,69,17,22.1,0,0,8.1,19.9 +2021-09-20T16:00,68.6,17,21.7,0,0,7,17.7 +2021-09-20T17:00,64.4,19,21,0,0,8.9,15.2 +2021-09-20T18:00,60.9,22,22.2,0,0,9.1,16.6 +2021-09-20T19:00,60.4,27,26.2,0,0,6.4,15 +2021-09-20T20:00,57.7,41,34.3,0,0,14,22.6 +2021-09-20T21:00,54.6,49,35.8,0,0,9.9,24.6 +2021-09-20T22:00,51.4,62,38.7,0.012,0,10.8,18.8 +2021-09-20T23:00,49.6,72,40.7,0.031,0,7.9,18.3 +2021-09-21T00:00,48.4,72,39.9,0.004,0,4.9,13.6 +2021-09-21T01:00,47.8,74,40,0,0,3.5,8.9 +2021-09-21T02:00,47.3,78,40.9,0,0,4.9,8.9 +2021-09-21T03:00,46.3,84,41.7,0,0,2.1,8.7 +2021-09-21T04:00,45.7,85,41.4,0,0,3.2,4.9 +2021-09-21T05:00,46,73,38,0,0,4.6,8.5 +2021-09-21T06:00,44.7,79,38.5,0,0,2.9,8.3 +2021-09-21T07:00,47.3,72,38.8,0,0,4.8,9.8 +2021-09-21T08:00,51,53,34.5,0,0,4,11.6 +2021-09-21T09:00,53.4,40,29.8,0,0,3.3,11 +2021-09-21T10:00,55.9,34,27.6,0,0,3.4,12.5 +2021-09-21T11:00,58.6,29,26.2,0,0,3.6,13.4 +2021-09-21T12:00,61.7,25,25.2,0,0,5.4,15.4 +2021-09-21T13:00,63.1,23,25.1,0,0,5.4,16.3 +2021-09-21T14:00,64.3,22,24.8,0,0,4.3,15.7 +2021-09-21T15:00,65.2,21,24.2,0,0,4.1,13.6 +2021-09-21T16:00,64.8,20,22.5,0,0,6.7,14.5 +2021-09-21T17:00,63.1,22,24.1,0,0,5.1,15.2 +2021-09-21T18:00,58.6,28,25.3,0,0,4.6,10.1 +2021-09-21T19:00,56.9,28,24.3,0,0,4.3,6 +2021-09-21T20:00,55.8,28,23.5,0,0,4.5,7.2 +2021-09-21T21:00,52.9,31,23.3,0,0,4.9,7.2 +2021-09-21T22:00,51.5,34,24.1,0,0,4,5.8 +2021-09-21T23:00,48.8,41,26.3,0,0,3.8,6 +2021-09-22T00:00,46.2,51,29,0,0,3.3,5.1 +2021-09-22T01:00,45.1,57,30.7,0,0,2.9,4.9 +2021-09-22T02:00,45.7,55,30.5,0,0,0.4,3.6 +2021-09-22T03:00,44.2,58,30.1,0,0,1.4,1.8 +2021-09-22T04:00,41.5,66,31.1,0,0,3.3,4 +2021-09-22T05:00,41.3,69,31.7,0,0,2.8,4.9 +2021-09-22T06:00,40.2,72,31.8,0,0,3.5,5.4 +2021-09-22T07:00,46.4,56,31.7,0,0,3.7,8.1 +2021-09-22T08:00,55.7,41,32.4,0,0,3.5,9.4 +2021-09-22T09:00,64.8,25,27.9,0,0,5.2,13.2 +2021-09-22T10:00,70.2,16,22.4,0,0,4,13.4 +2021-09-22T11:00,73.7,14,21,0,0,4.6,13.6 +2021-09-22T12:00,76.4,12,20.8,0,0,5,14.3 +2021-09-22T13:00,78.3,12,20.8,0,0,5.5,15 +2021-09-22T14:00,79.4,11,20.6,0,0,6.9,16.3 +2021-09-22T15:00,79.5,11,20.8,0,0,7.9,17 +2021-09-22T16:00,78.3,12,20.9,0,0,8.1,17 +2021-09-22T17:00,76.8,12,21.3,0,0,6.4,16.1 +2021-09-22T18:00,67.8,19,23.8,0,0,6.5,9.8 +2021-09-22T19:00,64.4,21,24.1,0,0,6.7,8.5 +2021-09-22T20:00,65.3,20,23.1,0,0,5.3,8.1 +2021-09-22T21:00,58.4,28,25.3,0,0,5.5,7.8 +2021-09-22T22:00,54.4,36,28.3,0,0,3.5,6.9 +2021-09-22T23:00,52.8,40,29.1,0,0,4.4,7.4 +2021-09-23T00:00,51.3,41,28.4,0,0,4,7.4 +2021-09-23T01:00,50.5,38,26.1,0,0,3.7,6.5 +2021-09-23T02:00,49.6,37,24.6,0,0,5,6.7 +2021-09-23T03:00,49,38,24.5,0,0,5.7,7.4 +2021-09-23T04:00,47.9,39,24.3,0,0,6.2,7.6 +2021-09-23T05:00,46.7,39,22.9,0,0,6.2,8.1 +2021-09-23T06:00,47.4,37,22.6,0,0,5.4,7.8 +2021-09-23T07:00,56.1,28,23.5,0,0,4.2,7.2 +2021-09-23T08:00,64.2,21,23.8,0,0,1.3,7.2 +2021-09-23T09:00,70.9,17,23.9,0,0,3.4,10.1 +2021-09-23T10:00,75.9,13,22.4,0,0,4.6,12.8 +2021-09-23T11:00,79.5,11,21.3,0,0,5.6,15 +2021-09-23T12:00,81.6,11,20.9,0,0,5.1,15 +2021-09-23T13:00,82.3,10,20.6,0,0,6.8,15.9 +2021-09-23T14:00,82,11,21.5,0,0,7.2,16.8 +2021-09-23T15:00,81.9,11,21.7,0,0,4.7,16.1 +2021-09-23T16:00,81.3,11,21.6,0,0,4.7,12.5 +2021-09-23T17:00,78,13,23.6,0,0,9.1,15 +2021-09-23T18:00,72.1,18,25.8,0,0,5.4,15.2 +2021-09-23T19:00,70.2,19,25.9,0,0,4.5,8.7 +2021-09-23T20:00,68.1,22,27.7,0,0,4.8,7.2 +2021-09-23T21:00,67.3,23,28.4,0,0,6.1,8.9 +2021-09-23T22:00,64.7,26,28.8,0,0,6.7,11.6 +2021-09-23T23:00,62.1,29,29.6,0,0,4.8,10.5 +2021-09-24T00:00,60.8,32,30.6,0,0,4.6,7.6 +2021-09-24T01:00,60.1,33,31.1,0,0,4.3,5.6 +2021-09-24T02:00,55.7,40,31.5,0,0,2.2,5.1 +2021-09-24T03:00,53.2,44,31.6,0,0,1.8,4 +2021-09-24T04:00,50.1,51,32.8,0,0,2.2,3.8 +2021-09-24T05:00,49.7,55,34.1,0,0,4.4,3.4 +2021-09-24T06:00,51.6,50,33.5,0,0,2.3,5.4 +2021-09-24T07:00,54.4,46,34.2,0,0,4.5,6.9 +2021-09-24T08:00,58.4,41,34.9,0,0,9.5,17.9 +2021-09-24T09:00,60.7,39,35.3,0,0,8.8,20.4 +2021-09-24T10:00,63.5,34,34.9,0,0,6,18.8 +2021-09-24T11:00,66,31,34.5,0,0,4,15.7 +2021-09-24T12:00,68.9,28,34.3,0,0,4.8,14.3 +2021-09-24T13:00,71.1,26,34.2,0,0,4.1,14.5 +2021-09-24T14:00,72.5,24,34,0,0,4.2,13.4 +2021-09-24T15:00,73.1,24,34.2,0,0,5.8,14.3 +2021-09-24T16:00,72.3,25,34.7,0,0,6.7,14.8 +2021-09-24T17:00,71.1,26,34.1,0,0,4.7,14.3 +2021-09-24T18:00,66.2,31,34.9,0,0,4.1,8.7 +2021-09-24T19:00,64.1,35,35.7,0,0,4.3,8.1 +2021-09-24T20:00,64.5,35,36.5,0,0,2.8,6.7 +2021-09-24T21:00,64.1,36,36.4,0,0,1.6,3.4 +2021-09-24T22:00,61.2,40,36.4,0,0,3.3,3.8 +2021-09-24T23:00,55.1,50,36.8,0,0,3.3,5.4 +2021-09-25T00:00,52.3,58,37.8,0,0,2.6,4.9 +2021-09-25T01:00,49.8,65,38.7,0,0,2.8,4.3 +2021-09-25T02:00,49.1,65,37.9,0,0,1.9,3.6 +2021-09-25T03:00,48.6,61,35.7,0,0,3.2,5.1 +2021-09-25T04:00,47.8,60,34.5,0,0,3.3,5.4 +2021-09-25T05:00,48,57,33.4,0,0,3.3,5.4 +2021-09-25T06:00,47.5,58,33.6,0,0,3.9,6.3 +2021-09-25T07:00,52.5,50,34.3,0,0,5.1,9.6 +2021-09-25T08:00,62.2,37,35.2,0,0,3.8,10.1 +2021-09-25T09:00,71.7,24,33.2,0,0,4.2,11.4 +2021-09-25T10:00,77.5,16,28.3,0,0,4.1,12.1 +2021-09-25T11:00,80.6,14,27.2,0,0,3.3,12.8 +2021-09-25T12:00,82.8,13,27.1,0,0,4.1,13 +2021-09-25T13:00,84.4,12,26.7,0,0,4,13.4 +2021-09-25T14:00,85.7,12,26.3,0,0,4.3,13 +2021-09-25T15:00,86.6,11,25.8,0,0,6.1,13.9 +2021-09-25T16:00,85.8,11,25.3,0,0,7.8,15 +2021-09-25T17:00,82.3,13,27.4,0,0,3.1,16.6 +2021-09-25T18:00,79.5,13,24.9,0,0,5.8,6.9 +2021-09-25T19:00,77.5,14,25,0,0,4.3,6.9 +2021-09-25T20:00,66.3,24,28.9,0,0,5.9,8.5 +2021-09-25T21:00,61.4,31,30.6,0,0,3.8,7.6 +2021-09-25T22:00,60.2,29,27.8,0,0,5.8,9.4 +2021-09-25T23:00,59.3,27,25.2,0,0,5.6,9.6 +2021-09-26T00:00,58,28,24.9,0,0,5.1,9.4 +2021-09-26T01:00,56.4,29,24.9,0,0,4.8,8.3 +2021-09-26T02:00,54.6,31,24.5,0,0,4.7,7.8 +2021-09-26T03:00,54.7,33,26.2,0,0,6.2,9.8 +2021-09-26T04:00,53.8,36,27.1,0,0,5.8,10.7 +2021-09-26T05:00,51.7,41,28.9,0,0,6.2,9.4 +2021-09-26T06:00,50.6,42,28.2,0,0,6.5,8.3 +2021-09-26T07:00,58.1,33,29,0,0,6.1,9.4 +2021-09-26T08:00,66.2,27,31.3,0,0,6.4,12.8 +2021-09-26T09:00,75.9,18,28.8,0,0,5.6,14.5 +2021-09-26T10:00,80.2,14,27.1,0,0,1.3,13.2 +2021-09-26T11:00,83,12,25.1,0,0,5,13.6 +2021-09-26T12:00,85.4,11,24.3,0,0,5.9,15 +2021-09-26T13:00,87,10,23.2,0,0,7.4,17 +2021-09-26T14:00,87.4,10,23.5,0,0,7.9,17.7 +2021-09-26T15:00,87.2,10,23.8,0,0,8.1,17.4 +2021-09-26T16:00,85.9,11,24.4,0,0,8.9,16.8 +2021-09-26T17:00,83.3,12,25.8,0,0,4.9,16.3 +2021-09-26T18:00,74.9,16,25.3,0,0,5.7,8.7 +2021-09-26T19:00,75,16,26,0,0,6.1,9.6 +2021-09-26T20:00,71.4,19,26.8,0,0,2.8,7.4 +2021-09-26T21:00,66.1,24,27.8,0,0,4.3,6.7 +2021-09-26T22:00,61,30,29.6,0,0,2.6,6.3 +2021-09-26T23:00,57.5,37,31.6,0,0,2.1,4.5 +2021-09-27T00:00,57.4,40,33.4,0,0,1.7,3.8 +2021-09-27T01:00,59,37,32.9,0,0,2,2.5 +2021-09-27T02:00,54.5,44,33.1,0,0,3.5,3.4 +2021-09-27T03:00,53.7,42,30.9,0,0,3.5,5.1 +2021-09-27T04:00,52.7,40,29.1,0,0,4.2,5.8 +2021-09-27T05:00,55.9,34,28,0,0,4.1,6.9 +2021-09-27T06:00,53.9,38,28.9,0,0,4,4.7 +2021-09-27T07:00,57.3,35,30.2,0,0,3.8,7.2 +2021-09-27T08:00,65.5,28,31.7,0,0,1.6,7.6 +2021-09-27T09:00,73.9,19,29.4,0,0,0.9,7.6 +2021-09-27T10:00,79.3,15,28.3,0,0,2.7,10.1 +2021-09-27T11:00,82.9,14,28.3,0,0,4.5,13.2 +2021-09-27T12:00,85.3,13,28.9,0,0,4.2,13.4 +2021-09-27T13:00,86.6,13,29.1,0,0,4.7,14.8 +2021-09-27T14:00,87.1,11,27.1,0,0,6,15 +2021-09-27T15:00,87.3,11,26.5,0,0,8,16.6 +2021-09-27T16:00,84.9,12,26.9,0,0,10.6,19.5 +2021-09-27T17:00,83.1,13,26.9,0,0,4.5,18.8 +2021-09-27T18:00,77,18,29.6,0,0,3.6,7.4 +2021-09-27T19:00,72.6,19,27.9,0,0,5.4,9.8 +2021-09-27T20:00,69.8,24,31,0,0,4.5,9.2 +2021-09-27T21:00,64.9,31,33.6,0,0,6.3,7.6 +2021-09-27T22:00,65.1,32,34.4,0,0,4.1,7.6 +2021-09-27T23:00,61.9,38,35.9,0,0,3.4,5.4 +2021-09-28T00:00,59.3,43,36.9,0,0,3.1,4.9 +2021-09-28T01:00,56.6,49,37.4,0,0,3.2,5.1 +2021-09-28T02:00,55.9,47,36,0,0,2.6,4.5 +2021-09-28T03:00,55,50,36.4,0,0,3.6,5.4 +2021-09-28T04:00,56.4,44,35,0,0,4.5,8.5 +2021-09-28T05:00,58.4,46,37.6,0,0,5.1,7.8 +2021-09-28T06:00,57.7,48,38,0,0,4.7,10.1 +2021-09-28T07:00,60.8,44,38.8,0,0,6.4,12.1 +2021-09-28T08:00,64.8,40,39.8,0,0,0.9,13.4 +2021-09-28T09:00,71.2,32,40.1,0,0,4.1,11 +2021-09-28T10:00,75,26,37.8,0,0,5.3,14.5 +2021-09-28T11:00,77.3,24,37.3,0,0,4.8,15.7 +2021-09-28T12:00,79,22,36.7,0,0,5.1,16.3 +2021-09-28T13:00,81.2,18,33.4,0,0,6.5,16.6 +2021-09-28T14:00,82.4,16,31.7,0,0,8.1,17.4 +2021-09-28T15:00,74.9,26,37.9,0,0,17.6,32.2 +2021-09-28T16:00,76.7,22,34.5,0,0,7.6,30.6 +2021-09-28T17:00,72.3,28,37.5,0,0,11.3,15 +2021-09-28T18:00,68.9,32,37.5,0,0,8.4,18.8 +2021-09-28T19:00,66.4,36,38.5,0,0,6.8,13.6 +2021-09-28T20:00,64.9,39,39.3,0,0,9,13.9 +2021-09-28T21:00,64.8,38,38.3,0,0,12.1,19.7 +2021-09-28T22:00,63.7,41,39.6,0,0,11.1,20.6 +2021-09-28T23:00,60.6,47,40.5,0,0,5.5,18.6 +2021-09-29T00:00,62.2,45,40.5,0,0,4.4,8.5 +2021-09-29T01:00,57.2,55,41.1,0,0,6.5,7.8 +2021-09-29T02:00,58.4,52,40.6,0,0,4.7,7.8 +2021-09-29T03:00,58.1,51,40.1,0,0,5,8.5 +2021-09-29T04:00,56.9,53,40.1,0,0,6,8.1 +2021-09-29T05:00,58.5,53,41.5,0,0,3.5,7.8 +2021-09-29T06:00,54.5,60,41,0,0,5,5.8 +2021-09-29T07:00,59,52,41.5,0,0,7.5,11.6 +2021-09-29T08:00,62.4,45,41,0,0,7.3,13.2 +2021-09-29T09:00,65.1,40,40.5,0,0,8.4,17.9 +2021-09-29T10:00,66.8,38,40.6,0,0,7.2,17.4 +2021-09-29T11:00,68.7,36,40.6,0,0,5.2,16.8 +2021-09-29T12:00,71.2,33,40.2,0,0,4.3,14.8 +2021-09-29T13:00,72.1,31,39.8,0,0,7.3,16.8 +2021-09-29T14:00,71.4,31,39.4,0,0,9.5,20.6 +2021-09-29T15:00,69.7,33,39.3,0,0,10.1,20.1 +2021-09-29T16:00,60.2,69,50,0.067,0,16.5,27.1 +2021-09-29T17:00,53,80,47,0.071,0,11.2,28.4 +2021-09-29T18:00,51.6,73,43.3,0,0,9.4,19.9 +2021-09-29T19:00,51.4,72,42.7,0,0,9.7,16.6 +2021-09-29T20:00,50.9,70,41.5,0,0,11.4,19.2 +2021-09-29T21:00,48.7,61,36,0,0,10.3,20.1 +2021-09-29T22:00,47.6,63,35.7,0,0,7,17.9 +2021-09-29T23:00,47,65,35.8,0,0,4.3,13 +2021-09-30T00:00,46.8,68,36.8,0.004,0,3.6,9.2 +2021-09-30T01:00,47.2,71,38.4,0,0,4.6,8.9 +2021-09-30T02:00,47.3,74,39.5,0.004,0,3.8,8.9 +2021-09-30T03:00,47.1,78,40.6,0.008,0,6.5,11.4 +2021-09-30T04:00,46.2,79,40,0,0,7.1,12.1 +2021-09-30T05:00,45.2,81,39.7,0,0,5.6,11.4 +2021-09-30T06:00,44.3,84,39.9,0.016,0,2.5,9.6 +2021-09-30T07:00,45.8,78,39.2,0,0,3.6,7.4 +2021-09-30T08:00,47,71,38.2,0,0,6.1,12.8 +2021-09-30T09:00,48.8,65,37.7,0,0,5.6,13 +2021-09-30T10:00,51.1,59,37.3,0,0,5.3,13.4 +2021-09-30T11:00,53.4,54,37.2,0,0,4.1,13.6 +2021-09-30T12:00,55,51,37.4,0,0,2.3,12.3 +2021-09-30T13:00,57.7,47,37.6,0,0,0.7,10.5 +2021-09-30T14:00,59.5,44,37.5,0,0,0.7,8.7 +2021-09-30T15:00,60.6,42,37.4,0,0,0.9,8.3 +2021-09-30T16:00,60.4,42,37.2,0,0,2.9,8.3 +2021-09-30T17:00,53.5,56,38.4,0,0,4.4,10.3 +2021-09-30T18:00,53.6,57,38.7,0,0,3.2,9.2 +2021-09-30T19:00,54,56,38.8,0,0,3,6.7 +2021-09-30T20:00,54.1,56,38.9,0,0,2.9,6.3 +2021-09-30T21:00,54.1,57,39.2,0,0,3.1,6.3 +2021-09-30T22:00,54.1,58,39.6,0,0,3.3,6.3 +2021-09-30T23:00,53.4,60,40,0,0,5.4,8.7 +2021-10-01T00:00,52.9,62,40.1,0,0,4.5,8.9 +2021-10-01T01:00,52.1,64,40.3,0,0,3.5,7.4 +2021-10-01T02:00,51.1,68,40.9,0,0,4.3,7.2 +2021-10-01T03:00,49.4,73,41.2,0,0,4.3,7.2 +2021-10-01T04:00,48.6,77,41.6,0,0,2.9,6.9 +2021-10-01T05:00,48.3,77,41.5,0,0,2,4.7 +2021-10-01T06:00,46.5,83,41.6,0,0,2.6,3.6 +2021-10-01T07:00,49.4,76,42.2,0,0,3.4,7.2 +2021-10-01T08:00,52.6,65,41,0,0,3.6,9.8 +2021-10-01T09:00,56.6,55,40.6,0,0,4,11.6 +2021-10-01T10:00,60.3,48,40.6,0,0,4.7,13.2 +2021-10-01T11:00,64.2,42,40.6,0,0,4.3,13.6 +2021-10-01T12:00,67.1,37,39.9,0,0,4.7,14.8 +2021-10-01T13:00,68.6,35,39.6,0,0,4.2,14.8 +2021-10-01T14:00,69.2,34,39.3,0,0,5.2,13.9 +2021-10-01T15:00,70,32,39,0,0,6.9,15.2 +2021-10-01T16:00,67.6,35,38.8,0,0,4.5,15.2 +2021-10-01T17:00,65.6,38,39.2,0.012,0,6.5,19.9 +2021-10-01T18:00,62.9,45,41.2,0,0,3.9,11.4 +2021-10-01T19:00,60.1,52,42.4,0,0,3.2,6.5 +2021-10-01T20:00,58.7,55,42.5,0,0,3.5,5.8 +2021-10-01T21:00,56.6,59,42.4,0,0,3.4,4.3 +2021-10-01T22:00,55.8,62,42.8,0,0,1.4,4 +2021-10-01T23:00,51.6,73,43.3,0,0,2.3,2.9 +2021-10-02T00:00,50.8,72,42.1,0,0,3,5.1 +2021-10-02T01:00,50.1,69,40.2,0,0,2.8,5.1 +2021-10-02T02:00,49.1,68,39.1,0,0,3.4,4.9 +2021-10-02T03:00,48.6,69,38.8,0,0,3.5,4.7 +2021-10-02T04:00,50.5,67,39.8,0,0,2.8,4 +2021-10-02T05:00,46.8,82,41.5,0,0,4.7,4 +2021-10-02T06:00,46.1,81,40.6,0,0,4.2,6.3 +2021-10-02T07:00,50.2,70,40.7,0,0,2,5.4 +2021-10-02T08:00,56.3,54,40,0,0,1.8,6.7 +2021-10-02T09:00,60.7,44,38.8,0,0,6.3,14.1 +2021-10-02T10:00,63.6,39,37.9,0,0,7.4,16.8 +2021-10-02T11:00,65.8,36,38.2,0,0,6.2,16.8 +2021-10-02T12:00,67.6,34,37.9,0,0,5.6,15.9 +2021-10-02T13:00,69,30,35.9,0,0,5.3,15.2 +2021-10-02T14:00,69.8,26,33.2,0,0,6.3,15.4 +2021-10-02T15:00,69.8,24,31,0,0,6.9,15.4 +2021-10-02T16:00,68.8,23,29.4,0,0,6.2,15.2 +2021-10-02T17:00,67,30,34.4,0,0,6.7,12.8 +2021-10-02T18:00,61.5,51,43.3,0,0,11.9,19.5 +2021-10-02T19:00,58.8,55,42.7,0,0,7.6,19.5 +2021-10-02T20:00,56.3,61,43.2,0,0,3.7,12.3 +2021-10-02T21:00,53,72,44.1,0,0,4.9,5.8 +2021-10-02T22:00,52.7,72,44.1,0,0,2.7,5.8 +2021-10-02T23:00,49.7,82,44.4,0,0,2.8,3.6 +2021-10-03T00:00,48.6,83,43.7,0,0,3.2,4.9 +2021-10-03T01:00,47.3,81,41.7,0,0,3.7,5.4 +2021-10-03T02:00,46.5,81,41,0,0,3.4,5.6 +2021-10-03T03:00,45.8,81,40.4,0,0,3.6,5.8 +2021-10-03T04:00,44.8,82,39.5,0,0,3.5,6 +2021-10-03T05:00,43.9,76,37,0,0,3.7,5.8 +2021-10-03T06:00,43.7,72,35.2,0,0,4.2,6.3 +2021-10-03T07:00,49.6,55,33.9,0,0,5.6,9.4 +2021-10-03T08:00,58,40,34.1,0,0,3,9.4 +2021-10-03T09:00,65.7,30,33.2,0,0,0.5,8.7 +2021-10-03T10:00,70.8,21,29.5,0,0,2.2,9.6 +2021-10-03T11:00,73.2,17,26.1,0,0,3,11.2 +2021-10-03T12:00,74.6,15,23.4,0,0,3.7,12.5 +2021-10-03T13:00,75.2,14,23.1,0,0,3.4,12.5 +2021-10-03T14:00,75.8,14,22.8,0,0,6.2,15.2 +2021-10-03T15:00,76.3,13,22.6,0,0,3.5,15 +2021-10-03T16:00,75.7,14,22.7,0,0,2.6,10.5 +2021-10-03T17:00,72.1,20,29.2,0,0,3,7.8 +2021-10-03T18:00,65,27,30.6,0,0,4.8,7.2 +2021-10-03T19:00,60,35,32.3,0,0,4.7,5.8 +2021-10-03T20:00,57.4,40,33,0,0,5.5,8.9 +2021-10-03T21:00,55,44,33.3,0,0,4.9,9.2 +2021-10-03T22:00,53.2,46,32.9,0,0,4,7.8 +2021-10-03T23:00,53.7,44,32.2,0,0,3.4,6.5 +2021-10-04T00:00,49.8,50,32,0,0,5.4,6.5 +2021-10-04T01:00,50.3,45,29.8,0,0,5.5,6.9 +2021-10-04T02:00,48.6,47,29,0,0,6,7.2 +2021-10-04T03:00,47.3,49,28.9,0,0,6.5,7.8 +2021-10-04T04:00,46.5,50,29,0,0,5.8,7.8 +2021-10-04T05:00,45.4,59,32,0,0,4,7.6 +2021-10-04T06:00,44.2,62,31.9,0,0,4.1,6.5 +2021-10-04T07:00,49,52,32.2,0,0,5.4,9.2 +2021-10-04T08:00,57.4,40,33.3,0,0,3.4,9.6 +2021-10-04T09:00,66.8,28,32.3,0,0,3.5,10.3 +2021-10-04T10:00,72.6,19,28.5,0,0,1.7,10.5 +2021-10-04T11:00,75.5,17,28,0,0,2.2,10.3 +2021-10-04T12:00,77.2,16,27.2,0,0,2.6,11.2 +2021-10-04T13:00,78.1,15,26.1,0,0,1.6,11 +2021-10-04T14:00,78.6,13,24.4,0,0,2.1,9.6 +2021-10-04T15:00,78.8,13,23.4,0,0,2,9.6 +2021-10-04T16:00,78.5,13,23.6,0,0,2.4,8.7 +2021-10-04T17:00,74.8,24,35.8,0,0,4.6,7.2 +2021-10-04T18:00,67.3,21,26.2,0,0,6.7,8.9 +2021-10-04T19:00,66.6,21,25,0,0,6.1,9.4 +2021-10-04T20:00,67.2,19,23.7,0,0,1.4,7.6 +2021-10-04T21:00,64.5,22,25.3,0,0,3.3,3.6 +2021-10-04T22:00,56,35,28.9,0,0,3.8,7.6 +2021-10-04T23:00,52.9,45,32.1,0,0,4.8,8.1 +2021-10-05T00:00,50.3,51,32.7,0,0,4.2,7.8 +2021-10-05T01:00,48.9,54,33,0,0,3.4,6.9 +2021-10-05T02:00,48,57,33.4,0,0,3.5,5.4 +2021-10-05T03:00,46.9,59,33.2,0,0,3.4,5.4 +2021-10-05T04:00,45.7,62,33.4,0,0,3.5,4.9 +2021-10-05T05:00,46.3,61,33.5,0,0,2.9,4.7 +2021-10-05T06:00,45.1,64,33.7,0,0,1.9,3.6 +2021-10-05T07:00,48.5,59,34.7,0,0,1.3,4.5 +2021-10-05T08:00,55.9,42,32.9,0,0,2.4,7.6 +2021-10-05T09:00,61.8,31,30.7,0,0,2.3,9.6 +2021-10-05T10:00,67.6,24,29.8,0,0,2.2,10.1 +2021-10-05T11:00,72.5,21,30.1,0,0,3.3,11.9 +2021-10-05T12:00,76.8,18,30.7,0,0,4.4,13.2 +2021-10-05T13:00,80,17,31.1,0,0,6,15.2 +2021-10-05T14:00,81.5,15,29.5,0,0,4.3,15.4 +2021-10-05T15:00,81.4,14,28.1,0,0,1.6,12.3 +2021-10-05T16:00,80.3,15,28.8,0,0,8.5,14.5 +2021-10-05T17:00,75.3,19,29.8,0,0,10.2,21.9 +2021-10-05T18:00,69.6,24,30.8,0,0,8.1,16.8 +2021-10-05T19:00,67.1,26,31.3,0,0,9.9,15.7 +2021-10-05T20:00,64.9,29,32.1,0,0,12.5,20.6 +2021-10-05T21:00,62.7,33,33.1,0,0,11.8,20.6 +2021-10-05T22:00,61.3,36,34,0,0,12.4,20.6 +2021-10-05T23:00,59.8,38,34.4,0,0,10.1,20.6 +2021-10-06T00:00,57.6,43,35,0,0,6.5,16.8 +2021-10-06T01:00,55.8,47,35.7,0,0,5.1,10.7 +2021-10-06T02:00,54.1,51,36.2,0,0,4.6,8.5 +2021-10-06T03:00,50.8,59,37,0,0,4.8,7.2 +2021-10-06T04:00,49.7,61,36.8,0,0,5.1,6.5 +2021-10-06T05:00,50.6,60,37.1,0,0,1.8,6.3 +2021-10-06T06:00,49,63,37,0,0,2.1,2.9 +2021-10-06T07:00,51.8,58,37.5,0,0,1.9,4.7 +2021-10-06T08:00,59,44,37.1,0,0,2.7,7.6 +2021-10-06T09:00,67.1,33,37.4,0,0,3.7,10.7 +2021-10-06T10:00,75.1,25,37,0,0,5.7,13.4 +2021-10-06T11:00,79.3,21,35.6,0,0,13,23.7 +2021-10-06T12:00,80.5,20,35.4,0,0,16.3,30 +2021-10-06T13:00,80.9,19,35.2,0,0,15.3,30.4 +2021-10-06T14:00,82,17,33.1,0,0,10.7,28.6 +2021-10-06T15:00,76,26,39,0,0,13.1,23 +2021-10-06T16:00,75.7,25,37.5,0,0,7.8,23.7 +2021-10-06T17:00,72.5,33,42,0,0,7.9,15.4 +2021-10-06T18:00,67.3,37,40.4,0,0,5.5,13 +2021-10-06T19:00,64.7,39,39.2,0,0,4,8.7 +2021-10-06T20:00,63.3,34,34.8,0,0,4.9,7.6 +2021-10-06T21:00,62.5,31,31.4,0,0,6.2,8.9 +2021-10-06T22:00,64.7,27,29.8,0,0,1.6,7.6 +2021-10-06T23:00,63.3,32,32.7,0,0,0.8,2.2 +2021-10-07T00:00,56.9,41,33.4,0,0,3.3,3.8 +2021-10-07T01:00,54.7,44,33.2,0,0,3.2,5.4 +2021-10-07T02:00,51.8,49,33,0,0,5.5,8.5 +2021-10-07T03:00,50.4,49,32,0,0,4.5,8.5 +2021-10-07T04:00,48.2,55,33,0,0,6.1,7.4 +2021-10-07T05:00,48.5,65,37.1,0,0,4.9,7.2 +2021-10-07T06:00,45.7,71,37,0,0,3.5,5.6 +2021-10-07T07:00,50,59,36.4,0,0,4.8,8.1 +2021-10-07T08:00,56,46,35.5,0,0,5.2,11 +2021-10-07T09:00,59.7,38,33.8,0,0,5.7,11.4 +2021-10-07T10:00,68.2,25,31.2,0,0,6.2,14.8 +2021-10-07T11:00,71.5,21,29.3,0,0,4.1,14.8 +2021-10-07T12:00,73.9,18,28.4,0,0,2.6,12.8 +2021-10-07T13:00,75.9,17,28.3,0,0,4.3,12.8 +2021-10-07T14:00,76.6,17,28.4,0,0,6,14.5 +2021-10-07T15:00,76,18,28.8,0,0,4.6,14.5 +2021-10-07T16:00,75.6,18,29.1,0,0,4.6,11.6 +2021-10-07T17:00,72.1,23,32.4,0,0,4.2,9.8 +2021-10-07T18:00,68.5,27,33.1,0,0,5.9,9.2 +2021-10-07T19:00,66.9,30,34.3,0,0,4,11.2 +2021-10-07T20:00,61.7,41,37.9,0,0,4.5,7.2 +2021-10-07T21:00,59.1,51,41.2,0,0,5.3,9.4 +2021-10-07T22:00,56.7,57,41.5,0,0,4.3,8.9 +2021-10-07T23:00,55.5,55,39.7,0,0,5.3,8.7 +2021-10-08T00:00,53.5,57,38.6,0,0,4.4,8.9 +2021-10-08T01:00,51.9,59,38,0,0,4.1,7.6 +2021-10-08T02:00,50.5,60,37.2,0,0,3.7,6.7 +2021-10-08T03:00,49,62,36.5,0,0,4.6,6 +2021-10-08T04:00,48.3,62,35.7,0,0,4.1,5.4 +2021-10-08T05:00,47.9,62,35.6,0,0,3.9,5.8 +2021-10-08T06:00,46.7,64,35.1,0,0,4.4,5.8 +2021-10-08T07:00,51.1,55,35.3,0,0,4.4,7.4 +2021-10-08T08:00,57.7,44,36,0,0,2.1,8.7 +2021-10-08T09:00,63.4,35,35.5,0,0,3.3,9.4 +2021-10-08T10:00,70.7,26,34.2,0,0,4.7,12.5 +2021-10-08T11:00,74.2,21,32.1,0,0,5.4,13.9 +2021-10-08T12:00,76.4,17,28.9,0,0,5.4,14.1 +2021-10-08T13:00,77.7,15,27.1,0,0,5.5,13.9 +2021-10-08T14:00,80,16,30.3,0,0,9.4,16.1 +2021-10-08T15:00,73.2,28,37.8,0.008,0,14.1,23.7 +2021-10-08T16:00,68.5,39,42.7,0.008,0,12,26.2 +2021-10-08T17:00,69.5,27,33.7,0,0,9.2,19.7 +2021-10-08T18:00,64.3,38,37.9,0,0,9.1,20.8 +2021-10-08T19:00,62.1,40,37.6,0,0,5.1,14.8 +2021-10-08T20:00,61,41,37,0,0,3.3,8.7 +2021-10-08T21:00,58.2,46,37.7,0,0,3.5,6 +2021-10-08T22:00,54.6,55,38.8,0,0,4.9,6.7 +2021-10-08T23:00,52.8,59,38.8,0,0,4.3,6.7 +2021-10-09T00:00,51.5,61,38.4,0,0,4.2,6.3 +2021-10-09T01:00,50.8,61,38,0,0,5,6.9 +2021-10-09T02:00,53,54,36.8,0,0,5.9,9.4 +2021-10-09T03:00,53.7,52,36.6,0,0,6.9,11.2 +2021-10-09T04:00,54.3,52,37,0,0,8.1,13.2 +2021-10-09T05:00,48.8,72,40.2,0,0,2.8,14.3 +2021-10-09T06:00,51.4,66,40.5,0,0,3.7,3.8 +2021-10-09T07:00,52.5,64,40.6,0,0,4.7,8.1 +2021-10-09T08:00,59.5,48,39.6,0,0,2.9,8.7 +2021-10-09T09:00,65.8,28,31.6,0,0,15.2,25.1 +2021-10-09T10:00,67.8,19,23.5,0,0,22.2,38.7 +2021-10-09T11:00,69.7,16,21.7,0,0,21,39.6 +2021-10-09T12:00,71.8,16,22.9,0,0,13.1,37.6 +2021-10-09T13:00,72.7,15,22.7,0,0,8.1,25.5 +2021-10-09T14:00,73.8,12,17.6,0,0,9.6,19.5 +2021-10-09T15:00,71.8,12,17.1,0,0,12.6,23.7 +2021-10-09T16:00,69.8,14,17.6,0,0,14.1,24.4 +2021-10-09T17:00,63.9,22,23.9,0,0,15,29.1 +2021-10-09T18:00,60.8,24,24.1,0,0,10.9,25.3 +2021-10-09T19:00,58.4,28,25.8,0,0,11.2,18.8 +2021-10-09T20:00,56.7,33,28,0,0,11.4,19.7 +2021-10-09T21:00,54.1,41,30.9,0,0,7.1,19 +2021-10-09T22:00,52.3,45,31.5,0,0,6.7,12.3 +2021-10-09T23:00,51.7,41,29,0,0,6.3,11.2 +2021-10-10T00:00,50,44,28.7,0,0,4.9,10.7 +2021-10-10T01:00,47.3,49,29.2,0,0,5.8,8.1 +2021-10-10T02:00,49.6,45,29.2,0,0,1.4,7.2 +2021-10-10T03:00,44.3,57,29.8,0,0,3.8,4.3 +2021-10-10T04:00,44.1,56,29.6,0,0,4.2,6.3 +2021-10-10T05:00,43.1,63,31.3,0,0,3.6,8.7 +2021-10-10T06:00,43.3,60,30.3,0,0,4.7,7.6 +2021-10-10T07:00,47.3,51,29.9,0,0,4.8,7.4 +2021-10-10T08:00,52.7,42,30,0,0,1.4,7.8 +2021-10-10T09:00,56.6,35,29,0,0,2.9,9.6 +2021-10-10T10:00,59.6,30,28.3,0,0,5.1,13.9 +2021-10-10T11:00,61.8,27,27.3,0,0,1.6,14.1 +2021-10-10T12:00,63.9,25,27,0,0,2.3,10.7 +2021-10-10T13:00,66.1,22,25.6,0,0,4.8,13.4 +2021-10-10T14:00,66.9,19,23.5,0,0,7.3,16.3 +2021-10-10T15:00,67.5,18,23.1,0,0,8.3,17.4 +2021-10-10T16:00,66.2,20,23.4,0,0,8.5,17.4 +2021-10-10T17:00,62.2,25,26.2,0,0,6.6,16.1 +2021-10-10T18:00,58.6,30,27,0,0,12.8,20.1 +2021-10-10T19:00,56,34,27.7,0,0,13.8,23.7 +2021-10-10T20:00,54.7,35,27.9,0,0,13.4,23 +2021-10-10T21:00,53.5,36,27.5,0,0,13,22.4 +2021-10-10T22:00,52.3,37,26.4,0,0,8.4,21.3 +2021-10-10T23:00,48,42,26.2,0,0,6.6,13.9 +2021-10-11T00:00,46.7,44,26.2,0,0,6.2,8.1 +2021-10-11T01:00,44.9,50,27.1,0,0,5.9,7.6 +2021-10-11T02:00,43.9,54,28.4,0,0,4.2,7.2 +2021-10-11T03:00,43.3,56,28.8,0,0,4.8,7.6 +2021-10-11T04:00,42.4,57,28.1,0,0,4.9,8.3 +2021-10-11T05:00,41,59,27.9,0,0,3.7,8.3 +2021-10-11T06:00,39.7,65,29,0,0,4,6.7 +2021-10-11T07:00,42.3,60,29.5,0,0,5.3,9.4 +2021-10-11T08:00,49,46,28.9,0,0,4.4,10.7 +2021-10-11T09:00,57,32,27.8,0,0,5.8,13 +2021-10-11T10:00,62,28,28,0,0,9.6,19.7 +2021-10-11T11:00,65.7,23,26.5,0,0,10.6,21.7 +2021-10-11T12:00,67.9,19,24.5,0,0,10.6,21.9 +2021-10-11T13:00,69.2,19,25,0,0,12.1,23.5 +2021-10-11T14:00,69.5,18,24.8,0,0,12.5,23.9 +2021-10-11T15:00,68.6,18,23.7,0,0,14.2,25.5 +2021-10-11T16:00,67,20,24.6,0,0,17.5,29.3 +2021-10-11T17:00,64.4,22,25,0,0,15.8,30.6 +2021-10-11T18:00,61.9,26,26.2,0,0,14.7,26.6 +2021-10-11T19:00,59.6,29,27.2,0,0,10.5,24.4 +2021-10-11T20:00,57.2,34,28.9,0,0,7.2,17.4 +2021-10-11T21:00,52.6,42,29.9,0,0,4.4,11.9 +2021-10-11T22:00,51.1,44,30,0,0,1.9,6.5 +2021-10-11T23:00,50.7,45,30.4,0,0,3.7,5.8 +2021-10-12T00:00,49.2,50,31.1,0,0,6.2,9.6 +2021-10-12T01:00,48.4,56,33.5,0,0,8.6,14.3 +2021-10-12T02:00,47.5,59,34,0,0,7.7,14.1 +2021-10-12T03:00,46.7,58,32.8,0,0,7.4,13.4 +2021-10-12T04:00,44.4,63,32.5,0,0,4.7,12.1 +2021-10-12T05:00,43.9,67,33.6,0,0,10.1,7.8 +2021-10-12T06:00,43,71,34.1,0,0,8.8,16.1 +2021-10-12T07:00,44,68,34.3,0,0,8.7,15 +2021-10-12T08:00,46,64,34.4,0,0,9.8,17.9 +2021-10-12T09:00,48.7,57,34.3,0,0,8.8,19 +2021-10-12T10:00,52.1,49,33.4,0,0,4.2,17.4 +2021-10-12T11:00,54.3,44,33,0,0,2.1,12.3 +2021-10-12T12:00,56.8,40,32.5,0,0,5.4,14.3 +2021-10-12T13:00,59.2,37,32.6,0,0,1,15.7 +2021-10-12T14:00,54.9,53,38,0.02,0,12,25.3 +2021-10-12T15:00,59,31,28.4,0,0,8.4,21.7 +2021-10-12T16:00,57.7,18,14.7,0,0,13.4,24.6 +2021-10-12T17:00,46.8,65,35.5,0,0,5.4,27.3 +2021-10-12T18:00,44.9,71,36.1,0,0,11.9,19.2 +2021-10-12T19:00,42.2,89,39.2,0.008,0,7.5,22.1 +2021-10-12T20:00,39.6,89,36.5,0,0,15.3,24.6 +2021-10-12T21:00,36.3,91,34,0,0,11.5,24.8 +2021-10-12T22:00,36.4,90,33.6,0,0,4.6,18.6 +2021-10-12T23:00,36,90,33.4,0,0,4.9,8.7 +2021-10-13T00:00,35.3,88,32.3,0,0,4.5,8.3 +2021-10-13T01:00,34.6,91,32.4,0,0,2.9,7.6 +2021-10-13T02:00,33.9,93,32.2,0,0,3.4,5.8 +2021-10-13T03:00,33.8,90,31.1,0,0,5,6.7 +2021-10-13T04:00,34.5,85,30.6,0,0,5.5,8.9 +2021-10-13T05:00,34,83,29.3,0,0,4.5,8.1 +2021-10-13T06:00,33.2,84,28.8,0,0,4.1,9.4 +2021-10-13T07:00,37,74,29.6,0,0,3,5.4 +2021-10-13T08:00,41.4,60,28.7,0,0,3.9,8.7 +2021-10-13T09:00,47.8,38,23.5,0,0,8.9,17.4 +2021-10-13T10:00,51.1,30,20.8,0,0,7.1,18.3 +2021-10-13T11:00,52.6,30,21.8,0,0,5.2,15.9 +2021-10-13T12:00,55,27,21.9,0,0,4.5,13.6 +2021-10-13T13:00,57.3,25,21.3,0,0,6.3,15 +2021-10-13T14:00,58.6,23,20.8,0,0,8.5,17.4 +2021-10-13T15:00,58.3,23,20.3,0,0,8.9,17.7 +2021-10-13T16:00,56.5,24,20.6,0,0,10.9,18.8 +2021-10-13T17:00,53.2,32,23.7,0,0,13.7,21.5 +2021-10-13T18:00,49.6,36,24.1,0,0,6.9,22.1 +2021-10-13T19:00,48.2,40,24.8,0,0,3,11.2 +2021-10-13T20:00,45.7,46,26.2,0,0,2.7,3.4 +2021-10-13T21:00,44.1,50,26.7,0,0,3.8,4.9 +2021-10-13T22:00,44,49,26.2,0,0,3.1,4.5 +2021-10-13T23:00,39.6,59,26.6,0,0,5.5,6.9 +2021-10-14T00:00,39.9,55,25.1,0,0,3.8,6.7 +2021-10-14T01:00,37.9,60,25.3,0,0,4.7,5.8 +2021-10-14T02:00,37.4,60,24.8,0,0,5.2,6.7 +2021-10-14T03:00,37.4,59,24.2,0,0,3.6,6 +2021-10-14T04:00,36.7,61,24.5,0,0,3.2,4.3 +2021-10-14T05:00,32.4,74,24.9,0,0,3.5,4 +2021-10-14T06:00,34.1,68,24.6,0,0,1.7,4.3 +2021-10-14T07:00,36.4,64,25.4,0,0,2.6,4.5 +2021-10-14T08:00,39.6,58,26.2,0,0,3.3,8.1 +2021-10-14T09:00,42.4,50,25.2,0,0,1,8.1 +2021-10-14T10:00,46.8,41,24.2,0,0,3.1,9.8 +2021-10-14T11:00,49.1,35,22.6,0,0,5.9,14.5 +2021-10-14T12:00,49.8,35,23,0.004,0,8.7,17.9 +2021-10-14T13:00,47.8,48,28.9,0.031,0.193,13.1,25.1 +2021-10-14T14:00,44.2,56,29.7,0.004,0,12.4,24.2 +2021-10-14T15:00,47.2,48,28.4,0,0,10.6,21.3 +2021-10-14T16:00,46,48,27.7,0,0,10.3,21.7 +2021-10-14T17:00,40.7,67,30.7,0,0,8.6,17.9 +2021-10-14T18:00,39,73,31.2,0,0,4.9,13.9 +2021-10-14T19:00,36.9,83,32.1,0,0,2.3,8.3 +2021-10-14T20:00,36.8,83,32,0,0,2.5,4.5 +2021-10-14T21:00,35.6,86,31.9,0,0,3.6,6 +2021-10-14T22:00,34.2,92,32,0,0,2.5,6.3 +2021-10-14T23:00,33.4,92,31.3,0,0,2.2,4.5 +2021-10-15T00:00,31.6,95,30.2,0,0,3,4.7 +2021-10-15T01:00,30.9,94,29.3,0,0,2.4,4.9 +2021-10-15T02:00,29.8,85,26,0,0,2.3,4 +2021-10-15T03:00,28.9,76,22.5,0,0,3,4.9 +2021-10-15T04:00,30.7,54,16.1,0,0,6,9.4 +2021-10-15T05:00,33,42,12.3,0,0,9.2,12.1 +2021-10-15T06:00,33.5,40,11.9,0,0,9,15 +2021-10-15T07:00,36.8,34,11,0,0,11.2,18.6 +2021-10-15T08:00,40.9,28,10.3,0,0,9,18.3 +2021-10-15T09:00,43.3,27,11.8,0,0,5.9,16.3 +2021-10-15T10:00,46,25,11.9,0,0,6.2,14.5 +2021-10-15T11:00,48.8,22,11.3,0,0,5.9,15.7 +2021-10-15T12:00,51.5,19,11.1,0,0,5.7,15 +2021-10-15T13:00,53.3,17,9.5,0,0,6.2,15.2 +2021-10-15T14:00,54.1,17,10,0,0,6.3,15.7 +2021-10-15T15:00,54.4,16,9.7,0,0,4.8,15 +2021-10-15T16:00,54.4,16,8.6,0,0,5.7,11.9 +2021-10-15T17:00,50.4,23,14.4,0,0,7.3,11.4 +2021-10-15T18:00,46.7,29,15.7,0,0,6.4,12.1 +2021-10-15T19:00,42.9,36,17.5,0,0,5.4,10.3 +2021-10-15T20:00,39.9,41,17.9,0,0,6,7.8 +2021-10-15T21:00,40.3,41,18.3,0,0,5.3,8.3 +2021-10-15T22:00,38.1,43,17.4,0,0,4.9,8.3 +2021-10-15T23:00,36.6,45,17.1,0,0,7.2,8.7 +2021-10-16T00:00,35.8,46,17.2,0,0,7,8.3 +2021-10-16T01:00,35.5,47,17.4,0,0,6.3,8.3 +2021-10-16T02:00,34.9,50,18.1,0,0,4.9,7.6 +2021-10-16T03:00,34.3,52,18.7,0,0,4,6.7 +2021-10-16T04:00,33.6,55,19,0,0,3.8,6.3 +2021-10-16T05:00,32.9,60,20.6,0,0,3.8,6.3 +2021-10-16T06:00,32.7,60,20.3,0,0,4,6.3 +2021-10-16T07:00,36.9,52,20.8,0,0,4.1,6.5 +2021-10-16T08:00,44.1,42,22.5,0,0,5.6,10.5 +2021-10-16T09:00,52.3,29,21,0,0,5.4,11.9 +2021-10-16T10:00,57.9,23,19.9,0,0,3.8,11.9 +2021-10-16T11:00,61.1,22,21.5,0,0,3.4,11 +2021-10-16T12:00,63.5,21,22.8,0,0,5.3,13.4 +2021-10-16T13:00,65.5,20,22.9,0,0,6.8,15.2 +2021-10-16T14:00,66.6,18,22.3,0,0,6.5,15.4 +2021-10-16T15:00,66.8,17,20.9,0,0,5.6,14.5 +2021-10-16T16:00,65.8,17,19.9,0,0,5.4,12.1 +2021-10-16T17:00,60.3,27,26.4,0,0,5.3,9.8 +2021-10-16T18:00,54.5,39,30,0,0,7,11.2 +2021-10-16T19:00,50.6,47,30.9,0,0,5.2,11.2 +2021-10-16T20:00,48.9,49,30.6,0,0,4,8.5 +2021-10-16T21:00,44.1,60,30.9,0,0,2.7,4.9 +2021-10-16T22:00,41.4,67,31.1,0,0,3.6,5.6 +2021-10-16T23:00,38.7,74,31.2,0,0,3.2,5.6 +2021-10-17T00:00,37.1,78,30.9,0,0,3.4,4.7 +2021-10-17T01:00,36.5,78,30.2,0,0,4,4.7 +2021-10-17T02:00,36.2,74,28.7,0,0,4,5.1 +2021-10-17T03:00,36.6,69,27.5,0,0,3,4.7 +2021-10-17T04:00,34.9,73,27,0,0,2.6,3.4 +2021-10-17T05:00,33.9,72,25.9,0,0,3.4,3.8 +2021-10-17T06:00,32.1,77,25.8,0,0,3.8,4.3 +2021-10-17T07:00,35.5,69,26.5,0,0,4,5.1 +2021-10-17T08:00,44,52,27.7,0,0,3,8.1 +2021-10-17T09:00,52.5,36,26.4,0,0,2.9,8.9 +2021-10-17T10:00,59.4,26,24.7,0,0,2.7,9.4 +2021-10-17T11:00,64.8,20,22.7,0,0,3.5,10.7 +2021-10-17T12:00,68.3,17,21.4,0,0,4.4,11.9 +2021-10-17T13:00,70.3,16,22.2,0,0,5.4,13.2 +2021-10-17T14:00,71.3,17,23.6,0,0,6.3,14.1 +2021-10-17T15:00,70.9,17,24.1,0,0,8.2,15.2 +2021-10-17T16:00,68.4,18,23.2,0,0,8.1,16.1 +2021-10-17T17:00,64.6,20,22.9,0,0,12.4,13.4 +2021-10-17T18:00,58.3,26,23.8,0,0,6.3,19.7 +2021-10-17T19:00,55,35,27.7,0,0,6.2,9.6 +2021-10-17T20:00,49,43,27.5,0,0,4.2,7.4 +2021-10-17T21:00,46.3,49,28.4,0,0,4.3,6.5 +2021-10-17T22:00,45.2,53,28.9,0,0,5.5,6.7 +2021-10-17T23:00,42.8,57,28.6,0,0,5.7,7.6 +2021-10-18T00:00,43.3,55,28,0,0,4.4,6.9 +2021-10-18T01:00,42.2,55,27,0,0,5.2,6.3 +2021-10-18T02:00,41.6,54,26.2,0,0,4.9,6 +2021-10-18T03:00,40.6,54,25.4,0,0,5.1,6.9 +2021-10-18T04:00,38.8,60,26,0,0,6,7.4 +2021-10-18T05:00,40.6,59,27.1,0,0,5.4,7.2 +2021-10-18T06:00,42.6,54,27.3,0,0,4.2,6.5 +2021-10-18T07:00,44.9,52,28.3,0,0,3,5.8 +2021-10-18T08:00,48.7,47,29.2,0,0,3.5,6 +2021-10-18T09:00,56.2,38,30.9,0,0,2.4,7.4 +2021-10-18T10:00,66.2,25,29,0,0,4.3,10.5 +2021-10-18T11:00,71.2,19,27.3,0,0,4.8,12.5 +2021-10-18T12:00,73.9,14,21.2,0,0,2.9,12.1 +2021-10-18T13:00,74.8,12,19.6,0,0,10.7,19.5 +2021-10-18T14:00,73.5,13,18.9,0,0,15,26.2 +2021-10-18T15:00,74.1,12,18.8,0,0,11.7,26.2 +2021-10-18T16:00,73.9,12,18.2,0,0,5.4,20.1 +2021-10-18T17:00,66.3,19,22.5,0,0,5.5,9.2 +2021-10-18T18:00,58.7,27,24.8,0,0,7.2,8.7 +2021-10-18T19:00,58.7,28,25.5,0,0,4.3,9.2 +2021-10-18T20:00,55.4,35,28.4,0,0,6.6,10.5 +2021-10-18T21:00,53.1,40,29.1,0,0,6.2,10.7 +2021-10-18T22:00,50.4,44,29.2,0,0,5.2,9.8 +2021-10-18T23:00,46.1,52,29.3,0,0,6,7.8 +2021-10-19T00:00,43.1,60,30.2,0,0,3,7.4 +2021-10-19T01:00,42.2,64,30.8,0,0,2.8,5.4 +2021-10-19T02:00,39.8,67,29.8,0,0,2.1,4.7 +2021-10-19T03:00,38.3,70,29.4,0,0,3,5.1 +2021-10-19T04:00,37.1,73,29.2,0,0,2.7,5.6 +2021-10-19T05:00,38.7,61,26.3,0,0,6,4.3 +2021-10-19T06:00,40.6,58,26.8,0,0,5.7,9.2 +2021-10-19T07:00,41.8,64,30.5,0,0,4.6,9.2 +2021-10-19T08:00,49.2,43,27.4,0,0,1.3,6.3 +2021-10-19T09:00,54.6,40,30.7,0,0,7.2,13.6 +2021-10-19T10:00,57.9,35,30.7,0,0,6.9,18.3 +2021-10-19T11:00,58.4,37,32.5,0.039,0,7.8,17.7 +2021-10-19T12:00,55.1,45,34.2,0.122,0,12.5,22.1 +2021-10-19T13:00,56.2,30,25.2,0.031,0,10.5,24.6 +2021-10-19T14:00,57.5,25,21.5,0,0,9.3,19.7 +2021-10-19T15:00,53.2,47,33.4,0.008,0,12,23.7 +2021-10-19T16:00,51.7,46,31.8,0,0,10.5,21.3 +2021-10-19T17:00,47.7,68,37.8,0,0,1.1,17.9 +2021-10-19T18:00,46,78,39.5,0,0,5.4,9.6 +2021-10-19T19:00,44.8,79,38.6,0,0,6.5,10.1 +2021-10-19T20:00,44.4,73,36.1,0,0,4.7,11.6 +2021-10-19T21:00,40.6,87,36.9,0,0,4,8.3 +2021-10-19T22:00,38.8,92,36.7,0,0,4.3,6.5 +2021-10-19T23:00,39.4,91,37,0,0,3.2,5.6 +2021-10-20T00:00,36.5,92,34.5,0,0,5.5,6.7 +2021-10-20T01:00,36.7,90,33.9,0,0,3.8,6.5 +2021-10-20T02:00,36.7,87,33.2,0,0,3.9,6.3 +2021-10-20T03:00,36.1,88,32.9,0,0,5.4,10.1 +2021-10-20T04:00,34.9,91,32.5,0,0,3.6,9.4 +2021-10-20T05:00,34.1,98,33.4,0,0,3.6,5.4 +2021-10-20T06:00,33.5,98,33.1,0,0,4.5,7.4 +2021-10-20T07:00,34.3,93,32.5,0,0,5.6,10.1 +2021-10-20T08:00,37.1,80,31.5,0,0,4.8,11 +2021-10-20T09:00,43.3,55,28.1,0,0,4.8,11.9 +2021-10-20T10:00,49.6,38,25,0,0,5.4,13.2 +2021-10-20T11:00,55,28,22.6,0,0,5.3,13.9 +2021-10-20T12:00,58.7,24,21.6,0,0,5.1,13.6 +2021-10-20T13:00,61.1,22,21.4,0,0,5.2,13.4 +2021-10-20T14:00,62.4,21,22.5,0,0,6,13.4 +2021-10-20T15:00,62.3,23,24.1,0,0,7.7,14.8 +2021-10-20T16:00,60.1,26,25.4,0,0,9.3,15.9 +2021-10-20T17:00,53.5,34,25.8,0,0,4.5,15.9 +2021-10-20T18:00,49.7,41,27,0,0,6.5,8.1 +2021-10-20T19:00,50.5,40,27.1,0,0,3.8,7.4 +2021-10-20T20:00,47,46,27.4,0,0,4.5,5.4 +2021-10-20T21:00,48.7,43,27,0,0,2.4,5.4 +2021-10-20T22:00,43.2,54,27.4,0,0,1.4,2.9 +2021-10-20T23:00,39,64,28,0,0,3.5,5.4 +2021-10-21T00:00,37.1,66,26.7,0,0,4.1,5.4 +2021-10-21T01:00,35.8,69,26.5,0,0,3.3,5.6 +2021-10-21T02:00,35.3,71,27,0,0,2.7,4.9 +2021-10-21T03:00,34.3,76,27.6,0,0,3,4.3 +2021-10-21T04:00,33,79,27.2,0,0,4.2,4.9 +2021-10-21T05:00,33.6,70,24.7,0,0,4.6,6.3 +2021-10-21T06:00,33.4,63,22.4,0,0,5.2,6 +2021-10-21T07:00,38.1,52,21.8,0,0,2.7,6.3 +2021-10-21T08:00,43.2,45,23,0,0,4.4,8.3 +2021-10-21T09:00,48.6,36,22.8,0,0,4.3,8.9 +2021-10-21T10:00,53.1,26,19.2,0,0,4.1,9.4 +2021-10-21T11:00,58.2,20,17.8,0,0,3.7,10.1 +2021-10-21T12:00,62.3,17,16.6,0,0,2.9,10.1 +2021-10-21T13:00,64.2,15,16.2,0,0,1.9,9.2 +2021-10-21T14:00,65.2,15,16.3,0,0,1.3,7.6 +2021-10-21T15:00,65.7,14,15.5,0,0,0.9,6.5 +2021-10-21T16:00,64.5,15,16.4,0,0,2.8,5.8 +2021-10-21T17:00,60.4,19,18,0,0,4.7,3.8 +2021-10-21T18:00,59.7,19,17.9,0,0,3.1,5.6 +2021-10-21T19:00,55,24,19.2,0,0,1.8,3.8 +2021-10-21T20:00,48.9,35,22.6,0,0,2.7,3.4 +2021-10-21T21:00,42.5,54,27.1,0,0,3.5,5.8 +2021-10-21T22:00,40,60,27.4,0,0,3.5,5.1 +2021-10-21T23:00,39,58,25.4,0,0,4.2,6 +2021-10-22T00:00,37.7,58,24.1,0,0,4.8,6.3 +2021-10-22T01:00,36.8,60,24.4,0,0,5.4,6.7 +2021-10-22T02:00,36.7,62,24.9,0,0,5.1,6.9 +2021-10-22T03:00,36.7,61,24.4,0,0,4.5,6.9 +2021-10-22T04:00,36.4,60,23.9,0,0,5.1,7.2 +2021-10-22T05:00,35.5,61,23.4,0,0,6.3,7.4 +2021-10-22T06:00,34.2,64,23.2,0,0,6.6,7.4 +2021-10-22T07:00,39,53,23.3,0,0,4.5,7.8 +2021-10-22T08:00,47,41,24.7,0,0,2.9,8.5 +2021-10-22T09:00,55.9,30,24.5,0,0,5.4,11 +2021-10-22T10:00,64,20,21.8,0,0,5.5,13.2 +2021-10-22T11:00,68.4,16,19.9,0,0,3.5,12.5 +2021-10-22T12:00,70.4,13,17.9,0,0,4.7,12.1 +2021-10-22T13:00,71.5,13,17.7,0,0,5.4,13 +2021-10-22T14:00,72,13,18.1,0,0,4.5,13 +2021-10-22T15:00,72.2,13,19,0,0,1.8,11.2 +2021-10-22T16:00,70.6,17,24.4,0,0,2.5,6.7 +2021-10-22T17:00,61.6,20,19.9,0,0,7.1,7.6 +2021-10-22T18:00,58.6,21,18.7,0,0,7.1,8.5 +2021-10-22T19:00,59,20,18.1,0,0,4.8,8.5 +2021-10-22T20:00,51.5,28,19.5,0,0,6,7.4 +2021-10-22T21:00,47.8,33,20.2,0,0,5.8,7.8 +2021-10-22T22:00,45.1,44,24.4,0,0,4.3,6.9 +2021-10-22T23:00,44.5,46,25.1,0,0,4.6,7.6 +2021-10-23T00:00,41.1,51,24.5,0,0,4.7,7.6 +2021-10-23T01:00,40.8,50,23.5,0,0,3.6,5.8 +2021-10-23T02:00,40.6,46,21.6,0,0,3.7,4.7 +2021-10-23T03:00,43.4,39,20,0,0,2.6,4.5 +2021-10-23T04:00,37.7,48,19.5,0,0,4.6,5.4 +2021-10-23T05:00,35.9,54,21,0,0,4.6,6.9 +2021-10-23T06:00,35.1,59,22.3,0,0,5.6,6.5 +2021-10-23T07:00,39.7,52,23.4,0,0,3,6.7 +2021-10-23T08:00,45.4,42,23.6,0,0,4.1,7.8 +2021-10-23T09:00,53,31,22.9,0,0,3.2,8.5 +2021-10-23T10:00,60.2,21,20.1,0,0,4,10.3 +2021-10-23T11:00,65.3,16,18.3,0,0,4.5,10.7 +2021-10-23T12:00,68.4,16,19.9,0,0,5,11.2 +2021-10-23T13:00,68.5,16,20.3,0,0,2.2,10.7 +2021-10-23T14:00,69.8,15,20.4,0,0,5.1,11 +2021-10-23T15:00,67.2,17,20.6,0,0,11.5,18.6 +2021-10-23T16:00,64.1,19,21.5,0,0,9.2,19 +2021-10-23T17:00,60.4,24,23,0,0,12,15 +2021-10-23T18:00,57.3,29,24.9,0,0,7,19.5 +2021-10-23T19:00,55.9,31,25.5,0,0,6.5,11.4 +2021-10-23T20:00,54.1,32,24.9,0,0,9.9,16.1 +2021-10-23T21:00,51.9,34,24.2,0,0,6.1,15.7 +2021-10-23T22:00,48.4,40,25,0,0,4.7,9.6 +2021-10-23T23:00,46.6,46,27.1,0,0,4.9,6.5 +2021-10-24T00:00,50.5,40,27.1,0,0,1.4,6.3 +2021-10-24T01:00,42.9,55,28,0,0,3.8,4.5 +2021-10-24T02:00,40.3,64,28.9,0,0,3.5,5.4 +2021-10-24T03:00,39.4,66,29.1,0,0,3.5,4.9 +2021-10-24T04:00,38.9,68,29.2,0,0,3,4.9 +2021-10-24T05:00,39.9,66,29.3,0,0,3.1,4.9 +2021-10-24T06:00,37.1,73,29.4,0,0,3.1,6 +2021-10-24T07:00,38.2,72,30.1,0,0,1.2,5.4 +2021-10-24T08:00,45.3,57,30.9,0,0,1.1,5.6 +2021-10-24T09:00,50.6,45,29.8,0,0,2.9,8.3 +2021-10-24T10:00,56.1,36,29.8,0,0,4.2,11.4 +2021-10-24T11:00,58.6,33,29.2,0,0,2.5,11.4 +2021-10-24T12:00,60.3,29,28.1,0,0,3.7,11.4 +2021-10-24T13:00,61.8,27,27.4,0,0,2.2,11.6 +2021-10-24T14:00,63.1,25,26.5,0,0,5,12.3 +2021-10-24T15:00,63.4,24,25.8,0,0,5.9,13 +2021-10-24T16:00,62.6,25,25.9,0,0,3.2,12.3 +2021-10-24T17:00,58.4,26,23.4,0,0,4.8,6.5 +2021-10-24T18:00,54.9,29,23.5,0,0,6.1,8.5 +2021-10-24T19:00,53.2,32,24.1,0,0,6.1,8.1 +2021-10-24T20:00,50.2,35,23.4,0,0,5.9,8.3 +2021-10-24T21:00,50.8,33,22.7,0,0,5.4,7.6 +2021-10-24T22:00,46,39,22.6,0,0,6.4,7.8 +2021-10-24T23:00,43.3,46,24,0,0,3.6,7.6 +2021-10-25T00:00,41.8,52,25.3,0,0,4,6.3 +2021-10-25T01:00,41.8,54,26.3,0,0,4.1,8.7 +2021-10-25T02:00,41.4,58,27.6,0,0,5,6.5 +2021-10-25T03:00,43,52,26.6,0,0,1.8,5.8 +2021-10-25T04:00,39.1,58,25.5,0,0,1,2.2 +2021-10-25T05:00,39,61,26.7,0,0,2.8,2.9 +2021-10-25T06:00,39.9,58,26.2,0,0,1.3,4.7 +2021-10-25T07:00,39.8,60,27,0,0,2.3,3.4 +2021-10-25T08:00,42.1,53,26.3,0,0,3.4,7.4 +2021-10-25T09:00,48.7,42,26.8,0,0,5.7,11.9 +2021-10-25T10:00,58,32,28.1,0,0,5,13 +2021-10-25T11:00,68.5,24,30.6,0,0,2.7,12.1 +2021-10-25T12:00,76.8,19,30.8,0,0,5.7,12.8 +2021-10-25T13:00,80.2,16,29.5,0,0,7.8,15.7 +2021-10-25T14:00,82.5,14,28.2,0,0,8.5,16.6 +2021-10-25T15:00,83.3,12,25.6,0,0,4.7,16.3 +2021-10-25T16:00,74.2,22,32.7,0,0,11.4,17.7 +2021-10-25T17:00,60.5,33,31.5,0,0,4.6,24.8 +2021-10-25T18:00,61.3,32,31.5,0,0,1.4,8.1 +2021-10-25T19:00,54.2,42,31.6,0,0,4,6.3 +2021-10-25T20:00,53.4,44,31.9,0,0,1.8,5.8 +2021-10-25T21:00,49.7,49,31.2,0,0,3.6,5.6 +2021-10-25T22:00,50,44,28.9,0,0,7.2,9.8 +2021-10-25T23:00,55.9,30,24.8,0,0,9.9,15.2 +2021-10-26T00:00,54.3,33,26.1,0,0,9.6,16.6 +2021-10-26T01:00,52.1,39,28.1,0,0,7.9,15.4 +2021-10-26T02:00,50.8,42,28.4,0,0,8.1,12.8 +2021-10-26T03:00,50.7,42,28.3,0,0,8.6,14.1 +2021-10-26T04:00,49.9,42,27.9,0,0,8.1,13.6 +2021-10-26T05:00,50.2,40,26.9,0,0,9.1,13.4 +2021-10-26T06:00,50.5,41,27.4,0,0,10.3,16.1 +2021-10-26T07:00,52.7,38,27.7,0,0,11.7,18.6 +2021-10-26T08:00,59.7,30,28.3,0,0,13.3,20.8 +2021-10-26T09:00,66.6,24,28.9,0,0,14.9,24.2 +2021-10-26T10:00,69.5,22,28.5,0,0,15.7,27.5 +2021-10-26T11:00,72.1,18,26.2,0,0,17,28.4 +2021-10-26T12:00,59.8,43,37.3,0.016,0,21.4,38.5 +2021-10-26T13:00,62,32,31.6,0.004,0,9.6,35.6 +2021-10-26T14:00,65.8,20,23.9,0,0,9.3,18.1 +2021-10-26T15:00,61.3,37,34.8,0.039,0,14.1,22.6 +2021-10-26T16:00,56.4,45,35.5,0,0,14.4,26.4 +2021-10-26T17:00,45.8,84,41.4,0.024,0,8.9,26.4 +2021-10-26T18:00,46.4,86,42.4,0.02,0,2.1,14.1 +2021-10-26T19:00,45.1,81,39.7,0.067,0,5.7,12.5 +2021-10-26T20:00,45.6,77,38.8,0.012,0,6.7,12.3 +2021-10-26T21:00,44.2,78,37.9,0,0,3,10.7 +2021-10-26T22:00,42.7,77,35.9,0,0,3.8,5.8 +2021-10-26T23:00,44.9,53,28.9,0,0,10.4,16.3 +2021-10-27T00:00,43.6,48,25.2,0,0,8.6,17 +2021-10-27T01:00,42.3,46,23.1,0,0,5.4,14.3 +2021-10-27T02:00,40.5,52,24.3,0,0,5.1,8.9 +2021-10-27T03:00,42.1,48,23.8,0,0,4.3,7.4 +2021-10-27T04:00,41.3,47,22.7,0,0,4.5,7.2 +2021-10-27T05:00,44,38,20.2,0,0,6.5,7.2 +2021-10-27T06:00,42.5,42,21.2,0,0,3.8,10.7 +2021-10-27T07:00,42.7,44,22.3,0,0,3.1,6.3 +2021-10-27T08:00,45.6,38,21.7,0,0,5.4,8.5 +2021-10-27T09:00,47,36,21.7,0,0,5.4,12.5 +2021-10-27T10:00,48.8,33,20.8,0,0,2.2,11.9 +2021-10-27T11:00,50.3,31,21.1,0,0,3.2,10.7 +2021-10-27T12:00,52.3,29,21.2,0,0,3.6,11.2 +2021-10-27T13:00,54.8,26,20.1,0,0,5.7,13.9 +2021-10-27T14:00,55.1,24,18.5,0,0,7.6,16.3 +2021-10-27T15:00,54.2,24,18.4,0,0,6.6,16.8 +2021-10-27T16:00,52.8,26,19,0,0,6,14.3 +2021-10-27T17:00,49.9,35,23.2,0,0,9.1,11.9 +2021-10-27T18:00,48.9,38,24.6,0,0,7,15 +2021-10-27T19:00,50.2,38,25.8,0,0,7.9,13 +2021-10-27T20:00,49.5,42,27.1,0,0,8.2,14.3 +2021-10-27T21:00,48.7,43,27.4,0,0,7.9,13.2 +2021-10-27T22:00,47.5,42,25.5,0,0,8.8,14.3 +2021-10-27T23:00,47.3,41,24.5,0,0,7.5,14.8 +2021-10-28T00:00,45.6,43,24.6,0,0,5.5,12.1 +2021-10-28T01:00,43.6,48,25.2,0,0,4.3,8.9 +2021-10-28T02:00,43,50,25.4,0,0,5.1,8.1 +2021-10-28T03:00,41.8,53,25.9,0,0,4.3,8.3 +2021-10-28T04:00,39.7,58,26.1,0,0,6.3,7.6 +2021-10-28T05:00,38.2,55,23.5,0,0,5.3,9.8 +2021-10-28T06:00,38.9,54,23.6,0,0,5.6,10.3 +2021-10-28T07:00,39.9,52,23.6,0,0,5,9.4 +2021-10-28T08:00,41.1,49,23.3,0,0,5,9.6 +2021-10-28T09:00,42.8,44,22.6,0,0,3.8,10.3 +2021-10-28T10:00,44.4,42,22.6,0,0,4,10.1 +2021-10-28T11:00,46.8,38,22.7,0,0,5.2,12.5 +2021-10-28T12:00,50.1,37,24.6,0,0,4.5,13.2 +2021-10-28T13:00,53.6,35,26.9,0,0,6.1,14.1 +2021-10-28T14:00,56,33,27.5,0,0,6.2,14.5 +2021-10-28T15:00,58.6,31,28,0,0,2.7,13.9 +2021-10-28T16:00,59.7,29,27.3,0,0,4,8.3 +2021-10-28T17:00,48.7,42,26.6,0,0,5.2,6.9 +2021-10-28T18:00,50.3,39,26,0,0,1.9,5.6 +2021-10-28T19:00,48.1,44,27,0,0,5.6,8.3 +2021-10-28T20:00,49.8,42,27.6,0,0,8.5,13.6 +2021-10-28T21:00,49.1,42,27.1,0,0,9,14.8 +2021-10-28T22:00,48.2,43,26.9,0,0,6.8,14.5 +2021-10-28T23:00,44.8,49,27,0,0,6.4,11.2 +2021-10-29T00:00,43.3,51,26.5,0,0,6.6,8.7 +2021-10-29T01:00,43.1,50,25.9,0,0,5.3,8.5 +2021-10-29T02:00,42.6,51,25.8,0,0,5.8,9.2 +2021-10-29T03:00,41.5,53,25.8,0,0,5.2,9.2 +2021-10-29T04:00,39.9,57,25.8,0,0,4.9,8.3 +2021-10-29T05:00,40.4,56,25.9,0,0,5.1,7.4 +2021-10-29T06:00,38.9,58,25.3,0,0,4.9,8.1 +2021-10-29T07:00,39.6,57,25.5,0,0,4.2,7.6 +2021-10-29T08:00,45.7,46,26.3,0,0,5.4,9.8 +2021-10-29T09:00,53.6,36,27.1,0,0,4,10.3 +2021-10-29T10:00,61,26,25.7,0,0,5.2,11.6 +2021-10-29T11:00,66.9,19,23.3,0,0,7.1,15 +2021-10-29T12:00,69.9,16,21.1,0,0,5.4,15 +2021-10-29T13:00,71.3,14,20.2,0,0,4.8,13 +2021-10-29T14:00,72,14,20.1,0,0,4.2,11.9 +2021-10-29T15:00,72,14,20,0,0,3.8,10.7 +2021-10-29T16:00,69,34,39.3,0,0,3,8.7 +2021-10-29T17:00,61.3,24,24.1,0,0,5.7,5.6 +2021-10-29T18:00,57.3,29,25.2,0,0,7.3,9.2 +2021-10-29T19:00,52.9,33,24.7,0,0,6,8.5 +2021-10-29T20:00,49,38,24.8,0,0,6.1,8.1 +2021-10-29T21:00,45.9,44,25.3,0,0,5.1,7.6 +2021-10-29T22:00,43.3,47,24.5,0,0,5.1,6.7 +2021-10-29T23:00,41.8,47,23,0,0,5.6,6.9 +2021-10-30T00:00,41.5,45,21.7,0,0,4.8,7.2 +2021-10-30T01:00,40.6,46,21.7,0,0,4,6.9 +2021-10-30T02:00,37.5,56,23,0,0,4.3,7.8 +2021-10-30T03:00,38.1,54,23,0,0,6.6,10.5 +2021-10-30T04:00,41.7,44,21.2,0,0,10,15.9 +2021-10-30T05:00,38,54,22.8,0,0,4.9,15.9 +2021-10-30T06:00,37.5,54,22.3,0,0,5.8,10.3 +2021-10-30T07:00,40,53,24.2,0,0,7.1,8.9 +2021-10-30T08:00,52.8,32,23.6,0,0,4.5,8.5 +2021-10-30T09:00,60.7,25,25,0,0,0.3,7.2 +2021-10-30T10:00,65.9,21,25.2,0,0,3.4,8.9 +2021-10-30T11:00,68.7,17,22.2,0,0,6.4,13.9 +2021-10-30T12:00,70.6,14,18.8,0,0,9,17.2 +2021-10-30T13:00,68.7,17,22.6,0,0,14.5,25.3 +2021-10-30T14:00,67.2,21,25.9,0,0,13.3,26.8 +2021-10-30T15:00,64.5,26,29,0,0,14,23.7 +2021-10-30T16:00,62.9,30,31.3,0,0,8.2,23.7 +2021-10-30T17:00,57.7,39,32.8,0,0,6.8,13.2 +2021-10-30T18:00,54.7,45,33.7,0,0,6.5,11 +2021-10-30T19:00,51.3,53,34.8,0,0,7.4,11.6 +2021-10-30T20:00,49.4,58,35.1,0,0,8.1,13 +2021-10-30T21:00,48.4,59,34.8,0,0,5.7,13 +2021-10-30T22:00,46.4,64,34.7,0,0,3.8,9.2 +2021-10-30T23:00,44.5,69,35,0,0,3.8,5.8 +2021-10-31T00:00,41.8,78,35.3,0,0,3.9,5.8 +2021-10-31T01:00,41.3,79,35.2,0,0,5.6,8.3 +2021-10-31T02:00,40.2,77,33.5,0,0,9.4,14.5 +2021-10-31T03:00,38.7,74,31.2,0,0,9,15.2 +2021-10-31T04:00,37.5,77,30.9,0,0,7.4,14.5 +2021-10-31T05:00,36.5,78,30.4,0,0,8.5,12.1 +2021-10-31T06:00,36.5,79,30.5,0,0,8.1,14.1 +2021-10-31T07:00,36.7,79,30.8,0,0,7.4,13.6 +2021-10-31T08:00,37.4,78,31,0,0,7.3,13.6 +2021-10-31T09:00,37.9,76,31.1,0,0,6.4,13.6 +2021-10-31T10:00,39.1,73,31.2,0,0,6,12.8 +2021-10-31T11:00,39.7,72,31.3,0,0,5.2,12.5 +2021-10-31T12:00,41,69,31.5,0,0,4.3,11.6 +2021-10-31T13:00,42.6,65,31.6,0,0,3.3,11 +2021-10-31T14:00,44,62,31.6,0,0,3.8,10.1 +2021-10-31T15:00,43.9,62,31.6,0,0,4.9,11 +2021-10-31T16:00,43.7,62,31.6,0,0,3.7,11 +2021-10-31T17:00,40.4,66,29.8,0,0,3.9,8.5 +2021-10-31T18:00,39.6,68,29.8,0.004,0,2.9,7.6 +2021-10-31T19:00,38.8,71,30.3,0,0,2,5.8 +2021-10-31T20:00,38.8,72,30.7,0,0,3.2,6.9 +2021-10-31T21:00,38.5,74,31,0,0,3.5,8.3 +2021-10-31T22:00,38.1,76,31.2,0,0,2.6,6.3 +2021-10-31T23:00,37.5,76,30.7,0,0,3.2,4.9 +2021-11-01T00:00,35.3,81,30.2,0,0,4.8,7.6 +2021-11-01T01:00,32.5,93,30.7,0,0,3.4,7.6 +2021-11-01T02:00,31.5,97,30.7,0,0,2.4,4.5 +2021-11-01T03:00,30.7,100,30.7,0,0,1.4,3.8 +2021-11-01T04:00,32.6,93,30.9,0,0,1.7,5.1 +2021-11-01T05:00,35.7,87,32.3,0,0,3.5,4.5 +2021-11-01T06:00,35.2,87,31.7,0,0.165,5.6,8.9 +2021-11-01T07:00,34.5,86,30.8,0,0.083,8.4,14.8 +2021-11-01T08:00,34.9,84,30.6,0,0,8.8,15.4 +2021-11-01T09:00,35.4,81,30.2,0,0,8.3,16.3 +2021-11-01T10:00,37.3,74,29.7,0,0,6.7,15.4 +2021-11-01T11:00,39.8,66,29.6,0,0,5.2,13.9 +2021-11-01T12:00,42.3,62,30.1,0,0,3.8,12.8 +2021-11-01T13:00,44,59,30.4,0,0,4.8,12.1 +2021-11-01T14:00,44.8,57,30.4,0,0,5.4,12.3 +2021-11-01T15:00,44.8,57,30.5,0,0,5.1,12.1 +2021-11-01T16:00,43.8,61,31,0.008,0,4.9,10.7 +2021-11-01T17:00,37.4,70,28.5,0.024,0.11,3.4,9.6 +2021-11-01T18:00,36.9,73,29.1,0.004,0,4.2,8.1 +2021-11-01T19:00,36.9,76,30,0.004,0.028,4.9,9.2 +2021-11-01T20:00,36.9,74,29.2,0,0,3.7,8.9 +2021-11-01T21:00,36.4,75,29.2,0,0,0.7,7.2 +2021-11-01T22:00,35.7,78,29.7,0,0,1.2,3.6 +2021-11-01T23:00,35.5,81,30.3,0,0,1.9,4.7 +2021-11-02T00:00,35.4,83,30.7,0,0,2.5,4.5 +2021-11-02T01:00,35.6,83,30.8,0,0,4.3,6.7 +2021-11-02T02:00,35.6,83,30.8,0,0,5.4,8.9 +2021-11-02T03:00,35.2,83,30.4,0,0,6.7,11.4 +2021-11-02T04:00,34.4,84,30.2,0,0,5.8,11.9 +2021-11-02T05:00,33.4,89,30.7,0,0,5,10.3 +2021-11-02T06:00,32.9,91,30.7,0.004,0,2.7,9.2 +2021-11-02T07:00,32.9,92,30.7,0,0,2.1,6 +2021-11-02T08:00,33.7,89,30.9,0.004,0,1.6,5.8 +2021-11-02T09:00,34.7,87,31.3,0.004,0,1.4,5.8 +2021-11-02T10:00,36.3,84,31.8,0.004,0,1.9,7.4 +2021-11-02T11:00,38.5,78,32.3,0.004,0,1.9,8.1 +2021-11-02T12:00,40.6,74,32.8,0,0,2.2,8.5 +2021-11-02T13:00,42.8,69,33.3,0,0,3.4,10.1 +2021-11-02T14:00,42.4,76,35.5,0.028,0.028,3.7,10.3 +2021-11-02T15:00,43.3,72,35,0.008,0,4.5,9.6 +2021-11-02T16:00,43.3,71,34.4,0,0,3.5,9.6 +2021-11-02T17:00,40.8,82,35.8,0,0,3.8,6.9 +2021-11-02T18:00,40.5,84,36,0,0,1.4,4.5 +2021-11-02T19:00,37.3,94,35.9,0,0,2.6,3.4 +2021-11-02T20:00,35.2,96,34.3,0,0,3.8,4.9 +2021-11-02T21:00,35.5,95,34.3,0,0,3.4,5.1 +2021-11-02T22:00,34.1,96,33,0,0,3.5,5.8 +2021-11-02T23:00,32.6,96,31.6,0,0,4.2,5.4 +2021-11-03T00:00,33.5,94,32.1,0,0,2.9,5.1 +2021-11-03T01:00,33.4,93,31.7,0,0,3.5,5.8 +2021-11-03T02:00,32.5,92,30.6,0,0,3.4,5.6 +2021-11-03T03:00,32.5,93,30.7,0,0,3.5,5.8 +2021-11-03T04:00,31.6,95,30.3,0,0,3.3,5.8 +2021-11-03T05:00,31.2,95,30,0,0,5,5.1 +2021-11-03T06:00,31.1,93,29.4,0,0,5.5,6.5 +2021-11-03T07:00,32.2,90,29.7,0,0,4.6,6.9 +2021-11-03T08:00,36.9,79,31.1,0,0,2.9,6.9 +2021-11-03T09:00,42.9,64,31.7,0,0,1.8,7.4 +2021-11-03T10:00,49.5,50,31.8,0,0,2,8.3 +2021-11-03T11:00,54.5,42,31.8,0,0,3,10.1 +2021-11-03T12:00,57,37,31.1,0,0,2.1,10.1 +2021-11-03T13:00,58.5,34,30.4,0,0,1.2,9.2 +2021-11-03T14:00,59.5,32,29.8,0,0,2.5,9.2 +2021-11-03T15:00,59.5,32,29.6,0,0,3.9,9.6 +2021-11-03T16:00,57.1,36,30.4,0,0,6.4,11 +2021-11-03T17:00,51.7,46,31.5,0,0,4.8,10.3 +2021-11-03T18:00,52.9,43,30.9,0,0,0.8,5.4 +2021-11-03T19:00,45.7,57,31.4,0,0,4.2,4.7 +2021-11-03T20:00,41.3,69,31.8,0,0,3.8,6.3 +2021-11-03T21:00,37.3,79,31.6,0,0,1.8,5.4 +2021-11-03T22:00,35.8,80,30.3,0,0,3.2,4.9 +2021-11-03T23:00,35.5,72,27.5,0,0,3.8,6.5 +2021-11-04T00:00,34.3,70,25.4,0,0,5.7,6.5 +2021-11-04T01:00,34.8,66,24.5,0,0,4.8,7.2 +2021-11-04T02:00,32.2,73,24.5,0,0,5.1,6 +2021-11-04T03:00,31.8,76,25.1,0,0,3.8,6 +2021-11-04T04:00,32.4,75,25.3,0,0,4,6.3 +2021-11-04T05:00,32.1,76,25.3,0,0,4,6.5 +2021-11-04T06:00,31.3,76,24.5,0,0,4,6 +2021-11-04T07:00,31.7,72,23.9,0,0,4.8,6.9 +2021-11-04T08:00,38.4,56,24,0,0,6.1,10.7 +2021-11-04T09:00,47.5,42,25.7,0,0,5.9,11.4 +2021-11-04T10:00,56.4,27,22.6,0,0,7.7,14.8 +2021-11-04T11:00,61.6,20,20,0,0,6.3,15.4 +2021-11-04T12:00,64,20,21.8,0,0,3.7,13.6 +2021-11-04T13:00,65.5,20,23.3,0,0,4.8,11.6 +2021-11-04T14:00,66.2,20,24.1,0,0,4.8,12.1 +2021-11-04T15:00,66.1,21,24.5,0,0,3.9,11.2 +2021-11-04T16:00,63.1,28,29,0,0,2.9,8.7 +2021-11-04T17:00,54.1,36,27.8,0,0,6.6,8.5 +2021-11-04T18:00,50.8,40,27.1,0,0,5.4,8.1 +2021-11-04T19:00,48.8,42,26.5,0,0,5.7,8.9 +2021-11-04T20:00,46,47,27,0,0,5.2,8.9 +2021-11-04T21:00,43.8,52,27.2,0,0,4.7,7.8 +2021-11-04T22:00,42.3,54,26.6,0,0,4.6,6.9 +2021-11-04T23:00,41.3,55,26.5,0,0,4.6,6.7 +2021-11-05T00:00,38.8,61,26.6,0,0,6.5,7.4 +2021-11-05T01:00,42.9,51,25.9,0,0,3.4,7.4 +2021-11-05T02:00,38.4,60,25.5,0,0,3.6,5.8 +2021-11-05T03:00,37.9,59,24.7,0,0,4.3,7.4 +2021-11-05T04:00,37.1,60,24.4,0,0,5.1,7.2 +2021-11-05T05:00,36.9,58,23.4,0,0,4.8,6 +2021-11-05T06:00,34,66,23.7,0,0,4.7,5.8 +2021-11-05T07:00,36.8,58,23.5,0,0,4.2,6.5 +2021-11-05T08:00,43,47,24.2,0,0,6.6,11.4 +2021-11-05T09:00,51.8,35,25.3,0,0,5,11.2 +2021-11-05T10:00,60.5,25,24.2,0,0,5.1,11.6 +2021-11-05T11:00,66.9,19,22.8,0,0,6.2,13.4 +2021-11-05T12:00,69.5,16,21.4,0,0,5.7,13.9 +2021-11-05T13:00,70.4,15,20.5,0,0,2.2,13 +2021-11-05T14:00,70.6,14,18.7,0,0,3.2,8.9 +2021-11-05T15:00,69.7,14,18.1,0,0,4.1,9.4 +2021-11-05T16:00,66.1,25,29.2,0,0,3.4,8.7 +2021-11-05T17:00,67.7,15,17.8,0,0,2.7,4.5 +2021-11-05T18:00,65.2,16,17.7,0,0,3.4,3.8 +2021-11-05T19:00,51.8,27,18.9,0,0,4.3,4.7 +2021-11-05T20:00,46.6,34,19.4,0,0,4,7.4 +2021-11-05T21:00,42.4,45,22.5,0,0,2.8,6.3 +2021-11-05T22:00,41.3,47,22.7,0,0,3.3,5.4 +2021-11-05T23:00,39.7,45,20.2,0,0,4.3,5.6 +2021-11-06T00:00,38.6,46,19.6,0,0,5.8,6.9 +2021-11-06T01:00,37.3,50,20.3,0,0,5.3,6.9 +2021-11-06T02:00,36.1,54,21.2,0,0,5.7,6.5 +2021-11-06T03:00,35.1,58,21.6,0,0,6,7.4 +2021-11-06T04:00,34,61,21.8,0,0,6.1,7.6 +2021-11-06T05:00,33.5,61,21.6,0,0,5.1,7.6 +2021-11-06T06:00,32.9,62,21.1,0,0,5.5,6.9 +2021-11-06T07:00,35.7,51,19.1,0,0,3.5,6.9 +2021-11-06T08:00,41.1,39,18.1,0,0,5,8.1 +2021-11-06T09:00,50.1,29,19,0,0,5.3,11.2 +2021-11-06T10:00,60.9,18,17.7,0,0,4.8,11.4 +2021-11-06T11:00,68.5,13,15.3,0,0,5.3,11.6 +2021-11-06T12:00,74.6,8,8.8,0,0,7,14.1 +2021-11-06T13:00,75.7,7,5.8,0,0,6.1,14.3 +2021-11-06T14:00,75.3,7,6.2,0,0,3.2,12.8 +2021-11-06T15:00,73.3,9,10.2,0,0,8.8,15 +2021-11-06T16:00,67.7,12,13.9,0,0,9.5,18.8 +2021-11-06T17:00,57.5,20,17.2,0,0,7.7,15.2 +2021-11-06T18:00,58.3,19,16.3,0,0,3.3,8.7 +2021-11-06T19:00,53.1,22,15.3,0,0,5.2,7.2 +2021-11-06T20:00,47.3,30,17.4,0,0,5.3,6.5 +2021-11-06T21:00,42.9,43,22,0,0,3.5,6.5 +2021-11-06T22:00,41.2,46,21.8,0,0,4.3,6.5 +2021-11-06T23:00,41.2,40,18.4,0,0,4.9,7.2 +2021-11-07T00:00,42.1,37,17.9,0,0,5.9,8.9 +2021-11-07T01:00,43.4,36,18.1,0,0,7.2,11 +2021-11-07T02:00,45.1,34,18.2,0,0,7.9,12.5 +2021-11-07T03:00,44.6,34,18.1,0,0,6.9,12.3 +2021-11-07T04:00,42.2,38,18.2,0,0,6.1,10.7 +2021-11-07T05:00,43.5,35,17.6,0,0,7.7,8.7 +2021-11-07T06:00,41.7,38,17.7,0,0,5.6,12.1 +2021-11-07T07:00,39.7,42,18.6,0,0,6.8,8.7 +2021-11-07T08:00,48.2,32,19.6,0,0,4.4,8.5 +2021-11-07T09:00,56,25,20.9,0,0,1.8,6.7 +2021-11-07T10:00,64.4,19,21.2,0,0,3.5,8.5 +2021-11-07T11:00,71,12,16.3,0,0,7.9,15 +2021-11-07T12:00,72.8,9,10.5,0,0,8.8,17.4 +2021-11-07T13:00,72.6,10,13.1,0,0,7.8,17.2 +2021-11-07T14:00,72.9,10,13.6,0,0,6.5,15.9 +2021-11-07T15:00,73.1,10,12.2,0,0,7.5,13.4 +2021-11-07T16:00,69.5,11,13,0,0,6.7,12.8 +2021-11-07T17:00,60.3,16,13.3,0,0,5.7,11.2 +2021-11-07T18:00,57.5,16,12.1,0,0,5.1,10.5 +2021-11-07T19:00,52.3,22,14.5,0,0,4.7,8.1 +2021-11-07T20:00,48.7,30,18.5,0,0,2.6,6.9 +2021-11-07T21:00,46.6,36,21,0,0,5.1,8.3 +2021-11-07T22:00,44.9,34,18.4,0,0,5.3,8.5 +2021-11-07T23:00,43.6,35,17.7,0,0,5.1,8.1 +2021-11-08T00:00,40.8,38,17.3,0,0,5,8.7 +2021-11-08T01:00,40.6,43,20,0,0,5.3,8.3 +2021-11-08T02:00,39.7,51,23,0,0,6,8.5 +2021-11-08T03:00,38.4,52,22.3,0,0,6.7,9.2 +2021-11-08T04:00,40.8,58,27.1,0,0,7,11.4 +2021-11-08T05:00,36.2,89,33.2,0,0,6.4,11.4 +2021-11-08T06:00,34.3,93,32.5,0,0,4.2,9.8 +2021-11-08T07:00,35.6,92,33.5,0,0,3.2,6 +2021-11-08T08:00,39.2,81,33.9,0,0,4.5,8.9 +2021-11-08T09:00,40.1,78,33.8,0,0,3.8,9.4 +2021-11-08T10:00,41.2,73,33.2,0,0,5,11.2 +2021-11-08T11:00,44,63,32.4,0,0,4.8,12.5 +2021-11-08T12:00,45.5,59,31.9,0,0,5.3,13.2 +2021-11-08T13:00,47.1,55,31.9,0,0,5.5,13.6 +2021-11-08T14:00,48.7,51,31.3,0,0,3.6,13.2 +2021-11-08T15:00,49.2,49,30.8,0,0,1.6,10.3 +2021-11-08T16:00,46.9,53,30.7,0,0,3.4,7.2 +2021-11-08T17:00,39.9,73,31.8,0,0,2.7,7.8 +2021-11-08T18:00,39.2,85,35,0.004,0,2.5,8.9 +2021-11-08T19:00,37.5,93,35.8,0,0,2.7,5.4 +2021-11-08T20:00,36.1,94,34.6,0,0,4.8,6.9 +2021-11-08T21:00,37.1,90,34.4,0,0,4.1,6.9 +2021-11-08T22:00,35.7,91,33.4,0,0,2.7,5.1 +2021-11-08T23:00,35.2,93,33.4,0,0,5.5,8.7 +2021-11-09T00:00,34.6,91,32.3,0,0,5.4,9.6 +2021-11-09T01:00,31.8,93,29.9,0,0,4.8,8.7 +2021-11-09T02:00,34.3,87,30.7,0,0,0.5,6.3 +2021-11-09T03:00,30,94,28.5,0,0,4.5,5.1 +2021-11-09T04:00,29.3,96,28.4,0,0,5.5,6.7 +2021-11-09T05:00,32.3,98,31.7,0,0,2.5,6.7 +2021-11-09T06:00,30.6,95,29.4,0,0,1.7,3.6 +2021-11-09T07:00,30.3,96,29.3,0,0,2.7,4.3 +2021-11-09T08:00,31.8,89,29,0,0,4.8,10.5 +2021-11-09T09:00,34.5,90,31.8,0,0,3.2,10.3 +2021-11-09T10:00,40.6,76,33.5,0,0,2.5,9.4 +2021-11-09T11:00,48.1,51,31,0,0,5.3,12.5 +2021-11-09T12:00,53.1,41,29.8,0,0,7.4,15.4 +2021-11-09T13:00,55.6,38,30.7,0,0,7.2,15.4 +2021-11-09T14:00,56.8,39,32.1,0,0,7.4,14.3 +2021-11-09T15:00,56,40,32.1,0,0,8.4,15.4 +2021-11-09T16:00,53.2,44,31.7,0,0,6.2,15.2 +2021-11-09T17:00,47.8,54,32.1,0,0,3.9,10.5 +2021-11-09T18:00,46.4,58,32.5,0,0,3.8,5.6 +2021-11-09T19:00,44.5,63,32.5,0,0,2.6,4.3 +2021-11-09T20:00,42.2,69,32.7,0,0,3,4 +2021-11-09T21:00,43.2,66,32.5,0,0,1.8,3.6 +2021-11-09T22:00,41.4,71,32.5,0,0,2,2.7 +2021-11-09T23:00,40,71,31.5,0,0,0.4,3.1 +2021-11-10T00:00,38.7,72,30.5,0,0,2.6,3.4 +2021-11-10T01:00,39.1,67,28.9,0,0,2.9,4.5 +2021-11-10T02:00,39.2,65,28.6,0,0,3.8,5.6 +2021-11-10T03:00,38.1,69,28.8,0,0,4,6.5 +2021-11-10T04:00,37.1,69,27.9,0,0,3.1,5.8 +2021-11-10T05:00,43.5,49,25.8,0,0,3.4,4.5 +2021-11-10T06:00,44.6,48,26.2,0,0,6.5,10.1 +2021-11-10T07:00,49,44,27.9,0,0,15.1,23.9 +2021-11-10T08:00,49.2,37,23.7,0,0,15.4,24.8 +2021-11-10T09:00,52.2,29,21,0,0,14.8,25.1 +2021-11-10T10:00,54.4,23,17.6,0,0,15.5,26.6 +2021-11-10T11:00,55.1,22,16.7,0,0,20.2,34 +2021-11-10T12:00,55.9,20,15.3,0,0,21.1,36.5 +2021-11-10T13:00,56.6,17,12.2,0,0,17.2,36.2 +2021-11-10T14:00,55.6,16,10.1,0,0,17.4,31.3 +2021-11-10T15:00,54.2,17,10.4,0,0,15.5,30.4 +2021-11-10T16:00,51.9,20,11.5,0,0,11.7,26.4 +2021-11-10T17:00,48.1,28,16.6,0,0,11.9,19.5 +2021-11-10T18:00,46,35,19.5,0,0,10.5,20.8 +2021-11-10T19:00,45.2,34,18.8,0,0,9,16.8 +2021-11-10T20:00,44.7,35,18.7,0,0,8.4,14.8 +2021-11-10T21:00,41.3,42,20,0,0,4.9,13.4 +2021-11-10T22:00,37.6,51,21,0,0,4.6,7.8 +2021-11-10T23:00,39.2,49,21.5,0,0,4.8,7.8 +2021-11-11T00:00,40.6,46,21.2,0,0,6.1,10.1 +2021-11-11T01:00,42.9,39,19.6,0,0,10.3,16.1 +2021-11-11T02:00,38.7,40,16.5,0,0,6.3,16.8 +2021-11-11T03:00,32.6,56,18.5,0,0,6,10.5 +2021-11-11T04:00,35.2,49,17.9,0,0,5.1,7.6 +2021-11-11T05:00,29.5,68,20.4,0,0,4,7.2 +2021-11-11T06:00,29.3,67,19.7,0,0,4.8,8.1 +2021-11-11T07:00,28,69,19.1,0,0,6.1,8.1 +2021-11-11T08:00,34.4,53,19,0,0,4.8,8.7 +2021-11-11T09:00,42.4,38,18.4,0,0,3.7,9.8 +2021-11-11T10:00,46.9,28,15.5,0,0,4.6,10.7 +2021-11-11T11:00,50.3,22,12.4,0,0,3.6,13.4 +2021-11-11T12:00,53.1,20,13.1,0,0,11.1,20.6 +2021-11-11T13:00,55,19,13.9,0,0,13,24.2 +2021-11-11T14:00,54.4,21,15.5,0,0,12.2,23.7 +2021-11-11T15:00,54.1,23,17.1,0,0,11.5,21.7 +2021-11-11T16:00,52.8,27,19.6,0,0,7.2,20.4 +2021-11-11T17:00,49.2,39,25.1,0,0,5.5,12.5 +2021-11-11T18:00,50.4,37,25.3,0,0,7.1,11.6 +2021-11-11T19:00,49.4,41,26.8,0,0,5.1,11.2 +2021-11-11T20:00,46.7,50,28.9,0,0,4,8.7 +2021-11-11T21:00,46.9,53,30.5,0,0,4.1,7.2 +2021-11-11T22:00,44.9,59,31.6,0.031,0,2.1,7.4 +2021-11-11T23:00,38.4,75,31.3,0,0,13.3,23.3 +2021-11-12T00:00,36.1,74,28.5,0,0,3.3,21 +2021-11-12T01:00,33.9,75,26.9,0,0,4.4,6.5 +2021-11-12T02:00,34.8,71,26.2,0,0,5.9,9.4 +2021-11-12T03:00,33.3,75,26.2,0,0,5.4,9.4 +2021-11-12T04:00,32.9,68,23.6,0,0,7.2,11 +2021-11-12T05:00,32.5,51,16.2,0,0,4.7,10.7 +2021-11-12T06:00,32.6,51,16.6,0,0,3.5,8.5 +2021-11-12T07:00,33,53,17.8,0,0,2.1,6.5 +2021-11-12T08:00,33.5,54,18.8,0,0,1.8,5.1 +2021-11-12T09:00,36,51,19.6,0,0,1.1,6 +2021-11-12T10:00,37.2,49,20,0,0,2.1,7.2 +2021-11-12T11:00,41.3,45,21.3,0,0,1.7,9.2 +2021-11-12T12:00,46.5,39,22.8,0,0,4.8,12.3 +2021-11-12T13:00,50.8,35,23.9,0,0,5.6,13.2 +2021-11-12T14:00,53.5,32,24.5,0,0,5.8,13.2 +2021-11-12T15:00,54.1,32,25,0,0,5.5,12.8 +2021-11-12T16:00,53.1,34,25.4,0,0,3.8,11 +2021-11-12T17:00,51.1,30,20.5,0,0,3.1,5.4 +2021-11-12T18:00,47.5,35,20.9,0,0,3.6,5.1 +2021-11-12T19:00,48.2,32,20,0,0,5.6,9.2 +2021-11-12T20:00,47.1,34,20.3,0,0,5.4,8.9 +2021-11-12T21:00,47.9,34,21,0,0,3.6,8.7 +2021-11-12T22:00,48.6,36,22.7,0,0,3,6 +2021-11-12T23:00,46.5,44,25.9,0,0,3.7,5.6 +2021-11-13T00:00,45.1,52,28.4,0,0,4.5,7.6 +2021-11-13T01:00,45.8,51,28.5,0,0,5.5,8.7 +2021-11-13T02:00,45.4,51,28.5,0,0,5.7,10.5 +2021-11-13T03:00,44.2,54,28.7,0,0,4.2,9.4 +2021-11-13T04:00,43.1,56,28.6,0,0,10,15.2 +2021-11-13T05:00,43,60,29.8,0,0,8,15.2 +2021-11-13T06:00,41.6,62,29.4,0,0,4.5,12.8 +2021-11-13T07:00,40.9,62,29,0,0,8.2,10.3 +2021-11-13T08:00,50.1,42,28,0,0,7.2,10.5 +2021-11-13T09:00,57.1,33,28,0,0,10,16.3 +2021-11-13T10:00,62.2,25,26.2,0,0,7.4,15.7 +2021-11-13T11:00,63.9,23,25.1,0,0,3.8,13.6 +2021-11-13T12:00,65.3,20,23.7,0,0,10,19.2 +2021-11-13T13:00,64.2,23,25.3,0,0,7.8,19.2 +2021-11-13T14:00,62.9,25,26.9,0,0,1.8,15.9 +2021-11-13T15:00,63.3,25,27.1,0,0,5.2,9.8 +2021-11-13T16:00,61.2,34,32.5,0,0,1.7,9.6 +2021-11-13T17:00,58.4,28,25.6,0,0,7.4,3.6 +2021-11-13T18:00,53.7,35,26.5,0,0,4.7,11.9 +2021-11-13T19:00,53.3,37,27.6,0,0,6.6,11.2 +2021-11-13T20:00,50.4,43,28.5,0,0,6.1,11 +2021-11-13T21:00,45.5,50,28,0,0,4.4,7.2 +2021-11-13T22:00,41.7,56,27.3,0,0,4.6,5.6 +2021-11-13T23:00,43.5,55,28.6,0,0,7.9,10.1 +2021-11-14T00:00,39.4,82,34.3,0,0,6,16.6 +2021-11-14T01:00,37,87,33.6,0,0,4,7.2 +2021-11-14T02:00,35,91,32.7,0,0,4.5,5.8 +2021-11-14T03:00,34.3,92,32.2,0,0,4.4,6.3 +2021-11-14T04:00,32.9,92,30.8,0,0,5.2,6.7 +2021-11-14T05:00,31.8,92,29.7,0,0,3.8,6.9 +2021-11-14T06:00,30,91,27.8,0,0,4.1,5.8 +2021-11-14T07:00,32.2,88,29,0,0,1.3,4.7 +2021-11-14T08:00,35.2,78,29.2,0,0,3.1,6.5 +2021-11-14T09:00,43.6,56,29.1,0,0,2.5,7.8 +2021-11-14T10:00,49.7,43,28.1,0,0,5.5,12.8 +2021-11-14T11:00,56.1,30,25.4,0,0,2.2,12.3 +2021-11-14T12:00,62.6,22,23,0,0,2.9,9.6 +2021-11-14T13:00,68.3,19,24.4,0,0,4.3,10.3 +2021-11-14T14:00,68.7,20,26.2,0,0,4,11.2 +2021-11-14T15:00,67.7,21,26.9,0,0,2.8,9.4 +2021-11-14T16:00,62.4,32,32.5,0,0,4.1,6.5 +2021-11-14T17:00,56.1,33,27.6,0,0,8.8,7.2 +2021-11-14T18:00,56.5,34,28.2,0,0,7.3,11.6 +2021-11-14T19:00,52.7,38,28,0,0,5.5,9.2 +2021-11-14T20:00,53.2,36,26.9,0,0,9.2,13.4 +2021-11-14T21:00,51.4,39,27.5,0,0,12.8,21.3 +2021-11-14T22:00,49.8,42,27.8,0,0,10,19.7 +2021-11-14T23:00,48.6,44,27.9,0,0,6.6,15.7 +2021-11-15T00:00,47.7,46,28.1,0,0,6.4,11.4 +2021-11-15T01:00,48.2,46,28.2,0,0,8.4,12.3 +2021-11-15T02:00,47.8,46,27.9,0,0,12.5,20.4 +2021-11-15T03:00,48.1,44,27.4,0,0,8.5,19.5 +2021-11-15T04:00,49.2,42,26.9,0,0,8.7,14.5 +2021-11-15T05:00,45.9,48,27.3,0,0,7.8,13.9 +2021-11-15T06:00,45.1,49,26.8,0,0,7.4,10.7 +2021-11-15T07:00,46.7,45,26.3,0,0,6.6,10.7 +2021-11-15T08:00,52,37,26.6,0,0,5.4,10.3 +2021-11-15T09:00,59.5,29,27.4,0,0,2.3,8.5 +2021-11-15T10:00,65.5,23,26.8,0,0,6,11.2 +2021-11-15T11:00,69.6,15,20.6,0,0,6.7,13.9 +2021-11-15T12:00,71.4,13,18.7,0,0,4.2,13.4 +2021-11-15T13:00,71.7,12,17,0,0,3,10.3 +2021-11-15T14:00,71.8,11,15,0,0,3.2,7.8 +2021-11-15T15:00,70.5,29,36.3,0,0,1.4,7.2 +2021-11-15T16:00,66.1,20,23.4,0,0,4.1,4.5 +2021-11-15T17:00,60,21,19.5,0,0,4.5,4.5 +2021-11-15T18:00,53.1,26,18.9,0,0,5.8,7.8 +2021-11-15T19:00,50.8,28,19,0,0,5.4,8.5 +2021-11-15T20:00,47.8,32,19.1,0,0,5.6,8.7 +2021-11-15T21:00,47.2,32,19.1,0,0,5.9,7.4 +2021-11-15T22:00,49.4,28,17.7,0,0,5.4,8.1 +2021-11-15T23:00,49.6,27,16.7,0,0,6.8,10.3 +2021-11-16T00:00,50.2,28,18.6,0,0,5.9,11.6 +2021-11-16T01:00,48,33,20.5,0,0,7.1,9.4 +2021-11-16T02:00,48.1,34,20.9,0,0,6.7,9.2 +2021-11-16T03:00,52.8,28,20.7,0,0,8.5,13.2 +2021-11-16T04:00,53,28,21.1,0,0,10.3,15.9 +2021-11-16T05:00,50,33,21.8,0,0,6.6,19.7 +2021-11-16T06:00,48.6,35,22.1,0,0,6.6,10.3 +2021-11-16T07:00,45.1,40,22.2,0,0,6.4,10.1 +2021-11-16T08:00,51.1,32,21.9,0,0,6.9,10.3 +2021-11-16T09:00,59.4,24,22.1,0,0,10.5,15.7 +2021-11-16T10:00,66.4,17,20,0,0,12.1,20.6 +2021-11-16T11:00,69.5,13,16.6,0,0,11.2,22.4 +2021-11-16T12:00,70.7,12,15.1,0,0,10.2,20.1 +2021-11-16T13:00,70.1,12,15.8,0,0,12.5,23.7 +2021-11-16T14:00,69.1,14,17.5,0,0,10.4,22.6 +2021-11-16T15:00,66.4,17,19.9,0,0,12.1,21 +2021-11-16T16:00,63.1,20,20.9,0,0,7.8,21.3 +2021-11-16T17:00,56.2,25,20.4,0,0,4.3,14.3 +2021-11-16T18:00,56.7,25,20.8,0,0,1.1,7.4 +2021-11-16T19:00,49.4,33,21.1,0,0,7.1,8.9 +2021-11-16T20:00,48,35,21.7,0,0,6.3,8.7 +2021-11-16T21:00,44.1,43,22.8,0,0,4.2,8.3 +2021-11-16T22:00,42.1,47,23.5,0,0,6.6,6.7 +2021-11-16T23:00,44.5,51,27.7,0,0,11.7,19 +2021-11-17T00:00,41.1,30,11.9,0,0,7.1,18.8 +2021-11-17T01:00,39.1,31,10.8,0,0,5.3,13.4 +2021-11-17T02:00,36.3,36,12.1,0,0,6.3,10.3 +2021-11-17T03:00,34.8,43,14.6,0,0,9.3,15 +2021-11-17T04:00,31.9,50,15.3,0,0,10.7,17.4 +2021-11-17T05:00,28.6,49,11.8,0,0,5.7,17.9 +2021-11-17T06:00,27.8,53,12.8,0,0,4.4,8.9 +2021-11-17T07:00,28.2,53,13.4,0,0,5.2,8.9 +2021-11-17T08:00,29.6,53,14.5,0,0,6.5,12.1 +2021-11-17T09:00,31.1,48,13.9,0,0,5,12.1 +2021-11-17T10:00,33,43,12.7,0,0,5.2,12.5 +2021-11-17T11:00,34.3,37,10.7,0,0,5.6,13.6 +2021-11-17T12:00,35.6,34,9.8,0,0,4.8,13.9 +2021-11-17T13:00,36.7,31,9,0,0,4,13 +2021-11-17T14:00,37.7,29,8.1,0,0,2.9,11.6 +2021-11-17T15:00,37.8,27,7.1,0,0,4.1,10.1 +2021-11-17T16:00,36.9,28,7.1,0,0,4.3,10.1 +2021-11-17T17:00,31,43,11.3,0,0,4.2,8.1 +2021-11-17T18:00,31.6,43,11.5,0,0,1.8,5.4 +2021-11-17T19:00,30.7,45,11.9,0,0,0.4,2.5 +2021-11-17T20:00,29.5,50,13.3,0,0,1,2 +2021-11-17T21:00,26.6,56,12.8,0,0,4.3,4.7 +2021-11-17T22:00,24.4,62,13,0,0,5.4,6.5 +2021-11-17T23:00,23.2,69,14.5,0,0,5.4,6.7 +2021-11-18T00:00,22.7,76,16.2,0,0,4.7,6.5 +2021-11-18T01:00,22,81,17.1,0,0,3.9,6 +2021-11-18T02:00,21.5,83,17,0,0,3.5,5.4 +2021-11-18T03:00,21.2,82,16.7,0,0,3.4,5.4 +2021-11-18T04:00,20.8,82,16.2,0,0,3.4,5.4 +2021-11-18T05:00,19.5,82,14.8,0,0,4.3,5.1 +2021-11-18T06:00,19.1,77,13.2,0,0,4.7,6 +2021-11-18T07:00,18.9,70,10.9,0,0,4.8,6.3 +2021-11-18T08:00,24.7,48,8,0,0,4.1,7.6 +2021-11-18T09:00,30.7,31,3.6,0,0,2.6,8.1 +2021-11-18T10:00,37.2,19,-1.3,0,0,1.4,8.3 +2021-11-18T11:00,42.9,13,-4.7,0,0,2.5,8.7 +2021-11-18T12:00,46.8,11,-5.4,0,0,1.9,9.2 +2021-11-18T13:00,48.7,11,-3.8,0,0,3.4,9.4 +2021-11-18T14:00,49.4,12,-1.1,0,0,3.8,9.6 +2021-11-18T15:00,47,19,6.9,0,0,2.7,8.9 +2021-11-18T16:00,37.5,32,10.2,0,0,6.7,7.8 +2021-11-18T17:00,46.6,15,1.2,0,0,2,8.7 +2021-11-18T18:00,42.4,20,4.1,0,0,3.1,3.6 +2021-11-18T19:00,37.5,29,8.2,0,0,2.7,4 +2021-11-18T20:00,35.8,33,9.2,0,0,2.7,3.6 +2021-11-18T21:00,36.3,30,8.1,0,0,0.7,3.6 +2021-11-18T22:00,30.3,37,7.3,0,0,3.7,4 +2021-11-18T23:00,28.2,38,5.9,0,0,4,5.6 +2021-11-19T00:00,28.5,36,4.7,0,0,5.4,6.3 +2021-11-19T01:00,29.1,31,2,0,0,5.2,7.4 +2021-11-19T02:00,31.5,25,-0.3,0,0,4.5,6.7 +2021-11-19T03:00,30.1,28,0.9,0,0,5.4,6.7 +2021-11-19T04:00,28.9,31,1.9,0,0,2.8,6.3 +2021-11-19T05:00,37.3,21,0.7,0,0,0.5,5.1 +2021-11-19T06:00,30.7,29,2.4,0,0,5.1,6.5 +2021-11-19T07:00,32.9,29,3.8,0,0,4.3,6.7 +2021-11-19T08:00,37.3,28,7.1,0,0,4.3,6.5 +2021-11-19T09:00,42.7,24,8.2,0,0,9,13.9 +2021-11-19T10:00,50.1,19,10,0,0,4.3,14.1 +2021-11-19T11:00,55.5,17,10.7,0,0,4.7,9.8 +2021-11-19T12:00,57.7,16,11.4,0,0,4.9,13 +2021-11-19T13:00,60.5,14,10.8,0,0,3.3,11.4 +2021-11-19T14:00,61.6,14,12.6,0,0,2.1,9.4 +2021-11-19T15:00,61.5,15,13.6,0,0,1.1,7.6 +2021-11-19T16:00,60.3,16,14.1,0,0,2.5,4 +2021-11-19T17:00,54.8,28,22.6,0,0,16.8,8.9 +2021-11-19T18:00,53.6,29,21.9,0,0,13.5,28 +2021-11-19T19:00,47.6,37,22.6,0,0,4.5,21.3 +2021-11-19T20:00,43.1,45,22.9,0,0,4.8,7.2 +2021-11-19T21:00,42.7,36,17.9,0,0,7.3,14.1 +2021-11-19T22:00,39.9,39,17.1,0,0,6.5,11.4 +2021-11-19T23:00,37.9,45,18.3,0,0,5.5,8.3 +2021-11-20T00:00,35.9,54,20.7,0,0,3.7,7.2 +2021-11-20T01:00,36.8,52,20.9,0,0,3.2,5.8 +2021-11-20T02:00,32.6,62,21,0,0,3.8,6 +2021-11-20T03:00,33.2,59,20.6,0,0,5.1,8.3 +2021-11-20T04:00,31.4,64,20.8,0,0,4.2,8.3 +2021-11-20T05:00,31.9,64,20.9,0,0,3.1,6.3 +2021-11-20T06:00,29.4,71,21.3,0,0,4.3,6.5 +2021-11-20T07:00,28.8,74,21.4,0,0,6.4,7.6 +2021-11-20T08:00,35.2,57,21.5,0,0,4.6,7.6 +2021-11-20T09:00,41.9,45,22,0,0,2.1,7.2 +2021-11-20T10:00,49.1,33,21.3,0,0,4.4,10.1 +2021-11-20T11:00,52.8,30,22.3,0,0,6.5,13.4 +2021-11-20T12:00,53.8,30,22.8,0,0,8.4,15.9 +2021-11-20T13:00,53.4,31,23.6,0,0,11.4,20.6 +2021-11-20T14:00,51.9,36,26,0,0,9.8,21 +2021-11-20T15:00,51.1,38,26.2,0,0,7.7,17.9 +2021-11-20T16:00,48.3,46,28.2,0.004,0,7.3,13.6 +2021-11-20T17:00,43.8,63,32,0,0,6.2,11.6 +2021-11-20T18:00,39.1,85,34.9,0.024,0.028,3.6,9.8 +2021-11-20T19:00,39.3,86,35.4,0.016,0.055,1.1,5.4 +2021-11-20T20:00,37.2,97,36.3,0.016,0.248,4.3,4.9 +2021-11-20T21:00,36.2,95,35.1,0,0,2.6,7.4 +2021-11-20T22:00,34.9,95,33.6,0,0,3.3,5.4 +2021-11-20T23:00,32.6,96,31.6,0,0,4.2,6.5 +2021-11-21T00:00,31.8,93,29.9,0,0,5,8.3 +2021-11-21T01:00,29.3,88,26.1,0,0,5.3,8.3 +2021-11-21T02:00,28.3,79,22.6,0,0,6.5,8.9 +2021-11-21T03:00,31,68,21.6,0,0,6.5,10.1 +2021-11-21T04:00,31.2,66,21,0,0,6.7,10.5 +2021-11-21T05:00,32.2,65,21.8,0,0,6.3,10.7 +2021-11-21T06:00,29.8,69,20.8,0,0,6.9,9.6 +2021-11-21T07:00,35,53,19.6,0,0,4,10.3 +2021-11-21T08:00,33.4,58,20.1,0,0,2.9,4.7 +2021-11-21T09:00,36.9,67,26.8,0,0,6,11 +2021-11-21T10:00,41.5,46,22.1,0,0,9.1,16.6 +2021-11-21T11:00,46.1,31,17.2,0,0,9.2,17.4 +2021-11-21T12:00,50.5,23,14.2,0,0,7.9,17.4 +2021-11-21T13:00,53.4,16,8.6,0,0,5.9,15.9 +2021-11-21T14:00,55,13,5.6,0,0,4.3,13 +2021-11-21T15:00,55.2,13,5,0,0,2.2,10.1 +2021-11-21T16:00,48.9,24,13.6,0,0,5.1,5.6 +2021-11-21T17:00,43.3,25,9.9,0,0,6.3,6 +2021-11-21T18:00,43.8,24,9.1,0,0,4.7,7.6 +2021-11-21T19:00,44.3,21,6.9,0,0,2,5.8 +2021-11-21T20:00,41.7,23,6.4,0,0,2.5,3.1 +2021-11-21T21:00,32.7,36,8.5,0,0,4.3,6.5 +2021-11-21T22:00,30.2,41,9.2,0,0,4.7,7.2 +2021-11-21T23:00,30.1,37,7,0,0,6.7,9.6 +2021-11-22T00:00,30.1,33,4.3,0,0,6.8,11.4 +2021-11-22T01:00,30,32,3.6,0,0,5.1,10.7 +2021-11-22T02:00,30.9,32,4.3,0,0,6.7,10.3 +2021-11-22T03:00,30.9,32,4.4,0,0,6.5,11.2 +2021-11-22T04:00,30.7,32,4.5,0,0,6,10.1 +2021-11-22T05:00,29.5,38,7.2,0,0,5,11 +2021-11-22T06:00,29.4,39,7.6,0,0,4.7,7.6 +2021-11-22T07:00,30.6,38,8.2,0,0,5.2,8.3 +2021-11-22T08:00,35.4,32,8.5,0,0,6.6,9.6 +2021-11-22T09:00,43,23,8,0,0,7.6,12.5 +2021-11-22T10:00,51.8,17,8.7,0,0,7.3,13.2 +2021-11-22T11:00,59.7,13,8.1,0,0,4.4,12.5 +2021-11-22T12:00,62.8,11,8,0,0,3.7,10.3 +2021-11-22T13:00,65.1,11,8.8,0,0,3.4,9.8 +2021-11-22T14:00,66.4,11,9.2,0,0,3.7,9.2 +2021-11-22T15:00,65.9,11,10,0,0,4.5,8.5 +2021-11-22T16:00,58.2,19,15.5,0,0,6.3,7.4 +2021-11-22T17:00,54.4,19,12.4,0,0,5,8.7 +2021-11-22T18:00,51.5,22,13.8,0,0,8.2,13 +2021-11-22T19:00,45.4,29,15.2,0,0,5.3,13 +2021-11-22T20:00,42.4,37,18.1,0,0,4.6,7.8 +2021-11-22T21:00,39.6,39,16.3,0,0,5.2,7.4 +2021-11-22T22:00,37.1,40,15.3,0,0,5.3,7.2 +2021-11-22T23:00,36,40,13.7,0,0,6,7.4 +2021-11-23T00:00,34.1,41,13,0,0,7.1,8.5 +2021-11-23T01:00,33.5,41,12.6,0,0,6.5,8.5 +2021-11-23T02:00,31.8,44,12.6,0,0,6.5,7.6 +2021-11-23T03:00,30.4,47,12.5,0,0,6.2,7.6 +2021-11-23T04:00,30.7,47,12.6,0,0,6,7.4 +2021-11-23T05:00,31,43,11.2,0,0,5.7,7.2 +2021-11-23T06:00,30.1,44,10.6,0,0,5.4,6.7 +2021-11-23T07:00,29.2,45,10.5,0,0,5.3,6.7 +2021-11-23T08:00,34.9,39,12.6,0,0,2.3,6.3 +2021-11-23T09:00,43.5,29,13.1,0,0,3,6.3 +2021-11-23T10:00,52.2,21,13,0,0,3.7,8.7 +2021-11-23T11:00,60.2,13,8.4,0,0,7.7,15.9 +2021-11-23T12:00,64.9,9,4.2,0,0,0.2,14.3 +2021-11-23T13:00,67.4,8,5.2,0,0,4.2,10.1 +2021-11-23T14:00,67.1,10,9.5,0,0,1.4,10.1 +2021-11-23T15:00,64.9,14,14.5,0,0,3.5,5.6 +2021-11-23T16:00,60.2,18,15.9,0,0,5.9,9.2 +2021-11-23T17:00,56.2,19,14.1,0,0,5.5,8.9 +2021-11-23T18:00,56.3,20,15.4,0,0,10.1,16.6 +2021-11-23T19:00,54.9,23,17.5,0,0,7.2,16.1 +2021-11-23T20:00,51.9,28,19.5,0,0,5.4,11.6 +2021-11-23T21:00,46.6,36,20.9,0,0,5.4,8.5 +2021-11-23T22:00,45.1,39,21.8,0,0,5.8,8.3 +2021-11-23T23:00,41.2,48,22.8,0,0,6.5,8.9 +2021-11-24T00:00,39.3,52,23.3,0,0,4.2,8.1 +2021-11-24T01:00,37.9,55,23.3,0,0,3.6,5.4 +2021-11-24T02:00,36.9,58,23.4,0,0,2.2,4.7 +2021-11-24T03:00,31.9,72,23.8,0,0,2.6,2.9 +2021-11-24T04:00,31.2,75,24.2,0,0,5,6.9 +2021-11-24T05:00,36,59,22.9,0,0,6.7,7.8 +2021-11-24T06:00,36.1,51,19.7,0,0,5.9,11.9 +2021-11-24T07:00,35.2,51,18.7,0,0,4,6.7 +2021-11-24T08:00,37.2,47,18.7,0,0.028,1.6,4.7 +2021-11-24T09:00,37.9,41,16.4,0,0,1.4,5.4 +2021-11-24T10:00,39.6,40,17.1,0,0,4.1,8.5 +2021-11-24T11:00,39.4,43,18.8,0,0,7.5,13.6 +2021-11-24T12:00,39,45,19.4,0,0,6.3,15.7 +2021-11-24T13:00,41.5,38,17.7,0,0,3.4,12.3 +2021-11-24T14:00,43.3,33,16.3,0,0,2.2,11 +2021-11-24T15:00,43.3,25,9.5,0,0,9.3,13.9 +2021-11-24T16:00,39.1,44,19.2,0,0,11.4,24.4 +2021-11-24T17:00,35.5,64,24.7,0,0,6.9,18.1 +2021-11-24T18:00,33.7,54,19,0,0.083,10.5,17 +2021-11-24T19:00,31.8,58,18.6,0,0.028,6.6,17 +2021-11-24T20:00,29.6,64,18.8,0,0,2.5,11.2 +2021-11-24T21:00,27.6,69,18.9,0,0,2.7,4.5 +2021-11-24T22:00,25.2,77,19,0,0,4.7,6 +2021-11-24T23:00,24.9,78,18.9,0,0,4.6,6.7 +2021-11-25T00:00,24.9,77,18.6,0,0,5.1,8.7 +2021-11-25T01:00,22.6,83,18.3,0,0,6.1,8.1 +2021-11-25T02:00,22.8,83,18.4,0,0,3.8,7.4 +2021-11-25T03:00,22.5,80,17.2,0,0,4,5.8 +2021-11-25T04:00,23.5,69,14.6,0,0,4.2,7.4 +2021-11-25T05:00,24.3,49,7.8,0,0,6,7.4 +2021-11-25T06:00,24.3,44,5.6,0,0,5.9,7.4 +2021-11-25T07:00,23.7,43,4.6,0,0,4.9,7.8 +2021-11-25T08:00,29.4,33,3.7,0,0,5.9,9.2 +2021-11-25T09:00,36.7,23,2.6,0,0,6.3,11.4 +2021-11-25T10:00,44.7,14,-1,0,0,6.6,13.2 +2021-11-25T11:00,50.6,10,-4.4,0,0,6.4,13.2 +2021-11-25T12:00,54.4,9,-3.3,0,0,5.2,13.2 +2021-11-25T13:00,56,10,-0.9,0,0,9.4,16.1 +2021-11-25T14:00,54.8,11,1.9,0,0,12.8,21.7 +2021-11-25T15:00,53,13,2.9,0,0,12.8,21.7 +2021-11-25T16:00,49.3,15,3.6,0,0,13.5,21.7 +2021-11-25T17:00,46.9,17,4.4,0,0,19.7,26.8 +2021-11-25T18:00,46.4,18,5.3,0,0,20.9,33.3 +2021-11-25T19:00,46.1,19,6.1,0,0,20.6,33.6 +2021-11-25T20:00,46.1,20,6.7,0,0,18.6,32.9 +2021-11-25T21:00,46,20,7,0,0,17.2,29.8 +2021-11-25T22:00,45.8,20,7.3,0,0,15.7,28 +2021-11-25T23:00,44.9,22,7.8,0,0,12.4,25.1 +2021-11-26T00:00,44.5,22,8.2,0,0,9.8,20.1 +2021-11-26T01:00,43.3,24,9.2,0,0,7.1,15.9 +2021-11-26T02:00,40.6,29,10.9,0,0,5.9,11.2 +2021-11-26T03:00,38.6,34,12.5,0,0,5.4,8.7 +2021-11-26T04:00,36.3,39,13.7,0,0,4.9,8.1 +2021-11-26T05:00,34.6,44,15.1,0,0,7.4,7.4 +2021-11-26T06:00,34.8,43,14.6,0,0,9.1,10.7 +2021-11-26T07:00,36.4,41,15,0,0,7.2,10.7 +2021-11-26T08:00,39.8,42,18.7,0,0,5.6,8.3 +2021-11-26T09:00,49.7,28,17.8,0,0,2.9,6.7 +2021-11-26T10:00,56.5,22,18.2,0,0,4.1,9.8 +2021-11-26T11:00,61.5,18,17.8,0,0,0.5,9.6 +2021-11-26T12:00,65.3,14,15.6,0,0,7.3,14.3 +2021-11-26T13:00,66.4,14,15.6,0,0,7.1,15.9 +2021-11-26T14:00,66.5,14,16.4,0,0,6.6,14.3 +2021-11-26T15:00,65.1,16,17.7,0,0,6.8,12.8 +2021-11-26T16:00,60.3,21,19.9,0,0,7.1,11.9 +2021-11-26T17:00,54.2,27,20.8,0,0,6.5,17.4 +2021-11-26T18:00,54.7,26,20.1,0,0,7.7,12.3 +2021-11-26T19:00,53.2,25,17.9,0,0,7.8,14.8 +2021-11-26T20:00,49.1,28,17.7,0,0,7.9,12.5 +2021-11-26T21:00,46.3,32,18.1,0,0,4.4,9.8 +2021-11-26T22:00,45.7,35,19.9,0,0,5.2,8.7 +2021-11-26T23:00,43.2,40,20.5,0,0,7.7,11.9 +2021-11-27T00:00,38,49,20.8,0,0,5.1,11.9 +2021-11-27T01:00,37.2,51,20.6,0,0,4.5,6.9 +2021-11-27T02:00,35.9,52,20.1,0,0,6,7.6 +2021-11-27T03:00,35.6,52,19.8,0,0,4.7,7.6 +2021-11-27T04:00,32.6,58,19.7,0,0,6.9,7.8 +2021-11-27T05:00,36,54,20.8,0,0,3.1,8.3 +2021-11-27T06:00,30.8,66,20.7,0,0,5,6.5 +2021-11-27T07:00,29.8,68,20.5,0,0,4.6,6.5 +2021-11-27T08:00,35.7,53,20.4,0,0,4.1,6.3 +2021-11-27T09:00,43.4,38,19.3,0,0,6,10.5 +2021-11-27T10:00,47.6,26,14.3,0,0,5.7,12.3 +2021-11-27T11:00,50,25,15.9,0,0,5,12.3 +2021-11-27T12:00,51.8,26,17.9,0,0,5.5,12.8 +2021-11-27T13:00,52.9,26,18.9,0,0,6.5,13.9 +2021-11-27T14:00,53.2,26,19,0,0,7,14.3 +2021-11-27T15:00,52.3,27,19,0,0,6.8,13.9 +2021-11-27T16:00,49.8,30,19.6,0,0,4,12.1 +2021-11-27T17:00,43.8,40,20.9,0,0,6.3,6 +2021-11-27T18:00,43.8,40,20.8,0,0,4.6,7.4 +2021-11-27T19:00,43.1,41,21.2,0,0,4.1,7.6 +2021-11-27T20:00,43.1,42,21.3,0,0,0.2,4.7 +2021-11-27T21:00,43,42,21.4,0,0,1.8,2.2 +2021-11-27T22:00,40.8,46,21.7,0,0,1.3,2.7 +2021-11-27T23:00,35.2,58,21.9,0,0,2.8,3.4 +2021-11-28T00:00,31.3,68,22,0,0,1.4,4 +2021-11-28T01:00,29.7,74,22.5,0,0,4.2,5.6 +2021-11-28T02:00,32.7,66,22.5,0,0,2.3,4.9 +2021-11-28T03:00,27.6,80,22.1,0,0,4.2,4.5 +2021-11-28T04:00,26.6,81,21.5,0,0,3.3,5.6 +2021-11-28T05:00,28.1,73,20.8,0,0,5.4,7.2 +2021-11-28T06:00,28.7,68,19.5,0,0,8.7,13.2 +2021-11-28T07:00,29.7,65,19.4,0,0,6.2,13.4 +2021-11-28T08:00,33.4,58,20,0,0,8.3,11.9 +2021-11-28T09:00,41.1,44,20.8,0,0,7.5,13.2 +2021-11-28T10:00,49.7,33,21.7,0,0,6.2,12.8 +2021-11-28T11:00,56.2,26,21.7,0,0,6.3,12.1 +2021-11-28T12:00,60.9,22,21.7,0,0,8.1,15 +2021-11-28T13:00,64.9,20,22.6,0,0,3.5,15 +2021-11-28T14:00,66.3,20,24.2,0,0,2.2,8.9 +2021-11-28T15:00,65.6,22,25.7,0,0,4.2,8.3 +2021-11-28T16:00,58.5,30,26.9,0,0,5.3,7.4 +2021-11-28T17:00,53.4,35,26.2,0,0,7.7,9.8 +2021-11-28T18:00,55.9,31,26,0,0,12.2,18.6 +2021-11-28T19:00,56,31,26,0,0,17,27.1 +2021-11-28T20:00,56.5,30,25.3,0,0,17.9,28.9 +2021-11-28T21:00,56.6,29,24.9,0,0,15,28.9 +2021-11-28T22:00,55.6,30,24.6,0,0,10.2,24.4 +2021-11-28T23:00,47.5,41,24.8,0,0,9.4,16.8 +2021-11-29T00:00,44.1,46,24.4,0,0,6,11.2 +2021-11-29T01:00,42.5,48,24.2,0,0,5.1,7.8 +2021-11-29T02:00,40.8,51,24.1,0,0,5.9,7.8 +2021-11-29T03:00,40.4,51,23.8,0,0,5.2,7.6 +2021-11-29T04:00,41.5,49,23.8,0,0,5.7,8.9 +2021-11-29T05:00,39.7,52,23.5,0,0,8,10.3 +2021-11-29T06:00,36.5,61,24.2,0,0,7.3,12.3 +2021-11-29T07:00,35.5,64,24.5,0,0,7.3,8.9 +2021-11-29T08:00,42,51,25.1,0,0,5,8.7 +2021-11-29T09:00,52.3,36,26,0,0,6.1,10.1 +2021-11-29T10:00,61.8,26,26.8,0,0,5.7,11 +2021-11-29T11:00,68,20,25.9,0,0,3.5,11.4 +2021-11-29T12:00,70.3,19,26.3,0,0,3.4,8.9 +2021-11-29T13:00,71.2,18,25.2,0,0,5.6,11.9 +2021-11-29T14:00,70.6,17,23.7,0,0,7.5,13.6 +2021-11-29T15:00,69.2,18,23.5,0,0,7.3,13.9 +2021-11-29T16:00,63.1,23,24.8,0,0,4.8,12.1 +2021-11-29T17:00,55.4,32,26.3,0,0,8.1,10.3 +2021-11-29T18:00,59.3,27,25.3,0,0,2.3,9.2 +2021-11-29T19:00,48.7,44,28,0,0,3.8,5.4 +2021-11-29T20:00,45,54,29.3,0,0,3.8,5.1 +2021-11-29T21:00,43.3,56,28.6,0,0,5,6.9 +2021-11-29T22:00,40.6,62,28.6,0,0,5.8,7.2 +2021-11-29T23:00,41.4,59,28,0,0,4.9,7.6 +2021-11-30T00:00,41,58,27.1,0,0,5.4,8.5 +2021-11-30T01:00,39.7,59,26.7,0,0,6.7,9.4 +2021-11-30T02:00,42,53,26.2,0,0,4,8.1 +2021-11-30T03:00,36.9,64,25.7,0,0,5.1,8.1 +2021-11-30T04:00,36.7,62,25.1,0,0,6.7,11.2 +2021-11-30T05:00,36,57,22.4,0,0,7.1,17.4 +2021-11-30T06:00,34.9,59,21.8,0,0,6.4,9.4 +2021-11-30T07:00,31.9,65,21.6,0,0,7.6,8.3 +2021-11-30T08:00,36.6,60,24.1,0,0,3.8,9.6 +2021-11-30T09:00,40.8,56,26.3,0,0,2.1,5.8 +2021-11-30T10:00,43.5,55,28.4,0,0,3.7,9.8 +2021-11-30T11:00,46.8,48,27.9,0,0,4.5,11.2 +2021-11-30T12:00,51.1,36,24.8,0,0,6,13.6 +2021-11-30T13:00,54.6,26,20.4,0,0,6.7,14.3 +2021-11-30T14:00,58,20,16.6,0,0,7.2,14.5 +2021-11-30T15:00,60.4,15,12.1,0,0,6.1,13.6 +2021-11-30T16:00,54.1,21,14.6,0,0,6.3,10.1 +2021-11-30T17:00,52.3,19,11.5,0,0,4.9,7.8 +2021-11-30T18:00,45.1,26,11.8,0,0,7.1,8.9 +2021-11-30T19:00,48.2,22,10.7,0,0,3.4,8.5 +2021-11-30T20:00,46.1,22,9.5,0,0,6.7,10.5 +2021-11-30T21:00,44,28,12.7,0,0,5.5,10.3 +2021-11-30T22:00,41.6,40,19.2,0,0,4.7,8.1 +2021-11-30T23:00,40.4,39,17.3,0,0,1.7,7.4 +2021-12-01T00:00,37.8,37,14,0,0,2.2,3.6 +2021-12-01T01:00,37,37,13.1,0,0,4.3,6.5 +2021-12-01T02:00,37.4,33,10.7,0,0,8.1,11.6 +2021-12-01T03:00,36,34,10.1,0,0,10.6,16.3 +2021-12-01T04:00,35.6,35,10.4,0,0,9.8,17 +2021-12-01T05:00,36.3,39,13.6,0,0,7.6,15 +2021-12-01T06:00,37,39,14.5,0,0,6,12.3 +2021-12-01T07:00,37.9,41,16.4,0,0,5.3,10.5 +2021-12-01T08:00,41.5,39,18.4,0,0,6.1,9.8 +2021-12-01T09:00,48.8,32,20.1,0,0,9.4,14.8 +2021-12-01T10:00,57.6,26,22.6,0,0,8.6,15 +2021-12-01T11:00,63.4,22,24.1,0,0,7.7,15.2 +2021-12-01T12:00,67.4,20,25.1,0,0,2.9,14.3 +2021-12-01T13:00,70.8,18,24.7,0,0,7.3,13.9 +2021-12-01T14:00,71.2,17,24,0,0,10.8,18.6 +2021-12-01T15:00,68.5,20,25.8,0,0,12.8,21.5 +2021-12-01T16:00,64.2,23,25.6,0,0,12.8,21.9 +2021-12-01T17:00,60.3,25,24.5,0,0,13.5,20.8 +2021-12-01T18:00,59.8,26,24.4,0,0,17,27.5 +2021-12-01T19:00,58.7,26,23.8,0,0,15.7,27.5 +2021-12-01T20:00,58.1,26,23.1,0,0,15.2,25.3 +2021-12-01T21:00,57.5,26,22.8,0,0,12.3,24.6 +2021-12-01T22:00,53.5,30,22.8,0,0,6.1,20.4 +2021-12-01T23:00,50.6,33,22.8,0,0,4.8,11.2 +2021-12-02T00:00,44.6,42,22.9,0,0,6.1,7.8 +2021-12-02T01:00,42.7,44,22.6,0,0,7.9,8.9 +2021-12-02T02:00,41.8,44,21.7,0,0,8.1,9.4 +2021-12-02T03:00,40.9,45,21,0,0,6.9,9.6 +2021-12-02T04:00,41.6,43,20.8,0,0,5.4,8.7 +2021-12-02T05:00,40.8,43,19.9,0,0,5.6,8.5 +2021-12-02T06:00,39.6,44,19.3,0,0,5.2,8.5 +2021-12-02T07:00,36.2,49,19,0,0,7.6,8.9 +2021-12-02T08:00,42,43,21.1,0,0,4,8.9 +2021-12-02T09:00,48.9,30,18.8,0,0,3.7,6.9 +2021-12-02T10:00,56.3,23,19,0,0,4.9,10.3 +2021-12-02T11:00,64,17,18.1,0,0,4.9,11.2 +2021-12-02T12:00,68.5,14,17,0,0,2.7,11 +2021-12-02T13:00,65.8,17,20.3,0,0,11.4,20.4 +2021-12-02T14:00,65.8,17,20.1,0,0,7.7,21 +2021-12-02T15:00,66.1,19,22.1,0,0,6,14.5 +2021-12-02T16:00,58.5,31,27.7,0,0,5.1,10.3 +2021-12-02T17:00,60.4,23,22.2,0,0,1.1,6.7 +2021-12-02T18:00,59.9,23,22.5,0,0,1.5,2.2 +2021-12-02T19:00,50.3,33,22.4,0,0,6.2,7.2 +2021-12-02T20:00,48.2,35,21.9,0,0,6.2,8.9 +2021-12-02T21:00,48.2,35,21.5,0,0,6,8.9 +2021-12-02T22:00,48.7,34,21.3,0,0,6.7,9.6 +2021-12-02T23:00,49.5,32,21,0,0,6.9,10.5 +2021-12-03T00:00,44.2,39,20.6,0,0,9.1,10.5 +2021-12-03T01:00,42.3,41,20.1,0,0,6.9,10.7 +2021-12-03T02:00,41.5,42,19.9,0,0,6.4,8.3 +2021-12-03T03:00,41.3,42,19.8,0,0,6.1,7.6 +2021-12-03T04:00,40.8,42,19.4,0,0,5.6,7.4 +2021-12-03T05:00,35.9,51,19.4,0,0,7.7,6.5 +2021-12-03T06:00,36.1,53,20.8,0,0,6.8,11.4 +2021-12-03T07:00,32,69,22.9,0,0,7.7,11 +2021-12-03T08:00,35.6,63,24.1,0,0,3.7,8.9 +2021-12-03T09:00,40.9,49,23,0,0,4.5,8.9 +2021-12-03T10:00,46.5,39,22.7,0,0,4.4,10.3 +2021-12-03T11:00,50.9,37,25.4,0,0,4.4,11 +2021-12-03T12:00,54.6,36,28,0,0,4.7,11.6 +2021-12-03T13:00,57.7,31,27.1,0,0,4.6,11.6 +2021-12-03T14:00,60,27,25.5,0,0,3.5,11.2 +2021-12-03T15:00,60.6,26,25.3,0,0,4,8.9 +2021-12-03T16:00,56.3,34,28.2,0,0,9.2,14.5 +2021-12-03T17:00,51.1,44,29.9,0,0,11.8,15.2 +2021-12-03T18:00,48,51,30.7,0,0,12.4,19.9 +2021-12-03T19:00,45.8,57,31.3,0,0,9.4,19.7 +2021-12-03T20:00,43.3,62,31.3,0,0,4.8,15 +2021-12-03T21:00,41.2,67,31.2,0,0,4.6,7.6 +2021-12-03T22:00,38.9,72,30.7,0,0,3.1,5.6 +2021-12-03T23:00,36.9,79,30.8,0,0,5,6.3 +2021-12-04T00:00,37.9,74,30.3,0,0,2.9,6 +2021-12-04T01:00,36.8,77,30.1,0,0,1.8,3.4 +2021-12-04T02:00,36.3,78,30.1,0,0,1.3,2.2 +2021-12-04T03:00,31.8,85,27.8,0,0,2.6,3.1 +2021-12-04T04:00,29.8,84,25.6,0,0,3.4,3.8 +2021-12-04T05:00,27.5,85,23.5,0,0,5.1,5.8 +2021-12-04T06:00,27.6,81,22.6,0,0,5.1,6.7 +2021-12-04T07:00,27.6,80,22.3,0,0,5.9,7.2 +2021-12-04T08:00,33.2,64,22.2,0,0,3.4,7.4 +2021-12-04T09:00,41.3,46,22.3,0,0,5.1,9.6 +2021-12-04T10:00,50.5,34,23,0,0,6.3,11.4 +2021-12-04T11:00,58.3,23,20.5,0,0,4.4,11.9 +2021-12-04T12:00,61.3,20,19.5,0,0,3.7,9.8 +2021-12-04T13:00,62.8,19,20.1,0,0,4.5,10.3 +2021-12-04T14:00,63.7,19,20.5,0,0,5.1,10.7 +2021-12-04T15:00,63.7,19,21.2,0,0,4.1,10.3 +2021-12-04T16:00,56.6,28,23.5,0,0,4.5,6.9 +2021-12-04T17:00,58.6,21,18.3,0,0,2.3,6 +2021-12-04T18:00,56,22,17.4,0,0,1.6,3.1 +2021-12-04T19:00,44.2,33,17,0,0,3.7,4.9 +2021-12-04T20:00,41.4,36,16.6,0,0,2.6,4.9 +2021-12-04T21:00,38.1,43,17.5,0,0,1.6,4.5 +2021-12-04T22:00,37.3,45,17.7,0,0,4.1,5.4 +2021-12-04T23:00,36.9,47,18.7,0,0,5.1,6.5 +2021-12-05T00:00,37.3,48,19.2,0,0,5.9,7.8 +2021-12-05T01:00,39.3,43,18.7,0,0,4.6,7.2 +2021-12-05T02:00,39.1,42,17.9,0,0,3.7,5.6 +2021-12-05T03:00,40.2,38,16.8,0,0,6.3,9.2 +2021-12-05T04:00,45,29,14.5,0,0,11.1,17.4 +2021-12-05T05:00,49.4,22,12.3,0,0,11.8,18.6 +2021-12-05T06:00,49.6,21,10.9,0,0,12.6,19.7 +2021-12-05T07:00,48.2,23,12.3,0,0,12.2,20.6 +2021-12-05T08:00,49.1,22,12.3,0,0,11.5,19.7 +2021-12-05T09:00,52.7,20,12.9,0,0,10.3,18.3 +2021-12-05T10:00,57.7,17,12.7,0,0,12.2,19.2 +2021-12-05T11:00,61.9,12,9.4,0,0,9.4,21.9 +2021-12-05T12:00,63.2,11,8.1,0,0,2.5,17.4 +2021-12-05T13:00,63.9,11,7.8,0,0,12.1,20.8 +2021-12-05T14:00,63.8,10,5.4,0,0,9.9,21 +2021-12-05T15:00,61.5,13,9.8,0,0,11,19.9 +2021-12-05T16:00,44,31,15.4,0,0,28.5,42.3 +2021-12-05T17:00,29.9,56,16.3,0,0,9.8,43.6 +2021-12-05T18:00,27.4,47,9.7,0,0,11.4,19.7 +2021-12-05T19:00,25.6,43,6.2,0,0,10.9,20.1 +2021-12-05T20:00,25.1,44,6.4,0,0,7.4,18.8 +2021-12-05T21:00,25.3,44,6.5,0,0,4.2,13 +2021-12-05T22:00,25.9,46,8.1,0,0,6.3,10.5 +2021-12-05T23:00,25,43,5.7,0,0,7.6,12.5 +2021-12-06T00:00,23,43,4,0,0,8.6,14.1 +2021-12-06T01:00,21.4,46,3.9,0,0,6.3,13.6 +2021-12-06T02:00,20.6,48,3.7,0,0,4.2,9.8 +2021-12-06T03:00,19.4,51,4.3,0,0,3.8,6.5 +2021-12-06T04:00,19.1,54,5,0,0,4.2,5.6 +2021-12-06T05:00,18.4,51,3.5,0,0,2.5,5.1 +2021-12-06T06:00,17.8,52,3.2,0,0,2.6,4.3 +2021-12-06T07:00,17.7,53,3.6,0,0,3.5,5.4 +2021-12-06T08:00,18.7,50,3.3,0,0,5.3,10.1 +2021-12-06T09:00,21.2,49,5.1,0,0,4,10.1 +2021-12-06T10:00,23.6,45,5.5,0,0,3.5,10.5 +2021-12-06T11:00,27.4,37,4.4,0,0,4.8,12.3 +2021-12-06T12:00,31.3,30,3.4,0,0,3.5,12.3 +2021-12-06T13:00,33.4,27,2.8,0,0,2.7,10.7 +2021-12-06T14:00,34.9,26,3.2,0,0,2.2,9.2 +2021-12-06T15:00,35.4,25,3.4,0,0,0.7,7.6 +2021-12-06T16:00,32.2,33,6.5,0,0,3,4 +2021-12-06T17:00,27.1,37,3.9,0,0,3.8,3.4 +2021-12-06T18:00,28.1,36,4.7,0,0,3.4,8.3 +2021-12-06T19:00,25.7,40,4.9,0,0,4.6,8.9 +2021-12-06T20:00,26.1,40,5.1,0,0,3.2,7.6 +2021-12-06T21:00,25.2,45,6.8,0,0,3.6,5.6 +2021-12-06T22:00,27.1,40,6.1,0,0,3.5,5.4 +2021-12-06T23:00,28,44,8.7,0,0,5.2,8.5 +2021-12-07T00:00,29,47,11.2,0,0,6.7,9.6 +2021-12-07T01:00,30.8,52,15.3,0,0,7.6,12.3 +2021-12-07T02:00,32.4,55,17.8,0,0,6.3,12.1 +2021-12-07T03:00,30.4,61,18.5,0,0,4.1,9.6 +2021-12-07T04:00,30,63,19,0,0,4.2,6.5 +2021-12-07T05:00,35.6,51,19.3,0,0,3.8,7.6 +2021-12-07T06:00,31.6,60,19.5,0,0,4.5,7.2 +2021-12-07T07:00,31.5,55,17.1,0,0,8.8,15.4 +2021-12-07T08:00,31.6,49,14.5,0,0,5.9,14.1 +2021-12-07T09:00,33.6,43,13.6,0,0,6,12.8 +2021-12-07T10:00,37.3,39,14.8,0,0,4.5,11 +2021-12-07T11:00,40.6,36,15.8,0,0,1.9,10.7 +2021-12-07T12:00,44.3,32,16.5,0,0,6,13.4 +2021-12-07T13:00,47.6,29,17,0,0,4.6,13.4 +2021-12-07T14:00,49.6,27,16.6,0,0,3.9,11.2 +2021-12-07T15:00,50.5,25,16.3,0,0,3.4,9.8 +2021-12-07T16:00,45.9,36,20.6,0,0,4.7,7.6 +2021-12-07T17:00,43.2,33,15.9,0,0,8.4,6.7 +2021-12-07T18:00,48.8,26,15.4,0,0,5.8,10.1 +2021-12-07T19:00,37.1,40,15.1,0,0,5.2,7.4 +2021-12-07T20:00,35.2,44,15.6,0,0,6.1,9.2 +2021-12-07T21:00,31.4,52,15.9,0,0,4.9,8.9 +2021-12-07T22:00,31.6,53,16.5,0,0,6,7.8 +2021-12-07T23:00,31.7,54,17.2,0,0,5.5,8.1 +2021-12-08T00:00,30.9,56,16.9,0,0,5.6,8.3 +2021-12-08T01:00,32,52,16.5,0,0,6.5,10.1 +2021-12-08T02:00,32.7,50,15.9,0,0,5.8,10.1 +2021-12-08T03:00,31.6,50,14.9,0,0,6.6,8.9 +2021-12-08T04:00,32.6,47,14.8,0,0,5.4,8.7 +2021-12-08T05:00,31.3,49,14.5,0,0,5,9.2 +2021-12-08T06:00,30.9,49,14.2,0,0,6.2,10.5 +2021-12-08T07:00,29.4,52,13.8,0,0,6.2,9.8 +2021-12-08T08:00,31,47,13.3,0,0,4.6,10.3 +2021-12-08T09:00,37,37,13,0,0,4.6,8.9 +2021-12-08T10:00,43.3,28,12.7,0,0,6.2,12.1 +2021-12-08T11:00,47.4,24,12.1,0,0,3,12.3 +2021-12-08T12:00,51.2,19,10,0,0,1.3,7.8 +2021-12-08T13:00,51.7,17,8.7,0,0,3,6.3 +2021-12-08T14:00,46.9,30,17.1,0,0,4.3,6.5 +2021-12-08T15:00,46.9,27,14.8,0,0,4.1,5.4 +2021-12-08T16:00,47.3,23,11.4,0,0,3.6,4.9 +2021-12-08T17:00,46.2,24,11.6,0,0,5.7,4.3 +2021-12-08T18:00,47.6,33,20,0,0,13.1,19.9 +2021-12-08T19:00,46.6,38,22.6,0,0,12.4,24.4 +2021-12-08T20:00,44.8,43,23.5,0,0,6.1,20.4 +2021-12-08T21:00,45,43,23.6,0,0,2.8,9.6 +2021-12-08T22:00,39,52,22.7,0,0,5.4,7.4 +2021-12-08T23:00,41.7,45,21.8,0,0,1.3,6.3 +2021-12-09T00:00,41.1,46,21.9,0,0,4.5,5.6 +2021-12-09T01:00,33.4,63,22.1,0,0,4.9,7.4 +2021-12-09T02:00,33.5,61,21.6,0,0,5.1,7.4 +2021-12-09T03:00,31.3,65,20.8,0,0,4.2,7.8 +2021-12-09T04:00,30.3,67,20.7,0,0,5.1,7.4 +2021-12-09T05:00,31.4,63,20.1,0,0,5.2,9.4 +2021-12-09T06:00,30.3,64,19.6,0,0,6.5,8.9 +2021-12-09T07:00,30.7,62,19.3,0,0,6.2,7.8 +2021-12-09T08:00,33.4,58,20.1,0,0,3.8,7.2 +2021-12-09T09:00,40.1,45,20.6,0,0,2.2,7.8 +2021-12-09T10:00,46.3,36,21,0,0,3.5,7.8 +2021-12-09T11:00,50.1,33,21.7,0,0,7.8,14.8 +2021-12-09T12:00,52.4,29,21.2,0,0,9.3,17.7 +2021-12-09T13:00,51,29,20.1,0,0,10.4,17.7 +2021-12-09T14:00,52.1,28,20.3,0,0,10.5,17.2 +2021-12-09T15:00,48.7,34,21.7,0,0,13,22.6 +2021-12-09T16:00,46.1,40,23.1,0,0,10.8,22.6 +2021-12-09T17:00,41.5,51,24.6,0,0,4.8,17.9 +2021-12-09T18:00,39.9,56,25.4,0,0,4.6,8.3 +2021-12-09T19:00,38.8,58,25.4,0,0,5.9,9.6 +2021-12-09T20:00,36.4,65,25.6,0,0,4.9,9.8 +2021-12-09T21:00,34.2,72,26,0,0,5.1,6.9 +2021-12-09T22:00,35.2,68,25.6,0,0,3.8,6.7 +2021-12-09T23:00,33.5,70,24.6,0,0,4.1,8.1 +2021-12-10T00:00,33,70,24.4,0,0,2.9,6.3 +2021-12-10T01:00,31.7,74,24.4,0,0,3.8,4.9 +2021-12-10T02:00,29.3,81,24.2,0,0,4,6.5 +2021-12-10T03:00,27.8,84,23.6,0,0,4.1,6.3 +2021-12-10T04:00,29.4,85,25.3,0,0,13,19.9 +2021-12-10T05:00,29.3,81,24.3,0,0.028,6.6,20.8 +2021-12-10T06:00,29.5,83,24.9,0,0.083,6.7,11.9 +2021-12-10T07:00,29.4,85,25.3,0,0.138,5.6,11 +2021-12-10T08:00,29.5,85,25.5,0,0.138,6.1,10.5 +2021-12-10T09:00,29.5,81,24.4,0,0.11,5,10.7 +2021-12-10T10:00,30,75,23,0,0.028,6.5,11.6 +2021-12-10T11:00,31.6,64,20.8,0,0,8.8,17 +2021-12-10T12:00,33.6,61,21.5,0,0,9.5,17.9 +2021-12-10T13:00,36.1,39,13.8,0,0.028,11.9,21.3 +2021-12-10T14:00,35.2,23,0.6,0,0,16.5,29.1 +2021-12-10T15:00,32.9,20,-4.2,0,0,17.3,29.8 +2021-12-10T16:00,29.7,24,-2.7,0,0,18.9,31.8 +2021-12-10T17:00,26.9,28,-1.7,0,0,15.8,32.9 +2021-12-10T18:00,26,30,-1,0,0,15.8,27.5 +2021-12-10T19:00,25.3,32,-0.6,0,0,13,26.2 +2021-12-10T20:00,25.1,33,-0.1,0,0,10.5,21.7 +2021-12-10T21:00,24.1,35,0.1,0,0,5,17.4 +2021-12-10T22:00,23.6,35,0.1,0,0,4.1,8.1 +2021-12-10T23:00,25.8,31,-0.8,0,0,2.1,4.9 +2021-12-11T00:00,20.1,41,0.2,0,0,4.1,5.1 +2021-12-11T01:00,21,36,-1.7,0,0,7.6,10.7 +2021-12-11T02:00,19,38,-2.6,0,0,4.2,11.2 +2021-12-11T03:00,18.2,36,-4.2,0,0,5.5,7.2 +2021-12-11T04:00,19,33,-5.6,0,0,4.2,7.2 +2021-12-11T05:00,18.9,34,-4.8,0,0,5.6,10.3 +2021-12-11T06:00,18.3,35,-4.5,0,0,6.1,7.4 +2021-12-11T07:00,19.6,34,-4.3,0,0,5,7.6 +2021-12-11T08:00,22.6,30,-4,0,0,3,6.9 +2021-12-11T09:00,27.4,24,-4.9,0,0,4,8.9 +2021-12-11T10:00,34,16,-7.1,0,0,5.4,11 +2021-12-11T11:00,37.7,12,-10.5,0,0,6.6,13.6 +2021-12-11T12:00,40.7,10,-10.9,0,0,5.2,14.1 +2021-12-11T13:00,44.2,10,-9.3,0,0,5.2,11.9 +2021-12-11T14:00,46.4,10,-7.5,0,0,4,11.6 +2021-12-11T15:00,43.2,12,-5.8,0,0,4,8.5 +2021-12-11T16:00,36.5,16,-5.7,0,0,5.9,7.2 +2021-12-11T17:00,36.1,25,3.5,0,0,2.2,6.9 +2021-12-11T18:00,31,30,3.3,0,0,5.3,7.6 +2021-12-11T19:00,31.6,31,4.4,0,0,5.1,7.6 +2021-12-11T20:00,31,33,5.5,0,0,4.9,10.1 +2021-12-11T21:00,28.4,40,7.2,0,0,4.9,7.6 +2021-12-11T22:00,28.9,41,8,0,0,3.7,6.3 +2021-12-11T23:00,31.9,36,8.2,0,0,2.9,5.1 +2021-12-12T00:00,34.8,33,8.4,0,0,1.7,4 +2021-12-12T01:00,36.1,31,8.7,0,0,2.6,3.1 +2021-12-12T02:00,37,31,9.1,0,0,2.6,3.8 +2021-12-12T03:00,32.7,38,9.7,0,0,3.6,3.6 +2021-12-12T04:00,32.9,38,10,0,0,5.5,8.9 +2021-12-12T05:00,29.7,51,13.6,0,0,5.6,9.4 +2021-12-12T06:00,28,57,14.6,0,0,4.8,8.9 +2021-12-12T07:00,29.6,53,14.6,0,0,4.5,6.5 +2021-12-12T08:00,33,47,14.7,0,0,3.5,6.3 +2021-12-12T09:00,40.9,33,14.1,0,0,4.5,6.9 +2021-12-12T10:00,48.7,24,13.3,0,0,4.1,8.3 +2021-12-12T11:00,54.4,14,6.8,0,0,6.7,12.5 +2021-12-12T12:00,57.3,12,5,0,0,2.6,12.3 +2021-12-12T13:00,58.6,11,4,0,0,2,7.8 +2021-12-12T14:00,58.8,11,4.1,0,0,5.5,11 +2021-12-12T15:00,58,12,5.5,0,0,5.6,11.6 +2021-12-12T16:00,55.6,14,6.9,0,0,3.9,8.7 +2021-12-12T17:00,54,16,8.4,0,0,6,4.7 +2021-12-12T18:00,44.4,23,8.6,0,0,5.9,6.9 +2021-12-12T19:00,39.6,29,10.1,0,0,6,8.7 +2021-12-12T20:00,35.2,38,11.8,0,0,5.6,8.7 +2021-12-12T21:00,33.2,41,12.1,0,0,5,7.8 +2021-12-12T22:00,31.1,44,11.7,0,0,4.8,7.4 +2021-12-12T23:00,29.9,43,10.3,0,0,4.1,6.5 +2021-12-13T00:00,28.7,45,9.9,0,0,4.6,5.8 +2021-12-13T01:00,29.5,44,10.3,0,0,3.8,5.6 +2021-12-13T02:00,31.1,43,11.1,0,0,4.7,5.6 +2021-12-13T03:00,33.5,40,12,0,0,4.6,6 +2021-12-13T04:00,35.2,38,11.9,0,0,3.3,5.6 +2021-12-13T05:00,27.7,50,11.4,0,0,4.6,3.8 +2021-12-13T06:00,27.6,50,11.2,0,0,3.9,5.6 +2021-12-13T07:00,24.9,55,11,0,0,5,6.7 +2021-12-13T08:00,27.6,49,11.1,0,0,2.6,6.3 +2021-12-13T09:00,33.8,38,11.1,0,0,4,8.3 +2021-12-13T10:00,40.7,27,9.7,0,0,1.6,8.3 +2021-12-13T11:00,46.4,22,9.2,0,0,4.6,10.3 +2021-12-13T12:00,48.7,19,8.5,0,0,6.5,13.4 +2021-12-13T13:00,50,18,8.1,0,0,7,14.1 +2021-12-13T14:00,51.3,17,8.2,0,0,5.6,13.9 +2021-12-13T15:00,51.5,19,10,0,0,5,11.6 +2021-12-13T16:00,48.8,23,12.4,0,0,3.8,8.9 +2021-12-13T17:00,39,31,10.9,0,0,7.3,4.7 +2021-12-13T18:00,45.4,24,10.4,0,0,2.6,8.7 +2021-12-13T19:00,39.2,31,10.9,0,0,4.8,5.4 +2021-12-13T20:00,33.8,38,10.8,0,0,5.5,7.6 +2021-12-13T21:00,30.3,44,11.1,0,0,3.8,7.2 +2021-12-13T22:00,28.7,48,11.2,0,0,3.9,6.5 +2021-12-13T23:00,27.8,48,10.8,0,0,4.5,6 +2021-12-14T00:00,27.8,46,9.9,0,0,5.3,6.5 +2021-12-14T01:00,29.3,41,8.7,0,0,4.2,6.5 +2021-12-14T02:00,29.5,41,8.7,0,0,4.4,6.3 +2021-12-14T03:00,29.8,40,8.7,0,0,4.5,6.3 +2021-12-14T04:00,29.6,41,8.9,0,0,4.7,6.5 +2021-12-14T05:00,30.2,40,8.7,0,0,5,6.7 +2021-12-14T06:00,29.7,42,9.2,0,0,5.9,7.2 +2021-12-14T07:00,29.3,46,10.9,0,0,5.6,7.6 +2021-12-14T08:00,33.4,42,12.6,0,0,4.4,7.4 +2021-12-14T09:00,41.9,31,13.5,0,0,5.9,8.7 +2021-12-14T10:00,49,23,13,0,0,8.2,12.8 +2021-12-14T11:00,55.2,19,13.1,0,0,7.4,12.1 +2021-12-14T12:00,60.1,16,14,0,0,8.7,15.9 +2021-12-14T13:00,62.7,15,14.7,0,0,8.5,15.2 +2021-12-14T14:00,63.3,16,15.7,0,0,8.3,15 +2021-12-14T15:00,61.8,19,18.6,0,0,6.6,14.5 +2021-12-14T16:00,55.6,25,20.8,0,0,6.3,10.5 +2021-12-14T17:00,46.6,24,12,0,0,6.8,11.6 +2021-12-14T18:00,45.1,27,13,0,0,5.1,10.7 +2021-12-14T19:00,47.8,23,12,0,0,2.6,6 +2021-12-14T20:00,40.2,38,16.3,0,0,7.3,9.8 +2021-12-14T21:00,44.7,40,22,0,0,14.1,21.7 +2021-12-14T22:00,44.7,41,22.5,0,0,15.6,25.5 +2021-12-14T23:00,42.4,43,21.5,0,0,13.5,25.1 +2021-12-15T00:00,42.9,42,21.5,0,0,11.1,21.9 +2021-12-15T01:00,44,46,24.6,0,0,10.3,18.1 +2021-12-15T02:00,45.6,47,26.4,0,0,15.1,24.4 +2021-12-15T03:00,44.5,50,27,0,0,13.5,24.8 +2021-12-15T04:00,42.4,55,27.3,0,0,9.3,21.9 +2021-12-15T05:00,39.6,55,24.7,0,0,8.1,15.4 +2021-12-15T06:00,37.8,59,24.9,0,0,7.4,13.2 +2021-12-15T07:00,38.9,59,25.6,0,0,7.9,13.2 +2021-12-15T08:00,41.2,59,28,0.008,0,14.5,20.4 +2021-12-15T09:00,42.2,76,35.2,0.016,0,1.5,23.9 +2021-12-15T10:00,44.2,45,24.3,0,0,18.1,21 +2021-12-15T11:00,43.9,19,4.6,0,0,32.3,53.9 +2021-12-15T12:00,43.5,20,5.5,0,0,45.3,77.6 +2021-12-15T13:00,44.2,20,5.9,0,0,45.9,74.5 +2021-12-15T14:00,43.4,22,7.1,0,0,38.6,74 +2021-12-15T15:00,43.3,22,6.4,0,0,10.6,63.3 +2021-12-15T16:00,41.5,26,9.3,0,0,5.8,21.7 +2021-12-15T17:00,38.5,23,4.2,0,0,6.4,10.1 +2021-12-15T18:00,35.8,28,6.2,0,0,7.3,8.9 +2021-12-15T19:00,36.1,28,6.2,0,0,7.3,15.9 +2021-12-15T20:00,30.2,35,5.6,0,0,5.5,11.4 +2021-12-15T21:00,29.7,37,6.4,0,0,6.5,9.2 +2021-12-15T22:00,26.8,42,6.5,0,0,7.2,13.4 +2021-12-15T23:00,28.4,39,6.5,0,0,3.8,10.5 +2021-12-16T00:00,24.5,47,7.1,0,0,3.6,6.3 +2021-12-16T01:00,22.9,51,7.4,0,0,3.2,6 +2021-12-16T02:00,25.3,46,7.3,0,0,2.1,6 +2021-12-16T03:00,22.7,51,7.3,0,0,4.1,6.5 +2021-12-16T04:00,24.4,43,5.1,0,0,9,13.4 +2021-12-16T05:00,22,48,5.4,0,0,5.4,13.6 +2021-12-16T06:00,24,43,4.9,0,0,5.5,7.2 +2021-12-16T07:00,27.6,36,4.3,0,0,4.3,6.5 +2021-12-16T08:00,27.9,35,3.7,0,0,4,5.1 +2021-12-16T09:00,34.7,25,2.8,0,0,4.3,8.1 +2021-12-16T10:00,40,20,1.8,0,0,4,9.6 +2021-12-16T11:00,44.6,16,1.2,0,0,2.7,9.4 +2021-12-16T12:00,47.6,15,2.1,0,0,2.2,8.5 +2021-12-16T13:00,49.3,14,2.3,0,0,4.3,10.3 +2021-12-16T14:00,49.6,14,2.7,0,0,7.1,13.2 +2021-12-16T15:00,48,15,3.1,0,0,9.8,16.8 +2021-12-16T16:00,42.1,21,4.6,0,0,8.8,16.1 +2021-12-16T17:00,34.9,34,9.3,0,0,5.7,14.3 +2021-12-16T18:00,33.9,35,9.1,0,0,6.2,10.5 +2021-12-16T19:00,31.7,39,9.4,0,0,6,9.8 +2021-12-16T20:00,30.7,39,9,0,0,3.4,7.2 +2021-12-16T21:00,26,48,8.8,0,0,3.5,5.1 +2021-12-16T22:00,27.1,46,9.1,0,0,1.3,4.5 +2021-12-16T23:00,27.7,46,9.4,0,0,1.5,2 +2021-12-17T00:00,25,51,9.5,0,0,3.4,4 +2021-12-17T01:00,23,55,9.1,0,0,3.9,5.1 +2021-12-17T02:00,22.3,55,8.6,0,0,4.7,6 +2021-12-17T03:00,22.6,53,7.8,0,0,5.4,7.2 +2021-12-17T04:00,22.6,50,6.9,0,0,4.7,6.9 +2021-12-17T05:00,24.6,46,6.8,0,0,3.2,6.5 +2021-12-17T06:00,25.5,45,7.1,0,0,2.3,4 +2021-12-17T07:00,25,47,7.5,0,0,2.7,3.6 +2021-12-17T08:00,24.9,47,7.3,0,0,0.3,3.4 +2021-12-17T09:00,28.8,40,7.3,0,0,1.6,5.1 +2021-12-17T10:00,35,33,8.8,0,0,2.8,8.7 +2021-12-17T11:00,39.2,25,6.7,0,0,4.8,11.4 +2021-12-17T12:00,40.6,24,6.8,0,0,0.9,11.9 +2021-12-17T13:00,40.6,24,6.6,0,0,5.6,11.9 +2021-12-17T14:00,41,22,5.4,0,0,6,12.8 +2021-12-17T15:00,39.1,22,3.7,0,0,14.3,22.8 +2021-12-17T16:00,35.2,30,6.5,0,0,15,25.1 +2021-12-17T17:00,32.4,34,7.3,0,0,8.7,24.6 +2021-12-17T18:00,30.2,37,7.2,0,0,8.5,14.3 +2021-12-17T19:00,28.2,38,5.6,0,0,6.6,14.1 +2021-12-17T20:00,24.3,44,5.3,0,0,5.6,10.7 +2021-12-17T21:00,23.4,47,5.9,0,0,6.5,8.7 +2021-12-17T22:00,25.5,43,6,0,0,6,9.2 +2021-12-17T23:00,23,52,8.1,0,0,7.4,11.4 +2021-12-18T00:00,20,69,11.4,0,0,3.9,12.1 +2021-12-18T01:00,20.1,69,11.7,0,0,1.2,5.8 +2021-12-18T02:00,19.9,70,11.7,0,0,1.9,2.5 +2021-12-18T03:00,18,75,11.4,0,0,4.7,5.1 +2021-12-18T04:00,18.6,72,11.1,0,0,3.9,6 +2021-12-18T05:00,17.4,79,12.1,0,0,4.7,6 +2021-12-18T06:00,15.6,82,11.2,0,0,4.2,7.2 +2021-12-18T07:00,15.2,75,8.8,0,0,4.6,5.6 +2021-12-18T08:00,18.4,52,3.6,0,0,4.4,5.6 +2021-12-18T09:00,24.7,30,-2.6,0,0,5,9.6 +2021-12-18T10:00,31.6,17,-8,0,0,5.9,12.1 +2021-12-18T11:00,36.6,12,-10.6,0,0,4.4,12.1 +2021-12-18T12:00,39.9,10,-11.5,0,0,4,10.7 +2021-12-18T13:00,41.8,10,-11.9,0,0,5,11.2 +2021-12-18T14:00,42.7,9,-13,0,0,4.8,11 +2021-12-18T15:00,41.4,9,-12.4,0,0,3.5,9.6 +2021-12-18T16:00,33.4,15,-9.8,0,0,5.8,6.9 +2021-12-18T17:00,34.1,17,-6.8,0,0,4.7,6.7 +2021-12-18T18:00,34.8,17,-5.7,0,0,1.4,5.8 +2021-12-18T19:00,28.2,22,-6,0,0,3.7,4 +2021-12-18T20:00,25.2,22,-8.2,0,0,4,6.5 +2021-12-18T21:00,23.3,25,-7.7,0,0,5.8,8.7 +2021-12-18T22:00,24.4,26,-6,0,0,5.2,9.2 +2021-12-18T23:00,26.4,24,-5.3,0,0,5,8.1 +2021-12-19T00:00,27,24,-4.9,0,0,4.8,8.1 +2021-12-19T01:00,26.6,25,-4.2,0,0,7.2,8.5 +2021-12-19T02:00,27.1,26,-3,0,0,7.6,9.2 +2021-12-19T03:00,27.6,28,-1.7,0,0,6.9,9.2 +2021-12-19T04:00,26.9,30,-0.4,0,0,7.2,8.7 +2021-12-19T05:00,27.4,32,1.3,0,0,5.5,8.5 +2021-12-19T06:00,27,33,1.7,0,0,6.3,10.3 +2021-12-19T07:00,26.5,35,2.2,0,0,6,10.5 +2021-12-19T08:00,27.5,34,3,0,0,4.3,9.6 +2021-12-19T09:00,33.4,27,3.4,0,0,2.7,6.3 +2021-12-19T10:00,42.4,20,4.1,0,0,4.9,10.3 +2021-12-19T11:00,47.4,16,4,0,0,4.1,10.1 +2021-12-19T12:00,53.8,12,2.7,0,0,8.1,15.7 +2021-12-19T13:00,57.3,10,0.8,0,0,4,14.8 +2021-12-19T14:00,56.9,10,0.1,0,0,1.1,8.7 +2021-12-19T15:00,51.1,12,0.9,0,0,4,5.8 +2021-12-19T16:00,45.6,16,1.5,0,0,6.3,8.9 +2021-12-19T17:00,38.2,24,4.7,0,0,7.7,8.1 +2021-12-19T18:00,38.7,25,5.7,0,0,1.1,11.9 +2021-12-19T19:00,29,35,5,0,0,7.9,9.2 +2021-12-19T20:00,28.6,35,4.5,0,0,5.1,9.4 +2021-12-19T21:00,27.1,39,5.2,0,0,3.7,6.7 +2021-12-19T22:00,25.1,43,5.8,0,0,6.2,7.4 +2021-12-19T23:00,26.7,39,5.1,0,0,7.4,9.6 +2021-12-20T00:00,26.2,40,4.9,0,0,6.7,8.9 +2021-12-20T01:00,25.4,41,4.8,0,0,5.6,8.1 +2021-12-20T02:00,25.3,40,4.4,0,0,5.9,7.2 +2021-12-20T03:00,24.1,42,4.3,0,0,6.2,7.2 +2021-12-20T04:00,24.5,42,4.5,0,0,5.1,7.4 +2021-12-20T05:00,23.2,50,7.3,0,0,4,6 +2021-12-20T06:00,24.2,48,7.1,0,0,2.6,5.1 +2021-12-20T07:00,24.7,46,6.8,0,0,2.9,4.5 +2021-12-20T08:00,28.4,40,7,0,0,3.4,5.4 +2021-12-20T09:00,36.1,28,6.4,0,0,4.1,7.8 +2021-12-20T10:00,43.3,21,5.5,0,0,3.5,8.1 +2021-12-20T11:00,51,15,4.3,0,0,3.3,8.5 +2021-12-20T12:00,55.9,12,3.9,0,0,5.9,11 +2021-12-20T13:00,58.6,13,7.1,0,0,7.4,13.2 +2021-12-20T14:00,59.2,14,9.5,0,0,7.6,13.2 +2021-12-20T15:00,56.4,16,10.9,0,0,6.4,12.5 +2021-12-20T16:00,47.5,23,11.2,0,0,7.7,10.7 +2021-12-20T17:00,41.5,31,13.5,0,0,9.2,11.4 +2021-12-20T18:00,43.3,27,11.3,0,0,6,10.7 +2021-12-20T19:00,45.5,24,10.9,0,0,1.8,6.9 +2021-12-20T20:00,34.3,41,12.8,0,0,3.3,3.8 +2021-12-20T21:00,28,56,14.3,0,0,4.8,6 +2021-12-20T22:00,26,60,14,0,0,5.1,6.5 +2021-12-20T23:00,26.2,56,12.4,0,0,6.5,7.8 +2021-12-21T00:00,29.9,41,9.1,0,0,6.2,9.2 +2021-12-21T01:00,33.6,32,6.9,0,0,8.1,13.2 +2021-12-21T02:00,33.6,31,5.9,0,0,8,13 +2021-12-21T03:00,32,32,5.3,0,0,5.9,12.5 +2021-12-21T04:00,29.7,35,5.3,0,0,8.3,9.8 +2021-12-21T05:00,29.8,37,6.6,0,0,5.6,9.6 +2021-12-21T06:00,29.5,37,6.2,0,0,5,8.1 +2021-12-21T07:00,29.3,37,6.4,0,0,5.5,8.3 +2021-12-21T08:00,31.6,33,5.8,0,0,5.9,9.4 +2021-12-21T09:00,38,27,6.9,0,0,4.2,9.6 +2021-12-21T10:00,46.8,20,8.1,0,0,2.6,7.8 +2021-12-21T11:00,52.6,16,7.3,0,0,4.3,9.6 +2021-12-21T12:00,55.9,11,2.9,0,0,8.2,15 +2021-12-21T13:00,57.1,10,1.3,0,0,6.5,16.6 +2021-12-21T14:00,57.5,10,1.7,0,0,3.5,13 +2021-12-21T15:00,56.5,38,31,0,0,0.8,8.1 +2021-12-21T16:00,55.3,12,2.9,0,0,2.3,2.9 +2021-12-21T17:00,44.4,18,4,0,0,6.6,8.5 +2021-12-21T18:00,39.2,23,4.6,0,0,7.3,9.8 +2021-12-21T19:00,39.8,21,3.4,0,0,7.9,13.4 +2021-12-21T20:00,35.4,25,3.2,0,0,5.9,12.5 +2021-12-21T21:00,32.4,28,3.2,0,0,6.3,9.4 +2021-12-21T22:00,28.6,32,2.7,0,0,7.8,8.7 +2021-12-21T23:00,28.4,31,1.9,0,0,7.1,9.2 +2021-12-22T00:00,29,30,1.3,0,0,7.4,9.4 +2021-12-22T01:00,29.9,27,-0.4,0,0,6.6,9.8 +2021-12-22T02:00,30.8,24,-2.1,0,0,6.4,9.6 +2021-12-22T03:00,30.2,24,-2.4,0,0,6,9.8 +2021-12-22T04:00,28.7,25,-2.4,0,0,7.6,9.6 +2021-12-22T05:00,28.1,27,-1.7,0,0,5.1,9.8 +2021-12-22T06:00,26,30,-1.2,0,0,8.6,10.3 +2021-12-22T07:00,25.7,30,-1.6,0,0,7.2,10.1 +2021-12-22T08:00,29.6,26,-1.3,0,0,5.9,8.7 +2021-12-22T09:00,37.1,20,-0.7,0,0,7.3,11.4 +2021-12-22T10:00,45.8,16,2.7,0,0,6.7,11.4 +2021-12-22T11:00,52.5,13,3.7,0,0,7.7,13.2 +2021-12-22T12:00,57.2,11,2.4,0,0,6.6,13 +2021-12-22T13:00,59.7,7,-3.2,0,0,7.8,13 +2021-12-22T14:00,60.6,7,-3,0,0,9.1,14.8 +2021-12-22T15:00,59.1,8,-1.5,0,0,7.7,15.2 +2021-12-22T16:00,50,16,5.5,0,0,8.6,12.1 +2021-12-22T17:00,46,18,5.3,0,0,6.3,9.6 +2021-12-22T18:00,42.7,20,4.5,0,0,5.9,9.8 +2021-12-22T19:00,39.9,22,4.3,0,0,5.1,7.6 +2021-12-22T20:00,40.8,23,5.5,0,0,6.5,10.3 +2021-12-22T21:00,38.1,27,6.8,0,0,6.5,10.7 +2021-12-22T22:00,36.2,29,7.3,0,0,6.3,10.5 +2021-12-22T23:00,33.2,34,7.8,0,0,4.8,9.8 +2021-12-23T00:00,30.8,38,8.4,0,0,4,7.6 +2021-12-23T01:00,29.1,44,9.7,0,0,4,6.5 +2021-12-23T02:00,27.9,50,11.7,0,0,4.6,6.3 +2021-12-23T03:00,28.4,51,12.7,0,0,5.2,7.2 +2021-12-23T04:00,28.4,52,13.1,0,0,5.2,7.2 +2021-12-23T05:00,28.4,56,14.7,0,0,5.3,7.6 +2021-12-23T06:00,28.9,55,14.9,0,0,6.6,8.3 +2021-12-23T07:00,30.7,52,15.2,0,0,5.8,8.5 +2021-12-23T08:00,33.9,47,15.7,0,0,5.7,9.4 +2021-12-23T09:00,40.1,39,17,0,0,5.4,9.4 +2021-12-23T10:00,46.7,32,18.2,0,0,1.6,8.7 +2021-12-23T11:00,51.3,26,17.2,0,0,1.5,6.3 +2021-12-23T12:00,55.4,22,16.9,0,0,1.8,6.7 +2021-12-23T13:00,58.9,20,17.5,0,0,5.2,11 +2021-12-23T14:00,60.9,19,18.8,0,0,3,10.5 +2021-12-23T15:00,59.8,21,19.4,0,0,8.1,12.8 +2021-12-23T16:00,54,27,20.6,0,0,3.8,13.9 +2021-12-23T17:00,49,31,19.9,0,0,4.1,10.7 +2021-12-23T18:00,46.5,36,20.8,0,0,3.1,6.9 +2021-12-23T19:00,44.2,46,24.7,0,0,3.2,6 +2021-12-23T20:00,44.2,56,29.3,0,0,6.5,9.4 +2021-12-23T21:00,45.1,66,34.3,0.004,0,8.9,14.1 +2021-12-23T22:00,46.8,64,35.1,0,0,8.9,15 +2021-12-23T23:00,47.8,58,33.7,0,0,10.2,16.3 +2021-12-24T00:00,47.4,57,33,0,0,8.3,17 +2021-12-24T01:00,46.1,58,32.4,0,0,5.6,13.2 +2021-12-24T02:00,47.8,54,31.8,0.004,0,7.7,11.9 +2021-12-24T03:00,46.6,57,32.2,0.004,0,6.8,12.1 +2021-12-24T04:00,45.4,62,33.1,0,0,5.4,10.5 +2021-12-24T05:00,43.5,69,34.1,0,0,5.6,8.5 +2021-12-24T06:00,45.7,61,33.2,0,0,3.6,8.9 +2021-12-24T07:00,37.7,92,35.4,0,0,15.8,25.5 +2021-12-24T08:00,37.5,88,34.3,0.004,0,2.2,24.6 +2021-12-24T09:00,39.9,83,35.2,0.004,0,1.9,5.4 +2021-12-24T10:00,41,71,32.3,0.004,0,3.9,8.5 +2021-12-24T11:00,42.3,64,30.8,0.004,0,4,9.6 +2021-12-24T12:00,43.9,57,29.5,0,0,4.2,10.7 +2021-12-24T13:00,43.5,61,31.1,0,0,7.6,16.3 +2021-12-24T14:00,46.2,58,32.3,0.012,0,7.8,15.9 +2021-12-24T15:00,42.3,84,37.7,0.02,0,3.4,15.2 +2021-12-24T16:00,40.6,91,38.2,0.004,0,11.1,18.3 +2021-12-24T17:00,36.5,93,34.6,0,0,5.8,18.6 +2021-12-24T18:00,34.8,95,33.5,0,0,5.4,8.9 +2021-12-24T19:00,32.5,94,30.9,0,0,5.4,8.7 +2021-12-24T20:00,30.9,95,29.8,0,0,4.3,7.4 +2021-12-24T21:00,29.1,92,27.1,0,0,5.4,8.5 +2021-12-24T22:00,28.4,88,25.3,0,0,5.6,9.4 +2021-12-24T23:00,29.8,84,25.4,0,0,7,10.7 +2021-12-25T00:00,33.7,74,26.4,0,0,9.6,15.7 +2021-12-25T01:00,31.8,77,25.3,0,0,6,15.2 +2021-12-25T02:00,30.9,75,24.1,0,0,6,9.4 +2021-12-25T03:00,29.7,76,22.9,0,0,5.7,9.2 +2021-12-25T04:00,29.5,75,22.6,0,0,5.7,9.2 +2021-12-25T05:00,30.7,64,19.8,0,0,8.4,9.8 +2021-12-25T06:00,29.6,64,19,0,0,6.6,13.4 +2021-12-25T07:00,28.9,66,19.1,0,0,6.8,11 +2021-12-25T08:00,30,64,19.3,0,0,6.4,11 +2021-12-25T09:00,37.3,47,19,0,0,8.2,13.2 +2021-12-25T10:00,45,33,17.9,0,0,7.3,13.4 +2021-12-25T11:00,50.3,22,12.6,0,0,8.7,15.9 +2021-12-25T12:00,51.9,18,9.6,0,0,8.1,15.9 +2021-12-25T13:00,53,17,8.7,0,0,6,15.2 +2021-12-25T14:00,53.2,15,6.4,0,0,3.1,12.1 +2021-12-25T15:00,52.1,17,9,0,0,2,7.4 +2021-12-25T16:00,51.9,16,7.3,0,0,0.5,4 +2021-12-25T17:00,38,54,22.7,0,0,5.6,3.4 +2021-12-25T18:00,32.6,65,22.2,0,0,5.7,8.7 +2021-12-25T19:00,29.7,64,19,0,0,5.3,7.6 +2021-12-25T20:00,28.5,60,16.5,0,0,4.5,6.9 +2021-12-25T21:00,27.5,57,14.5,0,0,4.4,7.8 +2021-12-25T22:00,25.5,59,13.3,0,0,3.8,6.9 +2021-12-25T23:00,23.3,60,11.6,0,0,4,6 +2021-12-26T00:00,23.2,59,10.9,0,0,5.2,6.7 +2021-12-26T01:00,25,54,10.7,0,0,5.3,7.8 +2021-12-26T02:00,28.9,49,11.9,0,0,7.8,12.1 +2021-12-26T03:00,32.7,45,13.6,0,0,12.4,19.2 +2021-12-26T04:00,33.5,47,15.5,0,0,11.7,20.6 +2021-12-26T05:00,34.3,43,14.1,0,0,14.6,19 +2021-12-26T06:00,33.9,47,15.6,0,0,14.3,23.9 +2021-12-26T07:00,33.6,49,16.5,0,0,13,23 +2021-12-26T08:00,36.9,45,17.4,0,0,11.9,20.8 +2021-12-26T09:00,43.2,35,17.6,0,0,13,20.8 +2021-12-26T10:00,47.7,29,17,0,0,10.4,21 +2021-12-26T11:00,51.5,19,10.5,0,0,15.9,26.6 +2021-12-26T12:00,50.9,20,11.3,0,0,12.9,27.5 +2021-12-26T13:00,50.6,19,10.2,0,0,11.7,22.6 +2021-12-26T14:00,51,17,7.4,0,0,12.9,21.7 +2021-12-26T15:00,49.6,19,8.8,0,0,11.8,24.6 +2021-12-26T16:00,43.8,26,10.9,0,0,4.6,19.2 +2021-12-26T17:00,38.6,39,15.9,0,0,5,10.1 +2021-12-26T18:00,36.5,51,20.3,0,0,10.2,16.6 +2021-12-26T19:00,34.4,44,14.8,0,0,7.8,16.6 +2021-12-26T20:00,29.6,50,13.1,0,0,4.2,12.8 +2021-12-26T21:00,26.3,55,12.2,0,0,3.5,6.9 +2021-12-26T22:00,26.1,55,12.1,0,0,3.1,5.6 +2021-12-26T23:00,27.1,54,12.7,0,0,5.5,6.7 +2021-12-27T00:00,26.6,59,14.1,0,0,6.3,7.4 +2021-12-27T01:00,30.2,53,15,0,0,2.7,7.6 +2021-12-27T02:00,27.9,55,13.9,0,0,3,4.9 +2021-12-27T03:00,23.4,65,13.5,0,0,5.6,6.7 +2021-12-27T04:00,23.3,65,13.4,0,0,5,6.9 +2021-12-27T05:00,24,58,11.4,0,0,2.4,6.5 +2021-12-27T06:00,23.5,60,11.5,0,0,2.4,3.1 +2021-12-27T07:00,22.5,62,11.5,0,0,2.3,4.5 +2021-12-27T08:00,21.5,64,11.1,0,0,2.9,3.4 +2021-12-27T09:00,27.9,45,9.3,0,0,3.4,8.3 +2021-12-27T10:00,34.6,32,7.6,0,0,2.3,8.3 +2021-12-27T11:00,42.5,23,7.3,0,0,6.8,13.6 +2021-12-27T12:00,47.5,20,8.2,0,0,15.1,24.4 +2021-12-27T13:00,48,21,9.4,0,0,15.9,29.8 +2021-12-27T14:00,47.6,21,9.8,0,0,14.1,27.3 +2021-12-27T15:00,46.5,23,10.7,0,0,8.1,23.7 +2021-12-27T16:00,36.2,38,12.8,0,0,5.2,13.4 +2021-12-27T17:00,29.7,42,9.6,0,0,8.2,13.2 +2021-12-27T18:00,29.1,45,10.2,0,0,5.8,13 +2021-12-27T19:00,28.2,48,11,0,0,5.1,8.5 +2021-12-27T20:00,28.1,51,12.5,0,0,4.5,9.2 +2021-12-27T21:00,27.6,54,13.3,0,0,2.7,6.9 +2021-12-27T22:00,25.1,61,13.6,0,0,4.5,4.7 +2021-12-27T23:00,27.1,55,12.9,0,0,3.3,6.5 +2021-12-28T00:00,24.9,59,12.5,0,0,4.2,5.8 +2021-12-28T01:00,23.8,69,15.2,0,0,1.4,7.8 +2021-12-28T02:00,23,69,14.2,0,0,4.3,7.2 +2021-12-28T03:00,22.6,71,14.7,0,0,4.3,7.2 +2021-12-28T04:00,23.4,66,13.6,0,0,5.1,6 +2021-12-28T05:00,24.9,61,13.5,0,0,8.4,6.3 +2021-12-28T06:00,22.1,70,13.8,0,0,8,15.2 +2021-12-28T07:00,20.9,69,12.2,0,0,3.2,13 +2021-12-28T08:00,22.6,64,12.4,0,0,2.6,5.4 +2021-12-28T09:00,25.5,45,7.3,0,0,4.1,8.9 +2021-12-28T10:00,28.2,35,3.9,0,0,4.3,10.3 +2021-12-28T11:00,30.9,30,2.8,0,0,7.5,15.2 +2021-12-28T12:00,33.5,26,1.9,0,0,9.4,18.1 +2021-12-28T13:00,35.2,24,1.9,0,0,9.6,18.8 +2021-12-28T14:00,35.9,23,1.9,0,0,7.8,18.3 +2021-12-28T15:00,35.2,24,1.9,0,0,9.2,15.7 +2021-12-28T16:00,31.9,28,2.1,0,0,9.4,17 +2021-12-28T17:00,28.2,31,1.5,0,0,4,14.5 +2021-12-28T18:00,22.8,41,2.4,0,0,5.3,6 +2021-12-28T19:00,26.6,34,1.7,0,0,4,6 +2021-12-28T20:00,26.1,34,1.6,0,0,2.1,4.7 +2021-12-28T21:00,23.5,40,2.6,0,0,3,2.9 +2021-12-28T22:00,21.4,46,3.7,0,0,4.9,7.6 +2021-12-28T23:00,19.8,49,3.6,0,0,6.7,11.4 +2021-12-29T00:00,18.7,50,3.3,0,0,3.4,11.2 +2021-12-29T01:00,19.3,49,3.3,0,0,1.5,5.6 +2021-12-29T02:00,17.4,53,3.2,0,0,2.5,3.4 +2021-12-29T03:00,17.2,53,2.8,0,0,2.2,3.4 +2021-12-29T04:00,17.1,53,2.8,0,0,2.3,3.4 +2021-12-29T05:00,16,55,2.6,0,0,0.4,3.4 +2021-12-29T06:00,15.1,59,3.2,0,0,3.4,6 +2021-12-29T07:00,14.9,59,3.1,0,0,2.9,6.5 +2021-12-29T08:00,16.6,53,2.6,0,0,2.5,4.3 +2021-12-29T09:00,18.9,48,2.2,0,0,3.8,9.2 +2021-12-29T10:00,22.9,40,2.2,0,0,3.2,9.6 +2021-12-29T11:00,26.7,35,2.5,0,0,2.9,9.8 +2021-12-29T12:00,29.3,32,3.1,0,0,4.3,11.6 +2021-12-29T13:00,31.8,30,4.2,0,0,4.6,11.9 +2021-12-29T14:00,33.1,29,4.5,0,0,4,11.6 +2021-12-29T15:00,33.4,29,4.7,0,0,5.1,10.7 +2021-12-29T16:00,29.9,35,5.4,0,0,3.3,10.3 +2021-12-29T17:00,22.5,47,5.1,0,0,7.6,8.7 +2021-12-29T18:00,23.3,45,4.8,0,0,5.9,8.7 +2021-12-29T19:00,22.6,46,4.7,0,0,3.8,6.7 +2021-12-29T20:00,21.9,47,4.9,0,0,2.9,4.7 +2021-12-29T21:00,19.2,54,5.3,0,0,4.6,6 +2021-12-29T22:00,19.2,54,5.4,0,0,3.6,6 +2021-12-29T23:00,20.6,49,4.5,0,0,5.5,9.2 +2021-12-30T00:00,22.6,45,4.2,0,0,4.8,9.4 +2021-12-30T01:00,25.1,41,4.5,0,0,6.9,11.2 +2021-12-30T02:00,25.2,41,4.8,0,0,6.5,12.1 +2021-12-30T03:00,25.5,40,4.7,0,0,5.4,10.3 +2021-12-30T04:00,24.6,43,5.2,0,0,5.2,8.7 +2021-12-30T05:00,25.3,45,6.7,0,0,6.8,8.9 +2021-12-30T06:00,28,42,7.6,0,0,8.3,14.1 +2021-12-30T07:00,26.6,46,8.5,0,0,6.7,13.2 +2021-12-30T08:00,29.4,41,8.8,0,0,11.2,16.8 +2021-12-30T09:00,36.8,30,8.3,0,0,11.9,22.1 +2021-12-30T10:00,42.4,21,5.6,0,0,9.1,19.7 +2021-12-30T11:00,43.6,21,6.1,0,0,7.2,16.8 +2021-12-30T12:00,44.8,19,5.3,0,0,9.3,16.1 +2021-12-30T13:00,45.1,20,5.9,0,0,10.1,17.4 +2021-12-30T14:00,45.4,20,6.3,0,0,11.5,19 +2021-12-30T15:00,44.5,21,6.4,0,0,8.8,19 +2021-12-30T16:00,41.9,25,8.2,0,0,18.4,29.5 +2021-12-30T17:00,40,25,7,0,0,3.7,40.7 +2021-12-30T18:00,39.7,25,7.2,0,0,1.1,4.5 +2021-12-30T19:00,38.6,28,7.9,0,0,4.3,6.3 +2021-12-30T20:00,33,37,9.8,0,0,5.7,8.7 +2021-12-30T21:00,32.5,40,10.9,0,0,6.7,11.9 +2021-12-30T22:00,32.3,42,11.6,0,0,8.2,12.8 +2021-12-30T23:00,32,41,11.1,0,0,8.2,15.7 +2021-12-31T00:00,27.6,48,10.3,0,0,6.2,12.8 +2021-12-31T01:00,25.8,51,10.3,0,0,5.2,8.5 +2021-12-31T02:00,25.4,55,11.4,0,0,5.8,8.1 +2021-12-31T03:00,28.1,54,13.7,0,0,5.5,8.5 +2021-12-31T04:00,31.4,51,15.4,0,0,7.6,11.9 +2021-12-31T05:00,30.7,57,17.1,0,0,6,14.5 +2021-12-31T06:00,31.5,57,17.9,0,0,4.2,10.7 +2021-12-31T07:00,26.3,54,11.9,0,0,14.4,22.8 +2021-12-31T08:00,26.4,50,10.4,0,0,4.9,22.6 +2021-12-31T09:00,29.4,49,12.4,0,0,0.5,9.2 +2021-12-31T10:00,31.1,48,13.6,0,0.055,3.8,9.2 +2021-12-31T11:00,33.4,44,13.6,0,0,4,10.3 +2021-12-31T12:00,34.2,41,13,0,0,3.8,10.5 +2021-12-31T13:00,35,40,12.8,0,0,5,11.2 +2021-12-31T14:00,34.7,42,14.1,0,0,6.4,12.8 +2021-12-31T15:00,32.7,53,17.4,0,0,8.8,15.9 +2021-12-31T16:00,29.1,66,19.2,0,0.028,11.3,19 +2021-12-31T17:00,26.3,84,22.2,0,0.055,10.2,19 +2021-12-31T18:00,24.4,85,20.4,0,0.22,14.5,23.3 +2021-12-31T19:00,21.4,82,16.7,0,0.386,10.6,23.9 +2021-12-31T20:00,20.3,79,14.9,0,0.386,8.2,17.9 +2021-12-31T21:00,18.3,80,13.2,0,0.358,7.5,14.3 +2021-12-31T22:00,16.9,83,12.7,0,0.22,5.2,13.2 +2021-12-31T23:00,16.1,84,12.2,0,0.083,5.5,9.4 +2022-01-01T00:00,15.8,83,11.7,0,0.055,7.7,12.8 +2022-01-01T01:00,15,83,10.9,0,0.083,7,13 +2022-01-01T02:00,13.8,84,9.9,0,0.083,6.8,11.9 +2022-01-01T03:00,12.8,84,9,0,0.083,6.9,11.9 +2022-01-01T04:00,11.9,83,7.9,0,0.055,6.6,11.9 +2022-01-01T05:00,8.5,76,2.5,0,0.028,6.5,11.2 +2022-01-01T06:00,8.1,75,1.7,0,0,6.2,11.6 +2022-01-01T07:00,7,79,1.8,0,0.055,6.5,13.6 +2022-01-01T08:00,6.9,78,1.4,0,0.11,5.2,11 +2022-01-01T09:00,7,78,1.5,0,0.11,3.6,8.7 +2022-01-01T10:00,7.2,77,1.5,0,0.083,4.7,8.9 +2022-01-01T11:00,7.8,74,1.2,0,0.055,2.3,8.7 +2022-01-01T12:00,8.5,73,1.6,0,0.028,2.3,6 +2022-01-01T13:00,9.3,72,2,0,0,2.7,6.5 +2022-01-01T14:00,10.5,69,2.3,0,0,1.9,6.3 +2022-01-01T15:00,9.9,75,3.4,0,0,2.3,4.9 +2022-01-01T16:00,11.8,64,1.9,0,0,2.7,5.1 +2022-01-01T17:00,9.8,69,1.5,0,0,0.3,4.3 +2022-01-01T18:00,8.7,71,1.2,0,0,5,5.8 +2022-01-01T19:00,-3.8,86,-6.9,0,0,8.1,10.7 +2022-01-01T20:00,-6.6,86,-9.8,0,0,8.6,11 +2022-01-01T21:00,-3.6,64,-12.7,0,0,8.5,11.6 +2022-01-01T22:00,2.1,47,-13.6,0,0,10.7,12.5 +2022-01-01T23:00,-2.6,53,-15.5,0,0,13.3,16.6 +2022-01-02T00:00,2.5,47,-13.1,0,0,12.2,16.6 +2022-01-02T01:00,6.8,43,-11.2,0,0,11.4,14.8 +2022-01-02T02:00,8.4,42,-10.2,0,0,10.4,13.6 +2022-01-02T03:00,7.1,44,-10.1,0,0,11.3,13.4 +2022-01-02T04:00,11.8,40,-7.7,0,0,11,14.1 +2022-01-02T05:00,11.2,51,-3.5,0,0,11.7,13.2 +2022-01-02T06:00,17.1,43,-1.7,0,0,10.4,13.9 +2022-01-02T07:00,22.3,39,1.3,0,0,6.7,12.5 +2022-01-02T08:00,22.1,41,1.8,0,0,4.6,7.8 +2022-01-02T09:00,25.1,37,2.6,0,0,4.9,6.3 +2022-01-02T10:00,30.4,33,4.6,0,0,5.4,7.8 +2022-01-02T11:00,33.4,36,9.2,0,0,5,7.6 +2022-01-02T12:00,35.5,43,15.1,0,0,4.5,7.4 +2022-01-02T13:00,40.5,33,13.6,0,0,3.6,6.9 +2022-01-02T14:00,43.8,26,10.9,0,0,3.2,5.8 +2022-01-02T15:00,43.3,28,12.1,0,0,3.3,4.9 +2022-01-02T16:00,36.3,40,14.3,0,0,6.1,6.7 +2022-01-02T17:00,33.1,50,16.5,0,0,5.1,8.5 +2022-01-02T18:00,25.5,67,16,0,0,5.4,6.5 +2022-01-02T19:00,17.7,82,13.2,0,0,5.1,6.5 +2022-01-02T20:00,14.8,78,9.2,0,0,6.3,8.3 +2022-01-02T21:00,15,74,8.2,0,0,5.7,8.1 +2022-01-02T22:00,13.1,72,5.8,0,0,6.3,7.8 +2022-01-02T23:00,15.5,61,4.6,0,0,5.9,7.8 +2022-01-03T00:00,14.3,60,3,0,0,6.3,8.3 +2022-01-03T01:00,17.6,55,4,0,0,5.3,8.1 +2022-01-03T02:00,19,52,4.4,0,0,4.4,6.5 +2022-01-03T03:00,16.4,56,3.6,0,0,4.3,6.3 +2022-01-03T04:00,15.1,60,3.6,0,0,2.4,5.8 +2022-01-03T05:00,9.5,73,2.7,0,0,5.5,5.8 +2022-01-03T06:00,5.3,73,-1.5,0,0,7.8,10.3 +2022-01-03T07:00,11.2,66,2.1,0,0,6.4,10.5 +2022-01-03T08:00,14.1,67,5.2,0,0,6,8.5 +2022-01-03T09:00,17.8,67,8.8,0,0,6.5,8.9 +2022-01-03T10:00,29.8,46,11.7,0,0,4.8,8.9 +2022-01-03T11:00,36.2,41,14.6,0,0,4,6.9 +2022-01-03T12:00,36.5,55,21.7,0,0,5.1,8.3 +2022-01-03T13:00,37.9,54,22.6,0,0,5.9,8.7 +2022-01-03T14:00,40.6,45,20.9,0,0,5,8.7 +2022-01-03T15:00,45.6,28,14.2,0,0,3.1,7.2 +2022-01-03T16:00,43.1,31,14.2,0,0,1.2,3.6 +2022-01-03T17:00,43.1,30,13.8,0,0,2.5,3.4 +2022-01-03T18:00,24.2,62,12.9,0,0,7.1,8.3 +2022-01-03T19:00,18.2,81,13.3,0,0,8.1,9.6 +2022-01-03T20:00,17.7,74,10.9,0,0,10.2,12.3 +2022-01-03T21:00,23.7,60,11.9,0,0,7.4,12.3 +2022-01-03T22:00,23.7,58,11.1,0,0,7.3,9.6 +2022-01-03T23:00,23.7,57,10.9,0,0,6.4,8.5 +2022-01-04T00:00,17.8,68,9,0,0,5.7,7.6 +2022-01-04T01:00,12.7,78,7.1,0,0,7.2,9.8 +2022-01-04T02:00,13.5,74,6.7,0,0,9.9,12.3 +2022-01-04T03:00,19.2,58,6.7,0,0,9.4,12.8 +2022-01-04T04:00,27.2,42,7.1,0,0,7.8,11.6 +2022-01-04T05:00,20.4,62,9.5,0,0,8.1,9.6 +2022-01-04T06:00,12.7,71,4.9,0,0,7.6,12.8 +2022-01-04T07:00,17.4,61,6.4,0,0,7.9,11 +2022-01-04T08:00,16.4,61,5.2,0,0,8.7,12.5 +2022-01-04T09:00,22.6,61,10.9,0,0,6.4,12.1 +2022-01-04T10:00,35.2,45,16.1,0,0,7.5,13.6 +2022-01-04T11:00,40.9,42,19.7,0,0,7.3,13.4 +2022-01-04T12:00,43.4,32,15.2,0,0,17.4,29.5 +2022-01-04T13:00,43.2,33,16.1,0,0,15.8,29.5 +2022-01-04T14:00,43.2,33,15.8,0,0,12.7,26.6 +2022-01-04T15:00,42.4,34,16,0,0,13.5,23 +2022-01-04T16:00,42.6,27,10.8,0,0,13.9,24.8 +2022-01-04T17:00,29,60,16.7,0,0,7.6,21.9 +2022-01-04T18:00,31.1,62,19.6,0,0,9.8,15.9 +2022-01-04T19:00,29.2,68,19.9,0,0,6.2,15.4 +2022-01-04T20:00,28.1,70,19.7,0,0,6.3,9.4 +2022-01-04T21:00,28.1,66,18.2,0,0,6.7,10.5 +2022-01-04T22:00,22.6,72,15.1,0,0,6.6,11.9 +2022-01-04T23:00,20.4,78,14.6,0,0,6.3,11.2 +2022-01-05T00:00,20.8,73,13.4,0,0,6.6,10.7 +2022-01-05T01:00,22.3,71,14.3,0,0,5.5,7.8 +2022-01-05T02:00,24.5,64,13.9,0,0,4.4,6.7 +2022-01-05T03:00,23.2,64,12.8,0,0,5.4,6 +2022-01-05T04:00,21.1,71,13.1,0,0,3.8,6.3 +2022-01-05T05:00,19.7,65,9.8,0,0,1.1,5.6 +2022-01-05T06:00,19.2,69,10.9,0,0,5.8,8.5 +2022-01-05T07:00,13.3,79,8.1,0,0,7,8.5 +2022-01-05T08:00,14.5,79,9.1,0,0,6.3,10.5 +2022-01-05T09:00,22.7,66,13.2,0,0,1.5,8.7 +2022-01-05T10:00,25.8,65,15.7,0,0,0.7,2.5 +2022-01-05T11:00,30.3,58,17.2,0,0,4.9,8.3 +2022-01-05T12:00,35.2,56,21.1,0,0,10.8,17.2 +2022-01-05T13:00,28.1,67,18.6,0,0,17.7,29.5 +2022-01-05T14:00,22.4,83,18.1,0,0.028,19.7,33.1 +2022-01-05T15:00,23.2,80,17.9,0,0.11,14.7,32.2 +2022-01-05T16:00,20.3,83,15.9,0,0.303,14.9,25.9 +2022-01-05T17:00,10.5,78,5.1,0,0.276,13.5,24.4 +2022-01-05T18:00,7.3,79,2.2,0,0.358,10.8,21.7 +2022-01-05T19:00,5.1,83,1,0,0.496,8,18.1 +2022-01-05T20:00,3.9,81,-0.7,0,0.276,8.4,13.4 +2022-01-05T21:00,3.2,78,-2.2,0,0.22,9.1,14.5 +2022-01-05T22:00,2.5,77,-3,0,0.165,7.9,14.5 +2022-01-05T23:00,2.6,77,-2.9,0,0.11,7.2,12.5 +2022-01-06T00:00,2.8,78,-2.4,0,0.083,3.9,10.7 +2022-01-06T01:00,2.8,78,-2.5,0,0.083,1.8,6.3 +2022-01-06T02:00,3.3,79,-1.8,0,0.083,2.7,4 +2022-01-06T03:00,3.4,78,-1.8,0,0.083,2.7,4.9 +2022-01-06T04:00,4.3,77,-1.2,0,0.083,4.2,6.3 +2022-01-06T05:00,2.6,73,-4,0,0.11,4,6.7 +2022-01-06T06:00,2.4,73,-4.2,0,0.055,4.7,7.6 +2022-01-06T07:00,1.9,75,-4.3,0,0.083,6.1,10.7 +2022-01-06T08:00,1.4,77,-4.1,0,0.083,7.8,11.6 +2022-01-06T09:00,2.6,76,-3.4,0,0.028,6.9,12.1 +2022-01-06T10:00,5.3,76,-0.6,0,0,8.4,12.8 +2022-01-06T11:00,8,75,1.7,0,0,4.4,13.4 +2022-01-06T12:00,11,65,1.7,0,0,1.6,8.1 +2022-01-06T13:00,10.8,71,3.1,0,0,5.4,9.8 +2022-01-06T14:00,11.3,73,4.5,0,0,4.8,10.3 +2022-01-06T15:00,9.6,82,5.3,0,0,3.6,8.7 +2022-01-06T16:00,7,91,4.9,0,0,5.1,8.7 +2022-01-06T17:00,10.1,82,5.8,0,0,3.3,8.3 +2022-01-06T18:00,7.1,84,3.3,0,0,3,4 +2022-01-06T19:00,8.4,82,4.1,0,0,5.3,6.5 +2022-01-06T20:00,10,81,5.5,0,0,5.4,8.9 +2022-01-06T21:00,10.1,82,5.6,0,0,5,6.3 +2022-01-06T22:00,16,73,8.9,0,0,3.5,6.7 +2022-01-06T23:00,15.3,81,10.5,0,0,3.3,6.3 +2022-01-07T00:00,15.8,82,11.2,0,0,4.7,7.4 +2022-01-07T01:00,15.7,84,11.8,0,0,7.7,8.5 +2022-01-07T02:00,14.1,86,10.6,0,0,7.4,8.9 +2022-01-07T03:00,15.7,81,10.9,0,0,9.6,11 +2022-01-07T04:00,18.1,76,11.9,0,0,10.5,12.1 +2022-01-07T05:00,22.9,80,17.8,0,0,6.7,12.5 +2022-01-07T06:00,28.4,70,19.9,0,0,3.9,11.4 +2022-01-07T07:00,28.3,65,18.1,0,0,0.2,4.5 +2022-01-07T08:00,20.8,79,15.3,0,0,8,10.1 +2022-01-07T09:00,22.7,81,17.8,0,0,8.9,10.5 +2022-01-07T10:00,32.5,65,22,0,0,7.8,10.5 +2022-01-07T11:00,36.2,64,25.3,0,0,8.5,9.6 +2022-01-07T12:00,39.9,60,27.2,0,0,8.4,11.9 +2022-01-07T13:00,40,61,27.5,0,0,9.3,11.6 +2022-01-07T14:00,42.5,56,27.9,0,0,7.7,11.4 +2022-01-07T15:00,43.1,54,27.6,0,0,8.7,12.5 +2022-01-07T16:00,42,58,28.1,0,0,9.8,16.3 +2022-01-07T17:00,38.8,59,25.6,0,0,2.2,16.1 +2022-01-07T18:00,33.2,72,25.3,0,0,7.7,11 +2022-01-07T19:00,36.3,67,26.3,0,0,9.2,15.9 +2022-01-07T20:00,34.1,70,25.2,0,0,7.9,13.9 +2022-01-07T21:00,31.7,73,24,0,0,7,12.1 +2022-01-07T22:00,27.7,79,22,0,0,6.4,10.5 +2022-01-07T23:00,25,82,20.3,0,0,6,9.2 +2022-01-08T00:00,23.5,87,20.2,0,0,4.5,6.9 +2022-01-08T01:00,18.8,92,16.9,0,0,7.1,8.7 +2022-01-08T02:00,19.6,90,17.2,0,0,5.3,8.5 +2022-01-08T03:00,18.1,89,15.5,0,0,5,6.3 +2022-01-08T04:00,14.8,86,11.5,0,0,8.6,9.8 +2022-01-08T05:00,21.8,73,14.5,0,0,7.1,10.1 +2022-01-08T06:00,22.7,73,15.3,0,0,6.1,8.3 +2022-01-08T07:00,21,77,14.8,0,0,7.3,9.4 +2022-01-08T08:00,22.3,74,15.3,0,0,6.4,8.5 +2022-01-08T09:00,30,61,18.3,0,0,4.9,7.4 +2022-01-08T10:00,28,70,19.5,0,0,6.3,9.6 +2022-01-08T11:00,31.1,73,23.5,0,0,0.8,10.1 +2022-01-08T12:00,33.8,69,24.8,0,0,7.8,14.1 +2022-01-08T13:00,34.7,73,26.8,0,0,3.4,11.9 +2022-01-08T14:00,37.7,62,25.9,0,0,4.3,4.9 +2022-01-08T15:00,40.9,51,24.4,0,0,2.6,5.4 +2022-01-08T16:00,39.5,54,24,0,0,9.7,14.8 +2022-01-08T17:00,34.3,73,26.6,0,0,6.3,15.7 +2022-01-08T18:00,32.2,71,24,0,0,5.2,9.4 +2022-01-08T19:00,34.5,69,25.4,0,0.028,5.1,7.8 +2022-01-08T20:00,31.9,83,27.3,0,0.028,3.9,6 +2022-01-08T21:00,27.1,85,23.4,0,0,6.3,7.4 +2022-01-08T22:00,20.1,88,17.1,0,0,5.6,7.4 +2022-01-08T23:00,19.5,84,15.5,0,0,4.3,7.2 +2022-01-09T00:00,12.7,86,9.4,0,0,4.8,6.9 +2022-01-09T01:00,14.6,82,10.2,0,0,3.8,6 +2022-01-09T02:00,8.7,86,5.3,0,0,4.6,6 +2022-01-09T03:00,6.5,76,0.5,0,0,2.7,5.8 +2022-01-09T04:00,6.3,66,-2.6,0,0,2,3.8 +2022-01-09T05:00,5.2,68,-3,0,0,1.6,2.9 +2022-01-09T06:00,0.6,71,-6.5,0,0,3.3,4.3 +2022-01-09T07:00,2.6,69,-5.3,0,0,3.7,4.5 +2022-01-09T08:00,1.8,70,-5.8,0,0,7,8.5 +2022-01-09T09:00,12.3,50,-2.8,0,0,1.1,8.1 +2022-01-09T10:00,12.7,64,2.8,0,0,2.7,4.5 +2022-01-09T11:00,13.1,77,7.3,0,0,3.7,7.6 +2022-01-09T12:00,15.4,81,10.7,0,0,3,7.4 +2022-01-09T13:00,18.5,83,14.1,0,0,2.8,7.4 +2022-01-09T14:00,20.1,84,16,0,0,3.3,6.7 +2022-01-09T15:00,20.9,84,16.8,0,0,2.9,6.9 +2022-01-09T16:00,19.9,84,15.8,0,0,3,5.4 +2022-01-09T17:00,21.1,82,16.6,0,0,1.8,4.9 +2022-01-09T18:00,17.2,87,13.9,0,0,5.6,5.6 +2022-01-09T19:00,16.3,92,14.4,0,0,6,7.4 +2022-01-09T20:00,17.1,88,14,0,0,5.2,6.9 +2022-01-09T21:00,14.5,80,9.3,0,0,6.8,7.6 +2022-01-09T22:00,12.6,74,5.7,0,0,8.2,10.1 +2022-01-09T23:00,11.6,69,3.3,0,0,8.9,10.5 +2022-01-10T00:00,11.1,67,2.4,0,0,8.6,10.7 +2022-01-10T01:00,12.7,65,3.1,0,0,7.4,10.1 +2022-01-10T02:00,14.8,62,4.1,0,0,6.3,8.7 +2022-01-10T03:00,19.3,56,6.1,0,0,4.7,7.2 +2022-01-10T04:00,12.7,65,3.3,0,0,5.6,6.9 +2022-01-10T05:00,11.9,68,3.4,0,0,7.5,6.5 +2022-01-10T06:00,8.3,72,1.1,0,0,9.3,11.4 +2022-01-10T07:00,7.3,73,0.5,0,0,9.2,11.4 +2022-01-10T08:00,8.4,74,1.9,0,0,8.6,11 +2022-01-10T09:00,14.3,72,6.9,0,0,7.1,10.1 +2022-01-10T10:00,22.2,70,13.7,0,0,6.8,8.5 +2022-01-10T11:00,31.8,57,18.4,0,0,5.9,7.8 +2022-01-10T12:00,35.9,62,24.2,0,0,6.8,8.1 +2022-01-10T13:00,38.9,59,25.8,0,0,7.1,9.2 +2022-01-10T14:00,45.9,27,13.7,0,0,4.2,8.5 +2022-01-10T15:00,39.7,44,19.6,0,0,2.9,5.1 +2022-01-10T16:00,31.6,59,19.1,0,0,4.4,5.1 +2022-01-10T17:00,31.9,51,16,0,0,5.9,7.4 +2022-01-10T18:00,36.7,45,17.3,0,0,2.1,6.9 +2022-01-10T19:00,20.4,82,15.9,0,0,6.3,7.2 +2022-01-10T20:00,17.2,84,13.3,0,0,8.6,9.6 +2022-01-10T21:00,18.6,75,12,0,0,9,10.5 +2022-01-10T22:00,15.6,72,8.2,0,0,10.1,11.9 +2022-01-10T23:00,15.2,67,6.1,0,0,10.1,12.5 +2022-01-11T00:00,14,65,4.5,0,0,10.5,12.3 +2022-01-11T01:00,13.1,64,3.2,0,0,10.3,12.3 +2022-01-11T02:00,15.2,58,3.1,0,0,8.1,12.1 +2022-01-11T03:00,14.9,57,2.3,0,0,7.8,9.4 +2022-01-11T04:00,15.1,56,2.3,0,0,8.7,10.3 +2022-01-11T05:00,14.5,63,4.1,0,0,9.7,10.5 +2022-01-11T06:00,14.9,63,4.5,0,0,10.9,12.3 +2022-01-11T07:00,22.6,49,6.4,0,0,6.9,12.8 +2022-01-11T08:00,22.7,48,6.1,0,0,7.8,8.7 +2022-01-11T09:00,27,48,9.7,0,0,7.2,9.6 +2022-01-11T10:00,29.6,59,17.2,0,0,4.9,8.3 +2022-01-11T11:00,36.1,62,24.3,0,0,2.6,6 +2022-01-11T12:00,40.3,58,26.6,0,0,3.4,6.3 +2022-01-11T13:00,39.2,61,26.7,0,0,5.4,6.9 +2022-01-11T14:00,39.2,55,24.4,0,0,6.2,8.1 +2022-01-11T15:00,43,29,13.2,0,0,5.8,8.1 +2022-01-11T16:00,36.4,41,15,0,0,4,6.5 +2022-01-11T17:00,30.9,52,15.5,0,0,8.7,8.3 +2022-01-11T18:00,37.6,36,13,0,0,2.9,10.7 +2022-01-11T19:00,27,57,13.7,0,0,2.9,4 +2022-01-11T20:00,23.4,64,12.8,0,0,3.6,4.9 +2022-01-11T21:00,20.9,66,11.3,0,0,6.5,8.5 +2022-01-11T22:00,17.1,71,9.4,0,0,8.8,10.7 +2022-01-11T23:00,15.6,70,7.4,0,0,9.2,11 +2022-01-12T00:00,17.7,66,8.2,0,0,6.3,10.5 +2022-01-12T01:00,19,67,9.7,0,0,6.7,10.7 +2022-01-12T02:00,20.4,66,10.9,0,0,8.4,12.8 +2022-01-12T03:00,20.9,66,11.5,0,0,7.2,13.4 +2022-01-12T04:00,20.8,67,11.5,0,0,5.5,11 +2022-01-12T05:00,23.9,72,16.3,0,0,5.4,13.2 +2022-01-12T06:00,26.2,66,16.3,0,0,4.6,8.7 +2022-01-12T07:00,22.8,70,14.4,0,0,5.9,5.8 +2022-01-12T08:00,23.6,74,16.4,0,0,5.9,9.2 +2022-01-12T09:00,26.4,78,20.4,0,0,4.8,7.4 +2022-01-12T10:00,37,55,22.3,0,0,2.4,6.5 +2022-01-12T11:00,39,60,26.3,0,0,5,5.4 +2022-01-12T12:00,42.7,54,27.1,0,0,5.1,7.8 +2022-01-12T13:00,43.3,55,28,0,0,5.2,7.8 +2022-01-12T14:00,43.2,55,28.2,0,0,5.4,7.6 +2022-01-12T15:00,48.2,40,24.7,0,0,3.3,7.6 +2022-01-12T16:00,50.7,32,21.8,0,0,2.7,4.5 +2022-01-12T17:00,49.4,31,20.3,0,0,3.4,5.6 +2022-01-12T18:00,46.4,36,20.8,0,0,2.5,4.5 +2022-01-12T19:00,37,54,21.7,0,0,3.4,4.3 +2022-01-12T20:00,30.5,68,21,0,0,4.9,5.6 +2022-01-12T21:00,29,70,20.3,0,0,4.8,7.2 +2022-01-12T22:00,28.4,68,19.3,0,0,4.9,5.8 +2022-01-12T23:00,27.1,70,18.5,0,0,5.7,7.2 +2022-01-13T00:00,28.2,66,18.2,0,0,5.6,6.9 +2022-01-13T01:00,35.9,51,19.7,0,0,4.6,6.7 +2022-01-13T02:00,35.7,51,19.1,0,0,3.5,5.4 +2022-01-13T03:00,37.6,47,19.4,0,0,3.4,4.5 +2022-01-13T04:00,36.4,48,18.5,0,0,4.1,4.7 +2022-01-13T05:00,35.5,48,17.6,0,0,9.8,4.9 +2022-01-13T06:00,39.4,42,18,0,0,4.7,11.9 +2022-01-13T07:00,29.6,56,15.6,0,0,9.1,10.3 +2022-01-13T08:00,30.6,57,17.2,0,0,7.4,10.5 +2022-01-13T09:00,30.9,69,21.9,0,0,7.4,10.1 +2022-01-13T10:00,37.2,71,28.9,0,0,6.7,9.4 +2022-01-13T11:00,47.8,42,25.7,0,0,2.5,8.1 +2022-01-13T12:00,50.7,39,26.8,0,0,4.7,5.8 +2022-01-13T13:00,55.6,30,24.6,0,0,3.6,6.3 +2022-01-13T14:00,57.7,28,25,0,0,2.4,4.7 +2022-01-13T15:00,57.5,29,25.4,0,0,1.4,2.7 +2022-01-13T16:00,41,65,30.1,0,0,6.1,8.5 +2022-01-13T17:00,53.9,32,24.7,0,0,2.6,9.6 +2022-01-13T18:00,47.6,41,25.2,0,0,2.4,3.4 +2022-01-13T19:00,41.5,51,24.9,0,0,3,4 +2022-01-13T20:00,39.6,57,25.6,0,0,2.8,4 +2022-01-13T21:00,30.9,77,24.5,0,0,5.9,6.9 +2022-01-13T22:00,34.1,74,26.7,0,0,3,6.9 +2022-01-13T23:00,33.3,77,26.7,0,0,0.5,3.6 +2022-01-14T00:00,26.2,86,22.6,0,0,4.3,6 +2022-01-14T01:00,24.6,85,20.7,0,0,6,7.6 +2022-01-14T02:00,25.2,86,21.6,0,0,5.1,8.1 +2022-01-14T03:00,26.9,86,23.2,0,0,2.1,6.3 +2022-01-14T04:00,27.4,82,22.6,0,0,2.3,4.7 +2022-01-14T05:00,31.6,63,20.5,0,0,2.7,9.2 +2022-01-14T06:00,29.1,66,19.1,0,0,6.7,7.2 +2022-01-14T07:00,28.9,62,17.5,0,0,6.1,11.2 +2022-01-14T08:00,25.5,65,15.4,0,0,7.7,10.7 +2022-01-14T09:00,33.6,62,22.1,0,0,6.2,10.7 +2022-01-14T10:00,36,69,26.8,0,0,5.8,11 +2022-01-14T11:00,35.4,75,28.4,0.004,0.028,5.9,9.8 +2022-01-14T12:00,35.2,79,29.4,0,0.028,6.4,11.9 +2022-01-14T13:00,36,78,29.7,0,0.028,5.4,10.7 +2022-01-14T14:00,34.9,76,28,0.004,0.11,8.6,14.3 +2022-01-14T15:00,33.7,77,27.1,0,0.083,5.1,14.3 +2022-01-14T16:00,33.4,74,25.9,0,0.055,4.3,8.5 +2022-01-14T17:00,32,77,25.5,0,0,4.3,16.8 +2022-01-14T18:00,31,68,21.8,0,0,12.5,19.7 +2022-01-14T19:00,27.4,71,19.2,0,0,12.5,21.9 +2022-01-14T20:00,25.5,73,18.1,0,0,9.7,20.4 +2022-01-14T21:00,22.5,78,16.5,0,0,5,16.1 +2022-01-14T22:00,15.6,83,11.5,0,0,6.9,9.4 +2022-01-14T23:00,15.9,83,11.6,0,0,5.6,9.4 +2022-01-15T00:00,19.9,77,13.9,0,0,4.8,7.4 +2022-01-15T01:00,19.9,73,12.7,0,0,3.5,6.5 +2022-01-15T02:00,20.1,71,12.3,0,0,1.6,4.9 +2022-01-15T03:00,20.6,69,12.1,0,0,4.1,4.7 +2022-01-15T04:00,13.4,78,7.7,0,0,5.8,7.6 +2022-01-15T05:00,10.6,84,6.6,0,0,6.2,7.4 +2022-01-15T06:00,5.3,81,0.8,0,0,8.6,10.5 +2022-01-15T07:00,6.4,73,-0.4,0,0,8.4,11 +2022-01-15T08:00,10.2,64,0.5,0,0,6.9,10.3 +2022-01-15T09:00,15.3,63,5,0,0,7.9,10.5 +2022-01-15T10:00,26.3,54,12.1,0,0,5.1,10.3 +2022-01-15T11:00,33.4,44,13.8,0,0,5.8,10.1 +2022-01-15T12:00,37.5,41,15.8,0,0,5.4,10.5 +2022-01-15T13:00,40.5,42,19,0,0,4.6,10.1 +2022-01-15T14:00,40.9,46,21.9,0,0,5.7,8.1 +2022-01-15T15:00,45.1,30,15.8,0,0,5,8.7 +2022-01-15T16:00,42.9,31,14.5,0,0,6.9,7.4 +2022-01-15T17:00,32.2,49,15.3,0,0,11,13.2 +2022-01-15T18:00,30,49,12.9,0,0,10.7,13.6 +2022-01-15T19:00,31.5,43,11.5,0,0,4.6,12.8 +2022-01-15T20:00,20.2,68,11.3,0,0,7.6,8.9 +2022-01-15T21:00,22.6,65,12.7,0,0,6.6,10.5 +2022-01-15T22:00,23.7,61,12.2,0,0,6.9,11.6 +2022-01-15T23:00,22.7,65,12.6,0,0,8.7,14.1 +2022-01-16T00:00,21.4,69,12.8,0,0,7.1,14.1 +2022-01-16T01:00,19.7,75,13.1,0,0,4.4,11.2 +2022-01-16T02:00,25.5,61,14.1,0,0,5.1,8.1 +2022-01-16T03:00,30.6,58,17.6,0,0,6.2,10.5 +2022-01-16T04:00,27,63,15.9,0,0,6.5,9.6 +2022-01-16T05:00,26.2,54,11.8,0,0,7.1,7.8 +2022-01-16T06:00,28.5,46,10.3,0,0,4.1,8.9 +2022-01-16T07:00,27.2,56,13.5,0,0,6.6,7.2 +2022-01-16T08:00,21.7,65,11.7,0,0,7.4,8.5 +2022-01-16T09:00,27.5,65,17.2,0,0,6.1,10.1 +2022-01-16T10:00,35.3,68,25.7,0,0,4,8.1 +2022-01-16T11:00,39.7,55,24.7,0,0,4.5,7.6 +2022-01-16T12:00,48,22,11.2,0,0,0.5,6.3 +2022-01-16T13:00,48,26,14.9,0,0,3.8,5.8 +2022-01-16T14:00,42.4,50,24.8,0,0,5.7,8.9 +2022-01-16T15:00,42.3,51,25.5,0,0,5.5,9.4 +2022-01-16T16:00,36.9,61,24.5,0,0,7.2,9.8 +2022-01-16T17:00,32.4,66,22.1,0,0,7.9,10.1 +2022-01-16T18:00,38.2,43,17.9,0,0,2.5,9.4 +2022-01-16T19:00,36.6,45,17.4,0,0,1.7,2.9 +2022-01-16T20:00,33,50,16.4,0,0,3.7,4 +2022-01-16T21:00,23.5,66,13.7,0,0,5.1,6.3 +2022-01-16T22:00,19.1,75,12.5,0,0,6.2,7.8 +2022-01-16T23:00,16.1,80,10.9,0,0,5.2,7.8 +2022-01-17T00:00,12.5,83,8.2,0,0,7.8,9.8 +2022-01-17T01:00,13.2,76,7.1,0,0,7.7,10.5 +2022-01-17T02:00,15.6,69,7.2,0,0,7.2,10.3 +2022-01-17T03:00,16.4,68,7.7,0,0,7.3,10.3 +2022-01-17T04:00,16.1,70,7.9,0,0,7.8,10.5 +2022-01-17T05:00,19,72,11.4,0,0,7.1,10.7 +2022-01-17T06:00,15.8,73,8.7,0,0,8.8,11.2 +2022-01-17T07:00,17.2,70,9.1,0,0,8.5,11.4 +2022-01-17T08:00,19,69,10.4,0,0,7.1,11.6 +2022-01-17T09:00,28.2,59,15.8,0,0,6.1,10.5 +2022-01-17T10:00,36.2,56,22.1,0,0,3.9,11 +2022-01-17T11:00,40.3,57,26.3,0,0,6,8.7 +2022-01-17T12:00,46.7,38,22.6,0,0,4.9,8.9 +2022-01-17T13:00,51.9,26,17.8,0,0,4.3,7.4 +2022-01-17T14:00,55.9,20,14.9,0,0,2.6,6.7 +2022-01-17T15:00,52.9,51,35.2,0,0,2.7,5.1 +2022-01-17T16:00,51.9,27,19,0,0,2.2,3.4 +2022-01-17T17:00,41,42,19.5,0,0,7.4,3.1 +2022-01-17T18:00,46.2,34,19,0,0,2.6,9.2 +2022-01-17T19:00,36.4,56,22.2,0,0,6.1,8.5 +2022-01-17T20:00,34.3,64,23.3,0,0,6.5,7.8 +2022-01-17T21:00,32.7,63,21.7,0,0,7.1,8.9 +2022-01-17T22:00,29.8,71,21.6,0,0,5.8,8.7 +2022-01-17T23:00,29.3,71,21.2,0,0,4.9,7.4 +2022-01-18T00:00,28.1,69,19.4,0,0,5.1,8.1 +2022-01-18T01:00,27.3,69,18.5,0,0,4.8,7.6 +2022-01-18T02:00,26.7,69,17.8,0,0,4.8,6.7 +2022-01-18T03:00,25.9,70,17.3,0,0,4.2,6.5 +2022-01-18T04:00,25.8,68,16.5,0,0,4.3,6.3 +2022-01-18T05:00,27.4,68,18.2,0,0,4.5,6.5 +2022-01-18T06:00,27.5,68,18.2,0,0,3,5.1 +2022-01-18T07:00,26.6,70,18.1,0,0,2.7,3.6 +2022-01-18T08:00,28,65,17.9,0,0,4.6,6.3 +2022-01-18T09:00,32.7,57,19.2,0,0,4.8,8.5 +2022-01-18T10:00,39.3,47,20.6,0,0,4.1,8.9 +2022-01-18T11:00,44.8,35,19,0,0,3.9,8.9 +2022-01-18T12:00,49.8,26,15.9,0,0,4.6,10.3 +2022-01-18T13:00,53.3,20,13.2,0,0,3,10.5 +2022-01-18T14:00,54.4,19,12.4,0,0,2.7,8.5 +2022-01-18T15:00,53.2,20,13.3,0,0,6.5,10.7 +2022-01-18T16:00,48.7,25,14,0,0,7.3,11.4 +2022-01-18T17:00,41.4,32,13.5,0,0,7.2,11.2 +2022-01-18T18:00,38.8,34,12.6,0,0,5,11.4 +2022-01-18T19:00,35.7,38,12.6,0,0,3.2,8.3 +2022-01-18T20:00,34.5,40,12.5,0,0,2.9,4.3 +2022-01-18T21:00,38.4,33,11.5,0,0,3.1,3.8 +2022-01-18T22:00,29.1,50,12.8,0,0,5.1,6 +2022-01-18T23:00,27,60,15,0,0,5.4,6.9 +2022-01-19T00:00,27.2,57,14.2,0,0,5,6.9 +2022-01-19T01:00,26,61,14.3,0,0,5.4,8.9 +2022-01-19T02:00,26.2,65,16.2,0,0,9.7,15 +2022-01-19T03:00,24.3,82,19.7,0,0,9.8,17 +2022-01-19T04:00,24.3,87,21,0,0,5.8,15.7 +2022-01-19T05:00,23.9,90,21.5,0,0,4.5,8.9 +2022-01-19T06:00,25.1,89,22.2,0,0,4.3,9.2 +2022-01-19T07:00,25.3,87,21.9,0,0.028,4.4,8.1 +2022-01-19T08:00,25.5,83,21.1,0,0.028,5.1,9.2 +2022-01-19T09:00,26,78,19.9,0,0.028,5.5,10.3 +2022-01-19T10:00,26.2,74,19,0,0.028,5.1,10.7 +2022-01-19T11:00,26.7,73,19.3,0,0.028,4.6,10.3 +2022-01-19T12:00,27,72,19.1,0,0,6.2,12.5 +2022-01-19T13:00,26.8,70,18.4,0,0,7.5,14.1 +2022-01-19T14:00,26.9,68,17.7,0,0,8.1,15.2 +2022-01-19T15:00,26.2,67,16.6,0,0,6.9,15.2 +2022-01-19T16:00,25.7,64,15.4,0,0,6.1,12.8 +2022-01-19T17:00,20.2,68,11.5,0,0,5.9,11.2 +2022-01-19T18:00,19.8,66,10.2,0,0,5.4,10.5 +2022-01-19T19:00,19.4,65,9.4,0,0,5.2,9.6 +2022-01-19T20:00,19.2,64,8.9,0,0,4.8,9.4 +2022-01-19T21:00,19,64,8.8,0,0,4.1,8.7 +2022-01-19T22:00,18.6,66,9.1,0,0,4.2,7.6 +2022-01-19T23:00,16.5,73,9.4,0,0,4.8,7.2 +2022-01-20T00:00,16,75,9.6,0,0,4.1,7.6 +2022-01-20T01:00,15.5,76,9.4,0,0,2.4,6.7 +2022-01-20T02:00,14.9,77,9.1,0,0,1.3,4.3 +2022-01-20T03:00,14.6,77,8.7,0,0,1.1,2.5 +2022-01-20T04:00,14.1,79,8.7,0,0,0.7,2 +2022-01-20T05:00,10,90,7.5,0,0,4.7,2 +2022-01-20T06:00,12.2,89,9.7,0,0,2.7,7.2 +2022-01-20T07:00,12.1,84,8.2,0,0,0.5,6.9 +2022-01-20T08:00,12.7,81,8.1,0,0,4.4,8.7 +2022-01-20T09:00,17.2,73,10,0,0,5.8,11.9 +2022-01-20T10:00,25.6,47,8.2,0,0,5.9,13 +2022-01-20T11:00,33.4,32,6.6,0,0,5.2,13 +2022-01-20T12:00,37.3,27,6.3,0,0,4.7,12.3 +2022-01-20T13:00,39,26,6.9,0,0,5.9,13 +2022-01-20T14:00,40.1,25,6.8,0,0,7,13.6 +2022-01-20T15:00,39.8,25,7.3,0,0,7.3,13.6 +2022-01-20T16:00,37.3,29,7.9,0,0,3.9,12.5 +2022-01-20T17:00,24.1,77,17.9,0,0,4.8,7.4 +2022-01-20T18:00,25.1,71,17.2,0,0,2.7,6 +2022-01-20T19:00,28.8,60,16.7,0,0,0.8,3.8 +2022-01-20T20:00,22.4,72,14.7,0,0,3.5,4 +2022-01-20T21:00,21.1,70,12.9,0,0,4.2,5.8 +2022-01-20T22:00,21.5,64,11,0,0,5.8,8.5 +2022-01-20T23:00,21.7,56,8.3,0,0,6.3,9.4 +2022-01-21T00:00,23.3,51,7.7,0,0,5.2,9.4 +2022-01-21T01:00,25.3,48,8.1,0,0,6.3,9.8 +2022-01-21T02:00,25.6,49,9.1,0,0,8.5,13.2 +2022-01-21T03:00,26.8,52,11.4,0,0,8.6,13.9 +2022-01-21T04:00,28,54,13.6,0,0,6.4,12.8 +2022-01-21T05:00,27.6,65,17.3,0,0,4,9.4 +2022-01-21T06:00,29.8,61,18.1,0,0,3.1,4.9 +2022-01-21T07:00,28,63,17.2,0,0,5,6.7 +2022-01-21T08:00,25,61,13.6,0,0,7.2,11.2 +2022-01-21T09:00,27.2,58,14.5,0,0,5.5,12.5 +2022-01-21T10:00,30.9,52,15.5,0,0,5,10.5 +2022-01-21T11:00,32.8,50,16.3,0,0,3.6,10.3 +2022-01-21T12:00,36.8,44,16.9,0,0,0.5,9.2 +2022-01-21T13:00,36.7,50,19.8,0,0.028,0.9,6 +2022-01-21T14:00,35.2,59,22.4,0,0.028,2.9,6 +2022-01-21T15:00,34.5,66,24.4,0,0.028,3.6,6.5 +2022-01-21T16:00,33.3,76,26.6,0,0.055,2.7,5.8 +2022-01-21T17:00,31.2,91,28.8,0,0.028,3.8,4.9 +2022-01-21T18:00,30.5,91,28.1,0,0.028,4.1,6.9 +2022-01-21T19:00,30.2,90,27.7,0,0.028,4.5,7.2 +2022-01-21T20:00,30,91,27.6,0,0.028,4.8,7.8 +2022-01-21T21:00,29.4,90,26.8,0,0,4.4,7.8 +2022-01-21T22:00,28.2,88,25.3,0,0,3.8,6.9 +2022-01-21T23:00,26.5,88,23.5,0,0,4.3,6 +2022-01-22T00:00,27.1,85,23.3,0,0,2.7,5.4 +2022-01-22T01:00,28.9,78,23,0,0,0.7,3.4 +2022-01-22T02:00,28,81,23,0,0,3.1,3.1 +2022-01-22T03:00,25.9,89,23.1,0,0,4.9,6.3 +2022-01-22T04:00,22.7,92,20.8,0,0,4.4,7.6 +2022-01-22T05:00,20.1,89,17.4,0,0,5.2,7.4 +2022-01-22T06:00,20.2,86,16.7,0,0,4.7,8.9 +2022-01-22T07:00,19.7,85,15.9,0,0,5.9,8.7 +2022-01-22T08:00,20,74,13.2,0,0,7,10.3 +2022-01-22T09:00,25.1,53,10.2,0,0,5.4,10.7 +2022-01-22T10:00,29.2,48,12.1,0,0,5.9,12.8 +2022-01-22T11:00,32,52,16.3,0,0,3.5,13 +2022-01-22T12:00,35.6,46,16.9,0,0,4,11 +2022-01-22T13:00,37.9,42,16.5,0,0,4.7,12.5 +2022-01-22T14:00,39.7,36,15,0,0,5.6,12.3 +2022-01-22T15:00,39.6,35,14.5,0,0,5.2,12.5 +2022-01-22T16:00,37.4,40,15.3,0,0,4.3,10.5 +2022-01-22T17:00,27.9,73,20.5,0,0,6.3,6.5 +2022-01-22T18:00,30.4,63,19.4,0,0,2.5,7.4 +2022-01-22T19:00,32.4,56,18.4,0,0,1,3.4 +2022-01-22T20:00,25.2,72,17.3,0,0,3.5,5.1 +2022-01-22T21:00,23.4,74,16.2,0,0,5.2,7.8 +2022-01-22T22:00,22.9,71,15,0,0,6,9.2 +2022-01-22T23:00,24.7,64,14.2,0,0,6.4,9.8 +2022-01-23T00:00,25.2,60,13.1,0,0,5.2,9.8 +2022-01-23T01:00,23.4,62,12.2,0,0,4.9,7.8 +2022-01-23T02:00,23.3,60,11.6,0,0,4,6.3 +2022-01-23T03:00,23.3,58,10.7,0,0,4.8,7.2 +2022-01-23T04:00,23.3,55,9.6,0,0,5.5,8.9 +2022-01-23T05:00,19.6,65,9.8,0,0,5.1,8.7 +2022-01-23T06:00,22.4,57,9.3,0,0,4.9,7.6 +2022-01-23T07:00,21.3,58,8.9,0,0,2.9,8.1 +2022-01-23T08:00,23.5,51,7.9,0,0,3.8,5.8 +2022-01-23T09:00,27.9,42,7.8,0,0,4.5,9.6 +2022-01-23T10:00,35.8,32,8.7,0,0,5.4,11.6 +2022-01-23T11:00,43.4,23,8.5,0,0,6.7,13.2 +2022-01-23T12:00,47.8,22,10.9,0,0,9,17 +2022-01-23T13:00,50.5,20,10.9,0,0,7.1,17 +2022-01-23T14:00,51.8,19,11.1,0,0,5.1,14.1 +2022-01-23T15:00,51.4,20,11.3,0,0,1.5,10.7 +2022-01-23T16:00,48.6,25,14.6,0,0,2.7,4 +2022-01-23T17:00,37.5,46,18.7,0,0,6.3,6.3 +2022-01-23T18:00,32.7,58,19.4,0,0,6.3,9.6 +2022-01-23T19:00,31.2,59,18.7,0,0,5.7,8.9 +2022-01-23T20:00,28.2,67,18.7,0,0,2.8,7.2 +2022-01-23T21:00,26.1,74,18.8,0,0,3.7,6.7 +2022-01-23T22:00,25.5,74,18.4,0,0,4.7,7.4 +2022-01-23T23:00,27.2,65,17.2,0,0,5.4,7.8 +2022-01-24T00:00,28,59,15.6,0,0,9.1,10.7 +2022-01-24T01:00,34.4,44,14.7,0,0,6.2,11.4 +2022-01-24T02:00,28.8,54,14,0,0,2.1,7.6 +2022-01-24T03:00,25.6,59,13.2,0,0,2.8,3.1 +2022-01-24T04:00,24.6,60,12.7,0,0,4,4.9 +2022-01-24T05:00,23.6,68,14.5,0,0,6.1,5.1 +2022-01-24T06:00,26.7,57,13.4,0,0,7.8,9.6 +2022-01-24T07:00,31.8,45,12.9,0,0,2.9,9.2 +2022-01-24T08:00,27.9,53,12.9,0,0,3,4.3 +2022-01-24T09:00,33.4,42,13,0,0,4.1,8.1 +2022-01-24T10:00,39.5,32,12.2,0,0,10.9,18.1 +2022-01-24T11:00,42.5,29,12.3,0,0,13.1,23.5 +2022-01-24T12:00,43.9,27,12.2,0,0,9.9,22.8 +2022-01-24T13:00,45.1,26,12.3,0,0,7.8,18.3 +2022-01-24T14:00,45.7,26,12.4,0,0,7,15.4 +2022-01-24T15:00,45.5,26,12.3,0,0,7.4,13.9 +2022-01-24T16:00,44.1,28,13.4,0,0,6.4,13.2 +2022-01-24T17:00,35.1,40,13.4,0,0,6.4,9.8 +2022-01-24T18:00,32.4,47,14.2,0,0,7,8.3 +2022-01-24T19:00,35.8,40,13.8,0,0,3.6,9.2 +2022-01-24T20:00,29.8,52,14.2,0,0,2.1,4.3 +2022-01-24T21:00,27.4,57,14.1,0,0,4.3,3.6 +2022-01-24T22:00,28.1,58,15.1,0,0,6.9,11 +2022-01-24T23:00,26.2,62,14.8,0,0,5.8,10.7 +2022-01-25T00:00,25.3,61,13.9,0,0,5.7,9.2 +2022-01-25T01:00,26.6,58,13.8,0,0,5,9.4 +2022-01-25T02:00,26.3,58,13.6,0,0,4.7,8.1 +2022-01-25T03:00,27.3,58,14.4,0,0,6.7,10.7 +2022-01-25T04:00,27.1,66,17.2,0,0,8.7,14.1 +2022-01-25T05:00,25.8,79,20,0,0.028,11.3,16.3 +2022-01-25T06:00,26,85,22.2,0,0.083,10.7,18.3 +2022-01-25T07:00,26.6,88,23.5,0,0.22,10.6,18.1 +2022-01-25T08:00,27.2,90,24.6,0,0.331,11.6,18.3 +2022-01-25T09:00,27.2,91,25.1,0,0.469,10.6,19.7 +2022-01-25T10:00,27.1,92,25.1,0,0.358,9.4,19.9 +2022-01-25T11:00,27.6,87,24.2,0,0.165,9.2,18.3 +2022-01-25T12:00,28.2,82,23.4,0,0.138,9.7,17.4 +2022-01-25T13:00,28,84,23.9,0,0.276,11,18.1 +2022-01-25T14:00,28.6,76,21.8,0,0.055,9.4,18.6 +2022-01-25T15:00,28.8,74,21.6,0,0.028,7.8,16.1 +2022-01-25T16:00,27.4,79,21.8,0,0.083,6.9,13.2 +2022-01-25T17:00,24.7,85,20.8,0,0.028,3.5,11.9 +2022-01-25T18:00,25.7,76,19.1,0,0.028,1,4 +2022-01-25T19:00,20.8,85,16.9,0,0,4.1,5.4 +2022-01-25T20:00,16.6,90,14.2,0,0,5.6,6.9 +2022-01-25T21:00,15.4,89,12.7,0,0,5.8,7.8 +2022-01-25T22:00,14.4,88,11.5,0,0,5.7,7.6 +2022-01-25T23:00,9.1,89,6.4,0,0,6.5,8.7 +2022-01-26T00:00,8,84,4.2,0,0,6,8.7 +2022-01-26T01:00,4.7,79,-0.2,0,0,6,8.1 +2022-01-26T02:00,1,75,-5.3,0,0,8.4,11 +2022-01-26T03:00,1.3,68,-6.8,0,0,7.6,11.2 +2022-01-26T04:00,6.7,60,-4.4,0,0,5.7,10.3 +2022-01-26T05:00,8.5,57,-3.5,0,0,4.6,7.6 +2022-01-26T06:00,4.7,62,-5.5,0,0,5.6,6.9 +2022-01-26T07:00,-0.8,68,-8.9,0,0,8.8,11.6 +2022-01-26T08:00,2.5,62,-7.6,0,0,7.9,11.9 +2022-01-26T09:00,11.9,53,-1.9,0,0,5.9,11 +2022-01-26T10:00,21.9,51,6.6,0,0,3.7,8.3 +2022-01-26T11:00,30.2,50,13.7,0,0,3.4,7.4 +2022-01-26T12:00,33.5,46,15.1,0,0,3.2,6.5 +2022-01-26T13:00,35.6,54,20.8,0,0,3.2,5.4 +2022-01-26T14:00,36.8,48,18.7,0,0,3.2,6 +2022-01-26T15:00,35.7,48,18,0,0,3.7,6.5 +2022-01-26T16:00,36.1,32,9.1,0,0,3.9,7.2 +2022-01-26T17:00,25.7,51,10.2,0,0,7.9,5.1 +2022-01-26T18:00,31.2,29,2.3,0,0,3.8,8.9 +2022-01-26T19:00,17.9,52,3.3,0,0,8.1,9.4 +2022-01-26T20:00,17.2,60,5.6,0,0,7.8,10.7 +2022-01-26T21:00,18.3,65,8.6,0,0,6.7,9.6 +2022-01-26T22:00,18.1,69,9.5,0,0,7,9.2 +2022-01-26T23:00,20.7,61,9.2,0,0,5.1,8.9 +2022-01-27T00:00,20.1,71,12.1,0,0.028,4.8,7.6 +2022-01-27T01:00,20.5,73,13.2,0,0.028,4.2,7.2 +2022-01-27T02:00,23.3,64,12.8,0,0,3.7,5.4 +2022-01-27T03:00,21.3,69,12.8,0,0,0.9,4.7 +2022-01-27T04:00,22.5,65,12.5,0,0,4.1,4.9 +2022-01-27T05:00,19,65,9.1,0,0,6,7.6 +2022-01-27T06:00,13.4,67,4.6,0,0,6.5,10.1 +2022-01-27T07:00,17.7,63,7.3,0,0,1,8.3 +2022-01-27T08:00,21.2,57,8.3,0,0,4.6,5.4 +2022-01-27T09:00,21.8,78,16.2,0,0.11,3.3,6.5 +2022-01-27T10:00,22.8,83,18.4,0,0.22,7.9,13 +2022-01-27T11:00,23.6,84,19.6,0,0.22,8.9,14.8 +2022-01-27T12:00,24.6,85,20.7,0,0.165,9.1,15.2 +2022-01-27T13:00,25.8,82,21,0,0.083,8.6,15.9 +2022-01-27T14:00,26.8,78,20.8,0,0.028,6.9,14.3 +2022-01-27T15:00,26.6,79,21.1,0,0.028,6.7,12.3 +2022-01-27T16:00,26.1,82,21.3,0,0.028,2.7,11.2 +2022-01-27T17:00,18.9,81,13.9,0,0,6.4,8.3 +2022-01-27T18:00,13.8,85,10,0,0,7.3,9.2 +2022-01-27T19:00,9.8,85,6.3,0,0,7.6,9.4 +2022-01-27T20:00,5.4,84,1.6,0,0,7,9.6 +2022-01-27T21:00,2,79,-3,0,0,6.1,9.2 +2022-01-27T22:00,0.8,74,-5.4,0,0,5.7,8.3 +2022-01-27T23:00,0.2,73,-6.3,0,0,8.5,10.5 +2022-01-28T00:00,3.3,64,-6.2,0,0,8.3,11.4 +2022-01-28T01:00,9.9,52,-4.4,0,0,7,10.3 +2022-01-28T02:00,16.1,41,-3.4,0,0,4.5,8.5 +2022-01-28T03:00,6.2,55,-6.6,0,0,6,7.6 +2022-01-28T04:00,2.9,62,-7.1,0,0,7.8,10.1 +2022-01-28T05:00,18.4,41,-1.4,0,0,3.8,10.1 +2022-01-28T06:00,20.2,37,-2.1,0,0,2.5,4.7 +2022-01-28T07:00,21.4,34,-2.6,0,0,4.9,5.4 +2022-01-28T08:00,23.7,32,-1.6,0,0,7.3,8.5 +2022-01-28T09:00,24,39,2.5,0,0,8.2,9.8 +2022-01-28T10:00,28,50,11.6,0,0,7.3,10.1 +2022-01-28T11:00,34.8,55,20.2,0,0,4.9,8.9 +2022-01-28T12:00,39.5,41,17.8,0,0,4,6.7 +2022-01-28T13:00,39.2,53,23.3,0,0,5.2,6.9 +2022-01-28T14:00,39.8,50,22.5,0,0,5.6,7.8 +2022-01-28T15:00,39.5,49,21.7,0,0,6.4,8.7 +2022-01-28T16:00,34.9,50,18.3,0,0,8.2,9.8 +2022-01-28T17:00,30,52,14.4,0,0,9.9,11.9 +2022-01-28T18:00,30,49,13,0,0,7.9,12.5 +2022-01-28T19:00,28.1,50,11.7,0,0,7.8,12.5 +2022-01-28T20:00,22.7,52,7.7,0,0,10.6,13 +2022-01-28T21:00,19.4,52,4.6,0,0,12.8,15.2 +2022-01-28T22:00,19.8,50,4.2,0,0,12.4,15.4 +2022-01-28T23:00,18.8,50,3,0,0,12.4,15.4 +2022-01-29T00:00,19.9,47,2.8,0,0,11.4,14.5 +2022-01-29T01:00,30,34,4.9,0,0,8,13.4 +2022-01-29T02:00,23.1,43,3.7,0,0,6,9.2 +2022-01-29T03:00,13.9,58,1.9,0,0,8.1,10.3 +2022-01-29T04:00,13.6,59,2.1,0,0,8.3,10.3 +2022-01-29T05:00,21.2,46,3.5,0,0,8.3,11.2 +2022-01-29T06:00,22.8,42,3.4,0,0,7.6,9.6 +2022-01-29T07:00,22.6,43,3.6,0,0,7.2,8.7 +2022-01-29T08:00,20.9,46,3.6,0,0,6.8,8.5 +2022-01-29T09:00,23,51,7.6,0,0,6.2,8.7 +2022-01-29T10:00,30.8,56,17.1,0,0,5.4,9.2 +2022-01-29T11:00,36.7,55,22,0,0,5.4,8.1 +2022-01-29T12:00,40.6,57,26.4,0,0,5.8,8.3 +2022-01-29T13:00,51.7,22,13.6,0,0,3.7,8.3 +2022-01-29T14:00,42.2,49,24.4,0,0,6.2,8.1 +2022-01-29T15:00,40.7,52,24.5,0,0,6.5,8.7 +2022-01-29T16:00,41.4,41,19.3,0,0,4.9,8.7 +2022-01-29T17:00,34.3,57,20.5,0,0,6.7,6 +2022-01-29T18:00,25.3,67,15.8,0,0,8.9,10.3 +2022-01-29T19:00,33.1,47,14.8,0,0,3.4,10.7 +2022-01-29T20:00,20,67,10.9,0,0,7.7,8.9 +2022-01-29T21:00,15.8,78,10,0,0,8.8,11.6 +2022-01-29T22:00,13,74,6.2,0,0,9.8,12.3 +2022-01-29T23:00,12.1,67,3.3,0,0,9.2,12.3 +2022-01-30T00:00,12.4,63,2.2,0,0,8.8,11.4 +2022-01-30T01:00,18.3,53,4.1,0,0,6.7,10.7 +2022-01-30T02:00,15.7,56,2.8,0,0,5.8,7.6 +2022-01-30T03:00,11.9,60,0.9,0,0,6.1,7.6 +2022-01-30T04:00,8.6,63,-1.4,0,0,6.9,8.5 +2022-01-30T05:00,9.7,61,-1,0,0,7.2,9.8 +2022-01-30T06:00,9.9,57,-2.5,0,0,7.4,9.2 +2022-01-30T07:00,9.1,58,-2.6,0,0,7.6,9.8 +2022-01-30T08:00,9.1,59,-2.2,0,0,7.1,9.4 +2022-01-30T09:00,16.1,55,2.8,0,0,6.9,9.2 +2022-01-30T10:00,27.3,50,11.3,0,0,5.8,8.9 +2022-01-30T11:00,41.5,21,4.6,0,0,3.1,7.6 +2022-01-30T12:00,41.8,40,19,0,0,4.8,6.3 +2022-01-30T13:00,45.7,28,14.6,0,0,4.6,6.9 +2022-01-30T14:00,41.6,44,21.4,0,0,5.6,8.5 +2022-01-30T15:00,43.4,35,17.3,0,0,4.7,8.5 +2022-01-30T16:00,45.9,23,10.5,0,0,3.6,6.5 +2022-01-30T17:00,33.6,62,21.9,0,0,6.3,6.7 +2022-01-30T18:00,39,38,15.7,0,0,4.1,9.8 +2022-01-30T19:00,37.6,41,16,0,0,2.8,4.5 +2022-01-30T20:00,19.2,71,11.2,0,0,4.8,5.8 +2022-01-30T21:00,13.8,78,8.3,0,0,8.8,10.7 +2022-01-30T22:00,17.2,70,9.1,0,0,8.8,11 +2022-01-30T23:00,14,70,5.9,0,0,9.2,11.4 +2022-01-31T00:00,11.1,70,3.2,0,0,9.3,12.3 +2022-01-31T01:00,9.8,67,1,0,0,9.6,12.3 +2022-01-31T02:00,9.9,62,-0.5,0,0,9.3,12.5 +2022-01-31T03:00,12.1,55,-0.8,0,0,8.3,11.6 +2022-01-31T04:00,8.1,58,-3.5,0,0,8.2,10.5 +2022-01-31T05:00,12.1,58,0.1,0,0,6.7,11 +2022-01-31T06:00,9.1,60,-2.2,0,0,7.7,9.6 +2022-01-31T07:00,16.3,50,1.1,0,0,6.4,10.3 +2022-01-31T08:00,20.8,44,2.4,0,0,5.6,7.6 +2022-01-31T09:00,27.5,37,4.4,0,0,2.4,6.7 +2022-01-31T10:00,29.6,53,14.4,0,0,5,9.2 +2022-01-31T11:00,37.4,45,18.2,0,0,5.7,10.7 +2022-01-31T12:00,47.8,24,12.3,0,0,3.3,11 +2022-01-31T13:00,42.2,51,25.2,0,0,7.3,9.6 +2022-01-31T14:00,51.9,20,12.1,0,0,3.8,10.7 +2022-01-31T15:00,43.7,44,23.5,0,0,5.5,9.6 +2022-01-31T16:00,41.4,47,22.5,0,0,6.9,10.5 +2022-01-31T17:00,41,38,17.5,0,0,10.5,11.9 +2022-01-31T18:00,30.5,47,12.6,0,0,6.7,16.3 +2022-01-31T19:00,35,40,13,0,0,7.3,11 +2022-01-31T20:00,25.2,53,10.2,0,0,8,9.8 +2022-01-31T21:00,24.7,51,9.2,0,0,7.1,9.4 +2022-01-31T22:00,31.6,40,10,0,0,4.9,8.5 +2022-01-31T23:00,32.3,37,8.9,0,0,3,6.5 +2022-02-01T00:00,31.9,37,8.7,0,0,4.9,5.1 +2022-02-01T01:00,19.4,59,7.4,0,0,8.3,13.6 +2022-02-01T02:00,20.9,62,9.8,0,0,7.2,12.3 +2022-02-01T03:00,17.7,68,8.8,0,0,8.7,11.4 +2022-02-01T04:00,16.9,67,7.7,0,0,8.8,12.3 +2022-02-01T05:00,18.8,72,11.2,0,0,7.1,11 +2022-02-01T06:00,17.5,68,8.7,0,0,7.6,9.6 +2022-02-01T07:00,23.2,58,10.7,0,0,5.4,9.2 +2022-02-01T08:00,23.4,57,10.5,0,0,4.5,6.7 +2022-02-01T09:00,26.2,47,9,0,0,1.2,6.3 +2022-02-01T10:00,27.5,55,13.3,0,0,3.2,5.6 +2022-02-01T11:00,29.2,53,14.2,0,0,5.2,8.9 +2022-02-01T12:00,30.5,51,14.3,0,0,3.4,8.9 +2022-02-01T13:00,30.9,53,16,0,0,4.2,8.1 +2022-02-01T14:00,29.1,58,16.2,0,0,9.9,16.6 +2022-02-01T15:00,27.3,65,17.2,0,0.028,11.6,19.5 +2022-02-01T16:00,26.1,70,17.7,0,0.083,10.9,20.4 +2022-02-01T17:00,23.4,84,19.3,0,0.083,7.4,17.9 +2022-02-01T18:00,22.6,86,19.2,0,0.22,6.8,12.1 +2022-02-01T19:00,22.1,86,18.6,0,0.22,7.3,12.3 +2022-02-01T20:00,21.7,87,18.6,0,0.165,6.8,12.3 +2022-02-01T21:00,21.6,88,18.7,0,0.193,6.1,11.2 +2022-02-01T22:00,21.1,89,18.5,0,0.165,8.1,12.5 +2022-02-01T23:00,20.2,89,17.4,0,0.11,8.6,14.1 +2022-02-02T00:00,19,84,14.9,0,0.11,10.2,15.9 +2022-02-02T01:00,17.5,82,12.9,0,0.055,9.7,16.3 +2022-02-02T02:00,16.4,85,12.7,0,0.083,10.8,17.2 +2022-02-02T03:00,14.7,88,11.8,0,0.138,12.5,19.9 +2022-02-02T04:00,13.5,88,10.7,0,0.193,13.2,21.3 +2022-02-02T05:00,11.8,88,8.8,0,0.165,12.2,21.3 +2022-02-02T06:00,11.4,87,8.2,0,0.083,10.2,19.2 +2022-02-02T07:00,11,86,7.6,0,0.055,8.8,16.6 +2022-02-02T08:00,10.8,85,7.3,0,0.055,9.6,15.2 +2022-02-02T09:00,10.8,85,7.2,0,0.028,11.4,18.3 +2022-02-02T10:00,11,85,7.3,0,0.028,10.4,18.6 +2022-02-02T11:00,12,85,8.4,0,0.028,8.2,17.2 +2022-02-02T12:00,12.7,85,9.1,0,0.055,7.7,14.3 +2022-02-02T13:00,13.5,84,9.5,0,0.028,8.7,15 +2022-02-02T14:00,14.4,82,10,0,0.028,8,15 +2022-02-02T15:00,15,81,10.2,0,0.028,8.6,14.3 +2022-02-02T16:00,15,82,10.6,0,0.028,7.7,14.3 +2022-02-02T17:00,10.4,82,6.1,0,0.055,7.1,12.5 +2022-02-02T18:00,9.2,81,4.5,0,0.028,8.2,13.2 +2022-02-02T19:00,7.6,79,2.6,0,0.028,6.6,13.2 +2022-02-02T20:00,5.7,82,1.4,0,0,5.4,10.5 +2022-02-02T21:00,-0.3,83,-4.2,0,0,5.5,7.8 +2022-02-02T22:00,-1.8,83,-5.6,0,0,5,6.7 +2022-02-02T23:00,0.3,85,-3.2,0,0,3.1,5.8 +2022-02-03T00:00,-1.5,91,-3.4,0,0,2.6,3.6 +2022-02-03T01:00,-2.5,88,-5.2,0,0,3.3,3.8 +2022-02-03T02:00,-7.4,87,-10.2,0,0,3,4.3 +2022-02-03T03:00,-9.1,79,-13.9,0,0,2,4 +2022-02-03T04:00,-10.3,76,-15.8,0,0,1.1,2.7 +2022-02-03T05:00,-10.7,84,-14.3,0,0,2.8,2.9 +2022-02-03T06:00,-15.7,89,-18,0,0,4.6,5.4 +2022-02-03T07:00,-15.7,84,-19,0,0,2.8,5.4 +2022-02-03T08:00,-18.3,76,-23.6,0,0,3.2,3.6 +2022-02-03T09:00,-13.2,67,-21.1,0,0,2.9,5.1 +2022-02-03T10:00,-5.1,62,-14.9,0,0,5.1,7.6 +2022-02-03T11:00,2.7,61,-7.6,0,0,5.1,9.4 +2022-02-03T12:00,8.8,62,-1.7,0,0,1.4,7.8 +2022-02-03T13:00,11.8,65,2.4,0,0,4.7,8.1 +2022-02-03T14:00,12.5,67,3.6,0,0,6.3,10.1 +2022-02-03T15:00,10.9,68,2.5,0,0,7.9,11.9 +2022-02-03T16:00,7,64,-2.6,0,0,4.8,12.8 +2022-02-03T17:00,5.4,59,-5.8,0,0,3.7,7.4 +2022-02-03T18:00,2.9,66,-6,0,0,3,4.3 +2022-02-03T19:00,5.6,65,-3.5,0,0,1.7,4 +2022-02-03T20:00,-0.5,73,-7.1,0,0,5.1,5.4 +2022-02-03T21:00,-6.2,81,-10.6,0,0,6.3,7.4 +2022-02-03T22:00,-8.3,75,-14.2,0,0,8.4,9.6 +2022-02-03T23:00,-4.7,63,-14,0,0,7.5,9.6 +2022-02-04T00:00,-4.3,63,-13.7,0,0,8.2,9.6 +2022-02-04T01:00,-2.1,62,-11.8,0,0,7.9,9.6 +2022-02-04T02:00,-0.2,61,-10.5,0,0,6.8,8.9 +2022-02-04T03:00,-2,64,-11.2,0,0,7.9,8.9 +2022-02-04T04:00,-1.3,63,-10.7,0,0,7.5,9.2 +2022-02-04T05:00,-2.8,64,-11.9,0,0,7.2,8.7 +2022-02-04T06:00,-3.1,64,-12.4,0,0,8.1,9.2 +2022-02-04T07:00,-1.1,63,-10.8,0,0,7.6,9.6 +2022-02-04T08:00,-1.4,66,-10,0,0,8.7,10.1 +2022-02-04T09:00,6.7,64,-2.9,0,0,5.6,10.3 +2022-02-04T10:00,15.4,62,4.7,0,0,5,7.8 +2022-02-04T11:00,21.9,63,11.2,0,0,8.4,13 +2022-02-04T12:00,28,58,15.1,0,0,8.2,13.6 +2022-02-04T13:00,31.5,56,17.4,0,0,7.2,12.5 +2022-02-04T14:00,33.5,54,18.6,0,0,6.9,11.9 +2022-02-04T15:00,33.7,56,19.6,0,0,6,11 +2022-02-04T16:00,30,60,17.8,0,0,7.9,9.2 +2022-02-04T17:00,26.7,58,13.7,0,0,8.1,10.7 +2022-02-04T18:00,19.3,67,10,0,0,7.6,9.6 +2022-02-04T19:00,14.4,75,7.9,0,0,7.5,8.9 +2022-02-04T20:00,11.7,77,5.8,0,0,8.1,9.8 +2022-02-04T21:00,8.5,79,3.5,0,0,9.3,10.7 +2022-02-04T22:00,8.5,77,2.7,0,0,9.3,11.2 +2022-02-04T23:00,8.1,74,1.4,0,0,9,10.7 +2022-02-05T00:00,8.9,70,1.2,0,0,8.5,10.7 +2022-02-05T01:00,9,68,0.6,0,0,7.4,10.3 +2022-02-05T02:00,8.8,69,0.6,0,0,6.7,9.6 +2022-02-05T03:00,10,69,1.9,0,0,6.4,9.8 +2022-02-05T04:00,9.6,71,2.1,0,0,6.1,10.3 +2022-02-05T05:00,18.1,52,3.4,0,0,1.8,10.3 +2022-02-05T06:00,21,47,4,0,0,3.2,5.6 +2022-02-05T07:00,9.4,71,1.9,0,0,5.7,5.6 +2022-02-05T08:00,10.3,77,4.6,0,0,5.6,9.6 +2022-02-05T09:00,16.2,74,9.2,0,0,5.1,8.1 +2022-02-05T10:00,26.2,55,12.2,0,0,4.4,7.2 +2022-02-05T11:00,32.3,61,20.5,0,0,3.8,5.8 +2022-02-05T12:00,33.6,68,24.3,0,0,10.2,15.9 +2022-02-05T13:00,36.2,69,26.9,0,0,4.3,15.9 +2022-02-05T14:00,36.8,67,27,0,0,3.8,6.7 +2022-02-05T15:00,37.6,53,21.8,0,0,9.7,13.2 +2022-02-05T16:00,37,48,18.9,0,0,15.4,24.4 +2022-02-05T17:00,34.3,51,18,0,0,12.4,24.4 +2022-02-05T18:00,31.6,50,14.9,0,0,7.5,19.2 +2022-02-05T19:00,23.7,66,14.2,0,0,6.9,11.6 +2022-02-05T20:00,20.5,67,11.4,0,0,7.9,9.4 +2022-02-05T21:00,27.3,55,13.1,0,0,2.6,9.2 +2022-02-05T22:00,13.6,80,8.5,0,0,5,8.9 +2022-02-05T23:00,12.9,84,8.9,0,0,3.7,7.8 +2022-02-06T00:00,17.6,73,10.3,0,0,7.6,9.4 +2022-02-06T01:00,25.9,62,14.5,0,0,6.8,11 +2022-02-06T02:00,24.1,73,16.5,0,0,4.3,10.7 +2022-02-06T03:00,23.4,76,16.8,0,0.028,4.7,6.9 +2022-02-06T04:00,23,75,16.3,0,0,2.4,5.4 +2022-02-06T05:00,19.2,83,15,0,0,5.4,3.1 +2022-02-06T06:00,21.8,85,18.1,0,0,5.7,8.5 +2022-02-06T07:00,22.2,82,17.6,0,0,3.4,7.6 +2022-02-06T08:00,18.7,82,14.1,0,0,2.5,4.5 +2022-02-06T09:00,22.6,75,15.8,0,0,2.8,4 +2022-02-06T10:00,27.4,67,17.9,0,0,1.3,3.4 +2022-02-06T11:00,29.7,62,18.1,0,0,1.8,3.1 +2022-02-06T12:00,30.7,66,20.7,0,0,1.9,5.1 +2022-02-06T13:00,31.8,61,19.9,0,0,3.9,7.6 +2022-02-06T14:00,32.5,59,19.8,0,0,4.4,7.8 +2022-02-06T15:00,31.8,62,20.4,0,0,3.4,7.4 +2022-02-06T16:00,28,67,18.5,0,0,6.8,7.2 +2022-02-06T17:00,26.2,63,15.3,0,0,6.4,7.8 +2022-02-06T18:00,20,74,13,0,0,7.2,9.6 +2022-02-06T19:00,15.3,80,10.1,0,0,6.7,9.2 +2022-02-06T20:00,13.1,79,7.9,0,0,6.3,8.7 +2022-02-06T21:00,12.5,71,4.8,0,0,10.3,12.3 +2022-02-06T22:00,13.3,65,3.7,0,0,11.2,13.2 +2022-02-06T23:00,13.3,62,2.7,0,0,10.8,13.2 +2022-02-07T00:00,13.4,60,2,0,0,10.4,13 +2022-02-07T01:00,13.9,58,1.9,0,0,9.5,12.1 +2022-02-07T02:00,12.8,60,1.5,0,0,10.3,12.1 +2022-02-07T03:00,16.4,55,3.1,0,0,8.6,12.1 +2022-02-07T04:00,16.2,56,3,0,0,6.4,9.8 +2022-02-07T05:00,13.8,62,3.2,0,0,10.1,8.1 +2022-02-07T06:00,14.8,61,3.9,0,0,9.5,11.9 +2022-02-07T07:00,13.7,64,3.7,0,0,9.1,11 +2022-02-07T08:00,13.6,68,5.1,0,0,10,12.1 +2022-02-07T09:00,20.9,68,11.9,0,0,6.5,11.6 +2022-02-07T10:00,28.9,65,18.7,0,0,4.3,8.5 +2022-02-07T11:00,32.9,70,24.3,0,0,4.4,6.9 +2022-02-07T12:00,37.2,67,27.1,0,0,4,7.8 +2022-02-07T13:00,39.5,64,28.1,0,0,4.7,7.2 +2022-02-07T14:00,40,64,28.9,0,0,4.4,7.2 +2022-02-07T15:00,39.6,64,28.5,0,0,5.8,6.5 +2022-02-07T16:00,45.6,36,20,0,0,4,6.3 +2022-02-07T17:00,43.4,33,15.9,0,0,3,8.1 +2022-02-07T18:00,28,63,16.9,0,0,6.8,8.1 +2022-02-07T19:00,24.7,73,17.4,0,0,8.1,9.4 +2022-02-07T20:00,23.5,63,12.8,0,0,11.6,13.6 +2022-02-07T21:00,22.6,58,10.2,0,0,12.5,15 +2022-02-07T22:00,25.2,52,10,0,0,10.1,14.8 +2022-02-07T23:00,23,57,10.1,0,0,7,12.3 +2022-02-08T00:00,21.8,63,11.1,0,0,6.8,10.5 +2022-02-08T01:00,24.4,62,13.1,0,0,8.5,15 +2022-02-08T02:00,24.9,59,12.7,0,0,8.6,14.1 +2022-02-08T03:00,23.4,68,14.3,0,0,10.8,18.3 +2022-02-08T04:00,19.9,72,12.3,0,0,6.2,16.1 +2022-02-08T05:00,19.5,71,11.6,0,0,7.8,9.6 +2022-02-08T06:00,19.7,73,12.3,0,0,6.5,9.6 +2022-02-08T07:00,19.3,68,10.3,0,0,8.5,11.9 +2022-02-08T08:00,19,69,10.6,0,0,5.6,9.6 +2022-02-08T09:00,24,69,15.4,0,0,9,13 +2022-02-08T10:00,31.2,66,21,0,0,3.6,13.9 +2022-02-08T11:00,35.4,60,22.9,0,0,5.8,9.4 +2022-02-08T12:00,37.3,60,24.9,0,0,4,10.1 +2022-02-08T13:00,38.2,62,26.2,0,0,4.3,6.7 +2022-02-08T14:00,39.5,54,24.3,0,0,4.7,6.5 +2022-02-08T15:00,45.1,28,13.7,0,0,0.2,5.8 +2022-02-08T16:00,45.5,26,12.3,0,0,2.7,4.3 +2022-02-08T17:00,30.9,64,20.3,0,0,9.7,7.4 +2022-02-08T18:00,26.7,70,18.1,0,0,8.3,11.6 +2022-02-08T19:00,22.4,78,16.4,0,0,7.9,9.8 +2022-02-08T20:00,21.3,79,15.8,0,0,6.5,10.1 +2022-02-08T21:00,22.6,75,15.8,0,0,7.3,12.5 +2022-02-08T22:00,19.3,68,10.6,0,0,6.9,11.9 +2022-02-08T23:00,20.8,64,10.4,0,0,6.3,9.4 +2022-02-09T00:00,24.1,62,12.9,0,0,8.6,13.6 +2022-02-09T01:00,25,60,13.1,0,0,7.3,13.9 +2022-02-09T02:00,19.9,66,10.4,0,0,6.1,11.2 +2022-02-09T03:00,18.4,74,11.5,0,0,7,8.3 +2022-02-09T04:00,25.6,58,12.7,0,0,5.4,9.4 +2022-02-09T05:00,20.6,66,11.1,0,0,5.4,6.3 +2022-02-09T06:00,21.5,63,10.8,0,0,5.5,8.1 +2022-02-09T07:00,16.8,73,9.7,0,0,8,8.9 +2022-02-09T08:00,18.3,74,11.6,0,0,7.4,10.5 +2022-02-09T09:00,24.7,73,17.3,0,0,5.9,9.4 +2022-02-09T10:00,33.1,60,20.8,0,0,7.1,9.2 +2022-02-09T11:00,37.9,59,24.8,0,0,5,10.5 +2022-02-09T12:00,40.9,58,27.4,0,0,5.3,7.6 +2022-02-09T13:00,41.8,53,25.9,0,0,5.7,7.4 +2022-02-09T14:00,47.4,30,17.5,0,0,3.6,7.6 +2022-02-09T15:00,47,31,17.8,0,0,3.7,4.7 +2022-02-09T16:00,40.3,53,24.4,0,0,6.6,8.5 +2022-02-09T17:00,40.7,52,24.6,0,0,6.2,9.2 +2022-02-09T18:00,34.1,59,21.2,0,0,9.2,12.3 +2022-02-09T19:00,34.2,62,22.5,0,0,7.5,11.9 +2022-02-09T20:00,32.7,67,22.8,0,0,6.8,12.8 +2022-02-09T21:00,31.1,67,21.4,0,0,6.9,11.2 +2022-02-09T22:00,28,70,19.6,0,0,9.8,11.9 +2022-02-09T23:00,27.1,72,19.3,0,0,6.7,12.5 +2022-02-10T00:00,24.6,76,18.1,0,0,7.4,10.3 +2022-02-10T01:00,22.9,79,17.3,0,0,6.5,9.4 +2022-02-10T02:00,19.4,80,14.3,0,0,7.8,10.5 +2022-02-10T03:00,19,80,13.9,0,0,6.9,10.3 +2022-02-10T04:00,21.2,75,14.5,0,0,6.7,9.2 +2022-02-10T05:00,22.1,79,16.7,0,0,5.2,9.4 +2022-02-10T06:00,25.4,73,17.9,0,0,6.1,10.1 +2022-02-10T07:00,25.6,69,17,0,0,5.4,10.1 +2022-02-10T08:00,29.8,65,19.6,0,0,5.4,8.7 +2022-02-10T09:00,36.6,64,25.5,0,0,4.9,8.7 +2022-02-10T10:00,44.3,41,22.1,0,0,6,9.2 +2022-02-10T11:00,41.9,61,29.6,0,0,6,9.4 +2022-02-10T12:00,45.2,53,29.3,0,0,7.4,11.9 +2022-02-10T13:00,47.4,52,30.6,0,0,10.1,17 +2022-02-10T14:00,48,52,31,0,0,8.7,17.7 +2022-02-10T15:00,45.8,55,30.4,0,0,6.9,14.8 +2022-02-10T16:00,51.5,40,28.1,0,0,9.1,13.6 +2022-02-10T17:00,45.7,52,28.9,0,0,7.4,18.8 +2022-02-10T18:00,41.5,51,24.9,0,0,8.3,14.8 +2022-02-10T19:00,42.4,48,24,0,0,9,15 +2022-02-10T20:00,42.1,46,22.9,0,0,4,11.2 +2022-02-10T21:00,38.7,52,22.6,0,0,1.8,5.4 +2022-02-10T22:00,31.6,65,21.3,0,0,5.6,5.1 +2022-02-10T23:00,33.5,64,22.8,0,0,9,13.4 +2022-02-11T00:00,31.2,70,22.6,0,0,6.8,20.1 +2022-02-11T01:00,25.8,79,20,0,0,6.1,11 +2022-02-11T02:00,25.8,75,19,0,0,6.3,9.8 +2022-02-11T03:00,24.8,73,17.4,0,0,7,9.8 +2022-02-11T04:00,21.5,78,15.8,0,0,6.5,11 +2022-02-11T05:00,25.8,63,15,0,0,8.7,10.5 +2022-02-11T06:00,28.9,77,22.6,0,0,11.1,21.5 +2022-02-11T07:00,25.5,84,21.5,0,0,4.2,17.2 +2022-02-11T08:00,29.5,75,22.6,0,0,8.2,12.5 +2022-02-11T09:00,32.4,68,22.8,0,0,7.1,14.1 +2022-02-11T10:00,35.2,57,21.6,0,0,2.1,13.6 +2022-02-11T11:00,36.7,52,20.7,0,0,9.1,16.8 +2022-02-11T12:00,36.2,50,19.1,0,0,11.1,19.9 +2022-02-11T13:00,33.3,59,20.7,0,0.028,9.2,20.1 +2022-02-11T14:00,33,59,20.4,0,0.028,7.9,16.3 +2022-02-11T15:00,32.7,60,20.3,0,0.028,7.7,15.2 +2022-02-11T16:00,30.4,68,20.9,0,0.028,6.5,14.8 +2022-02-11T17:00,26.1,87,22.7,0,0.138,8.8,12.3 +2022-02-11T18:00,26.2,84,22.1,0,0.165,7.4,14.3 +2022-02-11T19:00,26.2,85,22.2,0,0.138,5,12.8 +2022-02-11T20:00,25.4,87,22.1,0,0.138,3.5,8.7 +2022-02-11T21:00,24.9,90,22.3,0,0.193,5,8.7 +2022-02-11T22:00,24,91,21.8,0,0.165,2.6,8.3 +2022-02-11T23:00,23.5,91,21.1,0,0.083,3.6,6 +2022-02-12T00:00,23.2,89,20.5,0,0.028,3.9,7.2 +2022-02-12T01:00,22.1,86,18.7,0,0,3.4,6.5 +2022-02-12T02:00,15.3,86,11.8,0,0,6.6,8.1 +2022-02-12T03:00,10.3,86,7,0,0,7.1,9.2 +2022-02-12T04:00,8.2,86,4.8,0,0,5.1,9.2 +2022-02-12T05:00,6.4,81,1.9,0,0,5.3,8.5 +2022-02-12T06:00,0.3,79,-4.6,0,0,7.2,9.2 +2022-02-12T07:00,1.3,72,-5.6,0,0,8.1,10.5 +2022-02-12T08:00,5.3,67,-3.3,0,0,8.4,11 +2022-02-12T09:00,16.1,60,4.6,0,0,5.1,11 +2022-02-12T10:00,25.3,54,10.9,0,0,5.6,10.1 +2022-02-12T11:00,31.9,47,14.1,0,0,6,10.3 +2022-02-12T12:00,35.5,40,13.4,0,0,5.4,10.3 +2022-02-12T13:00,37,40,14.6,0,0,5.1,9.8 +2022-02-12T14:00,38.2,41,16.4,0,0,4.4,9.2 +2022-02-12T15:00,37.6,50,20.8,0,0,4.6,8.1 +2022-02-12T16:00,39.8,31,11.7,0,0,4.6,6.7 +2022-02-12T17:00,39.2,26,7.3,0,0,3.1,5.4 +2022-02-12T18:00,36.9,29,7.5,0,0,2.6,4 +2022-02-12T19:00,34.3,33,8,0,0,1.6,3.8 +2022-02-12T20:00,29.6,43,9.8,0,0,1.8,2.7 +2022-02-12T21:00,25.6,54,11.2,0,0,3.9,4.5 +2022-02-12T22:00,17.2,65,7.3,0,0,6.3,8.1 +2022-02-12T23:00,13.4,70,5.4,0,0,6.5,8.3 +2022-02-13T00:00,9.3,74,2.7,0,0,8,10.1 +2022-02-13T01:00,10,70,2.2,0,0,8.1,11 +2022-02-13T02:00,10.8,69,2.5,0,0,8.1,11 +2022-02-13T03:00,10.6,70,2.6,0,0,7.9,11 +2022-02-13T04:00,10.8,71,3.3,0,0,7.3,10.7 +2022-02-13T05:00,14.1,72,6.8,0,0,6.5,10.5 +2022-02-13T06:00,11.4,74,4.6,0,0,7.5,11.6 +2022-02-13T07:00,12.7,73,5.6,0,0,6.4,10.3 +2022-02-13T08:00,17.3,69,8.9,0,0,5.4,9.8 +2022-02-13T09:00,25.7,60,13.8,0,0,5.4,9.2 +2022-02-13T10:00,34.5,56,20.3,0,0,5.2,9.6 +2022-02-13T11:00,39.5,51,23,0,0,4.8,8.3 +2022-02-13T12:00,42.8,46,23.5,0,0,4.8,8.3 +2022-02-13T13:00,44,44,23.3,0,0,5.5,8.7 +2022-02-13T14:00,43.8,47,24.6,0,0,6.8,9.4 +2022-02-13T15:00,45.8,38,21.7,0,0,6.4,9.6 +2022-02-13T16:00,44.8,41,22.3,0,0,6.5,8.5 +2022-02-13T17:00,38.3,54,23,0,0,10.1,8.3 +2022-02-13T18:00,44.2,30,14.7,0,0,6.4,12.1 +2022-02-13T19:00,37.6,37,13.5,0,0,4.2,7.8 +2022-02-13T20:00,25.9,57,12.9,0,0,5.8,6.7 +2022-02-13T21:00,22.6,72,14.8,0,0,6.5,10.5 +2022-02-13T22:00,20.1,77,14.1,0,0,6.7,10.1 +2022-02-13T23:00,15.7,79,10.4,0,0,9,11.2 +2022-02-14T00:00,16.3,77,10.4,0,0,8.1,11.4 +2022-02-14T01:00,14.7,77,9,0,0,8.3,10.5 +2022-02-14T02:00,18.1,71,10.1,0,0,7.1,10.5 +2022-02-14T03:00,13.9,78,8.4,0,0,6.6,8.7 +2022-02-14T04:00,8.2,84,4.4,0,0,7.5,9.8 +2022-02-14T05:00,16.4,72,9,0,0,6.4,11 +2022-02-14T06:00,13.6,70,5.7,0,0,7.2,11.9 +2022-02-14T07:00,14.6,70,6.5,0,0,6.3,10.5 +2022-02-14T08:00,17.2,69,8.8,0,0,6.5,9.8 +2022-02-14T09:00,27.3,55,13.4,0,0,3.2,9.8 +2022-02-14T10:00,36.4,43,16.2,0,0,1.2,4.9 +2022-02-14T11:00,40.2,54,25.1,0,0,3.5,6.9 +2022-02-14T12:00,42.4,54,27,0,0,5.1,8.5 +2022-02-14T13:00,52.3,23,16.1,0,0,0.9,10.5 +2022-02-14T14:00,52.9,26,18.8,0,0,2.2,8.5 +2022-02-14T15:00,53.3,27,20.4,0,0,0.7,8.5 +2022-02-14T16:00,52.5,29,21,0,0,0.5,5.8 +2022-02-14T17:00,39.5,52,23.3,0,0,6.2,3.1 +2022-02-14T18:00,39.2,43,18.6,0,0,3.7,7.2 +2022-02-14T19:00,35.6,56,21.4,0,0,5.9,6.7 +2022-02-14T20:00,32.4,66,22.1,0,0,3.7,7.8 +2022-02-14T21:00,28.6,79,22.9,0,0,3.8,6 +2022-02-14T22:00,26.2,82,21.5,0,0,4.8,7.2 +2022-02-14T23:00,24.9,78,19,0,0,5,7.6 +2022-02-15T00:00,23.8,74,16.6,0,0,4.4,7.6 +2022-02-15T01:00,23.4,69,14.7,0,0,4.1,6.7 +2022-02-15T02:00,22.7,68,13.8,0,0,4.2,6.3 +2022-02-15T03:00,23,65,13,0,0,3.7,5.6 +2022-02-15T04:00,23.3,62,12,0,0,5.3,7.8 +2022-02-15T05:00,18.5,75,11.9,0,0,5.7,8.1 +2022-02-15T06:00,22.6,63,11.8,0,0,4.4,7.6 +2022-02-15T07:00,22.3,62,11.3,0,0,3.8,6.7 +2022-02-15T08:00,26.3,53,11.3,0,0,4.3,8.1 +2022-02-15T09:00,34,41,12.7,0,0,3.3,8.9 +2022-02-15T10:00,42.3,35,16.3,0,0,3.4,9.2 +2022-02-15T11:00,48.1,29,17.7,0,0,3.5,10.1 +2022-02-15T12:00,50.7,29,19.3,0,0,4.4,11 +2022-02-15T13:00,50.2,32,21.1,0,0,8.1,16.3 +2022-02-15T14:00,50.3,25,15.4,0,0,7,16.6 +2022-02-15T15:00,51.2,21,12.5,0,0,3.9,14.5 +2022-02-15T16:00,50.7,22,12.7,0,0,3,10.1 +2022-02-15T17:00,44.4,31,15.6,0,0,4.3,6.7 +2022-02-15T18:00,35.4,42,14.7,0,0,5.9,7.8 +2022-02-15T19:00,34.5,45,15.4,0,0,3.8,7.6 +2022-02-15T20:00,29.8,69,20.8,0,0,3.8,6 +2022-02-15T21:00,26.4,83,21.9,0,0,2.9,6 +2022-02-15T22:00,24.4,87,21.2,0,0,3.3,4.9 +2022-02-15T23:00,23.7,86,20.2,0,0,4.7,5.6 +2022-02-16T00:00,25.3,76,18.8,0,0,2.6,5.8 +2022-02-16T01:00,30,51,14.2,0,0,6.1,12.1 +2022-02-16T02:00,27.7,64,17.2,0,0,6.3,10.5 +2022-02-16T03:00,29.9,59,17.2,0,0,1.6,7.4 +2022-02-16T04:00,26.9,65,16.6,0,0,2.8,2.9 +2022-02-16T05:00,20.5,80,15.3,0,0,5.4,6.3 +2022-02-16T06:00,21.9,75,15.4,0,0,3.5,6.5 +2022-02-16T07:00,22.1,71,14.2,0,0,2.3,4.7 +2022-02-16T08:00,24.9,64,14.3,0,0,1.4,4.9 +2022-02-16T09:00,28.6,58,15.5,0,0,2.1,7.8 +2022-02-16T10:00,31.8,62,20.1,0,0,4.1,11 +2022-02-16T11:00,36.1,56,21.9,0,0,6.3,14.3 +2022-02-16T12:00,37.2,56,22.8,0,0,8,16.8 +2022-02-16T13:00,37,56,22.9,0,0,9.2,18.6 +2022-02-16T14:00,36.4,58,23.1,0,0,11.2,20.8 +2022-02-16T15:00,32.8,68,23.5,0,0,12.3,21.9 +2022-02-16T16:00,32,71,23.6,0,0.055,11.7,21.9 +2022-02-16T17:00,26.8,84,22.6,0,0.138,10.1,20.4 +2022-02-16T18:00,26.8,88,23.6,0,0.358,9.9,17 +2022-02-16T19:00,26.6,84,22.6,0,0.248,9.9,16.3 +2022-02-16T20:00,24.5,85,20.8,0,0.165,12.8,20.1 +2022-02-16T21:00,22.2,84,18.1,0,0.165,12.9,23.5 +2022-02-16T22:00,21.2,84,17.1,0,0.165,11,21 +2022-02-16T23:00,20.6,85,16.7,0,0.11,10.4,18.1 +2022-02-17T00:00,20.1,85,16.4,0,0.083,9.2,17.2 +2022-02-17T01:00,19.9,85,16.2,0,0.055,5.8,15.2 +2022-02-17T02:00,19.6,86,16,0,0.028,4.8,9.6 +2022-02-17T03:00,19.3,83,15,0,0.028,5.4,10.1 +2022-02-17T04:00,17.5,85,13.7,0,0,3.1,9.6 +2022-02-17T05:00,16.4,87,13.2,0,0,2.1,6.9 +2022-02-17T06:00,17.1,83,12.9,0,0,1.5,4.7 +2022-02-17T07:00,14.9,86,11.6,0,0,2.4,3.8 +2022-02-17T08:00,17.1,82,12.5,0,0,2.1,4 +2022-02-17T09:00,18.1,74,11.4,0,0,3.1,6.3 +2022-02-17T10:00,20.3,69,11.8,0,0,4,7.4 +2022-02-17T11:00,24.1,58,11.5,0,0,4.9,9.4 +2022-02-17T12:00,28,50,11.6,0,0,4.4,9.2 +2022-02-17T13:00,31.3,45,12.3,0,0,4.3,8.5 +2022-02-17T14:00,32.9,45,14,0,0,3.5,7.8 +2022-02-17T15:00,33.2,48,15.5,0,0,3.2,6.7 +2022-02-17T16:00,31.1,52,15.4,0,0,4.6,7.2 +2022-02-17T17:00,26,61,14.2,0,0,5.5,8.9 +2022-02-17T18:00,17.5,66,8,0,0,8.7,11.2 +2022-02-17T19:00,14.7,71,7,0,0,7.6,11.2 +2022-02-17T20:00,13.5,77,7.7,0,0,5.5,10.5 +2022-02-17T21:00,11.6,78,6,0,0,5,9.2 +2022-02-17T22:00,11.8,71,4.2,0,0,4.8,8.7 +2022-02-17T23:00,11.8,68,3.3,0,0,5.8,9.2 +2022-02-18T00:00,15.1,67,6.2,0,0,5.9,9.8 +2022-02-18T01:00,16.3,69,7.9,0,0,6.2,10.3 +2022-02-18T02:00,14.5,71,6.8,0,0,5.1,9.8 +2022-02-18T03:00,14.2,70,6.1,0,0,6.1,9.8 +2022-02-18T04:00,14.1,71,6.4,0,0,7.4,11.6 +2022-02-18T05:00,17.4,69,9.1,0,0,8.2,13 +2022-02-18T06:00,17,68,8.2,0,0,7.4,13.4 +2022-02-18T07:00,19.2,64,9,0,0,7.4,14.5 +2022-02-18T08:00,20.6,63,9.9,0,0,7.9,12.1 +2022-02-18T09:00,33.9,38,11,0,0,2.3,10.7 +2022-02-18T10:00,33.8,60,21.3,0,0,3.5,5.8 +2022-02-18T11:00,37.9,55,23.1,0,0,2.7,6.5 +2022-02-18T12:00,39.7,48,21.7,0,0,3.3,6.5 +2022-02-18T13:00,39.9,49,22.1,0,0,3.6,8.3 +2022-02-18T14:00,39.7,53,23.8,0,0,3.5,6.9 +2022-02-18T15:00,39.8,45,20.3,0,0,4.7,9.4 +2022-02-18T16:00,37.3,55,22.6,0,0,5.4,9.4 +2022-02-18T17:00,39.9,43,19,0,0,1.9,8.7 +2022-02-18T18:00,26.5,70,18.1,0,0,6.4,8.7 +2022-02-18T19:00,23.6,77,17.3,0,0,7.6,10.1 +2022-02-18T20:00,20.7,76,14.3,0,0,8.1,11 +2022-02-18T21:00,17.4,80,12.3,0,0,8.1,11.4 +2022-02-18T22:00,18.4,78,12.7,0,0,6.3,11 +2022-02-18T23:00,18.1,76,11.7,0,0,6.4,9.8 +2022-02-19T00:00,16.3,75,10,0,0,6.9,10.1 +2022-02-19T01:00,14.7,77,8.7,0,0,7.3,10.3 +2022-02-19T02:00,14.1,76,8.1,0,0,6.8,10.5 +2022-02-19T03:00,13.6,75,7.2,0,0,6.4,10.1 +2022-02-19T04:00,11.8,75,5.4,0,0,7.4,9.8 +2022-02-19T05:00,17.5,72,10,0,0,5,10.3 +2022-02-19T06:00,11.4,74,4.8,0,0,7.8,11.2 +2022-02-19T07:00,10,75,3.7,0,0,7.4,10.5 +2022-02-19T08:00,15.2,71,7.3,0,0,6.5,9.8 +2022-02-19T09:00,26.4,60,14.3,0,0,5.3,9.8 +2022-02-19T10:00,35.8,53,20.2,0,0,6,10.7 +2022-02-19T11:00,40.7,47,22.3,0,0,5.6,11.2 +2022-02-19T12:00,48.2,29,17.1,0,0,9,10.7 +2022-02-19T13:00,50.7,25,16.5,0,0,8.9,17.4 +2022-02-19T14:00,52.9,22,15.3,0,0,7.8,16.8 +2022-02-19T15:00,54.2,21,14.8,0,0,5.9,15 +2022-02-19T16:00,53.4,24,17.6,0,0,3.4,11.6 +2022-02-19T17:00,42.5,51,25.7,0,0,5.2,6.5 +2022-02-19T18:00,42.3,48,24.1,0,0,1.9,7.4 +2022-02-19T19:00,38.8,54,23.7,0,0,2.7,2.9 +2022-02-19T20:00,29.2,76,22.5,0,0,5.2,7.4 +2022-02-19T21:00,27.8,63,17,0,0,6.9,8.1 +2022-02-19T22:00,26.7,62,15.3,0,0,7.3,8.9 +2022-02-19T23:00,26.6,59,14.4,0,0,7.4,9.2 +2022-02-20T00:00,31,47,12.9,0,0,4.5,8.5 +2022-02-20T01:00,30.2,47,12.3,0,0,3,5.4 +2022-02-20T02:00,29.5,47,11.6,0,0,3.2,4.3 +2022-02-20T03:00,27.1,49,10.3,0,0,6.9,7.6 +2022-02-20T04:00,26,50,10,0,0,6.2,10.3 +2022-02-20T05:00,22.8,58,10.4,0,0,7.8,10.7 +2022-02-20T06:00,21.3,66,11.8,0,0,4.5,9.8 +2022-02-20T07:00,22.1,67,12.7,0,0,2.7,5.6 +2022-02-20T08:00,27.1,59,14.7,0,0,4.2,7.8 +2022-02-20T09:00,34.1,50,17.2,0,0,3.7,8.7 +2022-02-20T10:00,42.9,41,21,0,0,3.6,8.9 +2022-02-20T11:00,48.9,35,22.2,0,0,7.7,13.9 +2022-02-20T12:00,52.4,27,19.5,0,0,12.4,21 +2022-02-20T13:00,54.6,24,18.4,0,0,13.6,23.5 +2022-02-20T14:00,55.8,22,17.4,0,0,13.9,24.2 +2022-02-20T15:00,55.8,21,16.8,0,0,13,23.7 +2022-02-20T16:00,54.9,23,18,0,0,9,21.7 +2022-02-20T17:00,46.8,36,21.2,0,0,7.8,14.3 +2022-02-20T18:00,40.5,41,18.5,0,0,5.1,13.4 +2022-02-20T19:00,34.3,55,19.9,0,0,4.1,7.6 +2022-02-20T20:00,31.4,68,22.1,0,0,4.5,6.7 +2022-02-20T21:00,28.9,70,20.4,0,0,6.5,10.3 +2022-02-20T22:00,25.6,76,19,0,0,4,9.8 +2022-02-20T23:00,26.5,68,17.2,0,0,5.2,7.8 +2022-02-21T00:00,27.3,60,15.2,0,0,7,10.7 +2022-02-21T01:00,27,57,13.7,0,0,7.2,11.2 +2022-02-21T02:00,28.9,49,12.3,0,0,8.3,12.8 +2022-02-21T03:00,31,45,12.1,0,0,10.3,15.9 +2022-02-21T04:00,30.7,46,12.2,0,0,10.5,17 +2022-02-21T05:00,26.5,57,13.5,0,0,6.4,16.6 +2022-02-21T06:00,27.6,56,13.8,0,0,5.4,8.7 +2022-02-21T07:00,28.9,51,13.3,0,0,6.3,9.4 +2022-02-21T08:00,33.4,46,15,0,0,8.7,13 +2022-02-21T09:00,40.3,42,19.1,0,0,4.8,13.2 +2022-02-21T10:00,47.6,32,19.5,0,0,4.9,10.7 +2022-02-21T11:00,51.5,25,16.6,0,0,8.7,15.9 +2022-02-21T12:00,53.2,21,14.4,0,0,6.8,21.7 +2022-02-21T13:00,42.7,46,23.5,0,0,20.4,35.1 +2022-02-21T14:00,42,40,19.5,0,0,17.2,34.7 +2022-02-21T15:00,37.7,39,14.6,0,0,14.3,30.2 +2022-02-21T16:00,35.9,39,13.1,0,0,12.6,25.1 +2022-02-21T17:00,23.2,54,9,0,0,13.2,21.9 +2022-02-21T18:00,16.8,55,3.6,0,0,9.9,26.2 +2022-02-21T19:00,15.6,58,3.3,0,0.028,9,17.4 +2022-02-21T20:00,14.8,60,3.3,0,0.028,8.4,16.1 +2022-02-21T21:00,13.5,62,2.8,0,0.028,8.8,15.7 +2022-02-21T22:00,11.6,64,1.8,0,0.055,9.3,17.2 +2022-02-21T23:00,9.8,65,0.2,0,0.055,7.4,16.8 +2022-02-22T00:00,8.2,63,-1.7,0,0.028,6.5,13.9 +2022-02-22T01:00,7.6,63,-2.5,0,0.028,6.6,12.5 +2022-02-22T02:00,6.3,66,-2.6,0,0.028,8.3,15 +2022-02-22T03:00,4.8,67,-3.8,0,0.028,7.7,16.6 +2022-02-22T04:00,4,67,-4.4,0,0.028,5,14.5 +2022-02-22T05:00,0.3,66,-8.5,0,0.028,11.3,11.6 +2022-02-22T06:00,-0.7,65,-9.8,0,0.028,10.1,20.6 +2022-02-22T07:00,-1.1,62,-11.1,0,0.028,7.3,17.9 +2022-02-22T08:00,-1.1,56,-13,0,0.028,8,15.4 +2022-02-22T09:00,-0.6,53,-13.8,0,0.028,7.6,16.6 +2022-02-22T10:00,0.8,49,-13.8,0,0.055,6.8,16.3 +2022-02-22T11:00,1.9,47,-13.5,0,0.028,6.8,16.1 +2022-02-22T12:00,3.2,46,-13.1,0,0.028,5.2,16.3 +2022-02-22T13:00,4.4,47,-11.5,0,0.028,4.2,14.5 +2022-02-22T14:00,4.3,51,-9.8,0,0.083,4.2,13 +2022-02-22T15:00,3.8,61,-6.6,0,0.083,5.4,13.4 +2022-02-22T16:00,3.8,62,-6.2,0,0.083,5.4,11 +2022-02-22T17:00,2.8,57,-8.9,0,0.11,4.2,10.5 +2022-02-22T18:00,-0.3,64,-9.7,0,0.028,3.7,7.6 +2022-02-22T19:00,2.3,63,-7.4,0,0.028,4.3,8.1 +2022-02-22T20:00,2.2,67,-6.2,0,0.083,3.8,8.1 +2022-02-22T21:00,2.4,69,-5.4,0,0.138,4.5,7.8 +2022-02-22T22:00,2.4,70,-5.2,0,0.055,5.4,9.2 +2022-02-22T23:00,2,71,-5.3,0,0.055,4.4,9.4 +2022-02-23T00:00,2.1,69,-5.6,0,0.028,3.2,7.2 +2022-02-23T01:00,2.6,63,-7.1,0,0.028,4.1,6.9 +2022-02-23T02:00,1.7,64,-7.8,0,0.028,4.3,7.6 +2022-02-23T03:00,0.3,67,-8,0,0.028,4.9,7.2 +2022-02-23T04:00,2.9,60,-7.8,0,0.028,2.6,6.7 +2022-02-23T05:00,1.7,68,-6.5,0,0.028,2.7,6.5 +2022-02-23T06:00,1.8,61,-8.5,0,0.028,1.6,6.3 +2022-02-23T07:00,1.1,63,-8.5,0,0.055,1.4,3.6 +2022-02-23T08:00,0.6,69,-7.1,0,0.055,3.2,6 +2022-02-23T09:00,1.1,69,-6.7,0,0.028,0.7,6.3 +2022-02-23T10:00,1.9,68,-6.1,0,0,3.1,7.6 +2022-02-23T11:00,2.4,69,-5.4,0,0,5.2,11.4 +2022-02-23T12:00,2.7,70,-4.9,0,0,5.7,12.5 +2022-02-23T13:00,4.1,64,-5.3,0,0,4.8,12.3 +2022-02-23T14:00,7.3,57,-4.6,0,0,3.4,11 +2022-02-23T15:00,9.3,60,-1.8,0,0,6.3,11.6 +2022-02-23T16:00,10,62,-0.5,0,0,6,13.6 +2022-02-23T17:00,4.1,75,-2.1,0,0,6.1,10.7 +2022-02-23T18:00,2.5,73,-4.2,0,0.028,6.9,12.1 +2022-02-23T19:00,2.1,71,-5.2,0,0.028,4.9,11.9 +2022-02-23T20:00,0,74,-6.3,0,0,4.5,8.3 +2022-02-23T21:00,0.1,73,-6.6,0,0,3.6,8.1 +2022-02-23T22:00,0.8,69,-7.1,0,0.028,2.7,6.7 +2022-02-23T23:00,0.7,73,-6.1,0,0.11,1.8,5.1 +2022-02-24T00:00,-0.7,74,-7.1,0,0.028,2.5,3.8 +2022-02-24T01:00,-0.7,76,-6.3,0,0.028,1.6,3.4 +2022-02-24T02:00,-2.6,78,-7.6,0,0,3.2,4.3 +2022-02-24T03:00,-1.4,77,-6.9,0,0,3.4,6.3 +2022-02-24T04:00,-4.2,77,-9.7,0,0,4,7.2 +2022-02-24T05:00,1,76,-4.6,0,0,3,6.9 +2022-02-24T06:00,0.6,75,-5.4,0,0,2.8,5.1 +2022-02-24T07:00,1.4,74,-5.1,0,0,1.3,4.5 +2022-02-24T08:00,1.3,69,-6.5,0,0,2.7,7.2 +2022-02-24T09:00,2.7,72,-4.4,0,0,2.7,5.6 +2022-02-24T10:00,4.7,69,-3.3,0,0,0.5,8.3 +2022-02-24T11:00,6.8,70,-1,0,0,2.4,6.9 +2022-02-24T12:00,11.6,65,1.9,0,0,2.4,7.6 +2022-02-24T13:00,15.8,62,4.9,0,0,3.4,8.1 +2022-02-24T14:00,18.3,61,7.1,0,0,3.5,8.7 +2022-02-24T15:00,20.1,61,8.9,0,0,4.2,8.1 +2022-02-24T16:00,19.6,64,9.5,0,0,5.7,9.6 +2022-02-24T17:00,13.2,73,6.1,0,0,4.2,11 +2022-02-24T18:00,9,71,1.5,0,0,5.8,7.6 +2022-02-24T19:00,14.2,62,3.4,0,0,4.3,7.6 +2022-02-24T20:00,13.3,61,2.4,0,0,2.9,5.4 +2022-02-24T21:00,12.3,63,2.2,0,0,2.1,3.4 +2022-02-24T22:00,10.9,65,1.5,0,0,2.2,2.9 +2022-02-24T23:00,9.1,67,0.5,0,0,2.7,3.8 +2022-02-25T00:00,8.4,66,-0.7,0,0,2.9,3.8 +2022-02-25T01:00,8.3,64,-1.3,0,0,1.9,3.8 +2022-02-25T02:00,5.9,69,-2.2,0,0,1.2,2.5 +2022-02-25T03:00,2.5,75,-3.6,0,0,3.7,4.7 +2022-02-25T04:00,0.9,80,-3.9,0,0,2.8,4.9 +2022-02-25T05:00,0.9,85,-2.5,0,0,1.9,3.6 +2022-02-25T06:00,1,85,-2.5,0,0,3,4 +2022-02-25T07:00,0.9,83,-3.1,0,0,2.8,4 +2022-02-25T08:00,0.3,73,-6.2,0,0,4.8,6.5 +2022-02-25T09:00,8.2,63,-1.7,0,0,3,6.9 +2022-02-25T10:00,14.5,63,4,0,0,4.5,8.7 +2022-02-25T11:00,18.1,62,7.3,0,0,6,11.2 +2022-02-25T12:00,20.8,61,9.4,0,0,7,12.5 +2022-02-25T13:00,22.9,58,10.4,0,0,8.1,14.1 +2022-02-25T14:00,23.3,59,10.9,0,0,8.9,15.2 +2022-02-25T15:00,22.5,62,11.5,0,0,9.7,16.3 +2022-02-25T16:00,20.9,66,11.4,0,0,7.1,16.1 +2022-02-25T17:00,18.7,77,12.7,0,0,5,12.1 +2022-02-25T18:00,13.2,81,8.3,0,0,6.5,8.3 +2022-02-25T19:00,17.9,73,10.6,0,0,4.7,8.5 +2022-02-25T20:00,18.4,72,10.9,0,0.028,2.5,5.8 +2022-02-25T21:00,10.5,83,6.3,0,0,5.3,6.9 +2022-02-25T22:00,12.9,82,8.5,0,0,5.1,8.3 +2022-02-25T23:00,14.5,82,10,0,0,3.5,6.7 +2022-02-26T00:00,12.1,82,7.7,0,0,4.2,5.4 +2022-02-26T01:00,2.1,82,-2.2,0,0,6.3,8.5 +2022-02-26T02:00,-1.8,77,-7.4,0,0,5.6,8.7 +2022-02-26T03:00,-1.2,69,-8.9,0,0,5.7,7.8 +2022-02-26T04:00,4.2,61,-6.3,0,0,4.1,7.6 +2022-02-26T05:00,-1.2,71,-8.2,0,0,4.9,8.7 +2022-02-26T06:00,-4.3,73,-10.8,0,0,6.8,11.4 +2022-02-26T07:00,-3.6,66,-12.1,0,0,8.2,11.4 +2022-02-26T08:00,4.3,56,-8,0,0,6.3,11.4 +2022-02-26T09:00,17.4,44,-0.6,0,0,3.5,8.7 +2022-02-26T10:00,26.2,54,11.9,0,0,1.4,5.6 +2022-02-26T11:00,29.8,35,5.7,0,0,2.7,5.1 +2022-02-26T12:00,31.4,37,8.2,0,0,3.8,7.4 +2022-02-26T13:00,32,39,9.6,0,0,3.7,8.3 +2022-02-26T14:00,33.4,35,8.6,0,0,3.4,8.1 +2022-02-26T15:00,33.4,43,13.1,0,0,2.1,6.7 +2022-02-26T16:00,34.1,22,-1.1,0,0,2.2,4.7 +2022-02-26T17:00,26.9,51,11,0,0,5.8,3.8 +2022-02-26T18:00,15.7,56,2.8,0,0,6.8,9.8 +2022-02-26T19:00,14.5,59,2.7,0,0,3.8,8.9 +2022-02-26T20:00,7.2,75,0.9,0,0,5.4,7.4 +2022-02-26T21:00,4.6,78,-0.7,0,0,8.3,10.7 +2022-02-26T22:00,5.3,72,-1.7,0,0,8.9,12.1 +2022-02-26T23:00,6.4,66,-2.6,0,0,8.1,12.1 +2022-02-27T00:00,5.2,65,-4.1,0,0,8.7,11.6 +2022-02-27T01:00,5.5,64,-4.1,0,0,9.1,12.1 +2022-02-27T02:00,6.2,62,-4.2,0,0,8.1,11.9 +2022-02-27T03:00,11.8,53,-2.1,0,0,6.7,10.7 +2022-02-27T04:00,13.6,50,-1.7,0,0,6.1,8.5 +2022-02-27T05:00,11.6,61,0.6,0,0,7.8,10.5 +2022-02-27T06:00,5.8,61,-4.8,0,0,9.2,11.9 +2022-02-27T07:00,6.8,59,-4.4,0,0,9.3,12.3 +2022-02-27T08:00,14.8,55,1.7,0,0,7.2,12.1 +2022-02-27T09:00,26.4,52,11.3,0,0,5.4,10.5 +2022-02-27T10:00,37.5,46,18.4,0,0,3.7,8.7 +2022-02-27T11:00,41.3,48,23,0,0,4.7,8.5 +2022-02-27T12:00,44.2,40,21.6,0,0,5,8.1 +2022-02-27T13:00,45,41,22.4,0,0,5.7,9.2 +2022-02-27T14:00,56.9,7,-7.4,0,0,6.8,13.9 +2022-02-27T15:00,56.9,7,-6.4,0,0,8.1,14.3 +2022-02-27T16:00,54.2,18,11.1,0,0,4,14.1 +2022-02-27T17:00,42,46,22.8,0,0,6.9,7.8 +2022-02-27T18:00,35.2,50,18.6,0,0,7.7,10.5 +2022-02-27T19:00,38,43,17.4,0,0,1.7,8.9 +2022-02-27T20:00,28.4,64,17.7,0,0,1.3,3.8 +2022-02-27T21:00,26.1,72,18.2,0,0,6.8,8.5 +2022-02-27T22:00,28.9,45,10.2,0,0,8.1,10.7 +2022-02-27T23:00,30.2,41,9.1,0,0,3.7,10.5 +2022-02-28T00:00,25.3,60,13.2,0,0,4.8,6.7 +2022-02-28T01:00,24.3,57,11.1,0,0,5.5,8.1 +2022-02-28T02:00,25.3,56,11.8,0,0,5.1,6.9 +2022-02-28T03:00,25.8,56,12.2,0,0,4.9,9.8 +2022-02-28T04:00,25.8,56,12.4,0,0,4.2,7.2 +2022-02-28T05:00,26.8,55,12.6,0,0,8.4,6.7 +2022-02-28T06:00,30.9,47,12.9,0,0,5.1,10.5 +2022-02-28T07:00,30.9,48,13.4,0,0,6.8,10.3 +2022-02-28T08:00,35.6,40,13.9,0,0,7.9,11.6 +2022-02-28T09:00,42.8,34,16.2,0,0,3.6,12.1 +2022-02-28T10:00,47.9,29,17,0,0,1.4,8.5 +2022-02-28T11:00,52.7,25,18.1,0,0,2.8,8.7 +2022-02-28T12:00,58.3,18,14.8,0,0,6.9,14.5 +2022-02-28T13:00,60.8,15,12.4,0,0,7.5,15.9 +2022-02-28T14:00,62.1,13,10.5,0,0,3.5,15.4 +2022-02-28T15:00,61.9,14,12,0,0,3.8,9.8 +2022-02-28T16:00,59.8,17,15,0,0,4.3,10.1 +2022-02-28T17:00,53,38,28.3,0,0,5.4,7.8 +2022-02-28T18:00,44.8,39,21.2,0,0,7.9,8.5 +2022-02-28T19:00,42,39,19,0,0,9.6,14.8 +2022-02-28T20:00,33.9,57,20.3,0,0,7.6,15.2 +2022-02-28T21:00,30.4,70,21.7,0,0,4,9.4 +2022-02-28T22:00,28.1,76,21.6,0,0,3.3,6.3 +2022-02-28T23:00,28.9,70,20.4,0,0,6.5,9.8 +2022-03-01T00:00,31.9,55,17.6,0,0,6.3,11 +2022-03-01T01:00,31.1,56,17.1,0,0,8.3,9.8 +2022-03-01T02:00,30.5,56,16.7,0,0,8.6,10.5 +2022-03-01T03:00,29.6,56,15.8,0,0,5.7,10.3 +2022-03-01T04:00,30.1,52,14.8,0,0,4.5,7.2 +2022-03-01T05:00,33.3,53,17.9,0,0,8.6,8.3 +2022-03-01T06:00,40.4,40,18.1,0,0,4.5,10.1 +2022-03-01T07:00,31.7,57,18.2,0,0,4.1,6.5 +2022-03-01T08:00,39.5,46,20.6,0,0,5.7,8.9 +2022-03-01T09:00,47.2,40,24.4,0,0,7.1,12.8 +2022-03-01T10:00,54.7,32,25.7,0,0,4.6,13.4 +2022-03-01T11:00,59.1,30,27.3,0,0,2.1,10.7 +2022-03-01T12:00,62.1,27,27.6,0,0,1.9,8.7 +2022-03-01T13:00,64.4,23,26.2,0,0,1.7,8.5 +2022-03-01T14:00,65.6,20,23.9,0,0,2.6,8.7 +2022-03-01T15:00,65.8,19,22.6,0,0,3.2,8.7 +2022-03-01T16:00,64.8,22,24.8,0,0,4.9,9.2 +2022-03-01T17:00,57.4,39,32.7,0,0,6.7,8.7 +2022-03-01T18:00,49.6,43,27.9,0,0,7.5,11.6 +2022-03-01T19:00,46.4,41,23.7,0,0,7.4,12.5 +2022-03-01T20:00,43.6,46,24.4,0,0,8.5,12.3 +2022-03-01T21:00,37.4,60,24.8,0,0,8.1,10.3 +2022-03-01T22:00,36,65,25.2,0,0,7.1,9.8 +2022-03-01T23:00,33.6,72,25.5,0,0,8.1,10.3 +2022-03-02T00:00,33.2,71,24.8,0,0,7,10.1 +2022-03-02T01:00,30.8,77,24.4,0,0,7.8,8.7 +2022-03-02T02:00,30.9,76,24.3,0,0,7,9.2 +2022-03-02T03:00,30.8,75,23.9,0,0,6.2,8.9 +2022-03-02T04:00,30.4,74,23.1,0,0,6.5,8.5 +2022-03-02T05:00,31.2,70,22.5,0,0,7.4,8.3 +2022-03-02T06:00,32.6,65,22.2,0,0,5.5,8.9 +2022-03-02T07:00,34.1,61,22,0,0,5.8,8.7 +2022-03-02T08:00,40.4,52,24,0,0,7.2,11.2 +2022-03-02T09:00,48.7,45,28,0,0,4,11.2 +2022-03-02T10:00,56.2,38,30.7,0,0,2.9,8.9 +2022-03-02T11:00,58.1,38,32.4,0,0,7.5,15.2 +2022-03-02T12:00,59.4,35,32,0,0,6.5,16.3 +2022-03-02T13:00,62.3,31,31.1,0,0,5.6,14.8 +2022-03-02T14:00,63.5,28,29.8,0,0,5.9,13.2 +2022-03-02T15:00,64,26,28.4,0,0,4.2,12.8 +2022-03-02T16:00,64.1,25,28,0,0,3,9.4 +2022-03-02T17:00,55.9,37,30,0,0,5.4,6 +2022-03-02T18:00,46.1,48,27.4,0,0,7.2,9.2 +2022-03-02T19:00,41.5,59,28.1,0,0,6,9.2 +2022-03-02T20:00,39,65,28.3,0,0,6.7,8.7 +2022-03-02T21:00,36.1,72,28,0,0,7.6,9.8 +2022-03-02T22:00,33.7,77,27.4,0,0,8.2,9.6 +2022-03-02T23:00,33.2,76,26.4,0,0,8.1,9.6 +2022-03-03T00:00,31.6,78,25.3,0,0,7.5,9.6 +2022-03-03T01:00,30.7,78,24.8,0,0,7.2,8.9 +2022-03-03T02:00,35.9,63,24.4,0,0,4,8.5 +2022-03-03T03:00,31.9,71,23.5,0,0,3.4,4.5 +2022-03-03T04:00,27.5,82,22.7,0,0,5.2,6 +2022-03-03T05:00,27.4,81,22.5,0,0,6.2,6.5 +2022-03-03T06:00,28.4,76,21.9,0,0,5.6,7.4 +2022-03-03T07:00,29.1,74,21.8,0,0,4.9,6.7 +2022-03-03T08:00,37.4,55,22.6,0,0,4.1,7.6 +2022-03-03T09:00,46,47,26.6,0,0,3,8.3 +2022-03-03T10:00,53.3,36,26.8,0,0,3,8.7 +2022-03-03T11:00,58.7,29,26.2,0,0,3.6,10.1 +2022-03-03T12:00,62.2,26,26.7,0,0,4.9,12.1 +2022-03-03T13:00,64.7,23,26.4,0,0,5.1,12.3 +2022-03-03T14:00,66,22,26.5,0,0,5.1,12.3 +2022-03-03T15:00,65.4,29,32.1,0,0,6.7,13.4 +2022-03-03T16:00,61.4,36,34.1,0,0,9,15.9 +2022-03-03T17:00,59.1,46,38.5,0,0,5.7,15.7 +2022-03-03T18:00,52.4,48,33.5,0,0,7.4,11.4 +2022-03-03T19:00,45.7,53,29.3,0,0,7.5,11.9 +2022-03-03T20:00,42.2,61,29.7,0,0,6.5,8.9 +2022-03-03T21:00,39.7,66,29.1,0,0,5.9,7.6 +2022-03-03T22:00,37.8,71,29.1,0,0,3.5,7.2 +2022-03-03T23:00,32.6,86,28.9,0,0,4.1,6 +2022-03-04T00:00,35.5,73,27.8,0,0,4.5,6.3 +2022-03-04T01:00,38.8,60,26.3,0,0,1.5,5.6 +2022-03-04T02:00,29.5,80,24.1,0,0,4.2,4.9 +2022-03-04T03:00,27.8,80,22.6,0,0,5.3,6 +2022-03-04T04:00,28.1,75,21.2,0,0,5.7,6.9 +2022-03-04T05:00,27.6,73,20.2,0,0,6.1,6.9 +2022-03-04T06:00,28,69,19,0,0,6.3,7.6 +2022-03-04T07:00,30.2,64,19.6,0,0,5.1,7.8 +2022-03-04T08:00,37.8,51,21.1,0,0,4.3,7.4 +2022-03-04T09:00,47.1,43,25.5,0,0,3.8,8.7 +2022-03-04T10:00,53.5,39,29,0,0,2.9,8.5 +2022-03-04T11:00,57.7,32,28,0,0,5.9,10.7 +2022-03-04T12:00,61,27,26.6,0,0,6.5,12.5 +2022-03-04T13:00,61.8,24,24.8,0,0,4.7,12.3 +2022-03-04T14:00,63,21,21.9,0,0,5.9,11.2 +2022-03-04T15:00,63.2,20,21.9,0,0,10.4,18.6 +2022-03-04T16:00,62.4,18,19,0,0,11.2,19.7 +2022-03-04T17:00,57.2,33,28.2,0,0,4.6,19 +2022-03-04T18:00,47.8,40,24.4,0,0,7.4,8.9 +2022-03-04T19:00,46.5,43,25.2,0,0,4.8,9.8 +2022-03-04T20:00,43.5,49,25.7,0,0,3.6,6 +2022-03-04T21:00,41.1,58,27.4,0,0,3.6,6.5 +2022-03-04T22:00,41.6,64,30.5,0,0,15.8,28.2 +2022-03-04T23:00,43.9,56,29.3,0,0,10.2,25.5 +2022-03-05T00:00,40.6,68,31,0,0,7.7,16.1 +2022-03-05T01:00,38.8,76,31.7,0,0,8.7,14.5 +2022-03-05T02:00,35.2,88,32.1,0,0,7.2,14.1 +2022-03-05T03:00,34.8,88,31.6,0,0,4.7,11.4 +2022-03-05T04:00,35.1,83,30.6,0,0,5.3,9.2 +2022-03-05T05:00,34.7,88,31.5,0,0,1.8,8.3 +2022-03-05T06:00,34.3,90,31.7,0.004,0.055,1.4,3.1 +2022-03-05T07:00,33.2,92,31,0,0,6.9,9.8 +2022-03-05T08:00,34,82,29,0,0,9.5,16.3 +2022-03-05T09:00,33.4,80,27.9,0,0.028,10,17.7 +2022-03-05T10:00,33.3,77,27,0,0.028,9.7,17.7 +2022-03-05T11:00,34.1,68,24.7,0,0,10.7,19.5 +2022-03-05T12:00,35,63,23.5,0,0,10.4,20.1 +2022-03-05T13:00,35.9,59,23.1,0,0,10,19.9 +2022-03-05T14:00,35.2,60,22.6,0,0.028,11.3,20.4 +2022-03-05T15:00,33.5,57,19.8,0.004,0,11.3,21.7 +2022-03-05T16:00,32.9,55,18.7,0,0,9.1,20.6 +2022-03-05T17:00,30.4,59,17.6,0,0,6,16.8 +2022-03-05T18:00,29.3,60,17,0,0,5.7,11.2 +2022-03-05T19:00,28.5,61,16.7,0,0.055,3.2,10.3 +2022-03-05T20:00,27.7,64,17.2,0,0.386,1.3,6.3 +2022-03-05T21:00,26.6,71,18.5,0,0.469,3.5,6.3 +2022-03-05T22:00,25.9,73,18.4,0,0.165,5.8,9.8 +2022-03-05T23:00,25,71,17.1,0,0.055,5.3,10.1 +2022-03-06T00:00,24.3,73,16.7,0,0,3.4,8.7 +2022-03-06T01:00,24,71,16.1,0,0,3.9,6.5 +2022-03-06T02:00,23.9,71,15.9,0,0,3.1,7.2 +2022-03-06T03:00,23.5,72,15.7,0,0,3,6.5 +2022-03-06T04:00,23.4,70,15.1,0,0,4.1,7.6 +2022-03-06T05:00,21.2,70,13,0,0,5.5,9.2 +2022-03-06T06:00,21,71,13,0,0,5,10.3 +2022-03-06T07:00,21,71,13.1,0,0.028,5.3,10.1 +2022-03-06T08:00,21.5,71,13.5,0,0.028,5.7,11.2 +2022-03-06T09:00,22.2,69,13.6,0,0.055,6.5,12.8 +2022-03-06T10:00,23,66,13.3,0,0.055,6.5,13.4 +2022-03-06T11:00,22.9,65,12.8,0,0.055,7.2,13.9 +2022-03-06T12:00,24.2,63,13.6,0,0.11,6.7,14.5 +2022-03-06T13:00,25.1,62,13.7,0,0.165,7.9,15.7 +2022-03-06T14:00,25.7,60,13.6,0,0.083,8.6,16.6 +2022-03-06T15:00,25.3,60,13.4,0,0.11,9.3,17.2 +2022-03-06T16:00,24.5,61,13.1,0,0.055,11,19 +2022-03-06T17:00,21.7,72,14.2,0,0.083,11.9,20.4 +2022-03-06T18:00,21.5,72,13.9,0,0.11,10.7,19.9 +2022-03-06T19:00,20.5,70,12.4,0,0.055,9,17.9 +2022-03-06T20:00,19.9,71,12,0,0.028,8.3,15.2 +2022-03-06T21:00,19.5,68,10.7,0,0.028,7.9,14.3 +2022-03-06T22:00,18.7,63,8.2,0,0,7,13.9 +2022-03-06T23:00,17.4,64,7.4,0,0,4.7,12.1 +2022-03-07T00:00,16.9,63,6.6,0,0,2.4,7.6 +2022-03-07T01:00,16.5,66,7.3,0,0,4.3,7.6 +2022-03-07T02:00,16.3,67,7.3,0,0,4,7.8 +2022-03-07T03:00,15.9,66,6.5,0,0,2.9,7.2 +2022-03-07T04:00,15.4,66,5.9,0,0,1.6,5.6 +2022-03-07T05:00,15.3,68,6.5,0,0,1.3,4.5 +2022-03-07T06:00,15.4,68,6.5,0,0,2.5,5.4 +2022-03-07T07:00,16,67,6.8,0,0,4.7,8.9 +2022-03-07T08:00,17.4,58,5.3,0,0,5.7,11.9 +2022-03-07T09:00,19.5,51,4.5,0,0,4.7,12.8 +2022-03-07T10:00,22.6,43,3.6,0,0,3,12.3 +2022-03-07T11:00,25.4,37,2.8,0,0,2.3,11.4 +2022-03-07T12:00,27.5,34,2.9,0,0,2.8,11.6 +2022-03-07T13:00,29.1,32,3.2,0,0,2.7,11.9 +2022-03-07T14:00,30.5,31,3.5,0,0,2.6,11.4 +2022-03-07T15:00,31,31,3.7,0,0,4.3,11.9 +2022-03-07T16:00,30.1,33,4.2,0,0,4.5,12.1 +2022-03-07T17:00,27,47,9.4,0,0,1.6,11 +2022-03-07T18:00,26.3,50,10.2,0,0.028,0.8,3.8 +2022-03-07T19:00,21.9,64,11.5,0,0,2.8,4.7 +2022-03-07T20:00,19.4,74,12.4,0,0,3.4,5.6 +2022-03-07T21:00,17.7,77,11.8,0,0,4,6 +2022-03-07T22:00,15.6,75,9.1,0,0,5.2,8.1 +2022-03-07T23:00,14.5,71,6.8,0,0,5.7,9.2 +2022-03-08T00:00,15.3,65,5.5,0,0,5.6,9.2 +2022-03-08T01:00,15.6,59,3.9,0,0,5.3,8.7 +2022-03-08T02:00,15.1,55,1.9,0,0,5.6,8.3 +2022-03-08T03:00,15.8,49,-0.1,0,0,8.4,12.5 +2022-03-08T04:00,18.1,43,-0.8,0,0,6.8,13 +2022-03-08T05:00,16.2,48,-0.2,0,0,7.7,10.1 +2022-03-08T06:00,17.4,43,-1.2,0,0,6.5,9.6 +2022-03-08T07:00,19.9,38,-1.7,0,0,3.1,8.1 +2022-03-08T08:00,24.4,31,-1.9,0,0,1.9,7.8 +2022-03-08T09:00,28.9,26,-1.7,0,0,4.3,10.7 +2022-03-08T10:00,31.8,23,-1.6,0,0,5.6,13.9 +2022-03-08T11:00,34.2,20,-2.9,0,0,3.6,13.9 +2022-03-08T12:00,35.8,19,-2.5,0,0,2.1,12.1 +2022-03-08T13:00,36.8,19,-1.9,0,0,0.8,10.3 +2022-03-08T14:00,37.6,20,-0.4,0,0,1,8.7 +2022-03-08T15:00,38,19,-0.2,0,0,5.6,12.8 +2022-03-08T16:00,37.4,19,-1.2,0,0,8.1,15.2 +2022-03-08T17:00,34.7,27,4.1,0,0,3.8,15.2 +2022-03-08T18:00,29.8,33,4.5,0,0,4.9,6.3 +2022-03-08T19:00,27.4,40,6.1,0,0,3.6,6 +2022-03-08T20:00,21.8,55,8.2,0,0,4.1,5.6 +2022-03-08T21:00,22,57,9.2,0,0,1.8,6.3 +2022-03-08T22:00,21,59,8.9,0,0,6.7,12.1 +2022-03-08T23:00,20.6,62,9.5,0,0,2.4,10.5 +2022-03-09T00:00,19,65,9.3,0,0,3,4.5 +2022-03-09T01:00,17.2,71,9.5,0,0,2.6,4 +2022-03-09T02:00,17.3,68,8.5,0,0,4.6,7.2 +2022-03-09T03:00,17.1,66,7.7,0,0,4.5,8.3 +2022-03-09T04:00,16.1,74,9.1,0,0,8.1,12.5 +2022-03-09T05:00,17.6,72,10.2,0,0,9.6,16.1 +2022-03-09T06:00,17.7,72,10.2,0,0,9.3,17 +2022-03-09T07:00,17.2,69,8.6,0,0.028,9.4,16.6 +2022-03-09T08:00,17.2,65,7.5,0,0.028,10.1,17.9 +2022-03-09T09:00,17.1,65,7.4,0,0.028,11.5,20.6 +2022-03-09T10:00,18.1,62,7.3,0,0.028,12.4,22.6 +2022-03-09T11:00,19,60,7.4,0,0,13.3,24.2 +2022-03-09T12:00,20.5,56,7.4,0,0,13.5,25.5 +2022-03-09T13:00,21,57,8,0,0,12.6,25.3 +2022-03-09T14:00,20.8,58,8.3,0,0,13,24.8 +2022-03-09T15:00,20.8,56,7.8,0.004,0,11.7,24.4 +2022-03-09T16:00,19.5,60,7.8,0,0.028,10.6,21.9 +2022-03-09T17:00,11.3,68,2.7,0,0.028,7.6,20.4 +2022-03-09T18:00,10.9,66,1.8,0,0.055,7.8,14.1 +2022-03-09T19:00,10.1,69,1.9,0,0.083,8.7,15.7 +2022-03-09T20:00,9.8,69,1.7,0,0.11,6,15.7 +2022-03-09T21:00,8.8,74,2.1,0,0.083,3,11.6 +2022-03-09T22:00,8,74,1.4,0,0.083,4.2,7.6 +2022-03-09T23:00,6.4,74,0,0,0,3.9,7.6 +2022-03-10T00:00,3.9,76,-1.8,0,0,3.3,7.2 +2022-03-10T01:00,3.4,74,-3,0,0,4.1,6.7 +2022-03-10T02:00,1.6,77,-4.1,0,0,4.9,6.9 +2022-03-10T03:00,-0.8,80,-5.4,0,0,6,8.3 +2022-03-10T04:00,0.5,80,-4.1,0,0,5.9,8.3 +2022-03-10T05:00,3.8,72,-3.1,0,0,6.1,9.2 +2022-03-10T06:00,0.6,75,-5.5,0,0,4.6,10.1 +2022-03-10T07:00,-1.2,76,-6.9,0,0,5.2,8.9 +2022-03-10T08:00,3.8,71,-3.4,0,0,3.3,7.4 +2022-03-10T09:00,6.2,67,-2.5,0,0,4.7,8.3 +2022-03-10T10:00,9.1,61,-1.7,0,0,4.8,9.6 +2022-03-10T11:00,11,60,-0.2,0,0,7.2,13.2 +2022-03-10T12:00,12.8,59,1,0,0,7.3,13.6 +2022-03-10T13:00,14.1,58,1.9,0,0,6.9,13.4 +2022-03-10T14:00,15.7,57,3.1,0,0,5.8,13 +2022-03-10T15:00,16.9,55,3.5,0,0,4.3,11 +2022-03-10T16:00,17.3,57,4.7,0,0,3.4,8.1 +2022-03-10T17:00,16.5,59,4.6,0,0,4.7,6.5 +2022-03-10T18:00,13.6,58,1.4,0,0,4.3,8.5 +2022-03-10T19:00,13,60,1.9,0,0,3.2,5.6 +2022-03-10T20:00,11.9,65,2.4,0,0,4.1,6.9 +2022-03-10T21:00,8.7,70,1,0,0,5.6,8.1 +2022-03-10T22:00,6.5,70,-1.1,0,0,5.5,7.8 +2022-03-10T23:00,2.1,59,-8.9,0,0,6.2,8.7 +2022-03-11T00:00,3,47,-12.6,0,0,6.2,8.5 +2022-03-11T01:00,-0.2,48,-15.1,0,0,6.7,8.9 +2022-03-11T02:00,-1.8,51,-15.7,0,0,6.8,9.4 +2022-03-11T03:00,1.7,46,-14.3,0,0,5.4,9.2 +2022-03-11T04:00,-7.7,58,-18.5,0,0,7.4,9.6 +2022-03-11T05:00,-4.5,65,-13.2,0,0,5.6,11.9 +2022-03-11T06:00,-7.7,61,-17.7,0,0,5.7,8.9 +2022-03-11T07:00,-5.6,56,-17.4,0,0,5.1,8.3 +2022-03-11T08:00,6.4,38,-13.9,0,0,5.5,8.1 +2022-03-11T09:00,11.7,46,-5.1,0,0,4.8,8.3 +2022-03-11T10:00,24.9,20,-10.9,0,0,1.7,7.6 +2022-03-11T11:00,27.6,35,3.5,0,0,1.5,4.5 +2022-03-11T12:00,29.8,33,4.1,0,0,2.9,5.6 +2022-03-11T13:00,31.5,34,6.3,0,0,3.6,7.4 +2022-03-11T14:00,32.3,35,7.6,0,0,3.6,7.8 +2022-03-11T15:00,32.3,39,10,0,0,3.3,8.1 +2022-03-11T16:00,29.8,52,14.2,0,0,4.4,6.9 +2022-03-11T17:00,29.6,44,10.4,0,0,5.4,6.9 +2022-03-11T18:00,19.9,57,7.2,0,0,6.5,10.7 +2022-03-11T19:00,22.2,48,5.3,0,0,4.7,11 +2022-03-11T20:00,10.9,64,1,0,0,8.2,11.2 +2022-03-11T21:00,15.4,57,2.9,0,0,7.4,12.1 +2022-03-11T22:00,15.4,59,3.7,0,0,7.7,12.8 +2022-03-11T23:00,13.5,64,3.7,0,0,8.9,13.6 +2022-03-12T00:00,16,62,5.2,0,0,11,17.4 +2022-03-12T01:00,18.2,60,6.8,0,0,10,17.9 +2022-03-12T02:00,17.9,64,7.6,0,0,9.9,16.1 +2022-03-12T03:00,17.7,66,8.2,0,0,10,15.9 +2022-03-12T04:00,17.6,68,8.8,0,0,10.9,16.8 +2022-03-12T05:00,19.9,68,11,0,0,10.1,17.7 +2022-03-12T06:00,20.1,67,10.9,0,0,10,16.6 +2022-03-12T07:00,21.1,67,11.8,0,0,7.3,16.1 +2022-03-12T08:00,27.5,58,14.8,0,0,5.4,11.6 +2022-03-12T09:00,35.2,58,21.7,0,0,4.6,9.6 +2022-03-12T10:00,40.4,47,21.8,0,0,4.2,8.5 +2022-03-12T11:00,49.5,26,15.7,0,0,10.5,19.7 +2022-03-12T12:00,52.2,24,16.5,0,0,9.4,20.1 +2022-03-12T13:00,54.6,22,16.9,0,0,3.5,18.1 +2022-03-12T14:00,55.9,22,17.6,0,0,5.8,12.3 +2022-03-12T15:00,56.6,21,17.2,0,0,8.2,15.2 +2022-03-12T16:00,55.8,23,18.7,0,0,7.5,15.7 +2022-03-12T17:00,50.5,32,21.9,0,0,9,12.8 +2022-03-12T18:00,44.9,38,20.7,0,0,7.5,15.9 +2022-03-12T19:00,37.7,51,21,0,0,5.5,11.6 +2022-03-12T20:00,33.4,60,21,0,0,7.2,9.4 +2022-03-12T21:00,35.7,53,20,0,0,3.7,8.7 +2022-03-12T22:00,28.6,69,19.8,0,0,3.6,5.1 +2022-03-12T23:00,28,71,19.9,0,0,5.9,8.7 +2022-03-13T00:00,27,76,20.5,0,0,4.3,8.7 +2022-03-13T01:00,25.6,80,20.2,0,0,4.7,6.7 +2022-03-13T02:00,24.3,82,19.6,0,0,3.5,5.6 +2022-03-13T03:00,24.7,77,18.6,0,0,3.4,5.4 +2022-03-13T04:00,24.4,75,17.5,0,0,3.5,5.8 +2022-03-13T05:00,21,82,16.3,0,0,6.7,5.8 +2022-03-13T06:00,22.9,77,16.7,0,0,2.6,7.8 +2022-03-13T07:00,24.4,72,16.8,0,0,4.7,7.8 +2022-03-13T08:00,31.8,59,19.1,0,0,2.9,8.1 +2022-03-13T09:00,40.9,45,20.9,0,0,1.9,8.1 +2022-03-13T10:00,48.6,35,21.9,0,0,2.2,8.3 +2022-03-13T11:00,53.9,28,21.2,0,0,4.3,11.6 +2022-03-13T12:00,57.1,24,20.4,0,0,3.9,11.9 +2022-03-13T13:00,58.8,23,21.3,0,0,4.9,12.5 +2022-03-13T14:00,59.3,24,22.8,0,0,9,17.2 +2022-03-13T15:00,58.2,25,22.8,0,0,11.7,21.3 +2022-03-13T16:00,56.1,27,22.4,0,0,10.7,21.3 +2022-03-13T17:00,51.1,45,30.5,0,0,4.4,18.3 +2022-03-13T18:00,45,60,31.8,0,0,4.5,10.7 +2022-03-13T19:00,39.9,74,32.2,0,0,3.9,7.4 +2022-03-13T20:00,37.9,72,29.6,0,0,5.1,6.7 +2022-03-13T21:00,38.9,66,28.5,0,0,3.3,6.7 +2022-03-13T22:00,36.7,83,32,0.004,0,3.2,5.6 +2022-03-13T23:00,34.4,93,32.6,0,0,3.5,5.6 +2022-03-14T00:00,32.6,97,31.9,0,0,4.3,6.3 +2022-03-14T01:00,31.2,91,28.9,0,0,4.4,6.3 +2022-03-14T02:00,34.2,60,21.7,0,0,8,11.2 +2022-03-14T03:00,35.3,51,18.9,0,0,10.7,19.9 +2022-03-14T04:00,31.7,56,17.8,0,0,6.8,17.2 +2022-03-14T05:00,26.5,74,19.4,0,0,7,10.7 +2022-03-14T06:00,31.9,60,19.8,0,0,3.4,8.5 +2022-03-14T07:00,32.6,64,21.7,0,0,1.7,4.5 +2022-03-14T08:00,33.5,63,22.3,0,0,4.1,11.2 +2022-03-14T09:00,37.3,55,22.6,0,0,0.5,8.9 +2022-03-14T10:00,41.7,47,22.8,0,0,2.7,9.2 +2022-03-14T11:00,45.9,39,22.1,0,0,4.3,12.5 +2022-03-14T12:00,48.4,31,19.1,0,0,4.3,12.5 +2022-03-14T13:00,49.8,28,17.8,0,0,5.6,14.1 +2022-03-14T14:00,50.9,26,17.6,0,0,5,14.1 +2022-03-14T15:00,51.4,26,17.9,0,0,4,13 +2022-03-14T16:00,50.9,26,17.1,0,0,3.6,11 +2022-03-14T17:00,50.5,43,28.9,0,0,2,9.2 +2022-03-14T18:00,48.7,31,19.7,0,0,2.8,3.1 +2022-03-14T19:00,43.1,40,20.4,0,0,3.8,4.9 +2022-03-14T20:00,35,55,20.6,0,0,4.7,6 +2022-03-14T21:00,30,70,21.6,0,0,3.7,6.3 +2022-03-14T22:00,28.9,72,20.9,0,0,5.3,8.1 +2022-03-14T23:00,28.3,70,19.8,0,0,5.5,8.7 +2022-03-15T00:00,27.3,69,18.6,0,0,5.2,9.2 +2022-03-15T01:00,26.2,68,17.2,0,0,4.4,8.1 +2022-03-15T02:00,26,64,15.6,0,0,5,8.1 +2022-03-15T03:00,25.3,61,13.9,0,0,4.6,8.1 +2022-03-15T04:00,25.1,59,12.7,0,0,4.3,6.9 +2022-03-15T05:00,23.8,61,12.3,0,0,5.2,6.9 +2022-03-15T06:00,24.5,58,11.8,0,0,3.9,6.3 +2022-03-15T07:00,27.8,52,12.5,0,0,5.1,7.2 +2022-03-15T08:00,34.7,47,16.4,0,0,4.2,9.6 +2022-03-15T09:00,43.3,36,18.4,0,0,2.4,9.2 +2022-03-15T10:00,51,28,19.3,0,0,3.5,10.1 +2022-03-15T11:00,57.3,19,15.7,0,0,4.5,11.6 +2022-03-15T12:00,61.4,15,13.1,0,0,5.6,13.2 +2022-03-15T13:00,64.2,13,12.7,0,0,5.3,13.2 +2022-03-15T14:00,66,12,11.8,0,0,5.5,13.2 +2022-03-15T15:00,66.5,12,12.7,0,0,4.5,12.8 +2022-03-15T16:00,65.8,13,13.6,0,0,3.6,10.5 +2022-03-15T17:00,61.1,26,26.2,0,0,5.6,7.8 +2022-03-15T18:00,50.1,46,30.2,0,0,7.4,9.2 +2022-03-15T19:00,44.4,50,27.1,0,0,6.5,8.7 +2022-03-15T20:00,41.5,48,23.5,0,0,5.1,8.5 +2022-03-15T21:00,36.5,58,23.3,0,0,5.4,7.8 +2022-03-15T22:00,35.8,61,23.5,0,0,5.2,7.6 +2022-03-15T23:00,34.3,64,23.3,0,0,6.6,7.6 +2022-03-16T00:00,35.1,60,22.6,0,0,6.7,8.1 +2022-03-16T01:00,34.5,61,22.6,0,0,6.3,8.1 +2022-03-16T02:00,34.7,60,22.4,0,0,5,8.1 +2022-03-16T03:00,36,58,22.6,0,0,4.6,7.6 +2022-03-16T04:00,33.2,65,22.7,0,0,4,6.9 +2022-03-16T05:00,32.7,71,24.4,0,0,4.2,5.6 +2022-03-16T06:00,31.1,75,24,0,0,4.1,7.2 +2022-03-16T07:00,32.7,70,23.9,0,0,4.8,6.3 +2022-03-16T08:00,38.4,58,24.7,0,0,2.3,7.6 +2022-03-16T09:00,43.6,47,24.9,0,0,3,7.6 +2022-03-16T10:00,48.5,39,24.7,0,0,1.1,8.7 +2022-03-16T11:00,51,37,25.3,0,0,6.9,12.5 +2022-03-16T12:00,50.1,42,28.1,0,0,10,17.9 +2022-03-16T13:00,50.5,45,30.1,0,0,10.6,20.1 +2022-03-16T14:00,50.9,48,31.7,0,0,9.9,20.6 +2022-03-16T15:00,47.5,56,32.5,0.004,0,10.8,19.9 +2022-03-16T16:00,45.6,62,33.2,0.004,0,9.9,19.5 +2022-03-16T17:00,47.1,57,32.5,0.016,0,4.3,17.4 +2022-03-16T18:00,43.7,71,35.1,0.004,0,8.5,12.8 +2022-03-16T19:00,41.3,85,37,0.012,0,10.1,15.9 +2022-03-16T20:00,37.8,93,35.9,0.039,0,10.3,17.2 +2022-03-16T21:00,35.1,100,35,0.039,0.193,8.7,16.8 +2022-03-16T22:00,34.5,100,34.5,0.024,0.606,9.7,16.3 +2022-03-16T23:00,34.4,100,34.3,0.02,0.606,8,15.9 +2022-03-17T00:00,34.4,100,34.3,0.02,0.331,7.2,13 +2022-03-17T01:00,34.2,99,34,0.012,0.193,7.6,11.6 +2022-03-17T02:00,34,98,33.5,0.012,0.028,9.4,15 +2022-03-17T03:00,33.8,95,32.5,0.008,0.028,9.8,15.7 +2022-03-17T04:00,33.3,91,30.9,0,0.11,12,18.8 +2022-03-17T05:00,31.7,96,30.8,0,0.358,13.3,22.8 +2022-03-17T06:00,31,96,30,0,0.386,13.4,22.4 +2022-03-17T07:00,30.8,95,29.5,0,0.331,12.8,21.9 +2022-03-17T08:00,31,93,29.2,0,0.22,12.2,20.8 +2022-03-17T09:00,31.4,92,29.4,0,0.165,11.5,20.6 +2022-03-17T10:00,31.9,90,29.4,0,0.193,10.9,18.8 +2022-03-17T11:00,32.6,87,29.2,0,0.138,11.9,20.1 +2022-03-17T12:00,33.4,81,28.1,0,0.083,10.8,19.2 +2022-03-17T13:00,34.6,74,27.1,0,0.083,9.5,17.9 +2022-03-17T14:00,35.2,70,26.5,0,0.028,7.4,15.9 +2022-03-17T15:00,35.2,69,26.1,0,0.028,5.1,12.8 +2022-03-17T16:00,34.9,71,26.5,0,0,2.9,9.2 +2022-03-17T17:00,31.4,88,28.2,0,0,2.7,5.6 +2022-03-17T18:00,27.4,88,24.4,0,0,4.1,7.6 +2022-03-17T19:00,26.9,87,23.6,0,0,4.3,6.7 +2022-03-17T20:00,26.2,89,23.5,0,0,4.2,6.7 +2022-03-17T21:00,27.2,89,24.5,0,0.028,3.8,6.5 +2022-03-17T22:00,26.1,90,23.6,0,0.028,4.5,6 +2022-03-17T23:00,24.6,89,21.7,0,0.028,4.3,5.8 +2022-03-18T00:00,20.6,92,18.5,0,0,4.5,5.6 +2022-03-18T01:00,13.3,95,12,0,0,6.2,7.8 +2022-03-18T02:00,10.3,90,7.9,0,0,6.6,8.3 +2022-03-18T03:00,6.3,87,3.3,0,0,5.9,8.5 +2022-03-18T04:00,3.7,84,0,0,0,5.9,7.8 +2022-03-18T05:00,6.7,79,1.6,0,0,5.8,8.9 +2022-03-18T06:00,7.6,73,0.8,0,0,7.6,10.7 +2022-03-18T07:00,9.7,70,1.9,0,0,7.7,11 +2022-03-18T08:00,16.5,69,8.2,0,0,6,9.8 +2022-03-18T09:00,26.3,63,15.6,0,0,3.2,8.1 +2022-03-18T10:00,32,67,22.4,0,0,6.3,10.3 +2022-03-18T11:00,35.7,66,25.6,0,0,6.4,11.2 +2022-03-18T12:00,39,55,24.3,0,0,4.8,10.1 +2022-03-18T13:00,40.4,49,22.6,0,0,3.8,8.5 +2022-03-18T14:00,40.2,53,24.4,0,0,4.8,7.2 +2022-03-18T15:00,40.7,49,23,0,0,4.7,7.2 +2022-03-18T16:00,40,50,22.9,0,0,5.8,8.5 +2022-03-18T17:00,45.2,36,19.9,0,0,1.6,10.3 +2022-03-18T18:00,33.8,54,19,0,0,8.3,12.1 +2022-03-18T19:00,29.1,56,15.2,0,0,9.2,11.6 +2022-03-18T20:00,28.7,52,13.3,0,0,6.5,11.2 +2022-03-18T21:00,22.1,67,12.7,0,0,6.1,8.1 +2022-03-18T22:00,20.6,79,15.1,0,0,5.6,8.7 +2022-03-18T23:00,19.1,80,14.1,0,0,6.5,11 +2022-03-19T00:00,17.2,76,11.1,0,0,5.4,10.7 +2022-03-19T01:00,14.8,77,8.8,0,0,6.5,9.6 +2022-03-19T02:00,13.2,75,6.7,0,0,7.7,10.1 +2022-03-19T03:00,14.5,68,6,0,0,7.1,10.5 +2022-03-19T04:00,13.2,69,4.9,0,0,8.1,11 +2022-03-19T05:00,18.3,70,10.1,0,0,8,11.2 +2022-03-19T06:00,17.4,72,9.9,0,0,7.2,12.8 +2022-03-19T07:00,19.2,71,11.5,0,0,6.1,12.1 +2022-03-19T08:00,24.4,73,16.8,0,0,4.3,10.1 +2022-03-19T09:00,32.6,66,22.6,0,0,3.8,7.6 +2022-03-19T10:00,37.3,62,25.5,0,0,4.5,8.5 +2022-03-19T11:00,41.2,58,27.6,0,0,3.9,8.5 +2022-03-19T12:00,43.9,53,27.7,0,0,4.3,8.3 +2022-03-19T13:00,45.6,47,26.7,0,0,4.8,8.9 +2022-03-19T14:00,55,22,16.9,0,0,8.4,16.1 +2022-03-19T15:00,53.8,29,22.5,0,0,10.4,18.6 +2022-03-19T16:00,50.7,43,29,0,0,9.9,18.6 +2022-03-19T17:00,46.1,68,36.3,0,0,4.9,16.3 +2022-03-19T18:00,43,63,31.2,0,0,5.5,7.4 +2022-03-19T19:00,36.5,71,28,0,0,5,6.9 +2022-03-19T20:00,33.4,75,26.2,0,0,4.3,6.3 +2022-03-19T21:00,29.7,82,24.9,0,0,6,8.7 +2022-03-19T22:00,29.2,79,23.4,0,0,7.4,11 +2022-03-19T23:00,30,71,21.8,0,0,6.9,11.4 +2022-03-20T00:00,30.3,68,20.8,0,0,5.6,10.7 +2022-03-20T01:00,29.2,70,20.8,0,0,4.6,8.5 +2022-03-20T02:00,26,78,19.9,0,0,3.2,6.7 +2022-03-20T03:00,24.8,78,19,0,0,2.7,4.9 +2022-03-20T04:00,24.1,78,18.2,0,0,2.7,4.5 +2022-03-20T05:00,21.6,80,16.4,0,0,6.8,5.1 +2022-03-20T06:00,25.8,71,17.6,0,0,3.9,8.1 +2022-03-20T07:00,29.3,64,18.7,0,0,6.5,9.6 +2022-03-20T08:00,36.1,58,22.9,0,0,6,11.2 +2022-03-20T09:00,45.4,50,27.7,0,0,5,11.4 +2022-03-20T10:00,52.2,36,26,0,0,6.8,14.1 +2022-03-20T11:00,56.2,27,23,0,0,10.3,18.6 +2022-03-20T12:00,57.7,26,23.3,0,0,13.5,23.5 +2022-03-20T13:00,59.1,23,21.7,0,0,14,24.8 +2022-03-20T14:00,60.4,21,20,0,0,12.6,24.8 +2022-03-20T15:00,60.7,20,19.6,0,0,11,22.1 +2022-03-20T16:00,59.7,22,20.9,0,0,6.9,19 +2022-03-20T17:00,56.3,30,25.2,0,0,6.1,11.9 +2022-03-20T18:00,50.9,30,20.5,0,0,8.5,15 +2022-03-20T19:00,45.6,40,22.8,0,0,7.2,13.4 +2022-03-20T20:00,44.8,45,24.6,0,0,8.1,13 +2022-03-20T21:00,42.2,52,25.7,0,0,7.6,13.2 +2022-03-20T22:00,38,64,26.8,0,0,6.8,12.1 +2022-03-20T23:00,38.1,63,26.6,0,0,6,7.8 +2022-03-21T00:00,38.3,63,26.7,0,0,4.1,7.2 +2022-03-21T01:00,36.9,68,27.4,0,0,1.6,6.7 +2022-03-21T02:00,32.5,79,26.7,0,0,5.7,6.5 +2022-03-21T03:00,33.9,71,25.3,0,0,5.9,7.6 +2022-03-21T04:00,35.7,71,27.2,0,0,6.9,10.1 +2022-03-21T05:00,33.1,78,26.9,0,0,4.4,13.9 +2022-03-21T06:00,33.6,72,25.5,0,0,7.3,12.1 +2022-03-21T07:00,32.6,71,24.4,0,0,5.9,11.9 +2022-03-21T08:00,32,70,23.5,0,0.028,5.9,10.3 +2022-03-21T09:00,31.3,74,23.8,0,0.138,4.2,10.5 +2022-03-21T10:00,32.1,70,23.5,0,0.11,5.1,10.1 +2022-03-21T11:00,32.9,66,22.8,0,0.083,6.7,14.1 +2022-03-21T12:00,34.5,66,24.2,0,0.083,5.6,13.2 +2022-03-21T13:00,34.7,65,24,0,0.083,2.7,12.3 +2022-03-21T14:00,36.1,61,24.1,0,0.055,4.5,11 +2022-03-21T15:00,38,56,23.9,0,0,5.4,13.9 +2022-03-21T16:00,38.7,54,23.4,0,0,6.8,13.6 +2022-03-21T17:00,39,56,24.7,0,0,7.3,13.6 +2022-03-21T18:00,37.8,44,17.9,0,0,10.1,15.7 +2022-03-21T19:00,36.2,45,16.7,0,0,13.8,21.5 +2022-03-21T20:00,34.5,48,17,0,0,13.6,22.8 +2022-03-21T21:00,33.4,48,16.1,0,0,13.1,21.7 +2022-03-21T22:00,31.6,50,14.9,0,0,11.9,21 +2022-03-21T23:00,28.7,54,14,0,0,9.8,19.2 +2022-03-22T00:00,27.9,55,13.7,0,0,9.7,15.9 +2022-03-22T01:00,27.8,53,13,0,0,9.1,15.7 +2022-03-22T02:00,27,53,12,0,0,7.4,15 +2022-03-22T03:00,26.7,52,11.3,0,0,6.6,11.9 +2022-03-22T04:00,25.9,53,11.1,0,0,4.8,10.7 +2022-03-22T05:00,24.4,59,11.9,0,0,4.5,7.8 +2022-03-22T06:00,23.7,61,12.3,0,0,5,8.3 +2022-03-22T07:00,27.8,53,13,0,0,8.6,13.2 +2022-03-22T08:00,34.8,44,15,0,0,9,14.3 +2022-03-22T09:00,38.4,35,12.8,0,0,18.6,29.1 +2022-03-22T10:00,40.6,34,14.2,0,0,23.2,38.5 +2022-03-22T11:00,40,36,15.4,0,0.028,22.9,39.1 +2022-03-22T12:00,41.5,34,14.9,0,0.028,20.9,38 +2022-03-22T13:00,42.6,30,13.6,0,0.028,20.8,35.8 +2022-03-22T14:00,42.3,31,13.6,0,0,22.2,37.4 +2022-03-22T15:00,41.7,37,17.5,0,0,21.9,38 +2022-03-22T16:00,41.5,33,14.3,0,0,20.1,37.8 +2022-03-22T17:00,40.9,31,12.2,0,0,15.5,33.3 +2022-03-22T18:00,37,45,17.4,0,0,12.1,25.9 +2022-03-22T19:00,33.5,63,22.3,0,0,10.9,21.7 +2022-03-22T20:00,31.6,70,22.7,0,0,4.9,17.4 +2022-03-22T21:00,26.5,76,20.1,0,0,2.9,8.5 +2022-03-22T22:00,25.6,73,18.1,0,0,3.2,5.6 +2022-03-22T23:00,24.8,69,16.2,0,0,4.4,5.6 +2022-03-23T00:00,25.2,61,13.6,0,0,4.5,6.5 +2022-03-23T01:00,25.8,56,12.2,0,0,5,7.6 +2022-03-23T02:00,24.6,59,12.2,0,0,5.4,7.8 +2022-03-23T03:00,25,57,11.8,0,0,5,7.8 +2022-03-23T04:00,24.5,57,11.6,0,0,5.2,7.8 +2022-03-23T05:00,23.1,60,11.3,0,0,7.4,8.5 +2022-03-23T06:00,24.5,55,10.8,0,0,6.8,9.4 +2022-03-23T07:00,30.7,45,11.7,0,0,4.9,8.9 +2022-03-23T08:00,36.8,39,13.9,0,0,5.5,11.4 +2022-03-23T09:00,41.7,32,13.9,0,0,8.4,16.3 +2022-03-23T10:00,46.8,28,15.3,0,0,14.8,23.5 +2022-03-23T11:00,48.4,21,10,0,0,25.3,42.7 +2022-03-23T12:00,49.6,20,10.3,0,0,23.5,43 +2022-03-23T13:00,51.1,20,10.9,0,0,21.3,40 +2022-03-23T14:00,52,19,10.5,0,0,20.1,36.5 +2022-03-23T15:00,52.6,17,9.5,0,0,18.4,34.4 +2022-03-23T16:00,52.2,16,7.3,0,0,17.7,31.5 +2022-03-23T17:00,51.2,22,13.5,0,0,8.2,29.5 +2022-03-23T18:00,42.7,35,17.2,0,0,5.1,13.4 +2022-03-23T19:00,39.2,38,15.9,0,0,6.6,10.3 +2022-03-23T20:00,35.5,42,14.6,0,0,5.6,11.2 +2022-03-23T21:00,35.2,44,15.4,0,0,6.9,10.3 +2022-03-23T22:00,35.4,43,15.4,0,0,6.5,11.2 +2022-03-23T23:00,33.3,49,16.1,0,0,8.3,9.8 +2022-03-24T00:00,32.8,51,16.7,0,0,8.6,11.2 +2022-03-24T01:00,33.1,54,18.4,0,0,8.3,10.5 +2022-03-24T02:00,37,50,20.3,0,0,7.3,10.1 +2022-03-24T03:00,36.5,55,21.7,0,0,7.3,9.2 +2022-03-24T04:00,40.5,47,22,0,0,6.3,8.9 +2022-03-24T05:00,30.9,59,18.4,0,0,6.1,7.8 +2022-03-24T06:00,33.3,59,20.5,0,0,8.3,9.8 +2022-03-24T07:00,37.9,67,27.9,0,0,7.4,10.7 +2022-03-24T08:00,46.3,46,26.5,0,0,2.6,9.2 +2022-03-24T09:00,52,42,29.3,0,0,3.9,10.3 +2022-03-24T10:00,56.2,37,30.5,0,0,2.6,10.5 +2022-03-24T11:00,60.9,26,26.1,0,0,8.9,17.2 +2022-03-24T12:00,63,22,23.1,0,0,13.6,24.8 +2022-03-24T13:00,63.9,20,22.2,0,0,13.7,25.7 +2022-03-24T14:00,64.1,20,21.9,0,0,10.8,25.1 +2022-03-24T15:00,64.5,19,21.4,0,0,11.4,20.6 +2022-03-24T16:00,63.7,20,21.7,0,0,11.4,21.5 +2022-03-24T17:00,60.5,26,25.7,0,0,11.9,20.1 +2022-03-24T18:00,54.3,30,23.9,0,0,8,19.9 +2022-03-24T19:00,49.6,35,22.9,0,0,8.1,13.2 +2022-03-24T20:00,43.7,47,24.5,0,0,8.4,13 +2022-03-24T21:00,44.8,43,23.8,0,0,2.5,10.7 +2022-03-24T22:00,38.1,59,25,0,0,5.3,8.1 +2022-03-24T23:00,37.4,60,24.8,0,0,6.8,11.2 +2022-03-25T00:00,35.7,65,25.2,0,0,4.7,11 +2022-03-25T01:00,35.2,70,26.4,0,0,7.1,10.3 +2022-03-25T02:00,34.5,73,26.8,0,0,5.3,11.4 +2022-03-25T03:00,32.5,77,26.2,0,0,5.2,11.2 +2022-03-25T04:00,33.4,77,27.1,0,0,5,7.6 +2022-03-25T05:00,35.2,75,28.1,0,0,6.3,8.5 +2022-03-25T06:00,32.2,85,28,0,0,4.8,10.1 +2022-03-25T07:00,35.7,77,29.3,0,0,5,8.1 +2022-03-25T08:00,39.3,67,29.1,0,0,5.6,10.7 +2022-03-25T09:00,42.4,59,28.9,0,0,4.5,12.5 +2022-03-25T10:00,45.2,55,29.8,0,0,4.6,12.8 +2022-03-25T11:00,48.8,50,31.2,0,0,3.8,12.8 +2022-03-25T12:00,52.6,45,32.1,0,0,4.1,12.8 +2022-03-25T13:00,56,41,32.7,0,0,4,12.8 +2022-03-25T14:00,58.3,39,33.2,0,0,3.9,12.3 +2022-03-25T15:00,59.2,39,34,0,0,4.5,12.1 +2022-03-25T16:00,59.1,39,34.1,0,0,4.5,12.1 +2022-03-25T17:00,58.4,37,32.2,0,0,1.7,10.5 +2022-03-25T18:00,57.1,36,30.7,0,0,1.5,2.9 +2022-03-25T19:00,47.8,57,33.1,0,0,4.1,4.7 +2022-03-25T20:00,43,66,32.3,0,0,5.2,7.8 +2022-03-25T21:00,39.1,72,31,0,0,4,7.8 +2022-03-25T22:00,36.5,76,29.6,0,0,4.2,6.9 +2022-03-25T23:00,34.8,75,27.6,0,0,3.3,6.9 +2022-03-26T00:00,34,73,26.3,0,0,4.9,6 +2022-03-26T01:00,33.3,73,25.5,0,0,6.1,7.2 +2022-03-26T02:00,32.7,74,25.3,0,0,6.4,7.6 +2022-03-26T03:00,32.5,75,25.3,0,0,5.7,7.6 +2022-03-26T04:00,31.5,78,25.3,0,0,6.1,6.9 +2022-03-26T05:00,32.3,74,24.8,0,0,5.9,7.2 +2022-03-26T06:00,33.7,70,25,0,0,5.9,7.6 +2022-03-26T07:00,41.1,58,27.5,0,0,3.4,7.8 +2022-03-26T08:00,49.9,47,30.5,0,0,3.5,7.4 +2022-03-26T09:00,60.1,37,33.9,0,0,6.1,11.9 +2022-03-26T10:00,67.1,24,29.6,0,0,10.1,18.3 +2022-03-26T11:00,69.4,20,26.2,0,0,12.4,22.8 +2022-03-26T12:00,70.3,19,26,0,0,11.8,22.8 +2022-03-26T13:00,72.1,18,26.2,0,0,9,21.9 +2022-03-26T14:00,73.3,17,25.3,0,0,3.4,17.7 +2022-03-26T15:00,73.9,16,24.6,0,0,9.9,18.6 +2022-03-26T16:00,73.4,15,23.4,0,0,9.8,19.9 +2022-03-26T17:00,67.9,26,32.2,0,0,6,17.9 +2022-03-26T18:00,60.8,38,35,0,0,6.6,9.8 +2022-03-26T19:00,53.2,50,35,0,0,6.4,9.6 +2022-03-26T20:00,48.9,61,36.1,0,0,4.9,8.3 +2022-03-26T21:00,45.1,67,34.8,0,0,2.1,5.8 +2022-03-26T22:00,41.1,73,33.2,0,0,3.5,4.5 +2022-03-26T23:00,44.2,62,32.1,0,0,0.3,4.5 +2022-03-27T00:00,39.4,71,30.9,0,0,2.3,3.8 +2022-03-27T01:00,37.9,74,30.3,0,0,2.5,3.6 +2022-03-27T02:00,34.9,81,29.7,0,0,1.4,3.4 +2022-03-27T03:00,33.4,84,29.2,0,0,0.6,2.7 +2022-03-27T04:00,34.2,81,29,0,0,0.5,1.3 +2022-03-27T05:00,37.1,80,31.6,0,0,2,2.5 +2022-03-27T06:00,32.4,94,30.9,0,0,4.3,4.9 +2022-03-27T07:00,34.9,93,33.1,0,0,3.7,7.8 +2022-03-27T08:00,37.8,82,32.8,0,0,4,9.4 +2022-03-27T09:00,44.7,58,31,0,0,4.7,11.4 +2022-03-27T10:00,52.3,43,30.4,0,0,5.8,13.4 +2022-03-27T11:00,59,37,32.5,0,0,6.5,14.1 +2022-03-27T12:00,62,39,36.7,0,0,9.9,19 +2022-03-27T13:00,62.6,40,38,0,0,11.2,21.3 +2022-03-27T14:00,65.1,38,38.6,0,0,6.5,21.3 +2022-03-27T15:00,68.5,36,40.8,0,0,5.7,14.1 +2022-03-27T16:00,68.5,38,41.7,0,0,6.3,13.4 +2022-03-27T17:00,65.5,43,42.4,0,0,8.5,13 +2022-03-27T18:00,59.7,47,39.7,0,0,7.4,14.1 +2022-03-27T19:00,55.9,53,39.1,0,0,6.7,12.3 +2022-03-27T20:00,49.6,67,39.3,0,0,4.1,11 +2022-03-27T21:00,45.5,73,37.2,0,0,4.3,6.5 +2022-03-27T22:00,42.6,78,36.3,0,0,4.8,6.9 +2022-03-27T23:00,39.7,81,34.3,0,0,3,6.3 +2022-03-28T00:00,37.5,82,32.6,0,0,3.7,5.4 +2022-03-28T01:00,36.5,75,29.4,0,0,5.2,6.5 +2022-03-28T02:00,36.2,68,26.8,0,0,5.1,6.7 +2022-03-28T03:00,36,65,25.2,0,0,5.5,6.5 +2022-03-28T04:00,35.2,65,24.5,0,0,5.6,6.7 +2022-03-28T05:00,36.1,61,24,0,0,5.7,6.9 +2022-03-28T06:00,36.2,59,23.5,0,0,5.3,7.4 +2022-03-28T07:00,42.2,50,24.9,0,0,5.1,7.6 +2022-03-28T08:00,50.2,45,29.6,0,0,3.3,8.9 +2022-03-28T09:00,59,39,33.8,0,0,1.9,7.6 +2022-03-28T10:00,66.5,30,33.9,0,0,3.7,9.6 +2022-03-28T11:00,71.4,13,18.9,0,0,7.4,15 +2022-03-28T12:00,72.8,12,18,0,0,9.8,19 +2022-03-28T13:00,73.2,12,18.3,0,0,9.9,19.9 +2022-03-28T14:00,73.2,12,18,0,0,9,19.2 +2022-03-28T15:00,73.2,12,18,0,0,9.2,17.4 +2022-03-28T16:00,72.9,12,17.2,0,0,8.3,17.2 +2022-03-28T17:00,70.1,21,28.2,0,0,3.6,14.8 +2022-03-28T18:00,63.5,23,24.8,0,0,6.4,9.2 +2022-03-28T19:00,58.8,28,25.7,0,0,6.8,10.5 +2022-03-28T20:00,56.5,34,28.2,0,0,4.9,8.1 +2022-03-28T21:00,51,44,29.9,0,0,4.6,6 +2022-03-28T22:00,47.4,47,28,0,0,4.3,6.9 +2022-03-28T23:00,42.1,58,28.4,0,0,4.6,7.2 +2022-03-29T00:00,43.1,60,30.1,0,0,3.4,5.8 +2022-03-29T01:00,42.2,62,29.9,0,0,5.8,6.7 +2022-03-29T02:00,48.2,43,26.8,0,0,3.5,8.1 +2022-03-29T03:00,44.8,48,26.2,0,0,3.9,6 +2022-03-29T04:00,43.3,52,27.1,0,0,4.2,6 +2022-03-29T05:00,45,56,30.2,0,0,5.5,10.3 +2022-03-29T06:00,48.9,50,30.9,0,0,2.2,7.2 +2022-03-29T07:00,46.8,64,35.1,0,0,3.4,4.7 +2022-03-29T08:00,48.1,65,37,0.008,0,5.1,7.4 +2022-03-29T09:00,47,86,43.2,0.02,0,8.2,12.5 +2022-03-29T10:00,47,86,43.1,0.024,0,9.8,16.3 +2022-03-29T11:00,48.9,75,41.2,0.004,0,7.1,16.3 +2022-03-29T12:00,51.4,61,38.5,0,0,2.8,13.6 +2022-03-29T13:00,48.7,68,38.4,0.012,0,9.8,19.5 +2022-03-29T14:00,49.6,67,39,0.016,0,1.9,20.8 +2022-03-29T15:00,48.5,71,39.6,0.016,0,8.3,19.9 +2022-03-29T16:00,45.2,81,39.7,0.075,0,11.6,23 +2022-03-29T17:00,41.5,81,36.1,0.004,0,20.2,30 +2022-03-29T18:00,40.1,74,32.6,0.004,0,20.9,34.2 +2022-03-29T19:00,37.3,90,34.5,0.024,0,15,33.8 +2022-03-29T20:00,36.8,90,34,0.02,0,11.1,24.6 +2022-03-29T21:00,36.9,82,32,0.012,0,7.7,18.1 +2022-03-29T22:00,37.1,80,31.5,0,0,1.8,12.5 +2022-03-29T23:00,36.3,85,32.2,0,0,2.2,3.8 +2022-03-30T00:00,32.7,76,26.1,0,0,3.7,7.2 +2022-03-30T01:00,32,74,24.8,0,0,2.1,5.8 +2022-03-30T02:00,31,75,24.1,0,0,3.8,5.8 +2022-03-30T03:00,30.8,65,20.4,0,0,5,8.9 +2022-03-30T04:00,30.7,63,19.6,0,0,5,8.3 +2022-03-30T05:00,29,65,18.9,0,0,3.7,8.3 +2022-03-30T06:00,28.9,62,17.4,0,0,2.8,6.7 +2022-03-30T07:00,28.9,61,17.2,0,0.028,1.9,5.8 +2022-03-30T08:00,29.5,63,18.4,0,0.028,2.7,7.4 +2022-03-30T09:00,32.7,58,19.8,0,0,3.5,10.1 +2022-03-30T10:00,36.4,55,21.6,0,0,5.4,13.9 +2022-03-30T11:00,40,50,22.9,0,0,4.8,14.5 +2022-03-30T12:00,41.5,48,23,0,0,4.5,14.5 +2022-03-30T13:00,45.4,41,23,0,0,6.5,19.9 +2022-03-30T14:00,46.9,28,15.8,0,0,13.6,25.3 +2022-03-30T15:00,49.7,16,4.9,0,0,19.4,32.4 +2022-03-30T16:00,48.7,19,8.2,0,0,16.4,34 +2022-03-30T17:00,44.1,36,18.9,0,0,3.5,28.2 +2022-03-30T18:00,43.4,47,24.4,0,0,1.6,6.5 +2022-03-30T19:00,41,48,22.6,0,0,8.1,12.1 +2022-03-30T20:00,39.2,51,22.6,0,0,5.8,14.1 +2022-03-30T21:00,39.4,49,21.6,0,0,3,8.9 +2022-03-30T22:00,36.1,57,22.6,0,0,4.8,6 +2022-03-30T23:00,30.3,70,21.8,0,0,5.4,6.7 +2022-03-31T00:00,29,71,20.9,0,0,5.4,6.9 +2022-03-31T01:00,30.1,63,19,0,0,4.5,6.3 +2022-03-31T02:00,30.1,55,15.8,0,0,6.3,7.4 +2022-03-31T03:00,29.5,51,13.6,0,0,8,9.4 +2022-03-31T04:00,31.1,48,13.6,0,0,7.7,9.6 +2022-03-31T05:00,35.6,43,15.4,0,0,4.2,9.2 +2022-03-31T06:00,29.1,59,16.6,0,0,5.9,6.5 +2022-03-31T07:00,36.7,49,19.1,0,0,5,7.4 +2022-03-31T08:00,44.8,42,22.8,0,0,4.5,9.8 +2022-03-31T09:00,51.7,33,23.5,0,0,2.6,9.8 +2022-03-31T10:00,55.1,22,17.2,0,0,1.1,8.7 +2022-03-31T11:00,56.8,19,15.1,0,0,3.2,10.5 +2022-03-31T12:00,58.2,18,14.9,0,0,4.8,13 +2022-03-31T13:00,59.7,17,15.1,0,0,4.8,13.6 +2022-03-31T14:00,60.5,17,15.1,0,0,3.8,13 +2022-03-31T15:00,60.9,18,16.5,0,0,5.4,12.3 +2022-03-31T16:00,60.7,16,14.9,0,0,7.8,15 +2022-03-31T17:00,58.9,23,20.9,0,0,4.4,16.1 +2022-03-31T18:00,53.4,31,23.8,0,0,7,12.1 +2022-03-31T19:00,45.7,42,23.9,0,0,5.7,11.6 +2022-03-31T20:00,42.9,48,24.6,0,0,5.4,8.9 +2022-03-31T21:00,41.4,49,23.8,0,0,5.3,8.3 +2022-03-31T22:00,38.8,56,24.5,0,0,4.3,8.3 +2022-03-31T23:00,35.5,68,26.1,0,0,3.7,6.7 +2022-04-01T00:00,39.1,57,25.2,0,0,1.1,4.5 +2022-04-01T01:00,36.9,64,25.8,0.008,0,3.1,3.4 +2022-04-01T02:00,38,64,26.9,0.008,0,2.7,4.5 +2022-04-01T03:00,36,81,30.6,0,0,2.6,5.1 +2022-04-01T04:00,32.9,92,30.8,0,0,2,4.7 +2022-04-01T05:00,36.5,90,34,0,0,2.7,5.4 +2022-04-01T06:00,35,93,33.3,0,0,3.6,6 +2022-04-01T07:00,37.5,90,34.9,0,0,3,6.7 +2022-04-01T08:00,43.2,72,34.6,0,0,3,7.2 +2022-04-01T09:00,46.9,52,30,0,0,7.9,15.4 +2022-04-01T10:00,48.3,45,28,0,0,8,17.7 +2022-04-01T11:00,50.1,41,27.4,0,0,8.1,17.7 +2022-04-01T12:00,52.1,35,25.3,0,0,5.4,17.7 +2022-04-01T13:00,55,28,22.5,0,0,4.2,14.5 +2022-04-01T14:00,56.5,25,21,0,0,7,15.7 +2022-04-01T15:00,57.1,24,20.5,0,0,7.3,16.1 +2022-04-01T16:00,57,23,19.5,0,0,6,15.9 +2022-04-01T17:00,54.7,27,21.7,0,0,6.3,13 +2022-04-01T18:00,50.2,35,23.4,0,0,5.7,10.7 +2022-04-01T19:00,43.3,47,24.5,0,0,6.9,8.7 +2022-04-01T20:00,42.8,47,24.2,0,0,6,8.7 +2022-04-01T21:00,39.9,54,24.6,0,0,4.9,7.2 +2022-04-01T22:00,36.4,62,24.8,0,0,3,6 +2022-04-01T23:00,33,73,25.4,0,0,2.9,4.3 +2022-04-02T00:00,32.2,76,25.3,0,0,2.9,4.9 +2022-04-02T01:00,29.9,81,24.7,0,0,2.6,4.7 +2022-04-02T02:00,28.4,82,23.5,0,0,3.6,4.3 +2022-04-02T03:00,29,75,22.2,0,0,2.4,4.7 +2022-04-02T04:00,28,76,21.4,0,0,2.4,2.9 +2022-04-02T05:00,28.9,68,19.7,0,0,1.8,2.9 +2022-04-02T06:00,29.3,67,19.7,0,0,2.8,3.8 +2022-04-02T07:00,31.1,66,21.2,0,0,3.3,6.7 +2022-04-02T08:00,36.6,57,22.7,0,0,3.2,9.2 +2022-04-02T09:00,43.2,49,25.5,0,0,3.5,10.3 +2022-04-02T10:00,49.2,40,26.1,0,0,3.4,11.6 +2022-04-02T11:00,53.6,34,26.2,0,0,3.7,12.3 +2022-04-02T12:00,57.9,30,26.8,0,0,4.8,12.8 +2022-04-02T13:00,62.2,26,26.9,0,0,6,14.5 +2022-04-02T14:00,65.2,22,24.9,0,0,5.1,14.3 +2022-04-02T15:00,66.4,19,22.7,0,0,4.3,12.8 +2022-04-02T16:00,66.7,18,21.3,0,0,4,11 +2022-04-02T17:00,63.5,26,28,0,0,4.3,9.2 +2022-04-02T18:00,56.8,41,33.5,0,0,4.1,7.2 +2022-04-02T19:00,51,47,31.6,0,0,5.4,8.5 +2022-04-02T20:00,46,56,31,0,0,4.3,8.3 +2022-04-02T21:00,42.4,64,30.9,0,0,3.3,6 +2022-04-02T22:00,39.7,72,31.3,0,0,4.8,6 +2022-04-02T23:00,38.6,71,29.9,0,0,4.2,6 +2022-04-03T00:00,37.7,69,28.6,0,0,3.8,5.8 +2022-04-03T01:00,37,69,27.6,0,0,4.1,7.4 +2022-04-03T02:00,38.4,65,27.7,0,0,3.6,6.5 +2022-04-03T03:00,35.8,72,27.7,0,0,2.7,4.5 +2022-04-03T04:00,33.4,75,26.5,0,0,5.2,6.5 +2022-04-03T05:00,35.5,72,27.4,0,0,6.2,8.3 +2022-04-03T06:00,38,71,29.5,0,0,4.3,7.4 +2022-04-03T07:00,41.5,58,28,0,0,4.4,7.4 +2022-04-03T08:00,44,53,27.8,0,0,3.6,8.3 +2022-04-03T09:00,44.5,44,24.2,0,0,6.7,11.2 +2022-04-03T10:00,45.2,43,24.3,0,0,7.7,14.5 +2022-04-03T11:00,45.1,45,25,0,0,7.3,14.3 +2022-04-03T12:00,46.9,44,26,0,0,6.3,14.1 +2022-04-03T13:00,48.4,43,26.8,0,0,5.6,13 +2022-04-03T14:00,49,43,27.3,0,0,6.8,13 +2022-04-03T15:00,50.6,41,27.7,0,0,6,14.3 +2022-04-03T16:00,51.5,40,28,0,0,4.8,12.8 +2022-04-03T17:00,51.8,36,25.4,0,0,5,10.7 +2022-04-03T18:00,48.1,51,31,0,0,4.2,8.1 +2022-04-03T19:00,48.6,39,25,0,0,3.8,5.6 +2022-04-03T20:00,47.7,42,25.6,0,0,2.7,4.3 +2022-04-03T21:00,43.3,53,27.4,0,0,2.7,3.4 +2022-04-03T22:00,38.8,66,28.6,0,0,3.2,4.9 +2022-04-03T23:00,36.6,76,29.8,0,0,3.6,4.9 +2022-04-04T00:00,35.3,77,28.9,0,0,3.8,4.5 +2022-04-04T01:00,35.2,73,27.6,0,0,4,5.4 +2022-04-04T02:00,35.4,71,27,0,0,1.6,4.7 +2022-04-04T03:00,34.4,78,28.4,0,0,3.2,4.7 +2022-04-04T04:00,33.7,83,29.1,0,0,2.9,5.1 +2022-04-04T05:00,32.1,87,28.8,0,0,5.2,5.1 +2022-04-04T06:00,31,86,27.2,0,0,4.3,6.3 +2022-04-04T07:00,36.8,69,27.6,0,0,5.5,9.8 +2022-04-04T08:00,44.5,56,29.8,0,0,2.4,10.1 +2022-04-04T09:00,50.3,45,29.9,0,0,1.6,8.1 +2022-04-04T10:00,55.1,33,26.2,0,0,2.9,10.1 +2022-04-04T11:00,59.2,20,18.6,0,0,3.4,11.2 +2022-04-04T12:00,62.1,17,16.6,0,0,5.4,13.6 +2022-04-04T13:00,64.4,15,15.9,0,0,7,15.9 +2022-04-04T14:00,67.1,12,11.9,0,0,6.2,15.9 +2022-04-04T15:00,68.5,9,7.5,0,0,10.5,17.9 +2022-04-04T16:00,66.3,10,7.8,0,0,11.9,25.5 +2022-04-04T17:00,63,19,20.4,0,0,3.4,20.6 +2022-04-04T18:00,56.8,36,30.2,0,0,5.5,8.3 +2022-04-04T19:00,53.2,35,26.4,0,0,4.4,8.3 +2022-04-04T20:00,55,29,23.4,0,0,2.6,6.7 +2022-04-04T21:00,47.9,39,24.2,0,0,7.1,7.4 +2022-04-04T22:00,49.7,32,21.4,0,0,11.4,15.4 +2022-04-04T23:00,49.9,33,21.7,0,0,12.4,20.8 +2022-04-05T00:00,48.6,36,22.6,0,0,12.9,18.6 +2022-04-05T01:00,46.9,39,23.2,0,0,10.1,19.2 +2022-04-05T02:00,44.8,43,23.5,0,0,7.8,15.2 +2022-04-05T03:00,45.5,41,23.2,0,0,6.3,12.1 +2022-04-05T04:00,42.4,48,23.9,0,0,4.4,9.8 +2022-04-05T05:00,49.4,37,24,0,0,7.3,7.2 +2022-04-05T06:00,47.8,43,26.4,0,0,5.7,11.9 +2022-04-05T07:00,51.6,45,30.9,0,0,8,13 +2022-04-05T08:00,56.7,41,33.4,0,0,4,12.5 +2022-04-05T09:00,48.9,64,37.2,0,0,19.6,33.1 +2022-04-05T10:00,47.6,58,33.4,0.02,0.11,11.3,32.9 +2022-04-05T11:00,47.3,58,33.3,0.004,0,7.5,20.8 +2022-04-05T12:00,47.1,58,32.9,0,0,5.2,16.3 +2022-04-05T13:00,49.4,57,34.6,0.004,0,6.1,14.8 +2022-04-05T14:00,51.9,41,28.9,0.004,0,14.6,25.5 +2022-04-05T15:00,49.3,32,20.8,0,0,25.1,41.4 +2022-04-05T16:00,48.4,28,16.4,0,0,26.9,45.4 +2022-04-05T17:00,45.3,24,10.3,0,0,31.5,45.2 +2022-04-05T18:00,43.6,22,6.8,0,0,28.1,51.2 +2022-04-05T19:00,40.9,22,5.4,0,0,31.9,53.5 +2022-04-05T20:00,39.2,27,8.2,0,0,21,52.3 +2022-04-05T21:00,37.1,30,8.2,0,0,14.9,34.4 +2022-04-05T22:00,35.2,30,7,0,0,12.8,24.4 +2022-04-05T23:00,34.4,27,3.9,0,0,15.4,24.6 +2022-04-06T00:00,33.9,25,2.1,0,0,16.7,27.7 +2022-04-06T01:00,33.2,26,2.2,0,0,13.2,27.3 +2022-04-06T02:00,31.8,28,2.8,0,0,6.5,21.3 +2022-04-06T03:00,29.1,33,3.7,0,0,5.3,10.7 +2022-04-06T04:00,27.8,37,4.6,0,0,5.7,8.1 +2022-04-06T05:00,28.3,37,5.5,0,0,6,7.8 +2022-04-06T06:00,29.7,37,6.3,0,0,5.2,8.5 +2022-04-06T07:00,33.4,32,6.5,0,0,9.7,17 +2022-04-06T08:00,35.9,29,7,0,0,10.4,19 +2022-04-06T09:00,39.7,18,0,0,0,18.9,32.7 +2022-04-06T10:00,42.1,18,1.9,0,0,19.2,33.8 +2022-04-06T11:00,43.5,17,1.9,0,0,20.1,36.2 +2022-04-06T12:00,45.6,15,0.3,0,0,18.1,35.6 +2022-04-06T13:00,46.1,15,1.7,0,0,17.9,32.9 +2022-04-06T14:00,46.9,16,3.2,0,0,16.4,32.7 +2022-04-06T15:00,47.4,16,2.8,0,0,16,30 +2022-04-06T16:00,45.5,17,2.8,0,0,16.2,29.1 +2022-04-06T17:00,44.6,16,1,0,0,15,28.6 +2022-04-06T18:00,42.4,18,1.6,0,0,10,25.5 +2022-04-06T19:00,37.8,25,4.6,0,0,5.2,16.6 +2022-04-06T20:00,35.1,32,8.2,0,0,5.9,9.2 +2022-04-06T21:00,34.1,37,10.7,0,0,7.2,12.1 +2022-04-06T22:00,34,39,11.7,0,0,7.2,12.3 +2022-04-06T23:00,32.7,43,12.9,0,0,7.4,12.3 +2022-04-07T00:00,30.3,50,13.6,0,0,6.3,12.1 +2022-04-07T01:00,28.5,52,13.1,0,0,5.6,10.3 +2022-04-07T02:00,27.6,51,11.7,0,0,4.6,9.2 +2022-04-07T03:00,26.1,53,11.1,0,0,6,7.8 +2022-04-07T04:00,26.5,47,9.1,0,0,5.6,7.8 +2022-04-07T05:00,26.4,49,10,0,0,5.6,9.2 +2022-04-07T06:00,28.2,45,9.4,0,0,4.7,8.1 +2022-04-07T07:00,34.2,45,14.9,0,0,4.2,8.3 +2022-04-07T08:00,37.9,32,10.5,0,0,6,13 +2022-04-07T09:00,40.3,29,10.4,0,0,6.5,14.8 +2022-04-07T10:00,42.3,26,10.1,0,0,6,15.9 +2022-04-07T11:00,44.7,26,11.7,0,0,6,15.4 +2022-04-07T12:00,48.4,24,12.8,0,0,8.4,18.3 +2022-04-07T13:00,52.4,18,10.4,0,0,12.5,23.7 +2022-04-07T14:00,54.9,14,5.8,0,0,12.6,25.9 +2022-04-07T15:00,54.8,14,5.9,0,0,14.6,26.8 +2022-04-07T16:00,55,12,3.5,0,0,13.3,26.6 +2022-04-07T17:00,51.2,18,8.5,0,0,13.2,26.4 +2022-04-07T18:00,48.5,21,10.2,0,0,11.3,21 +2022-04-07T19:00,40.6,33,13.6,0,0,7.3,18.3 +2022-04-07T20:00,43.2,25,9.4,0,0,4.2,8.9 +2022-04-07T21:00,36.4,35,11.5,0,0,6.3,7.4 +2022-04-07T22:00,36,37,12.2,0,0,5.6,8.5 +2022-04-07T23:00,32.5,44,13.2,0,0,4,8.7 +2022-04-08T00:00,30,52,14.6,0,0,3.2,6.3 +2022-04-08T01:00,29,55,15,0,0,4,6.3 +2022-04-08T02:00,27.9,57,14.5,0,0,4.8,6.5 +2022-04-08T03:00,26,62,14.7,0,0,6.2,7.4 +2022-04-08T04:00,25,66,15.2,0,0,6.3,7.4 +2022-04-08T05:00,24.5,64,14.2,0,0,5.8,7.6 +2022-04-08T06:00,25.2,65,15.2,0,0,3.9,7.4 +2022-04-08T07:00,31.4,57,17.8,0,0,5.4,9.6 +2022-04-08T08:00,41.2,41,19.5,0,0,5,10.7 +2022-04-08T09:00,49.6,26,16.3,0,0,6.2,13.9 +2022-04-08T10:00,54.1,23,16.9,0,0,4.1,13.9 +2022-04-08T11:00,57.3,22,18.7,0,0,4,12.1 +2022-04-08T12:00,60.4,21,19.8,0,0,4.9,13.2 +2022-04-08T13:00,62.7,19,19.8,0,0,4.5,13.4 +2022-04-08T14:00,64.2,18,20.1,0,0,4.3,13 +2022-04-08T15:00,65.3,18,20,0,0,4,12.3 +2022-04-08T16:00,65.8,16,18.6,0,0,2.4,11.2 +2022-04-08T17:00,64.4,17,18,0,0,4.5,8.7 +2022-04-08T18:00,58.8,31,28.5,0,0,5.7,6.7 +2022-04-08T19:00,60.4,18,17.2,0,0,3.4,6.7 +2022-04-08T20:00,47,37,22.4,0,0,5.1,7.8 +2022-04-08T21:00,44.2,44,23.9,0,0,5,8.5 +2022-04-08T22:00,40,54,24.9,0,0,4.7,8.1 +2022-04-08T23:00,38.8,57,24.9,0,0,4.5,6.7 +2022-04-09T00:00,37.1,58,23.7,0,0,4.3,6.7 +2022-04-09T01:00,37.3,55,22.6,0,0,5,7.4 +2022-04-09T02:00,38.2,51,21.7,0,0,5.4,8.5 +2022-04-09T03:00,38.6,50,21.7,0,0,5.5,8.5 +2022-04-09T04:00,39.4,49,21.6,0,0,5.7,8.7 +2022-04-09T05:00,40,45,20.4,0,0,7,9.4 +2022-04-09T06:00,40.4,46,21.3,0,0,5,11.2 +2022-04-09T07:00,46.5,41,24,0,0,4.7,7.2 +2022-04-09T08:00,53.9,36,27.2,0,0,4.3,8.9 +2022-04-09T09:00,63.1,28,29.2,0,0,4.9,10.1 +2022-04-09T10:00,69.9,14,19.3,0,0,12,20.8 +2022-04-09T11:00,71.2,14,19.7,0,0,13,24.6 +2022-04-09T12:00,72.4,14,20.4,0,0,9.1,23.7 +2022-04-09T13:00,73,13,19.6,0,0,6.6,18.3 +2022-04-09T14:00,74.1,12,18,0,0,7.1,15.7 +2022-04-09T15:00,74.3,11,15.9,0,0,7.9,16.3 +2022-04-09T16:00,74,10,13.6,0,0,7.4,16.3 +2022-04-09T17:00,69.9,21,28.3,0,0,4,14.5 +2022-04-09T18:00,65.6,21,24.1,0,0,7,9.8 +2022-04-09T19:00,61.2,17,15.4,0,0,7.8,15.9 +2022-04-09T20:00,54.9,26,20.2,0,0,4.4,12.5 +2022-04-09T21:00,53.1,34,25.3,0,0,20.6,29.5 +2022-04-09T22:00,49.3,51,32,0,0,7.1,34.2 +2022-04-09T23:00,46.9,56,32.1,0,0,6.1,11.6 +2022-04-10T00:00,46.3,59,32.8,0,0,11.6,19.2 +2022-04-10T01:00,45.3,65,34.4,0,0,6.1,18.8 +2022-04-10T02:00,42.3,76,35.2,0,0,10.8,16.6 +2022-04-10T03:00,39.2,85,35.1,0.004,0,10.7,21.9 +2022-04-10T04:00,38.2,85,34.2,0,0,2.1,16.8 +2022-04-10T05:00,37.3,87,33.7,0,0,1.6,3.8 +2022-04-10T06:00,38.3,82,33.4,0,0,3.6,6.7 +2022-04-10T07:00,39.3,79,33.2,0,0,4.9,9.4 +2022-04-10T08:00,41.2,71,32.5,0,0,5.6,12.3 +2022-04-10T09:00,44.2,58,30.6,0,0,6.7,14.1 +2022-04-10T10:00,44.2,54,28.8,0,0,9.8,18.8 +2022-04-10T11:00,49.6,37,24.4,0,0,8.6,22.1 +2022-04-10T12:00,54.2,23,17,0.004,0,6.5,18.1 +2022-04-10T13:00,55.3,8,-5.7,0,0,14,26.6 +2022-04-10T14:00,54.8,8,-5.8,0,0,13.7,27.3 +2022-04-10T15:00,53.1,9,-4,0,0,15.6,29.1 +2022-04-10T16:00,51.9,10,-3.7,0,0,15.8,28.4 +2022-04-10T17:00,52.3,10,-2.1,0,0,16.1,28 +2022-04-10T18:00,49.1,14,1.7,0,0,10.8,26.8 +2022-04-10T19:00,45,17,2.7,0,0,10.8,18.1 +2022-04-10T20:00,40.9,24,6.5,0,0,5.1,17.7 +2022-04-10T21:00,39.7,27,8.4,0,0,8.6,11.2 +2022-04-10T22:00,40.6,19,1.8,0,0,8.2,16.8 +2022-04-10T23:00,37.4,26,5.3,0,0,4.3,13 +2022-04-11T00:00,35,28,5.1,0,0,6.3,8.7 +2022-04-11T01:00,35.1,26,3.8,0,0,6.5,8.5 +2022-04-11T02:00,35.5,28,5.6,0,0,3.2,8.1 +2022-04-11T03:00,33.9,34,8.5,0,0,4.7,8.1 +2022-04-11T04:00,30.7,43,10.7,0,0,3.4,7.6 +2022-04-11T05:00,28.7,52,13.2,0,0,2.3,5.8 +2022-04-11T06:00,29.2,54,14.8,0,0,1.4,3.4 +2022-04-11T07:00,32.7,47,14.6,0,0,4.9,10.1 +2022-04-11T08:00,36.7,38,13.3,0,0,3.6,10.5 +2022-04-11T09:00,43.2,34,16.4,0,0,3.2,10.3 +2022-04-11T10:00,52.5,27,19.1,0,0,5.1,13.4 +2022-04-11T11:00,59.2,17,13.8,0,0,8.3,17 +2022-04-11T12:00,61.5,15,13.8,0,0,15.7,28.2 +2022-04-11T13:00,64,14,14.4,0,0,17,30.4 +2022-04-11T14:00,64.7,12,11.7,0,0,16.8,30.4 +2022-04-11T15:00,65.4,13,12.8,0,0,17.7,32 +2022-04-11T16:00,65.6,14,14.3,0,0,17.6,32.2 +2022-04-11T17:00,65.1,18,20.8,0,0,3,29.5 +2022-04-11T18:00,59.4,28,26.1,0,0,5.7,10.1 +2022-04-11T19:00,55.3,35,28,0,0,3.3,9.6 +2022-04-11T20:00,49.5,45,29.2,0,0,5,5.6 +2022-04-11T21:00,48.7,45,28.1,0,0,1.3,5.6 +2022-04-11T22:00,43.5,57,29.5,0,0,3.3,4.9 +2022-04-11T23:00,45.8,46,26.2,0,0,5.9,8.5 +2022-04-12T00:00,51.4,32,22.3,0,0,12,19.2 +2022-04-12T01:00,51.8,33,23.3,0,0,13.5,21.9 +2022-04-12T02:00,51.7,35,24.6,0,0,13.9,22.6 +2022-04-12T03:00,52.7,33,24.7,0,0,16.2,26.2 +2022-04-12T04:00,53.5,31,23.9,0,0,18.4,29.5 +2022-04-12T05:00,43,52,26.4,0,0,7.4,30.4 +2022-04-12T06:00,45.8,54,30,0,0,5.1,10.1 +2022-04-12T07:00,46.3,45,25.9,0,0,13.9,21.5 +2022-04-12T08:00,47.2,36,21.3,0.008,0.083,13.7,25.9 +2022-04-12T09:00,46.9,31,17.6,0.004,0,9,23.9 +2022-04-12T10:00,48.9,27,16.4,0,0,6.3,16.1 +2022-04-12T11:00,52.3,24,16.7,0,0,4.6,14.1 +2022-04-12T12:00,52.3,25,17.9,0,0,6.7,13 +2022-04-12T13:00,57.7,15,10.5,0.004,0,7.8,17 +2022-04-12T14:00,55.6,19,13.4,0,0,10.9,21.5 +2022-04-12T15:00,54.7,17,10,0,0,11.1,22.4 +2022-04-12T16:00,47.3,23,11.7,0,0,19.6,33.8 +2022-04-12T17:00,51.8,14,4.3,0,0,5.4,36.5 +2022-04-12T18:00,42.7,22,6.5,0,0,8.6,14.5 +2022-04-12T19:00,38.6,24,5,0,0.028,8.5,15.9 +2022-04-12T20:00,36.6,25,4.2,0,0,9.4,15.7 +2022-04-12T21:00,35,27,4.5,0,0,9.4,15.9 +2022-04-12T22:00,33.1,31,5.4,0,0,11.6,19 +2022-04-12T23:00,31,35,6.3,0,0,10.1,19 +2022-04-13T00:00,29.7,39,7.4,0,0,7,16.3 +2022-04-13T01:00,28,44,8.7,0,0,4.1,11.4 +2022-04-13T02:00,26.1,50,10,0,0,3.8,6.7 +2022-04-13T03:00,25.3,52,10,0,0,4.1,5.8 +2022-04-13T04:00,26.5,49,9.9,0,0,1.5,6.5 +2022-04-13T05:00,21.7,62,10.8,0,0,4.2,6.3 +2022-04-13T06:00,19.8,66,10.3,0,0,5.8,10.1 +2022-04-13T07:00,20.8,64,10.6,0,0,3.9,11.6 +2022-04-13T08:00,26.3,54,11.8,0,0,1.1,10.1 +2022-04-13T09:00,33.8,40,11.9,0,0,3,12.5 +2022-04-13T10:00,38.2,13,-8,0,0,11.9,22.4 +2022-04-13T11:00,39.3,12,-8.9,0,0,15.9,28.9 +2022-04-13T12:00,40.6,10,-10.9,0,0,18.2,32.4 +2022-04-13T13:00,39.7,12,-8.4,0,0,20.4,35.6 +2022-04-13T14:00,41.6,11,-8.3,0,0,19.5,35.8 +2022-04-13T15:00,42.1,9,-12.7,0,0,19,34.7 +2022-04-13T16:00,42.2,11,-9.3,0,0,15.4,33.8 +2022-04-13T17:00,38.4,18,-1.3,0,0,9.3,27.3 +2022-04-13T18:00,37.3,19,-0.8,0,0,6.5,17.4 +2022-04-13T19:00,34.2,27,3.6,0,0,3.5,11.4 +2022-04-13T20:00,33.8,30,5.3,0,0,6,9.6 +2022-04-13T21:00,32.1,35,7.4,0,0,7.8,13 +2022-04-13T22:00,30.2,40,8.8,0,0,6.8,13 +2022-04-13T23:00,29.4,43,9.6,0,0,7,11.9 +2022-04-14T00:00,29.6,40,8,0,0,8,13.2 +2022-04-14T01:00,26.7,47,9.1,0,0,4.2,13.2 +2022-04-14T02:00,24,61,12.6,0,0,3.8,6.7 +2022-04-14T03:00,23.5,60,11.6,0,0,5.7,8.9 +2022-04-14T04:00,24,54,9.6,0,0,4.9,8.7 +2022-04-14T05:00,24.4,52,9.2,0,0,3.6,8.7 +2022-04-14T06:00,26,50,10,0,0,2.8,5.4 +2022-04-14T07:00,33.1,38,10.5,0,0,4.3,8.7 +2022-04-14T08:00,40.2,28,9.4,0,0,2.5,8.9 +2022-04-14T09:00,46.2,20,7.6,0,0,6.8,14.1 +2022-04-14T10:00,49.9,18,8.2,0,0,12.5,23 +2022-04-14T11:00,52.6,18,10.2,0,0,13.2,25.9 +2022-04-14T12:00,55.2,16,9.4,0,0,13.6,25.1 +2022-04-14T13:00,57.1,13,7.1,0,0,17.3,30.6 +2022-04-14T14:00,58.2,13,8,0,0,18.6,33.6 +2022-04-14T15:00,58.2,11,3.9,0,0,16.8,33.1 +2022-04-14T16:00,57.2,11,3.6,0,0,13.8,29.5 +2022-04-14T17:00,55.2,13,5.1,0,0,11.9,24.6 +2022-04-14T18:00,52.3,17,8.5,0,0,5.4,20.1 +2022-04-14T19:00,50.5,18,8.2,0,0,2.1,8.9 +2022-04-14T20:00,39.7,35,13.9,0,0,6.9,8.1 +2022-04-14T21:00,38.5,37,14.5,0,0,4.9,8.5 +2022-04-14T22:00,36.6,41,15.1,0,0,4.3,6.9 +2022-04-14T23:00,34.1,46,15.5,0,0,4.4,6.9 +2022-04-15T00:00,32.7,50,16,0,0,4.7,6.5 +2022-04-15T01:00,35,43,14.9,0,0,4.7,7.4 +2022-04-15T02:00,37.3,36,13,0,0,5.1,8.3 +2022-04-15T03:00,39.6,31,11.4,0,0,7.4,11.6 +2022-04-15T04:00,40,31,12,0,0,7.9,12.5 +2022-04-15T05:00,39.9,35,14.5,0,0,6.9,12.5 +2022-04-15T06:00,40.6,41,18.5,0,0,8.7,13.9 +2022-04-15T07:00,46.4,40,23.5,0,0,4.8,13.9 +2022-04-15T08:00,50.6,36,24.6,0,0,7.1,12.5 +2022-04-15T09:00,46.9,31,18,0,0,15.7,27.5 +2022-04-15T10:00,50.1,31,20.6,0,0,10.6,27.7 +2022-04-15T11:00,54.9,30,23.6,0,0,8.1,20.8 +2022-04-15T12:00,58.2,27,24,0,0,8.3,17.7 +2022-04-15T13:00,61.3,23,22.9,0.004,0,4.9,18.3 +2022-04-15T14:00,61.8,23,24,0.004,0,8.1,17.2 +2022-04-15T15:00,61.7,21,21.3,0,0,8.8,18.1 +2022-04-15T16:00,61.6,21,21,0,0,11.3,20.1 +2022-04-15T17:00,59.6,22,20.8,0,0,7.5,20.4 +2022-04-15T18:00,53.4,43,31.4,0.02,0,6.5,13 +2022-04-15T19:00,48.8,37,23.8,0,0,4.9,9.8 +2022-04-15T20:00,44.7,37,19.8,0,0,5.4,7.8 +2022-04-15T21:00,41.2,42,20,0,0,7.5,13 +2022-04-15T22:00,38.8,46,19.9,0,0,6.3,11.9 +2022-04-15T23:00,34.9,56,20.9,0,0,5,10.3 +2022-04-16T00:00,34.7,56,20.5,0,0,4.2,6.5 +2022-04-16T01:00,37,47,18.9,0,0,2.6,4.7 +2022-04-16T02:00,34.4,53,19.1,0,0,3.4,3.8 +2022-04-16T03:00,34.5,52,18.7,0,0,1.6,4.3 +2022-04-16T04:00,29.1,68,19.9,0,0,5.5,6 +2022-04-16T05:00,28,70,19.5,0,0,6.5,7.2 +2022-04-16T06:00,26.8,75,19.9,0,0,6.8,11.2 +2022-04-16T07:00,28.9,69,20,0,0,5.7,11.9 +2022-04-16T08:00,32.7,59,19.9,0,0,6.2,14.3 +2022-04-16T09:00,36.3,52,20.3,0,0,5.5,14.3 +2022-04-16T10:00,39.6,47,21,0,0,4.8,14.3 +2022-04-16T11:00,42.2,44,21.8,0,0,4.6,13.9 +2022-04-16T12:00,47.5,39,23.5,0,0,4.8,14.1 +2022-04-16T13:00,51.5,35,24.6,0,0,5.6,15 +2022-04-16T14:00,54.8,31,24.9,0,0,5.8,15.4 +2022-04-16T15:00,56,30,24.7,0,0,6.3,14.8 +2022-04-16T16:00,55.1,31,25.3,0,0,10.2,17.9 +2022-04-16T17:00,57.7,27,23.7,0,0,4.6,19.7 +2022-04-16T18:00,55.9,39,31.3,0.004,0,2.6,10.5 +2022-04-16T19:00,47.9,46,28.1,0,0,4.8,5.8 +2022-04-16T20:00,45.7,53,29.8,0,0,3.7,6.9 +2022-04-16T21:00,43.2,58,29.5,0,0,3.6,8.1 +2022-04-16T22:00,43.5,57,29.5,0,0,5.6,7.4 +2022-04-16T23:00,41.7,57,27.4,0,0,1.4,11.2 +2022-04-17T00:00,43.3,57,28.9,0,0,3.6,8.5 +2022-04-17T01:00,38.6,70,29.7,0,0,4.8,5.4 +2022-04-17T02:00,37.1,67,27.3,0,0,3.2,6.3 +2022-04-17T03:00,36.6,71,28,0,0,3.5,5.1 +2022-04-17T04:00,34.6,76,27.8,0,0,6.3,9.6 +2022-04-17T05:00,32.5,87,28.9,0,0,2.2,9.8 +2022-04-17T06:00,32.6,87,29.2,0,0,3.2,4.5 +2022-04-17T07:00,38.8,71,30,0,0,3.5,7.4 +2022-04-17T08:00,48.4,48,29.5,0,0,5.7,12.5 +2022-04-17T09:00,56.4,31,26.2,0,0,6.6,13.9 +2022-04-17T10:00,60.1,29,27.7,0,0,3.4,15 +2022-04-17T11:00,64.3,20,22,0,0,7.4,16.1 +2022-04-17T12:00,66.6,16,18.3,0,0,12.7,24.2 +2022-04-17T13:00,66.8,16,19.4,0,0,14.1,27.5 +2022-04-17T14:00,66.7,17,20,0,0,14.8,27.3 +2022-04-17T15:00,65.7,18,21.5,0,0,15.1,28 +2022-04-17T16:00,64.3,20,22,0,0,13.2,27.3 +2022-04-17T17:00,62.1,24,24.5,0,0,10.3,23.7 +2022-04-17T18:00,58.9,29,26.9,0,0,6.4,17.4 +2022-04-17T19:00,53.2,41,29.8,0,0,12.8,19.9 +2022-04-17T20:00,51.5,42,29.3,0,0,13,22.8 +2022-04-17T21:00,49.6,43,28,0,0,9.5,20.8 +2022-04-17T22:00,46,40,23,0,0,8.1,15 +2022-04-17T23:00,45.1,40,22.4,0,0,7.1,12.8 +2022-04-18T00:00,43.6,44,23.3,0,0,10.5,17.4 +2022-04-18T01:00,40.7,43,20.2,0,0,6.5,17 +2022-04-18T02:00,37.5,49,20,0,0,7.2,11.4 +2022-04-18T03:00,34.8,55,20.2,0,0,5.6,11.6 +2022-04-18T04:00,32.4,61,20.6,0,0,3.8,8.9 +2022-04-18T05:00,30,62,18.4,0,0,3.6,6 +2022-04-18T06:00,30.8,58,17.6,0,0,5.3,6.5 +2022-04-18T07:00,32.7,54,17.7,0,0,6.5,13 +2022-04-18T08:00,34.9,49,17.9,0,0,4.8,13.6 +2022-04-18T09:00,37.6,47,19.2,0,0,2.7,12.5 +2022-04-18T10:00,41.8,46,22.5,0,0,3.2,11.9 +2022-04-18T11:00,46.7,42,24.7,0,0,4.3,13.4 +2022-04-18T12:00,50.9,38,26,0,0,5.4,15.2 +2022-04-18T13:00,54.9,34,27,0,0,6.6,16.3 +2022-04-18T14:00,57.6,31,27.3,0,0,8.3,18.3 +2022-04-18T15:00,58.9,29,26.8,0,0,9.2,19.5 +2022-04-18T16:00,59.5,28,26.6,0,0,6.8,19.2 +2022-04-18T17:00,55.1,34,27,0,0,4,14.8 +2022-04-18T18:00,53,36,27,0,0,3.5,9.4 +2022-04-18T19:00,49.2,47,29.6,0,0,3.2,6 +2022-04-18T20:00,47.5,51,30.1,0,0,4.6,5.1 +2022-04-18T21:00,46.1,49,27.9,0,0,5.1,8.9 +2022-04-18T22:00,42.9,57,28.9,0,0,5.4,7.8 +2022-04-18T23:00,41,64,29.8,0,0,4.2,6.9 +2022-04-19T00:00,38.9,72,30.7,0,0,2.8,6.5 +2022-04-19T01:00,37,76,30,0,0,3.7,5.6 +2022-04-19T02:00,36.5,72,28.5,0,0,4.7,6.3 +2022-04-19T03:00,37.4,67,27.5,0,0,0.9,6.3 +2022-04-19T04:00,36.3,70,27.6,0,0,3.1,3.4 +2022-04-19T05:00,33.8,79,28,0,0,3.5,5.6 +2022-04-19T06:00,34.6,76,28,0,0,5.1,7.2 +2022-04-19T07:00,42.4,56,27.9,0,0,3.4,8.9 +2022-04-19T08:00,53.4,41,30.1,0,0,2,7.6 +2022-04-19T09:00,64.5,29,31.6,0,0,2.5,8.1 +2022-04-19T10:00,72.2,11,15.6,0,0,7.9,16.8 +2022-04-19T11:00,73.3,12,17.4,0,0,5.3,16.6 +2022-04-19T12:00,75.6,12,19.2,0,0,5.4,14.1 +2022-04-19T13:00,77.9,10,17.9,0,0,3.2,14.1 +2022-04-19T14:00,78,11,18.3,0,0,6.3,12.8 +2022-04-19T15:00,78.8,11,20,0,0,12.6,22.8 +2022-04-19T16:00,78,10,16.2,0,0,10.9,23.3 +2022-04-19T17:00,77.1,13,22,0,0,4.5,19.7 +2022-04-19T18:00,73.1,16,24.6,0,0,3.4,7.8 +2022-04-19T19:00,67,21,25.3,0,0,3,4.5 +2022-04-19T20:00,58.7,29,26.5,0,0,2.3,3.4 +2022-04-19T21:00,52.1,35,25.4,0,0,2.8,5.1 +2022-04-19T22:00,50.3,37,25.2,0,0,5.9,8.3 +2022-04-19T23:00,47.5,40,24.3,0,0,5.7,10.7 +2022-04-20T00:00,50.5,39,26.7,0,0,18.8,28 +2022-04-20T01:00,51.2,40,27.9,0,0,12.5,31.8 +2022-04-20T02:00,47.3,48,28.7,0,0,4.8,20.4 +2022-04-20T03:00,45,54,29.1,0,0,4.4,7.6 +2022-04-20T04:00,41.5,64,30.1,0,0,4.3,7.4 +2022-04-20T05:00,42.7,54,27.1,0,0,5.2,6.3 +2022-04-20T06:00,43.1,58,29.1,0,0,3.8,8.3 +2022-04-20T07:00,48.1,45,27.8,0,0,8.3,14.1 +2022-04-20T08:00,52.4,37,26.9,0,0,6.8,15.9 +2022-04-20T09:00,56.6,32,27.1,0,0,6.6,15.2 +2022-04-20T10:00,59.7,29,27.7,0,0,4.8,15 +2022-04-20T11:00,63.1,26,28,0,0,7.2,16.3 +2022-04-20T12:00,65.8,24,28,0,0,8.1,17.7 +2022-04-20T13:00,68.4,22,28.3,0,0,8.3,18.3 +2022-04-20T14:00,70.3,22,29.2,0,0,9.4,18.8 +2022-04-20T15:00,69.7,22,29.7,0,0,13.2,23.9 +2022-04-20T16:00,67.8,22,27.8,0,0,13.9,26.4 +2022-04-20T17:00,70,17,23.6,0,0,12.1,23.9 +2022-04-20T18:00,65.5,20,23,0,0,10.7,21.3 +2022-04-20T19:00,58.1,26,23.3,0,0,6.7,16.3 +2022-04-20T20:00,57.1,26,22.3,0,0,7.2,11.6 +2022-04-20T21:00,52.1,35,25.3,0,0,4.1,11 +2022-04-20T22:00,54.4,32,25.3,0,0,3.8,7.4 +2022-04-20T23:00,49.4,42,27.3,0,0,3.7,4.5 +2022-04-21T00:00,48.2,44,27.5,0,0,9.3,13.4 +2022-04-21T01:00,46,46,26.2,0,0,4.7,15.7 +2022-04-21T02:00,48.5,41,25.6,0,0,3.1,8.3 +2022-04-21T03:00,42,56,27.2,0,0,3.7,4.9 +2022-04-21T04:00,39.6,61,27.3,0,0,4.5,5.4 +2022-04-21T05:00,39.7,63,28.1,0,0,2,5.6 +2022-04-21T06:00,41.5,63,29.8,0,0,0.9,3.4 +2022-04-21T07:00,47.7,52,30.9,0,0,0.5,5.1 +2022-04-21T08:00,53.5,45,32.6,0,0,3.3,9.6 +2022-04-21T09:00,58.6,39,33.4,0,0,1.6,9.6 +2022-04-21T10:00,63.4,34,34.3,0,0,5,13.2 +2022-04-21T11:00,68.3,30,35.3,0,0,6.1,15.7 +2022-04-21T12:00,72.1,27,36.5,0,0,7.9,18.1 +2022-04-21T13:00,75.6,25,37.2,0,0,5.6,18.8 +2022-04-21T14:00,80.3,14,27.2,0,0,2.3,16.8 +2022-04-21T15:00,82,10,20.9,0,0,13.7,22.8 +2022-04-21T16:00,80.1,10,18.1,0,0,18.4,31.3 +2022-04-21T17:00,77.4,21,34,0,0,9.6,32.2 +2022-04-21T18:00,71.9,35,42.8,0,0,2.9,15.4 +2022-04-21T19:00,65.5,28,31.9,0,0,5.6,8.5 +2022-04-21T20:00,61.6,31,30.8,0,0,7.4,11.9 +2022-04-21T21:00,60.1,34,31.4,0,0,8.7,13.2 +2022-04-21T22:00,58.7,32,29.3,0,0,10.4,17 +2022-04-21T23:00,56.2,33,27.8,0,0,9.5,17 +2022-04-22T00:00,53.8,34,26.2,0,0,9.7,15.9 +2022-04-22T01:00,51.3,36,25,0,0,8.3,15.7 +2022-04-22T02:00,49.5,35,23.1,0,0,8,13.2 +2022-04-22T03:00,48.3,37,23.1,0,0,7.3,13.2 +2022-04-22T04:00,48.9,36,22.8,0,0,7.8,12.5 +2022-04-22T05:00,51.6,30,20.8,0,0,9.2,13.4 +2022-04-22T06:00,51.6,33,23.1,0,0,9.4,15 +2022-04-22T07:00,58.1,30,26.6,0,0,9.7,15.2 +2022-04-22T08:00,67.9,21,26.3,0,0,10.8,18.1 +2022-04-22T09:00,72.4,14,21.3,0,0,14.1,25.1 +2022-04-22T10:00,76,12,19.3,0,0,15.4,27.5 +2022-04-22T11:00,78.4,11,19.3,0,0,15.6,29.5 +2022-04-22T12:00,79.9,10,18,0,0,17,30 +2022-04-22T13:00,81.2,10,19.1,0,0,14.4,31.5 +2022-04-22T14:00,83.3,9,19.8,0,0,14.4,26.4 +2022-04-22T15:00,81.8,7,10.7,0,0,23.2,39.8 +2022-04-22T16:00,79.3,8,13.6,0,0,22.2,39.8 +2022-04-22T17:00,76.9,7,8.7,0,0,21.5,44.7 +2022-04-22T18:00,70.6,12,15.8,0,0,18.4,35.3 +2022-04-22T19:00,63.8,20,21.7,0,0,12.3,30.4 +2022-04-22T20:00,55.2,35,27.7,0,0,17.9,33.1 +2022-04-22T21:00,55,26,20.9,0,0,6.8,29.1 +2022-04-22T22:00,54.5,27,21.5,0,0,4.6,11.2 +2022-04-22T23:00,52,32,22.8,0,0,2.7,7.4 +2022-04-23T00:00,51,33,22.8,0,0,0.5,5.1 +2022-04-23T01:00,48.4,41,25.6,0,0,2.1,2.9 +2022-04-23T02:00,47.4,40,24.4,0,0,2.7,5.6 +2022-04-23T03:00,47.7,37,22.6,0,0,3.2,5.4 +2022-04-23T04:00,45,36,19.6,0,0,9,11.9 +2022-04-23T05:00,45.5,42,23.5,0,0,8.1,25.9 +2022-04-23T06:00,46.6,39,23,0,0,7.8,12.8 +2022-04-23T07:00,50.4,36,24.6,0,0,7.3,13 +2022-04-23T08:00,52.2,31,22.1,0,0,3.9,12.3 +2022-04-23T09:00,54.5,25,19.6,0,0,12.2,23.3 +2022-04-23T10:00,54.7,26,20.2,0,0,7.6,27.1 +2022-04-23T11:00,56.8,22,18.2,0,0,8.8,17.9 +2022-04-23T12:00,57.4,20,16.6,0,0,16.8,30.9 +2022-04-23T13:00,58.5,18,15.5,0,0,15.5,31.5 +2022-04-23T14:00,58.4,20,16.9,0,0,11.5,31.1 +2022-04-23T15:00,59,17,13.9,0,0,13,25.1 +2022-04-23T16:00,57.3,18,14.3,0,0,10.3,25.1 +2022-04-23T17:00,54.7,21,15.4,0,0,6.4,19.9 +2022-04-23T18:00,53.3,22,15.7,0,0,4.9,12.3 +2022-04-23T19:00,49.6,28,17.7,0,0,5.3,9.2 +2022-04-23T20:00,47.6,31,18.1,0,0,11.3,18.8 +2022-04-23T21:00,45.7,34,19.2,0,0,6.3,18.3 +2022-04-23T22:00,43.1,40,20.6,0,0,5.5,10.3 +2022-04-23T23:00,46.3,36,20.5,0,0,4,7.6 +2022-04-24T00:00,45.6,37,20.8,0,0,1.1,5.1 +2022-04-24T01:00,41.5,46,22.4,0,0,3.8,5.6 +2022-04-24T02:00,40,49,22.6,0,0,4.3,6.3 +2022-04-24T03:00,39.4,51,22.6,0,0,4.6,6.7 +2022-04-24T04:00,38.4,53,22.6,0,0,5,7.4 +2022-04-24T05:00,39.1,57,25.3,0,0,3.4,7.4 +2022-04-24T06:00,39,55,24.4,0,0,5.8,8.1 +2022-04-24T07:00,41.5,48,23.5,0,0,1.8,9.2 +2022-04-24T08:00,43.5,46,24.1,0,0,2.2,7.6 +2022-04-24T09:00,44.3,47,25.3,0,0,5.2,11.9 +2022-04-24T10:00,48.2,42,25.9,0,0,4.5,14.1 +2022-04-24T11:00,49.5,39,25.3,0,0,3.4,13.6 +2022-04-24T12:00,51.4,31,21.6,0,0,3.5,12.5 +2022-04-24T13:00,54.9,27,21.6,0,0,8.6,18.1 +2022-04-24T14:00,53.9,28,21.3,0,0,11.5,22.6 +2022-04-24T15:00,53.3,27,20.6,0,0,9.7,22.6 +2022-04-24T16:00,53.4,26,19.3,0,0,10.4,19 +2022-04-24T17:00,49.9,31,20.6,0,0,11.2,21 +2022-04-24T18:00,46.6,45,26.2,0,0,13,22.1 +2022-04-24T19:00,42.8,64,31.5,0.004,0,10,22.6 +2022-04-24T20:00,42.2,66,31.6,0.008,0,5.3,17 +2022-04-24T21:00,41.3,62,29.3,0.008,0,2.1,9.4 +2022-04-24T22:00,40.6,69,31.2,0,0,3.7,6.7 +2022-04-24T23:00,39.3,83,34.5,0,0,3.2,7.2 +2022-04-25T00:00,35.3,94,33.9,0.004,0,3.3,5.6 +2022-04-25T01:00,34.1,97,33.4,0.004,0,3.3,4.9 +2022-04-25T02:00,33.9,93,32,0.008,0,2.8,4.7 +2022-04-25T03:00,34.7,73,27.1,0,0.028,6.1,9.4 +2022-04-25T04:00,35.2,63,24,0,0,5.9,10.5 +2022-04-25T05:00,35.5,32,8.6,0,0.028,6,8.7 +2022-04-25T06:00,35.9,38,12.5,0,0.028,5.6,10.1 +2022-04-25T07:00,37.9,40,15.4,0,0,4.7,10.3 +2022-04-25T08:00,40.8,37,16.3,0,0,4.2,11.4 +2022-04-25T09:00,43.8,33,16.3,0,0,3.8,12.1 +2022-04-25T10:00,47.1,30,16.9,0,0,4.1,13 +2022-04-25T11:00,50.5,26,17.2,0,0,5.5,14.8 +2022-04-25T12:00,53.1,24,17.4,0,0,7.3,17.7 +2022-04-25T13:00,54.8,23,17.7,0,0,8.3,18.6 +2022-04-25T14:00,55.3,23,17.8,0,0,8,18.8 +2022-04-25T15:00,55.8,22,17.5,0,0,7.5,17.9 +2022-04-25T16:00,55.5,22,16.9,0,0,7,16.6 +2022-04-25T17:00,53.4,26,19.3,0,0,2.7,15.2 +2022-04-25T18:00,52.3,27,19.4,0,0,3.4,8.3 +2022-04-25T19:00,47.7,38,23.5,0,0,4.7,6.7 +2022-04-25T20:00,47.9,38,23.5,0,0,2.7,5.6 +2022-04-25T21:00,45.9,42,24,0,0,2.9,3.4 +2022-04-25T22:00,41.6,53,25.8,0,0,3.4,5.8 +2022-04-25T23:00,38.9,61,26.8,0,0,3.5,6.3 +2022-04-26T00:00,36.2,69,27.1,0,0,3.1,5.8 +2022-04-26T01:00,35.6,68,26.2,0,0,4.4,7.4 +2022-04-26T02:00,34.6,65,23.9,0,0,6,9.4 +2022-04-26T03:00,33.6,60,21.4,0,0,5.9,10.1 +2022-04-26T04:00,32.1,61,20.3,0,0,4.6,9.4 +2022-04-26T05:00,32.3,62,20.7,0,0,3.2,7.2 +2022-04-26T06:00,34.7,54,19.6,0,0,4,6.7 +2022-04-26T07:00,41,45,21.5,0,0,1.6,7.6 +2022-04-26T08:00,48.6,36,22.8,0,0,1,6.9 +2022-04-26T09:00,55.8,27,22,0,0,2.9,9.6 +2022-04-26T10:00,61.6,19,19,0,0,6.5,14.8 +2022-04-26T11:00,66.4,14,16.2,0,0,8.1,17.4 +2022-04-26T12:00,69.5,11,13.5,0,0,8.5,17.9 +2022-04-26T13:00,70.5,10,11.6,0,0,9.6,18.8 +2022-04-26T14:00,72,11,15.5,0,0,9.2,19.5 +2022-04-26T15:00,73.4,12,17.1,0,0,7,18.6 +2022-04-26T16:00,73.9,12,18.3,0,0,3.5,15.2 +2022-04-26T17:00,69.4,11,12.4,0,0,14.4,9.4 +2022-04-26T18:00,66.1,14,16.3,0,0,6,23.9 +2022-04-26T19:00,60.4,21,20,0,0,5.4,9.2 +2022-04-26T20:00,53.3,30,22.6,0,0,3.9,9.2 +2022-04-26T21:00,50.4,37,24.8,0,0,4.1,6.7 +2022-04-26T22:00,47.5,42,25.6,0,0,4.8,7.6 +2022-04-26T23:00,47,41,24.8,0,0,5.5,8.7 +2022-04-27T00:00,44.5,46,25.1,0,0,4.2,8.7 +2022-04-27T01:00,42.6,49,24.8,0,0,4.3,7.8 +2022-04-27T02:00,41.5,51,24.5,0,0,3.7,6.9 +2022-04-27T03:00,41.9,48,23.8,0,0,4.3,6.7 +2022-04-27T04:00,41.6,49,24,0,0,4.4,6.9 +2022-04-27T05:00,41.2,49,23.3,0,0,4.1,6.9 +2022-04-27T06:00,43.7,51,26.6,0,0,2,6.3 +2022-04-27T07:00,47.1,48,28.5,0,0,2.1,7.6 +2022-04-27T08:00,52.7,39,28.4,0,0,0.9,6.5 +2022-04-27T09:00,57.6,30,26.5,0,0,0.5,6.3 +2022-04-27T10:00,64,23,25.3,0,0,5.2,12.8 +2022-04-27T11:00,68.5,18,23.8,0,0,7,16.6 +2022-04-27T12:00,70.8,17,24.2,0,0,8,17.4 +2022-04-27T13:00,73.4,16,24.6,0,0,9.1,19.2 +2022-04-27T14:00,76.6,14,23.7,0,0,8.8,19.2 +2022-04-27T15:00,65.2,43,42.1,0,0,11.1,19.5 +2022-04-27T16:00,65.7,38,39.4,0,0,4,19.5 +2022-04-27T17:00,68.1,31,36.1,0,0,7.2,10.3 +2022-04-27T18:00,67.1,29,34.1,0,0,6.5,12.5 +2022-04-27T19:00,61.7,35,33.9,0,0,6.8,13.4 +2022-04-27T20:00,55.8,45,34.8,0,0,4.8,10.7 +2022-04-27T21:00,53.7,54,37.7,0,0,4,11.2 +2022-04-27T22:00,50.5,61,37.4,0,0,5.5,8.7 +2022-04-27T23:00,48.4,57,33.9,0,0,5.8,9.4 +2022-04-28T00:00,47,50,29.4,0,0,5.2,9.4 +2022-04-28T01:00,47,46,27.1,0,0,5.9,9.4 +2022-04-28T02:00,45.3,50,28,0,0,6.5,9.2 +2022-04-28T03:00,41.9,63,30.4,0,0,4,11.9 +2022-04-28T04:00,40.8,63,29.3,0,0,5.4,6.7 +2022-04-28T05:00,42.8,53,27,0,0,5.4,6.7 +2022-04-28T06:00,44.9,51,27.7,0,0,4.5,7.4 +2022-04-28T07:00,52,43,30.4,0,0,4.2,9.6 +2022-04-28T08:00,61,31,29.8,0,0,1.8,8.9 +2022-04-28T09:00,64.9,23,25.9,0,0,2.1,8.3 +2022-04-28T10:00,67.4,21,26.2,0,0,6.3,14.8 +2022-04-28T11:00,69.4,21,27.3,0,0,5.2,15.7 +2022-04-28T12:00,71.3,19,27.1,0,0,3.3,14.1 +2022-04-28T13:00,72.7,17,25.5,0,0,4.2,12.3 +2022-04-28T14:00,74.6,16,24.7,0,0,4.8,13.4 +2022-04-28T15:00,75.7,14,22.3,0,0,5,13.6 +2022-04-28T16:00,75.7,11,18.1,0,0,5.2,12.1 +2022-04-28T17:00,70.9,21,28.8,0,0,14.1,10.3 +2022-04-28T18:00,68.4,24,30.2,0,0,8.5,23 +2022-04-28T19:00,63.6,33,33.6,0,0,10.3,17.7 +2022-04-28T20:00,61.3,31,30.1,0,0,7,16.3 +2022-04-28T21:00,57.9,34,29.8,0,0,5.1,11.2 +2022-04-28T22:00,55.4,37,29.4,0,0,4.7,8.5 +2022-04-28T23:00,52.4,43,30.6,0,0,3.4,9.6 +2022-04-29T00:00,49.7,45,29.5,0,0,4.5,8.1 +2022-04-29T01:00,46.9,52,30.4,0,0,4.8,7.4 +2022-04-29T02:00,45.2,55,30,0,0,4.1,9.6 +2022-04-29T03:00,45.1,54,29.2,0,0,2.8,6.5 +2022-04-29T04:00,41.8,60,28.9,0,0,3.6,6.3 +2022-04-29T05:00,41.1,50,24,0,0,4.4,7.4 +2022-04-29T06:00,44.7,42,22.8,0,0,5.3,8.3 +2022-04-29T07:00,52.4,36,26.2,0,0,3.1,8.9 +2022-04-29T08:00,61.4,28,27.9,0,0,0.8,7.8 +2022-04-29T09:00,65.6,12,12.4,0.004,0,5.7,12.3 +2022-04-29T10:00,63.5,17,18.4,0,0,17.4,30.4 +2022-04-29T11:00,63,17,17,0,0,19.5,34.4 +2022-04-29T12:00,57.5,23,20,0,0,24.2,41.8 +2022-04-29T13:00,58,17,13,0,0,21.1,41.4 +2022-04-29T14:00,59.4,16,13.6,0,0,18.2,37.1 +2022-04-29T15:00,59.4,13,7.9,0,0,16.9,32.9 +2022-04-29T16:00,58.9,13,8.5,0,0,13.7,30.6 +2022-04-29T17:00,54.4,19,12.7,0,0,20.7,25.1 +2022-04-29T18:00,51.7,24,15.9,0,0,19.2,34.7 +2022-04-29T19:00,49.1,29,17.8,0,0,17.8,31.5 +2022-04-29T20:00,48.3,30,18,0,0,14.3,29.1 +2022-04-29T21:00,47.3,31,18.3,0,0,8.2,23.5 +2022-04-29T22:00,44.4,38,20.3,0,0,4.5,13.4 +2022-04-29T23:00,46.5,36,21.1,0,0,3.8,7.8 +2022-04-30T00:00,41.1,46,21.8,0,0,2.6,4.9 +2022-04-30T01:00,40.6,47,21.8,0,0,3.8,6.3 +2022-04-30T02:00,41.2,45,21.2,0,0,6,9.4 +2022-04-30T03:00,41.9,42,20.4,0,0,7.8,12.8 +2022-04-30T04:00,42.4,41,20.6,0,0,8.1,13.6 +2022-04-30T05:00,40.7,45,21,0,0,5.2,13 +2022-04-30T06:00,42.6,52,26.2,0,0,2.7,8.1 +2022-04-30T07:00,46.9,41,24.3,0,0,3.2,7.8 +2022-04-30T08:00,49.6,36,24,0,0,5.1,12.5 +2022-04-30T09:00,51.5,33,23.6,0,0,3.6,12.5 +2022-04-30T10:00,53.2,32,24,0,0,3.5,12.3 +2022-04-30T11:00,54.9,30,24,0,0,3.8,13.2 +2022-04-30T12:00,57.4,27,23.5,0,0,3.2,13.2 +2022-04-30T13:00,60.4,23,22.9,0,0,4.3,13.6 +2022-04-30T14:00,62.6,21,22.4,0,0,4.8,14.1 +2022-04-30T15:00,64.2,20,22.1,0,0,5.1,13.9 +2022-04-30T16:00,64.4,19,21.7,0,0,7,15 +2022-04-30T17:00,63.6,18,19.1,0,0,6,16.6 +2022-04-30T18:00,62.1,19,18.9,0,0,6.7,11.6 +2022-04-30T19:00,56.7,23,19.3,0,0,8.9,14.3 +2022-04-30T20:00,53.2,26,18.8,0,0,5.7,14.3 +2022-04-30T21:00,50.7,30,20.3,0,0,6.1,8.7 +2022-04-30T22:00,48.2,31,19.2,0,0,5,8.7 +2022-04-30T23:00,44.3,41,21.9,0,0,6.2,8.3 +2022-05-01T00:00,42.6,44,22.4,0,0,3.6,7.4 +2022-05-01T01:00,42.1,46,22.7,0,0,3.6,5.4 +2022-05-01T02:00,40.4,51,23.6,0,0,4.5,5.8 +2022-05-01T03:00,39.5,54,24,0,0,5.1,6.3 +2022-05-01T04:00,40.6,51,23.8,0,0,3.4,5.8 +2022-05-01T05:00,37.6,58,24.3,0,0,2.4,3.8 +2022-05-01T06:00,38.8,58,25.3,0,0,3.1,5.6 +2022-05-01T07:00,43.2,46,24,0,0,2.6,7.8 +2022-05-01T08:00,46.5,41,24,0,0,1.5,8.3 +2022-05-01T09:00,49.2,37,24.3,0,0,2.1,9.8 +2022-05-01T10:00,52.5,34,25.2,0,0,4.8,13.2 +2022-05-01T11:00,56.5,31,26.2,0,0,6.9,16.8 +2022-05-01T12:00,58.9,29,26.8,0,0,9.4,20.1 +2022-05-01T13:00,61.3,27,27.3,0,0,11.7,23.3 +2022-05-01T14:00,63.7,26,28.6,0,0,14.6,27.1 +2022-05-01T15:00,63.4,27,28.7,0,0,16.8,30.2 +2022-05-01T16:00,61.9,27,28,0,0,14.2,30.2 +2022-05-01T17:00,60.2,31,29.1,0,0,16.3,25.3 +2022-05-01T18:00,57.7,35,30.2,0,0,13.4,27.7 +2022-05-01T19:00,54.3,43,32.4,0,0,11.9,21.9 +2022-05-01T20:00,53.2,48,34,0,0,11.5,19.7 +2022-05-01T21:00,49.5,69,39.7,0,0,11,18.6 +2022-05-01T22:00,46.2,70,37.1,0,0,8.7,18.6 +2022-05-01T23:00,45.2,79,39.2,0.063,0,8.3,14.1 +2022-05-02T00:00,43.3,89,40.2,0.02,0,9.1,15.2 +2022-05-02T01:00,41.5,91,39,0.016,0,8.6,15.2 +2022-05-02T02:00,40.5,88,37.2,0.004,0,9.1,15.7 +2022-05-02T03:00,37.5,99,37.3,0.043,0.028,10.9,17.9 +2022-05-02T04:00,37.9,95,36.6,0.008,0,7.7,19 +2022-05-02T05:00,36.8,97,36,0.016,0,9.9,15.2 +2022-05-02T06:00,35.2,100,35.2,0.024,0,10.4,18.8 +2022-05-02T07:00,34.8,99,34.6,0.02,0.028,11.8,19.7 +2022-05-02T08:00,35.2,93,33.4,0.008,0,12.2,21.3 +2022-05-02T09:00,35.9,90,33.3,0.008,0,11.6,21 +2022-05-02T10:00,39.2,77,32.7,0.004,0,11.9,21.5 +2022-05-02T11:00,41.5,70,32.3,0.004,0,11.7,21.5 +2022-05-02T12:00,43.2,64,31.8,0,0,10.7,21.5 +2022-05-02T13:00,44.4,61,31.6,0,0,9.4,20.4 +2022-05-02T14:00,44.1,62,31.9,0,0,8.5,18.8 +2022-05-02T15:00,44.1,62,31.7,0,0,6.6,17.2 +2022-05-02T16:00,44.6,60,31.6,0,0,5.9,14.3 +2022-05-02T17:00,43.2,62,31,0,0,4.5,13 +2022-05-02T18:00,42.6,63,30.8,0,0,1,10.1 +2022-05-02T19:00,41.5,66,31,0,0,2.5,6.3 +2022-05-02T20:00,40.9,68,31.3,0,0,0.5,5.6 +2022-05-02T21:00,39.7,73,31.7,0,0,2.8,3.8 +2022-05-02T22:00,37.4,80,31.9,0,0,2.9,4.3 +2022-05-02T23:00,35.7,86,31.8,0,0,3.1,4.7 +2022-05-03T00:00,34.7,88,31.6,0,0,2.2,4.9 +2022-05-03T01:00,33.1,93,31.3,0,0,3.4,3.8 +2022-05-03T02:00,33.2,92,31.2,0,0,2.9,4.7 +2022-05-03T03:00,33.5,91,31.2,0,0,1.4,3.4 +2022-05-03T04:00,32.2,95,30.8,0,0,1.8,2 +2022-05-03T05:00,33.4,96,32.5,0,0,3.3,4.5 +2022-05-03T06:00,33.7,98,33.3,0,0,1.6,7.2 +2022-05-03T07:00,35,97,34.2,0,0,1.8,6.9 +2022-05-03T08:00,38.4,83,33.8,0,0,2.5,8.5 +2022-05-03T09:00,41.4,76,34.4,0,0,4,11.2 +2022-05-03T10:00,46,62,33.8,0,0,5.2,14.1 +2022-05-03T11:00,49.6,57,35,0,0,5.5,14.8 +2022-05-03T12:00,53.5,51,35.8,0,0,6.7,16.3 +2022-05-03T13:00,56.7,47,36.7,0,0,7.1,16.8 +2022-05-03T14:00,58.7,45,37.2,0,0,9.4,19.5 +2022-05-03T15:00,59.1,44,37.1,0,0,11.2,21.9 +2022-05-03T16:00,58.6,46,37.8,0,0,10,21.7 +2022-05-03T17:00,53.4,56,38,0,0,7.6,19 +2022-05-03T18:00,52.7,58,38.3,0,0,4.5,14.1 +2022-05-03T19:00,49.7,70,40.2,0.016,0,3.2,9.6 +2022-05-03T20:00,47.7,79,41.6,0.012,0,5.8,9.4 +2022-05-03T21:00,46.8,83,41.8,0.004,0,4.7,9.2 +2022-05-03T22:00,46.2,86,42.3,0.004,0,5.7,10.1 +2022-05-03T23:00,45.6,86,41.7,0,0,7.5,11.9 +2022-05-04T00:00,44.8,87,41.1,0,0,10,15.4 +2022-05-04T01:00,43,94,41.4,0,0,7.4,15.9 +2022-05-04T02:00,43.3,93,41.4,0,0,9.2,14.5 +2022-05-04T03:00,43,93,41.1,0,0,8.2,15.2 +2022-05-04T04:00,42.7,93,40.7,0,0,7,13.9 +2022-05-04T05:00,40.8,95,39.5,0.008,0,7.2,11.9 +2022-05-04T06:00,40.3,98,39.8,0.091,0.248,7.6,12.5 +2022-05-04T07:00,39.1,97,38.4,0.091,0,12.7,21.3 +2022-05-04T08:00,40.1,96,38.9,0.079,0,11.3,21.5 +2022-05-04T09:00,38.9,96,37.9,0.071,0,9,19.7 +2022-05-04T10:00,41.1,90,38.3,0.051,0,9,16.6 +2022-05-04T11:00,43.3,82,38.2,0.035,0.028,7.8,16.1 +2022-05-04T12:00,45.9,76,38.8,0.008,0,8.1,15.9 +2022-05-04T13:00,47.9,69,38.1,0.004,0,7.2,16.1 +2022-05-04T14:00,50.5,61,37.3,0.004,0,7,15.4 +2022-05-04T15:00,51.6,58,37.1,0,0,7.2,14.8 +2022-05-04T16:00,50.6,58,36.4,0,0,7.8,15 +2022-05-04T17:00,45.7,82,40.6,0,0,2.1,14.8 +2022-05-04T18:00,46,82,41,0.012,0,4.7,13.2 +2022-05-04T19:00,44.3,90,41.5,0.031,0,3,12.1 +2022-05-04T20:00,43.5,90,40.7,0.008,0,4.7,7.6 +2022-05-04T21:00,41.5,95,40.3,0.102,0,2.4,11.2 +2022-05-04T22:00,41.1,91,38.8,0.083,0.055,0.3,5.8 +2022-05-04T23:00,40.8,96,39.7,0.004,0,4.4,7.2 +2022-05-05T00:00,40.6,95,39.3,0.008,0,3.6,8.3 +2022-05-05T01:00,40,94,38.4,0,0,2.9,6.3 +2022-05-05T02:00,35.3,98,34.7,0,0,3.4,6 +2022-05-05T03:00,35.2,98,34.5,0,0,2.2,4.5 +2022-05-05T04:00,34.7,97,34,0,0,4,6.7 +2022-05-05T05:00,35.5,93,33.7,0,0,2.9,6.9 +2022-05-05T06:00,37.9,93,36.1,0,0,5,8.1 +2022-05-05T07:00,43.6,88,40.2,0,0,4.5,9.4 +2022-05-05T08:00,49.7,64,38.2,0,0,5.1,11.9 +2022-05-05T09:00,54.1,53,37.6,0,0,1.6,11.9 +2022-05-05T10:00,58.2,44,36.3,0,0,4.7,12.1 +2022-05-05T11:00,61.3,39,35.8,0,0,8.5,18.3 +2022-05-05T12:00,64,34,35.1,0,0,7.6,18.3 +2022-05-05T13:00,65.4,33,35.5,0,0,10.5,20.8 +2022-05-05T14:00,65.3,33,35.8,0,0,9.7,21.5 +2022-05-05T15:00,66.4,30,33.9,0,0,7.4,19.2 +2022-05-05T16:00,66.7,28,33,0,0,7.1,15.4 +2022-05-05T17:00,66.3,32,35.4,0,0,7.5,13.9 +2022-05-05T18:00,62.5,43,39.5,0,0,5.9,13.9 +2022-05-05T19:00,61.3,39,36.2,0,0,3.7,9.2 +2022-05-05T20:00,53.7,54,37.4,0,0,4.3,6.5 +2022-05-05T21:00,49.4,60,36.2,0,0,5.1,8.3 +2022-05-05T22:00,47,61,34.3,0,0,4,8.1 +2022-05-05T23:00,44.8,64,33.2,0,0,4,6.3 +2022-05-06T00:00,42.6,67,32.5,0,0,4,6.5 +2022-05-06T01:00,41.2,72,32.8,0,0,4.9,6.5 +2022-05-06T02:00,40.8,69,31.3,0,0,4.4,5.8 +2022-05-06T03:00,40.3,70,31.1,0,0,5.2,6.3 +2022-05-06T04:00,41.8,64,30.7,0,0,3.1,6.5 +2022-05-06T05:00,43.4,59,30,0,0,4,6 +2022-05-06T06:00,46.4,56,31.4,0,0,4.5,7.6 +2022-05-06T07:00,52.8,50,34.6,0,0,3.2,7.8 +2022-05-06T08:00,61.2,42,37.7,0,0,4.3,9.8 +2022-05-06T09:00,68.2,32,37.2,0,0,5.5,12.3 +2022-05-06T10:00,72.4,28,37,0,0,0.8,12.3 +2022-05-06T11:00,74.4,20,31.2,0,0,1.3,7.6 +2022-05-06T12:00,76.5,20,32.1,0,0,7.7,15.2 +2022-05-06T13:00,77.1,19,32.1,0,0,12.5,22.6 +2022-05-06T14:00,78.3,18,30.9,0,0,10.5,22.8 +2022-05-06T15:00,80.2,16,29.4,0,0,9.9,19.7 +2022-05-06T16:00,78.2,18,30.6,0,0,11,21 +2022-05-06T17:00,78.4,23,37.4,0,0,7.3,19.2 +2022-05-06T18:00,71.8,38,44.7,0,0,4.3,12.1 +2022-05-06T19:00,62.9,45,41.2,0,0,7.3,8.3 +2022-05-06T20:00,61.4,42,38,0,0,4.8,8.7 +2022-05-06T21:00,56.6,48,37.2,0,0,4.7,5.8 +2022-05-06T22:00,54.8,51,37,0,0,3.4,5.6 +2022-05-06T23:00,51.8,52,34.5,0,0,4,6.3 +2022-05-07T00:00,49.1,53,32.5,0,0,4.3,7.4 +2022-05-07T01:00,46.1,60,33,0,0,6.2,7.6 +2022-05-07T02:00,47.3,55,31.8,0,0,4.6,7.4 +2022-05-07T03:00,45.7,57,31.1,0,0,5.6,7.4 +2022-05-07T04:00,46.9,49,28.6,0,0,5.5,8.1 +2022-05-07T05:00,43.3,65,32.5,0,0,4.8,12.3 +2022-05-07T06:00,48,57,33.4,0,0,5.5,7.2 +2022-05-07T07:00,56.8,49,37.9,0,0,4.3,9.8 +2022-05-07T08:00,67.6,39,42,0,0,4.3,9.4 +2022-05-07T09:00,76.6,21,34,0,0,10.3,17.7 +2022-05-07T10:00,79.6,17,30.8,0,0,13.9,25.1 +2022-05-07T11:00,82.1,17,32.4,0,0,8.8,24.8 +2022-05-07T12:00,83.3,16,32.5,0,0,10.2,20.8 +2022-05-07T13:00,84.6,15,31.7,0,0,11.9,22.4 +2022-05-07T14:00,83.5,15,30.9,0,0,13.8,24.4 +2022-05-07T15:00,83.3,14,29.7,0,0,12.7,25.1 +2022-05-07T16:00,83.4,13,28.3,0,0,10.5,23 +2022-05-07T17:00,80.4,19,34.3,0,0,6.7,18.1 +2022-05-07T18:00,72.5,26,35.2,0,0,20,25.7 +2022-05-07T19:00,62.2,36,35.2,0,0,10.4,37.4 +2022-05-07T20:00,59,42,35.9,0,0,4,16.6 +2022-05-07T21:00,56.3,45,35.1,0,0,4,5.6 +2022-05-07T22:00,54.5,47,34.4,0,0,5.5,8.5 +2022-05-07T23:00,53.4,48,34.4,0,0,7.9,12.8 +2022-05-08T00:00,51,54,34.8,0,0,4.6,12.8 +2022-05-08T01:00,51.9,52,34.6,0,0,4,7.6 +2022-05-08T02:00,49.1,58,34.8,0,0,8.8,13.4 +2022-05-08T03:00,47.4,64,35.7,0,0,7.6,14.1 +2022-05-08T04:00,46.9,64,35.3,0,0,6.7,12.1 +2022-05-08T05:00,46.7,64,35.2,0,0,4.7,11.9 +2022-05-08T06:00,48.7,63,36.5,0,0,4,7.4 +2022-05-08T07:00,52,57,37,0,0,2.2,6.9 +2022-05-08T08:00,57.2,42,34.5,0,0,9.9,17.7 +2022-05-08T09:00,60.9,38,35.1,0,0,10.7,20.8 +2022-05-08T10:00,64.9,34,36,0,0,5.3,20.1 +2022-05-08T11:00,65.8,34,36.7,0,0,3.7,13.6 +2022-05-08T12:00,71.3,25,33.7,0,0,8.4,17.7 +2022-05-08T13:00,75.2,18,29.2,0,0,1.8,17.9 +2022-05-08T14:00,74.6,22,33.6,0,0,10.4,19 +2022-05-08T15:00,75.7,26,37.9,0,0,7.3,23.5 +2022-05-08T16:00,78.2,14,25.4,0,0,7.3,16.1 +2022-05-08T17:00,69.1,39,43,0,0,5.2,25.3 +2022-05-08T18:00,66.5,45,44.2,0,0,10.6,17.4 +2022-05-08T19:00,59.1,53,41.8,0,0,9.6,19.5 +2022-05-08T20:00,55.3,61,42.2,0,0,2.4,14.8 +2022-05-08T21:00,50.9,73,42.7,0,0,6.5,6.9 +2022-05-08T22:00,52,67,41.3,0,0,11.9,17.2 +2022-05-08T23:00,50.4,78,43.9,0,0,4.7,18.6 +2022-05-09T00:00,49.6,80,43.8,0,0,8,12.1 +2022-05-09T01:00,48.2,81,42.7,0,0,8.4,15.9 +2022-05-09T02:00,45.9,87,42.4,0,0,7,13.6 +2022-05-09T03:00,44.5,90,41.7,0,0,5.6,11.4 +2022-05-09T04:00,43.2,91,40.6,0,0,3.8,9.2 +2022-05-09T05:00,42.5,85,38.3,0,0,3.9,6.3 +2022-05-09T06:00,45.6,75,38.2,0,0,3.7,6.3 +2022-05-09T07:00,48.1,69,38.4,0,0,4.7,13.4 +2022-05-09T08:00,52.2,62,39.5,0,0,1.7,10.5 +2022-05-09T09:00,55,60,41.5,0,0,6.5,14.8 +2022-05-09T10:00,59,52,41.5,0,0,10,19.7 +2022-05-09T11:00,63.1,45,41.4,0,0,11.9,22.8 +2022-05-09T12:00,67.7,38,41.4,0,0,12.3,24.8 +2022-05-09T13:00,73,26,35.7,0,0,6.2,24.2 +2022-05-09T14:00,76.3,13,22.5,0,0,12.8,22.8 +2022-05-09T15:00,76.6,12,20,0,0,21,34.7 +2022-05-09T16:00,77.4,12,20.3,0,0,15,35.6 +2022-05-09T17:00,69,32,38.1,0,0,9.2,26.8 +2022-05-09T18:00,67.6,36,39.5,0,0,9.6,14.5 +2022-05-09T19:00,60.5,42,37.1,0,0,12,21.7 +2022-05-09T20:00,57,51,39,0,0,4.9,18.6 +2022-05-09T21:00,54.4,42,31.8,0,0,14,20.8 +2022-05-09T22:00,50.6,35,24.3,0,0,9.7,23.3 +2022-05-09T23:00,49.9,38,25.3,0,0,7.8,15 +2022-05-10T00:00,47.2,44,26.6,0,0,3.8,11.6 +2022-05-10T01:00,44.2,54,28.6,0,0,6,6.9 +2022-05-10T02:00,45.5,48,26.8,0,0,3.9,6.7 +2022-05-10T03:00,45.2,47,26.3,0,0,3,4.7 +2022-05-10T04:00,42,56,27.6,0,0,5.2,5.8 +2022-05-10T05:00,38.8,70,29.8,0,0,4.2,6.3 +2022-05-10T06:00,42.5,62,30.5,0,0,2,5.1 +2022-05-10T07:00,47.2,45,27.1,0,0,2.3,7.2 +2022-05-10T08:00,50.3,37,24.9,0,0,4.7,11.4 +2022-05-10T09:00,52.7,32,23.9,0,0,5.6,13.9 +2022-05-10T10:00,55.1,29,23.7,0,0,5.9,14.8 +2022-05-10T11:00,59.1,27,25.3,0,0,6.6,16.1 +2022-05-10T12:00,63.4,25,27.3,0,0,6.7,16.6 +2022-05-10T13:00,67.8,24,29.4,0,0,9.7,20.4 +2022-05-10T14:00,68.8,24,30.3,0,0,15,27.3 +2022-05-10T15:00,68.4,26,31.8,0,0,14.5,29.1 +2022-05-10T16:00,69.6,25,32.7,0,0,11,26.6 +2022-05-10T17:00,62.2,28,28.8,0,0,13.2,20.6 +2022-05-10T18:00,62.3,29,29.8,0,0,8.1,22.1 +2022-05-10T19:00,56.8,37,30.9,0,0,4.5,13 +2022-05-10T20:00,53.8,45,32.9,0,0,5.2,7.4 +2022-05-10T21:00,51.4,48,32.3,0,0,3.9,6.3 +2022-05-10T22:00,49.8,53,33.3,0,0,4.2,6.3 +2022-05-10T23:00,46.2,68,36.3,0,0,2.6,6 +2022-05-11T00:00,44.9,73,36.8,0,0,3,4.3 +2022-05-11T01:00,43.5,76,36.4,0,0,4.3,5.8 +2022-05-11T02:00,44.8,66,34.2,0,0,4.4,7.6 +2022-05-11T03:00,41.8,74,34.1,0,0,2.7,7.4 +2022-05-11T04:00,40.6,78,34.3,0,0,3.7,5.4 +2022-05-11T05:00,39.5,80,33.9,0,0,3.5,5.4 +2022-05-11T06:00,44.2,70,35.2,0,0,4.1,7.6 +2022-05-11T07:00,53.2,53,36.7,0,0,2.8,7.6 +2022-05-11T08:00,65.7,32,34.8,0,0,5.2,11.2 +2022-05-11T09:00,76.2,13,22.1,0,0,10.5,18.3 +2022-05-11T10:00,78,14,24.2,0,0,16,28.9 +2022-05-11T11:00,81,11,21.9,0,0,12.3,28 +2022-05-11T12:00,83,10,21.3,0,0,13.5,24.8 +2022-05-11T13:00,84.1,10,22.6,0,0,13.2,25.1 +2022-05-11T14:00,84.8,10,22.2,0,0,15,26.6 +2022-05-11T15:00,85.5,9,20.5,0,0,16.4,29.1 +2022-05-11T16:00,86.5,8,16.9,0,0,15.8,28 +2022-05-11T17:00,84.7,8,17.4,0,0,14.4,28.9 +2022-05-11T18:00,80.6,11,21.9,0,0,8.6,25.9 +2022-05-11T19:00,69.5,15,19.6,0,0,7.4,13.9 +2022-05-11T20:00,67.6,14,16.6,0,0,7,11.2 +2022-05-11T21:00,68.6,14,16.8,0,0,4.1,11.2 +2022-05-11T22:00,59.7,52,42,0,0,9.7,16.3 +2022-05-11T23:00,57.4,60,43.8,0,0,5.9,15.4 +2022-05-12T00:00,55.2,65,43.5,0,0,5.5,8.9 +2022-05-12T01:00,59.3,55,43.2,0,0,2,8.3 +2022-05-12T02:00,54.1,65,42.5,0,0,2.2,2.9 +2022-05-12T03:00,49.5,70,40,0,0,2.5,3.1 +2022-05-12T04:00,48,72,39.3,0,0,4.1,5.6 +2022-05-12T05:00,46.5,86,42.5,0,0,6,5.8 +2022-05-12T06:00,50.5,91,47.9,0,0,1.4,6.5 +2022-05-12T07:00,50.6,96,49.5,0,0,4.9,9.8 +2022-05-12T08:00,53.1,83,48.1,0,0,5.2,12.1 +2022-05-12T09:00,61.3,58,46.6,0,0,9.5,17.4 +2022-05-12T10:00,64.5,40,39.9,0,0,4.3,25.1 +2022-05-12T11:00,68.1,9,7,0,0,14.8,25.9 +2022-05-12T12:00,69,9,8.7,0,0,13.7,29.1 +2022-05-12T13:00,69.8,9,8,0,0,15.7,28.6 +2022-05-12T14:00,69,10,10.8,0,0,15.7,30 +2022-05-12T15:00,69.3,10,10.7,0,0,14.4,28.9 +2022-05-12T16:00,69.7,10,10.9,0,0,10,26.6 +2022-05-12T17:00,69.3,9,9,0,0,13.4,19.5 +2022-05-12T18:00,66.9,11,10.4,0,0,9.2,23 +2022-05-12T19:00,61.2,13,10.6,0,0,6.9,15.4 +2022-05-12T20:00,54.9,21,15.2,0,0,5.3,11.4 +2022-05-12T21:00,51,29,20.1,0,0,5.7,8.1 +2022-05-12T22:00,47.9,34,20.9,0,0,6,7.8 +2022-05-12T23:00,51.2,28,18.9,0,0,4.1,8.5 +2022-05-13T00:00,44.7,42,23.3,0,0,4.8,5.6 +2022-05-13T01:00,43.7,47,24.6,0,0,3.2,6.7 +2022-05-13T02:00,41.4,52,24.9,0,0,4,5.6 +2022-05-13T03:00,39.7,55,24.9,0,0,3.7,5.8 +2022-05-13T04:00,38.6,57,24.6,0,0,4.8,6 +2022-05-13T05:00,38.4,55,23.5,0,0,4,6.5 +2022-05-13T06:00,43.9,46,24.3,0,0,3.5,6.9 +2022-05-13T07:00,51.8,37,26.2,0,0,4.5,10.3 +2022-05-13T08:00,58.6,23,20.8,0,0,3.2,10.1 +2022-05-13T09:00,64,16,17.6,0,0,4.5,12.3 +2022-05-13T10:00,66.6,16,18.5,0,0,2.8,12.3 +2022-05-13T11:00,68.9,14,18.1,0,0,4.2,13 +2022-05-13T12:00,71.2,12,16.8,0,0,6.5,15.9 +2022-05-13T13:00,73.4,11,15.6,0,0,6.3,16.1 +2022-05-13T14:00,75.4,8,10.3,0,0,8.7,17.9 +2022-05-13T15:00,75.3,8,8.8,0,0,12.9,24.2 +2022-05-13T16:00,75,7,7.2,0,0,12,24.2 +2022-05-13T17:00,74.7,7,7.2,0,0,9.1,21.7 +2022-05-13T18:00,71.1,9,10.4,0,0,9.1,19.2 +2022-05-13T19:00,65.8,11,10.1,0,0,6.1,15.4 +2022-05-13T20:00,63.8,12,10.8,0,0,5.9,10.5 +2022-05-13T21:00,60.1,16,14,0,0,6.7,11 +2022-05-13T22:00,56.3,22,17.7,0,0,5.4,10.7 +2022-05-13T23:00,52.5,28,20.6,0,0,6.8,8.5 +2022-05-14T00:00,52.2,28,19.9,0,0,4.8,8.5 +2022-05-14T01:00,51.9,32,22.7,0,0,0.7,8.3 +2022-05-14T02:00,45.5,40,22.4,0,0,4.5,6.7 +2022-05-14T03:00,43.3,44,22.7,0,0,4.1,6.5 +2022-05-14T04:00,43.4,40,20.5,0,0,5,8.1 +2022-05-14T05:00,42.7,43,22,0,0,4.7,8.3 +2022-05-14T06:00,48.3,39,24.5,0,0,4.6,7.2 +2022-05-14T07:00,55,35,27.8,0,0,0.9,7.8 +2022-05-14T08:00,62.8,22,22.8,0,0,6.3,12.8 +2022-05-14T09:00,68.9,14,18.4,0,0,7.5,16.1 +2022-05-14T10:00,71.3,14,19.9,0,0,5.7,15.9 +2022-05-14T11:00,73.6,13,20.6,0,0,6.9,15.9 +2022-05-14T12:00,77.5,12,21.7,0,0,5.6,16.1 +2022-05-14T13:00,79.6,12,22.6,0,0,10.2,19.9 +2022-05-14T14:00,79.2,12,23,0,0,9.4,21.9 +2022-05-14T15:00,79.9,12,23.1,0,0,6.7,19.2 +2022-05-14T16:00,79.6,12,22.3,0,0,4.3,15 +2022-05-14T17:00,76.7,15,25.4,0,0,12.7,11 +2022-05-14T18:00,74.8,16,25.7,0,0,9.1,21.9 +2022-05-14T19:00,67.9,22,27.7,0,0,5.1,14.1 +2022-05-14T20:00,67,25,29.6,0,0,4.1,8.5 +2022-05-14T21:00,61.3,30,29.9,0,0,4.7,8.1 +2022-05-14T22:00,56.8,38,31.6,0,0,4,7.4 +2022-05-14T23:00,54.9,46,34.5,0,0,4.2,6 +2022-05-15T00:00,53.6,48,34.5,0,0,5.4,6.3 +2022-05-15T01:00,52,49,33.4,0,0,6.4,8.1 +2022-05-15T02:00,51.2,50,33.4,0,0,6.4,7.6 +2022-05-15T03:00,49.7,52,32.8,0,0,6.2,8.7 +2022-05-15T04:00,48,54,32.1,0,0,4.5,7.8 +2022-05-15T05:00,46.8,55,31.3,0,0,4.2,7.6 +2022-05-15T06:00,52.8,45,32,0,0,6.5,9.6 +2022-05-15T07:00,60.3,38,34.7,0,0,2.4,10.5 +2022-05-15T08:00,63.5,35,35.4,0,0,10.7,18.6 +2022-05-15T09:00,65.3,34,36.1,0,0,10.6,22.6 +2022-05-15T10:00,68.2,30,35.9,0,0,8.4,20.4 +2022-05-15T11:00,70.6,28,36,0,0,8,17.9 +2022-05-15T12:00,72.9,26,36,0,0,8.4,18.3 +2022-05-15T13:00,74.5,25,36.1,0,0,8.4,18.6 +2022-05-15T14:00,76,23,36.1,0,0,7.9,18.3 +2022-05-15T15:00,77,22,35.2,0,0,7.1,17 +2022-05-15T16:00,77.5,21,34.8,0,0,7.6,16.3 +2022-05-15T17:00,71.1,35,41.9,0,0,4,15.7 +2022-05-15T18:00,71.9,31,39.6,0,0,2,8.5 +2022-05-15T19:00,67.7,42,43.7,0,0,2.7,5.4 +2022-05-15T20:00,65.4,43,42.4,0,0,4.3,4.9 +2022-05-15T21:00,60.4,48,40.7,0,0,4.6,5.4 +2022-05-15T22:00,63,37,36.3,0,0,3.2,5.6 +2022-05-15T23:00,55.8,52,38.4,0,0,4.8,7.2 +2022-05-16T00:00,52.6,60,39.3,0,0,4.8,7.2 +2022-05-16T01:00,49.9,70,40.4,0,0,0.8,6 +2022-05-16T02:00,47.7,80,41.8,0,0,2.3,3.4 +2022-05-16T03:00,47,79,41,0,0,2.1,3.8 +2022-05-16T04:00,47.2,70,37.9,0,0,5.1,8.3 +2022-05-16T05:00,46,71,37.1,0,0,3,8.1 +2022-05-16T06:00,50.6,60,37,0,0,3.9,6.9 +2022-05-16T07:00,56,53,39.1,0,0,3.7,8.9 +2022-05-16T08:00,61.1,45,39.5,0,0,4.6,11 +2022-05-16T09:00,67.5,33,37.5,0,0,3.5,11.2 +2022-05-16T10:00,75.4,23,34.8,0,0,4.3,11.4 +2022-05-16T11:00,78.8,18,31.5,0,0,5.5,13 +2022-05-16T12:00,83.5,13,27.6,0,0,0.7,13.6 +2022-05-16T13:00,84.1,10,21.4,0,0,6.9,13.6 +2022-05-16T14:00,82.2,12,24.3,0,0,7.3,17.4 +2022-05-16T15:00,82.6,12,25,0,0,7.4,15 +2022-05-16T16:00,82.9,13,28,0,0,7,15 +2022-05-16T17:00,75.5,25,37.2,0,0,9.2,14.1 +2022-05-16T18:00,74.9,21,32.5,0,0,8.1,16.8 +2022-05-16T19:00,70,24,31.6,0,0,5.5,13.2 +2022-05-16T20:00,67.8,26,31.5,0,0,5.4,8.7 +2022-05-16T21:00,63.9,34,34.6,0,0,6.3,9.8 +2022-05-16T22:00,60.6,41,37,0,0,6.6,10.7 +2022-05-16T23:00,58.4,40,34,0,0,6.3,10.7 +2022-05-17T00:00,56.7,39,31.8,0,0,5.1,10.3 +2022-05-17T01:00,55.9,40,31.8,0,0,4,8.3 +2022-05-17T02:00,52.8,44,31.6,0,0,3.8,7.8 +2022-05-17T03:00,52.4,49,33.9,0,0,5.4,9.2 +2022-05-17T04:00,51,50,32.9,0,0,5.3,8.9 +2022-05-17T05:00,51.8,43,30,0,0,4.2,7.6 +2022-05-17T06:00,54.4,41,31.2,0,0,3.8,6.7 +2022-05-17T07:00,60.4,38,34.7,0,0,2.1,6.5 +2022-05-17T08:00,67.6,29,34.3,0,0,2.3,8.3 +2022-05-17T09:00,73.2,21,31,0,0,4.6,12.1 +2022-05-17T10:00,78.5,18,31.4,0,0,5.5,13.4 +2022-05-17T11:00,81.1,15,29.1,0,0,7.6,15.9 +2022-05-17T12:00,82.8,12,25.9,0,0,8.8,18.8 +2022-05-17T13:00,82.9,12,24.6,0,0,8.5,18.6 +2022-05-17T14:00,83.7,12,25,0,0,9.3,19 +2022-05-17T15:00,83,12,25.3,0,0,7.8,19 +2022-05-17T16:00,81,15,29.7,0,0,15.1,25.9 +2022-05-17T17:00,70.5,34,41.1,0,0,10.4,26.6 +2022-05-17T18:00,70.8,34,40.9,0.004,0,4.7,17 +2022-05-17T19:00,67.2,42,43.3,0,0,3.5,8.7 +2022-05-17T20:00,64.9,49,45.1,0,0,4,6.9 +2022-05-17T21:00,60.5,59,46.2,0,0,4.6,6.7 +2022-05-17T22:00,60.3,57,45.1,0,0,4.2,6 +2022-05-17T23:00,57.7,60,43.7,0,0,5.6,6.9 +2022-05-18T00:00,58.4,48,38.7,0,0,5.2,8.3 +2022-05-18T01:00,58.7,43,36.1,0,0,3.2,8.5 +2022-05-18T02:00,55,51,37.3,0,0,3,3.6 +2022-05-18T03:00,52.3,54,36.1,0,0,4,6.7 +2022-05-18T04:00,50.1,58,35.7,0,0,3.4,6.5 +2022-05-18T05:00,53.3,60,39.9,0,0,4.1,5.6 +2022-05-18T06:00,56.7,52,39.3,0,0,3.9,6.9 +2022-05-18T07:00,60.2,47,39.8,0,0,2.9,7.2 +2022-05-18T08:00,65.6,38,39.1,0,0,2.6,9.2 +2022-05-18T09:00,70.3,30,37.9,0,0,2.9,10.1 +2022-05-18T10:00,73.3,27,37,0,0,4.1,12.1 +2022-05-18T11:00,75.5,24,36.6,0,0,2.7,13.4 +2022-05-18T12:00,76.4,24,36.9,0,0,0.3,11.6 +2022-05-18T13:00,77.5,23,37,0,0,4.3,12.3 +2022-05-18T14:00,79.3,21,36,0,0,4.6,14.8 +2022-05-18T15:00,79.3,20,34.3,0,0,3.5,12.8 +2022-05-18T16:00,78.7,19,32.4,0,0,4.5,13.4 +2022-05-18T17:00,78.4,21,35.3,0,0,6.1,11.2 +2022-05-18T18:00,76,24,36.9,0,0,5.1,13 +2022-05-18T19:00,70.9,30,37.9,0,0,4.4,8.9 +2022-05-18T20:00,65.8,37,38.8,0,0,4.8,6.9 +2022-05-18T21:00,61.3,47,41,0,0,5.2,6.7 +2022-05-18T22:00,59.9,47,39.8,0,0,4.5,7.2 +2022-05-18T23:00,57.6,51,39.6,0,0,4.3,7.4 +2022-05-19T00:00,55.4,55,39.4,0,0,4,6.9 +2022-05-19T01:00,54.2,52,37.2,0,0,4,6.5 +2022-05-19T02:00,53.3,50,35.2,0,0,4.9,7.6 +2022-05-19T03:00,54.2,41,30.8,0,0,5.8,9.2 +2022-05-19T04:00,55,37,28.9,0,0,6.4,10.3 +2022-05-19T05:00,55.3,36,28.5,0,0,6.5,9.8 +2022-05-19T06:00,58.3,36,31.5,0,0,3.8,10.5 +2022-05-19T07:00,65.9,28,31.7,0,0,6.2,10.7 +2022-05-19T08:00,73.5,18,27.1,0,0,10.1,17.7 +2022-05-19T09:00,77.5,13,23,0,0,16.6,29.8 +2022-05-19T10:00,79.7,14,26.2,0,0,8.3,28.6 +2022-05-19T11:00,83.1,12,24.4,0,0,5.2,17.4 +2022-05-19T12:00,84.7,11,24.4,0,0,10,19.9 +2022-05-19T13:00,87.2,10,24.3,0,0,14.7,24.6 +2022-05-19T14:00,87.1,9,22.4,0,0,11.9,28 +2022-05-19T15:00,85.9,10,22.6,0,0,16.1,30 +2022-05-19T16:00,86.9,9,22.3,0,0,15.4,28.4 +2022-05-19T17:00,84.1,9,18.5,0,0,14.3,26.4 +2022-05-19T18:00,81.7,10,20.3,0,0,9.3,23.7 +2022-05-19T19:00,73,16,24.8,0,0,6.2,15.4 +2022-05-19T20:00,49.5,60,36,0,0,17.1,40 +2022-05-19T21:00,49.4,56,34.3,0,0,8.1,27.3 +2022-05-19T22:00,47.6,54,31.7,0,0,8.4,15.7 +2022-05-19T23:00,46.3,55,31,0,0,4.6,13.4 +2022-05-20T00:00,45,57,30.7,0,0,6.9,10.7 +2022-05-20T01:00,44.1,58,30.3,0,0,6.9,12.1 +2022-05-20T02:00,43.2,59,29.8,0,0,5.5,11.4 +2022-05-20T03:00,43.1,58,29.2,0,0,5.2,10.1 +2022-05-20T04:00,43.1,57,28.7,0,0,5.2,10.1 +2022-05-20T05:00,38.8,71,30.2,0,0,8.2,11.2 +2022-05-20T06:00,39.1,71,30.4,0.004,0.028,6.1,14.1 +2022-05-20T07:00,37.9,81,32.6,0.02,0.028,6.7,12.8 +2022-05-20T08:00,38.6,83,34,0.016,0,7.3,13.6 +2022-05-20T09:00,38.4,90,35.8,0.024,0,7.5,14.1 +2022-05-20T10:00,38.4,92,36.1,0.039,0,8.5,15.7 +2022-05-20T11:00,38.8,92,36.6,0.043,0,8.8,15.9 +2022-05-20T12:00,37.9,94,36.4,0.047,0.028,10.1,17.4 +2022-05-20T13:00,36.9,97,36.1,0.039,0.165,12.4,20.6 +2022-05-20T14:00,36.5,96,35.4,0.031,0.22,11.6,20.6 +2022-05-20T15:00,36.3,94,34.9,0.016,0.083,11.1,20.6 +2022-05-20T16:00,36.2,94,34.7,0.012,0.138,9.3,19.2 +2022-05-20T17:00,35.2,87,31.7,0.016,0.193,7.9,16.6 +2022-05-20T18:00,34.3,88,31.2,0,0.413,7.1,14.3 +2022-05-20T19:00,32.4,92,30.2,0,0.413,2.3,12.8 +2022-05-20T20:00,32.6,92,30.5,0,0.358,4.4,8.7 +2022-05-20T21:00,32.5,92,30.5,0,0.386,2.6,8.3 +2022-05-20T22:00,32.2,93,30.3,0,0.358,2.5,5.1 +2022-05-20T23:00,31.1,91,28.8,0,0.303,3.1,4.9 +2022-05-21T00:00,30.9,93,29.2,0,0.276,3,4.7 +2022-05-21T01:00,30.8,95,29.5,0,0.276,2.8,4.7 +2022-05-21T02:00,31.3,96,30.4,0,0.276,1.9,3.8 +2022-05-21T03:00,31.7,94,30.1,0,0.165,0,2.5 +2022-05-21T04:00,31.7,93,30,0,0.138,0.2,1.1 +2022-05-21T05:00,28.9,94,27.5,0,0.138,4,1.1 +2022-05-21T06:00,30.6,93,28.7,0,0.083,2.2,5.4 +2022-05-21T07:00,31.6,89,28.6,0,0.055,4.9,7.8 +2022-05-21T08:00,32.5,84,28.2,0,0,3.4,8.3 +2022-05-21T09:00,33.5,79,27.7,0,0,2.4,5.8 +2022-05-21T10:00,34.4,74,27.1,0,0,1.9,4 +2022-05-21T11:00,35.5,71,27.1,0,0,2.3,4.9 +2022-05-21T12:00,36.8,68,27.3,0,0,2,4.5 +2022-05-21T13:00,38.2,61,26.1,0,0,3.1,6 +2022-05-21T14:00,39.6,55,24.6,0,0,4.2,8.3 +2022-05-21T15:00,40.3,52,24.3,0,0,4.4,8.7 +2022-05-21T16:00,39.9,56,25.5,0,0,3.8,8.7 +2022-05-21T17:00,44.2,51,27.3,0,0,5.4,9.8 +2022-05-21T18:00,37.7,62,25.9,0,0,5.3,9.2 +2022-05-21T19:00,36.9,67,27.1,0,0,5.4,8.7 +2022-05-21T20:00,35.9,72,27.9,0,0,5.4,8.7 +2022-05-21T21:00,34.5,78,28.5,0,0,5.5,8.5 +2022-05-21T22:00,33.5,82,28.7,0,0,5.2,8.3 +2022-05-21T23:00,34.4,84,30.2,0,0,4.5,8.1 +2022-05-22T00:00,29.3,89,26.4,0,0,6.3,9.2 +2022-05-22T01:00,27.8,90,25.3,0,0,6,9.4 +2022-05-22T02:00,31,85,27,0,0,5.1,9.4 +2022-05-22T03:00,33,81,27.9,0,0,5.2,8.5 +2022-05-22T04:00,32.7,80,27.3,0,0,5.4,8.9 +2022-05-22T05:00,31.5,87,28,0,0,4.5,10.5 +2022-05-22T06:00,34.3,84,30,0,0,3.8,7.4 +2022-05-22T07:00,36.9,79,31,0,0,3.7,7.6 +2022-05-22T08:00,40.4,68,30.7,0,0,6.5,12.1 +2022-05-22T09:00,42.4,66,31.7,0,0,5.5,13.2 +2022-05-22T10:00,49.1,50,31.3,0,0,3.8,16.3 +2022-05-22T11:00,50.7,48,31.8,0,0,3,12.1 +2022-05-22T12:00,52.3,46,32.2,0,0,2.9,11.6 +2022-05-22T13:00,53.6,45,32.7,0,0,4.4,13.2 +2022-05-22T14:00,54.9,44,33.6,0,0,4.2,13.4 +2022-05-22T15:00,54.7,45,34,0,0,6,14.3 +2022-05-22T16:00,54.5,47,34.4,0,0,3.8,14.3 +2022-05-22T17:00,54.7,48,35.3,0,0,3.8,10.7 +2022-05-22T18:00,54.4,48,35.2,0,0,4.5,8.7 +2022-05-22T19:00,49.4,56,34.2,0,0,7.8,12.8 +2022-05-22T20:00,45.3,64,33.7,0,0,6.6,13.6 +2022-05-22T21:00,42.1,78,35.9,0,0,2.5,10.5 +2022-05-22T22:00,41.4,76,34.5,0,0,2.9,4.7 +2022-05-22T23:00,39.1,84,34.7,0,0,4.3,6.9 +2022-05-23T00:00,38.9,87,35.4,0,0,1.4,7.6 +2022-05-23T01:00,41,80,35.2,0,0,2.7,4 +2022-05-23T02:00,39.8,85,35.6,0,0,5.3,8.7 +2022-05-23T03:00,39,89,36,0,0,5.2,8.7 +2022-05-23T04:00,37.9,92,35.9,0,0,4,8.5 +2022-05-23T05:00,38.3,83,33.7,0,0,6.3,6 +2022-05-23T06:00,41.3,75,34.1,0,0,8.1,13.2 +2022-05-23T07:00,45.2,67,34.9,0,0,1.9,13.4 +2022-05-23T08:00,46,72,37.5,0.004,0,9.1,16.6 +2022-05-23T09:00,49.2,64,37.5,0.004,0,11.8,23.7 +2022-05-23T10:00,53,55,37.1,0,0,8.6,22.1 +2022-05-23T11:00,54.2,50,35.9,0,0,6.3,18.1 +2022-05-23T12:00,56.8,46,36.4,0,0,3.8,14.3 +2022-05-23T13:00,57.9,45,36.6,0,0,3.6,12.1 +2022-05-23T14:00,59.4,36,32.6,0,0,4.3,13 +2022-05-23T15:00,59.9,32,30.1,0,0,5.4,13 +2022-05-23T16:00,59.8,32,29.9,0,0,8.4,16.3 +2022-05-23T17:00,59.2,32,29.7,0,0,8.2,17.4 +2022-05-23T18:00,53.9,52,36.6,0.02,0,5.8,15.9 +2022-05-23T19:00,50.7,68,40.6,0.02,0,1.8,10.3 +2022-05-23T20:00,48.7,78,42.2,0.004,0,5,8.1 +2022-05-23T21:00,48.2,83,43.4,0,0,5.7,9.2 +2022-05-23T22:00,47.7,78,41.1,0,0,6.6,10.5 +2022-05-23T23:00,46.3,78,39.8,0,0,5.8,10.7 +2022-05-24T00:00,43.3,86,39.3,0,0,3.4,9.4 +2022-05-24T01:00,42.6,89,39.7,0,0,3.2,5.4 +2022-05-24T02:00,43.3,88,40.1,0,0,2.1,4.7 +2022-05-24T03:00,43.9,86,39.9,0.004,0,1.4,4.3 +2022-05-24T04:00,43.3,89,40.5,0.008,0,1.6,3.1 +2022-05-24T05:00,43.4,93,41.5,0.008,0,3.6,4 +2022-05-24T06:00,44.2,90,41.5,0.004,0,4.3,7.8 +2022-05-24T07:00,44.8,83,40,0.004,0,7,12.5 +2022-05-24T08:00,44.8,86,40.7,0.012,0,6.2,13.6 +2022-05-24T09:00,46.9,77,40,0.004,0,6.2,13.2 +2022-05-24T10:00,48.6,67,38.2,0,0,7.6,15 +2022-05-24T11:00,49.7,61,36.7,0,0,7.6,15.2 +2022-05-24T12:00,50.8,58,36.7,0.004,0,8.1,15.9 +2022-05-24T13:00,51.7,56,36.6,0,0,7.9,16.8 +2022-05-24T14:00,52.8,52,35.8,0.004,0,7,16.3 +2022-05-24T15:00,53.6,50,35.3,0,0,5.8,15.9 +2022-05-24T16:00,53.9,48,34.8,0,0,5.2,14.1 +2022-05-24T17:00,51.3,56,36.1,0,0,6.1,12.5 +2022-05-24T18:00,50.7,56,35.5,0,0,6.4,12.1 +2022-05-24T19:00,48.8,60,35.6,0,0,5.4,11.9 +2022-05-24T20:00,47.4,70,38.2,0.008,0,7.1,12.1 +2022-05-24T21:00,45,79,38.9,0.004,0,4.6,12.1 +2022-05-24T22:00,43.3,83,38.3,0,0,4.1,7.6 +2022-05-24T23:00,41.4,85,37.1,0,0,5,8.3 +2022-05-25T00:00,39,90,36.4,0,0,4.1,8.3 +2022-05-25T01:00,39.6,88,36.3,0,0,1.8,5.8 +2022-05-25T02:00,36.3,96,35.2,0,0,2.3,4.3 +2022-05-25T03:00,35.8,96,34.9,0,0,3.1,4.9 +2022-05-25T04:00,35.2,94,33.8,0,0,4.3,5.8 +2022-05-25T05:00,36.9,92,34.8,0,0,4.1,5.6 +2022-05-25T06:00,41.8,84,37.3,0,0,1.4,5.4 +2022-05-25T07:00,47,71,38.1,0,0,2.5,7.4 +2022-05-25T08:00,51,58,36.9,0,0,3.9,11 +2022-05-25T09:00,54,51,36.2,0,0,2.3,10.7 +2022-05-25T10:00,57.2,43,34.6,0,0,4.1,12.1 +2022-05-25T11:00,60,38,34.1,0,0,7.3,16.6 +2022-05-25T12:00,62.5,34,33.8,0,0,8.4,18.8 +2022-05-25T13:00,64.7,29,32,0,0,8.1,18.3 +2022-05-25T14:00,66.4,25,29.5,0,0,6.2,17.7 +2022-05-25T15:00,67.1,23,28.2,0,0,5.2,14.5 +2022-05-25T16:00,67.1,23,27.8,0,0,3.3,12.8 +2022-05-25T17:00,65.8,27,31.2,0,0,2.7,9.2 +2022-05-25T18:00,64.2,31,33.1,0,0,4,6.5 +2022-05-25T19:00,59,41,35.5,0,0,5.6,9.8 +2022-05-25T20:00,54.8,53,38.1,0,0,5.4,9.2 +2022-05-25T21:00,55.5,43,33.3,0,0,10.5,15.9 +2022-05-25T22:00,54.5,40,30.7,0,0,6,17.2 +2022-05-25T23:00,55.6,38,30.7,0,0,3.3,9.6 +2022-05-26T00:00,54.2,41,31.1,0,0,2.9,4.5 +2022-05-26T01:00,46.1,57,31.7,0,0,5.1,6.9 +2022-05-26T02:00,43.4,66,32.8,0,0,6,7.4 +2022-05-26T03:00,43,66,32.4,0,0,4.3,7.2 +2022-05-26T04:00,42.3,67,32.1,0,0,4.6,7.4 +2022-05-26T05:00,41,76,33.9,0,0,4.1,7.2 +2022-05-26T06:00,46.8,63,35,0,0,5.5,9.4 +2022-05-26T07:00,54.9,57,39.8,0,0,5.5,11 +2022-05-26T08:00,64.1,40,39.2,0,0,5.1,11.6 +2022-05-26T09:00,69.7,31,37.6,0,0,0.7,11.4 +2022-05-26T10:00,72.7,25,35,0,0,5,12.3 +2022-05-26T11:00,74.4,23,34,0,0,6.3,14.5 +2022-05-26T12:00,75.6,22,34.3,0,0,7.1,15.9 +2022-05-26T13:00,76.2,22,34.3,0,0,7.5,16.6 +2022-05-26T14:00,77.1,20,32.8,0,0,7.2,16.6 +2022-05-26T15:00,78.1,18,31.1,0,0,4.5,15.7 +2022-05-26T16:00,79,17,30,0,0,3.4,11.2 +2022-05-26T17:00,79.4,19,33.7,0,0,4.5,10.5 +2022-05-26T18:00,75.6,29,40.9,0,0,4.8,8.3 +2022-05-26T19:00,66.5,40,41.5,0,0,7.9,8.3 +2022-05-26T20:00,68.5,30,35.6,0,0,5.2,9.2 +2022-05-26T21:00,59.9,42,36.7,0,0,7,8.7 +2022-05-26T22:00,56,52,38.5,0,0,4.5,8.5 +2022-05-26T23:00,53.8,55,37.9,0,0,5.6,8.5 +2022-05-27T00:00,50.8,59,37.1,0,0,3.8,10.1 +2022-05-27T01:00,49,62,36.5,0,0,4.5,6.3 +2022-05-27T02:00,47.9,63,36.1,0,0,3.6,6 +2022-05-27T03:00,47.6,60,34.5,0,0,5,5.8 +2022-05-27T04:00,47.2,60,33.9,0,0,4.6,5.8 +2022-05-27T05:00,47.8,60,34.7,0,0,4.3,6.7 +2022-05-27T06:00,52.9,52,35.6,0,0,4.9,8.1 +2022-05-27T07:00,60.4,50,41.7,0,0,4,8.7 +2022-05-27T08:00,70.8,40,45.1,0,0,4.3,9.8 +2022-05-27T09:00,79.8,27,43.3,0,0,4.6,10.7 +2022-05-27T10:00,82.6,14,29.1,0,0,3.6,11.6 +2022-05-27T11:00,85.6,13,28.9,0,0,6.7,17.2 +2022-05-27T12:00,86.5,12,28.8,0,0,6.5,16.6 +2022-05-27T13:00,86.1,14,31.6,0,0,10.3,18.8 +2022-05-27T14:00,80.2,20,35.8,0.004,0,9.5,20.1 +2022-05-27T15:00,84.7,16,33,0,0,5.9,17.9 +2022-05-27T16:00,86.3,12,28.3,0,0,4.7,15.4 +2022-05-27T17:00,81.8,20,36.5,0,0,4.1,18.3 +2022-05-27T18:00,78.2,56,61.3,0,0,0.4,8.1 +2022-05-27T19:00,72.3,33,41.6,0,0,5.3,8.1 +2022-05-27T20:00,65.4,42,41.7,0,0,4.3,8.3 +2022-05-27T21:00,59.8,54,43.1,0,0,4.5,7.2 +2022-05-27T22:00,57.4,54,41.1,0,0,4.8,7.4 +2022-05-27T23:00,54.2,54,38,0,0,4.3,7.4 +2022-05-28T00:00,51.4,56,36,0,0,4.6,6.3 +2022-05-28T01:00,51.4,52,34.3,0,0,2.9,6 +2022-05-28T02:00,50.2,52,33.1,0,0,4,4.7 +2022-05-28T03:00,49.1,54,33,0,0,5.6,6.7 +2022-05-28T04:00,49.6,50,31.9,0,0,4.8,6.7 +2022-05-28T05:00,48.5,64,37,0,0,4.6,6.5 +2022-05-28T06:00,54.1,51,36.3,0,0,2,5.4 +2022-05-28T07:00,59.4,49,40.1,0,0,0.6,4.9 +2022-05-28T08:00,67,41,42.8,0,0,2.7,7.2 +2022-05-28T09:00,75.3,31,42.7,0,0,4.2,9.2 +2022-05-28T10:00,81.7,14,27.8,0,0,11.2,19.2 +2022-05-28T11:00,82.9,14,28.5,0,0,9.2,20.4 +2022-05-28T12:00,83,14,29.2,0,0,9.1,17.9 +2022-05-28T13:00,84.2,13,27.8,0,0,10.5,19.9 +2022-05-28T14:00,85,11,24.5,0,0,9.8,21 +2022-05-28T15:00,85.7,9,21.3,0,0,10.7,18.3 +2022-05-28T16:00,85.6,9,19.3,0,0,14.4,25.1 +2022-05-28T17:00,74.8,25,37,0,0,5.9,25.1 +2022-05-28T18:00,73.1,34,43.3,0,0,3.8,10.3 +2022-05-28T19:00,69.9,34,40.1,0,0,5.3,7.2 +2022-05-28T20:00,68.5,23,28.8,0,0,5.6,9.2 +2022-05-28T21:00,60.2,33,31.2,0,0,5.3,9.2 +2022-05-28T22:00,61.3,31,30.5,0,0,2.4,6.9 +2022-05-28T23:00,57,40,32.8,0,0,6.5,9.4 +2022-05-29T00:00,56.8,33,27.7,0,0,8.8,14.8 +2022-05-29T01:00,58.6,30,27.2,0,0,2.8,14.3 +2022-05-29T02:00,52.2,44,30.7,0,0,3.9,5.1 +2022-05-29T03:00,48.9,52,31.9,0,0,4.4,9.8 +2022-05-29T04:00,47.5,58,33.4,0,0,4.2,6.5 +2022-05-29T05:00,48.8,59,35.1,0,0,3.4,8.1 +2022-05-29T06:00,53.2,54,36.9,0,0,3.9,6.7 +2022-05-29T07:00,58.9,47,38.7,0,0,4.7,9.4 +2022-05-29T08:00,63.6,40,38.8,0,0,5.6,13 +2022-05-29T09:00,67.8,35,38.8,0,0,7.1,15.2 +2022-05-29T10:00,72.3,29,38.3,0,0,11.1,22.6 +2022-05-29T11:00,72.4,30,38.9,0.016,0,14.8,25.1 +2022-05-29T12:00,73.8,25,35.9,0,0,10,30 +2022-05-29T13:00,71,33,40.2,0.028,0,12.6,25.9 +2022-05-29T14:00,71.5,36,42.9,0.031,0,1.6,23.5 +2022-05-29T15:00,73.8,27,37.7,0,0,11.6,18.3 +2022-05-29T16:00,65.3,45,43.5,0,0,11.1,36.5 +2022-05-29T17:00,62.8,54,46.1,0,0,15.7,20.4 +2022-05-29T18:00,58.5,69,48.3,0.055,0,10,30 +2022-05-29T19:00,56.1,78,49.4,0.016,0,9.6,17 +2022-05-29T20:00,55.3,81,49.6,0.031,0,3.3,15.2 +2022-05-29T21:00,53.2,92,50.9,0,0,2.5,5.6 +2022-05-29T22:00,51.6,96,50.6,0,0,3.1,6 +2022-05-29T23:00,50.3,93,48.4,0,0,10.4,15 +2022-05-30T00:00,48.5,81,43,0.008,0,3.1,21 +2022-05-30T01:00,48.7,85,44.5,0,0,2.8,4.9 +2022-05-30T02:00,47.7,95,46.2,0,0,3.4,5.8 +2022-05-30T03:00,46.3,92,44.2,0.016,0,8.1,15 +2022-05-30T04:00,45.9,94,44.2,0,0,5.7,13.2 +2022-05-30T05:00,46.9,85,42.5,0,0,3.4,9.8 +2022-05-30T06:00,48.7,80,42.7,0,0,3.6,7.2 +2022-05-30T07:00,51.9,52,34.9,0,0,5,10.7 +2022-05-30T08:00,54.7,40,30.8,0,0,7.6,15.9 +2022-05-30T09:00,55.2,40,31.5,0.02,0,1.6,17.4 +2022-05-30T10:00,59.5,26,24.5,0,0,5.4,15 +2022-05-30T11:00,62.8,20,21.4,0,0,8.5,19.2 +2022-05-30T12:00,65.4,17,19.2,0,0,11.8,23 +2022-05-30T13:00,66.7,15,16.9,0,0,13.4,25.5 +2022-05-30T14:00,66.2,15,17.1,0.004,0,12.9,25.3 +2022-05-30T15:00,65.8,16,17.9,0,0,12.4,23.7 +2022-05-30T16:00,65.2,17,19.8,0,0,14.1,25.9 +2022-05-30T17:00,60.9,21,21.2,0,0,15.9,25.1 +2022-05-30T18:00,59.7,25,23.4,0,0,13.9,28.4 +2022-05-30T19:00,56.8,30,25.7,0,0,9.3,23 +2022-05-30T20:00,54.8,30,23.9,0,0,6.4,15 +2022-05-30T21:00,50.7,40,27.3,0,0,5.2,10.7 +2022-05-30T22:00,53,34,25.5,0,0,0.5,6.7 +2022-05-30T23:00,46.5,47,27.6,0,0,5.4,7.8 +2022-05-31T00:00,45.3,46,25.9,0,0,8.4,13.6 +2022-05-31T01:00,45.1,44,24.5,0,0,5.8,13.6 +2022-05-31T02:00,45.4,49,27.5,0,0,2.6,9.4 +2022-05-31T03:00,45.9,55,30.5,0,0,1.7,3.8 +2022-05-31T04:00,45.8,54,30.3,0,0,2.6,3.8 +2022-05-31T05:00,45.9,56,31,0,0,4.8,9.8 +2022-05-31T06:00,48.7,52,32,0,0,4.3,8.9 +2022-05-31T07:00,50.3,49,31.7,0,0,2.9,8.1 +2022-05-31T08:00,52.7,48,33.7,0,0,3.7,9.8 +2022-05-31T09:00,55.3,46,34.8,0,0,6,14.3 +2022-05-31T10:00,57.9,42,35.1,0,0,6.3,16.3 +2022-05-31T11:00,59.9,40,35.7,0,0,6.9,16.1 +2022-05-31T12:00,60.9,38,35.2,0,0,6.3,17 +2022-05-31T13:00,63.1,35,34.8,0,0,7.3,16.6 +2022-05-31T14:00,64,34,35.3,0,0,8.7,17.9 +2022-05-31T15:00,61.9,45,40.3,0.126,0,9.7,18.8 +2022-05-31T16:00,54.1,58,39.7,0.075,0,15.9,27.3 +2022-05-31T17:00,45.1,84,40.4,0.008,0,14.7,27.1 +2022-05-31T18:00,46.4,85,42,0.102,0,9.6,24.4 +2022-05-31T19:00,45.8,87,42.1,0.11,0,7.6,16.6 +2022-05-31T20:00,45.1,87,41.4,0.106,0,6.4,12.5 +2022-05-31T21:00,44.9,87,41.4,0.075,0,6,10.7 +2022-05-31T22:00,44.1,88,40.8,0.055,0,6.2,11 +2022-05-31T23:00,43.4,88,40.2,0.028,0,4.8,11 +2022-06-01T00:00,43.2,88,39.7,0.02,0,3.7,8.5 +2022-06-01T01:00,42.5,87,39,0.008,0,3.4,6.9 +2022-06-01T02:00,42.3,88,39,0.004,0,3.8,6.9 +2022-06-01T03:00,42.2,89,39,0,0,4.2,7.6 +2022-06-01T04:00,41.3,92,39.2,0,0,4.9,8.7 +2022-06-01T05:00,41.1,94,39.4,0,0,4,10.1 +2022-06-01T06:00,40.8,95,39.4,0.059,0,4.3,11.9 +2022-06-01T07:00,41.5,92,39.3,0.024,0,3.1,11 +2022-06-01T08:00,42.5,89,39.4,0.02,0,3.4,8.1 +2022-06-01T09:00,44.2,81,38.9,0.008,0,2.7,8.9 +2022-06-01T10:00,46.9,73,38.6,0,0,3.9,11.4 +2022-06-01T11:00,49.9,67,39.4,0,0,4.2,12.3 +2022-06-01T12:00,52.9,64,41.1,0,0,1.1,12.3 +2022-06-01T13:00,56.8,58,42.4,0,0,4.3,12.1 +2022-06-01T14:00,59.2,55,43.2,0,0,9.3,19.2 +2022-06-01T15:00,59.1,53,42.1,0,0,12.2,23 +2022-06-01T16:00,59.5,51,41.5,0,0,10.3,23 +2022-06-01T17:00,54.1,69,44,0,0,8.1,20.1 +2022-06-01T18:00,54.4,68,44.2,0,0,6.5,14.1 +2022-06-01T19:00,53.5,70,43.9,0,0,6.8,12.8 +2022-06-01T20:00,50.7,78,44.1,0,0,4.1,11.9 +2022-06-01T21:00,49.3,85,45.1,0,0,2.2,6.5 +2022-06-01T22:00,48.8,86,45,0,0,3.8,5.8 +2022-06-01T23:00,48.1,89,45.1,0,0,3.6,6 +2022-06-02T00:00,46.7,92,44.5,0,0,4.3,6 +2022-06-02T01:00,45.3,94,43.6,0,0,4.8,6.5 +2022-06-02T02:00,43.5,95,42.3,0,0,5.3,6.7 +2022-06-02T03:00,42.2,96,41.1,0,0,4.5,6.5 +2022-06-02T04:00,40.6,97,39.7,0,0,3,5.8 +2022-06-02T05:00,41.4,97,40.6,0,0,3,4.3 +2022-06-02T06:00,45.7,93,43.7,0,0,5,9.2 +2022-06-02T07:00,47.6,95,46.2,0,0,5.7,12.3 +2022-06-02T08:00,50.4,87,46.6,0,0,5.2,12.3 +2022-06-02T09:00,53.6,78,46.8,0,0,4,11.9 +2022-06-02T10:00,57.9,63,45.5,0,0,3.2,11.4 +2022-06-02T11:00,61.5,55,45.2,0,0,3.4,11.4 +2022-06-02T12:00,64.3,50,45.1,0,0,5.2,13.9 +2022-06-02T13:00,66.3,45,44.5,0,0,6.3,15.4 +2022-06-02T14:00,67.7,43,44.5,0,0,7,15.7 +2022-06-02T15:00,69,41,44.2,0,0,7.3,17 +2022-06-02T16:00,69.1,39,43.2,0,0,7.2,16.6 +2022-06-02T17:00,65.8,49,46,0,0,7.3,15 +2022-06-02T18:00,64.6,52,46.7,0.004,0,2.7,14.1 +2022-06-02T19:00,59.5,75,51.4,0.035,0,6.6,10.5 +2022-06-02T20:00,56.7,82,51.4,0,0,5.1,10.1 +2022-06-02T21:00,55,88,51.6,0,0,3.4,8.5 +2022-06-02T22:00,51.5,95,50.3,0,0,4,5.8 +2022-06-02T23:00,50.4,97,49.6,0,0,3.6,5.8 +2022-06-03T00:00,48,99,47.7,0,0,4,5.8 +2022-06-03T01:00,46.6,100,46.5,0,0,2.9,5.4 +2022-06-03T02:00,45.8,99,45.5,0,0,2.9,4.9 +2022-06-03T03:00,45.2,97,44.4,0,0,3.4,5.6 +2022-06-03T04:00,45.7,93,43.7,0,0,4.9,7.6 +2022-06-03T05:00,46.2,81,40.6,0,0,3.9,8.1 +2022-06-03T06:00,49.6,72,41.1,0,0,2.9,7.4 +2022-06-03T07:00,54.9,68,44.4,0,0,1,6.7 +2022-06-03T08:00,59.3,66,47.8,0,0,3.4,10.1 +2022-06-03T09:00,63.7,58,48.8,0,0,3.9,11.2 +2022-06-03T10:00,67.5,52,49,0,0,4.7,12.5 +2022-06-03T11:00,69.3,49,49.5,0,0,6,14.5 +2022-06-03T12:00,70.8,46,49.2,0,0,4.9,14.8 +2022-06-03T13:00,70.5,40,44.9,0,0,5.7,13.9 +2022-06-03T14:00,74.2,37,46.3,0,0,5.9,15.2 +2022-06-03T15:00,71.8,42,47.6,0,0,2.9,13.6 +2022-06-03T16:00,72.2,42,47.7,0,0,2.7,8.9 +2022-06-03T17:00,66.9,59,52,0,0,11.2,12.5 +2022-06-03T18:00,66.5,54,49.4,0,0,8.5,23.5 +2022-06-03T19:00,62.9,64,50.6,0,0,3.6,13.4 +2022-06-03T20:00,60.4,70,50.6,0,0,5.8,9.8 +2022-06-03T21:00,57.5,74,49.2,0,0,5.9,10.1 +2022-06-03T22:00,53.6,80,47.5,0,0,5.2,9.6 +2022-06-03T23:00,52,82,46.8,0,0,4.5,6.3 +2022-06-04T00:00,52.5,76,45.3,0,0,4.1,6.7 +2022-06-04T01:00,51.4,74,43.4,0,0,4,6.7 +2022-06-04T02:00,48.6,83,43.7,0,0,4,6.3 +2022-06-04T03:00,46.9,79,40.7,0,0,5,5.8 +2022-06-04T04:00,46.1,78,39.7,0,0,3.8,6.3 +2022-06-04T05:00,47.5,69,37.7,0,0,3.1,6.3 +2022-06-04T06:00,52,62,39.2,0,0,3.8,7.4 +2022-06-04T07:00,58.9,56,43.2,0,0,2.4,7.4 +2022-06-04T08:00,65.5,41,41,0,0,3.5,9.6 +2022-06-04T09:00,71.2,35,42.2,0,0,3,9.8 +2022-06-04T10:00,75.8,29,41,0,0,2.2,9.6 +2022-06-04T11:00,79.3,19,33.2,0,0,2.6,11.4 +2022-06-04T12:00,80.3,19,34.1,0,0,7.1,15 +2022-06-04T13:00,81.9,16,32,0,0,5.2,15.9 +2022-06-04T14:00,81.7,16,30.7,0,0,0.2,13.2 +2022-06-04T15:00,81.1,18,33.8,0,0,8.2,15.2 +2022-06-04T16:00,79,23,37.7,0,0,12.6,23.3 +2022-06-04T17:00,75.2,34,45.1,0,0,15.5,21.7 +2022-06-04T18:00,69.7,54,52.3,0.016,0,11.1,24.6 +2022-06-04T19:00,66.7,64,54.2,0,0,3.2,18.3 +2022-06-04T20:00,62.2,73,53.2,0,0,5.5,8.9 +2022-06-04T21:00,58.9,73,50.3,0,0,5.6,10.1 +2022-06-04T22:00,57.1,73,48.6,0,0,4.3,8.7 +2022-06-04T23:00,57.7,68,47.2,0,0,4.5,7.6 +2022-06-05T00:00,57.8,65,46.3,0,0,4.6,8.7 +2022-06-05T01:00,55.4,71,46.3,0,0,4.2,7.6 +2022-06-05T02:00,52.7,77,45.6,0,0,5.2,6.7 +2022-06-05T03:00,52.7,66,41.6,0,0,3.9,6.7 +2022-06-05T04:00,53.2,57,38.3,0,0,4.6,7.2 +2022-06-05T05:00,55.9,60,42.4,0,0,9.3,7.8 +2022-06-05T06:00,58.7,54,42.4,0,0,5.8,14.8 +2022-06-05T07:00,65.3,45,43.4,0,0,4.1,9.4 +2022-06-05T08:00,70,37,42.3,0,0,4.5,11.2 +2022-06-05T09:00,73,31,40.6,0,0,4,11.4 +2022-06-05T10:00,74.5,28,38.9,0,0,1.4,11.2 +2022-06-05T11:00,76.4,25,37.5,0,0,4.7,12.1 +2022-06-05T12:00,77.7,23,37.1,0,0,1.4,12.5 +2022-06-05T13:00,78.6,23,37.5,0,0,3.3,11.4 +2022-06-05T14:00,79.4,22,37.8,0,0,0.2,11 +2022-06-05T15:00,81,21,37.3,0,0,1.2,8.1 +2022-06-05T16:00,79.5,23,38.4,0,0,7,13.9 +2022-06-05T17:00,72.2,40,46.7,0,0,6.5,15 +2022-06-05T18:00,70.4,49,50.5,0,0,12.1,22.4 +2022-06-05T19:00,68,57,52.3,0,0,5.4,19.7 +2022-06-05T20:00,63.5,68,52.7,0,0,2.9,9.4 +2022-06-05T21:00,60.7,78,53.9,0,0,2.8,6 +2022-06-05T22:00,58.6,81,52.8,0,0,3.4,5.1 +2022-06-05T23:00,56.7,81,50.8,0,0,3.4,5.8 +2022-06-06T00:00,55.5,81,49.8,0,0,4.3,6.3 +2022-06-06T01:00,54.7,72,45.9,0,0,5.9,9.6 +2022-06-06T02:00,53.6,69,43.7,0,0,5.3,9.8 +2022-06-06T03:00,52.3,70,42.8,0,0,3.6,8.7 +2022-06-06T04:00,51.7,71,42.7,0,0,3.8,6 +2022-06-06T05:00,52.2,72,43.3,0,0,2.9,6.3 +2022-06-06T06:00,56.2,62,43.3,0,0,1.8,4.7 +2022-06-06T07:00,59.2,64,47,0,0,5.2,11 +2022-06-06T08:00,64.3,54,47.5,0,0,5.1,12.1 +2022-06-06T09:00,68.8,46,47.2,0,0,6.1,14.1 +2022-06-06T10:00,72.1,39,46,0,0,4.9,14.3 +2022-06-06T11:00,74.7,34,44.8,0,0,2.9,12.8 +2022-06-06T12:00,76.8,31,43.5,0.004,0,2.2,11.6 +2022-06-06T13:00,77.1,29,42.6,0,0,1.1,10.5 +2022-06-06T14:00,78.9,29,43.7,0,0,4.2,11.6 +2022-06-06T15:00,78.4,29,43.4,0,0,5.9,12.1 +2022-06-06T16:00,76.5,32,44.1,0.004,0,1.4,17.2 +2022-06-06T17:00,70.5,41,46,0.008,0,5.7,11.2 +2022-06-06T18:00,69.6,39,43.9,0,0,5.3,11.6 +2022-06-06T19:00,67.6,45,45.4,0,0,2.8,9.2 +2022-06-06T20:00,65.6,55,48.9,0,0,4.5,6.3 +2022-06-06T21:00,64.2,66,52.8,0,0,7.5,12.5 +2022-06-06T22:00,61.3,73,52.5,0,0,5.9,11.9 +2022-06-06T23:00,59.5,73,50.6,0,0,6,10.1 +2022-06-07T00:00,56.9,71,47.6,0,0,5.3,9.6 +2022-06-07T01:00,54.6,66,43.4,0,0,4.2,8.9 +2022-06-07T02:00,54.3,59,40.5,0,0,10.6,16.3 +2022-06-07T03:00,54.6,67,44,0,0,9.3,18.3 +2022-06-07T04:00,53.4,74,45.4,0,0,4.7,15.4 +2022-06-07T05:00,51.7,84,46.9,0,0,3.1,7.6 +2022-06-07T06:00,55.4,71,46.3,0,0,2.4,6.3 +2022-06-07T07:00,57.5,68,46.9,0,0,1.1,7.2 +2022-06-07T08:00,59.5,66,48.2,0,0,2.5,8.7 +2022-06-07T09:00,62.1,61,48.7,0,0,4.1,11.6 +2022-06-07T10:00,65.5,56,49.4,0,0,4,12.3 +2022-06-07T11:00,68.7,51,49.6,0,0,5,13.9 +2022-06-07T12:00,71.6,47,50.5,0,0,2.9,13.6 +2022-06-07T13:00,74.4,44,50.9,0,0,2.2,11.4 +2022-06-07T14:00,75.7,43,51.7,0,0,1.1,10.1 +2022-06-07T15:00,73.9,44,50.6,0,0,2.8,11.2 +2022-06-07T16:00,76.3,35,46.3,0,0,3.9,11.9 +2022-06-07T17:00,76.1,36,47.1,0,0,7.1,10.7 +2022-06-07T18:00,74.7,43,50.5,0,0,3.3,14.5 +2022-06-07T19:00,68.5,58,53.2,0.004,0,3.8,6.7 +2022-06-07T20:00,65.1,64,52.4,0,0,9,9.4 +2022-06-07T21:00,60.4,72,51.3,0.02,0,12.1,24.6 +2022-06-07T22:00,58.9,72,49.8,0,0,7.2,19.5 +2022-06-07T23:00,58.6,69,48.5,0,0,5.2,11.6 +2022-06-08T00:00,57.9,69,47.8,0,0,3.5,7.8 +2022-06-08T01:00,56.9,73,48.2,0,0,2.9,4.9 +2022-06-08T02:00,54.8,83,49.6,0,0,2.9,4.7 +2022-06-08T03:00,54.6,82,49.1,0,0,4,6.7 +2022-06-08T04:00,52.9,82,47.5,0,0,2.8,6.5 +2022-06-08T05:00,51.4,79,45.1,0,0,2.9,4.5 +2022-06-08T06:00,54.2,64,42.3,0,0,4,7.6 +2022-06-08T07:00,57,59,42.8,0,0,3.9,9.6 +2022-06-08T08:00,60.6,48,40.8,0,0,5.4,12.5 +2022-06-08T09:00,64.5,42,40.8,0,0,6.9,15.4 +2022-06-08T10:00,68.3,37,41.3,0,0,5.7,15.7 +2022-06-08T11:00,72,34,41.9,0,0,5.6,14.5 +2022-06-08T12:00,74.9,30,41,0,0,6.2,15.2 +2022-06-08T13:00,77.3,27,41,0,0,4.6,15.2 +2022-06-08T14:00,79.5,26,41.4,0,0,4.7,13 +2022-06-08T15:00,80.3,25,41.1,0,0,5.6,13.4 +2022-06-08T16:00,80.8,24,40.5,0,0,5.6,13.4 +2022-06-08T17:00,78.8,25,39.7,0,0,8.8,13 +2022-06-08T18:00,76,29,41.5,0,0,11.2,18.8 +2022-06-08T19:00,70,37,42.3,0,0,11.2,20.8 +2022-06-08T20:00,65.2,45,43.4,0,0,5,18.3 +2022-06-08T21:00,62,53,44.7,0,0,4.5,6 +2022-06-08T22:00,60.1,58,45.1,0,0,4.2,6.9 +2022-06-08T23:00,58.7,60,45,0,0,5.7,8.3 +2022-06-09T00:00,59.7,59,45.2,0,0,8.5,13.4 +2022-06-09T01:00,58.5,64,46.4,0,0,7.6,14.5 +2022-06-09T02:00,55.7,68,45.3,0,0,4.9,12.1 +2022-06-09T03:00,53.1,67,42.4,0,0,3.4,7.6 +2022-06-09T04:00,54.5,59,40.5,0,0,5,8.1 +2022-06-09T05:00,53.4,68,43.1,0,0,3.3,7.8 +2022-06-09T06:00,57.8,55,41.6,0,0,1.7,5.1 +2022-06-09T07:00,61,51,42.7,0,0,1,4.9 +2022-06-09T08:00,66.5,47,45.4,0,0,4.6,10.3 +2022-06-09T09:00,72.7,39,46.5,0,0,5.4,11.9 +2022-06-09T10:00,78.7,31,45.9,0,0,3.6,11.4 +2022-06-09T11:00,83.8,21,39.5,0,0,5.4,13.2 +2022-06-09T12:00,86.4,17,36.9,0,0,3.4,12.8 +2022-06-09T13:00,85.4,21,41.5,0.004,0,13.3,22.4 +2022-06-09T14:00,85.9,21,41.9,0,0,6.6,27.7 +2022-06-09T15:00,87,17,36.4,0,0,15.3,27.5 +2022-06-09T16:00,84.5,19,37.9,0,0,17.5,29.1 +2022-06-09T17:00,81.2,28,45.4,0,0,13.3,28.9 +2022-06-09T18:00,79.6,35,49.9,0,0,4.1,21.5 +2022-06-09T19:00,73.6,53,55.6,0,0,3.4,6.9 +2022-06-09T20:00,68.4,57,52.3,0,0,5.1,6.9 +2022-06-09T21:00,68.7,52,50.6,0,0,8.4,12.8 +2022-06-09T22:00,64.7,55,47.9,0,0,4.6,13.4 +2022-06-09T23:00,61.4,52,43.7,0,0,4,7.2 +2022-06-10T00:00,62,48,41.8,0,0,8.4,13.4 +2022-06-10T01:00,61.1,51,42.9,0,0,5.6,14.1 +2022-06-10T02:00,57.3,59,43.2,0,0,6.1,8.7 +2022-06-10T03:00,55.9,58,41.2,0,0,4.6,7.2 +2022-06-10T04:00,53.9,59,39.7,0,0,3.7,6 +2022-06-10T05:00,54.3,74,46.3,0,0,3.3,4.9 +2022-06-10T06:00,58.9,63,46.5,0,0,3.8,7.4 +2022-06-10T07:00,65,55,48.7,0,0,4.3,9.4 +2022-06-10T08:00,70.8,46,49.1,0,0,4.1,11 +2022-06-10T09:00,76.6,36,47.9,0,0,2.9,10.5 +2022-06-10T10:00,81.9,28,45.2,0,0,2.7,9.8 +2022-06-10T11:00,85.4,22,42.7,0,0,3.7,11.2 +2022-06-10T12:00,88,19,40.8,0,0,3.5,12.3 +2022-06-10T13:00,89.4,19,41.4,0,0,3.5,11.2 +2022-06-10T14:00,92.8,16,40,0,0,8.5,18.1 +2022-06-10T15:00,93.1,13,35.9,0,0,14.5,24.6 +2022-06-10T16:00,92.6,14,35.7,0,0,16.6,30.2 +2022-06-10T17:00,89.3,19,41.3,0,0,8.3,28.2 +2022-06-10T18:00,86.1,39,58,0,0,1.9,13.6 +2022-06-10T19:00,79.4,37,50.7,0,0,4.5,6.9 +2022-06-10T20:00,73.9,41,48.7,0,0,6.8,8.1 +2022-06-10T21:00,69.5,45,47,0,0,5.8,8.3 +2022-06-10T22:00,67.2,47,46,0,0,4,7.2 +2022-06-10T23:00,64.8,52,46.5,0,0,4.7,7.4 +2022-06-11T00:00,63.3,51,44.9,0,0,4.1,8.1 +2022-06-11T01:00,62.1,48,42,0,0,4.3,7.6 +2022-06-11T02:00,59.2,51,41.2,0,0,4.2,6.9 +2022-06-11T03:00,57.7,53,40.8,0,0,2.9,6 +2022-06-11T04:00,56.8,53,39.6,0,0,4.2,5.6 +2022-06-11T05:00,58.2,52,40.6,0,0,4.3,6.3 +2022-06-11T06:00,63.6,45,42.1,0,0,6.4,10.1 +2022-06-11T07:00,71.8,43,48.1,0,0,5.2,10.7 +2022-06-11T08:00,82,31,48.5,0,0,5.7,11.4 +2022-06-11T09:00,88.1,20,42.4,0,0,8.1,15.7 +2022-06-11T10:00,91.1,15,37.1,0,0,3.4,15.9 +2022-06-11T11:00,92.8,14,37.1,0,0,3.7,11.4 +2022-06-11T12:00,95.2,13,36,0,0,8.1,17 +2022-06-11T13:00,96.1,13,36.5,0,0,5.4,17 +2022-06-11T14:00,96,13,37,0,0,6.7,14.1 +2022-06-11T15:00,94.7,13,36.5,0,0,10.1,18.1 +2022-06-11T16:00,95,12,34.4,0,0,8.4,19 +2022-06-11T17:00,93.3,16,40.5,0,0,8.2,15.4 +2022-06-11T18:00,86.2,23,44.2,0,0,5.4,14.5 +2022-06-11T19:00,80.2,29,45.4,0,0,4.7,11.6 +2022-06-11T20:00,74.1,32,42.3,0,0,4.9,7.4 +2022-06-11T21:00,71.8,35,42.7,0,0,5.4,8.7 +2022-06-11T22:00,69.2,42,44.9,0,0,5.1,8.7 +2022-06-11T23:00,66.2,48,46.1,0,0,4.4,8.7 +2022-06-12T00:00,64.5,49,45,0,0,4.4,7.2 +2022-06-12T01:00,63.3,47,42.5,0,0,5.1,8.1 +2022-06-12T02:00,62.9,44,40.6,0,0,6.2,9.8 +2022-06-12T03:00,60.7,45,39.4,0,0,5.6,9.8 +2022-06-12T04:00,58.5,51,40.2,0,0,5.7,8.1 +2022-06-12T05:00,62.2,46,41.1,0,0,3.8,6.9 +2022-06-12T06:00,66.2,43,42.9,0,0,7.3,10.3 +2022-06-12T07:00,71.7,40,46,0,0,4.9,12.3 +2022-06-12T08:00,74.8,37,46.8,0,0,3.6,11.4 +2022-06-12T09:00,78.3,33,47.1,0,0,1.9,10.1 +2022-06-12T10:00,82,29,46.7,0,0,2.1,9.2 +2022-06-12T11:00,86.7,24,45.2,0,0,4,11.9 +2022-06-12T12:00,88.8,22,44.5,0,0,13.9,23.9 +2022-06-12T13:00,90.6,16,38.8,0,0,7.6,25.5 +2022-06-12T14:00,90.5,16,37.9,0,0,8.1,17 +2022-06-12T15:00,93.1,13,35.2,0,0,6.3,17 +2022-06-12T16:00,91,15,36.8,0,0,6.9,15.2 +2022-06-12T17:00,86.8,22,43.1,0,0,8.7,13.9 +2022-06-12T18:00,86.2,24,45.1,0,0,7,14.1 +2022-06-12T19:00,81.4,26,43.7,0,0,7.2,12.5 +2022-06-12T20:00,76.6,29,42.1,0,0,8.2,13 +2022-06-12T21:00,74.3,29,40.4,0,0,8.2,14.1 +2022-06-12T22:00,69.9,32,38.9,0,0,7.4,13.2 +2022-06-12T23:00,68.1,32,37,0,0,7.3,12.5 +2022-06-13T00:00,66.7,31,35.2,0,0,7.3,11.6 +2022-06-13T01:00,67.2,29,33.5,0,0,9.1,14.8 +2022-06-13T02:00,66.2,29,33.1,0,0,8.4,14.8 +2022-06-13T03:00,65.2,29,32.4,0,0,8.8,14.1 +2022-06-13T04:00,64.3,29,31.6,0,0,8.6,14.5 +2022-06-13T05:00,64,30,31.9,0,0,6.7,14.3 +2022-06-13T06:00,67.5,30,34.5,0,0,7.8,12.5 +2022-06-13T07:00,73.6,30,39.8,0,0,6,12.8 +2022-06-13T08:00,81.1,21,37.9,0,0,6.3,12.3 +2022-06-13T09:00,86.3,12,28.1,0,0,7.6,15.7 +2022-06-13T10:00,88.8,12,29.4,0,0,5.8,15.4 +2022-06-13T11:00,90.7,11,29.6,0,0,4.4,13.6 +2022-06-13T12:00,92,11,30.7,0,0,4.1,12.3 +2022-06-13T13:00,93.7,10,30,0,0,6.3,14.5 +2022-06-13T14:00,95.9,8,26.1,0,0,3.5,15.7 +2022-06-13T15:00,96.3,7,22.5,0,0,11.5,19 +2022-06-13T16:00,94.5,7,20.6,0,0,19.3,32.9 +2022-06-13T17:00,95.3,6,19,0,0,12.8,32.2 +2022-06-13T18:00,91.5,13,33.8,0,0,4.1,20.8 +2022-06-13T19:00,81.5,29,46,0,0,5.8,7.2 +2022-06-13T20:00,77.8,25,39,0,0,5.8,8.3 +2022-06-13T21:00,74,26,37,0,0,5.9,7.2 +2022-06-13T22:00,72.4,25,34.6,0,0,14.7,22.4 +2022-06-13T23:00,66,29,32.5,0,0,4.8,22.8 +2022-06-14T00:00,63.5,32,33.4,0,0,4.1,7.8 +2022-06-14T01:00,60.7,39,35.3,0,0,3.3,6.7 +2022-06-14T02:00,59.1,43,36.4,0,0,4.5,6.3 +2022-06-14T03:00,59.3,42,36.1,0,0,7.9,12.1 +2022-06-14T04:00,57.4,45,36,0,0,4.5,12.8 +2022-06-14T05:00,58,48,38.6,0,0,3.7,6.9 +2022-06-14T06:00,59.6,47,39.1,0,0,3.7,7.4 +2022-06-14T07:00,62.5,43,39.8,0,0,2.4,8.3 +2022-06-14T08:00,65.9,39,40.6,0,0,6.6,13.9 +2022-06-14T09:00,69.4,32,38.6,0,0,8.7,18.1 +2022-06-14T10:00,71.6,28,36.4,0,0,10.5,20.6 +2022-06-14T11:00,75.1,25,37,0,0,8.9,21.5 +2022-06-14T12:00,75.8,24,36.6,0,0,7.4,18.8 +2022-06-14T13:00,77.5,22,35.2,0,0,14.7,26.4 +2022-06-14T14:00,78.2,20,33.6,0,0,17.1,30.9 +2022-06-14T15:00,81,17,32.6,0,0,11.5,30 +2022-06-14T16:00,81.9,16,32,0,0,10.5,21.5 +2022-06-14T17:00,80.2,19,34.2,0,0,8.4,20.4 +2022-06-14T18:00,77.8,22,35.5,0,0,8.8,17 +2022-06-14T19:00,74.2,27,38.1,0,0,4.3,14.5 +2022-06-14T20:00,68.1,38,41.3,0,0,5.4,6.9 +2022-06-14T21:00,67.1,38,40.4,0,0,6.5,8.3 +2022-06-14T22:00,61.5,52,43.6,0,0,10.9,19.7 +2022-06-14T23:00,59.4,57,44.2,0,0,4,16.8 +2022-06-15T00:00,58.6,60,44.6,0,0,4.5,6.5 +2022-06-15T01:00,57.7,63,45,0,0,6,9.6 +2022-06-15T02:00,56,68,45.8,0,0,4.5,9.4 +2022-06-15T03:00,54.6,76,47,0,0,4,9.2 +2022-06-15T04:00,54.1,79,47.8,0,0,1.8,6.3 +2022-06-15T05:00,52,75,44.2,0,0,9.3,7.4 +2022-06-15T06:00,55.7,66,44.3,0,0,9.6,16.3 +2022-06-15T07:00,61.1,48,41.3,0,0,9.6,17.2 +2022-06-15T08:00,66.7,33,36.5,0,0,12.7,23 +2022-06-15T09:00,71.6,21,29.8,0,0,6.4,22.6 +2022-06-15T10:00,75.7,18,29.8,0,0,1.8,15 +2022-06-15T11:00,79.8,13,24.8,0,0,5.9,15 +2022-06-15T12:00,82.6,10,20.6,0,0,6.6,15.9 +2022-06-15T13:00,84.7,9,19.5,0,0,7.4,17 +2022-06-15T14:00,86.4,8,18.1,0,0,6.8,17 +2022-06-15T15:00,88,6,13.4,0,0,5.7,15.9 +2022-06-15T16:00,89.1,5,10.9,0,0,6.1,14.1 +2022-06-15T17:00,86,8,17.3,0,0,3.6,14.3 +2022-06-15T18:00,85.1,10,21.7,0,0,2.3,8.1 +2022-06-15T19:00,76.6,26,38.7,0,0,5.8,6.3 +2022-06-15T20:00,71.1,17,24.7,0,0,6.2,8.5 +2022-06-15T21:00,68.9,21,27,0,0,5.6,8.5 +2022-06-15T22:00,68.1,33,37.9,0,0,5.7,8.5 +2022-06-15T23:00,64.5,37,37.9,0,0,5.6,8.3 +2022-06-16T00:00,61.9,38,36.2,0,0,4.7,7.4 +2022-06-16T01:00,60.3,38,34.5,0,0,4.6,5.8 +2022-06-16T02:00,59.1,34,30.6,0,0,4.7,7.6 +2022-06-16T03:00,57.6,32,28.2,0,0,4.6,7.6 +2022-06-16T04:00,56,34,27.9,0,0,4.8,7.4 +2022-06-16T05:00,55.1,46,34.9,0,0,4.4,7.6 +2022-06-16T06:00,60.4,39,35.3,0,0,2.2,5.6 +2022-06-16T07:00,65.9,30,33.6,0,0,2.1,6.5 +2022-06-16T08:00,69.3,26,32.7,0,0,3.2,9.8 +2022-06-16T09:00,73.1,26,35.8,0,0,3.5,11.2 +2022-06-16T10:00,77.5,24,37.9,0,0,5.2,13.6 +2022-06-16T11:00,81.6,22,38.6,0,0,5.7,14.8 +2022-06-16T12:00,84.9,19,38.6,0,0,7.4,16.6 +2022-06-16T13:00,87.5,17,36.8,0,0,7,17.9 +2022-06-16T14:00,89.3,16,37,0,0,4.5,16.3 +2022-06-16T15:00,91.2,15,37.8,0,0,6.1,14.5 +2022-06-16T16:00,90.8,17,39.3,0,0,9,14.5 +2022-06-16T17:00,88.7,22,44.9,0,0,13.3,34.9 +2022-06-16T18:00,85.9,24,45,0,0,17.2,30 +2022-06-16T19:00,84.2,24,43.1,0,0,7.8,28 +2022-06-16T20:00,77.3,34,46.9,0,0,5.8,12.8 +2022-06-16T21:00,76.7,34,46.6,0,0,1.4,9.6 +2022-06-16T22:00,70.6,42,46.7,0,0,4.7,6.9 +2022-06-16T23:00,68.9,47,47.8,0,0,4.9,8.3 +2022-06-17T00:00,67.8,50,48.5,0,0,6.1,9.2 +2022-06-17T01:00,65.8,53,48,0,0,4.7,10.1 +2022-06-17T02:00,63.2,56,47.1,0,0,5.9,7.4 +2022-06-17T03:00,61.9,57,46.6,0,0,4,7.4 +2022-06-17T04:00,59.6,62,46.4,0,0,2.9,5.8 +2022-06-17T05:00,65.4,84,60.5,0,0,4.7,4.9 +2022-06-17T06:00,66.6,73,57.5,0,0,3,8.1 +2022-06-17T07:00,68.2,69,57.6,0,0,4.5,10.3 +2022-06-17T08:00,71.3,64,58.5,0,0,3.6,11.4 +2022-06-17T09:00,75.7,54,58,0,0,3.8,11.4 +2022-06-17T10:00,82.1,46,59.3,0,0,5.7,14.5 +2022-06-17T11:00,89.9,26,50.7,0,0,1.3,14.3 +2022-06-17T12:00,93.5,15,38.4,0,0,4.8,13.2 +2022-06-17T13:00,95.9,13,36.7,0,0,8.8,17.7 +2022-06-17T14:00,95.5,12,35.7,0,0,12.1,21.7 +2022-06-17T15:00,95.5,13,36.2,0,0,10.4,22.8 +2022-06-17T16:00,83.1,25,43.7,0.004,0,17.2,41.8 +2022-06-17T17:00,89.4,18,40.2,0,0,14.6,28.6 +2022-06-17T18:00,88,20,42.1,0,0,7.1,24.6 +2022-06-17T19:00,82.6,34,51.6,0,0,3,11.6 +2022-06-17T20:00,77.4,37,48.7,0,0,3.9,9.4 +2022-06-17T21:00,75.2,40,49.2,0,0,5.1,8.5 +2022-06-17T22:00,72.4,43,48.7,0,0,5.4,8.7 +2022-06-17T23:00,71,41,46.2,0,0,5.4,8.5 +2022-06-18T00:00,70.1,42,45.7,0,0,7.1,11.2 +2022-06-18T01:00,69.5,43,46.1,0,0,10.1,15.7 +2022-06-18T02:00,69.5,43,46,0,0,9.8,17 +2022-06-18T03:00,68.2,45,46.1,0,0,7.7,15.4 +2022-06-18T04:00,66.8,48,46.3,0,0,6.3,12.3 +2022-06-18T05:00,65.6,48,45.5,0,0,4.9,10.3 +2022-06-18T06:00,70,44,47.2,0,0,5.1,8.1 +2022-06-18T07:00,76,38,48.3,0,0,5.4,10.7 +2022-06-18T08:00,81.4,30,46.6,0,0,6.4,13.6 +2022-06-18T09:00,83.8,24,43.1,0,0,5.9,13.6 +2022-06-18T10:00,81.7,26,43.3,0,0,8.7,17 +2022-06-18T11:00,85.1,22,41.6,0,0,4.4,17.4 +2022-06-18T12:00,87.9,19,40.5,0,0,4.1,12.5 +2022-06-18T13:00,90.9,17,39.8,0,0,7.5,16.8 +2022-06-18T14:00,92.3,16,39,0,0,6,17 +2022-06-18T15:00,91,17,40.2,0,0,14.8,24.6 +2022-06-18T16:00,78.9,34,48.3,0.012,0,14.7,37.1 +2022-06-18T17:00,81.4,37,52.8,0.004,0,7.4,26.6 +2022-06-18T18:00,81.4,34,50.2,0,0,12.6,20.4 +2022-06-18T19:00,79.8,28,44.2,0,0,9.7,23.5 +2022-06-18T20:00,76.6,33,45.5,0,0,9.1,15.9 +2022-06-18T21:00,74.4,36,45.9,0,0,9.3,14.8 +2022-06-18T22:00,74.1,36,45.1,0,0,8.3,15.9 +2022-06-18T23:00,72.3,38,45.2,0,0,7.4,13.4 +2022-06-19T00:00,71.9,39,45.7,0,0,7.7,12.5 +2022-06-19T01:00,71.1,41,45.9,0,0,7.7,12.8 +2022-06-19T02:00,70.1,42,46.2,0,0,6.9,12.5 +2022-06-19T03:00,69.8,42,45.9,0,0,7.4,12.1 +2022-06-19T04:00,69.2,43,45.9,0,0,6.5,11.9 +2022-06-19T05:00,69.1,48,48.5,0,0,9.8,12.8 +2022-06-19T06:00,71.2,45,48.7,0,0,11.4,19 +2022-06-19T07:00,73.7,41,48.7,0,0,10.9,19.2 +2022-06-19T08:00,75.3,39,48.7,0,0,9.4,18.8 +2022-06-19T09:00,79.2,33,47.9,0,0,7.7,17.9 +2022-06-19T10:00,82.1,29,46.3,0,0,5.2,16.6 +2022-06-19T11:00,84.8,25,45.1,0,0,3.6,13.6 +2022-06-19T12:00,87.9,19,40.8,0,0,8.1,17.7 +2022-06-19T13:00,87.1,18,38.9,0,0,13.9,25.5 +2022-06-19T14:00,90.2,16,37.4,0,0,13.2,26.6 +2022-06-19T15:00,88.8,17,37.9,0,0,16,27.7 +2022-06-19T16:00,87.7,18,38.3,0,0,14.1,30 +2022-06-19T17:00,85.7,22,42.7,0,0,7.2,25.3 +2022-06-19T18:00,83.1,21,39.7,0,0,13.2,21.5 +2022-06-19T19:00,81.1,23,39.8,0,0,11.2,22.1 +2022-06-19T20:00,77.8,25,39.4,0,0,11.5,18.6 +2022-06-19T21:00,76.2,26,39,0,0,10.8,18.6 +2022-06-19T22:00,73.8,29,39.2,0,0,7.9,17.7 +2022-06-19T23:00,71.6,32,40.5,0,0,10.2,15.9 +2022-06-20T00:00,70,36,42,0,0,11.8,19.2 +2022-06-20T01:00,68.5,39,42.7,0,0,11.7,19.2 +2022-06-20T02:00,67.9,41,43.1,0,0,11.1,19 +2022-06-20T03:00,65.6,45,43.7,0,0,9.4,17.9 +2022-06-20T04:00,62.6,51,44,0,0,8.1,15.2 +2022-06-20T05:00,61.5,52,43.7,0,0,4.3,14.8 +2022-06-20T06:00,64.3,48,44.2,0,0,4.5,8.7 +2022-06-20T07:00,69.4,42,45.4,0,0,2.7,8.3 +2022-06-20T08:00,75.5,34,44.9,0,0,7.9,15.2 +2022-06-20T09:00,79.2,24,39.4,0,0,12.7,23.9 +2022-06-20T10:00,81.9,18,33.7,0,0,8.8,23.7 +2022-06-20T11:00,84.7,14,30.8,0,0,12.7,23.7 +2022-06-20T12:00,86.9,10,23.8,0,0,14,26.6 +2022-06-20T13:00,88,9,22.3,0,0,14.2,27.1 +2022-06-20T14:00,88.8,9,22.2,0,0,11.2,26.6 +2022-06-20T15:00,89,9,22.6,0,0,6.1,22.1 +2022-06-20T16:00,89.4,8,21.5,0,0,4.3,14.5 +2022-06-20T17:00,84,10,21.9,0,0,18.1,20.6 +2022-06-20T18:00,84.3,8,16.3,0,0,14.3,29.8 +2022-06-20T19:00,79.3,7,10.3,0,0,12.5,23.7 +2022-06-20T20:00,72.4,12,16.1,0,0,6,20.6 +2022-06-20T21:00,70,16,21,0,0,8.6,15 +2022-06-20T22:00,67.8,15,19,0,0,6.3,13.4 +2022-06-20T23:00,67,14,15.7,0,0,7.4,12.8 +2022-06-21T00:00,63.1,21,22.9,0,0,4.3,12.1 +2022-06-21T01:00,59.1,28,26.4,0,0,3.1,5.8 +2022-06-21T02:00,55.6,37,29.7,0,0,2.8,6.7 +2022-06-21T03:00,53.8,42,31.5,0,0,3.7,5.1 +2022-06-21T04:00,54.7,38,29.8,0,0,6.4,7.8 +2022-06-21T05:00,57,32,27.5,0,0,7.6,8.1 +2022-06-21T06:00,60.2,31,29.8,0,0,7.8,13.6 +2022-06-21T07:00,64.7,26,28.9,0,0,10.7,18.1 +2022-06-21T08:00,69,22,28.4,0,0,13.8,24.2 +2022-06-21T09:00,73.4,19,28,0,0,14.7,26.4 +2022-06-21T10:00,76.6,19,31.1,0,0,15.5,28 +2022-06-21T11:00,78.3,18,31.1,0,0,15.8,29.1 +2022-06-21T12:00,79.1,17,30.3,0,0,15.2,28.9 +2022-06-21T13:00,80.7,16,30,0,0,13.6,28.2 +2022-06-21T14:00,81,16,29.9,0,0,13.6,25.7 +2022-06-21T15:00,81.1,15,29,0,0,13.7,25.1 +2022-06-21T16:00,79.5,16,29,0,0,13.6,24.8 +2022-06-21T17:00,77,17,28.5,0,0,11.5,24.6 +2022-06-21T18:00,75.4,17,27.6,0,0,10.6,20.1 +2022-06-21T19:00,72,19,28,0,0,8.3,17.9 +2022-06-21T20:00,68.2,22,28.2,0,0,6.5,12.8 +2022-06-21T21:00,64.9,28,30.6,0,0,4.4,10.3 +2022-06-21T22:00,63.6,32,32.9,0,0,3.6,6.9 +2022-06-21T23:00,61.4,37,35.2,0,0,3.6,6.3 +2022-06-22T00:00,60.7,38,34.7,0,0,1.1,4 +2022-06-22T01:00,55.8,50,37.3,0,0,2.7,2.9 +2022-06-22T02:00,53.3,58,38.8,0,0,2.6,4.3 +2022-06-22T03:00,53.2,61,40.1,0,0,2.1,4 +2022-06-22T04:00,51.2,66,40.4,0,0,1.6,2.7 +2022-06-22T05:00,50.7,69,40.8,0,0,3.2,3.4 +2022-06-22T06:00,55.1,62,42.3,0,0,1.6,5.4 +2022-06-22T07:00,61.6,45,40.2,0,0,2.9,8.3 +2022-06-22T08:00,67.1,31,35.7,0,0,3.1,9.6 +2022-06-22T09:00,71.4,25,34.3,0,0,4.4,12.1 +2022-06-22T10:00,75.2,23,34.6,0,0,5,13.2 +2022-06-22T11:00,78.4,21,35.2,0,0,5,14.1 +2022-06-22T12:00,80.4,20,35.2,0,0,4.6,13.4 +2022-06-22T13:00,81.7,18,34.6,0,0,4.2,12.5 +2022-06-22T14:00,82.9,17,34.3,0,0,4.7,11.4 +2022-06-22T15:00,83.4,17,34.1,0,0,6.1,12.8 +2022-06-22T16:00,83.2,17,34,0,0,11.2,19.7 +2022-06-22T17:00,81.9,17,32.6,0,0,6,21.7 +2022-06-22T18:00,81.7,16,31.6,0,0,7.8,12.8 +2022-06-22T19:00,76.7,19,31.9,0,0,6.6,14.5 +2022-06-22T20:00,71.2,25,33.6,0,0,5.2,10.3 +2022-06-22T21:00,70.2,28,36,0,0,8.1,13.6 +2022-06-22T22:00,67.6,32,37,0,0,6,12.8 +2022-06-22T23:00,65.4,35,37,0,0,4.9,9.8 +2022-06-23T00:00,62.7,39,37.1,0,0,4.8,7.6 +2022-06-23T01:00,60.6,42,37.6,0,0,4.5,6.9 +2022-06-23T02:00,59.4,44,37.6,0,0,4.3,6.7 +2022-06-23T03:00,57.2,47,37.4,0,0,5.5,6.5 +2022-06-23T04:00,56.5,47,36.5,0,0,5.8,6.9 +2022-06-23T05:00,58.8,43,36.5,0,0,4.7,8.3 +2022-06-23T06:00,63.8,34,35.2,0,0,0.5,5.6 +2022-06-23T07:00,68.5,31,36.4,0,0,4.1,9.2 +2022-06-23T08:00,72.5,29,38.2,0,0,4.8,11.9 +2022-06-23T09:00,77.9,23,36.7,0,0,2.5,12.1 +2022-06-23T10:00,82.9,18,34.5,0,0,3.6,11.4 +2022-06-23T11:00,86.5,13,30,0,0,7.9,17.7 +2022-06-23T12:00,88.4,11,27.8,0,0,6.3,17.7 +2022-06-23T13:00,89.5,11,27.8,0,0,4.8,15.9 +2022-06-23T14:00,90.6,11,28.6,0,0,5,13.9 +2022-06-23T15:00,91.5,11,28.5,0,0,7.1,16.1 +2022-06-23T16:00,90.4,10,27.1,0,0,8.1,17.4 +2022-06-23T17:00,88.4,10,24.2,0,0,1.6,17 +2022-06-23T18:00,87,11,25.3,0,0,5.4,8.1 +2022-06-23T19:00,78.4,21,35.8,0,0,20.7,34.4 +2022-06-23T20:00,76.6,26,38.9,0,0,18.3,33.6 +2022-06-23T21:00,74.3,32,42.5,0,0,16,30 +2022-06-23T22:00,74.5,29,40.6,0,0,14.1,26.2 +2022-06-23T23:00,74.1,29,40.2,0,0,9,22.8 +2022-06-24T00:00,68.4,37,41,0,0,4.6,14.5 +2022-06-24T01:00,64.4,45,42.4,0,0,5.9,7.4 +2022-06-24T02:00,62.2,49,42.8,0,0,5.9,7.2 +2022-06-24T03:00,63.4,46,42,0,0,4.4,7.6 +2022-06-24T04:00,61.7,48,42,0,0,3.8,5.1 +2022-06-24T05:00,62.4,48,42.7,0,0,4.4,6.7 +2022-06-24T06:00,66.2,43,43,0,0,5.3,8.9 +2022-06-24T07:00,72.3,34,42.7,0,0,6.4,12.3 +2022-06-24T08:00,77.5,27,41.2,0,0,3.7,12.8 +2022-06-24T09:00,81.1,24,41,0,0,2.9,10.1 +2022-06-24T10:00,84,19,37.7,0,0,4.3,13.2 +2022-06-24T11:00,86.2,17,36.3,0,0,5.4,14.5 +2022-06-24T12:00,88,16,36,0,0,4.4,14.5 +2022-06-24T13:00,88,16,36.7,0,0,1.3,13.2 +2022-06-24T14:00,89.9,15,36.6,0,0,3.6,11.4 +2022-06-24T15:00,84,25,44.9,0.024,0,14.5,26.4 +2022-06-24T16:00,82.7,22,39.7,0,0,4.5,27.5 +2022-06-24T17:00,69.1,51,50.4,0,0,3.2,11 +2022-06-24T18:00,75.3,39,48.9,0,0,4.7,11.4 +2022-06-24T19:00,75.5,36,46.9,0,0,1.4,10.1 +2022-06-24T20:00,69.8,49,50,0,0,7.7,12.5 +2022-06-24T21:00,66.7,59,52.2,0,0,5.1,12.5 +2022-06-24T22:00,65,62,51.8,0,0,3,8.3 +2022-06-24T23:00,63.4,64,51,0,0,3.6,5.6 +2022-06-25T00:00,62.2,60,48.1,0,0,5.8,9.4 +2022-06-25T01:00,61.2,55,45,0,0,5.8,9.4 +2022-06-25T02:00,60.9,48,41.1,0,0,4.6,9.6 +2022-06-25T03:00,59,46,38.3,0,0,4.8,7.2 +2022-06-25T04:00,59.8,43,37,0,0,3.7,7.6 +2022-06-25T05:00,59.3,68,48.7,0,0,12,22.8 +2022-06-25T06:00,58.7,68,48.4,0,0,15.4,25.3 +2022-06-25T07:00,57.8,62,45,0,0,12.5,25.7 +2022-06-25T08:00,57.1,58,42.4,0,0,9.4,21.7 +2022-06-25T09:00,57.6,55,41.4,0,0,4.8,17 +2022-06-25T10:00,60.1,51,42,0,0,3.3,11.6 +2022-06-25T11:00,62.9,49,43.3,0,0,2.7,11 +2022-06-25T12:00,68.8,41,44,0,0,3.5,12.3 +2022-06-25T13:00,70.4,38,43.8,0,0,7.6,17.4 +2022-06-25T14:00,72.1,36,43.7,0,0,7.9,19.2 +2022-06-25T15:00,73,35,43.5,0,0,3.2,17.9 +2022-06-25T16:00,75.5,32,43.3,0,0,4.2,11.4 +2022-06-25T17:00,72.6,37,44.9,0,0,2.2,11.6 +2022-06-25T18:00,72.6,37,44.9,0,0,4.5,9.6 +2022-06-25T19:00,70,42,46.1,0,0,5.2,9.8 +2022-06-25T20:00,65.1,64,52.5,0.012,0,4,11 +2022-06-25T21:00,62.2,76,54.5,0.012,0,5.5,9.4 +2022-06-25T22:00,62.3,74,53.8,0.004,0,1.9,9.6 +2022-06-25T23:00,61.3,77,54.1,0,0,3.7,5.6 +2022-06-26T00:00,61.9,75,53.8,0,0,5.7,9.8 +2022-06-26T01:00,60,83,54.7,0,0,5.6,9.6 +2022-06-26T02:00,59.6,82,54.1,0,0,7.4,12.1 +2022-06-26T03:00,59.6,75,51.6,0.004,0,8,13.9 +2022-06-26T04:00,59.1,59,44.9,0,0,8.8,14.5 +2022-06-26T05:00,56.7,65,44.9,0,0,7,15.4 +2022-06-26T06:00,57.7,53,40.9,0,0,6,12.5 +2022-06-26T07:00,59,44,37.1,0,0,5.3,11.2 +2022-06-26T08:00,60.3,42,37.1,0,0,4,10.7 +2022-06-26T09:00,63.2,40,38.7,0,0,3.4,11.4 +2022-06-26T10:00,64.8,40,40,0,0,1.9,11.4 +2022-06-26T11:00,68.4,40,42.8,0,0,2.7,11.2 +2022-06-26T12:00,73,38,45.8,0,0,3.6,12.1 +2022-06-26T13:00,73.5,40,47.6,0,0,4.3,12.5 +2022-06-26T14:00,73.4,40,47.6,0.004,0,2.5,12.3 +2022-06-26T15:00,73.8,40,47.8,0,0,5.2,12.8 +2022-06-26T16:00,70.1,49,50.2,0.008,0,9.8,17.7 +2022-06-26T17:00,68.2,46,46.7,0,0,4.5,18.6 +2022-06-26T18:00,67.5,46,46,0.008,0,9.8,17 +2022-06-26T19:00,66.5,52,48.3,0,0,7.6,17 +2022-06-26T20:00,65.8,55,49,0,0,6.6,12.5 +2022-06-26T21:00,64.1,61,50.4,0,0,2,10.3 +2022-06-26T22:00,62.3,67,51.3,0,0,2.9,3.8 +2022-06-26T23:00,61.9,66,50.5,0,0,2.3,4 +2022-06-27T00:00,61.5,65,49.8,0,0,3.1,4.7 +2022-06-27T01:00,60.7,67,49.6,0,0,3,6.7 +2022-06-27T02:00,61.2,64,48.9,0,0,2.5,4.9 +2022-06-27T03:00,60,66,48.7,0,0,1.6,3.1 +2022-06-27T04:00,56.7,74,48.5,0,0,2.1,3.4 +2022-06-27T05:00,55.1,85,50.8,0,0,3.7,4.3 +2022-06-27T06:00,58.3,75,50.4,0,0,3.4,7.2 +2022-06-27T07:00,63.7,61,49.9,0,0,4.5,9.8 +2022-06-27T08:00,68.2,49,48.2,0,0,4.1,11.9 +2022-06-27T09:00,72.4,41,47.2,0,0,3.2,11.4 +2022-06-27T10:00,76.1,35,46.6,0,0,3.8,12.3 +2022-06-27T11:00,79.6,30,45.5,0,0,4.3,13.2 +2022-06-27T12:00,82.8,22,40,0,0,6.2,15.9 +2022-06-27T13:00,81.9,20,36.6,0,0,13.8,26.8 +2022-06-27T14:00,83.8,18,35.2,0,0,8.8,26.4 +2022-06-27T15:00,84.1,18,36.1,0,0,10.2,21 +2022-06-27T16:00,83.5,18,35.2,0,0,7.8,20.8 +2022-06-27T17:00,83.6,18,35.4,0,0,11.1,16.8 +2022-06-27T18:00,82.2,18,34.8,0,0,10,20.1 +2022-06-27T19:00,78.1,24,38.7,0,0,2.8,17.7 +2022-06-27T20:00,74.8,27,38.5,0,0,5.9,9.6 +2022-06-27T21:00,69.9,37,42.6,0,0,3.5,9.6 +2022-06-27T22:00,66.9,41,42.2,0,0,7.1,10.7 +2022-06-27T23:00,64.1,43,41.4,0,0,5.9,11.9 +2022-06-28T00:00,61.5,48,41.9,0,0,4.3,9.8 +2022-06-28T01:00,59.5,53,42.4,0,0,3.4,7.4 +2022-06-28T02:00,57.6,56,42,0,0,3.3,5.8 +2022-06-28T03:00,56.5,58,41.8,0,0,4.1,6.7 +2022-06-28T04:00,55.1,58,40.8,0,0,4.1,6.9 +2022-06-28T05:00,56.8,53,39.7,0,0,3.8,6.7 +2022-06-28T06:00,60.8,46,39.8,0,0,4,7.4 +2022-06-28T07:00,67.7,38,40.9,0,0,2.8,8.5 +2022-06-28T08:00,75.2,28,39.6,0,0,3.1,8.7 +2022-06-28T09:00,81.4,19,35.1,0,0,4,11.6 +2022-06-28T10:00,85.4,16,33.9,0,0,4.1,12.1 +2022-06-28T11:00,87.7,12,29.6,0,0,6.7,15.9 +2022-06-28T12:00,89.5,11,28.2,0,0,8.9,19 +2022-06-28T13:00,90.1,11,28.8,0,0,8.1,19.2 +2022-06-28T14:00,90.6,11,28.9,0,0,6.5,18.1 +2022-06-28T15:00,91.2,11,28.9,0,0,5,15.9 +2022-06-28T16:00,90.3,11,28.3,0,0,4.3,13.2 +2022-06-28T17:00,90.6,10,26,0,0,3.5,12.3 +2022-06-28T18:00,83.2,20,37.6,0,0,10.5,21.3 +2022-06-28T19:00,79.9,23,39.3,0,0,7.8,17.4 +2022-06-28T20:00,76,29,41.9,0,0,8.1,14.1 +2022-06-28T21:00,73.4,30,40,0,0,6.5,13 +2022-06-28T22:00,68.9,36,40.9,0,0,4.3,10.5 +2022-06-28T23:00,67.2,40,42.1,0,0,6.7,10.5 +2022-06-29T00:00,66.5,40,41.1,0,0,8.9,14.3 +2022-06-29T01:00,66,38,39.4,0,0,8.8,15.2 +2022-06-29T02:00,64.8,37,38.2,0,0,6.7,14.3 +2022-06-29T03:00,62.6,40,37.8,0,0,4.9,10.7 +2022-06-29T04:00,60.8,42,37.3,0,0,5.6,7.4 +2022-06-29T05:00,62.5,42,39.1,0,0,4.6,7.6 +2022-06-29T06:00,66.8,36,39.1,0,0,5.1,8.3 +2022-06-29T07:00,73.1,31,41.1,0,0,2.9,8.5 +2022-06-29T08:00,81.7,24,41.9,0,0,3,8.7 +2022-06-29T09:00,88.1,16,36.1,0,0,3.5,11.4 +2022-06-29T10:00,91,13,34.2,0,0,0.5,13.9 +2022-06-29T11:00,92.8,13,35.2,0,0,3.2,10.7 +2022-06-29T12:00,88.3,20,42.8,0.016,0,5.4,14.3 +2022-06-29T13:00,88,15,35.2,0.012,0,5.6,14.5 +2022-06-29T14:00,89.7,18,40.6,0,0,14.5,24.6 +2022-06-29T15:00,84.7,25,44.6,0,0,16.1,34 +2022-06-29T16:00,86,22,43.2,0,0,9.7,28.6 +2022-06-29T17:00,82.5,30,48.1,0,0,10.6,25.3 +2022-06-29T18:00,81.7,28,45.1,0,0,6.9,23.9 +2022-06-29T19:00,79.9,33,48.1,0,0,2.8,11.4 +2022-06-29T20:00,74.5,36,45.9,0,0,21.3,34 +2022-06-29T21:00,67,62,53.8,0.008,0,17.9,35.8 +2022-06-29T22:00,64.9,81,58.7,0.047,0,9.2,28 +2022-06-29T23:00,63.4,79,56.8,0,0,7.9,14.8 +2022-06-30T00:00,61.1,89,57.9,0,0,5.7,12.8 +2022-06-30T01:00,59.5,87,55.7,0,0,5.6,9.4 +2022-06-30T02:00,59.2,81,53.2,0,0,4.7,9.2 +2022-06-30T03:00,57.9,82,52.5,0,0,4.4,7.6 +2022-06-30T04:00,57.9,81,52,0,0,5.2,6 +2022-06-30T05:00,66.6,57,50.9,0,0,9.3,6.5 +2022-06-30T06:00,67.8,56,51.6,0,0,9.3,15.9 +2022-06-30T07:00,70.9,52,52.6,0,0,4.7,15 +2022-06-30T08:00,79.7,34,48.8,0,0,5.4,11.4 +2022-06-30T09:00,85.1,25,45.2,0,0,7.4,16.3 +2022-06-30T10:00,84.2,26,46,0,0,9,18.6 +2022-06-30T11:00,76.6,45,53.4,0.035,0,7.5,19.9 +2022-06-30T12:00,77.8,45,54.5,0.035,0,3.6,18.8 +2022-06-30T13:00,81.1,32,48.7,0.004,0,5.9,15.2 +2022-06-30T14:00,83.2,28,46.3,0,0,6,16.3 +2022-06-30T15:00,83.7,25,44.3,0,0,2.1,14.5 +2022-06-30T16:00,72,57,55.8,0.028,0,14.3,21.7 +2022-06-30T17:00,73.7,41,48.8,0.031,0,17.8,27.3 +2022-06-30T18:00,73.8,39,47,0,0,14.2,29.5 +2022-06-30T19:00,71.8,42,47.8,0,0,12,23.7 +2022-06-30T20:00,71.8,42,47.2,0,0,5.3,19.2 +2022-06-30T21:00,68.8,52,50.3,0,0,12.8,30.4 +2022-06-30T22:00,66.7,56,50.3,0,0,7.4,20.1 +2022-06-30T23:00,65.2,60,51.2,0,0,3.5,12.1 +2022-07-01T00:00,62.5,66,50.9,0,0,2.2,4.5 +2022-07-01T01:00,61,71,51.4,0,0,3.2,5.1 +2022-07-01T02:00,59.5,76,52.1,0,0,3.8,5.1 +2022-07-01T03:00,59.5,76,52.1,0,0,2.3,4.9 +2022-07-01T04:00,57.5,80,51.4,0,0,2.7,3.8 +2022-07-01T05:00,58.6,85,54.1,0,0,3.9,5.4 +2022-07-01T06:00,60,80,53.8,0,0,3.8,7.8 +2022-07-01T07:00,62.2,73,53.3,0,0,2.5,8.3 +2022-07-01T08:00,65.2,64,52.6,0,0,2.6,9.4 +2022-07-01T09:00,68.4,55,51.5,0,0,3.9,11.6 +2022-07-01T10:00,71.1,50,51.7,0,0,4.9,13.6 +2022-07-01T11:00,74.1,44,50.9,0,0,3.4,13.9 +2022-07-01T12:00,76.3,39,49.5,0,0,4.8,13.6 +2022-07-01T13:00,79.2,32,46.7,0,0,6.2,15.7 +2022-07-01T14:00,78.9,32,46.5,0,0,4.7,16.8 +2022-07-01T15:00,81.8,26,44,0,0,5,13.4 +2022-07-01T16:00,80.8,27,43.5,0,0,6.9,14.5 +2022-07-01T17:00,79.2,37,50.4,0,0,0.5,17.9 +2022-07-01T18:00,79.3,35,49.4,0,0,4.5,9.4 +2022-07-01T19:00,73,49,52.4,0,0,12.1,20.1 +2022-07-01T20:00,70.3,56,54,0,0,3.8,20.4 +2022-07-01T21:00,68.5,62,55,0,0,4.3,6.5 +2022-07-01T22:00,66.8,67,55.4,0,0,6.6,10.7 +2022-07-01T23:00,64.9,69,54.4,0,0,4.4,10.7 +2022-07-02T00:00,64.6,62,51.2,0,0,5.5,9.4 +2022-07-02T01:00,65.7,51,46.9,0,0,4.4,10.1 +2022-07-02T02:00,66.2,49,46.3,0,0,0.9,7.4 +2022-07-02T03:00,65.1,52,47.1,0,0,0.9,1.6 +2022-07-02T04:00,59.8,62,46.7,0,0,4.5,5.6 +2022-07-02T05:00,57.2,71,47.8,0,0,2.6,5.8 +2022-07-02T06:00,59.8,65,48.2,0,0,0.9,5.6 +2022-07-02T07:00,64.9,57,49.2,0,0,1.8,7.4 +2022-07-02T08:00,70.3,47,49,0,0,1.1,7.4 +2022-07-02T09:00,75,39,48.7,0,0,3.6,11 +2022-07-02T10:00,78.8,36,49.3,0,0,4.3,12.8 +2022-07-02T11:00,81.8,29,46.9,0,0,5.7,14.8 +2022-07-02T12:00,84.1,24,44,0,0,6.1,15.7 +2022-07-02T13:00,85.6,22,42.2,0,0,5.7,15.9 +2022-07-02T14:00,86,20,40.5,0,0,5.1,15 +2022-07-02T15:00,87.1,19,39.7,0,0,4.9,14.1 +2022-07-02T16:00,86.9,18,38.8,0,0,3.8,13.2 +2022-07-02T17:00,78,39,51.4,0,0,12.3,11 +2022-07-02T18:00,77.6,41,52,0.024,0,3.9,21.5 +2022-07-02T19:00,76.6,42,51.4,0,0,4.8,8.9 +2022-07-02T20:00,72,55,54.7,0,0,3.6,8.3 +2022-07-02T21:00,69.3,60,54.8,0,0,3.3,5.4 +2022-07-02T22:00,67.3,61,53.2,0,0,3.9,6.3 +2022-07-02T23:00,66.3,58,51.3,0,0,4.6,7.6 +2022-07-03T00:00,68.1,53,50.5,0,0,5.9,9.4 +2022-07-03T01:00,69,52,50.6,0,0,7,11.2 +2022-07-03T02:00,68.1,53,50.5,0,0,8.1,12.5 +2022-07-03T03:00,67,55,50.1,0,0,9.2,14.8 +2022-07-03T04:00,66.1,56,50.2,0,0,8.7,15.2 +2022-07-03T05:00,65.8,57,50.1,0,0,6.5,14.1 +2022-07-03T06:00,68,54,50.8,0,0,3.6,10.1 +2022-07-03T07:00,70.3,44,47.5,0,0,4.9,11 +2022-07-03T08:00,74.3,36,45.9,0,0,2.2,10.7 +2022-07-03T09:00,78.4,32,45.9,0,0,2.1,9.4 +2022-07-03T10:00,83.1,28,46.2,0,0,0.4,9.4 +2022-07-03T11:00,86.6,25,46.9,0,0,2.9,10.7 +2022-07-03T12:00,87.8,21,42.5,0,0,2.9,14.8 +2022-07-03T13:00,91.4,16,38.7,0,0,6.2,14.8 +2022-07-03T14:00,89.2,20,42.9,0,0,13.7,22.8 +2022-07-03T15:00,85.8,24,44.7,0,0,13.6,34.7 +2022-07-03T16:00,85.6,25,45.2,0,0,11.1,24.2 +2022-07-03T17:00,76.3,52,57.2,0,0,7.4,24.4 +2022-07-03T18:00,76.8,48,55.5,0,0,6.9,11.6 +2022-07-03T19:00,74.2,53,55.9,0.004,0,9.7,18.1 +2022-07-03T20:00,71.9,62,58.1,0.004,0,9.9,15.7 +2022-07-03T21:00,70.1,67,58.5,0,0,9.4,16.3 +2022-07-03T22:00,69.4,66,57.4,0,0,7.9,15 +2022-07-03T23:00,67.9,63,54.9,0,0,5.1,12.8 +2022-07-04T00:00,67.8,56,51.5,0,0,5,8.1 +2022-07-04T01:00,66.7,55,50,0,0,4.3,8.1 +2022-07-04T02:00,65.4,55,48.9,0,0,4.8,7.4 +2022-07-04T03:00,63.9,56,48,0,0,4,7.6 +2022-07-04T04:00,62.7,57,47.4,0,0,4.2,6.3 +2022-07-04T05:00,62.6,58,47.7,0,0,4.6,7.6 +2022-07-04T06:00,65.7,50,46.5,0,0,5.9,9.6 +2022-07-04T07:00,71.8,43,48.4,0,0,3.8,9.6 +2022-07-04T08:00,78.8,34,47.9,0,0,1.6,9.2 +2022-07-04T09:00,83.7,27,45.9,0,0,3.1,10.1 +2022-07-04T10:00,87.2,21,42.4,0,0,3.2,11.2 +2022-07-04T11:00,89,18,39.4,0,0,4.6,12.8 +2022-07-04T12:00,90.3,17,39.7,0,0,6.4,15.7 +2022-07-04T13:00,91,17,39.9,0,0,5.4,15.7 +2022-07-04T14:00,91.8,16,39.7,0,0,4.8,14.3 +2022-07-04T15:00,92.1,16,39.4,0,0,4.3,13.4 +2022-07-04T16:00,92.1,16,39.8,0,0,4.1,12.5 +2022-07-04T17:00,85.6,25,46.2,0,0,15.5,11.2 +2022-07-04T18:00,81.8,32,48.9,0,0,12.5,30.6 +2022-07-04T19:00,81.1,31,47.5,0,0,8.7,20.6 +2022-07-04T20:00,76,36,47.5,0,0,3,14.5 +2022-07-04T21:00,73.9,40,48.2,0,0,3.3,5.1 +2022-07-04T22:00,73.2,41,48.2,0,0,6.3,10.3 +2022-07-04T23:00,70.4,45,48.1,0,0,5.6,10.3 +2022-07-05T00:00,67.9,50,48.6,0,0,3.6,8.9 +2022-07-05T01:00,66.7,52,48.4,0,0,3.8,5.8 +2022-07-05T02:00,64.9,56,49.1,0,0,3.6,6.3 +2022-07-05T03:00,64.2,59,49.4,0,0,3.8,6.5 +2022-07-05T04:00,63.7,60,49.7,0,0,3.7,6 +2022-07-05T05:00,62.1,64,49.7,0,0,4.2,4.7 +2022-07-05T06:00,65.5,54,48.3,0,0,1.4,4.7 +2022-07-05T07:00,70.2,49,50.1,0,0,1.1,5.8 +2022-07-05T08:00,77.2,36,48,0,0,0.9,6.7 +2022-07-05T09:00,82.9,27,45.1,0,0,4.8,11.9 +2022-07-05T10:00,86.7,22,43.3,0,0,0.5,13 +2022-07-05T11:00,87.6,21,42.4,0,0,4.7,13 +2022-07-05T12:00,90.2,17,39.7,0,0,3.2,13.4 +2022-07-05T13:00,90.5,17,39.2,0,0,3.6,12.1 +2022-07-05T14:00,91.9,16,39.3,0,0,3.3,12.3 +2022-07-05T15:00,92.8,16,39.6,0,0,4.5,12.3 +2022-07-05T16:00,85.3,25,45.4,0,0,19.6,31.3 +2022-07-05T17:00,80.6,33,48.6,0.008,0,11.2,35.6 +2022-07-05T18:00,79.9,33,48,0,0,9.2,19.7 +2022-07-05T19:00,77.4,36,48.5,0,0,7.6,16.8 +2022-07-05T20:00,74.5,40,48.3,0,0,6.3,12.3 +2022-07-05T21:00,73.4,40,47.8,0,0,4.6,10.5 +2022-07-05T22:00,72.6,41,47.7,0,0,2.9,7.8 +2022-07-05T23:00,69.8,45,47.6,0,0,3.1,5.6 +2022-07-06T00:00,69.4,47,48.3,0,0,2.8,4.7 +2022-07-06T01:00,69.1,46,47.7,0,0,4.7,8.1 +2022-07-06T02:00,67.2,51,48.2,0,0,6.4,10.3 +2022-07-06T03:00,68.2,50,49.1,0,0,5.7,12.5 +2022-07-06T04:00,65.4,64,53,0,0,3.4,9.8 +2022-07-06T05:00,64.3,73,55.5,0,0,3.1,6 +2022-07-06T06:00,64.5,74,55.9,0,0,5,9.2 +2022-07-06T07:00,65.8,70,55.7,0.004,0,4.2,9.2 +2022-07-06T08:00,68.5,65,56.2,0,0,8.7,17.2 +2022-07-06T09:00,71.2,60,56.8,0,0,7,18.1 +2022-07-06T10:00,74.9,53,56.5,0,0,5.2,16.1 +2022-07-06T11:00,76.8,49,55.9,0,0,5.1,14.8 +2022-07-06T12:00,77.6,46,55.4,0,0,3.6,14.8 +2022-07-06T13:00,80.7,40,54.2,0,0,5.4,14.5 +2022-07-06T14:00,79.6,43,55.4,0,0,7,15.9 +2022-07-06T15:00,73.9,56,57,0.098,0,3.8,19.7 +2022-07-06T16:00,76.9,48,55.9,0,0,6,13.2 +2022-07-06T17:00,67.4,81,61.3,0,0,7.5,15.7 +2022-07-06T18:00,69.6,73,60.5,0.008,0,6.4,13.6 +2022-07-06T19:00,69.4,71,59.5,0,0,5.9,13 +2022-07-06T20:00,68.3,75,60,0,0,2.9,10.7 +2022-07-06T21:00,67,80,60.7,0,0,2,4.7 +2022-07-06T22:00,65.7,85,61.1,0,0,2.9,4.7 +2022-07-06T23:00,64.3,89,61.1,0,0,3.7,6 +2022-07-07T00:00,63.2,90,60.3,0,0,3.7,6 +2022-07-07T01:00,61.3,88,57.7,0,0,4.6,7.6 +2022-07-07T02:00,60.1,78,53.3,0,0,5.4,8.9 +2022-07-07T03:00,59.7,65,48.1,0,0,4.6,8.9 +2022-07-07T04:00,59.5,61,46.1,0,0,4.2,7.4 +2022-07-07T05:00,58.8,66,47.5,0,0,2.3,6.5 +2022-07-07T06:00,62,56,46,0,0,5.4,9.2 +2022-07-07T07:00,68.3,52,49.7,0,0,6.8,13 +2022-07-07T08:00,76.6,34,46,0,0,5.1,13.9 +2022-07-07T09:00,82.1,26,44,0,0,2,12.1 +2022-07-07T10:00,85.8,21,41.9,0,0,4.8,15.2 +2022-07-07T11:00,87.4,20,41.4,0,0,4.7,15.4 +2022-07-07T12:00,88.4,19,41.4,0,0,3.4,13.9 +2022-07-07T13:00,89.7,18,41,0,0,6.4,15 +2022-07-07T14:00,87.4,21,42.9,0,0,13.3,24.6 +2022-07-07T15:00,85.4,22,41.9,0.004,0,9.8,26.2 +2022-07-07T16:00,85.4,22,42.4,0,0,11.6,20.6 +2022-07-07T17:00,78.5,37,50.5,0,0,6.7,25.7 +2022-07-07T18:00,77.3,40,51.3,0.004,0,4.6,13.6 +2022-07-07T19:00,77.5,38,49.7,0,0,5.6,10.7 +2022-07-07T20:00,73.2,49,52.8,0,0,7.5,12.8 +2022-07-07T21:00,69.5,58,53.9,0,0,4.5,12.1 +2022-07-07T22:00,67,66,55.1,0,0,4.9,8.3 +2022-07-07T23:00,64.9,71,55.4,0,0,5.3,8.9 +2022-07-08T00:00,63.1,75,55,0,0,4.3,8.7 +2022-07-08T01:00,62.1,79,55.4,0,0,3.4,6.9 +2022-07-08T02:00,60.8,78,53.9,0,0,4.2,6.7 +2022-07-08T03:00,59.1,77,51.8,0,0,3.2,6.9 +2022-07-08T04:00,58.2,76,50.6,0,0,2.7,4 +2022-07-08T05:00,60.3,78,53.5,0,0,2.4,3.8 +2022-07-08T06:00,62.1,70,52.1,0,0,4.5,8.5 +2022-07-08T07:00,66.4,60,52.2,0,0,3.6,9.4 +2022-07-08T08:00,72.2,46,50.5,0,0,4.2,11 +2022-07-08T09:00,78.7,33,47.5,0,0,3.7,11.4 +2022-07-08T10:00,85,25,44.9,0,0,2.7,11.4 +2022-07-08T11:00,88.8,19,40.8,0,0,3.8,12.8 +2022-07-08T12:00,90.6,15,36.1,0,0,6.3,14.5 +2022-07-08T13:00,91,15,36.3,0,0,7.5,17.7 +2022-07-08T14:00,92.1,14,36.3,0,0,9.2,19 +2022-07-08T15:00,92.1,14,36.1,0,0,5.8,19.9 +2022-07-08T16:00,92.7,14,36.4,0,0,4.2,14.1 +2022-07-08T17:00,90.3,19,42.7,0,0,8.3,25.3 +2022-07-08T18:00,82,34,50.5,0,0,9.9,21.9 +2022-07-08T19:00,79.6,38,51.5,0,0,7,17 +2022-07-08T20:00,76.7,45,53.6,0,0,9.2,15.4 +2022-07-08T21:00,73,51,53.9,0,0,7.4,14.8 +2022-07-08T22:00,70.8,54,53.2,0,0,9.4,14.5 +2022-07-08T23:00,69.4,54,52.3,0,0,9.9,15.7 +2022-07-09T00:00,68,55,51.3,0,0,9.3,15.7 +2022-07-09T01:00,66.3,55,49.8,0,0,7.8,14.8 +2022-07-09T02:00,64.8,55,48.2,0,0,6.5,12.5 +2022-07-09T03:00,64.2,54,47.3,0,0,5.6,10.5 +2022-07-09T04:00,61.7,59,47.1,0,0,4.4,8.9 +2022-07-09T05:00,62.4,59,47.8,0,0,3.4,5.6 +2022-07-09T06:00,66.5,49,46.8,0,0,4.3,8.1 +2022-07-09T07:00,73.1,41,48,0,0,2.1,8.1 +2022-07-09T08:00,80.1,32,47.8,0,0,1.8,7.4 +2022-07-09T09:00,85.9,25,45.8,0,0,3.4,10.5 +2022-07-09T10:00,91.1,17,41,0,0,5.6,13.6 +2022-07-09T11:00,94.6,12,33.5,0,0,5.6,14.8 +2022-07-09T12:00,95.6,11,32.3,0,0,4.6,14.3 +2022-07-09T13:00,96.4,11,33.4,0,0,4,13.4 +2022-07-09T14:00,96.5,11,33.6,0,0,3.5,12.5 +2022-07-09T15:00,96.7,11,33,0,0,3,11.6 +2022-07-09T16:00,97.2,10,32,0,0,3.2,10.7 +2022-07-09T17:00,98.6,10,32.6,0,0,11.1,10.1 +2022-07-09T18:00,94.8,11,32.5,0,0,8.7,18.6 +2022-07-09T19:00,89.5,17,38.3,0,0,7.8,17.9 +2022-07-09T20:00,86,19,39.5,0,0,12.8,19.7 +2022-07-09T21:00,82.2,25,42.9,0,0,9.2,20.8 +2022-07-09T22:00,78.2,28,42.6,0,0,5.8,15 +2022-07-09T23:00,74.8,31,42.5,0,0,4.7,9.4 +2022-07-10T00:00,73,34,43,0,0,5.5,8.7 +2022-07-10T01:00,71,37,43.5,0,0,6,9.8 +2022-07-10T02:00,69.7,38,42.9,0,0,5.9,10.1 +2022-07-10T03:00,68.5,38,42.2,0,0,5.7,9.6 +2022-07-10T04:00,66.7,39,41.3,0,0,5,9.2 +2022-07-10T05:00,65.7,40,40.6,0,0,3.8,8.7 +2022-07-10T06:00,69.4,36,41.6,0,0,5.8,9.6 +2022-07-10T07:00,76.7,33,45.8,0,0,3.7,9.8 +2022-07-10T08:00,86.6,26,47.2,0,0,3.3,9.6 +2022-07-10T09:00,94,17,42.4,0,0,5.1,11.9 +2022-07-10T10:00,95.9,11,34.1,0,0,4.1,13.9 +2022-07-10T11:00,97,11,33.9,0,0,1.2,11.4 +2022-07-10T12:00,97.8,12,35.6,0,0,2,9.2 +2022-07-10T13:00,97.9,11,35.6,0,0,4.6,13.9 +2022-07-10T14:00,97.5,12,36.4,0,0,5.8,15.7 +2022-07-10T15:00,92.1,19,44.6,0,0,15.9,26.8 +2022-07-10T16:00,93.1,16,40.8,0,0,5.1,29.3 +2022-07-10T17:00,83.2,30,48.2,0,0,21.7,25.3 +2022-07-10T18:00,69.7,77,62.2,0.055,0,12.4,35.1 +2022-07-10T19:00,70.4,75,62.1,0.043,0,6.9,22.6 +2022-07-10T20:00,71,82,65.1,0,0,6.8,11 +2022-07-10T21:00,71.1,67,59.4,0,0,7.4,13.2 +2022-07-10T22:00,70.3,58,54.8,0,0,8.4,13.4 +2022-07-10T23:00,70.3,56,54,0,0,8,13.6 +2022-07-11T00:00,68.4,61,54.5,0,0,5.5,12.5 +2022-07-11T01:00,68.2,58,52.6,0,0,4.6,8.7 +2022-07-11T02:00,67.8,51,49.2,0,0,4.8,7.8 +2022-07-11T03:00,64.9,55,48.1,0,0,5.3,7.4 +2022-07-11T04:00,63.8,59,49.1,0,0,4.9,6.5 +2022-07-11T05:00,67.2,47,46.1,0,0,8.6,20.1 +2022-07-11T06:00,64.9,60,50.9,0,0,12.2,20.1 +2022-07-11T07:00,64.2,64,52,0,0,14.9,25.5 +2022-07-11T08:00,63.1,66,51.7,0,0,10.8,25.9 +2022-07-11T09:00,65,61,51.4,0,0,8.4,19.7 +2022-07-11T10:00,67.4,55,50.8,0,0,5.8,16.6 +2022-07-11T11:00,69.4,51,50.5,0,0,4,14.3 +2022-07-11T12:00,72.2,46,50.2,0,0,3.8,13.2 +2022-07-11T13:00,75.4,40,49.6,0,0,4.9,14.5 +2022-07-11T14:00,77.5,35,47.8,0,0,4.3,15 +2022-07-11T15:00,80.4,32,47.9,0,0,3.3,13.6 +2022-07-11T16:00,80.4,33,48.3,0,0,4.9,12.5 +2022-07-11T17:00,80.1,36,50.5,0,0,1.7,13 +2022-07-11T18:00,79.4,36,50.3,0,0,3.5,8.5 +2022-07-11T19:00,78.7,37,50.3,0,0,0.7,8.3 +2022-07-11T20:00,75.2,46,53.1,0,0,1.8,3.4 +2022-07-11T21:00,74.3,46,52.1,0,0,2.2,2.7 +2022-07-11T22:00,70.6,53,52.7,0,0,2.7,4.7 +2022-07-11T23:00,68,59,53.1,0,0,4,6.5 +2022-07-12T00:00,65.3,65,53.4,0,0,2.2,6.7 +2022-07-12T01:00,63.6,71,53.9,0,0,2.1,4 +2022-07-12T02:00,62.7,72,53.5,0,0,2.1,3.6 +2022-07-12T03:00,61.7,72,52.5,0,0,3.1,5.1 +2022-07-12T04:00,61.2,69,50.9,0,0,3.6,5.8 +2022-07-12T05:00,60.6,72,51.4,0,0,2.7,5.8 +2022-07-12T06:00,63,64,50.5,0,0,1.1,4.9 +2022-07-12T07:00,67.7,55,51.1,0,0,2.2,6.9 +2022-07-12T08:00,71.6,48,50.6,0,0,2.8,9.8 +2022-07-12T09:00,75.5,42,51,0,0,1.6,9.8 +2022-07-12T10:00,80.4,35,50.5,0,0,3,11.4 +2022-07-12T11:00,85.7,27,47.9,0,0,2.4,11.4 +2022-07-12T12:00,87.4,26,48,0.016,0,4.4,12.5 +2022-07-12T13:00,88.5,18,39.9,0,0,3.6,14.8 +2022-07-12T14:00,90.2,14,34.2,0,0,5.6,13.6 +2022-07-12T15:00,90.5,15,36,0,0,5.9,16.3 +2022-07-12T16:00,90.7,14,35.2,0,0,6.5,14.5 +2022-07-12T17:00,90.3,16,38.8,0,0,10.8,14.3 +2022-07-12T18:00,83.2,27,45.8,0,0,15.9,29.3 +2022-07-12T19:00,81.4,29,46.2,0,0,10.2,26.2 +2022-07-12T20:00,76.8,34,46.5,0,0,5.1,16.3 +2022-07-12T21:00,74.3,39,47.8,0,0,5.4,9.2 +2022-07-12T22:00,71,46,49.3,0,0,3.4,8.9 +2022-07-12T23:00,68.6,51,49.9,0,0,5.7,8.3 +2022-07-13T00:00,67.3,53,49.7,0,0,6.2,10.7 +2022-07-13T01:00,66.5,52,48.2,0,0,7.7,12.1 +2022-07-13T02:00,65.1,50,46,0,0,6.1,13 +2022-07-13T03:00,65.3,49,45.4,0,0,4.3,9.6 +2022-07-13T04:00,62.9,51,44.2,0,0,5.4,7.2 +2022-07-13T05:00,61.9,50,43.3,0,0,4.4,6.9 +2022-07-13T06:00,66.8,42,43.2,0,0,4.3,7.2 +2022-07-13T07:00,72.9,36,44.1,0,0,4.8,9.8 +2022-07-13T08:00,80.8,25,41.6,0,0,5.2,11.6 +2022-07-13T09:00,85.4,21,40.5,0,0,7.1,15.2 +2022-07-13T10:00,89,20,43.3,0,0,5.6,15.7 +2022-07-13T11:00,89.7,22,46.1,0,0,2.9,13.9 +2022-07-13T12:00,91.2,18,41.7,0,0,7,15.2 +2022-07-13T13:00,93.3,14,36.1,0,0,8.1,19.7 +2022-07-13T14:00,93.7,13,35.5,0,0,4.2,17.7 +2022-07-13T15:00,90.3,20,44.4,0,0,17.5,29.8 +2022-07-13T16:00,90.3,16,38.7,0,0,11.9,32.9 +2022-07-13T17:00,82.1,35,51.9,0,0,16.7,21 +2022-07-13T18:00,83.3,27,46.1,0,0,9.7,28.9 +2022-07-13T19:00,82.4,29,46.9,0,0,6.3,16.1 +2022-07-13T20:00,78.4,37,49.6,0,0,6.3,10.7 +2022-07-13T21:00,75.5,42,50.5,0,0,5.3,10.1 +2022-07-13T22:00,73.2,43,49.2,0,0,4.2,8.5 +2022-07-13T23:00,71.7,42,47.4,0,0,5.3,8.9 +2022-07-14T00:00,69.3,44,46.2,0,0,3.8,8.7 +2022-07-14T01:00,66.8,50,47.8,0,0,5.4,8.9 +2022-07-14T02:00,65.5,53,48,0,0,4.9,8.9 +2022-07-14T03:00,64.2,53,46.5,0,0,3.8,8.1 +2022-07-14T04:00,63,53,45.4,0,0,3.4,6.3 +2022-07-14T05:00,69.6,43,46.1,0,0,7.5,6.3 +2022-07-14T06:00,71.2,41,46.5,0,0,4.6,12.5 +2022-07-14T07:00,73.9,39,47.4,0,0,2.8,13.4 +2022-07-14T08:00,80,32,47.1,0,0,2.8,9.4 +2022-07-14T09:00,85.7,25,46,0,0,1.3,9.4 +2022-07-14T10:00,88.5,22,45.2,0,0,1.4,9.8 +2022-07-14T11:00,91.9,19,43.9,0,0,2.3,11.4 +2022-07-14T12:00,93.7,17,42.3,0,0,2.9,11.2 +2022-07-14T13:00,95.3,15,40.5,0,0,4,13.2 +2022-07-14T14:00,93.4,17,41.7,0,0,15.5,24.6 +2022-07-14T15:00,84.6,32,51.4,0,0,14,36 +2022-07-14T16:00,84.5,33,51.9,0,0,7.3,24.6 +2022-07-14T17:00,82.8,32,49.9,0,0,5.3,13.9 +2022-07-14T18:00,82.3,34,51.3,0.004,0,5.7,11 +2022-07-14T19:00,80.2,38,52.6,0,0,9,15.4 +2022-07-14T20:00,76.6,48,55.6,0,0,7.2,14.3 +2022-07-14T21:00,75,54,57.3,0,0,5.8,11.6 +2022-07-14T22:00,73.5,54,55.9,0,0,3.8,9.6 +2022-07-14T23:00,71.2,58,55.4,0,0,3.2,6.3 +2022-07-15T00:00,69.4,59,54.6,0,0,3.1,5.6 +2022-07-15T01:00,68.3,61,54.1,0,0,3.5,6 +2022-07-15T02:00,67.3,61,53.2,0,0,3.7,6 +2022-07-15T03:00,66,60,51.5,0,0,3.6,6.5 +2022-07-15T04:00,64.9,60,50.7,0,0,3.5,6.3 +2022-07-15T05:00,67.9,56,51.8,0,0,7.2,5.8 +2022-07-15T06:00,70.4,48,49.6,0,0,1.6,12.1 +2022-07-15T07:00,74.9,41,49.7,0,0,3.6,9.4 +2022-07-15T08:00,79.3,34,48.5,0,0,0.8,8.9 +2022-07-15T09:00,83.3,30,48.9,0,0,2.1,9.2 +2022-07-15T10:00,87.1,26,48.3,0,0,4,12.1 +2022-07-15T11:00,90.2,23,47.4,0,0,3,12.5 +2022-07-15T12:00,92.4,21,46.9,0,0,3.8,12.3 +2022-07-15T13:00,94.5,19,45.9,0,0,5.2,13.9 +2022-07-15T14:00,96.6,18,45.5,0,0,7.4,13.9 +2022-07-15T15:00,75.3,59,60.2,0.11,0,2.4,38 +2022-07-15T16:00,78.8,51,59.3,0,0,3.4,11.4 +2022-07-15T17:00,79.2,47,57.1,0,0,12.3,11 +2022-07-15T18:00,82.3,41,56.4,0.004,0,1.4,19.5 +2022-07-15T19:00,81.6,42,56.5,0,0,5.6,10.3 +2022-07-15T20:00,78.9,47,57.1,0,0,4,9.2 +2022-07-15T21:00,78.4,49,57.6,0,0,4.5,9.8 +2022-07-15T22:00,76.5,53,58.1,0,0,2.2,7.4 +2022-07-15T23:00,75.1,54,57.5,0,0,9.9,19.5 +2022-07-16T00:00,72.1,60,57.4,0,0,3,15.4 +2022-07-16T01:00,70.9,64,57.9,0,0,2.4,5.4 +2022-07-16T02:00,70.2,66,58.3,0,0,3.4,4.3 +2022-07-16T03:00,70.3,64,57.6,0,0,2.9,4.7 +2022-07-16T04:00,68.8,67,57.4,0,0,2.5,5.1 +2022-07-16T05:00,68.2,62,54.7,0,0,5.8,4.5 +2022-07-16T06:00,69.2,63,55.9,0,0,4.7,9.2 +2022-07-16T07:00,74.7,53,56.6,0,0,5.8,12.1 +2022-07-16T08:00,81.1,39,53.9,0,0,3.4,12.3 +2022-07-16T09:00,85.7,30,50.8,0,0,1.3,10.3 +2022-07-16T10:00,89.6,26,49.8,0,0,6.4,16.1 +2022-07-16T11:00,90.1,24,49,0,0,12.6,23.5 +2022-07-16T12:00,87.6,28,50.5,0.016,0,7.2,25.5 +2022-07-16T13:00,83.8,36,53.7,0,0,9.9,23.9 +2022-07-16T14:00,87.2,29,51,0.008,0,8.4,19.7 +2022-07-16T15:00,86.1,29,50.3,0.004,0,6.7,19.7 +2022-07-16T16:00,86.9,27,48.5,0,0,6.8,15.9 +2022-07-16T17:00,86.8,28,49.5,0,0,4.3,15.4 +2022-07-16T18:00,87.3,25,47.7,0,0,1.3,12.5 +2022-07-16T19:00,84.2,33,51.8,0,0,2.3,7.6 +2022-07-16T20:00,79.2,37,50.8,0,0,3.7,6 +2022-07-16T21:00,75.4,45,52.8,0,0,4.3,7.4 +2022-07-16T22:00,72.2,51,53,0,0,4.7,8.1 +2022-07-16T23:00,70.6,52,52.3,0,0,6,10.1 +2022-07-17T00:00,69.3,53,51.3,0,0,5,10.3 +2022-07-17T01:00,67.5,56,51.1,0,0,3.8,8.3 +2022-07-17T02:00,66.3,57,50.5,0,0,2.9,6.3 +2022-07-17T03:00,64.4,56,48.6,0,0,3.2,4.5 +2022-07-17T04:00,63.7,53,46.4,0,0,2.9,4.5 +2022-07-17T05:00,63.6,71,54.1,0,0,4.6,4.7 +2022-07-17T06:00,66.1,65,54.1,0,0,4.8,8.9 +2022-07-17T07:00,72.1,54,54.7,0,0,1.9,8.5 +2022-07-17T08:00,79,41,53.3,0,0,2.5,8.7 +2022-07-17T09:00,84.7,31,50.4,0,0,3.2,10.5 +2022-07-17T10:00,89.3,24,47.4,0,0,2.5,10.5 +2022-07-17T11:00,92.1,17,41.5,0,0,1.4,10.3 +2022-07-17T12:00,93.7,16,40.2,0,0,1.7,10.1 +2022-07-17T13:00,95.2,15,39.8,0,0,3.2,11.6 +2022-07-17T14:00,96.5,14,40.2,0,0,4,12.8 +2022-07-17T15:00,97.5,14,41.2,0,0,5.9,14.3 +2022-07-17T16:00,96.9,15,40.9,0,0,8,16.6 +2022-07-17T17:00,96.1,17,43.5,0,0,8.4,16.6 +2022-07-17T18:00,94.5,16,42,0,0,8.9,15.4 +2022-07-17T19:00,89.3,21,44.3,0,0,16.2,25.3 +2022-07-17T20:00,86.4,24,44.8,0,0,14,26.6 +2022-07-17T21:00,83.3,26,45.2,0,0,11.3,22.6 +2022-07-17T22:00,80.2,29,45.2,0,0,9.3,18.1 +2022-07-17T23:00,78.8,31,45.7,0,0,9.6,15.4 +2022-07-18T00:00,77.1,33,46,0,0,8.1,15.2 +2022-07-18T01:00,75.2,36,46.1,0,0,6.3,13.2 +2022-07-18T02:00,73.7,38,46.3,0,0,6.9,11.4 +2022-07-18T03:00,73,39,46.5,0,0,7.4,12.3 +2022-07-18T04:00,71.8,40,46.5,0,0,6.3,12.1 +2022-07-18T05:00,70.8,44,47.9,0,0,3.3,11 +2022-07-18T06:00,72.7,42,48.4,0,0,5.1,8.3 +2022-07-18T07:00,77.3,37,49.2,0,0,3.3,8.7 +2022-07-18T08:00,84.5,28,48.2,0,0,5.6,11.6 +2022-07-18T09:00,90,22,46.4,0,0,2.2,13.2 +2022-07-18T10:00,92.8,20,45.3,0,0,3.6,12.1 +2022-07-18T11:00,94.6,19,45.5,0,0,9.2,18.8 +2022-07-18T12:00,95.4,15,41,0,0,2.7,19.9 +2022-07-18T13:00,97.7,14,40.9,0,0,8.8,17.7 +2022-07-18T14:00,98.2,14,40.3,0,0,7.1,18.6 +2022-07-18T15:00,94.6,17,43.3,0,0,15.6,25.9 +2022-07-18T16:00,90.9,21,45.2,0,0,12.8,33.3 +2022-07-18T17:00,89.6,24,47.9,0,0,14.9,22.8 +2022-07-18T18:00,91.9,18,42.1,0,0,11.1,23.7 +2022-07-18T19:00,88.5,23,46,0,0,7.5,18.6 +2022-07-18T20:00,83.8,25,44.7,0,0,6.7,12.8 +2022-07-18T21:00,79.9,31,46.6,0,0,10,15.9 +2022-07-18T22:00,76.4,37,48,0,0,10.5,17.4 +2022-07-18T23:00,74.6,38,47,0,0,9.9,17.2 +2022-07-19T00:00,73.9,36,45.3,0,0,7.8,15.9 +2022-07-19T01:00,72.5,38,45.4,0,0,4.4,12.5 +2022-07-19T02:00,69.9,45,47.4,0,0,4.2,7.2 +2022-07-19T03:00,69.9,45,47.8,0,0,5.4,6.5 +2022-07-19T04:00,69.4,45,47.4,0,0,6.1,7.6 +2022-07-19T05:00,70.8,43,47.3,0,0,6.6,7.6 +2022-07-19T06:00,73.9,40,47.8,0,0,7,11.2 +2022-07-19T07:00,78.9,36,49.4,0,0,2.5,11 +2022-07-19T08:00,86.1,27,48.1,0,0,3.7,9.8 +2022-07-19T09:00,89,23,46.6,0,0,2.6,10.5 +2022-07-19T10:00,91.3,22,47,0,0,3.2,14.1 +2022-07-19T11:00,92.8,20,45.9,0,0,6.4,15.2 +2022-07-19T12:00,92.2,19,43.5,0,0,9.1,24.6 +2022-07-19T13:00,94.6,18,43.9,0,0,3.4,19.5 +2022-07-19T14:00,93.9,18,43.7,0,0,8.7,17.4 +2022-07-19T15:00,89.1,25,49.1,0,0,18.1,32.2 +2022-07-19T16:00,90.8,20,44.7,0,0,5,31.8 +2022-07-19T17:00,85.7,30,50.5,0,0,5.9,11.6 +2022-07-19T18:00,87.3,28,50.6,0,0,7.2,12.3 +2022-07-19T19:00,83.4,35,52.6,0,0,8.2,15.9 +2022-07-19T20:00,80.5,42,55.4,0,0,7.5,13.4 +2022-07-19T21:00,77.6,49,57,0,0,7.7,12.8 +2022-07-19T22:00,75.9,50,55.9,0,0,7.9,13.6 +2022-07-19T23:00,75.2,45,52.2,0,0,3.8,12.8 +2022-07-20T00:00,73.7,41,48.8,0,0,4.4,6.5 +2022-07-20T01:00,72.9,39,46.1,0,0,4.2,8.9 +2022-07-20T02:00,72.2,39,45.9,0,0,6.1,9.8 +2022-07-20T03:00,71.9,39,45.8,0,0,8.2,13.6 +2022-07-20T04:00,70.9,39,44.9,0,0,8,13.9 +2022-07-20T05:00,67.6,53,49.6,0,0,4,13.2 +2022-07-20T06:00,69,50,49.7,0,0,3.4,6.9 +2022-07-20T07:00,73.3,42,49,0,0,0.5,6.9 +2022-07-20T08:00,77,34,46.7,0,0,3.5,10.1 +2022-07-20T09:00,81.3,28,45.2,0,0,4.9,13 +2022-07-20T10:00,86.5,24,45.3,0,0,5.7,14.8 +2022-07-20T11:00,88.5,23,46,0,0,3.6,15 +2022-07-20T12:00,89.7,23,46.8,0,0,5.5,17.4 +2022-07-20T13:00,91.8,19,43.3,0,0,4.8,16.3 +2022-07-20T14:00,86.7,28,49.4,0.004,0,16.4,29.5 +2022-07-20T15:00,87.1,24,46.1,0,0,2.6,31.3 +2022-07-20T16:00,78.8,46,56.4,0.039,0,10.7,18.8 +2022-07-20T17:00,76.5,46,54.1,0,0,10.8,21.3 +2022-07-20T18:00,77.6,47,56,0.004,0,14.1,24.4 +2022-07-20T19:00,78.4,44,54.6,0,0,12.1,24.2 +2022-07-20T20:00,77,44,53.7,0,0,10.6,19.9 +2022-07-20T21:00,74.9,48,53.7,0,0,7.9,16.8 +2022-07-20T22:00,73.3,52,54.5,0,0,5.4,12.5 +2022-07-20T23:00,71.3,50,51.7,0,0,5.5,9.2 +2022-07-21T00:00,68.5,51,49.8,0,0,4.4,9.2 +2022-07-21T01:00,66.6,53,48.7,0,0,3.6,7.4 +2022-07-21T02:00,65.4,52,47.5,0,0,4,6 +2022-07-21T03:00,64.6,48,44.6,0,0,4.8,6.5 +2022-07-21T04:00,64.3,48,44.2,0,0,3.9,6.9 +2022-07-21T05:00,62.7,44,40.5,0,0,3.4,5.8 +2022-07-21T06:00,65,40,40.3,0,0,3.7,6.9 +2022-07-21T07:00,71.7,34,42.2,0,0,2.7,8.1 +2022-07-21T08:00,79.4,25,40.7,0,0,3.8,10.3 +2022-07-21T09:00,86.8,18,38.3,0,0,3.8,11.2 +2022-07-21T10:00,90.9,12,31.7,0,0,2.3,11.6 +2022-07-21T11:00,91.8,13,34.4,0,0,10.1,20.8 +2022-07-21T12:00,94,12,32.9,0,0,7.5,21.3 +2022-07-21T13:00,94.9,11,33,0,0,3.3,17.9 +2022-07-21T14:00,94.9,12,33.4,0,0,4.8,13.2 +2022-07-21T15:00,95.8,12,34.7,0,0,7.3,16.6 +2022-07-21T16:00,92.5,16,39.9,0,0,13.5,23.9 +2022-07-21T17:00,91.9,15,38.2,0,0,2.4,26.4 +2022-07-21T18:00,91,16,37.9,0,0,9,13.4 +2022-07-21T19:00,84.5,23,42.4,0,0,9,20.8 +2022-07-21T20:00,79.1,28,42.9,0,0,2.5,13.6 +2022-07-21T21:00,78,30,43.8,0,0,8.2,13.4 +2022-07-21T22:00,75.4,35,46,0,0,6.8,13 +2022-07-21T23:00,73,37,45.1,0,0,9.2,15 +2022-07-22T00:00,72.3,31,40.4,0,0,9.4,15.7 +2022-07-22T01:00,71.4,29,37.4,0,0,8.2,15.2 +2022-07-22T02:00,69.6,29,35.7,0,0,5.5,13.6 +2022-07-22T03:00,66.1,33,36,0,0,3.8,11 +2022-07-22T04:00,64.7,34,35.4,0,0,3.7,6.3 +2022-07-22T05:00,66.8,32,36.3,0,0,2.9,6 +2022-07-22T06:00,67.1,33,37.3,0,0,4.5,6.5 +2022-07-22T07:00,73.9,27,37.9,0,0,4.9,10.5 +2022-07-22T08:00,80.2,24,40.2,0,0,1.2,10.5 +2022-07-22T09:00,84,23,42.5,0,0,1.3,8.5 +2022-07-22T10:00,87.9,19,40.3,0,0,2.5,10.5 +2022-07-22T11:00,91.6,15,37.8,0,0,2.1,10.7 +2022-07-22T12:00,93.9,12,34.3,0,0,1.6,10.5 +2022-07-22T13:00,96.3,11,33.6,0,0,1.1,10.3 +2022-07-22T14:00,96.7,11,33.4,0,0,0.7,10.3 +2022-07-22T15:00,97.8,11,34.3,0,0,2.2,10.5 +2022-07-22T16:00,97.3,11,34.3,0,0,5.5,13.2 +2022-07-22T17:00,89.6,19,41.8,0,0,5.9,14.3 +2022-07-22T18:00,90.1,18,41.5,0,0,11.7,17 +2022-07-22T19:00,83.1,26,44.9,0,0,7.3,27.7 +2022-07-22T20:00,80.4,30,46.5,0,0,7.9,12.1 +2022-07-22T21:00,77.3,37,48.7,0,0,6.6,13.2 +2022-07-22T22:00,75.6,40,49.5,0,0,6.8,11.2 +2022-07-22T23:00,74.6,40,48.9,0,0,5.9,11.2 +2022-07-23T00:00,73.7,38,46.2,0,0,7.1,11.2 +2022-07-23T01:00,72.1,38,45.2,0,0,6.8,11.9 +2022-07-23T02:00,71.9,37,44.5,0,0,5.6,11 +2022-07-23T03:00,70.3,38,43.8,0,0,6.8,8.9 +2022-07-23T04:00,72.8,34,42.9,0,0,4.3,8.3 +2022-07-23T05:00,68.7,44,46.2,0,0,5.2,5.1 +2022-07-23T06:00,73.6,37,45.7,0,0,6.3,10.1 +2022-07-23T07:00,78.9,31,45.4,0,0,2.8,9.8 +2022-07-23T08:00,83.7,26,45.1,0,0,3.7,10.3 +2022-07-23T09:00,89.8,19,42.7,0,0,3.4,10.5 +2022-07-23T10:00,94,15,39.4,0,0,6.7,15.4 +2022-07-23T11:00,95.1,14,39,0,0,8,17.7 +2022-07-23T12:00,98.3,13,38.1,0,0,6.6,18.1 +2022-07-23T13:00,89.2,24,48,0,0,18.4,32.7 +2022-07-23T14:00,93,16,40.3,0,0,7.1,32.7 +2022-07-23T15:00,94.8,16,41.1,0,0,13.4,19.7 +2022-07-23T16:00,83.8,30,49.4,0,0,6,32.4 +2022-07-23T17:00,75.8,52,56.8,0,0,8.6,23.7 +2022-07-23T18:00,76.9,45,53.8,0.004,0,4.3,18.6 +2022-07-23T19:00,76.2,45,53.1,0,0,9.8,16.3 +2022-07-23T20:00,73.7,56,56.8,0,0,4.5,18.8 +2022-07-23T21:00,72,61,57.7,0,0,8.5,15 +2022-07-23T22:00,69.7,65,57.6,0,0,4.3,14.8 +2022-07-23T23:00,69.3,65,57.1,0,0,5.8,9.4 +2022-07-24T00:00,68.5,69,57.8,0,0,5,9.6 +2022-07-24T01:00,67.4,73,58.6,0,0,5.4,8.7 +2022-07-24T02:00,66.7,74,58.3,0,0,3.6,8.7 +2022-07-24T03:00,65.7,77,58.2,0,0,3.6,5.6 +2022-07-24T04:00,65.2,76,57.5,0,0,2.1,4.7 +2022-07-24T05:00,63.8,73,55.1,0,0,2.8,3.4 +2022-07-24T06:00,66.1,72,56.9,0,0,7.7,11.9 +2022-07-24T07:00,68.5,71,58.6,0,0,10.8,19.2 +2022-07-24T08:00,72,61,57.9,0,0,8.8,19.5 +2022-07-24T09:00,75.1,54,57.5,0,0,7.8,18.3 +2022-07-24T10:00,78.5,47,56.5,0,0,6.1,17.2 +2022-07-24T11:00,82.3,39,54.8,0,0,6.7,16.3 +2022-07-24T12:00,83,37,54,0.004,0,8.2,18.3 +2022-07-24T13:00,86.1,33,53.4,0,0,10.7,21.9 +2022-07-24T14:00,80.6,43,56.3,0.043,0,9.2,22.4 +2022-07-24T15:00,82.6,37,53.8,0.012,0,2.1,18.8 +2022-07-24T16:00,78.4,46,56.1,0.008,0,4.4,12.3 +2022-07-24T17:00,71,65,58.7,0,0,8,11.9 +2022-07-24T18:00,71,62,57.5,0.012,0,8.1,14.5 +2022-07-24T19:00,68.6,69,57.9,0.016,0,3.5,15 +2022-07-24T20:00,68.3,68,57.1,0,0,3.3,7.6 +2022-07-24T21:00,67.8,67,56.7,0,0,1.3,6.5 +2022-07-24T22:00,66.1,75,57.8,0,0,1.8,3.6 +2022-07-24T23:00,65.7,80,59.4,0,0,2.8,4.3 +2022-07-25T00:00,64.4,86,60.1,0,0,4.9,7.6 +2022-07-25T01:00,63.9,87,60,0,0,3,8.1 +2022-07-25T02:00,63.6,89,60.4,0,0,1,4.9 +2022-07-25T03:00,62.2,94,60.4,0,0,2.2,3.4 +2022-07-25T04:00,61.6,95,60.2,0,0,2.6,6.3 +2022-07-25T05:00,62.1,84,57.1,0,0,5,5.8 +2022-07-25T06:00,64.5,71,54.9,0,0,4.5,8.7 +2022-07-25T07:00,68.9,60,54.3,0,0,2.8,8.7 +2022-07-25T08:00,72.1,57,55.9,0,0,4.5,11.6 +2022-07-25T09:00,75.7,51,56.4,0,0,3.7,11.6 +2022-07-25T10:00,80.2,40,53.9,0,0,4.7,13 +2022-07-25T11:00,83.2,31,49.1,0,0,3.6,13.2 +2022-07-25T12:00,85.7,24,45.2,0,0,4.2,12.3 +2022-07-25T13:00,87.9,22,44.7,0,0,6.9,16.1 +2022-07-25T14:00,88.4,21,44.1,0,0,7.9,17 +2022-07-25T15:00,88,22,43.9,0,0,9.7,18.8 +2022-07-25T16:00,88.3,21,43.5,0,0,9.3,19.2 +2022-07-25T17:00,89.7,20,42.7,0,0,7.5,18.3 +2022-07-25T18:00,80.6,44,56.8,0,0,17.7,30.4 +2022-07-25T19:00,78.5,41,53.1,0,0,11.6,29.1 +2022-07-25T20:00,75.7,46,53.8,0,0,10.4,18.8 +2022-07-25T21:00,74.6,48,53.8,0,0,11.2,18.1 +2022-07-25T22:00,71.9,54,54.2,0,0,10.1,17.7 +2022-07-25T23:00,70.3,56,53.8,0,0,7.9,16.3 +2022-07-26T00:00,68.5,57,52.6,0,0,5.4,12.8 +2022-07-26T01:00,67.2,59,52.3,0,0,5.4,8.7 +2022-07-26T02:00,66.4,58,51.3,0,0,5.2,8.5 +2022-07-26T03:00,65.5,53,48.1,0,0,3.6,8.3 +2022-07-26T04:00,64.9,44,42.3,0,0,3.8,6 +2022-07-26T05:00,66.1,54,48.9,0,0,2.6,6.3 +2022-07-26T06:00,67.1,45,45.3,0,0,5.2,7.2 +2022-07-26T07:00,72.3,36,44.2,0,0,2.2,8.7 +2022-07-26T08:00,74.8,42,50.1,0,0,9.6,18.1 +2022-07-26T09:00,77.6,44,53.7,0,0,9.7,19.5 +2022-07-26T10:00,80.9,38,52.6,0,0,9.5,19.7 +2022-07-26T11:00,83.5,33,51.6,0,0,8.7,20.1 +2022-07-26T12:00,85.3,32,52.3,0.008,0,9.6,20.6 +2022-07-26T13:00,85.6,32,52.3,0.008,0,7.3,21 +2022-07-26T14:00,84.8,32,51.9,0,0,9.4,22.4 +2022-07-26T15:00,82.9,35,52.6,0,0,4.9,19.7 +2022-07-26T16:00,80.6,41,55,0,0,6.9,14.8 +2022-07-26T17:00,72,72,62.6,0,0,8.3,15.9 +2022-07-26T18:00,70.5,77,62.9,0.094,0,10.6,17.7 +2022-07-26T19:00,69.8,77,62.4,0,0,8.5,19.9 +2022-07-26T20:00,69.5,76,61.5,0,0,1.5,14.3 +2022-07-26T21:00,68.2,78,61.2,0,0,4.9,9.6 +2022-07-26T22:00,66.7,82,61.1,0,0,1.7,7.8 +2022-07-26T23:00,65.4,88,61.6,0,0,1.6,3.4 +2022-07-27T00:00,64,92,61.7,0,0,1.7,3.6 +2022-07-27T01:00,63.1,94,61.3,0,0,2.6,5.1 +2022-07-27T02:00,62,95,60.6,0,0,1.7,4.5 +2022-07-27T03:00,61.1,95,59.6,0,0,2.8,5.4 +2022-07-27T04:00,59.9,97,59.1,0,0,2.3,4.7 +2022-07-27T05:00,60.5,77,53.2,0,0,3.9,4 +2022-07-27T06:00,63.4,66,51.8,0,0,3,5.6 +2022-07-27T07:00,66.3,61,52.3,0,0,2,8.3 +2022-07-27T08:00,71.4,51,52.5,0,0,1.7,7.8 +2022-07-27T09:00,76.6,43,52.3,0,0,2.2,9.6 +2022-07-27T10:00,82.1,36,52.3,0,0,4.2,12.3 +2022-07-27T11:00,85.6,37,56.5,0,0,10.8,21.5 +2022-07-27T12:00,87.7,35,56.4,0,0,9.1,23 +2022-07-27T13:00,87.9,32,54.1,0.024,0,9.5,20.1 +2022-07-27T14:00,87.8,26,49,0,0,2.7,20.4 +2022-07-27T15:00,88.8,23,46.3,0,0,5.3,12.5 +2022-07-27T16:00,89.1,22,45.4,0,0,7.5,16.8 +2022-07-27T17:00,84.3,36,54.7,0,0,9.9,16.3 +2022-07-27T18:00,80.4,44,56.8,0,0,14,24.2 +2022-07-27T19:00,76.8,52,58,0,0,7.2,23.9 +2022-07-27T20:00,74.6,58,58.9,0,0,3.9,11.6 +2022-07-27T21:00,68.4,76,60.5,0.087,0,12.7,19.5 +2022-07-27T22:00,67.8,74,59.2,0,0,8.9,20.6 +2022-07-27T23:00,68.2,71,58.5,0,0,6.7,14.5 +2022-07-28T00:00,68.4,70,58.1,0,0,9,13 +2022-07-28T01:00,67.3,71,57.7,0,0,7.1,16.8 +2022-07-28T02:00,65.2,78,58,0,0,3.9,11.2 +2022-07-28T03:00,64,86,59.8,0,0,6.9,11 +2022-07-28T04:00,63.1,89,59.9,0,0,4.8,11 +2022-07-28T05:00,62.7,93,60.5,0,0,5.7,9.8 +2022-07-28T06:00,63,94,61.2,0.209,0,4.5,9.6 +2022-07-28T07:00,61.9,94,60.2,0.091,0,7.6,13 +2022-07-28T08:00,62.6,76,54.8,0.02,0,5,12.8 +2022-07-28T09:00,66.3,62,53,0,0,3.3,10.7 +2022-07-28T10:00,68.4,60,53.8,0,0,4.7,12.3 +2022-07-28T11:00,71.3,57,55.3,0,0,3.4,12.5 +2022-07-28T12:00,73.1,52,54.7,0,0,2.8,11.6 +2022-07-28T13:00,74.8,49,54.6,0,0,2.5,10.5 +2022-07-28T14:00,75.8,49,55.1,0,0,3.6,10.5 +2022-07-28T15:00,75.8,49,55.2,0,0,4.8,13 +2022-07-28T16:00,76.5,48,55.1,0,0,4.8,11.9 +2022-07-28T17:00,69.3,70,59,0,0,6.3,11.2 +2022-07-28T18:00,68.7,70,58.6,0,0,5.7,19.5 +2022-07-28T19:00,70,65,57.6,0,0,5.9,11.9 +2022-07-28T20:00,69.2,69,58.5,0,0,6.1,12.8 +2022-07-28T21:00,67.3,79,60.6,0,0,6,12.5 +2022-07-28T22:00,66.7,82,61,0,0,1.6,9.8 +2022-07-28T23:00,65.8,85,61.3,0,0,2.9,4.3 +2022-07-29T00:00,64.6,89,61.2,0,0,2.9,6 +2022-07-29T01:00,63.1,91,60.4,0,0,4,4.9 +2022-07-29T02:00,64,83,58.7,0,0,3,4.9 +2022-07-29T03:00,63.5,80,57.3,0,0,3.2,5.1 +2022-07-29T04:00,61.8,85,57.1,0,0,4.3,5.6 +2022-07-29T05:00,60.1,92,57.8,0,0,3.6,5.6 +2022-07-29T06:00,62.8,81,56.8,0,0,3.8,8.1 +2022-07-29T07:00,65,77,57.6,0,0,2.6,8.3 +2022-07-29T08:00,67.7,69,57.2,0,0,0.9,7.6 +2022-07-29T09:00,71.1,59,56.2,0,0,2.4,9.6 +2022-07-29T10:00,74.6,51,55.2,0,0,3.7,14.3 +2022-07-29T11:00,77.5,46,54.9,0,0,4.6,14.8 +2022-07-29T12:00,79.9,40,53.4,0,0,5.4,15.2 +2022-07-29T13:00,82.2,36,53,0,0,5.8,15.4 +2022-07-29T14:00,83.2,35,52.9,0,0,3.4,15.4 +2022-07-29T15:00,84.5,32,51.4,0,0,7,15.7 +2022-07-29T16:00,82.9,33,50.5,0,0,5.2,16.8 +2022-07-29T17:00,75.3,49,54.8,0.024,0,12.3,17 +2022-07-29T18:00,74.9,51,55.8,0,0,7.7,20.6 +2022-07-29T19:00,73.5,54,55.9,0,0,5.3,14.1 +2022-07-29T20:00,71.1,60,56.7,0,0,5.2,8.5 +2022-07-29T21:00,68.3,66,56.3,0,0,4.3,8.1 +2022-07-29T22:00,65.3,72,56.1,0,0,3.9,6.9 +2022-07-29T23:00,63.3,77,55.9,0,0,3.5,6 +2022-07-30T00:00,61.8,79,55.1,0,0,4,6.5 +2022-07-30T01:00,60.2,79,53.8,0,0,3.4,6.5 +2022-07-30T02:00,59.8,76,52.3,0,0,3.2,5.4 +2022-07-30T03:00,59.4,73,50.5,0,0,3,5.4 +2022-07-30T04:00,58.1,71,48.8,0,0,2.7,4.9 +2022-07-30T05:00,58.5,68,48,0,0,2.4,4.5 +2022-07-30T06:00,60.3,66,48.8,0,0,1.8,4 +2022-07-30T07:00,66.1,53,48.6,0,0,0.5,5.6 +2022-07-30T08:00,71.6,45,49.2,0,0,2.8,8.9 +2022-07-30T09:00,77.4,38,50,0,0,3.7,11.2 +2022-07-30T10:00,82.4,29,46.9,0,0,3.4,11.6 +2022-07-30T11:00,86.3,21,41.5,0,0,4.1,12.3 +2022-07-30T12:00,88.9,16,36.5,0,0,4.9,13.6 +2022-07-30T13:00,90.3,14,35.2,0,0,6.7,16.1 +2022-07-30T14:00,91,14,35.7,0,0,7.7,17.2 +2022-07-30T15:00,91,15,36.3,0,0,8.5,18.1 +2022-07-30T16:00,90.1,15,36.6,0,0,6.1,17.9 +2022-07-30T17:00,91.3,13,34,0,0,2.9,13.9 +2022-07-30T18:00,89.5,15,35,0,0,4,7.4 +2022-07-30T19:00,85.2,19,38.5,0,0,4.9,8.3 +2022-07-30T20:00,81.3,24,40.7,0,0,3.6,7.6 +2022-07-30T21:00,77.9,32,46,0,0,8.6,14.1 +2022-07-30T22:00,74.3,38,47.4,0,0,7.7,14.1 +2022-07-30T23:00,70.5,45,47.9,0,0,6.6,12.3 +2022-07-31T00:00,67.7,49,48,0,0,4.4,10.3 +2022-07-31T01:00,66.5,50,47.5,0,0,4.1,7.2 +2022-07-31T02:00,65.3,51,46.8,0,0,3.3,6.7 +2022-07-31T03:00,64.3,52,46.2,0,0,3.8,5.6 +2022-07-31T04:00,63.8,51,45.5,0,0,4.2,6 +2022-07-31T05:00,64.6,54,47.5,0,0,5.8,6.3 +2022-07-31T06:00,69.4,46,47.8,0,0,3.6,6.7 +2022-07-31T07:00,74.7,40,48.7,0,0,1.3,6.7 +2022-07-31T08:00,79.9,34,48.9,0,0,3.5,9.6 +2022-07-31T09:00,83.7,27,46.3,0,0,3.5,10.7 +2022-07-31T10:00,86.7,22,43.3,0,0,4.9,14.3 +2022-07-31T11:00,88.3,20,42.1,0,0,5.1,14.3 +2022-07-31T12:00,90.7,18,41.5,0,0,4.8,14.1 +2022-07-31T13:00,91.8,18,42.9,0,0,5.6,14.5 +2022-07-31T14:00,91.9,19,43.5,0,0,7.3,16.6 +2022-07-31T15:00,82.6,40,55.9,0.094,0,7.3,16.6 +2022-07-31T16:00,80.1,31,46.3,0.004,0,10.6,22.1 +2022-07-31T17:00,81.3,34,50.3,0,0,8.7,19 +2022-07-31T18:00,82.9,30,48.1,0,0,7.7,16.3 +2022-07-31T19:00,79.4,34,48.5,0,0,6,13.4 +2022-07-31T20:00,75.8,39,49.1,0,0,6.3,10.7 +2022-07-31T21:00,72.3,45,49.9,0,0,5.2,10.1 +2022-07-31T22:00,69.3,53,51.3,0,0,4.7,8.7 +2022-07-31T23:00,67,60,52.6,0,0,5.8,9.4 +2022-08-01T00:00,65.8,62,52.3,0,0,5.8,10.1 +2022-08-01T01:00,64.9,59,50.5,0,0,4.4,9.4 +2022-08-01T02:00,64.1,57,48.7,0,0,4.7,7.4 +2022-08-01T03:00,63.4,55,47.1,0,0,4,7.6 +2022-08-01T04:00,62.2,56,46.2,0,0,5.5,6.5 +2022-08-01T05:00,62,57,46.4,0,0,4.4,6.5 +2022-08-01T06:00,65.5,51,47.1,0,0,4.5,5.6 +2022-08-01T07:00,71.6,44,48.8,0,0,4.4,9.4 +2022-08-01T08:00,79.3,33,47.6,0,0,2.4,9.8 +2022-08-01T09:00,85.2,26,46.6,0,0,1.4,8.3 +2022-08-01T10:00,89.3,21,43.7,0,0,2,9.6 +2022-08-01T11:00,91,18,41.1,0,0,2.7,10.1 +2022-08-01T12:00,92.1,17,40.4,0,0,3.7,11.9 +2022-08-01T13:00,92.7,16,40,0,0,4.9,13.4 +2022-08-01T14:00,92.9,16,39.6,0,0,6,15 +2022-08-01T15:00,93,16,39.5,0,0,5.4,15 +2022-08-01T16:00,92.7,16,39.6,0,0,5.9,14.1 +2022-08-01T17:00,87.6,24,45.9,0,0,16.3,13.9 +2022-08-01T18:00,84.3,28,47.3,0,0,13.6,26.6 +2022-08-01T19:00,81.2,36,52.1,0,0,11.9,22.6 +2022-08-01T20:00,79.7,37,51.4,0,0,11.9,20.6 +2022-08-01T21:00,79.6,36,50.3,0,0,10.9,19 +2022-08-01T22:00,77.9,37,49.8,0,0,8.5,17.9 +2022-08-01T23:00,75.6,41,50,0,0,5.4,13.6 +2022-08-02T00:00,73.9,44,50.4,0,0,4.6,8.5 +2022-08-02T01:00,73,45,50.2,0,0,4.6,6.7 +2022-08-02T02:00,72.4,45,49.6,0,0,5.5,7.2 +2022-08-02T03:00,73.5,45,50.6,0,0,4.7,7.6 +2022-08-02T04:00,67.7,58,52.5,0,0,4.7,7.8 +2022-08-02T05:00,67.5,54,50.3,0,0,4.3,6 +2022-08-02T06:00,71.5,49,51.4,0,0,4.1,6.3 +2022-08-02T07:00,77.9,41,52,0,0,6.2,11.2 +2022-08-02T08:00,84.3,32,51.4,0,0,6.2,13.4 +2022-08-02T09:00,88.8,23,45.9,0,0,5.1,14.8 +2022-08-02T10:00,90.9,21,45.1,0,0,3.1,13.2 +2022-08-02T11:00,92.4,19,44.8,0,0,2.6,13.6 +2022-08-02T12:00,92.1,22,47.6,0,0,8.6,19 +2022-08-02T13:00,93.9,20,47.1,0,0,6.5,19 +2022-08-02T14:00,91.8,21,46.6,0,0,15.7,28.4 +2022-08-02T15:00,89.7,23,47.5,0,0,6.4,29.1 +2022-08-02T16:00,89.2,24,47.8,0,0,7.4,17.4 +2022-08-02T17:00,88.4,30,53.2,0,0,12.8,16.1 +2022-08-02T18:00,80.1,47,57.7,0,0,13,25.7 +2022-08-02T19:00,78.4,46,56.1,0,0,7.3,21.5 +2022-08-02T20:00,74.3,52,55.8,0,0,4.7,15.2 +2022-08-02T21:00,72.8,57,56.5,0,0,6.2,8.9 +2022-08-02T22:00,71.7,60,56.9,0,0,6.2,10.3 +2022-08-02T23:00,71,61,56.8,0,0,6.2,10.3 +2022-08-03T00:00,68.6,65,56.5,0,0,7,11.2 +2022-08-03T01:00,67.8,60,53.5,0,0,7.2,11.9 +2022-08-03T02:00,68.4,52,49.9,0,0,8.4,13.6 +2022-08-03T03:00,67.9,51,49.1,0,0,7,13.9 +2022-08-03T04:00,66.4,54,49.1,0,0,3.6,11.4 +2022-08-03T05:00,67.3,59,52.4,0,0,3.8,6.3 +2022-08-03T06:00,69.9,54,52.6,0,0,5.4,7.8 +2022-08-03T07:00,74.5,46,52.4,0,0,1.3,8.7 +2022-08-03T08:00,77.7,44,53.9,0,0,4.3,10.7 +2022-08-03T09:00,80.9,35,50.6,0,0,3.4,11.9 +2022-08-03T10:00,82.8,29,47.6,0,0,4.8,12.8 +2022-08-03T11:00,84.7,27,47.1,0,0,4.4,13.9 +2022-08-03T12:00,86,26,47,0,0,3.8,13.4 +2022-08-03T13:00,86.9,25,46.8,0,0,4.6,13.9 +2022-08-03T14:00,87.8,24,46.5,0,0,4.4,13.9 +2022-08-03T15:00,88.1,24,46.5,0,0,2.7,13.2 +2022-08-03T16:00,87.9,24,46.2,0,0,5.6,13 +2022-08-03T17:00,85.7,25,46,0,0,6.2,15.2 +2022-08-03T18:00,77.2,47,55.1,0,0,8.7,23.7 +2022-08-03T19:00,74.8,56,57.9,0,0,7.6,16.1 +2022-08-03T20:00,72.8,63,59.4,0,0,9.3,15.7 +2022-08-03T21:00,71.3,67,60,0,0,7.1,14.3 +2022-08-03T22:00,70,68,59,0,0,7.5,12.1 +2022-08-03T23:00,68.6,72,59.3,0,0,8,13 +2022-08-04T00:00,67.6,73,58.6,0,0,6.6,13 +2022-08-04T01:00,66.2,71,56.5,0,0,5.8,10.7 +2022-08-04T02:00,65.3,67,54.1,0,0,4.9,9.4 +2022-08-04T03:00,64.3,66,52.7,0,0,4.8,8.1 +2022-08-04T04:00,63.1,67,52.1,0,0,4.3,7.8 +2022-08-04T05:00,63.7,62,50.4,0,0,3.4,6.9 +2022-08-04T06:00,65.4,57,49.6,0,0,2.8,5.8 +2022-08-04T07:00,70.7,49,50.7,0,0,2.8,7.4 +2022-08-04T08:00,77.5,40,51.5,0,0,4.1,10.7 +2022-08-04T09:00,83.9,30,49.4,0,0,1.9,10.7 +2022-08-04T10:00,88.3,24,46.6,0,0,2.7,10.3 +2022-08-04T11:00,91.2,19,43.3,0,0,5.4,14.1 +2022-08-04T12:00,93,17,41.2,0,0,5.2,14.8 +2022-08-04T13:00,94.3,15,39.7,0,0,5,14.3 +2022-08-04T14:00,95.3,14,38.7,0,0,5.8,14.8 +2022-08-04T15:00,96.1,13,38.2,0,0,6.5,15.4 +2022-08-04T16:00,95.6,13,37.8,0,0,7.9,16.1 +2022-08-04T17:00,90.4,22,46.3,0,0,16.2,17 +2022-08-04T18:00,88,28,51.1,0,0,13.4,27.3 +2022-08-04T19:00,84.6,32,51.3,0,0,3.6,21.9 +2022-08-04T20:00,80.6,36,51.3,0,0,6.3,9.2 +2022-08-04T21:00,78.5,40,52.2,0,0,8.7,14.1 +2022-08-04T22:00,76.6,42,51.9,0,0,6.4,13.6 +2022-08-04T23:00,74.8,46,52.5,0,0,7.2,11.4 +2022-08-05T00:00,72.3,49,51.9,0,0,5.2,11.4 +2022-08-05T01:00,70.8,49,50.8,0,0,5.8,8.9 +2022-08-05T02:00,70,47,49.1,0,0,5.3,9.6 +2022-08-05T03:00,67.9,46,46.5,0,0,3.7,8.3 +2022-08-05T04:00,66.6,47,45.8,0,0,4.8,6.3 +2022-08-05T05:00,68.5,51,49.6,0,0,4.3,5.6 +2022-08-05T06:00,72.1,47,50.7,0,0,4,6.9 +2022-08-05T07:00,76.6,41,51.2,0,0,2.1,7.8 +2022-08-05T08:00,81.7,35,51.3,0,0,4.4,10.1 +2022-08-05T09:00,84.9,29,48.9,0,0,6.5,14.8 +2022-08-05T10:00,89.8,23,47.2,0,0,6.5,15.4 +2022-08-05T11:00,93.7,20,46,0,0,7.2,16.8 +2022-08-05T12:00,95.8,18,45.1,0,0,5.7,16.6 +2022-08-05T13:00,97.6,17,45.5,0,0,6,15 +2022-08-05T14:00,97.2,18,46,0,0,4.3,15.4 +2022-08-05T15:00,97.3,17,45.7,0,0,5.5,13.2 +2022-08-05T16:00,92,22,48.1,0,0,9.6,27.3 +2022-08-05T17:00,86.6,30,51.6,0.024,0,12.3,28.2 +2022-08-05T18:00,85.2,34,53.6,0,0,10.4,21.7 +2022-08-05T19:00,79.2,45,55.8,0.012,0,8.9,17.2 +2022-08-05T20:00,73.9,61,59.6,0.016,0,10.6,17 +2022-08-05T21:00,75.2,52,56.5,0,0,7.5,17.4 +2022-08-05T22:00,75,53,56.7,0,0,3.3,11.6 +2022-08-05T23:00,74.4,54,56.8,0,0,5.2,8.1 +2022-08-06T00:00,71.3,61,57.1,0,0,3.5,8.1 +2022-08-06T01:00,69.9,63,56.7,0,0,2.6,4.7 +2022-08-06T02:00,68.5,66,56.5,0,0,3.4,5.4 +2022-08-06T03:00,67.1,67,55.9,0,0,2.9,5.6 +2022-08-06T04:00,65.9,68,55,0,0,2.7,4.7 +2022-08-06T05:00,67.9,67,56.7,0,0,5,5.4 +2022-08-06T06:00,69,66,57.2,0,0,4.8,8.1 +2022-08-06T07:00,71.8,60,57.2,0,0,5,11 +2022-08-06T08:00,74.3,55,56.8,0,0,4,11.4 +2022-08-06T09:00,77.9,48,56.7,0,0,2.4,11 +2022-08-06T10:00,82,41,55.9,0,0,2.6,11 +2022-08-06T11:00,85.6,35,54.9,0,0,4.9,13.6 +2022-08-06T12:00,89.2,29,52.7,0,0,6.3,15.9 +2022-08-06T13:00,91,26,50.9,0,0,5.2,15.9 +2022-08-06T14:00,92.3,25,51.2,0,0,7.3,16.3 +2022-08-06T15:00,82.5,46,59.7,0,0,16.1,27.1 +2022-08-06T16:00,86,36,55.9,0,0,3.1,30.2 +2022-08-06T17:00,72.7,79,65.8,0.094,0,5.5,14.3 +2022-08-06T18:00,75.7,64,62.8,0,0,5.1,13.9 +2022-08-06T19:00,75.7,63,62.4,0,0,4.2,9.8 +2022-08-06T20:00,73.9,73,64.8,0,0,6.5,10.7 +2022-08-06T21:00,72.9,78,65.7,0,0,8.9,13.6 +2022-08-06T22:00,72.9,76,64.9,0,0,9.7,15.7 +2022-08-06T23:00,72.2,73,63.2,0,0,8.5,15.7 +2022-08-07T00:00,70.6,74,62.1,0,0,7.9,13.9 +2022-08-07T01:00,68.9,74,60.2,0,0,5.5,12.5 +2022-08-07T02:00,66.8,73,58,0,0,3.2,8.9 +2022-08-07T03:00,65.4,72,55.9,0,0,3.5,5.4 +2022-08-07T04:00,65.6,78,58.4,0,0,6.8,14.1 +2022-08-07T05:00,67.9,65,55.9,0,0,9.4,11 +2022-08-07T06:00,69.4,61,55.6,0,0,10.3,16.1 +2022-08-07T07:00,71.1,63,57.7,0,0,10.3,19.7 +2022-08-07T08:00,73.7,64,60.5,0,0,6.5,18.3 +2022-08-07T09:00,76.7,60,61.6,0,0,4.8,14.1 +2022-08-07T10:00,80.5,51,61,0,0,5,13.9 +2022-08-07T11:00,82.6,44,58.7,0,0,5.9,16.1 +2022-08-07T12:00,82.1,43,57.3,0,0,9.5,19.7 +2022-08-07T13:00,82.9,41,56.7,0,0,5.3,20.1 +2022-08-07T14:00,72,70,61.8,0.169,0,10.8,21.3 +2022-08-07T15:00,73.8,61,59.5,0.028,0,5.5,23.7 +2022-08-07T16:00,73,67,61.2,0.146,0,4,14.5 +2022-08-07T17:00,71.5,67,60.2,0,0,5.1,13.2 +2022-08-07T18:00,72.7,63,59.4,0,0,3.9,9.2 +2022-08-07T19:00,71.1,67,59.5,0,0,3.2,8.3 +2022-08-07T20:00,69.4,73,60.3,0,0,1.8,5.6 +2022-08-07T21:00,68.3,79,61.3,0,0,2.2,4.5 +2022-08-07T22:00,67.2,83,61.7,0,0,2.2,3.8 +2022-08-07T23:00,65.7,87,61.8,0,0,2.5,4 +2022-08-08T00:00,65.4,87,61.4,0,0,4,6.3 +2022-08-08T01:00,64.1,89,60.9,0,0,3.3,6.5 +2022-08-08T02:00,63,91,60.4,0,0,2.7,5.1 +2022-08-08T03:00,61.7,92,59.4,0,0,2.1,4.7 +2022-08-08T04:00,60.7,93,58.6,0,0,1.9,3.4 +2022-08-08T05:00,60.7,92,58.4,0,0,2.5,4.3 +2022-08-08T06:00,62.1,86,57.9,0,0,2.7,4.3 +2022-08-08T07:00,64.6,83,59.2,0,0,1.4,6.5 +2022-08-08T08:00,68,74,59.5,0,0,1.3,7.2 +2022-08-08T09:00,72.3,63,58.9,0,0,2.7,10.1 +2022-08-08T10:00,76.7,52,57.7,0,0,3.7,11.9 +2022-08-08T11:00,80.3,46,57.4,0,0,4,12.5 +2022-08-08T12:00,83.1,39,55.5,0,0,5.3,14.1 +2022-08-08T13:00,84.6,35,53.6,0,0,5.1,15.7 +2022-08-08T14:00,85.1,32,52,0,0,4.7,14.1 +2022-08-08T15:00,83.5,34,52.2,0,0,5.2,18.3 +2022-08-08T16:00,84.4,31,50.5,0,0,5,13 +2022-08-08T17:00,87,28,50.1,0,0,5.5,13.2 +2022-08-08T18:00,81.3,40,54.7,0.004,0,8.1,15 +2022-08-08T19:00,78.3,44,54.9,0,0,3.6,13.6 +2022-08-08T20:00,75.1,51,55.9,0,0,4.5,7.6 +2022-08-08T21:00,72.1,59,57,0,0,4.2,7.6 +2022-08-08T22:00,69,66,57,0,0,2.8,6.7 +2022-08-08T23:00,67.6,68,56.8,0,0,3.8,6 +2022-08-09T00:00,66.5,67,55,0,0,4,6.7 +2022-08-09T01:00,64.9,65,52.6,0,0,3.8,6.5 +2022-08-09T02:00,63.2,65,51.3,0,0,2.8,6.3 +2022-08-09T03:00,62.7,64,50.2,0,0,3.6,4.9 +2022-08-09T04:00,63.6,60,49.6,0,0,4.3,6.3 +2022-08-09T05:00,64.2,62,51.1,0,0,4.7,5.1 +2022-08-09T06:00,66,54,49,0,0,2.7,5.6 +2022-08-09T07:00,70,50,50.7,0,0,1.4,5.1 +2022-08-09T08:00,73.9,51,54.8,0,0,3.3,9.8 +2022-08-09T09:00,78.1,49,57.7,0,0,2.5,9.8 +2022-08-09T10:00,82.3,43,57.5,0,0,3.3,10.7 +2022-08-09T11:00,86.5,34,55,0,0,5.2,13.6 +2022-08-09T12:00,89.1,25,49,0,0,5.4,14.8 +2022-08-09T13:00,90.6,20,43.5,0,0,6,14.5 +2022-08-09T14:00,91.5,19,42.8,0,0,7.6,16.3 +2022-08-09T15:00,91.2,17,41,0,0,8.2,16.8 +2022-08-09T16:00,91.1,16,39,0,0,8.5,17 +2022-08-09T17:00,91.8,15,37.1,0,0,5.1,16.8 +2022-08-09T18:00,89.6,17,39.6,0,0,7.3,11.9 +2022-08-09T19:00,84.1,23,42,0,0,9,13.4 +2022-08-09T20:00,81.5,27,44.4,0,0,11.3,17.7 +2022-08-09T21:00,78.9,31,45.3,0,0,13.8,22.4 +2022-08-09T22:00,75.5,35,45.9,0,0,8.8,22.1 +2022-08-09T23:00,72.6,40,46.6,0,0,6.1,13.9 +2022-08-10T00:00,71.5,41,46.6,0,0,8.5,14.1 +2022-08-10T01:00,69.3,44,46.7,0,0,6.8,13.9 +2022-08-10T02:00,67.3,49,47.2,0,0,6.9,11.6 +2022-08-10T03:00,64.5,55,47.8,0,0,5.5,11.2 +2022-08-10T04:00,62.5,59,47.9,0,0,3.8,8.7 +2022-08-10T05:00,61.9,64,49.6,0,0,3.1,6.3 +2022-08-10T06:00,64.1,60,49.9,0,0,1.7,4.3 +2022-08-10T07:00,69.4,52,50.8,0,0,0.5,4.7 +2022-08-10T08:00,74.4,42,49.9,0,0,1.8,7.4 +2022-08-10T09:00,78.7,38,51.1,0,0,3.4,10.7 +2022-08-10T10:00,83.2,33,51.2,0,0,3.3,11.6 +2022-08-10T11:00,87.1,25,46.8,0,0,1.7,11.4 +2022-08-10T12:00,89.5,20,42.9,0,0,1.1,9.8 +2022-08-10T13:00,91.5,18,41.6,0,0,2.5,11 +2022-08-10T14:00,92.8,16,40.6,0,0,3.5,11.9 +2022-08-10T15:00,93.7,15,39.7,0,0,5.3,13.6 +2022-08-10T16:00,94.1,15,39.4,0,0,5.5,14.5 +2022-08-10T17:00,93,16,40.7,0,0,7.9,13.2 +2022-08-10T18:00,89.7,20,43.8,0,0,11.6,18.6 +2022-08-10T19:00,85.2,25,45,0,0,12.1,19.9 +2022-08-10T20:00,81.6,28,45.7,0,0,12,20.6 +2022-08-10T21:00,78.7,32,46.6,0,0,11.2,19.2 +2022-08-10T22:00,76.9,36,48,0,0,13.5,21.3 +2022-08-10T23:00,75.7,42,50.9,0,0,14.8,24.4 +2022-08-11T00:00,74.4,45,51.6,0,0,13.2,24.2 +2022-08-11T01:00,72.9,48,51.8,0,0,10.6,21.3 +2022-08-11T02:00,71,51,51.8,0,0,7.8,17.2 +2022-08-11T03:00,68.6,53,50.8,0,0,5.7,12.8 +2022-08-11T04:00,65.8,55,49.2,0,0,3.5,8.9 +2022-08-11T05:00,64.6,55,47.9,0,0,4.6,5.4 +2022-08-11T06:00,66.9,49,47.3,0,0,2.1,5.4 +2022-08-11T07:00,70.4,44,47.8,0,0,1.4,5.6 +2022-08-11T08:00,74.2,43,50.5,0,0,2.7,9.4 +2022-08-11T09:00,78.9,38,51,0,0,3.4,10.7 +2022-08-11T10:00,83.8,31,50.2,0,0,4.9,13.2 +2022-08-11T11:00,88,27,49.6,0,0,5.6,15 +2022-08-11T12:00,90.9,23,48.2,0,0,4.6,14.8 +2022-08-11T13:00,92.8,20,45.5,0,0,4.9,14.1 +2022-08-11T14:00,94.4,17,43.3,0,0,5.6,14.8 +2022-08-11T15:00,94.9,17,42.5,0,0,3.8,15 +2022-08-11T16:00,94.9,15,39.8,0,0,3.8,12.1 +2022-08-11T17:00,94.7,15,40.7,0,0,6.4,13.2 +2022-08-11T18:00,92.8,17,41.7,0,0,3.6,11.6 +2022-08-11T19:00,87.9,21,42.5,0,0,10.2,15.2 +2022-08-11T20:00,84.2,21,39.7,0,0,14.5,23.3 +2022-08-11T21:00,81.2,21,37.9,0,0,12.8,23.9 +2022-08-11T22:00,78.2,24,38.8,0,0,10.9,20.6 +2022-08-11T23:00,75.4,29,40.6,0,0,8.6,17.2 +2022-08-12T00:00,73.7,32,41.7,0,0,7.2,13.9 +2022-08-12T01:00,71.8,35,42.4,0,0,6.6,12.1 +2022-08-12T02:00,70.1,38,43,0,0,5.5,10.5 +2022-08-12T03:00,67.4,43,44.1,0,0,4.3,8.7 +2022-08-12T04:00,65.4,50,46.3,0,0,4.9,6.3 +2022-08-12T05:00,69.7,48,48.9,0,0,3,6 +2022-08-12T06:00,68.5,50,49.1,0,0,3.6,5.8 +2022-08-12T07:00,73,41,48,0,0,3.3,8.3 +2022-08-12T08:00,77,38,49.5,0,0,5.7,12.5 +2022-08-12T09:00,80.2,37,51.6,0,0,7.9,16.8 +2022-08-12T10:00,83.8,32,50.8,0,0,9.2,19.2 +2022-08-12T11:00,86.6,28,49.5,0,0,8.5,19.5 +2022-08-12T12:00,89.1,25,49,0,0,7.4,18.8 +2022-08-12T13:00,90.9,23,48.3,0,0,6.5,17.4 +2022-08-12T14:00,92.1,22,47.5,0,0,5.2,16.1 +2022-08-12T15:00,93.7,21,47.3,0,0,5.6,14.8 +2022-08-12T16:00,92.5,21,46.4,0,0,5.5,14.3 +2022-08-12T17:00,92.6,18,42.9,0,0,3.6,13.2 +2022-08-12T18:00,91,19,43.1,0,0,4.7,9.6 +2022-08-12T19:00,84.3,26,45.4,0,0,5.6,7.8 +2022-08-12T20:00,82.2,28,45.4,0,0,4.8,7.4 +2022-08-12T21:00,79.1,32,46.6,0,0,3.2,5.6 +2022-08-12T22:00,80.2,31,46.7,0,0,2.1,4.3 +2022-08-12T23:00,76,36,47.2,0,0,2.1,3.4 +2022-08-13T00:00,71.3,43,47.9,0,0,3.9,5.6 +2022-08-13T01:00,68.4,50,48.9,0,0,2.4,5.6 +2022-08-13T02:00,66.2,56,50,0,0,2.9,4 +2022-08-13T03:00,65.2,58,50.3,0,0,2.8,4.5 +2022-08-13T04:00,64.2,60,50,0,0,2.6,5.1 +2022-08-13T05:00,63.6,77,56.1,0,0,7.2,4.5 +2022-08-13T06:00,64.5,75,56.4,0,0,6.9,11.9 +2022-08-13T07:00,68.2,65,55.8,0,0,4.5,11.9 +2022-08-13T08:00,70.6,59,55.5,0,0,0,10.3 +2022-08-13T09:00,73.9,51,54.8,0,0,2.5,9.8 +2022-08-13T10:00,77.8,44,53.9,0,0,3.5,11.9 +2022-08-13T11:00,82,38,53.6,0,0,4,12.8 +2022-08-13T12:00,85.5,34,53.5,0,0,4,13.2 +2022-08-13T13:00,87.9,29,51.8,0,0,2.9,13 +2022-08-13T14:00,90.6,25,49.6,0,0,8,17.4 +2022-08-13T15:00,88.6,25,48.2,0,0,7.9,19 +2022-08-13T16:00,90,23,46.7,0,0,6.5,17.2 +2022-08-13T17:00,83,36,53.1,0,0,8.8,14.8 +2022-08-13T18:00,81.3,40,54.5,0,0,5.9,17.4 +2022-08-13T19:00,79.3,38,51.3,0,0,11.5,18.6 +2022-08-13T20:00,76,43,52.1,0,0,2.1,18.3 +2022-08-13T21:00,75.7,45,52.7,0,0,4.6,7.2 +2022-08-13T22:00,73.3,54,55.8,0,0,2.9,8.1 +2022-08-13T23:00,71.2,58,55.6,0,0,2.7,5.1 +2022-08-14T00:00,69.1,62,55.7,0,0,3,4.9 +2022-08-14T01:00,66.9,67,55.8,0,0,2.7,5.4 +2022-08-14T02:00,65.5,71,55.7,0,0,3.5,5.6 +2022-08-14T03:00,64.6,72,55.2,0,0,2.8,5.8 +2022-08-14T04:00,63.8,72,54.6,0,0,2.4,4.7 +2022-08-14T05:00,62.7,77,55.5,0,0,2.4,4.3 +2022-08-14T06:00,64.5,65,52.4,0,0,3.6,6.3 +2022-08-14T07:00,69,54,51.4,0,0,3.8,9.2 +2022-08-14T08:00,72.9,48,52.3,0,0,1.7,9.2 +2022-08-14T09:00,76.9,43,52.7,0,0,2.2,9.2 +2022-08-14T10:00,81.3,38,53,0,0,2.8,10.5 +2022-08-14T11:00,85.4,33,52.7,0,0,4,12.3 +2022-08-14T12:00,88.5,27,50.2,0,0,4.3,13.9 +2022-08-14T13:00,92.9,21,47.3,0,0,4.3,13.4 +2022-08-14T14:00,88.8,24,47.2,0,0,11.4,22.1 +2022-08-14T15:00,88.3,25,48.5,0,0,10.8,26.4 +2022-08-14T16:00,82.4,32,49.3,0.004,0,9,22.8 +2022-08-14T17:00,86.1,27,48.6,0.043,0,12.6,21.5 +2022-08-14T18:00,80,40,53.3,0.004,0,13.7,21.5 +2022-08-14T19:00,70,70,59.9,0.031,0,6.3,23 +2022-08-14T20:00,68.5,75,60.3,0,0,7.8,13.4 +2022-08-14T21:00,67.9,76,60.1,0,0,3.7,13.4 +2022-08-14T22:00,66.5,79,59.9,0,0,2.6,6 +2022-08-14T23:00,65.1,82,59.5,0,0,4.1,6.9 +2022-08-15T00:00,64.2,82,58.6,0,0,3.7,6.7 +2022-08-15T01:00,63.3,85,58.6,0,0,2.1,6 +2022-08-15T02:00,62.7,85,58,0,0,2.6,4.5 +2022-08-15T03:00,61.7,82,56.3,0,0,2.3,4.5 +2022-08-15T04:00,60.6,85,56.1,0,0,1.9,4.3 +2022-08-15T05:00,64,74,55.5,0,0,1.3,3.8 +2022-08-15T06:00,64.4,73,55.7,0,0,2.9,5.1 +2022-08-15T07:00,68.3,65,56,0,0,0.4,5.8 +2022-08-15T08:00,72.7,56,56.2,0,0,3.4,9.8 +2022-08-15T09:00,76.8,48,55.8,0,0,5,13.2 +2022-08-15T10:00,80.2,42,55.1,0,0,5.9,15 +2022-08-15T11:00,83.3,38,55.3,0,0,7.2,16.8 +2022-08-15T12:00,76.4,55,59.1,0.059,0,11,21.9 +2022-08-15T13:00,77.3,50,57.4,0,0,3.6,21.9 +2022-08-15T14:00,71.6,70,61.2,0.185,0,7.5,13.4 +2022-08-15T15:00,73.4,67,61.6,0.016,0,3.6,16.3 +2022-08-15T16:00,70.5,71,60.7,0.087,0,2.2,10.3 +2022-08-15T17:00,67.1,89,63.6,0,0,4.6,13.4 +2022-08-15T18:00,65.6,88,61.9,0.283,0,3.4,10.7 +2022-08-15T19:00,65.2,90,62.3,0.138,0,7.2,12.1 +2022-08-15T20:00,65.2,91,62.4,0.142,0,3.1,12.3 +2022-08-15T21:00,65.6,90,62.7,0.059,0,1.2,5.8 +2022-08-15T22:00,65.3,93,63.2,0.012,0,1.8,3.8 +2022-08-15T23:00,64.9,96,63.6,0.008,0,5.1,8.3 +2022-08-16T00:00,64.8,92,62.3,0.016,0,2.3,8.3 +2022-08-16T01:00,64.5,89,61.1,0.012,0,0.9,3.6 +2022-08-16T02:00,64,91,61.3,0.008,0,1.4,3.6 +2022-08-16T03:00,63.7,94,61.9,0,0,0.8,2.9 +2022-08-16T04:00,63.9,89,60.6,0,0,0.5,1.8 +2022-08-16T05:00,63,93,61,0.004,0,5.1,3.1 +2022-08-16T06:00,63,95,61.4,0.138,0,1,10.3 +2022-08-16T07:00,63.3,91,60.6,0.051,0,7.2,11 +2022-08-16T08:00,63.3,90,60.4,0.028,0,10,19 +2022-08-16T09:00,61.4,94,59.7,0.071,0,10.5,18.8 +2022-08-16T10:00,62,93,59.9,0.146,0,5.4,17.9 +2022-08-16T11:00,63.5,85,59,0.031,0,5.3,12.5 +2022-08-16T12:00,67.5,76,59.8,0.004,0,2.9,13 +2022-08-16T13:00,69.3,69,58.6,0,0,0.9,9.8 +2022-08-16T14:00,69.5,68,58.5,0,0,3.7,8.9 +2022-08-16T15:00,68.4,73,59.4,0.008,0,6.5,12.5 +2022-08-16T16:00,68.4,72,59,0.008,0,5.3,13.4 +2022-08-16T17:00,69,70,58.9,0.008,0,3.7,10.5 +2022-08-16T18:00,67.2,78,60.2,0,0,2.1,6.7 +2022-08-16T19:00,65.7,76,57.7,0,0,3.7,5.6 +2022-08-16T20:00,63.9,77,56.4,0,0,6.8,10.7 +2022-08-16T21:00,63.1,79,56.5,0,0,6,11 +2022-08-16T22:00,62.6,79,56.1,0,0,3.5,9.6 +2022-08-16T23:00,60.7,86,56.4,0,0,2.4,5.6 +2022-08-17T00:00,59.6,87,55.9,0,0,3.5,5.6 +2022-08-17T01:00,57.7,89,54.6,0,0,2.9,5.8 +2022-08-17T02:00,56.6,91,54,0,0,2.4,4.5 +2022-08-17T03:00,56.7,89,53.4,0,0,2.8,4 +2022-08-17T04:00,56.3,85,51.7,0,0,5.2,6.5 +2022-08-17T05:00,57,90,54.2,0,0,4.3,6.7 +2022-08-17T06:00,58.6,87,54.7,0,0,3.7,6 +2022-08-17T07:00,62.4,80,56,0,0,2.2,6.7 +2022-08-17T08:00,65.6,78,58.5,0,0,1.6,7.8 +2022-08-17T09:00,68.9,71,59,0,0,1.7,8.3 +2022-08-17T10:00,72.4,62,58.5,0,0,3.3,11.6 +2022-08-17T11:00,74.4,54,56.6,0.004,0,2.9,11.9 +2022-08-17T12:00,76.4,47,54.5,0,0,1.6,10.7 +2022-08-17T13:00,78.4,40,52.1,0,0,1.9,9.6 +2022-08-17T14:00,79.8,35,49.4,0,0,2.6,9.6 +2022-08-17T15:00,80.1,32,47.5,0,0,1.5,9.8 +2022-08-17T16:00,81,30,46.3,0,0,1.7,8.1 +2022-08-17T17:00,81.2,25,41.8,0,0,5.4,8.1 +2022-08-17T18:00,78.1,38,50.3,0,0,2.3,9.8 +2022-08-17T19:00,70.4,47,49,0,0,5.3,6.3 +2022-08-17T20:00,67.1,52,48.9,0,0,4.2,6.9 +2022-08-17T21:00,63.9,58,48.9,0,0,3.9,6.7 +2022-08-17T22:00,61.5,62,48.4,0,0,4.3,7.2 +2022-08-17T23:00,59.1,68,48.4,0,0,3.5,6.9 +2022-08-18T00:00,58.4,65,46.5,0,0,4.1,7.2 +2022-08-18T01:00,56.9,65,45.4,0,0,3.4,6.9 +2022-08-18T02:00,56.3,66,45,0,0,3.7,6 +2022-08-18T03:00,55.6,64,43.6,0,0,3.8,6.3 +2022-08-18T04:00,54.9,64,42.7,0,0,3.7,6 +2022-08-18T05:00,55,65,43.3,0,0,3.9,6 +2022-08-18T06:00,56.6,61,43.1,0,0,4.2,6.3 +2022-08-18T07:00,62.2,56,46.3,0,0,3.8,8.3 +2022-08-18T08:00,70.8,49,50.6,0,0,2.6,8.3 +2022-08-18T09:00,76.1,41,50.5,0,0,7.1,13.4 +2022-08-18T10:00,78.3,32,45.7,0,0,9.9,20.1 +2022-08-18T11:00,82.3,27,45.1,0,0,10.1,19.9 +2022-08-18T12:00,84.7,23,42.4,0,0,10.2,21 +2022-08-18T13:00,85.6,21,41.2,0,0,7.8,20.4 +2022-08-18T14:00,86.3,20,40.9,0,0,6.7,17 +2022-08-18T15:00,86.5,20,40.6,0,0,5.9,15.2 +2022-08-18T16:00,85.8,20,40.3,0,0,4.8,13.2 +2022-08-18T17:00,84.5,22,41.8,0,0,5.3,10.7 +2022-08-18T18:00,80.8,48,59.4,0,0,2.1,9.2 +2022-08-18T19:00,79.1,29,44.1,0,0,3.8,4.3 +2022-08-18T20:00,72.6,39,46,0,0,2.9,4.9 +2022-08-18T21:00,67.3,52,49.2,0,0,5.3,8.5 +2022-08-18T22:00,62.7,65,50.8,0,0,4.9,9.6 +2022-08-18T23:00,60.2,73,51.6,0,0,3.2,8.1 +2022-08-19T00:00,58.6,79,52.1,0,0,2.6,5.1 +2022-08-19T01:00,57.9,80,51.7,0,0,3.6,6 +2022-08-19T02:00,57.1,80,51,0,0,3.4,6 +2022-08-19T03:00,56.8,79,50.3,0,0,3.2,6.3 +2022-08-19T04:00,57.7,75,49.6,0,0,1.6,4.9 +2022-08-19T05:00,56.1,73,47.6,0,0,3,2.7 +2022-08-19T06:00,57.9,69,47.8,0,0,1.5,4.5 +2022-08-19T07:00,63.1,59,48.5,0,0,3.7,8.1 +2022-08-19T08:00,68.6,49,48.9,0,0,5.3,11.2 +2022-08-19T09:00,73.4,38,46,0,0,10.3,19.5 +2022-08-19T10:00,75.7,34,45.1,0,0,11,21.5 +2022-08-19T11:00,78.1,31,44.9,0,0,10.1,21.5 +2022-08-19T12:00,80.2,29,45.4,0,0,7,20.1 +2022-08-19T13:00,79.6,30,45.4,0,0,4.7,16.1 +2022-08-19T14:00,80.4,30,46.2,0,0,2.8,12.1 +2022-08-19T15:00,80.9,30,46.1,0,0,4.1,11 +2022-08-19T16:00,80.5,29,45.8,0,0,3.1,11 +2022-08-19T17:00,77.4,35,47.6,0,0,3.3,10.7 +2022-08-19T18:00,71.9,50,52.3,0.004,0,12.8,17.4 +2022-08-19T19:00,64.1,74,55.5,0,0,11.5,29.8 +2022-08-19T20:00,64.2,72,55,0,0,9.9,17.7 +2022-08-19T21:00,65.1,61,51.2,0,0,7.1,17.2 +2022-08-19T22:00,64.8,63,52.1,0,0,4.2,11.4 +2022-08-19T23:00,63.3,67,52.3,0,0,2.4,4.9 +2022-08-20T00:00,62.2,75,54.1,0,0,3.6,5.6 +2022-08-20T01:00,61.6,75,53.7,0,0,1.7,4.3 +2022-08-20T02:00,61.9,74,53.4,0,0,0.9,2.7 +2022-08-20T03:00,61.5,75,53.7,0,0,1.8,2.5 +2022-08-20T04:00,59,83,54,0,0,3.3,5.1 +2022-08-20T05:00,60,90,57.1,0,0,2.9,7.6 +2022-08-20T06:00,60.7,86,56.6,0,0,2.7,6 +2022-08-20T07:00,62,83,56.7,0,0,2.7,6.9 +2022-08-20T08:00,64,75,56,0.004,0,3.2,9.2 +2022-08-20T09:00,64.5,76,56.8,0.02,0,4,9.4 +2022-08-20T10:00,63.7,83,58.6,0.028,0,3.4,10.1 +2022-08-20T11:00,65.8,80,59.4,0.012,0,2.8,8.5 +2022-08-20T12:00,72.2,60,57.6,0,0,3.5,13 +2022-08-20T13:00,72.1,61,57.9,0,0,6.9,14.5 +2022-08-20T14:00,73.2,55,56.1,0,0,7,18.3 +2022-08-20T15:00,70.8,61,56.7,0,0,1.6,15.2 +2022-08-20T16:00,71.4,54,53.7,0.004,0,5.2,11.9 +2022-08-20T17:00,67.7,76,59.8,0,0,1.5,11.6 +2022-08-20T18:00,64.8,80,58.6,0.024,0,9.4,15 +2022-08-20T19:00,63,87,59.1,0.012,0,6.9,16.8 +2022-08-20T20:00,62.5,93,60.4,0.031,0,2,11 +2022-08-20T21:00,61.6,95,60.3,0,0,3.3,6.3 +2022-08-20T22:00,61.5,97,60.5,0,0,1.6,6.5 +2022-08-20T23:00,59.9,99,59.6,0,0,2.1,5.6 +2022-08-21T00:00,60.4,100,60.4,0,0,1.6,3.6 +2022-08-21T01:00,57.3,100,57.3,0,0,2.9,2.7 +2022-08-21T02:00,59.1,98,58.6,0,0,4.8,8.3 +2022-08-21T03:00,58.7,97,57.7,0,0,2.9,8.1 +2022-08-21T04:00,60.3,90,57.4,0,0,1.8,5.8 +2022-08-21T05:00,56.8,95,55.4,0,0,2.3,4.3 +2022-08-21T06:00,57.6,91,55,0,0,4.5,8.1 +2022-08-21T07:00,59.9,87,56.1,0,0,1.7,7.6 +2022-08-21T08:00,63.8,74,55.5,0,0,2.4,8.3 +2022-08-21T09:00,68.4,60,54.1,0,0,1.8,8.5 +2022-08-21T10:00,74.1,46,52.2,0,0,3.4,11 +2022-08-21T11:00,75.8,42,50.9,0.004,0,2.4,11.2 +2022-08-21T12:00,77.3,40,51.2,0,0,3.4,11.2 +2022-08-21T13:00,76.2,41,50.9,0,0,7.9,16.3 +2022-08-21T14:00,77.5,40,51,0,0,6.7,19 +2022-08-21T15:00,74.2,49,53.9,0.02,0,1.1,14.8 +2022-08-21T16:00,75,45,52.1,0,0,5.2,11 +2022-08-21T17:00,70.8,57,54.7,0.055,0,9.8,12.3 +2022-08-21T18:00,66.1,66,54.4,0,0,8.1,20.4 +2022-08-21T19:00,64.9,81,58.9,0,0,11,17.4 +2022-08-21T20:00,64.1,82,58.6,0,0,8.3,17.2 +2022-08-21T21:00,63.7,80,57.4,0,0,6.3,13.4 +2022-08-21T22:00,62.8,81,57,0,0,5.2,10.1 +2022-08-21T23:00,60.8,86,56.5,0,0,5,8.5 +2022-08-22T00:00,59.4,88,55.7,0,0,4.3,8.7 +2022-08-22T01:00,60.2,82,54.6,0,0,4.6,8.3 +2022-08-22T02:00,60,79,53.6,0,0,4.5,7.6 +2022-08-22T03:00,59.8,77,52.7,0,0,2.4,7.4 +2022-08-22T04:00,60.3,74,52,0,0,1.6,4.3 +2022-08-22T05:00,58.6,81,52.7,0,0,2.9,3.1 +2022-08-22T06:00,59,80,52.9,0,0,3,4 +2022-08-22T07:00,62.8,72,53.8,0,0,2.3,6.9 +2022-08-22T08:00,67.2,59,52.3,0,0,0.9,6.7 +2022-08-22T09:00,71.2,52,52.5,0,0,3.1,10.3 +2022-08-22T10:00,75.5,44,52,0,0,3.7,11.4 +2022-08-22T11:00,78.7,39,51.4,0,0,4.6,12.8 +2022-08-22T12:00,79.8,35,49.6,0,0,3.2,12.8 +2022-08-22T13:00,81,32,48.3,0,0,2.5,11.2 +2022-08-22T14:00,81.9,31,48.4,0,0,2.3,11 +2022-08-22T15:00,82,30,47.2,0,0,7,13.2 +2022-08-22T16:00,75.6,41,50.2,0,0,15.4,27.3 +2022-08-22T17:00,80.3,31,46.9,0,0,4.8,25.9 +2022-08-22T18:00,76.7,39,49.6,0,0,3.4,9.8 +2022-08-22T19:00,71.9,51,53,0,0,3.3,5.8 +2022-08-22T20:00,68.4,59,53.5,0,0,5,8.1 +2022-08-22T21:00,65.2,67,54.1,0,0,4.7,8.1 +2022-08-22T22:00,63.5,72,54.3,0,0,4.8,8.3 +2022-08-22T23:00,61.7,74,53.5,0,0,4.8,8.1 +2022-08-23T00:00,60.5,74,52.3,0,0,4.7,7.8 +2022-08-23T01:00,59.4,73,50.5,0,0,5,8.5 +2022-08-23T02:00,58.1,73,49.4,0,0,3.6,8.1 +2022-08-23T03:00,57.3,73,48.6,0,0,2.9,6 +2022-08-23T04:00,56.5,73,48.1,0,0,2.8,4.5 +2022-08-23T05:00,56,75,48.1,0,0,3.5,4.7 +2022-08-23T06:00,58.6,68,48.2,0,0,1.9,4.5 +2022-08-23T07:00,63.7,58,48.7,0,0,0.7,4.9 +2022-08-23T08:00,68.7,51,49.7,0,0,2.8,8.3 +2022-08-23T09:00,73.1,45,50.8,0,0,3.8,10.7 +2022-08-23T10:00,77.5,37,49.6,0,0,3.8,11.6 +2022-08-23T11:00,80.3,30,46,0,0,2.7,11.6 +2022-08-23T12:00,81.9,27,45.1,0,0,1.3,10.5 +2022-08-23T13:00,83.5,25,44,0,0,1.6,9.6 +2022-08-23T14:00,83.8,24,43.3,0,0,1.5,9.6 +2022-08-23T15:00,85.1,22,42,0,0,5.4,13.2 +2022-08-23T16:00,83.9,22,40.8,0,0,4.4,13.4 +2022-08-23T17:00,82.7,23,40.6,0,0,6.4,12.8 +2022-08-23T18:00,79.6,29,44.2,0,0,7.4,11.6 +2022-08-23T19:00,74.5,37,46.3,0,0,8.1,14.3 +2022-08-23T20:00,72,43,48.1,0,0,4.6,12.8 +2022-08-23T21:00,66.6,53,49.1,0,0,3.2,5.4 +2022-08-23T22:00,64.5,57,49.1,0,0,4.7,7.4 +2022-08-23T23:00,62.7,61,49.1,0,0,4.6,8.3 +2022-08-24T00:00,60.8,66,49.6,0,0,4.2,7.6 +2022-08-24T01:00,59.8,69,49.6,0,0,3.7,6.7 +2022-08-24T02:00,59,69,48.8,0,0,3.7,6.5 +2022-08-24T03:00,57.4,71,48,0,0,2.5,6 +2022-08-24T04:00,56.5,71,47.1,0,0,2.7,4.3 +2022-08-24T05:00,60,60,46.2,0,0,3,4.5 +2022-08-24T06:00,58,66,46.9,0,0,1.8,4.5 +2022-08-24T07:00,63.4,57,48.1,0,0,2.7,6.9 +2022-08-24T08:00,69.4,44,46.7,0,0,1.8,7.6 +2022-08-24T09:00,73.5,38,46.4,0,0,1.3,7.6 +2022-08-24T10:00,76.9,34,46.6,0,0,4.3,12.1 +2022-08-24T11:00,80,30,46.1,0,0,5.1,13.9 +2022-08-24T12:00,82.1,28,46,0,0,4,13.9 +2022-08-24T13:00,83.8,26,45.5,0,0,3.4,12.5 +2022-08-24T14:00,84.7,25,45,0,0,2,11.6 +2022-08-24T15:00,84.7,24,43.9,0,0,1.3,9.8 +2022-08-24T16:00,85,24,44.1,0,0,2.2,8.5 +2022-08-24T17:00,84.4,22,41.4,0,0,5.4,8.5 +2022-08-24T18:00,81.6,26,43.5,0,0,4,10.1 +2022-08-24T19:00,78.6,26,41,0,0,4.3,7.6 +2022-08-24T20:00,72.1,41,47.1,0,0,6.2,8.9 +2022-08-24T21:00,66.7,57,50.9,0,0,2.7,11.6 +2022-08-24T22:00,64.7,59,50.2,0,0,3.4,4.7 +2022-08-24T23:00,62.6,63,49.6,0,0,2.6,4.9 +2022-08-25T00:00,61.1,63,48.6,0,0,4.5,6.9 +2022-08-25T01:00,59.7,65,47.8,0,0,4.2,7.6 +2022-08-25T02:00,58,69,48,0,0,2.8,6.5 +2022-08-25T03:00,57.1,71,47.8,0,0,2.7,4.7 +2022-08-25T04:00,56.1,71,47,0,0,3,4.3 +2022-08-25T05:00,57.2,72,48.4,0,0,3.8,4.5 +2022-08-25T06:00,57.7,68,47.3,0,0,2.6,5.1 +2022-08-25T07:00,63.5,59,48.7,0,0,1.8,6.3 +2022-08-25T08:00,69.2,45,47,0,0,3.1,8.9 +2022-08-25T09:00,74.1,35,44.9,0,0,3.5,10.7 +2022-08-25T10:00,78.6,30,44.3,0,0,3.6,11.2 +2022-08-25T11:00,82.9,26,44.2,0,0,2.7,11.2 +2022-08-25T12:00,85.9,22,42.7,0,0,2.5,10.5 +2022-08-25T13:00,87.4,20,41,0,0,3.1,10.5 +2022-08-25T14:00,86.4,23,44.1,0,0,14.7,24.8 +2022-08-25T15:00,82.9,27,45.7,0,0,12.1,32.4 +2022-08-25T16:00,79.7,32,46.9,0,0,14.7,25.3 +2022-08-25T17:00,73.8,46,51.5,0,0,11.6,25.5 +2022-08-25T18:00,71.2,60,56.7,0.024,0,5.3,19.2 +2022-08-25T19:00,69.3,67,57.9,0,0,6.2,9.6 +2022-08-25T20:00,68.2,68,57,0,0,4.6,9.8 +2022-08-25T21:00,66.1,72,56.9,0,0,7.2,11 +2022-08-25T22:00,65.6,65,53.4,0,0,7.6,14.3 +2022-08-25T23:00,65.8,64,53.3,0,0,6.3,12.3 +2022-08-26T00:00,65.8,60,51.3,0,0,5.2,11.6 +2022-08-26T01:00,63.3,65,51.5,0,0,4,8.5 +2022-08-26T02:00,60.2,74,51.9,0,0,3,6.5 +2022-08-26T03:00,59.7,72,50.8,0,0,3.8,5.8 +2022-08-26T04:00,59.6,70,49.8,0,0,5.3,8.7 +2022-08-26T05:00,61,62,47.7,0,0,4.6,8.7 +2022-08-26T06:00,61.1,58,46.2,0,0,4.1,7.6 +2022-08-26T07:00,66.3,50,47.2,0,0,4,8.3 +2022-08-26T08:00,73.2,39,46.8,0,0,1.3,8.7 +2022-08-26T09:00,77.5,31,44.7,0,0,2.1,8.3 +2022-08-26T10:00,78.3,32,45.9,0.004,0,4.3,11 +2022-08-26T11:00,77.4,35,47.6,0,0,3.2,12.3 +2022-08-26T12:00,80.3,32,47.5,0.008,0,4,10.7 +2022-08-26T13:00,83.2,27,45.4,0,0,5.8,15.7 +2022-08-26T14:00,84.1,25,44.2,0,0,6.2,15.4 +2022-08-26T15:00,84.1,24,43.5,0,0,5.8,15 +2022-08-26T16:00,83.8,23,42,0,0,11.1,19.5 +2022-08-26T17:00,76.9,38,49.2,0,0,10.9,19.7 +2022-08-26T18:00,74.3,40,48.6,0,0,11.6,25.5 +2022-08-26T19:00,70.6,50,50.9,0,0,10.3,18.3 +2022-08-26T20:00,68.4,55,51.7,0,0,6.8,17.9 +2022-08-26T21:00,67.2,57,51.4,0,0,5,11 +2022-08-26T22:00,66.6,57,51,0,0,6.4,10.5 +2022-08-26T23:00,65.3,63,52.5,0,0,5,10.5 +2022-08-27T00:00,64.5,68,53.5,0,0,5.4,8.9 +2022-08-27T01:00,62.2,68,51.5,0,0,4.3,9.2 +2022-08-27T02:00,60.9,63,48.1,0,0,4.4,6.7 +2022-08-27T03:00,61,58,46,0,0,5.9,7.4 +2022-08-27T04:00,61,54,44.2,0,0,7.1,8.5 +2022-08-27T05:00,61.7,55,45.3,0,0,4.3,8.9 +2022-08-27T06:00,63.4,51,44.8,0,0,5.2,6.5 +2022-08-27T07:00,68.3,43,45.1,0,0,1.6,6.3 +2022-08-27T08:00,73.5,37,45.7,0,0,5.1,10.5 +2022-08-27T09:00,77.6,30,43.9,0,0,4,11.4 +2022-08-27T10:00,79.8,30,45.2,0,0,0.4,10.5 +2022-08-27T11:00,83.9,20,38.2,0,0,5.9,13.2 +2022-08-27T12:00,85.6,15,31.9,0,0,9.8,19.2 +2022-08-27T13:00,85.8,16,34,0,0,9.9,21 +2022-08-27T14:00,85.6,17,35.3,0,0,6,19.7 +2022-08-27T15:00,86.3,16,35,0,0,3.2,14.3 +2022-08-27T16:00,84.3,19,37.4,0,0,9.2,17.7 +2022-08-27T17:00,81.9,22,39,0,0,9.8,17.7 +2022-08-27T18:00,78.3,27,41.1,0,0,11.4,19.7 +2022-08-27T19:00,74.5,29,39.9,0,0,8.4,18.6 +2022-08-27T20:00,70.3,36,41.8,0,0,5.8,13.6 +2022-08-27T21:00,66.8,43,43.9,0,0,6.7,11.2 +2022-08-27T22:00,64.6,47,43.7,0,0,6,11 +2022-08-27T23:00,62.9,49,43.2,0,0,5.4,9.8 +2022-08-28T00:00,62.4,47,42.1,0,0,5.5,8.7 +2022-08-28T01:00,62.6,45,41.1,0,0,5.6,8.9 +2022-08-28T02:00,62.2,44,40.1,0,0,6,9.6 +2022-08-28T03:00,62,44,39.8,0,0,6.3,10.1 +2022-08-28T04:00,61.7,44,39.8,0,0,6.2,10.5 +2022-08-28T05:00,58.1,56,42.4,0,0,5.9,9.8 +2022-08-28T06:00,60.1,54,43.4,0,0,3.8,7.2 +2022-08-28T07:00,66.7,46,45.1,0,0,5.3,9.8 +2022-08-28T08:00,73.9,35,44.9,0,0,5.2,11 +2022-08-28T09:00,81.2,25,41.8,0,0,8,16.3 +2022-08-28T10:00,84.5,22,41.4,0,0,2.7,15.7 +2022-08-28T11:00,86.5,16,35.7,0,0,3.6,14.3 +2022-08-28T12:00,88.3,16,37,0,0,3.8,12.1 +2022-08-28T13:00,86.7,17,36.6,0,0,7.6,16.6 +2022-08-28T14:00,86.2,17,36.8,0,0,8.8,19.2 +2022-08-28T15:00,85.6,17,35.2,0,0,11.3,19.7 +2022-08-28T16:00,80,25,41.2,0,0,14.9,29.1 +2022-08-28T17:00,77.2,34,46.7,0,0,8.7,24.6 +2022-08-28T18:00,77.4,31,44.2,0,0,4.7,14.5 +2022-08-28T19:00,72.8,41,47.9,0,0,5.8,9.4 +2022-08-28T20:00,70.9,48,50.3,0,0,6,10.1 +2022-08-28T21:00,66.9,57,51.2,0,0,7.1,11.4 +2022-08-28T22:00,65.6,56,49.6,0,0,5.6,11.4 +2022-08-28T23:00,66.5,45,44.3,0,0,6,10.3 +2022-08-29T00:00,63.1,47,42.4,0,0,7.6,9.4 +2022-08-29T01:00,67.7,37,40.4,0,0,2.3,8.9 +2022-08-29T02:00,66.1,42,42.4,0,0,1.5,3.6 +2022-08-29T03:00,64,47,43.3,0,0,2.1,2.5 +2022-08-29T04:00,58.8,55,42.7,0,0,4.8,6.7 +2022-08-29T05:00,57.9,49,38.7,0,0,4.1,6.9 +2022-08-29T06:00,59,51,40.6,0,0,3.5,6.7 +2022-08-29T07:00,62.6,45,41.2,0,0,2,5.6 +2022-08-29T08:00,67.2,41,42.5,0,0,3.1,9.4 +2022-08-29T09:00,71.9,37,44.3,0,0,3.9,11 +2022-08-29T10:00,76.6,33,45.2,0,0,4.3,12.3 +2022-08-29T11:00,80.2,29,45.1,0,0,4.2,12.8 +2022-08-29T12:00,82.9,25,43.6,0,0,3.5,12.5 +2022-08-29T13:00,84.8,23,42.8,0,0,2.6,11.9 +2022-08-29T14:00,85.7,21,41.5,0,0,2.6,10.3 +2022-08-29T15:00,86.3,20,40.5,0,0,3.5,10.5 +2022-08-29T16:00,86.3,19,39.8,0,0,3.7,10.7 +2022-08-29T17:00,84.5,22,41.1,0,0,7,11.4 +2022-08-29T18:00,81.6,25,42.8,0,0,6.3,13 +2022-08-29T19:00,76,32,44.2,0,0,5.3,10.1 +2022-08-29T20:00,70.9,45,48.5,0,0,5.1,8.3 +2022-08-29T21:00,68.6,50,49.3,0,0,2.6,6 +2022-08-29T22:00,67.2,52,48.9,0,0,3.2,5.1 +2022-08-29T23:00,66.7,50,47.6,0,0,4.5,6.7 +2022-08-30T00:00,67.5,47,46.8,0,0,7.8,12.1 +2022-08-30T01:00,65.2,52,47.1,0,0,5.4,13 +2022-08-30T02:00,62.3,59,47.7,0,0,3.7,8.5 +2022-08-30T03:00,61.8,60,47.7,0,0,4.1,6 +2022-08-30T04:00,60.8,61,47.1,0,0,4.5,6.3 +2022-08-30T05:00,61.8,59,47.5,0,0,4.1,6.3 +2022-08-30T06:00,59.8,66,48.5,0,0,4.2,5.8 +2022-08-30T07:00,65.3,50,46,0,0,2.1,6.7 +2022-08-30T08:00,69.4,44,46.7,0,0,1.4,6.7 +2022-08-30T09:00,73.6,40,47.8,0,0,3.2,10.3 +2022-08-30T10:00,78,35,48.5,0,0,4.5,12.8 +2022-08-30T11:00,82,31,48.7,0,0,3.3,13 +2022-08-30T12:00,85.4,28,48.3,0,0,2.3,11.6 +2022-08-30T13:00,88.1,22,44.6,0,0,3,11 +2022-08-30T14:00,90.1,17,40,0,0,3.8,11.4 +2022-08-30T15:00,90.1,17,38.9,0,0,6.6,14.3 +2022-08-30T16:00,89.6,17,39.2,0,0,6.5,14.8 +2022-08-30T17:00,88.6,18,40,0,0,6.8,13.4 +2022-08-30T18:00,83.9,29,48.6,0,0,3.2,12.8 +2022-08-30T19:00,77.5,34,47.1,0,0,4.8,4.9 +2022-08-30T20:00,75.7,35,46.3,0,0,7.5,11.6 +2022-08-30T21:00,72.6,41,47.4,0,0,7.2,11.9 +2022-08-30T22:00,70.2,45,47.9,0,0,8,12.3 +2022-08-30T23:00,68.9,46,47.1,0,0,8.5,13.9 +2022-08-31T00:00,68.8,43,45.7,0,0,8.7,14.5 +2022-08-31T01:00,67.9,44,45.2,0,0,7.7,14.3 +2022-08-31T02:00,65.5,48,45.1,0,0,5.7,12.3 +2022-08-31T03:00,63.5,51,45.2,0,0,4.6,8.9 +2022-08-31T04:00,61.2,56,45.3,0,0,3.8,7.2 +2022-08-31T05:00,61.3,54,44.3,0,0,3.5,5.6 +2022-08-31T06:00,61.8,52,44.1,0,0,2,5.4 +2022-08-31T07:00,66.6,41,42,0,0,3.1,7.4 +2022-08-31T08:00,71.9,35,42.4,0,0,2.7,8.5 +2022-08-31T09:00,77.5,28,42.1,0,0,5.1,12.3 +2022-08-31T10:00,81.9,27,44.2,0,0,7.9,16.8 +2022-08-31T11:00,84.8,22,41.4,0,0,9.1,19.5 +2022-08-31T12:00,87.3,17,37.3,0,0,6.1,19.5 +2022-08-31T13:00,89.2,14,33.9,0,0,5.2,15.4 +2022-08-31T14:00,90,12,30,0,0,8.1,17.9 +2022-08-31T15:00,90.6,12,30,0,0,8.8,17.7 +2022-08-31T16:00,90.5,12,29.9,0,0,9.5,18.8 +2022-08-31T17:00,81.7,23,40.1,0,0,8.1,29.8 +2022-08-31T18:00,79.5,26,41.7,0,0,6,13.6 +2022-08-31T19:00,74.8,32,43.1,0,0,4.6,10.1 +2022-08-31T20:00,73,35,43.5,0,0,5,8.1 +2022-08-31T21:00,70.3,36,42.3,0,0,4.2,8.3 +2022-08-31T22:00,67.9,39,42.4,0,0,5.6,8.9 +2022-08-31T23:00,65.2,45,43.2,0,0,4.3,9.2 +2022-09-01T00:00,63.1,49,43.6,0,0,4.2,6.7 +2022-09-01T01:00,61.9,51,43.7,0,0,3.7,5.6 +2022-09-01T02:00,60.5,53,43.3,0,0,4.6,5.8 +2022-09-01T03:00,58.9,55,42.8,0,0,4.6,6 +2022-09-01T04:00,58.1,57,43.1,0,0,4.4,5.8 +2022-09-01T05:00,56.5,56,41.2,0,0,3.7,5.1 +2022-09-01T06:00,57.3,54,40.6,0,0,2.9,5.6 +2022-09-01T07:00,63.1,44,40.9,0,0,1.8,6.5 +2022-09-01T08:00,70.4,37,42.6,0,0,2,7.6 +2022-09-01T09:00,77.2,27,40.5,0,0,3,9.8 +2022-09-01T10:00,82.8,20,37.1,0,0,2.9,10.5 +2022-09-01T11:00,86.9,16,34.6,0,0,3,11.4 +2022-09-01T12:00,89.2,13,31.6,0,0,3.3,11.4 +2022-09-01T13:00,90.8,12,30.5,0,0,6.3,14.8 +2022-09-01T14:00,91,12,30.4,0,0,9.4,19.2 +2022-09-01T15:00,90.6,12,30.5,0,0,10.5,20.6 +2022-09-01T16:00,89.6,12,29.8,0,0,8.5,20.4 +2022-09-01T17:00,90.3,12,30,0,0,4.9,16.6 +2022-09-01T18:00,85.6,15,33.2,0,0,5,8.7 +2022-09-01T19:00,79.3,20,34.6,0,0,9.1,14.1 +2022-09-01T20:00,76.2,23,36,0,0,7.8,14.5 +2022-09-01T21:00,73.9,26,37,0,0,6.8,13 +2022-09-01T22:00,69.5,32,38.3,0,0,4.3,11 +2022-09-01T23:00,65.8,39,40,0,0,5.8,6.7 +2022-09-02T00:00,64.3,40,39.5,0,0,4.7,6.9 +2022-09-02T01:00,64.4,38,38.2,0,0,5.4,8.9 +2022-09-02T02:00,61.5,41,37.5,0,0,3.7,8.7 +2022-09-02T03:00,59.5,43,37.1,0,0,4.6,5.8 +2022-09-02T04:00,59.7,41,35.8,0,0,3.8,5.8 +2022-09-02T05:00,65.1,33,35.4,0,0,1.6,6.3 +2022-09-02T06:00,60.7,44,38.9,0,0,4.5,5.8 +2022-09-02T07:00,68.6,34,39.5,0,0,6.1,10.3 +2022-09-02T08:00,76.7,26,39.3,0,0,4.6,10.3 +2022-09-02T09:00,82.9,18,35.3,0,0,6.1,13.2 +2022-09-02T10:00,85.3,16,33.4,0,0,11.7,21.7 +2022-09-02T11:00,88,15,33.8,0,0,11.6,23.3 +2022-09-02T12:00,90.2,13,33.5,0,0,10.9,22.8 +2022-09-02T13:00,91.4,13,33,0,0,9.8,21.9 +2022-09-02T14:00,91.9,12,32.4,0,0,9.3,20.4 +2022-09-02T15:00,92.2,12,32,0,0,7.7,18.8 +2022-09-02T16:00,91.4,12,31.8,0,0,7.9,16.1 +2022-09-02T17:00,86.2,20,40.1,0,0,10.9,16.6 +2022-09-02T18:00,83.1,20,38.5,0,0,9.7,19 +2022-09-02T19:00,77.8,23,37.5,0,0,6.9,15.7 +2022-09-02T20:00,77.5,23,36.4,0,0,2.4,8.7 +2022-09-02T21:00,71.1,35,42,0,0,5.1,6.7 +2022-09-02T22:00,69.2,39,43.3,0,0,4.2,6.5 +2022-09-02T23:00,70.6,35,41.3,0,0,2.1,5.1 +2022-09-03T00:00,65.1,40,40.5,0,0,4.8,4.9 +2022-09-03T01:00,64.1,37,37.4,0,0,5.6,7.2 +2022-09-03T02:00,62.3,40,37.5,0,0,3.5,6.7 +2022-09-03T03:00,59.5,49,40.3,0,0,3.2,4.9 +2022-09-03T04:00,57.7,57,42.5,0,0,2.4,4.9 +2022-09-03T05:00,62,53,44.6,0,0,6.6,5.1 +2022-09-03T06:00,60.6,60,46.7,0,0,4,8.1 +2022-09-03T07:00,63,53,45.8,0,0,11,17.9 +2022-09-03T08:00,66.5,51,47.9,0,0,7.1,19.5 +2022-09-03T09:00,70.7,44,48,0,0,2.6,14.8 +2022-09-03T10:00,74.7,38,47.7,0,0,0.9,9.8 +2022-09-03T11:00,79.1,33,47.1,0,0,1.5,9.6 +2022-09-03T12:00,83.6,27,45.8,0,0,2.7,11.4 +2022-09-03T13:00,87.8,21,42.5,0,0,4,14.5 +2022-09-03T14:00,90.3,16,38.2,0,0,3.6,14.1 +2022-09-03T15:00,90.7,14,35.3,0,0,5,12.5 +2022-09-03T16:00,90.7,14,34.1,0,0,7.4,15.2 +2022-09-03T17:00,86.1,20,39.7,0,0,9.3,15.7 +2022-09-03T18:00,83.8,22,41,0,0,9.6,17.9 +2022-09-03T19:00,78.1,28,42.2,0,0,5,15.4 +2022-09-03T20:00,75.7,30,42.3,0,0,9.2,14.5 +2022-09-03T21:00,72.2,36,43.6,0,0,7.7,14.5 +2022-09-03T22:00,69.4,41,44.5,0,0,5.9,12.3 +2022-09-03T23:00,67.7,43,44.6,0,0,6.7,10.5 +2022-09-04T00:00,66.6,45,44.4,0,0,7,11.2 +2022-09-04T01:00,64.7,47,44.2,0,0,5.8,11.2 +2022-09-04T02:00,62.2,51,44.1,0,0,3.1,9.4 +2022-09-04T03:00,60.4,55,44,0,0,4.2,5.4 +2022-09-04T04:00,58.9,57,43.8,0,0,3.3,5.1 +2022-09-04T05:00,57.7,57,42.6,0,0,2.8,4.3 +2022-09-04T06:00,57.4,57,42.3,0,0,1.8,3.8 +2022-09-04T07:00,62.8,47,42.2,0,0,2.2,6.3 +2022-09-04T08:00,68.6,42,44.7,0,0,4.3,10.3 +2022-09-04T09:00,75.5,31,42.4,0,0,4.1,11.9 +2022-09-04T10:00,82,23,40.2,0,0,3.6,11.6 +2022-09-04T11:00,87.1,19,39.9,0,0,3.6,12.1 +2022-09-04T12:00,90.5,14,35.1,0,0,5.1,13.4 +2022-09-04T13:00,92.7,12,32.3,0,0,7.8,17.2 +2022-09-04T14:00,93.3,11,30.6,0,0,6.4,17.2 +2022-09-04T15:00,93.6,10,29.7,0,0,4.5,15 +2022-09-04T16:00,93.1,10,29.4,0,0,4,12.1 +2022-09-04T17:00,92,11,29.7,0,0,3,10.3 +2022-09-04T18:00,86.6,15,33.9,0,0,3.9,7.2 +2022-09-04T19:00,77.8,23,36.5,0,0,5,6.5 +2022-09-04T20:00,73.9,28,38.9,0,0,3.9,6.3 +2022-09-04T21:00,70.3,35,41.2,0,0,2.7,4.9 +2022-09-04T22:00,66.8,44,44,0,0,4.8,7.4 +2022-09-04T23:00,66.2,42,42.6,0,0,4.8,8.3 +2022-09-05T00:00,64.3,42,40.6,0,0,3.4,7.8 +2022-09-05T01:00,62.8,42,39.6,0,0,3.7,5.4 +2022-09-05T02:00,62.8,37,36.3,0,0,3.6,5.6 +2022-09-05T03:00,61,37,34.5,0,0,4.3,5.8 +2022-09-05T04:00,60.7,38,34.8,0,0,4.6,6 +2022-09-05T05:00,69.5,26,32.7,0,0,3.5,4.9 +2022-09-05T06:00,69.5,26,32.7,0,0,2.1,4.5 +2022-09-05T07:00,71.6,26,34.4,0,0,2,3.4 +2022-09-05T08:00,78.4,21,35.2,0,0,1.7,5.8 +2022-09-05T09:00,83.1,18,34.8,0,0,5.2,12.1 +2022-09-05T10:00,87,16,35,0,0,6.8,15.2 +2022-09-05T11:00,90.7,14,35.7,0,0,6.7,15.9 +2022-09-05T12:00,93.3,13,34.8,0,0,6.3,15.9 +2022-09-05T13:00,94.7,12,34.3,0,0,7.4,17.2 +2022-09-05T14:00,95.7,11,32.5,0,0,11,21.5 +2022-09-05T15:00,95.8,10,31.5,0,0,8.9,21.5 +2022-09-05T16:00,95.5,10,31.2,0,0,5.4,17.9 +2022-09-05T17:00,94.4,11,32.5,0,0,4,12.5 +2022-09-05T18:00,88,16,36.4,0,0,4.6,8.5 +2022-09-05T19:00,81.3,21,37.9,0,0,5.9,8.5 +2022-09-05T20:00,78.4,23,37.6,0,0,7.8,11 +2022-09-05T21:00,74.2,28,38.9,0,0,5.8,13.2 +2022-09-05T22:00,70.9,34,40.9,0,0,4.2,9.2 +2022-09-05T23:00,69.4,35,40.7,0,0,4.2,7.2 +2022-09-06T00:00,67.3,38,40.6,0,0,3.5,6.9 +2022-09-06T01:00,65.5,40,40.5,0,0,3.4,5.8 +2022-09-06T02:00,64,42,40.3,0,0,3.7,5.4 +2022-09-06T03:00,62.7,43,39.9,0,0,4,5.4 +2022-09-06T04:00,61.6,44,39.6,0,0,4.7,5.8 +2022-09-06T05:00,61.5,44,39.2,0,0,4.6,5.8 +2022-09-06T06:00,62.1,41,38.1,0,0,4,6.3 +2022-09-06T07:00,68.9,31,37.2,0,0,3.5,7.4 +2022-09-06T08:00,76.9,25,38.5,0,0,0.9,7.4 +2022-09-06T09:00,83.5,19,36.9,0,0,3.7,10.3 +2022-09-06T10:00,88.6,15,35.6,0,0,5,13 +2022-09-06T11:00,91.9,12,32.9,0,0,6.8,16.1 +2022-09-06T12:00,94.3,11,32.1,0,0,5,16.1 +2022-09-06T13:00,95.8,10,31.3,0,0,2.7,13.9 +2022-09-06T14:00,96.6,9,29,0,0,2.1,10.7 +2022-09-06T15:00,97,9,27.6,0,0,2.1,9.8 +2022-09-06T16:00,97.3,8,27.5,0,0,6.3,13.2 +2022-09-06T17:00,95.4,8,26.1,0,0,8.6,13.9 +2022-09-06T18:00,90.2,11,28,0,0,7.8,15.4 +2022-09-06T19:00,83.1,15,30.6,0,0,5,12.1 +2022-09-06T20:00,79.1,21,36.1,0,0,6.1,8.7 +2022-09-06T21:00,75.3,24,36.3,0,0,4,7.2 +2022-09-06T22:00,71.6,30,38.8,0,0,4.7,7.8 +2022-09-06T23:00,69,35,39.9,0,0,3.6,7.6 +2022-09-07T00:00,68.9,33,38.8,0,0,4.9,7.2 +2022-09-07T01:00,69.1,32,37.9,0,0,3.5,8.7 +2022-09-07T02:00,65.1,39,39.4,0,0,3.5,5.8 +2022-09-07T03:00,63.1,44,40.8,0,0,3.8,6.5 +2022-09-07T04:00,61.2,48,41.5,0,0,3.5,6.5 +2022-09-07T05:00,59.7,53,42.6,0,0,4.9,5.8 +2022-09-07T06:00,60.6,50,42.1,0,0,4.8,7.4 +2022-09-07T07:00,67.9,38,41.3,0,0,4.5,8.9 +2022-09-07T08:00,76.8,28,41.3,0,0,2.7,8.3 +2022-09-07T09:00,85.6,17,36.1,0,0,4.4,11.2 +2022-09-07T10:00,90.1,14,34.9,0,0,4.5,12.1 +2022-09-07T11:00,92.8,13,34.5,0,0,4.5,12.8 +2022-09-07T12:00,94.7,12,34,0,0,3.7,13 +2022-09-07T13:00,96.1,11,32.4,0,0,3,12.3 +2022-09-07T14:00,97.3,10,30.6,0,0,4.1,12.1 +2022-09-07T15:00,97.3,9,29.7,0,0,6.1,14.3 +2022-09-07T16:00,96.9,9,28.7,0,0,7.1,14.8 +2022-09-07T17:00,94.5,11,32.3,0,0,6.2,14.8 +2022-09-07T18:00,88.9,15,35.4,0,0,4.9,11.9 +2022-09-07T19:00,84.6,12,26.7,0,0,12,19 +2022-09-07T20:00,81.4,14,28.2,0,0,12.6,20.4 +2022-09-07T21:00,79.1,16,29.3,0,0,11.5,20.6 +2022-09-07T22:00,76.3,19,30.9,0,0,8.6,18.3 +2022-09-07T23:00,73.4,21,31.3,0,0,7.2,13.9 +2022-09-08T00:00,73.1,21,30.7,0,0,9.1,14.3 +2022-09-08T01:00,71.9,22,31,0,0,7.8,14.5 +2022-09-08T02:00,68.9,25,32.1,0,0,5.7,12.5 +2022-09-08T03:00,66.2,28,32.5,0,0,4.7,8.9 +2022-09-08T04:00,64.7,30,32.3,0,0,4.5,6.9 +2022-09-08T05:00,62.8,33,33.5,0,0,5.9,7.8 +2022-09-08T06:00,62,37,35.1,0,0,5.7,7.8 +2022-09-08T07:00,69.9,27,34.2,0,0,4.5,8.3 +2022-09-08T08:00,79,21,35.2,0,0,4.1,9.4 +2022-09-08T09:00,88.1,14,32.9,0,0,2.2,10.3 +2022-09-08T10:00,93.7,10,29.3,0,0,4.1,10.7 +2022-09-08T11:00,95.5,8,24.9,0,0,6.8,15.7 +2022-09-08T12:00,96.3,8,25.2,0,0,6.9,16.3 +2022-09-08T13:00,96.4,8,25.1,0,0,4.8,15.9 +2022-09-08T14:00,97.5,8,25.2,0,0,5.5,13.9 +2022-09-08T15:00,96.9,8,25.1,0,0,2.9,13.9 +2022-09-08T16:00,95.5,8,26,0,0,6.4,11.2 +2022-09-08T17:00,88.8,15,35.2,0,0,13.1,31.3 +2022-09-08T18:00,85.1,19,38.4,0,0,5.5,21.3 +2022-09-08T19:00,81.1,22,38.5,0,0,9.5,15.7 +2022-09-08T20:00,77.3,27,40.9,0,0,2.5,15.4 +2022-09-08T21:00,71.9,36,43.2,0,0,3.3,5.1 +2022-09-08T22:00,70.7,40,45.3,0,0,4.3,10.5 +2022-09-08T23:00,69.8,41,44.9,0,0,2.3,6.5 +2022-09-09T00:00,69.7,34,40.5,0,0,13.4,19.9 +2022-09-09T01:00,67.1,44,44.6,0,0,7.3,22.6 +2022-09-09T02:00,64.5,49,45,0,0,3.2,11.6 +2022-09-09T03:00,63,53,45.7,0,0,3.5,5.4 +2022-09-09T04:00,62.5,53,45.1,0,0,13,19.9 +2022-09-09T05:00,56.6,59,42.5,0,0,8.7,21.9 +2022-09-09T06:00,55.9,63,43.4,0,0,7.7,13.9 +2022-09-09T07:00,56.8,62,44.1,0,0,9.6,17.4 +2022-09-09T08:00,57.5,59,43.2,0,0,6.2,17.4 +2022-09-09T09:00,57.9,57,42.8,0,0,2.7,13.2 +2022-09-09T10:00,60.1,53,42.8,0,0,3.5,11 +2022-09-09T11:00,63.4,46,42.5,0,0,4.3,13 +2022-09-09T12:00,65.8,42,42.1,0,0,5.6,14.8 +2022-09-09T13:00,69.3,37,41.9,0,0,6.9,16.8 +2022-09-09T14:00,72.2,34,42,0,0,6.9,17.2 +2022-09-09T15:00,74.9,31,42.1,0,0,5.7,17 +2022-09-09T16:00,75.7,30,41.9,0,0,5,14.3 +2022-09-09T17:00,57.9,55,41.6,0,0,9.8,14.3 +2022-09-09T18:00,57.1,57,41.8,0,0,9.2,19 +2022-09-09T19:00,54.9,70,45.4,0.067,0,8.9,16.8 +2022-09-09T20:00,53.4,78,46.9,0.031,0,10.6,17.9 +2022-09-09T21:00,53.3,79,47,0.016,0,9,17.7 +2022-09-09T22:00,53.2,79,46.9,0.008,0,8.4,15.4 +2022-09-09T23:00,52.9,81,47.1,0.008,0,7.9,14.3 +2022-09-10T00:00,52.6,82,47.2,0.012,0,8.4,13.6 +2022-09-10T01:00,52.1,88,48.7,0.02,0,6.5,13.9 +2022-09-10T02:00,52,89,48.8,0.016,0,6.1,11.2 +2022-09-10T03:00,51.9,90,49.1,0.024,0,7.4,12.8 +2022-09-10T04:00,52.1,90,49.1,0.016,0,5.6,12.5 +2022-09-10T05:00,48.7,92,46.6,0.02,0,8.9,9.8 +2022-09-10T06:00,48.1,88,44.9,0.012,0,8.5,15.4 +2022-09-10T07:00,48.2,86,44.3,0,0,7.4,14.5 +2022-09-10T08:00,49.1,81,43.4,0,0,5.6,13 +2022-09-10T09:00,50.2,76,43,0,0,4.2,11 +2022-09-10T10:00,51.4,72,42.8,0,0,3.7,9.8 +2022-09-10T11:00,52.7,69,42.9,0,0,3.8,10.3 +2022-09-10T12:00,52.8,69,42.9,0,0,4.4,11 +2022-09-10T13:00,54.4,66,43.2,0,0,4.5,11.9 +2022-09-10T14:00,55,64,43,0.004,0,5.4,12.3 +2022-09-10T15:00,54.2,66,43,0.004,0,6.1,12.8 +2022-09-10T16:00,54.6,64,42.8,0.004,0,4.7,12.5 +2022-09-10T17:00,50.9,79,44.5,0,0,4.3,10.5 +2022-09-10T18:00,50.9,79,44.6,0,0,3.5,8.9 +2022-09-10T19:00,50.7,80,44.7,0,0,2.2,7.6 +2022-09-10T20:00,50.7,79,44.3,0,0,4.3,8.3 +2022-09-10T21:00,49.4,82,44.2,0,0,1.6,8.5 +2022-09-10T22:00,48.7,86,44.6,0,0,2,3.1 +2022-09-10T23:00,46.4,94,44.8,0,0,3.6,4.7 +2022-09-11T00:00,45.9,94,44.3,0,0,3.6,4.9 +2022-09-11T01:00,45.5,95,44.2,0,0,3.1,4.9 +2022-09-11T02:00,44.7,97,44,0,0,3.4,4.9 +2022-09-11T03:00,43.7,99,43.5,0,0,3.4,5.1 +2022-09-11T04:00,43.9,100,43.9,0,0,1.2,4.3 +2022-09-11T05:00,45,96,43.9,0,0,1.1,2 +2022-09-11T06:00,44.8,98,44.2,0,0,2.4,6 +2022-09-11T07:00,45.6,95,44.2,0,0,3.4,8.3 +2022-09-11T08:00,48.9,82,43.7,0,0,2.3,9.2 +2022-09-11T09:00,54.3,67,43.5,0,0,2.6,10.1 +2022-09-11T10:00,61,47,40.6,0,0,4,12.5 +2022-09-11T11:00,66.7,35,38.1,0,0,4.5,13.4 +2022-09-11T12:00,71.2,29,37.4,0,0,4.9,13.9 +2022-09-11T13:00,74.2,25,36.6,0,0,4,13.9 +2022-09-11T14:00,76.1,23,35.9,0,0,3.7,12.8 +2022-09-11T15:00,76.7,21,34,0,0,3.3,11.6 +2022-09-11T16:00,76.5,20,32.5,0,0,2.7,10.5 +2022-09-11T17:00,73.7,24,34.9,0,0,2.7,8.7 +2022-09-11T18:00,67.5,34,38.3,0,0,4.1,6.5 +2022-09-11T19:00,61.9,43,39.4,0,0,4,6.9 +2022-09-11T20:00,57.3,56,41.8,0,0,3,6.5 +2022-09-11T21:00,54.1,67,43.3,0,0,3.4,5.6 +2022-09-11T22:00,51.7,75,44.2,0,0,3.2,5.1 +2022-09-11T23:00,50,82,44.7,0,0,3.2,5.1 +2022-09-12T00:00,48.7,84,44,0,0,3.2,4.9 +2022-09-12T01:00,47.4,81,41.8,0,0,3.5,4.9 +2022-09-12T02:00,46.9,73,38.5,0,0,4.3,5.6 +2022-09-12T03:00,46.7,62,34.4,0,0,4.8,6.3 +2022-09-12T04:00,46.1,55,30.7,0,0,5.6,6.9 +2022-09-12T05:00,45.5,47,26.4,0,0,4.8,7.2 +2022-09-12T06:00,45.5,46,25.7,0,0,4.9,7.2 +2022-09-12T07:00,53.1,37,27.5,0,0,5.1,8.7 +2022-09-12T08:00,62.7,36,35.1,0,0,2.8,8.7 +2022-09-12T09:00,72,27,36,0,0,2.9,9.4 +2022-09-12T10:00,78.3,17,30.3,0,0,2,9.2 +2022-09-12T11:00,82,13,26.1,0,0,3.6,11.2 +2022-09-12T12:00,83.8,9,18.6,0,0,3.8,11.6 +2022-09-12T13:00,85.3,8,16.3,0,0,4.1,12.1 +2022-09-12T14:00,86.2,7,16.1,0,0,4.7,12.1 +2022-09-12T15:00,86.1,7,15.7,0,0,6.8,14.1 +2022-09-12T16:00,85.2,8,16.3,0,0,6.7,14.3 +2022-09-12T17:00,82.8,12,25.7,0,0,3.9,12.8 +2022-09-12T18:00,75.4,20,31.8,0,0,4.3,6.5 +2022-09-12T19:00,73.7,20,30.1,0,0,2.8,5.4 +2022-09-12T20:00,65.2,29,32.5,0,0,4,4 +2022-09-12T21:00,59.9,38,34.2,0,0,4.8,7.6 +2022-09-12T22:00,54.4,51,36.7,0,0,2.7,7.6 +2022-09-12T23:00,51.9,60,38.6,0,0,3.4,4.5 +2022-09-13T00:00,50.4,66,39.6,0,0,1.4,4.3 +2022-09-13T01:00,49.4,71,40.2,0,0,1.9,2.9 +2022-09-13T02:00,49,69,39.2,0,0,2.4,3.8 +2022-09-13T03:00,48.1,68,38,0,0,2.4,4.3 +2022-09-13T04:00,46.7,70,37.5,0,0,2.1,4 +2022-09-13T05:00,45,77,38.2,0,0,3.7,6.5 +2022-09-13T06:00,44.5,76,37.4,0,0,4.8,6.7 +2022-09-13T07:00,52.1,60,38.5,0,0,4.3,8.9 +2022-09-13T08:00,63.1,43,40,0,0,3,8.7 +2022-09-13T09:00,70.2,24,31.8,0,0,2.1,8.9 +2022-09-13T10:00,74.5,18,28.9,0,0,2.9,9.8 +2022-09-13T11:00,79.1,17,30.4,0,0,3.1,10.7 +2022-09-13T12:00,83,15,31.3,0,0,4.9,12.3 +2022-09-13T13:00,87.4,11,26.6,0,0,7.2,16.1 +2022-09-13T14:00,90.1,8,20.1,0,0,6.3,15.7 +2022-09-13T15:00,88.3,9,22.5,0,0,13.6,23.7 +2022-09-13T16:00,87.3,9,22.7,0,0,13.7,23.7 +2022-09-13T17:00,83.4,13,27.3,0,0,13.2,25.1 +2022-09-13T18:00,79.4,16,29.9,0,0,11.4,21.7 +2022-09-13T19:00,75.5,19,30.1,0,0,9.9,18.1 +2022-09-13T20:00,70.3,24,31.5,0,0,7.6,15.9 +2022-09-13T21:00,67.6,29,34.3,0,0,5,12.3 +2022-09-13T22:00,64.6,35,36.3,0,0,4.5,7.8 +2022-09-13T23:00,64,40,38.9,0,0,5,8.1 +2022-09-14T00:00,63.3,43,40.6,0,0,4.7,8.1 +2022-09-14T01:00,64.1,42,40.8,0,0,3.7,7.8 +2022-09-14T02:00,63.6,44,41.2,0,0,3.8,5.8 +2022-09-14T03:00,63.4,46,42.4,0,0,4.3,7.2 +2022-09-14T04:00,62.5,47,42.2,0,0,2.8,6.3 +2022-09-14T05:00,61.8,49,42.2,0,0,3.5,5.6 +2022-09-14T06:00,58.8,52,41.5,0,0,4.3,6.7 +2022-09-14T07:00,63.4,45,41.5,0,0,5.7,9.8 +2022-09-14T08:00,69.6,39,43.4,0,0,3.1,9.6 +2022-09-14T09:00,74.8,31,41.8,0,0,2.2,8.5 +2022-09-14T10:00,75.1,27,38.9,0,0,5.9,12.3 +2022-09-14T11:00,75,27,38.8,0,0,4.3,12.8 +2022-09-14T12:00,78.6,24,39,0,0,3.4,11 +2022-09-14T13:00,81.1,23,39.7,0,0,3.7,11.9 +2022-09-14T14:00,80.6,25,41.5,0,0,8.5,16.6 +2022-09-14T15:00,74.8,36,45.8,0.016,0,14.9,25.7 +2022-09-14T16:00,68.4,57,52.5,0.035,0,12.3,26.8 +2022-09-14T17:00,62.8,87,58.7,0.012,0,7.2,20.8 +2022-09-14T18:00,63.1,94,61.2,0.047,0,5.3,13.9 +2022-09-14T19:00,62.7,91,59.9,0.008,0,2.9,9.4 +2022-09-14T20:00,61.3,90,58.2,0,0,3.3,5.4 +2022-09-14T21:00,60.4,85,55.9,0,0,4,6.9 +2022-09-14T22:00,57.7,85,53.3,0,0,4,6.9 +2022-09-14T23:00,55.9,82,50.5,0,0,3.7,6.7 +2022-09-15T00:00,55.9,74,47.8,0,0,4.1,6.3 +2022-09-15T01:00,55.2,71,46,0,0,4.5,6.7 +2022-09-15T02:00,55.3,69,45.1,0,0,4.8,6.7 +2022-09-15T03:00,54.3,71,45,0,0,5.9,6.9 +2022-09-15T04:00,54.5,69,44.4,0,0,4.7,6.9 +2022-09-15T05:00,56.2,74,48,0,0,0.8,5.8 +2022-09-15T06:00,53.2,81,47.4,0,0,2.9,3.1 +2022-09-15T07:00,58,69,47.8,0,0,3.8,7.6 +2022-09-15T08:00,61.9,58,47,0,0,1.1,7.6 +2022-09-15T09:00,65,57,49.5,0,0,2.1,8.1 +2022-09-15T10:00,69.2,51,50.4,0,0,3.2,10.7 +2022-09-15T11:00,72.4,45,50.1,0,0,4.1,13.2 +2022-09-15T12:00,73.8,43,49.9,0.004,0,5.1,14.1 +2022-09-15T13:00,71.1,49,50.7,0.043,0,4.5,14.1 +2022-09-15T14:00,68.4,55,51.5,0.071,0,1.8,16.6 +2022-09-15T15:00,66,61,52.2,0,0,6.8,18.3 +2022-09-15T16:00,65.8,60,51.4,0,0,6.4,14.3 +2022-09-15T17:00,71.5,37,43.8,0,0,4.4,13.6 +2022-09-15T18:00,66,52,47.9,0,0,4,10.3 +2022-09-15T19:00,63.5,59,49,0,0,4.6,8.3 +2022-09-15T20:00,60.6,68,50.1,0,0,4.3,7.4 +2022-09-15T21:00,58.6,74,50.3,0,0,5.1,9.2 +2022-09-15T22:00,56.1,80,50.1,0,0,3.4,7.8 +2022-09-15T23:00,56.7,72,47.7,0,0,4.4,6.7 +2022-09-16T00:00,54.6,70,45,0,0,4.3,8.3 +2022-09-16T01:00,52.4,73,44.1,0,0,1.7,6 +2022-09-16T02:00,51.4,77,44.3,0,0,2.7,4.5 +2022-09-16T03:00,50.2,86,46,0,0,3.2,4.9 +2022-09-16T04:00,49.7,87,46.1,0,0,3,5.1 +2022-09-16T05:00,49.3,93,47.3,0,0,2.7,5.1 +2022-09-16T06:00,48.9,93,46.9,0,0,2.5,4.5 +2022-09-16T07:00,53.7,79,47.2,0,0,4.3,8.3 +2022-09-16T08:00,60.3,63,47.5,0,0,3.6,9.6 +2022-09-16T09:00,67,48,46.4,0,0,2.5,9.8 +2022-09-16T10:00,72.6,35,43.7,0,0,2.4,9.6 +2022-09-16T11:00,77,24,37.2,0,0,1.9,10.3 +2022-09-16T12:00,78.7,19,32.8,0,0,2.7,10.1 +2022-09-16T13:00,79.8,18,33.1,0,0,4.3,11.4 +2022-09-16T14:00,81.7,17,32.9,0,0,2.9,12.5 +2022-09-16T15:00,79.2,22,37.3,0,0,10.3,19.7 +2022-09-16T16:00,79.6,20,34.8,0,0,8.2,19.2 +2022-09-16T17:00,73,29,39.2,0,0,9.2,16.1 +2022-09-16T18:00,65.2,52,46.9,0,0,8,18.6 +2022-09-16T19:00,61.8,68,51.2,0,0,3.9,12.5 +2022-09-16T20:00,60.7,64,48.3,0,0,5.4,9.4 +2022-09-16T21:00,58.2,68,47.8,0,0,3.5,8.7 +2022-09-16T22:00,56.2,75,48.3,0,0,3.1,5.8 +2022-09-16T23:00,55,74,47,0,0,2.8,4.3 +2022-09-17T00:00,55.1,72,46.1,0,0,1.5,4 +2022-09-17T01:00,53.2,76,45.7,0,0,3.7,5.1 +2022-09-17T02:00,51.5,77,44.5,0,0,3.6,5.8 +2022-09-17T03:00,49.5,82,44.1,0,0,3.3,5.8 +2022-09-17T04:00,48,87,44.4,0,0,4.5,6.7 +2022-09-17T05:00,49,85,44.8,0,0,2.9,6.9 +2022-09-17T06:00,51.4,76,44,0,0,4.6,9.2 +2022-09-17T07:00,55.9,69,45.7,0,0,3.9,7.8 +2022-09-17T08:00,62.7,54,46,0,0,2.2,8.1 +2022-09-17T09:00,69.4,37,42.2,0,0,6.8,14.1 +2022-09-17T10:00,73.2,32,41.7,0,0,7.8,16.6 +2022-09-17T11:00,76.1,29,41.5,0,0,8.4,17.7 +2022-09-17T12:00,78.8,26,41.4,0,0,6,18.3 +2022-09-17T13:00,82.9,22,40.4,0,0,4.7,16.3 +2022-09-17T14:00,77.5,27,40.4,0.004,0,4.1,13.9 +2022-09-17T15:00,78.8,26,40.9,0,0,7.3,15.7 +2022-09-17T16:00,76.9,28,41.7,0,0,8.3,15.9 +2022-09-17T17:00,76.2,31,43.6,0,0,3.3,20.4 +2022-09-17T18:00,70.8,42,46.3,0,0,7.4,13.2 +2022-09-17T19:00,66.2,48,46.1,0,0,6.3,13.9 +2022-09-17T20:00,63.9,55,47.6,0,0,8.5,15 +2022-09-17T21:00,61.3,60,47.3,0,0,4.9,13.6 +2022-09-17T22:00,59.6,61,46.3,0,0,3.8,8.1 +2022-09-17T23:00,57.8,65,46.2,0,0,4.2,6.5 +2022-09-18T00:00,56,68,45.5,0,0,4.1,6.5 +2022-09-18T01:00,53.4,76,46.1,0,0,1.8,6 +2022-09-18T02:00,51.5,84,46.9,0,0,2.2,4.3 +2022-09-18T03:00,50.5,87,46.9,0,0,3.2,5.1 +2022-09-18T04:00,49,89,45.9,0,0,1.6,5.1 +2022-09-18T05:00,49.9,73,41.7,0,0,2.9,3.6 +2022-09-18T06:00,49.4,70,40.1,0,0,3,5.1 +2022-09-18T07:00,54.1,61,41,0,0,3.8,8.3 +2022-09-18T08:00,60.2,49,40.7,0,0,1.6,8.1 +2022-09-18T09:00,64,47,43.5,0,0,2.9,9.8 +2022-09-18T10:00,68.8,41,43.9,0,0,3.4,11.4 +2022-09-18T11:00,74,32,42.3,0,0,3,11.4 +2022-09-18T12:00,78.8,25,39.9,0,0,4,12.1 +2022-09-18T13:00,82.9,17,33.6,0,0,6.1,14.3 +2022-09-18T14:00,86.6,13,29.4,0,0,9.1,17.9 +2022-09-18T15:00,88.6,11,27.9,0,0,7.4,17.9 +2022-09-18T16:00,88.3,12,28.3,0,0,5.6,15 +2022-09-18T17:00,82,22,40,0,0,15,11 +2022-09-18T18:00,77.3,25,38.8,0,0,11.1,26.4 +2022-09-18T19:00,71.4,36,43,0,0,8.3,17 +2022-09-18T20:00,68.3,43,45,0,0,5.9,14.1 +2022-09-18T21:00,66.5,44,43.6,0,0,6.5,10.7 +2022-09-18T22:00,62.6,50,43.5,0,0,5.8,11 +2022-09-18T23:00,60.4,53,43.3,0,0,4.3,7.4 +2022-09-19T00:00,58.6,57,43.5,0,0,4.8,7.4 +2022-09-19T01:00,57.5,58,43,0,0,5.1,8.7 +2022-09-19T02:00,55.4,61,42.4,0,0,4.3,8.3 +2022-09-19T03:00,56.4,58,42,0,0,3,6.3 +2022-09-19T04:00,53.1,61,39.9,0,0,3.4,4.5 +2022-09-19T05:00,51.4,67,40.8,0,0,3.8,4.9 +2022-09-19T06:00,51.4,67,40.8,0,0,3.8,6.5 +2022-09-19T07:00,57.5,52,39.9,0,0,5.3,9.2 +2022-09-19T08:00,66.2,40,41.3,0,0,3,9.4 +2022-09-19T09:00,77,28,41.6,0,0,1.3,8.5 +2022-09-19T10:00,83.4,15,31.6,0,0,1.3,8.1 +2022-09-19T11:00,85.3,15,32.1,0,0,2.3,9.8 +2022-09-19T12:00,87.2,14,31.9,0,0,5,13.2 +2022-09-19T13:00,87.8,13,31.6,0,0,5.4,13.6 +2022-09-19T14:00,87.7,13,31,0,0,3.6,13.6 +2022-09-19T15:00,88.3,12,29.8,0,0,1.1,11.2 +2022-09-19T16:00,87.8,12,28.9,0,0,1.5,7.2 +2022-09-19T17:00,83.8,16,32.9,0,0,9.4,6 +2022-09-19T18:00,77.9,19,32.8,0,0,5,14.8 +2022-09-19T19:00,74.1,24,35,0,0,5.3,7.4 +2022-09-19T20:00,72,27,35.7,0,0,3.7,6.5 +2022-09-19T21:00,66.6,36,38.5,0,0,6.4,9.6 +2022-09-19T22:00,63.7,41,39.5,0,0,6.1,10.3 +2022-09-19T23:00,61.3,42,37.9,0,0,4.2,9.8 +2022-09-20T00:00,59,45,37.4,0,0,4.8,6.3 +2022-09-20T01:00,58,46,37.1,0,0,3.8,6.3 +2022-09-20T02:00,56.1,49,37,0,0,4.7,6 +2022-09-20T03:00,54.5,51,36.8,0,0,5.2,6.5 +2022-09-20T04:00,54.3,49,35.6,0,0,4.2,6.5 +2022-09-20T05:00,53.7,51,36.1,0,0,5.8,6.3 +2022-09-20T06:00,53.6,50,35.6,0,0,4.9,7.4 +2022-09-20T07:00,59.2,42,36.2,0,0,5.1,8.9 +2022-09-20T08:00,67.4,36,39.2,0,0,2.5,8.7 +2022-09-20T09:00,76.8,26,38.9,0,0,2.4,8.5 +2022-09-20T10:00,83.5,15,31,0,0,4,11 +2022-09-20T11:00,86.9,11,26.5,0,0,5.6,13.6 +2022-09-20T12:00,88.7,10,26.1,0,0,5.7,14.3 +2022-09-20T13:00,90.1,10,25.3,0,0,6.2,14.8 +2022-09-20T14:00,91.1,9,24.7,0,0,6.8,15.9 +2022-09-20T15:00,92.8,8,23.9,0,0,6,15.2 +2022-09-20T16:00,85.4,14,30.5,0,0,19.6,30.6 +2022-09-20T17:00,86.4,13,28.9,0,0,6,31.1 +2022-09-20T18:00,79.6,18,32.1,0,0,11.7,18.3 +2022-09-20T19:00,77.7,19,32.1,0,0,14.2,21.9 +2022-09-20T20:00,76.4,23,35.8,0,0,10.4,23.5 +2022-09-20T21:00,74.6,24,35.2,0,0,10,17.2 +2022-09-20T22:00,72.7,25,35.2,0,0,9.8,16.6 +2022-09-20T23:00,71,29,37.2,0,0,9.5,16.3 +2022-09-21T00:00,67.8,37,40.7,0,0,7.4,15.9 +2022-09-21T01:00,67.7,40,42.5,0,0,8,14.1 +2022-09-21T02:00,65.3,45,43.5,0,0,8.6,14.1 +2022-09-21T03:00,65.9,46,44.4,0,0,9.2,15.4 +2022-09-21T04:00,64.7,49,45.1,0,0,7.3,14.8 +2022-09-21T05:00,61.6,59,47,0,0,8.7,11.9 +2022-09-21T06:00,60.3,65,48.4,0,0,8.3,14.5 +2022-09-21T07:00,61.4,62,48.2,0,0,7.9,14.8 +2022-09-21T08:00,61.6,62,48.3,0,0,8.4,15.2 +2022-09-21T09:00,61.3,64,48.9,0.004,0,7.8,15.4 +2022-09-21T10:00,60.6,67,49.7,0.008,0,6.9,14.3 +2022-09-21T11:00,60.6,70,50.7,0.016,0,7.6,15.2 +2022-09-21T12:00,59.9,70,50.2,0.004,0,6.7,15.2 +2022-09-21T13:00,61.3,65,49.4,0,0,6.5,14.3 +2022-09-21T14:00,61.5,64,49.4,0,0,6.3,13.6 +2022-09-21T15:00,61.1,65,49.1,0,0,7.7,14.8 +2022-09-21T16:00,59.7,69,49.4,0.012,0,7.3,14.8 +2022-09-21T17:00,53.8,90,50.9,0.012,0,5.6,14.3 +2022-09-21T18:00,53,92,50.8,0.039,0,7.4,13.2 +2022-09-21T19:00,52.8,88,49.3,0.008,0,7.3,13 +2022-09-21T20:00,52.2,87,48.5,0.004,0,7.9,13.4 +2022-09-21T21:00,51.6,87,47.8,0.004,0,5.5,13.6 +2022-09-21T22:00,51.4,87,47.8,0.02,0,4.1,9.4 +2022-09-21T23:00,50.9,92,48.7,0.016,0,4.6,8.5 +2022-09-22T00:00,50.9,91,48.5,0.012,0,4.4,8.3 +2022-09-22T01:00,51.1,91,48.5,0.012,0,3.6,7.8 +2022-09-22T02:00,51.4,91,48.7,0.012,0,3.6,6.5 +2022-09-22T03:00,51.3,91,48.7,0.008,0,2.4,6.3 +2022-09-22T04:00,51.1,90,48.1,0.004,0,4.1,7.4 +2022-09-22T05:00,49.3,91,46.7,0.004,0,1.3,7.2 +2022-09-22T06:00,49.6,91,47.2,0,0,3.3,6.3 +2022-09-22T07:00,50.5,89,47.3,0,0,4.6,8.7 +2022-09-22T08:00,51.3,87,47.4,0,0,2.5,8.9 +2022-09-22T09:00,51.6,82,46.4,0.004,0,1.3,6.9 +2022-09-22T10:00,52.2,81,46.5,0.004,0,1,6.3 +2022-09-22T11:00,52.9,80,46.8,0.008,0,0.3,6.3 +2022-09-22T12:00,54.9,77,47.8,0.016,0,0.9,6.9 +2022-09-22T13:00,56.4,77,49.2,0.008,0,4.9,9.8 +2022-09-22T14:00,62.9,65,50.8,0,0,4.3,15 +2022-09-22T15:00,65.5,60,51.4,0,0,5.9,12.5 +2022-09-22T16:00,66.3,59,51.4,0,0,9.4,17 +2022-09-22T17:00,63.1,65,50.9,0,0,7,18.8 +2022-09-22T18:00,59.1,73,50.5,0,0,4.7,11.4 +2022-09-22T19:00,56.5,80,50.5,0,0,5,8.5 +2022-09-22T20:00,53.8,89,50.5,0,0,3.6,8.1 +2022-09-22T21:00,52.9,91,50.4,0,0,3.3,6.3 +2022-09-22T22:00,51.9,93,49.8,0,0,3.5,5.6 +2022-09-22T23:00,50.9,94,49.4,0,0,2.9,5.4 +2022-09-23T00:00,49.7,98,49.1,0,0,2.4,3.6 +2022-09-23T01:00,50.2,98,49.7,0,0,3.6,6.5 +2022-09-23T02:00,51.1,95,49.8,0,0,3.4,7.6 +2022-09-23T03:00,48.7,99,48.5,0,0,3.6,6.3 +2022-09-23T04:00,47.5,96,46.5,0,0,2.5,6 +2022-09-23T05:00,49.7,72,41.2,0,0,4.9,4.7 +2022-09-23T06:00,50.2,69,40.5,0,0,5.4,8.3 +2022-09-23T07:00,56.1,59,41.9,0,0,6.7,10.1 +2022-09-23T08:00,63.1,51,44.5,0,0,2.8,11 +2022-09-23T09:00,69,40,43.6,0,0,5.4,12.3 +2022-09-23T10:00,72.1,31,40,0,0,3.5,12.3 +2022-09-23T11:00,75.3,24,35.8,0,0,4.9,13 +2022-09-23T12:00,77.5,20,33.5,0,0,4.8,13.2 +2022-09-23T13:00,79.3,18,32,0,0,6.4,14.5 +2022-09-23T14:00,80.3,16,29.7,0,0,7,15.7 +2022-09-23T15:00,80.3,16,29.4,0,0,4.7,15 +2022-09-23T16:00,80.1,16,29.1,0,0,5.9,11.2 +2022-09-23T17:00,76.1,23,35.8,0,0,4.6,11.6 +2022-09-23T18:00,67.1,30,34.6,0,0,6.4,8.5 +2022-09-23T19:00,62.4,33,32.9,0,0,6.6,8.7 +2022-09-23T20:00,64.9,28,31.1,0,0,2.1,9.4 +2022-09-23T21:00,58.3,40,34.1,0,0,3.6,4.3 +2022-09-23T22:00,53.5,52,36.2,0,0,4.8,6.9 +2022-09-23T23:00,50.5,59,36.7,0,0,3.3,8.3 +2022-09-24T00:00,48.9,63,36.9,0,0,3.7,5.6 +2022-09-24T01:00,47.3,64,35.6,0,0,4,5.4 +2022-09-24T02:00,46.6,62,34.3,0,0,4.1,5.8 +2022-09-24T03:00,46.4,65,35.2,0,0,4.1,6 +2022-09-24T04:00,45.9,65,34.8,0,0,5.1,6.9 +2022-09-24T05:00,46.4,61,33.6,0,0,6,7.4 +2022-09-24T06:00,46.2,61,33.4,0,0,5,8.3 +2022-09-24T07:00,52.3,50,34.2,0,0,6.9,11.2 +2022-09-24T08:00,59.6,44,37.9,0,0,2.9,10.7 +2022-09-24T09:00,66.8,33,37,0,0,4.9,11.6 +2022-09-24T10:00,72.7,20,29.1,0,0,3.5,12.1 +2022-09-24T11:00,74.8,19,30.1,0,0,1.8,10.5 +2022-09-24T12:00,76.6,19,31.6,0,0,1.1,9.6 +2022-09-24T13:00,78.3,17,30.5,0,0,1.4,8.9 +2022-09-24T14:00,79.6,16,29.7,0,0,4.5,11.6 +2022-09-24T15:00,79.9,16,29.2,0,0,5.3,12.3 +2022-09-24T16:00,79.3,15,27.6,0,0,8.2,14.5 +2022-09-24T17:00,76.1,18,29.6,0,0,6.4,16.3 +2022-09-24T18:00,67.1,29,33.7,0,0,5.1,10.1 +2022-09-24T19:00,63,41,38.8,0,0,6.2,7.6 +2022-09-24T20:00,59.5,48,39.7,0,0,3.8,7.6 +2022-09-24T21:00,56,53,39.2,0,0,4.5,5.8 +2022-09-24T22:00,54.9,53,38.1,0,0,4,5.6 +2022-09-24T23:00,55.7,47,36,0,0,8.1,10.1 +2022-09-25T00:00,56.1,48,36.8,0,0,11.5,19.7 +2022-09-25T01:00,53.8,52,36.3,0,0,4.9,18.8 +2022-09-25T02:00,50.1,61,37.2,0,0,5.2,7.6 +2022-09-25T03:00,48.2,67,37.7,0,0,2.2,6.3 +2022-09-25T04:00,47.1,70,37.9,0,0,2.1,3.6 +2022-09-25T05:00,46.7,73,38.4,0,0,4.1,4.7 +2022-09-25T06:00,44.8,78,38.5,0,0,4.7,6 +2022-09-25T07:00,49.6,67,38.9,0,0,3.6,7.2 +2022-09-25T08:00,55.7,53,38.8,0,0,2.2,7.6 +2022-09-25T09:00,61.7,39,36.3,0,0,2.7,9.4 +2022-09-25T10:00,66,32,35.2,0,0,3.2,10.5 +2022-09-25T11:00,69.4,28,34.7,0,0,3.8,11.9 +2022-09-25T12:00,72.3,25,34.8,0,0,6.4,15.2 +2022-09-25T13:00,73.9,25,35.3,0,0,8,17.4 +2022-09-25T14:00,74.7,24,35.3,0,0,8.8,18.3 +2022-09-25T15:00,74.1,24,34.5,0,0,9.6,19 +2022-09-25T16:00,73.5,24,34.3,0,0,8.3,18.8 +2022-09-25T17:00,72.1,24,32.8,0,0,6.4,15.7 +2022-09-25T18:00,64.7,34,35.7,0,0,4.4,10.5 +2022-09-25T19:00,61.4,43,38.7,0,0,4.2,6.7 +2022-09-25T20:00,62.2,42,39.1,0,0,3.3,6.9 +2022-09-25T21:00,61.7,44,39.3,0,0,0.5,4 +2022-09-25T22:00,57.8,50,39.2,0,0,2.3,2.7 +2022-09-25T23:00,54.5,56,38.9,0,0,3,4.9 +2022-09-26T00:00,51.8,64,40.2,0,0,2.7,5.1 +2022-09-26T01:00,49.1,73,40.9,0,0,2.2,4.5 +2022-09-26T02:00,48,76,40.9,0,0,2.1,3.4 +2022-09-26T03:00,47.6,75,40.1,0,0,3.8,6.3 +2022-09-26T04:00,46.7,74,38.9,0,0,4.8,6 +2022-09-26T05:00,46.3,71,37.6,0,0,4.6,5.8 +2022-09-26T06:00,45.3,70,36.1,0,0,4.3,5.8 +2022-09-26T07:00,50.6,59,36.9,0,0,3.9,7.4 +2022-09-26T08:00,59.3,48,39.7,0,0,2.8,8.1 +2022-09-26T09:00,68.9,34,39.2,0,0,2.6,9.2 +2022-09-26T10:00,75.1,21,32.8,0,0,3,9.4 +2022-09-26T11:00,77.5,19,31.8,0,0,6.1,14.5 +2022-09-26T12:00,78.7,18,32.1,0,0,7.1,16.1 +2022-09-26T13:00,79.3,18,31.8,0,0,6.5,16.3 +2022-09-26T14:00,79.5,18,31.9,0,0,5.3,15.2 +2022-09-26T15:00,79.3,18,32.2,0,0,4.3,13.6 +2022-09-26T16:00,79.1,18,32.5,0,0,4.8,11.6 +2022-09-26T17:00,77.5,21,34.6,0,0,2.3,10.7 +2022-09-26T18:00,71.2,26,34.8,0,0,3.4,5.1 +2022-09-26T19:00,63.7,38,37.6,0,0,4.4,6.3 +2022-09-26T20:00,62.6,41,38.8,0,0,1.3,5.8 +2022-09-26T21:00,63.1,40,38.2,0,0,2.8,4.9 +2022-09-26T22:00,57.7,49,38.7,0,0,3.8,5.4 +2022-09-26T23:00,55.8,54,39.5,0,0,4,6.7 +2022-09-27T00:00,53.1,61,40.1,0,0,3.7,6.9 +2022-09-27T01:00,53.3,61,40.1,0,0,4.5,5.8 +2022-09-27T02:00,50.8,67,40.1,0,0,2.8,5.4 +2022-09-27T03:00,49.2,71,40,0,0,2.1,4.3 +2022-09-27T04:00,48.3,72,39.7,0,0,1.9,3.6 +2022-09-27T05:00,50,70,40.5,0,0,1.1,3.8 +2022-09-27T06:00,49.1,70,39.9,0,0,2.1,3.6 +2022-09-27T07:00,51.9,65,40.4,0,0,3.6,6.9 +2022-09-27T08:00,60.3,47,40.1,0,0,2.5,7.6 +2022-09-27T09:00,66.1,36,38.5,0,0,3.8,10.3 +2022-09-27T10:00,70.6,29,37,0,0,3.6,11.6 +2022-09-27T11:00,74,26,36.5,0,0,5.3,13.4 +2022-09-27T12:00,76.1,23,35.9,0,0,3.7,14.1 +2022-09-27T13:00,77.7,22,35.8,0,0,1.6,11.9 +2022-09-27T14:00,77.6,22,36.3,0,0,2,9.6 +2022-09-27T15:00,77.1,25,39,0,0,6.1,13.4 +2022-09-27T16:00,76.6,25,38,0,0,3.7,13.6 +2022-09-27T17:00,72.2,32,40.7,0,0,4.4,11 +2022-09-27T18:00,68.1,45,45.7,0,0,3.4,8.1 +2022-09-27T19:00,64,54,47.3,0,0,4.2,6.5 +2022-09-27T20:00,60.4,66,48.7,0,0,3.5,6.3 +2022-09-27T21:00,59.4,66,48,0,0,4.5,7.2 +2022-09-27T22:00,57.5,66,46.1,0,0,4.7,8.5 +2022-09-27T23:00,54.9,70,45.3,0,0,3.6,7.8 +2022-09-28T00:00,53.5,74,45.6,0,0,3.9,6 +2022-09-28T01:00,52.3,76,44.8,0,0,3.8,6.5 +2022-09-28T02:00,50.5,75,43.1,0,0,3.3,6.5 +2022-09-28T03:00,48.7,78,42.1,0,0,3.4,5.4 +2022-09-28T04:00,48,78,41.5,0,0,3.4,4.5 +2022-09-28T05:00,48.7,79,42.5,0,0,3.7,4.5 +2022-09-28T06:00,47.5,78,41.1,0,0,2.7,4.7 +2022-09-28T07:00,52.3,65,41,0,0,2.4,5.6 +2022-09-28T08:00,58.1,56,42.3,0,0,3.2,8.5 +2022-09-28T09:00,64.7,42,41,0,0,4.1,11.2 +2022-09-28T10:00,72.7,27,37.2,0,0,3.2,11.4 +2022-09-28T11:00,78.9,20,34,0,0,3,11 +2022-09-28T12:00,82.9,12,24.8,0,0,4.3,12.3 +2022-09-28T13:00,83.2,11,23.2,0,0,5.9,14.5 +2022-09-28T14:00,83.2,11,24.1,0,0,4.7,14.8 +2022-09-28T15:00,82.3,12,24.8,0,0,1.9,12.5 +2022-09-28T16:00,82.9,12,24.5,0,0,1.1,7.6 +2022-09-28T17:00,80.2,17,31.4,0,0,1.7,5.8 +2022-09-28T18:00,73.3,23,33.8,0,0,6.6,8.7 +2022-09-28T19:00,68.9,33,38.8,0,0,6.8,15.9 +2022-09-28T20:00,62.3,44,40.1,0,0,4.7,10.7 +2022-09-28T21:00,59.9,49,40.8,0,0,4.6,6 +2022-09-28T22:00,59.4,51,41,0,0,4,6 +2022-09-28T23:00,58.4,51,40.2,0,0,4.7,7.2 +2022-09-29T00:00,57.4,50,39.1,0,0,4.7,7.6 +2022-09-29T01:00,56.4,48,36.8,0,0,4.6,7.4 +2022-09-29T02:00,55.7,45,34.7,0,0,4.8,7.2 +2022-09-29T03:00,53.9,47,34,0,0,6.3,7.6 +2022-09-29T04:00,53.2,50,35.2,0,0,5.6,7.8 +2022-09-29T05:00,55.5,49,36.6,0,0,5.2,6.5 +2022-09-29T06:00,54.1,52,36.7,0,0,6.4,7.8 +2022-09-29T07:00,59.5,43,37.2,0,0,5,7.4 +2022-09-29T08:00,65.8,36,37.8,0,0,1.1,8.1 +2022-09-29T09:00,74.3,26,37,0,0,1.4,7.6 +2022-09-29T10:00,78.7,21,35.3,0,0,2,9.2 +2022-09-29T11:00,81.2,17,32.7,0,0,3.8,14.1 +2022-09-29T12:00,82.5,15,30.5,0,0,3.8,13 +2022-09-29T13:00,83.8,14,29.2,0,0,4.3,13.6 +2022-09-29T14:00,83.1,14,28.5,0,0,2.7,13.2 +2022-09-29T15:00,82.4,14,28,0,0,3.4,10.5 +2022-09-29T16:00,80.4,17,31.4,0,0,12.4,20.1 +2022-09-29T17:00,69.7,40,44.5,0,0,8.9,26.4 +2022-09-29T18:00,66.7,54,49.6,0.008,0,5.7,14.5 +2022-09-29T19:00,64,58,48.7,0,0,2.3,10.1 +2022-09-29T20:00,61.1,64,49,0,0,3.2,4.7 +2022-09-29T21:00,59.5,65,47.8,0,0,5.4,9.8 +2022-09-29T22:00,56.6,68,46.3,0,0,4,8.7 +2022-09-29T23:00,54.6,74,46.5,0,0,3.8,6 +2022-09-30T00:00,53.3,76,45.9,0,0,3.5,5.8 +2022-09-30T01:00,51.7,78,45,0,0,4.3,5.6 +2022-09-30T02:00,51.4,76,43.9,0,0,4,5.8 +2022-09-30T03:00,50.8,74,42.9,0,0,3.5,5.6 +2022-09-30T04:00,50.5,71,41.4,0,0,4,6.3 +2022-09-30T05:00,50.5,70,41.1,0,0,3.8,6 +2022-09-30T06:00,49.5,69,39.8,0,0,4.1,6 +2022-09-30T07:00,54,57,39.3,0,0,4.3,8.1 +2022-09-30T08:00,61.1,45,39.7,0,0,1.3,7.8 +2022-09-30T09:00,69.4,32,38.2,0,0,2.1,8.5 +2022-09-30T10:00,75.5,23,34.9,0,0,2.7,10.1 +2022-09-30T11:00,78.7,18,31.7,0,0,3.3,12.1 +2022-09-30T12:00,80.6,16,30.5,0,0,3.7,12.1 +2022-09-30T13:00,82.3,15,29.8,0,0,4.6,13.6 +2022-09-30T14:00,82.5,16,31.6,0,0,5.4,14.1 +2022-09-30T15:00,71.8,45,49.6,0.024,0,16.6,27.5 +2022-09-30T16:00,74.8,27,38.5,0,0,6.7,29.3 +2022-09-30T17:00,62.2,71,52.6,0.035,0,5.9,13.6 +2022-09-30T18:00,61.6,79,55.1,0.016,0,8.2,12.8 +2022-09-30T19:00,58.2,88,54.5,0,0,1.1,13.4 +2022-09-30T20:00,58.5,85,54,0.004,0,6.4,10.7 +2022-09-30T21:00,57.6,87,53.8,0,0,9,15 +2022-09-30T22:00,56.1,89,52.9,0,0,6.3,15 +2022-09-30T23:00,53.7,95,52.2,0,0,2.8,10.3 +2022-10-01T00:00,54.8,92,52.6,0,0,1.4,4.3 +2022-10-01T01:00,51.5,98,51,0,0,3.3,4.9 +2022-10-01T02:00,52.1,98,51.4,0,0,2.6,4.9 +2022-10-01T03:00,52.9,95,51.5,0,0,1.1,4.7 +2022-10-01T04:00,50.9,98,50.4,0,0,3,3.8 +2022-10-01T05:00,53.1,97,52.2,0,0,2.8,4.3 +2022-10-01T06:00,52.9,95,51.6,0,0,1.1,3.4 +2022-10-01T07:00,52.4,95,51,0,0,2.2,5.1 +2022-10-01T08:00,55,89,51.6,0,0,1.7,7.4 +2022-10-01T09:00,60.5,68,49.7,0,0,0.8,7.8 +2022-10-01T10:00,66.8,48,46.5,0,0,5,12.5 +2022-10-01T11:00,70.4,39,44.2,0,0,4.1,16.3 +2022-10-01T12:00,72.7,35,43.3,0,0,1.8,13.9 +2022-10-01T13:00,72.9,32,41.2,0,0,4.3,13.6 +2022-10-01T14:00,68.5,41,43.9,0.004,0,3.8,13.9 +2022-10-01T15:00,68.5,42,44.8,0,0,2.5,11.4 +2022-10-01T16:00,65.3,50,46.3,0,0,6.6,12.1 +2022-10-01T17:00,63.1,61,49.5,0,0,5.3,16.1 +2022-10-01T18:00,60.3,70,50.5,0,0,5,11.6 +2022-10-01T19:00,58.8,75,50.8,0,0,1.9,7.4 +2022-10-01T20:00,57,83,51.8,0,0,3.8,6.5 +2022-10-01T21:00,54.9,92,52.7,0,0,2.5,6.5 +2022-10-01T22:00,53.6,95,52.3,0,0,2.8,4.7 +2022-10-01T23:00,51.4,96,50.4,0,0,2.3,4.3 +2022-10-02T00:00,50.3,98,49.6,0,0,3.1,4.5 +2022-10-02T01:00,49.6,97,48.7,0,0,2.2,4.3 +2022-10-02T02:00,48.7,93,46.8,0,0,2.1,4.3 +2022-10-02T03:00,46.9,93,45,0,0,0.5,4 +2022-10-02T04:00,45.9,94,44.2,0,0,0.6,2 +2022-10-02T05:00,46.9,85,42.5,0,0,2.5,2 +2022-10-02T06:00,46.6,83,41.7,0,0,1.6,4.5 +2022-10-02T07:00,50.7,72,42.2,0,0,3.7,6.7 +2022-10-02T08:00,52.9,71,43.6,0.008,0,1.6,6.9 +2022-10-02T09:00,54.1,76,46.9,0.012,0,2.1,5.4 +2022-10-02T10:00,59.9,62,46.8,0,0,3.2,9.8 +2022-10-02T11:00,67.6,38,41.1,0,0,1,9.8 +2022-10-02T12:00,71.7,32,40,0,0,5,12.8 +2022-10-02T13:00,73.8,30,40,0,0,1.9,13 +2022-10-02T14:00,75.4,26,38.4,0,0,0.3,10.1 +2022-10-02T15:00,75.9,25,37.4,0,0,2.9,9.2 +2022-10-02T16:00,74.5,26,37.2,0,0,10.1,16.1 +2022-10-02T17:00,67.4,45,45.4,0.039,0,5.3,28.4 +2022-10-02T18:00,60.9,62,47.9,0,0,7.1,11.6 +2022-10-02T19:00,57.6,78,50.8,0,0,4.1,11.6 +2022-10-02T20:00,57.4,77,50.4,0,0,3.8,9.4 +2022-10-02T21:00,55.2,83,50.2,0,0,3.1,5.1 +2022-10-02T22:00,54.7,83,49.6,0,0,4,6.3 +2022-10-02T23:00,53.8,82,48.4,0,0,4.2,7.2 +2022-10-03T00:00,54.3,77,47.1,0,0,4,6.9 +2022-10-03T01:00,54.3,73,45.7,0,0,3.7,6.7 +2022-10-03T02:00,51.4,77,44.5,0.004,0,4.3,6.5 +2022-10-03T03:00,50.3,75,42.7,0,0,5.5,6.9 +2022-10-03T04:00,49.9,73,41.7,0,0,4.7,6.5 +2022-10-03T05:00,49.1,85,44.7,0,0,3.5,6.7 +2022-10-03T06:00,48.2,81,42.7,0,0,5.7,8.7 +2022-10-03T07:00,51.1,68,40.8,0,0,7.1,11.2 +2022-10-03T08:00,58.6,53,41.6,0,0,3.2,11.2 +2022-10-03T09:00,64.3,41,40.1,0,0,2.4,8.1 +2022-10-03T10:00,67.5,35,38.9,0,0,2.9,9.8 +2022-10-03T11:00,70.3,30,37.8,0,0,3.6,11.4 +2022-10-03T12:00,71.9,28,37.3,0,0,4.5,12.3 +2022-10-03T13:00,72.5,27,36.6,0,0,5.1,13.2 +2022-10-03T14:00,73.2,26,36.4,0,0,5.2,13.2 +2022-10-03T15:00,72.4,27,36.7,0,0,2.8,13 +2022-10-03T16:00,70.4,29,37,0,0,2.5,9.8 +2022-10-03T17:00,57.7,77,50.6,0.004,0,9.3,17.4 +2022-10-03T18:00,56.6,89,53.2,0.213,0,3.6,13.6 +2022-10-03T19:00,55.5,87,51.5,0.087,0,3.2,8.9 +2022-10-03T20:00,54.5,84,49.7,0.051,0,2.6,7.4 +2022-10-03T21:00,54,91,51.4,0,0,3.8,6 +2022-10-03T22:00,51.3,96,50.3,0,0,3,7.2 +2022-10-03T23:00,52.3,94,50.5,0,0,0.3,4.5 +2022-10-04T00:00,49.5,98,49,0,0,3.3,5.6 +2022-10-04T01:00,47.6,98,47.1,0,0,3.3,5.6 +2022-10-04T02:00,46.9,96,45.9,0,0,3.1,5.8 +2022-10-04T03:00,45.8,95,44.3,0,0,2.8,5.8 +2022-10-04T04:00,45.5,93,43.6,0,0,3.5,6.3 +2022-10-04T05:00,46.2,77,39.4,0,0,3.8,6.3 +2022-10-04T06:00,45.1,78,38.8,0,0,3.7,4.7 +2022-10-04T07:00,47.7,76,40.5,0,0,2.7,5.8 +2022-10-04T08:00,50.9,79,44.6,0,0,3.5,9.2 +2022-10-04T09:00,53.7,76,46.2,0,0,4.9,12.3 +2022-10-04T10:00,57.8,63,45.5,0,0,3.6,12.5 +2022-10-04T11:00,61.7,52,43.9,0,0,3.6,12.1 +2022-10-04T12:00,65.4,45,43.6,0,0,4.9,13.4 +2022-10-04T13:00,66,42,42.4,0.004,0,3,13.6 +2022-10-04T14:00,67.3,37,39.8,0.004,0,5,12.3 +2022-10-04T15:00,68.4,33,38.4,0,0,7.6,15.4 +2022-10-04T16:00,66.9,35,38.5,0,0,8.3,17.2 +2022-10-04T17:00,63.2,48,43.3,0,0,6.9,15.4 +2022-10-04T18:00,59,58,44.2,0,0,4.7,11.4 +2022-10-04T19:00,57.3,62,44.2,0.004,0,9.7,14.8 +2022-10-04T20:00,56.4,62,43.3,0,0,2.2,17.2 +2022-10-04T21:00,53.9,81,48.3,0.02,0,4.9,7.2 +2022-10-04T22:00,52.5,85,48,0,0,5.3,10.1 +2022-10-04T23:00,50.6,90,47.7,0,0,4.3,8.5 +2022-10-05T00:00,48.1,94,46.4,0,0,4,7.2 +2022-10-05T01:00,46.4,95,45.1,0,0,3.8,5.8 +2022-10-05T02:00,46.7,89,43.7,0,0,4,5.1 +2022-10-05T03:00,46.4,89,43.3,0,0,3.8,5.4 +2022-10-05T04:00,44.7,91,42.3,0,0,2.8,4.7 +2022-10-05T05:00,46,93,44.2,0,0,2,4.5 +2022-10-05T06:00,44.7,93,42.7,0,0,2,3.4 +2022-10-05T07:00,48.7,81,43.2,0,0,1.8,4.9 +2022-10-05T08:00,53.7,69,43.9,0,0,1.3,6 +2022-10-05T09:00,57.6,56,41.9,0,0,4,11 +2022-10-05T10:00,61,47,40.6,0,0,4.7,12.8 +2022-10-05T11:00,63.7,45,41.7,0,0,4.3,13 +2022-10-05T12:00,65.7,40,40.9,0,0,4.2,13 +2022-10-05T13:00,67.3,36,39.4,0,0,4,12.8 +2022-10-05T14:00,68.4,33,37.9,0,0,4.6,12.3 +2022-10-05T15:00,68.5,31,36.3,0,0,5.7,13 +2022-10-05T16:00,67.2,32,36.3,0,0,6.9,13.4 +2022-10-05T17:00,65,34,36,0,0,3.4,13.4 +2022-10-05T18:00,59.2,44,37.3,0,0,5.4,6.5 +2022-10-05T19:00,57.4,49,38.1,0,0,5.5,6.7 +2022-10-05T20:00,58.6,44,37,0,0,2.9,6.3 +2022-10-05T21:00,52,58,37.9,0,0,4.6,5.8 +2022-10-05T22:00,49.8,72,41,0,0,3.3,6 +2022-10-05T23:00,47.2,84,42.5,0,0,2.6,5.6 +2022-10-06T00:00,45.6,90,42.7,0,0,3,4.5 +2022-10-06T01:00,45.6,85,41.5,0,0,4.1,6.7 +2022-10-06T02:00,44.7,84,40.2,0,0,4,7.2 +2022-10-06T03:00,43.3,85,39,0,0,3.4,6.3 +2022-10-06T04:00,42.2,86,38.3,0,0,4,5.1 +2022-10-06T05:00,42.4,83,37.5,0,0,4.1,5.4 +2022-10-06T06:00,41.7,84,37.2,0,0,4.3,5.4 +2022-10-06T07:00,46,73,37.7,0,0,3.9,7.4 +2022-10-06T08:00,52.9,59,39,0,0,1.6,7.4 +2022-10-06T09:00,59.4,46,38.8,0,0,2.1,8.5 +2022-10-06T10:00,64.1,39,38.9,0,0,2.9,10.1 +2022-10-06T11:00,67.3,33,36.9,0,0,4,12.1 +2022-10-06T12:00,69.4,29,35.5,0,0,3.8,12.1 +2022-10-06T13:00,71.1,26,34.4,0,0,4,12.3 +2022-10-06T14:00,71.8,24,33.5,0,0,3.4,12.1 +2022-10-06T15:00,72.1,24,32.9,0,0,4.6,11.4 +2022-10-06T16:00,70.9,25,32.9,0,0,5.4,11.4 +2022-10-06T17:00,68.2,28,34.1,0,0,2.9,11 +2022-10-06T18:00,62.4,34,33.7,0,0,4.7,6.3 +2022-10-06T19:00,59.8,39,34.6,0,0,6.5,9.6 +2022-10-06T20:00,57.4,50,39,0,0,10.3,16.1 +2022-10-06T21:00,55.4,57,40.3,0,0,7.6,16.3 +2022-10-06T22:00,54.2,63,41.7,0,0,5.5,12.3 +2022-10-06T23:00,53.6,66,42.4,0,0,5.6,9.2 +2022-10-07T00:00,51.8,68,41.5,0,0,10.4,15 +2022-10-07T01:00,49.6,79,43.3,0,0,14.6,24.6 +2022-10-07T02:00,46.9,88,43.6,0,0,11.5,23.7 +2022-10-07T03:00,46,86,42,0,0,9.2,18.3 +2022-10-07T04:00,45.9,82,40.6,0,0,8.1,15.4 +2022-10-07T05:00,44.2,85,40.1,0,0,5.1,13.9 +2022-10-07T06:00,44,85,39.8,0,0,5.5,10.1 +2022-10-07T07:00,43.7,84,39.3,0,0,6.3,11.6 +2022-10-07T08:00,44.2,81,38.6,0,0,5.8,11.9 +2022-10-07T09:00,45.1,77,38.2,0,0,5.6,12.1 +2022-10-07T10:00,46.5,72,38,0,0,4.9,12.3 +2022-10-07T11:00,48.7,67,38.1,0,0,4.3,12.1 +2022-10-07T12:00,51.4,60,38,0,0,4.6,12.8 +2022-10-07T13:00,52.7,57,37.8,0,0,4.3,12.8 +2022-10-07T14:00,55.3,50,37.1,0,0,2.6,12.1 +2022-10-07T15:00,56.4,48,36.9,0,0,4.2,11.4 +2022-10-07T16:00,56.1,48,36.8,0,0,4.5,11.9 +2022-10-07T17:00,49.5,65,38.2,0,0,5.7,12.8 +2022-10-07T18:00,48.1,70,38.8,0,0,4.5,11.9 +2022-10-07T19:00,47.2,74,39.4,0,0,2.5,8.1 +2022-10-07T20:00,46.5,78,40,0,0,2.1,4.5 +2022-10-07T21:00,45.3,83,40.5,0,0,2.9,3.6 +2022-10-07T22:00,44.6,85,40.3,0,0,3.1,3.8 +2022-10-07T23:00,43.6,89,40.5,0,0,2.7,4 +2022-10-08T00:00,42.1,94,40.6,0,0,3.8,4.9 +2022-10-08T01:00,41.4,97,40.5,0,0,4,5.1 +2022-10-08T02:00,40.6,98,40,0,0,3.7,5.1 +2022-10-08T03:00,40.7,98,40.3,0,0,3,4.7 +2022-10-08T04:00,40.7,100,40.6,0,0,2.6,5.6 +2022-10-08T05:00,44,88,40.7,0,0,4.9,4 +2022-10-08T06:00,43.6,90,40.8,0,0,2.5,7.8 +2022-10-08T07:00,44.1,88,40.8,0,0,2,5.1 +2022-10-08T08:00,45.9,82,40.8,0,0,2.3,6.7 +2022-10-08T09:00,48.6,74,40.6,0,0,3,9.4 +2022-10-08T10:00,52.9,62,40.2,0,0,3.3,11.2 +2022-10-08T11:00,56,55,39.9,0,0,4,12.8 +2022-10-08T12:00,59,49,40.1,0,0,3.5,12.5 +2022-10-08T13:00,61.5,46,40.4,0,0,4,12.5 +2022-10-08T14:00,63,42,39.3,0,0,3.6,12.5 +2022-10-08T15:00,63.7,37,37,0,0,4.2,11.6 +2022-10-08T16:00,63.1,33,33.6,0,0,6.3,13 +2022-10-08T17:00,61.6,32,31.6,0,0,3.4,12.8 +2022-10-08T18:00,56.2,43,34,0,0,5.1,6.9 +2022-10-08T19:00,56.1,44,34.5,0,0,1.2,6.9 +2022-10-08T20:00,50.6,57,36.1,0,0,3.3,4.5 +2022-10-08T21:00,48.2,69,38.4,0,0,1.9,4.5 +2022-10-08T22:00,45.6,80,39.9,0,0,2.5,4 +2022-10-08T23:00,43.5,89,40.5,0,0,3,5.1 +2022-10-09T00:00,42.2,90,39.5,0,0,2.7,5.1 +2022-10-09T01:00,41.4,89,38.3,0,0,2.7,4.5 +2022-10-09T02:00,40.2,88,36.9,0,0,3.2,4.5 +2022-10-09T03:00,39.5,87,36.1,0,0,2.2,4.5 +2022-10-09T04:00,38.5,87,35.1,0,0,2.9,3.8 +2022-10-09T05:00,39.3,75,32,0,0,3.9,4.7 +2022-10-09T06:00,38.3,73,30.6,0,0,3.5,4.7 +2022-10-09T07:00,41.8,63,30.3,0,0,2.9,5.8 +2022-10-09T08:00,48.6,51,31.2,0,0,1.4,6.3 +2022-10-09T09:00,55.6,39,31,0,0,2.9,9.4 +2022-10-09T10:00,61.3,35,33.5,0,0,2.5,9.8 +2022-10-09T11:00,65.8,31,34.5,0,0,3.7,11.6 +2022-10-09T12:00,69.2,27,33.6,0,0,4.2,12.8 +2022-10-09T13:00,71.1,20,28.5,0,0,4.2,12.8 +2022-10-09T14:00,72.2,17,24.9,0,0,5,12.8 +2022-10-09T15:00,72.1,15,21.7,0,0,6.4,13.9 +2022-10-09T16:00,70.7,14,19.6,0,0,7.3,14.1 +2022-10-09T17:00,66.1,20,23.5,0,0,3.9,13.4 +2022-10-09T18:00,58.5,29,26,0,0,5.4,7.4 +2022-10-09T19:00,55.4,35,28.1,0,0,5.2,6.9 +2022-10-09T20:00,55.6,35,28.7,0,0,3.3,6.3 +2022-10-09T21:00,49.7,46,29.7,0,0,4.1,6.3 +2022-10-09T22:00,46.9,53,30.8,0,0,3.8,5.4 +2022-10-09T23:00,46,55,30.6,0,0,4.1,6.3 +2022-10-10T00:00,44.5,57,30.1,0,0,3.8,6.3 +2022-10-10T01:00,43.4,57,29,0,0,3.8,6 +2022-10-10T02:00,42.4,56,27.8,0,0,3.8,5.8 +2022-10-10T03:00,40.9,57,26.7,0,0,4.2,5.8 +2022-10-10T04:00,40.1,57,26.1,0,0,5,6.3 +2022-10-10T05:00,40,57,25.8,0,0,5.4,6.5 +2022-10-10T06:00,40.5,55,25.4,0,0,5.6,7.6 +2022-10-10T07:00,45.7,46,25.9,0,0,3.2,6.7 +2022-10-10T08:00,53.3,37,27.8,0,0,2.7,7.6 +2022-10-10T09:00,62.4,27,28.1,0,0,2.6,8.7 +2022-10-10T10:00,69.2,20,25.8,0,0,1.7,8.7 +2022-10-10T11:00,72.4,15,21.5,0,0,3.5,11.4 +2022-10-10T12:00,74.1,13,20.9,0,0,3.1,11.6 +2022-10-10T13:00,74.9,13,21.4,0,0,4,11.9 +2022-10-10T14:00,75,13,20.3,0,0,4.2,13 +2022-10-10T15:00,75.5,11,17.2,0,0,0.8,11.9 +2022-10-10T16:00,75,10,15.7,0,0,6.5,11.6 +2022-10-10T17:00,69.1,18,23.4,0,0,4.3,16.3 +2022-10-10T18:00,69.5,17,23.1,0,0,1.3,5.8 +2022-10-10T19:00,60,29,28,0,0,6.3,9.2 +2022-10-10T20:00,55.1,40,31.1,0,0,4.8,11.4 +2022-10-10T21:00,52.2,45,31.3,0,0,5.1,8.9 +2022-10-10T22:00,49.8,50,31.7,0,0,3.8,8.3 +2022-10-10T23:00,49,51,31.6,0,0,4.6,7.2 +2022-10-11T00:00,48,53,31.6,0,0,4.6,6.9 +2022-10-11T01:00,48,54,32.3,0,0,4.6,7.4 +2022-10-11T02:00,46.9,55,31.7,0,0,4.5,7.2 +2022-10-11T03:00,46.9,53,30.7,0,0,5.4,8.7 +2022-10-11T04:00,47,50,29.5,0,0,5.9,9.4 +2022-10-11T05:00,43.3,56,28.6,0,0,7.2,11.2 +2022-10-11T06:00,43.4,55,28.1,0,0,7.8,8.9 +2022-10-11T07:00,51,40,27.3,0,0,6.3,9.4 +2022-10-11T08:00,59,30,27.8,0,0,8.3,13.4 +2022-10-11T09:00,66.6,19,22.7,0,0,10,17.9 +2022-10-11T10:00,69.3,17,22.2,0,0,3,17.9 +2022-10-11T11:00,72.3,15,21.8,0,0,1.8,10.3 +2022-10-11T12:00,75.3,11,17.6,0,0,5.5,14.3 +2022-10-11T13:00,76.6,9,14.2,0,0,7,15.9 +2022-10-11T14:00,75.5,11,17.5,0,0,9.9,19 +2022-10-11T15:00,72.3,14,20.5,0,0,12.3,22.6 +2022-10-11T16:00,73.5,12,17.4,0,0,8.3,21.5 +2022-10-11T17:00,69,16,21.5,0,0,6.3,16.3 +2022-10-11T18:00,56.7,42,33.8,0,0,15.3,27.3 +2022-10-11T19:00,53.5,51,35.6,0,0,6.5,22.8 +2022-10-11T20:00,51.7,55,36.2,0,0,7,11.6 +2022-10-11T21:00,51.7,56,36.6,0,0,2.5,11.4 +2022-10-11T22:00,49.8,63,37.6,0,0,2.7,4.7 +2022-10-11T23:00,50.1,61,37,0,0,0.3,3.8 +2022-10-12T00:00,45.4,73,37.1,0,0,2.7,4.3 +2022-10-12T01:00,43.4,81,37.9,0,0,4.1,5.4 +2022-10-12T02:00,42.2,85,37.9,0,0,3.4,5.6 +2022-10-12T03:00,41.2,82,36.1,0,0,4.3,6.9 +2022-10-12T04:00,40.6,76,33.6,0,0,4.2,6.9 +2022-10-12T05:00,39,76,32,0,0,4.5,7.2 +2022-10-12T06:00,38.4,71,29.8,0,0,4.4,7.2 +2022-10-12T07:00,41.6,59,28.4,0,0,5.7,8.3 +2022-10-12T08:00,51.4,40,28,0,0,4.5,9.6 +2022-10-12T09:00,60,26,25.3,0,0,4.8,11.2 +2022-10-12T10:00,65.8,18,20.7,0,0,5,13.4 +2022-10-12T11:00,68.5,19,24.5,0,0,3.2,12.8 +2022-10-12T12:00,71.6,18,25.4,0,0,5,13.4 +2022-10-12T13:00,72.9,18,27,0,0,8.8,18.3 +2022-10-12T14:00,72.5,19,28,0,0,9.9,19.2 +2022-10-12T15:00,69.9,20,26.8,0,0,10.8,21.9 +2022-10-12T16:00,65.5,24,27.9,0,0,12.7,21.3 +2022-10-12T17:00,55.6,38,30.7,0,0,10.6,23.3 +2022-10-12T18:00,53.2,43,31.1,0,0,5,16.3 +2022-10-12T19:00,50.9,47,31.2,0,0,3,7.6 +2022-10-12T20:00,49.4,50,31.4,0,0,3.6,5.1 +2022-10-12T21:00,47.8,52,31.3,0,0,4.2,7.2 +2022-10-12T22:00,45.2,58,31.5,0,0,4.1,6.5 +2022-10-12T23:00,43.1,66,32.4,0,0,4,5.6 +2022-10-13T00:00,42.4,72,34.1,0,0,3.8,5.8 +2022-10-13T01:00,40.8,79,34.7,0,0,3.4,6.3 +2022-10-13T02:00,41.5,76,34.6,0,0,2.2,5.4 +2022-10-13T03:00,41.2,75,33.9,0,0,1.3,2.9 +2022-10-13T04:00,39.3,77,32.7,0,0,4.9,7.8 +2022-10-13T05:00,37.4,84,33.1,0,0,3,7.8 +2022-10-13T06:00,37.4,83,32.7,0,0,3.7,6 +2022-10-13T07:00,39.8,73,31.9,0,0,4.9,7.8 +2022-10-13T08:00,47.4,53,31,0,0,4.7,10.1 +2022-10-13T09:00,55,37,28.9,0,0,7,14.3 +2022-10-13T10:00,59.5,31,28.8,0,0,6.4,14.8 +2022-10-13T11:00,61.5,29,28.6,0,0,5,14.8 +2022-10-13T12:00,63.4,27,28.7,0,0,4.6,13.6 +2022-10-13T13:00,64.7,26,29,0,0,7.1,16.3 +2022-10-13T14:00,65.7,25,29.2,0,0,5.6,16.6 +2022-10-13T15:00,65.8,25,29.4,0,0,4.6,13.9 +2022-10-13T16:00,65.3,26,29.3,0,0,3.1,11.6 +2022-10-13T17:00,61.3,27,27.3,0,0,3,8.1 +2022-10-13T18:00,56.1,35,29,0,0,5.8,9.6 +2022-10-13T19:00,52.3,44,31.3,0,0,5.1,9.6 +2022-10-13T20:00,50,52,32.9,0,0,4.8,8.3 +2022-10-13T21:00,47.5,58,33.3,0,0,4.3,7.8 +2022-10-13T22:00,47.9,49,29.8,0,0,4.8,7.6 +2022-10-13T23:00,47.7,44,26.8,0,0,5.1,7.6 +2022-10-14T00:00,47.4,45,27.2,0,0,5.9,9.2 +2022-10-14T01:00,45.2,50,27.7,0,0,5.1,9.2 +2022-10-14T02:00,43.1,52,26.5,0,0,4.5,8.1 +2022-10-14T03:00,41.5,52,25.3,0,0,5.7,7.2 +2022-10-14T04:00,41.1,54,25.9,0,0,4.6,7.2 +2022-10-14T05:00,41.6,53,25.8,0,0,4.4,6.9 +2022-10-14T06:00,40.9,52,24.5,0,0,6.2,9.8 +2022-10-14T07:00,43.6,45,23.5,0,0,6.7,9.8 +2022-10-14T08:00,51.2,33,22.7,0,0,6.2,11.9 +2022-10-14T09:00,61.6,19,19,0,0,6.7,13.2 +2022-10-14T10:00,67.6,13,15,0,0,4.9,14.1 +2022-10-14T11:00,71.7,12,16.3,0,0,2.2,12.3 +2022-10-14T12:00,75.5,9,13,0,0,7.2,15.7 +2022-10-14T13:00,77,7,9.3,0,0,10.7,20.8 +2022-10-14T14:00,77,9,13.6,0,0,14.1,25.5 +2022-10-14T15:00,76.6,8,11,0,0,13.6,26.2 +2022-10-14T16:00,75.1,8,10.9,0,0,11.7,24.2 +2022-10-14T17:00,69.1,12,15.1,0,0,4.8,20.1 +2022-10-14T18:00,67,14,16.3,0,0,5.9,9.6 +2022-10-14T19:00,59.6,20,18.1,0,0,5.4,8.1 +2022-10-14T20:00,56.3,21,16.9,0,0,6,9.2 +2022-10-14T21:00,51.5,27,18.6,0,0,5.4,7.2 +2022-10-14T22:00,50.2,31,20.5,0,0,5.1,7.6 +2022-10-14T23:00,48.1,32,19.9,0,0,4.9,7.4 +2022-10-15T00:00,46,38,21.6,0,0,4.7,7.4 +2022-10-15T01:00,45.4,39,21.8,0,0,4.1,7.4 +2022-10-15T02:00,46,35,20,0,0,3.6,4.7 +2022-10-15T03:00,41.9,41,19.8,0,0,6.3,7.6 +2022-10-15T04:00,43.1,40,20.2,0,0,4.3,8.1 +2022-10-15T05:00,48.3,33,20.8,0,0,3.8,5.1 +2022-10-15T06:00,46.8,35,20.3,0,0,2.8,4.7 +2022-10-15T07:00,47.3,35,21.2,0,0,2.5,3.8 +2022-10-15T08:00,52.6,30,22,0,0,0.3,4.5 +2022-10-15T09:00,56.3,29,24.3,0,0,2.8,8.9 +2022-10-15T10:00,58.6,30,27.6,0,0,3.6,11.2 +2022-10-15T11:00,60.9,28,27.3,0,0,4.9,13.2 +2022-10-15T12:00,62.1,27,27.9,0,0,6.9,15.4 +2022-10-15T13:00,62.6,27,28.6,0,0,7.8,16.8 +2022-10-15T14:00,62.6,28,28.9,0,0,7.8,16.8 +2022-10-15T15:00,62.4,28,29.1,0,0,6.2,16.1 +2022-10-15T16:00,62.6,28,29.2,0,0,4.2,13.2 +2022-10-15T17:00,58.8,37,32.5,0,0,3.9,9.6 +2022-10-15T18:00,54.9,44,33.3,0,0,4.4,6.7 +2022-10-15T19:00,55.3,44,33.7,0,0,6.5,10.3 +2022-10-15T20:00,55.1,46,35,0,0,6.8,11.6 +2022-10-15T21:00,53.6,54,37.3,0,0,5.4,10.7 +2022-10-15T22:00,52.9,57,38,0,0,3.6,8.5 +2022-10-15T23:00,52.4,58,38.2,0,0,2.9,5.6 +2022-10-16T00:00,50.1,66,39.1,0,0,2.8,4.9 +2022-10-16T01:00,50.8,65,39.6,0,0,4,6.5 +2022-10-16T02:00,50.3,64,38.5,0,0,5.1,8.3 +2022-10-16T03:00,49.6,62,37.2,0,0,5.8,9.8 +2022-10-16T04:00,49.2,62,36.8,0,0,4.7,9.6 +2022-10-16T05:00,48.3,62,36,0,0,3.5,8.1 +2022-10-16T06:00,47.4,65,36.2,0,0,4.8,7.4 +2022-10-16T07:00,47.2,65,36,0,0,5.2,8.3 +2022-10-16T08:00,48.7,59,35.2,0,0,5.4,10.1 +2022-10-16T09:00,49,57,34.5,0,0,6.2,11.4 +2022-10-16T10:00,49.5,55,33.9,0,0,4.9,12.3 +2022-10-16T11:00,50.7,51,33.4,0,0,0.7,10.1 +2022-10-16T12:00,52.8,47,33.4,0,0,1.7,8.5 +2022-10-16T13:00,53.6,46,33.3,0,0,1.9,8.5 +2022-10-16T14:00,57.1,39,32.5,0,0,2.1,10.3 +2022-10-16T15:00,56.9,38,31.6,0,0,0.5,9.4 +2022-10-16T16:00,56.5,38,31,0,0,1.9,7.2 +2022-10-16T17:00,54.7,42,32.2,0,0,1.7,6.9 +2022-10-16T18:00,50.7,50,32.9,0,0,3.3,5.4 +2022-10-16T19:00,47.8,57,33.4,0,0,4.8,5.6 +2022-10-16T20:00,46.6,61,33.9,0,0,2.1,5.8 +2022-10-16T21:00,43.6,73,35.4,0,0,2.6,4.3 +2022-10-16T22:00,43.3,75,35.9,0,0,1.6,3.8 +2022-10-16T23:00,42.4,79,36.2,0,0,4.2,6.7 +2022-10-17T00:00,41.8,76,34.8,0,0,4.7,7.8 +2022-10-17T01:00,39.7,76,32.7,0,0,4.6,7.8 +2022-10-17T02:00,39.7,71,31.1,0,0,3.5,6.3 +2022-10-17T03:00,40.9,66,30.4,0,0,0.9,4.5 +2022-10-17T04:00,39.2,69,30,0,0,0.4,1.6 +2022-10-17T05:00,35.8,87,32.3,0,0,2.1,2.2 +2022-10-17T06:00,33.8,91,31.6,0,0,3,3.8 +2022-10-17T07:00,36.3,84,31.8,0,0,3.2,5.4 +2022-10-17T08:00,43.9,63,32.2,0,0,2,6.7 +2022-10-17T09:00,49.8,46,30,0,0,1.7,8.3 +2022-10-17T10:00,54.1,38,29.2,0,0,1.8,9.2 +2022-10-17T11:00,57.7,33,29,0,0,2,9.8 +2022-10-17T12:00,60.5,29,28,0,0,3.6,11.9 +2022-10-17T13:00,62.2,25,26.3,0,0,5.8,14.5 +2022-10-17T14:00,62.8,24,25.3,0,0,6.9,15.7 +2022-10-17T15:00,62.4,24,25.3,0,0,6.9,15.7 +2022-10-17T16:00,61.2,26,25.6,0,0,5.7,14.8 +2022-10-17T17:00,57.9,29,26.2,0,0,2.9,11.4 +2022-10-17T18:00,53.5,35,26.8,0,0,4.8,6.7 +2022-10-17T19:00,50.2,40,27.1,0,0,6.1,7.2 +2022-10-17T20:00,52.8,36,26.6,0,0,2.7,7.4 +2022-10-17T21:00,51.2,38,26.6,0,0,1.4,3.1 +2022-10-17T22:00,49.1,42,27.2,0,0,1.6,2 +2022-10-17T23:00,42.9,57,28.9,0,0,3.1,3.6 +2022-10-18T00:00,39.1,72,31,0,0,2.6,4.3 +2022-10-18T01:00,38.1,77,31.6,0,0,3.8,4.3 +2022-10-18T02:00,38.1,76,31.2,0,0,3.8,5.8 +2022-10-18T03:00,36.6,79,30.8,0,0,1.6,4.9 +2022-10-18T04:00,34.7,86,30.8,0,0,3,3.8 +2022-10-18T05:00,33.9,89,31,0,0,3.2,4.3 +2022-10-18T06:00,32.1,92,30,0,0,4.6,5.1 +2022-10-18T07:00,36.8,75,29.5,0,0,4.2,5.8 +2022-10-18T08:00,45.1,52,28.5,0,0,2.9,7.8 +2022-10-18T09:00,54.1,34,26.3,0,0,2.6,8.7 +2022-10-18T10:00,60.3,25,24.5,0,0,2,8.9 +2022-10-18T11:00,63.1,22,23.9,0,0,5,13 +2022-10-18T12:00,64.8,22,24.6,0,0,6.5,15.4 +2022-10-18T13:00,66,19,23,0,0,6.1,15.4 +2022-10-18T14:00,66.6,17,20.5,0,0,5.4,15 +2022-10-18T15:00,66.3,17,20.6,0,0,4.3,13.2 +2022-10-18T16:00,65,19,21.8,0,0,3.9,11.2 +2022-10-18T17:00,59.9,24,23.5,0,0,4.3,8.5 +2022-10-18T18:00,54.6,30,24.1,0,0,5.5,6.7 +2022-10-18T19:00,51,37,25.6,0,0,5.1,6.7 +2022-10-18T20:00,48,45,27.9,0,0,4.3,6.3 +2022-10-18T21:00,45.1,55,29.7,0,0,3.8,5.8 +2022-10-18T22:00,43.6,57,29.4,0,0,4.3,6 +2022-10-18T23:00,42.5,56,28,0,0,4.8,6.3 +2022-10-19T00:00,41.4,55,26.2,0,0,5.6,6.9 +2022-10-19T01:00,41.1,53,25.3,0,0,4.8,6.5 +2022-10-19T02:00,39.4,54,24,0,0,5.5,6.7 +2022-10-19T03:00,38.7,52,22.6,0,0,5.5,6.9 +2022-10-19T04:00,38.3,51,21.7,0,0,5.5,7.4 +2022-10-19T05:00,39,43,18.5,0,0,6.6,7.4 +2022-10-19T06:00,38.7,41,16.7,0,0,7.6,9.4 +2022-10-19T07:00,44,32,15.6,0,0,4.9,9.4 +2022-10-19T08:00,53.6,22,15.8,0,0,6.5,11.2 +2022-10-19T09:00,63.4,16,16.5,0,0,1.4,11 +2022-10-19T10:00,68.6,14,17,0,0,5.1,11.9 +2022-10-19T11:00,72,10,11.8,0,0,6,14.5 +2022-10-19T12:00,74.2,8,8.4,0,0,6.4,14.8 +2022-10-19T13:00,75.6,9,13.2,0,0,8.1,16.8 +2022-10-19T14:00,75.7,11,17.1,0,0,10.7,19.9 +2022-10-19T15:00,74.8,10,15.5,0,0,9.6,21 +2022-10-19T16:00,74.9,8,9.9,0,0,5.2,17.4 +2022-10-19T17:00,68.6,13,16.3,0,0,5.8,8.9 +2022-10-19T18:00,62.6,15,14.4,0,0,5.9,10.1 +2022-10-19T19:00,61.5,18,17,0,0,5.7,9.4 +2022-10-19T20:00,61.3,18,17.5,0,0,1.9,7.2 +2022-10-19T21:00,58.4,20,17.6,0,0,2.5,3.1 +2022-10-19T22:00,53.4,24,17.2,0,0,4.3,5.1 +2022-10-19T23:00,47,34,19.8,0,0,3.4,6.7 +2022-10-20T00:00,42.9,44,22.6,0,0,4.5,7.2 +2022-10-20T01:00,40.8,50,23.5,0,0,4,7.2 +2022-10-20T02:00,40.8,49,23.3,0,0,4.5,6.9 +2022-10-20T03:00,40.1,50,22.7,0,0,4.5,7.2 +2022-10-20T04:00,39.3,50,22.2,0,0,4.6,6.9 +2022-10-20T05:00,41,48,22.9,0,0,6,7.6 +2022-10-20T06:00,39.9,49,22.4,0,0,8.2,9.6 +2022-10-20T07:00,44,40,21.4,0,0,6.6,10.1 +2022-10-20T08:00,55.3,25,19.9,0,0,3.8,7.8 +2022-10-20T09:00,63.4,18,18.9,0,0,2.8,8.3 +2022-10-20T10:00,70,13,17.6,0,0,2.6,9.4 +2022-10-20T11:00,74.6,7,6.2,0,0,3.2,10.3 +2022-10-20T12:00,76.6,6,3.1,0,0,5.9,13.6 +2022-10-20T13:00,77.7,6,3.8,0,0,6.5,15 +2022-10-20T14:00,78.9,5,3.9,0,0,5.2,14.8 +2022-10-20T15:00,79.3,5,2,0,0,2.5,12.5 +2022-10-20T16:00,77.8,5,2.9,0,0,3,7.8 +2022-10-20T17:00,67.6,12,12.3,0,0,7,8.1 +2022-10-20T18:00,62.6,16,15.7,0,0,6,9.4 +2022-10-20T19:00,58.7,20,17.9,0,0,4.6,8.9 +2022-10-20T20:00,52.6,25,18.1,0,0,5.2,7.2 +2022-10-20T21:00,50.1,29,19.3,0,0,5.1,6.9 +2022-10-20T22:00,47.7,33,19.8,0,0,4.7,6.7 +2022-10-20T23:00,45.5,38,21.5,0,0,5.2,6.7 +2022-10-21T00:00,45.1,39,21.6,0,0,4.6,7.2 +2022-10-21T01:00,44.2,40,21.3,0,0,4.6,7.2 +2022-10-21T02:00,45.2,38,20.8,0,0,5.3,8.1 +2022-10-21T03:00,45.7,36,20,0,0,5.6,8.5 +2022-10-21T04:00,44.5,36,19.3,0,0,5.7,8.5 +2022-10-21T05:00,47.9,32,19.6,0,0,5.2,7.8 +2022-10-21T06:00,46.3,33,18.9,0,0,5.8,6.9 +2022-10-21T07:00,47.2,31,17.9,0,0,4.7,8.5 +2022-10-21T08:00,55.5,22,17,0,0,8.8,14.1 +2022-10-21T09:00,64.8,15,16.2,0,0,11.1,18.8 +2022-10-21T10:00,69.7,13,16.2,0,0,7.4,20.1 +2022-10-21T11:00,73.2,11,15.4,0,0,3.4,15.4 +2022-10-21T12:00,75.8,8,11.3,0,0,8.6,17.7 +2022-10-21T13:00,76.4,8,11.2,0,0,10.1,19.9 +2022-10-21T14:00,76.6,8,10.9,0,0,9,19.9 +2022-10-21T15:00,76,8,11.7,0,0,8.3,18.1 +2022-10-21T16:00,73.8,9,11.8,0,0,9,16.1 +2022-10-21T17:00,66,12,12.2,0,0,5.3,15.2 +2022-10-21T18:00,62.5,15,14.1,0,0,8.6,13.4 +2022-10-21T19:00,60,18,16,0,0,8.5,15.4 +2022-10-21T20:00,55.7,22,17.7,0,0,6,13.9 +2022-10-21T21:00,53,27,19.5,0,0,6.4,9.8 +2022-10-21T22:00,52.3,28,20.1,0,0,6.5,10.7 +2022-10-21T23:00,52.5,28,20,0,0,9.6,14.5 +2022-10-22T00:00,53.3,25,18.6,0,0,12.6,20.1 +2022-10-22T01:00,52.4,27,19.2,0,0,9.3,19.9 +2022-10-22T02:00,50,30,20,0,0,8.6,14.8 +2022-10-22T03:00,48.6,33,20.5,0,0,9.7,15 +2022-10-22T04:00,47.9,34,20.8,0,0,9.4,15.4 +2022-10-22T05:00,49.3,32,20.6,0,0,10.1,15 +2022-10-22T06:00,48.7,33,20.8,0,0,8.1,15.7 +2022-10-22T07:00,50.4,32,21.4,0,0,5.9,12.5 +2022-10-22T08:00,58,25,22,0,0,7.2,12.1 +2022-10-22T09:00,64.7,20,22.3,0,0,8.3,15.4 +2022-10-22T10:00,67.9,16,20.1,0,0,7.7,16.6 +2022-10-22T11:00,69.9,14,18.4,0,0,7.2,16.3 +2022-10-22T12:00,70.9,15,20.2,0,0,6.1,16.1 +2022-10-22T13:00,72.6,14,19.9,0,0,6.8,15.2 +2022-10-22T14:00,74.2,12,18.8,0,0,9.2,18.1 +2022-10-22T15:00,75.1,11,17.5,0,0,9.2,18.3 +2022-10-22T16:00,74.4,10,15.2,0,0,6.7,17 +2022-10-22T17:00,65.7,12,11.7,0,0,6.2,11.6 +2022-10-22T18:00,64.4,13,11.7,0,0,2.8,6.9 +2022-10-22T19:00,56.8,19,14.6,0,0,5.8,8.1 +2022-10-22T20:00,56.8,21,17.2,0,0,7.9,12.3 +2022-10-22T21:00,60.7,19,18.1,0,0,11.5,17.9 +2022-10-22T22:00,56.6,24,19.9,0,0,9.2,18.8 +2022-10-22T23:00,52.8,26,18.8,0,0,7.8,14.5 +2022-10-23T00:00,52.8,30,22.2,0,0,8.1,12.5 +2022-10-23T01:00,53.3,31,23.8,0,0,9.5,15.7 +2022-10-23T02:00,50.9,35,24.3,0,0,9.7,15.4 +2022-10-23T03:00,49.4,38,24.7,0,0,10.3,16.3 +2022-10-23T04:00,48.9,38,24.7,0,0,11.2,18.1 +2022-10-23T05:00,49.2,40,25.7,0,0,9.1,17.7 +2022-10-23T06:00,50.6,39,26.7,0,0,11.8,17.9 +2022-10-23T07:00,53.2,38,28.2,0,0,12.6,20.1 +2022-10-23T08:00,58.6,35,30.7,0,0,9.2,19.7 +2022-10-23T09:00,62.1,33,32.9,0,0,7.3,15 +2022-10-23T10:00,66.7,20,24.1,0,0,9.4,17 +2022-10-23T11:00,68.6,17,22.5,0,0,13.1,25.9 +2022-10-23T12:00,68,18,23.4,0,0,10,24.8 +2022-10-23T13:00,65.4,22,25.6,0,0,19.4,33.6 +2022-10-23T14:00,61.6,28,28.2,0,0,12.4,34.4 +2022-10-23T15:00,57.5,45,36.2,0,0,11.9,24.4 +2022-10-23T16:00,55.9,49,37.1,0,0,10.7,21.9 +2022-10-23T17:00,53.2,26,18.9,0.063,0.055,11,38 +2022-10-23T18:00,41.1,96,39.9,0.02,0,15.1,28.2 +2022-10-23T19:00,43,80,37.1,0,0,8.9,24.6 +2022-10-23T20:00,40,81,34.5,0.051,0.248,6.8,18.6 +2022-10-23T21:00,38,88,34.8,0.043,0.358,5,11.6 +2022-10-23T22:00,38.1,83,33.5,0.004,0,4.5,9.6 +2022-10-23T23:00,38.1,82,33.2,0,0,4.3,7.4 +2022-10-24T00:00,36.5,92,34.3,0,0,4.1,7.4 +2022-10-24T01:00,34.9,94,33.4,0,0,4.5,6.9 +2022-10-24T02:00,35.6,61,23.6,0,0,4.9,8.1 +2022-10-24T03:00,36.4,38,13.3,0,0,9.3,14.3 +2022-10-24T04:00,35.6,38,12.7,0,0,9.8,16.6 +2022-10-24T05:00,36.8,33,10.1,0,0,11.2,15.9 +2022-10-24T06:00,35.2,35,10,0,0,7.9,18.6 +2022-10-24T07:00,35.4,34,9.6,0,0,6.3,12.8 +2022-10-24T08:00,39.1,27,8.2,0,0,5.3,11.6 +2022-10-24T09:00,42.6,23,7.4,0,0,7.6,15 +2022-10-24T10:00,45.1,21,7.4,0,0,7.7,18.1 +2022-10-24T11:00,46.9,20,8.3,0,0,5.9,16.8 +2022-10-24T12:00,49.2,17,5.7,0,0,5.2,14.8 +2022-10-24T13:00,50.5,15,4.8,0,0,5.3,14.8 +2022-10-24T14:00,51.5,14,4.4,0,0,9.3,18.3 +2022-10-24T15:00,49.6,19,8.5,0,0,16.1,27.5 +2022-10-24T16:00,47,23,10.7,0,0,18.2,30.9 +2022-10-24T17:00,43.4,29,13.3,0,0,17.8,30.4 +2022-10-24T18:00,42,31,13.3,0,0,18.4,29.8 +2022-10-24T19:00,41.4,31,13.1,0,0,17.1,29.8 +2022-10-24T20:00,40.3,31,12.2,0,0,18,29.3 +2022-10-24T21:00,39.6,31,11.6,0,0,18.4,29.8 +2022-10-24T22:00,39.6,30,10.3,0,0,16.2,29.3 +2022-10-24T23:00,39.7,29,9.7,0,0,11.4,25.7 +2022-10-25T00:00,39.4,29,9.7,0,0,7.6,18.3 +2022-10-25T01:00,38.8,30,10,0,0,5.9,12.5 +2022-10-25T02:00,41,28,10.7,0,0,4.5,9.6 +2022-10-25T03:00,35,37,11.2,0,0,4.3,5.6 +2022-10-25T04:00,36,35,10.7,0,0,4.1,6.9 +2022-10-25T05:00,35.5,38,12.4,0,0,5.1,7.8 +2022-10-25T06:00,35.2,41,14,0,0,4.6,8.3 +2022-10-25T07:00,36.1,43,15.9,0,0,3.7,7.2 +2022-10-25T08:00,43.4,36,18.1,0,0,5.3,9.4 +2022-10-25T09:00,50.4,28,18.6,0,0,7.4,14.1 +2022-10-25T10:00,53.7,25,19,0,0,3.2,14.1 +2022-10-25T11:00,56.1,24,20.1,0,0,4.6,12.3 +2022-10-25T12:00,58.5,22,20.1,0,0,3.4,12.3 +2022-10-25T13:00,60.8,21,20.3,0,0,5,12.3 +2022-10-25T14:00,61.5,20,20.1,0,0,5.8,13 +2022-10-25T15:00,61.5,20,19.9,0,0,6,13.4 +2022-10-25T16:00,58.8,22,20,0,0,9.5,15.4 +2022-10-25T17:00,52.5,33,23.9,0,0,4.2,21.5 +2022-10-25T18:00,48.7,38,24.2,0,0,4,6.7 +2022-10-25T19:00,48.5,39,24.6,0,0,3.7,7.2 +2022-10-25T20:00,48,42,25.9,0,0,4.4,7.4 +2022-10-25T21:00,47.1,47,28,0.004,0,3,7.2 +2022-10-25T22:00,45.5,48,27.1,0,0,4,4.3 +2022-10-25T23:00,45.7,43,24.4,0,0,6.1,8.7 +2022-10-26T00:00,40.8,50,23.5,0,0,4.6,9.4 +2022-10-26T01:00,41.8,50,24.4,0,0,4.9,7.6 +2022-10-26T02:00,41.3,52,24.9,0,0,6.2,9.8 +2022-10-26T03:00,41,52,24.8,0,0,6.4,10.5 +2022-10-26T04:00,41,53,25.2,0,0,6.4,10.5 +2022-10-26T05:00,42.3,48,24.1,0,0,4.6,10.3 +2022-10-26T06:00,42,50,24.6,0,0,4.7,8.9 +2022-10-26T07:00,42.6,49,24.8,0,0,2.6,7.6 +2022-10-26T08:00,44.8,44,24.4,0,0,2.1,5.8 +2022-10-26T09:00,46.4,42,24.7,0,0,6.5,13.2 +2022-10-26T10:00,48.1,41,25.3,0,0,7.6,16.6 +2022-10-26T11:00,50,39,26,0,0,4,16.6 +2022-10-26T12:00,52.7,36,26.6,0,0,2.7,12.1 +2022-10-26T13:00,55.2,33,26.3,0,0,7.9,17.2 +2022-10-26T14:00,57.2,30,26,0,0,6.6,17.4 +2022-10-26T15:00,57.1,29,25.3,0,0,6.9,15 +2022-10-26T16:00,55.9,30,24.8,0,0,6.8,14.3 +2022-10-26T17:00,51.6,38,26.6,0,0,5.2,12.5 +2022-10-26T18:00,48.4,50,30.5,0,0,6.1,10.3 +2022-10-26T19:00,46.4,58,32.4,0,0,5.1,10.1 +2022-10-26T20:00,43.2,65,32,0,0,3.6,8.9 +2022-10-26T21:00,41.6,70,32.5,0,0,5.5,8.9 +2022-10-26T22:00,39.7,75,32.5,0,0,2.9,9.6 +2022-10-26T23:00,39.8,77,33.4,0,0,2.7,5.6 +2022-10-27T00:00,39.3,81,33.9,0,0,5.2,8.9 +2022-10-27T01:00,38.2,90,35.4,0.008,0,2.9,8.9 +2022-10-27T02:00,37.3,96,36.3,0.063,0.413,6.9,11.9 +2022-10-27T03:00,38,87,34.5,0.004,0,3.7,11.2 +2022-10-27T04:00,36.7,87,33.3,0.008,0.028,3.4,6.3 +2022-10-27T05:00,36.1,94,34.7,0,0,7.7,6.7 +2022-10-27T06:00,36.6,89,33.6,0.004,0,5,11.6 +2022-10-27T07:00,36.1,89,33.3,0.008,0,8.3,12.3 +2022-10-27T08:00,35.5,91,33.3,0.008,0.11,9.9,17.2 +2022-10-27T09:00,35.5,94,33.9,0.012,0.11,7.4,17 +2022-10-27T10:00,36,93,34.1,0.016,0.055,5,13 +2022-10-27T11:00,36.6,90,33.8,0.016,0.083,4.5,9.8 +2022-10-27T12:00,37.8,83,33.1,0.016,0,7.8,13 +2022-10-27T13:00,41.7,68,31.8,0,0,6.4,15.2 +2022-10-27T14:00,47.1,41,24.5,0,0,6.1,13.6 +2022-10-27T15:00,51.2,27,18.5,0,0,9,15.9 +2022-10-27T16:00,49.1,28,17.6,0,0,11.9,21.5 +2022-10-27T17:00,42.3,44,21.9,0,0,3.6,18.8 +2022-10-27T18:00,38.2,56,23.7,0,0,6.3,10.1 +2022-10-27T19:00,35,65,24.4,0,0,6.3,10.3 +2022-10-27T20:00,33.3,68,23.7,0,0,6.5,10.5 +2022-10-27T21:00,32,70,23.3,0,0,4.1,10.3 +2022-10-27T22:00,30.8,71,22.5,0,0,4,6.7 +2022-10-27T23:00,29.4,70,20.9,0,0,3.8,6.3 +2022-10-28T00:00,27.4,70,19,0,0,4.3,6.9 +2022-10-28T01:00,25.9,70,17.3,0,0,5,7.8 +2022-10-28T02:00,25.1,69,16.3,0,0,5.1,8.5 +2022-10-28T03:00,25,68,15.8,0,0,4.2,8.5 +2022-10-28T04:00,24.6,69,15.9,0,0,3.5,6.7 +2022-10-28T05:00,24.1,72,16.3,0,0,3.4,5.6 +2022-10-28T06:00,24.2,71,16.1,0,0,3.4,5.6 +2022-10-28T07:00,25.7,65,15.5,0,0,4.6,6.7 +2022-10-28T08:00,31.7,52,16,0,0,3.7,8.9 +2022-10-28T09:00,39.8,38,16.3,0,0,2.1,8.5 +2022-10-28T10:00,46.9,26,13.5,0,0,2.9,9.6 +2022-10-28T11:00,52.4,20,12.7,0,0,2.7,10.5 +2022-10-28T12:00,56.3,16,11,0,0,1.7,10.1 +2022-10-28T13:00,58.5,14,9,0,0,0.4,9.2 +2022-10-28T14:00,59.4,13,9.1,0,0,3.5,10.1 +2022-10-28T15:00,58.9,14,10.1,0,0,6.2,12.5 +2022-10-28T16:00,56,17,12,0,0,8.2,14.1 +2022-10-28T17:00,47.8,32,19.4,0,0,4.3,13 +2022-10-28T18:00,50.1,29,19.1,0,0,0.4,5.1 +2022-10-28T19:00,41,43,20.1,0,0,5.1,6 +2022-10-28T20:00,36.8,55,22.1,0,0,2.4,6 +2022-10-28T21:00,34.1,62,22.5,0,0,3.3,5.1 +2022-10-28T22:00,32.1,62,20.7,0,0,3.7,6 +2022-10-28T23:00,30.7,63,19.5,0,0,3.7,6.5 +2022-10-29T00:00,29.2,64,18.5,0,0,4.8,5.8 +2022-10-29T01:00,28.7,62,17.2,0,0,5.5,6.7 +2022-10-29T02:00,28.9,59,16.3,0,0,4.6,6.5 +2022-10-29T03:00,27.4,61,15.8,0,0,6,6.7 +2022-10-29T04:00,27.7,59,15.1,0,0,6.2,7.4 +2022-10-29T05:00,27.9,60,15.8,0,0,7.1,8.1 +2022-10-29T06:00,27.8,60,15.7,0,0,6.8,8.3 +2022-10-29T07:00,30.5,55,16.2,0,0,4,8.1 +2022-10-29T08:00,36.4,45,17,0,0,4,8.5 +2022-10-29T09:00,45.4,34,18.5,0,0,3.2,8.9 +2022-10-29T10:00,52.5,21,14.2,0,0,2.7,9.2 +2022-10-29T11:00,55.9,16,10.5,0,0,3.6,11 +2022-10-29T12:00,58.2,14,8.7,0,0,4.9,12.5 +2022-10-29T13:00,59.1,12,6.4,0,0,6.3,14.1 +2022-10-29T14:00,58.7,12,6.4,0,0,6.2,14.3 +2022-10-29T15:00,57.7,13,7.7,0,0,6.2,13.6 +2022-10-29T16:00,55.7,16,9.9,0,0,4.9,12.3 +2022-10-29T17:00,50.9,22,13.4,0,0,4,7.4 +2022-10-29T18:00,51.9,21,13.2,0,0,2.7,5.1 +2022-10-29T19:00,42,34,15.4,0,0,4.8,5.4 +2022-10-29T20:00,38.1,48,20,0,0,4,6.7 +2022-10-29T21:00,34.5,61,22.3,0,0,3.9,6.9 +2022-10-29T22:00,33.9,60,21.5,0,0,3.4,6.7 +2022-10-29T23:00,32.3,63,21.2,0,0,3.6,5.1 +2022-10-30T00:00,30.2,68,21,0,0,3.2,5.8 +2022-10-30T01:00,29.5,71,21.4,0,0,4.7,5.6 +2022-10-30T02:00,31.9,62,20.4,0,0,3.4,5.8 +2022-10-30T03:00,28.4,71,20.1,0,0,3.4,4.5 +2022-10-30T04:00,27.2,74,19.9,0,0,2.7,4.5 +2022-10-30T05:00,28.6,75,21.6,0,0,2.1,4.3 +2022-10-30T06:00,28.7,75,21.7,0,0,1.4,3.6 +2022-10-30T07:00,29.5,73,21.9,0,0,2.8,4.9 +2022-10-30T08:00,35.3,60,22.9,0,0,3.2,7.2 +2022-10-30T09:00,45,36,19.9,0,0,1.4,7.8 +2022-10-30T10:00,50.6,26,16.9,0,0,1.7,7.8 +2022-10-30T11:00,54.1,22,15.8,0,0,3,10.3 +2022-10-30T12:00,56.4,19,14.4,0,0,3,10.5 +2022-10-30T13:00,57.2,19,15.4,0,0,2.9,10.5 +2022-10-30T14:00,57,18,14,0,0,3,9.8 +2022-10-30T15:00,56.8,19,14.7,0,0,2.7,8.9 +2022-10-30T16:00,55.2,22,16.6,0,0,4.8,8.1 +2022-10-30T17:00,53,23,16.2,0,0,3.8,8.7 +2022-10-30T18:00,49.2,32,20.4,0,0,3.6,6.3 +2022-10-30T19:00,43.4,41,21.2,0,0,3.9,6.5 +2022-10-30T20:00,39.6,53,23.7,0,0,5.3,8.3 +2022-10-30T21:00,38,54,22.8,0,0,7.9,12.8 +2022-10-30T22:00,39,49,21.5,0,0,5.9,12.8 +2022-10-30T23:00,37.9,49,20.6,0,0,4.9,9.6 +2022-10-31T00:00,36.2,51,19.7,0,0,5.9,7.6 +2022-10-31T01:00,35.2,51,18.8,0,0,5.8,8.1 +2022-10-31T02:00,34.9,50,18.1,0,0,4.8,7.6 +2022-10-31T03:00,34,51,17.7,0,0,5.3,8.1 +2022-10-31T04:00,33.4,51,17.2,0,0,5.3,8.3 +2022-10-31T05:00,32.2,55,17.7,0,0,5.3,8.3 +2022-10-31T06:00,31.4,55,16.9,0,0,6.7,8.3 +2022-10-31T07:00,34.2,48,16.5,0,0,4.8,8.3 +2022-10-31T08:00,42.7,36,17.4,0,0,5.1,9.4 +2022-10-31T09:00,50.4,27,17.6,0,0,5.7,11.9 +2022-10-31T10:00,56.7,20,16,0,0,4.4,12.1 +2022-10-31T11:00,60.7,16,14.9,0,0,3,11.4 +2022-10-31T12:00,63.3,14,13,0,0,1.7,10.1 +2022-10-31T13:00,64.7,14,13.6,0,0,1.8,8.7 +2022-10-31T14:00,65.2,15,16.3,0,0,5.8,13 +2022-10-31T15:00,64.5,16,16.6,0,0,8.1,15.4 +2022-10-31T16:00,62.3,17,16.3,0,0,7,15.4 +2022-10-31T17:00,54.2,24,18.3,0,0,6.7,11 +2022-10-31T18:00,53.4,28,21.3,0,0,7.8,10.7 +2022-10-31T19:00,51.7,31,22,0,0,9.4,16.6 +2022-10-31T20:00,49.7,33,22,0,0,8.9,15.4 +2022-10-31T21:00,47,37,22.3,0,0,6.3,14.1 +2022-10-31T22:00,44.2,41,22.2,0,0,5.7,10.1 +2022-10-31T23:00,41.7,47,22.7,0,0,5.2,9.2 +2022-11-01T00:00,39.3,53,23.5,0,0,4.3,8.5 +2022-11-01T01:00,37.3,58,23.9,0,0,5.1,6.7 +2022-11-01T02:00,36.4,61,24.1,0,0,4.4,6.7 +2022-11-01T03:00,34.5,65,24.1,0,0,5.5,6.7 +2022-11-01T04:00,33.4,68,24.2,0,0,5.6,6.9 +2022-11-01T05:00,33.9,65,23.3,0,0,4.7,6.7 +2022-11-01T06:00,33.1,66,22.9,0,0,4.5,6.5 +2022-11-01T07:00,34.7,60,22.4,0,0,3.7,6.5 +2022-11-01T08:00,41.3,47,22.4,0,0,4.5,8.7 +2022-11-01T09:00,50.5,33,22.5,0,0,4.8,10.5 +2022-11-01T10:00,59.1,23,21.5,0,0,5.4,12.5 +2022-11-01T11:00,64.9,17,18.6,0,0,5.9,13.2 +2022-11-01T12:00,67.7,15,18.2,0,0,4.6,13.4 +2022-11-01T13:00,69.7,14,18.5,0,0,2.4,12.1 +2022-11-01T14:00,70.4,13,17.8,0,0,0.3,9.2 +2022-11-01T15:00,70.5,13,17.1,0,0,2.2,6.9 +2022-11-01T16:00,67.5,16,20.1,0,0,7.7,12.3 +2022-11-01T17:00,57.5,29,25.1,0,0,8.2,13.2 +2022-11-01T18:00,61.7,24,25,0,0,4.1,9.6 +2022-11-01T19:00,54.1,34,26.4,0,0,4.1,4.9 +2022-11-01T20:00,47.8,46,28,0,0,3.7,7.2 +2022-11-01T21:00,44.4,54,28.9,0,0,3.6,6 +2022-11-01T22:00,44.1,54,28.6,0,0,4,6 +2022-11-01T23:00,43.6,49,25.6,0,0,5.6,8.5 +2022-11-02T00:00,44.5,42,22.6,0,0,7.1,11.2 +2022-11-02T01:00,45.8,37,20.8,0,0,7.4,12.1 +2022-11-02T02:00,47.8,33,19.9,0,0,8.4,13.4 +2022-11-02T03:00,46.6,34,19.9,0,0,7.8,13.4 +2022-11-02T04:00,42.9,39,19.7,0,0,6.4,12.3 +2022-11-02T05:00,42.8,41,20.5,0,0,9.3,10.3 +2022-11-02T06:00,43.3,39,20.2,0,0,7.6,15.2 +2022-11-02T07:00,40.6,45,20.8,0,0,3.7,12.3 +2022-11-02T08:00,46.9,38,22.6,0,0,4.3,7.8 +2022-11-02T09:00,55.5,27,21.7,0,0,3.4,7.8 +2022-11-02T10:00,60.9,21,20.5,0,0,3.9,9.8 +2022-11-02T11:00,64.3,17,17.9,0,0,3.7,10.7 +2022-11-02T12:00,66.5,15,16.9,0,0,5.2,12.5 +2022-11-02T13:00,68,13,15.2,0,0,5.2,13.4 +2022-11-02T14:00,68.5,11,12.2,0,0,4.7,12.8 +2022-11-02T15:00,69,11,12.5,0,0,6.6,12.8 +2022-11-02T16:00,66.9,12,13.5,0,0,2.7,12.5 +2022-11-02T17:00,58.6,22,19.7,0,0,5.7,10.1 +2022-11-02T18:00,53.1,28,20.6,0,0,5.4,9.4 +2022-11-02T19:00,47.1,38,22.6,0,0,5.3,8.9 +2022-11-02T20:00,47.1,36,21.8,0,0,5.6,8.5 +2022-11-02T21:00,47.5,32,18.8,0,0,8.9,13.6 +2022-11-02T22:00,44.7,35,18.6,0,0,10,16.6 +2022-11-02T23:00,42.6,37,18,0,0,8.9,15.9 +2022-11-03T00:00,42.3,37,18,0,0,8.8,14.1 +2022-11-03T01:00,41.9,38,18.4,0,0,8.1,15 +2022-11-03T02:00,40,44,19.8,0,0,6.5,13.2 +2022-11-03T03:00,39.2,47,20.8,0,0,6.5,11 +2022-11-03T04:00,37.9,51,21.4,0,0,6.2,10.7 +2022-11-03T05:00,36.3,57,22.7,0,0,13,10.3 +2022-11-03T06:00,35.8,57,21.9,0,0,6.1,20.4 +2022-11-03T07:00,35.2,62,23.4,0,0,8.5,13.4 +2022-11-03T08:00,37.1,62,25.2,0,0,7.9,14.5 +2022-11-03T09:00,39.4,55,24.6,0,0,6.5,15 +2022-11-03T10:00,40.4,52,24,0,0,6,14.3 +2022-11-03T11:00,40.3,51,23.4,0,0,7.7,15.9 +2022-11-03T12:00,42.5,45,22.6,0,0,7.2,16.6 +2022-11-03T13:00,41.6,46,22.5,0,0,7.7,15.9 +2022-11-03T14:00,42.6,44,22.4,0,0,8.8,17.4 +2022-11-03T15:00,40.7,47,22.1,0,0,9,17 +2022-11-03T16:00,39.8,47,21.5,0,0,6.9,16.3 +2022-11-03T17:00,33.1,80,27.6,0,0.028,9.4,14.8 +2022-11-03T18:00,32.2,83,27.5,0,0.11,10,17.9 +2022-11-03T19:00,31.8,77,25.3,0,0.138,9.1,17.2 +2022-11-03T20:00,30.8,76,24.1,0,0.083,7.1,15.7 +2022-11-03T21:00,30.6,76,23.8,0,0.055,6.1,13 +2022-11-03T22:00,30,76,23.5,0,0,5.1,11 +2022-11-03T23:00,29.6,78,23.5,0,0,4.2,9.6 +2022-11-04T00:00,28.4,83,23.8,0,0.028,3.5,8.5 +2022-11-04T01:00,28.6,81,23.5,0,0,4,7.6 +2022-11-04T02:00,28.7,80,23.2,0,0,4.2,8.3 +2022-11-04T03:00,28.7,79,23,0,0.028,3.9,8.7 +2022-11-04T04:00,28.5,76,22,0,0,3.4,7.6 +2022-11-04T05:00,28,78,22,0,0,1.9,7.2 +2022-11-04T06:00,27.9,77,21.6,0,0,1.1,4.5 +2022-11-04T07:00,27.5,79,21.8,0,0,3.5,7.2 +2022-11-04T08:00,28.5,75,21.7,0,0,2.9,7.8 +2022-11-04T09:00,31.7,65,21.2,0,0,3.3,9.6 +2022-11-04T10:00,36.1,51,19.8,0,0,4.7,12.3 +2022-11-04T11:00,39.7,39,16.9,0,0,4.4,13.2 +2022-11-04T12:00,42.6,34,16.4,0,0,4.1,13 +2022-11-04T13:00,45.4,24,10.5,0,0,3.8,12.3 +2022-11-04T14:00,46.5,14,-0.9,0,0,12.8,23 +2022-11-04T15:00,45.2,17,2.3,0,0,10.5,24.2 +2022-11-04T16:00,43.8,19,4.1,0,0,5.7,19 +2022-11-04T17:00,37.5,28,7.4,0,0,6.7,10.1 +2022-11-04T18:00,36.1,32,9.1,0,0,11,17.4 +2022-11-04T19:00,35.8,34,10.4,0,0,9.3,17.7 +2022-11-04T20:00,38.1,33,11.2,0,0,4.1,14.5 +2022-11-04T21:00,34.6,38,11.8,0,0,6.4,10.5 +2022-11-04T22:00,34.2,39,11.8,0,0,7.7,13 +2022-11-04T23:00,32.5,42,12.2,0,0,11.2,15.9 +2022-11-05T00:00,31.2,46,13,0,0,10.6,17.9 +2022-11-05T01:00,31.8,47,14.1,0,0,10.5,15.4 +2022-11-05T02:00,31.1,50,14.8,0,0,9.7,15.2 +2022-11-05T03:00,31.6,52,16,0,0,5.8,14.1 +2022-11-05T04:00,35.2,48,17.5,0,0,4.5,9.2 +2022-11-05T05:00,38.2,46,19,0,0,4.6,6.5 +2022-11-05T06:00,39.2,48,21,0,0,3.5,6.3 +2022-11-05T07:00,36.5,55,21.8,0,0,4,5.1 +2022-11-05T08:00,40.6,46,21.6,0,0,4.2,8.1 +2022-11-05T09:00,45.1,39,21.8,0,0,1.7,7.2 +2022-11-05T10:00,50.3,32,21.8,0,0,8.4,13.4 +2022-11-05T11:00,55,26,20.5,0,0,14.1,22.8 +2022-11-05T12:00,56.9,25,21,0,0,13.3,24.6 +2022-11-05T13:00,57.4,24,21.2,0,0,3.4,22.8 +2022-11-05T14:00,58,24,21.2,0,0,6.8,14.3 +2022-11-05T15:00,58.3,24,21.2,0,0,12,20.8 +2022-11-05T16:00,56.5,26,22.1,0,0,14.1,24.6 +2022-11-05T17:00,49,33,21.5,0,0,7.7,22.6 +2022-11-05T18:00,49.9,35,23.5,0,0,3.8,9.2 +2022-11-05T19:00,48.4,40,24.9,0,0,3.2,6 +2022-11-05T20:00,45.7,46,25.9,0,0,3.5,5.6 +2022-11-05T21:00,43,54,27.3,0,0,4,6.9 +2022-11-05T22:00,40.7,61,28.1,0,0,2.7,6.7 +2022-11-05T23:00,38.2,67,28.1,0,0,3.5,4.5 +2022-11-06T00:00,37.5,69,28.4,0,0,2.6,4.7 +2022-11-06T01:00,36.7,72,28.4,0,0,2.4,4.5 +2022-11-06T02:00,37.1,70,28.4,0,0,1.9,3.4 +2022-11-06T03:00,37.9,66,27.7,0,0,0.8,5.6 +2022-11-06T04:00,33.4,78,27.2,0,0,6,6.9 +2022-11-06T05:00,36.4,69,27.1,0,0,4.2,6.9 +2022-11-06T06:00,37.8,64,26.8,0,0,2.9,4.9 +2022-11-06T07:00,37.3,65,26.7,0,0,3.4,4.9 +2022-11-06T08:00,39.7,58,26.3,0,0,3.9,6.9 +2022-11-06T09:00,41,53,25.2,0,0,5.1,9.4 +2022-11-06T10:00,42.5,42,21,0,0,6.5,11.9 +2022-11-06T11:00,46,28,15,0,0,8.9,16.6 +2022-11-06T12:00,46.7,27,14.5,0,0,11.6,20.8 +2022-11-06T13:00,46.2,27,14.1,0,0,9.6,20.8 +2022-11-06T14:00,46.9,25,13.2,0,0,12,20.4 +2022-11-06T15:00,45.1,26,12.6,0,0,13.9,23 +2022-11-06T16:00,43.3,29,13.2,0,0,10.8,22.8 +2022-11-06T17:00,44,38,19.8,0,0,5.1,17.7 +2022-11-06T18:00,43.1,37,18.5,0,0,4.3,8.9 +2022-11-06T19:00,37.6,46,18.4,0,0,4.5,6.5 +2022-11-06T20:00,36.3,54,21.3,0,0,3.6,5.8 +2022-11-06T21:00,37.9,51,21.2,0,0,2.7,5.8 +2022-11-06T22:00,38.8,46,19.6,0,0,0.8,4.9 +2022-11-06T23:00,34.2,58,20.8,0,0,6,7.2 +2022-11-07T00:00,34.4,59,21.6,0,0,5.1,8.7 +2022-11-07T01:00,34.7,60,22.4,0,0,6.3,10.1 +2022-11-07T02:00,33.8,65,23.2,0,0,6.3,10.5 +2022-11-07T03:00,32.3,71,23.8,0,0,5.1,10.3 +2022-11-07T04:00,30.4,77,24.1,0,0,4.1,8.3 +2022-11-07T05:00,26.8,78,20.9,0,0,3.8,6.5 +2022-11-07T06:00,27.1,72,19.3,0,0,5.5,8.9 +2022-11-07T07:00,26.2,75,19.4,0,0,6.4,9.4 +2022-11-07T08:00,29.3,67,19.9,0,0,4.5,11.2 +2022-11-07T09:00,33.4,61,21.2,0,0,3.4,9.8 +2022-11-07T10:00,39,51,22.5,0,0,2.5,9.8 +2022-11-07T11:00,46.9,42,24.8,0,0,0.8,9.6 +2022-11-07T12:00,54.2,37,28.8,0,0,5,12.1 +2022-11-07T13:00,58,32,28.6,0,0,8.5,16.3 +2022-11-07T14:00,60.4,29,28,0,0,13,22.6 +2022-11-07T15:00,60.3,29,27.5,0,0,15.5,26.2 +2022-11-07T16:00,57.4,31,27.3,0,0,13.3,26.2 +2022-11-07T17:00,44.9,49,26.7,0,0,4.8,22.4 +2022-11-07T18:00,43.3,52,27,0,0,4,7.4 +2022-11-07T19:00,43.1,53,27,0,0,3.4,4.9 +2022-11-07T20:00,42.2,54,26.8,0,0,1.6,4.3 +2022-11-07T21:00,37.8,66,27.5,0,0,2.3,3.8 +2022-11-07T22:00,38.1,66,27.9,0,0,2.6,3.8 +2022-11-07T23:00,37,67,27.2,0,0,3.7,5.6 +2022-11-08T00:00,37.4,58,24,0,0,6,9.4 +2022-11-08T01:00,40.6,47,22.1,0,0,9.5,14.3 +2022-11-08T02:00,43.3,44,22.8,0,0,12.1,19.2 +2022-11-08T03:00,43.3,45,23.6,0,0,13.1,20.8 +2022-11-08T04:00,41.9,50,24.4,0,0,13.5,21.5 +2022-11-08T05:00,41.3,48,22.9,0,0,10.7,21.7 +2022-11-08T06:00,41.5,47,22.8,0,0,10.8,17.4 +2022-11-08T07:00,41.5,46,22.4,0,0,11.6,18.1 +2022-11-08T08:00,46.8,38,22.6,0,0,13.3,20.6 +2022-11-08T09:00,55.9,28,23.5,0,0,13.2,23.7 +2022-11-08T10:00,62,22,22.9,0,0,15.4,25.7 +2022-11-08T11:00,65.4,19,21.9,0,0,16.8,28.9 +2022-11-08T12:00,67.2,18,22.5,0,0,17.6,30.6 +2022-11-08T13:00,69.2,16,20.8,0,0,16,30.2 +2022-11-08T14:00,69.7,15,19.3,0,0,13.4,27.7 +2022-11-08T15:00,69.4,15,19.3,0,0,11.7,23.5 +2022-11-08T16:00,66.3,16,18.8,0,0,13.2,20.6 +2022-11-08T17:00,63.9,18,19,0,0,2.5,23.3 +2022-11-08T18:00,52.9,28,20.9,0,0,4.5,5.6 +2022-11-08T19:00,47.5,38,23.4,0,0,6.7,7.8 +2022-11-08T20:00,48.7,33,21.1,0,0,7.4,11.2 +2022-11-08T21:00,48.2,31,18.7,0,0,8.6,13.9 +2022-11-08T22:00,44.8,36,19.4,0,0,6.8,13.9 +2022-11-08T23:00,43.3,38,19.6,0,0,7,11.9 +2022-11-09T00:00,40.4,43,19.8,0,0,5.5,11.4 +2022-11-09T01:00,38.1,48,20.4,0,0,5,8.7 +2022-11-09T02:00,36.8,52,20.7,0,0,4.9,9.2 +2022-11-09T03:00,33,62,21.3,0,0,3.6,7.6 +2022-11-09T04:00,32.9,65,22.4,0,0,6,9.4 +2022-11-09T05:00,30,86,26.4,0,0,5,9.4 +2022-11-09T06:00,28.2,95,26.9,0,0,5.3,6.3 +2022-11-09T07:00,29.2,97,28.6,0,0,3,6 +2022-11-09T08:00,29.8,92,27.8,0,0,3.8,9.2 +2022-11-09T09:00,30.7,89,27.8,0,0,6.4,13.4 +2022-11-09T10:00,37.9,65,27,0,0,7.2,15 +2022-11-09T11:00,45.9,47,26.6,0,0,8.7,17.4 +2022-11-09T12:00,52.1,37,26.5,0,0,10.9,20.8 +2022-11-09T13:00,59.8,29,27.3,0,0,5.4,20.6 +2022-11-09T14:00,67.3,11,10.9,0,0,11.6,19.5 +2022-11-09T15:00,68,8,4.2,0,0,19.5,30.9 +2022-11-09T16:00,65.7,10,8.4,0,0,17,32.4 +2022-11-09T17:00,42.3,52,26,0,0,6.8,28.9 +2022-11-09T18:00,39.8,58,26.4,0,0,11.7,18.3 +2022-11-09T19:00,38.3,65,27.5,0,0,9.6,20.8 +2022-11-09T20:00,39.3,67,29.1,0,0,5.9,15 +2022-11-09T21:00,38.9,73,30.9,0,0,7.1,10.5 +2022-11-09T22:00,39.4,76,32.4,0,0,7.5,17 +2022-11-09T23:00,39.7,75,32.4,0.004,0,5.7,11.6 +2022-11-10T00:00,37.2,84,32.7,0,0,9.1,15.4 +2022-11-10T01:00,36.8,85,32.6,0,0,4.1,14.1 +2022-11-10T02:00,35.9,86,32.1,0,0,1.4,6.3 +2022-11-10T03:00,35,82,30.1,0,0,4.2,6.3 +2022-11-10T04:00,32.6,48,15.1,0,0,6.5,11.6 +2022-11-10T05:00,29.7,51,13.9,0,0,4.9,10.7 +2022-11-10T06:00,25.2,64,14.5,0,0,4.9,7.6 +2022-11-10T07:00,27.2,59,14.7,0,0,2.9,6.7 +2022-11-10T08:00,31.2,51,15.3,0,0,4,6.9 +2022-11-10T09:00,39.2,29,9.2,0,0,7.8,13.9 +2022-11-10T10:00,42.7,20,4.7,0,0,5.6,15.9 +2022-11-10T11:00,44.9,19,5.2,0,0,5.4,13.2 +2022-11-10T12:00,46.7,17,4.6,0,0,5.8,14.8 +2022-11-10T13:00,48.1,16,4.2,0,0,2.5,14.1 +2022-11-10T14:00,48.6,16,4.6,0,0,6,13.4 +2022-11-10T15:00,48,18,6,0,0,9.8,17.7 +2022-11-10T16:00,44.9,22,8.4,0,0,18.6,29.5 +2022-11-10T17:00,40.9,28,10.2,0,0,15.4,33.1 +2022-11-10T18:00,34.6,46,15.9,0,0,16.4,28.4 +2022-11-10T19:00,31.5,57,18.1,0,0,7.8,26.4 +2022-11-10T20:00,30.4,60,18.1,0,0,4.3,13.4 +2022-11-10T21:00,30.6,60,18.3,0,0,1,7.4 +2022-11-10T22:00,30.3,61,18.5,0,0,2.1,5.1 +2022-11-10T23:00,28.4,67,18.7,0,0,2.1,4.9 +2022-11-11T00:00,28.2,68,19.1,0,0,3,4.7 +2022-11-11T01:00,27.7,70,19.1,0,0,3.1,5.1 +2022-11-11T02:00,26.6,73,19.1,0,0,3.2,5.1 +2022-11-11T03:00,25.8,74,18.7,0,0,3.8,6.5 +2022-11-11T04:00,23.5,79,18,0,0,3.4,6 +2022-11-11T05:00,23.9,77,17.8,0,0,2.5,8.9 +2022-11-11T06:00,23.5,74,16.4,0,0,3.8,6.3 +2022-11-11T07:00,24.2,68,15.2,0,0,4.1,8.7 +2022-11-11T08:00,25.3,65,15.2,0,0,3.6,8.5 +2022-11-11T09:00,27.1,60,15,0,0,3,8.5 +2022-11-11T10:00,29.8,51,13.8,0,0,3.7,10.7 +2022-11-11T11:00,31.9,43,12.1,0,0,2.3,11 +2022-11-11T12:00,34.3,37,10.6,0,0,1.1,9.8 +2022-11-11T13:00,36.3,32,9.1,0,0,2.9,10.5 +2022-11-11T14:00,37.8,28,7.5,0,0,5,12.3 +2022-11-11T15:00,37.9,27,7.1,0,0,6.3,13.4 +2022-11-11T16:00,36.5,29,7.4,0,0,5.7,13.2 +2022-11-11T17:00,32.2,44,12.6,0,0,3.6,10.3 +2022-11-11T18:00,29.6,51,13.5,0,0,4.7,6 +2022-11-11T19:00,31.8,44,12.4,0,0,2.3,5.6 +2022-11-11T20:00,28.6,51,12.7,0,0,3.1,3.8 +2022-11-11T21:00,24.8,65,14.7,0,0,4.6,5.8 +2022-11-11T22:00,23.4,76,16.8,0,0,4.2,5.8 +2022-11-11T23:00,21.9,82,17.3,0,0,4.1,5.8 +2022-11-12T00:00,21.4,83,17,0,0,3.5,5.4 +2022-11-12T01:00,21.1,81,16.2,0,0,3.1,4.9 +2022-11-12T02:00,20.9,79,15.4,0,0,3.5,5.6 +2022-11-12T03:00,21.3,75,14.5,0,0,3.7,5.6 +2022-11-12T04:00,22,67,12.8,0,0,4,6.3 +2022-11-12T05:00,21.3,69,12.8,0,0,3.9,6.3 +2022-11-12T06:00,23.6,61,12.1,0,0,2.1,4 +2022-11-12T07:00,22,66,12.3,0,0,3.5,4.5 +2022-11-12T08:00,23.5,65,13.4,0,0,2.5,6.5 +2022-11-12T09:00,27.2,55,13,0,0,2.7,8.7 +2022-11-12T10:00,32,39,10,0,0,2.6,9.6 +2022-11-12T11:00,37,28,6.4,0,0,2.7,9.8 +2022-11-12T12:00,40.7,21,4,0,0,3.8,11 +2022-11-12T13:00,43.5,19,3.5,0,0,4.1,11.2 +2022-11-12T14:00,44.9,18,4.1,0,0,4.6,11 +2022-11-12T15:00,44.1,20,5.4,0,0,6.3,11.2 +2022-11-12T16:00,38.2,28,7.6,0,0,6.8,11.4 +2022-11-12T17:00,36.5,36,12.2,0,0,7.4,10.7 +2022-11-12T18:00,34,42,13.4,0,0,4.8,12.1 +2022-11-12T19:00,35,41,13.7,0,0,4.6,8.3 +2022-11-12T20:00,29.9,50,13.7,0,0,4.9,5.6 +2022-11-12T21:00,28,55,14,0,0,5.8,7.4 +2022-11-12T22:00,31.6,47,13.5,0,0,3,7.2 +2022-11-12T23:00,29.6,49,12.9,0,0,2.2,3.8 +2022-11-13T00:00,25.1,57,11.9,0,0,1.6,2.9 +2022-11-13T01:00,23.4,56,10,0,0,2.5,3.4 +2022-11-13T02:00,23.5,52,8.4,0,0,2.1,3.4 +2022-11-13T03:00,25.9,46,7.7,0,0,1.6,2.7 +2022-11-13T04:00,24.8,47,7.5,0,0,1.8,2 +2022-11-13T05:00,21.7,58,9.1,0,0,4.5,3.8 +2022-11-13T06:00,21.7,59,9.7,0,0,4.1,5.8 +2022-11-13T07:00,22.5,56,9.1,0,0,3.4,5.8 +2022-11-13T08:00,29.9,38,7.3,0,0,4.6,8.5 +2022-11-13T09:00,37,24,3.6,0,0,5,10.5 +2022-11-13T10:00,42.9,17,0.9,0,0,6.2,12.8 +2022-11-13T11:00,46.8,14,-0.1,0,0,5.5,13 +2022-11-13T12:00,49.5,14,2.3,0,0,7.1,13.6 +2022-11-13T13:00,49.2,16,5.2,0,0,10.6,18.1 +2022-11-13T14:00,45.8,20,7.3,0,0,12.9,22.1 +2022-11-13T15:00,44.7,21,7.6,0,0,8.9,21.9 +2022-11-13T16:00,42.4,26,9.5,0,0,4.9,15 +2022-11-13T17:00,37.8,33,11.1,0,0,9.2,13.4 +2022-11-13T18:00,35.7,30,7,0,0,10,16.8 +2022-11-13T19:00,33,33,7.1,0,0,9.6,16.3 +2022-11-13T20:00,32.4,34,7,0,0,9.3,15.9 +2022-11-13T21:00,30.2,40,8.6,0,0,8.8,15.4 +2022-11-13T22:00,27.2,51,11.5,0,0,5.7,14.3 +2022-11-13T23:00,27.1,56,13.4,0,0,4.5,9.2 +2022-11-14T00:00,26.9,61,15.3,0,0,5.3,9.4 +2022-11-14T01:00,26.4,65,16.3,0,0,3.6,8.3 +2022-11-14T02:00,26.3,66,16.3,0,0,2.2,5.8 +2022-11-14T03:00,23.9,74,16.7,0,0,3.4,4.7 +2022-11-14T04:00,24.1,73,16.5,0,0,1.8,4.3 +2022-11-14T05:00,21.2,69,12.6,0,0,4.3,3.1 +2022-11-14T06:00,22.9,65,12.8,0,0,2.5,4.9 +2022-11-14T07:00,20.9,70,12.7,0,0,3.1,3.4 +2022-11-14T08:00,24.5,59,12.3,0,0,2.7,6.5 +2022-11-14T09:00,27.6,52,12.1,0,0,3.1,8.7 +2022-11-14T10:00,30.4,44,10.9,0,0,4.2,11 +2022-11-14T11:00,33.2,37,9.6,0,0,2.4,11.4 +2022-11-14T12:00,34.2,32,7.6,0,0,2.1,9.6 +2022-11-14T13:00,35.2,30,7.2,0,0,4.3,11.6 +2022-11-14T14:00,35.4,29,6.6,0,0,5,12.5 +2022-11-14T15:00,35.3,29,6.2,0,0,4.6,12.1 +2022-11-14T16:00,34.3,28,4.6,0,0,4.5,10.7 +2022-11-14T17:00,32.5,36,8.2,0,0,2.1,7.4 +2022-11-14T18:00,31.2,39,8.9,0,0,1.2,2.7 +2022-11-14T19:00,28.2,49,11.7,0,0,1.8,2.5 +2022-11-14T20:00,28.3,58,15.5,0,0.083,0.9,3.1 +2022-11-14T21:00,27.8,63,17,0,0.083,2.1,4.3 +2022-11-14T22:00,27.1,67,17.6,0,0.055,3.5,6 +2022-11-14T23:00,26.9,70,18.2,0,0.055,2,6.3 +2022-11-15T00:00,26,73,18.4,0,0,3,4.3 +2022-11-15T01:00,23.7,81,18.8,0,0,3.7,5.4 +2022-11-15T02:00,23.5,83,19.1,0,0,2.7,6 +2022-11-15T03:00,23.5,82,18.9,0,0.138,2.2,3.8 +2022-11-15T04:00,24.1,83,19.6,0,0.083,1.8,3.8 +2022-11-15T05:00,25.3,79,19.8,0,0.11,4.7,4.5 +2022-11-15T06:00,24.2,81,19.3,0,0.055,3.2,7.6 +2022-11-15T07:00,24.7,77,18.4,0,0.055,3.7,6.7 +2022-11-15T08:00,25.9,71,17.9,0,0.028,3.9,8.1 +2022-11-15T09:00,28,64,17.3,0,0,2.7,9.2 +2022-11-15T10:00,29.8,50,13.4,0,0,0.2,8.7 +2022-11-15T11:00,31,44,11.5,0,0,1.8,8.7 +2022-11-15T12:00,33.4,38,10.7,0,0,5.1,13 +2022-11-15T13:00,35,30,6.7,0,0,5.2,13.2 +2022-11-15T14:00,34.6,29,5.5,0,0,7.9,16.1 +2022-11-15T15:00,33.9,32,6.8,0,0,7.1,16.1 +2022-11-15T16:00,32.8,30,4.7,0,0,4,14.1 +2022-11-15T17:00,27.3,42,7.3,0,0,3,6.9 +2022-11-15T18:00,26.5,49,9.9,0,0,4.2,6.7 +2022-11-15T19:00,24.6,51,8.9,0,0,5.5,8.5 +2022-11-15T20:00,25.2,38,3.3,0,0,8.5,13 +2022-11-15T21:00,25.4,36,2,0,0,9.5,15.2 +2022-11-15T22:00,24.9,37,2.3,0,0,7.2,15.2 +2022-11-15T23:00,21.7,43,2.5,0,0,7.2,11.4 +2022-11-16T00:00,21.6,42,2.2,0,0,7.1,8.5 +2022-11-16T01:00,22.6,39,1.3,0,0,5.9,8.7 +2022-11-16T02:00,21.6,38,0.1,0,0,6.1,8.3 +2022-11-16T03:00,23,36,-0.2,0,0,5.1,8.1 +2022-11-16T04:00,24.4,35,0.8,0,0,5.4,8.5 +2022-11-16T05:00,24.3,37,1.7,0,0,5.8,8.3 +2022-11-16T06:00,24.9,38,2.6,0,0,5,8.3 +2022-11-16T07:00,23.6,41,3.4,0,0,6.9,8.3 +2022-11-16T08:00,29.5,33,3.9,0,0,2.7,8.3 +2022-11-16T09:00,33.3,28,3.4,0,0,2.6,7.4 +2022-11-16T10:00,36.1,24,2.7,0,0,4.8,11.2 +2022-11-16T11:00,37.9,22,2.5,0,0,5.2,12.8 +2022-11-16T12:00,38.8,22,3.2,0,0,6.5,14.3 +2022-11-16T13:00,39,23,4.1,0,0,8.4,16.3 +2022-11-16T14:00,38.7,24,4.9,0,0,9.2,17.4 +2022-11-16T15:00,38.3,25,5.7,0,0,7.8,17 +2022-11-16T16:00,35.1,35,10.4,0,0,4.1,13.9 +2022-11-16T17:00,31.4,41,10.3,0,0,4.5,5.1 +2022-11-16T18:00,28.4,46,10.2,0,0,6.1,7.4 +2022-11-16T19:00,25.2,54,10.7,0,0,6.1,8.1 +2022-11-16T20:00,23.4,59,11.3,0,0,4.7,7.6 +2022-11-16T21:00,22.8,62,11.8,0,0,3.6,6 +2022-11-16T22:00,22.6,63,12,0,0,3.6,5.1 +2022-11-16T23:00,21.9,65,12.1,0,0,3.4,4.7 +2022-11-17T00:00,21.9,64,11.7,0,0,3,4.5 +2022-11-17T01:00,23.4,59,11,0,0,3.2,4.7 +2022-11-17T02:00,24.6,55,10.9,0,0,2.2,4.3 +2022-11-17T03:00,24.4,55,10.3,0,0,3,4 +2022-11-17T04:00,23.5,55,9.7,0,0,2,4 +2022-11-17T05:00,23.6,52,8.7,0,0,4.3,3.8 +2022-11-17T06:00,22.6,53,7.9,0,0,4.5,6.3 +2022-11-17T07:00,25.1,73,17.8,0,0,8,17 +2022-11-17T08:00,26.2,75,19.5,0,0.11,12.1,19.5 +2022-11-17T09:00,24.3,65,14.1,0,0.055,10.4,20.1 +2022-11-17T10:00,25.2,61,13.6,0,0.028,7.8,17.7 +2022-11-17T11:00,27.1,55,13.3,0,0,7,15.2 +2022-11-17T12:00,27.3,55,13.1,0,0,7.3,15 +2022-11-17T13:00,27.4,54,12.8,0,0,8.1,15.9 +2022-11-17T14:00,27,55,12.7,0,0,8.4,16.1 +2022-11-17T15:00,26.4,56,12.7,0,0,7.9,15.9 +2022-11-17T16:00,24.6,59,12.5,0,0,7.8,14.5 +2022-11-17T17:00,20.7,67,11.6,0,0,6.2,13.2 +2022-11-17T18:00,19.6,72,12.1,0,0.028,7.5,13 +2022-11-17T19:00,18.4,75,11.9,0,0.028,7.9,13.2 +2022-11-17T20:00,18.1,76,11.8,0,0.028,7.6,13.6 +2022-11-17T21:00,17.9,78,12.2,0,0.055,7.1,13.2 +2022-11-17T22:00,17.9,78,12.1,0,0.055,6.5,12.5 +2022-11-17T23:00,17.9,76,11.6,0,0.055,6.7,12.1 +2022-11-18T00:00,17.6,73,10.4,0,0.055,7.7,13.4 +2022-11-18T01:00,17.1,72,9.5,0,0.055,7.8,14.1 +2022-11-18T02:00,16.5,73,9.2,0,0.083,6.5,13.9 +2022-11-18T03:00,16,73,8.8,0,0.083,4.5,11.9 +2022-11-18T04:00,15.5,72,8,0,0.055,4.5,9.2 +2022-11-18T05:00,12.7,69,4.4,0,0.028,5.6,10.5 +2022-11-18T06:00,12.7,68,4.2,0,0.028,5.9,11 +2022-11-18T07:00,12.7,67,3.9,0,0.028,3.8,11 +2022-11-18T08:00,13.5,64,3.6,0,0.028,2.4,7.8 +2022-11-18T09:00,14.8,58,2.8,0,0,1.8,8.3 +2022-11-18T10:00,16.8,52,2.4,0,0,0.8,8.3 +2022-11-18T11:00,19.3,46,2,0,0,1.6,8.9 +2022-11-18T12:00,20.7,44,1.9,0,0,4.8,12.8 +2022-11-18T13:00,21.7,42,2,0,0,7.2,16.1 +2022-11-18T14:00,21.7,42,2,0,0,5.9,16.1 +2022-11-18T15:00,21.6,42,1.8,0,0,3.9,13.6 +2022-11-18T16:00,20.4,44,1.9,0,0,4.5,9.8 +2022-11-18T17:00,14.7,60,3.2,0,0,4.5,8.3 +2022-11-18T18:00,15.8,59,3.8,0,0,2.6,5.4 +2022-11-18T19:00,14.7,61,3.8,0,0,2.5,4 +2022-11-18T20:00,14.4,63,4,0,0,0.3,3.1 +2022-11-18T21:00,14,64,4.1,0,0,1.1,1.8 +2022-11-18T22:00,13.9,63,3.7,0,0,3,4 +2022-11-18T23:00,14,62,3.4,0,0,5,7.2 +2022-11-19T00:00,14.6,59,2.8,0,0,5.2,8.1 +2022-11-19T01:00,15.8,53,1.7,0,0,4.9,8.1 +2022-11-19T02:00,17.1,47,0.3,0,0,4.4,7.6 +2022-11-19T03:00,16.7,46,-0.7,0,0,3.9,6.9 +2022-11-19T04:00,16.5,45,-1.3,0,0,3.9,5.6 +2022-11-19T05:00,11.8,55,-1.4,0,0,7.2,5.4 +2022-11-19T06:00,16.3,45,-1.4,0,0,4.5,8.7 +2022-11-19T07:00,16.9,44,-1.2,0,0,4.4,7.6 +2022-11-19T08:00,20.8,38,-0.9,0,0,4.8,8.7 +2022-11-19T09:00,26.2,30,-1,0,0,3.8,9.4 +2022-11-19T10:00,32.7,23,-0.8,0,0,4,10.3 +2022-11-19T11:00,37.1,19,-1.6,0,0,3.7,10.7 +2022-11-19T12:00,40.1,16,-2,0,0,2.5,10.5 +2022-11-19T13:00,41.8,15,-2,0,0,0.9,9.2 +2022-11-19T14:00,42.2,16,-1.5,0,0,1.4,6.9 +2022-11-19T15:00,41.8,16,-0.8,0,0,3.2,6.5 +2022-11-19T16:00,37.9,20,0.3,0,0,5,5.6 +2022-11-19T17:00,24.4,45,6.3,0,0,5,5.8 +2022-11-19T18:00,22.9,52,7.7,0,0,3.2,6.3 +2022-11-19T19:00,20.3,59,8.4,0,0,3.7,4.9 +2022-11-19T20:00,21.1,55,7.3,0,0,4.8,7.2 +2022-11-19T21:00,20.8,50,4.9,0,0,4.5,7.8 +2022-11-19T22:00,19.4,52,4.7,0,0,3.5,6.7 +2022-11-19T23:00,19.3,51,4.3,0,0,5.1,7.6 +2022-11-20T00:00,18.8,51,3.6,0,0,5.6,8.1 +2022-11-20T01:00,18.8,45,1,0,0,6.3,9.6 +2022-11-20T02:00,20.2,39,-1,0,0,4.7,9.4 +2022-11-20T03:00,20.6,38,-0.8,0,0,3.6,7.8 +2022-11-20T04:00,20.2,39,-0.9,0,0,5,6 +2022-11-20T05:00,22.2,37,-0.3,0,0,6.1,6 +2022-11-20T06:00,25.6,32,-0.1,0,0,5.8,7.6 +2022-11-20T07:00,23.6,35,0.1,0,0,5.6,6.5 +2022-11-20T08:00,29.2,28,0.3,0,0,3.6,6.7 +2022-11-20T09:00,37,21,0.2,0,0,2.1,6.3 +2022-11-20T10:00,43.1,16,-0.2,0,0,3.8,9.4 +2022-11-20T11:00,46.6,14,-0.6,0,0,4.1,10.3 +2022-11-20T12:00,48.5,13,-0.3,0,0,5.2,11.6 +2022-11-20T13:00,49.2,13,-0.1,0,0,6.1,12.5 +2022-11-20T14:00,48.9,13,-0.4,0,0,6.2,12.5 +2022-11-20T15:00,46.5,13,-1.1,0,0,4.6,11.6 +2022-11-20T16:00,44.1,15,-1.2,0,0,2.8,6.3 +2022-11-20T17:00,41.7,24,7.1,0,0,2.3,5.4 +2022-11-20T18:00,32.8,35,8.4,0,0,4.8,5.4 +2022-11-20T19:00,27.5,45,9.1,0,0,6.3,9.4 +2022-11-20T20:00,25.2,48,8.2,0,0,6.5,8.5 +2022-11-20T21:00,24,53,9.2,0,0,6.1,8.3 +2022-11-20T22:00,23.3,56,9.9,0,0,6.5,7.6 +2022-11-20T23:00,23.4,54,9.3,0,0,5.9,7.8 +2022-11-21T00:00,23.5,52,8.3,0,0,5,6.9 +2022-11-21T01:00,22.8,51,7.4,0,0,4.9,5.8 +2022-11-21T02:00,22.5,49,6.4,0,0,5.5,6.7 +2022-11-21T03:00,23.1,46,5.5,0,0,5,6.7 +2022-11-21T04:00,22.3,46,4.8,0,0,5.2,6.7 +2022-11-21T05:00,19,54,5.1,0,0,6.4,6.7 +2022-11-21T06:00,19.4,54,5.6,0,0,5,7.4 +2022-11-21T07:00,18.7,57,6.1,0,0,4.3,6 +2022-11-21T08:00,23.7,46,5.9,0,0,4.3,7.8 +2022-11-21T09:00,31,32,4.4,0,0,4.9,9.8 +2022-11-21T10:00,38.9,19,-0.2,0,0,3.5,10.5 +2022-11-21T11:00,45.3,13,-3.1,0,0,2,9.4 +2022-11-21T12:00,49,12,-1.8,0,0,6.2,12.5 +2022-11-21T13:00,47.7,18,5.8,0,0,9.3,17 +2022-11-21T14:00,44.9,23,9.6,0,0,9.6,17.7 +2022-11-21T15:00,42.8,24,8.9,0,0,7.9,17 +2022-11-21T16:00,36.2,28,6,0,0,4.8,12.3 +2022-11-21T17:00,30.2,44,10.7,0,0,7.2,9.2 +2022-11-21T18:00,30.1,41,9.1,0,0,8.1,9.4 +2022-11-21T19:00,38.8,27,7.4,0,0,4.5,10.3 +2022-11-21T20:00,29.8,39,8,0,0,2.5,5.1 +2022-11-21T21:00,25.1,53,10.3,0,0,2.9,5.1 +2022-11-21T22:00,22.8,61,11.5,0,0,3.1,4.7 +2022-11-21T23:00,22.6,61,11.1,0,0,3.8,5.4 +2022-11-22T00:00,22.4,60,10.6,0,0,4,5.4 +2022-11-22T01:00,22.5,58,9.8,0,0,4.9,5.8 +2022-11-22T02:00,24.7,51,9.1,0,0,3.6,6 +2022-11-22T03:00,23,52,8.2,0,0,4.1,4.5 +2022-11-22T04:00,23.4,49,6.9,0,0,4.1,6 +2022-11-22T05:00,21.4,52,6.6,0,0,6,8.5 +2022-11-22T06:00,21.4,52,6.6,0,0,4.5,6.9 +2022-11-22T07:00,21.7,49,5.5,0,0,4.4,6.5 +2022-11-22T08:00,26.2,39,4.7,0,0,7.2,11.2 +2022-11-22T09:00,34.3,27,3.9,0,0,5,11.2 +2022-11-22T10:00,42.4,17,0.7,0,0,4.8,10.5 +2022-11-22T11:00,48.4,11,-3,0,0,5.7,12.1 +2022-11-22T12:00,51.7,10,-2.6,0,0,7.3,13.9 +2022-11-22T13:00,52,11,-0.8,0,0,8,15 +2022-11-22T14:00,51.1,13,2.3,0,0,7,14.8 +2022-11-22T15:00,48.3,18,7.3,0,0,4.2,12.5 +2022-11-22T16:00,41.4,27,10,0,0,5.4,7.4 +2022-11-22T17:00,43.2,27,11.5,0,0,2.1,6.3 +2022-11-22T18:00,37.1,34,11.4,0,0,2.7,3.6 +2022-11-22T19:00,28.6,49,11.9,0,0,4.9,5.6 +2022-11-22T20:00,25.6,58,13,0,0,3.7,6.5 +2022-11-22T21:00,25.1,59,12.7,0,0,4.7,6.9 +2022-11-22T22:00,25.2,56,11.7,0,0,4,7.2 +2022-11-22T23:00,24.8,55,10.9,0,0,4.3,6 +2022-11-23T00:00,24.6,54,10.1,0,0,3.8,5.8 +2022-11-23T01:00,23.6,54,9.2,0,0,4.6,6.5 +2022-11-23T02:00,23.8,51,8.2,0,0,4.9,6.7 +2022-11-23T03:00,23.2,51,7.5,0,0,5.5,6.9 +2022-11-23T04:00,22.3,51,6.9,0,0,6.3,7.4 +2022-11-23T05:00,22.3,52,7.2,0,0,5.3,7.4 +2022-11-23T06:00,22.6,49,6.4,0,0,4.9,6.3 +2022-11-23T07:00,25.9,41,5.6,0,0,2.9,5.6 +2022-11-23T08:00,28.4,36,4.9,0,0,3.2,3.8 +2022-11-23T09:00,35.2,27,4.2,0,0,5.1,9.8 +2022-11-23T10:00,44.8,17,3,0,0,0.5,10.1 +2022-11-23T11:00,46.1,18,5.4,0,0,9.2,16.8 +2022-11-23T12:00,48.7,16,4.6,0,0,7.2,17.2 +2022-11-23T13:00,48.8,14,1.7,0,0,7.3,14.3 +2022-11-23T14:00,47.9,16,3.7,0,0,5.7,14.1 +2022-11-23T15:00,45.7,20,7.3,0,0,6.5,10.5 +2022-11-23T16:00,40.2,29,10.8,0,0,6.1,11 +2022-11-23T17:00,38.8,39,16.2,0,0,5.9,13.4 +2022-11-23T18:00,36.3,45,16.9,0,0,5,9.2 +2022-11-23T19:00,31.9,57,18.2,0,0,4.8,8.3 +2022-11-23T20:00,29.7,62,18.2,0,0,6,8.1 +2022-11-23T21:00,30.3,65,19.9,0,0,4.9,7.4 +2022-11-23T22:00,28.6,74,21.4,0,0,5.1,8.9 +2022-11-23T23:00,32.6,62,21.2,0,0,5.9,9.4 +2022-11-24T00:00,28.9,71,20.5,0,0,4.7,9.6 +2022-11-24T01:00,29.2,68,20.1,0,0,5.5,8.9 +2022-11-24T02:00,27.1,75,20.1,0,0,4.1,8.7 +2022-11-24T03:00,28,71,19.9,0,0,3.3,5.4 +2022-11-24T04:00,27.1,73,19.7,0,0,1.3,4.5 +2022-11-24T05:00,28.3,71,20.2,0,0,1.6,2.9 +2022-11-24T06:00,29.7,62,18.2,0,0,3.1,5.4 +2022-11-24T07:00,29.4,56,15.4,0,0,3.6,6.3 +2022-11-24T08:00,30.6,51,14.5,0,0,3.7,6.7 +2022-11-24T09:00,33.4,51,17.2,0,0,4.3,9.2 +2022-11-24T10:00,35,53,19.5,0,0,4.2,10.3 +2022-11-24T11:00,37.4,48,19.7,0,0,5.6,13 +2022-11-24T12:00,39.6,43,18.8,0,0,7.2,15.2 +2022-11-24T13:00,41.2,40,18.6,0,0,9,17.4 +2022-11-24T14:00,42.1,38,18.1,0,0,7.9,17.7 +2022-11-24T15:00,42.2,36,17.2,0,0,4.7,15.4 +2022-11-24T16:00,39.6,43,19.1,0,0,2.7,9.8 +2022-11-24T17:00,34.5,53,19.3,0,0,3.5,6.5 +2022-11-24T18:00,30.4,63,19.2,0,0,4.1,5.8 +2022-11-24T19:00,27.6,68,18.3,0,0,3.9,6 +2022-11-24T20:00,23.7,74,16.8,0,0,4.7,7.6 +2022-11-24T21:00,24.2,66,14.5,0,0,5,7.8 +2022-11-24T22:00,24,61,12.6,0,0,5,8.1 +2022-11-24T23:00,23.9,59,11.8,0,0,4.6,7.8 +2022-11-25T00:00,23.5,59,11.5,0,0,3.7,7.4 +2022-11-25T01:00,23.3,59,11,0,0,3.9,5.6 +2022-11-25T02:00,23.6,56,10,0,0,3.6,5.4 +2022-11-25T03:00,23.2,55,9.3,0,0,4.1,5.4 +2022-11-25T04:00,23.4,53,8.6,0,0,4.7,5.8 +2022-11-25T05:00,22.3,56,9.1,0,0,5.9,6 +2022-11-25T06:00,23.7,52,8.8,0,0,5,6.7 +2022-11-25T07:00,24.2,51,8.5,0,0,5.4,6.3 +2022-11-25T08:00,30.5,39,8.7,0,0,5.4,7.8 +2022-11-25T09:00,38,30,9.5,0,0,4.1,8.9 +2022-11-25T10:00,45.9,22,9.4,0,0,4.1,9.4 +2022-11-25T11:00,51,20,11,0,0,4.2,10.3 +2022-11-25T12:00,53.6,20,13.1,0,0,2.7,10.1 +2022-11-25T13:00,54.9,20,14.6,0,0,2.2,8.3 +2022-11-25T14:00,55.5,21,16,0,0,2.9,7.4 +2022-11-25T15:00,54.6,24,18.1,0,0,3.4,7.2 +2022-11-25T16:00,48.9,34,21.9,0,0,3.8,5.4 +2022-11-25T17:00,50,32,21.1,0,0,2.7,4.5 +2022-11-25T18:00,38.6,50,21.6,0,0,5.9,7.6 +2022-11-25T19:00,33.7,66,23.5,0,0,3.3,7.4 +2022-11-25T20:00,30.1,79,24.3,0,0,4.5,6.9 +2022-11-25T21:00,28.8,81,23.7,0,0,4.1,6.9 +2022-11-25T22:00,28.2,79,22.6,0,0,3.9,6.5 +2022-11-25T23:00,28,75,21.1,0,0,5.1,6.3 +2022-11-26T00:00,28,72,20.2,0,0,5.7,7.2 +2022-11-26T01:00,27.5,72,19.7,0,0,5.7,7.2 +2022-11-26T02:00,27.7,68,18.5,0,0,6.3,7.6 +2022-11-26T03:00,27.7,67,18.2,0,0,6.5,7.8 +2022-11-26T04:00,28.6,63,17.7,0,0,7.4,8.7 +2022-11-26T05:00,35.2,48,17.3,0,0,4.7,8.5 +2022-11-26T06:00,34.7,49,17.3,0,0,1,5.8 +2022-11-26T07:00,30.1,59,17.3,0,0,4,4.5 +2022-11-26T08:00,36.8,44,16.7,0,0,3.2,5.4 +2022-11-26T09:00,43.2,35,17.5,0,0,2.2,5.8 +2022-11-26T10:00,49.7,28,18.3,0,0,3.4,7.6 +2022-11-26T11:00,52.3,27,19,0,0,9,16.1 +2022-11-26T12:00,53.6,24,17.8,0,0,5.6,16.8 +2022-11-26T13:00,55.1,23,17.8,0,0,7.3,13.4 +2022-11-26T14:00,53.3,26,19,0,0,10.7,19.5 +2022-11-26T15:00,52.4,27,19.4,0,0,9,18.8 +2022-11-26T16:00,48.1,33,20.2,0,0,6.9,14.8 +2022-11-26T17:00,43.9,39,20.5,0,0,5.5,11.2 +2022-11-26T18:00,42.1,43,21,0,0,6.9,11 +2022-11-26T19:00,42.4,42,21,0,0,8.6,13.6 +2022-11-26T20:00,41.1,46,21.7,0,0,8.1,13.6 +2022-11-26T21:00,40.2,51,23.4,0,0,7.6,13.4 +2022-11-26T22:00,38.7,56,24.4,0,0,5.4,12.1 +2022-11-26T23:00,37.6,61,25.2,0,0,4.9,8.5 +2022-11-27T00:00,36.3,67,26.2,0,0,4.5,7.8 +2022-11-27T01:00,34.2,74,26.7,0,0,2.9,7.2 +2022-11-27T02:00,29.2,88,26.1,0,0,5,6.3 +2022-11-27T03:00,31.7,81,26.6,0,0,2.7,6 +2022-11-27T04:00,30.7,83,26.2,0,0,2.2,2.9 +2022-11-27T05:00,31.5,80,26.2,0,0,1.8,2.9 +2022-11-27T06:00,29.9,88,26.7,0,0,2.1,3.6 +2022-11-27T07:00,29.1,90,26.6,0,0,1.3,4.5 +2022-11-27T08:00,28.7,92,26.7,0,0,3,4.9 +2022-11-27T09:00,33.7,76,27,0,0,3.4,8.3 +2022-11-27T10:00,39.4,57,25.6,0,0,4.3,10.5 +2022-11-27T11:00,43.9,43,22.8,0,0,5.3,12.3 +2022-11-27T12:00,46.9,35,20.6,0,0,2.7,12.5 +2022-11-27T13:00,49.4,23,13.2,0,0,7.9,15.7 +2022-11-27T14:00,49.2,23,12.9,0,0,8.3,17.9 +2022-11-27T15:00,48.6,24,13,0,0,3.5,16.1 +2022-11-27T16:00,45.1,30,15.5,0,0,4.1,7.8 +2022-11-27T17:00,39.9,36,15.2,0,0,5,10.7 +2022-11-27T18:00,35.3,40,13.5,0,0,4.7,7.8 +2022-11-27T19:00,32.5,44,13.2,0,0,5.7,6.9 +2022-11-27T20:00,30.9,42,10.7,0,0,6.5,8.5 +2022-11-27T21:00,30.6,40,9.1,0,0,6.9,9.6 +2022-11-27T22:00,29,46,10.9,0,0,5.6,8.9 +2022-11-27T23:00,27.6,51,11.7,0,0,4.8,9.2 +2022-11-28T00:00,28,49,11.5,0,0,5.8,8.3 +2022-11-28T01:00,25.4,55,11.6,0,0,7.2,8.7 +2022-11-28T02:00,24.8,57,11.7,0,0,5.1,8.7 +2022-11-28T03:00,24.7,57,11.7,0,0,4.3,6.5 +2022-11-28T04:00,24.2,57,11.1,0,0,3.8,6 +2022-11-28T05:00,30.8,44,11.5,0,0,1.3,5.4 +2022-11-28T06:00,26,54,11.6,0,0,3.2,4.9 +2022-11-28T07:00,25.2,58,12.4,0,0,3.4,5.4 +2022-11-28T08:00,29.8,48,12.7,0,0,5.6,8.3 +2022-11-28T09:00,37.9,35,12.9,0,0,4.9,10.1 +2022-11-28T10:00,46.3,25,12.5,0,0,3.8,9.4 +2022-11-28T11:00,50.3,20,10.7,0,0,2.4,8.9 +2022-11-28T12:00,51.1,21,12.9,0,0,7.7,14.8 +2022-11-28T13:00,50.2,23,14,0,0,13.7,23.5 +2022-11-28T14:00,50.1,22,12.7,0,0,13.1,24.2 +2022-11-28T15:00,49.3,22,12.4,0,0,9,22.4 +2022-11-28T16:00,45.1,30,15.4,0,0,4.1,15.4 +2022-11-28T17:00,40.7,35,15,0,0,3.8,6.7 +2022-11-28T18:00,36.7,41,14.9,0,0,5.1,6.3 +2022-11-28T19:00,33.6,47,15.6,0,0,3.6,6.7 +2022-11-28T20:00,32.1,56,18.2,0,0,11.2,22.1 +2022-11-28T21:00,31.5,64,20.6,0,0,10.8,18.1 +2022-11-28T22:00,28.9,74,21.7,0,0.028,11.5,18.6 +2022-11-28T23:00,27.1,79,21.5,0,0.028,9.2,19 +2022-11-29T00:00,26.2,81,21.2,0,0.028,9,15.4 +2022-11-29T01:00,24.8,81,19.7,0,0.138,9.5,16.1 +2022-11-29T02:00,24,81,19,0,0.083,9.7,16.3 +2022-11-29T03:00,23,84,18.9,0,0.055,12.3,19.7 +2022-11-29T04:00,21.8,84,17.9,0,0.331,13.7,27.1 +2022-11-29T05:00,19.9,81,15,0,0.165,7.6,22.6 +2022-11-29T06:00,19.7,81,14.7,0,0.055,9.8,16.6 +2022-11-29T07:00,19.2,79,13.6,0,0.055,9.1,16.6 +2022-11-29T08:00,18.9,75,12.2,0,0.083,9.5,16.6 +2022-11-29T09:00,19.2,69,10.8,0,0.083,7.3,16.3 +2022-11-29T10:00,19.9,65,10,0,0.083,5,13.9 +2022-11-29T11:00,20.8,61,9.5,0,0.055,2.6,11.4 +2022-11-29T12:00,22.5,52,7.4,0,0.028,1.9,9.8 +2022-11-29T13:00,22.8,50,6.9,0,0,0.9,8.9 +2022-11-29T14:00,23.1,50,7.1,0,0,1.9,7.8 +2022-11-29T15:00,23.3,50,7.5,0,0,3.8,9.2 +2022-11-29T16:00,22.3,53,7.7,0,0,3.7,9.4 +2022-11-29T17:00,16.9,67,7.7,0,0,5.2,6.3 +2022-11-29T18:00,18.3,64,8.2,0,0,4.6,6.5 +2022-11-29T19:00,19,63,8.4,0,0,2.4,5.8 +2022-11-29T20:00,16.5,68,7.7,0,0,3.8,5.4 +2022-11-29T21:00,15,68,6.2,0,0,3,5.8 +2022-11-29T22:00,15.1,58,2.9,0,0,5.2,8.7 +2022-11-29T23:00,16.6,51,1.7,0,0,2.6,7.8 +2022-11-30T00:00,18.6,46,1.4,0,0,2.3,4.7 +2022-11-30T01:00,17.5,46,0.2,0,0,2.7,4.3 +2022-11-30T02:00,17.5,41,-2.1,0,0,3.3,5.4 +2022-11-30T03:00,17.3,39,-3.4,0,0,3.8,6.3 +2022-11-30T04:00,16.7,38,-4.7,0,0,3.9,6.7 +2022-11-30T05:00,13.2,51,-1.4,0,0,2.8,6.5 +2022-11-30T06:00,11.1,57,-1.2,0,0,2.3,5.4 +2022-11-30T07:00,9.6,63,-0.4,0,0,2.2,6.3 +2022-11-30T08:00,11.1,59,-0.6,0,0,2.2,6.9 +2022-11-30T09:00,15.4,49,-0.4,0,0,1.1,6.9 +2022-11-30T10:00,20.3,42,1,0,0,4.1,11.4 +2022-11-30T11:00,26.1,36,2.8,0,0,4.8,12.5 +2022-11-30T12:00,29.5,35,5.2,0,0,6.5,14.5 +2022-11-30T13:00,30.1,39,8,0,0,7.7,16.3 +2022-11-30T14:00,30.9,40,9.3,0,0,6.5,16.1 +2022-11-30T15:00,30.9,41,10,0,0,6,13.9 +2022-11-30T16:00,27.2,49,10.5,0,0,3.7,11.6 +2022-11-30T17:00,16,85,12.2,0,0,2.9,6.3 +2022-11-30T18:00,16.5,82,12.1,0,0,3.5,6 +2022-11-30T19:00,17.9,79,12.4,0,0,2.2,4.9 +2022-11-30T20:00,17.4,81,12.5,0,0,2.8,4.3 +2022-11-30T21:00,16.8,82,12.4,0,0,2.3,4.3 +2022-11-30T22:00,17.2,79,11.8,0,0,0.5,5.6 +2022-11-30T23:00,18.8,70,10.7,0,0,2.4,3.4 +2022-12-01T00:00,21.4,59,9.4,0,0,4.6,5.8 +2022-12-01T01:00,25.6,49,9.1,0,0,3.7,5.6 +2022-12-01T02:00,25.4,50,9.1,0,0,3.7,4.5 +2022-12-01T03:00,26.2,48,9.1,0,0,1.8,4.3 +2022-12-01T04:00,22,58,9.6,0,0,3.9,5.4 +2022-12-01T05:00,19,72,11.6,0,0,6.9,6.7 +2022-12-01T06:00,21.3,67,11.9,0,0,6,8.3 +2022-12-01T07:00,24.5,57,11.5,0,0,4.6,7.2 +2022-12-01T08:00,27.4,51,11.6,0,0,3.7,6.3 +2022-12-01T09:00,36.8,38,13.4,0,0,7,11.4 +2022-12-01T10:00,46.1,28,15.1,0,0,7.4,13 +2022-12-01T11:00,52.2,22,14.2,0,0,9.9,16.3 +2022-12-01T12:00,55.5,18,12,0,0,14.6,23.7 +2022-12-01T13:00,57.2,15,10.3,0,0,14.5,24.6 +2022-12-01T14:00,57.4,15,10,0,0,12.1,23.3 +2022-12-01T15:00,54.1,17,10.3,0,0,7.3,18.8 +2022-12-01T16:00,42.3,28,11.8,0,0,9.1,11.4 +2022-12-01T17:00,35.1,50,18.2,0,0,3.6,11.6 +2022-12-01T18:00,33.5,57,19.9,0,0,7.3,11 +2022-12-01T19:00,35.1,48,17.2,0,0,11.7,18.6 +2022-12-01T20:00,37.9,38,14.4,0,0,12.4,19.5 +2022-12-01T21:00,40.2,36,15.4,0,0,6.9,19.7 +2022-12-01T22:00,42.4,34,16.2,0,0,8.8,13.4 +2022-12-01T23:00,44.2,34,17.7,0,0,10.2,16.6 +2022-12-02T00:00,46.6,33,18.9,0,0,18.1,28.6 +2022-12-02T01:00,46.6,33,19.1,0,0,19.4,31.3 +2022-12-02T02:00,46.8,32,18.6,0,0,16.8,31.1 +2022-12-02T03:00,46.7,33,18.8,0,0,15.2,27.3 +2022-12-02T04:00,45,34,18.6,0,0,9.6,24.6 +2022-12-02T05:00,40.2,40,18.1,0,0,8.5,15.7 +2022-12-02T06:00,46.1,32,17.7,0,0,11.7,19 +2022-12-02T07:00,44.6,36,19.6,0,0,10.2,19.5 +2022-12-02T08:00,44.8,42,22.9,0,0,11.1,17.2 +2022-12-02T09:00,48,40,25.1,0,0,16.1,24.8 +2022-12-02T10:00,51.4,37,25.9,0,0,15.3,26.4 +2022-12-02T11:00,54.1,31,24.4,0,0,15.9,27.1 +2022-12-02T12:00,50.8,44,29.5,0.024,0.028,16.5,26.2 +2022-12-02T13:00,46,36,20.2,0,0,17.6,33.8 +2022-12-02T14:00,44.5,28,13.3,0,0,18.9,32 +2022-12-02T15:00,41.5,31,13.2,0,0,20.7,34.9 +2022-12-02T16:00,37.3,36,13,0,0,16.6,33.6 +2022-12-02T17:00,33.3,45,14.1,0,0,10.8,26.2 +2022-12-02T18:00,30.3,52,14.6,0,0,5.1,17 +2022-12-02T19:00,28,57,14.9,0,0,9,13 +2022-12-02T20:00,25,46,7.3,0,0,10.4,18.3 +2022-12-02T21:00,23.8,43,4.6,0,0,9.2,16.3 +2022-12-02T22:00,22.6,39,1.2,0,0,8.3,14.3 +2022-12-02T23:00,21.7,38,-0.1,0,0,5.5,12.8 +2022-12-03T00:00,21.2,38,-0.5,0,0,4.2,8.5 +2022-12-03T01:00,21.6,40,0.7,0,0,1.1,6 +2022-12-03T02:00,20.8,44,2.3,0,0,0.2,1.8 +2022-12-03T03:00,19.8,48,3.1,0,0,3.1,4.7 +2022-12-03T04:00,19.4,47,2.5,0,0,4.6,8.1 +2022-12-03T05:00,19,53,4.8,0,0,3,7.4 +2022-12-03T06:00,21.5,48,4.8,0,0,0.7,3.6 +2022-12-03T07:00,20.1,51,4.8,0,0,2.7,3.8 +2022-12-03T08:00,23.5,45,5.2,0,0,2.9,4.9 +2022-12-03T09:00,30.7,34,5.8,0,0,2.8,7.4 +2022-12-03T10:00,37.4,27,6.4,0,0,2,8.5 +2022-12-03T11:00,42.6,21,5.8,0,0,3.4,8.7 +2022-12-03T12:00,48.1,17,5.4,0,0,4,10.1 +2022-12-03T13:00,50.8,15,5.1,0,0,6.3,11.9 +2022-12-03T14:00,49.6,17,6.9,0,0,8.6,15 +2022-12-03T15:00,46.6,23,10.6,0,0,7.1,15 +2022-12-03T16:00,38.8,35,13.5,0,0,6.5,10.7 +2022-12-03T17:00,33.4,44,14,0,0,7.1,7.4 +2022-12-03T18:00,35.9,39,13.5,0,0,1.9,8.1 +2022-12-03T19:00,31.7,54,16.9,0,0,3.8,4.7 +2022-12-03T20:00,32.5,58,19.3,0,0,5.4,6 +2022-12-03T21:00,32.4,60,20.2,0,0,4.2,6.7 +2022-12-03T22:00,31.4,62,20,0,0,4.1,4.9 +2022-12-03T23:00,30.7,57,17.3,0,0,4.7,6.3 +2022-12-04T00:00,32.9,52,17.1,0,0,0.4,5.6 +2022-12-04T01:00,32.5,52,16.8,0,0,0.6,1.1 +2022-12-04T02:00,33.6,49,16.7,0,0,2,2.2 +2022-12-04T03:00,27.4,70,18.8,0,0,5,6.5 +2022-12-04T04:00,26.7,80,21.5,0,0,3.5,6.5 +2022-12-04T05:00,25.7,89,22.8,0,0,4.4,5.6 +2022-12-04T06:00,25.5,88,22.5,0,0,4.7,5.8 +2022-12-04T07:00,25.9,85,22.1,0,0,2.9,5.8 +2022-12-04T08:00,28.7,78,22.6,0,0,3.7,5.4 +2022-12-04T09:00,34.5,63,23.3,0,0,2.6,7.4 +2022-12-04T10:00,40.6,50,23.6,0,0,2.6,7.8 +2022-12-04T11:00,46.4,43,25.1,0,0,2.8,8.3 +2022-12-04T12:00,50.6,36,24.4,0,0,3.5,9.8 +2022-12-04T13:00,54.3,31,24.4,0,0,0.9,9.2 +2022-12-04T14:00,55.2,32,25.5,0,0,3.2,7.8 +2022-12-04T15:00,51.7,40,28.4,0,0,8.5,13.4 +2022-12-04T16:00,43.3,57,28.9,0,0,9,15.4 +2022-12-04T17:00,45.6,49,27.6,0,0,2.2,13.9 +2022-12-04T18:00,37.1,66,27,0,0,3.5,5.4 +2022-12-04T19:00,34.3,72,26.1,0,0,3.5,4.9 +2022-12-04T20:00,31.3,78,25.3,0,0,3.7,6.3 +2022-12-04T21:00,30.3,79,24.6,0,0,5.1,8.1 +2022-12-04T22:00,32.4,72,24.3,0,0,6.3,9.2 +2022-12-04T23:00,34.3,65,23.7,0,0,7.3,11.2 +2022-12-05T00:00,34.4,66,24.1,0,0,7.4,11.9 +2022-12-05T01:00,33.8,68,24.4,0,0,6.7,11.6 +2022-12-05T02:00,32.2,73,24.4,0,0,5.8,10.1 +2022-12-05T03:00,32.3,72,24.2,0,0,6.3,9.2 +2022-12-05T04:00,31.9,72,23.9,0,0,6.5,10.5 +2022-12-05T05:00,29.8,77,23.5,0,0,5.1,10.3 +2022-12-05T06:00,28.2,82,23.4,0,0,5.9,7.2 +2022-12-05T07:00,28.5,82,23.7,0,0,5.2,6.9 +2022-12-05T08:00,33,70,24.4,0,0,2.4,6.5 +2022-12-05T09:00,39.2,60,26.5,0,0,2.6,6.7 +2022-12-05T10:00,46.5,47,27.3,0,0,2,6.5 +2022-12-05T11:00,47.8,45,27.3,0,0,9.1,16.3 +2022-12-05T12:00,47.8,40,24.7,0,0,9.2,19.2 +2022-12-05T13:00,51.4,33,23.5,0,0,8.6,17.4 +2022-12-05T14:00,51.7,35,24.7,0,0,8.2,16.6 +2022-12-05T15:00,50.8,37,25.5,0,0,7.6,15 +2022-12-05T16:00,46.8,45,26.7,0,0,6.3,13 +2022-12-05T17:00,39.6,58,26.1,0,0,6.1,11.9 +2022-12-05T18:00,37,63,25.6,0,0,7.1,8.5 +2022-12-05T19:00,39.9,55,25.2,0,0,4.2,8.9 +2022-12-05T20:00,36.1,64,25.3,0,0,4.5,5.1 +2022-12-05T21:00,37.1,62,25.3,0,0,1.1,5.1 +2022-12-05T22:00,30.7,76,24.1,0,0,5.4,6 +2022-12-05T23:00,28.9,79,23.4,0,0,6.2,8.5 +2022-12-06T00:00,29.9,77,23.6,0,0,5.4,8.3 +2022-12-06T01:00,29.6,80,24.1,0,0,9.9,16.1 +2022-12-06T02:00,28.5,82,23.7,0,0,8.1,16.3 +2022-12-06T03:00,27.3,84,23.2,0,0,5.2,13.2 +2022-12-06T04:00,28.9,78,23,0,0,3.4,8.1 +2022-12-06T05:00,26.6,89,23.8,0,0,6.1,4.5 +2022-12-06T06:00,26.2,87,22.8,0,0,6.3,10.1 +2022-12-06T07:00,25.8,85,22,0,0,6.3,10.1 +2022-12-06T08:00,29.5,73,21.7,0,0,6.5,10.1 +2022-12-06T09:00,36.9,55,22,0,0,5.2,11 +2022-12-06T10:00,43.7,40,21.2,0,0,2.5,9.6 +2022-12-06T11:00,47.7,32,19.6,0,0,2.6,8.1 +2022-12-06T12:00,50.2,29,19.2,0,0,3.6,9.4 +2022-12-06T13:00,51.9,27,19.2,0,0,6.1,12.5 +2022-12-06T14:00,52.7,25,17.4,0,0,4,12.8 +2022-12-06T15:00,51.8,22,14.6,0,0,0.7,9.4 +2022-12-06T16:00,44.3,38,20.5,0,0,5.9,6 +2022-12-06T17:00,41.8,33,14.7,0,0,6.8,8.5 +2022-12-06T18:00,37.2,42,16.3,0,0,5.2,11.2 +2022-12-06T19:00,32.7,53,17.3,0,0,4.5,7.8 +2022-12-06T20:00,29.8,61,18,0,0,5.4,7.4 +2022-12-06T21:00,32.2,54,17.5,0,0,0.8,6.5 +2022-12-06T22:00,30.9,57,17.5,0,0,0.9,2 +2022-12-06T23:00,27,64,16.5,0,0,3.6,4.5 +2022-12-07T00:00,27.1,63,16.2,0,0,3.2,4.9 +2022-12-07T01:00,23.8,74,16.7,0,0,3.8,4.3 +2022-12-07T02:00,23.5,74,16.5,0,0,5,6 +2022-12-07T03:00,27,62,15.5,0,0,2.8,6 +2022-12-07T04:00,25.1,64,14.6,0,0,3.8,4 +2022-12-07T05:00,24.3,57,11.2,0,0,5.2,4.5 +2022-12-07T06:00,24.4,57,11.4,0,0,4.5,7.2 +2022-12-07T07:00,23.5,61,12.1,0,0,3.3,6.3 +2022-12-07T08:00,26.3,56,12.7,0,0,4.4,6.5 +2022-12-07T09:00,31.7,47,13.6,0,0,0.9,6.9 +2022-12-07T10:00,37.9,38,14.6,0,0,0.7,5.8 +2022-12-07T11:00,42.9,33,15.7,0,0,0.3,6 +2022-12-07T12:00,46.1,30,16.3,0,0,2.9,8.5 +2022-12-07T13:00,48.3,29,17.6,0,0,6.6,13.4 +2022-12-07T14:00,47.7,32,18.9,0,0,11.2,19.2 +2022-12-07T15:00,45,32,17.1,0,0,12.7,21.7 +2022-12-07T16:00,40.2,38,16.6,0,0,10.5,21.5 +2022-12-07T17:00,39.5,53,23.8,0,0,7.5,16.6 +2022-12-07T18:00,38.8,52,22.5,0,0,4.5,11.9 +2022-12-07T19:00,39,49,21.5,0,0,2.2,5.1 +2022-12-07T20:00,32,64,21.3,0,0,3.5,4 +2022-12-07T21:00,30.7,74,23.4,0,0,1.3,4.9 +2022-12-07T22:00,31.9,68,22.6,0,0,1.2,2.2 +2022-12-07T23:00,26.9,83,22.5,0,0,2.9,4 +2022-12-08T00:00,26.1,83,21.7,0,0,0.3,3.8 +2022-12-08T01:00,24.1,87,20.8,0,0,0.9,1.8 +2022-12-08T02:00,22.6,91,20.3,0,0,0.6,1.8 +2022-12-08T03:00,22.4,91,20.1,0,0,1.3,2.7 +2022-12-08T04:00,21.7,92,19.7,0,0,1.8,2.9 +2022-12-08T05:00,22.1,88,19,0,0,2.3,6.3 +2022-12-08T06:00,23,81,18.1,0,0,1.9,4.3 +2022-12-08T07:00,25.7,81,20.8,0,0,4.3,6.3 +2022-12-08T08:00,31,61,19,0,0,2.6,6.5 +2022-12-08T09:00,39.9,30,10.6,0,0,9,14.5 +2022-12-08T10:00,43,22,6.5,0,0,3.5,13.9 +2022-12-08T11:00,42.5,24,8.4,0,0,5.7,12.5 +2022-12-08T12:00,42.8,24,8.9,0,0,6.8,13.9 +2022-12-08T13:00,44.2,22,7.5,0,0,8.3,15.7 +2022-12-08T14:00,44.3,22,7.7,0,0,9.4,17.2 +2022-12-08T15:00,43.3,23,7.9,0,0,8.2,17.2 +2022-12-08T16:00,38.2,31,10.5,0,0,4.5,14.3 +2022-12-08T17:00,37.6,29,8.5,0,0,13.1,10.1 +2022-12-08T18:00,34.1,34,8.9,0,0,7.1,21 +2022-12-08T19:00,28.5,45,9.8,0,0,4.6,11.4 +2022-12-08T20:00,28.7,47,10.9,0,0,6.2,9.8 +2022-12-08T21:00,26.1,48,9,0,0,6,9.6 +2022-12-08T22:00,24.6,50,8.6,0,0,4.4,7.4 +2022-12-08T23:00,23.7,46,5.9,0,0,5.1,8.5 +2022-12-09T00:00,21.8,46,4.3,0,0,4.9,8.1 +2022-12-09T01:00,20.6,50,4.9,0,0,4.7,6.5 +2022-12-09T02:00,21.8,46,4.4,0,0,3.9,6.3 +2022-12-09T03:00,24,40,3.1,0,0,2.8,4.7 +2022-12-09T04:00,22.1,41,1.8,0,0,3.7,4 +2022-12-09T05:00,20.3,39,-0.5,0,0,5.4,6.3 +2022-12-09T06:00,19.7,37,-2.3,0,0,5.9,6.9 +2022-12-09T07:00,20.5,35,-3,0,0,4.2,6.9 +2022-12-09T08:00,23.9,30,-3.4,0,0,1.4,4.9 +2022-12-09T09:00,28.6,23,-4.2,0,0,1.4,5.6 +2022-12-09T10:00,35,17,-5.4,0,0,2.9,8.3 +2022-12-09T11:00,40.6,12,-8,0,0,2.9,9.2 +2022-12-09T12:00,44.5,10,-9.4,0,0,3.2,9.4 +2022-12-09T13:00,46.4,8,-11,0,0,7.1,13.4 +2022-12-09T14:00,45.2,9,-10.6,0,0,10.3,17.7 +2022-12-09T15:00,42.7,12,-6.2,0,0,7.5,17.7 +2022-12-09T16:00,33.4,25,1.6,0,0,7.2,11.4 +2022-12-09T17:00,37.8,26,6.3,0,0,2.9,8.5 +2022-12-09T18:00,29.2,36,5.5,0,0,5.7,7.8 +2022-12-09T19:00,26.3,42,6.3,0,0,6.3,7.8 +2022-12-09T20:00,27.8,42,7.6,0,0,1.5,8.5 +2022-12-09T21:00,25.7,49,9.3,0,0,2.8,2.7 +2022-12-09T22:00,24,60,12,0,0,4.3,6.5 +2022-12-09T23:00,25.7,47,8.4,0,0,4.9,6.9 +2022-12-10T00:00,29,40,7.4,0,0,2.8,8.3 +2022-12-10T01:00,24.3,56,10.9,0,0,6,8.7 +2022-12-10T02:00,23.8,58,11.3,0,0,5.8,12.5 +2022-12-10T03:00,22.3,60,10.6,0,0,4.1,9.2 +2022-12-10T04:00,20.7,64,10.3,0,0,4.9,6.3 +2022-12-10T05:00,27.5,48,10.2,0,0,3.6,6.5 +2022-12-10T06:00,24.6,51,9.1,0,0,3,4.3 +2022-12-10T07:00,27.1,43,7.6,0,0,0.3,4 +2022-12-10T08:00,25.3,46,7.6,0,0,1.3,2 +2022-12-10T09:00,28.7,40,7.6,0,0,1.1,5.4 +2022-12-10T10:00,35.2,30,6.5,0,0,2.7,8.1 +2022-12-10T11:00,40.6,21,3.7,0,0,4.4,10.5 +2022-12-10T12:00,44.1,16,0.2,0,0,3.6,11 +2022-12-10T13:00,46.2,15,1.4,0,0,2.1,9.8 +2022-12-10T14:00,46.2,17,3.1,0,0,5.6,10.1 +2022-12-10T15:00,42.8,22,6.6,0,0,5.2,10.5 +2022-12-10T16:00,35.1,35,10.4,0,0,6.8,8.3 +2022-12-10T17:00,31.6,48,14.1,0,0,6.7,7.8 +2022-12-10T18:00,39.4,34,13.6,0,0,0.5,7.8 +2022-12-10T19:00,27.9,52,12.5,0,0,4.3,5.6 +2022-12-10T20:00,26.1,60,14,0,0,4,5.8 +2022-12-10T21:00,26.2,58,13.6,0,0,4.8,7.2 +2022-12-10T22:00,27.1,52,11.6,0,0,5.4,7.2 +2022-12-10T23:00,26.4,49,9.7,0,0,6.7,8.1 +2022-12-11T00:00,31.6,37,8.5,0,0,2.8,8.1 +2022-12-11T01:00,31.6,37,8.3,0,0,1.4,3.1 +2022-12-11T02:00,26.4,47,8.8,0,0,3.4,4.3 +2022-12-11T03:00,25.3,50,9.4,0,0,4,5.1 +2022-12-11T04:00,24.9,53,10.3,0,0,4.1,5.4 +2022-12-11T05:00,25.9,51,10,0,0,4.9,6 +2022-12-11T06:00,25.6,48,8.7,0,0,6,7.4 +2022-12-11T07:00,25.8,46,7.8,0,0,5.2,7.4 +2022-12-11T08:00,29.8,39,7.5,0,0,4,6.9 +2022-12-11T09:00,37.9,28,7.6,0,0,5.2,9.2 +2022-12-11T10:00,46.9,20,7.8,0,0,4.9,9.8 +2022-12-11T11:00,54.2,15,7.8,0,0,7.2,13 +2022-12-11T12:00,57.5,12,5.4,0,0,10.4,17.9 +2022-12-11T13:00,58.3,12,6.3,0,0,12.5,20.8 +2022-12-11T14:00,57.7,13,6.4,0,0,13.2,21.7 +2022-12-11T15:00,55.4,15,8.4,0,0,11.3,21.7 +2022-12-11T16:00,50.2,18,8.7,0,0,10.5,18.3 +2022-12-11T17:00,47.9,20,9,0,0,11.2,18.8 +2022-12-11T18:00,43.7,24,9,0,0,8.1,17.9 +2022-12-11T19:00,40.6,27,9.5,0,0,8.3,13.4 +2022-12-11T20:00,37.3,33,10.8,0,0,7.5,13.2 +2022-12-11T21:00,35.4,36,11.4,0,0,7.1,11.9 +2022-12-11T22:00,36.1,36,11.5,0,0,8.4,13.4 +2022-12-11T23:00,35.9,36,11.7,0,0,8.8,14.5 +2022-12-12T00:00,33.2,40,11.5,0,0,8,14.5 +2022-12-12T01:00,31.2,43,11.2,0,0,7.1,13.4 +2022-12-12T02:00,31.4,42,11,0,0,6.3,11.6 +2022-12-12T03:00,33,41,11.9,0,0,7.2,11.4 +2022-12-12T04:00,34.3,41,13.2,0,0,8.8,14.1 +2022-12-12T05:00,33.9,43,13.6,0,0,8.8,15.2 +2022-12-12T06:00,33.2,45,14.1,0,0,6.9,13.9 +2022-12-12T07:00,32.4,47,14.5,0,0,5.8,11 +2022-12-12T08:00,34.4,44,14.9,0,0,5.9,9.4 +2022-12-12T09:00,39.5,38,15.7,0,0,6.1,9.6 +2022-12-12T10:00,45.3,31,16.5,0,0,4.5,9.4 +2022-12-12T11:00,50.7,26,17.1,0,0,4.2,9.8 +2022-12-12T12:00,52.6,24,17.1,0,0,6.9,13 +2022-12-12T13:00,53.1,23,15.9,0,0,9.4,16.8 +2022-12-12T14:00,53.6,21,14.9,0,0,8.1,17.2 +2022-12-12T15:00,53.2,21,14.3,0,0,5.1,14.8 +2022-12-12T16:00,45.7,40,22.7,0.012,0.028,10.2,13.9 +2022-12-12T17:00,39.3,40,17.2,0.004,0,12.3,20.4 +2022-12-12T18:00,34.2,56,20,0,0,11.6,23.7 +2022-12-12T19:00,32.6,59,19.8,0,0,12.5,21 +2022-12-12T20:00,29.8,64,19,0,0,12.5,20.4 +2022-12-12T21:00,27.3,68,18.2,0,0,10.5,20.1 +2022-12-12T22:00,25.9,71,17.8,0,0,9.1,21.3 +2022-12-12T23:00,25.9,69,17.1,0,0,11.9,19.2 +2022-12-13T00:00,25.5,65,15.5,0,0,11,20.6 +2022-12-13T01:00,25.9,62,14.6,0,0.028,10.5,18.3 +2022-12-13T02:00,25.5,64,15.2,0,0.055,7.4,17.2 +2022-12-13T03:00,25.1,66,15.2,0,0.055,5.4,13 +2022-12-13T04:00,24.5,67,15.2,0,0.028,3.1,9.4 +2022-12-13T05:00,24.2,67,14.9,0,0.028,3.7,6 +2022-12-13T06:00,23.7,69,15,0,0,3.4,7.4 +2022-12-13T07:00,23.8,68,14.6,0,0.028,2.1,5.8 +2022-12-13T08:00,23.2,70,14.8,0,0.055,2,6.7 +2022-12-13T09:00,23.5,70,15.3,0,0.055,2,6 +2022-12-13T10:00,23.8,68,14.7,0,0.055,4.1,9.4 +2022-12-13T11:00,24.8,65,14.8,0,0.055,3.1,10.1 +2022-12-13T12:00,25.3,64,14.9,0,0.028,2.5,8.9 +2022-12-13T13:00,26.1,63,15.1,0,0.028,7.2,13.4 +2022-12-13T14:00,26.2,64,15.6,0,0.028,8.8,15.9 +2022-12-13T15:00,24.9,63,14.1,0,0.028,9.2,18.1 +2022-12-13T16:00,24.6,62,13.5,0,0,5.3,16.1 +2022-12-13T17:00,21.9,73,14.6,0,0,3.2,9.4 +2022-12-13T18:00,22.5,71,14.6,0,0,6.9,9.8 +2022-12-13T19:00,21.8,73,14.4,0,0,5.4,10.1 +2022-12-13T20:00,22.6,66,12.9,0,0,6.7,9.8 +2022-12-13T21:00,23.3,63,12.5,0,0.028,5.8,10.1 +2022-12-13T22:00,23.5,63,12.7,0,0,3.9,8.3 +2022-12-13T23:00,23.1,65,12.9,0,0,2.9,6.3 +2022-12-14T00:00,22.6,65,12.7,0,0,4.4,5.4 +2022-12-14T01:00,22.7,62,11.7,0,0,4.5,6.9 +2022-12-14T02:00,22.6,60,10.6,0,0,5.8,8.3 +2022-12-14T03:00,22.3,57,9.4,0,0,6.6,9.6 +2022-12-14T04:00,22.4,54,8.4,0,0,4.8,9.4 +2022-12-14T05:00,21.9,59,9.6,0,0,3,6.5 +2022-12-14T06:00,19.6,64,9.3,0,0,2.8,4.7 +2022-12-14T07:00,20.5,60,8.8,0,0,3.6,5.6 +2022-12-14T08:00,21.4,55,7.7,0,0,6.5,9.6 +2022-12-14T09:00,27.2,44,8.4,0,0,7.1,12.1 +2022-12-14T10:00,32,35,7.6,0,0,7.2,13.2 +2022-12-14T11:00,34.6,31,7.1,0,0,7.8,15.9 +2022-12-14T12:00,36.3,28,6.4,0,0,5.4,15.4 +2022-12-14T13:00,36.3,26,4.6,0,0,8.3,15.7 +2022-12-14T14:00,36.1,26,4.6,0,0,10.7,19.7 +2022-12-14T15:00,35.2,27,4.3,0,0,8.6,19.5 +2022-12-14T16:00,32.4,30,4.4,0,0,6.3,15 +2022-12-14T17:00,29.4,39,7.3,0,0,7.5,10.3 +2022-12-14T18:00,31.4,34,6.4,0,0,4.2,12.3 +2022-12-14T19:00,31.5,34,6.1,0,0,3.6,5.6 +2022-12-14T20:00,26.1,41,5.4,0,0,4.1,5.1 +2022-12-14T21:00,26.5,39,4.7,0,0,1.4,5.4 +2022-12-14T22:00,23,42,3.5,0,0,3.6,4.9 +2022-12-14T23:00,21.7,44,3.3,0,0,5.7,7.2 +2022-12-15T00:00,22.9,40,2.4,0,0,4.9,7.4 +2022-12-15T01:00,21.8,44,3.1,0,0,5.3,8.1 +2022-12-15T02:00,21.9,51,6.6,0,0,4.2,7.6 +2022-12-15T03:00,23.1,50,7.2,0,0,0.5,6.7 +2022-12-15T04:00,20.7,51,5.5,0,0,3.4,4 +2022-12-15T05:00,20.5,39,-0.4,0,0,8.5,4.5 +2022-12-15T06:00,22.5,40,1.8,0,0,5.4,10.3 +2022-12-15T07:00,24.1,38,1.9,0,0,3.6,6.5 +2022-12-15T08:00,23,38,1.4,0,0,4.2,5.4 +2022-12-15T09:00,25.5,33,0.2,0,0,4.3,8.9 +2022-12-15T10:00,27.8,32,1.5,0,0,6.2,12.1 +2022-12-15T11:00,30.9,31,3.6,0,0,7.4,15 +2022-12-15T12:00,32.1,28,2.8,0,0,6.8,15 +2022-12-15T13:00,32.5,29,3.8,0,0,8.1,15.7 +2022-12-15T14:00,30.6,35,6.2,0,0,10.2,17.9 +2022-12-15T15:00,28.6,40,7.3,0,0,11,19.2 +2022-12-15T16:00,26.1,44,7.3,0,0,6.4,18.1 +2022-12-15T17:00,25.3,32,-0.7,0,0,11.1,9.4 +2022-12-15T18:00,25,32,-0.8,0,0,12.3,22.6 +2022-12-15T19:00,22.2,35,-1.6,0,0,7.3,20.1 +2022-12-15T20:00,20.3,37,-2,0,0,6.7,12.1 +2022-12-15T21:00,19.2,36,-3.3,0,0,4.4,10.7 +2022-12-15T22:00,17.7,39,-3.4,0,0,3.8,7.2 +2022-12-15T23:00,17.1,39,-3.9,0,0,4.3,6 +2022-12-16T00:00,18.2,33,-6.3,0,0,4,6.3 +2022-12-16T01:00,17.2,33,-7.2,0,0,4.3,6.3 +2022-12-16T02:00,16.7,34,-6.9,0,0,4.7,6.5 +2022-12-16T03:00,16.6,34,-6.8,0,0,4.3,6.5 +2022-12-16T04:00,16.5,34,-7.1,0,0,4.4,6.3 +2022-12-16T05:00,17.7,34,-5.8,0,0,5.5,6.5 +2022-12-16T06:00,18.9,31,-7.1,0,0,7,11 +2022-12-16T07:00,19.1,29,-7.8,0,0,9.8,15.7 +2022-12-16T08:00,20.5,28,-7.7,0,0,10.4,16.8 +2022-12-16T09:00,23.3,24,-8.2,0,0,6.5,16.6 +2022-12-16T10:00,25.9,21,-8.5,0,0,3.6,12.5 +2022-12-16T11:00,28.5,19,-8.7,0,0,4.1,10.7 +2022-12-16T12:00,30.9,17,-8.7,0,0,6.6,14.1 +2022-12-16T13:00,32.3,15,-9.8,0,0,7.1,15.2 +2022-12-16T14:00,32.5,15,-10.7,0,0,9,16.8 +2022-12-16T15:00,29.8,20,-6.9,0,0,12.2,21 +2022-12-16T16:00,26.6,23,-5.9,0,0,8.6,20.6 +2022-12-16T17:00,22.5,29,-5.3,0,0,14.3,14.8 +2022-12-16T18:00,22.1,29,-5.5,0,0,15.7,25.9 +2022-12-16T19:00,21.9,29,-5.5,0,0,12.6,24.8 +2022-12-16T20:00,22.1,28,-5.9,0,0,10.1,19.9 +2022-12-16T21:00,22.5,28,-6,0,0,9.4,16.3 +2022-12-16T22:00,22.7,27,-6.4,0,0,7.8,15 +2022-12-16T23:00,22.6,27,-6.7,0,0,6.5,12.3 +2022-12-17T00:00,23,26,-7.1,0,0,7.4,11.4 +2022-12-17T01:00,23.2,26,-7.1,0,0,8,13 +2022-12-17T02:00,21,28,-7.3,0,0,5.1,12.5 +2022-12-17T03:00,20.1,28,-7.9,0,0,4.5,6.9 +2022-12-17T04:00,20.9,27,-7.9,0,0,4.2,6.7 +2022-12-17T05:00,21,32,-4.5,0,0,4.1,11.2 +2022-12-17T06:00,22.3,31,-4.1,0,0,5,8.9 +2022-12-17T07:00,18.6,37,-3.3,0,0,4.3,8.1 +2022-12-17T08:00,20.5,34,-3.2,0,0,4.2,5.8 +2022-12-17T09:00,25.3,27,-4.3,0,0,5.2,9.6 +2022-12-17T10:00,29.6,21,-5.9,0,0,4.6,11 +2022-12-17T11:00,32.5,19,-5.3,0,0,4.9,12.1 +2022-12-17T12:00,35.2,17,-4.9,0,0,4.4,11.9 +2022-12-17T13:00,37,17,-4.1,0,0,4.7,11.4 +2022-12-17T14:00,37.7,17,-3.6,0,0,4.8,11.4 +2022-12-17T15:00,36.9,17,-3.5,0,0,4.5,10.5 +2022-12-17T16:00,30.9,22,-3.2,0,0,5.2,8.1 +2022-12-17T17:00,21.7,41,1.7,0,0,8.2,8.9 +2022-12-17T18:00,22.2,39,1.1,0,0,6.5,9.4 +2022-12-17T19:00,22.7,37,0.5,0,0,4.4,7.6 +2022-12-17T20:00,20.6,41,0.5,0,0,3,6 +2022-12-17T21:00,19.3,44,1,0,0,5,7.6 +2022-12-17T22:00,19,45,1,0,0,5.3,8.9 +2022-12-17T23:00,19,43,0.1,0,0,3.9,8.3 +2022-12-18T00:00,18.8,41,-0.9,0,0,3.5,6.3 +2022-12-18T01:00,18.9,39,-2,0,0,3.2,5.6 +2022-12-18T02:00,19.4,36,-3,0,0,3.6,5.1 +2022-12-18T03:00,19.8,35,-3.4,0,0,3.2,5.1 +2022-12-18T04:00,19.2,37,-3,0,0,3.5,5.4 +2022-12-18T05:00,17.1,43,-1.7,0,0,5.6,5.4 +2022-12-18T06:00,20.4,36,-2.5,0,0,3.5,6.7 +2022-12-18T07:00,22.5,31,-3.4,0,0,3.6,4.3 +2022-12-18T08:00,22.4,30,-4.1,0,0,3.8,5.1 +2022-12-18T09:00,27.5,24,-4.4,0,0,1.3,5.1 +2022-12-18T10:00,32.2,20,-4.5,0,0,3.5,8.3 +2022-12-18T11:00,36.4,16,-5.4,0,0,4,10.3 +2022-12-18T12:00,38.7,15,-5.4,0,0,4.1,10.3 +2022-12-18T13:00,39.3,15,-4,0,0,4.1,10.7 +2022-12-18T14:00,38.5,18,-1.7,0,0,4.4,10.5 +2022-12-18T15:00,36.7,20,-0.8,0,0,5.5,10.3 +2022-12-18T16:00,29.8,27,0.1,0,0,5.3,9.6 +2022-12-18T17:00,23.5,41,3.2,0,0,4.7,6.3 +2022-12-18T18:00,25.2,37,2.6,0,0,4,6 +2022-12-18T19:00,29.5,30,1.7,0,0,3.5,4.9 +2022-12-18T20:00,26.5,34,1.6,0,0,1.8,3.8 +2022-12-18T21:00,20.9,45,2.9,0,0,3.1,4 +2022-12-18T22:00,19.9,50,4.3,0,0,3.1,4.5 +2022-12-18T23:00,19.3,52,4.6,0,0,2.9,4 +2022-12-19T00:00,20.8,48,4.3,0,0,1.1,4 +2022-12-19T01:00,22.7,43,3.4,0,0,1.8,2.2 +2022-12-19T02:00,22.3,41,2.3,0,0,2.9,3.4 +2022-12-19T03:00,19.3,43,0.5,0,0,3.2,4 +2022-12-19T04:00,19.6,40,-0.7,0,0,2.2,3.8 +2022-12-19T05:00,14.5,52,0,0,0,3.2,3.8 +2022-12-19T06:00,16.3,47,-0.3,0,0,2.7,4.5 +2022-12-19T07:00,16.5,47,-0.4,0,0,2,4.5 +2022-12-19T08:00,18.3,42,-1.2,0,0,5.7,8.7 +2022-12-19T09:00,24.8,30,-2,0,0,5.2,10.3 +2022-12-19T10:00,31.9,22,-3,0,0,6.2,11.2 +2022-12-19T11:00,38.6,16,-3.7,0,0,10.5,18.3 +2022-12-19T12:00,44.1,13,-4.1,0,0,6.6,18.3 +2022-12-19T13:00,46,12,-3.8,0,0,1.8,13.6 +2022-12-19T14:00,46.1,12,-3.6,0,0,3.4,7.6 +2022-12-19T15:00,43.7,14,-3,0,0,6.1,10.1 +2022-12-19T16:00,36.5,20,-0.7,0,0,10.9,15.9 +2022-12-19T17:00,39.2,17,-2.4,0,0,4.6,16.8 +2022-12-19T18:00,28.5,29,0.2,0,0,5.9,8.7 +2022-12-19T19:00,25.3,39,3.7,0,0,5.9,12.1 +2022-12-19T20:00,22.6,41,2.1,0,0,5.7,8.7 +2022-12-19T21:00,22.3,40,1.6,0,0,5.8,7.6 +2022-12-19T22:00,22.9,38,1,0,0,3.8,7.6 +2022-12-19T23:00,23.2,37,1,0,0,3.8,5.8 +2022-12-20T00:00,22.1,39,1,0,0,2.7,5.8 +2022-12-20T01:00,21.3,41,1.3,0,0,3,3.4 +2022-12-20T02:00,23.2,37,0.5,0,0,3,4.5 +2022-12-20T03:00,23.2,36,0.1,0,0,3.7,5.8 +2022-12-20T04:00,23.4,35,-0.1,0,0,4.1,6.3 +2022-12-20T05:00,22.9,38,1.2,0,0,3.9,6.3 +2022-12-20T06:00,23.7,37,1,0,0,2.6,5.8 +2022-12-20T07:00,20.9,41,1,0,0,4.6,5.8 +2022-12-20T08:00,22.6,39,1.2,0,0,3,5.6 +2022-12-20T09:00,28.8,30,1.1,0,0,4.3,9.2 +2022-12-20T10:00,35.8,22,0.6,0,0,4.2,9.6 +2022-12-20T11:00,40.8,17,-1.1,0,0,4.7,10.7 +2022-12-20T12:00,44.4,14,-2.2,0,0,5.5,11.9 +2022-12-20T13:00,46.2,14,-0.6,0,0,4.8,11.9 +2022-12-20T14:00,46.9,15,1.9,0,0,4.1,10.1 +2022-12-20T15:00,42.6,19,3.5,0,0,4.5,7.6 +2022-12-20T16:00,38.5,23,3.7,0,0,5.1,6.7 +2022-12-20T17:00,38.5,25,5.5,0,0,1.1,5.8 +2022-12-20T18:00,34.5,31,6.9,0,0,3.6,3.8 +2022-12-20T19:00,30.1,45,11.1,0,0,5.3,7.8 +2022-12-20T20:00,27.3,56,13.7,0,0,4.9,8.3 +2022-12-20T21:00,28.6,53,13.6,0,0,2.1,5.6 +2022-12-20T22:00,25.5,57,12.6,0,0,2.8,4.5 +2022-12-20T23:00,24.6,59,12.4,0,0,2.4,3.6 +2022-12-21T00:00,25.3,57,12.4,0,0,1.4,2.7 +2022-12-21T01:00,21.9,67,12.5,0,0,2.8,3.1 +2022-12-21T02:00,21.7,66,12.1,0,0,3.8,5.1 +2022-12-21T03:00,21.7,65,11.6,0,0,3.6,5.8 +2022-12-21T04:00,26.1,53,11.4,0,0,2.2,4.9 +2022-12-21T05:00,28.1,49,11.2,0,0,5.3,6 +2022-12-21T06:00,25.9,54,11.6,0,0,6,8.5 +2022-12-21T07:00,25.3,55,11.3,0,0,5.4,8.3 +2022-12-21T08:00,25.5,53,10.9,0,0,4.1,8.5 +2022-12-21T09:00,32.6,40,10.9,0,0,7.8,12.1 +2022-12-21T10:00,41.5,27,9.7,0,0,3.7,13 +2022-12-21T11:00,46.8,19,6.9,0,0,7.8,14.1 +2022-12-21T12:00,47,22,9.7,0,0,12.9,23 +2022-12-21T13:00,49.1,19,8.1,0,0,11.2,22.4 +2022-12-21T14:00,48.4,19,8.5,0,0,12.1,20.8 +2022-12-21T15:00,46.8,22,10.2,0,0,6.8,20.6 +2022-12-21T16:00,41.4,27,9.6,0,0,6,13.9 +2022-12-21T17:00,11.2,54,-2.2,0,0,28.9,12.1 +2022-12-21T18:00,3.5,51,-10.5,0,0,10.8,44.3 +2022-12-21T19:00,2,50,-12.3,0,0.055,10.1,20.6 +2022-12-21T20:00,-0.8,51,-14.4,0,0.083,9.1,18.1 +2022-12-21T21:00,-1.9,52,-15.2,0,0.028,8.9,17.2 +2022-12-21T22:00,-2.8,56,-14.6,0,0.055,9.8,17.9 +2022-12-21T23:00,-3.5,59,-14.2,0,0.331,6.6,18.1 +2022-12-22T00:00,-5.4,69,-13,0,0.276,6.9,13.4 +2022-12-22T01:00,-6.1,70,-13.2,0,0.138,7.9,13.2 +2022-12-22T02:00,-6.8,70,-13.9,0,0.055,7.1,14.1 +2022-12-22T03:00,-6.9,70,-14.2,0,0.083,6.1,13.2 +2022-12-22T04:00,-7.8,70,-14.9,0,0.11,7.2,12.8 +2022-12-22T05:00,-9.8,71,-16.8,0,0.083,5.4,12.8 +2022-12-22T06:00,-11.5,69,-18.8,0,0.055,2.2,9.2 +2022-12-22T07:00,-12.7,71,-19.6,0,0.028,0.7,4.5 +2022-12-22T08:00,-11.9,71,-18.8,0,0.028,0.8,2.7 +2022-12-22T09:00,-10.8,64,-19.7,0,0.028,0.2,2.5 +2022-12-22T10:00,-9.4,61,-19.1,0,0,2.4,5.4 +2022-12-22T11:00,-8.4,59,-18.8,0,0,4.1,9.2 +2022-12-22T12:00,-7.2,56,-18.8,0,0,3.1,8.5 +2022-12-22T13:00,-5.4,51,-18.8,0,0,2.5,7.4 +2022-12-22T14:00,-3.5,51,-17.2,0,0,2.5,6.9 +2022-12-22T15:00,-4.3,48,-19,0,0,4.1,8.1 +2022-12-22T16:00,-5.8,52,-19,0,0,8.4,14.1 +2022-12-22T17:00,-9,60,-19,0,0,8.7,16.8 +2022-12-22T18:00,-11.4,61,-21.2,0,0,5.4,14.8 +2022-12-22T19:00,-14.7,62,-24.1,0,0,7.7,11.2 +2022-12-22T20:00,-7.5,48,-22,0,0,3.8,10.7 +2022-12-22T21:00,-4.8,41,-22.6,0,0,4.1,5.4 +2022-12-22T22:00,-11.7,50,-25.3,0,0,6.8,9.4 +2022-12-22T23:00,-14.3,54,-26.1,0,0,8.2,11 +2022-12-23T00:00,-16.1,55,-27.6,0,0,9.5,12.8 +2022-12-23T01:00,-15.6,53,-27.8,0,0,8.9,12.8 +2022-12-23T02:00,-15.7,53,-27.7,0,0,9.2,12.3 +2022-12-23T03:00,-15.7,55,-27.2,0,0,8.7,12.5 +2022-12-23T04:00,-12.9,51,-26,0,0,7.9,11.9 +2022-12-23T05:00,-11.5,59,-21.9,0,0,8.3,11 +2022-12-23T06:00,-3.6,44,-20.1,0,0,4.4,10.7 +2022-12-23T07:00,-5.4,45,-21.5,0,0,5.4,7.2 +2022-12-23T08:00,-11.1,53,-23.4,0,0,7.2,10.3 +2022-12-23T09:00,-5,50,-18.9,0,0,4.6,10.3 +2022-12-23T10:00,-0.3,52,-13.9,0,0,2.5,7.8 +2022-12-23T11:00,2,46,-14.2,0,0,2.9,5.8 +2022-12-23T12:00,4.5,48,-11,0,0,4.6,8.5 +2022-12-23T13:00,6.1,47,-9.8,0,0,3.5,8.5 +2022-12-23T14:00,7.6,49,-7.5,0,0,4.8,8.9 +2022-12-23T15:00,7.4,53,-6.2,0,0,3.9,9.2 +2022-12-23T16:00,4.4,59,-6.8,0,0,3.9,7.8 +2022-12-23T17:00,1.2,66,-7.5,0,0,3.5,8.9 +2022-12-23T18:00,-2.4,74,-8.7,0,0,3.5,7.4 +2022-12-23T19:00,-3.8,79,-8.6,0,0,3.3,6.5 +2022-12-23T20:00,-3.8,84,-7.4,0,0,1.1,4.7 +2022-12-23T21:00,-4.8,88,-7.5,0,0,1,2.7 +2022-12-23T22:00,-3.6,83,-7.4,0,0,2.6,5.6 +2022-12-23T23:00,-2.6,81,-7,0,0,1.7,6.3 +2022-12-24T00:00,-1.4,79,-6.3,0,0,3.8,7.8 +2022-12-24T01:00,0.1,73,-6.5,0,0,4.5,7.8 +2022-12-24T02:00,5.9,69,-2.2,0,0,6.1,8.1 +2022-12-24T03:00,8.8,68,0.4,0,0,6.1,8.5 +2022-12-24T04:00,15.6,52,1,0,0,1.2,7.8 +2022-12-24T05:00,18.5,67,9.5,0,0,3.2,7.4 +2022-12-24T06:00,16.8,79,11.4,0,0,5.3,7.8 +2022-12-24T07:00,23.1,77,16.9,0,0,5,7.8 +2022-12-24T08:00,24.8,75,18.1,0,0,6.5,10.3 +2022-12-24T09:00,29.1,70,20.4,0,0,6,11.2 +2022-12-24T10:00,33.1,70,24.4,0,0,4.9,10.3 +2022-12-24T11:00,41.6,46,22.5,0,0,3.2,7.4 +2022-12-24T12:00,38.8,62,26.8,0,0,4.5,7.8 +2022-12-24T13:00,39.3,58,25.7,0,0,4.2,7.6 +2022-12-24T14:00,39.7,57,25.9,0,0,4.3,8.5 +2022-12-24T15:00,38.3,61,25.9,0,0,4.3,8.5 +2022-12-24T16:00,38.8,49,21.3,0,0,2.1,7.4 +2022-12-24T17:00,38.8,48,20.7,0,0,7.2,4.5 +2022-12-24T18:00,40.6,45,21,0,0,4.8,8.7 +2022-12-24T19:00,32.2,62,20.7,0,0,5.5,6.5 +2022-12-24T20:00,31.3,63,20.2,0,0,6.8,7.8 +2022-12-24T21:00,32.4,61,20.4,0,0,6.8,8.5 +2022-12-24T22:00,31.4,62,19.9,0,0,4.7,8.1 +2022-12-24T23:00,28,63,17,0,0,4,6.3 +2022-12-25T00:00,27.9,59,15.4,0,0,4.9,7.6 +2022-12-25T01:00,27.7,60,15.6,0,0,5.8,9.2 +2022-12-25T02:00,28.3,61,16.6,0,0,5.4,9.2 +2022-12-25T03:00,28.6,63,17.5,0,0,7.8,10.1 +2022-12-25T04:00,32.5,54,17.6,0,0,3.7,9.2 +2022-12-25T05:00,28.1,64,17.5,0,0,6.9,6 +2022-12-25T06:00,27.2,69,18.4,0,0,11.9,17.4 +2022-12-25T07:00,29.1,67,19.5,0,0,11.4,19.2 +2022-12-25T08:00,32.5,64,21.6,0,0,9.5,17 +2022-12-25T09:00,39.8,50,22.6,0,0,3.8,15.4 +2022-12-25T10:00,46.9,40,23.8,0,0,1.2,8.3 +2022-12-25T11:00,52.2,36,26.2,0,0,17.2,27.3 +2022-12-25T12:00,52.8,36,26.2,0,0,8.6,29.5 +2022-12-25T13:00,49.6,40,26.2,0,0,8.8,14.8 +2022-12-25T14:00,49.9,39,26.2,0,0,12.3,18.8 +2022-12-25T15:00,47.3,44,26.4,0,0,11.2,19 +2022-12-25T16:00,42.6,52,26.1,0,0,8.3,17.4 +2022-12-25T17:00,37.2,62,25.5,0,0,6,13.4 +2022-12-25T18:00,34.3,69,25.3,0,0,6.1,9.8 +2022-12-25T19:00,37.3,60,24.7,0,0,10.3,15.2 +2022-12-25T20:00,39.8,55,24.8,0,0,10,18.3 +2022-12-25T21:00,40.9,52,24.4,0,0,8.1,15.9 +2022-12-25T22:00,35.2,63,23.9,0,0,5.3,12.8 +2022-12-25T23:00,32.8,73,25.1,0,0,5.1,8.7 +2022-12-26T00:00,29.3,83,24.7,0,0,3.8,8.9 +2022-12-26T01:00,28.8,78,22.7,0,0,4.8,6 +2022-12-26T02:00,28.7,72,20.8,0,0,4.5,6.5 +2022-12-26T03:00,27.9,72,20,0,0,4.3,6.7 +2022-12-26T04:00,27,75,19.9,0,0,4.6,5.8 +2022-12-26T05:00,26.4,87,23,0,0,5.8,7.2 +2022-12-26T06:00,26.5,88,23.5,0,0,8.4,13.2 +2022-12-26T07:00,29,81,23.8,0,0,7.4,14.1 +2022-12-26T08:00,30.1,72,22,0,0,5.4,11 +2022-12-26T09:00,33,62,21.4,0,0,4.1,7.8 +2022-12-26T10:00,37.6,53,22.1,0,0,5.9,11.2 +2022-12-26T11:00,43,43,21.8,0,0,6.6,12.8 +2022-12-26T12:00,48.7,34,21.2,0,0,7.2,13.4 +2022-12-26T13:00,51.4,30,20.9,0,0,6.3,13.6 +2022-12-26T14:00,51.8,30,21.1,0,0,7.4,12.5 +2022-12-26T15:00,49.3,34,22.3,0,0,4.8,12.1 +2022-12-26T16:00,40.6,49,22.9,0,0,8.5,9.6 +2022-12-26T17:00,34.1,66,24,0,0,6.6,10.1 +2022-12-26T18:00,32.5,71,24.3,0,0,4.6,8.3 +2022-12-26T19:00,31.3,76,24.5,0,0,5.2,8.5 +2022-12-26T20:00,31,78,24.9,0,0,6.7,8.1 +2022-12-26T21:00,32.2,73,24.6,0,0,6.6,9.2 +2022-12-26T22:00,36.1,62,24.4,0,0,7.6,11.2 +2022-12-26T23:00,38.3,55,23.6,0,0,9.7,15.2 +2022-12-27T00:00,37.2,56,23,0,0,8.7,15.2 +2022-12-27T01:00,36.5,57,22.9,0,0,10,16.3 +2022-12-27T02:00,34.2,63,22.7,0,0,8.2,15.9 +2022-12-27T03:00,33.5,64,22.6,0,0,9,13.6 +2022-12-27T04:00,33.3,64,22.3,0,0,8.7,14.3 +2022-12-27T05:00,31.5,67,21.9,0,0,6.5,13.6 +2022-12-27T06:00,32.7,62,21.2,0,0,6.1,8.9 +2022-12-27T07:00,31.1,66,21,0,0,7.2,8.9 +2022-12-27T08:00,32.9,62,21.4,0,0,5.6,9.4 +2022-12-27T09:00,41.7,46,22.3,0,0,6.7,9.2 +2022-12-27T10:00,50.3,32,21.7,0,0,10,15.4 +2022-12-27T11:00,55.7,27,22.4,0,0,5.6,15.7 +2022-12-27T12:00,59.2,24,22.5,0,0,8.2,14.3 +2022-12-27T13:00,61.3,22,21.8,0,0,7.6,14.8 +2022-12-27T14:00,61.2,22,22.3,0,0,8.3,14.5 +2022-12-27T15:00,59.3,25,23.6,0,0,10.4,16.3 +2022-12-27T16:00,54.1,30,23.6,0,0,9.4,17.7 +2022-12-27T17:00,50.8,32,21.8,0,0,4.5,15.2 +2022-12-27T18:00,47.1,38,22.6,0,0,5.7,6.9 +2022-12-27T19:00,48.4,36,22.5,0,0,4.2,7.2 +2022-12-27T20:00,38.6,59,25.3,0,0,4.7,6.9 +2022-12-27T21:00,36.3,65,25.5,0,0,6.6,11.6 +2022-12-27T22:00,37.4,62,25.5,0,0,5.6,10.5 +2022-12-27T23:00,38.5,60,25.9,0,0,5.7,7.2 +2022-12-28T00:00,38,61,25.8,0,0,5.2,6.9 +2022-12-28T01:00,38.5,62,26.6,0,0,4.7,6 +2022-12-28T02:00,37.3,64,26.4,0,0,5.7,6.5 +2022-12-28T03:00,40.4,58,26.8,0,0,3.9,7.2 +2022-12-28T04:00,39.6,59,26.6,0,0,3.4,4.7 +2022-12-28T05:00,29.3,85,25.3,0,0,3,5.4 +2022-12-28T06:00,28,88,24.9,0,0,4.4,5.6 +2022-12-28T07:00,28.8,88,25.5,0,0,4.6,5.6 +2022-12-28T08:00,30.6,83,26,0,0,2.9,5.4 +2022-12-28T09:00,37.2,66,27,0,0,0.8,4.5 +2022-12-28T10:00,44,54,28.5,0,0,3.7,7.8 +2022-12-28T11:00,48.7,43,26.9,0,0,6,12.1 +2022-12-28T12:00,52.8,33,24.8,0,0,5.6,12.3 +2022-12-28T13:00,50.5,41,27.4,0,0,9.5,15.4 +2022-12-28T14:00,46.2,52,29.7,0,0,9.2,16.3 +2022-12-28T15:00,44.4,59,30.9,0,0,3.1,15 +2022-12-28T16:00,41.2,77,34.4,0.016,0,2,5.4 +2022-12-28T17:00,38,86,34.1,0.039,0.028,5.6,3.4 +2022-12-28T18:00,37.6,90,34.9,0.008,0,4.6,7.2 +2022-12-28T19:00,34.7,99,34.4,0.035,0.083,7.7,12.5 +2022-12-28T20:00,33.4,99,33.3,0.02,0.689,5.8,11.9 +2022-12-28T21:00,32.8,99,32.6,0.008,1.102,8.3,13.4 +2022-12-28T22:00,32.5,97,31.6,0,1.378,5.3,13.4 +2022-12-28T23:00,32.3,97,31.6,0,1.102,2.2,8.1 +2022-12-29T00:00,31.2,97,30.4,0,0.689,2.8,4.9 +2022-12-29T01:00,31.1,94,29.5,0,0.661,1.4,2.9 +2022-12-29T02:00,30.2,97,29.6,0,0.358,1.8,2.7 +2022-12-29T03:00,28.8,97,28,0,0.083,3.7,4.5 +2022-12-29T04:00,28.8,96,27.8,0,0.055,3.6,5.4 +2022-12-29T05:00,26.8,96,25.7,0,0.028,2.7,5.6 +2022-12-29T06:00,26.1,95,24.8,0,0,3.2,4.9 +2022-12-29T07:00,22.6,87,19.4,0,0,4.7,7.8 +2022-12-29T08:00,19.6,85,15.8,0,0,4.4,8.3 +2022-12-29T09:00,18.9,86,15.4,0,0,3.7,7.2 +2022-12-29T10:00,22.5,81,17.6,0,0,3.5,6.5 +2022-12-29T11:00,26.4,74,19.4,0,0,1.6,5.8 +2022-12-29T12:00,27.2,75,20.2,0,0,3.5,4 +2022-12-29T13:00,28.4,68,19.1,0,0,4,4.9 +2022-12-29T14:00,27.3,65,17,0,0,6.1,6.5 +2022-12-29T15:00,24.4,61,12.9,0,0,8.1,8.9 +2022-12-29T16:00,20.6,62,9.6,0,0,8.2,9.6 +2022-12-29T17:00,29.3,50,12.8,0,0,2.1,9.8 +2022-12-29T18:00,17.2,73,10,0,0,5.1,6.7 +2022-12-29T19:00,11.7,81,7.1,0,0,5.1,6.3 +2022-12-29T20:00,6.9,86,3.6,0,0,7,8.1 +2022-12-29T21:00,6.6,82,2.3,0,0,6.5,8.3 +2022-12-29T22:00,3.9,78,-1.4,0,0,9,10.3 +2022-12-29T23:00,4.1,76,-1.7,0,0,9.3,11.6 +2022-12-30T00:00,10.4,68,2,0,0,5.4,11.4 +2022-12-30T01:00,8.6,67,-0.1,0,0,6.9,7.6 +2022-12-30T02:00,6.9,67,-1.7,0,0,6.8,8.3 +2022-12-30T03:00,10.9,63,0.9,0,0,4.7,8.1 +2022-12-30T04:00,5.4,72,-1.6,0,0,5.3,5.8 +2022-12-30T05:00,7.6,76,1.5,0,0,5.6,7.2 +2022-12-30T06:00,7.9,78,2.4,0,0,6.5,8.3 +2022-12-30T07:00,12.1,75,5.6,0,0,5.3,8.1 +2022-12-30T08:00,14.4,75,8,0,0,4.9,7.8 +2022-12-30T09:00,15.6,77,9.6,0,0,6.2,7.6 +2022-12-30T10:00,21.2,72,13.6,0,0,3.9,7.2 +2022-12-30T11:00,24.6,66,14.8,0,0,4.3,6.5 +2022-12-30T12:00,27.8,69,19,0,0,3.7,5.1 +2022-12-30T13:00,31,61,19,0,0,3.2,4.9 +2022-12-30T14:00,32,60,19.8,0,0,3.5,3.8 +2022-12-30T15:00,33.7,53,18.6,0,0,3.3,4.7 +2022-12-30T16:00,33.1,54,18.3,0,0,1.2,3.8 +2022-12-30T17:00,27.9,63,17,0,0,2.6,2.2 +2022-12-30T18:00,28,63,17,0,0,1.6,3.6 +2022-12-30T19:00,19.3,80,14.3,0,0,5.6,7.2 +2022-12-30T20:00,15.3,81,10.5,0,0,6.8,8.1 +2022-12-30T21:00,16.6,76,10.5,0,0,7.6,9.6 +2022-12-30T22:00,13.7,79,8.4,0,0,7.3,8.7 +2022-12-30T23:00,14.9,79,9.7,0,0,8.2,10.3 +2022-12-31T00:00,16.5,78,10.8,0,0,8.3,10.3 +2022-12-31T01:00,16.3,79,10.9,0,0,9.1,11 +2022-12-31T02:00,20.4,74,13.4,0,0,6.8,11 +2022-12-31T03:00,21.1,75,14.5,0,0,6.2,7.8 +2022-12-31T04:00,27.1,69,18.2,0,0,3.4,7.4 +2022-12-31T05:00,20.8,84,16.8,0,0,4.3,5.6 +2022-12-31T06:00,18.6,87,15.3,0,0,6.2,7.4 +2022-12-31T07:00,23.6,79,18.1,0,0,4.7,7.8 +2022-12-31T08:00,22.8,84,18.6,0,0,6.6,8.5 +2022-12-31T09:00,29.1,77,22.7,0,0,4.1,7.8 +2022-12-31T10:00,32.4,78,26.2,0,0,5.2,8.1 +2022-12-31T11:00,37.6,70,28.6,0,0,6,8.7 +2022-12-31T12:00,40.8,63,29.1,0,0,8.8,13.6 +2022-12-31T13:00,39.7,70,30.6,0,0,6.8,13.6 +2022-12-31T14:00,39.9,69,30.7,0,0,7.9,9.6 +2022-12-31T15:00,44.7,52,28.3,0,0,2.7,8.9 +2022-12-31T16:00,37.7,71,29.2,0,0,6.1,8.5 +2022-12-31T17:00,30.3,90,27.8,0,0,7.5,14.5 +2022-12-31T18:00,28.1,90,25.5,0,0,4.5,8.9 +2022-12-31T19:00,24.8,94,23.3,0,0,4.8,6.9 +2022-12-31T20:00,22.5,94,21,0,0,6.3,6.9 +2022-12-31T21:00,21.8,92,19.9,0,0,7.7,9.4 +2022-12-31T22:00,22.5,89,19.8,0,0,6.9,10.3 +2022-12-31T23:00,19.9,90,17.4,0,0,9,10.5 +2023-01-01T00:00,19,89,16.4,0,0,9.1,11 +2023-01-01T01:00,20,87,16.8,0,0,7.4,11 +2023-01-01T02:00,22,84,18,0,0,5.5,8.7 +2023-01-01T03:00,24.7,78,18.9,0,0,3,6.7 +2023-01-01T04:00,22.9,79,17.3,0,0,5.4,6.3 +2023-01-01T05:00,20,84,16,0,0,5.6,6.3 +2023-01-01T06:00,17.4,87,14.3,0,0,5.1,6.7 +2023-01-01T07:00,16.4,88,13.5,0,0,5.4,6.7 +2023-01-01T08:00,15.9,87,12.7,0,0,5.2,7.6 +2023-01-01T09:00,19.9,82,15.4,0,0,3.7,6.5 +2023-01-01T10:00,24.8,73,17.5,0,0,2.1,4.7 +2023-01-01T11:00,28,76,21.6,0,0,0.7,2.7 +2023-01-01T12:00,30.6,74,23.4,0,0,3.7,6 +2023-01-01T13:00,31,84,26.7,0,0,6.2,9.8 +2023-01-01T14:00,32.2,86,28.6,0,0,6.3,10.1 +2023-01-01T15:00,32.1,85,28,0,0,5.9,10.7 +2023-01-01T16:00,30.7,86,27.1,0,0,4.7,10.1 +2023-01-01T17:00,22.6,94,21.2,0,0,6.6,7.4 +2023-01-01T18:00,27.5,90,25.1,0,0,2.4,7.8 +2023-01-01T19:00,26,93,24.3,0,0,2.5,4.3 +2023-01-01T20:00,26.5,94,25.1,0,0,2.7,4.9 +2023-01-01T21:00,26.2,95,24.9,0,0.028,2.1,4.5 +2023-01-01T22:00,26,96,24.9,0,0.028,1.9,2.7 +2023-01-01T23:00,25.9,96,24.9,0,0.028,1.6,2.7 \ No newline at end of file From a0cd3416dd8eb8fc0b4bcee458e6f57e3cec36b3 Mon Sep 17 00:00:00 2001 From: Rahul Kulhalli Date: Fri, 16 Feb 2024 11:01:50 -0500 Subject: [PATCH 08/16] Added baseline sweep script --- rm_src/run_baseline_experiments.py | 499 +++++++++++++++++++++++++++++ 1 file changed, 499 insertions(+) create mode 100644 rm_src/run_baseline_experiments.py diff --git a/rm_src/run_baseline_experiments.py b/rm_src/run_baseline_experiments.py new file mode 100644 index 0000000..2b0b7df --- /dev/null +++ b/rm_src/run_baseline_experiments.py @@ -0,0 +1,499 @@ +from enum import Enum +import random +from pathlib import Path + +# Math and graphing. +import pandas as pd +import numpy as np +import seaborn as sns +import matplotlib.pyplot as plt + +# sklearn imports. +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +from sklearn.linear_model import LinearRegression +from sklearn.metrics import f1_score, r2_score, ConfusionMatrixDisplay + +from sklearn.metrics import classification_report +from sklearn.model_selection import GridSearchCV, StratifiedKFold +from pprint import pprint +from sklearn.inspection import permutation_importance +from time import perf_counter +from sklearn.ensemble import RandomForestClassifier + + +# Global experiment flags and variables. +SEED = 19348 +TARGETS = ['p_micro', 'no_trip', 's_car', 'transit', 'car', 's_micro', 'ridehail', 'walk', 'unknown'] +CV = False + +# Set the Numpy seed too. +random.seed(SEED) +np.random.seed(SEED) + +class SPLIT_TYPE(Enum): + INTRA_USER = 0 + INTER_USER = 1 + TARGET = 2 + MODE = 3 + + +class SPLIT(Enum): + TRAIN = 0 + TEST = 1 + +def get_splits(count_df: pd.DataFrame, n:int, test_size=0.2): + maxsize = int(n * test_size) + + max_threshold = int(maxsize * 1.05) + min_threshold = int(maxsize * 0.95) + + print(f"{min_threshold}, {max_threshold}") + + # Allow a 10% tolerance + def _dp(ix, curr_size, ids, cache): + + if ix >= count_df.shape[0]: + return [] + + key = ix + + if key in cache: + return cache[key] + + if curr_size > max_threshold: + return [] + + if min_threshold <= curr_size <= max_threshold: + return ids + + # two options - either pick the current id or skip it. + branch_a = _dp(ix, curr_size+count_df.loc[ix, 'count'], ids+[count_df.loc[ix, 'index']], cache) + branch_b = _dp(ix+1, curr_size, ids, cache) + + curr_max = [] + if branch_a and len(branch_a) > 0: + curr_max = branch_a + + if branch_b and len(branch_b) > len(branch_a): + curr_max = branch_b + + cache[key] = curr_max + return cache[key] + + return _dp(0, 0, ids=list(), cache=dict()) + + +def get_train_test_splits(data: pd.DataFrame, how=SPLIT_TYPE, test_ratio=0.2, shuffle=True): + + n_users = list(data.user_id.unique()) + n = data.shape[0] + + if shuffle: + data = data.sample(data.shape[0], random_state=SEED).reset_index(drop=True, inplace=False) + + if how == SPLIT_TYPE.INTER_USER: + # Make the split, ensuring that a user in one fold is not leaked into the other fold. + # Basic idea: we want to start with the users with the highest instances and place + # alternating users in each set. + counts = data.user_id.value_counts().reset_index(drop=False, inplace=False, name='count') + + # Now, start with the user_id at the top, and keep adding to either split. + # This can be achieved using a simple DP program. + test_ids = get_splits(counts, data.shape[0]) + test_data = data.loc[data.user_id.isin(test_ids), :] + train_index = data.index.difference(test_data.index) + train_data = data.loc[data.user_id.isin(train_index), :] + + return train_data, test_data + + elif how == SPLIT_TYPE.INTRA_USER: + + # There are certain users with only one observation. What do we do with those? + # As per the mobilitynet modeling pipeline, we randomly assign them to either the + # training or test set. + + value_counts = data.user_id.value_counts() + single_count_ids = value_counts[value_counts == 1].index + + data_filtered = data.loc[~data.user_id.isin(single_count_ids), :].reset_index(drop=True) + data_single_counts = data.loc[data.user_id.isin(single_count_ids), :].reset_index(drop=True) + + X_tr, X_te = train_test_split( + data_filtered, test_size=test_ratio, shuffle=shuffle, stratify=data_filtered.user_id, + random_state=SEED + ) + + data_single_counts['assigned'] = np.random.choice(['train', 'test'], len(data_single_counts)) + X_tr_merged = pd.concat( + [X_tr, data_single_counts.loc[data_single_counts.assigned == 'train', :].drop( + columns=['assigned'], inplace=False + )], + ignore_index=True, axis=0 + ) + + X_te_merged = pd.concat( + [X_te, data_single_counts.loc[data_single_counts.assigned == 'test', :].drop( + columns=['assigned'], inplace=False + )], + ignore_index=True, axis=0 + ) + + return X_tr_merged, X_te_merged + + elif how == SPLIT_TYPE.TARGET: + + X_tr, X_te = train_test_split( + data, test_size=test_ratio, shuffle=shuffle, stratify=data.target, + random_state=SEED + ) + + return X_tr, X_te + + elif how == SPLIT_TYPE.MODE: + X_tr, X_te = train_test_split( + data, test_size=test_ratio, shuffle=shuffle, stratify=data.section_mode_argmax, + random_state=SEED + ) + + return X_tr, X_te + + raise NotImplementedError("Unknown split type") + + +def get_duration_estimate(df: pd.DataFrame, dset: SPLIT, model_dict: dict): + + X_features = ['section_distance_argmax', 'age'] + + if 'mph' in df.columns: + X_features += ['mph'] + + if dset == SPLIT.TRAIN and model_dict is None: + model_dict = dict() + + if dset == SPLIT.TEST and model_dict is None: + raise AttributeError("Expected model dict for testing.") + + if dset == SPLIT.TRAIN: + for section_mode in df.section_mode_argmax.unique(): + section_data = df.loc[df.section_mode_argmax == section_mode, :] + if section_mode not in model_dict: + model_dict[section_mode] = dict() + + model = LinearRegression(fit_intercept=True) + + X = section_data[ + X_features + ] + Y = section_data[['section_duration_argmax']] + + model.fit(X, Y.values.ravel()) + + r2 = r2_score(y_pred=model.predict(X), y_true=Y.values.ravel()) + print(f"\t-> Train R2 for {section_mode}: {r2}") + + model_dict[section_mode]['model'] = model + + elif dset == SPLIT.TEST: + for section_mode in df.section_mode_argmax.unique(): + section_data = df.loc[df.section_mode_argmax == section_mode, :] + X = section_data[ + X_features + ] + Y = section_data[['section_duration_argmax']] + + y_pred = model_dict[section_mode]['model'].predict(X) + r2 = r2_score(y_pred=y_pred, y_true=Y.values.ravel()) + print(f"\t-> Test R2 for {section_mode}: {r2}") + + # Create the new columns for the duration. + new_columns = ['p_micro','no_trip','s_car','transit','car','s_micro','ridehail','walk','unknown'] + df[new_columns] = 0 + df['temp'] = 0 + + for section in df.section_mode_argmax.unique(): + X_section = df.loc[df.section_mode_argmax == section, X_features] + + # broadcast to all columns. + df.loc[df.section_mode_argmax == section, 'temp'] = model_dict[section]['model'].predict(X_section) + + for c in new_columns: + df[c] = df['av_' + c] * df['temp'] + + df.drop(columns=['temp'], inplace=True) + + df.rename(columns=dict([(x, 'tt_'+x) for x in new_columns]), inplace=True) + + # return model_dict, result_df + return model_dict, df + +# Some helper functions that will help ease redundancy in the code. + +def drop_columns(df: pd.DataFrame): + to_drop = [ + 'source', 'end_ts', 'end_fmt_time', 'end_loc', 'raw_trip', 'start_ts', + 'start_fmt_time', 'start_loc', 'duration', 'distance', 'start_place', + 'end_place', 'cleaned_trip', 'inferred_labels', 'inferred_trip', 'expectation', + 'confidence_threshold', 'expected_trip', 'user_input', 'start:year', 'start:month', + 'start:day', 'start_local_dt_minute', 'start_local_dt_second', + 'start_local_dt_weekday', 'start_local_dt_timezone', 'end:year', 'end:month', 'end:day', + 'end_local_dt_minute', 'end_local_dt_second', 'end_local_dt_weekday', + 'end_local_dt_timezone', '_id', 'user_id', 'metadata_write_ts', 'additions', + 'mode_confirm', 'purpose_confirm', 'Mode_confirm', 'Trip_purpose', + 'original_user_id', 'program', 'opcode', 'Timestamp', 'birth_year', + 'available_modes', 'section_coordinates_argmax', 'section_mode_argmax' + ] + + # Drop section_mode_argmax and available_modes. + return df.drop( + columns=to_drop, + inplace=False + ) + + +def scale_values(df: pd.DataFrame, split: SPLIT, scalers=None): + # Scale costs using StandardScaler. + costs = df[[c for c in df.columns if 'cost_' in c]].copy() + times = df[[c for c in df.columns if 'tt_' in c or 'duration' in c]].copy() + distances = df[[c for c in df.columns if 'distance' in c]] + + print( + "Cost columns to be scaled: ", costs.columns,"\nTime columns to be scaled: ", times.columns, \ + "\nDistance columns to be scaled: ", distances.columns + ) + + if split == SPLIT.TRAIN and scalers is None: + cost_scaler = StandardScaler() + tt_scaler = StandardScaler() + dist_scaler = StandardScaler() + + cost_scaled = pd.DataFrame( + cost_scaler.fit_transform(costs), + columns=costs.columns, + index=costs.index + ) + + tt_scaled = pd.DataFrame( + tt_scaler.fit_transform(times), + columns=times.columns, + index=times.index + ) + + dist_scaled = pd.DataFrame( + dist_scaler.fit_transform(distances), + columns=distances.columns, + index=distances.index + ) + + elif split == SPLIT.TEST and scalers is not None: + + cost_scaler, tt_scaler, dist_scaler = scalers + + cost_scaled = pd.DataFrame( + cost_scaler.transform(costs), + columns=costs.columns, + index=costs.index + ) + + tt_scaled = pd.DataFrame( + tt_scaler.transform(times), + columns=times.columns, + index=times.index + ) + + dist_scaled = pd.DataFrame( + dist_scaler.transform(distances), + columns=distances.columns, + index=distances.index + ) + + else: + raise NotImplementedError("Unknown split") + + # Drop the original columns. + df.drop( + columns=costs.columns.tolist() + times.columns.tolist() + distances.columns.tolist(), + inplace=True + ) + + df = df.merge(right=cost_scaled, left_index=True, right_index=True) + df = df.merge(right=tt_scaled, left_index=True, right_index=True) + df = df.merge(right=dist_scaled, left_index=True, right_index=True) + + return df, (cost_scaler, tt_scaler, dist_scaler) + + +def train(X_tr, Y_tr): + if CV: + + model = RandomForestClassifier(random_state=SEED) + + # We want to build bootstrapped trees that would not always use all the features. + param_set2 = { + 'n_estimators': [150, 200, 250], + 'min_samples_split': [2, 3, 4], + 'min_samples_leaf': [1, 2, 3], + 'class_weight': ['balanced_subsample'], + 'max_features': [None, 'sqrt'], + 'bootstrap': [True] + } + + cv_set2 = StratifiedKFold(n_splits=3, shuffle=True, random_state=SEED) + + clf_set2 = GridSearchCV(model, param_set2, cv=cv_set2, n_jobs=-1, scoring='f1_weighted', verbose=1) + + start = perf_counter() + + clf_set2.fit( + X_tr, + Y_tr + ) + + time_req = (perf_counter() - start)/60. + + best_model = clf_set2.best_estimator_ + else: + best_model = RandomForestClassifier( + n_estimators=150, + max_depth=None, + min_samples_leaf=2, + bootstrap=True, + class_weight='balanced_subsample', + random_state=SEED, + n_jobs=-1 + ).fit(X_tr, Y_tr) + + return best_model + + +def predict(model, X_tr, Y_tr, X_te, Y_te): + + y_test_pred = model.predict(X_te) + y_train_pred = model.predict(X_tr) + + train_f1 = f1_score( + y_true=Y_tr, + y_pred=y_train_pred, + average='weighted' + ) + + test_f1 = f1_score( + y_true=Y_te, + y_pred=y_test_pred, + average='weighted' + ) + + return y_train_pred, train_f1, y_test_pred, test_f1 + + +def run_sampled_sweep(df: pd.DataFrame, dir_name: Path, **kwargs): + + targets = TARGETS.copy() + + drop_s_micro = kwargs.pop('drop_s_micro', None) + + if drop_s_micro: + df.drop( + index=df.loc[data.target == 6, :].index, + inplace=True + ) + + # Shift all values after 6 by -1 + df.loc[data.target > 5, 'target'] -= 1 + + # Update targets. + targets.pop(targets.index('s_micro')) + + split = kwargs.pop('split', None) + + train_data, test_data = get_train_test_splits(data=df, how=split, shuffle=True) + + params, train_data = get_duration_estimate(train_data, SPLIT.TRAIN, None) + _, test_data = get_duration_estimate(test_data, SPLIT.TEST, params) + + train_data = drop_columns(train_data) + test_data = drop_columns(test_data) + + drop_location = kwargs.pop('drop_location', None) + + if drop_location: + train_data.drop(columns=['start_lat', 'start_lng', 'end_lat', 'end_lng'], inplace=True) + test_data.drop(columns=['start_lat', 'start_lng', 'end_lat', 'end_lng'], inplace=True) + + X_tr, Y_tr = train_data.drop(columns=['target'], inplace=False), train_data.target.values.ravel() + X_te, Y_te = test_data.drop(columns=['target'], inplace=False), test_data.target.values.ravel() + + model = train(X_tr, Y_tr) + tr_preds, tr_f1, te_preds, te_f1 = predict(model, X_tr, Y_tr, X_te, Y_te) + + print(f"\t-> Train F1: {tr_f1}, Test F1: {te_f1}") + + importance = sorted( + zip( + model.feature_names_in_, + model.feature_importances_ + ), + key=lambda x: x[-1], reverse=True + ) + + with open(dir_name / 'f1_scores.txt', 'w') as f: + f.write(f"Train F1: {tr_f1}\nTest F1: {te_f1}") + + importance_df = pd.DataFrame(importance, columns=['feature_name', 'importance']) + importance_df.to_csv(dir_name / 'feature_importance.csv', index=False) + + with open(dir_name / 'classification_report.txt', 'w') as f: + f.write(classification_report(y_true=Y_te, y_pred=te_preds, target_names=targets)) + + fig, ax = plt.subplots(figsize=(7, 7)) + cm = ConfusionMatrixDisplay.from_estimator( + model, + X=X_te, + y=Y_te, + ax=ax + ) + ax.set_xticklabels(targets, rotation=45) + ax.set_yticklabels(targets) + fig.tight_layout() + plt.savefig(dir_name / 'test_confusion_matrix.png') + plt.close('all') + + +def save_metadata(dir_name: Path, **kwargs): + with open(dir_name / 'metadata.txt', 'w') as f: + for k, v in kwargs.items(): + f.write(f"{k}: {v}\n") + + +if __name__ == "__main__": + data = pd.read_csv('../data/ReplacedMode_Fix_02142024.csv') + data.drop_duplicates(inplace=True) + + print("Beginning sweeps.") + + start = perf_counter() + sweep_number = 1 + + for split in [SPLIT_TYPE.INTRA_USER, SPLIT_TYPE.TARGET, SPLIT_TYPE.MODE]: + for drop in [True, False]: + for location_drop in [True, False]: + kwargs = { + 'drop_s_micro': drop, + 'split': split, + 'drop_location': location_drop + } + dir_name = Path(f'../benchmark_results/benchmark_{sweep_number}') + + if not dir_name.exists(): + dir_name.mkdir() + + print(f"\t-> Running sweep #{sweep_number}...") + save_metadata(dir_name, **kwargs) + run_sampled_sweep(data.copy(), dir_name, **kwargs) + print(f"Completed benchmarking for {sweep_number} experiment.") + print(50*'-') + sweep_number += 1 + + elapsed = perf_counter() - start + + print(f"Completed sweeps in {elapsed/60.} minutes") \ No newline at end of file From c7bb087dfc6dfa7fa8893d65eaeb6b2683a14987 Mon Sep 17 00:00:00 2001 From: Rahul Kulhalli Date: Fri, 16 Feb 2024 13:38:58 -0500 Subject: [PATCH 09/16] Added modeling notebook --- rm_src/baseline_modeling0.ipynb | 1233 +++++++++++++++++++++++++++++++ 1 file changed, 1233 insertions(+) create mode 100644 rm_src/baseline_modeling0.ipynb diff --git a/rm_src/baseline_modeling0.ipynb b/rm_src/baseline_modeling0.ipynb new file mode 100644 index 0000000..549b468 --- /dev/null +++ b/rm_src/baseline_modeling0.ipynb @@ -0,0 +1,1233 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### All experiments are logged in Notion [here](https://www.notion.so/Replacement-mode-modeling-257c2f460377498d921e6b167f465945)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from enum import Enum\n", + "import random\n", + "\n", + "# Math and graphing.\n", + "import pandas as pd\n", + "import numpy as np\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# sklearn imports.\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.metrics import f1_score, r2_score, ConfusionMatrixDisplay\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Global experiment flags and variables.\n", + "SEED = 19348\n", + "TARGETS = ['p_micro', 'no_trip', 's_car', 'transit', 'car', 's_micro', 'ridehail', 'walk', 'unknown']\n", + "\n", + "DROP_S_MICRO = False\n", + "\n", + "# Set the Numpy seed too.\n", + "random.seed(SEED)\n", + "np.random.seed(SEED)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "class SPLIT_TYPE(Enum):\n", + " INTRA_USER = 0\n", + " INTER_USER = 1\n", + " TARGET = 2\n", + " MODE = 3\n", + " \n", + "\n", + "class SPLIT(Enum):\n", + " TRAIN = 0\n", + " TEST = 1\n", + "\n", + "def get_splits(count_df: pd.DataFrame, n:int, test_size=0.2):\n", + " maxsize = int(n * test_size)\n", + "\n", + " max_threshold = int(maxsize * 1.05)\n", + " min_threshold = int(maxsize * 0.95)\n", + "\n", + " print(f\"{min_threshold}, {max_threshold}\")\n", + " \n", + " # Allow a 10% tolerance\n", + " def _dp(ix, curr_size, ids, cache):\n", + " \n", + " if ix >= count_df.shape[0]:\n", + " return []\n", + "\n", + " key = ix\n", + "\n", + " if key in cache:\n", + " return cache[key]\n", + "\n", + " if curr_size > max_threshold:\n", + " return []\n", + "\n", + " if min_threshold <= curr_size <= max_threshold:\n", + " return ids\n", + "\n", + " # two options - either pick the current id or skip it.\n", + " branch_a = _dp(ix, curr_size+count_df.loc[ix, 'count'], ids+[count_df.loc[ix, 'index']], cache)\n", + " branch_b = _dp(ix+1, curr_size, ids, cache)\n", + " \n", + " curr_max = []\n", + " if branch_a and len(branch_a) > 0:\n", + " curr_max = branch_a\n", + " \n", + " if branch_b and len(branch_b) > len(branch_a):\n", + " curr_max = branch_b\n", + " \n", + " cache[key] = curr_max\n", + " return cache[key]\n", + " \n", + " return _dp(0, 0, ids=list(), cache=dict())\n", + "\n", + "\n", + "def get_train_test_splits(data: pd.DataFrame, how=SPLIT_TYPE, test_ratio=0.2, shuffle=True):\n", + "\n", + " n_users = list(data.user_id.unique())\n", + " n = data.shape[0]\n", + " \n", + " if shuffle:\n", + " data = data.sample(data.shape[0], random_state=SEED).reset_index(drop=True, inplace=False)\n", + "\n", + " if how == SPLIT_TYPE.INTER_USER:\n", + " # Make the split, ensuring that a user in one fold is not leaked into the other fold.\n", + " # Basic idea: we want to start with the users with the highest instances and place \n", + " # alternating users in each set.\n", + " counts = data.user_id.value_counts().reset_index(drop=False, inplace=False, name='count')\n", + "\n", + " # Now, start with the user_id at the top, and keep adding to either split.\n", + " # This can be achieved using a simple DP program.\n", + " test_ids = get_splits(counts, data.shape[0])\n", + " test_data = data.loc[data.user_id.isin(test_ids), :]\n", + " train_index = data.index.difference(test_data.index)\n", + " train_data = data.loc[data.user_id.isin(train_index), :]\n", + " \n", + " return train_data, test_data\n", + " \n", + " elif how == SPLIT_TYPE.INTRA_USER:\n", + " \n", + " # There are certain users with only one observation. What do we do with those?\n", + " # As per the mobilitynet modeling pipeline, we randomly assign them to either the\n", + " # training or test set.\n", + " \n", + " value_counts = data.user_id.value_counts()\n", + " single_count_ids = value_counts[value_counts == 1].index\n", + " \n", + " data_filtered = data.loc[~data.user_id.isin(single_count_ids), :].reset_index(drop=True)\n", + " data_single_counts = data.loc[data.user_id.isin(single_count_ids), :].reset_index(drop=True)\n", + " \n", + " X_tr, X_te = train_test_split(\n", + " data_filtered, test_size=test_ratio, shuffle=shuffle, stratify=data_filtered.user_id,\n", + " random_state=SEED\n", + " )\n", + " \n", + " data_single_counts['assigned'] = np.random.choice(['train', 'test'], len(data_single_counts))\n", + " X_tr_merged = pd.concat(\n", + " [X_tr, data_single_counts.loc[data_single_counts.assigned == 'train', :].drop(\n", + " columns=['assigned'], inplace=False\n", + " )],\n", + " ignore_index=True, axis=0\n", + " )\n", + " \n", + " X_te_merged = pd.concat(\n", + " [X_te, data_single_counts.loc[data_single_counts.assigned == 'test', :].drop(\n", + " columns=['assigned'], inplace=False\n", + " )],\n", + " ignore_index=True, axis=0\n", + " )\n", + " \n", + " return X_tr_merged, X_te_merged\n", + " \n", + " elif how == SPLIT_TYPE.TARGET:\n", + " \n", + " X_tr, X_te = train_test_split(\n", + " data, test_size=test_ratio, shuffle=shuffle, stratify=data.target,\n", + " random_state=SEED\n", + " )\n", + " \n", + " return X_tr, X_te\n", + " \n", + " elif how == SPLIT_TYPE.MODE:\n", + " X_tr, X_te = train_test_split(\n", + " data, test_size=test_ratio, shuffle=shuffle, stratify=data.section_mode_argmax,\n", + " random_state=SEED\n", + " )\n", + " \n", + " return X_tr, X_te\n", + " \n", + " raise NotImplementedError(\"Unknown split type\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Modeling" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_75614/2274972291.py:4: DtypeWarning: Columns (38) have mixed types. Specify dtype option on import or set low_memory=False.\n", + " data = pd.read_csv('../data/ReplacedMode_Fix_02142024.csv')\n" + ] + } + ], + "source": [ + "# Read the data.\n", + "# data = pd.read_csv('../data/FULL_preprocessed_data_RM_weather.csv')\n", + "# data = pd.read_csv('../data/ReplacedMode_Fix.csv')\n", + "data = pd.read_csv('../data/ReplacedMode_Fix_02142024.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "if DROP_S_MICRO:\n", + " data.drop(\n", + " index=data.loc[data.target == 6, :].index,\n", + " inplace=True\n", + " )\n", + " \n", + " # Shift all values after 6 by -1\n", + " data.loc[data.target > 5, 'target'] -= 1" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "data.drop_duplicates(inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def plot_hist(df, features=None):\n", + " if not features:\n", + " # All features.\n", + " features = df.columns.tolist()\n", + " \n", + " n_features = len(features)\n", + " \n", + " ncols = 6\n", + " nrows = n_features//ncols if n_features%ncols == 0 else (n_features//ncols) + 1\n", + " \n", + " fig, axes = plt.subplots(nrows=nrows, ncols=ncols, figsize=(10, 10))\n", + " for ix, ax in enumerate(axes.flatten()):\n", + " \n", + " if ix > n_features:\n", + " break\n", + " \n", + " df[features[ix]].hist(ax=ax)\n", + " ax.set(title=features[ix])\n", + " \n", + " plt.tight_layout()\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# First, we map the user IDs to ints.\n", + "\n", + "USERS = list(data.user_id.unique())\n", + "\n", + "USER_MAP = {\n", + " u: i+1 for (i, u) in enumerate(USERS)\n", + "}\n", + "\n", + "data['user_id'] = data['user_id'].apply(lambda x: USER_MAP[x])\n", + "\n", + "# data.rename(\n", + "# columns={'start_local_dt_weekday': 'start:DOW', 'end_local_dt_weekday': 'end:DOW'},\n", + "# inplace=True\n", + "# )\n", + "\n", + "# Drop the samples with chosen == no trip or chosen == unknown\n", + "# data.drop(index=data.loc[data.chosen.isin([2, 9])].index, inplace=True)\n", + "\n", + "# data.n_working_residents = data.n_working_residents.apply(lambda x: 0 if x < 0 else x)\n", + "\n", + "# Fix some age preprocessing issues.\n", + "# data.age = data.age.apply(lambda x: x if x < 100 else 2024-x)\n", + "\n", + "# Collapse 'train' and 'bus' into 'transit'\n", + "# data.loc[\n", + "# data.section_mode_argmax.isin(['train', 'bus']), 'section_mode_argmax'\n", + "# ] = 'transit'" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# display(data.section_mode_argmax.value_counts())" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# transit = data.loc[data.section_mode_argmax == 'transit', :].copy()\n", + "# transit['section_duration_argmax'] /= 60.\n", + "\n", + "# transit['mph'] = transit['section_distance_argmax']/transit['section_duration_argmax']\n", + "\n", + "# display(transit[['section_duration_argmax', 'section_distance_argmax', 'mph']].describe())" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# import plotly.express as px\n", + "\n", + "# sp = data.loc[data.section_mode_argmax.isin(['car', 'transit', 'walking']), :]\n", + "# fig = px.line(sp, y='section_distance_argmax', color='section_mode_argmax')\n", + "# fig.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# Close the figure above.\n", + "# plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "def get_duration_estimate(df: pd.DataFrame, dset: SPLIT, model_dict: dict):\n", + " \n", + " X_features = ['section_distance_argmax', 'age']\n", + " \n", + " if 'mph' in df.columns:\n", + " X_features += ['mph']\n", + " \n", + " if dset == SPLIT.TRAIN and model_dict is None:\n", + " model_dict = dict()\n", + " \n", + " if dset == SPLIT.TEST and model_dict is None:\n", + " raise AttributeError(\"Expected model dict for testing.\")\n", + " \n", + " if dset == SPLIT.TRAIN:\n", + " for section_mode in df.section_mode_argmax.unique():\n", + " section_data = df.loc[df.section_mode_argmax == section_mode, :]\n", + " if section_mode not in model_dict:\n", + " model_dict[section_mode] = dict()\n", + "\n", + " model = LinearRegression(fit_intercept=True)\n", + "\n", + " X = section_data[\n", + " X_features\n", + " ]\n", + " Y = section_data[['section_duration_argmax']]\n", + "\n", + " model.fit(X, Y.values.ravel())\n", + "\n", + " r2 = r2_score(y_pred=model.predict(X), y_true=Y.values.ravel())\n", + " print(f\"Train R2 for {section_mode}: {r2}\")\n", + "\n", + " model_dict[section_mode]['model'] = model\n", + " \n", + " elif dset == SPLIT.TEST:\n", + " for section_mode in df.section_mode_argmax.unique():\n", + " section_data = df.loc[df.section_mode_argmax == section_mode, :]\n", + " X = section_data[\n", + " X_features\n", + " ]\n", + " Y = section_data[['section_duration_argmax']]\n", + " \n", + " y_pred = model_dict[section_mode]['model'].predict(X)\n", + " r2 = r2_score(y_pred=y_pred, y_true=Y.values.ravel())\n", + " print(f\"Test R2 for {section_mode}: {r2}\")\n", + " \n", + " # Create the new columns for the duration.\n", + " new_columns = ['p_micro','no_trip','s_car','transit','car','s_micro','ridehail','walk','unknown']\n", + " df[new_columns] = 0\n", + " df['temp'] = 0\n", + " \n", + " for section in df.section_mode_argmax.unique():\n", + " X_section = df.loc[df.section_mode_argmax == section, X_features]\n", + " \n", + " # broadcast to all columns.\n", + " df.loc[df.section_mode_argmax == section, 'temp'] = model_dict[section]['model'].predict(X_section)\n", + " \n", + " for c in new_columns:\n", + " df[c] = df['av_' + c] * df['temp']\n", + " \n", + " df.drop(columns=['temp'], inplace=True)\n", + " \n", + " df.rename(columns=dict([(x, 'tt_'+x) for x in new_columns]), inplace=True)\n", + " \n", + " # return model_dict, result_df\n", + " return model_dict, df" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# Now, we split the data.\n", + "train_data, test_data = get_train_test_splits(data=data, how=SPLIT_TYPE.TARGET, shuffle=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['source', 'end_ts', 'end_fmt_time', 'end_loc', 'raw_trip', 'start_ts', 'start_fmt_time', 'start_loc', 'duration', 'distance', 'start_place', 'end_place', 'cleaned_trip', 'inferred_labels', 'inferred_trip', 'expectation', 'confidence_threshold', 'expected_trip', 'user_input', 'start:year', 'start:month', 'start:day', 'start:hour', 'start_local_dt_minute', 'start_local_dt_second', 'start_local_dt_weekday', 'start_local_dt_timezone', 'end:year', 'end:month', 'end:day', 'end:hour', 'end_local_dt_minute', 'end_local_dt_second', 'end_local_dt_weekday', 'end_local_dt_timezone', '_id', 'user_id', 'metadata_write_ts', 'additions', 'mode_confirm', 'purpose_confirm', 'distance_miles', 'Mode_confirm', 'Trip_purpose', 'original_user_id', 'program', 'opcode', 'Timestamp', 'birth_year', 'primary_job_commute_time', 'income_category', 'n_residence_members', 'n_residents_u18', 'n_residents_with_license', 'n_motor_vehicles', 'available_modes', 'age', 'gender_Man', 'gender_Man;Nonbinary/genderqueer/genderfluid', 'gender_Nonbinary/genderqueer/genderfluid', 'gender_Prefer not to say', 'gender_Woman', 'gender_Woman;Nonbinary/genderqueer/genderfluid', 'has_drivers_license_No', 'has_drivers_license_Prefer not to say', 'has_drivers_license_Yes', 'has_multiple_jobs_No', 'has_multiple_jobs_Prefer not to say', 'has_multiple_jobs_Yes', \"highest_education_Bachelor's degree\", 'highest_education_Graduate degree or professional degree', 'highest_education_High school graduate or GED', 'highest_education_Less than a high school graduate', 'highest_education_Prefer not to say', 'highest_education_Some college or associates degree', 'primary_job_type_Full-time', 'primary_job_type_Part-time', 'primary_job_type_Prefer not to say', 'primary_job_description_Clerical or administrative support', 'primary_job_description_Custodial', 'primary_job_description_Education', 'primary_job_description_Food service', 'primary_job_description_Manufacturing, construction, maintenance, or farming', 'primary_job_description_Medical/healthcare', 'primary_job_description_Other', 'primary_job_description_Professional, managerial, or technical', 'primary_job_description_Sales or service', 'primary_job_commute_mode_Active transport', 'primary_job_commute_mode_Car transport', 'primary_job_commute_mode_Hybrid', 'primary_job_commute_mode_Public transport', 'primary_job_commute_mode_Unknown', 'primary_job_commute_mode_WFH', 'is_overnight_trip', 'n_working_residents', 'start_lat', 'start_lng', 'end_lat', 'end_lng', 'temperature_2m (°F)', 'relative_humidity_2m (%)', 'dew_point_2m (°F)', 'rain (inch)', 'snowfall (inch)', 'wind_speed_10m (mp/h)', 'wind_gusts_10m (mp/h)', 'section_distance_argmax', 'section_duration_argmax', 'section_mode_argmax', 'section_coordinates_argmax', 'mph', 'target', 'av_s_micro', 'av_ridehail', 'av_unknown', 'av_car', 'av_transit', 'av_walk', 'av_s_car', 'av_no_trip', 'av_p_micro', 'cost_p_micro', 'cost_no_trip', 'cost_s_car', 'cost_transit', 'cost_car', 'cost_s_micro', 'cost_ridehail', 'cost_walk', 'cost_unknown']\n" + ] + } + ], + "source": [ + "print(train_data.columns.tolist())" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train R2 for car: 0.7578875871366312\n", + "Train R2 for bicycling: 0.9103687323238318\n", + "Train R2 for walking: 0.6383980197916885\n", + "Train R2 for no_sensed: 0.6360068166249293\n", + "Train R2 for transit: 0.751057562851356\n", + "----------\n", + "Test R2 for car: 0.7754447909826347\n", + "Test R2 for walking: 0.670974597223546\n", + "Test R2 for bicycling: 0.9172082504523482\n", + "Test R2 for no_sensed: 0.6829614441643039\n", + "Test R2 for transit: 0.6870857316497596\n" + ] + } + ], + "source": [ + "params, train_data = get_duration_estimate(train_data, SPLIT.TRAIN, None)\n", + "print(10 * \"-\")\n", + "_, test_data = get_duration_estimate(test_data, SPLIT.TEST, params)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((56108, 139), (14028, 139))" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train_data.shape, test_data.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "# Some helper functions that will help ease redundancy in the code.\n", + "\n", + "def drop_columns(df: pd.DataFrame):\n", + " to_drop = [\n", + " 'source', 'end_ts', 'end_fmt_time', 'end_loc', 'raw_trip', 'start_ts', \n", + " 'start_fmt_time', 'start_loc', 'duration', 'distance', 'start_place', \n", + " 'end_place', 'cleaned_trip', 'inferred_labels', 'inferred_trip', 'expectation',\n", + " 'confidence_threshold', 'expected_trip', 'user_input', 'start:year', 'start:month', \n", + " 'start:day', 'start_local_dt_minute', 'start_local_dt_second', \n", + " 'start_local_dt_weekday', 'start_local_dt_timezone', 'end:year', 'end:month', 'end:day', \n", + " 'end_local_dt_minute', 'end_local_dt_second', 'end_local_dt_weekday', \n", + " 'end_local_dt_timezone', '_id', 'user_id', 'metadata_write_ts', 'additions', \n", + " 'mode_confirm', 'purpose_confirm', 'Mode_confirm', 'Trip_purpose', \n", + " 'original_user_id', 'program', 'opcode', 'Timestamp', 'birth_year', \n", + " 'available_modes', 'section_coordinates_argmax', 'section_mode_argmax'\n", + " ]\n", + " \n", + " # Drop section_mode_argmax and available_modes.\n", + " return df.drop(\n", + " columns=to_drop, \n", + " inplace=False\n", + " )\n", + "\n", + "\n", + "def scale_values(df: pd.DataFrame, split: SPLIT, scalers=None):\n", + " # Scale costs using StandardScaler.\n", + " costs = df[[c for c in df.columns if 'cost_' in c]].copy()\n", + " times = df[[c for c in df.columns if 'tt_' in c or 'duration' in c]].copy()\n", + " distances = df[[c for c in df.columns if 'distance' in c]]\n", + " \n", + " print(\n", + " \"Cost columns to be scaled: \", costs.columns,\"\\nTime columns to be scaled: \", times.columns, \\\n", + " \"\\nDistance columns to be scaled: \", distances.columns\n", + " )\n", + " \n", + " if split == SPLIT.TRAIN and scalers is None:\n", + " cost_scaler = StandardScaler()\n", + " tt_scaler = StandardScaler()\n", + " dist_scaler = StandardScaler()\n", + " \n", + " cost_scaled = pd.DataFrame(\n", + " cost_scaler.fit_transform(costs), \n", + " columns=costs.columns, \n", + " index=costs.index\n", + " )\n", + " \n", + " tt_scaled = pd.DataFrame(\n", + " tt_scaler.fit_transform(times),\n", + " columns=times.columns,\n", + " index=times.index\n", + " )\n", + " \n", + " dist_scaled = pd.DataFrame(\n", + " dist_scaler.fit_transform(distances),\n", + " columns=distances.columns,\n", + " index=distances.index\n", + " )\n", + " \n", + " elif split == SPLIT.TEST and scalers is not None:\n", + " \n", + " cost_scaler, tt_scaler, dist_scaler = scalers\n", + " \n", + " cost_scaled = pd.DataFrame(\n", + " cost_scaler.transform(costs), \n", + " columns=costs.columns, \n", + " index=costs.index\n", + " )\n", + " \n", + " tt_scaled = pd.DataFrame(\n", + " tt_scaler.transform(times), \n", + " columns=times.columns, \n", + " index=times.index\n", + " )\n", + " \n", + " dist_scaled = pd.DataFrame(\n", + " dist_scaler.transform(distances),\n", + " columns=distances.columns,\n", + " index=distances.index\n", + " )\n", + " \n", + " else:\n", + " raise NotImplementedError(\"Unknown split\")\n", + " \n", + " # Drop the original columns.\n", + " df.drop(\n", + " columns=costs.columns.tolist() + times.columns.tolist() + distances.columns.tolist(), \n", + " inplace=True\n", + " )\n", + " \n", + " df = df.merge(right=cost_scaled, left_index=True, right_index=True)\n", + " df = df.merge(right=tt_scaled, left_index=True, right_index=True)\n", + " df = df.merge(right=dist_scaled, left_index=True, right_index=True)\n", + " \n", + " return df, (cost_scaler, tt_scaler, dist_scaler)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "# First, drop columns.\n", + "\n", + "train_data = drop_columns(train_data)\n", + "\n", + "# Scale cost.\n", + "# train_data, scalers = scale_values(train_data, SPLIT.TRAIN, None)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "test_data = drop_columns(test_data)\n", + "\n", + "# Scale cost.\n", + "# test_data, _ = scale_values(test_data, SPLIT.TEST, scalers)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Index(['start:hour', 'end:hour', 'distance_miles', 'primary_job_commute_time',\n", + " 'income_category', 'n_residence_members', 'n_residents_u18',\n", + " 'n_residents_with_license', 'n_motor_vehicles', 'age', 'gender_Man',\n", + " 'gender_Man;Nonbinary/genderqueer/genderfluid',\n", + " 'gender_Nonbinary/genderqueer/genderfluid', 'gender_Prefer not to say',\n", + " 'gender_Woman', 'gender_Woman;Nonbinary/genderqueer/genderfluid',\n", + " 'has_drivers_license_No', 'has_drivers_license_Prefer not to say',\n", + " 'has_drivers_license_Yes', 'has_multiple_jobs_No',\n", + " 'has_multiple_jobs_Prefer not to say', 'has_multiple_jobs_Yes',\n", + " 'highest_education_Bachelor's degree',\n", + " 'highest_education_Graduate degree or professional degree',\n", + " 'highest_education_High school graduate or GED',\n", + " 'highest_education_Less than a high school graduate',\n", + " 'highest_education_Prefer not to say',\n", + " 'highest_education_Some college or associates degree',\n", + " 'primary_job_type_Full-time', 'primary_job_type_Part-time',\n", + " 'primary_job_type_Prefer not to say',\n", + " 'primary_job_description_Clerical or administrative support',\n", + " 'primary_job_description_Custodial',\n", + " 'primary_job_description_Education',\n", + " 'primary_job_description_Food service',\n", + " 'primary_job_description_Manufacturing, construction, maintenance, or farming',\n", + " 'primary_job_description_Medical/healthcare',\n", + " 'primary_job_description_Other',\n", + " 'primary_job_description_Professional, managerial, or technical',\n", + " 'primary_job_description_Sales or service',\n", + " 'primary_job_commute_mode_Active transport',\n", + " 'primary_job_commute_mode_Car transport',\n", + " 'primary_job_commute_mode_Hybrid',\n", + " 'primary_job_commute_mode_Public transport',\n", + " 'primary_job_commute_mode_Unknown', 'primary_job_commute_mode_WFH',\n", + " 'is_overnight_trip', 'n_working_residents', 'start_lat', 'start_lng',\n", + " 'end_lat', 'end_lng', 'temperature_2m (°F)', 'relative_humidity_2m (%)',\n", + " 'dew_point_2m (°F)', 'rain (inch)', 'snowfall (inch)',\n", + " 'wind_speed_10m (mp/h)', 'wind_gusts_10m (mp/h)',\n", + " 'section_distance_argmax', 'section_duration_argmax', 'mph', 'target',\n", + " 'av_s_micro', 'av_ridehail', 'av_unknown', 'av_car', 'av_transit',\n", + " 'av_walk', 'av_s_car', 'av_no_trip', 'av_p_micro', 'cost_p_micro',\n", + " 'cost_no_trip', 'cost_s_car', 'cost_transit', 'cost_car',\n", + " 'cost_s_micro', 'cost_ridehail', 'cost_walk', 'cost_unknown',\n", + " 'tt_p_micro', 'tt_no_trip', 'tt_s_car', 'tt_transit', 'tt_car',\n", + " 'tt_s_micro', 'tt_ridehail', 'tt_walk', 'tt_unknown'],\n", + " dtype='object')\n" + ] + } + ], + "source": [ + "print(train_data.columns)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "9" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(train_data.target.unique())" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "# train_data.to_csv('../data/train.csv', index=False)\n", + "# test_data.to_csv('../data/test.csv', index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.metrics import classification_report\n", + "from sklearn.model_selection import GridSearchCV, StratifiedKFold\n", + "from pprint import pprint\n", + "from sklearn.inspection import permutation_importance\n", + "from time import perf_counter" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Random Forest classifier" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "CV = False\n", + "SAVE_MODEL = True" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.ensemble import RandomForestClassifier\n", + "\n", + "# exp question - compute sample weights using user_id.\n", + "\n", + "rf_train = train_data.drop(columns=['target', \n", + " 'start_lat', 'start_lng', 'end_lat', 'end_lng'\n", + " ])\n", + "rf_test = test_data.drop(columns=['target', \n", + " 'start_lat', 'start_lng', 'end_lat', 'end_lng'\n", + " ])\n", + "\n", + "if CV:\n", + "\n", + " model = RandomForestClassifier(random_state=SEED)\n", + "\n", + " # We want to build bootstrapped trees that would not always use all the features.\n", + "\n", + " param_set2 = {\n", + " 'n_estimators': [150, 200, 250],\n", + " 'min_samples_split': [2, 3, 4],\n", + " 'min_samples_leaf': [1, 2, 3],\n", + " 'class_weight': ['balanced_subsample'],\n", + " 'max_features': [None, 'sqrt'],\n", + " 'bootstrap': [True]\n", + " }\n", + "\n", + " cv_set2 = StratifiedKFold(n_splits=3, shuffle=True, random_state=SEED)\n", + "\n", + " clf_set2 = GridSearchCV(model, param_set2, cv=cv_set2, n_jobs=-1, scoring='f1_weighted', verbose=1)\n", + "\n", + " start = perf_counter()\n", + "\n", + " clf_set2.fit(\n", + " rf_train,\n", + " train_data.target.values.ravel()\n", + " )\n", + "\n", + " time_req = (perf_counter() - start)/60.\n", + "\n", + " best_model = clf_set2.best_estimator_\n", + "else:\n", + " best_model = RandomForestClassifier(\n", + " n_estimators=150,\n", + " max_depth=None,\n", + " min_samples_leaf=2,\n", + " bootstrap=True,\n", + " class_weight='balanced_subsample',\n", + " random_state=SEED,\n", + " n_jobs=-1\n", + " ).fit(rf_train, train_data.target.values.ravel())" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
RandomForestClassifier(class_weight='balanced_subsample', min_samples_leaf=2,\n",
+       "                       n_estimators=150, n_jobs=-1, random_state=19348)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "RandomForestClassifier(class_weight='balanced_subsample', min_samples_leaf=2,\n", + " n_estimators=150, n_jobs=-1, random_state=19348)" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "best_model" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "tr_f1_set2 = f1_score(\n", + " y_true=train_data.target.values,\n", + " y_pred=best_model.predict(rf_train),\n", + " average='weighted'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "te_f1_set2 = f1_score(\n", + " y_true=test_data.target.values,\n", + " y_pred=best_model.predict(rf_test),\n", + " average='weighted'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[BOOTSTRAPPED] | Train F1: 0.9437613701101397, Test F1: 0.7241888194981588\n" + ] + } + ], + "source": [ + "# Without location:\n", + "#. intra-user split:\n", + "# [BOOTSTRAPPED] | Train F1: 0.9983454261487021, Test F1: 0.7192048995905516\n", + "# if stratified by section_mode_argmax:\n", + "# [BOOTSTRAPPED] | Train F1: 0.9987250576328509, Test F1: 0.7242573620109232\n", + "\n", + "# With location:\n", + "# [BOOTSTRAPPED] | Train F1: 0.9992402006853468, Test F1: 0.7654135199070202\n", + "\n", + "print(f\"[BOOTSTRAPPED] | Train F1: {tr_f1_set2}, Test F1: {te_f1_set2}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "if SAVE_MODEL:\n", + "\n", + " import pickle\n", + "\n", + " with open('../models/tuned_rf_model.pkl', 'wb') as f:\n", + " f.write(pickle.dumps(best_model))" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[('primary_job_commute_time', 0.043128713683595575),\n", + " ('age', 0.037455585582861765),\n", + " ('income_category', 0.03397706582439294),\n", + " ('distance_miles', 0.033258410055039066),\n", + " ('mph', 0.03262583547311039),\n", + " ('cost_transit', 0.031198791353082865),\n", + " ('section_distance_argmax', 0.030785647240196036),\n", + " ('dew_point_2m (°F)', 0.030211627865642073),\n", + " ('temperature_2m (°F)', 0.03007553220598789),\n", + " ('cost_s_car', 0.026055459738986344),\n", + " ('n_motor_vehicles', 0.02573541697937522),\n", + " ('cost_ridehail', 0.02456504397826428),\n", + " ('section_duration_argmax', 0.0228622986411679),\n", + " ('tt_p_micro', 0.022129815815942814),\n", + " ('relative_humidity_2m (%)', 0.02210319245106569),\n", + " ('end:hour', 0.021229903100266623),\n", + " ('tt_transit', 0.021206105210141206),\n", + " ('tt_walk', 0.02114515141258671),\n", + " ('start:hour', 0.020865360139350614),\n", + " ('primary_job_commute_mode_Car transport', 0.02081332151659349),\n", + " ('wind_gusts_10m (mp/h)', 0.020018561778756445),\n", + " ('n_residence_members', 0.019478670935887614),\n", + " ('wind_speed_10m (mp/h)', 0.019328357449251703),\n", + " ('cost_car', 0.01919696517190616),\n", + " ('n_residents_with_license', 0.0185836822165526),\n", + " ('tt_s_car', 0.017942959071607922),\n", + " ('n_working_residents', 0.017846139269221274),\n", + " ('tt_ridehail', 0.017430384620268677),\n", + " ('tt_car', 0.01558778045627846),\n", + " ('primary_job_commute_mode_Active transport', 0.014666396181188963),\n", + " ('cost_s_micro', 0.014091401054182044),\n", + " ('n_residents_u18', 0.012847507015434825),\n", + " ('highest_education_High school graduate or GED', 0.012395830421911084),\n", + " ('primary_job_description_Sales or service', 0.01213476693202911),\n", + " ('has_drivers_license_Yes', 0.011937170972796346),\n", + " ('tt_s_micro', 0.010932737957648923),\n", + " ('has_drivers_license_No', 0.010728975175435857),\n", + " ('av_transit', 0.01072203571287725),\n", + " ('highest_education_Some college or associates degree', 0.010449467308141266),\n", + " ('primary_job_commute_mode_Public transport', 0.010366529446513166),\n", + " ('gender_Woman', 0.009888767288248466),\n", + " ('primary_job_type_Full-time', 0.008728756077694473),\n", + " ('gender_Man', 0.00812404588127069),\n", + " ('primary_job_description_Professional, managerial, or technical',\n", + " 0.007993902388034105),\n", + " ('primary_job_description_Clerical or administrative support',\n", + " 0.007853483068559344),\n", + " ('primary_job_type_Part-time', 0.00773301630642922),\n", + " ('primary_job_description_Manufacturing, construction, maintenance, or '\n", + " 'farming',\n", + " 0.007073264089663813),\n", + " ('av_p_micro', 0.006819985655591969),\n", + " (\"highest_education_Bachelor's degree\", 0.0067744027509219346),\n", + " ('has_multiple_jobs_No', 0.005940630272941997),\n", + " ('av_walk', 0.005833534850107814),\n", + " ('primary_job_description_Education', 0.005601947324621126),\n", + " ('has_multiple_jobs_Yes', 0.0054762812973311375),\n", + " ('av_car', 0.005327083620534075),\n", + " ('av_s_micro', 0.004999887743199054),\n", + " ('primary_job_description_Custodial', 0.004967736001212933),\n", + " ('highest_education_Graduate degree or professional degree',\n", + " 0.004846691708506593),\n", + " ('av_ridehail', 0.0036346537681732137),\n", + " ('highest_education_Prefer not to say', 0.003564532937658746),\n", + " ('av_s_car', 0.003451427187397134),\n", + " ('primary_job_description_Food service', 0.0032926467536171333),\n", + " ('gender_Nonbinary/genderqueer/genderfluid', 0.0028942303106160934),\n", + " ('gender_Woman;Nonbinary/genderqueer/genderfluid', 0.00260835513020193),\n", + " ('primary_job_description_Medical/healthcare', 0.002369006457211943),\n", + " ('primary_job_type_Prefer not to say', 0.0022687588158498907),\n", + " ('primary_job_description_Other', 0.0022630321931658144),\n", + " ('tt_unknown', 0.0017387153721121465),\n", + " ('rain (inch)', 0.0014057957565409885),\n", + " ('primary_job_commute_mode_WFH', 0.0013711655929834956),\n", + " ('highest_education_Less than a high school graduate', 0.001295731028717082),\n", + " ('has_drivers_license_Prefer not to say', 0.0011005915907342048),\n", + " ('has_multiple_jobs_Prefer not to say', 0.0010434582607183032),\n", + " ('av_unknown', 0.0010228613615574766),\n", + " ('snowfall (inch)', 0.0008481943054743177),\n", + " ('primary_job_commute_mode_Unknown', 0.0007922654044467312),\n", + " ('primary_job_commute_mode_Hybrid', 0.000557116214113174),\n", + " ('gender_Man;Nonbinary/genderqueer/genderfluid', 0.00032688458412609075),\n", + " ('gender_Prefer not to say', 3.048996616614434e-05),\n", + " ('tt_no_trip', 1.2634619172866944e-05),\n", + " ('av_no_trip', 9.438648837193385e-06),\n", + " ('is_overnight_trip', 0.0),\n", + " ('cost_p_micro', 0.0),\n", + " ('cost_no_trip', 0.0),\n", + " ('cost_walk', 0.0),\n", + " ('cost_unknown', 0.0)]\n" + ] + } + ], + "source": [ + "# Feature importances - gini entropy\n", + "\n", + "pprint(\n", + " sorted(\n", + " zip(\n", + " best_model.feature_names_in_, \n", + " best_model.feature_importances_\n", + " ), \n", + " key=lambda x: x[-1], reverse=True\n", + " )\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "# importance = permutation_importance(\n", + "# best_model,\n", + "# rf_test,\n", + "# test_data.target.values,\n", + "# n_repeats=5,\n", + "# random_state=SEED,\n", + "# n_jobs=-1,\n", + "# scoring='f1_weighted'\n", + "# )" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "# pd.DataFrame(\n", + "# {\n", + "# 'feature names': test_data.columns.delete(\n", + "# test_data.columns.isin(['target'])\n", + "# ),\n", + "# 'imp_mean': importance.importances_mean, \n", + "# 'imp_std': importance.importances_std\n", + "# }\n", + "# ).sort_values(by=['imp_mean'], axis='rows', ascending=False).head(20)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "# fig, ax = plt.subplots(nrows=1, ncols=2)\n", + "y_pred = best_model.predict(rf_test)\n", + "pred_df = pd.DataFrame(\n", + " {\n", + " 'y_pred': y_pred.ravel(),\n", + " 'y_true': test_data.target.values.ravel()\n", + " }\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqEAAAKyCAYAAADl4AdrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAC4pElEQVR4nOzdd3hT5dsH8G+atElnuneBQssuqKBQHAyZMuRVAUUQAQFlyZ4q4ABBERAEEVFA8AcqIs4KylA2VMooo0BL94K26U6a5Lx/RFJjG2ixyWnC93NduSAnT865T5Nzcud+nudEIgiCACIiIiIiK3IQOwAiIiIiuvcwCSUiIiIiq2MSSkRERERWxySUiIiIiKyOSSgRERERWR2TUCIiIiKyOiahRERERGR1TEKJiIiIyOpkYgdAREREVB+Vl5dDo9GIHQacnJygUCjEDqPOMQklIiIi+pfy8nKEN3RDVo5O7FAQGBiIpKQku0tEmYQSERER/YtGo0FWjg7JsY3g4S7e6MXCIj0atrsOjUbDJJSIiIjoXuHh7gAPd6nYYdglJqFEREREZughQA+9qNu3V5wdT0RERERWx0ooERERkRk6QQ+diMVInSBeFdbSWAklIiIiIqtjEkpEREREVsfueCIiIiIzDBOTxOuP58QkIiIiIqI6xEooERERkRl6US/QBJG3blmshBIRERGR1TEJJSIiIiKrY3c8ERERkRk6QYBOEG9ykJjbtjRWQomIiIjI6piEEhEREZHVsTueiIiIyAxeJ9RyWAklIiIiIqtjJZSIiIjIDD0E6FgJtQhWQomIiIjI6piEEhEREZHVsTueiIiIyAxOTLIcVkKJiIiIyOqYhBIRERGR1bE7noiIiMgM/myn5bASSkRERERWx0ooERERkRn6v29ibt9esRJKRERERFbHJJSIiIiIrI7d8URERERm6ET+2U4xt21prIQSERERkdWxEkpERERkhk4w3MTcvr1iJZSIiIiIrI5JKBERERFZHbvjiYiIiMzgdUIth5VQIiIiIrI6JqFEREREZHXsjiciIiIyQw8JdJCIun17xUooEREREVkdK6FEREREZugFw03M7dsrVkKJiIiIyOqYhBIRERGR1bE7noiIiMgMncgTk8TctqWxEkpEREREVsdKKBEREZEZrIRaDiuhRERERGR1TEKJiIiI7MS6devQpk0b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rcRzw4YNiI6OrrvIiIiIiMR26xJNYt7sVK2745csWYLevXvjwoUL0Gq1WLVqFeLj43H06FEcPHjQEjESERERkZ2pdSW0U6dOOHz4MEpLS9GkSRPs2bMHAQEBOHr0qMk1P4mIiIiIzLmr631ERUUZL9FEREREZLc4Mcli7ioJ1el02LVrFy5evAiJRIIWLVrgySefvKuL1hMRERHRvafWWeP58+fx5JNPIisrC82aGX6WMiEhAX5+fvj+++8RFRVV50ESERERkX2p9ZjQl156Ca1atUJaWhr++usv/PXXX0hNTUWbNm0wduxYS8RIREREJA6hHtzsVK0roWfOnMGpU6fg5eVlXObl5YV33nkHDz74YJ0GR0RERET2qdaV0GbNmiE7O7vK8pycHERERNRJUERERET1gthVUDuuhNYoCS0sLDTeFi9ejMmTJ+Obb75BWloa0tLS8M0332DKlClYunSppeMlIiIiIjtQo+54T09Pk5/kFAQBgwcPNi4TBEOa3r9/f+h0OguESURERET2pEZJ6P79+y0dBxEREVH9I/ZPZ97rP9vZuXNnS8dBRERERPeQu766fGlpKVJSUqDRaEyWt2nT5j8HRURERET2rdZJaG5uLkaOHIlffvml2sc5JpSIiIjshUQw3MTcvr2q9SWapkyZgvz8fBw7dgzOzs6IiYnB5s2bERkZie+//94SMRIRERGRnal1JXTfvn3YvXs3HnzwQTg4OKBhw4bo0aMHPDw8sGTJEvTt29cScRIRERFZn9jX6mQltFJJSQn8/f0BAN7e3sjNzQUAREVF4a+//qrb6IiIiIjILt3VLyZdvnwZAHDfffdh/fr1SE9Px8cff4ygoKA6D5CIiIiI7E+tu+OnTJmCzMxMAMCCBQvQq1cvbNu2DU5OTti0aVNdx0dEREREdqjWSejzzz9v/P/999+P69ev49KlS2jQoAF8fX3rNDgiIiIisk93fZ3QW1xcXPDAAw/URSxERERE9YoEIl+iSbxNW1yNktBp06bVeIUffPDBXQdDRERERPeGGiWhp0+frtHKJBJ7zteJiIiIqK7UKAndv3+/peOguyANDRY7BNEIjv95JIlN011LFjsE0fyaESd2CKLpFXK/2CGIRqr0EDsEUQk6vdghiMJB0ABFIgchSAw3Mbdvp2p9iSYiIiIiov+KSSgRERERWd293adJ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S7zzzjssX76cFStWEB8fz/bt2xk7dizR0dEkJiYaHZ64CSWhct4eeOABPvroI7799luaNGlidDgu5ePjYx+Y1LlzZ7Zs2cKCBQt45ZVXDI7MuZKSksjIyKBTp072bRaLhW+//ZZFixZRVlZWZwbrBAYGkpCQwIEDB4wOxekaNWpU5QtWu3bteP/99w2KyBgpKSmsW7eODz74wOhQXOaxxx5j4sSJDB06FKj8ApaSksKcOXOUhEqNURIqf5jNZuOBBx5g1apVfP3118TGxhodkuFsNhtlZWVGh+F01113Hbt27XLYNmLECNq2bcuECRPqTAIKUFZWRnJyMldffbXRoTjdVVddVWUatv3799OsWTODIjLGmUGYZwbp1AXFxcV4eDgOG/H09KybUzRpdLzTKAn9EwoLCzl48KB9/ciRI2zfvp3w8HCaNm1qYGTONWbMGFasWMGHH35IcHAw6enpAISGhuLv729wdM73+OOP069fP2JiYigoKGDlypV8/fXXVWYNcEfBwcFV+v4GBgYSERHh9n2CH330UQYOHEjTpk3JyMhg5syZ5Ofn14lq0MMPP8yVV17J7Nmzufnmm9m8eTOvvvoqr776qtGhuYzVamXJkiUkJibi5VV3/sscOHAgs2bNomnTpsTHx7Nt2zbmzZvHyJEjjQ5N3Ejd+YuqQVu3bqVnz5729TP9whITE1m6dKlBUTnf4sWLAejRo4fD9iVLltSJzvqnTp3iH//4BydPniQ0NJQOHTrw2Wef0atXL6NDEydKS0tj2LBhnD59mgYNGtClSxc2bdpUJ6qBl112GatWrWLSpEk89dRTxMbGMn/+fG699VajQ3OZdevWcezYsTqXfC1cuJApU6YwevRoMjIyiI6O5p577mHq1KlGh+Z6VhuGDg5y419MMtlsblznFREREfkT8vPzCQ0N5fpm9+Pl4WtYHGZrGetSFpGXl0dISIhhcTiD5gkVEREREZdTc7yIiIhIdWzWysXI87spVUJFRERExOVUCRURERGpjqZochpVQkVERETE5ZSEioiIiIjLqTleREREpDqaJ9RpVAkVEREREZdTEioiNWratGlccskl9vU77riDwYMHuzyOo0ePYjKZ2L59e7XHNG/enPnz5//h51y6dClhYWF/OTaTycTq1av/8vOIiNRmSkJF6oA77rgDk8mEyWTC29ubuLg4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5foGo/Dy8DEsDrO1nHWZb5CXl0dISIhhcTiDKqEiIiIi4nJKQkVERETE5TQwSURERKQ6mifUaVQJFRERERGXUyVUREREpDpWG2BgNdKqSqiIiIiISI1REioiIiIiLqfmeBEREZFq2GxWbDbjfrXIyHM7myqhIiIiIuJySkJFRERExOXUHC8iIiJSHZvN2BHqmidURERERKTmqBIqIiIiUh2bwfOEqhIqIiIiIlJzlISKiIiIiMupOV5ERESkOlYrmAycq1PzhIqIiIiI1BxVQkVERESqo4FJTqNKqIiIiIi4nJJQEREREXE5NceLiIiIVMNmtWIzcGCSTQOTRERERERqjpJQEREREXE5NceLiIiIVEej451GlVARERERcTlVQkVERESqY7WBSZVQZ1AlVERERERcTkmoiIiIiLicmuNFREREqmOzAQbO1anmeBERERGRmqMkVERERERcTs3xIiIiItWwWW3YDBwdb1NzvIiIiIhIzVElVERERKQ6NivGDkwy8NxOpkqoiIiIiLicklARERERcTk1x4uIiIhUQwOTnEeVUBERERFxOVVCRURERKqjgUlOo0qoiIiIiLicKqEiIiIi1TBTAQZ2yzRTYdzJnUxJqIiIiMiv+Pj4EBUVxYb0NUaHQlRUFD4+PkaHUeNMNncediUiIiLyJ5WWllJeXm50GPj4+ODn52d0GDVOSaiIiIiIuJwGJomIiIiIyykJFRERERGXUxIqIiIiIi6nJFREREREXE5JqIiIiIi4nJJQEREREXE5JaEiIiIi4nL/D426dC0AWTFTAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(7, 7))\n", + "cm = ConfusionMatrixDisplay.from_estimator(\n", + " best_model,\n", + " X=rf_test,\n", + " y=test_data[['target']],\n", + " ax=ax\n", + ")\n", + "# ax.set_xticklabels(TARGETS, rotation=45)\n", + "# ax.set_yticklabels(TARGETS)\n", + "fig.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 1 0.71 0.73 0.72 1087\n", + " 2 0.78 0.74 0.76 3358\n", + " 3 0.61 0.59 0.60 1690\n", + " 4 0.53 0.61 0.57 565\n", + " 5 0.79 0.76 0.77 4288\n", + " 6 0.57 0.65 0.61 348\n", + " 7 0.65 0.73 0.69 1351\n", + " 8 0.77 0.82 0.79 1310\n", + "\n", + " accuracy 0.73 13997\n", + " macro avg 0.68 0.70 0.69 13997\n", + "weighted avg 0.73 0.73 0.73 13997\n", + "\n" + ] + } + ], + "source": [ + "# print(classification_report(y_true=pred_df.y_true, y_pred=pred_df.y_pred, target_names=TARGETS))\n", + "print(classification_report(y_true=pred_df.y_true, y_pred=pred_df.y_pred))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## XGBoost" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "# from sklearn.utils.class_weight import compute_sample_weight\n", + "\n", + "# sample_weights = compute_sample_weight(class_weight='balanced', y=train_data.user_id.values.ravel())" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "# from xgboost import XGBClassifier\n", + "\n", + "# y_train = train_data.target.values.ravel() - 1\n", + "# y_test = test_data.target.values.ravel() - 1\n", + "\n", + "# # weights = compute_class_weight(class_weight='balanced', classes=np.unique(y_pred), y_pred)\n", + "\n", + "# xgm = XGBClassifier(\n", + "# n_estimators=300,\n", + "# max_depth=None,\n", + "# tree_method='hist',\n", + "# objective='multi:softmax',\n", + "# num_class=9\n", + "# ).fit(rf_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "# preds = xgm.predict(rf_test)\n", + "\n", + "# print(classification_report(y_true=y_test, y_pred=preds, target_names=TARGETS))" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "# import pickle\n", + "\n", + "# # RF_RM.pkl = 0.8625 on test.\n", + "# # RF_RM_1.pkl = 0.77 on test.\n", + "# with open('../models/RF_RM_1.pkl', 'wb') as f:\n", + "# f.write(pickle.dumps(model))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## TODO:\n", + "\n", + "\n", + "- Explain why location might not be a good feature to add (plot start and end on map and explain how model might just overfit to the raw coordinates)\n", + "- Merge `unknown` and `no_trip` into one category and validate against models trained on (a) separate labels (b) dropped labels\n", + "- Explore more of the abnormal `walking` trips" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" + }, + "kernelspec": { + "display_name": "emission", + "language": "python", + "name": "emission" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From fe79c40af7c7cf44ba75f39a372c664b9188c926 Mon Sep 17 00:00:00 2001 From: Rahul Kulhalli Date: Thu, 14 Mar 2024 17:53:16 -0400 Subject: [PATCH 10/16] Updated inter-user splitting method; removed pandas shuffling --- rm_src/env.txt | 214 +++++++++++++++++++++++++++++ rm_src/run_baseline_experiments.py | 166 +++++++++++++--------- 2 files changed, 318 insertions(+), 62 deletions(-) create mode 100644 rm_src/env.txt diff --git a/rm_src/env.txt b/rm_src/env.txt new file mode 100644 index 0000000..b2d31ea --- /dev/null +++ b/rm_src/env.txt @@ -0,0 +1,214 @@ +# This file may be used to create an environment using: +# $ conda create --name --file +# platform: osx-64 +@EXPLICIT +https://conda.anaconda.org/conda-forge/osx-64/_py-xgboost-mutex-2.0-cpu_0.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h0d85af4_4.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.2.2-h8857fd0_0.conda +https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.0.9-hb7f2c08_9.conda +https://conda.anaconda.org/conda-forge/osx-64/libcxx-16.0.6-hd57cbcb_0.conda +https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.18-hac1461d_0.conda +https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-2.1.5.1-hb7f2c08_0.conda +https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.18-hbcb3906_1.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.3.1-h0dc2134_0.conda +https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.2.13-h8a1eda9_5.conda +https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-16.0.6-hff08bdf_0.conda +https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.4-hf0c8a7f_0.conda +https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-hc929b4f_1001.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.9-3_cp39.conda +https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda +https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.11-h0dc2134_0.conda +https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.3-h35c211d_0.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.0.9-hb7f2c08_9.conda +https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.0.9-hb7f2c08_9.conda +https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-12.3.0-hbd3c1fe_1.conda +https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.39-ha978bb4_0.conda +https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.42.0-h58db7d2_0.conda +https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.15-hb7f2c08_0.conda +https://conda.anaconda.org/conda-forge/osx-64/libxgboost-2.0.3-cpu_h397da94_1.conda +https://conda.anaconda.org/conda-forge/osx-64/openssl-3.2.1-hd75f5a5_0.conda +https://conda.anaconda.org/conda-forge/osx-64/pandoc-3.1.3-h9d075a6_0.conda +https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda +https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.12-h5dbffcc_0.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.4-he49afe7_1.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.2-h829000d_7.conda +https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.0.9-hb7f2c08_9.conda +https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h3f81eb7_1.conda +https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-12_3_0_h97931a8_1.conda +https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.5.1-hf955e92_0.conda +https://conda.anaconda.org/conda-forge/osx-64/python-3.9.16-h709bd14_0_cpython.conda +https://conda.anaconda.org/conda-forge/noarch/aiofiles-22.1.0-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.3-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda +https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda +https://conda.anaconda.org/conda-forge/osx-64/brotli-1.0.9-hb7f2c08_9.conda +https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/certifi-2024.2.2-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.2.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.6.7-py39h7a8716b_0.conda +https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.2-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/executing-1.2.0-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/flit-core-3.9.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/future-0.18.3-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/geojson-2.5.0-py_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/jsonpointer-2.0-py_0.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.4-py39h92daf61_1.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.15-h2dcdeff_1.conda +https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.23-openmp_h429af6e_0.conda +https://conda.anaconda.org/conda-forge/osx-64/markupsafe-2.1.3-py39hdc70f33_0.conda +https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.0.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.6-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.0-h13ac156_2.conda +https://conda.anaconda.org/conda-forge/noarch/packaging-23.1-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.17.1-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/osx-64/psutil-5.9.5-py39ha30fb19_0.conda +https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.15.1-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.18.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/pytz-2022.7.1-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0-py39ha30fb19_5.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/pyzmq-25.1.0-py39hdac9eea_0.conda +https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.9.2-py39hf33989b_0.conda +https://conda.anaconda.org/conda-forge/osx-64/setuptools-58.5.3-py39h6e9494a_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.3.2.post1-pyhd8ed1ab_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/osx-64/tenacity-8.2.2-py39hecd8cb5_0.conda +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.2.0-pyha21a80b_0.conda +https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/tornado-6.3.2-py39hdc70f33_0.conda +https://conda.anaconda.org/conda-forge/noarch/traitlets-5.9.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.7.1-pyha770c72_0.conda +https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-15.0.0-py39ha30fb19_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/utm-0.7.0-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.1-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/osx-64/y-py-0.5.9-py39hd4bc93a_0.conda +https://conda.anaconda.org/conda-forge/noarch/zipp-3.16.2-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/asttokens-2.2.1-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/attrdict-2.0.1-pyhd8ed1ab_1.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/babel-2.12.1-pyhd8ed1ab_1.conda +https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda +https://conda.anaconda.org/conda-forge/noarch/bleach-6.0.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/cffi-1.15.1-py39h131948b_3.conda +https://conda.anaconda.org/conda-forge/noarch/comm-0.1.3-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.41.1-py39hdc70f33_0.conda +https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda +https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.0.0-pyhd8ed1ab_1.conda +https://conda.anaconda.org/conda-forge/noarch/jaraco.functools-3.8.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/jedi-0.18.2-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/joblib-1.3.0-pyhd8ed1ab_1.conda +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.2.2-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-17_osx64_openblas.conda +https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/overrides-7.3.1-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/pillow-10.0.0-py39he6683de_0.conda +https://conda.anaconda.org/conda-forge/noarch/pip-23.0.1-pyhd8ed1ab_0.conda +https://repo.anaconda.com/pkgs/main/osx-64/plotly-5.9.0-py39hecd8cb5_0.conda +https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-9.2-py39head00df_0.conda +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/referencing-0.30.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/terminado-0.17.1-pyhd1c38e8_0.conda +https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.1-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.7.1-hd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py39ha30fb19_3.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/arrow-1.2.3-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/branca-0.6.0-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/brotlipy-0.7.0-py39ha30fb19_1005.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/cheroot-9.0.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/osx-64/cryptography-41.0.2-py39he8b0a07_0.conda +https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.0.0-pyhd8ed1ab_1.conda +https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.4.4-pyhd8ed1ab_1.conda +https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-17_osx64_openblas.conda +https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-17_osx64_openblas.conda +https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.9.1-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-9.2-py39head00df_0.conda +https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.6-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-21.3.0-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/jsonpickle-3.0.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.18.4-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/osx-64/jupyter_core-5.3.1-py39h6e9494a_0.conda +https://conda.anaconda.org/conda-forge/noarch/jupyter_ydoc-0.2.4-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/osx-64/numpy-1.24.2-py39h6ee2318_0.conda +https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.39-pyha770c72_0.conda +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.2.0-pyhd8ed1ab_1.conda +https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyhd1c38e8_0.conda +https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.8.2-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.1.0-py39h8ee36c8_0.conda +https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.18.4-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.3.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.1-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/osx-64/pandas-1.5.3-py39hecff1ad_1.conda +https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.39-hd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.15-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/ipython-8.12.0-pyhd1c38e8_0.conda +https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.6.3-pyhd8ed1ab_1.conda +https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.7.1-py39hb2f573b_0.conda +https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/requests-2.28.2-pyhd8ed1ab_1.conda +https://conda.anaconda.org/conda-forge/noarch/folium-0.14.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.25.0-pyh5fb750a_0.conda +https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.7.1-py39h6e9494a_0.conda +https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.7.3-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/pooch-1.7.0-pyha770c72_3.conda +https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.7.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.7.3-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/osx-64/scipy-1.10.0-py39h8a15683_2.conda +https://conda.anaconda.org/conda-forge/noarch/jupyter_server_fileid-0.9.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.24.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.7.3-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.3-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.2.1-py39hdbdcc14_0.conda +https://conda.anaconda.org/conda-forge/noarch/bayesian-optimization-1.4.3-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/jupyter_server_ydoc-0.8.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/nbclassic-1.0.0-pyhb4ecaf3_1.conda +https://conda.anaconda.org/conda-forge/noarch/py-xgboost-2.0.3-cpu_pyh0a621ce_1.conda +https://conda.anaconda.org/conda-forge/osx-64/statsmodels-0.14.0-py39h5b4affa_2.conda +https://conda.anaconda.org/conda-forge/noarch/notebook-6.5.4-pyha770c72_0.conda +https://conda.anaconda.org/conda-forge/noarch/py-xgboost-cpu-2.0.3-pyhb06c54e_1.conda +https://conda.anaconda.org/conda-forge/noarch/pylogit-1.0.1-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/choicemodels-0.2.2-pyh9f0ad1d_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-3.6.3-pyhd8ed1ab_0.conda diff --git a/rm_src/run_baseline_experiments.py b/rm_src/run_baseline_experiments.py index 2b0b7df..63a84d7 100644 --- a/rm_src/run_baseline_experiments.py +++ b/rm_src/run_baseline_experiments.py @@ -1,6 +1,9 @@ from enum import Enum import random +import warnings +import argparse from pathlib import Path +from collections import Counter # Math and graphing. import pandas as pd @@ -13,14 +16,15 @@ from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LinearRegression from sklearn.metrics import f1_score, r2_score, ConfusionMatrixDisplay - +from scipy.special import kl_div from sklearn.metrics import classification_report -from sklearn.model_selection import GridSearchCV, StratifiedKFold +from sklearn.model_selection import GridSearchCV, StratifiedGroupKFold from pprint import pprint from sklearn.inspection import permutation_importance from time import perf_counter from sklearn.ensemble import RandomForestClassifier +warnings.simplefilter(action='ignore', category=Warning) # Global experiment flags and variables. SEED = 19348 @@ -42,70 +46,40 @@ class SPLIT(Enum): TRAIN = 0 TEST = 1 -def get_splits(count_df: pd.DataFrame, n:int, test_size=0.2): - maxsize = int(n * test_size) - - max_threshold = int(maxsize * 1.05) - min_threshold = int(maxsize * 0.95) - - print(f"{min_threshold}, {max_threshold}") - # Allow a 10% tolerance - def _dp(ix, curr_size, ids, cache): - - if ix >= count_df.shape[0]: - return [] +class SPLIT_TYPE(Enum): + INTRA_USER = 0 + INTER_USER = 1 + TARGET = 2 + MODE = 3 + INTER_USER_STATIC = 4 + - key = ix +class SPLIT(Enum): + TRAIN = 0 + TEST = 1 - if key in cache: - return cache[key] - if curr_size > max_threshold: - return [] +def get_train_test_splits(data: pd.DataFrame, how=SPLIT_TYPE, test_ratio=0.2, shuffle=True): + + if how == SPLIT_TYPE.INTER_USER: - if min_threshold <= curr_size <= max_threshold: - return ids + X = data.drop(columns=['target']) + y = data['target'].values + groups = data.user_id.values - # two options - either pick the current id or skip it. - branch_a = _dp(ix, curr_size+count_df.loc[ix, 'count'], ids+[count_df.loc[ix, 'index']], cache) - branch_b = _dp(ix+1, curr_size, ids, cache) + # n_splits determines split size. So n=5, is 20% for each split, which is what we want. + splitter = StratifiedGroupKFold(n_splits=5, shuffle=shuffle, random_state=SEED) + # splitter = GroupKFold(n_splits=5) - curr_max = [] - if branch_a and len(branch_a) > 0: - curr_max = branch_a - - if branch_b and len(branch_b) > len(branch_a): - curr_max = branch_b + for train_index, test_index in splitter.split(X, y, groups): + X_tr = data.iloc[train_index, :] + X_te = data.iloc[test_index, :] - cache[key] = curr_max - return cache[key] - - return _dp(0, 0, ids=list(), cache=dict()) + # Iterate only once and break. + break - -def get_train_test_splits(data: pd.DataFrame, how=SPLIT_TYPE, test_ratio=0.2, shuffle=True): - - n_users = list(data.user_id.unique()) - n = data.shape[0] - - if shuffle: - data = data.sample(data.shape[0], random_state=SEED).reset_index(drop=True, inplace=False) - - if how == SPLIT_TYPE.INTER_USER: - # Make the split, ensuring that a user in one fold is not leaked into the other fold. - # Basic idea: we want to start with the users with the highest instances and place - # alternating users in each set. - counts = data.user_id.value_counts().reset_index(drop=False, inplace=False, name='count') - - # Now, start with the user_id at the top, and keep adding to either split. - # This can be achieved using a simple DP program. - test_ids = get_splits(counts, data.shape[0]) - test_data = data.loc[data.user_id.isin(test_ids), :] - train_index = data.index.difference(test_data.index) - train_data = data.loc[data.user_id.isin(train_index), :] - - return train_data, test_data + return X_tr, X_te elif how == SPLIT_TYPE.INTRA_USER: @@ -158,6 +132,59 @@ def get_train_test_splits(data: pd.DataFrame, how=SPLIT_TYPE, test_ratio=0.2, sh return X_tr, X_te + elif how == SPLIT_TYPE.INTER_USER_STATIC: + + train_ids = ['810be63d084746e3b7da9d943dd88e8c', 'bf774cbe6c3040b0a022278d36a23f19', '8a8332a53a1b4cdd9f3680434e91a6ef', + '5ad862e79a6341f69f28c0096fe884da', '7f89656bd4a94d12ad8e5ad9f0afecaf', 'fbaa338d7cd7457c8cad4d0e60a44d18', + '3b25446778824941a4c70ae5774f4c68', '28cb1dde85514bbabfd42145bdaf7e0a', '3aeb5494088542fdaf798532951aebb0', + '531732fee3c24366a286d76eb534aebc', '950f4287bab5444aa0527cc23fb082b2', '737ef8494f26407b8b2a6b1b1dc631a4', + 'e06cf95717f448ecb81c440b1b2fe1ab', '7347df5e0ac94a109790b31ba2e8a02a', 'bd9cffc8dbf1402da479f9f148ec9e60', + '2f3b66a5f98546d4b7691fba57fa640f', 'f289f7001bd94db0b33a7d2e1cd28b19', '19a043d1f2414dbcafcca44ea2bd1f19', + '68788082836e4762b26ad0877643fdcf', '4e8b1b7f026c4384827f157225da13fa', '703a9cee8315441faff7eb63f2bfa93f', + 'add706b73839413da13344c355dde0bb', '47b5d57bd4354276bb6d2dcd1438901d', 'e4cfb2a8f600426897569985e234636e', + '0154d71439284c34b865e5a417cd48af', '234f4f2366244fe682dccded2fa7cc4e', '0d0ae3a556414d138c52a6040a203d24', + '44c10f66dec244d6b8644231d4a8fecb', '30e9b141d7894fbfaacecd2fa18929f9', '0eb313ab00e6469da78cc2d2e94660fb', + 'fc51d1258e4649ecbfb0e6ecdaeca454', 'a1954793b1454b2f8cf95917d7547169', '6656c04c6cba4c189fed805eaa529741', + '6a0f3653b80a4c949e127d6504debb55', 'dfe5ca1bb0854b67a6ffccad9565d669', '8b1f3ba43de945bea79de6a81716ad04', + 'cde34edb8e3a4278a18e0adb062999e5', '6d96909e5ca442ccb5679d9cdf3c8f5b', 'a60a64d82d1c439a901b683b73a74d73', + '60e6a6f6ed2e4e838f2bbed6a427028d', '88041eddad7542ea8c92b30e5c64e198', '1635c003b1f94a399ebebe21640ffced', + '1581993b404a4b9c9ca6b0e0b8212316', 'b1aed24c863949bfbfa3a844ecf60593', '4b89612d7f1f4b368635c2bc48bd7993', + 'eb2e2a5211564a9290fcb06032f9b4af', '26767f9f3da54e93b692f8be6acdac43', '8a98e383a2d143e798fc23869694934a', + 'b346b83b9f7c4536b809d5f92074fdae', 'd929e7f8b7624d76bdb0ec9ada6cc650', '863e9c6c8ec048c4b7653f73d839c85b', + 'f50537eb104e4213908f1862c8160a3e', '4a9db5a9bac046a59403b44b883cc0ba', 'cded005d5fd14c64a5bba3f5c4fe8385', + 'c7ce889c796f4e2a8859fa2d7d5068fe', '405b221abe9e43bc86a57ca7fccf2227', '0b3e78fa91d84aa6a3203440143c8c16', + 'fbff5e08b7f24a94ab4b2d7371999ef7', 'e35e65107a34496db49fa5a0b41a1e9e', 'd5137ebd4f034dc193d216128bb7fc9a', + '3f7f2e536ba9481e92f8379b796ad1d0', 'dc75e0b776214e1b9888f6abd042fd95', 'b41dd7d7c6d94fe6afe2fd26fa4ac0bd', + 'eec6936e1ac347ef9365881845ec74df', '8c7d261fe8284a42a777ffa6f380ba3b', '4baf8c8af7b7445e9067854065e3e612', + 'c6e4db31c18b4355b02a7dd97deca70b', 'f0db3b1999c2410ba5933103eca9212f', '487e20ab774742378198f94f5b5b0b43', + 'dc1ed4d71e3645d0993885398d5628ca', '8c3c63abb3ec4fc3a61e7bf316ee4efd', '15eb78dd6e104966ba6112589c29dc41', + 'c23768ccb817416eaf08be487b2e3643', 'ecd2ae17d5184807abd87a287115c299', '71f21d53b655463784f3a3c63c56707b', + '2931e0a34319495bbb5898201a54feb5', '92bde0d0662f45ac864629f486cffe77', '42b3ee0bc02a481ab1a94644a8cd7a0d', + '15aa4ba144a34b8b8079ed7e049d84df', '509b909390934e988eb120b58ed9bd8c', '14103cda12c94642974129989d39e50d', + '8b0876430c2641bcaea954ea00520e64', 'baa4ff1573ae411183e10aeb17c71c53', '14fe8002bbdc4f97acbd1a00de241bf6', + '1b7d6dfea8464bcab9321018b10ec9c9', '487ad897ba93404a8cbe5de7d1922691', '5182d93d69754d7ba06200cd1ac5980a', + '91f3ca1c278247f79a806e49e9cc236f', 'e66e63b206784a559d977d4cb5f1ec34', '840297ae39484e26bfebe83ee30c5b3e', + 'c6807997194c4c528a8fa8c1f6ee1595', '802667b6371f45b29c7abb051244836a', 'b2bbe715b6a14fd19f751cae8adf6b4e', + 'feb1d940cd3647d1a101580c2a3b3f8c', '1b9883393ab344a69bc1a0fab192a94c', 'ac604b44fdca482fb753034cb55d1351', + 'f446bf3102ff4bd99ea1c98f7d2f7af0', 'c2c5d4b9a607487ea405a99c721079d4', '85ddd3c34c58407392953c47a32f5428', + 'd51de709f95045f8bacf473574b96ba5', '6373dfb8cb9b47e88e8f76adcfadde20', '313d003df34b4bd9823b3474fc93f9f9', + '53e78583db87421f8decb529ba859ca4', '8fdc9b926a674a9ea07d91df2c5e06f2', '90480ac60a3d475a88fbdab0a003dd5d', + '7559c3f880f341e898a402eba96a855d', '19a4c2cf718d40588eb96ac25a566353', 'f4427cccaa9442b48b42bedab5ab648e', + 'e192b8a00b6c422296851c93785deaf7', '355e25bdfc244c5e85d358e39432bd44', 'a0c3a7b410b24e18995f63369a31d123', + '03a395b4d8614757bb8432b4984559b0', 'a2d48b05d5454d428c0841432c7467b6', '3d981e617b304afab0f21ce8aa6c9786', + '2cd5668ac9054e2eb2c88bb4ed94bc6d', 'd7a732f4a8644bcbb8dedfc8be242fb2', '367eb90b929d4f6e9470d15c700d2e3f', + 'e049a7b2a6cb44259f907abbb44c5abc', 'a231added8674bef95092b32bc254ac8', 'e88a8f520dde445484c0a9395e1a0599', + 'cba570ae38f341faa6257342727377b7', '97953af1b97d4e268c52e1e54dcf421a', 'd200a61757d84b1dab8fbac35ff52c28', + 'fc68a5bb0a7b4b6386b3f08a69ead36f', '4a8210aec25e443391efb924cc0e5f23', '903742c353ce42c3ad9ab039fc418816', + '2114e2a75304475fad06ad201948fbad', 'ac917eae407c4deb96625dd0dc2f2ba9', '3dddfb70e7cd40f18a63478654182e9a', + 'd3735ba212dd4c768e1675dca7bdcb6f', '7abe572148864412a33979592fa985fb', 'd3dff742d07942ca805c2f72e49e12c5' + ] + + X_tr = data.loc[data.user_id.isin(train_ids), :] + X_te = data.loc[~data.user_id.isin(train_ids), :] + + return X_tr, X_te + raise NotImplementedError("Unknown split type") @@ -374,13 +401,15 @@ def predict(model, X_tr, Y_tr, X_te, Y_te): train_f1 = f1_score( y_true=Y_tr, y_pred=y_train_pred, - average='weighted' + average='weighted', + zero_division=0. ) test_f1 = f1_score( y_true=Y_te, y_pred=y_test_pred, - average='weighted' + average='weighted', + zero_division=0. ) return y_train_pred, train_f1, y_test_pred, test_f1 @@ -465,16 +494,28 @@ def save_metadata(dir_name: Path, **kwargs): f.write(f"{k}: {v}\n") +# def parse_args(): +# parser = argparse.ArgumentParser() +# parser.add_argument('--max-iters', default=10000, type=int) +# return parser.parse_args() + + if __name__ == "__main__": data = pd.read_csv('../data/ReplacedMode_Fix_02142024.csv') data.drop_duplicates(inplace=True) print("Beginning sweeps.") + # args = parse_args() + start = perf_counter() sweep_number = 1 - for split in [SPLIT_TYPE.INTRA_USER, SPLIT_TYPE.TARGET, SPLIT_TYPE.MODE]: + root = Path('../benchmark_results') + if not root.exists(): + root.mkdir() + + for split in [SPLIT_TYPE.INTER_USER, SPLIT_TYPE.INTRA_USER, SPLIT_TYPE.TARGET, SPLIT_TYPE.MODE]: for drop in [True, False]: for location_drop in [True, False]: kwargs = { @@ -482,12 +523,13 @@ def save_metadata(dir_name: Path, **kwargs): 'split': split, 'drop_location': location_drop } - dir_name = Path(f'../benchmark_results/benchmark_{sweep_number}') + + dir_name = root / f'benchmark_{sweep_number}' if not dir_name.exists(): dir_name.mkdir() - print(f"\t-> Running sweep #{sweep_number}...") + print(f"\t-> Running sweep #{sweep_number} with metadata={str(kwargs)}") save_metadata(dir_name, **kwargs) run_sampled_sweep(data.copy(), dir_name, **kwargs) print(f"Completed benchmarking for {sweep_number} experiment.") From 6d4afcf5bab3101d2b78f64f6c7bcbc029ceb1c8 Mon Sep 17 00:00:00 2001 From: Rahul Kulhalli Date: Thu, 14 Mar 2024 17:56:25 -0400 Subject: [PATCH 11/16] Removed redundant enum declarations --- rm_src/run_baseline_experiments.py | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/rm_src/run_baseline_experiments.py b/rm_src/run_baseline_experiments.py index 63a84d7..f876598 100644 --- a/rm_src/run_baseline_experiments.py +++ b/rm_src/run_baseline_experiments.py @@ -35,17 +35,6 @@ random.seed(SEED) np.random.seed(SEED) -class SPLIT_TYPE(Enum): - INTRA_USER = 0 - INTER_USER = 1 - TARGET = 2 - MODE = 3 - - -class SPLIT(Enum): - TRAIN = 0 - TEST = 1 - class SPLIT_TYPE(Enum): INTRA_USER = 0 @@ -538,4 +527,4 @@ def save_metadata(dir_name: Path, **kwargs): elapsed = perf_counter() - start - print(f"Completed sweeps in {elapsed/60.} minutes") \ No newline at end of file + print(f"Completed sweeps in {elapsed/60.} minutes") From e47ab9a52ff3a7ea922bc9d494d9029a8e274c7c Mon Sep 17 00:00:00 2001 From: Rahul Kulhalli Date: Fri, 15 Mar 2024 09:42:09 -0400 Subject: [PATCH 12/16] Re-uploading all the preprocessing files for consistency --- rm_src/baseline_modeling0.ipynb | 560 +++++++--- rm_src/cost_time_avl_preprocessing.ipynb | 790 ++++++------- rm_src/mnl_exploration.ipynb | 1278 ++++------------------ rm_src/rf_bayesian_optim.py | 280 +++++ viz_scripts/scaffolding.py | 4 +- 5 files changed, 1253 insertions(+), 1659 deletions(-) create mode 100644 rm_src/rf_bayesian_optim.py diff --git a/rm_src/baseline_modeling0.ipynb b/rm_src/baseline_modeling0.ipynb index 549b468..8e623b4 100644 --- a/rm_src/baseline_modeling0.ipynb +++ b/rm_src/baseline_modeling0.ipynb @@ -23,7 +23,7 @@ "import matplotlib.pyplot as plt\n", "\n", "# sklearn imports.\n", - "from sklearn.model_selection import train_test_split\n", + "from sklearn.model_selection import train_test_split, StratifiedGroupKFold, GroupKFold\n", "from sklearn.preprocessing import StandardScaler\n", "from sklearn.linear_model import LinearRegression\n", "from sklearn.metrics import f1_score, r2_score, ConfusionMatrixDisplay\n", @@ -41,7 +41,7 @@ "SEED = 19348\n", "TARGETS = ['p_micro', 'no_trip', 's_car', 'transit', 'car', 's_micro', 'ridehail', 'walk', 'unknown']\n", "\n", - "DROP_S_MICRO = False\n", + "DROP_S_MICRO = True\n", "\n", "# Set the Numpy seed too.\n", "random.seed(SEED)\n", @@ -59,76 +59,33 @@ " INTER_USER = 1\n", " TARGET = 2\n", " MODE = 3\n", + " INTER_USER_STATIC = 4\n", " \n", "\n", "class SPLIT(Enum):\n", " TRAIN = 0\n", " TEST = 1\n", "\n", - "def get_splits(count_df: pd.DataFrame, n:int, test_size=0.2):\n", - " maxsize = int(n * test_size)\n", "\n", - " max_threshold = int(maxsize * 1.05)\n", - " min_threshold = int(maxsize * 0.95)\n", - "\n", - " print(f\"{min_threshold}, {max_threshold}\")\n", + "def get_train_test_splits(data: pd.DataFrame, how=SPLIT_TYPE, test_ratio=0.2, shuffle=True):\n", " \n", - " # Allow a 10% tolerance\n", - " def _dp(ix, curr_size, ids, cache):\n", - " \n", - " if ix >= count_df.shape[0]:\n", - " return []\n", - "\n", - " key = ix\n", - "\n", - " if key in cache:\n", - " return cache[key]\n", - "\n", - " if curr_size > max_threshold:\n", - " return []\n", - "\n", - " if min_threshold <= curr_size <= max_threshold:\n", - " return ids\n", + " if how == SPLIT_TYPE.INTER_USER:\n", "\n", - " # two options - either pick the current id or skip it.\n", - " branch_a = _dp(ix, curr_size+count_df.loc[ix, 'count'], ids+[count_df.loc[ix, 'index']], cache)\n", - " branch_b = _dp(ix+1, curr_size, ids, cache)\n", + " X = data.drop(columns=['target'])\n", + " y = data['target'].values\n", + " groups = data.user_id.values\n", " \n", - " curr_max = []\n", - " if branch_a and len(branch_a) > 0:\n", - " curr_max = branch_a\n", + " splitter = StratifiedGroupKFold(n_splits=5, shuffle=shuffle, random_state=SEED)\n", + " # splitter = GroupKFold(n_splits=5)\n", " \n", - " if branch_b and len(branch_b) > len(branch_a):\n", - " curr_max = branch_b\n", + " for train_index, test_index in splitter.split(X, y, groups):\n", + " X_tr = data.iloc[train_index, :]\n", + " X_te = data.iloc[test_index, :]\n", " \n", - " cache[key] = curr_max\n", - " return cache[key]\n", - " \n", - " return _dp(0, 0, ids=list(), cache=dict())\n", - "\n", - "\n", - "def get_train_test_splits(data: pd.DataFrame, how=SPLIT_TYPE, test_ratio=0.2, shuffle=True):\n", - "\n", - " n_users = list(data.user_id.unique())\n", - " n = data.shape[0]\n", - " \n", - " if shuffle:\n", - " data = data.sample(data.shape[0], random_state=SEED).reset_index(drop=True, inplace=False)\n", - "\n", - " if how == SPLIT_TYPE.INTER_USER:\n", - " # Make the split, ensuring that a user in one fold is not leaked into the other fold.\n", - " # Basic idea: we want to start with the users with the highest instances and place \n", - " # alternating users in each set.\n", - " counts = data.user_id.value_counts().reset_index(drop=False, inplace=False, name='count')\n", + " # Iterate only once and break.\n", + " break\n", "\n", - " # Now, start with the user_id at the top, and keep adding to either split.\n", - " # This can be achieved using a simple DP program.\n", - " test_ids = get_splits(counts, data.shape[0])\n", - " test_data = data.loc[data.user_id.isin(test_ids), :]\n", - " train_index = data.index.difference(test_data.index)\n", - " train_data = data.loc[data.user_id.isin(train_index), :]\n", - " \n", - " return train_data, test_data\n", + " return X_tr, X_te\n", " \n", " elif how == SPLIT_TYPE.INTRA_USER:\n", " \n", @@ -181,6 +138,59 @@ " \n", " return X_tr, X_te\n", " \n", + " elif how == SPLIT_TYPE.INTER_USER_STATIC:\n", + " \n", + " train_ids = ['810be63d084746e3b7da9d943dd88e8c', 'bf774cbe6c3040b0a022278d36a23f19', '8a8332a53a1b4cdd9f3680434e91a6ef', \n", + " '5ad862e79a6341f69f28c0096fe884da', '7f89656bd4a94d12ad8e5ad9f0afecaf', 'fbaa338d7cd7457c8cad4d0e60a44d18', \n", + " '3b25446778824941a4c70ae5774f4c68', '28cb1dde85514bbabfd42145bdaf7e0a', '3aeb5494088542fdaf798532951aebb0', \n", + " '531732fee3c24366a286d76eb534aebc', '950f4287bab5444aa0527cc23fb082b2', '737ef8494f26407b8b2a6b1b1dc631a4', \n", + " 'e06cf95717f448ecb81c440b1b2fe1ab', '7347df5e0ac94a109790b31ba2e8a02a', 'bd9cffc8dbf1402da479f9f148ec9e60', \n", + " '2f3b66a5f98546d4b7691fba57fa640f', 'f289f7001bd94db0b33a7d2e1cd28b19', '19a043d1f2414dbcafcca44ea2bd1f19', \n", + " '68788082836e4762b26ad0877643fdcf', '4e8b1b7f026c4384827f157225da13fa', '703a9cee8315441faff7eb63f2bfa93f', \n", + " 'add706b73839413da13344c355dde0bb', '47b5d57bd4354276bb6d2dcd1438901d', 'e4cfb2a8f600426897569985e234636e', \n", + " '0154d71439284c34b865e5a417cd48af', '234f4f2366244fe682dccded2fa7cc4e', '0d0ae3a556414d138c52a6040a203d24', \n", + " '44c10f66dec244d6b8644231d4a8fecb', '30e9b141d7894fbfaacecd2fa18929f9', '0eb313ab00e6469da78cc2d2e94660fb', \n", + " 'fc51d1258e4649ecbfb0e6ecdaeca454', 'a1954793b1454b2f8cf95917d7547169', '6656c04c6cba4c189fed805eaa529741', \n", + " '6a0f3653b80a4c949e127d6504debb55', 'dfe5ca1bb0854b67a6ffccad9565d669', '8b1f3ba43de945bea79de6a81716ad04', \n", + " 'cde34edb8e3a4278a18e0adb062999e5', '6d96909e5ca442ccb5679d9cdf3c8f5b', 'a60a64d82d1c439a901b683b73a74d73', \n", + " '60e6a6f6ed2e4e838f2bbed6a427028d', '88041eddad7542ea8c92b30e5c64e198', '1635c003b1f94a399ebebe21640ffced', \n", + " '1581993b404a4b9c9ca6b0e0b8212316', 'b1aed24c863949bfbfa3a844ecf60593', '4b89612d7f1f4b368635c2bc48bd7993', \n", + " 'eb2e2a5211564a9290fcb06032f9b4af', '26767f9f3da54e93b692f8be6acdac43', '8a98e383a2d143e798fc23869694934a', \n", + " 'b346b83b9f7c4536b809d5f92074fdae', 'd929e7f8b7624d76bdb0ec9ada6cc650', '863e9c6c8ec048c4b7653f73d839c85b', \n", + " 'f50537eb104e4213908f1862c8160a3e', '4a9db5a9bac046a59403b44b883cc0ba', 'cded005d5fd14c64a5bba3f5c4fe8385', \n", + " 'c7ce889c796f4e2a8859fa2d7d5068fe', '405b221abe9e43bc86a57ca7fccf2227', '0b3e78fa91d84aa6a3203440143c8c16', \n", + " 'fbff5e08b7f24a94ab4b2d7371999ef7', 'e35e65107a34496db49fa5a0b41a1e9e', 'd5137ebd4f034dc193d216128bb7fc9a', \n", + " '3f7f2e536ba9481e92f8379b796ad1d0', 'dc75e0b776214e1b9888f6abd042fd95', 'b41dd7d7c6d94fe6afe2fd26fa4ac0bd', \n", + " 'eec6936e1ac347ef9365881845ec74df', '8c7d261fe8284a42a777ffa6f380ba3b', '4baf8c8af7b7445e9067854065e3e612', \n", + " 'c6e4db31c18b4355b02a7dd97deca70b', 'f0db3b1999c2410ba5933103eca9212f', '487e20ab774742378198f94f5b5b0b43', \n", + " 'dc1ed4d71e3645d0993885398d5628ca', '8c3c63abb3ec4fc3a61e7bf316ee4efd', '15eb78dd6e104966ba6112589c29dc41', \n", + " 'c23768ccb817416eaf08be487b2e3643', 'ecd2ae17d5184807abd87a287115c299', '71f21d53b655463784f3a3c63c56707b', \n", + " '2931e0a34319495bbb5898201a54feb5', '92bde0d0662f45ac864629f486cffe77', '42b3ee0bc02a481ab1a94644a8cd7a0d', \n", + " '15aa4ba144a34b8b8079ed7e049d84df', '509b909390934e988eb120b58ed9bd8c', '14103cda12c94642974129989d39e50d', \n", + " '8b0876430c2641bcaea954ea00520e64', 'baa4ff1573ae411183e10aeb17c71c53', '14fe8002bbdc4f97acbd1a00de241bf6', \n", + " '1b7d6dfea8464bcab9321018b10ec9c9', '487ad897ba93404a8cbe5de7d1922691', '5182d93d69754d7ba06200cd1ac5980a', \n", + " '91f3ca1c278247f79a806e49e9cc236f', 'e66e63b206784a559d977d4cb5f1ec34', '840297ae39484e26bfebe83ee30c5b3e', \n", + " 'c6807997194c4c528a8fa8c1f6ee1595', '802667b6371f45b29c7abb051244836a', 'b2bbe715b6a14fd19f751cae8adf6b4e', \n", + " 'feb1d940cd3647d1a101580c2a3b3f8c', '1b9883393ab344a69bc1a0fab192a94c', 'ac604b44fdca482fb753034cb55d1351', \n", + " 'f446bf3102ff4bd99ea1c98f7d2f7af0', 'c2c5d4b9a607487ea405a99c721079d4', '85ddd3c34c58407392953c47a32f5428', \n", + " 'd51de709f95045f8bacf473574b96ba5', '6373dfb8cb9b47e88e8f76adcfadde20', '313d003df34b4bd9823b3474fc93f9f9', \n", + " '53e78583db87421f8decb529ba859ca4', '8fdc9b926a674a9ea07d91df2c5e06f2', '90480ac60a3d475a88fbdab0a003dd5d', \n", + " '7559c3f880f341e898a402eba96a855d', '19a4c2cf718d40588eb96ac25a566353', 'f4427cccaa9442b48b42bedab5ab648e', \n", + " 'e192b8a00b6c422296851c93785deaf7', '355e25bdfc244c5e85d358e39432bd44', 'a0c3a7b410b24e18995f63369a31d123', \n", + " '03a395b4d8614757bb8432b4984559b0', 'a2d48b05d5454d428c0841432c7467b6', '3d981e617b304afab0f21ce8aa6c9786', \n", + " '2cd5668ac9054e2eb2c88bb4ed94bc6d', 'd7a732f4a8644bcbb8dedfc8be242fb2', '367eb90b929d4f6e9470d15c700d2e3f', \n", + " 'e049a7b2a6cb44259f907abbb44c5abc', 'a231added8674bef95092b32bc254ac8', 'e88a8f520dde445484c0a9395e1a0599',\n", + " 'cba570ae38f341faa6257342727377b7', '97953af1b97d4e268c52e1e54dcf421a', 'd200a61757d84b1dab8fbac35ff52c28', \n", + " 'fc68a5bb0a7b4b6386b3f08a69ead36f', '4a8210aec25e443391efb924cc0e5f23', '903742c353ce42c3ad9ab039fc418816', \n", + " '2114e2a75304475fad06ad201948fbad', 'ac917eae407c4deb96625dd0dc2f2ba9', '3dddfb70e7cd40f18a63478654182e9a', \n", + " 'd3735ba212dd4c768e1675dca7bdcb6f', '7abe572148864412a33979592fa985fb', 'd3dff742d07942ca805c2f72e49e12c5' \n", + " ]\n", + " \n", + " X_tr = data.loc[data.user_id.isin(train_ids), :]\n", + " X_te = data.loc[~data.user_id.isin(train_ids), :]\n", + " \n", + " return X_tr, X_te\n", + " \n", " raise NotImplementedError(\"Unknown split type\")" ] }, @@ -200,7 +210,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_75614/2274972291.py:4: DtypeWarning: Columns (38) have mixed types. Specify dtype option on import or set low_memory=False.\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/2274972291.py:4: DtypeWarning: Columns (38) have mixed types. Specify dtype option on import or set low_memory=False.\n", " data = pd.read_csv('../data/ReplacedMode_Fix_02142024.csv')\n" ] } @@ -274,13 +284,13 @@ "source": [ "# First, we map the user IDs to ints.\n", "\n", - "USERS = list(data.user_id.unique())\n", + "# USERS = list(data.user_id.unique())\n", "\n", - "USER_MAP = {\n", - " u: i+1 for (i, u) in enumerate(USERS)\n", - "}\n", + "# USER_MAP = {\n", + "# u: i+1 for (i, u) in enumerate(USERS)\n", + "# }\n", "\n", - "data['user_id'] = data['user_id'].apply(lambda x: USER_MAP[x])\n", + "# data['user_id'] = data['user_id'].apply(lambda x: USER_MAP[x])\n", "\n", "# data.rename(\n", "# columns={'start_local_dt_weekday': 'start:DOW', 'end_local_dt_weekday': 'end:DOW'},\n", @@ -427,13 +437,37 @@ "outputs": [], "source": [ "# Now, we split the data.\n", - "train_data, test_data = get_train_test_splits(data=data, how=SPLIT_TYPE.TARGET, shuffle=True)" + "train_data, test_data = get_train_test_splits(data=data, how=SPLIT_TYPE.INTER_USER)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.7757575757575758\n", + "0.8380486968449932\n" + ] + } + ], + "source": [ + "# If split is inter-user, we should verify test size.\n", + "\n", + "n_tr, n_te = len(train_data.user_id.unique()), len(test_data.user_id.unique())\n", + "n_ex_tr, n_ex_te = train_data.shape[0], test_data.shape[0]\n", + "\n", + "print(n_tr/(n_tr+n_te))\n", + "print(n_ex_tr/(n_ex_tr+n_ex_te))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -449,24 +483,188 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Train R2 for car: 0.7578875871366312\n", - "Train R2 for bicycling: 0.9103687323238318\n", - "Train R2 for walking: 0.6383980197916885\n", - "Train R2 for no_sensed: 0.6360068166249293\n", - "Train R2 for transit: 0.751057562851356\n", + "Train R2 for bicycling: 0.9131217438269534\n", + "Train R2 for transit: 0.7868655990732462\n", + "Train R2 for car: 0.7673262331496208\n", + "Train R2 for no_sensed: 0.6274006368569693\n", + "Train R2 for walking: 0.6356687086293809\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df[new_columns] = 0\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df[new_columns] = 0\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df[new_columns] = 0\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df[new_columns] = 0\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df[new_columns] = 0\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df[new_columns] = 0\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df[new_columns] = 0\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df[new_columns] = 0\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df[new_columns] = 0\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:49: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df['temp'] = 0\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:58: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df[c] = df['av_' + c] * df['temp']\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:60: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df.drop(columns=['temp'], inplace=True)\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:62: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df.rename(columns=dict([(x, 'tt_'+x) for x in new_columns]), inplace=True)\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df[new_columns] = 0\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df[new_columns] = 0\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df[new_columns] = 0\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df[new_columns] = 0\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df[new_columns] = 0\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df[new_columns] = 0\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df[new_columns] = 0\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df[new_columns] = 0\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df[new_columns] = 0\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:49: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df['temp'] = 0\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:58: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df[c] = df['av_' + c] * df['temp']\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:60: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df.drop(columns=['temp'], inplace=True)\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:62: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df.rename(columns=dict([(x, 'tt_'+x) for x in new_columns]), inplace=True)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "----------\n", - "Test R2 for car: 0.7754447909826347\n", - "Test R2 for walking: 0.670974597223546\n", - "Test R2 for bicycling: 0.9172082504523482\n", - "Test R2 for no_sensed: 0.6829614441643039\n", - "Test R2 for transit: 0.6870857316497596\n" + "Test R2 for bicycling: 0.9035643287707561\n", + "Test R2 for transit: 0.41808445188600185\n", + "Test R2 for car: 0.729524725154663\n", + "Test R2 for no_sensed: 0.708585489321987\n", + "Test R2 for walking: 0.6801138679986298\n" ] } ], @@ -478,16 +676,16 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "((56108, 139), (14028, 139))" + "((58650, 139), (11334, 139))" ] }, - "execution_count": 17, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -498,7 +696,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -600,7 +798,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -614,7 +812,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -626,7 +824,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -685,16 +883,16 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "9" + "8" ] }, - "execution_count": 22, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -705,7 +903,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 24, "metadata": {}, "outputs": [], "source": [ @@ -715,7 +913,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ @@ -735,7 +933,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 35, "metadata": {}, "outputs": [], "source": [ @@ -745,7 +943,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 36, "metadata": {}, "outputs": [], "source": [ @@ -767,7 +965,7 @@ " # We want to build bootstrapped trees that would not always use all the features.\n", "\n", " param_set2 = {\n", - " 'n_estimators': [150, 200, 250],\n", + " 'n_estimators': [150, 200, 250, 300],\n", " 'min_samples_split': [2, 3, 4],\n", " 'min_samples_leaf': [1, 2, 3],\n", " 'class_weight': ['balanced_subsample'],\n", @@ -803,7 +1001,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -818,7 +1016,7 @@ " n_estimators=150, n_jobs=-1, random_state=19348)" ] }, - "execution_count": 27, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -829,7 +1027,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 38, "metadata": {}, "outputs": [], "source": [ @@ -842,7 +1040,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 39, "metadata": {}, "outputs": [], "source": [ @@ -855,14 +1053,14 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[BOOTSTRAPPED] | Train F1: 0.9437613701101397, Test F1: 0.7241888194981588\n" + "[BOOTSTRAPPED] | Train F1: 0.9429078702826239, Test F1: 0.3260387751184679\n" ] } ], @@ -895,98 +1093,98 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[('primary_job_commute_time', 0.043128713683595575),\n", - " ('age', 0.037455585582861765),\n", - " ('income_category', 0.03397706582439294),\n", - " ('distance_miles', 0.033258410055039066),\n", - " ('mph', 0.03262583547311039),\n", - " ('cost_transit', 0.031198791353082865),\n", - " ('section_distance_argmax', 0.030785647240196036),\n", - " ('dew_point_2m (°F)', 0.030211627865642073),\n", - " ('temperature_2m (°F)', 0.03007553220598789),\n", - " ('cost_s_car', 0.026055459738986344),\n", - " ('n_motor_vehicles', 0.02573541697937522),\n", - " ('cost_ridehail', 0.02456504397826428),\n", - " ('section_duration_argmax', 0.0228622986411679),\n", - " ('tt_p_micro', 0.022129815815942814),\n", - " ('relative_humidity_2m (%)', 0.02210319245106569),\n", - " ('end:hour', 0.021229903100266623),\n", - " ('tt_transit', 0.021206105210141206),\n", - " ('tt_walk', 0.02114515141258671),\n", - " ('start:hour', 0.020865360139350614),\n", - " ('primary_job_commute_mode_Car transport', 0.02081332151659349),\n", - " ('wind_gusts_10m (mp/h)', 0.020018561778756445),\n", - " ('n_residence_members', 0.019478670935887614),\n", - " ('wind_speed_10m (mp/h)', 0.019328357449251703),\n", - " ('cost_car', 0.01919696517190616),\n", - " ('n_residents_with_license', 0.0185836822165526),\n", - " ('tt_s_car', 0.017942959071607922),\n", - " ('n_working_residents', 0.017846139269221274),\n", - " ('tt_ridehail', 0.017430384620268677),\n", - " ('tt_car', 0.01558778045627846),\n", - " ('primary_job_commute_mode_Active transport', 0.014666396181188963),\n", - " ('cost_s_micro', 0.014091401054182044),\n", - " ('n_residents_u18', 0.012847507015434825),\n", - " ('highest_education_High school graduate or GED', 0.012395830421911084),\n", - " ('primary_job_description_Sales or service', 0.01213476693202911),\n", - " ('has_drivers_license_Yes', 0.011937170972796346),\n", - " ('tt_s_micro', 0.010932737957648923),\n", - " ('has_drivers_license_No', 0.010728975175435857),\n", - " ('av_transit', 0.01072203571287725),\n", - " ('highest_education_Some college or associates degree', 0.010449467308141266),\n", - " ('primary_job_commute_mode_Public transport', 0.010366529446513166),\n", - " ('gender_Woman', 0.009888767288248466),\n", - " ('primary_job_type_Full-time', 0.008728756077694473),\n", - " ('gender_Man', 0.00812404588127069),\n", - " ('primary_job_description_Professional, managerial, or technical',\n", - " 0.007993902388034105),\n", + "[('primary_job_commute_time', 0.03656116744063983),\n", + " ('distance_miles', 0.03384896885706385),\n", + " ('mph', 0.03365824428294463),\n", + " ('cost_transit', 0.03351839132356644),\n", + " ('income_category', 0.03327663593086925),\n", + " ('age', 0.03320140844541059),\n", + " ('dew_point_2m (°F)', 0.03174850829935579),\n", + " ('section_distance_argmax', 0.0316844184072864),\n", + " ('temperature_2m (°F)', 0.031062635841221802),\n", + " ('n_motor_vehicles', 0.02809262054525041),\n", + " ('cost_s_car', 0.02590076039294508),\n", + " ('cost_ridehail', 0.02390316297823517),\n", + " ('section_duration_argmax', 0.023124663088762328),\n", + " ('n_residents_with_license', 0.022957697145547393),\n", + " ('tt_p_micro', 0.022799905074206473),\n", + " ('tt_transit', 0.02231532316999558),\n", + " ('relative_humidity_2m (%)', 0.02223392911205542),\n", + " ('tt_walk', 0.02156031560995313),\n", + " ('end:hour', 0.02127261764701738),\n", + " ('start:hour', 0.02113307125915479),\n", + " ('cost_car', 0.02069943868032831),\n", + " ('primary_job_commute_mode_Car transport', 0.020695999999399473),\n", + " ('n_residence_members', 0.02039769915552014),\n", + " ('wind_gusts_10m (mp/h)', 0.020371151744672206),\n", + " ('wind_speed_10m (mp/h)', 0.0202171294903448),\n", + " ('n_working_residents', 0.019856756085641247),\n", + " ('tt_s_car', 0.018478958407386708),\n", + " ('tt_car', 0.017174957078456614),\n", + " ('tt_ridehail', 0.01676576006316021),\n", + " ('cost_s_micro', 0.014284462066383688),\n", + " ('primary_job_description_Sales or service', 0.012984251205446487),\n", + " ('n_residents_u18', 0.011854045241279415),\n", + " ('tt_s_micro', 0.011691299016354224),\n", + " ('primary_job_commute_mode_Public transport', 0.011604917446563265),\n", + " ('primary_job_commute_mode_Active transport', 0.011563480793645827),\n", + " ('gender_Woman', 0.011263214031603247),\n", + " ('highest_education_High school graduate or GED', 0.010576049151755485),\n", + " ('highest_education_Some college or associates degree', 0.01020534553535622),\n", + " ('av_transit', 0.009289915096852685),\n", + " ('primary_job_type_Full-time', 0.009228727317286755),\n", " ('primary_job_description_Clerical or administrative support',\n", - " 0.007853483068559344),\n", - " ('primary_job_type_Part-time', 0.00773301630642922),\n", + " 0.009038264768764997),\n", + " ('primary_job_type_Part-time', 0.008895929760766197),\n", + " ('av_p_micro', 0.00863641893397233),\n", + " ('gender_Man', 0.008452778636530149),\n", + " ('primary_job_description_Professional, managerial, or technical',\n", + " 0.008401553611939554),\n", + " ('has_drivers_license_Yes', 0.007324804786898662),\n", " ('primary_job_description_Manufacturing, construction, maintenance, or '\n", " 'farming',\n", - " 0.007073264089663813),\n", - " ('av_p_micro', 0.006819985655591969),\n", - " (\"highest_education_Bachelor's degree\", 0.0067744027509219346),\n", - " ('has_multiple_jobs_No', 0.005940630272941997),\n", - " ('av_walk', 0.005833534850107814),\n", - " ('primary_job_description_Education', 0.005601947324621126),\n", - " ('has_multiple_jobs_Yes', 0.0054762812973311375),\n", - " ('av_car', 0.005327083620534075),\n", - " ('av_s_micro', 0.004999887743199054),\n", - " ('primary_job_description_Custodial', 0.004967736001212933),\n", + " 0.007086900844546432),\n", + " ('av_walk', 0.0065497221649774935),\n", + " ('primary_job_description_Education', 0.0062592730468462535),\n", + " ('has_drivers_license_No', 0.0061996065304084184),\n", + " (\"highest_education_Bachelor's degree\", 0.006032319692096047),\n", + " ('has_multiple_jobs_Yes', 0.005882443681020677),\n", + " ('has_multiple_jobs_No', 0.005335658287831361),\n", + " ('av_s_micro', 0.005050550371666917),\n", + " ('av_car', 0.004728243532015504),\n", " ('highest_education_Graduate degree or professional degree',\n", - " 0.004846691708506593),\n", - " ('av_ridehail', 0.0036346537681732137),\n", - " ('highest_education_Prefer not to say', 0.003564532937658746),\n", - " ('av_s_car', 0.003451427187397134),\n", - " ('primary_job_description_Food service', 0.0032926467536171333),\n", - " ('gender_Nonbinary/genderqueer/genderfluid', 0.0028942303106160934),\n", - " ('gender_Woman;Nonbinary/genderqueer/genderfluid', 0.00260835513020193),\n", - " ('primary_job_description_Medical/healthcare', 0.002369006457211943),\n", - " ('primary_job_type_Prefer not to say', 0.0022687588158498907),\n", - " ('primary_job_description_Other', 0.0022630321931658144),\n", - " ('tt_unknown', 0.0017387153721121465),\n", - " ('rain (inch)', 0.0014057957565409885),\n", - " ('primary_job_commute_mode_WFH', 0.0013711655929834956),\n", - " ('highest_education_Less than a high school graduate', 0.001295731028717082),\n", - " ('has_drivers_license_Prefer not to say', 0.0011005915907342048),\n", - " ('has_multiple_jobs_Prefer not to say', 0.0010434582607183032),\n", - " ('av_unknown', 0.0010228613615574766),\n", - " ('snowfall (inch)', 0.0008481943054743177),\n", - " ('primary_job_commute_mode_Unknown', 0.0007922654044467312),\n", - " ('primary_job_commute_mode_Hybrid', 0.000557116214113174),\n", - " ('gender_Man;Nonbinary/genderqueer/genderfluid', 0.00032688458412609075),\n", - " ('gender_Prefer not to say', 3.048996616614434e-05),\n", - " ('tt_no_trip', 1.2634619172866944e-05),\n", - " ('av_no_trip', 9.438648837193385e-06),\n", + " 0.004642958375833981),\n", + " ('gender_Woman;Nonbinary/genderqueer/genderfluid', 0.00421330092341653),\n", + " ('primary_job_description_Custodial', 0.003419042865152697),\n", + " ('av_s_car', 0.0033783136347606295),\n", + " ('av_ridehail', 0.0027666404305310257),\n", + " ('gender_Nonbinary/genderqueer/genderfluid', 0.0026293269089904046),\n", + " ('highest_education_Prefer not to say', 0.002504632146302557),\n", + " ('primary_job_description_Food service', 0.002417226793032642),\n", + " ('primary_job_description_Medical/healthcare', 0.002318202110078709),\n", + " ('primary_job_type_Prefer not to say', 0.0018874661300219261),\n", + " ('tt_unknown', 0.0017189591933169184),\n", + " ('primary_job_description_Other', 0.0016913655476757901),\n", + " ('rain (inch)', 0.0014573980261950155),\n", + " ('has_drivers_license_Prefer not to say', 0.0012507320988533646),\n", + " ('primary_job_commute_mode_WFH', 0.0010339629984452642),\n", + " ('av_unknown', 0.0009490470975242473),\n", + " ('highest_education_Less than a high school graduate', 0.0009240966799280463),\n", + " ('has_multiple_jobs_Prefer not to say', 0.0009222062920680996),\n", + " ('snowfall (inch)', 0.0009015378230446266),\n", + " ('primary_job_commute_mode_Hybrid', 0.0008805253765039911),\n", + " ('gender_Man;Nonbinary/genderqueer/genderfluid', 0.0005723629022594494),\n", + " ('primary_job_commute_mode_Unknown', 0.0005385851614091888),\n", + " ('gender_Prefer not to say', 3.0396144453361146e-05),\n", + " ('tt_no_trip', 1.0172431126169753e-05),\n", + " ('av_no_trip', 9.070799875677394e-06),\n", " ('is_overnight_trip', 0.0),\n", " ('cost_p_micro', 0.0),\n", " ('cost_no_trip', 0.0),\n", @@ -1229,5 +1427,5 @@ } }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 4 } diff --git a/rm_src/cost_time_avl_preprocessing.ipynb b/rm_src/cost_time_avl_preprocessing.ipynb index 1fee0a1..9ed8ed4 100644 --- a/rm_src/cost_time_avl_preprocessing.ipynb +++ b/rm_src/cost_time_avl_preprocessing.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 74, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -18,14 +18,14 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_84693/3166671539.py:3: DtypeWarning: Columns (40) have mixed types. Specify dtype option on import or set low_memory=False.\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_62467/3166671539.py:3: DtypeWarning: Columns (40) have mixed types. Specify dtype option on import or set low_memory=False.\n", " df = pd.read_csv('../data/final_modeling_data_02142024.csv')\n" ] } @@ -38,14 +38,14 @@ }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Shape: (80690, 105)\n" + "Shape: (80691, 103)\n" ] } ], @@ -55,7 +55,7 @@ }, { "cell_type": "code", - "execution_count": 77, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -71,7 +71,7 @@ }, { "cell_type": "code", - "execution_count": 78, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -80,7 +80,7 @@ }, { "cell_type": "code", - "execution_count": 79, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -90,7 +90,7 @@ " Timestamp('2022-12-30 23:33:27.147785-0700', tz='America/Denver'))" ] }, - "execution_count": 79, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -102,7 +102,7 @@ }, { "cell_type": "code", - "execution_count": 80, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -112,7 +112,7 @@ }, { "cell_type": "code", - "execution_count": 81, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -121,7 +121,7 @@ }, { "cell_type": "code", - "execution_count": 82, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -135,7 +135,7 @@ }, { "cell_type": "code", - "execution_count": 83, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -145,7 +145,7 @@ }, { "cell_type": "code", - "execution_count": 84, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -156,14 +156,14 @@ }, { "cell_type": "code", - "execution_count": 85, + "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Old shape: 80690. new shape: 80688\n" + "Old shape: 80691. new shape: 80689\n" ] } ], @@ -173,7 +173,7 @@ }, { "cell_type": "code", - "execution_count": 86, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -189,7 +189,7 @@ }, { "cell_type": "code", - "execution_count": 87, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -208,11 +208,11 @@ " 'start_place': 0,\n", " 'end_place': 0,\n", " 'cleaned_trip': 0,\n", - " 'inferred_labels': 216,\n", - " 'inferred_trip': 216,\n", - " 'expectation': 216,\n", - " 'confidence_threshold': 216,\n", - " 'expected_trip': 216,\n", + " 'inferred_labels': 217,\n", + " 'inferred_trip': 217,\n", + " 'expectation': 217,\n", + " 'confidence_threshold': 217,\n", + " 'expected_trip': 217,\n", " 'user_input': 0,\n", " 'section_modes': 0,\n", " 'section_distances': 0,\n", @@ -235,7 +235,7 @@ " '_id': 0,\n", " 'user_id': 0,\n", " 'metadata_write_ts': 0,\n", - " 'additions': 80686,\n", + " 'additions': 80687,\n", " 'mode_confirm': 337,\n", " 'purpose_confirm': 527,\n", " 'distance_miles': 0,\n", @@ -276,12 +276,10 @@ " 'primary_job_type_Full-time': 0,\n", " 'primary_job_type_Part-time': 0,\n", " 'primary_job_type_Prefer not to say': 0,\n", - " 'primary_job_description_Clerical': 0,\n", " 'primary_job_description_Clerical or administrative support': 0,\n", " 'primary_job_description_Custodial': 0,\n", " 'primary_job_description_Education': 0,\n", " 'primary_job_description_Food service': 0,\n", - " 'primary_job_description_Maintenance': 0,\n", " 'primary_job_description_Manufacturing, construction, maintenance, or farming': 0,\n", " 'primary_job_description_Medical/healthcare': 0,\n", " 'primary_job_description_Other': 0,\n", @@ -309,7 +307,7 @@ " 'wind_gusts_10m (mp/h)': 0}" ] }, - "execution_count": 87, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -320,7 +318,7 @@ }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -363,7 +361,7 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -373,7 +371,7 @@ }, { "cell_type": "code", - "execution_count": 90, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -382,7 +380,7 @@ }, { "cell_type": "code", - "execution_count": 91, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -391,7 +389,7 @@ }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -404,18 +402,18 @@ }, { "cell_type": "code", - "execution_count": 93, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "# bus, train, bicycling, walking, car\n", "# split-apply-combine\n", - "def drop_outliers(df: pd.DataFrame) -> pd.DataFrame:\n", + "def drop_outliers(df: pd.DataFrame, low=0.1, high=0.9) -> pd.DataFrame:\n", " def filter_by_percentiles(group):\n", - " distance_low = group['section_distance_argmax'].quantile(0.1)\n", - " distance_high = group['section_distance_argmax'].quantile(0.9)\n", - " duration_low = group['section_duration_argmax'].quantile(0.1)\n", - " duration_high = group['section_duration_argmax'].quantile(0.9)\n", + " distance_low = group['section_distance_argmax'].quantile(low)\n", + " distance_high = group['section_distance_argmax'].quantile(high)\n", + " duration_low = group['section_duration_argmax'].quantile(low)\n", + " duration_high = group['section_duration_argmax'].quantile(high)\n", " \n", " l1_filter = group[\n", " (group['section_distance_argmax'] >= distance_low) &\n", @@ -434,11 +432,11 @@ }, { "cell_type": "code", - "execution_count": 94, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ - "filtered_df = drop_outliers(df)\n", + "filtered_df = drop_outliers(df, low=0.01, high=0.99)\n", "\n", "# Ideal speed. distance/time.\n", "filtered_df['mph'] = (\n", @@ -448,11 +446,11 @@ }, { "cell_type": "code", - "execution_count": 95, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ - "def filter_mph(df: pd.DataFrame) -> pd.DataFrame:\n", + "def filter_mph(df: pd.DataFrame, low=0.1, high=0.9) -> pd.DataFrame:\n", " \n", " MPH_THRESHOLDS = {\n", " # https://www.sciencedirect.com/science/article/pii/S2210670718304682\n", @@ -466,8 +464,8 @@ " if group.name in MPH_THRESHOLDS.keys():\n", " f_df = group[group['mph'] <= MPH_THRESHOLDS[group.name]]\n", " else:\n", - " mph_low = group['mph'].quantile(0.1)\n", - " mph_high = group['mph'].quantile(0.9)\n", + " mph_low = group['mph'].quantile(low)\n", + " mph_high = group['mph'].quantile(high)\n", "\n", " f_df = group[(group['mph'] >= mph_low) & (group['mph'] <= mph_high)]\n", " \n", @@ -478,16 +476,16 @@ }, { "cell_type": "code", - "execution_count": 96, + "execution_count": 23, "metadata": {}, "outputs": [], "source": [ - "filtered_df = filter_mph(filtered_df)" + "filtered_df = filter_mph(filtered_df, low=0.01, high=0.99)" ] }, { "cell_type": "code", - "execution_count": 97, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -560,188 +558,188 @@ " \n", " \n", " bicycling\n", - " 7196.0\n", - " 2.147281\n", - " 0.888086\n", - " 0.802221\n", - " 1.500171\n", - " 1.955479\n", - " 2.585763\n", - " 4.892137\n", - " 7196.0\n", - " 13.754313\n", - " 5.148564\n", - " 5.886639\n", - " 9.927844\n", - " 12.655730\n", - " 16.655780\n", - " 29.141947\n", + " 9330.0\n", + " 2.344544\n", + " 1.591889\n", + " 0.237542\n", + " 1.356889\n", + " 1.944232\n", + " 2.849511\n", + " 11.063928\n", + " 9330.0\n", + " 15.473286\n", + " 10.290371\n", + " 1.944501\n", + " 9.035766\n", + " 12.605268\n", + " 18.452003\n", + " 73.866648\n", " \n", " \n", " bus\n", - " 290.0\n", - " 1.432493\n", - " 0.618867\n", - " 0.372875\n", - " 0.940211\n", - " 1.486744\n", - " 1.917582\n", - " 3.016720\n", - " 290.0\n", - " 8.960115\n", - " 3.615953\n", - " 2.963177\n", - " 6.496972\n", - " 8.240974\n", - " 10.668935\n", - " 20.585433\n", + " 478.0\n", + " 1.552230\n", + " 1.413280\n", + " 0.090773\n", + " 0.646264\n", + " 1.294477\n", + " 1.960493\n", + " 11.592445\n", + " 478.0\n", + " 10.017439\n", + " 7.302110\n", + " 0.518257\n", + " 5.801983\n", + " 8.164530\n", + " 12.269039\n", + " 59.147400\n", " \n", " \n", " car\n", - " 24744.0\n", - " 4.132410\n", - " 2.601994\n", - " 0.911446\n", - " 2.192661\n", - " 3.429022\n", - " 5.350170\n", - " 14.688077\n", - " 24744.0\n", - " 13.972971\n", - " 6.666358\n", - " 5.672830\n", - " 8.779016\n", - " 12.123820\n", - " 17.505811\n", - " 35.306784\n", + " 40885.0\n", + " 5.940542\n", + " 7.984688\n", + " 0.196141\n", + " 1.713557\n", + " 3.346060\n", + " 6.762013\n", + " 74.464352\n", + " 40885.0\n", + " 16.717427\n", + " 13.274385\n", + " 2.089567\n", + " 8.291839\n", + " 12.638901\n", + " 20.472570\n", + " 110.945333\n", " \n", " \n", " no_sensed\n", - " 1681.0\n", - " 2.677326\n", - " 2.365448\n", - " 0.178071\n", - " 1.026175\n", - " 1.954673\n", - " 3.547600\n", - " 13.554013\n", - " 1681.0\n", - " 15.967264\n", - " 12.112498\n", - " 1.079868\n", - " 7.166667\n", - " 12.307400\n", - " 21.626077\n", - " 55.445744\n", + " 2730.0\n", + " 4.635380\n", + " 7.477224\n", + " 0.103854\n", + " 0.751998\n", + " 1.992592\n", + " 4.917120\n", + " 71.856971\n", + " 2730.0\n", + " 21.321379\n", + " 26.638677\n", + " 0.262941\n", + " 5.851082\n", + " 12.440902\n", + " 26.501255\n", + " 215.273083\n", " \n", " \n", " subway\n", - " 7.0\n", - " 23.441479\n", - " 10.540687\n", - " 13.113128\n", - " 14.804241\n", + " 9.0\n", + " 22.422637\n", + " 12.175141\n", + " 3.259611\n", + " 14.510151\n", " 23.587655\n", - " 27.444590\n", + " 27.756583\n", " 42.891905\n", - " 7.0\n", - " 41.873968\n", - " 17.610572\n", - " 23.757772\n", - " 29.866407\n", + " 9.0\n", + " 43.065269\n", + " 23.009173\n", + " 13.103616\n", + " 27.562759\n", " 34.400000\n", - " 51.801433\n", - " 71.624326\n", + " 58.714000\n", + " 81.366026\n", " \n", " \n", " train\n", - " 63.0\n", - " 12.262300\n", - " 4.021215\n", - " 4.322110\n", - " 10.030392\n", - " 10.691830\n", - " 15.446952\n", - " 22.820908\n", - " 63.0\n", - " 29.722451\n", - " 10.548372\n", - " 12.519296\n", - " 21.976672\n", - " 26.400000\n", - " 38.511937\n", - " 55.713396\n", + " 96.0\n", + " 14.303936\n", + " 13.079218\n", + " 0.886342\n", + " 8.647429\n", + " 10.572576\n", + " 15.516670\n", + " 67.987009\n", + " 96.0\n", + " 30.687195\n", + " 17.134854\n", + " 6.332442\n", + " 20.763549\n", + " 25.695106\n", + " 40.190158\n", + " 88.009998\n", " \n", " \n", " walking\n", - " 12072.0\n", - " 0.475999\n", - " 0.368141\n", - " 0.120082\n", - " 0.221963\n", - " 0.348252\n", - " 0.594541\n", - " 2.208408\n", - " 12072.0\n", - " 19.668879\n", - " 13.049073\n", - " 5.284233\n", - " 9.391205\n", - " 15.457291\n", - " 26.251433\n", - " 60.423767\n", + " 16608.0\n", + " 0.545524\n", + " 0.719691\n", + " 0.071237\n", + " 0.173010\n", + " 0.309777\n", + " 0.604884\n", + " 8.706443\n", + " 16608.0\n", + " 27.730449\n", + " 35.489695\n", + " 2.283617\n", + " 8.551447\n", + " 15.590376\n", + " 31.206353\n", + " 295.377052\n", " \n", " \n", "\n", "" ], "text/plain": [ - " section_distance_argmax \\\n", - " count mean std min \n", - "section_mode_argmax \n", - "bicycling 7196.0 2.147281 0.888086 0.802221 \n", - "bus 290.0 1.432493 0.618867 0.372875 \n", - "car 24744.0 4.132410 2.601994 0.911446 \n", - "no_sensed 1681.0 2.677326 2.365448 0.178071 \n", - "subway 7.0 23.441479 10.540687 13.113128 \n", - "train 63.0 12.262300 4.021215 4.322110 \n", - "walking 12072.0 0.475999 0.368141 0.120082 \n", + " section_distance_argmax \\\n", + " count mean std min \n", + "section_mode_argmax \n", + "bicycling 9330.0 2.344544 1.591889 0.237542 \n", + "bus 478.0 1.552230 1.413280 0.090773 \n", + "car 40885.0 5.940542 7.984688 0.196141 \n", + "no_sensed 2730.0 4.635380 7.477224 0.103854 \n", + "subway 9.0 22.422637 12.175141 3.259611 \n", + "train 96.0 14.303936 13.079218 0.886342 \n", + "walking 16608.0 0.545524 0.719691 0.071237 \n", "\n", " \\\n", " 25% 50% 75% max \n", "section_mode_argmax \n", - "bicycling 1.500171 1.955479 2.585763 4.892137 \n", - "bus 0.940211 1.486744 1.917582 3.016720 \n", - "car 2.192661 3.429022 5.350170 14.688077 \n", - "no_sensed 1.026175 1.954673 3.547600 13.554013 \n", - "subway 14.804241 23.587655 27.444590 42.891905 \n", - "train 10.030392 10.691830 15.446952 22.820908 \n", - "walking 0.221963 0.348252 0.594541 2.208408 \n", + "bicycling 1.356889 1.944232 2.849511 11.063928 \n", + "bus 0.646264 1.294477 1.960493 11.592445 \n", + "car 1.713557 3.346060 6.762013 74.464352 \n", + "no_sensed 0.751998 1.992592 4.917120 71.856971 \n", + "subway 14.510151 23.587655 27.756583 42.891905 \n", + "train 8.647429 10.572576 15.516670 67.987009 \n", + "walking 0.173010 0.309777 0.604884 8.706443 \n", "\n", " section_duration_argmax \\\n", " count mean std min \n", "section_mode_argmax \n", - "bicycling 7196.0 13.754313 5.148564 5.886639 \n", - "bus 290.0 8.960115 3.615953 2.963177 \n", - "car 24744.0 13.972971 6.666358 5.672830 \n", - "no_sensed 1681.0 15.967264 12.112498 1.079868 \n", - "subway 7.0 41.873968 17.610572 23.757772 \n", - "train 63.0 29.722451 10.548372 12.519296 \n", - "walking 12072.0 19.668879 13.049073 5.284233 \n", + "bicycling 9330.0 15.473286 10.290371 1.944501 \n", + "bus 478.0 10.017439 7.302110 0.518257 \n", + "car 40885.0 16.717427 13.274385 2.089567 \n", + "no_sensed 2730.0 21.321379 26.638677 0.262941 \n", + "subway 9.0 43.065269 23.009173 13.103616 \n", + "train 96.0 30.687195 17.134854 6.332442 \n", + "walking 16608.0 27.730449 35.489695 2.283617 \n", "\n", - " \n", - " 25% 50% 75% max \n", - "section_mode_argmax \n", - "bicycling 9.927844 12.655730 16.655780 29.141947 \n", - "bus 6.496972 8.240974 10.668935 20.585433 \n", - "car 8.779016 12.123820 17.505811 35.306784 \n", - "no_sensed 7.166667 12.307400 21.626077 55.445744 \n", - "subway 29.866407 34.400000 51.801433 71.624326 \n", - "train 21.976672 26.400000 38.511937 55.713396 \n", - "walking 9.391205 15.457291 26.251433 60.423767 " + " \n", + " 25% 50% 75% max \n", + "section_mode_argmax \n", + "bicycling 9.035766 12.605268 18.452003 73.866648 \n", + "bus 5.801983 8.164530 12.269039 59.147400 \n", + "car 8.291839 12.638901 20.472570 110.945333 \n", + "no_sensed 5.851082 12.440902 26.501255 215.273083 \n", + "subway 27.562759 34.400000 58.714000 81.366026 \n", + "train 20.763549 25.695106 40.190158 88.009998 \n", + "walking 8.551447 15.590376 31.206353 295.377052 " ] }, - "execution_count": 97, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -752,7 +750,7 @@ }, { "cell_type": "code", - "execution_count": 98, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -808,79 +806,79 @@ " \n", " \n", " bicycling\n", - " 7196.0\n", - " 9.550366\n", - " 2.371204\n", - " 2.817580\n", - " 7.840111\n", - " 9.587994\n", - " 11.239639\n", + " 9330.0\n", + " 9.247391\n", + " 2.596876\n", + " 2.579201\n", + " 7.363136\n", + " 9.299940\n", + " 11.149174\n", " 14.998472\n", " \n", " \n", " bus\n", - " 290.0\n", - " 9.848150\n", - " 3.112711\n", - " 4.264324\n", - " 7.275453\n", - " 9.853532\n", - " 12.421118\n", - " 15.596840\n", + " 478.0\n", + " 9.802104\n", + " 4.985744\n", + " 0.541139\n", + " 5.871760\n", + " 9.732367\n", + " 13.059672\n", + " 28.627234\n", " \n", " \n", " car\n", - " 24744.0\n", - " 17.354381\n", - " 5.587948\n", - " 8.566853\n", - " 12.716558\n", - " 16.579894\n", - " 21.470495\n", - " 30.036223\n", + " 40885.0\n", + " 18.588257\n", + " 10.342023\n", + " 1.644719\n", + " 11.099615\n", + " 16.538740\n", + " 24.238533\n", + " 55.344377\n", " \n", " \n", " no_sensed\n", - " 1681.0\n", - " 10.299587\n", - " 4.514342\n", - " 4.608316\n", - " 6.571906\n", - " 9.213382\n", - " 13.050427\n", - " 22.598194\n", + " 2730.0\n", + " 13.042674\n", + " 9.209485\n", + " 3.891109\n", + " 6.289566\n", + " 10.042121\n", + " 16.658858\n", + " 53.570005\n", " \n", " \n", " subway\n", - " 7.0\n", - " 34.708676\n", - " 12.047924\n", - " 24.457144\n", - " 26.517639\n", - " 32.866807\n", - " 36.515566\n", + " 9.0\n", + " 31.476960\n", + " 12.524113\n", + " 14.925398\n", + " 25.308404\n", + " 27.726875\n", + " 35.930730\n", " 59.570373\n", " \n", " \n", " train\n", - " 63.0\n", - " 25.095616\n", - " 3.084808\n", - " 19.883468\n", - " 22.699687\n", - " 24.746441\n", - " 27.292824\n", - " 31.597822\n", + " 96.0\n", + " 25.335050\n", + " 10.249756\n", + " 4.682300\n", + " 21.237739\n", + " 24.781257\n", + " 28.723128\n", + " 62.081000\n", " \n", " \n", " walking\n", - " 12072.0\n", - " 1.621529\n", - " 0.745358\n", - " 0.131592\n", - " 0.998944\n", - " 1.616822\n", - " 2.261444\n", + " 16608.0\n", + " 1.494737\n", + " 0.807007\n", + " 0.022550\n", + " 0.804196\n", + " 1.475082\n", + " 2.192542\n", " 2.929953\n", " \n", " \n", @@ -891,27 +889,27 @@ " mph \\\n", " count mean std min 25% \n", "section_mode_argmax \n", - "bicycling 7196.0 9.550366 2.371204 2.817580 7.840111 \n", - "bus 290.0 9.848150 3.112711 4.264324 7.275453 \n", - "car 24744.0 17.354381 5.587948 8.566853 12.716558 \n", - "no_sensed 1681.0 10.299587 4.514342 4.608316 6.571906 \n", - "subway 7.0 34.708676 12.047924 24.457144 26.517639 \n", - "train 63.0 25.095616 3.084808 19.883468 22.699687 \n", - "walking 12072.0 1.621529 0.745358 0.131592 0.998944 \n", + "bicycling 9330.0 9.247391 2.596876 2.579201 7.363136 \n", + "bus 478.0 9.802104 4.985744 0.541139 5.871760 \n", + "car 40885.0 18.588257 10.342023 1.644719 11.099615 \n", + "no_sensed 2730.0 13.042674 9.209485 3.891109 6.289566 \n", + "subway 9.0 31.476960 12.524113 14.925398 25.308404 \n", + "train 96.0 25.335050 10.249756 4.682300 21.237739 \n", + "walking 16608.0 1.494737 0.807007 0.022550 0.804196 \n", "\n", " \n", " 50% 75% max \n", "section_mode_argmax \n", - "bicycling 9.587994 11.239639 14.998472 \n", - "bus 9.853532 12.421118 15.596840 \n", - "car 16.579894 21.470495 30.036223 \n", - "no_sensed 9.213382 13.050427 22.598194 \n", - "subway 32.866807 36.515566 59.570373 \n", - "train 24.746441 27.292824 31.597822 \n", - "walking 1.616822 2.261444 2.929953 " + "bicycling 9.299940 11.149174 14.998472 \n", + "bus 9.732367 13.059672 28.627234 \n", + "car 16.538740 24.238533 55.344377 \n", + "no_sensed 10.042121 16.658858 53.570005 \n", + "subway 27.726875 35.930730 59.570373 \n", + "train 24.781257 28.723128 62.081000 \n", + "walking 1.475082 2.192542 2.929953 " ] }, - "execution_count": 98, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -922,14 +920,14 @@ }, { "cell_type": "code", - "execution_count": 99, + "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Dropped 34542 rows.\n" + "Dropped 10460 rows.\n" ] } ], @@ -939,7 +937,27 @@ }, { "cell_type": "code", - "execution_count": 100, + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.12963353121243293" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(80689 - 70229)/80689" + ] + }, + { + "cell_type": "code", + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -951,7 +969,7 @@ " 'E-bike', 'Not a Trip'], dtype=object)" ] }, - "execution_count": 100, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -962,7 +980,7 @@ }, { "cell_type": "code", - "execution_count": 101, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -1096,7 +1114,7 @@ }, { "cell_type": "code", - "execution_count": 102, + "execution_count": 29, "metadata": {}, "outputs": [], "source": [ @@ -1168,7 +1186,7 @@ }, { "cell_type": "code", - "execution_count": 103, + "execution_count": 30, "metadata": {}, "outputs": [], "source": [ @@ -1182,7 +1200,7 @@ }, { "cell_type": "code", - "execution_count": 104, + "execution_count": 31, "metadata": {}, "outputs": [], "source": [ @@ -1195,7 +1213,7 @@ }, { "cell_type": "code", - "execution_count": 105, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -1205,7 +1223,7 @@ " dtype=object)" ] }, - "execution_count": 105, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -1216,7 +1234,7 @@ }, { "cell_type": "code", - "execution_count": 106, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -1253,14 +1271,14 @@ " ...\n", " target\n", " av_s_micro\n", - " av_walk\n", - " av_no_trip\n", + " av_ridehail\n", " av_unknown\n", - " av_p_micro\n", " av_car\n", " av_transit\n", + " av_walk\n", " av_s_car\n", - " av_ridehail\n", + " av_no_trip\n", + " av_p_micro\n", " \n", " \n", " \n", @@ -1282,11 +1300,11 @@ " 0\n", " 0\n", " 0\n", - " 1\n", " 0\n", " 0\n", " 0\n", " 0\n", + " 1\n", " \n", " \n", " 1\n", @@ -1306,15 +1324,39 @@ " 0\n", " 0\n", " 0\n", - " 1\n", " 0\n", " 0\n", " 0\n", " 0\n", + " 1\n", " \n", " \n", " 2\n", " DwellSegmentationTimeFilter\n", + " 1.619662e+09\n", + " 2021-04-28 19:58:51-06:00\n", + " {'type': 'Point', 'coordinates': [-105.0854639...\n", + " 608adb94b706ddbc669dabb5\n", + " 1.619658e+09\n", + " 2021-04-28 19:07:47.510844-06:00\n", + " {'type': 'Point', 'coordinates': [-105.1227172...\n", + " 51.058153\n", + " 9049.744908\n", + " ...\n", + " 1\n", + " 1\n", + " 0\n", + " 0\n", + " 0\n", + " 0\n", + " 0\n", + " 0\n", + " 0\n", + " 1\n", + " \n", + " \n", + " 3\n", + " DwellSegmentationTimeFilter\n", " 1.619728e+09\n", " 2021-04-29 14:23:25-06:00\n", " {'type': 'Point', 'coordinates': [-105.0776309...\n", @@ -1330,14 +1372,14 @@ " 0\n", " 0\n", " 0\n", - " 1\n", " 0\n", " 0\n", " 0\n", " 0\n", + " 1\n", " \n", " \n", - " 3\n", + " 4\n", " DwellSegmentationTimeFilter\n", " 1.619794e+09\n", " 2021-04-30 08:54:03-06:00\n", @@ -1354,85 +1396,61 @@ " 0\n", " 0\n", " 0\n", - " 1\n", - " 0\n", - " 0\n", - " 0\n", " 0\n", - " \n", - " \n", - " 4\n", - " DwellSegmentationTimeFilter\n", - " 1.619807e+09\n", - " 2021-04-30 12:15:42-06:00\n", - " {'type': 'Point', 'coordinates': [-105.1228054...\n", - " 608c8f7fb2d3b88f6947765e\n", - " 1.619805e+09\n", - " 2021-04-30 11:58:07.194775-06:00\n", - " {'type': 'Point', 'coordinates': [-105.0960769...\n", - " 17.580087\n", - " 2855.830523\n", - " ...\n", - " 1\n", - " 1\n", " 0\n", " 0\n", " 0\n", " 1\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", " \n", " \n", "\n", - "

5 rows × 123 columns

\n", + "

5 rows × 121 columns

\n", "" ], "text/plain": [ " source end_ts end_fmt_time \\\n", "0 DwellSegmentationTimeFilter 1.619140e+09 2021-04-22 18:59:39-06:00 \n", "1 DwellSegmentationTimeFilter 1.619197e+09 2021-04-23 11:04:53-06:00 \n", - "2 DwellSegmentationTimeFilter 1.619728e+09 2021-04-29 14:23:25-06:00 \n", - "3 DwellSegmentationTimeFilter 1.619794e+09 2021-04-30 08:54:03-06:00 \n", - "4 DwellSegmentationTimeFilter 1.619807e+09 2021-04-30 12:15:42-06:00 \n", + "2 DwellSegmentationTimeFilter 1.619662e+09 2021-04-28 19:58:51-06:00 \n", + "3 DwellSegmentationTimeFilter 1.619728e+09 2021-04-29 14:23:25-06:00 \n", + "4 DwellSegmentationTimeFilter 1.619794e+09 2021-04-30 08:54:03-06:00 \n", "\n", " end_loc \\\n", "0 {'type': 'Point', 'coordinates': [-105.1002447... \n", "1 {'type': 'Point', 'coordinates': [-105.0776493... \n", - "2 {'type': 'Point', 'coordinates': [-105.0776309... \n", - "3 {'type': 'Point', 'coordinates': [-105.0775022... \n", - "4 {'type': 'Point', 'coordinates': [-105.1228054... \n", + "2 {'type': 'Point', 'coordinates': [-105.0854639... \n", + "3 {'type': 'Point', 'coordinates': [-105.0776309... \n", + "4 {'type': 'Point', 'coordinates': [-105.0775022... \n", "\n", " raw_trip start_ts start_fmt_time \\\n", "0 6082e47f27dcf1f393b70dd8 1.619139e+09 2021-04-22 18:48:48.365291-06:00 \n", "1 60830eac2b9762e085f774e8 1.619196e+09 2021-04-23 10:45:48.219950-06:00 \n", - "2 608b21db654c4a5ab2fa435a 1.619727e+09 2021-04-29 14:05:50.979267-06:00 \n", - "3 608c1f002f548f5db71d16ef 1.619793e+09 2021-04-30 08:34:49.162054-06:00 \n", - "4 608c8f7fb2d3b88f6947765e 1.619805e+09 2021-04-30 11:58:07.194775-06:00 \n", + "2 608adb94b706ddbc669dabb5 1.619658e+09 2021-04-28 19:07:47.510844-06:00 \n", + "3 608b21db654c4a5ab2fa435a 1.619727e+09 2021-04-29 14:05:50.979267-06:00 \n", + "4 608c1f002f548f5db71d16ef 1.619793e+09 2021-04-30 08:34:49.162054-06:00 \n", "\n", " start_loc duration distance \\\n", "0 {'type': 'Point', 'coordinates': [-105.0772567... 10.843912 1995.541857 \n", "1 {'type': 'Point', 'coordinates': [-105.1228294... 19.079667 4764.133777 \n", - "2 {'type': 'Point', 'coordinates': [-105.1228283... 17.567012 4731.604069 \n", - "3 {'type': 'Point', 'coordinates': [-105.1226652... 19.230632 4675.329725 \n", - "4 {'type': 'Point', 'coordinates': [-105.0960769... 17.580087 2855.830523 \n", + "2 {'type': 'Point', 'coordinates': [-105.1227172... 51.058153 9049.744908 \n", + "3 {'type': 'Point', 'coordinates': [-105.1228283... 17.567012 4731.604069 \n", + "4 {'type': 'Point', 'coordinates': [-105.1226652... 19.230632 4675.329725 \n", "\n", - " ... target av_s_micro av_walk av_no_trip av_unknown av_p_micro av_car \\\n", - "0 ... 1 1 0 0 0 1 0 \n", - "1 ... 1 1 0 0 0 1 0 \n", - "2 ... 9 1 0 0 0 1 0 \n", - "3 ... 9 1 0 0 0 1 0 \n", - "4 ... 1 1 0 0 0 1 0 \n", + " ... target av_s_micro av_ridehail av_unknown av_car av_transit av_walk \\\n", + "0 ... 1 1 0 0 0 0 0 \n", + "1 ... 1 1 0 0 0 0 0 \n", + "2 ... 1 1 0 0 0 0 0 \n", + "3 ... 9 1 0 0 0 0 0 \n", + "4 ... 9 1 0 0 0 0 0 \n", "\n", - " av_transit av_s_car av_ridehail \n", - "0 0 0 0 \n", - "1 0 0 0 \n", - "2 0 0 0 \n", - "3 0 0 0 \n", - "4 0 0 0 \n", + " av_s_car av_no_trip av_p_micro \n", + "0 0 0 1 \n", + "1 0 0 1 \n", + "2 0 0 1 \n", + "3 0 0 1 \n", + "4 0 0 1 \n", "\n", - "[5 rows x 123 columns]" + "[5 rows x 121 columns]" ] }, "metadata": {}, @@ -1445,7 +1463,7 @@ }, { "cell_type": "code", - "execution_count": 107, + "execution_count": 34, "metadata": {}, "outputs": [], "source": [ @@ -1482,7 +1500,7 @@ }, { "cell_type": "code", - "execution_count": 108, + "execution_count": 35, "metadata": {}, "outputs": [], "source": [ @@ -1502,7 +1520,7 @@ }, { "cell_type": "code", - "execution_count": 109, + "execution_count": 36, "metadata": {}, "outputs": [], "source": [ @@ -1540,7 +1558,7 @@ " # $1 unlocking cost.\n", " 's_micro': 1.,\n", " # uber/taxi/lyft\n", - " 'ridehail': 1.,\n", + " 'ridehail': 1.5,\n", " 'walk': 0.,\n", " 'unknown': 0.\n", "}" @@ -1548,7 +1566,7 @@ }, { "cell_type": "code", - "execution_count": 110, + "execution_count": 37, "metadata": {}, "outputs": [], "source": [ @@ -1584,7 +1602,7 @@ }, { "cell_type": "code", - "execution_count": 111, + "execution_count": 38, "metadata": {}, "outputs": [], "source": [ @@ -1597,7 +1615,7 @@ }, { "cell_type": "code", - "execution_count": 113, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -1635,25 +1653,25 @@ " \n", " \n", " count\n", - " 46053.0\n", - " 46053.0\n", - " 46053.000000\n", - " 46053.000000\n", - " 46053.000000\n", - " 46053.000000\n", - " 46053.000000\n", - " 46053.0\n", - " 46053.0\n", + " 70136.0\n", + " 70136.0\n", + " 70136.000000\n", + " 70136.000000\n", + " 70136.000000\n", + " 70136.000000\n", + " 70136.000000\n", + " 70136.0\n", + " 70136.0\n", " \n", " \n", " mean\n", " 0.0\n", " 0.0\n", - " 0.759602\n", - " 0.924603\n", - " 1.354917\n", - " 0.399658\n", - " 5.604421\n", + " 1.141106\n", + " 1.377155\n", + " 2.105648\n", + " 0.424135\n", + " 8.499317\n", " 0.0\n", " 0.0\n", " \n", @@ -1661,11 +1679,11 @@ " std\n", " 0.0\n", " 0.0\n", - " 0.811586\n", - " 1.228051\n", - " 1.688835\n", - " 0.770715\n", - " 5.739880\n", + " 2.036475\n", + " 2.882227\n", + " 4.072574\n", + " 1.092019\n", + " 13.763483\n", " 0.0\n", " 0.0\n", " \n", @@ -1685,7 +1703,7 @@ " 25%\n", " 0.0\n", " 0.0\n", - " 0.068502\n", + " 0.072439\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -1697,11 +1715,11 @@ " 50%\n", " 0.0\n", " 0.0\n", - " 0.565642\n", - " 0.508474\n", - " 0.890892\n", + " 0.507384\n", + " 0.414311\n", + " 0.784733\n", " 0.000000\n", - " 4.569688\n", + " 4.668714\n", " 0.0\n", " 0.0\n", " \n", @@ -1709,11 +1727,11 @@ " 75%\n", " 0.0\n", " 0.0\n", - " 1.112221\n", - " 1.361175\n", - " 2.178041\n", + " 1.254198\n", + " 1.419553\n", + " 2.388235\n", " 0.000000\n", - " 8.366328\n", + " 9.727618\n", " 0.0\n", " 0.0\n", " \n", @@ -1721,11 +1739,11 @@ " max\n", " 0.0\n", " 0.0\n", - " 12.867572\n", - " 21.445953\n", - " 25.735143\n", - " 5.351574\n", - " 86.783811\n", + " 22.339306\n", + " 37.232176\n", + " 44.678611\n", + " 23.262930\n", + " 150.428703\n", " 0.0\n", " 0.0\n", " \n", @@ -1735,27 +1753,27 @@ ], "text/plain": [ " cost_p_micro cost_no_trip cost_s_car cost_transit cost_car \\\n", - "count 46053.0 46053.0 46053.000000 46053.000000 46053.000000 \n", - "mean 0.0 0.0 0.759602 0.924603 1.354917 \n", - "std 0.0 0.0 0.811586 1.228051 1.688835 \n", + "count 70136.0 70136.0 70136.000000 70136.000000 70136.000000 \n", + "mean 0.0 0.0 1.141106 1.377155 2.105648 \n", + "std 0.0 0.0 2.036475 2.882227 4.072574 \n", "min 0.0 0.0 0.000000 0.000000 0.000000 \n", - "25% 0.0 0.0 0.068502 0.000000 0.000000 \n", - "50% 0.0 0.0 0.565642 0.508474 0.890892 \n", - "75% 0.0 0.0 1.112221 1.361175 2.178041 \n", - "max 0.0 0.0 12.867572 21.445953 25.735143 \n", + "25% 0.0 0.0 0.072439 0.000000 0.000000 \n", + "50% 0.0 0.0 0.507384 0.414311 0.784733 \n", + "75% 0.0 0.0 1.254198 1.419553 2.388235 \n", + "max 0.0 0.0 22.339306 37.232176 44.678611 \n", "\n", " cost_s_micro cost_ridehail cost_walk cost_unknown \n", - "count 46053.000000 46053.000000 46053.0 46053.0 \n", - "mean 0.399658 5.604421 0.0 0.0 \n", - "std 0.770715 5.739880 0.0 0.0 \n", + "count 70136.000000 70136.000000 70136.0 70136.0 \n", + "mean 0.424135 8.499317 0.0 0.0 \n", + "std 1.092019 13.763483 0.0 0.0 \n", "min 0.000000 0.000000 0.0 0.0 \n", "25% 0.000000 0.000000 0.0 0.0 \n", - "50% 0.000000 4.569688 0.0 0.0 \n", - "75% 0.000000 8.366328 0.0 0.0 \n", - "max 5.351574 86.783811 0.0 0.0 " + "50% 0.000000 4.668714 0.0 0.0 \n", + "75% 0.000000 9.727618 0.0 0.0 \n", + "max 23.262930 150.428703 0.0 0.0 " ] }, - "execution_count": 113, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -1766,7 +1784,7 @@ }, { "cell_type": "code", - "execution_count": 114, + "execution_count": 40, "metadata": {}, "outputs": [], "source": [ @@ -1791,7 +1809,7 @@ }, { "cell_type": "code", - "execution_count": 115, + "execution_count": 41, "metadata": {}, "outputs": [], "source": [ @@ -1805,7 +1823,7 @@ }, { "cell_type": "code", - "execution_count": 116, + "execution_count": 42, "metadata": {}, "outputs": [], "source": [ diff --git a/rm_src/mnl_exploration.ipynb b/rm_src/mnl_exploration.ipynb index dacce32..6518977 100644 --- a/rm_src/mnl_exploration.ipynb +++ b/rm_src/mnl_exploration.ipynb @@ -246,22 +246,57 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "235" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "92383 trips across 235 users\n" + ] } ], "source": [ - "len(expanded_ct.user_id.unique())" + "print(\n", + " \"{n_trips} trips across {n_users} users\".format(\n", + " n_trips=len(expanded_ct.cleaned_trip.unique()),\n", + " n_users=len(expanded_ct.user_id.unique())\n", + " )\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "dates = pd.to_datetime(\n", + " expanded_ct.start_fmt_time, utc=True\n", + ").dt.tz_convert('America/Denver')" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Date range from 2016-08-15 07:59:32.418000-06:00 to 2022-12-30 23:33:27.147785-07:00\n" + ] + } + ], + "source": [ + "print(\n", + " \"Date range from {min_dt} to {max_dt}\".format(\n", + " min_dt=dates.min(),\n", + " max_dt=dates.max()\n", + " )\n", + ")" ] }, { @@ -273,7 +308,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -283,7 +318,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -322,20 +357,9 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/rkulhall/miniconda3/envs/emission/lib/python3.9/site-packages/dateutil/parser/_parser.py:1207: UnknownTimezoneWarning: tzname PDT identified but not understood. Pass `tzinfos` argument in order to correctly return a timezone-aware datetime. In a future version, this will raise an exception.\n", - " warnings.warn(\"tzname {tzname} identified but not understood. \"\n", - "/Users/rkulhall/miniconda3/envs/emission/lib/python3.9/site-packages/dateutil/parser/_parser.py:1207: UnknownTimezoneWarning: tzname PST identified but not understood. Pass `tzinfos` argument in order to correctly return a timezone-aware datetime. In a future version, this will raise an exception.\n", - " warnings.warn(\"tzname {tzname} identified but not understood. \"\n" - ] - } - ], + "outputs": [], "source": [ "survey_data['Timestamp'] = pd.to_datetime(survey_data['Timestamp'])\n", "survey_data['Timestamp'] = survey_data['Timestamp'].dt.tz_localize('America/Los_Angeles', ambiguous='infer')\n", @@ -344,28 +368,16 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(Timestamp('2021-05-23 16:21:52-0600', tz='America/Denver'),\n", - " Timestamp('2022-12-21 06:33:59-0700', tz='America/Denver'))" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "survey_data.Timestamp.min(), survey_data.Timestamp.max()" ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -374,27 +386,16 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(170, 203)" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "len(f_survey.user_id.unique()), len(survey_data.user_id.unique())" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -407,7 +408,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -416,7 +417,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -424,7 +425,7 @@ "\n", "bad_ix = list()\n", "\n", - "# obvious. WFH is not a good feature to include because of its high sparsity.\n", + "# WFH is not a good feature to include because of its high sparsity.\n", "# wfh_mask = f_survey.wfh_days > 7\n", "\n", "# Computed by calculating 99th percentile.\n", @@ -441,7 +442,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -454,16 +455,18 @@ "f_survey['age'] = f_survey.apply(lambda x: compute_age(x), axis=1)\n", "# f_survey.drop(columns=['birth_year'], inplace=True)\n", "\n", - "\n", "# For those who leave it NA, categorize them as 'prefer not to say'.\n", "f_survey.loc[f_survey['has_multiple_jobs'].isna(), 'has_multiple_jobs'] = 'Prefer not to say'\n", "\n", - "\n", "# Fix primary commute mode.\n", + "\n", "f_survey.loc[\n", " f_survey.primary_job_commute_mode.isna(), 'primary_job_commute_mode'\n", "] = 'Unknown'\n", "\n", + "# Remove all leading and trailing whitespace.\n", + "f_survey.primary_job_commute_mode = f_survey.primary_job_commute_mode.str.strip()\n", + "\n", "f_survey.loc[\n", " f_survey.primary_job_commute_mode.isin([\n", " 'Car', 'SUV', 'Pickup truck', 'Taxi/Limo (including services like Uber or Lyft)', 'Van',\n", @@ -498,25 +501,32 @@ "# Fix primary job type\n", "f_survey.loc[f_survey.primary_job_type.isna(), 'primary_job_type'] = 'Prefer not to say'\n", "\n", - "# Normalize the job description. Inspired from the 'e-bike trips by occupation' graph.\n", + "# Remove whitespace.\n", + "f_survey.primary_job_description = f_survey.primary_job_description.str.strip()\n", + "\n", + "# Normalize the job description. Inspired from the 'e-bike trips by occupation' \n", + "# plot in the CanBikeCo full pilot paper.\n", "f_survey.loc[\n", " f_survey.primary_job_description.isin([\n", - " 'Paraprofessional ', 'Education ', 'education/early childhood', 'Teacher',\n", - " 'Education non-profit manager', 'Scientific research'\n", - " ]), 'primary_job_description', \n", + " 'Paraprofessional', 'Education', 'education/early childhood', 'Teacher',\n", + " 'Education non-profit manager', 'Scientific research', 'Research',\n", + " 'Preschool Tracher'\n", + " ]), 'primary_job_description'\n", "] = 'Education'\n", "\n", "f_survey.loc[\n", " f_survey.primary_job_description.isin([\n", - " 'Custodian', 'Custodial ', 'Csu custodian ', 'Janitorial '\n", + " 'Custodian', 'Custodial', 'Csu custodian', 'Janitorial',\n", + " 'Custodial Maintanace'\n", " ]), 'primary_job_description'\n", "] = 'Custodial'\n", "\n", "f_survey.loc[\n", " f_survey.primary_job_description.isin([\n", - " 'Inbound cs', 'Accounting Technician ', \n", + " 'Inbound cs', 'Accounting Technician', \n", + " 'Clerical'\n", " ]), 'primary_job_description'\n", - "] = 'Clerical'\n", + "] = 'Clerical or administrative support'\n", "\n", "f_survey.loc[\n", " f_survey.primary_job_description.isin([\n", @@ -527,7 +537,7 @@ "f_survey.loc[\n", " f_survey.primary_job_description.isin([\n", " 'Pastry chef and line cook', 'Cook', 'Chef', 'Dining Services',\n", - " 'Food Service', 'Cooking ', 'Residential Dining Services'\n", + " 'Food Service', 'Cooking', 'Residential Dining Services', 'Line Cook'\n", " ]), 'primary_job_description'\n", "] = 'Food service'\n", "\n", @@ -535,19 +545,20 @@ " f_survey.primary_job_description.isin([\n", " 'CNA', 'Caregiver/ Qmap', 'Health care', 'Nurse',\n", " 'Healthcare', 'Medical', 'Medical field',\n", - " 'Family support '\n", + " 'Family support'\n", " ]), 'primary_job_description'\n", "] = 'Medical/healthcare'\n", "\n", "f_survey.loc[\n", " f_survey.primary_job_description.isin([\n", - " 'Amazon ', 'Hockey rink ', 'Caregiver', 'Security', 'Nonprofit social work '\n", + " 'Amazon', 'Hockey rink', 'Caregiver', 'Security', 'Nonprofit social work',\n", + " 'Therapeutic', 'Driver'\n", " ]), 'primary_job_description'\n", "] = 'Other'\n", "\n", "f_survey.loc[\n", " f_survey.primary_job_description.isin([\n", - " 'Hospital laundry', 'Maintenance ', 'Matreal handler',\n", + " 'Hospital laundry', 'Matreal handler', 'Maintenance',\n", " 'Co op laundry'\n", " ]), 'primary_job_description'\n", "] = 'Manufacturing, construction, maintenance, or farming'\n", @@ -557,7 +568,16 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "f_survey.primary_job_description.unique()" + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -567,7 +587,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -580,7 +600,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -592,7 +612,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -607,44 +627,16 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Timestamp 0\n", - "user_id 0\n", - "birth_year 0\n", - "gender 0\n", - "has_drivers_license 0\n", - "highest_education 0\n", - "has_multiple_jobs 0\n", - "primary_job_type 0\n", - "primary_job_description 0\n", - "primary_job_commute_mode 0\n", - "primary_job_commute_time 0\n", - "income_category 0\n", - "n_residence_members 0\n", - "n_residents_u18 0\n", - "n_residents_with_license 0\n", - "n_motor_vehicles 0\n", - "available_modes 0\n", - "age 0\n", - "dtype: int64" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "display(f_survey.isna().sum())" ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -670,88 +662,25 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Sales or service 47\n", - "Professional, managerial, or technical 37\n", - "Manufacturing, construction, maintenance, or farming 17\n", - "Clerical or administrative support 17\n", - "Other 13\n", - "Education 9\n", - "Food service 8\n", - "Medical/healthcare 8\n", - "Custodial 7\n", - "Clerical 2\n", - "Maintenance 1\n", - "Name: primary_job_description, dtype: int64" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "f_survey.primary_job_description.value_counts()" ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Int64Index: 166 entries, 0 to 169\n", - "Data columns (total 18 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 Timestamp 166 non-null datetime64[ns, America/Denver]\n", - " 1 user_id 166 non-null object \n", - " 2 birth_year 166 non-null int64 \n", - " 3 gender 166 non-null object \n", - " 4 has_drivers_license 166 non-null object \n", - " 5 highest_education 166 non-null object \n", - " 6 has_multiple_jobs 166 non-null object \n", - " 7 primary_job_type 166 non-null object \n", - " 8 primary_job_description 166 non-null object \n", - " 9 primary_job_commute_mode 166 non-null object \n", - " 10 primary_job_commute_time 166 non-null float64 \n", - " 11 income_category 166 non-null int64 \n", - " 12 n_residence_members 166 non-null int64 \n", - " 13 n_residents_u18 166 non-null int64 \n", - " 14 n_residents_with_license 166 non-null int64 \n", - " 15 n_motor_vehicles 166 non-null int64 \n", - " 16 available_modes 166 non-null object \n", - " 17 age 166 non-null int64 \n", - "dtypes: datetime64[ns, America/Denver](1), float64(1), int64(7), object(9)\n", - "memory usage: 24.6+ KB\n" - ] - }, - { - "data": { - "text/plain": [ - "None" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "display(f_survey.info())" ] }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -769,7 +698,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -787,88 +716,16 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Int64Index: 166 entries, 0 to 169\n", - "Data columns (total 49 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 Timestamp 166 non-null datetime64[ns, America/Denver]\n", - " 1 user_id 166 non-null object \n", - " 2 birth_year 166 non-null int64 \n", - " 3 primary_job_commute_time 166 non-null float64 \n", - " 4 income_category 166 non-null int64 \n", - " 5 n_residence_members 166 non-null int64 \n", - " 6 n_residents_u18 166 non-null int64 \n", - " 7 n_residents_with_license 166 non-null int64 \n", - " 8 n_motor_vehicles 166 non-null int64 \n", - " 9 available_modes 166 non-null object \n", - " 10 age 166 non-null int64 \n", - " 11 gender_Man 166 non-null float64 \n", - " 12 gender_Man;Nonbinary/genderqueer/genderfluid 166 non-null float64 \n", - " 13 gender_Nonbinary/genderqueer/genderfluid 166 non-null float64 \n", - " 14 gender_Prefer not to say 166 non-null float64 \n", - " 15 gender_Woman 166 non-null float64 \n", - " 16 gender_Woman;Nonbinary/genderqueer/genderfluid 166 non-null float64 \n", - " 17 has_drivers_license_No 166 non-null float64 \n", - " 18 has_drivers_license_Prefer not to say 166 non-null float64 \n", - " 19 has_drivers_license_Yes 166 non-null float64 \n", - " 20 has_multiple_jobs_No 166 non-null float64 \n", - " 21 has_multiple_jobs_Prefer not to say 166 non-null float64 \n", - " 22 has_multiple_jobs_Yes 166 non-null float64 \n", - " 23 highest_education_Bachelor's degree 166 non-null float64 \n", - " 24 highest_education_Graduate degree or professional degree 166 non-null float64 \n", - " 25 highest_education_High school graduate or GED 166 non-null float64 \n", - " 26 highest_education_Less than a high school graduate 166 non-null float64 \n", - " 27 highest_education_Prefer not to say 166 non-null float64 \n", - " 28 highest_education_Some college or associates degree 166 non-null float64 \n", - " 29 primary_job_type_Full-time 166 non-null float64 \n", - " 30 primary_job_type_Part-time 166 non-null float64 \n", - " 31 primary_job_type_Prefer not to say 166 non-null float64 \n", - " 32 primary_job_description_Clerical 166 non-null float64 \n", - " 33 primary_job_description_Clerical or administrative support 166 non-null float64 \n", - " 34 primary_job_description_Custodial 166 non-null float64 \n", - " 35 primary_job_description_Education 166 non-null float64 \n", - " 36 primary_job_description_Food service 166 non-null float64 \n", - " 37 primary_job_description_Maintenance 166 non-null float64 \n", - " 38 primary_job_description_Manufacturing, construction, maintenance, or farming 166 non-null float64 \n", - " 39 primary_job_description_Medical/healthcare 166 non-null float64 \n", - " 40 primary_job_description_Other 166 non-null float64 \n", - " 41 primary_job_description_Professional, managerial, or technical 166 non-null float64 \n", - " 42 primary_job_description_Sales or service 166 non-null float64 \n", - " 43 primary_job_commute_mode_Active transport 166 non-null float64 \n", - " 44 primary_job_commute_mode_Car transport 166 non-null float64 \n", - " 45 primary_job_commute_mode_Hybrid 166 non-null float64 \n", - " 46 primary_job_commute_mode_Public transport 166 non-null float64 \n", - " 47 primary_job_commute_mode_Unknown 166 non-null float64 \n", - " 48 primary_job_commute_mode_WFH 166 non-null float64 \n", - "dtypes: datetime64[ns, America/Denver](1), float64(39), int64(7), object(2)\n", - "memory usage: 68.9+ KB\n" - ] - }, - { - "data": { - "text/plain": [ - "None" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "display(f_survey.info())" ] }, { "cell_type": "code", - "execution_count": 35, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -898,41 +755,13 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "Could not interpret value `primary_job_commute_mode` for parameter `y`", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[36], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mplot_survey_distribution\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 2\u001b[0m \u001b[43m \u001b[49m\u001b[43mf_survey\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mincome_category\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mn_motor_vehicles\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mprimary_job_commute_mode\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\n\u001b[1;32m 3\u001b[0m \u001b[43m)\u001b[49m\n", - "Cell \u001b[0;32mIn[35], line 18\u001b[0m, in \u001b[0;36mplot_survey_distribution\u001b[0;34m(df, feature_names)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m ix, ax \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(axes\u001b[38;5;241m.\u001b[39mflatten()):\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m ix \u001b[38;5;241m<\u001b[39m n:\n\u001b[0;32m---> 18\u001b[0m \u001b[43msns\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhistplot\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfeature_names\u001b[49m\u001b[43m[\u001b[49m\u001b[43mix\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43max\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43max\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 20\u001b[0m ax\u001b[38;5;241m.\u001b[39mset_axis_off()\n", - "File \u001b[0;32m~/miniconda3/envs/emission/lib/python3.9/site-packages/seaborn/distributions.py:1395\u001b[0m, in \u001b[0;36mhistplot\u001b[0;34m(data, x, y, hue, weights, stat, bins, binwidth, binrange, discrete, cumulative, common_bins, common_norm, multiple, element, fill, shrink, kde, kde_kws, line_kws, thresh, pthresh, pmax, cbar, cbar_ax, cbar_kws, palette, hue_order, hue_norm, color, log_scale, legend, ax, **kwargs)\u001b[0m\n\u001b[1;32m 1374\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mhistplot\u001b[39m(\n\u001b[1;32m 1375\u001b[0m data\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;241m*\u001b[39m,\n\u001b[1;32m 1376\u001b[0m \u001b[38;5;66;03m# Vector variables\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1392\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[1;32m 1393\u001b[0m ):\n\u001b[0;32m-> 1395\u001b[0m p \u001b[38;5;241m=\u001b[39m \u001b[43m_DistributionPlotter\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1396\u001b[0m \u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1397\u001b[0m \u001b[43m \u001b[49m\u001b[43mvariables\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m_DistributionPlotter\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_semantics\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mlocals\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1398\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1400\u001b[0m p\u001b[38;5;241m.\u001b[39mmap_hue(palette\u001b[38;5;241m=\u001b[39mpalette, order\u001b[38;5;241m=\u001b[39mhue_order, norm\u001b[38;5;241m=\u001b[39mhue_norm)\n\u001b[1;32m 1402\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m ax \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", - "File \u001b[0;32m~/miniconda3/envs/emission/lib/python3.9/site-packages/seaborn/distributions.py:113\u001b[0m, in \u001b[0;36m_DistributionPlotter.__init__\u001b[0;34m(self, data, variables)\u001b[0m\n\u001b[1;32m 107\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\n\u001b[1;32m 108\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 109\u001b[0m data\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 110\u001b[0m variables\u001b[38;5;241m=\u001b[39m{},\n\u001b[1;32m 111\u001b[0m ):\n\u001b[0;32m--> 113\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvariables\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mvariables\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/miniconda3/envs/emission/lib/python3.9/site-packages/seaborn/_oldcore.py:640\u001b[0m, in \u001b[0;36mVectorPlotter.__init__\u001b[0;34m(self, data, variables)\u001b[0m\n\u001b[1;32m 635\u001b[0m \u001b[38;5;66;03m# var_ordered is relevant only for categorical axis variables, and may\u001b[39;00m\n\u001b[1;32m 636\u001b[0m \u001b[38;5;66;03m# be better handled by an internal axis information object that tracks\u001b[39;00m\n\u001b[1;32m 637\u001b[0m \u001b[38;5;66;03m# such information and is set up by the scale_* methods. The analogous\u001b[39;00m\n\u001b[1;32m 638\u001b[0m \u001b[38;5;66;03m# information for numeric axes would be information about log scales.\u001b[39;00m\n\u001b[1;32m 639\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_var_ordered \u001b[38;5;241m=\u001b[39m {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mx\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;28;01mFalse\u001b[39;00m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124my\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;28;01mFalse\u001b[39;00m} \u001b[38;5;66;03m# alt., used DefaultDict\u001b[39;00m\n\u001b[0;32m--> 640\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43massign_variables\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvariables\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 642\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m var, \u001b[38;5;28mcls\u001b[39m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_semantic_mappings\u001b[38;5;241m.\u001b[39mitems():\n\u001b[1;32m 643\u001b[0m \n\u001b[1;32m 644\u001b[0m \u001b[38;5;66;03m# Create the mapping function\u001b[39;00m\n\u001b[1;32m 645\u001b[0m map_func \u001b[38;5;241m=\u001b[39m partial(\u001b[38;5;28mcls\u001b[39m\u001b[38;5;241m.\u001b[39mmap, plotter\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m)\n", - "File \u001b[0;32m~/miniconda3/envs/emission/lib/python3.9/site-packages/seaborn/_oldcore.py:701\u001b[0m, in \u001b[0;36mVectorPlotter.assign_variables\u001b[0;34m(self, data, variables)\u001b[0m\n\u001b[1;32m 699\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 700\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minput_format \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlong\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m--> 701\u001b[0m plot_data, variables \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_assign_variables_longform\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 702\u001b[0m \u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mvariables\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 703\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 705\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mplot_data \u001b[38;5;241m=\u001b[39m plot_data\n\u001b[1;32m 706\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mvariables \u001b[38;5;241m=\u001b[39m variables\n", - "File \u001b[0;32m~/miniconda3/envs/emission/lib/python3.9/site-packages/seaborn/_oldcore.py:938\u001b[0m, in \u001b[0;36mVectorPlotter._assign_variables_longform\u001b[0;34m(self, data, **kwargs)\u001b[0m\n\u001b[1;32m 933\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(val, (\u001b[38;5;28mstr\u001b[39m, \u001b[38;5;28mbytes\u001b[39m)):\n\u001b[1;32m 934\u001b[0m \n\u001b[1;32m 935\u001b[0m \u001b[38;5;66;03m# This looks like a column name but we don't know what it means!\u001b[39;00m\n\u001b[1;32m 937\u001b[0m err \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCould not interpret value `\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mval\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m` for parameter `\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mkey\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m`\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m--> 938\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(err)\n\u001b[1;32m 940\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 941\u001b[0m \n\u001b[1;32m 942\u001b[0m \u001b[38;5;66;03m# Otherwise, assume the value is itself data\u001b[39;00m\n\u001b[1;32m 943\u001b[0m \n\u001b[1;32m 944\u001b[0m \u001b[38;5;66;03m# Raise when data object is present and a vector can't matched\u001b[39;00m\n\u001b[1;32m 945\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(data, pd\u001b[38;5;241m.\u001b[39mDataFrame) \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(val, pd\u001b[38;5;241m.\u001b[39mSeries):\n", - "\u001b[0;31mValueError\u001b[0m: Could not interpret value `primary_job_commute_mode` for parameter `y`" - ] - }, - { - "data": { - "image/png": "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xenIkSMyDEMrV660xI0HOnbsqJ49e5pdBgBUm0cXdt16661avny5/v3vf9e6gAMHDigyMlIxMTG65557dOjQoSq3LS0tldPpdHsAgNk2b96svn37SpLWrl0rwzB08uRJzZ07Vy+88ILJ1QGAf/IoxMbGxurJJ59U69at9fDDD+vTTz/16MNvuukmLV++XB9++KEWLVqkwsJC9e7dWydOnKh0+9TUVDkcDteDtQ0B1AclJSVq3ry5JGnDhg2666671LhxY91xxx06cOCAydUBgH/yKMTOnDnTdYXsd999p379+qlz586aMWOGjh8/Xu33GTJkiO666y5169ZNAwcO1Pvvvy9JevPNNyvdPiUlRSUlJa5Hfn6+J+UDgFdFRUVp+/btOnPmjDZs2OC6FewPP/ygoKAgk6sDAP/k8TmxDRs21J133qk777xT3333nRYsWKDf//73mjJlioYOHaqkpCTdfvvtNXrPJk2aqFu3blUeuahqke4fvz+uRkGNPZqHdPGOXQDgqYkTJ+q+++5T06ZNFR0drVtvvVXSxdMMunXrZm5xAOCnan1h1+eff66lS5fqnXfeUatWrTRmzBgVFBRo2LBheuSRRzRjxoxqv1dpaalyc3Nd55ZV19Z5T9W07ApCQkPlcDhq/T4ArjyPPvqobrzxRuXn52vQoEFq0ODiL7nat2/PObEAUEc8CrFFRUX685//rKVLl+rAgQMaNmyYVq5cqcGDB7vu13333XdrxIgRlwyxkydP1rBhwxQdHa2ioiK98MILcjqdGj16dI3qWbduXZX3Fa8uh8PBmn0APBYXF6fu3bvr8OHD6tChgwICAnTHHXeYXRYA+C2PQmybNm3UoUMHPfDAAxozZoxatmxZYZsbb7xRvXr1uuT7fPvtt/rNb36j4uJitWzZUjfffLM+/fRTtW3btkb1REVFqUOHDjXaBwC85ccff9Rjjz3mOp//66+/Vvv27ZWUlKTIyEg9/fTTJlcIAP6nxiHWMAx99NFHiouLU+PGVZ+HGhoaqo8//viS77Vy5cqafjwA1DspKSn64osvlJGRoZ///Oeu8YEDB2ratGmEWACoAzVencAwDA0cOFDHjh2ri3oAwHLee+89vfbaa7rllltcp1RJUufOnXXw4EETKwMA/1XjENugQQNdc801Va7lCgBXmu+++06tWrWqMH7mzBm3UAsA8B6P1ol95ZVX9MQTT+jLL7/0dj0AYDm9evVyrXMtyRVcFy1apPj4eLPKAgC/5tGFXb/97W/1448/6vrrr1dgYKCCg4PdXv/++++9UhwAWEFqaqp+/vOfa9++fTp//rzmzJmjvXv3avv27crMzDS7PADwSx6F2NmzZ3u5DACwrt69e+uTTz7RjBkz1KFDB23cuFE9e/bU9u3budkBANQRj0JsTddxBQB/161btypvmQ0A8D6P79hVVlam9957T7m5ubLZbOrcubOGDx+uhg0berM+AKiXnE5ntbcNDQ2tw0oA4MrkUYj95ptvNHToUB07dkwdO3aUYRj6+uuvFRUVpffff58bDwDwe82aNbvsygOGYchms6msrMxHVQHAlcOjEJuUlKQOHTro008/VfPmzSVJJ06c0G9/+1slJSW5XaULAP7ocjdzAQDULY9CbGZmpluAlaQWLVropZdeUp8+fbxWHADUV/379ze7BAC4onm0TqzdbtepU6cqjJ8+fVqBgYG1LgoArGTp0qV69913K4y/++67XOwFAHXEoxD7i1/8Qr/73e/02WefyTAMGYahTz/9VImJiRo+fLi3awSAeu2ll15SWFhYhfFWrVrpD3/4gwkVAYD/8yjEzp07Vx06dFB8fLyCgoIUFBSkPn366Oqrr9acOXO8XSMA1GtHjx5VTExMhfG2bdsqLy+v2u+TmpqqXr16KSQkRK1atdKIESO0f//+S+6TkZEhm81W4fHVV1/VeB4AYCUenRPbrFkz/e1vf9OBAwf01VdfyTAMde7cWVdffbW36wOAeq9Vq1bavXu32rVr5zb+xRdfqEWLFtV+n8zMTI0bN069evXS+fPnNXXqVCUkJGjfvn1q0qTJJffdv3+/21JeLVu2rNEcGjTw6JgGAJjG43ViJemaa67RNddc461aAMCS7rnnHiUlJSkkJET9+vWTdDGQTpgwQffcc0+132fDhg1uz5cuXapWrVopKyvL9b5VadWqlZo1a3bZzygtLVVpaanrefl6txcuXKh2nQBQH3gUYpOTkysdt9lsCgoK0tVXX60777zTbfUCAPBXL7zwgo4ePaoBAwYoIOBiW71w4YJGjRpVq3NiS0pKJKlavbRHjx766aef1LlzZ/3f//2fbrvttkq3S01N1fTp0z2uCQDqC5thGEZNd7rtttu0a9culZWVuW52cODA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8wOA6goObqyvvsqtdpCtTh/1hEfnxC5dutRrBXhDVFRUtZf2AgBvCw0N1datW/XPf/5Tu3bt0oULF9SzZ08NHDjQ7NKqLfa3T6t5245mlwGgnnMWHNFnS6aruLjY9KOxHoVY6eKFDO+++67y8vJ09uxZt9fWrFlT68IAwCqOHDmidu3a6fbbb9ftt99udjkeCW0drebRhFgA1uHRElsrV65Unz59tG/fPq1du1bnzp3Tvn379M9//pNfSwG44rRv31633HKLFixY4LrRAQCgbnkUYv/whz/oj3/8o/7xj38oMDBQc+bMUW5uru6++27TDy0DgK/t3LlT8fHxeuGFFxQZGak777xT7777rkpLS80uDQD8lkch9uDBg7rjjjskXbyL1pkzZ2Sz2TRp0iQtXLjQqwUCQH3Xs2dPvfrqq8rLy9MHH3ygVq1a6X//93/VqlUrPfDAA2aXBwB+yaMQ27x5c506dUrSxcW8v/zyS0kX7x3+448/eq86ALAQm82m2267TYsWLdJHH32k9u3b68033zS7LADwSx6F2L59+yo9PV2SdPfdd2vChAl6+OGH9Zvf/EYDBgzwaoEAYBX5+fl65ZVXdMMNN6hXr15q0qSJXnvtNbPLAgC/5FGIfe2113TPPfdIklJSUjR58mQdP35cv/rVr7R48WKvFggA9d3ChQvVv39/xcTE6M0339Tdd9+tgwcPauvWrXrkkUeq/T6pqanq1auXQkJC1KpVK40YMUL79++/7H6ZmZmKjY1VUFCQ2rdvr/nz59dmOgBgCR4tsdW8eXPXfzdo0EBPPvmknnzySa8VBQBW8vzzz+uee+7RnDlzanXr7czMTI0bN069evXS+fPnNXXqVCUkJGjfvn1V3jDh8OHDGjp0qB5++GGtWLFCn3zyiR599FG1bNnSMncLAwBPeBRi169fr4YNG2rw4MFu4xs3blRZWZmGDBnileIAwAry8vJks9kuu92jjz6q5557rsq7AW7YsMHt+dKlS9WqVStlZWWpX79+le4zf/58RUdHa/bs2ZKkTp06aefOnZoxY0alIba0tNRt1QSn03nZugGgPvLodIKnn35aZWVlFcYvXLigp59+utZFAYCVVCfAStKKFStqFBpLSkokuf/2679t375dCQkJbmODBw/Wzp07de7cuQrbp6amyuFwuB5RUVHVrgcA6hOPQuyB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Pj5eH3zwgev1+l7/f7Pq3wfPPvusbDab26N169au160wB68wLGrlypVGo0aNjEWLFhn79u0zJkyYYDRp0sQ4evSo2aX53ODBg42lS5caX375pZGTk2PccccdRnR0tHH69GnXNi+99JIREhJirF692tizZ48xcuRIIyIiwnA6nSZW7nuff/650a5dO6N79+7GhAkTXONX+vfz/fffG23btjXGjBljfPbZZ8bhw4eNjz76yPjmm29c21zp35E/slofXb9+vTF16lRj9erVhiRj7dq1bq/X959Rf+jV69atM95//31j//79xv79+40pU6YYjRo1Mr788kvDMOp//f/Jyn8fTJs2zejSpYtRUFDgehQVFblet8IcvMGyIfbGG280EhMT3cauu+464+mnnzapovqjqKjIkGRkZmYahmEYFy5cMFq3bm289NJLrm1++uknw+FwGPPnzzerTJ87deqUcc011xjp6elG//79XU2L78cwnnrqKeOWW26p8nW+I/9k5T763yHWij+j/tKrf/aznxlvvPGGpeq3+t8H06ZNM66//vpKX7PKHLzBkqcTnD17VllZWUpISHAbT0hI0LZt20yqqv4oKSmRJDVv3lySdPjwYRUWFrp9X3a7Xf3797+ivq9x48bpjjvu0MCBA93G+X6kdevWKS4uTr/+9a/VqlUr9ejRQ4sWLXK9znfkf/ytj1rxZ9TqvbqsrEwrV67UmTNnFB8fb6n6/eHvgwMHDigyMlIxMTG65557dOjQIUnWmkNtWTLEFhcXq6ysTOHh4W7j4eHhKiwsNKmq+sEwDCUnJ+uWW25R165dJcn1nVzJ39fKlSu1a9cupaamVniN70c6dOiQ0tLSdM011+jDDz9UYmKikpKStHz5ckl8R/7I3/qo1X5Grdyr9+zZo6ZNm8putysxMVFr165V586dLVO/P/x9cNNNN2n58uX68MMPtWjRIhUWFqp37946ceKEZebgDQFmF1AbNpvN7blhGBXGrjTjx4/X7t27tXXr1gqvXanfV35+viZMmKCNGzcqKCioyu2u1O9Hki5cuKC4uDj94Q9/kCT16NFDe/fuVVpamkaNGuXa7kr+jvyVv/2ZWmU+Vu7VHTt2VE5Ojk6ePKnVq1dr9OjRyszMdL1en+v3l78PhgwZ4vrvbt26KT4+Xh06dNCbb76pm2++WVL9n4M3WPJI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YmKijh49quTkZOXm5mrJkiVavHixJk+eXO3PtNvtmjZtWqW/GvMX/j5H5md9/j5HX8/P173U3//8JP+fo7/PT/L/OTI/D3nzKrHXX3/daNu2rREYGGj07NnTyMzMdL02evRoo3///m7bZ2RkGD169DACAwONdu3aGWlpad4sBwAsiV4KAJfntXViAQAAAF/x3eW2AAAAgJcQYgEAAGA5hFgAAABYDiEWAAAAllPvQ+y8efMUExOjoKAgxcbGasuWLZfcPjMzU7GxsQoKClL79u01f/58H1XqmZrMb82aNRo0aJBatmyp0NBQxcfH68MPP/RhtZ6p6Z9huU8++UQBAQG64YYb6rbAWqrp/EpLSzV16lS1bdtWdrtdHTp00JIlS3xUrWdqOse33npL119/vRo3bqyIiAiNHTtWJ06c8FG1NbN582YNGzZMkZGRstlseu+99y67jz/3Gcl685P8v5fSR93RR+sX0/qo2csjXMrKlSuNRo0aGYsWLTL27dtnTJgwwWjSpIlx9OjRSrc/dOiQ0bhxY2PChAnGvn37jEWLFhmNGjUy/vrXv/q48uqp6fwmTJhgvPzyy8bnn39ufP3110ZKSorRqFEjY9euXT6uvPpqOsdyJ0+eNNq3b28kJCQY119/vW+K9YAn8xs+fLhx0003Genp6cbhw4eNzz77zPjkk098WHXN1HSOW7ZsMRo0aGDMmTPHOHTokLFlyxajS5cuxogRI3xcefWsX7/emDp1qrF69WpDkrF27dpLbu/vfcZq8zMM/++l9NGK6KP1i1l9tF6H2BtvvNFITEx0G7vuuuuMp59+utLtn3zySeO6665zG/vf//1f4+abb66zGmujpvOrTOfOnY3p06d7uzSv8XSOI0eONP7v//7PmDZtWr1uvjWd3wcffGA4HA7jxIkTvijPK2o6x1dffdVo376929jcuXONNm3a1FmN3lKd5uvvfcZq8zMM/++l9FF39NH6zZd9tN6eTnD27FllZWUpISHBbTwhIUHbtm2rdJ/t27dX2H7w4MHauXOnzp07V2e1esKT+f23Cxcu6NSpU2revHldlFhrns5x6dKlOnjwoKZNm1bXJdaKJ/Nbt26d4uLi9Morr+iqq67Stddeq8mTJ+vf//63L0quMU/m2Lt3b3377bdav369DMPQ8ePH9de//lV33HGHL0quc/7eZ6w0P8n/eyl9tCL6qPV5q88EeLswbykuLlZZWZnCw8PdxsPDw1VYWFjpPoWFhZVuf/78eRUXFysiIqLO6q0pT+b332bOnKkzZ87o7rvvrosSa82TOR44cEBPP/20tmzZooCAevvjKcmz+R06dEhbt25VUFCQ1q5dq+LiYj366KP6/vvv6+X5XJ7MsXfv3nrrrbc0cuRI/fTTTzp//ryGDx+uP/3pT74ouc75e5+x0vwk/++l9NGK6KPW560+U2+PxJaz2Wxuzw3DqDB2ue0rG68vajq/cu+8846effZZrVq1Sq1ataqr8ryiunMsKyvTvffeq+nTp+vaa6/1VXm1VpM/wwsXLshms+mtt97SjTfeqKFDh2rWrFlatmxZvT2KINVsjvv27VNSUpKeeeYZZWVlacOGDTp8+LASExN9UapP+Hufsdr8JP/vpfTR/48+6h+80Wfq7T/RwsLC1LBhwwr/SikqKqqQ3su1bt260u0DAgLUokWLOqvVE57Mr9yqVav04IMP6t1339XAgQPrssxaqekcT506pZ07dyo7O1vjx4+XdLFZGYahgIAAbdy4UbfffrtPaq8OT/4MIyIidNVVV8nhcLjGOnXqJMMw9O233+qaa66p05prypM5pqamqk+fPnriiSckSd27d1eTJk3Ut29fvfDCC/XuSF5N+XufsdL8JP/vpfTRiuij9NFy9fZIbGBgoGJjY5Wenu42np6ert69e1e6T3x8fIXtN27cqLi4ODVq1KjOavWEJ/OTLh41GDNmjN5+++16f25MTecYGhqqPXv2KCcnx/VITExUx44dlZOTo5tuuslXpVeLJ3+Gffr00b/+9S+dPn3aNfb111+rQYMGatOmTZ3W6wlP5vjjjz+qQQP31tKwYUNJ//9f2lbm733GSvOT/L+X0kcroo/SR11qdBmYj5UvSbF48WJj3759xsSJE40mTZoYR44cMQzDMJ5++mnj/vvvd21fvmTDpEmTjH379hmLFy+u10vD1HR+b7/9thEQEGC8/vrrRkFBgetx8uRJs6ZwWTWd43+r71fV1nR+p06dMtq0aWP8z//8j7F3714jMzPTuOaaa4yHHnrIrClcVk3nuHTpUiMgIMCYN2+ecfDgQWPr1q1GXFycceONN5o1hUs6deqUkZ2dbWRnZxuSjFmzZhnZ2dmupW+utD5jtfkZhv/3UvoofZQ+Wrl6HWINwzBef/11o23btkZgYKDRs2dPIzMz0/Xa6NGjjf79+7ttn5GRYfTo0cMIDAw02rVrZ6Slpfm44pqpyfz69+9vSKrwGD16tO8Lr4Ga/hn+p/refA2j5vPLzc01Bg4caAQHBxtt2rQxkpOTjR9//NHHVddMTec4d+5co3PnzkZwcLARERFh3Hfffca3337r46qr5+OPP77k/1dXWp8xDOvNzzD8v5fSR/u7bU8frV/M6qM2w/CD49IAAAC4otTbc2IBAACAqhBiAQAAYDmEWAAAAFgOIRYAAACWQ4gFAACA5RBiAQAAYDmEWAAAAFgOIRYAAACWQ4gFAACA5RBiAQAAYDmEWAAAAFjO/wPWcNcHKFhz5AAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "plot_survey_distribution(\n", - " f_survey, ['income_category', 'n_motor_vehicles', 'primary_job_commute_mode']\n", - ")" + "# plot_survey_distribution(\n", + "# f_survey, ['income_category', 'n_motor_vehicles', 'primary_job_commute_mode']\n", + "# )" ] }, { @@ -953,7 +782,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -967,7 +796,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -978,24 +807,16 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2016-08-15 07:59:32.418000-06:00 2022-12-30 23:33:27.147785-07:00\n" - ] - } - ], + "outputs": [], "source": [ "print(denver_data.start_fmt_time.min(), denver_data.start_fmt_time.max())" ] }, { "cell_type": "code", - "execution_count": 40, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1026,7 +847,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1040,24 +861,16 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "166\n" - ] - } - ], + "outputs": [], "source": [ - "print(len(merged_data.user_id.unique()))" + "print(len(denver_data.user_id.unique()), len(merged_data.user_id.unique()))" ] }, { "cell_type": "code", - "execution_count": 43, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1084,7 +897,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1112,7 +925,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1160,7 +973,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1209,282 +1022,16 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
sourceend_tsend_fmt_timeend_locraw_tripstart_tsstart_fmt_timestart_locdurationdistance...primary_job_commute_mode_Hybridprimary_job_commute_mode_Public transportprimary_job_commute_mode_Unknownprimary_job_commute_mode_WFHis_overnight_tripn_working_residentsstart_latstart_lngend_latend_lng
0DwellSegmentationDistFilter1.629238e+092021-08-17 16:02:26.493017-06:00{'type': 'Point', 'coordinates': [-71.08788681...611c350df3bfdd5663c34e521.629237e+092021-08-17 15:51:32.998732-06:00{'type': 'Point', 'coordinates': [-71.11831245...10.8915712700.231495...0.00.01.00.00342.351336-71.11831242.347875-71.087887
1DwellSegmentationDistFilter1.645386e+092022-02-20 12:32:43.451677-07:00{'type': 'Point', 'coordinates': [-111.9450490...6212ce379106a670c421b8881.645383e+092022-02-20 11:58:02.051102-07:00{'type': 'Point', 'coordinates': [-111.9167906...34.69001018093.352854...0.00.01.00.00333.595163-111.91679133.461827-111.945049
2DwellSegmentationDistFilter1.645391e+092022-02-20 14:07:17.998778-07:00{'type': 'Point', 'coordinates': [-111.9440840...6212ce459106a670c421b88c1.645388e+092022-02-20 13:20:30.462982-07:00{'type': 'Point', 'coordinates': [-111.9437005...46.792263984.681194...0.00.01.00.00333.461366-111.94370133.460592-111.944084
3DwellSegmentationDistFilter1.645397e+092022-02-20 15:35:51.018136-07:00{'type': 'Point', 'coordinates': [-111.9448744...6212ce459106a670c421b88e1.645397e+092022-02-20 15:35:16.506669-07:00{'type': 'Point', 'coordinates': [-111.9440840...0.575191183.932256...0.00.01.00.00333.460592-111.94408433.462015-111.944874
4DwellSegmentationDistFilter1.645405e+092022-02-20 17:52:13.000176-07:00{'type': 'Point', 'coordinates': [-110.8175686...6214032d39cfe183d0343a071.645397e+092022-02-20 15:43:38.468902-07:00{'type': 'Point', 'coordinates': [-111.9448744...128.575521192258.374492...0.00.01.00.00333.462015-111.94487432.276548-110.817569
\n", - "

5 rows × 104 columns

\n", - "
" - ], - "text/plain": [ - " source end_ts end_fmt_time \\\n", - "0 DwellSegmentationDistFilter 1.629238e+09 2021-08-17 16:02:26.493017-06:00 \n", - "1 DwellSegmentationDistFilter 1.645386e+09 2022-02-20 12:32:43.451677-07:00 \n", - "2 DwellSegmentationDistFilter 1.645391e+09 2022-02-20 14:07:17.998778-07:00 \n", - "3 DwellSegmentationDistFilter 1.645397e+09 2022-02-20 15:35:51.018136-07:00 \n", - "4 DwellSegmentationDistFilter 1.645405e+09 2022-02-20 17:52:13.000176-07:00 \n", - "\n", - " end_loc \\\n", - "0 {'type': 'Point', 'coordinates': [-71.08788681... \n", - "1 {'type': 'Point', 'coordinates': [-111.9450490... \n", - "2 {'type': 'Point', 'coordinates': [-111.9440840... \n", - "3 {'type': 'Point', 'coordinates': [-111.9448744... \n", - "4 {'type': 'Point', 'coordinates': [-110.8175686... \n", - "\n", - " raw_trip start_ts start_fmt_time \\\n", - "0 611c350df3bfdd5663c34e52 1.629237e+09 2021-08-17 15:51:32.998732-06:00 \n", - "1 6212ce379106a670c421b888 1.645383e+09 2022-02-20 11:58:02.051102-07:00 \n", - "2 6212ce459106a670c421b88c 1.645388e+09 2022-02-20 13:20:30.462982-07:00 \n", - "3 6212ce459106a670c421b88e 1.645397e+09 2022-02-20 15:35:16.506669-07:00 \n", - "4 6214032d39cfe183d0343a07 1.645397e+09 2022-02-20 15:43:38.468902-07:00 \n", - "\n", - " start_loc duration \\\n", - "0 {'type': 'Point', 'coordinates': [-71.11831245... 10.891571 \n", - "1 {'type': 'Point', 'coordinates': [-111.9167906... 34.690010 \n", - "2 {'type': 'Point', 'coordinates': [-111.9437005... 46.792263 \n", - "3 {'type': 'Point', 'coordinates': [-111.9440840... 0.575191 \n", - "4 {'type': 'Point', 'coordinates': [-111.9448744... 128.575521 \n", - "\n", - " distance ... primary_job_commute_mode_Hybrid \\\n", - "0 2700.231495 ... 0.0 \n", - "1 18093.352854 ... 0.0 \n", - "2 984.681194 ... 0.0 \n", - "3 183.932256 ... 0.0 \n", - "4 192258.374492 ... 0.0 \n", - "\n", - " primary_job_commute_mode_Public transport primary_job_commute_mode_Unknown \\\n", - "0 0.0 1.0 \n", - "1 0.0 1.0 \n", - "2 0.0 1.0 \n", - "3 0.0 1.0 \n", - "4 0.0 1.0 \n", - "\n", - " primary_job_commute_mode_WFH is_overnight_trip n_working_residents \\\n", - "0 0.0 0 3 \n", - "1 0.0 0 3 \n", - "2 0.0 0 3 \n", - "3 0.0 0 3 \n", - "4 0.0 0 3 \n", - "\n", - " start_lat start_lng end_lat end_lng \n", - "0 42.351336 -71.118312 42.347875 -71.087887 \n", - "1 33.595163 -111.916791 33.461827 -111.945049 \n", - "2 33.461366 -111.943701 33.460592 -111.944084 \n", - "3 33.460592 -111.944084 33.462015 -111.944874 \n", - "4 33.462015 -111.944874 32.276548 -110.817569 \n", - "\n", - "[5 rows x 104 columns]" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "modeling_data.head()" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, for every trip, we have the corresponding section mode that covered the longest distance for the trip.\n", - "\n", - "Using this as well as the `available_modes` column:\n", - "\n", - "```language=python\n", - "\n", - " # unique available modes:\n", - " {'Bicycle',\n", - " 'Do not have vehicle ',\n", - " 'Get a ride from a friend or family member',\n", - " 'None',\n", - " 'Public transportation (bus, subway, light rail, etc.)',\n", - " 'Rental car (including Zipcar/ Car2Go)',\n", - " 'Shared bicycle or scooter',\n", - " 'Skateboard',\n", - " 'Taxi (regular taxi, Uber, Lyft, etc)',\n", - " 'Walk/roll'}\n", - "\n", - " # unique section modes:\n", - " {'bicycling', 'bus', 'car', 'no_sensed', 'train', 'walking'}\n", - "\n", - " \n", - "```\n", - "\n", - "What mapping can we establish here? " - ] - }, { "cell_type": "code", - "execution_count": 48, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1505,7 +1052,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1514,27 +1061,16 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "importlib.reload(scaffolding)" ] }, { "cell_type": "code", - "execution_count": 51, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1543,7 +1079,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1553,539 +1089,101 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "num_splits = 10\n", - "samples_per_split = modeling_data.shape[0]//num_splits" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Split 0 size: 8069\n", - "INFO: Pandarallel will run on 4 workers.\n", - "INFO: Pandarallel will use standard multiprocessing data transfer (pipe) to transfer data between the main process and workers.\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Falling back to confirmed trips...\n", - "Took 13.07597050956667 minutes to complete\n", - "Split 1 size: 8069\n", - "INFO: Pandarallel will run on 4 workers.\n", - "INFO: Pandarallel will use standard multiprocessing data transfer (pipe) to transfer data between the main process and workers.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/rkulhall/em-public-dashboard/rm_src/../viz_scripts/scaffolding.py:147: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " confirmed_trips['section_durations'] = confirmed_trips.parallel_apply(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Took 20.352822523033332 minutes to complete\n", - "Split 2 size: 8069\n", - "INFO: Pandarallel will run on 4 workers.\n", - "INFO: Pandarallel will use standard multiprocessing data transfer (pipe) to transfer data between the main process and workers.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/rkulhall/em-public-dashboard/rm_src/../viz_scripts/scaffolding.py:147: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " confirmed_trips['section_durations'] = confirmed_trips.parallel_apply(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Took 19.824597845733333 minutes to complete\n", - "Split 3 size: 8069\n", - "INFO: Pandarallel will run on 4 workers.\n", - "INFO: Pandarallel will use standard multiprocessing data transfer (pipe) to transfer data between the main process and workers.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/rkulhall/em-public-dashboard/rm_src/../viz_scripts/scaffolding.py:147: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " confirmed_trips['section_durations'] = confirmed_trips.parallel_apply(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Took 20.249677114833336 minutes to complete\n", - "Split 4 size: 8069\n", - "INFO: Pandarallel will run on 4 workers.\n", - "INFO: Pandarallel will use standard multiprocessing data transfer (pipe) to transfer data between the main process and workers.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/rkulhall/em-public-dashboard/rm_src/../viz_scripts/scaffolding.py:147: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " confirmed_trips['section_durations'] = confirmed_trips.parallel_apply(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Took 18.196551645316656 minutes to complete\n", - "Split 5 size: 8069\n", - "INFO: Pandarallel will run on 4 workers.\n", - "INFO: Pandarallel will use standard multiprocessing data transfer (pipe) to transfer data between the main process and workers.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/rkulhall/em-public-dashboard/rm_src/../viz_scripts/scaffolding.py:147: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " confirmed_trips['section_durations'] = confirmed_trips.parallel_apply(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Took 14.953972044866669 minutes to complete\n", - "Split 6 size: 8069\n", - "INFO: Pandarallel will run on 4 workers.\n", - "INFO: Pandarallel will use standard multiprocessing data transfer (pipe) to transfer data between the main process and workers.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/rkulhall/em-public-dashboard/rm_src/../viz_scripts/scaffolding.py:147: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " confirmed_trips['section_durations'] = confirmed_trips.parallel_apply(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Took 13.908668193450012 minutes to complete\n", - "Split 7 size: 8069\n", - "INFO: Pandarallel will run on 4 workers.\n", - "INFO: Pandarallel will use standard multiprocessing data transfer (pipe) to transfer data between the main process and workers.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/rkulhall/em-public-dashboard/rm_src/../viz_scripts/scaffolding.py:147: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " confirmed_trips['section_durations'] = confirmed_trips.parallel_apply(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Took 15.91554533118333 minutes to complete\n", - "Split 8 size: 8069\n", - "INFO: Pandarallel will run on 4 workers.\n", - "INFO: Pandarallel will use standard multiprocessing data transfer (pipe) to transfer data between the main process and workers.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/rkulhall/em-public-dashboard/rm_src/../viz_scripts/scaffolding.py:147: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " confirmed_trips['section_durations'] = confirmed_trips.parallel_apply(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Took 14.596019812649986 minutes to complete\n", - "Split 9 size: 8069\n", - "INFO: Pandarallel will run on 4 workers.\n", - "INFO: Pandarallel will use standard multiprocessing data transfer (pipe) to transfer data between the main process and workers.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/rkulhall/em-public-dashboard/rm_src/../viz_scripts/scaffolding.py:147: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " confirmed_trips['section_durations'] = confirmed_trips.parallel_apply(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Took 12.495607870950002 minutes to complete\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/rkulhall/em-public-dashboard/rm_src/../viz_scripts/scaffolding.py:147: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " confirmed_trips['section_durations'] = confirmed_trips.parallel_apply(\n" - ] - } - ], - "source": [ - "from time import perf_counter\n", - "\n", - "for split_ix in range(num_splits):\n", - " low = samples_per_split * split_ix\n", - " high = samples_per_split * (split_ix + 1) - 1\n", - " split = subset.loc[low:high, :]\n", - " \n", - " print(f\"Split {split_ix} size: {split.shape[0]}\")\n", - " \n", - " now = perf_counter()\n", - " result = scaffolding.get_section_durations(split)\n", - " end = perf_counter() - now\n", - "\n", - " print(f\"Took {end/60} minutes to complete\")\n", - " results.append(result)" + "EXTRACT_DURATIONS = False" ] }, { "cell_type": "code", - "execution_count": 55, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "10\n" - ] - } - ], + "outputs": [], "source": [ - "print(len(results))" + "# Takes ~150 minutes if n=5.\n", + "num_splits = 5\n", + "samples_per_split = modeling_data.shape[0]//num_splits" ] }, { "cell_type": "code", - "execution_count": 56, - "metadata": {}, + "execution_count": null, + "metadata": { + "scrolled": true + }, "outputs": [], "source": [ - "cat = pd.concat(results, axis=0)" + "from time import perf_counter\n", + "\n", + "if EXTRACT_DURATIONS:\n", + "\n", + " for split_ix in range(num_splits):\n", + " low = samples_per_split * split_ix\n", + "\n", + " # -1 since .loc is index-inclusive.\n", + " high = samples_per_split * (split_ix + 1) - 1\n", + "\n", + " # For last split, include last index too.\n", + " if split_ix < num_splits - 1:\n", + " split = subset.loc[low:high, :]\n", + " else:\n", + " split = subset.loc[low:, :]\n", + "\n", + " print(f\"Split {split_ix} size: {split.shape[0]}\")\n", + "\n", + " now = perf_counter()\n", + " result = scaffolding.get_section_durations(split)\n", + " end = perf_counter() - now\n", + "\n", + " print(f\"Took {end/60} minutes to complete\")\n", + "\n", + " results.append(result)\n", + "\n", + " print(50*'-')\n", + "\n", + " cat = pd.concat(results, axis=0)\n", + " \n", + " # This will save a LOT of time.\n", + " # cat.to_csv('../data/section_durations.csv', index=False)\n", + "else:\n", + " cat = pd.read_csv('../data/section_durations.csv')" ] }, { "cell_type": "code", - "execution_count": 57, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "80691 80690\n" - ] - } - ], + "outputs": [], "source": [ "print(modeling_data.shape[0], cat.shape[0])" ] }, { "cell_type": "code", - "execution_count": 60, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "80690\n" - ] - } - ], - "source": [ - "modeling_data = modeling_data.loc[:cat.shape[0]-1, :]\n", - "print(modeling_data.shape[0])" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 61, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(modeling_data.original_user_id == cat.original_user_id).all()" - ] - }, - { - "cell_type": "code", - "execution_count": 62, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
original_user_idcleaned_tripsection_durations
08a0473ca-e53d-4720-a99c-0696cc1fb407611c350ef3bfdd5663c34e5b[393.00192403793335, 258.49230194091797]
18a0473ca-e53d-4720-a99c-0696cc1fb4076212ce4c9106a670c421b89b[2081.4005744457245]
28a0473ca-e53d-4720-a99c-0696cc1fb4076212ce4e9106a670c421b903[2807.5357959270477]
38a0473ca-e53d-4720-a99c-0696cc1fb4076212ce4f9106a670c421b965[34.51146650314331]
48a0473ca-e53d-4720-a99c-0696cc1fb4076214033c39cfe183d0343a2f[7714.531273841858]
\n", - "
" - ], - "text/plain": [ - " original_user_id cleaned_trip \\\n", - "0 8a0473ca-e53d-4720-a99c-0696cc1fb407 611c350ef3bfdd5663c34e5b \n", - "1 8a0473ca-e53d-4720-a99c-0696cc1fb407 6212ce4c9106a670c421b89b \n", - "2 8a0473ca-e53d-4720-a99c-0696cc1fb407 6212ce4e9106a670c421b903 \n", - "3 8a0473ca-e53d-4720-a99c-0696cc1fb407 6212ce4f9106a670c421b965 \n", - "4 8a0473ca-e53d-4720-a99c-0696cc1fb407 6214033c39cfe183d0343a2f \n", - "\n", - " section_durations \n", - "0 [393.00192403793335, 258.49230194091797] \n", - "1 [2081.4005744457245] \n", - "2 [2807.5357959270477] \n", - "3 [34.51146650314331] \n", - "4 [7714.531273841858] " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "display(cat.head())" + "modeling_data = pd.concat([modeling_data, cat[['section_durations']]], axis=1)" ] }, { "cell_type": "code", - "execution_count": 64, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "modeling_data = pd.concat([modeling_data, cat[['section_durations']]], axis=1)" + "modeling_data.to_csv('../data/final_modeling_data_02142024.csv', index=False)" ] }, { "cell_type": "code", - "execution_count": 66, + "execution_count": null, "metadata": {}, "outputs": [], - "source": [ - "modeling_data.to_csv('../data/final_modeling_data_02142024.csv', index=False)" - ] + "source": [] } ], "metadata": { @@ -2111,5 +1209,5 @@ } }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 4 } diff --git a/rm_src/rf_bayesian_optim.py b/rm_src/rf_bayesian_optim.py new file mode 100644 index 0000000..6c911bd --- /dev/null +++ b/rm_src/rf_bayesian_optim.py @@ -0,0 +1,280 @@ +import warnings +warnings.simplefilter(action='ignore', category=Warning) + +import os +import numpy as np +import pandas as pd +import pickle +from bayes_opt import BayesianOptimization +from sklearn.linear_model import LinearRegression +from sklearn.ensemble import RandomForestClassifier +from sklearn.model_selection import StratifiedGroupKFold +from sklearn.metrics import f1_score, log_loss, r2_score + +SEED = 13210 + +class BayesianCV: + def __init__(self, data): + + init_splitter = StratifiedGroupKFold(n_splits=5, shuffle=True, random_state=SEED) + X = data.drop(columns=['target']) + groups = data.user_id.values + y = data.target.values + + for train_ix, test_ix in init_splitter.split(X, y, groups): + train = data.iloc[train_ix, :] + test = data.iloc[test_ix, :] + + break + + # Can't have split, so let it happen for two times. + # train, test = train_test_split(data, test_size=0.2, shuffle=True, stratify=data.target) + + print("Train-test split done.") + + # Estimate the test durations using the train data. + params, train = self._get_duration_estimate(train, 'train', None) + _, test = self._get_duration_estimate(test, 'test', params) + + # We drop the training duration estimates since we will be re-computing them during CV. + train.drop(columns=[c for c in train.columns if 'tt_' in c], inplace=True) + + # This is out final train and test data. + self.data = train.reset_index(drop=True) + self.test = test.reset_index(drop=True) + + self._optimizer = self._setup_optimizer() + + + def _drop_columns(self, df: pd.DataFrame): + to_drop = [ + 'source', 'end_ts', 'end_fmt_time', 'end_loc', 'raw_trip', 'start_ts', + 'start_fmt_time', 'start_loc', 'duration', 'distance', 'start_place', + 'end_place', 'cleaned_trip', 'inferred_labels', 'inferred_trip', 'expectation', + 'confidence_threshold', 'expected_trip', 'user_input', 'start:year', 'start:month', + 'start:day', 'start_local_dt_minute', 'start_local_dt_second', + 'start_local_dt_weekday', 'start_local_dt_timezone', 'end:year', 'end:month', 'end:day', + 'end_local_dt_minute', 'end_local_dt_second', 'end_local_dt_weekday', + 'end_local_dt_timezone', '_id', 'user_id', 'metadata_write_ts', 'additions', + 'mode_confirm', 'purpose_confirm', 'Mode_confirm', 'Trip_purpose', + 'original_user_id', 'program', 'opcode', 'Timestamp', 'birth_year', + 'available_modes', 'section_coordinates_argmax', 'section_mode_argmax', + 'start_lat', 'start_lng', 'end_lat', 'end_lng' + ] + + # Drop section_mode_argmax and available_modes. + return df.drop( + columns=to_drop, + inplace=False + ) + + + def _get_duration_estimate(self, df: pd.DataFrame, dset: str, model_dict: dict): + + X_features = ['section_distance_argmax', 'age'] + + if 'mph' in df.columns: + X_features += ['mph'] + + if dset == 'train' and model_dict is None: + model_dict = dict() + + if dset == 'test' and model_dict is None: + raise AttributeError("Expected model dict for testing.") + + if dset == 'train': + for section_mode in df.section_mode_argmax.unique(): + section_data = df.loc[df.section_mode_argmax == section_mode, :] + if section_mode not in model_dict: + model_dict[section_mode] = dict() + + model = LinearRegression(fit_intercept=True) + + X = section_data[ + X_features + ] + Y = section_data[['section_duration_argmax']] + + model.fit(X, Y.values.ravel()) + + r2 = r2_score(y_pred=model.predict(X), y_true=Y.values.ravel()) + # print(f"Train R2 for {section_mode}: {r2}") + + model_dict[section_mode]['model'] = model + + elif dset == 'test': + for section_mode in df.section_mode_argmax.unique(): + section_data = df.loc[df.section_mode_argmax == section_mode, :] + X = section_data[ + X_features + ] + Y = section_data[['section_duration_argmax']] + + y_pred = model_dict[section_mode]['model'].predict(X) + r2 = r2_score(y_pred=y_pred, y_true=Y.values.ravel()) + # print(f"Test R2 for {section_mode}: {r2}") + + # Create the new columns for the duration. + new_columns = ['p_micro','no_trip','s_car','transit','car','s_micro','ridehail','walk','unknown'] + df[new_columns] = 0 + df['temp'] = 0 + + for section in df.section_mode_argmax.unique(): + X_section = df.loc[df.section_mode_argmax == section, X_features] + + # broadcast to all columns. + df.loc[df.section_mode_argmax == section, 'temp'] = model_dict[section]['model'].predict(X_section) + + for c in new_columns: + df[c] = df['av_' + c] * df['temp'] + + df.drop(columns=['temp'], inplace=True) + + df.rename(columns=dict([(x, 'tt_'+x) for x in new_columns]), inplace=True) + + # return model_dict, result_df + return model_dict, df + + + def _setup_optimizer(self): + # Define search space. + hparam_dict = { + # 10-500 + 'n_estimators': (0.25, 3), + # 5-150 + 'max_depth': (0.5, 15), + # 2-20 + 'min_samples_split': (0.2, 2.5), + # 1-20 + 'min_samples_leaf': (0.1, 2.5), + # as-is. + 'ccp_alpha': (0., 0.5), + # as-is. + 'max_features': (0.1, 0.99), + # Use clip to establish mask. + 'class_weight': (0, 1), + } + + return BayesianOptimization( + self._surrogate, + hparam_dict + ) + + + def _surrogate(self, n_estimators, max_depth, min_samples_split, min_samples_leaf, ccp_alpha, max_features, class_weight): + + cw = 'balanced_subsample' if class_weight < 0.5 else 'balanced' + + # Builds a surrogate model using the samples hparams. + model = RandomForestClassifier( + n_estimators=int(n_estimators * 100), + max_depth=int(max_depth * 10), + min_samples_split=int(min_samples_split * 10), + min_samples_leaf=int(min_samples_leaf * 10), + max_features=max(min(max_features, 0.999), 1e-3), + ccp_alpha=ccp_alpha, + bootstrap=True, + class_weight=cw, + n_jobs=os.cpu_count(), + random_state=SEED + ) + + fold_crossentropy = list() + + # Use the train split and further split in train-val. + X = self.data.drop(columns=['target']) + y = self.data.target.values.ravel() + users = X.user_id.values + + gkfold = StratifiedGroupKFold(n_splits=5, shuffle=True, random_state=SEED) + + for train_ix, test_ix in gkfold.split(X, y, users): + + X_train = X.iloc[train_ix, :] + X_test = X.iloc[test_ix, :] + + y_train = y[train_ix] + y_test = y[test_ix] + + # Re-estimate durations. + params, X_train = self._get_duration_estimate(X_train, 'train', None) + _, X_test = self._get_duration_estimate(X_test, 'test', params) + + X_train = self._drop_columns(X_train) + X_test = self._drop_columns(X_test) + + model.fit( + X_train, + y_train + ) + + # Measure performance on valid split. + ce = log_loss( + y_true=y_test, + y_pred=model.predict_proba(X_test), + labels=list(range(1, 10)) + ) + + fold_crossentropy.append(ce) + + # Return the average negative crossentropy (since bayesian optimization aims to maximize an objective). + return -np.mean(fold_crossentropy) + + + def optimize(self): + self._optimizer.maximize(n_iter=100, init_points=10) + print("Done optimizing!") + best_params = self._optimizer.max['params'] + best_loss = -self._optimizer.max['target'] + return best_loss, best_params + + +def train_final_model(params, cv_obj): + # Construct the model using the params. + model = RandomForestClassifier( + n_estimators=int(params['n_estimators'] * 100), + max_depth=int(params['max_depth'] * 10), + min_samples_split=int(params['min_samples_split'] * 10), + min_samples_leaf=int(params['min_samples_leaf'] * 10), + max_features=params['max_features'], + ccp_alpha=params['ccp_alpha'], + bootstrap=True, + class_weight='balanced_subsample', + n_jobs=os.cpu_count() + ) + + + X_tr = cv_obj.data.drop(columns=['target']) + y_tr = cv_obj.data.target.values.ravel() + + X_te = cv_obj.test.drop(columns=['target']) + y_te = cv_obj.test.target.values.ravel() + + params, X_tr = cv_obj._get_duration_estimate(X_tr, 'train', None) + + X_tr = cv_obj._drop_columns(X_tr) + X_te = cv_obj._drop_columns(X_te) + + model.fit( + X_tr, + y_tr + ) + + model.fit(X_tr, y_tr) + + print(f"Train loss: {log_loss(y_true=y_tr, y_pred=model.predict_proba(X_tr))}") + print(f"Train performance: {f1_score(y_true=y_tr, y_pred=model.predict(X_tr), average='weighted')}") + print(f"Test loss: {log_loss(y_true=y_te, y_pred=model.predict_proba(X_te))}") + print(f"Test performance: {f1_score(y_true=y_te, y_pred=model.predict(X_te), average='weighted')}") + + with open('./bayes_rf.pkl', 'wb') as f: + f.write(pickle.dumps(model)) + + +if __name__ == "__main__": + data = pd.read_csv('../data/ReplacedMode_Fix_02142024.csv') + bayes_cv = BayesianCV(data) + best_loss, best_params = bayes_cv.optimize() + print(f"Best loss: {best_loss}, best params: {str(best_params)}") + train_final_model(best_params, bayes_cv) + \ No newline at end of file diff --git a/viz_scripts/scaffolding.py b/viz_scripts/scaffolding.py index 5918672..4dcccb9 100644 --- a/viz_scripts/scaffolding.py +++ b/viz_scripts/scaffolding.py @@ -111,7 +111,7 @@ def expand_userinputs(labeled_ct): def get_section_durations(confirmed_trips: pd.DataFrame): # Initialize the parallel processing. - pandarallel.initialize(progress_bar=True) + pandarallel.initialize(progress_bar=False) """ Extract section-wise durations from trips for every trips. @@ -153,7 +153,7 @@ def get_durations(user_id, trip_id): def get_section_coordinates(confirmed_trips: pd.DataFrame): # Initialize pandarallel - pandarallel.initialize(progress_bar=True) + pandarallel.initialize(progress_bar=False) key = 'analysis/inferred_section' From 63f20c93e5483bca930da961de46312b94543cff Mon Sep 17 00:00:00 2001 From: Rahul Kulhalli Date: Wed, 20 Mar 2024 12:47:00 -0400 Subject: [PATCH 13/16] Added initial user-level modeling notebook --- rm_src/UserLevelModeling.ipynb | 869 +++++++++++++++++++++++++++++++++ 1 file changed, 869 insertions(+) create mode 100644 rm_src/UserLevelModeling.ipynb diff --git a/rm_src/UserLevelModeling.ipynb b/rm_src/UserLevelModeling.ipynb new file mode 100644 index 0000000..7fefe5a --- /dev/null +++ b/rm_src/UserLevelModeling.ipynb @@ -0,0 +1,869 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "04ccf092", + "metadata": {}, + "source": [ + "### Some important points to remember:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "2985b51f", + "metadata": {}, + "outputs": [], + "source": [ + "# import warnings\n", + "\n", + "# warnings.simplefilter('ignore', Warning)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "21ef0f2e", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import random\n", + "import os\n", + "import ast\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.ensemble import RandomForestClassifier\n", + "from sklearn.metrics import r2_score, f1_score, log_loss\n", + "from sklearn.model_selection import train_test_split, RandomizedSearchCV, StratifiedKFold\n", + "from sklearn.neighbors import KNeighborsClassifier\n", + "from sklearn.cluster import KMeans\n", + "from sklearn.metrics.pairwise import cosine_similarity, euclidean_distances\n", + "from enum import Enum\n", + "from scipy.stats import uniform\n", + "from typing import List\n", + "\n", + "pd.set_option('display.max_columns', None) " + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "fef98692", + "metadata": {}, + "outputs": [], + "source": [ + "SEED = 13210\n", + "\n", + "np.random.seed(SEED)\n", + "random.seed(SEED)\n", + "\n", + "SimilarityMetric = Enum('SimilarityMetric', ['COSINE', 'EUCLIDEAN', 'KNN', 'KMEANS'])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "79f8c51a", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_47441/224655024.py:1: DtypeWarning: Columns (38) have mixed types. Specify dtype option on import or set low_memory=False.\n", + " df = pd.read_csv('../data/ReplacedMode_Fix_02142024.csv')\n" + ] + } + ], + "source": [ + "df = pd.read_csv('../data/ReplacedMode_Fix_02142024.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "72793473", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['source', 'end_ts', 'end_fmt_time', 'end_loc', 'raw_trip', 'start_ts', 'start_fmt_time', 'start_loc', 'duration', 'distance', 'start_place', 'end_place', 'cleaned_trip', 'inferred_labels', 'inferred_trip', 'expectation', 'confidence_threshold', 'expected_trip', 'user_input', 'start:year', 'start:month', 'start:day', 'start:hour', 'start_local_dt_minute', 'start_local_dt_second', 'start_local_dt_weekday', 'start_local_dt_timezone', 'end:year', 'end:month', 'end:day', 'end:hour', 'end_local_dt_minute', 'end_local_dt_second', 'end_local_dt_weekday', 'end_local_dt_timezone', '_id', 'user_id', 'metadata_write_ts', 'additions', 'mode_confirm', 'purpose_confirm', 'distance_miles', 'Mode_confirm', 'Trip_purpose', 'original_user_id', 'program', 'opcode', 'Timestamp', 'birth_year', 'primary_job_commute_time', 'income_category', 'n_residence_members', 'n_residents_u18', 'n_residents_with_license', 'n_motor_vehicles', 'available_modes', 'age', 'gender_Man', 'gender_Man;Nonbinary/genderqueer/genderfluid', 'gender_Nonbinary/genderqueer/genderfluid', 'gender_Prefer not to say', 'gender_Woman', 'gender_Woman;Nonbinary/genderqueer/genderfluid', 'has_drivers_license_No', 'has_drivers_license_Prefer not to say', 'has_drivers_license_Yes', 'has_multiple_jobs_No', 'has_multiple_jobs_Prefer not to say', 'has_multiple_jobs_Yes', \"highest_education_Bachelor's degree\", 'highest_education_Graduate degree or professional degree', 'highest_education_High school graduate or GED', 'highest_education_Less than a high school graduate', 'highest_education_Prefer not to say', 'highest_education_Some college or associates degree', 'primary_job_type_Full-time', 'primary_job_type_Part-time', 'primary_job_type_Prefer not to say', 'primary_job_description_Clerical or administrative support', 'primary_job_description_Custodial', 'primary_job_description_Education', 'primary_job_description_Food service', 'primary_job_description_Manufacturing, construction, maintenance, or farming', 'primary_job_description_Medical/healthcare', 'primary_job_description_Other', 'primary_job_description_Professional, managerial, or technical', 'primary_job_description_Sales or service', 'primary_job_commute_mode_Active transport', 'primary_job_commute_mode_Car transport', 'primary_job_commute_mode_Hybrid', 'primary_job_commute_mode_Public transport', 'primary_job_commute_mode_Unknown', 'primary_job_commute_mode_WFH', 'is_overnight_trip', 'n_working_residents', 'start_lat', 'start_lng', 'end_lat', 'end_lng', 'temperature_2m (°F)', 'relative_humidity_2m (%)', 'dew_point_2m (°F)', 'rain (inch)', 'snowfall (inch)', 'wind_speed_10m (mp/h)', 'wind_gusts_10m (mp/h)', 'section_distance_argmax', 'section_duration_argmax', 'section_mode_argmax', 'section_coordinates_argmax', 'mph', 'target', 'av_car', 'av_transit', 'av_ridehail', 'av_p_micro', 'av_s_micro', 'av_walk', 'av_no_trip', 'av_s_car', 'av_unknown', 'cost_p_micro', 'cost_no_trip', 'cost_s_car', 'cost_transit', 'cost_car', 'cost_s_micro', 'cost_ridehail', 'cost_walk', 'cost_unknown']\n" + ] + } + ], + "source": [ + "print(df.columns.tolist())" + ] + }, + { + "cell_type": "markdown", + "id": "85866e8a", + "metadata": {}, + "source": [ + "### We want to experiment with two types of models:\n", + "\n", + "\n", + "1. have one row per user, so that when predicting modes for a new user, we pick the \"similar user\" or users and determine the replaced mode\n", + " - In this, the traditional approach would only use demographics for the user features, we may experiment with some summaries of the trip data that will function as some level of \"fingerprint\" for the user. Ideally we would be able to show that this performs better than demographics alone\n", + " - Note also that the original method that you had outlined where the training set is a list of trips (O()) is a third approach which we will be comparing these two against" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "2a9efd3e", + "metadata": {}, + "outputs": [], + "source": [ + "def encode_availability(df: pd.DataFrame):\n", + " \n", + " # Borrowed directly from the cost_time_avl_preprocessing notebook.\n", + " available = {\n", + " 'Bicycle': 'p_micro',\n", + " 'Do not have vehicle': 'unknown',\n", + " 'Get a ride from a friend or family member': 's_car',\n", + " 'None': 'no_trip',\n", + " 'Public transportation (bus, subway, light rail, etc.)': 'transit',\n", + " 'Rental car (including Zipcar/ Car2Go)': 'car',\n", + " 'Shared bicycle or scooter': 's_micro',\n", + " 'Skateboard': 'p_micro',\n", + " 'Taxi (regular taxi, Uber, Lyft, etc)': 'ridehail',\n", + " 'Walk/roll': 'walk',\n", + " 'Prefer not to say': 'unknown'\n", + " }\n", + " \n", + " newcols = list(available.values())\n", + " \n", + " # Start by creating dummy indicators.\n", + " df[newcols] = 0\n", + " \n", + " for i, row in df.iterrows():\n", + " modes = [e.strip() for e in row.available_modes.split(';')]\n", + " mapped_modes = [available[mode] for mode in modes]\n", + " df.loc[i, mapped_modes] = 1\n", + " \n", + " df.drop(columns=['available_modes'], inplace=True)\n", + " df.columns = ['av_' + str(c) if c in newcols else str(c) for c in df.columns]\n", + " \n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "cfe76e8c", + "metadata": {}, + "outputs": [], + "source": [ + "def get_mode_coverage(df: pd.DataFrame):\n", + " \n", + " coverage_df = df.groupby(['user_id', 'section_mode_argmax']).size().unstack(fill_value=0)\n", + " coverage_df.columns = ['coverage_' + str(c) for c in coverage_df.columns]\n", + " \n", + " # As a preventative measure.\n", + " coverage_df.fillna(0, inplace=True)\n", + " \n", + " # Normalize over rows.\n", + " coverage_df.iloc[:, 1:] = coverage_df.iloc[:, 1:].div(coverage_df.iloc[:, 1:].sum(axis=1), axis=0)\n", + " \n", + " return coverage_df" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "75313008", + "metadata": {}, + "outputs": [], + "source": [ + "def get_trip_summaries(df: pd.DataFrame, group_key: str, feature_list: List[str]):\n", + " \n", + " def get_feature_summaries(trip_feature: str, is_ordinal: bool = False):\n", + " \n", + " if not is_ordinal:\n", + " # A mean of 0 is an actual value.\n", + " mean = df.groupby(['user_id', group_key])[trip_feature].mean().unstack(level=-1, fill_value=-1.)\n", + " mean.columns = [f'{trip_feature}_mean_' + str(c) for c in mean.columns]\n", + " \n", + " # Same with percentiles - 0 is an actual value.\n", + " median = df.groupby(['user_id', group_key])[trip_feature].median().unstack(level=-1, fill_value=-1.)\n", + " median.columns = [f'{trip_feature}_median_' + str(c) for c in median.columns]\n", + " \n", + " iqr_temp = df.groupby(['user_id', group_key])[trip_feature].quantile([0.25, 0.75]).unstack(level=-1)\n", + " iqr = (iqr_temp[0.75] - iqr_temp[0.25]).unstack(level=-1)\n", + " iqr.fillna(-1., inplace=True)\n", + " iqr.columns = [f'{trip_feature}_iqr_' + str(c) for c in iqr.columns]\n", + "\n", + " # Now merge.\n", + " merged = mean.copy()\n", + " merged = merged.merge(right=median, left_index=True, right_index=True)\n", + " merged = merged.merge(right=iqr, left_index=True, right_index=True)\n", + "\n", + " return merged\n", + " \n", + " # 0 is OK to indicate NaN values.\n", + " f_mode = df.groupby(['user_id', group_key])[trip_feature].apply(\n", + " lambda x: x.value_counts().idxmax()\n", + " ).unstack(fill_value=0.)\n", + " \n", + " f_mode.columns = [f'{trip_feature}_mode_' + str(c) for c in f_mode.columns]\n", + " \n", + " return f_mode\n", + " \n", + " # This will be the dataframe that all subsequent features will join to.\n", + " feature_df = None\n", + " \n", + " for ix, feature in enumerate(feature_list):\n", + " is_ordinal = feature == 'start:hour' or feature == 'end:hour'\n", + " if ix == 0:\n", + " feature_df = get_feature_summaries(feature, is_ordinal)\n", + " else:\n", + " next_feature_df = get_feature_summaries(feature, is_ordinal)\n", + " feature_df = feature_df.merge(right=next_feature_df, left_index=True, right_index=True)\n", + " \n", + " return feature_df" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "63617ada", + "metadata": {}, + "outputs": [], + "source": [ + "def get_demographic_data(df: pd.DataFrame, **trip_kwargs):\n", + " \n", + " '''\n", + " A method that returns a U x (D + t) matrix, where U = number of users,\n", + " D = number of demographic features, t (optional) = number of trip summary features.\n", + " \n", + " When use_trip_summaries=True, the 'available_modes' column is dropped in favor of\n", + " the already-preprocessed av_ columns. This is because we want to incorporate trip-level\n", + " information into the data. When the argument is False, we want to SOLELY use demographics.\n", + " '''\n", + " \n", + " trip_features_to_use = trip_kwargs.pop('trip_features', None)\n", + " trip_group_key = trip_kwargs.pop('trip_group_key', 'section_mode_argmax')\n", + " \n", + " demographics = [\n", + " 'user_id', 'primary_job_commute_time', 'income_category', 'n_residence_members', 'n_residents_u18', \n", + " 'n_residents_with_license', 'n_motor_vehicles', 'available_modes', 'age', 'gender_Man', \n", + " 'gender_Man;Nonbinary/genderqueer/genderfluid', 'gender_Nonbinary/genderqueer/genderfluid', \n", + " 'gender_Prefer not to say', 'gender_Woman', 'gender_Woman;Nonbinary/genderqueer/genderfluid', \n", + " 'has_drivers_license_No', 'has_drivers_license_Prefer not to say', 'has_drivers_license_Yes', \n", + " 'has_multiple_jobs_No', 'has_multiple_jobs_Prefer not to say', 'has_multiple_jobs_Yes', \n", + " \"highest_education_Bachelor's degree\", 'highest_education_Graduate degree or professional degree', \n", + " 'highest_education_High school graduate or GED', 'highest_education_Less than a high school graduate', \n", + " 'highest_education_Prefer not to say', 'highest_education_Some college or associates degree', \n", + " 'primary_job_type_Full-time', 'primary_job_type_Part-time', 'primary_job_type_Prefer not to say', \n", + " 'primary_job_description_Clerical or administrative support', 'primary_job_description_Custodial', \n", + " 'primary_job_description_Education', 'primary_job_description_Food service', \n", + " 'primary_job_description_Manufacturing, construction, maintenance, or farming', \n", + " 'primary_job_description_Medical/healthcare', 'primary_job_description_Other', \n", + " 'primary_job_description_Professional, managerial, or technical', \n", + " 'primary_job_description_Sales or service', 'primary_job_commute_mode_Active transport', \n", + " 'primary_job_commute_mode_Car transport', 'primary_job_commute_mode_Hybrid', \n", + " 'primary_job_commute_mode_Public transport', 'primary_job_commute_mode_Unknown', \n", + " 'primary_job_commute_mode_WFH', 'is_overnight_trip', 'n_working_residents'\n", + " ]\n", + " \n", + " # Retain only the first instance of each user and subset the columns.\n", + " filtered = df.groupby('user_id').first().reset_index(drop=False)[demographics]\n", + " \n", + " # Get the targets.\n", + " targets = df.groupby('user_id')['target'].apply(lambda x: x.value_counts().idxmax()).reset_index(drop=False)\n", + " \n", + " filtered = filtered.merge(right=targets, left_on='user_id', right_on='user_id')\n", + " \n", + " if not trip_features_to_use or len(trip_features_to_use) == 0:\n", + " # Use the available modes as indicators.\n", + " return encode_availability(filtered)\n", + " \n", + " # -----------------------------------------------------------\n", + " # Reaching here means that we need to include trip summaries\n", + " # -----------------------------------------------------------\n", + " \n", + " # If trip summaries are to be used, then re-use the preprocessed availability features.\n", + " availability = df[['user_id'] + [c for c in df.columns if 'av_' in c]]\n", + " availability = availability.groupby('user_id').first()\n", + " \n", + " # For every user, generate the global trip-level summaries.\n", + " global_aggs = df.groupby('user_id').agg({'duration': 'mean', 'distance': 'mean'})\n", + " \n", + " # coverage.\n", + " coverage = get_mode_coverage(df)\n", + " \n", + " # Trip-level features.\n", + " trip_features = get_trip_summaries(\n", + " df=df, \n", + " group_key=trip_group_key, \n", + " feature_list=trip_features_to_use\n", + " )\n", + " \n", + " targets = df.groupby('user_id')['target'].apply(lambda x: x.value_counts().idxmax())\n", + " \n", + " trip_features = trip_features.merge(right=coverage, left_index=True, right_index=True)\n", + " trip_features = trip_features.merge(right=global_aggs, left_index=True, right_index=True)\n", + " \n", + " # Finally, join with availability indicators and targets.\n", + " trip_features = trip_features.merge(right=availability, left_index=True, right_on='user_id')\n", + " trip_features = trip_features.merge(right=targets, left_index=True, right_index=True)\n", + " \n", + " return trip_features.reset_index(drop=False)" + ] + }, + { + "cell_type": "markdown", + "id": "fedb51e8", + "metadata": {}, + "source": [ + "## Experiment 1: Only demographics" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "66421120", + "metadata": {}, + "outputs": [], + "source": [ + "demo_df = get_demographic_data(df)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "c023cf66", + "metadata": {}, + "outputs": [], + "source": [ + "# No stratification, pure random.\n", + "train, test = train_test_split(demo_df, test_size=0.2, random_state=SEED)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "376a4391", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "132 33\n" + ] + } + ], + "source": [ + "print(train.shape[0], test.shape[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "ef77c9c8", + "metadata": {}, + "outputs": [], + "source": [ + "def evaluate_using_similarity(test_df, train_df, metric=SimilarityMetric.COSINE, **metric_kwargs):\n", + " \n", + " '''\n", + " This method treats each user row as a 'fingerprint' (embedding vector). We assume that we\n", + " have no idea about the test set labels. To find which replaced mode is most likely for the test\n", + " users, we compute the cosine similarity of each test user against the users in the training set.\n", + " For the most similar user, we use their target as a proxy for the test user's replaced mode.\n", + " This operates on the following intuition: If User A and User B are similar, then their replaced\n", + " modes are also similar.\n", + " '''\n", + " \n", + " tr_targets = train_df.target.values\n", + " tr = train_df.drop(columns=['target', 'user_id'], inplace=False).reset_index(drop=True, inplace=False)\n", + " \n", + " te_targets = test_df.target.values\n", + " te = test_df.drop(columns=['target', 'user_id'], inplace=False).reset_index(drop=True, inplace=False)\n", + " \n", + " if metric == SimilarityMetric.COSINE:\n", + " # Use cosine similarity to determine which element in the train set this user is closest to.\n", + " # Offset the columns from the second entry to exclude the user_id column.\n", + " # Returns a (n_te, n_tr) matrix.\n", + " sim = cosine_similarity(te.values, tr.values)\n", + " \n", + " # Compute the argmax across the train set.\n", + " argmax = np.argmax(sim, axis=1)\n", + "\n", + " # Index into the training targets to retrieve predicted label.\n", + " y_test_pred = tr_targets[argmax]\n", + " \n", + " elif metric == SimilarityMetric.EUCLIDEAN:\n", + " \n", + " # Here, we choose the embedding with the smallest L2 distance.\n", + " distances = euclidean_distances(te.values, tr.values)\n", + " \n", + " # We choose argmin\n", + " argmin = np.argmin(distances, axis=1)\n", + " \n", + " # Index into the targets.\n", + " y_test_pred = tr_targets[argmin]\n", + " \n", + " elif metric == SimilarityMetric.KNN:\n", + " \n", + " # Build the KNN classifier. By default, let it be 3.\n", + " knn = KNeighborsClassifier(\n", + " n_neighbors=metric_kwargs.pop('n_neighbors', 3),\n", + " weights='distance',\n", + " metric=metric_kwargs.pop('knn_metric', 'cosine'),\n", + " n_jobs=os.cpu_count()\n", + " )\n", + " \n", + " # Fit the data to the KNN model\n", + " knn.fit(tr, tr_targets)\n", + " \n", + " y_test_pred = knn.predict(te)\n", + " \n", + " elif metric == SimilarityMetric.KMEANS:\n", + " \n", + " # Build the model.\n", + " kmeans = KMeans(\n", + " n_clusters=metric_kwargs.pop('n_clusters', 8),\n", + " max_iter=metric_kwargs.pop('max_iter', 300),\n", + " n_init='auto'\n", + " )\n", + " \n", + " # Fit the clustering model\n", + " kmeans.fit(tr)\n", + " \n", + " # Construct the auxiliary df and merge with the training set.\n", + " label_df = pd.DataFrame({'label': kmeans.labels_, 'target': tr_targets}, index=tr.index)\n", + " \n", + " # Now, perform an inference on the test set.\n", + " predicted_labels = kmeans.predict(te)\n", + " \n", + " y_test_pred = []\n", + " for prediction in predicted_labels:\n", + " most_likely = label_df.loc[label_df.label == prediction, 'target'].value_counts().idxmax()\n", + " y_test_pred.append(most_likely)\n", + " \n", + " else:\n", + " raise NotImplementedError(\"Unknown similarity metric\")\n", + " \n", + " \n", + " f1 = f1_score(y_true=te_targets, y_pred=y_test_pred, average='weighted')\n", + " print(f\"Test F1 score using {metric.name} = {f1}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "1a95ad5e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test F1 score using COSINE = 0.32806324110671936\n" + ] + } + ], + "source": [ + "evaluate_using_similarity(test, train, SimilarityMetric.COSINE)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "44cfbe29", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test F1 score using EUCLIDEAN = 0.2742577288031834\n" + ] + } + ], + "source": [ + "evaluate_using_similarity(test, train, SimilarityMetric.EUCLIDEAN)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "fe343c8b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test F1 score using KNN = 0.35950413223140487\n" + ] + } + ], + "source": [ + "evaluate_using_similarity(test, train, SimilarityMetric.KNN)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "d9681639", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test F1 score using KMEANS = 0.33347902097902093\n" + ] + } + ], + "source": [ + "evaluate_using_similarity(test, train, SimilarityMetric.KMEANS, n_clusters=3)" + ] + }, + { + "cell_type": "markdown", + "id": "16e435a6", + "metadata": {}, + "source": [ + "Not bad - using just a simple random split gives us the following results:\n", + "\n", + "$F1_{cosine} = 0.32$, $F1_{euclidean} = 0.27$, $F1_{KNN} = 0.36$, $F1_{kmeans} = 0.33$" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "81f0e842", + "metadata": {}, + "outputs": [], + "source": [ + "def custom_nll_scorer(clf, X, y):\n", + " y_pred = clf.predict_proba(X)\n", + " return -log_loss(y_true=y, y_pred=y_pred, labels=sorted(np.unique(y)))" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "a3a6af8f", + "metadata": {}, + "outputs": [], + "source": [ + "def estimate_using_model(train, test):\n", + " \n", + " # Define the train-val splitter.\n", + " splitter = StratifiedKFold(n_splits=4, shuffle=True, random_state=SEED)\n", + " \n", + " params = {\n", + " 'n_estimators': np.arange(100, 1001, 50),\n", + " 'max_depth': [i for i in range(5, 101, 5)],\n", + " 'ccp_alpha': np.linspace(0, 1, 10),\n", + " 'class_weight': ['balanced', 'balanced_subsample', None],\n", + " 'min_samples_split': np.arange(2, 25, 2),\n", + " 'min_samples_leaf': np.arange(1, 25)\n", + " }\n", + " \n", + " rf = RandomForestClassifier(random_state=SEED)\n", + " \n", + " # Search over hparams to minimize negative log likelihood. \n", + " clf = RandomizedSearchCV(\n", + " rf, params, n_iter=500, scoring=custom_nll_scorer, \n", + " n_jobs=os.cpu_count(), cv=splitter, random_state=SEED,\n", + " verbose=0\n", + " )\n", + " \n", + " X_tr = train.drop(columns=['user_id', 'target'])\n", + " y_tr = train.target.values.ravel()\n", + " \n", + " scorer = clf.fit(X_tr, y_tr)\n", + " \n", + " best_model = scorer.best_estimator_\n", + " \n", + " print(f\"Best val score = {scorer.best_score_}\")\n", + " \n", + " X_te = test.drop(columns=['user_id', 'target'])\n", + " \n", + " # Use the best model to compute F1 on the test set.\n", + " test_f1 = f1_score(y_true=test.target.values, y_pred=best_model.predict(X_te), average='weighted')\n", + " \n", + " print(f\"Test F1 = {test_f1}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "2fab93ed", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Best val score = -1.7985827701200345\n", + "Test F1 = 0.32794612794612793\n" + ] + } + ], + "source": [ + "estimate_using_model(train, test)" + ] + }, + { + "cell_type": "markdown", + "id": "2988c1b2", + "metadata": {}, + "source": [ + "Interesting! The model is slightly on par with the cosine similarity, but actually worse than the KNN model!\n", + "\n", + "To recap, $F1_{cosine} = 0.32806$, $F1_{euclidean} = 0.27$, $F1_{KNN} = 0.36$, $F1_{kmeans} = 0.33$, $F1_{RF} = 0.328$" + ] + }, + { + "cell_type": "markdown", + "id": "c6b77353", + "metadata": {}, + "source": [ + "## Experiment 2: Demographics with trip summaries" + ] + }, + { + "cell_type": "markdown", + "id": "bf7753d4", + "metadata": {}, + "source": [ + "Now that we've performed experiments with solely demographic data, let's expand the feature set by including \n", + "trip summary statistics. We would like this approach to do better than the aforementioned baselines." + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "1d46ab0f", + "metadata": {}, + "outputs": [], + "source": [ + "demo_plus_trips = get_demographic_data(\n", + " df, \n", + " trip_features=['mph', 'section_duration_argmax', 'section_distance_argmax', 'start:hour', 'end:hour']\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "6159c90a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "132 33\n" + ] + } + ], + "source": [ + "train, test = train_test_split(demo_plus_trips, test_size=0.2, random_state=SEED)\n", + "\n", + "print(train.shape[0], test.shape[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "06e85bdd", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test F1 score using COSINE = 0.3686868686868687\n" + ] + } + ], + "source": [ + "evaluate_using_similarity(test, train, SimilarityMetric.COSINE)" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "5bc67e1d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test F1 score using EUCLIDEAN = 0.3338758428272495\n" + ] + } + ], + "source": [ + "evaluate_using_similarity(test, train, SimilarityMetric.EUCLIDEAN)" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "3ea68a83", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test F1 score using KNN = 0.30201171377641967\n" + ] + } + ], + "source": [ + "evaluate_using_similarity(test, train, SimilarityMetric.KNN)" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "52eb931b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test F1 score using KMEANS = 0.36007130124777187\n" + ] + } + ], + "source": [ + "evaluate_using_similarity(test, train, SimilarityMetric.KMEANS, n_clusters=3)" + ] + }, + { + "cell_type": "markdown", + "id": "ba795489", + "metadata": {}, + "source": [ + "Great! Marked improvement from last time. Simply incorporating trip-level features seems to increase the\n", + "accuracy of finding similar users. Now, $F1_{cosine} = 0.37$, $F1_{euclidean} = 0.33$, $F1_{knn} = 0.3$, $F1_{kmeans} = 0.36$" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "9acd4b0b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Best val score = -1.8201049789158268\n", + "Test F1 = 0.42158426368952684\n" + ] + } + ], + "source": [ + "# Now, we try with the model\n", + "estimate_using_model(train, test)" + ] + }, + { + "cell_type": "markdown", + "id": "cd94c548", + "metadata": {}, + "source": [ + "Great! Compared to the previous model, we see definite improvements! I'm sure we can squeeze some more juice out of the models using fancy optimization, but as a baseline, these are good enough.\n", + "\n", + "\n", + "So, to recap:\n", + "$F1_{cosine} = 0.37$, $F1_{euclidean} = 0.33$, $F1_{knn} = 0.3$, $F1_{kmeans} = 0.36$, $F1_{RF} = 0.4215$" + ] + }, + { + "cell_type": "markdown", + "id": "ca54d1b2", + "metadata": {}, + "source": [ + "### Next objectives:\n", + "\n", + "1. Try grouping by other features, such as duration or distance\n", + "2. For similarity search, use other techniques such as clustering or KNN" + ] + }, + { + "cell_type": "markdown", + "id": "c339fcc6", + "metadata": {}, + "source": [ + "# Multi-level modeling" + ] + }, + { + "cell_type": "markdown", + "id": "213676ec", + "metadata": {}, + "source": [ + "In this approach, we want to piece together the similarity search and modeling processes. Here's a rough sketch of how it should be implemented:\n", + "\n", + "1. For every user in the training set, build a model using their entire trip history.\n", + "2. Consolidate these user-level models in data structure, preferably a dictionary.\n", + "3. Now, when we want to perform inference on a new user with no prior trips, we use the similarity search to get the user ID in the training set who is the most similar to the user in question.\n", + "4. We retrieve the model for this corresponding user and perform an inference. The hypothesis is that since the two users are similar, their trip substitution patterns are also similar." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ca9e6e6a", + "metadata": {}, + "outputs": [], + "source": [ + "# def construct_model_dictionary(train: pd.DataFrame):\n", + " \n", + "# def train_on_user(user_id: str):\n", + "# '''\n", + "# Given the training set and the user ID to query, filter the dataset and\n", + "# retain only the relevant trips. Then, create folds and optimize a model for this user.\n", + "# Return the trained model instance.\n", + "# '''\n", + " \n", + "# user_data = train.loc[train.user_id == user_id, :].reset_index(drop=True)\n", + " \n", + " " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "emission", + "language": "python", + "name": "emission" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 5da3cdb7d375507538e8586f0db4fa617ac75fc0 Mon Sep 17 00:00:00 2001 From: Rahul Kulhalli Date: Mon, 1 Apr 2024 10:36:17 -0400 Subject: [PATCH 14/16] Added multi-source preprocessing notebooks --- .../multisource_data/01_extract_db_data.ipynb | 1008 +++++++++++++++++ .../02_extract_section_information.ipynb | 299 +++++ 2 files changed, 1307 insertions(+) create mode 100644 rm_src/multisource_data/01_extract_db_data.ipynb create mode 100644 rm_src/multisource_data/02_extract_section_information.ipynb diff --git a/rm_src/multisource_data/01_extract_db_data.ipynb b/rm_src/multisource_data/01_extract_db_data.ipynb new file mode 100644 index 0000000..c907842 --- /dev/null +++ b/rm_src/multisource_data/01_extract_db_data.ipynb @@ -0,0 +1,1008 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "38b147ff", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import sys\n", + "import pickle\n", + "import importlib\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "\n", + "from pathlib import Path\n", + "from uuid import UUID\n", + "from collections import defaultdict\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "e550aa2b", + "metadata": {}, + "outputs": [], + "source": [ + "INCLUDE_TEST_USERS = False" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "39306a1d", + "metadata": {}, + "outputs": [], + "source": [ + "emission_path = Path(os.getcwd()).parent.parent / 'my_emission_server' / 'e-mission-server'\n", + "sys.path.append(str(emission_path))\n", + "\n", + "# Also add the home (viz_scripts) to the path\n", + "sys.path.append('../viz_scripts')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "e171e277", + "metadata": {}, + "outputs": [], + "source": [ + "DB_SOURCE = [\n", + " \"Stage_database\",\n", + " \"openpath_prod_durham\",\n", + " \"openpath_prod_mm_masscec\",\n", + " \"openpath_prod_ride2own\",\n", + " # No replaced mode!\n", + " \"openpath_prod_uprm_civic\",\n", + " \"openpath_prod_uprm_nicr\"\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "70fa3112", + "metadata": {}, + "outputs": [], + "source": [ + "CURRENT_DB = DB_SOURCE[0]\n", + "\n", + "assert CURRENT_DB in DB_SOURCE" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "bbde79d1", + "metadata": {}, + "outputs": [], + "source": [ + "# ['p_micro', 'no_trip', 's_car', 'transit', 'car', 's_micro', 'ridehail', 'walk', 'unknown']\n", + "\n", + "REPLACED_MODE_DICT = {\n", + " \"Stage_database\": {\n", + " 'no_travel': 'no_trip',\n", + " 'Unknown': 'unknown',\n", + " 'bus': 'transit',\n", + " 'drove_alone': 'car',\n", + " 'bike': 'p_micro',\n", + " 'shared_ride': 's_car',\n", + " 'walk': 'walk',\n", + " 'train': 'transit',\n", + " 'bikeshare': 's_micro',\n", + " 'not_a trip': 'no_trip',\n", + " 'pilot_ebike': 'p_micro',\n", + " 'electric_car': 'car',\n", + " 'taxi': 'ridehail',\n", + " 'not_a_trip': 'no_trip',\n", + " 'run': 'walk',\n", + " 'scootershare': 's_micro',\n", + " 'tramway': 'transit',\n", + " 'free_shuttle': 'transit',\n", + " 'e-bike': 'p_micro',\n", + " 'rental_car': 'car',\n", + " 'train_+ bus': 'transit',\n", + " 'skateboard': 'p_micro',\n", + " 'snowboarding': 'p_micro',\n", + " 'e_bike': 'p_micro',\n", + " 'golf_cart': 'unknown',\n", + " 'emergency_vehicle with others': 's_car',\n", + " 'call_friend': 's_car',\n", + " 'no_replacement': 'no_travel',\n", + " 'doing_nothing': 'no_trip',\n", + " 'na': 'no_trip',\n", + " 'ebike': 'p_micro',\n", + " 'hiking': 'walk',\n", + " 'n/a': 'no_trip',\n", + " 'testing': 'unknown',\n", + " 'home': 'no_trip',\n", + " 'must_walk 3-5 mi a day for back': 'walk',\n", + " 'family': 's_car',\n", + " 'car': 'car',\n", + " 'pilot_e-bike': 'p_micro',\n", + " 'pilot_bike': 'p_micro',\n", + " 'time_spent on the clock at amazon': 'no_trip',\n", + " 'working': 'no_trip',\n", + " 'walk_at work': 'walk',\n", + " 'sitting_on my butt doing nothing': 'no_trip',\n", + " 'nothing._delivered food for work': 'no_trip',\n", + " 'train,_bus and walk': 'transit',\n", + " 'work_vehicle': 'car',\n", + " 'friend_picked me up': 's_car',\n", + " 'ski': 'p_micro',\n", + " 'not_accurate': 'unknown',\n", + " 'stolen_ebike': 'p_micro'\n", + " },\n", + " \"openpath_prod_durham\": {\n", + " 'Unknown': 'unknown',\n", + " 'bike': 'p_micro',\n", + " 'shared_ride': 's_car',\n", + " 'drove_alone': 'car',\n", + " 'bus': 'transit',\n", + " 'no_travel': 'no_trip',\n", + " 'scootershare': 's_micro',\n", + " 'walk': 'walk',\n", + " 'taxi': 'ridehail',\n", + " 'e_car_drove_alone': 'car',\n", + " 'bikeshare': 's_micro',\n", + " 'ebike': 'p_micro',\n", + " 'train': 'transit',\n", + " 'e_car_shared_ride': 's_car'\n", + " },\n", + " \"openpath_prod_mm_masscec\": {\n", + " 'Unknown': 'unknown',\n", + " 'drove_alone': 'car',\n", + " 'walk': 'walk',\n", + " 'shared_ride': 's_car',\n", + " 'bike': 'p_micro',\n", + " 'bikeshare': 's_micro',\n", + " 'no_travel': 'no_trip',\n", + " 'taxi': 'ridehail',\n", + " 'bus': 'transit',\n", + " 'scootershare': 's_micro',\n", + " 'train': 'transit',\n", + " 'walking': 'walk',\n", + " 'e_car_drove_alone': 'car'\n", + " },\n", + " \"openpath_prod_ride2own\": {\n", + " 'Unknown': 'unknown',\n", + " 'drove_alone': 'car',\n", + " 'walk': 'walk',\n", + " 'shared_ride': 's_car',\n", + " 'bike': 'p_micro',\n", + " 'no_travel': 'no_trip',\n", + " 'taxi': 'ridehail',\n", + " 'bus': 'transit',\n", + " 'train': 'transit',\n", + " 'e_car_drove_alone': 'car',\n", + " 'e_car_shared_ride': 's_car'\n", + " },\n", + " \"openpath_prod_uprm_nicr\": {\n", + " 'Unknown': 'unknown',\n", + " 'walk': 'walk',\n", + " 'drove_alone': 'car'\n", + " }\n", + "}\n", + "\n", + "SURVEY_DATA_DICT = {\n", + " \"Stage_database\": {\n", + " \"Unique User ID (auto-filled, do not edit)\": \"user_id\",\n", + " \"In which year were you born?\": \"birth_year\",\n", + " \"What is your gender?\": \"gender\",\n", + " \"Do you have a valid driver's license?\": \"has_drivers_license\",\n", + " \"Are you a student?\": \"is_student\",\n", + " \"What is the highest grade or degree that you have completed?\": \"highest_education\",\n", + " \"Do you work for either pay or profit?\": \"is_paid\",\n", + " \"Do you have more than one job?\": \"has_multiple_jobs\",\n", + " \"Do you work full-time or part-time at your primary job?\": \"primary_job_type\",\n", + " \"Which best describes your primary job?\": \"primary_job_description\",\n", + " \"How did you usually get to your primary job last week? \": \"primary_job_commute_mode\",\n", + " \"Thinking about your daily commute to work last week, how many minutes did it usually take to get from home to the primary job/work place?\": \"primary_job_commute_time\",\n", + " \"At your primary job, do you have the ability to set or change your own start time?\": \"is_primary_job_flexible\",\n", + " \"Do you have the option of working from home or an alternate location instead of going into your primary work place?\": \"primary_job_can_wfh\",\n", + " \"How many days per week do you usually work from home or an alternate location?\": \"wfh_days\",\n", + " \"Do you own or rent your place of residence?\": \"residence_ownership_type\",\n", + " \"What is your home type?\": \"residence_type\",\n", + " \"Please identify which category represents your total household income, before taxes, for last year.\": \"income_category\",\n", + " \"Including yourself, how many people live in your home?\": \"n_residence_members\",\n", + " \"How many children under age 18 live in your home?\": \"n_residents_u18\",\n", + " \"Including yourself, how many people have a driver's license in your household?\": \"n_residents_with_license\",\n", + " \"How many motor vehicles are owned, leased, or available for regular use by the people who currently live in your household?\": \"n_motor_vehicles\",\n", + " \"If you were unable to use your household vehicle(s), which of the following options would be available to you to get you from place to place?\": \"available_modes\",\n", + " \"Do you have a medical condition that makes it difficult to travel outside of the home?\": \"has_medical_condition\",\n", + " \"How long have you had this condition?\": \"medical_condition_duration\"\n", + " },\n", + " # Retrieved from: e-mission-phone/survey-resources/data-xls/demo-survey-v1.xlsx\n", + " \"openpath_prod_durham\": {\n", + " \"At_your_primary_job_do_you_ha\": \"is_primary_job_flexible\",\n", + " \"Which_best_describes_your_prim\": \"primary_job_description\",\n", + " \"Do_you_work_full_time_or_part_\": \"primary_job_type\",\n", + " \"Do_you_have_the_option_of_work\": \"primary_job_can_wfh\",\n", + " \"Please_describe_your_primary_job\": \"primary_job_description\",\n", + " \"Do_you_have_more_than_one_job\": \"has_multiple_jobs\",\n", + " # Two columns: how many days/week do you work & what days of the week do you work. \n", + " # the latter has only 4 NA values, the former has 45 NA values.\n", + " \"What_days_of_the_week_do_you_t\": \"wfh_days\",\n", + " \"How_many_days_do_you_usually_w_001\": \"n_wfh_days\",\n", + " # All these are NAs.\n", + " \"Which_one_below_describe_you_b\": \"description\",\n", + " \"What_is_your_race_ethnicity\": \"race_or_ethnicity\",\n", + " \"Are_you_a_student\": \"is_student\",\n", + " \"What_is_the_highest_grade_or_d\": \"highest_education\",\n", + " \"do_you_consider_yourself_to_be\": \"is_transgender\",\n", + " \"What_is_your_gender\": \"gender\",\n", + " \"How_old_are_you\": \"age\",\n", + " \"Are_you_a_paid_worker\": \"is_paid\",\n", + " \"Do_you_have_a_driver_license\": \"has_drivers_license\",\n", + " \"How_long_you_had_this_conditio\": \"medical_condition_duration\",\n", + " \"Including_yourself_how_many_w_001\": \"n_residents_u18\",\n", + " \"Including_yourself_how_many_p\": \"n_residence_members\",\n", + " \"Do_you_own_or_rent_your_home\": \"residence_ownership_type\",\n", + " \"Please_identify_which_category\": \"income_category\",\n", + " \"If_you_were_unable_to_use_your\": \"available_modes\",\n", + " \"Including_yourself_how_many_p_001\": \"n_residents_with_license\",\n", + " \"Including_yourself_how_many_w\": \"n_working_residents\",\n", + " \"What_is_your_home_type\": \"residence_type\",\n", + " \"How_many_motor_vehicles_are_ow\": \"n_motor_vehicles\",\n", + " \"Do_you_have_a_condition_or_han\": \"has_medical_condition\"\n", + " },\n", + " \"openpath_prod_mm_masscec\": {\n", + " # Same questions as Durham.\n", + " \"At_your_primary_job_do_you_ha\": \"is_primary_job_flexible\",\n", + " \"Which_best_describes_your_prim\": \"primary_job_description\",\n", + " \"Do_you_work_full_time_or_part_\": \"primary_job_type\",\n", + " \"Do_you_have_the_option_of_work\": \"primary_job_can_wfh\",\n", + " \"Please_describe_your_primary_job\": \"primary_job_description\",\n", + " \"Do_you_have_more_than_one_job\": \"has_multiple_jobs\",\n", + " # Two columns: how many days/week do you work & what days of the week do you work. \n", + " # the latter has only 4 NA values, the former has 45 NA values.\n", + " \"What_days_of_the_week_do_you_t\": \"wfh_days\",\n", + " \"How_many_days_do_you_usually_w_001\": \"n_wfh_days\",\n", + " # All these are NAs.\n", + " \"Which_one_below_describe_you_b\": \"description\",\n", + " \"What_is_your_race_ethnicity\": \"race_or_ethnicity\",\n", + " \"Are_you_a_student\": \"is_student\",\n", + " \"What_is_the_highest_grade_or_d\": \"highest_education\",\n", + " \"do_you_consider_yourself_to_be\": \"is_transgender\",\n", + " \"What_is_your_gender\": \"gender\",\n", + " \"How_old_are_you\": \"age\",\n", + " \"Are_you_a_paid_worker\": \"is_paid\",\n", + " \"Do_you_have_a_driver_license\": \"has_drivers_license\",\n", + " \"How_long_you_had_this_conditio\": \"medical_condition_duration\",\n", + " \"Including_yourself_how_many_w_001\": \"n_residents_u18\",\n", + " \"Including_yourself_how_many_p\": \"n_residence_members\",\n", + " \"Do_you_own_or_rent_your_home\": \"residence_ownership_type\",\n", + " \"Please_identify_which_category\": \"income_category\",\n", + " \"If_you_were_unable_to_use_your\": \"available_modes\",\n", + " \"Including_yourself_how_many_p_001\": \"n_residents_with_license\",\n", + " \"Including_yourself_how_many_w\": \"n_working_residents\",\n", + " \"What_is_your_home_type\": \"residence_type\",\n", + " \"How_many_motor_vehicles_are_ow\": \"n_motor_vehicles\",\n", + " \"Do_you_have_a_condition_or_han\": \"has_medical_condition\"\n", + " },\n", + " \"openpath_prod_ride2own\": {\n", + " # Same questions as Durham.\n", + " \"How_old_are_you\": \"age\",\n", + " \"What_is_your_gender\": \"gender\",\n", + " \"do_you_consider_yourself_to_be\": \"is_transgender\",\n", + " \"What_is_your_race_ethnicity\": \"race_or_ethnicity\",\n", + " \"Do_you_have_a_driver_license\": \"has_drivers_license\",\n", + " \"Are_you_a_student\": \"is_student\",\n", + " \"What_is_the_highest_grade_or_d\": \"highest_education\",\n", + " \"Are_you_a_paid_worker\": \"is_paid\",\n", + " \"Which_one_below_describe_you_b\": \"description\",\n", + " \"Do_you_own_or_rent_your_home\": \"residence_ownership_type\",\n", + " \"What_is_your_home_type\": \"residence_type\",\n", + " \"Please_identify_which_category\": \"income_category\",\n", + " \"Including_yourself_how_many_p\": \"n_residence_members\",\n", + " \"Including_yourself_how_many_w\": \"n_working_residents\",\n", + " \"Including_yourself_how_many_p_001\": \"n_residents_with_license\",\n", + " \"Including_yourself_how_many_w_001\": \"n_residents_u18\",\n", + " \"How_many_motor_vehicles_are_ow\": \"n_motor_vehicles\",\n", + " \"If_you_were_unable_to_use_your\": \"available_modes\",\n", + " \"Do_you_have_a_condition_or_han\": \"has_medical_condition\",\n", + " \"How_long_you_had_this_conditio\": \"medical_condition_duration\",\n", + " \"Do_you_have_more_than_one_job\": \"has_multiple_jobs\",\n", + " \"Do_you_work_full_time_or_part_\": \"primary_job_type\",\n", + " \"Which_best_describes_your_prim\": \"primary_job_description\",\n", + " \"Please_describe_your_primary_job\": \"primary_job_description\",\n", + " \"At_your_primary_job_do_you_ha\": \"is_primary_job_flexible\",\n", + " \"Do_you_have_the_option_of_work\": \"primary_job_can_wfh\",\n", + " \"How_many_days_do_you_usually_w_001\": \"n_wfh_days\",\n", + " \"What_days_of_the_week_do_you_t\": \"wfh_days\"\n", + " },\n", + " \"openpath_prod_uprm_nicr\": {\n", + " # Same as Durham!\n", + " \"At_your_primary_job_do_you_ha\": \"is_primary_job_flexible\",\n", + " \"Which_best_describes_your_prim\": \"primary_job_description\",\n", + " \"Do_you_work_full_time_or_part_\": \"primary_job_type\",\n", + " \"Do_you_have_the_option_of_work\": \"primary_job_can_wfh\",\n", + " \"Please_describe_your_primary_job\": \"primary_job_description\",\n", + " \"Do_you_have_more_than_one_job\": \"has_multiple_jobs\",\n", + " # Two columns: how many days/week do you work & what days of the week do you work. \n", + " # the latter has only 4 NA values, the former has 45 NA values.\n", + " \"What_days_of_the_week_do_you_t\": \"wfh_days\",\n", + " \"How_many_days_do_you_usually_w_001\": \"n_wfh_days\",\n", + " # All these are NAs.\n", + " \"Which_one_below_describe_you_b\": \"description\",\n", + " \"What_is_your_race_ethnicity\": \"race_or_ethnicity\",\n", + " \"Are_you_a_student\": \"is_student\",\n", + " \"What_is_the_highest_grade_or_d\": \"highest_education\",\n", + " \"do_you_consider_yourself_to_be\": \"is_transgender\",\n", + " \"What_is_your_gender\": \"gender\",\n", + " \"How_old_are_you\": \"age\",\n", + " \"Are_you_a_paid_worker\": \"is_paid\",\n", + " \"Do_you_have_a_driver_license\": \"has_drivers_license\",\n", + " \"How_long_you_had_this_conditio\": \"medical_condition_duration\",\n", + " \"Including_yourself_how_many_w_001\": \"n_residents_u18\",\n", + " \"Including_yourself_how_many_p\": \"n_residence_members\",\n", + " \"Do_you_own_or_rent_your_home\": \"residence_ownership_type\",\n", + " \"Please_identify_which_category\": \"income_category\",\n", + " \"If_you_were_unable_to_use_your\": \"available_modes\",\n", + " \"Including_yourself_how_many_p_001\": \"n_residents_with_license\",\n", + " \"Including_yourself_how_many_w\": \"n_working_residents\",\n", + " \"What_is_your_home_type\": \"residence_type\",\n", + " \"How_many_motor_vehicles_are_ow\": \"n_motor_vehicles\",\n", + " \"Do_you_have_a_condition_or_han\": \"has_medical_condition\"\n", + " }\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "4df64ba8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'birth_year',\n", + " 'primary_job_commute_mode',\n", + " 'primary_job_commute_time',\n", + " 'user_id'}" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "set(SURVEY_DATA_DICT[\"Stage_database\"].values()).difference(\n", + " set(SURVEY_DATA_DICT[\"openpath_prod_durham\"].values())\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "69008893", + "metadata": {}, + "outputs": [], + "source": [ + "## Source: db_utils.py in op-admin-dashboard.\n", + "\n", + "BINARY_DEMOGRAPHICS_COLS = [\n", + " 'user_id',\n", + " '_id',\n", + "]\n", + "\n", + "EXCLUDED_DEMOGRAPHICS_COLS = [\n", + " 'data.xmlResponse', \n", + " 'data.name',\n", + " 'data.version',\n", + " 'data.label',\n", + " 'xmlns:jr',\n", + " 'xmlns:orx',\n", + " 'id',\n", + " 'start',\n", + " 'end',\n", + " 'attrxmlns:jr',\n", + " 'attrxmlns:orx',\n", + " 'attrid',\n", + " '__version__',\n", + " 'attrversion',\n", + " 'instanceID',\n", + "]" + ] + }, + { + "cell_type": "markdown", + "id": "4357d455", + "metadata": {}, + "source": [ + "Ensure that you point the database to the appropriate name" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "255b8896", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "storage not configured, falling back to sample, default configuration\n", + "URL not formatted, defaulting to Stage_database\n", + "Connecting to database URL localhost\n" + ] + } + ], + "source": [ + "import scaffolding\n", + "import emission.core.get_database as edb\n", + "import emission.storage.timeseries.abstract_timeseries as esta" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "12cc0c54", + "metadata": {}, + "outputs": [], + "source": [ + "## Source: scaffolding.py\n", + "\n", + "def expand_userinputs(labeled_ct):\n", + " '''\n", + " param: labeled_ct: a dataframe of confirmed trips, some of which have labels\n", + " params: labels_per_trip: the number of labels for each trip.\n", + " Currently, this is 2 for studies and 3 for programs, and should be \n", + " passed in by the notebook based on the input config.\n", + " If used with a trip-level survey, it could be even larger.\n", + " '''\n", + " # CASE 1 of https://github.com/e-mission/em-public-dashboard/issues/69#issuecomment-1256835867\n", + " if len(labeled_ct) == 0:\n", + " return labeled_ct\n", + " label_only = pd.DataFrame(labeled_ct.user_input.to_list(), index=labeled_ct.index)\n", + " # disp.display(label_only.head())\n", + " labels_per_trip = len(label_only.columns)\n", + " print(\"Found %s columns of length %d\" % (label_only.columns, labels_per_trip))\n", + " expanded_ct = pd.concat([labeled_ct, label_only], axis=1)\n", + " assert len(expanded_ct) == len(labeled_ct), \\\n", + " (\"Mismatch after expanding labels, expanded_ct.rows = %s != labeled_ct.rows %s\" %\n", + " (len(expanded_ct), len(labeled_ct)))\n", + " print(\"After expanding, columns went from %s -> %s\" %\n", + " (len(labeled_ct.columns), len(expanded_ct.columns)))\n", + " assert len(expanded_ct.columns) == len(labeled_ct.columns) + labels_per_trip, \\\n", + " (\"Mismatch after expanding labels, expanded_ct.columns = %s != labeled_ct.columns %s\" %\n", + " (len(expanded_ct.columns), len(labeled_ct.columns)))\n", + " # disp.display(expanded_ct.head())\n", + " return expanded_ct" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "9a98e2fb", + "metadata": {}, + "outputs": [], + "source": [ + "## Source: scaffolding.py\n", + "\n", + "def data_quality_check(expanded_ct):\n", + " '''1. Delete rows where the mode_confirm was pilot_ebike and repalced_mode was pilot_ebike.\n", + " 2. Delete rows where the mode_confirm was pilot_ebike and repalced_mode was same_mode.\n", + " 3. Replace same_mode for the mode_confirm for Energy Impact Calcualtion.'''\n", + "\n", + " # TODO: This is only really required for the initial data collection around the minipilot\n", + " # in subsequent deployes, we removed \"same mode\" and \"pilot_ebike\" from the options, so the\n", + " # dataset did not contain of these data quality issues\n", + "\n", + " if 'replaced_mode' in expanded_ct.columns:\n", + " expanded_ct.drop(expanded_ct[(expanded_ct['mode_confirm'] == 'pilot_ebike') & (expanded_ct['replaced_mode'] == 'pilot_ebike')].index, inplace=True)\n", + " expanded_ct.drop(expanded_ct[(expanded_ct['mode_confirm'] == 'pilot_ebike') & (expanded_ct['replaced_mode'] == 'same_mode')].index, inplace=True)\n", + " expanded_ct['replaced_mode'] = np.where(expanded_ct['replaced_mode'] == 'same_mode',expanded_ct['mode_confirm'], expanded_ct['replaced_mode'])\n", + " \n", + " return expanded_ct" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "fe37bf27", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Before filtering, length=241123\n", + "After filtering, length=241123\n", + "Found Index(['mode_confirm', 'purpose_confirm', 'replaced_mode'], dtype='object') columns of length 3\n", + "After expanding, columns went from 41 -> 44\n", + "['source', 'end_ts', 'end_fmt_time', 'end_loc', 'raw_trip', 'start_ts', 'start_fmt_time', 'start_loc', 'duration', 'distance', 'start_place', 'end_place', 'cleaned_trip', 'inferred_labels', 'inferred_trip', 'expectation', 'confidence_threshold', 'expected_trip', 'user_input', 'section_modes', 'section_distances', 'start_local_dt_year', 'start_local_dt_month', 'start_local_dt_day', 'start_local_dt_hour', 'start_local_dt_minute', 'start_local_dt_second', 'start_local_dt_weekday', 'start_local_dt_timezone', 'end_local_dt_year', 'end_local_dt_month', 'end_local_dt_day', 'end_local_dt_hour', 'end_local_dt_minute', 'end_local_dt_second', 'end_local_dt_weekday', 'end_local_dt_timezone', '_id', 'user_id', 'metadata_write_ts', 'additions', 'mode_confirm', 'purpose_confirm', 'replaced_mode']\n" + ] + } + ], + "source": [ + "## Source: scaffolding.py\n", + "\n", + "uuid_df = pd.json_normalize(list(edb.get_uuid_db().find()))\n", + "\n", + "if not INCLUDE_TEST_USERS:\n", + " uuid_df = uuid_df.loc[~uuid_df.user_email.str.contains('_test_'), :]\n", + "\n", + "filtered = uuid_df.uuid.unique()\n", + "\n", + "agg = esta.TimeSeries.get_aggregate_time_series()\n", + "all_ct = agg.get_data_df(\"analysis/confirmed_trip\", None)\n", + "\n", + "print(f\"Before filtering, length={len(all_ct)}\")\n", + "participant_ct_df = all_ct.loc[all_ct.user_id.isin(filtered), :]\n", + "print(f\"After filtering, length={len(participant_ct_df)}\")\n", + "\n", + "expanded_ct = expand_userinputs(participant_ct_df)\n", + "expanded_ct = data_quality_check(expanded_ct)\n", + "print(expanded_ct.columns.tolist())\n", + "expanded_ct['replaced_mode'] = expanded_ct['replaced_mode'].fillna('Unknown')" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "13536d14", + "metadata": {}, + "outputs": [], + "source": [ + "# # Additional preprocessing for replaced mode (if any)\n", + "\n", + "mode_counts = expanded_ct['replaced_mode'].value_counts()\n", + "drop_modes = mode_counts[mode_counts == 1].index.tolist()\n", + "\n", + "expanded_ct.drop(\n", + " index=expanded_ct.loc[expanded_ct.replaced_mode.isin(drop_modes)].index,\n", + " inplace=True\n", + ")\n", + "\n", + "# Additional modes to drop.\n", + "expanded_ct.drop(\n", + " index=expanded_ct.loc[expanded_ct.replaced_mode.isin(\n", + " # Remove all rows with air, boat, or weird answers.\n", + " ['houseboat', 'gondola', 'airline_flight', 'aircraft', 'zoo', 'air',\n", + " 'airplane', 'boat', 'flight', 'plane', 'meal', 'lunch']\n", + " )].index,\n", + " inplace=True\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "2b56af00", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['no_travel' 'Unknown' 'bus' 'drove_alone' 'bike' 'shared_ride' 'walk'\n", + " 'train' 'bikeshare' 'not_a trip' 'pilot_ebike' 'electric_car' 'taxi'\n", + " 'not_a_trip' 'run' 'scootershare' 'tramway' 'free_shuttle' 'e-bike'\n", + " 'rental_car' 'train_+ bus' 'skateboard' 'e_bike' 'golf_cart'\n", + " 'emergency_vehicle with others' 'call_friend' 'no_replacement'\n", + " 'doing_nothing' 'na' 'ebike' 'hiking' 'ski' 'not_accurate' 'pilot_bike'\n", + " 'snowboarding' 'stolen_ebike' 'n/a' 'testing' 'home'\n", + " 'must_walk 3-5 mi a day for back' 'family' 'car' 'pilot_e-bike'\n", + " 'time_spent on the clock at amazon' 'working' 'walk_at work'\n", + " 'sitting_on my butt doing nothing' 'nothing._delivered food for work'\n", + " 'train,_bus and walk' 'work_vehicle' 'friend_picked me up']\n" + ] + } + ], + "source": [ + "print(expanded_ct.replaced_mode.unique())" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "757ccbee", + "metadata": {}, + "outputs": [], + "source": [ + "expanded_ct.replaced_mode = expanded_ct.replaced_mode.apply(lambda x: REPLACED_MODE_DICT[CURRENT_DB][x])" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "c878ad12", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['no_trip' 'unknown' 'transit' 'car' 'p_micro' 's_car' 'walk' 's_micro'\n", + " 'ridehail' 'no_travel']\n" + ] + } + ], + "source": [ + "print(expanded_ct.replaced_mode.unique())" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "7461a4d2", + "metadata": {}, + "outputs": [], + "source": [ + "# Demographics\n", + "\n", + "if CURRENT_DB != \"Stage_database\":\n", + "\n", + " decoded_uuids = [str(x) for x in filtered]\n", + "\n", + " ## Source: query_demographics() in op-admin-dashboard.\n", + " ts = esta.TimeSeries.get_aggregate_time_series()\n", + " entries = list(ts.find_entries([\"manual/demographic_survey\"]))\n", + "\n", + " available_key = {}\n", + " for entry in entries:\n", + " survey_key = list(entry['data']['jsonDocResponse'].keys())[0]\n", + " if survey_key not in available_key:\n", + " available_key[survey_key] = []\n", + "\n", + " # Minor modification: Added user_id check to filter users.\n", + " if str(entry['user_id']) in decoded_uuids:\n", + " available_key[survey_key].append(entry)\n", + "\n", + " dataframes = {}\n", + " for key, json_object in available_key.items():\n", + " df = pd.json_normalize(json_object)\n", + " dataframes[key] = df\n", + "\n", + " for key, df in dataframes.items():\n", + " if not df.empty:\n", + " for col in BINARY_DEMOGRAPHICS_COLS:\n", + " if col in df.columns:\n", + " df[col] = df[col].apply(str) \n", + " columns_to_drop = [col for col in df.columns if col.startswith(\"metadata\")]\n", + " df.drop(columns= columns_to_drop, inplace=True) \n", + " df.columns=[col.rsplit('.',1)[-1] if col.startswith('data.jsonDocResponse.') else col for col in df.columns]\n", + " for col in EXCLUDED_DEMOGRAPHICS_COLS:\n", + " if col in df.columns:\n", + " df.drop(columns= [col], inplace=True)\n", + "\n", + " survey_data = pd.DataFrame() \n", + " for v in dataframes.values():\n", + " survey_data = pd.concat([survey_data, v], axis=0, ignore_index=True)\n", + "else:\n", + " # Read the demographics.\n", + " survey_data = pd.read_csv('../viz_scripts/Can Do Colorado eBike Program - en.csv')\n", + " survey_data.rename(columns={'Unique User ID (auto-filled, do not edit)': 'user_id'}, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "a6be751e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "203 261\n" + ] + } + ], + "source": [ + "print(len(survey_data.user_id.unique()), len(expanded_ct.user_id.unique()))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "9ebc87d8", + "metadata": {}, + "outputs": [], + "source": [ + "survey_data.rename(SURVEY_DATA_DICT[CURRENT_DB], axis='columns', inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "86bd8337", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
user_id
0a2d48b05d5454d428c0841432c7467b6
1f2799dc202bc4249b42a4fda8770d1b6
2b2bbe715b6a14fd19f751cae8adf6b4e
36373dfb8cb9b47e88e8f76adcfadde20
493c6e0f156a44e07b920ded664419dc6
\n", + "
" + ], + "text/plain": [ + " user_id\n", + "0 a2d48b05d5454d428c0841432c7467b6\n", + "1 f2799dc202bc4249b42a4fda8770d1b6\n", + "2 b2bbe715b6a14fd19f751cae8adf6b4e\n", + "3 6373dfb8cb9b47e88e8f76adcfadde20\n", + "4 93c6e0f156a44e07b920ded664419dc6" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "display(survey_data[['user_id']].head())\n", + "print(type(survey_data['user_id'][0]))" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "189ab848", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
user_id
08a0473ca-e53d-4720-a99c-0696cc1fb407
10a093cbd-b536-43af-b03d-293425e84c76
20a093cbd-b536-43af-b03d-293425e84c76
30a093cbd-b536-43af-b03d-293425e84c76
40a093cbd-b536-43af-b03d-293425e84c76
\n", + "
" + ], + "text/plain": [ + " user_id\n", + "0 8a0473ca-e53d-4720-a99c-0696cc1fb407\n", + "1 0a093cbd-b536-43af-b03d-293425e84c76\n", + "2 0a093cbd-b536-43af-b03d-293425e84c76\n", + "3 0a093cbd-b536-43af-b03d-293425e84c76\n", + "4 0a093cbd-b536-43af-b03d-293425e84c76" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "display(expanded_ct[['user_id']].head())\n", + "print(type(expanded_ct['user_id'][0]))" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "c7eb2e09", + "metadata": {}, + "outputs": [], + "source": [ + "# Additional preprocessing to filter unwanted users from sensed trips data.\n", + "ct_users = expanded_ct['user_id'].apply(lambda x: str(x).replace('-', ''))\n", + "survey_users = survey_data['user_id'].apply(lambda x: str(x).replace('-', ''))\n", + "\n", + "common = set(ct_users.unique()).intersection(set(survey_users.unique()))\n", + "\n", + "filtered_trips = expanded_ct.loc[ct_users.isin(common), :].reset_index(drop=True)\n", + "filtered_survey = survey_data.loc[survey_users.isin(common), :].reset_index(drop=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "1ca22a08", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[trip data] After filtering, size goes from 240962 -> 205388\n", + "[trip data] Unique users after filtering: 184\n", + "[survey data] After filtering, size goes from 310 -> 286\n", + "[survey data] Unique users after filtering: 184\n" + ] + } + ], + "source": [ + "print(f\"[trip data] After filtering, size goes from {expanded_ct.shape[0]} -> {filtered_trips.shape[0]}\")\n", + "print(f\"[trip data] Unique users after filtering: {len(filtered_trips.user_id.unique())}\")\n", + "\n", + "print(f\"[survey data] After filtering, size goes from {survey_users.shape[0]} -> {filtered_survey.shape[0]}\")\n", + "print(f\"[survey data] Unique users after filtering: {len(filtered_survey.user_id.unique())}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "b48cd6e2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "uuid.UUID" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(filtered_trips.user_id[0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "86deb40c", + "metadata": {}, + "outputs": [], + "source": [ + "# raw data dump.\n", + "expanded_ct.to_csv(f'../data/raw_data/trips__{CURRENT_DB}.csv', index=False)\n", + "survey_data.to_csv(f'../data/raw_data/survey__{CURRENT_DB}.csv', index=False)\n", + "\n", + "# filtered data dump.\n", + "filtered_trips.to_csv(f'../data/filtered_data/trips__{CURRENT_DB}.csv', index=False)\n", + "filtered_survey.to_csv(f'../data/filtered_data/survey__{CURRENT_DB}.csv', index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a1b140b9", + "metadata": {}, + "outputs": [], + "source": [ + "# durham has section modes and section distances.\n", + "# masscec does not have section distance and section modes.\n", + "# ride2own does not have section distances and modes.\n", + "# uprm nicr also does not have section distances and modes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "062c18c7", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ea248509", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "emission", + "language": "python", + "name": "emission" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/rm_src/multisource_data/02_extract_section_information.ipynb b/rm_src/multisource_data/02_extract_section_information.ipynb new file mode 100644 index 0000000..ee5c2ac --- /dev/null +++ b/rm_src/multisource_data/02_extract_section_information.ipynb @@ -0,0 +1,299 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "e3166085", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import sys\n", + "import pickle\n", + "import ast\n", + "import importlib\n", + "# from multiprocessing import cpu_count, Pool\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "\n", + "from enum import Enum\n", + "from pathlib import Path\n", + "from uuid import UUID\n", + "from bson.objectid import ObjectId\n", + "from collections import defaultdict\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "5d482225", + "metadata": {}, + "outputs": [], + "source": [ + "emission_path = Path(os.getcwd()).parent.parent / 'my_emission_server' / 'e-mission-server'\n", + "sys.path.append(str(emission_path))\n", + "\n", + "# Also add the home (viz_scripts) to the path\n", + "sys.path.append('../viz_scripts')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "cf187095", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "storage not configured, falling back to sample, default configuration\n", + "URL not formatted, defaulting to openpath_prod_ride2own\n", + "Connecting to database URL localhost\n" + ] + } + ], + "source": [ + "import scaffolding\n", + "\n", + "import emission.core.get_database as edb\n", + "import emission.storage.timeseries.abstract_timeseries as esta\n", + "import emission.storage.decorations.trip_queries as esdt" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "5eba5f02", + "metadata": {}, + "outputs": [], + "source": [ + "class Sections(Enum):\n", + " DURATION = 0\n", + " DISTANCE = 1\n", + " MODE = 2\n", + " \n", + "# A lightweight wrapper around the lists to ease management.\n", + "class SectionData:\n", + " def __init__(self, section_dict):\n", + " self._section_dict = section_dict\n", + " \n", + " def get_section_data(self, section: Sections):\n", + " if section not in self._section_dict:\n", + " return []\n", + " return self._section_dict[section]\n", + " \n", + "SENSED_MODE_DICT = {\n", + " 'IN_VEHICLE': 'car',\n", + " 'BICYCLING': 'p_micro',\n", + " ''\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "fcd776e5", + "metadata": {}, + "outputs": [], + "source": [ + "REQUIRED = {\n", + " \"Stage_database\": [Sections.DURATION],\n", + " \"openpath_prod_durham\": [Sections.DURATION],\n", + " \"openpath_prod_mm_masscec\": [Sections.DURATION, Sections.DISTANCE, Sections.MODE],\n", + " \"openpath_prod_ride2own\": [Sections.DURATION, Sections.DISTANCE, Sections.MODE],\n", + " \"openpath_prod_uprm_nicr\": [Sections.DURATION, Sections.DISTANCE, Sections.MODE]\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "be70ead8", + "metadata": {}, + "outputs": [], + "source": [ + "def get_section_data(df: pd.DataFrame, db_name: str):\n", + " \n", + " def _get_section_data(row):\n", + " \n", + " user_id, trip_id = UUID(row.user_id), ObjectId(row.cleaned_trip)\n", + " \n", + " section_data = esdt.get_sections_for_trip(\n", + " key='analysis/cleaned_section', user_id=user_id, trip_id=trip_id\n", + " )\n", + " \n", + " if section_data is None or len(section_data) == 0:\n", + " section_data = esdt.get_sections_for_trip(\n", + " key='analysis/inferred_section', user_id=user_id, trip_id=trip_id\n", + " )\n", + " \n", + " if section_data is None or len(section_data) == 0:\n", + " return None\n", + " \n", + " required = REQUIRED[db_name]\n", + " \n", + " section_dict = dict()\n", + " \n", + " if Sections.DURATION in required:\n", + " section_dict[Sections.DURATION] = [x.data.duration for x in section_data]\n", + " else:\n", + " section_dict[Sections.DURATION] = ast.literal_eval(x.section_durations)\n", + " \n", + " if Sections.DISTANCE in required:\n", + " section_dict[Sections.DISTANCE] = [x.data.distance for x in section_data]\n", + " else:\n", + " section_dict[Sections.DISTANCE] = ast.literal_eval(x.section_distances)\n", + " \n", + " if Sections.MODE in required:\n", + " section_dict[Sections.MODE] = [x.data.sensed_mode for x in section_data]\n", + " else:\n", + " section_dict[Sections.MODE] = ast.literal_eval(x.section_modes)\n", + " \n", + " return SectionData(section_dict)\n", + " \n", + " \n", + " section_series = df.apply(lambda x: _get_section_data(x), axis=1)\n", + " \n", + " return section_series" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "27cd85fd", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_33228/382724123.py:41: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " sections.loc[:, 'user_id'] = sections.loc[:, 'user_id'].apply(lambda x: UUID(x))\n", + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_33228/382724123.py:42: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " sections.loc[:, 'cleaned_trip'] = sections.loc[:, 'cleaned_trip'].apply(lambda x: ObjectId(x))\n" + ] + } + ], + "source": [ + "df = pd.read_csv('../data/filtered_data/trips__openpath_prod_ride2own.csv')\n", + "\n", + "section_info = get_section_data(df, 'openpath_prod_ride2own')" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "0ff2d17f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 <__main__.SectionData object at 0x165720d00>\n", + "1 <__main__.SectionData object at 0x165720880>\n", + "2 <__main__.SectionData object at 0x1657209d0>\n", + "3 <__main__.SectionData object at 0x165720f70>\n", + "4 <__main__.SectionData object at 0x165720fa0>\n", + " ... \n", + "5817 <__main__.SectionData object at 0x1659ebd60>\n", + "5818 <__main__.SectionData object at 0x1659eb400>\n", + "5819 <__main__.SectionData object at 0x1659ebf70>\n", + "5820 <__main__.SectionData object at 0x1659ebf10>\n", + "5821 <__main__.SectionData object at 0x1659eba60>\n", + "Length: 5822, dtype: object" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "section_info" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "938db9b9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{, , , , , }\n" + ] + } + ], + "source": [ + "modes = set()\n", + "for s in section_info:\n", + " modes.update(s.get_section_data(Sections.MODE))\n", + "\n", + "print(modes)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d30a8d58", + "metadata": {}, + "outputs": [], + "source": [ + "def compute_argmax(db_name: str, df:pd.DataFrame, sections: pd.Series):\n", + " # Evaluate once.\n", + " distance_mask = Sections.DISTANCE in REQUIRED[db_name]\n", + " mode_mask = Sections.MODE in REQUIRED[db_name]\n", + " \n", + " for ix, section in enumerate(sections):\n", + " distance = ast.literal_eval(\n", + " section.get_section_data(Sections.DISTANCE) if distance_mask else df.loc[ix, 'section_distances']\n", + " )\n", + " \n", + " duration = ast.literal_eval(section.get_section_data(Sections.DISTANCE))\n", + " \n", + " mode = ast.literal_eval(\n", + " section.get_section_data(Sections.DISTANCE) if distance_mask else df.loc[ix, 'section_modes']\n", + " )\n", + " \n", + " " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "emission", + "language": "python", + "name": "emission" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 483ccb6e690bfd0c882faaef4e4a8b1c022f493b Mon Sep 17 00:00:00 2001 From: Rahul Kulhalli Date: Mon, 29 Apr 2024 11:30:23 -0400 Subject: [PATCH 15/16] Added all four steps for user-level modeling --- rm_src/01_extract_db_data.ipynb | 1672 ++++++++++ ...riments.py => 02_run_trip_level_models.py} | 249 +- rm_src/03_user_level_models.ipynb | 2743 +++++++++++++++++ rm_src/04_FeatureClustering.ipynb | 1419 +++++++++ rm_src/UserLevelModeling.ipynb | 869 ------ 5 files changed, 5939 insertions(+), 1013 deletions(-) create mode 100644 rm_src/01_extract_db_data.ipynb rename rm_src/{run_baseline_experiments.py => 02_run_trip_level_models.py} (55%) create mode 100644 rm_src/03_user_level_models.ipynb create mode 100644 rm_src/04_FeatureClustering.ipynb delete mode 100644 rm_src/UserLevelModeling.ipynb diff --git a/rm_src/01_extract_db_data.ipynb b/rm_src/01_extract_db_data.ipynb new file mode 100644 index 0000000..619373b --- /dev/null +++ b/rm_src/01_extract_db_data.ipynb @@ -0,0 +1,1672 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "38b147ff", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import ast\n", + "import sys\n", + "import pickle\n", + "import importlib\n", + "\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "\n", + "from pandas.api.types import is_string_dtype\n", + "\n", + "from pathlib import Path\n", + "from uuid import UUID\n", + "from collections import defaultdict\n", + "\n", + "pd.set_option(\"display.max_columns\", 100)\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "e550aa2b", + "metadata": {}, + "outputs": [], + "source": [ + "INCLUDE_TEST_USERS = False" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "39306a1d", + "metadata": {}, + "outputs": [], + "source": [ + "emission_path = Path(os.getcwd()).parent.parent / 'my_emission_server' / 'e-mission-server'\n", + "sys.path.append(str(emission_path))\n", + "\n", + "# Also add the home (viz_scripts) to the path\n", + "sys.path.append('../viz_scripts')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "94f673d6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "storage not configured, falling back to sample, default configuration\n", + "URL not formatted, defaulting to Stage_database\n", + "Connecting to database URL localhost\n" + ] + } + ], + "source": [ + "import scaffolding\n", + "import emission.core.get_database as edb\n", + "import emission.storage.timeseries.abstract_timeseries as esta" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e171e277", + "metadata": {}, + "outputs": [], + "source": [ + "DB_SOURCE = [\n", + " \"Stage_database\", # Does NOT have composite trips BUT has section modes and distances\n", + " \"openpath_prod_durham\", # Has composite trips\n", + " \"openpath_prod_mm_masscec\", # Has composite trips\n", + " \"openpath_prod_ride2own\", # Has composite trips\n", + "# \"openpath_prod_uprm_civic\", # No replaced mode (Excluded)\n", + " \"openpath_prod_uprm_nicr\" # Has composite trips\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "70fa3112", + "metadata": {}, + "outputs": [], + "source": [ + "CURRENT_DB = DB_SOURCE[0]\n", + "\n", + "assert CURRENT_DB in DB_SOURCE" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "bbde79d1", + "metadata": {}, + "outputs": [], + "source": [ + "# ['p_micro', 'no_trip', 's_car', 'transit', 'car', 's_micro', 'ridehail', 'walk', 'unknown']\n", + "\n", + "REPLACED_MODE_DICT = {\n", + " \"Stage_database\": {\n", + " 'no_trip': 'no_trip',\n", + " 'no_travel': 'no_trip',\n", + " 'Unknown': 'unknown',\n", + " 'unknown': 'unknown',\n", + " 'bus': 'transit',\n", + " 'drove_alone': 'car',\n", + " 'bike': 'p_micro',\n", + " 'shared_ride': 's_car',\n", + " 'walk': 'walk',\n", + " 'train': 'transit',\n", + " 'bikeshare': 's_micro',\n", + " 'not_a trip': 'no_trip',\n", + " 'pilot_ebike': 'p_micro',\n", + " 'electric_car': 'car',\n", + " 'taxi': 'ridehail',\n", + " 'not_a_trip': 'no_trip',\n", + " 'run': 'walk',\n", + " 'scootershare': 's_micro',\n", + " 'tramway': 'transit',\n", + " 'free_shuttle': 'transit',\n", + " 'e-bike': 'p_micro',\n", + " 'rental_car': 'car',\n", + " 'train_+ bus': 'transit',\n", + " 'skateboard': 'p_micro',\n", + " 'snowboarding': 'p_micro',\n", + " 'e_bike': 'p_micro',\n", + " 'golf_cart': 'unknown',\n", + " 'emergency_vehicle with others': 's_car',\n", + " 'call_friend': 's_car',\n", + " 'no_replacement': 'no_travel',\n", + " 'doing_nothing': 'no_trip',\n", + " 'na': 'no_trip',\n", + " 'ebike': 'p_micro',\n", + " 'hiking': 'walk',\n", + " 'n/a': 'no_trip',\n", + " 'testing': 'unknown',\n", + " 'home': 'no_trip',\n", + " 'must_walk 3-5 mi a day for back': 'walk',\n", + " 'family': 's_car',\n", + " 'car': 'car',\n", + " 'pilot_e-bike': 'p_micro',\n", + " 'pilot_bike': 'p_micro',\n", + " 'time_spent on the clock at amazon': 'no_trip',\n", + " 'working': 'no_trip',\n", + " 'walk_at work': 'walk',\n", + " 'sitting_on my butt doing nothing': 'no_trip',\n", + " 'nothing._delivered food for work': 'no_trip',\n", + " 'train,_bus and walk': 'transit',\n", + " 'work_vehicle': 'car',\n", + " 'friend_picked me up': 's_car',\n", + " 'ski': 'p_micro',\n", + " 'not_accurate': 'unknown',\n", + " 'stolen_ebike': 'p_micro'\n", + " },\n", + " \"openpath_prod_durham\": {\n", + " 'Unknown': 'unknown',\n", + " 'bike': 'p_micro',\n", + " 'shared_ride': 's_car',\n", + " 'drove_alone': 'car',\n", + " 'bus': 'transit',\n", + " 'no_travel': 'no_trip',\n", + " 'scootershare': 's_micro',\n", + " 'walk': 'walk',\n", + " 'taxi': 'ridehail',\n", + " 'e_car_drove_alone': 'car',\n", + " 'bikeshare': 's_micro',\n", + " 'ebike': 'p_micro',\n", + " 'train': 'transit',\n", + " 'e_car_shared_ride': 's_car'\n", + " },\n", + " \"openpath_prod_mm_masscec\": {\n", + " 'Unknown': 'unknown',\n", + " 'drove_alone': 'car',\n", + " 'walk': 'walk',\n", + " 'shared_ride': 's_car',\n", + " 'bike': 'p_micro',\n", + " 'bikeshare': 's_micro',\n", + " 'no_travel': 'no_trip',\n", + " 'taxi': 'ridehail',\n", + " 'bus': 'transit',\n", + " 'scootershare': 's_micro',\n", + " 'train': 'transit',\n", + " 'walking': 'walk',\n", + " 'e_car_drove_alone': 'car'\n", + " },\n", + " \"openpath_prod_ride2own\": {\n", + " 'Unknown': 'unknown',\n", + " 'drove_alone': 'car',\n", + " 'walk': 'walk',\n", + " 'shared_ride': 's_car',\n", + " 'bike': 'p_micro',\n", + " 'no_travel': 'no_trip',\n", + " 'taxi': 'ridehail',\n", + " 'bus': 'transit',\n", + " 'train': 'transit',\n", + " 'e_car_drove_alone': 'car',\n", + " 'e_car_shared_ride': 's_car'\n", + " },\n", + " \"openpath_prod_uprm_nicr\": {\n", + " 'Unknown': 'unknown',\n", + " 'walk': 'walk',\n", + " 'drove_alone': 'car'\n", + " }\n", + "}\n", + "\n", + "SENSED_SECTION_DICT = {\n", + " \"openpath_prod_mm_masscec\": {'AIR_OR_HSR', 'BICYCLING', 'BUS', 'CAR', 'LIGHT_RAIL', 'SUBWAY', 'TRAIN', 'UNKNOWN', 'WALKING'}\n", + "}\n", + "\n", + "SURVEY_DATA_DICT = {\n", + " \"Stage_database\": {\n", + " \"Unique User ID (auto-filled, do not edit)\": \"user_id\",\n", + " \"In which year were you born?\": \"birth_year\",\n", + " \"What is your gender?\": \"gender\",\n", + " \"Do you have a valid driver's license?\": \"has_drivers_license\",\n", + " \"Are you a student?\": \"is_student\",\n", + " \"What is the highest grade or degree that you have completed?\": \"highest_education\",\n", + " \"Do you work for either pay or profit?\": \"is_paid\",\n", + " \"Do you have more than one job?\": \"has_multiple_jobs\",\n", + " \"Do you work full-time or part-time at your primary job?\": \"primary_job_type\",\n", + " \"Which best describes your primary job?\": \"primary_job_description\",\n", + " \"How did you usually get to your primary job last week? \": \"primary_job_commute_mode\",\n", + " \"Thinking about your daily commute to work last week, how many minutes did it usually take to get from home to the primary job/work place?\": \"primary_job_commute_time\",\n", + " \"At your primary job, do you have the ability to set or change your own start time?\": \"is_primary_job_flexible\",\n", + " \"Do you have the option of working from home or an alternate location instead of going into your primary work place?\": \"primary_job_can_wfh\",\n", + " \"How many days per week do you usually work from home or an alternate location?\": \"wfh_days\",\n", + " \"Do you own or rent your place of residence?\": \"residence_ownership_type\",\n", + " \"What is your home type?\": \"residence_type\",\n", + " \"Please identify which category represents your total household income, before taxes, for last year.\": \"income_category\",\n", + " \"Including yourself, how many people live in your home?\": \"n_residence_members\",\n", + " \"How many children under age 18 live in your home?\": \"n_residents_u18\",\n", + " \"Including yourself, how many people have a driver's license in your household?\": \"n_residents_with_license\",\n", + " \"How many motor vehicles are owned, leased, or available for regular use by the people who currently live in your household?\": \"n_motor_vehicles\",\n", + " \"If you were unable to use your household vehicle(s), which of the following options would be available to you to get you from place to place?\": \"available_modes\",\n", + " \"Do you have a medical condition that makes it difficult to travel outside of the home?\": \"has_medical_condition\",\n", + " \"How long have you had this condition?\": \"medical_condition_duration\"\n", + " },\n", + " # Retrieved from: e-mission-phone/survey-resources/data-xls/demo-survey-v1.xlsx\n", + " \"openpath_prod_durham\": {\n", + " \"At_your_primary_job_do_you_ha\": \"is_primary_job_flexible\",\n", + " \"Which_best_describes_your_prim\": \"primary_job_description\",\n", + " \"Do_you_work_full_time_or_part_\": \"primary_job_type\",\n", + " \"Do_you_have_the_option_of_work\": \"primary_job_can_wfh\",\n", + " \"Please_describe_your_primary_job\": \"primary_job_description_2\",\n", + " \"Do_you_have_more_than_one_job\": \"has_multiple_jobs\",\n", + " # Two columns: how many days/week do you work & what days of the week do you work. \n", + " # the latter has only 4 NA values, the former has 45 NA values.\n", + " \"What_days_of_the_week_do_you_t\": \"wfh_days\",\n", + " \"How_many_days_do_you_usually_w_001\": \"n_wfh_days\",\n", + " # All these are NAs.\n", + " \"Which_one_below_describe_you_b\": \"description\",\n", + " \"What_is_your_race_ethnicity\": \"race_or_ethnicity\",\n", + " \"Are_you_a_student\": \"is_student\",\n", + " \"What_is_the_highest_grade_or_d\": \"highest_education\",\n", + " \"do_you_consider_yourself_to_be\": \"is_transgender\",\n", + " \"What_is_your_gender\": \"gender\",\n", + " \"How_old_are_you\": \"age\",\n", + " \"Are_you_a_paid_worker\": \"is_paid\",\n", + " \"Do_you_have_a_driver_license\": \"has_drivers_license\",\n", + " \"How_long_you_had_this_conditio\": \"medical_condition_duration\",\n", + " \"Including_yourself_how_many_w_001\": \"n_residents_u18\",\n", + " \"Including_yourself_how_many_p\": \"n_residence_members\",\n", + " \"Do_you_own_or_rent_your_home\": \"residence_ownership_type\",\n", + " \"Please_identify_which_category\": \"income_category\",\n", + " \"If_you_were_unable_to_use_your\": \"available_modes\",\n", + " \"Including_yourself_how_many_p_001\": \"n_residents_with_license\",\n", + " \"Including_yourself_how_many_w\": \"n_working_residents\",\n", + " \"What_is_your_home_type\": \"residence_type\",\n", + " \"How_many_motor_vehicles_are_ow\": \"n_motor_vehicles\",\n", + " \"Do_you_have_a_condition_or_han\": \"has_medical_condition\"\n", + " },\n", + " \"openpath_prod_mm_masscec\": {\n", + " # Same questions as Durham.\n", + " \"At_your_primary_job_do_you_ha\": \"is_primary_job_flexible\",\n", + " \"Which_best_describes_your_prim\": \"primary_job_description\",\n", + " \"Do_you_work_full_time_or_part_\": \"primary_job_type\",\n", + " \"Do_you_have_the_option_of_work\": \"primary_job_can_wfh\",\n", + " \"Please_describe_your_primary_job\": \"primary_job_description_2\",\n", + " \"Do_you_have_more_than_one_job\": \"has_multiple_jobs\",\n", + " # Two columns: how many days/week do you work & what days of the week do you work. \n", + " # the latter has only 4 NA values, the former has 45 NA values.\n", + " \"What_days_of_the_week_do_you_t\": \"wfh_days\",\n", + " \"How_many_days_do_you_usually_w_001\": \"n_wfh_days\",\n", + " # All these are NAs.\n", + " \"Which_one_below_describe_you_b\": \"description\",\n", + " \"What_is_your_race_ethnicity\": \"race_or_ethnicity\",\n", + " \"Are_you_a_student\": \"is_student\",\n", + " \"What_is_the_highest_grade_or_d\": \"highest_education\",\n", + " \"do_you_consider_yourself_to_be\": \"is_transgender\",\n", + " \"What_is_your_gender\": \"gender\",\n", + " \"How_old_are_you\": \"age\",\n", + " \"Are_you_a_paid_worker\": \"is_paid\",\n", + " \"Do_you_have_a_driver_license\": \"has_drivers_license\",\n", + " \"How_long_you_had_this_conditio\": \"medical_condition_duration\",\n", + " \"Including_yourself_how_many_w_001\": \"n_residents_u18\",\n", + " \"Including_yourself_how_many_p\": \"n_residence_members\",\n", + " \"Do_you_own_or_rent_your_home\": \"residence_ownership_type\",\n", + " \"Please_identify_which_category\": \"income_category\",\n", + " \"If_you_were_unable_to_use_your\": \"available_modes\",\n", + " \"Including_yourself_how_many_p_001\": \"n_residents_with_license\",\n", + " \"Including_yourself_how_many_w\": \"n_working_residents\",\n", + " \"What_is_your_home_type\": \"residence_type\",\n", + " \"How_many_motor_vehicles_are_ow\": \"n_motor_vehicles\",\n", + " \"Do_you_have_a_condition_or_han\": \"has_medical_condition\"\n", + " },\n", + " \"openpath_prod_ride2own\": {\n", + " # Same questions as Durham.\n", + " \"How_old_are_you\": \"age\",\n", + " \"What_is_your_gender\": \"gender\",\n", + " \"do_you_consider_yourself_to_be\": \"is_transgender\",\n", + " \"What_is_your_race_ethnicity\": \"race_or_ethnicity\",\n", + " \"Do_you_have_a_driver_license\": \"has_drivers_license\",\n", + " \"Are_you_a_student\": \"is_student\",\n", + " \"What_is_the_highest_grade_or_d\": \"highest_education\",\n", + " \"Are_you_a_paid_worker\": \"is_paid\",\n", + " \"Which_one_below_describe_you_b\": \"description\",\n", + " \"Do_you_own_or_rent_your_home\": \"residence_ownership_type\",\n", + " \"What_is_your_home_type\": \"residence_type\",\n", + " \"Please_identify_which_category\": \"income_category\",\n", + " \"Including_yourself_how_many_p\": \"n_residence_members\",\n", + " \"Including_yourself_how_many_w\": \"n_working_residents\",\n", + " \"Including_yourself_how_many_p_001\": \"n_residents_with_license\",\n", + " \"Including_yourself_how_many_w_001\": \"n_residents_u18\",\n", + " \"How_many_motor_vehicles_are_ow\": \"n_motor_vehicles\",\n", + " \"If_you_were_unable_to_use_your\": \"available_modes\",\n", + " \"Do_you_have_a_condition_or_han\": \"has_medical_condition\",\n", + " \"How_long_you_had_this_conditio\": \"medical_condition_duration\",\n", + " \"Do_you_have_more_than_one_job\": \"has_multiple_jobs\",\n", + " \"Do_you_work_full_time_or_part_\": \"primary_job_type\",\n", + " \"Which_best_describes_your_prim\": \"primary_job_description\",\n", + " \"Please_describe_your_primary_job\": \"primary_job_description_2\",\n", + " \"At_your_primary_job_do_you_ha\": \"is_primary_job_flexible\",\n", + " \"Do_you_have_the_option_of_work\": \"primary_job_can_wfh\",\n", + " \"How_many_days_do_you_usually_w_001\": \"n_wfh_days\",\n", + " \"What_days_of_the_week_do_you_t\": \"wfh_days\"\n", + " },\n", + " \"openpath_prod_uprm_nicr\": {\n", + " # Same as Durham!\n", + " \"At_your_primary_job_do_you_ha\": \"is_primary_job_flexible\",\n", + " \"Which_best_describes_your_prim\": \"primary_job_description\",\n", + " \"Do_you_work_full_time_or_part_\": \"primary_job_type\",\n", + " \"Do_you_have_the_option_of_work\": \"primary_job_can_wfh\",\n", + " \"Please_describe_your_primary_job\": \"primary_job_description_2\",\n", + " \"Do_you_have_more_than_one_job\": \"has_multiple_jobs\",\n", + " # Two columns: how many days/week do you work & what days of the week do you work. \n", + " # the latter has only 4 NA values, the former has 45 NA values.\n", + " \"What_days_of_the_week_do_you_t\": \"wfh_days\",\n", + " \"How_many_days_do_you_usually_w_001\": \"n_wfh_days\",\n", + " # All these are NAs.\n", + " \"Which_one_below_describe_you_b\": \"description\",\n", + " \"What_is_your_race_ethnicity\": \"race_or_ethnicity\",\n", + " \"Are_you_a_student\": \"is_student\",\n", + " \"What_is_the_highest_grade_or_d\": \"highest_education\",\n", + " \"do_you_consider_yourself_to_be\": \"is_transgender\",\n", + " \"What_is_your_gender\": \"gender\",\n", + " \"How_old_are_you\": \"age\",\n", + " \"Are_you_a_paid_worker\": \"is_paid\",\n", + " \"Do_you_have_a_driver_license\": \"has_drivers_license\",\n", + " \"How_long_you_had_this_conditio\": \"medical_condition_duration\",\n", + " \"Including_yourself_how_many_w_001\": \"n_residents_u18\",\n", + " \"Including_yourself_how_many_p\": \"n_residence_members\",\n", + " \"Do_you_own_or_rent_your_home\": \"residence_ownership_type\",\n", + " \"Please_identify_which_category\": \"income_category\",\n", + " \"If_you_were_unable_to_use_your\": \"available_modes\",\n", + " \"Including_yourself_how_many_p_001\": \"n_residents_with_license\",\n", + " \"Including_yourself_how_many_w\": \"n_working_residents\",\n", + " \"What_is_your_home_type\": \"residence_type\",\n", + " \"How_many_motor_vehicles_are_ow\": \"n_motor_vehicles\",\n", + " \"Do_you_have_a_condition_or_han\": \"has_medical_condition\"\n", + " }\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "69008893", + "metadata": {}, + "outputs": [], + "source": [ + "## Source: db_utils.py in op-admin-dashboard.\n", + "\n", + "BINARY_DEMOGRAPHICS_COLS = [\n", + " 'user_id',\n", + " '_id',\n", + "]\n", + "\n", + "EXCLUDED_DEMOGRAPHICS_COLS = [\n", + " 'data.xmlResponse', \n", + " 'data.name',\n", + " 'data.version',\n", + " 'data.label',\n", + " 'xmlns:jr',\n", + " 'xmlns:orx',\n", + " 'id',\n", + " 'start',\n", + " 'end',\n", + " 'attrxmlns:jr',\n", + " 'attrxmlns:orx',\n", + " 'attrid',\n", + " '__version__',\n", + " 'attrversion',\n", + " 'instanceID',\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "12cc0c54", + "metadata": {}, + "outputs": [], + "source": [ + "## Source: scaffolding.py\n", + "\n", + "def expand_userinputs(labeled_ct):\n", + " '''\n", + " param: labeled_ct: a dataframe of confirmed trips, some of which have labels\n", + " params: labels_per_trip: the number of labels for each trip.\n", + " Currently, this is 2 for studies and 3 for programs, and should be \n", + " passed in by the notebook based on the input config.\n", + " If used with a trip-level survey, it could be even larger.\n", + " '''\n", + " # CASE 1 of https://github.com/e-mission/em-public-dashboard/issues/69#issuecomment-1256835867\n", + " if len(labeled_ct) == 0:\n", + " return labeled_ct\n", + " label_only = pd.DataFrame(labeled_ct.user_input.to_list(), index=labeled_ct.index)\n", + " # disp.display(label_only.head())\n", + " labels_per_trip = len(label_only.columns)\n", + " print(\"Found %s columns of length %d\" % (label_only.columns, labels_per_trip))\n", + " expanded_ct = pd.concat([labeled_ct, label_only], axis=1)\n", + " assert len(expanded_ct) == len(labeled_ct), \\\n", + " (\"Mismatch after expanding labels, expanded_ct.rows = %s != labeled_ct.rows %s\" %\n", + " (len(expanded_ct), len(labeled_ct)))\n", + " print(\"After expanding, columns went from %s -> %s\" %\n", + " (len(labeled_ct.columns), len(expanded_ct.columns)))\n", + " assert len(expanded_ct.columns) == len(labeled_ct.columns) + labels_per_trip, \\\n", + " (\"Mismatch after expanding labels, expanded_ct.columns = %s != labeled_ct.columns %s\" %\n", + " (len(expanded_ct.columns), len(labeled_ct.columns)))\n", + " # disp.display(expanded_ct.head())\n", + " return expanded_ct" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "9a98e2fb", + "metadata": {}, + "outputs": [], + "source": [ + "## Source: scaffolding.py\n", + "\n", + "def data_quality_check(expanded_ct):\n", + " '''1. Delete rows where the mode_confirm was pilot_ebike and repalced_mode was pilot_ebike.\n", + " 2. Delete rows where the mode_confirm was pilot_ebike and repalced_mode was same_mode.\n", + " 3. Replace same_mode for the mode_confirm for Energy Impact Calcualtion.'''\n", + "\n", + " # TODO: This is only really required for the initial data collection around the minipilot\n", + " # in subsequent deployes, we removed \"same mode\" and \"pilot_ebike\" from the options, so the\n", + " # dataset did not contain of these data quality issues\n", + "\n", + " if 'replaced_mode' in expanded_ct.columns:\n", + " expanded_ct.drop(expanded_ct[(expanded_ct['mode_confirm'] == 'pilot_ebike') & (expanded_ct['replaced_mode'] == 'pilot_ebike')].index, inplace=True)\n", + " expanded_ct.drop(expanded_ct[(expanded_ct['mode_confirm'] == 'pilot_ebike') & (expanded_ct['replaced_mode'] == 'same_mode')].index, inplace=True)\n", + " expanded_ct['replaced_mode'] = np.where(expanded_ct['replaced_mode'] == 'same_mode',expanded_ct['mode_confirm'], expanded_ct['replaced_mode'])\n", + " \n", + " return expanded_ct" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "fe37bf27", + "metadata": {}, + "outputs": [], + "source": [ + "if CURRENT_DB != \"Stage_database\":\n", + "\n", + " ## Source: scaffolding.py\n", + "\n", + " uuid_df = pd.json_normalize(list(edb.get_uuid_db().find()))\n", + "\n", + " if not INCLUDE_TEST_USERS:\n", + " uuid_df = uuid_df.loc[~uuid_df.user_email.str.contains('_test_'), :]\n", + "\n", + " filtered = uuid_df.uuid.unique()\n", + "\n", + " agg = esta.TimeSeries.get_aggregate_time_series()\n", + " all_ct = agg.get_data_df(\"analysis/confirmed_trip\", None)\n", + "\n", + " print(f\"Before filtering, length={len(all_ct)}\")\n", + " participant_ct_df = all_ct.loc[all_ct.user_id.isin(filtered), :]\n", + " print(f\"After filtering, length={len(participant_ct_df)}\")\n", + "\n", + " expanded_ct = expand_userinputs(participant_ct_df)\n", + " expanded_ct = data_quality_check(expanded_ct)\n", + " print(expanded_ct.columns.tolist())\n", + " expanded_ct['replaced_mode'] = expanded_ct['replaced_mode'].fillna('Unknown')" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "13536d14", + "metadata": {}, + "outputs": [], + "source": [ + "# # Additional preprocessing for replaced mode (if any)\n", + "\n", + "if CURRENT_DB != \"Stage_database\":\n", + "\n", + " mode_counts = expanded_ct['replaced_mode'].value_counts()\n", + " drop_modes = mode_counts[mode_counts == 1].index.tolist()\n", + "\n", + " expanded_ct.drop(\n", + " index=expanded_ct.loc[expanded_ct.replaced_mode.isin(drop_modes)].index,\n", + " inplace=True\n", + " )\n", + "\n", + " # Additional modes to drop.\n", + " expanded_ct.drop(\n", + " index=expanded_ct.loc[expanded_ct.replaced_mode.isin(\n", + " # Remove all rows with air, boat, or weird answers.\n", + " ['houseboat', 'gondola', 'airline_flight', 'aircraft', 'zoo', 'air',\n", + " 'airplane', 'boat', 'flight', 'plane', 'meal', 'lunch']\n", + " )].index,\n", + " inplace=True\n", + " )\n", + " \n", + " expanded_ct.replaced_mode = expanded_ct.replaced_mode.apply(lambda x: REPLACED_MODE_DICT[CURRENT_DB][x])" + ] + }, + { + "cell_type": "markdown", + "id": "258844f4", + "metadata": {}, + "source": [ + "# Demographic pre-processing" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "7461a4d2", + "metadata": {}, + "outputs": [], + "source": [ + "# Demographics\n", + "\n", + "if CURRENT_DB != \"Stage_database\":\n", + "\n", + " decoded_uuids = [str(x) for x in filtered]\n", + "\n", + " ## Source: query_demographics() in op-admin-dashboard.\n", + " ts = esta.TimeSeries.get_aggregate_time_series()\n", + " entries = list(ts.find_entries([\"manual/demographic_survey\"]))\n", + "\n", + " available_key = {}\n", + " for entry in entries:\n", + " survey_key = list(entry['data']['jsonDocResponse'].keys())[0]\n", + " if survey_key not in available_key:\n", + " available_key[survey_key] = []\n", + "\n", + " # Minor modification: Added user_id check to filter users.\n", + " if str(entry['user_id']) in decoded_uuids:\n", + " available_key[survey_key].append(entry)\n", + "\n", + " dataframes = {}\n", + " for key, json_object in available_key.items():\n", + " df = pd.json_normalize(json_object)\n", + " dataframes[key] = df\n", + "\n", + " for key, df in dataframes.items():\n", + " if not df.empty:\n", + " for col in BINARY_DEMOGRAPHICS_COLS:\n", + " if col in df.columns:\n", + " df[col] = df[col].apply(str) \n", + " columns_to_drop = [col for col in df.columns if col.startswith(\"metadata\")]\n", + " df.drop(columns= columns_to_drop, inplace=True) \n", + " df.columns=[col.rsplit('.',1)[-1] if col.startswith('data.jsonDocResponse.') else col for col in df.columns]\n", + " for col in EXCLUDED_DEMOGRAPHICS_COLS:\n", + " if col in df.columns:\n", + " df.drop(columns= [col], inplace=True)\n", + "\n", + " survey_data = pd.DataFrame() \n", + " for v in dataframes.values():\n", + " survey_data = pd.concat([survey_data, v], axis=0, ignore_index=True)\n", + "else:\n", + " # Read the demographics.\n", + " survey_data = pd.read_csv('../viz_scripts/Can Do Colorado eBike Program - en.csv')\n", + " survey_data.rename(columns={'Unique User ID (auto-filled, do not edit)': 'user_id'}, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "fe5a9dff", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_79014/2914323964.py:6: DtypeWarning: Columns (40,41,42,47) have mixed types. Specify dtype option on import or set low_memory=False.\n", + " expanded_ct = pd.read_csv('../data/cached_allceo_data.csv')\n" + ] + } + ], + "source": [ + "if CURRENT_DB == \"Stage_database\":\n", + " \n", + " if os.path.exists('../data/cached_allceo_data.csv'):\n", + " \n", + " # Replace current instance of dataframe with the cached dataframe.\n", + " expanded_ct = pd.read_csv('../data/cached_allceo_data.csv')\n", + " expanded_ct.loc[expanded_ct.replaced_mode == 'no_travel', 'replaced_mode'] = 'no_trip'\n", + " else:\n", + " ## NOTE: Run this cell only if the cached CSV is not already available. It will take a LOT of time.\n", + " ## Benchmark timing: ~12 hours on a MacBook Pro (2017 model) with pandarallel, 4 workers.\n", + " \n", + " importlib.reload(scaffolding)\n", + " expanded_ct = scaffolding.get_section_durations(expanded_ct)\n", + " expanded_ct.to_csv('../data/cached_allceo_data.csv', index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "a6be751e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "203 184\n" + ] + } + ], + "source": [ + "print(len(survey_data.user_id.unique()), len(expanded_ct.user_id.unique()))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "9ebc87d8", + "metadata": {}, + "outputs": [], + "source": [ + "survey_data.rename(SURVEY_DATA_DICT[CURRENT_DB], axis='columns', inplace=True)" + ] + }, + { + "cell_type": "markdown", + "id": "522b1362", + "metadata": {}, + "source": [ + "### Demographic data preprocessing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "336508c2", + "metadata": {}, + "outputs": [], + "source": [ + "print(survey_data.columns.tolist())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "29bc7996", + "metadata": {}, + "outputs": [], + "source": [ + "# gtg\n", + "survey_data['ft_job'] = survey_data.primary_job_type.apply(\n", + " lambda x: 1 if str(x).lower() == 'full_time' else 0\n", + ")\n", + "\n", + "# gtg\n", + "survey_data['multiple_jobs'] = survey_data.has_multiple_jobs.apply(\n", + " lambda x: 1 if str(x).lower() == 'yes' else 0\n", + ")\n", + "\n", + "# gtg\n", + "survey_data.loc[\n", + " survey_data.n_motor_vehicles.isin(\n", + " ['prefer_not_to_say', 'Prefer not to say / Prefiero no decir.']\n", + " ), 'n_motor_vehicles'\n", + "] = 0\n", + "survey_data.loc[survey_data.n_motor_vehicles.isin(['more_than_3', '4+', 'more_than_4']), 'n_motor_vehicles'] = 4\n", + "survey_data.n_motor_vehicles = survey_data.n_motor_vehicles.astype(int)\n", + "\n", + "# gtg\n", + "survey_data.has_drivers_license = survey_data.has_drivers_license.apply(\n", + " lambda x: 1 if str(x).lower() == 'yes' else 0\n", + ")\n", + "\n", + "survey_data.loc[survey_data.n_residents_u18 == 'prefer_not_to_say'] = 0\n", + "survey_data.n_residents_u18 = survey_data.n_residents_u18.astype(int)\n", + "\n", + "survey_data.loc[survey_data.n_residence_members == 'prefer_not_to_say'] = 0\n", + "survey_data.n_residence_members = survey_data.n_residence_members.astype(int)\n", + "\n", + "survey_data.loc[survey_data.n_residents_with_license == 'prefer_not_to_say'] = 0\n", + "survey_data.loc[survey_data.n_residents_with_license == 'more_than_4'] = 4\n", + "survey_data.n_residents_with_license = survey_data.n_residents_with_license.astype(int)\n", + "\n", + "# In allCEO, we see 50 & 9999. What??\n", + "survey_data = survey_data[\n", + " (survey_data.n_residence_members < 10) & (survey_data.n_residents_u18 < 10) & \n", + " (survey_data.n_residents_with_license < 10) & \n", + " (survey_data.n_residence_members - survey_data.n_residents_with_license > 0) &\n", + " (survey_data.n_residence_members - survey_data.n_residents_u18 > 0)\n", + "].reset_index(drop=True)\n", + "\n", + "# gtg\n", + "if CURRENT_DB != \"Stage_database\":\n", + " survey_data.n_working_residents = survey_data.n_working_residents.apply(\n", + " lambda x: 0 if x == 'prefer_not_to_say' else int(x)\n", + " )\n", + "else:\n", + " survey_data['n_working_residents'] = survey_data['n_residence_members'] - survey_data['n_residents_u18']\n", + " \n", + "survey_data = survey_data[survey_data.n_working_residents >= 0].reset_index(drop=True)\n", + "\n", + "# gtg\n", + "survey_data.is_paid = survey_data.is_paid.apply(lambda x: 1 if x == 'Yes' else 0)\n", + "\n", + "# gtg\n", + "survey_data.has_medical_condition = survey_data.has_medical_condition.apply(\n", + " lambda x: 1 if str(x).lower() == 'yes' else 0\n", + ")\n", + "\n", + "## gtg\n", + "survey_data.is_student.replace({\n", + " 'Not a student': 0, \n", + " 'Yes - Full Time College/University': 1,\n", + " 'Yes - Vocation/Technical/Trade School': 1,\n", + " 'Yes - K-12th Grade including GED': 1, \n", + " 'Work': 0, \n", + " 'No': 0,\n", + " 'Prefer not to say': 0,\n", + " 'Yes - Part-Time College/University': 1,\n", + " 'Taking prerequisites missing for grad program ': 1, \n", + " 'Graduate': 1,\n", + " 'Custodian': 0, \n", + " 'Work at csu': 0,\n", + " 'not_a_student': 0, \n", + " 'yes___vocation_technical_trade_school': 1,\n", + " 'yes___part_time_college_university': 1,\n", + " 'prefer_not_to_say': 0, \n", + " 'yes___k_12th_grade_including_ged': 1,\n", + " 'yes___full_time_college_university': 1\n", + "}, inplace=True)" + ] + }, + { + "cell_type": "markdown", + "id": "aeb85637", + "metadata": {}, + "source": [ + "### Additinal Demographic Data Preprocessing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9c069bd2", + "metadata": {}, + "outputs": [], + "source": [ + "if CURRENT_DB == \"Stage_database\":\n", + " age = survey_data.birth_year.apply(\n", + " lambda x: 2024 - int(x) if int(x) > 100 else int(x)\n", + " )\n", + " \n", + " upper = age - (age % 5)\n", + " lower = upper + 5\n", + " new_col = (upper + 1).astype(str) + '___' + lower.astype(str) + '_years_old'\n", + " survey_data['age'] = new_col\n", + " \n", + " survey_data.loc[survey_data.age.isin([\n", + " '66___70_years_old', '76___80_years_old', '81___85_years_old'\n", + " ]), 'age'] = '__65_years_old'\n", + " \n", + " survey_data.drop(columns=['birth_year'], inplace=True)\n", + "\n", + "else:\n", + " survey_data = survey_data[survey_data.age != 0].reset_index(drop=True)\n", + "\n", + "if survey_data.columns.isin(['primary_job_commute_mode', 'primary_job_commute_time']).all():\n", + " survey_data.drop(columns=['primary_job_commute_mode', 'primary_job_commute_time'], inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f094cadd", + "metadata": {}, + "outputs": [], + "source": [ + "def normalize_job_descriptions(db_name, df):\n", + " if db_name != 'Stage_database':\n", + " PRIMARY_JOB_DESCRIPTION_DICT = {\n", + " \"sales_or_service\": \"Sales or service\",\n", + " \"other\": \"Other\",\n", + " \"\": \"Other\",\n", + " \"professional__managerial__or_technical\": \"Professional, Manegerial, or Technical\",\n", + " \"manufacturing__construction__maintenance\": \"Manufacturing, construction, maintenance, or farming\",\n", + " \"clerical_or_administrative_support\": \"Clerical or administrative support\",\n", + " \"prefer_not_to_say\": \"Prefer not to say\",\n", + " }\n", + " \n", + " df.primary_job_description = df.primary_job_description.apply(\n", + " lambda x: PRIMARY_JOB_DESCRIPTION_DICT[x]\n", + " )\n", + " else:\n", + " df.primary_job_description = df.primary_job_description.str.strip()\n", + "\n", + " # Normalize the job description. Inspired from the 'e-bike trips by occupation' \n", + " # plot in the CanBikeCo full pilot paper.\n", + " df.loc[\n", + " df.primary_job_description.isin([\n", + " 'Paraprofessional', 'Education', 'education/early childhood', 'Teacher',\n", + " 'Education non-profit manager', 'Scientific research', 'Research',\n", + " 'Preschool Tracher'\n", + " ]), 'primary_job_description'\n", + " ] = 'Education'\n", + "\n", + " df.loc[\n", + " df.primary_job_description.isin([\n", + " 'Custodian', 'Custodial', 'Csu custodian', 'Janitorial',\n", + " 'Custodial Maintanace'\n", + " ]), 'primary_job_description'\n", + " ] = 'Custodial'\n", + "\n", + " df.loc[\n", + " df.primary_job_description.isin([\n", + " 'Inbound cs', 'Accounting Technician', \n", + " 'Clerical'\n", + " ]), 'primary_job_description'\n", + " ] = 'Clerical or administrative support'\n", + "\n", + " df.loc[\n", + " df.primary_job_description.isin([\n", + " 'Restaurant manager', 'Transportaion Services',\n", + " ]), 'primary_job_description'\n", + " ] = 'Sales or service'\n", + "\n", + " df.loc[\n", + " df.primary_job_description.isin([\n", + " 'Pastry chef and line cook', 'Cook', 'Chef', 'Dining Services',\n", + " 'Food Service', 'Cooking', 'Residential Dining Services', 'Line Cook'\n", + " ]), 'primary_job_description'\n", + " ] = 'Food service'\n", + "\n", + " df.loc[\n", + " df.primary_job_description.isin([\n", + " 'CNA', 'Caregiver/ Qmap', 'Health care', 'Nurse',\n", + " 'Healthcare', 'Medical', 'Medical field',\n", + " 'Family support'\n", + " ]), 'primary_job_description'\n", + " ] = 'Medical/healthcare'\n", + "\n", + " df.loc[\n", + " df.primary_job_description.isin([\n", + " 'Amazon', 'Hockey rink', 'Caregiver', 'Security', 'Nonprofit social work',\n", + " 'Therapeutic', 'Driver'\n", + " ]), 'primary_job_description'\n", + " ] = 'Other'\n", + "\n", + " df.loc[\n", + " df.primary_job_description.isin([\n", + " 'Hospital laundry', 'Matreal handler', 'Maintenance',\n", + " 'Co op laundry'\n", + " ]), 'primary_job_description'\n", + " ] = 'Manufacturing, construction, maintenance, or farming'\n", + "\n", + " df.loc[df.primary_job_description.isna(), 'primary_job_description'] = 'Other'\n", + "\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0bf37859", + "metadata": {}, + "outputs": [], + "source": [ + "INCOME_DICT = {\n", + " 'Stage_database': {\n", + " 'Prefer not to say': 0,\n", + " 'Less than $24,999': 1,\n", + " '$25,000-$49,999': 2,\n", + " '$50,000-$99,999': 3,\n", + " '$100,000 -$149,999': 4,\n", + " '$150,000-$199,999': 5,\n", + " '$150,000': 5,\n", + " '$150,000-$199,999': 6,\n", + " '$200,000 or more': 7\n", + " },\n", + " 'Others': {\n", + " 'prefer_not_to_say': 0, \n", + " 'less_than__24_999': 1,\n", + " '_25_000_to__49_999': 2,\n", + " '_50_000_to__99_999': 3,\n", + " '_100_000_to__149_999': 4,\n", + " '_150_000_to__199_999': 5\n", + " }\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "42b3163a", + "metadata": {}, + "outputs": [], + "source": [ + "survey_data = normalize_job_descriptions(CURRENT_DB, survey_data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fe2b18b6", + "metadata": {}, + "outputs": [], + "source": [ + "if CURRENT_DB == 'Stage_database':\n", + " survey_data.income_category = survey_data.income_category.apply(\n", + " lambda x: INCOME_DICT['Stage_database'][x]\n", + " )\n", + "else:\n", + " survey_data.income_category = survey_data.income_category.apply(\n", + " lambda x: INCOME_DICT['Others'][x]\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b36672b9", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import OneHotEncoder\n", + "\n", + "def generate_ohe_features(df, feature_name):\n", + " ohe = OneHotEncoder()\n", + " ohe.fit(df[[feature_name]])\n", + " return pd.DataFrame(\n", + " ohe.transform(df[[feature_name]]).todense(), \n", + " columns=ohe.get_feature_names_out(),\n", + " index=df.index\n", + " ), ohe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dc8d1846", + "metadata": {}, + "outputs": [], + "source": [ + "survey_data.reset_index(drop=True, inplace=True)\n", + "\n", + "ohe_features = ['highest_education', 'primary_job_description', 'gender', 'age']\n", + "\n", + "for ohe in ohe_features:\n", + " df, _ = generate_ohe_features(survey_data, ohe)\n", + " survey_data = survey_data.merge(right=df, left_index=True, right_index=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d2d6f8c1", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "to_drop = [\n", + " 'Timestamp', 'gender', 'highest_education', 'primary_job_type', 'primary_job_description', \n", + " 'primary_job_commute_mode', 'primary_job_commute_time', 'is_primary_job_flexible', \n", + " 'primary_job_can_wfh', 'wfh_days', 'Which one below describe you best?', 'residence_ownership_type', \n", + " 'residence_type', 'medical_condition_duration', 'has_multiple_jobs', 'age', '_id', 'data.ts',\n", + " 'primary_job_description_2', 'wfh_days', 'n_wfh_days', 'description', 'race_or_ethnicity', \n", + " 'highest_education', 'is_transgender', 'medical_condition_duration'\n", + "]\n", + "\n", + "for column in to_drop:\n", + " if column in survey_data.columns:\n", + " survey_data.drop(columns=[column], inplace=True)" + ] + }, + { + "cell_type": "markdown", + "id": "65039f73", + "metadata": {}, + "source": [ + "## Merge sensed data and demographics" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c7eb2e09", + "metadata": {}, + "outputs": [], + "source": [ + "# Additional preprocessing to filter unwanted users from sensed trips data.\n", + "expanded_ct['user_id_join'] = expanded_ct['user_id'].apply(lambda x: str(x).replace('-', ''))\n", + "survey_data['user_id_join'] = survey_data['user_id'].apply(lambda x: str(x).replace('-', ''))\n", + "\n", + "survey_data.rename(columns={'user_id': 'survey_user_id'}, inplace=True)\n", + "\n", + "common = set(expanded_ct.user_id_join.unique()).intersection(\n", + " set(survey_data.user_id_join.unique())\n", + ")\n", + "\n", + "filtered_trips = expanded_ct.loc[expanded_ct.user_id_join.isin(common), :].reset_index(drop=True)\n", + "filtered_survey = survey_data.loc[survey_data.user_id_join.isin(common), :].reset_index(drop=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "53927d5f", + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "# Just to double-check.\n", + "print(len(filtered_trips.user_id.unique()), len(filtered_survey.survey_user_id.unique()))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "daed8fb0", + "metadata": {}, + "outputs": [], + "source": [ + "# Compute the section_*_argmax.\n", + "\n", + "def compute_argmax(db: str, row):\n", + " \n", + " if db != 'Stage_database':\n", + " \n", + " sections = row['inferred_section_summary']\n", + "\n", + " if pd.isna(sections) or len(sections) == 0 or len(sections['distance']) == 0:\n", + " return row\n", + "\n", + " try:\n", + " mode = sorted(sections['distance'].items(), key=lambda x: x[-1], reverse=True)[0][0]\n", + " distance = sections['distance'][mode]\n", + " duration = sections['duration'][mode]\n", + "\n", + " row['section_mode_argmax'] = mode\n", + " row['section_distance_argmax'] = distance\n", + " row['section_duration_argmax'] = duration\n", + "\n", + " except:\n", + " row['section_mode_argmax'] = np.nan\n", + " row['section_distance_argmax'] = np.nan\n", + " row['section_duration_argmax'] = np.nan\n", + "\n", + " finally:\n", + " return row\n", + " else:\n", + " \n", + " try:\n", + " distances = ast.literal_eval(row['section_distances'])\n", + " durations = ast.literal_eval(row['section_durations'])\n", + " modes = ast.literal_eval(row['section_modes'])\n", + "\n", + " argmax = np.argmax(distances)\n", + " \n", + " row['section_distance_argmax'] = distances[argmax]\n", + " row['section_duration_argmax'] = durations[argmax]\n", + " row['section_mode_argmax'] = modes[argmax]\n", + " \n", + " except:\n", + " row['section_mode_argmax'] = np.nan\n", + " row['section_distance_argmax'] = np.nan\n", + " row['section_duration_argmax'] = np.nan\n", + " \n", + " finally:\n", + " return row" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f0c008a3", + "metadata": {}, + "outputs": [], + "source": [ + "filtered_trips.reset_index(drop=True, inplace=True)" + ] + }, + { + "cell_type": "markdown", + "id": "7e1baa06", + "metadata": {}, + "source": [ + "### Available feature generation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "de49ec4f", + "metadata": {}, + "outputs": [], + "source": [ + "available = {\n", + " # AllCEO\n", + " 'Bicycle': 'p_micro',\n", + " 'Do not have vehicle': 'unknown',\n", + " 'Do not have vehicle ': 'unknown',\n", + " 'Get a ride from a friend or family member': 's_car',\n", + " 'None': 'no_trip',\n", + " 'Public transportation (bus, subway, light rail, etc.)': 'transit',\n", + " 'Rental car (including Zipcar/ Car2Go)': 'car',\n", + " 'Shared bicycle or scooter': 's_micro',\n", + " 'Skateboard': 'p_micro',\n", + " 'Taxi (regular taxi, Uber, Lyft, etc)': 'ridehail',\n", + " 'Walk/roll': 'walk',\n", + " 'Prefer not to say': 'unknown',\n", + " # Others\n", + " 'public_transportation__bus__subway__ligh': 'transit',\n", + " 'get_a_ride_from_a_friend_or_family_membe': 's_car', \n", + " 'bicycle': 'p_micro', \n", + " 'walk': 'walk',\n", + " 'taxi__regular_taxi__uber__lyft__etc': 'ridehail',\n", + " 'rental_car__including_zipcar__car2go': 'car', \n", + " 'prefer_not_to_say': 'unknown'\n", + "}\n", + "\n", + "# We use the sensed mode to update the available modes.\n", + "# This is to account for any user data input errors. E.g.: user does not select car as available mode\n", + "# but the sensed mode is car.\n", + "section_mode_mapping = {\n", + " 'bicycling': ['p_micro', 's_micro'],\n", + " 'car': ['s_car', 'car', 'ridehail'],\n", + " 'no_sensed': ['unknown'],\n", + " 'walking': ['walk'],\n", + " 'unknown': ['unknown'],\n", + " 'transit': ['transit']\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "62960039", + "metadata": {}, + "outputs": [], + "source": [ + "filtered_trips = filtered_trips.apply(lambda x: compute_argmax(CURRENT_DB, x), axis=1)\n", + "\n", + "# Drop all rows where argmax mode == air\n", + "filtered_trips.drop(\n", + " index=filtered_trips.loc[filtered_trips.section_mode_argmax.isin(['AIR_OR_HSR', 'air_or_hsr']),:].index, \n", + " inplace=True\n", + ")\n", + "\n", + "filtered_trips.section_mode_argmax.replace({\n", + " 'subway': 'transit',\n", + " 'no_sensed': 'unknown',\n", + " 'train': 'transit',\n", + " 'TRAM': 'transit',\n", + " 'LIGHT_RAIL': 'transit',\n", + " 'CAR': 'car',\n", + " 'WALKING': 'walking',\n", + " 'BICYCLING': 'bicycling',\n", + " 'UNKNOWN': 'unknown',\n", + " 'TRAIN': 'transit',\n", + " 'SUBWAY': 'transit',\n", + " 'BUS': 'transit',\n", + " 'bus': 'transit'\n", + "}, inplace=True)\n", + "\n", + "filtered_trips.dropna(subset='section_mode_argmax', inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8583a709", + "metadata": {}, + "outputs": [], + "source": [ + "## Meters -> miles\n", + "filtered_trips['section_distance_argmax'] *= 0.000621371\n", + "\n", + "## Seconds -> minutes\n", + "filtered_trips['section_duration_argmax'] /= 60.\n", + "\n", + "## Total distance and duration are scaled too.\n", + "filtered_trips['distance'] *= 0.000621371\n", + "filtered_trips['duration'] /= 60." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e4d05eb", + "metadata": {}, + "outputs": [], + "source": [ + "filtered_trips = filtered_trips.merge(right=filtered_survey, left_on='user_id_join', right_on='user_id_join')" + ] + }, + { + "cell_type": "markdown", + "id": "383fe251", + "metadata": {}, + "source": [ + "## Update available indicators" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ee097233", + "metadata": {}, + "outputs": [], + "source": [ + "import itertools\n", + "\n", + "new_cols = list(set(available.values()))\n", + "filtered_trips[new_cols] = 0\n", + "\n", + "for user_id, user_trips in filtered_trips.groupby('user_id'):\n", + " \n", + " if CURRENT_DB == \"Stage_database\":\n", + " \n", + " # Get the set of available modes (demographics.)\n", + " all_av_modes = user_trips['available_modes'].str.split(';').explode()\n", + " else:\n", + " # Get the set of available modes (demographics.)\n", + " all_av_modes = user_trips['available_modes'].str.split().explode()\n", + " \n", + " # Get all sensed modes.\n", + " all_sections = user_trips['section_mode_argmax'].unique()\n", + " \n", + " # Map to Common Normal Form.\n", + " mapped_sections = set(list(itertools.chain.from_iterable([section_mode_mapping[x] for x in all_sections])))\n", + " mapped_demo_av = set([available[x] for x in all_av_modes.unique()])\n", + " \n", + " # Perform a set union.\n", + " combined = list(mapped_sections.union(mapped_demo_av))\n", + " \n", + " # Update dummy indicators.\n", + " filtered_trips.loc[filtered_trips.user_id == user_id, combined] = 1\n", + "\n", + "filtered_trips.rename(columns=dict([(c, 'av_'+c) for c in new_cols]), inplace=True)" + ] + }, + { + "cell_type": "markdown", + "id": "38bfcc0c", + "metadata": {}, + "source": [ + "### Cost estimation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "054a6ad1", + "metadata": {}, + "outputs": [], + "source": [ + "# All values are taken from VTPI.\n", + "# https://www.vtpi.org/tca/tca0501.pdf\n", + "mode_cost_per_mile = {\n", + " # bicycle/skateboard\n", + " 'p_micro': 0.,\n", + " 'no_trip': 0.,\n", + " # Shared car is half the cost of regular car, which is $0.6/mile.\n", + " 's_car': 0.3,\n", + " # Rental car.\n", + " 'car': 0.6,\n", + " # Average of bus and train taken.\n", + " 'transit': 0.5,\n", + " # Shared bicyle or scooter - values taken from https://nacto.org/shared-micromobility-2020-2021/ and \n", + " # https://www.mckinsey.com/industries/automotive-and-assembly/our-insights/how-sharing-the-road-is-likely-to-transform-american-mobility\n", + " 's_micro': 0.3,\n", + " # uber/taxi/lyft\n", + " 'ridehail': 2.,\n", + " 'walk': 0.,\n", + " 'unknown': 0.\n", + "}\n", + "\n", + "# Assumptions.\n", + "mode_init_cost = {\n", + " 'p_micro': 0.,\n", + " 'no_trip': 0.,\n", + " # Shared car is half the cost of regular car, which is $0.6/mile.\n", + " 's_car': 0.,\n", + " # Rental car.\n", + " 'car': 0.,\n", + " # Average of bus and train taken.\n", + " 'transit': 0.,\n", + " # $1 unlocking cost.\n", + " 's_micro': 1.,\n", + " # uber/taxi/lyft\n", + " 'ridehail': 1.5,\n", + " 'walk': 0.,\n", + " 'unknown': 0.\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bccd3efb", + "metadata": {}, + "outputs": [], + "source": [ + "def compute_cost_estimates(df: pd.DataFrame):\n", + " \n", + " # Create some extra colums.\n", + " columns = [c.replace('av_', '') for c in df.columns if 'av_' in c]\n", + "\n", + " # Initialize the columns to 0.\n", + " df[columns] = 0.\n", + "\n", + " rows = list()\n", + "\n", + " # Iterate over every row.\n", + " for _, row in df.iterrows():\n", + " # Check which flags are active.\n", + " row_dict = row.to_dict()\n", + "\n", + " # Access the section_distance_argmax attribute for the distance. Note that this is now in miles.\n", + " distance = row_dict['section_distance_argmax']\n", + " \n", + " # Mask using availability.\n", + " for lookup in columns:\n", + " row_dict[lookup] = row_dict['av_' + lookup] * (\n", + " mode_init_cost[lookup] + (mode_cost_per_mile[lookup] * distance)\n", + " )\n", + "\n", + " rows.append(row_dict)\n", + "\n", + " new_df = pd.DataFrame(rows)\n", + " new_df.rename(columns=dict([(c, 'cost_'+c) for c in columns]), inplace=True)\n", + "\n", + " return new_df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c39f1901", + "metadata": {}, + "outputs": [], + "source": [ + "filtered_trips = compute_cost_estimates(filtered_trips)" + ] + }, + { + "cell_type": "markdown", + "id": "a6c20466", + "metadata": {}, + "source": [ + "### Outlier removal" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c05071cc", + "metadata": {}, + "outputs": [], + "source": [ + "print(f\"For {CURRENT_DB=}, before outlier removal, n_rows = {filtered_trips.shape[0]}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b222715f", + "metadata": {}, + "outputs": [], + "source": [ + "# Drop instances where duration/distance is unusable.\n", + "filtered_trips.drop(\n", + " index=filtered_trips.loc[(filtered_trips.section_distance_argmax <= 0) | (filtered_trips.section_duration_argmax <= 0), :].index,\n", + " inplace=False\n", + ").reset_index(drop=True, inplace=True)\n", + "\n", + "\n", + "# bus, train, bicycling, walking, car\n", + "# split-apply-combine\n", + "def drop_outliers(df: pd.DataFrame, low=0.1, high=0.9) -> pd.DataFrame:\n", + " \n", + " def filter_by_percentiles(group):\n", + " distance_low = group['section_distance_argmax'].quantile(low)\n", + " distance_high = group['section_distance_argmax'].quantile(high)\n", + " duration_low = group['section_duration_argmax'].quantile(low)\n", + " duration_high = group['section_duration_argmax'].quantile(high)\n", + " \n", + " l1_filter = group[\n", + " (group['section_distance_argmax'] >= distance_low) &\n", + " (group['section_distance_argmax'] <= distance_high)\n", + " ].reset_index(drop=True)\n", + " \n", + " l2_filter = l1_filter[\n", + " (l1_filter['section_duration_argmax'] >= duration_low) &\n", + " (l1_filter['section_duration_argmax'] <= duration_high)\n", + " ].reset_index(drop=True)\n", + " \n", + " return l2_filter\n", + " \n", + " return df.groupby('section_mode_argmax').apply(filter_by_percentiles).reset_index(drop=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d77febb3", + "metadata": {}, + "outputs": [], + "source": [ + "filtered_trips = drop_outliers(filtered_trips, low=0.01, high=0.99)\n", + "\n", + "# Ideal speed. distance/time (in hours).\n", + "filtered_trips['mph'] = (\n", + " (filtered_trips['section_distance_argmax'] * 60.)/filtered_trips['section_duration_argmax']\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b52d5325", + "metadata": {}, + "outputs": [], + "source": [ + "filtered_trips[['section_mode_argmax', 'section_duration_argmax', 'section_distance_argmax', 'mph']].head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c7ed953d", + "metadata": {}, + "outputs": [], + "source": [ + "def filter_mph(df: pd.DataFrame, low=0.1, high=0.9) -> pd.DataFrame:\n", + " \n", + " MPH_THRESHOLDS = {\n", + " # https://www.sciencedirect.com/science/article/pii/S2210670718304682\n", + " 'bicycling': 15.,\n", + " # https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7806575/\n", + " 'walking': 2.93\n", + " }\n", + " \n", + " def custom_filter(group):\n", + " # Drop data specified in the dict manually.\n", + " if group.name in MPH_THRESHOLDS.keys():\n", + " f_df = group[group['mph'] <= MPH_THRESHOLDS[group.name]]\n", + " else:\n", + " mph_low = group['mph'].quantile(low)\n", + " mph_high = group['mph'].quantile(high)\n", + "\n", + " f_df = group[(group['mph'] >= mph_low) & (group['mph'] <= mph_high)]\n", + " \n", + " return f_df\n", + " \n", + " return df.groupby('section_mode_argmax').apply(custom_filter).reset_index(drop=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0c1904cd", + "metadata": {}, + "outputs": [], + "source": [ + "filtered_trips = filter_mph(filtered_trips, low=0.01, high=0.99)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3dce2b1c", + "metadata": {}, + "outputs": [], + "source": [ + "filtered_trips.groupby('section_mode_argmax')[['section_distance_argmax', 'section_duration_argmax']].describe()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "396f196b", + "metadata": {}, + "outputs": [], + "source": [ + "filtered_trips.groupby('section_mode_argmax')[['mph']].describe()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "41109148", + "metadata": {}, + "outputs": [], + "source": [ + "print(f\"For {CURRENT_DB=}, After outlier removal, n_rows = {filtered_trips.shape[0]}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1ca22a08", + "metadata": {}, + "outputs": [], + "source": [ + "to_drop=[\n", + " '_id', 'additions', 'cleaned_section_summary', 'cleaned_trip', 'confidence_threshold', \n", + " 'end_fmt_time', 'end_loc', 'end_local_dt_day', 'raw_trip', 'purpose_confirm',\n", + " 'end_local_dt_minute', 'end_local_dt_month', 'end_local_dt_second', 'end_local_dt_timezone', \n", + " 'end_local_dt_weekday', 'end_local_dt_year', 'end_place', 'end_ts', 'expectation', 'expected_trip', \n", + " 'inferred_labels', 'inferred_section_summary', 'inferred_trip', 'metadata_write_ts', 'mode_confirm', \n", + " 'section_durations', 'section_modes', 'source', 'start_fmt_time', 'start_loc', 'start_local_dt_day', \n", + " 'start_local_dt_minute', 'start_local_dt_month', 'start_local_dt_second', \n", + " 'start_local_dt_timezone', 'start_local_dt_weekday', 'start_local_dt_year', 'start_place', \n", + " 'start_ts', 'user_id_join', 'user_input', 'survey_user_id', 'section_distances',\n", + " 'data.local_dt.year', 'data.local_dt.month', 'data.local_dt.day', 'data.local_dt.hour', \n", + " 'data.local_dt.minute', 'data.local_dt.second', 'data.local_dt.weekday', 'data.local_dt.timezone',\n", + " 'data.fmt_time'\n", + "]\n", + "\n", + "for col in to_drop:\n", + " if col in filtered_trips.columns:\n", + " filtered_trips.drop(columns=[col], inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2937d4ef", + "metadata": {}, + "outputs": [], + "source": [ + "filtered_trips.rename({'start_local_dt_hour': 'start:hour', 'end_local_dt_hour': 'end:hour'}, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "87c7fc92", + "metadata": {}, + "outputs": [], + "source": [ + "print(filtered_trips.columns.tolist())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9ea36cad", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "display(filtered_trips.head())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a7018bf4", + "metadata": {}, + "outputs": [], + "source": [ + "print(f\"Done processing for {CURRENT_DB=}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0eacc539", + "metadata": {}, + "outputs": [], + "source": [ + "targets = ['p_micro', 'no_trip', 's_car', 'transit', 'car', 's_micro', 'ridehail', 'walk', 'unknown']\n", + "\n", + "# Rename and map targets.\n", + "filtered_trips.rename(columns={'replaced_mode': 'target'}, inplace=True)\n", + "filtered_trips.replace({'target': {t: ix+1 for ix, t in enumerate(targets)}}, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "50d3eaec", + "metadata": {}, + "outputs": [], + "source": [ + "display(filtered_trips.target.unique())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "31f35a04", + "metadata": {}, + "outputs": [], + "source": [ + "filtered_trips.to_csv(f'../data/filtered_data/preprocessed_data_{CURRENT_DB}.csv', index=False)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "emission", + "language": "python", + "name": "emission" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/rm_src/run_baseline_experiments.py b/rm_src/02_run_trip_level_models.py similarity index 55% rename from rm_src/run_baseline_experiments.py rename to rm_src/02_run_trip_level_models.py index f876598..cd1c476 100644 --- a/rm_src/run_baseline_experiments.py +++ b/rm_src/02_run_trip_level_models.py @@ -27,21 +27,22 @@ warnings.simplefilter(action='ignore', category=Warning) # Global experiment flags and variables. -SEED = 19348 +SEED = 13210 TARGETS = ['p_micro', 'no_trip', 's_car', 'transit', 'car', 's_micro', 'ridehail', 'walk', 'unknown'] +MAP = {ix+1:t for ix, t in enumerate(TARGETS)} + CV = False # Set the Numpy seed too. random.seed(SEED) np.random.seed(SEED) - class SPLIT_TYPE(Enum): INTRA_USER = 0 INTER_USER = 1 TARGET = 2 MODE = 3 - INTER_USER_STATIC = 4 + HIDE_USER = 4 class SPLIT(Enum): @@ -68,7 +69,7 @@ def get_train_test_splits(data: pd.DataFrame, how=SPLIT_TYPE, test_ratio=0.2, sh # Iterate only once and break. break - return X_tr, X_te + return X_tr, X_te, None elif how == SPLIT_TYPE.INTRA_USER: @@ -102,7 +103,7 @@ def get_train_test_splits(data: pd.DataFrame, how=SPLIT_TYPE, test_ratio=0.2, sh ignore_index=True, axis=0 ) - return X_tr_merged, X_te_merged + return X_tr_merged, X_te_merged, None elif how == SPLIT_TYPE.TARGET: @@ -111,7 +112,7 @@ def get_train_test_splits(data: pd.DataFrame, how=SPLIT_TYPE, test_ratio=0.2, sh random_state=SEED ) - return X_tr, X_te + return X_tr, X_te, None elif how == SPLIT_TYPE.MODE: X_tr, X_te = train_test_split( @@ -119,70 +120,41 @@ def get_train_test_splits(data: pd.DataFrame, how=SPLIT_TYPE, test_ratio=0.2, sh random_state=SEED ) - return X_tr, X_te + return X_tr, X_te, None + - elif how == SPLIT_TYPE.INTER_USER_STATIC: + elif how == SPLIT_TYPE.HIDE_USER: + users = data.user_id.value_counts(normalize=True) + percentiles = users.quantile([0.25, 0.5, 0.75]) + + low_trip_users = users[users <= percentiles[0.25]].index + mid_trip_users = users[(percentiles[0.25] <= users) & (users <= percentiles[0.5])].index + high_trip_users = users[(percentiles[0.5] <= users) & (users <= percentiles[0.75])].index + + # select one from each randomly. + user1 = np.random.choice(low_trip_users) + user2 = np.random.choice(mid_trip_users) + user3 = np.random.choice(high_trip_users) - train_ids = ['810be63d084746e3b7da9d943dd88e8c', 'bf774cbe6c3040b0a022278d36a23f19', '8a8332a53a1b4cdd9f3680434e91a6ef', - '5ad862e79a6341f69f28c0096fe884da', '7f89656bd4a94d12ad8e5ad9f0afecaf', 'fbaa338d7cd7457c8cad4d0e60a44d18', - '3b25446778824941a4c70ae5774f4c68', '28cb1dde85514bbabfd42145bdaf7e0a', '3aeb5494088542fdaf798532951aebb0', - '531732fee3c24366a286d76eb534aebc', '950f4287bab5444aa0527cc23fb082b2', '737ef8494f26407b8b2a6b1b1dc631a4', - 'e06cf95717f448ecb81c440b1b2fe1ab', '7347df5e0ac94a109790b31ba2e8a02a', 'bd9cffc8dbf1402da479f9f148ec9e60', - '2f3b66a5f98546d4b7691fba57fa640f', 'f289f7001bd94db0b33a7d2e1cd28b19', '19a043d1f2414dbcafcca44ea2bd1f19', - '68788082836e4762b26ad0877643fdcf', '4e8b1b7f026c4384827f157225da13fa', '703a9cee8315441faff7eb63f2bfa93f', - 'add706b73839413da13344c355dde0bb', '47b5d57bd4354276bb6d2dcd1438901d', 'e4cfb2a8f600426897569985e234636e', - '0154d71439284c34b865e5a417cd48af', '234f4f2366244fe682dccded2fa7cc4e', '0d0ae3a556414d138c52a6040a203d24', - '44c10f66dec244d6b8644231d4a8fecb', '30e9b141d7894fbfaacecd2fa18929f9', '0eb313ab00e6469da78cc2d2e94660fb', - 'fc51d1258e4649ecbfb0e6ecdaeca454', 'a1954793b1454b2f8cf95917d7547169', '6656c04c6cba4c189fed805eaa529741', - '6a0f3653b80a4c949e127d6504debb55', 'dfe5ca1bb0854b67a6ffccad9565d669', '8b1f3ba43de945bea79de6a81716ad04', - 'cde34edb8e3a4278a18e0adb062999e5', '6d96909e5ca442ccb5679d9cdf3c8f5b', 'a60a64d82d1c439a901b683b73a74d73', - '60e6a6f6ed2e4e838f2bbed6a427028d', '88041eddad7542ea8c92b30e5c64e198', '1635c003b1f94a399ebebe21640ffced', - '1581993b404a4b9c9ca6b0e0b8212316', 'b1aed24c863949bfbfa3a844ecf60593', '4b89612d7f1f4b368635c2bc48bd7993', - 'eb2e2a5211564a9290fcb06032f9b4af', '26767f9f3da54e93b692f8be6acdac43', '8a98e383a2d143e798fc23869694934a', - 'b346b83b9f7c4536b809d5f92074fdae', 'd929e7f8b7624d76bdb0ec9ada6cc650', '863e9c6c8ec048c4b7653f73d839c85b', - 'f50537eb104e4213908f1862c8160a3e', '4a9db5a9bac046a59403b44b883cc0ba', 'cded005d5fd14c64a5bba3f5c4fe8385', - 'c7ce889c796f4e2a8859fa2d7d5068fe', '405b221abe9e43bc86a57ca7fccf2227', '0b3e78fa91d84aa6a3203440143c8c16', - 'fbff5e08b7f24a94ab4b2d7371999ef7', 'e35e65107a34496db49fa5a0b41a1e9e', 'd5137ebd4f034dc193d216128bb7fc9a', - '3f7f2e536ba9481e92f8379b796ad1d0', 'dc75e0b776214e1b9888f6abd042fd95', 'b41dd7d7c6d94fe6afe2fd26fa4ac0bd', - 'eec6936e1ac347ef9365881845ec74df', '8c7d261fe8284a42a777ffa6f380ba3b', '4baf8c8af7b7445e9067854065e3e612', - 'c6e4db31c18b4355b02a7dd97deca70b', 'f0db3b1999c2410ba5933103eca9212f', '487e20ab774742378198f94f5b5b0b43', - 'dc1ed4d71e3645d0993885398d5628ca', '8c3c63abb3ec4fc3a61e7bf316ee4efd', '15eb78dd6e104966ba6112589c29dc41', - 'c23768ccb817416eaf08be487b2e3643', 'ecd2ae17d5184807abd87a287115c299', '71f21d53b655463784f3a3c63c56707b', - '2931e0a34319495bbb5898201a54feb5', '92bde0d0662f45ac864629f486cffe77', '42b3ee0bc02a481ab1a94644a8cd7a0d', - '15aa4ba144a34b8b8079ed7e049d84df', '509b909390934e988eb120b58ed9bd8c', '14103cda12c94642974129989d39e50d', - '8b0876430c2641bcaea954ea00520e64', 'baa4ff1573ae411183e10aeb17c71c53', '14fe8002bbdc4f97acbd1a00de241bf6', - '1b7d6dfea8464bcab9321018b10ec9c9', '487ad897ba93404a8cbe5de7d1922691', '5182d93d69754d7ba06200cd1ac5980a', - '91f3ca1c278247f79a806e49e9cc236f', 'e66e63b206784a559d977d4cb5f1ec34', '840297ae39484e26bfebe83ee30c5b3e', - 'c6807997194c4c528a8fa8c1f6ee1595', '802667b6371f45b29c7abb051244836a', 'b2bbe715b6a14fd19f751cae8adf6b4e', - 'feb1d940cd3647d1a101580c2a3b3f8c', '1b9883393ab344a69bc1a0fab192a94c', 'ac604b44fdca482fb753034cb55d1351', - 'f446bf3102ff4bd99ea1c98f7d2f7af0', 'c2c5d4b9a607487ea405a99c721079d4', '85ddd3c34c58407392953c47a32f5428', - 'd51de709f95045f8bacf473574b96ba5', '6373dfb8cb9b47e88e8f76adcfadde20', '313d003df34b4bd9823b3474fc93f9f9', - '53e78583db87421f8decb529ba859ca4', '8fdc9b926a674a9ea07d91df2c5e06f2', '90480ac60a3d475a88fbdab0a003dd5d', - '7559c3f880f341e898a402eba96a855d', '19a4c2cf718d40588eb96ac25a566353', 'f4427cccaa9442b48b42bedab5ab648e', - 'e192b8a00b6c422296851c93785deaf7', '355e25bdfc244c5e85d358e39432bd44', 'a0c3a7b410b24e18995f63369a31d123', - '03a395b4d8614757bb8432b4984559b0', 'a2d48b05d5454d428c0841432c7467b6', '3d981e617b304afab0f21ce8aa6c9786', - '2cd5668ac9054e2eb2c88bb4ed94bc6d', 'd7a732f4a8644bcbb8dedfc8be242fb2', '367eb90b929d4f6e9470d15c700d2e3f', - 'e049a7b2a6cb44259f907abbb44c5abc', 'a231added8674bef95092b32bc254ac8', 'e88a8f520dde445484c0a9395e1a0599', - 'cba570ae38f341faa6257342727377b7', '97953af1b97d4e268c52e1e54dcf421a', 'd200a61757d84b1dab8fbac35ff52c28', - 'fc68a5bb0a7b4b6386b3f08a69ead36f', '4a8210aec25e443391efb924cc0e5f23', '903742c353ce42c3ad9ab039fc418816', - '2114e2a75304475fad06ad201948fbad', 'ac917eae407c4deb96625dd0dc2f2ba9', '3dddfb70e7cd40f18a63478654182e9a', - 'd3735ba212dd4c768e1675dca7bdcb6f', '7abe572148864412a33979592fa985fb', 'd3dff742d07942ca805c2f72e49e12c5' - ] + print(f"Users picked: {user1}, {user2}, {user3}") - X_tr = data.loc[data.user_id.isin(train_ids), :] - X_te = data.loc[~data.user_id.isin(train_ids), :] + # Remove these users from the entire dataset. + held_out = data.loc[data.user_id.isin([user1, user2, user3]), :].reset_index(drop=True) + remaining = data.loc[~data.user_id.isin([user1, user2, user3]), :].reset_index(drop=True) - return X_tr, X_te + # Split randomly. + X_tr, X_te = train_test_split( + remaining, test_size=test_ratio, shuffle=shuffle, random_state=SEED + ) + + return X_tr, X_te, held_out raise NotImplementedError("Unknown split type") def get_duration_estimate(df: pd.DataFrame, dset: SPLIT, model_dict: dict): - X_features = ['section_distance_argmax', 'age'] - - if 'mph' in df.columns: - X_features += ['mph'] + X_features = ['section_distance_argmax', 'mph'] if dset == SPLIT.TRAIN and model_dict is None: model_dict = dict() @@ -198,9 +170,7 @@ def get_duration_estimate(df: pd.DataFrame, dset: SPLIT, model_dict: dict): model = LinearRegression(fit_intercept=True) - X = section_data[ - X_features - ] + X = section_data[X_features] Y = section_data[['section_duration_argmax']] model.fit(X, Y.values.ravel()) @@ -213,9 +183,7 @@ def get_duration_estimate(df: pd.DataFrame, dset: SPLIT, model_dict: dict): elif dset == SPLIT.TEST: for section_mode in df.section_mode_argmax.unique(): section_data = df.loc[df.section_mode_argmax == section_mode, :] - X = section_data[ - X_features - ] + X = section_data[X_features] Y = section_data[['section_duration_argmax']] y_pred = model_dict[section_mode]['model'].predict(X) @@ -224,7 +192,7 @@ def get_duration_estimate(df: pd.DataFrame, dset: SPLIT, model_dict: dict): # Create the new columns for the duration. new_columns = ['p_micro','no_trip','s_car','transit','car','s_micro','ridehail','walk','unknown'] - df[new_columns] = 0 + df[TARGETS] = 0 df['temp'] = 0 for section in df.section_mode_argmax.unique(): @@ -233,12 +201,12 @@ def get_duration_estimate(df: pd.DataFrame, dset: SPLIT, model_dict: dict): # broadcast to all columns. df.loc[df.section_mode_argmax == section, 'temp'] = model_dict[section]['model'].predict(X_section) - for c in new_columns: + for c in TARGETS: df[c] = df['av_' + c] * df['temp'] df.drop(columns=['temp'], inplace=True) - df.rename(columns=dict([(x, 'tt_'+x) for x in new_columns]), inplace=True) + df.rename(columns=dict([(x, 'tt_'+x) for x in TARGETS]), inplace=True) # return model_dict, result_df return model_dict, df @@ -246,19 +214,7 @@ def get_duration_estimate(df: pd.DataFrame, dset: SPLIT, model_dict: dict): # Some helper functions that will help ease redundancy in the code. def drop_columns(df: pd.DataFrame): - to_drop = [ - 'source', 'end_ts', 'end_fmt_time', 'end_loc', 'raw_trip', 'start_ts', - 'start_fmt_time', 'start_loc', 'duration', 'distance', 'start_place', - 'end_place', 'cleaned_trip', 'inferred_labels', 'inferred_trip', 'expectation', - 'confidence_threshold', 'expected_trip', 'user_input', 'start:year', 'start:month', - 'start:day', 'start_local_dt_minute', 'start_local_dt_second', - 'start_local_dt_weekday', 'start_local_dt_timezone', 'end:year', 'end:month', 'end:day', - 'end_local_dt_minute', 'end_local_dt_second', 'end_local_dt_weekday', - 'end_local_dt_timezone', '_id', 'user_id', 'metadata_write_ts', 'additions', - 'mode_confirm', 'purpose_confirm', 'Mode_confirm', 'Trip_purpose', - 'original_user_id', 'program', 'opcode', 'Timestamp', 'birth_year', - 'available_modes', 'section_coordinates_argmax', 'section_mode_argmax' - ] + to_drop = ['section_mode_argmax', 'available_modes', 'user_id'] # Drop section_mode_argmax and available_modes. return df.drop( @@ -271,7 +227,7 @@ def scale_values(df: pd.DataFrame, split: SPLIT, scalers=None): # Scale costs using StandardScaler. costs = df[[c for c in df.columns if 'cost_' in c]].copy() times = df[[c for c in df.columns if 'tt_' in c or 'duration' in c]].copy() - distances = df[[c for c in df.columns if 'distance' in c]] + distances = df[[c for c in df.columns if 'distance' in c or 'mph' in c]].copy() print( "Cost columns to be scaled: ", costs.columns,"\nTime columns to be scaled: ", times.columns, \ @@ -407,24 +363,14 @@ def predict(model, X_tr, Y_tr, X_te, Y_te): def run_sampled_sweep(df: pd.DataFrame, dir_name: Path, **kwargs): targets = TARGETS.copy() - - drop_s_micro = kwargs.pop('drop_s_micro', None) - - if drop_s_micro: - df.drop( - index=df.loc[data.target == 6, :].index, - inplace=True - ) - - # Shift all values after 6 by -1 - df.loc[data.target > 5, 'target'] -= 1 - - # Update targets. - targets.pop(targets.index('s_micro')) split = kwargs.pop('split', None) - train_data, test_data = get_train_test_splits(data=df, how=split, shuffle=True) + try: + train_data, test_data, hidden_data = get_train_test_splits(data=df, how=split, shuffle=True) + except Exception as e: + print(e) + return params, train_data = get_duration_estimate(train_data, SPLIT.TRAIN, None) _, test_data = get_duration_estimate(test_data, SPLIT.TEST, params) @@ -432,12 +378,6 @@ def run_sampled_sweep(df: pd.DataFrame, dir_name: Path, **kwargs): train_data = drop_columns(train_data) test_data = drop_columns(test_data) - drop_location = kwargs.pop('drop_location', None) - - if drop_location: - train_data.drop(columns=['start_lat', 'start_lng', 'end_lat', 'end_lng'], inplace=True) - test_data.drop(columns=['start_lat', 'start_lng', 'end_lat', 'end_lng'], inplace=True) - X_tr, Y_tr = train_data.drop(columns=['target'], inplace=False), train_data.target.values.ravel() X_te, Y_te = test_data.drop(columns=['target'], inplace=False), test_data.target.values.ravel() @@ -460,8 +400,19 @@ def run_sampled_sweep(df: pd.DataFrame, dir_name: Path, **kwargs): importance_df = pd.DataFrame(importance, columns=['feature_name', 'importance']) importance_df.to_csv(dir_name / 'feature_importance.csv', index=False) + # target_names = [MAP[x] for x in np.unique(Y_te)] + with open(dir_name / 'classification_report.txt', 'w') as f: - f.write(classification_report(y_true=Y_te, y_pred=te_preds, target_names=targets)) + f.write(classification_report(y_true=Y_te, y_pred=te_preds)) + + if split == SPLIT_TYPE.HIDE_USER and hidden_data is not None: + _, hidden_data = get_duration_estimate(hidden_data, SPLIT.TEST, params) + hidden_data = drop_columns(hidden_data) + + X_hid, Y_hid = hidden_data.drop(columns=['target'], inplace=False), hidden_data.target.values.ravel() + + tr_preds, tr_f1, te_preds, te_f1 = predict(model, X_tr, Y_tr, X_hid, Y_hid) + print(f"\t\t ---> Hidden user F1: {te_f1} <---") fig, ax = plt.subplots(figsize=(7, 7)) cm = ConfusionMatrixDisplay.from_estimator( @@ -470,8 +421,8 @@ def run_sampled_sweep(df: pd.DataFrame, dir_name: Path, **kwargs): y=Y_te, ax=ax ) - ax.set_xticklabels(targets, rotation=45) - ax.set_yticklabels(targets) + # ax.set_xticklabels(target_names, rotation=45) + # ax.set_yticklabels(target_names) fig.tight_layout() plt.savefig(dir_name / 'test_confusion_matrix.png') plt.close('all') @@ -483,48 +434,58 @@ def save_metadata(dir_name: Path, **kwargs): f.write(f"{k}: {v}\n") -# def parse_args(): -# parser = argparse.ArgumentParser() -# parser.add_argument('--max-iters', default=10000, type=int) -# return parser.parse_args() - if __name__ == "__main__": - data = pd.read_csv('../data/ReplacedMode_Fix_02142024.csv') - data.drop_duplicates(inplace=True) - - print("Beginning sweeps.") - # args = parse_args() + datasets = sorted(list(Path('../data/filtered_data').glob('preprocessed_data_*.csv'))) start = perf_counter() - sweep_number = 1 - - root = Path('../benchmark_results') - if not root.exists(): - root.mkdir() - - for split in [SPLIT_TYPE.INTER_USER, SPLIT_TYPE.INTRA_USER, SPLIT_TYPE.TARGET, SPLIT_TYPE.MODE]: - for drop in [True, False]: - for location_drop in [True, False]: - kwargs = { - 'drop_s_micro': drop, - 'split': split, - 'drop_location': location_drop - } - - dir_name = root / f'benchmark_{sweep_number}' - - if not dir_name.exists(): - dir_name.mkdir() - - print(f"\t-> Running sweep #{sweep_number} with metadata={str(kwargs)}") - save_metadata(dir_name, **kwargs) - run_sampled_sweep(data.copy(), dir_name, **kwargs) - print(f"Completed benchmarking for {sweep_number} experiment.") - print(50*'-') - sweep_number += 1 + + for dataset in datasets: + name = dataset.name.replace('.csv', '') + + print(f"Starting modeling for dataset = {name}") + + data = pd.read_csv(dataset) + data.drop_duplicates(inplace=True) + data.dropna(inplace=True) + + if 'deprecatedID' in data.columns: + data.drop(columns=['deprecatedID'], inplace=True) + if 'data.key' in data.columns: + data.drop(columns=['data.key'], inplace=True) + + # These two lines make all the difference. + data.sort_values(by=['user_id'], ascending=True, inplace=True) + data = data[sorted(data.columns.tolist())] + + print("Beginning sweeps.") + + # args = parse_args() + sweep_number = 1 + + root = Path('../benchmark_results') + if not root.exists(): + root.mkdir() + + for split in [SPLIT_TYPE.INTER_USER, SPLIT_TYPE.INTRA_USER, SPLIT_TYPE.TARGET, SPLIT_TYPE.MODE, SPLIT_TYPE.HIDE_USER]: + kwargs = { + 'dataset': name, + 'split': split + } + + dir_name = root / f'benchmark_{name}_{sweep_number}' + + if not dir_name.exists(): + dir_name.mkdir() + + print(f"\t-> Running sweep #{sweep_number} with metadata={str(kwargs)}") + save_metadata(dir_name, **kwargs) + run_sampled_sweep(data.copy(), dir_name, **kwargs) + print(f"Completed benchmarking for {sweep_number} experiment.") + print(50*'-') + sweep_number += 1 elapsed = perf_counter() - start - print(f"Completed sweeps in {elapsed/60.} minutes") + print(f"Completed sweeps in {elapsed/60.} minutes") \ No newline at end of file diff --git a/rm_src/03_user_level_models.ipynb b/rm_src/03_user_level_models.ipynb new file mode 100644 index 0000000..9a31729 --- /dev/null +++ b/rm_src/03_user_level_models.ipynb @@ -0,0 +1,2743 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "04ccf092", + "metadata": {}, + "source": [ + "## Some important points to remember:\n", + "\n", + "### We want to experiment with two types of models:\n", + "\n", + "\n", + "1. have one row per user, so that when predicting modes for a new user, we pick the \"similar user\" or users and determine the replaced mode\n", + " - In this, the traditional approach would only use demographics for the user features, we may experiment with some summaries of the trip data that will function as some level of \"fingerprint\" for the user. Ideally we would be able to show that this performs better than demographics alone\n", + " - Note also that the original method that you had outlined where the training set is a list of trips (O()) is a third approach which we will be comparing these two against" + ] + }, + { + "cell_type": "markdown", + "id": "c0c1ee88", + "metadata": {}, + "source": [ + "Target order:\n", + "\n", + "```\n", + "['p_micro', 'no_trip', 's_car', 'transit', 'car', 's_micro', 'ridehail', 'walk', 'unknown']\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "21ef0f2e", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import random\n", + "import os\n", + "import pickle\n", + "import ast\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.ensemble import RandomForestClassifier\n", + "from sklearn.metrics import r2_score, f1_score, log_loss\n", + "from sklearn.model_selection import train_test_split, RandomizedSearchCV, StratifiedKFold, KFold\n", + "from sklearn.neighbors import KNeighborsClassifier\n", + "from sklearn.cluster import KMeans\n", + "from sklearn.metrics.pairwise import cosine_similarity, euclidean_distances\n", + "from enum import Enum\n", + "from scipy.stats import uniform\n", + "from typing import List, Dict, Union\n", + "from pandas.api.types import is_numeric_dtype\n", + "from sklearn.manifold import TSNE\n", + "from multiprocessing import cpu_count\n", + "\n", + "pd.set_option('display.max_columns', 100)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "fef98692", + "metadata": {}, + "outputs": [], + "source": [ + "SEED = 13210\n", + "\n", + "np.random.seed(SEED)\n", + "random.seed(SEED)\n", + "\n", + "SimilarityMetric = Enum('SimilarityMetric', ['COSINE', 'EUCLIDEAN', 'KNN', 'KMEANS'])\n", + "GroupType = Enum('GroupType', ['GROUPBY', 'CUT'])" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "79f8c51a", + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv('../data/filtered_data/preprocessed_data_Stage_database.csv')\n", + "# df = pd.read_csv('../data/filtered_data/preprocessed_data_openpath_prod_durham.csv')\n", + "# df = pd.read_csv('../data/filtered_data/preprocessed_data_openpath_prod_mm_masscec.csv')\n", + "# df = pd.read_csv('../data/filtered_data/preprocessed_data_openpath_prod_ride2own.csv')\n", + "# df = pd.read_csv('../data/filtered_data/preprocessed_data_openpath_prod_uprm_nicr.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "915e9d6f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1, 9, 5, 8, 3, 2, 4])" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.groupby('user_id')['target'].apply(lambda x: x.value_counts().idxmax()).unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "72793473", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['distance', 'duration', 'end_local_dt_hour', 'target', 'section_distance_argmax', 'section_duration_argmax', 'section_mode_argmax', 'start_local_dt_hour', 'user_id', 'has_drivers_license', 'is_student', 'is_paid', 'income_category', 'n_residence_members', 'n_residents_u18', 'n_residents_with_license', 'n_motor_vehicles', 'available_modes', 'has_medical_condition', 'ft_job', 'multiple_jobs', 'n_working_residents', \"highest_education_Bachelor's degree\", 'highest_education_Graduate degree or professional degree', 'highest_education_High school graduate or GED', 'highest_education_Less than a high school graduate', 'highest_education_Prefer not to say', 'highest_education_Some college or associates degree', 'primary_job_description_Clerical or administrative support', 'primary_job_description_Custodial', 'primary_job_description_Education', 'primary_job_description_Food service', 'primary_job_description_Linecook', 'primary_job_description_Manufacturing, construction, maintenance, or farming', 'primary_job_description_Medical/healthcare', 'primary_job_description_Non-profit program manager', 'primary_job_description_Other', 'primary_job_description_Professional, managerial, or technical', 'primary_job_description_Sales or service', 'primary_job_description_Self employed', 'primary_job_description_food service', 'gender_Man', 'gender_Nonbinary/genderqueer/genderfluid', 'gender_Prefer not to say', 'gender_Woman', 'gender_Woman;Nonbinary/genderqueer/genderfluid', 'age_16___20_years_old', 'age_21___25_years_old', 'age_26___30_years_old', 'age_31___35_years_old', 'age_36___40_years_old', 'age_41___45_years_old', 'age_46___50_years_old', 'age_51___55_years_old', 'age_56___60_years_old', 'age_61___65_years_old', 'age___65_years_old', 'av_transit', 'av_no_trip', 'av_p_micro', 'av_s_micro', 'av_ridehail', 'av_unknown', 'av_walk', 'av_car', 'av_s_car', 'cost_transit', 'cost_no_trip', 'cost_p_micro', 'cost_s_micro', 'cost_ridehail', 'cost_unknown', 'cost_walk', 'cost_car', 'cost_s_car', 'mph']\n" + ] + } + ], + "source": [ + "print(df.columns.tolist())" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "765f08ff", + "metadata": {}, + "outputs": [], + "source": [ + "def generate_tsne_plots(df: pd.DataFrame, **kwargs):\n", + " \n", + " df = df.copy()\n", + " \n", + " # Important - if not cast as a category, seaborn considers this as a numerical value.\n", + " df.target = df.target.astype('category')\n", + " \n", + " # print(\"Unique targets: \", df.target.unique())\n", + " \n", + " # According to the docs, > consider choosing a perplexity between 5 and 50.\n", + " tsne = TSNE(\n", + " n_components=2,\n", + " perplexity=kwargs.pop('perplexity', 5),\n", + " n_iter=kwargs.pop('n_iter', 2000),\n", + " metric=kwargs.pop('metric', 'cosine'),\n", + " random_state=SEED,\n", + " n_jobs=os.cpu_count()\n", + " )\n", + " \n", + " if df.index.name == 'user_id':\n", + " df.reset_index(drop=False, inplace=True)\n", + " \n", + " if 'user_id' in df.columns:\n", + " df.drop(columns=['user_id'], inplace=True)\n", + " \n", + " targets = df.target.values\n", + " df.drop(columns=['target'], inplace=True)\n", + " \n", + " projected = tsne.fit_transform(df)\n", + " \n", + " fig, ax = plt.subplots()\n", + " sns.scatterplot(x=projected[:, 0], y=projected[:, 1], hue=targets, ax=ax)\n", + " ax.set(xlabel='Embedding dimension 1', ylabel='Embedding dimension 2', title='t-SNE plot for data')\n", + " plt.show()\n", + " \n", + " return projected" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "cfe76e8c", + "metadata": {}, + "outputs": [], + "source": [ + "def get_mode_coverage(df: pd.DataFrame):\n", + " \n", + " coverage_df = df.groupby(['user_id', 'section_mode_argmax']).size().unstack(fill_value=0)\n", + " coverage_df.columns = ['coverage_' + str(c) for c in coverage_df.columns]\n", + " \n", + " # As a preventative measure.\n", + " coverage_df.fillna(0, inplace=True)\n", + " \n", + " # Normalize over rows.\n", + " coverage_df.iloc[:, 1:] = coverage_df.iloc[:, 1:].div(coverage_df.iloc[:, 1:].sum(axis=1), axis=0)\n", + " \n", + " return coverage_df" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "75313008", + "metadata": {}, + "outputs": [], + "source": [ + "def get_trip_summaries(df: pd.DataFrame, group_key: str, feature_list: List[str], **kwargs):\n", + " \n", + " def get_feature_summaries(trip_feature: str, is_ordinal: bool = False):\n", + " \n", + " if is_numeric_dtype(df[group_key]):\n", + " col_prefix = f'{trip_feature}_mean_cut'\n", + " if not use_qcut:\n", + " grouper = df.groupby(['user_id', pd.cut(df[group_key], n_cuts)])[trip_feature]\n", + " else:\n", + " grouper = df.groupby(['user_id', pd.qcut(df[group_key], n_cuts)])[trip_feature]\n", + " else:\n", + " grouper = df.groupby(['user_id', group_key])[trip_feature]\n", + " \n", + " if not is_ordinal:\n", + " # A mean of 0 is an actual value.\n", + " \n", + " mean = grouper.mean().unstack(level=-1, fill_value=-1.)\n", + " \n", + " mean.columns = [f'{trip_feature}_mean_' + str(c) for c in mean.columns]\n", + " \n", + " # Same with percentiles - 0 is an actual value.\n", + " median = grouper.median().unstack(level=-1, fill_value=-1.)\n", + " median.columns = [f'{trip_feature}_median_' + str(c) for c in median.columns]\n", + " \n", + " iqr_df = grouper.quantile([0.25, 0.75]).unstack(level=-1)\n", + " iqr = (iqr_df[0.75] - iqr_df[0.25]).unstack(level=-1)\n", + " iqr.fillna(-1., inplace=True)\n", + " iqr.columns = [f'{trip_feature}_iqr_' + str(c) for c in iqr.columns]\n", + "\n", + " # Now merge.\n", + " merged = mean.copy()\n", + " merged = merged.merge(right=median, left_index=True, right_index=True)\n", + " merged = merged.merge(right=iqr, left_index=True, right_index=True)\n", + " \n", + " merged.fillna(-1., inplace=True)\n", + "\n", + " return merged\n", + " \n", + " # 0 is OK to indicate NaN values.\n", + " f_mode = grouper.apply(\n", + " lambda x: x.value_counts().idxmax()\n", + " ).unstack(fill_value=0.)\n", + " \n", + " f_mode.columns = [f'{trip_feature}_mode_' + str(c) for c in f_mode.columns]\n", + " f_mode.fillna(0., inplace=True)\n", + " \n", + " return f_mode\n", + " \n", + " assert group_key not in feature_list, \"Cannot perform grouping and summarization of the same feature.\"\n", + " \n", + " # Optional kwarg for number of cuts for numeric dtype grouping.\n", + " # Default is 3: short, medium, long trip types:\n", + " # For e.g., if the group key is 'section_duration', it will be cut into three equally-sized bins,\n", + " # However, an alternative is also present - we could use qcut() instead, which would ensure that\n", + " # each bin has roughly the same number of samples.\n", + " n_cuts = kwargs.pop('n_cuts', 3)\n", + " use_qcut = kwargs.pop('use_qcut', False)\n", + " \n", + " # This will be the dataframe that all subsequent features will join to.\n", + " feature_df = None\n", + " \n", + " for ix, feature in enumerate(feature_list):\n", + " is_ordinal = feature == 'start_local_dt_hour' or feature == 'end_local_dt_hour'\n", + " if ix == 0:\n", + " feature_df = get_feature_summaries(feature, is_ordinal)\n", + " else:\n", + " next_feature_df = get_feature_summaries(feature, is_ordinal)\n", + " feature_df = feature_df.merge(right=next_feature_df, left_index=True, right_index=True)\n", + " \n", + " return feature_df" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "63617ada", + "metadata": {}, + "outputs": [], + "source": [ + "def get_demographic_data(df: pd.DataFrame, **trip_kwargs):\n", + " \n", + " '''\n", + " A method that returns a U x (D + t) matrix, where U = number of users,\n", + " D = number of demographic features, t (optional) = number of trip summary features.\n", + " \n", + " When use_trip_summaries=True, the 'available_modes' column is dropped in favor of\n", + " the already-preprocessed av_ columns. This is because we want to incorporate trip-level\n", + " information into the data. When the argument is False, we want to SOLELY use demographics.\n", + " '''\n", + " \n", + " trip_features_to_use = trip_kwargs.pop('trip_features', None)\n", + " trip_group_key = trip_kwargs.pop('trip_grouping', 'section_mode_argmax')\n", + " \n", + " demographics = [ \n", + " 'has_drivers_license', 'is_student', 'is_paid', 'income_category', 'n_residence_members', \n", + " 'n_residents_u18', 'n_residents_with_license', 'n_motor_vehicles',\n", + " 'has_medical_condition', 'ft_job', 'multiple_jobs', 'n_working_residents', \n", + " \"highest_education_Bachelor's degree\", 'highest_education_Graduate degree or professional degree', \n", + " 'highest_education_High school graduate or GED', 'highest_education_Less than a high school graduate', \n", + " 'highest_education_Prefer not to say', 'highest_education_Some college or associates degree', \n", + " 'primary_job_description_Clerical or administrative support', 'primary_job_description_Custodial', \n", + " 'primary_job_description_Education', 'primary_job_description_Food service', \n", + " 'primary_job_description_Linecook', \n", + " 'primary_job_description_Manufacturing, construction, maintenance, or farming', \n", + " 'primary_job_description_Medical/healthcare', 'primary_job_description_Non-profit program manager', \n", + " 'primary_job_description_Other', 'primary_job_description_Professional, managerial, or technical', \n", + " 'primary_job_description_Sales or service', 'primary_job_description_Self employed', \n", + " 'primary_job_description_food service', 'gender_Man', 'gender_Nonbinary/genderqueer/genderfluid', \n", + " 'gender_Prefer not to say', 'gender_Woman', 'gender_Woman;Nonbinary/genderqueer/genderfluid', \n", + " 'age_16___20_years_old', 'age_21___25_years_old', 'age_26___30_years_old', 'age_31___35_years_old', \n", + " 'age_36___40_years_old', 'age_41___45_years_old', 'age_46___50_years_old', 'age_51___55_years_old', \n", + " 'age_56___60_years_old', 'age_61___65_years_old', 'age___65_years_old', 'av_transit', 'av_no_trip', \n", + " 'av_p_micro', 'av_s_micro', 'av_ridehail', 'av_unknown', 'av_walk', 'av_car', 'av_s_car', \n", + " ]\n", + " \n", + " # Retain only the first instance of each user and subset the columns.\n", + " filtered = df.groupby('user_id').first()[demographics]\n", + " \n", + " # Get the targets.\n", + " targets = df.groupby('user_id')['target'].apply(lambda x: x.value_counts().idxmax())\n", + " \n", + " filtered = filtered.merge(right=targets, left_index=True, right_index=True)\n", + " \n", + " if trip_features_to_use is None or len(trip_features_to_use) == 0:\n", + "# # Use the available modes as indicators.\n", + "# return encode_availability(filtered)\n", + " return filtered\n", + " \n", + " # -----------------------------------------------------------\n", + " # Reaching here means that we need to include trip summaries\n", + " # -----------------------------------------------------------\n", + " \n", + " # If trip summaries are to be used, then re-use the preprocessed availability features.\n", + " availability = df[['user_id'] + [c for c in df.columns if 'av_' in c]]\n", + " availability = availability.groupby('user_id').first()\n", + " \n", + " # For every user, generate the global trip-level summaries.\n", + " global_aggs = df.groupby('user_id').agg({'duration': 'mean', 'distance': 'mean'})\n", + " \n", + " # coverage.\n", + " coverage = get_mode_coverage(df)\n", + " \n", + " # Trip-level features.\n", + " trip_features = get_trip_summaries(\n", + " df=df, \n", + " group_key=trip_group_key, \n", + " feature_list=trip_features_to_use,\n", + " use_qcut=trip_kwargs.pop('use_qcut', False)\n", + " )\n", + " \n", + " targets = df.groupby('user_id')['target'].apply(lambda x: x.value_counts().idxmax())\n", + " \n", + " trip_features = trip_features.merge(right=coverage, left_index=True, right_index=True)\n", + " trip_features = trip_features.merge(right=global_aggs, left_index=True, right_index=True)\n", + " \n", + " # Finally, join with availability indicators and targets.\n", + " trip_features = trip_features.merge(right=availability, left_index=True, right_on='user_id')\n", + " trip_features = trip_features.merge(right=targets, left_index=True, right_index=True)\n", + " \n", + " return trip_features.reset_index(drop=False)" + ] + }, + { + "cell_type": "markdown", + "id": "fedb51e8", + "metadata": {}, + "source": [ + "## Experiment 1: Only demographics" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "66421120", + "metadata": {}, + "outputs": [], + "source": [ + "## Educated suburban woman -> \n", + "# An embedding where:\n", + "# \"highest_education_Bachelor's degree\" == 1 or 'highest_education_Graduate degree or professional degree' == 1\n", + "# income_category >= 4 ( + more features that define 'suburban-ness')\n", + "# gender_Woman == 1\n", + "\n", + "demo_df = get_demographic_data(df)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "17196eaf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
has_drivers_licenseis_studentis_paidincome_categoryn_residence_membersn_residents_u18n_residents_with_licensen_motor_vehicleshas_medical_conditionft_jobmultiple_jobsn_working_residentshighest_education_Bachelor's degreehighest_education_Graduate degree or professional degreehighest_education_High school graduate or GEDhighest_education_Less than a high school graduatehighest_education_Prefer not to sayhighest_education_Some college or associates degreeprimary_job_description_Clerical or administrative supportprimary_job_description_Custodialprimary_job_description_Educationprimary_job_description_Food serviceprimary_job_description_Linecookprimary_job_description_Manufacturing, construction, maintenance, or farmingprimary_job_description_Medical/healthcareprimary_job_description_Non-profit program managerprimary_job_description_Otherprimary_job_description_Professional, managerial, or technicalprimary_job_description_Sales or serviceprimary_job_description_Self employedprimary_job_description_food servicegender_Mangender_Nonbinary/genderqueer/genderfluidgender_Prefer not to saygender_Womangender_Woman;Nonbinary/genderqueer/genderfluidage_16___20_years_oldage_21___25_years_oldage_26___30_years_oldage_31___35_years_oldage_36___40_years_oldage_41___45_years_oldage_46___50_years_oldage_51___55_years_oldage_56___60_years_oldage_61___65_years_oldage___65_years_oldav_transitav_no_tripav_p_microav_s_microav_ridehailav_unknownav_walkav_carav_s_cartarget
user_id
00db212b-c8d0-44cd-8392-41ab4065e6031004422100020.01.00.00.00.00.00.00.00.00.00.00.00.00.00.01.00.00.00.01.00.00.00.00.00.00.00.00.00.00.00.00.00.01.00.01011111111
0154d714-3928-4c34-b865-e5a417cd48af1013532400020.00.00.00.00.01.00.00.00.00.00.01.00.00.00.00.00.00.00.01.00.00.00.00.00.00.00.01.00.00.00.00.00.00.00.01011111119
03a395b4-d861-4757-bb84-32b4984559b01002302400030.00.00.00.00.01.00.00.00.01.00.00.00.00.00.00.00.00.00.01.00.00.00.00.00.00.00.00.00.01.00.00.00.00.00.01011111119
0a093cbd-b536-43af-b03d-293425e84c761011614100050.01.00.00.00.00.00.00.01.00.00.00.00.00.00.00.00.00.00.01.00.00.00.00.00.00.00.01.00.00.00.00.00.00.00.01011111119
0d0ae3a5-5641-4d13-8c52-a6040a203d241013422200120.00.01.00.00.00.00.00.00.00.00.00.00.00.00.00.01.00.00.01.00.00.00.00.00.00.00.00.00.00.00.00.01.00.00.01011111119
\n", + "
" + ], + "text/plain": [ + " has_drivers_license is_student \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 1 0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 1 0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 1 0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 1 0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 1 0 \n", + "\n", + " is_paid income_category \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0 4 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 1 3 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0 2 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 1 1 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 1 3 \n", + "\n", + " n_residence_members n_residents_u18 \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 4 2 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 5 3 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 3 0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 6 1 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 4 2 \n", + "\n", + " n_residents_with_license \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 2 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 2 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 2 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 4 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 2 \n", + "\n", + " n_motor_vehicles has_medical_condition \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 1 0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 4 0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 4 0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 1 0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 2 0 \n", + "\n", + " ft_job multiple_jobs \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0 0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0 0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0 0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0 0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0 1 \n", + "\n", + " n_working_residents \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 2 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 2 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 3 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 5 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 2 \n", + "\n", + " highest_education_Bachelor's degree \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " highest_education_Graduate degree or professional degree \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 1.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 1.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " highest_education_High school graduate or GED \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 1.0 \n", + "\n", + " highest_education_Less than a high school graduate \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " highest_education_Prefer not to say \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " highest_education_Some college or associates degree \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 1.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 1.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " primary_job_description_Clerical or administrative support \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " primary_job_description_Custodial \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " primary_job_description_Education \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 1.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " primary_job_description_Food service \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 1.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " primary_job_description_Linecook \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " primary_job_description_Manufacturing, construction, maintenance, or farming \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 1.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " primary_job_description_Medical/healthcare \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " primary_job_description_Non-profit program manager \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " primary_job_description_Other \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " primary_job_description_Professional, managerial, or technical \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 1.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " primary_job_description_Sales or service \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 1.0 \n", + "\n", + " primary_job_description_Self employed \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " primary_job_description_food service \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " gender_Man \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 1.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 1.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 1.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 1.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 1.0 \n", + "\n", + " gender_Nonbinary/genderqueer/genderfluid \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " gender_Prefer not to say gender_Woman \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 0.0 \n", + "\n", + " gender_Woman;Nonbinary/genderqueer/genderfluid \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " age_16___20_years_old \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " age_21___25_years_old \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " age_26___30_years_old \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " age_31___35_years_old \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 1.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 1.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " age_36___40_years_old \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " age_41___45_years_old \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 1.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " age_46___50_years_old \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " age_51___55_years_old \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " age_56___60_years_old \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 1.0 \n", + "\n", + " age_61___65_years_old \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 1.0 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 \n", + "\n", + " age___65_years_old av_transit \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0.0 1 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0.0 1 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0.0 1 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0.0 1 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0.0 1 \n", + "\n", + " av_no_trip av_p_micro av_s_micro \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 0 1 1 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 0 1 1 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 0 1 1 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 0 1 1 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 0 1 1 \n", + "\n", + " av_ridehail av_unknown av_walk \\\n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 1 1 1 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 1 1 1 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 1 1 1 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 1 1 1 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 1 1 1 \n", + "\n", + " av_car av_s_car target \n", + "user_id \n", + "00db212b-c8d0-44cd-8392-41ab4065e603 1 1 1 \n", + "0154d714-3928-4c34-b865-e5a417cd48af 1 1 9 \n", + "03a395b4-d861-4757-bb84-32b4984559b0 1 1 9 \n", + "0a093cbd-b536-43af-b03d-293425e84c76 1 1 9 \n", + "0d0ae3a5-5641-4d13-8c52-a6040a203d24 1 1 9 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(demo_df.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "4c458c1a", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj4AAAHFCAYAAADyj/PrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACa10lEQVR4nOzdd3wb9f348dfdaQ/LeyVOYrInhIQR9gx7lLI3ZZQSKJQfpdBFaNlQCqWFAm2BljK+hbIhhJUUCJCQELLIIHs53pYtWevufn+YOBGWHA/Jtuz38/HwA3yfk+4txz699Rnvj2KapokQQgghxACg9nYAQgghhBA9RRIfIYQQQgwYkvgIIYQQYsCQxEcIIYQQA4YkPkIIIYQYMCTxEUIIIcSAIYmPEEIIIQYMSXyEEEIIMWBI4iOEEEKIAUMSHyEy2Lx585g5cyb19fUdfoxpmrzwwgsceuihFBYW4nA4GDx4MMcddxx/+9vf4s5VFAVFUbjnnnvaPM/TTz+Noih8+eWXrcdmzpzZ+phEXxs2bOjqS42zYcMGFEXh6aef7vRjV6xYwcyZMzsVy4svvsj48eNxOp0oisLixYs7fd3u2vnz7srP8O2332bmzJkpj0mITCSJjxAZbN68edx+++2dSnxuvfVWzjvvPMaOHcvf/vY33nnnHe644w6Kiop47bXXEj7mnnvuoba2tsPXmDVrFp999lmbr5KSkg4/R7qsWLGC22+/vcMJRFVVFRdddBHDhw9vfV2jRo1Kb5Ap9vbbb3P77bf3dhhC9AmW3g5ACNFzmpubeeihh7j44ot54okn4touvfRSDMNo85hjjjmGOXPmcOedd/KHP/yhQ9eZMmUK+fn5KYm5t61evZpoNMqFF17I4YcfnpLnDAaDuFyulDyXEKJzpMdHiAw1c+ZMfv7znwNQXl7eOpw0Z86cpI8JBAKEw+GkPS+q2vaWMHr0aC6//HL+8pe/sHHjxpTEnsywYcM4+eSTeeWVV5g0aRIOh4O99tqLP/3pTx16/CeffMLRRx+N1+vF5XJx0EEH8dZbb7W2P/3005x11lkAHHnkka0/s2RDZpdeeimHHHIIAOeccw6KonDEEUe0tr/++utMmzYNl8uF1+vl2GOP5bPPPot7jp3Df4sWLeLMM88kJyeH4cOHt/s6Pv/8cw4++GAcDgelpaXceuutRKPRNue9+OKLTJ8+nZKSEpxOJ2PHjuWWW24hEAjEvYa//OUvAAmHHf/yl79w2GGHUVhYiNvtZuLEidx3330JrydEfyA9PkJkqCuuuILa2loeeeQR/vvf/7YmM+PGjUv6mPz8fEaMGMGjjz5KYWEhJ554IqNHj0ZRlHavNXPmTP71r3/xm9/8hn/+8597jE3XdWKxWNwxRVHQNG2Pj128eDE33HADM2fOpLi4mH//+99cf/31RCIRbrrppqSPmzt3LsceeyyTJk3i73//O3a7nUcffZRTTjmF559/nnPOOYeTTjqJu+66i1/+8pf85S9/Yd999wVImoj85je/Yf/992fGjBncddddHHnkkWRlZQHw3HPPccEFFzB9+nSef/55wuEw9913H0cccQQffPBBa8K00xlnnMG5557L1VdfHZeYfN+KFSs4+uijGTZsGE8//TQul4tHH32U5557rs25a9as4cQTT+SGG27A7XazcuVK7r33XubPn8+HH37Y+hoCgQAvvfRSXFK28/dl7dq1nH/++ZSXl2Oz2fj666+58847WblyJf/4xz+SxilExjKFEBnr/vvvNwFz/fr1HX7M/PnzzSFDhpiACZher9c8+eSTzX/+85+mYRhx5wLmjBkzTNM0zV/96lemqqrm119/bZqmaT711FMmYC5YsKD1/Ntuu631eb//NXz48D3GNnToUFNRFHPx4sVxx4899lgzKyvLDAQCpmma5vr1603AfOqpp1rPOfDAA83CwkKzsbGx9VgsFjMnTJhgDh48uPW1/ec//zEB86OPPurQz+ujjz4yAfM///lP6zFd183S0lJz4sSJpq7rrccbGxvNwsJC86CDDmrzM/ntb3/boeudc845ptPpNCsqKuJex5gxY9r9tzYMw4xGo+bcuXNNoPXfyTRNc8aMGWZHbve6rpvRaNT85z//aWqaZtbW1nYoZiEyiQx1CdEPGYZBLBZr/dJ1vbVtv/3249tvv2XWrFn88pe/ZNq0aXzwwQdcfPHFnHrqqZimmfA5b775ZnJzc/nFL36xx+u///77LFiwIO7r1Vdf7VDs48ePZ++99447dv755+P3+1m0aFHCxwQCAb744gvOPPNMPB5P63FN07jooovYsmULq1at6tD1O2LVqlVs27aNiy66KG540OPx8MMf/pDPP/+cYDAY95gf/vCHHXrujz76iKOPPpqioqLWY5qmcc4557Q5d926dZx//vkUFxejaRpWq7V1HtI333zToet99dVXnHrqqeTl5bU+x8UXX4yu66xevbpDzyFEJpGhLiH6od/97ndxq3iGDh0at4rJarVy3HHHcdxxxwFQU1PDmWeeyZtvvsk777zDiSee2OY5s7Ky+PWvf80NN9zARx991O7199577y5Pbi4uLk56rKamJuFj6urqME0z4dyl0tLSdh/bFTufK9n1DMOgrq4ubgJzR1e01dTUtPsz2KmpqYlDDz0Uh8PBHXfcwahRo3C5XGzevJkzzjiD5ubmPV5r06ZNHHrooYwePZqHH36YYcOG4XA4mD9/PjNmzOjQcwiRaSTxEaIfuuqqqzj55JNbv7fb7e2en5eXxw033MCcOXNYtmxZwsQH4Cc/+QkPP/wwv/jFL/jJT36S0ph3qqioSHosLy8v4WNycnJQVZXt27e3adu2bRtASleZ7Ywj2fVUVSUnJyfu+J7mUe3+3O39DHb68MMP2bZtG3PmzIlbbdaZ0gavvvoqgUCA//73vwwdOrT1eG/UKRKip8hQlxAZbGdC8/1P5qWlpUydOrX1a+LEiQBEo9GkPR87h0Z29pAkYrPZuOOOO1iwYAH/+c9/UvES2li+fDlff/113LHnnnsOr9fbOhn5+9xuNwcccAD//e9/434WhmHw7LPPMnjw4NbaO8l+Zp0xevRoBg0axHPPPRc3NBgIBHj55ZdbV3p1xZFHHskHH3zAjh07Wo/pus6LL74Yd97OROr7Se3jjz/e5jmTveZEz2GaJk8++WSXYhciE0iPjxAZbGdC8/DDD3PJJZdgtVoZPXo0Xq834fkNDQ0MGzaMs846i2OOOYaysjKampqYM2cODz/8MGPHjuWMM85o95rnnXceDzzwAO+8807ScxYuXIjP52tzfNy4ca2ropIpLS3l1FNPZebMmZSUlPDss8/y3nvvce+997abTNx9990ce+yxHHnkkdx0003YbDYeffRRli1bxvPPP9/6Jj9hwgQAnnjiCbxeLw6Hg/Ly8qS9SYmoqsp9993HBRdcwMknn8yPf/xjwuEw999/P/X19QkrXXfUr3/9a15//XWOOuoofvvb3+JyufjLX/7SZiXYQQcdRE5ODldffTW33XYbVquVf//7322SRtj1e3LvvfdywgknoGkakyZN4thjj8Vms3Heeedx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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "tsne_kwargs = {\n", + " 'perplexity': 6,\n", + " 'n_iter': 7500,\n", + " 'metric': 'cosine'\n", + "}\n", + "\n", + "## PLOT BY THE WAY IN WHICH PEOPLE USE THE SAME REPLACED MODE AND CHECK THE SIMILARITY.\n", + "\n", + "projections = generate_tsne_plots(demo_df, **tsne_kwargs)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "c023cf66", + "metadata": {}, + "outputs": [], + "source": [ + "# No stratification, pure random.\n", + "demo_df.reset_index(drop=False, inplace=True)\n", + "train, test = train_test_split(demo_df, test_size=0.2, random_state=SEED)\n", + "\n", + "TRAIN_USERS = train.user_id.unique().tolist()\n", + "TEST_USERS = test.user_id.unique().tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "376a4391", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "81 21\n" + ] + } + ], + "source": [ + "print(train.shape[0], test.shape[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "630d6c08", + "metadata": {}, + "outputs": [], + "source": [ + "# Ensuring that no user information is leaked across sets.\n", + "assert train.shape[0] + test.shape[0] == len(df.user_id.unique())" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "ef77c9c8", + "metadata": {}, + "outputs": [], + "source": [ + "def evaluate_using_similarity(test_df, train_df, metric=SimilarityMetric.COSINE, **metric_kwargs):\n", + " \n", + " '''\n", + " This method treats each user row as a 'fingerprint' (embedding vector). We assume that we\n", + " have no idea about the test set labels. To find which replaced mode is most likely for the test\n", + " users, we compute the cosine similarity of each test user against the users in the training set.\n", + " For the most similar user, we use their target as a proxy for the test user's replaced mode.\n", + " This operates on the following intuition: If User A and User B are similar, then their replaced\n", + " modes are also similar.\n", + " '''\n", + " \n", + " tr_targets = train_df.target.values\n", + " tr = train_df.drop(columns=['target', 'user_id'], inplace=False).reset_index(drop=True, inplace=False)\n", + " \n", + " te_targets = test_df.target.values\n", + " te = test_df.drop(columns=['target', 'user_id'], inplace=False).reset_index(drop=True, inplace=False)\n", + " \n", + " if metric == SimilarityMetric.COSINE:\n", + " # Use cosine similarity to determine which element in the train set this user is closest to.\n", + " # Offset the columns from the second entry to exclude the user_id column.\n", + " # Returns a (n_te, n_tr) matrix.\n", + " sim = cosine_similarity(te.values, tr.values)\n", + " \n", + " # Compute the argmax across the train set.\n", + " argmax = np.argmax(sim, axis=1)\n", + "\n", + " # Index into the training targets to retrieve predicted label.\n", + " y_test_pred = tr_targets[argmax]\n", + " \n", + " elif metric == SimilarityMetric.EUCLIDEAN:\n", + " \n", + " # Here, we choose the embedding with the smallest L2 distance.\n", + " distances = euclidean_distances(te.values, tr.values)\n", + " \n", + " # We choose argmin\n", + " argmin = np.argmin(distances, axis=1)\n", + " \n", + " # Index into the targets.\n", + " y_test_pred = tr_targets[argmin]\n", + " \n", + " elif metric == SimilarityMetric.KNN:\n", + " \n", + " # Build the KNN classifier. By default, let it be 3.\n", + " knn = KNeighborsClassifier(\n", + " n_neighbors=metric_kwargs.pop('n_neighbors', 3),\n", + " weights='distance',\n", + " metric=metric_kwargs.pop('knn_metric', 'cosine'),\n", + " n_jobs=os.cpu_count()\n", + " )\n", + " \n", + " # Fit the data to the KNN model\n", + " knn.fit(tr, tr_targets)\n", + " \n", + " y_test_pred = knn.predict(te)\n", + " \n", + " elif metric == SimilarityMetric.KMEANS:\n", + " \n", + " # Build the model.\n", + " kmeans = KMeans(\n", + " n_clusters=metric_kwargs.pop('n_clusters', 8),\n", + " max_iter=metric_kwargs.pop('max_iter', 300),\n", + " n_init='auto',\n", + " random_state=SEED\n", + " )\n", + " \n", + " # Fit the clustering model\n", + " kmeans.fit(tr)\n", + " \n", + " # Construct the auxiliary df and merge with the training set.\n", + " label_df = pd.DataFrame({'label': kmeans.labels_, 'target': tr_targets}, index=tr.index)\n", + " \n", + " # Now, perform an inference on the test set.\n", + " predicted_labels = kmeans.predict(te)\n", + " \n", + " y_test_pred = []\n", + " for prediction in predicted_labels:\n", + " most_likely = label_df.loc[label_df.label == prediction, 'target'].value_counts().idxmax()\n", + " y_test_pred.append(most_likely)\n", + " \n", + " else:\n", + " raise NotImplementedError(\"Unknown similarity metric\")\n", + " \n", + " \n", + " f1 = f1_score(y_true=te_targets, y_pred=y_test_pred, average='weighted')\n", + " print(f\"Test F1 score using {metric.name} = {f1}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "1a95ad5e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test F1 score using COSINE = 0.42692939244663386\n", + "Test F1 score using EUCLIDEAN = 0.4126984126984127\n", + "Test F1 score using KNN = 0.4393241167434716\n", + "Test F1 score using KMEANS = 0.4733893557422969\n" + ] + } + ], + "source": [ + "for metric in [\n", + " SimilarityMetric.COSINE, SimilarityMetric.EUCLIDEAN, SimilarityMetric.KNN, SimilarityMetric.KMEANS\n", + "]:\n", + " evaluate_using_similarity(test, train, metric, n_clusters=3)" + ] + }, + { + "cell_type": "markdown", + "id": "16e435a6", + "metadata": {}, + "source": [ + "Not bad - using just a simple random split gives us the following results:\n", + "\n", + "$allCEO$:\n", + "\n", + "```\n", + "Test F1 score using COSINE = 0.42692939244663386\n", + "Test F1 score using EUCLIDEAN = 0.4126984126984127\n", + "Test F1 score using KNN = 0.4393241167434716\n", + "Test F1 score using KMEANS = 0.4733893557422969\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "81f0e842", + "metadata": {}, + "outputs": [], + "source": [ + "def custom_nll_scorer(clf, X, y):\n", + " \n", + " # [[yp1, yp2, yp3, ...], [yp1, yp3, ...]]\n", + " y_pred = clf.predict_proba(X)\n", + " \n", + " return -log_loss(y_true=y, y_pred=y_pred, labels=sorted(np.unique(y)))" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "a3a6af8f", + "metadata": {}, + "outputs": [], + "source": [ + "def estimate_using_model(train, test, **model_kwargs):\n", + " \n", + " cv = model_kwargs.pop('cv', None)\n", + " n_splits = model_kwargs.pop('n_splits', 5)\n", + " n_iter = model_kwargs.pop('n_iter', 500)\n", + " \n", + " if cv is None:\n", + " # Define the train-val splitter.\n", + " cv = KFold(n_splits=n_splits, shuffle=True, random_state=SEED)\n", + " \n", + " params = {\n", + " 'n_estimators': np.arange(100, 1001, 50),\n", + " 'max_depth': [i for i in range(5, 101, 5)],\n", + " 'ccp_alpha': np.linspace(0, 1, 10),\n", + " 'class_weight': ['balanced', 'balanced_subsample', None],\n", + " 'min_samples_split': np.arange(2, 25, 2),\n", + " 'min_samples_leaf': np.arange(1, 25)\n", + " }\n", + " \n", + " rf = RandomForestClassifier(random_state=SEED)\n", + " \n", + " # Search over hparams to minimize negative log likelihood. \n", + "# clf = RandomizedSearchCV(\n", + "# rf, params, n_iter=n_iter, scoring=custom_nll_scorer, \n", + "# n_jobs=os.cpu_count(), cv=cv, random_state=SEED,\n", + "# verbose=0\n", + "# )\n", + " \n", + " clf = RandomizedSearchCV(\n", + " rf, params, n_iter=n_iter, scoring='f1_weighted', \n", + " n_jobs=cpu_count(), cv=cv, random_state=SEED,\n", + " verbose=0\n", + " )\n", + " \n", + " X_tr = train.drop(columns=['user_id', 'target'])\n", + " y_tr = train.target.values.ravel()\n", + " \n", + " scorer = clf.fit(X_tr, y_tr)\n", + " \n", + " best_model = scorer.best_estimator_\n", + " \n", + " print(f\"Best val score = {scorer.best_score_}\")\n", + " \n", + " X_te = test.drop(columns=['user_id', 'target'])\n", + " \n", + " # Use the best model to compute F1 on the test set.\n", + " test_f1 = f1_score(y_true=test.target.values, y_pred=best_model.predict(X_te), average='weighted')\n", + " \n", + " print(f\"Test F1 = {test_f1}\")\n", + " \n", + " return best_model" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "2fab93ed", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Best val score = 0.653870145236778\n", + "Test F1 = 0.4733893557422969\n" + ] + } + ], + "source": [ + "model = estimate_using_model(train, test)" + ] + }, + { + "cell_type": "markdown", + "id": "2988c1b2", + "metadata": {}, + "source": [ + "Interesting! The model is slightly on par with K-Means!" + ] + }, + { + "cell_type": "markdown", + "id": "c6b77353", + "metadata": {}, + "source": [ + "## Experiment 2: Demographics with trip summaries" + ] + }, + { + "cell_type": "markdown", + "id": "bf7753d4", + "metadata": {}, + "source": [ + "Now that we've performed experiments with solely demographic data, let's expand the feature set by including \n", + "trip summary statistics. We would like this approach to do better than the aforementioned baselines." + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "1d46ab0f", + "metadata": {}, + "outputs": [], + "source": [ + "demo_plus_trips = get_demographic_data(\n", + " df, \n", + " trip_features=['mph', 'section_duration_argmax', 'section_distance_argmax', 'start_local_dt_hour', 'end_local_dt_hour']\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "11c1ea2c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
user_idmph_mean_bicyclingmph_mean_carmph_mean_transitmph_mean_unknownmph_mean_walkingmph_median_bicyclingmph_median_carmph_median_transitmph_median_unknownmph_median_walkingmph_iqr_bicyclingmph_iqr_carmph_iqr_transitmph_iqr_unknownmph_iqr_walkingsection_duration_argmax_mean_bicyclingsection_duration_argmax_mean_carsection_duration_argmax_mean_transitsection_duration_argmax_mean_unknownsection_duration_argmax_mean_walkingsection_duration_argmax_median_bicyclingsection_duration_argmax_median_carsection_duration_argmax_median_transitsection_duration_argmax_median_unknownsection_duration_argmax_median_walkingsection_duration_argmax_iqr_bicyclingsection_duration_argmax_iqr_carsection_duration_argmax_iqr_transitsection_duration_argmax_iqr_unknownsection_duration_argmax_iqr_walkingsection_distance_argmax_mean_bicyclingsection_distance_argmax_mean_carsection_distance_argmax_mean_transitsection_distance_argmax_mean_unknownsection_distance_argmax_mean_walkingsection_distance_argmax_median_bicyclingsection_distance_argmax_median_carsection_distance_argmax_median_transitsection_distance_argmax_median_unknownsection_distance_argmax_median_walkingsection_distance_argmax_iqr_bicyclingsection_distance_argmax_iqr_carsection_distance_argmax_iqr_transitsection_distance_argmax_iqr_unknownsection_distance_argmax_iqr_walkingstart_local_dt_hour_mode_bicyclingstart_local_dt_hour_mode_carstart_local_dt_hour_mode_transitstart_local_dt_hour_mode_unknownstart_local_dt_hour_mode_walkingend_local_dt_hour_mode_bicyclingend_local_dt_hour_mode_carend_local_dt_hour_mode_transitend_local_dt_hour_mode_unknownend_local_dt_hour_mode_walkingcoverage_bicyclingcoverage_carcoverage_transitcoverage_unknowncoverage_walkingdurationdistanceav_transitav_no_tripav_p_microav_s_microav_ridehailav_unknownav_walkav_carav_s_cartarget
000db212b-c8d0-44cd-8392-41ab4065e6036.23954514.27136716.8957978.7957201.8295106.09801812.31522313.7483537.3722352.0445051.7963567.66982818.2742834.1662291.09756512.14359316.17141228.51144325.60339916.0506339.90186112.89673719.89549118.38381711.8795277.36960710.65863842.3615779.81505012.6563331.3247244.65018510.7237964.9036720.4350720.9170192.2595734.3255832.0219000.3272310.9025122.98462315.8105422.2430130.31767215.016.016.015.015.015.018.020.019.015.01680.5774880.0652530.0212070.33605217.8275983.4867621011111111
10154d714-3928-4c34-b865-e5a417cd48af7.25882916.7074147.85892411.2521651.4617677.42292314.9763235.1738819.4572301.4421293.57763710.7309997.6388888.9724051.48870816.17563314.4433878.80715029.32569220.56848613.00784911.1019055.92815621.19006711.8724809.09568610.2453006.17266628.13307315.5183111.9068964.5954861.4031906.7307480.4037431.4790942.7538080.3892472.9760150.2257791.0938523.7971691.5192725.9046180.2291629.016.08.08.08.07.016.08.08.020.0320.8339540.0138370.0441720.10803615.8607674.1857541011111119
203a395b4-d861-4757-bb84-32b4984559b08.40045821.94990912.51254315.2609361.7622948.72543021.17186011.69777213.1901361.7671122.94259416.7477319.49420611.2532641.3903537.21557619.0635549.0424993.94860727.6379205.71037415.8116291.7985441.01983315.0089603.15509014.8431128.8978625.06857024.3540361.0079378.2275813.1005601.1437730.5886570.8162125.5555560.1657210.1699280.3761070.09717410.2074052.9612080.6629060.43375612.012.010.012.07.012.012.011.012.07.05070.6961510.0032760.0540540.24651924.7295015.8460631011111119
30a093cbd-b536-43af-b03d-293425e84c768.02320912.519217-1.0000008.7177451.5200886.85509711.158806-1.0000007.4118701.6359803.1327088.243087-1.0000004.9511391.51995716.41315229.697618-1.00000019.78011130.17552513.63953324.230089-1.00000016.38645520.4065509.50716724.436224-1.00000015.12991221.6783831.9685886.684421-1.0000003.4009540.6551201.7028043.907857-1.0000001.9204090.4621680.7483485.247948-1.0000001.5714510.69641014.017.00.013.015.015.08.00.013.012.0150.7475920.0000000.1117530.14065531.2773945.6680171011111119
40d0ae3a5-5641-4d13-8c52-a6040a203d246.53337618.3343158.42874312.1503431.7414966.71803114.3978099.60828710.7895071.9346052.11585717.7409534.8177948.1743461.42739413.91065518.1905699.02267442.45562417.42116311.76651613.7666477.50406929.04248310.4808116.58852515.7668177.20423643.09806711.1107031.5162246.8197151.2711318.2992120.4012491.3083213.0492421.25301911.1549820.2744140.77376210.5440070.77013610.8298070.31092010.011.011.015.014.014.010.013.020.014.0710.8409820.0064030.0522950.10032021.2827856.1902711011111119
\n", + "
" + ], + "text/plain": [ + " user_id mph_mean_bicycling mph_mean_car \\\n", + "0 00db212b-c8d0-44cd-8392-41ab4065e603 6.239545 14.271367 \n", + "1 0154d714-3928-4c34-b865-e5a417cd48af 7.258829 16.707414 \n", + "2 03a395b4-d861-4757-bb84-32b4984559b0 8.400458 21.949909 \n", + "3 0a093cbd-b536-43af-b03d-293425e84c76 8.023209 12.519217 \n", + "4 0d0ae3a5-5641-4d13-8c52-a6040a203d24 6.533376 18.334315 \n", + "\n", + " mph_mean_transit mph_mean_unknown mph_mean_walking mph_median_bicycling \\\n", + "0 16.895797 8.795720 1.829510 6.098018 \n", + "1 7.858924 11.252165 1.461767 7.422923 \n", + "2 12.512543 15.260936 1.762294 8.725430 \n", + "3 -1.000000 8.717745 1.520088 6.855097 \n", + "4 8.428743 12.150343 1.741496 6.718031 \n", + "\n", + " mph_median_car mph_median_transit mph_median_unknown mph_median_walking \\\n", + "0 12.315223 13.748353 7.372235 2.044505 \n", + "1 14.976323 5.173881 9.457230 1.442129 \n", + "2 21.171860 11.697772 13.190136 1.767112 \n", + "3 11.158806 -1.000000 7.411870 1.635980 \n", + "4 14.397809 9.608287 10.789507 1.934605 \n", + "\n", + " mph_iqr_bicycling mph_iqr_car mph_iqr_transit mph_iqr_unknown \\\n", + "0 1.796356 7.669828 18.274283 4.166229 \n", + "1 3.577637 10.730999 7.638888 8.972405 \n", + "2 2.942594 16.747731 9.494206 11.253264 \n", + "3 3.132708 8.243087 -1.000000 4.951139 \n", + "4 2.115857 17.740953 4.817794 8.174346 \n", + "\n", + " mph_iqr_walking section_duration_argmax_mean_bicycling \\\n", + "0 1.097565 12.143593 \n", + "1 1.488708 16.175633 \n", + "2 1.390353 7.215576 \n", + "3 1.519957 16.413152 \n", + "4 1.427394 13.910655 \n", + "\n", + " section_duration_argmax_mean_car section_duration_argmax_mean_transit \\\n", + "0 16.171412 28.511443 \n", + "1 14.443387 8.807150 \n", + "2 19.063554 9.042499 \n", + "3 29.697618 -1.000000 \n", + "4 18.190569 9.022674 \n", + "\n", + " section_duration_argmax_mean_unknown section_duration_argmax_mean_walking \\\n", + "0 25.603399 16.050633 \n", + "1 29.325692 20.568486 \n", + "2 3.948607 27.637920 \n", + "3 19.780111 30.175525 \n", + "4 42.455624 17.421163 \n", + "\n", + " section_duration_argmax_median_bicycling \\\n", + "0 9.901861 \n", + "1 13.007849 \n", + "2 5.710374 \n", + "3 13.639533 \n", + "4 11.766516 \n", + "\n", + " section_duration_argmax_median_car section_duration_argmax_median_transit \\\n", + "0 12.896737 19.895491 \n", + "1 11.101905 5.928156 \n", + "2 15.811629 1.798544 \n", + "3 24.230089 -1.000000 \n", + "4 13.766647 7.504069 \n", + "\n", + " section_duration_argmax_median_unknown \\\n", + "0 18.383817 \n", + "1 21.190067 \n", + "2 1.019833 \n", + "3 16.386455 \n", + "4 29.042483 \n", + "\n", + " section_duration_argmax_median_walking \\\n", + "0 11.879527 \n", + "1 11.872480 \n", + "2 15.008960 \n", + "3 20.406550 \n", + "4 10.480811 \n", + "\n", + " section_duration_argmax_iqr_bicycling section_duration_argmax_iqr_car \\\n", + "0 7.369607 10.658638 \n", + "1 9.095686 10.245300 \n", + "2 3.155090 14.843112 \n", + "3 9.507167 24.436224 \n", + "4 6.588525 15.766817 \n", + "\n", + " section_duration_argmax_iqr_transit section_duration_argmax_iqr_unknown \\\n", + "0 42.361577 9.815050 \n", + "1 6.172666 28.133073 \n", + "2 8.897862 5.068570 \n", + "3 -1.000000 15.129912 \n", + "4 7.204236 43.098067 \n", + "\n", + " section_duration_argmax_iqr_walking \\\n", + "0 12.656333 \n", + "1 15.518311 \n", + "2 24.354036 \n", + "3 21.678383 \n", + "4 11.110703 \n", + "\n", + " section_distance_argmax_mean_bicycling section_distance_argmax_mean_car \\\n", + "0 1.324724 4.650185 \n", + "1 1.906896 4.595486 \n", + "2 1.007937 8.227581 \n", + "3 1.968588 6.684421 \n", + "4 1.516224 6.819715 \n", + "\n", + " section_distance_argmax_mean_transit section_distance_argmax_mean_unknown \\\n", + "0 10.723796 4.903672 \n", + "1 1.403190 6.730748 \n", + "2 3.100560 1.143773 \n", + "3 -1.000000 3.400954 \n", + "4 1.271131 8.299212 \n", + "\n", + " section_distance_argmax_mean_walking \\\n", + "0 0.435072 \n", + "1 0.403743 \n", + "2 0.588657 \n", + "3 0.655120 \n", + "4 0.401249 \n", + "\n", + " section_distance_argmax_median_bicycling \\\n", + "0 0.917019 \n", + "1 1.479094 \n", + "2 0.816212 \n", + "3 1.702804 \n", + "4 1.308321 \n", + "\n", + " section_distance_argmax_median_car section_distance_argmax_median_transit \\\n", + "0 2.259573 4.325583 \n", + "1 2.753808 0.389247 \n", + "2 5.555556 0.165721 \n", + "3 3.907857 -1.000000 \n", + "4 3.049242 1.253019 \n", + "\n", + " section_distance_argmax_median_unknown \\\n", + "0 2.021900 \n", + "1 2.976015 \n", + "2 0.169928 \n", + "3 1.920409 \n", + "4 11.154982 \n", + "\n", + " section_distance_argmax_median_walking \\\n", + "0 0.327231 \n", + "1 0.225779 \n", + "2 0.376107 \n", + "3 0.462168 \n", + "4 0.274414 \n", + "\n", + " section_distance_argmax_iqr_bicycling section_distance_argmax_iqr_car \\\n", + "0 0.902512 2.984623 \n", + "1 1.093852 3.797169 \n", + "2 0.097174 10.207405 \n", + "3 0.748348 5.247948 \n", + "4 0.773762 10.544007 \n", + "\n", + " section_distance_argmax_iqr_transit section_distance_argmax_iqr_unknown \\\n", + "0 15.810542 2.243013 \n", + "1 1.519272 5.904618 \n", + "2 2.961208 0.662906 \n", + "3 -1.000000 1.571451 \n", + "4 0.770136 10.829807 \n", + "\n", + " section_distance_argmax_iqr_walking start_local_dt_hour_mode_bicycling \\\n", + "0 0.317672 15.0 \n", + "1 0.229162 9.0 \n", + "2 0.433756 12.0 \n", + "3 0.696410 14.0 \n", + "4 0.310920 10.0 \n", + "\n", + " start_local_dt_hour_mode_car start_local_dt_hour_mode_transit \\\n", + "0 16.0 16.0 \n", + "1 16.0 8.0 \n", + "2 12.0 10.0 \n", + "3 17.0 0.0 \n", + "4 11.0 11.0 \n", + "\n", + " start_local_dt_hour_mode_unknown start_local_dt_hour_mode_walking \\\n", + "0 15.0 15.0 \n", + "1 8.0 8.0 \n", + "2 12.0 7.0 \n", + "3 13.0 15.0 \n", + "4 15.0 14.0 \n", + "\n", + " end_local_dt_hour_mode_bicycling end_local_dt_hour_mode_car \\\n", + "0 15.0 18.0 \n", + "1 7.0 16.0 \n", + "2 12.0 12.0 \n", + "3 15.0 8.0 \n", + "4 14.0 10.0 \n", + "\n", + " end_local_dt_hour_mode_transit end_local_dt_hour_mode_unknown \\\n", + "0 20.0 19.0 \n", + "1 8.0 8.0 \n", + "2 11.0 12.0 \n", + "3 0.0 13.0 \n", + "4 13.0 20.0 \n", + "\n", + " end_local_dt_hour_mode_walking coverage_bicycling coverage_car \\\n", + "0 15.0 168 0.577488 \n", + "1 20.0 32 0.833954 \n", + "2 7.0 507 0.696151 \n", + "3 12.0 15 0.747592 \n", + "4 14.0 71 0.840982 \n", + "\n", + " coverage_transit coverage_unknown coverage_walking duration distance \\\n", + "0 0.065253 0.021207 0.336052 17.827598 3.486762 \n", + "1 0.013837 0.044172 0.108036 15.860767 4.185754 \n", + "2 0.003276 0.054054 0.246519 24.729501 5.846063 \n", + "3 0.000000 0.111753 0.140655 31.277394 5.668017 \n", + "4 0.006403 0.052295 0.100320 21.282785 6.190271 \n", + "\n", + " av_transit av_no_trip av_p_micro av_s_micro av_ridehail av_unknown \\\n", + "0 1 0 1 1 1 1 \n", + "1 1 0 1 1 1 1 \n", + "2 1 0 1 1 1 1 \n", + "3 1 0 1 1 1 1 \n", + "4 1 0 1 1 1 1 \n", + "\n", + " av_walk av_car av_s_car target \n", + "0 1 1 1 1 \n", + "1 1 1 1 9 \n", + "2 1 1 1 9 \n", + "3 1 1 1 9 \n", + "4 1 1 1 9 " + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "demo_plus_trips.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "6159c90a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "81 21\n" + ] + } + ], + "source": [ + "train = demo_plus_trips.loc[demo_plus_trips.user_id.isin(TRAIN_USERS), :]\n", + "test = demo_plus_trips.loc[demo_plus_trips.user_id.isin(TEST_USERS), :]\n", + "\n", + "print(train.shape[0], test.shape[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "06e85bdd", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test F1 score using COSINE = 0.32098765432098775\n", + "Test F1 score using EUCLIDEAN = 0.36684303350970027\n", + "Test F1 score using KNN = 0.41269841269841273\n", + "Test F1 score using KMEANS = 0.4877344877344878\n" + ] + } + ], + "source": [ + "for metric in [\n", + " SimilarityMetric.COSINE, SimilarityMetric.EUCLIDEAN, SimilarityMetric.KNN, SimilarityMetric.KMEANS\n", + "]:\n", + " evaluate_using_similarity(test, train, metric, n_clusters=4)" + ] + }, + { + "cell_type": "markdown", + "id": "ba795489", + "metadata": {}, + "source": [ + "Great! Some improvement here and there.\n", + "\n", + "$allCEO$\n", + "```\n", + "Test F1 score using COSINE = 0.32098765432098775\n", + "Test F1 score using EUCLIDEAN = 0.36684303350970027\n", + "Test F1 score using KNN = 0.41269841269841273\n", + "Test F1 score using KMEANS = 0.4877344877344878\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "9acd4b0b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Best val score = 0.6326031937974128\n", + "Test F1 = 0.004329004329004328\n" + ] + }, + { + "data": { + "text/html": [ + "
RandomForestClassifier(ccp_alpha=0.2222222222222222,\n",
+       "                       class_weight='balanced_subsample', max_depth=25,\n",
+       "                       min_samples_leaf=5, min_samples_split=14,\n",
+       "                       n_estimators=700, random_state=13210)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "RandomForestClassifier(ccp_alpha=0.2222222222222222,\n", + " class_weight='balanced_subsample', max_depth=25,\n", + " min_samples_leaf=5, min_samples_split=14,\n", + " n_estimators=700, random_state=13210)" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Now, we try with the model\n", + "estimate_using_model(train, test)" + ] + }, + { + "cell_type": "markdown", + "id": "cd94c548", + "metadata": {}, + "source": [ + "Great! Compared to the previous model, we see definite improvements! I'm sure we can squeeze some more juice out of the models using fancy optimization, but as a baseline, these are good enough.\n", + "\n", + "\n", + "So, to recap:\n", + "$F1_{cosine} = 0.37$, $F1_{euclidean} = 0.33$, $F1_{knn} = 0.3$, $F1_{kmeans} = 0.36$, $F1_{RF} = 0.4215$" + ] + }, + { + "cell_type": "markdown", + "id": "8a8f6491", + "metadata": {}, + "source": [ + "### Different groupings." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9ce90367", + "metadata": {}, + "outputs": [], + "source": [ + "# trip_features = ['mph', 'section_duration_argmax', 'section_distance_argmax', 'start:hour', 'end:hour']\n", + "\n", + "# for group_mode in ['section_mode_argmax', 'section_distance_argmax', 'section_duration_argmax', 'duration', 'distance']:\n", + " \n", + "# if group_mode in trip_features:\n", + "# _ = trip_features.pop(trip_features.index(group_mode))\n", + " \n", + "# exp_df = get_demographic_data(\n", + "# df, \n", + "# trip_grouping=group_mode,\n", + "# trip_features=trip_features,\n", + "# use_qcut=True\n", + "# )\n", + " \n", + "# train, test = train_test_split(exp_df, test_size=0.2, random_state=SEED)\n", + " \n", + "# for sim in [\n", + "# SimilarityMetric.COSINE, SimilarityMetric.EUCLIDEAN, SimilarityMetric.KNN, SimilarityMetric.KMEANS\n", + "# ]:\n", + "# evaluate_using_similarity(test, train, sim, n_clusters=3)\n", + " \n", + "# # estimate_using_model(train, test, n_iter=200)\n", + " \n", + "# print(50*'=')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6d53f945", + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "_ = generate_tsne_plots(demo_plus_trips, perplexity=6, n_iter=7500)" + ] + }, + { + "cell_type": "markdown", + "id": "c339fcc6", + "metadata": {}, + "source": [ + "# Multi-level modeling" + ] + }, + { + "cell_type": "markdown", + "id": "213676ec", + "metadata": {}, + "source": [ + "In this approach, we want to piece together the similarity search and modeling processes. Here's a rough sketch of how it should be implemented:\n", + "\n", + "1. For every user in the training set, build a model using their entire trip history.\n", + "2. Consolidate these user-level models in data structure, preferably a dictionary.\n", + "3. Now, when we want to perform inference on a new user with no prior trips, we use the similarity search to get the user ID in the training set who is the most similar to the user in question.\n", + "4. We retrieve the model for this corresponding user and perform an inference. The hypothesis is that since the two users are similar, their trip substitution patterns are also similar." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c48ee430", + "metadata": {}, + "outputs": [], + "source": [ + "def drop_columns(df: pd.DataFrame):\n", + " to_drop = [\n", + " 'source', 'end_ts', 'end_fmt_time', 'end_loc', 'raw_trip', 'start_ts', \n", + " 'start_fmt_time', 'start_loc', 'duration', 'distance', 'start_place', \n", + " 'end_place', 'cleaned_trip', 'inferred_labels', 'inferred_trip', 'expectation',\n", + " 'confidence_threshold', 'expected_trip', 'user_input', 'start:year', 'start:month', \n", + " 'start:day', 'start_local_dt_minute', 'start_local_dt_second', \n", + " 'start_local_dt_weekday', 'start_local_dt_timezone', 'end:year', 'end:month', 'end:day', \n", + " 'end_local_dt_minute', 'end_local_dt_second', 'end_local_dt_weekday', \n", + " 'end_local_dt_timezone', '_id', 'metadata_write_ts', 'additions', \n", + " 'mode_confirm', 'purpose_confirm', 'Mode_confirm', 'Trip_purpose', \n", + " 'original_user_id', 'program', 'opcode', 'Timestamp', 'birth_year', \n", + " 'available_modes', 'section_coordinates_argmax', 'section_mode_argmax'\n", + " ]\n", + " \n", + " # Drop section_mode_argmax and available_modes.\n", + " return df.drop(\n", + " columns=to_drop, \n", + " inplace=False\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ca9e6e6a", + "metadata": {}, + "outputs": [], + "source": [ + "def construct_model_dictionary(train: pd.DataFrame):\n", + " \n", + " def train_on_user(user_id: str):\n", + " '''\n", + " Given the training set and the user ID to query, filter the dataset and\n", + " retain only the relevant trips. Then, create folds and optimize a model for this user.\n", + " Return the trained model instance.\n", + " '''\n", + " \n", + " user_data = train.loc[train.user_id == user_id, :].reset_index(drop=True)\n", + " \n", + " # Split user trips into train-test folds.\n", + " u_train, u_test = train_test_split(user_data, test_size=0.2, shuffle=True, random_state=SEED)\n", + " \n", + " user_model = estimate_using_model(\n", + " u_train, u_test, \n", + " n_iter=100\n", + " )\n", + " \n", + " return user_model\n", + " \n", + " for user in train.user_id.unique():\n", + " MODEL_DICT[user]['warm_start'] = train_on_user(user)\n", + " print(50*'=')\n", + " \n", + " print(\"\\nDone!\")" + ] + }, + { + "cell_type": "markdown", + "id": "2a035c16", + "metadata": {}, + "source": [ + "## Warm start:\n", + "\n", + "If the queried user has prior trips, we know that we we can harness the additional information. So if we encounter such a user, we will first find the most similar user (using only demographics). Once the most similar user is found, we query the trip model for the user and run inference through it.\n", + "\n", + "## Cold start:\n", + "\n", + "If the queried user has no prior trips, we will use the demo-only model. We first perform a similarity search and then run user inference through the demo-only model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "082c4e39", + "metadata": {}, + "outputs": [], + "source": [ + "class MultiLevelModel:\n", + " def __init__(self, model_dict: Dict, train: pd.DataFrame, test: pd.DataFrame, **model_kwargs):\n", + " \n", + " self._demographics = [\n", + " 'primary_job_commute_time', 'income_category', 'n_residence_members', 'n_residents_u18', \n", + " 'n_residents_with_license', 'n_motor_vehicles', 'available_modes', 'age', 'gender_Man', \n", + " 'gender_Man;Nonbinary/genderqueer/genderfluid', 'gender_Nonbinary/genderqueer/genderfluid', \n", + " 'gender_Prefer not to say', 'gender_Woman', 'gender_Woman;Nonbinary/genderqueer/genderfluid', \n", + " 'has_drivers_license_No', 'has_drivers_license_Prefer not to say', 'has_drivers_license_Yes', \n", + " 'has_multiple_jobs_No', 'has_multiple_jobs_Prefer not to say', 'has_multiple_jobs_Yes', \n", + " \"highest_education_Bachelor's degree\", 'highest_education_Graduate degree or professional degree', \n", + " 'highest_education_High school graduate or GED', 'highest_education_Less than a high school graduate', \n", + " 'highest_education_Prefer not to say', 'highest_education_Some college or associates degree', \n", + " 'primary_job_type_Full-time', 'primary_job_type_Part-time', 'primary_job_type_Prefer not to say', \n", + " 'primary_job_description_Clerical or administrative support', 'primary_job_description_Custodial', \n", + " 'primary_job_description_Education', 'primary_job_description_Food service', \n", + " 'primary_job_description_Manufacturing, construction, maintenance, or farming', \n", + " 'primary_job_description_Medical/healthcare', 'primary_job_description_Other', \n", + " 'primary_job_description_Professional, managerial, or technical', \n", + " 'primary_job_description_Sales or service', 'primary_job_commute_mode_Active transport', \n", + " 'primary_job_commute_mode_Car transport', 'primary_job_commute_mode_Hybrid', \n", + " 'primary_job_commute_mode_Public transport', 'primary_job_commute_mode_Unknown', \n", + " 'primary_job_commute_mode_WFH', 'is_overnight_trip', 'n_working_residents'\n", + " ]\n", + " \n", + " assert all([c in test.columns for c in self._demographics]), \"[test] Demographic features are missing!\"\n", + " assert all([c in train.columns for c in self._demographics]), \"[train] Demographic features are missing!\"\n", + " \n", + " self._mdict = model_dict\n", + " self._train = train\n", + " self._test = test\n", + " self.metric = model_kwargs.pop('metric', SimilarityMetric.COSINE)\n", + " \n", + " \n", + " def _phase1(self):\n", + " \n", + " tr = self._train.copy()\n", + " te = self._test.copy()\n", + " \n", + " if tr.columns.isin(['user_id', 'target']).sum() == 2:\n", + " tr = tr.drop(columns=['user_id', 'target']).reset_index(drop=True)\n", + " \n", + " if te.columns.isin(['user_id', 'target']).sum() == 2:\n", + " te = te.drop(columns=['user_id', 'target']).reset_index(drop=True)\n", + "\n", + " te_users = self._test.user_id.tolist()\n", + "\n", + " if self.metric == SimilarityMetric.COSINE:\n", + "\n", + " sim = cosine_similarity(te.values, tr.values)\n", + "\n", + " # Compute the argmax across the train set.\n", + " argmax = np.argmax(sim, axis=1)\n", + "\n", + " # Retrieve the user_id at these indices.\n", + " train_users = self._train.loc[argmax, 'user_id']\n", + "\n", + " elif self.metric == SimilarityMetric.EUCLIDEAN:\n", + "\n", + " sim = euclidean_distances(te.values, tr.values)\n", + "\n", + " # Compute the argmin here!\n", + " argmin = np.argmin(sim, axis=1)\n", + "\n", + " # Retrieve the train user_ids.\n", + " train_users = self._train.loc[argmin, 'user_id']\n", + "\n", + " return pd.DataFrame({'test_user_id': te_users, 'train_user_id': train_users})\n", + " \n", + " \n", + " def _phase2(self, sim_df: pd.DataFrame, cold_start: bool):\n", + " \n", + " prediction_df = list()\n", + " \n", + " # Now, we use the sim_df to run inference based on whether \n", + " for ix, row in sim_df.iterrows():\n", + " train_user = row['train_user_id']\n", + " \n", + " # Retrieve the appropriate model.\n", + " user_models = self._mdict.get(train_user, None)\n", + " \n", + " start_type = 'cold_start' if cold_start else 'warm_start'\n", + " \n", + " # which specific model?\n", + " sp_model = user_models.get(start_type, None)\n", + " \n", + " # Now get the test user data.\n", + " test_user = row['test_user_id']\n", + " \n", + " if cold_start:\n", + " test_data = self._test.loc[self._test.user_id == test_user, self._demographics]\n", + " test_data = test_data.iloc[0, :]\n", + " else:\n", + " test_data = self._test.loc[self._test.user_id == test_user, :]\n", + " \n", + " predictions = sp_model.predict(test_data)\n", + " \n", + " print(f\"test: [{test_user}], predictions: {predictions}\")\n", + " \n", + " \n", + " def execute_pipeline(self, cold_start: bool = False):\n", + " # For each test user, get the most similar train user.\n", + " sim_df = self._phase1()\n", + " \n", + " predictions = self._phase2(sim_df, cold_start)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eb63632d", + "metadata": {}, + "outputs": [], + "source": [ + "# FULL DATA.\n", + "train = df.loc[df.user_id.isin(TRAIN_USERS), :]\n", + "test = df.loc[df.user_id.isin(TEST_USERS), :]\n", + "\n", + "train_counts = train.user_id.value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f2528eaa", + "metadata": {}, + "outputs": [], + "source": [ + "## We only want to train on users who have a good number of trips.\n", + "good_users = train_counts[train_counts >= 100].index\n", + "\n", + "bad_users = train_counts[train_counts < 100].index\n", + "\n", + "print(f\"Number of users filtered out of training: {len(bad_users)}\")\n", + "\n", + "filtered_train = train.loc[train.user_id.isin(good_users), :]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bae55b21", + "metadata": {}, + "outputs": [], + "source": [ + "# Full data.\n", + "\n", + "train_df = drop_columns(filtered_train)\n", + "test_df = drop_columns(test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "88d0e2d2", + "metadata": {}, + "outputs": [], + "source": [ + "print(train_df.shape, test_df.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "37febd6d", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "model_dict = construct_model_dictionary(train_df)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b1249925", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "emission", + "language": "python", + "name": "emission" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/rm_src/04_FeatureClustering.ipynb b/rm_src/04_FeatureClustering.ipynb new file mode 100644 index 0000000..31c1191 --- /dev/null +++ b/rm_src/04_FeatureClustering.ipynb @@ -0,0 +1,1419 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "aa5d3c5f", + "metadata": {}, + "source": [ + "To determine which non-demographic trip-level characteristics we should stratify by, we want to do some high level clustering.\n", + "\n", + "we already have clustering based on demographics (which corresponds to the demographic stratification) and can show that the argmax replaced mode is not the same\n", + "\n", + "we should now try two clusterings:\n", + "- based on trip summaries\n", + " - % of trips in each primary sensed mode\n", + " - number of trips\n", + " - % of distance in each primary sensed mode\n", + " - most common start time\n", + " - most common end time\n", + "\n", + "we can see whether the replaced mode argmax is now consistent in each cluster\n", + "\n", + "- cluster based on the replaced mode distributions. features are:\n", + " - % of trips with x replaced mode for x in set of unique replaced modes (filtered to top 75%)\n", + " - distance of trips with x replaced mode for x in set of unique replaced modes (filtered to top 75%)\n", + "\n", + "see how the demographics and trip summaries vary per cluster and see if there is a strong correlation between certain characteristics and being in the same cluster.\n", + "\n", + "\n", + "- Chart 1 will visualize the clustering with trip-summary features\n", + "- Chart 2 will visualize the clustering with replaced mode features.\n", + "\n", + "Note that clustering is unsupervised and does not have a target variable.\n", + "\n", + "For chart 1, for $n$ users, our input matrix will be $O(n \\times 15)$ since there are ~ 6 sensed modes. After the clustering, we will check the replaced mode argmax distribution in each cluster.\n", + "\n", + "For chart 2, for $n$ users where the 75th percentile of the replaced modes has modes, our input matrix will be $O(n \\times 2 \\times r)$. After the clustering, we will check the distribution of demographics and trip characteristics in each cluster." + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "1db71454", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "9 72866\n", + "2 18633\n", + "5 13834\n", + "3 9455\n", + "8 7908\n", + "1 6539\n", + "4 1630\n", + "7 1469\n", + "6 189\n", + "Name: target, dtype: int64" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "\n", + "df = pd.read_csv('../data/filtered_data/preprocessed_data_Stage_database.csv')\n", + "df.drop_duplicates(inplace=True)\n", + "display(df.target.value_counts())" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "789df947", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import random\n", + "import os\n", + "import itertools\n", + "import pickle\n", + "import ast\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.colors as mcolors\n", + "import seaborn as sns\n", + "\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.metrics.pairwise import cosine_similarity, euclidean_distances\n", + "from sklearn.metrics import davies_bouldin_score, calinski_harabasz_score, silhouette_score\n", + "from sklearn.preprocessing import MinMaxScaler, StandardScaler\n", + "from typing import List, Dict, Union\n", + "from pandas.api.types import is_numeric_dtype\n", + "from sklearn.cluster import DBSCAN, KMeans\n", + "from collections import Counter\n", + "\n", + "pd.set_option('display.max_columns', None)\n", + "\n", + "%matplotlib inline\n", + "\n", + "SEED = 13210\n", + "\n", + "np.random.seed(SEED)\n", + "random.seed(SEED)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "33ef3275", + "metadata": {}, + "outputs": [], + "source": [ + "# Data is located at\n", + "CURRENT_DB = 'ride2own'\n", + "\n", + "df = pd.read_csv('../data/filtered_data/preprocessed_data_openpath_prod_ride2own.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "d0d884a3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "9 800\n", + "4 33\n", + "8 6\n", + "7 5\n", + "2 1\n", + "1 1\n", + "3 1\n", + "5 1\n", + "Name: target, dtype: int64" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.target.value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "b2281bdc", + "metadata": {}, + "outputs": [], + "source": [ + "df.rename(\n", + " columns={'end_local_dt_hour': 'end:hour', 'start_local_dt_hour': 'start:hour', 'replaced_mode': 'target'}, \n", + " inplace=True\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "9c22d6ac", + "metadata": {}, + "outputs": [], + "source": [ + "TARGETS = ['p_micro', 'no_trip', 's_car', 'transit', 'car', 's_micro', 'ridehail', 'walk', 'unknown']\n", + "MAP = {ix+1: t for (ix, t) in enumerate(TARGETS)}\n", + "TARGET_MAP = {v:k for k, v in MAP.items()}" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "063f6124", + "metadata": {}, + "outputs": [], + "source": [ + "df.replace({'target': TARGET_MAP}, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "cef8d45b", + "metadata": {}, + "outputs": [], + "source": [ + "# % of trips per mode.\n", + "trip_percents = df.groupby(['user_id'])['section_mode_argmax'].apply(lambda x: x.value_counts(normalize=True)).unstack(level=-1)\n", + "trip_percents.fillna(0., inplace=True)\n", + "\n", + "trip_percents.columns = ['coverage_'+x for x in trip_percents.columns]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "68c6af2d", + "metadata": {}, + "outputs": [], + "source": [ + "n_trips = pd.DataFrame(df.groupby('user_id').size(), columns=['n_trips'])" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "eff378a7", + "metadata": {}, + "outputs": [], + "source": [ + "most_common_start = df.groupby('user_id')['start:hour'].apply(lambda x: x.value_counts().idxmax())" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "cffbd401", + "metadata": {}, + "outputs": [], + "source": [ + "most_common_end = df.groupby('user_id')['end:hour'].apply(lambda x: x.value_counts().idxmax())" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "f1eb1633", + "metadata": {}, + "outputs": [], + "source": [ + "# % of distance in each primary sensed mode.\n", + "total_distance = df.groupby(['user_id', 'section_mode_argmax'])['section_distance_argmax'].sum().unstack(level=-1)\n", + "total_distance = total_distance.div(total_distance.sum(axis=1), axis=0)\n", + "total_distance.fillna(0., inplace=True)\n", + "total_distance.columns = ['pct_distance_' + x for x in total_distance.columns]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "d9cc0a0f", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "figure1_df = trip_percents.merge(right=total_distance, left_index=True, right_index=True).merge(\n", + " right=n_trips, left_index=True, right_index=True\n", + ").merge(\n", + " right=most_common_start, left_index=True, right_index=True\n", + ").merge(right=most_common_end, left_index=True, right_index=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "750fbd0c", + "metadata": {}, + "outputs": [], + "source": [ + "# Normalize the last three columns.\n", + "\n", + "def min_max_normalize(col: pd.Series):\n", + " _max, _min = col.max(), col.min()\n", + " return pd.Series((col - _min)/(_max - _min))\n", + "\n", + "figure1_df['n_trips'] = min_max_normalize(figure1_df['n_trips'])\n", + "figure1_df['start:hour'] = np.sin(figure1_df['start:hour'].values)\n", + "figure1_df['end:hour'] = np.sin(figure1_df['end:hour'].values)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "1c3d1849", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
coverage_bicyclingcoverage_carcoverage_transitcoverage_unknowncoverage_walkingpct_distance_bicyclingpct_distance_carpct_distance_transitpct_distance_unknownpct_distance_walkingn_tripsstart:hourend:hour
user_id
258a8119-a5c2-4d38-875d-a9a9f7ed2d7d0.1666670.3333330.1666670.1666670.1666670.1722180.6682930.0176670.1341880.0076340.008219-0.287903-0.287903
7ac8a16d-bafe-4bef-a5b5-43b64beb97a60.0331130.4437090.1192050.0132450.3907280.0231190.8621700.0860550.0058390.0228170.8191780.6502880.420167
87e12281-655e-4b7f-9dce-67b42217a5e80.3000000.2333330.0333330.0333330.4000000.2775270.5154700.0371760.0371510.1326760.073973-0.544021-0.544021
bc08c318-5a56-4e11-9f69-9c48468b75710.0679350.7391300.0489130.0271740.1168480.0380100.9149760.0229740.0096260.0144141.0000000.656987-0.961397
be2a3c5c-1db0-4736-8304-a1c705da4cd60.0091740.2201830.0550460.0733940.6422020.0121700.4162930.0928560.0800600.3986200.290411-0.2879030.656987
\n", + "
" + ], + "text/plain": [ + " coverage_bicycling coverage_car \\\n", + "user_id \n", + "258a8119-a5c2-4d38-875d-a9a9f7ed2d7d 0.166667 0.333333 \n", + "7ac8a16d-bafe-4bef-a5b5-43b64beb97a6 0.033113 0.443709 \n", + "87e12281-655e-4b7f-9dce-67b42217a5e8 0.300000 0.233333 \n", + "bc08c318-5a56-4e11-9f69-9c48468b7571 0.067935 0.739130 \n", + "be2a3c5c-1db0-4736-8304-a1c705da4cd6 0.009174 0.220183 \n", + "\n", + " coverage_transit coverage_unknown \\\n", + "user_id \n", + "258a8119-a5c2-4d38-875d-a9a9f7ed2d7d 0.166667 0.166667 \n", + "7ac8a16d-bafe-4bef-a5b5-43b64beb97a6 0.119205 0.013245 \n", + "87e12281-655e-4b7f-9dce-67b42217a5e8 0.033333 0.033333 \n", + "bc08c318-5a56-4e11-9f69-9c48468b7571 0.048913 0.027174 \n", + "be2a3c5c-1db0-4736-8304-a1c705da4cd6 0.055046 0.073394 \n", + "\n", + " coverage_walking \\\n", + "user_id \n", + "258a8119-a5c2-4d38-875d-a9a9f7ed2d7d 0.166667 \n", + "7ac8a16d-bafe-4bef-a5b5-43b64beb97a6 0.390728 \n", + "87e12281-655e-4b7f-9dce-67b42217a5e8 0.400000 \n", + "bc08c318-5a56-4e11-9f69-9c48468b7571 0.116848 \n", + "be2a3c5c-1db0-4736-8304-a1c705da4cd6 0.642202 \n", + "\n", + " pct_distance_bicycling \\\n", + "user_id \n", + "258a8119-a5c2-4d38-875d-a9a9f7ed2d7d 0.172218 \n", + "7ac8a16d-bafe-4bef-a5b5-43b64beb97a6 0.023119 \n", + "87e12281-655e-4b7f-9dce-67b42217a5e8 0.277527 \n", + "bc08c318-5a56-4e11-9f69-9c48468b7571 0.038010 \n", + "be2a3c5c-1db0-4736-8304-a1c705da4cd6 0.012170 \n", + "\n", + " pct_distance_car pct_distance_transit \\\n", + "user_id \n", + "258a8119-a5c2-4d38-875d-a9a9f7ed2d7d 0.668293 0.017667 \n", + "7ac8a16d-bafe-4bef-a5b5-43b64beb97a6 0.862170 0.086055 \n", + "87e12281-655e-4b7f-9dce-67b42217a5e8 0.515470 0.037176 \n", + "bc08c318-5a56-4e11-9f69-9c48468b7571 0.914976 0.022974 \n", + "be2a3c5c-1db0-4736-8304-a1c705da4cd6 0.416293 0.092856 \n", + "\n", + " pct_distance_unknown \\\n", + "user_id \n", + "258a8119-a5c2-4d38-875d-a9a9f7ed2d7d 0.134188 \n", + "7ac8a16d-bafe-4bef-a5b5-43b64beb97a6 0.005839 \n", + "87e12281-655e-4b7f-9dce-67b42217a5e8 0.037151 \n", + "bc08c318-5a56-4e11-9f69-9c48468b7571 0.009626 \n", + "be2a3c5c-1db0-4736-8304-a1c705da4cd6 0.080060 \n", + "\n", + " pct_distance_walking n_trips \\\n", + "user_id \n", + "258a8119-a5c2-4d38-875d-a9a9f7ed2d7d 0.007634 0.008219 \n", + "7ac8a16d-bafe-4bef-a5b5-43b64beb97a6 0.022817 0.819178 \n", + "87e12281-655e-4b7f-9dce-67b42217a5e8 0.132676 0.073973 \n", + "bc08c318-5a56-4e11-9f69-9c48468b7571 0.014414 1.000000 \n", + "be2a3c5c-1db0-4736-8304-a1c705da4cd6 0.398620 0.290411 \n", + "\n", + " start:hour end:hour \n", + "user_id \n", + "258a8119-a5c2-4d38-875d-a9a9f7ed2d7d -0.287903 -0.287903 \n", + "7ac8a16d-bafe-4bef-a5b5-43b64beb97a6 0.650288 0.420167 \n", + "87e12281-655e-4b7f-9dce-67b42217a5e8 -0.544021 -0.544021 \n", + "bc08c318-5a56-4e11-9f69-9c48468b7571 0.656987 -0.961397 \n", + "be2a3c5c-1db0-4736-8304-a1c705da4cd6 -0.287903 0.656987 " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "figure1_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "598d82bc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-inf\n" + ] + } + ], + "source": [ + "epsilons = np.linspace(1e-3, 1., 1000)\n", + "\n", + "best_eps = -np.inf\n", + "best_score = -np.inf\n", + "\n", + "for eps in epsilons:\n", + " model = DBSCAN(eps=eps).fit(figure1_df)\n", + " \n", + " if len(np.unique(model.labels_)) < 2:\n", + " continue\n", + " \n", + " score = silhouette_score(figure1_df, model.labels_)\n", + " if score > best_score:\n", + " best_eps = eps\n", + " best_score = score\n", + "\n", + "print(best_eps)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "bc89a42d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Counter({-1: 7})\n" + ] + } + ], + "source": [ + "'''\n", + "AlLCEO: eps=0.542\n", + "durham: eps=0.661\n", + "masscec: eps=0.64\n", + "'''\n", + "\n", + "clustering = DBSCAN(eps=0.8).fit(figure1_df)\n", + "\n", + "print(Counter(clustering.labels_))" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "05c9a7c4", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7 users in cluster -1\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAHFCAYAAACuBbDPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA39UlEQVR4nO3deXQUVd7/8U9DOp0FEkhCJEAkLCL7oiAgSlgGkE1ckH0VfPQB9UFEGWRLcAmizuCoLA4KjoLigoiIQhCJKKDBkVUQcFgVGAEhCNI0yf39wUn/aDpbxxtD8P06h3Oom1t1v11dVfmklm6HMcYIAADAglLFXQAAALhyECwAAIA1BAsAAGANwQIAAFhDsAAAANYQLAAAgDUECwAAYA3BAgAAWEOwAAAA1lyWwWLevHlyOBzef0FBQYqLi1OfPn20a9euIh9/yJAhSkhIKPJxCit7/ezdu7e4S8nT6tWr5XA4tHr16uIu5U8np3VfmO36p59+UlJSkjZu3BjQfDmN5XA4dP/99we0nPzMmDFD8+bN82vfu3evHA5Hjj/7I7zwwguqWbOmgoOD5XA4dOLEiWKpo6RxOBxKSkr6Q8cs6uPp2rVrlZSUdNlsAxMmTFC3bt1UuXJlORwODRkyxPoYl2WwyDZ37lytW7dOK1eu1P33368lS5bopptu0i+//FLcpQElzsSJE/X+++8HNM9PP/2k5OTkgINFYcYqjNyCRVxcnNatW6euXbsWeQ2X2rhxox588EG1bdtWq1at0rp161S2bNk/vI6SaN26dRo+fHhxl2HV2rVrlZycfNkEi7///e86duyYbr31VgUHBxfJGEFFslRL6tevr6ZNm0qS2rRpo8zMTE2ePFmLFy/W0KFDi7k6lCTGGJ09e1ahoaHFXUqxqVGjRpGPcebMGYWFhf0hY+XF5XKpRYsWxTL2tm3bJEn33HOPbrjhBivLzF6vlzMb+1hxvWclUWG3iVOnTqlUqQvnFF5//XXbZUm6zM9YXCo7ZBw5csSnfcOGDbr11lsVFRWlkJAQNWnSRG+//bZPn+zTXampqRo6dKiioqIUHh6u7t276z//+U++Y7/00ktq3bq1YmNjFR4ergYNGmjatGnyeDx+fT/55BO1b99ekZGRCgsLU506dZSSkhJwzZK0fv16tWrVSiEhIapUqZLGjRuX45g5GTJkiMqUKaMdO3aoU6dOCg8PV1xcnKZOnepd9k033aTw8HDVqlVLr732mt8ytm7dqh49eqh8+fIKCQlR48aNc+y3Y8cO3XLLLQoLC1NMTIzuu+8+nTp1Kse6Vq5cqfbt2ysiIkJhYWFq1aqVPv3003xfz9mzZ/Xwww+rcePGioyMVFRUlFq2bKkPPvjAr2/2afdZs2apTp06crlc3rq/+OILtWzZUiEhIapcubImTpyoOXPm+J0OTUhIULdu3bR06VI1adJEoaGhqlOnjpYuXSrpwjZVp04dhYeH64YbbtCGDRt8atiwYYP69OmjhIQEhYaGKiEhQX379tW+ffu8fYwx6tKli6Kjo7V//35v+5kzZ1SvXj3VqVNHp0+fznO9FHTd53R54p133lHz5s2922r16tV19913S7pwOaVZs2aSpKFDh3ovTWafqs7evrZs2aKOHTuqbNmyat++fa5jZZs9e7Zq1aoll8ulunXr6q233vL5eVJSkhwOh998l56yTkhI0LZt25SWluatLXvM3C6FfPHFF2rfvr3Kli2rsLAw3Xjjjfroo49yHOezzz7T//7v/yomJkbR0dG644479NNPP+X4mrK1adNGAwYMkCQ1b97c71Tzq6++qkaNGikkJERRUVG6/fbbtX37dp9l5LVec5Lbus5pPeb1fmfLyMjQmDFjVK1aNQUHB6ty5coaNWqU33aY1z42c+ZMNWrUSGXKlFHZsmVVu3ZtPfbYY3muu+xlXnwp5Pe8F9m++uorde/eXdHR0QoJCVGNGjU0atSoPOdJSEjI8RJBmzZt1KZNG+90VlaWnnjiCV177bUKDQ1VuXLl1LBhQz3//POSLrwHjzzyiCSpWrVq3u304kuUCxcuVMuWLRUeHq4yZcqoU6dO+vbbb33GDXSbyEt2qChKl/UZi0vt2bNHklSrVi1v22effaZbbrlFzZs316xZsxQZGam33npLvXv31pkzZ/w2jmHDhqlDhw5asGCBDhw4oAkTJqhNmzbavHmzypUrl+vYP/zwg/r16+fd2TZt2qQnn3xSO3bs0Kuvvurt98orr+iee+5RYmKiZs2apdjYWO3cuVNbt24NuObvvvtO7du3V0JCgubNm6ewsDDNmDFDCxYsKPA683g8uuOOO3TffffpkUce0YIFCzRu3DhlZGTovffe09ixY1WlShW98MILGjJkiOrXr6/rr79ekvT999/rxhtvVGxsrP7xj38oOjpab7zxhoYMGaIjR47o0UcflXQh6CUmJsrpdGrGjBm66qqrNH/+/Byvp7/xxhsaNGiQevTooddee01Op1OzZ89Wp06dtHz58jx3FrfbrePHj2vMmDGqXLmyzp07p5UrV+qOO+7Q3LlzNWjQIJ/+ixcv1po1azRp0iRVrFhRsbGx2rx5szp06OANUmFhYZo1a5beeOONHMfctGmTxo0bp/HjxysyMlLJycm64447NG7cOH366ad66qmn5HA4NHbsWHXr1k179uzx/sW2d+9eXXvtterTp4+ioqJ06NAhzZw5U82aNdN3332nmJgYORwOvf7662rcuLF69eqlNWvWyOl0asSIEdqzZ4+++uorhYeH57pOAln3l1q3bp169+6t3r17KykpSSEhIdq3b59WrVolSbruuus0d+5cDR06VBMmTPBeVqhSpYp3GefOndOtt96qe++9V3/96191/vz5PMdcsmSJPvvsM02ZMkXh4eGaMWOG+vbtq6CgIPXs2TPfmi/2/vvvq2fPnoqMjNSMGTMkXThTkZu0tDR16NBBDRs21CuvvCKXy6UZM2aoe/fuevPNN9W7d2+f/sOHD1fXrl29x4pHHnlEAwYM8K6fnMyYMUNvvvmmnnjiCc2dO1e1a9dWhQoVJEkpKSl67LHH1LdvX6WkpOjYsWNKSkpSy5YtlZ6ermuuuca7nEDXa0Hk935LFwJtYmKiDh48qMcee0wNGzbUtm3bNGnSJG3ZskUrV670CSs57WNvvfWWRowYoQceeEDPPvusSpUqpd27d+u7774rdO2FeS8kafny5erevbvq1Kmjv/3tb7r66qu1d+9erVixotC1XGzatGlKSkrShAkT1Lp1a3k8Hu3YscN72WP48OE6fvy4XnjhBS1atEhxcXGSpLp160qSnnrqKU2YMMG7j507d07PPPOMbr75Zn399dfeflLRbBNFxlyG5s6daySZ9evXG4/HY06dOmU++eQTU7FiRdO6dWvj8Xi8fWvXrm2aNGni02aMMd26dTNxcXEmMzPTZ5m33367T78vv/zSSDJPPPGEt23w4MGmatWqudaXmZlpPB6P+de//mVKly5tjh8/bowx5tSpUyYiIsLcdNNNJisrK9f5C1pz7969TWhoqDl8+LC3z/nz503t2rWNJLNnz55cx8h+HZLMe++9523zeDymQoUKRpL597//7W0/duyYKV26tBk9erS3rU+fPsblcpn9+/f7LLdz584mLCzMnDhxwhhjzNixY43D4TAbN2706dehQwcjyXz22WfGGGNOnz5toqKiTPfu3X36ZWZmmkaNGpkbbrghz9dzqfPnzxuPx2OGDRtmmjRp4vMzSSYyMtL73mS76667THh4uPn55599xq9bt67fOq1ataoJDQ01Bw8e9LZt3LjRSDJxcXHm9OnT3vbFixcbSWbJkiV51vvrr7+a8PBw8/zzz/v87IsvvjBBQUFm1KhR5tVXXzWSzJw5c/JdBwVd98b4b9fPPvuskeR9H3OSnp5uJJm5c+f6/Sx7+3r11Vdz/Nml+5CkXLfnmjVretsmT55scjo0Ze/DF79H9erVM4mJiX599+zZ41d3ixYtTGxsrDl16pTP+PXr1zdVqlTx7rPZ44wYMcJnmdOmTTOSzKFDh/zGy6nO9PR0b9svv/xiQkNDTZcuXXz67t+/37hcLtOvXz9vW17rNSe5Ha8uXY8Feb9TUlJMqVKlfGo3xph3333XSDLLli3ztuW2j91///2mXLlyBar9UpLM5MmTvdO/972oUaOGqVGjhvntt99y7ZPTdlW1alUzePBgv76JiYk+21u3bt1M48aN86zhmWeeyfF4vX//fhMUFGQeeOABn/ZTp06ZihUrml69ennbAt0mCio8PDzH1/l7XdaXQlq0aCGn06myZcvqlltuUfny5fXBBx8oKOjCiZbdu3drx44d6t+/vyTp/Pnz3n9dunTRoUOH9P333/ssM7tvthtvvFFVq1bVZ599lmct3377rW699VZFR0erdOnScjqdGjRokDIzM7Vz505JF27SycjI0IgRI3I8lRtozZ999pnat2+vq666yjt/6dKl/f6yyovD4VCXLl2800FBQapZs6bi4uLUpEkTb3tUVJRiY2N9TtOvWrVK7du3V3x8vM8yhwwZojNnzmjdunXeOuvVq6dGjRr59OvXr5/P9Nq1a3X8+HENHjzY53VnZWXplltuUXp6er6n/d955x21atVKZcqUUVBQkJxOp1555RW/08mS1K5dO5UvX96nLS0tTe3atVNMTIy3rVSpUurVq1eO4zVu3FiVK1f2TtepU0fShVOiF1/fzG6/eP39+uuvGjt2rGrWrKmgoCAFBQWpTJkyOn36tF+9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D8GWyZMna+nSpWrbtq0mTZqkqKgozZ8/Xx999JGmTZumyMhISdKoUaP06quvqmvXrnriiSe8Tybs2LHDb/288MILGjx4sI4fP66ePXsqNjZWP//8szZt2qSff/5ZM2fOzLWebt26adGiRRoxYoR69uypAwcO6PHHH1dcXFyBP5F1/Pjx+vDDD9W+fXuNHz9eoaGhmjVrlned2noUKyIiQq1bt9YzzzyjmJgYJSQkKC0tTa+88orf00epqalKSUnRxIkTvb9gUlJSNGbMGLVp00a33357ruMUdN3nZNKkSTp48KDat2+vKlWq6MSJE3r++efldDqVmJgo6cJnX4SGhmr+/PmqU6eOypQpo0qVKnkvHwQqJiZG7dq108SJE71PhezYscPnkdMuXbooKipKw4YN05QpUxQUFKR58+bpwIEDfstr0KCB3nrrLS1cuFDVq1dXSEiIGjRokOPYKSkp6tChg9q2basxY8YoODhYM2bM0NatW/Xmm28GfPYlEOXKldPEiRP12GOPadCgQerbt6+OHTum5ORkhYSEaPLkyYVedu/evTVp0iT16dNHjzzyiM6ePat//OMffgG2IO/3qFGj9N5776l169Z66KGH1LBhQ2VlZWn//v1asWKFHn74YTVv3jzPeu655x6FhoaqVatWiouL0+HDh5WSkqLIyEjvfR5/lJdeekndu3dXixYt9NBDD+nqq6/W/v37tXz5cr8/Mi82cOBADRgwQCNGjNCdd96pffv2adq0ad6zINm6d+/u/bylChUqaN++fZo+fbqqVq3qfcone3t8/vnnNXjwYDmdTl177bVKSEjQlClTNH78eP3nP//x3kd45MgRff311woPD1dycrL1dZKWlua9TJSZmal9+/bp3XfflXThD69LX2OhWL8d1IKc7qrO9ttvv5mrr77aXHPNNeb8+fPGGGM2bdpkevXqZWJjY43T6TQVK1Y07dq1M7NmzfJb5ooVK8zAgQNNuXLlvHdp79q1y2eMnO6y/vDDD02jRo1MSEiIqVy5snnkkUfMxx9/7HfnvTHGLFu2zCQmJprw8HATFhZm6tata55++mmfPgWp2ZgLT620aNHCuFwuU7FiRfPII4+Yl19+ucBPhYSHh/u1JyYmmnr16vm1V61a1XTt2tWnbcuWLaZ79+4mMjLSBAcHm0aNGuX4hMB3331nOnToYEJC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rzFjxmjjxo2qVauW+vbtq/Pnz0uSvvnmG/Xq1Ut9+vTRli1blJSUpIkTJ2revHmSpDZt2mjbtm06evSoJCktLU0xMTFKS0uTJJ0/f15r165VYmKid7wffvhBixcv1tKlS7V06VKlpaVp6tSpRbWKABQCwQL4kxoyZIj69u2rmjVr6qmnntLp06f19ddf+/Q5cuSIEhMTFRsbq48++kjh4eE+Px8zZoy6du2qWrVqKTk5Wfv27dPu3bslSX/729/Uvn17TZw4UbVq1dKQIUN0//3365lnnpEk1a9fX9HR0d4gsXr1aj388MPe6fT0dJ09e1Y33XSTd7ysrCzNmzdP9evX180336yBAwfq008/LbJ1BCBwBAvgT6phw4be/4eHh6ts2bL673//69PnL3/5i6pXr663335bwcHBeS4jLi5OkrzL2L59u1q1auXTv1WrVtq1a5cyMzPlcDjUunVrrV69WidOnNC2bdt03333KTMzU9u3b9fq1at13XXXqUyZMt75ExISVLZsWZ8xL60ZQPEiWABXoFKlSunST+v3eDw+006n02fa4XAoKyvLp61r165as2aNvvvuuxzHuXgZDodDkrzLMMZ427JdWlObNm20evVqrVmzRo0aNVK5cuXUunVrpaWlafXq1WrTpk3ANQMoXgQL4ApUoUIFHTp0yDudkZGhPXv2BLycqVOnavDgwWrfvn2u4SI3devW1RdffOHTtnbtWtWqVUulS5eW9P/vs3j33Xe9ISIxMVErV670u78CQMlAsACuQO3atdPrr7+uNWvWaOvWrRo8eLD3l3mgnn32WfXv31/t2rXTjh07Cjzfww8/rE8//VSPP/64du7cqddee00vvviixowZ4+2TfZ/F/PnzvcGiTZs2Wrx4sX777Tef+ysAlAxBxV0AAPvGjRun//znP+rWrZsiIyP1+OOPF+qMRba///3vyszMVLt27bR69eoc77e41HXXXae3335bkyZN0uOPP664uDhNmTJFQ4YM8fZxOBxKTEzU4sWLdfPNN0u6cN9GZGSkqlevroiIiELXDKB48LXpAADAGi6FAAAAawgWAADAGoIFAACwhmABAACsIVgAAABrCBYAAMAaggUAALCGYAEAAKwhWAB/Ug6HI89/F39C5h8tISFB06dPL7bxARQeH+kN/Eld/CVlCxcu1KRJk/T9999720JDQwNa3rlz5wr0Ud8ArmycsQD+pCpWrOj9FxkZKYfD4Z12Op267777VKVKFYWFhalBgwZ68803feZv06aN7r//fo0ePVoxMTHq0KGDJGnJkiW65pprFBoaqrZt2+q1116Tw+HQiRMnvPOuXbtWrVu3VmhoqOLj4/Xggw/q9OnT3uXu27dPDz30kPfsCYCSg2ABwM/Zs2d1/fXXa+nSpdq6dav+53/+RwMHDtRXX33l0++1115TUFCQvvzyS82ePVt79+5Vz549ddttt2njxo269957NX78eJ95tmzZok6dOumOO+7Q5s2btXDhQn3xxRe6//77JUmLFi1SlSpVNGXKFB06dMjnzAqAyx9fQgZA8+bN06hRo3zOKlyqa9euqlOnjp599llJF84snDx5Ut9++623z1//+ld99NFH2rJli7dtwoQJevLJJ/XLL7+oXLlyGjRokEJDQzV79mxvny+++EKJiYk6ffq0QkJClJCQoFGjRmnUqFHWXyuAosU9FgD8ZGZmaurUqVq4cKF+/PFHud1uud1uhYeH+/Rr2rSpz/T333+vZs2a+bTdcMMNPtPffPONdu/erfnz53vbjDHKysrSnj17VKdOHcuvBsAfiWABwM9zzz2nv//975o+fboaNGig8PBwjRo1SufOnfPpd2nQMMb43RNx6UnRrKws3XvvvXrwwQf9xr366qstvQIAxYVgAcDPmjVr1KNHDw0YMEDShTCwa9eufM8m1K5dW8uWLfNp27Bhg8/0ddddp23btqlmzZq5Lic4OFiZmZmFrB5AceLmTQB+atasqdTUVK1du1bbt2/Xvffeq8OHD+c737333qsdO3Zo7Nix2rlzp95++23NmzdPkrxnMsaOHat169Zp5MiR2rhxo3bt2qUlS5bogQce8C4nISFBn3/+uX788UcdPXq0SF4jgKJBsADgZ+LEibruuuvUqVMntWnTRhUrVtRtt92W73zVqlXTu+++q0WLFqlhw4aaOXOm96kQl8slSWrYsKHS0tK0a9cu3XzzzWrSpIkmTpyouLg473KmTJmivXv3qkaNGqpQoUKRvEYARYOnQgAUqSeffFKzZs3SgQMHirsUAH8A7rEAYNWMGTPUrFkzRUdH68svv9Qzzzzj/YwKAFc+ggUAq3bt2qUnnnhCx48f19VXX62HH35Y48aNK+6yAPxBuBQCAACs4eZNAABgDcECAABYQ7AAAADWECwAAIA1BAsAAGANwQIAAFhDsAAAANYQLAAAgDUECwAAYM3/A3B8szXBm5L9AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# After clustering, we would like to see what the replaced mode argmax distribution in each cluster is.\n", + "\n", + "labels = clustering.labels_\n", + "\n", + "for cix in np.unique(labels):\n", + " cluster_users = figure1_df.iloc[labels == cix,:].index\n", + " \n", + " print(f\"{len(cluster_users)} users in cluster {cix}\")\n", + " \n", + " # Now, for each user, look at the actual data and determine the replaced mode argmax distribution.\n", + " sub_df = df.loc[df.user_id.isin(cluster_users), :].reset_index(drop=True)\n", + " \n", + " sub_df['target'] = sub_df['target'].apply(lambda x: MAP[x])\n", + " \n", + " rm_argmax = sub_df.groupby('user_id')['target'].apply(lambda x: x.value_counts().idxmax())\n", + " fig, ax = plt.subplots()\n", + " rm_argmax.hist(ax=ax)\n", + " ax.set_title(f\"Replaced mode argmax distribution for users in cluster {cix}\")\n", + " ax.set_xlabel(\"Target\")\n", + " \n", + " plt.savefig(f'./plots_for_paper/{CURRENT_DB}__FIG1_cluster_{cix}_target_dist.png', dpi=300)\n", + " \n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f2e8e117", + "metadata": {}, + "outputs": [], + "source": [ + "user_target_pct = pd.DataFrame()\n", + "\n", + "# For every user, compute the replaced mode distribution.\n", + "for user_id, user_data in df.groupby('user_id'):\n", + " \n", + " target_distribution = user_data['target'].value_counts(normalize=True)\n", + " target_distribution.rename(index=MAP, inplace=True)\n", + " user_target_pct = pd.concat([user_target_pct, target_distribution.to_frame(user_id).T])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "99369dba", + "metadata": {}, + "outputs": [], + "source": [ + "user_target_pct.columns = ['pct_trips_' + str(x) for x in user_target_pct.columns]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6cca3671", + "metadata": {}, + "outputs": [], + "source": [ + "target_distance = pd.DataFrame()\n", + "\n", + "# For every user, compute the replaced mode distribution.\n", + "for user_id, user_data in df.groupby('user_id'):\n", + " \n", + " # total_distance = user_data['distance'].sum()\n", + " distance_per_target = user_data.groupby('target')['section_distance_argmax'].sum()\n", + " distance_per_target.rename(index=MAP, inplace=True)\n", + " row = distance_per_target.to_frame(user_id).T\n", + " target_distance = pd.concat([target_distance, row])\n", + " \n", + "target_distance.columns = ['distance_' + str(x) for x in target_distance.columns]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18093734", + "metadata": {}, + "outputs": [], + "source": [ + "target_duration = df.groupby(['user_id', 'target'])['section_duration_argmax'].sum().unstack()\n", + "target_duration.rename(columns=MAP, inplace=True)\n", + "target_duration.fillna(0., inplace=True)\n", + "target_duration.columns = ['duration_' + str(x) for x in target_duration.columns]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8001a140", + "metadata": {}, + "outputs": [], + "source": [ + "target_df = user_target_pct.merge(right=target_distance, left_index=True, right_index=True).merge(\n", + " right=target_duration, left_index=True, right_index=True\n", + ")\n", + "\n", + "target_df.fillna(0., inplace=True)\n", + "\n", + "target_df = pd.DataFrame(\n", + " MinMaxScaler().fit_transform(target_df),\n", + " columns=target_df.columns,\n", + " index=target_df.index\n", + ")\n", + "\n", + "display(target_df)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "31fecc00", + "metadata": {}, + "outputs": [], + "source": [ + "epsilons = np.linspace(5e-3, 1., 1500)\n", + "best_score = -np.inf\n", + "best_eps = None\n", + "best_n = None\n", + "# alpha = 0.7\n", + "beta = 0.05\n", + "\n", + "for eps in epsilons:\n", + " for n in range(2, 30):\n", + " labels = DBSCAN(eps=eps, min_samples=n).fit(target_df).labels_\n", + " \n", + " n_unique = np.unique(labels)\n", + " n_outliers = len(labels[labels == -1])\n", + " \n", + " if n_outliers == len(labels) or len(n_unique) < 2:\n", + " continue\n", + " \n", + " # Encourage more clustering and discourage more outliers.\n", + " score = silhouette_score(target_df, labels) + (len(labels) - n_outliers)/n_outliers\n", + " \n", + " if score > best_score:\n", + " best_score = score\n", + " best_eps = eps\n", + " best_n = n\n", + "\n", + "print(f\"{best_score=}, {best_n=}, {best_eps=}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e39b41ba", + "metadata": {}, + "outputs": [], + "source": [ + "# 0.35 is a good value\n", + "\n", + "'''\n", + "allCEO = DBSCAN(eps=0.52, min_samples=2)\n", + "durham: DBSCAN(eps=best_eps, min_samples=2)\n", + "masscec: min_samples=2, eps=0.986724482988659\n", + "'''\n", + "\n", + "cl2 = DBSCAN(eps=best_eps, min_samples=2).fit(target_df)\n", + "# cl2 = KMeans(n_clusters=5).fit(target_df)\n", + "\n", + "Counter(cl2.labels_)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1dbf8763", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.decomposition import PCA\n", + "\n", + "tsfm = PCA(n_components=2).fit_transform(target_df)\n", + "\n", + "fig, ax = plt.subplots()\n", + "sns.scatterplot(x=tsfm[:,0], y=tsfm[:,1], c=cl2.labels_)\n", + "ax.set(xlabel='Latent Dim 0', ylabel='Latent Dim 1')\n", + "plt.savefig(f'./plots_for_paper/{CURRENT_DB}__Fig2__PCA_w_colors.png', dpi=300)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e444316", + "metadata": {}, + "outputs": [], + "source": [ + "print(df.columns.tolist())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f0bc09b9", + "metadata": {}, + "outputs": [], + "source": [ + "# Per-cluster users.\n", + "from sklearn.preprocessing import OneHotEncoder\n", + "from sklearn.preprocessing import MinMaxScaler\n", + "from sklearn.ensemble import IsolationForest\n", + "from sklearn.svm import OneClassSVM\n", + "from sklearn.neighbors import LocalOutlierFactor\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "\n", + "\n", + "demographic_cols = {\n", + " 'Stage_database': [\n", + " 'has_drivers_license', 'is_student', 'is_paid', \n", + " 'income_category', 'n_residence_members', 'n_residents_u18', 'n_residents_with_license', \n", + " 'n_motor_vehicles', 'has_medical_condition', 'ft_job', 'multiple_jobs', \n", + " 'n_working_residents', \"highest_education_Bachelor's degree\", \n", + " 'highest_education_Graduate degree or professional degree', \n", + " 'highest_education_High school graduate or GED', 'highest_education_Less than a high school graduate', \n", + " 'highest_education_Prefer not to say', 'highest_education_Some college or associates degree', \n", + " 'primary_job_description_Clerical or administrative support', 'primary_job_description_Custodial', \n", + " 'primary_job_description_Education', 'primary_job_description_Food service', \n", + " 'primary_job_description_Linecook', \n", + " 'primary_job_description_Manufacturing, construction, maintenance, or farming', \n", + " 'primary_job_description_Medical/healthcare', 'primary_job_description_Non-profit program manager', \n", + " 'primary_job_description_Other', 'primary_job_description_Professional, managerial, or technical', \n", + " 'primary_job_description_Sales or service', 'primary_job_description_Self employed', \n", + " 'primary_job_description_food service', 'gender_Man', 'gender_Nonbinary/genderqueer/genderfluid', \n", + " 'gender_Prefer not to say', 'gender_Woman', 'gender_Woman;Nonbinary/genderqueer/genderfluid', \n", + " 'av_transit', 'av_no_trip', 'av_p_micro', 'av_s_micro', 'av_ridehail', 'av_unknown', 'av_walk', 'av_car', \n", + " 'av_s_car'\n", + " ] + [c for c in df.columns if 'age' in c],\n", + " 'durham': [\n", + " 'is_student', 'is_paid', 'has_drivers_license', \n", + " 'n_residents_u18', 'n_residence_members', 'income_category',\n", + " 'n_residents_with_license', 'n_working_residents', 'n_motor_vehicles', 'has_medical_condition', \n", + " 'ft_job', 'multiple_jobs', 'highest_education_bachelor_s_degree', \n", + " 'highest_education_graduate_degree_or_professional_degree', \n", + " 'highest_education_high_school_graduate_or_ged', 'highest_education_less_than_a_high_school_graduate', \n", + " 'highest_education_some_college_or_associates_degree', \n", + " 'primary_job_description_Clerical or administrative support', \n", + " 'primary_job_description_Manufacturing, construction, maintenance, or farming', \n", + " 'primary_job_description_Other', 'primary_job_description_Professional, Manegerial, or Technical', \n", + " 'primary_job_description_Sales or service', 'gender_man', \n", + " 'gender_non_binary_genderqueer_gender_non_confor', 'gender_woman', \n", + " 'av_walk', 'av_unknown', 'av_no_trip', 'av_p_micro', 'av_transit', 'av_car', 'av_ridehail', \n", + " 'av_s_micro', 'av_s_car'\n", + " ] + [c for c in df.columns if 'age' in c],\n", + " 'masscec': [\n", + " 'is_student', 'is_paid', 'has_drivers_license', 'n_residents_u18', 'n_residence_members', \n", + " 'income_category', 'n_residents_with_license', 'n_working_residents', 'n_motor_vehicles', \n", + " 'has_medical_condition', 'ft_job', 'multiple_jobs', 'highest_education_bachelor_s_degree', \n", + " 'highest_education_graduate_degree_or_professional_degree', \n", + " 'highest_education_high_school_graduate_or_ged', 'highest_education_less_than_a_high_school_graduate', \n", + " 'highest_education_prefer_not_to_say', 'highest_education_some_college_or_associates_degree', \n", + " 'primary_job_description_Clerical or administrative support', \n", + " 'primary_job_description_Manufacturing, construction, maintenance, or farming', \n", + " 'primary_job_description_Other', 'primary_job_description_Prefer not to say', \n", + " 'primary_job_description_Professional, Manegerial, or Technical', \n", + " 'primary_job_description_Sales or service', 'gender_man', 'gender_prefer_not_to_say', 'gender_woman', \n", + " 'av_p_micro', 'av_s_car', 'av_s_micro', 'av_transit', 'av_car', 'av_no_trip', 'av_unknown', \n", + " 'av_ridehail', 'av_walk'\n", + " ] + [c for c in df.columns if 'age' in c],\n", + "}\n", + "\n", + "\n", + "cluster_labels = cl2.labels_\n", + "demographics = df.groupby('user_id').first()[demographic_cols[CURRENT_DB]]\n", + "demographics = demographics.loc[target_df.index, :]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5a3c6355", + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "### DEMOGRAPHICS\n", + "\n", + "def entropy(x):\n", + " # Compute bincount, normalize over the entire size. Gives us probabilities.\n", + " p = np.unique(x, return_counts=True)[1]/len(x)\n", + " # Compute the enropy usnig the probabilities.\n", + " return -np.sum(p * np.log2(p))\n", + "\n", + "def preprocess_demo_data(df: pd.DataFrame):\n", + " return df\n", + "\n", + "\n", + "within_cluster_homogeneity = dict()\n", + "other_cluster_homogeneity = dict()\n", + "labels = cl2.labels_\n", + "\n", + "for cix in np.unique(labels):\n", + " within_cluster_homogeneity[cix] = dict()\n", + " users = target_df[labels == cix].index\n", + " data = demographics.loc[demographics.index.isin(users), :].reset_index(drop=True)\n", + " processed = preprocess_demo_data(data)\n", + " \n", + " for col in processed.columns:\n", + " # Numeric/ordinal values. Use std. to measure homogeneity.\n", + " if col in [\n", + " 'n_residence_members', 'n_residents_u18', 'n_working_residents', 'n_motor_vehicles',\n", + " 'n_residents_with_license', 'income_category'\n", + " ]:\n", + " within_cluster_homogeneity[cix][col] = processed[col].std()\n", + " else:\n", + " within_cluster_homogeneity[cix][col] = entropy(processed[col])\n", + "\n", + "# Compute average homogeneity across other clusters.\n", + "for cix in within_cluster_homogeneity.keys():\n", + " other_cluster_homogeneity[cix] = dict()\n", + " other_clusters = set(within_cluster_homogeneity.keys()) - set([cix])\n", + " for feature in within_cluster_homogeneity[cix].keys():\n", + " homogeneity_in_others = [within_cluster_homogeneity[x][feature] for x in other_clusters]\n", + " other_cluster_homogeneity[cix][feature] = np.mean(homogeneity_in_others)\n", + "\n", + " \n", + "# Compute contrastive homogeneity\n", + "# CH = homogeneity within cluster / average homogeneity across other clusters\n", + "for cix in within_cluster_homogeneity.keys():\n", + " ch_scores = list()\n", + " print(f\"For cluster {cix}:\")\n", + " for feature in within_cluster_homogeneity[cix].keys():\n", + " feature_ch = within_cluster_homogeneity[cix][feature]/(other_cluster_homogeneity[cix][feature] + 1e-6)\n", + " ch_scores.append((feature, feature_ch))\n", + " \n", + " ch_df = pd.DataFrame(ch_scores, columns=['feature', 'ch']).sort_values(by=['ch']).head(4)\n", + " \n", + " # Display actual values.\n", + " users = target_df[labels == cix].index\n", + " data = demographics.loc[demographics.index.isin(users), :].reset_index(drop=True)\n", + " processed = preprocess_demo_data(data)\n", + " \n", + " display(ch_df)\n", + " print()\n", + " filtered = processed.loc[:, processed.columns.isin(ch_df.feature)][ch_df.feature]\n", + " filtered_features = ch_df.feature.tolist()\n", + " \n", + " fig, ax = plt.subplots(nrows=2, ncols=2, figsize=(12, 10))\n", + " for i, a in enumerate(ax.flatten()):\n", + " sns.histplot(filtered[filtered_features[i]], ax=a, stat=\"percent\")\n", + " plt.tight_layout()\n", + " plt.savefig(f\"{CURRENT_DB}_{cix}_Demographic_consistency.png\", dpi=300)\n", + " plt.show()\n", + " print()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "580bbd86", + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.stats import iqr\n", + "\n", + "def get_trip_summary_df(users, df):\n", + " '''\n", + " 1. df = a huge dataframe of user-trips. Each row is a trip.\n", + " 2. every trip is divided into sections: [walk, transit, walk]\n", + " 3. Each section has a corresponding distance and duration: [m1, m2, m3], [t1, t2, t3], [d1, d2, d3]\n", + " 4. What we are doing is only considering the mode, distance, and duration of the section with the largest distance\n", + " '''\n", + " \n", + " costs = [c for c in df.columns if 'av_' in c]\n", + " \n", + " mode_coverage = df.groupby(['user_id', 'section_mode_argmax'])[\n", + " ['section_duration_argmax', 'section_distance_argmax', 'mph'] + costs\n", + " ].agg(['mean', 'median']).unstack()\n", + " \n", + " global_stats = df.groupby('user_id')[['duration', 'distance']].agg(\n", + " ['mean', 'median']\n", + " )\n", + "\n", + " mode_coverage.columns = mode_coverage.columns.map('_'.join)\n", + " global_stats.columns = global_stats.columns.map('_'.join)\n", + " \n", + " # return mode_coverage\n", + " return mode_coverage.merge(right=global_stats, left_index=True, right_index=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "92ad2485", + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "## TRIP SUMMARIES\n", + "\n", + "# Per-cluster users.\n", + "from sklearn.preprocessing import MinMaxScaler, StandardScaler\n", + "from sklearn.ensemble import IsolationForest\n", + "from sklearn.svm import OneClassSVM\n", + "from sklearn.neighbors import LocalOutlierFactor\n", + "from sklearn.feature_selection import SelectKBest, mutual_info_classif\n", + "\n", + "labels = cl2.labels_\n", + "\n", + "def get_data(cix):\n", + " users = target_df.iloc[labels == cix, :].index\n", + " \n", + " # Compute trip summaries.\n", + " X = df.loc[df.user_id.isin(users), [\n", + " 'section_distance_argmax', 'duration', 'distance', 'section_mode_argmax',\n", + " 'section_duration_argmax', 'mph', 'target', 'user_id'\n", + " ] + [c for c in df.columns if 'cost_' in c]].reset_index(drop=True)\n", + " \n", + " # Compute the target distribution and select the argmax.\n", + " target_distribution = X.target.value_counts(ascending=False, normalize=True)\n", + " target_distribution.rename(index=MAP, inplace=True)\n", + " \n", + " # Caution - this summary df has NaNs. Use nanstd() to compute nan-aware std.\n", + " subset = get_trip_summary_df(users, X)\n", + " \n", + " norm_subset = pd.DataFrame(\n", + " MinMaxScaler().fit_transform(subset),\n", + " columns=subset.columns, index=subset.index\n", + " )\n", + " \n", + " return norm_subset, target_distribution\n", + "\n", + "\n", + "in_cluster_homogeneity = dict()\n", + "out_cluster_homogeneity = dict()\n", + "\n", + "for cluster_ix in np.unique(labels):\n", + " in_cluster_homogeneity[cluster_ix] = dict()\n", + " norm_subset, _ = get_data(cluster_ix)\n", + " for feature in norm_subset.columns:\n", + " in_cluster_homogeneity[cluster_ix][feature] = np.nanstd(norm_subset[feature])\n", + "\n", + "for cix in in_cluster_homogeneity.keys():\n", + " out_cluster_homogeneity[cix] = dict()\n", + " oix = set(labels) - set([cix])\n", + " for feature in norm_subset.columns:\n", + " out_cluster_homogeneity[cix][feature] = np.nanmean([in_cluster_homogeneity[x].get(feature, np.nan) for x in oix])\n", + "\n", + "# Now, compute the per-cluster homogeneity.\n", + "for cix in in_cluster_homogeneity.keys():\n", + " ch = list()\n", + " for feature in in_cluster_homogeneity[cix].keys():\n", + " if feature in in_cluster_homogeneity[cix] and feature in out_cluster_homogeneity[cix]:\n", + " ratio = in_cluster_homogeneity[cix][feature] / (out_cluster_homogeneity[cix][feature] + 1e-6)\n", + " ch.append([feature, ratio])\n", + " \n", + " ch_df = pd.DataFrame(ch, columns=['feature', 'ch']).sort_values(by=['ch']).head(4)\n", + " data, target_dist = get_data(cix)\n", + " \n", + " features = ch_df.feature.tolist()\n", + " \n", + " print(f\"For cluster {cix}:\")\n", + " display(target_dist)\n", + " display(ch_df)\n", + " \n", + " fig, ax = plt.subplots(nrows=2, ncols=2, figsize=(12, 10))\n", + " for i, a in enumerate(ax.flatten()):\n", + " sns.histplot(data[features[i]], ax=a, stat=\"percent\")\n", + " plt.tight_layout()\n", + " plt.savefig(f\"{CURRENT_DB}_{cix}_Trip_consistency.png\", dpi=300)\n", + " plt.show()\n", + " print()\n", + " \n", + " print(50*'=')" + ] + }, + { + "cell_type": "markdown", + "id": "4992ff45", + "metadata": {}, + "source": [ + "## Now check the combined homogeneity score" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a8723e3d", + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "ic, oc = dict(), dict()\n", + "\n", + "labels = cl2.labels_\n", + "TOP_K = 3\n", + "\n", + "\n", + "for cix in np.unique(labels):\n", + " ic[cix] = dict()\n", + " \n", + " # Trip characteristics.\n", + " norm_subset, _ = get_data(cix)\n", + " for feature in norm_subset.columns:\n", + " ic[cix][feature] = np.nanstd(norm_subset[feature])\n", + " \n", + " # Demographics.\n", + " users = target_df[labels == cix].index\n", + " data = demographics.loc[demographics.index.isin(users), :].reset_index(drop=True)\n", + " processed = preprocess_demo_data(data)\n", + " \n", + " for col in processed.columns:\n", + " # Numeric/ordinal values. Use std. to measure homogeneity.\n", + " if col in [\n", + " 'n_residence_members', 'n_residents_u18', 'n_working_residents', 'n_motor_vehicles',\n", + " 'n_residents_with_license', 'income_category'\n", + " ]:\n", + " ic[cix][col] = np.nanstd(processed[col])\n", + " else:\n", + " ic[cix][col] = entropy(processed[col])\n", + "\n", + "for cix in ic.keys():\n", + " oc[cix] = dict()\n", + " oix = set(labels) - set([cix])\n", + " for feature in ic[cix].keys():\n", + " oc[cix][feature] = np.nanmean([ic[x].get(feature, np.nan) for x in oix])\n", + "\n", + "per_cluster_most_homogeneous = dict()\n", + "\n", + "# Now, compute the per-cluster homogeneity.\n", + "ax_ix = 0\n", + "for cix in ic.keys():\n", + "\n", + " print(f\"For cluster {cix}:\")\n", + "\n", + " # For each, cluster, we will have (TOP_K x n_clusters) figures.\n", + " fig, ax = plt.subplots(nrows=TOP_K, ncols=len(ic.keys()), figsize=(12, 8))\n", + "\n", + " other_ix = set(ic.keys()) - set([cix])\n", + " \n", + " ch = list()\n", + " for feature in ic[cix].keys():\n", + " if feature in oc[cix]:\n", + " ratio = ic[cix][feature] / (oc[cix][feature] + 1e-6)\n", + " ch.append([feature, ratio])\n", + " \n", + " # Just the top k.\n", + " ch_df = pd.DataFrame(ch, columns=['feature', 'ch']).sort_values(by=['ch']).reset_index(drop=True).head(TOP_K)\n", + "\n", + " figure_data = dict()\n", + " \n", + " # Get the actual trip summary data.\n", + " trip_summary_data, target_dist = get_data(cix)\n", + " \n", + " # Get the actual demographic data.\n", + " users = target_df[labels == cix].index\n", + " data = demographics.loc[demographics.index.isin(users), :].reset_index(drop=True)\n", + " processed = preprocess_demo_data(data)\n", + "\n", + " # Left-most subplot will be that of the current cluster's feature.\n", + " for row_ix, row in ch_df.iterrows():\n", + " if row.feature in trip_summary_data.columns:\n", + " sns.histplot(trip_summary_data[row.feature], ax=ax[row_ix][0], stat='percent').set_title(\"Current cluster\")\n", + " else:\n", + " sns.histplot(processed[row.feature], ax=ax[row_ix][0], stat='percent').set_title(\"Current cluster\")\n", + " ax[row_ix][0].set_xlabel(ax[row_ix][0].get_xlabel(), fontsize=8)\n", + " ax[row_ix][0].set_ylim(0., 100.)\n", + "\n", + " offset_col_ix = 1\n", + " ## Now, others.\n", + " for oix in other_ix:\n", + " # Get the actual trip summary data.\n", + " other_summary_data, _ = get_data(oix)\n", + " \n", + " # Get the actual demographic data.\n", + " users = target_df[labels == oix].index\n", + " data = demographics.loc[demographics.index.isin(users), :].reset_index(drop=True)\n", + " other_demo = preprocess_demo_data(data)\n", + "\n", + " for row_ix, row in ch_df.iterrows():\n", + " if row.feature in other_summary_data.columns:\n", + " sns.histplot(other_summary_data[row.feature], ax=ax[row_ix][offset_col_ix], stat='percent').set_title(f\"Cluster {oix}\")\n", + " else:\n", + " sns.histplot(other_demo[row.feature], ax=ax[row_ix][offset_col_ix], stat='percent').set_title(f\"Cluster {oix}\")\n", + " ax[row_ix][offset_col_ix].set_xlabel(ax[row_ix][offset_col_ix].get_xlabel(), fontsize=8)\n", + " ax[row_ix][offset_col_ix].set_ylim(0., 100.)\n", + " \n", + " offset_col_ix += 1\n", + " \n", + " plt.tight_layout()\n", + " plt.savefig(f\"./plots_for_paper/{CURRENT_DB}_cluster{cix}_combined_features.png\", dpi=300)\n", + " plt.show()\n", + " print(50 * '=')" + ] + }, + { + "cell_type": "markdown", + "id": "24a80f68", + "metadata": {}, + "source": [ + "## Try a different clustering technique?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d0288db8", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.cluster import AffinityPropagation\n", + "\n", + "best_score = -np.inf\n", + "best_params = None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1b14ad0c", + "metadata": {}, + "outputs": [], + "source": [ + "cls = AffinityPropagation(random_state=13210).fit(target_df)\n", + "labels = cls.labels_\n", + "\n", + "print(labels)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2562bbb6-66eb-4283-8c08-6e20a0b2ade5", + "metadata": {}, + "outputs": [], + "source": [ + "center_embeddings = cls.cluster_centers_\n", + "centers_proj = PCA(n_components=2).fit_transform(center_embeddings)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c7aad38a", + "metadata": {}, + "outputs": [], + "source": [ + "fig, ax = plt.subplots()\n", + "sns.scatterplot(x=tsfm[:,0], y=tsfm[:,1], c=cls.labels_, ax=ax)\n", + "ax.scatter(x=centers_proj[:,0], y=centers_proj[:,1], marker='X', c='red', alpha=0.5)\n", + "ax.set(xlabel='Latent Dim 0', ylabel='Latent Dim 1')\n", + "# plt.legend([str(x) for x in ap_labels], loc='best')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "39ce0238-b3f2-4f46-a52f-13e3160cc52f", + "metadata": {}, + "outputs": [], + "source": [ + "def get_data2(cix, labels):\n", + " users = target_df.iloc[labels == cix, :].index\n", + " \n", + " # Compute trip summaries.\n", + " X = df.loc[df.user_id.isin(users), [\n", + " 'section_distance_argmax', 'section_duration_argmax',\n", + " 'section_mode_argmax', 'distance',\n", + " 'duration', 'mph', 'user_id', 'target'\n", + " ]]\n", + " \n", + " # Compute the target distribution and select the argmax.\n", + " target_distribution = X.target.value_counts(ascending=False, normalize=True)\n", + " target_distribution.rename(index=MAP, inplace=True)\n", + " \n", + " # Caution - this summary df has NaNs. Use nanstd() to compute nan-aware std.\n", + " subset = get_trip_summary_df(users, X)\n", + " \n", + " norm_subset = pd.DataFrame(\n", + " MinMaxScaler().fit_transform(subset),\n", + " columns=subset.columns, index=subset.index\n", + " )\n", + " \n", + " return norm_subset, target_distribution" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ec27cf29", + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "## Analaysis for this data.\n", + "\n", + "ic, oc = dict(), dict()\n", + "labels = cls.labels_\n", + "\n", + "for cix in np.unique(labels):\n", + " users = target_df[labels == cix].index\n", + " \n", + " ic[cix] = dict()\n", + " \n", + " # Trip characteristics.\n", + " norm_subset, _ = get_data2(cix, labels)\n", + " for feature in norm_subset.columns:\n", + " ic[cix][feature] = np.nanstd(norm_subset[feature])\n", + " \n", + " # Demographics.\n", + " data = demographics.loc[demographics.index.isin(users), :].reset_index(drop=True)\n", + " processed = preprocess_demo_data(data)\n", + " \n", + " for col in processed.columns:\n", + " # Numeric/ordinal values. Use std. to measure homogeneity.\n", + " if col == 'age' or col == 'income_category' or col == 'n_working_residents':\n", + " ic[cix][col] = np.nanstd(processed[col])\n", + " else:\n", + " ic[cix][col] = entropy(processed[col])\n", + "\n", + "for cix in ic.keys():\n", + " oc[cix] = dict()\n", + " oix = set(labels) - set([cix])\n", + " for feature in ic[cix].keys():\n", + " oc[cix][feature] = np.nanmean([ic[x].get(feature, np.nan) for x in oix])\n", + "\n", + "# # Now, compute the per-cluster homogeneity.\n", + "# for cix in ic.keys():\n", + " \n", + "# users = users = target_df[labels == cix].index\n", + "# norm_subset, target_dist = get_data(cix, labels)\n", + "# data = demographics.loc[demographics.index.isin(users), :].reset_index(drop=True)\n", + "# processed = preprocess_demo_data(data)\n", + " \n", + "# concat = processed.merge(norm_subset, left_index=True, right_index=True)\n", + " \n", + "# ch = list()\n", + "# for feature in ic[cix].keys():\n", + "# ratio = ic[cix][feature] / (oc[cix][feature] + 1e-6)\n", + "# ch.append([feature, ratio])\n", + " \n", + "# ch_df = pd.DataFrame(ch, columns=['feature', 'ch']).sort_values(by=['ch']).head(TOP_K).reset_index(drop=True)\n", + "\n", + "\n", + "# Now, compute the per-cluster homogeneity.\n", + "ax_ix = 0\n", + "for cix in ic.keys():\n", + "\n", + " print(f\"For cluster {cix}:\")\n", + "\n", + " # For each, cluster, we will have (TOP_K x n_clusters) figures.\n", + " fig, ax = plt.subplots(nrows=5, ncols=len(ic.keys()), figsize=(12, 8))\n", + "\n", + " other_ix = set(ic.keys()) - set([cix])\n", + " \n", + " ch = list()\n", + " for feature in ic[cix].keys():\n", + " ratio = ic[cix][feature] / (oc[cix][feature] + 1e-6)\n", + " ch.append([feature, ratio])\n", + " \n", + " # Just the top k.\n", + " ch_df = pd.DataFrame(ch, columns=['feature', 'ch']).sort_values(by=['ch']).reset_index(drop=True).head(5)\n", + " figure_data = dict()\n", + " \n", + " # Get the actual trip summary data.\n", + " trip_summary_data, target_dist = get_data(cix)\n", + "\n", + " display(target_dist)\n", + " \n", + " # Get the actual demographic data.\n", + " users = target_df[labels == cix].index\n", + " data = demographics.loc[demographics.index.isin(users), :].reset_index(drop=True)\n", + " processed = preprocess_demo_data(data)\n", + "\n", + " # Left-most subplot will be that of the current cluster's feature.\n", + " for row_ix, row in ch_df.iterrows():\n", + " if row.feature in trip_summary_data.columns:\n", + " sns.histplot(trip_summary_data[row.feature], ax=ax[row_ix][0], stat='percent').set_title(\"Current cluster\")\n", + " else:\n", + " sns.histplot(processed[row.feature], ax=ax[row_ix][0], stat='percent').set_title(\"Current cluster\")\n", + " ax[row_ix][0].set_xlabel(ax[row_ix][0].get_xlabel(), fontsize=6)\n", + " ax[row_ix][0].set_ylim(0., 100.)\n", + "\n", + " offset_col_ix = 1\n", + " ## Now, others.\n", + " for oix in other_ix:\n", + " # Get the actual trip summary data.\n", + " other_summary_data, _ = get_data(oix)\n", + " \n", + " # Get the actual demographic data.\n", + " users = target_df[labels == oix].index\n", + " data = demographics.loc[demographics.index.isin(users), :].reset_index(drop=True)\n", + " other_demo = preprocess_demo_data(data)\n", + "\n", + " for row_ix, row in ch_df.iterrows():\n", + " if row.feature in other_summary_data.columns:\n", + " sns.histplot(other_summary_data[row.feature], ax=ax[row_ix][offset_col_ix], stat='percent').set_title(f\"Cluster {oix}\")\n", + " else:\n", + " sns.histplot(other_demo[row.feature], ax=ax[row_ix][offset_col_ix], stat='percent').set_title(f\"Cluster {oix}\")\n", + " ax[row_ix][offset_col_ix].set_xlabel(ax[row_ix][offset_col_ix].get_xlabel(), fontsize=6)\n", + " ax[row_ix][offset_col_ix].set_ylim(0., 100.)\n", + " \n", + " offset_col_ix += 1\n", + "\n", + " plt.tight_layout()\n", + " plt.show()\n", + " print(50 * '=')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c0b642db", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "emission", + "language": "python", + "name": "emission" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/rm_src/UserLevelModeling.ipynb b/rm_src/UserLevelModeling.ipynb deleted file mode 100644 index 7fefe5a..0000000 --- a/rm_src/UserLevelModeling.ipynb +++ /dev/null @@ -1,869 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "04ccf092", - "metadata": {}, - "source": [ - "### Some important points to remember:\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "2985b51f", - "metadata": {}, - "outputs": [], - "source": [ - "# import warnings\n", - "\n", - "# warnings.simplefilter('ignore', Warning)" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "21ef0f2e", - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "import random\n", - "import os\n", - "import ast\n", - "import matplotlib.pyplot as plt\n", - "\n", - "from sklearn.linear_model import LinearRegression\n", - "from sklearn.ensemble import RandomForestClassifier\n", - "from sklearn.metrics import r2_score, f1_score, log_loss\n", - "from sklearn.model_selection import train_test_split, RandomizedSearchCV, StratifiedKFold\n", - "from sklearn.neighbors import KNeighborsClassifier\n", - "from sklearn.cluster import KMeans\n", - "from sklearn.metrics.pairwise import cosine_similarity, euclidean_distances\n", - "from enum import Enum\n", - "from scipy.stats import uniform\n", - "from typing import List\n", - "\n", - "pd.set_option('display.max_columns', None) " - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "fef98692", - "metadata": {}, - "outputs": [], - "source": [ - "SEED = 13210\n", - "\n", - "np.random.seed(SEED)\n", - "random.seed(SEED)\n", - "\n", - "SimilarityMetric = Enum('SimilarityMetric', ['COSINE', 'EUCLIDEAN', 'KNN', 'KMEANS'])" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "79f8c51a", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_47441/224655024.py:1: DtypeWarning: Columns (38) have mixed types. Specify dtype option on import or set low_memory=False.\n", - " df = pd.read_csv('../data/ReplacedMode_Fix_02142024.csv')\n" - ] - } - ], - "source": [ - "df = pd.read_csv('../data/ReplacedMode_Fix_02142024.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "72793473", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['source', 'end_ts', 'end_fmt_time', 'end_loc', 'raw_trip', 'start_ts', 'start_fmt_time', 'start_loc', 'duration', 'distance', 'start_place', 'end_place', 'cleaned_trip', 'inferred_labels', 'inferred_trip', 'expectation', 'confidence_threshold', 'expected_trip', 'user_input', 'start:year', 'start:month', 'start:day', 'start:hour', 'start_local_dt_minute', 'start_local_dt_second', 'start_local_dt_weekday', 'start_local_dt_timezone', 'end:year', 'end:month', 'end:day', 'end:hour', 'end_local_dt_minute', 'end_local_dt_second', 'end_local_dt_weekday', 'end_local_dt_timezone', '_id', 'user_id', 'metadata_write_ts', 'additions', 'mode_confirm', 'purpose_confirm', 'distance_miles', 'Mode_confirm', 'Trip_purpose', 'original_user_id', 'program', 'opcode', 'Timestamp', 'birth_year', 'primary_job_commute_time', 'income_category', 'n_residence_members', 'n_residents_u18', 'n_residents_with_license', 'n_motor_vehicles', 'available_modes', 'age', 'gender_Man', 'gender_Man;Nonbinary/genderqueer/genderfluid', 'gender_Nonbinary/genderqueer/genderfluid', 'gender_Prefer not to say', 'gender_Woman', 'gender_Woman;Nonbinary/genderqueer/genderfluid', 'has_drivers_license_No', 'has_drivers_license_Prefer not to say', 'has_drivers_license_Yes', 'has_multiple_jobs_No', 'has_multiple_jobs_Prefer not to say', 'has_multiple_jobs_Yes', \"highest_education_Bachelor's degree\", 'highest_education_Graduate degree or professional degree', 'highest_education_High school graduate or GED', 'highest_education_Less than a high school graduate', 'highest_education_Prefer not to say', 'highest_education_Some college or associates degree', 'primary_job_type_Full-time', 'primary_job_type_Part-time', 'primary_job_type_Prefer not to say', 'primary_job_description_Clerical or administrative support', 'primary_job_description_Custodial', 'primary_job_description_Education', 'primary_job_description_Food service', 'primary_job_description_Manufacturing, construction, maintenance, or farming', 'primary_job_description_Medical/healthcare', 'primary_job_description_Other', 'primary_job_description_Professional, managerial, or technical', 'primary_job_description_Sales or service', 'primary_job_commute_mode_Active transport', 'primary_job_commute_mode_Car transport', 'primary_job_commute_mode_Hybrid', 'primary_job_commute_mode_Public transport', 'primary_job_commute_mode_Unknown', 'primary_job_commute_mode_WFH', 'is_overnight_trip', 'n_working_residents', 'start_lat', 'start_lng', 'end_lat', 'end_lng', 'temperature_2m (°F)', 'relative_humidity_2m (%)', 'dew_point_2m (°F)', 'rain (inch)', 'snowfall (inch)', 'wind_speed_10m (mp/h)', 'wind_gusts_10m (mp/h)', 'section_distance_argmax', 'section_duration_argmax', 'section_mode_argmax', 'section_coordinates_argmax', 'mph', 'target', 'av_car', 'av_transit', 'av_ridehail', 'av_p_micro', 'av_s_micro', 'av_walk', 'av_no_trip', 'av_s_car', 'av_unknown', 'cost_p_micro', 'cost_no_trip', 'cost_s_car', 'cost_transit', 'cost_car', 'cost_s_micro', 'cost_ridehail', 'cost_walk', 'cost_unknown']\n" - ] - } - ], - "source": [ - "print(df.columns.tolist())" - ] - }, - { - "cell_type": "markdown", - "id": "85866e8a", - "metadata": {}, - "source": [ - "### We want to experiment with two types of models:\n", - "\n", - "\n", - "1. have one row per user, so that when predicting modes for a new user, we pick the \"similar user\" or users and determine the replaced mode\n", - " - In this, the traditional approach would only use demographics for the user features, we may experiment with some summaries of the trip data that will function as some level of \"fingerprint\" for the user. Ideally we would be able to show that this performs better than demographics alone\n", - " - Note also that the original method that you had outlined where the training set is a list of trips (O()) is a third approach which we will be comparing these two against" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "2a9efd3e", - "metadata": {}, - "outputs": [], - "source": [ - "def encode_availability(df: pd.DataFrame):\n", - " \n", - " # Borrowed directly from the cost_time_avl_preprocessing notebook.\n", - " available = {\n", - " 'Bicycle': 'p_micro',\n", - " 'Do not have vehicle': 'unknown',\n", - " 'Get a ride from a friend or family member': 's_car',\n", - " 'None': 'no_trip',\n", - " 'Public transportation (bus, subway, light rail, etc.)': 'transit',\n", - " 'Rental car (including Zipcar/ Car2Go)': 'car',\n", - " 'Shared bicycle or scooter': 's_micro',\n", - " 'Skateboard': 'p_micro',\n", - " 'Taxi (regular taxi, Uber, Lyft, etc)': 'ridehail',\n", - " 'Walk/roll': 'walk',\n", - " 'Prefer not to say': 'unknown'\n", - " }\n", - " \n", - " newcols = list(available.values())\n", - " \n", - " # Start by creating dummy indicators.\n", - " df[newcols] = 0\n", - " \n", - " for i, row in df.iterrows():\n", - " modes = [e.strip() for e in row.available_modes.split(';')]\n", - " mapped_modes = [available[mode] for mode in modes]\n", - " df.loc[i, mapped_modes] = 1\n", - " \n", - " df.drop(columns=['available_modes'], inplace=True)\n", - " df.columns = ['av_' + str(c) if c in newcols else str(c) for c in df.columns]\n", - " \n", - " return df" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "cfe76e8c", - "metadata": {}, - "outputs": [], - "source": [ - "def get_mode_coverage(df: pd.DataFrame):\n", - " \n", - " coverage_df = df.groupby(['user_id', 'section_mode_argmax']).size().unstack(fill_value=0)\n", - " coverage_df.columns = ['coverage_' + str(c) for c in coverage_df.columns]\n", - " \n", - " # As a preventative measure.\n", - " coverage_df.fillna(0, inplace=True)\n", - " \n", - " # Normalize over rows.\n", - " coverage_df.iloc[:, 1:] = coverage_df.iloc[:, 1:].div(coverage_df.iloc[:, 1:].sum(axis=1), axis=0)\n", - " \n", - " return coverage_df" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "75313008", - "metadata": {}, - "outputs": [], - "source": [ - "def get_trip_summaries(df: pd.DataFrame, group_key: str, feature_list: List[str]):\n", - " \n", - " def get_feature_summaries(trip_feature: str, is_ordinal: bool = False):\n", - " \n", - " if not is_ordinal:\n", - " # A mean of 0 is an actual value.\n", - " mean = df.groupby(['user_id', group_key])[trip_feature].mean().unstack(level=-1, fill_value=-1.)\n", - " mean.columns = [f'{trip_feature}_mean_' + str(c) for c in mean.columns]\n", - " \n", - " # Same with percentiles - 0 is an actual value.\n", - " median = df.groupby(['user_id', group_key])[trip_feature].median().unstack(level=-1, fill_value=-1.)\n", - " median.columns = [f'{trip_feature}_median_' + str(c) for c in median.columns]\n", - " \n", - " iqr_temp = df.groupby(['user_id', group_key])[trip_feature].quantile([0.25, 0.75]).unstack(level=-1)\n", - " iqr = (iqr_temp[0.75] - iqr_temp[0.25]).unstack(level=-1)\n", - " iqr.fillna(-1., inplace=True)\n", - " iqr.columns = [f'{trip_feature}_iqr_' + str(c) for c in iqr.columns]\n", - "\n", - " # Now merge.\n", - " merged = mean.copy()\n", - " merged = merged.merge(right=median, left_index=True, right_index=True)\n", - " merged = merged.merge(right=iqr, left_index=True, right_index=True)\n", - "\n", - " return merged\n", - " \n", - " # 0 is OK to indicate NaN values.\n", - " f_mode = df.groupby(['user_id', group_key])[trip_feature].apply(\n", - " lambda x: x.value_counts().idxmax()\n", - " ).unstack(fill_value=0.)\n", - " \n", - " f_mode.columns = [f'{trip_feature}_mode_' + str(c) for c in f_mode.columns]\n", - " \n", - " return f_mode\n", - " \n", - " # This will be the dataframe that all subsequent features will join to.\n", - " feature_df = None\n", - " \n", - " for ix, feature in enumerate(feature_list):\n", - " is_ordinal = feature == 'start:hour' or feature == 'end:hour'\n", - " if ix == 0:\n", - " feature_df = get_feature_summaries(feature, is_ordinal)\n", - " else:\n", - " next_feature_df = get_feature_summaries(feature, is_ordinal)\n", - " feature_df = feature_df.merge(right=next_feature_df, left_index=True, right_index=True)\n", - " \n", - " return feature_df" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "63617ada", - "metadata": {}, - "outputs": [], - "source": [ - "def get_demographic_data(df: pd.DataFrame, **trip_kwargs):\n", - " \n", - " '''\n", - " A method that returns a U x (D + t) matrix, where U = number of users,\n", - " D = number of demographic features, t (optional) = number of trip summary features.\n", - " \n", - " When use_trip_summaries=True, the 'available_modes' column is dropped in favor of\n", - " the already-preprocessed av_ columns. This is because we want to incorporate trip-level\n", - " information into the data. When the argument is False, we want to SOLELY use demographics.\n", - " '''\n", - " \n", - " trip_features_to_use = trip_kwargs.pop('trip_features', None)\n", - " trip_group_key = trip_kwargs.pop('trip_group_key', 'section_mode_argmax')\n", - " \n", - " demographics = [\n", - " 'user_id', 'primary_job_commute_time', 'income_category', 'n_residence_members', 'n_residents_u18', \n", - " 'n_residents_with_license', 'n_motor_vehicles', 'available_modes', 'age', 'gender_Man', \n", - " 'gender_Man;Nonbinary/genderqueer/genderfluid', 'gender_Nonbinary/genderqueer/genderfluid', \n", - " 'gender_Prefer not to say', 'gender_Woman', 'gender_Woman;Nonbinary/genderqueer/genderfluid', \n", - " 'has_drivers_license_No', 'has_drivers_license_Prefer not to say', 'has_drivers_license_Yes', \n", - " 'has_multiple_jobs_No', 'has_multiple_jobs_Prefer not to say', 'has_multiple_jobs_Yes', \n", - " \"highest_education_Bachelor's degree\", 'highest_education_Graduate degree or professional degree', \n", - " 'highest_education_High school graduate or GED', 'highest_education_Less than a high school graduate', \n", - " 'highest_education_Prefer not to say', 'highest_education_Some college or associates degree', \n", - " 'primary_job_type_Full-time', 'primary_job_type_Part-time', 'primary_job_type_Prefer not to say', \n", - " 'primary_job_description_Clerical or administrative support', 'primary_job_description_Custodial', \n", - " 'primary_job_description_Education', 'primary_job_description_Food service', \n", - " 'primary_job_description_Manufacturing, construction, maintenance, or farming', \n", - " 'primary_job_description_Medical/healthcare', 'primary_job_description_Other', \n", - " 'primary_job_description_Professional, managerial, or technical', \n", - " 'primary_job_description_Sales or service', 'primary_job_commute_mode_Active transport', \n", - " 'primary_job_commute_mode_Car transport', 'primary_job_commute_mode_Hybrid', \n", - " 'primary_job_commute_mode_Public transport', 'primary_job_commute_mode_Unknown', \n", - " 'primary_job_commute_mode_WFH', 'is_overnight_trip', 'n_working_residents'\n", - " ]\n", - " \n", - " # Retain only the first instance of each user and subset the columns.\n", - " filtered = df.groupby('user_id').first().reset_index(drop=False)[demographics]\n", - " \n", - " # Get the targets.\n", - " targets = df.groupby('user_id')['target'].apply(lambda x: x.value_counts().idxmax()).reset_index(drop=False)\n", - " \n", - " filtered = filtered.merge(right=targets, left_on='user_id', right_on='user_id')\n", - " \n", - " if not trip_features_to_use or len(trip_features_to_use) == 0:\n", - " # Use the available modes as indicators.\n", - " return encode_availability(filtered)\n", - " \n", - " # -----------------------------------------------------------\n", - " # Reaching here means that we need to include trip summaries\n", - " # -----------------------------------------------------------\n", - " \n", - " # If trip summaries are to be used, then re-use the preprocessed availability features.\n", - " availability = df[['user_id'] + [c for c in df.columns if 'av_' in c]]\n", - " availability = availability.groupby('user_id').first()\n", - " \n", - " # For every user, generate the global trip-level summaries.\n", - " global_aggs = df.groupby('user_id').agg({'duration': 'mean', 'distance': 'mean'})\n", - " \n", - " # coverage.\n", - " coverage = get_mode_coverage(df)\n", - " \n", - " # Trip-level features.\n", - " trip_features = get_trip_summaries(\n", - " df=df, \n", - " group_key=trip_group_key, \n", - " feature_list=trip_features_to_use\n", - " )\n", - " \n", - " targets = df.groupby('user_id')['target'].apply(lambda x: x.value_counts().idxmax())\n", - " \n", - " trip_features = trip_features.merge(right=coverage, left_index=True, right_index=True)\n", - " trip_features = trip_features.merge(right=global_aggs, left_index=True, right_index=True)\n", - " \n", - " # Finally, join with availability indicators and targets.\n", - " trip_features = trip_features.merge(right=availability, left_index=True, right_on='user_id')\n", - " trip_features = trip_features.merge(right=targets, left_index=True, right_index=True)\n", - " \n", - " return trip_features.reset_index(drop=False)" - ] - }, - { - "cell_type": "markdown", - "id": "fedb51e8", - "metadata": {}, - "source": [ - "## Experiment 1: Only demographics" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "66421120", - "metadata": {}, - "outputs": [], - "source": [ - "demo_df = get_demographic_data(df)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "c023cf66", - "metadata": {}, - "outputs": [], - "source": [ - "# No stratification, pure random.\n", - "train, test = train_test_split(demo_df, test_size=0.2, random_state=SEED)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "376a4391", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "132 33\n" - ] - } - ], - "source": [ - "print(train.shape[0], test.shape[0])" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "ef77c9c8", - "metadata": {}, - "outputs": [], - "source": [ - "def evaluate_using_similarity(test_df, train_df, metric=SimilarityMetric.COSINE, **metric_kwargs):\n", - " \n", - " '''\n", - " This method treats each user row as a 'fingerprint' (embedding vector). We assume that we\n", - " have no idea about the test set labels. To find which replaced mode is most likely for the test\n", - " users, we compute the cosine similarity of each test user against the users in the training set.\n", - " For the most similar user, we use their target as a proxy for the test user's replaced mode.\n", - " This operates on the following intuition: If User A and User B are similar, then their replaced\n", - " modes are also similar.\n", - " '''\n", - " \n", - " tr_targets = train_df.target.values\n", - " tr = train_df.drop(columns=['target', 'user_id'], inplace=False).reset_index(drop=True, inplace=False)\n", - " \n", - " te_targets = test_df.target.values\n", - " te = test_df.drop(columns=['target', 'user_id'], inplace=False).reset_index(drop=True, inplace=False)\n", - " \n", - " if metric == SimilarityMetric.COSINE:\n", - " # Use cosine similarity to determine which element in the train set this user is closest to.\n", - " # Offset the columns from the second entry to exclude the user_id column.\n", - " # Returns a (n_te, n_tr) matrix.\n", - " sim = cosine_similarity(te.values, tr.values)\n", - " \n", - " # Compute the argmax across the train set.\n", - " argmax = np.argmax(sim, axis=1)\n", - "\n", - " # Index into the training targets to retrieve predicted label.\n", - " y_test_pred = tr_targets[argmax]\n", - " \n", - " elif metric == SimilarityMetric.EUCLIDEAN:\n", - " \n", - " # Here, we choose the embedding with the smallest L2 distance.\n", - " distances = euclidean_distances(te.values, tr.values)\n", - " \n", - " # We choose argmin\n", - " argmin = np.argmin(distances, axis=1)\n", - " \n", - " # Index into the targets.\n", - " y_test_pred = tr_targets[argmin]\n", - " \n", - " elif metric == SimilarityMetric.KNN:\n", - " \n", - " # Build the KNN classifier. By default, let it be 3.\n", - " knn = KNeighborsClassifier(\n", - " n_neighbors=metric_kwargs.pop('n_neighbors', 3),\n", - " weights='distance',\n", - " metric=metric_kwargs.pop('knn_metric', 'cosine'),\n", - " n_jobs=os.cpu_count()\n", - " )\n", - " \n", - " # Fit the data to the KNN model\n", - " knn.fit(tr, tr_targets)\n", - " \n", - " y_test_pred = knn.predict(te)\n", - " \n", - " elif metric == SimilarityMetric.KMEANS:\n", - " \n", - " # Build the model.\n", - " kmeans = KMeans(\n", - " n_clusters=metric_kwargs.pop('n_clusters', 8),\n", - " max_iter=metric_kwargs.pop('max_iter', 300),\n", - " n_init='auto'\n", - " )\n", - " \n", - " # Fit the clustering model\n", - " kmeans.fit(tr)\n", - " \n", - " # Construct the auxiliary df and merge with the training set.\n", - " label_df = pd.DataFrame({'label': kmeans.labels_, 'target': tr_targets}, index=tr.index)\n", - " \n", - " # Now, perform an inference on the test set.\n", - " predicted_labels = kmeans.predict(te)\n", - " \n", - " y_test_pred = []\n", - " for prediction in predicted_labels:\n", - " most_likely = label_df.loc[label_df.label == prediction, 'target'].value_counts().idxmax()\n", - " y_test_pred.append(most_likely)\n", - " \n", - " else:\n", - " raise NotImplementedError(\"Unknown similarity metric\")\n", - " \n", - " \n", - " f1 = f1_score(y_true=te_targets, y_pred=y_test_pred, average='weighted')\n", - " print(f\"Test F1 score using {metric.name} = {f1}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "1a95ad5e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Test F1 score using COSINE = 0.32806324110671936\n" - ] - } - ], - "source": [ - "evaluate_using_similarity(test, train, SimilarityMetric.COSINE)" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "44cfbe29", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Test F1 score using EUCLIDEAN = 0.2742577288031834\n" - ] - } - ], - "source": [ - "evaluate_using_similarity(test, train, SimilarityMetric.EUCLIDEAN)" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "fe343c8b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Test F1 score using KNN = 0.35950413223140487\n" - ] - } - ], - "source": [ - "evaluate_using_similarity(test, train, SimilarityMetric.KNN)" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "d9681639", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Test F1 score using KMEANS = 0.33347902097902093\n" - ] - } - ], - "source": [ - "evaluate_using_similarity(test, train, SimilarityMetric.KMEANS, n_clusters=3)" - ] - }, - { - "cell_type": "markdown", - "id": "16e435a6", - "metadata": {}, - "source": [ - "Not bad - using just a simple random split gives us the following results:\n", - "\n", - "$F1_{cosine} = 0.32$, $F1_{euclidean} = 0.27$, $F1_{KNN} = 0.36$, $F1_{kmeans} = 0.33$" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "81f0e842", - "metadata": {}, - "outputs": [], - "source": [ - "def custom_nll_scorer(clf, X, y):\n", - " y_pred = clf.predict_proba(X)\n", - " return -log_loss(y_true=y, y_pred=y_pred, labels=sorted(np.unique(y)))" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "a3a6af8f", - "metadata": {}, - "outputs": [], - "source": [ - "def estimate_using_model(train, test):\n", - " \n", - " # Define the train-val splitter.\n", - " splitter = StratifiedKFold(n_splits=4, shuffle=True, random_state=SEED)\n", - " \n", - " params = {\n", - " 'n_estimators': np.arange(100, 1001, 50),\n", - " 'max_depth': [i for i in range(5, 101, 5)],\n", - " 'ccp_alpha': np.linspace(0, 1, 10),\n", - " 'class_weight': ['balanced', 'balanced_subsample', None],\n", - " 'min_samples_split': np.arange(2, 25, 2),\n", - " 'min_samples_leaf': np.arange(1, 25)\n", - " }\n", - " \n", - " rf = RandomForestClassifier(random_state=SEED)\n", - " \n", - " # Search over hparams to minimize negative log likelihood. \n", - " clf = RandomizedSearchCV(\n", - " rf, params, n_iter=500, scoring=custom_nll_scorer, \n", - " n_jobs=os.cpu_count(), cv=splitter, random_state=SEED,\n", - " verbose=0\n", - " )\n", - " \n", - " X_tr = train.drop(columns=['user_id', 'target'])\n", - " y_tr = train.target.values.ravel()\n", - " \n", - " scorer = clf.fit(X_tr, y_tr)\n", - " \n", - " best_model = scorer.best_estimator_\n", - " \n", - " print(f\"Best val score = {scorer.best_score_}\")\n", - " \n", - " X_te = test.drop(columns=['user_id', 'target'])\n", - " \n", - " # Use the best model to compute F1 on the test set.\n", - " test_f1 = f1_score(y_true=test.target.values, y_pred=best_model.predict(X_te), average='weighted')\n", - " \n", - " print(f\"Test F1 = {test_f1}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "2fab93ed", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Best val score = -1.7985827701200345\n", - "Test F1 = 0.32794612794612793\n" - ] - } - ], - "source": [ - "estimate_using_model(train, test)" - ] - }, - { - "cell_type": "markdown", - "id": "2988c1b2", - "metadata": {}, - "source": [ - "Interesting! The model is slightly on par with the cosine similarity, but actually worse than the KNN model!\n", - "\n", - "To recap, $F1_{cosine} = 0.32806$, $F1_{euclidean} = 0.27$, $F1_{KNN} = 0.36$, $F1_{kmeans} = 0.33$, $F1_{RF} = 0.328$" - ] - }, - { - "cell_type": "markdown", - "id": "c6b77353", - "metadata": {}, - "source": [ - "## Experiment 2: Demographics with trip summaries" - ] - }, - { - "cell_type": "markdown", - "id": "bf7753d4", - "metadata": {}, - "source": [ - "Now that we've performed experiments with solely demographic data, let's expand the feature set by including \n", - "trip summary statistics. We would like this approach to do better than the aforementioned baselines." - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "1d46ab0f", - "metadata": {}, - "outputs": [], - "source": [ - "demo_plus_trips = get_demographic_data(\n", - " df, \n", - " trip_features=['mph', 'section_duration_argmax', 'section_distance_argmax', 'start:hour', 'end:hour']\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "6159c90a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "132 33\n" - ] - } - ], - "source": [ - "train, test = train_test_split(demo_plus_trips, test_size=0.2, random_state=SEED)\n", - "\n", - "print(train.shape[0], test.shape[0])" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "06e85bdd", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Test F1 score using COSINE = 0.3686868686868687\n" - ] - } - ], - "source": [ - "evaluate_using_similarity(test, train, SimilarityMetric.COSINE)" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "5bc67e1d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Test F1 score using EUCLIDEAN = 0.3338758428272495\n" - ] - } - ], - "source": [ - "evaluate_using_similarity(test, train, SimilarityMetric.EUCLIDEAN)" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "3ea68a83", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Test F1 score using KNN = 0.30201171377641967\n" - ] - } - ], - "source": [ - "evaluate_using_similarity(test, train, SimilarityMetric.KNN)" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "52eb931b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Test F1 score using KMEANS = 0.36007130124777187\n" - ] - } - ], - "source": [ - "evaluate_using_similarity(test, train, SimilarityMetric.KMEANS, n_clusters=3)" - ] - }, - { - "cell_type": "markdown", - "id": "ba795489", - "metadata": {}, - "source": [ - "Great! Marked improvement from last time. Simply incorporating trip-level features seems to increase the\n", - "accuracy of finding similar users. Now, $F1_{cosine} = 0.37$, $F1_{euclidean} = 0.33$, $F1_{knn} = 0.3$, $F1_{kmeans} = 0.36$" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "9acd4b0b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Best val score = -1.8201049789158268\n", - "Test F1 = 0.42158426368952684\n" - ] - } - ], - "source": [ - "# Now, we try with the model\n", - "estimate_using_model(train, test)" - ] - }, - { - "cell_type": "markdown", - "id": "cd94c548", - "metadata": {}, - "source": [ - "Great! Compared to the previous model, we see definite improvements! I'm sure we can squeeze some more juice out of the models using fancy optimization, but as a baseline, these are good enough.\n", - "\n", - "\n", - "So, to recap:\n", - "$F1_{cosine} = 0.37$, $F1_{euclidean} = 0.33$, $F1_{knn} = 0.3$, $F1_{kmeans} = 0.36$, $F1_{RF} = 0.4215$" - ] - }, - { - "cell_type": "markdown", - "id": "ca54d1b2", - "metadata": {}, - "source": [ - "### Next objectives:\n", - "\n", - "1. Try grouping by other features, such as duration or distance\n", - "2. For similarity search, use other techniques such as clustering or KNN" - ] - }, - { - "cell_type": "markdown", - "id": "c339fcc6", - "metadata": {}, - "source": [ - "# Multi-level modeling" - ] - }, - { - "cell_type": "markdown", - "id": "213676ec", - "metadata": {}, - "source": [ - "In this approach, we want to piece together the similarity search and modeling processes. Here's a rough sketch of how it should be implemented:\n", - "\n", - "1. For every user in the training set, build a model using their entire trip history.\n", - "2. Consolidate these user-level models in data structure, preferably a dictionary.\n", - "3. Now, when we want to perform inference on a new user with no prior trips, we use the similarity search to get the user ID in the training set who is the most similar to the user in question.\n", - "4. We retrieve the model for this corresponding user and perform an inference. The hypothesis is that since the two users are similar, their trip substitution patterns are also similar." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ca9e6e6a", - "metadata": {}, - "outputs": [], - "source": [ - "# def construct_model_dictionary(train: pd.DataFrame):\n", - " \n", - "# def train_on_user(user_id: str):\n", - "# '''\n", - "# Given the training set and the user ID to query, filter the dataset and\n", - "# retain only the relevant trips. Then, create folds and optimize a model for this user.\n", - "# Return the trained model instance.\n", - "# '''\n", - " \n", - "# user_data = train.loc[train.user_id == user_id, :].reset_index(drop=True)\n", - " \n", - " " - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "emission", - "language": "python", - "name": "emission" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.16" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From 03d1d6cb60ce8b83413d56ed6d22dfa60469485f Mon Sep 17 00:00:00 2001 From: Rahul Kulhalli Date: Mon, 29 Apr 2024 13:25:17 -0400 Subject: [PATCH 16/16] Cleaned commit with initial readme --- .DS_Store | Bin 6148 -> 10244 bytes README.md | 130 +- data/README.md | 1 + docker-compose.dev.yml | 47 - docker-compose.yml | 44 - frontend/Dockerfile | 14 - frontend/client/css/bootstrap.min.css | 7 - frontend/client/css/dashboard.css | 99 - frontend/client/css/jquery.gridster.min.css | 2 - frontend/client/css/nrel.application.css | 114 - frontend/client/css/nrel.application.min.css | 1 - frontend/client/css/nrel.complete.css | 2651 -- frontend/client/css/nrel.complete.min.css | 1 - frontend/client/img/alliance-logo_black.png | Bin 2498 -> 0 bytes frontend/client/img/bg-pattern.png | Bin 633 -> 0 bytes frontend/client/img/doe-eere.png | Bin 42572 -> 0 bytes frontend/client/img/icon_minus.svg | 27 - frontend/client/img/icon_plus_blue.svg | 9 - frontend/client/img/logo-doe-footer.png | Bin 1207 -> 0 bytes frontend/client/img/nrel-logo-web.svg | 1 - .../client/img/touch-icon-ipad-retina.png | Bin 4262 -> 0 bytes frontend/client/img/touch-icon-ipad.png | Bin 2631 -> 0 bytes .../client/img/touch-icon-iphone-retina.png | Bin 3637 -> 0 bytes frontend/client/img/touch-icon-iphone.png | Bin 2347 -> 0 bytes frontend/client/js/app.js | 48 - frontend/client/js/app.min.js | 2 - frontend/client/js/iconomatic/.gitignore | 4 - frontend/client/js/iconomatic/.jshintrc | 7 - .../client/js/iconomatic/jquery.iconomatic.js | 198 - .../js/iconomatic/jquery.iconomatic.min.js | 10 - frontend/client/js/jquery.gridster.min.js | 2 - frontend/client/js/plugins.min.js | 1 - frontend/composer.json | 29 - frontend/composer.lock | 18 - frontend/dates.html | 5 - frontend/favicon.ico | Bin 1150 -> 0 bytes frontend/index.html | 486 - frontend/metrics_program.html | 30 - frontend/metrics_study.html | 15 - frontend/options.html | 3 - frontend/programs.html | 1 - outputs/README.md | 1 + {viz_scripts/docker => rm_src}/.DS_Store | Bin 6148 -> 6148 bytes rm_src/02_run_trip_level_models.py | 2 +- rm_src/04_FeatureClustering.ipynb | 409 +- rm_src/baseline_modeling0.ipynb | 1431 - rm_src/benchmark_analysis.ipynb | 381 - rm_src/cost_time_avl_preprocessing.ipynb | 1865 -- rm_src/env.txt | 214 - rm_src/mnl_exploration.ipynb | 1213 - .../multisource_data/01_extract_db_data.ipynb | 1008 - .../02_extract_section_information.ipynb | 299 - rm_src/rf_bayesian_optim.py | 280 - viz_scripts/.DS_Store | Bin 6148 -> 10244 bytes viz_scripts/Dockerfile | 42 - .../auxiliary_files/energy_intensity.csv | 17 - viz_scripts/auxiliary_files/mode_labels.csv | 32 - .../auxiliary_files/purpose_labels.csv | 47 - viz_scripts/bin/generate_plots.py | 87 - viz_scripts/bin/update_mappings.py | 16 - viz_scripts/denver_weather_data.csv | 26329 ---------------- viz_scripts/docker/Dockerfile.dev | 24 - viz_scripts/docker/crontab | 8 - .../environment36.dashboard.additions.yml | 9 - viz_scripts/docker/generate_plots.sh | 5 - viz_scripts/docker/load_mongodump.sh | 9 - viz_scripts/docker/start_notebook.sh | 45 - viz_scripts/docker/update_mappings.sh | 5 - viz_scripts/energy_calculations.ipynb | 260 - viz_scripts/generic_metrics.ipynb | 400 - viz_scripts/generic_timeseries.ipynb | 372 - viz_scripts/mapping_dictionaries.ipynb | 89 - viz_scripts/mode_specific_metrics.ipynb | 373 - viz_scripts/mode_specific_timeseries.ipynb | 491 - viz_scripts/plots.py | 437 - .../replacement_model_data_processing.ipynb | 580 - viz_scripts/replacement_models.py | 122 - viz_scripts/rm_src/LSTM.ipynb | 2774 -- viz_scripts/rm_src/baseline_modeling0.ipynb | 1136 - viz_scripts/rm_src/biogeme_modeling.ipynb | 526 - .../rm_src/biogeme_modeling_train_test.ipynb | 1099 - .../rm_src/cost_time_avl_preprocessing.ipynb | 1789 -- viz_scripts/rm_src/mnl_exploration.ipynb | 935 - .../rm_src/time_distance_estimation.ipynb | 235 - .../rm_src/user_data_preprocessing.ipynb | 586 - viz_scripts/run_from_host/generate_plots.sh | 2 - viz_scripts/run_from_host/update_mappings.sh | 2 - viz_scripts/run_replacement_models.ipynb | 454 - viz_scripts/scaffolding.py | 29 +- viz_scripts/tests/TestGetMonthList.py | 39 - .../variation_across_individuals.ipynb | 263 - 91 files changed, 81 insertions(+), 50697 deletions(-) create mode 100644 data/README.md delete mode 100644 docker-compose.dev.yml delete mode 100644 docker-compose.yml delete mode 100644 frontend/Dockerfile delete mode 100644 frontend/client/css/bootstrap.min.css delete mode 100644 frontend/client/css/dashboard.css delete mode 100644 frontend/client/css/jquery.gridster.min.css delete mode 100755 frontend/client/css/nrel.application.css delete mode 100755 frontend/client/css/nrel.application.min.css delete mode 100755 frontend/client/css/nrel.complete.css delete mode 100755 frontend/client/css/nrel.complete.min.css delete mode 100644 frontend/client/img/alliance-logo_black.png delete mode 100755 frontend/client/img/bg-pattern.png delete mode 100644 frontend/client/img/doe-eere.png delete mode 100755 frontend/client/img/icon_minus.svg delete mode 100755 frontend/client/img/icon_plus_blue.svg delete mode 100755 frontend/client/img/logo-doe-footer.png delete mode 100644 frontend/client/img/nrel-logo-web.svg delete mode 100755 frontend/client/img/touch-icon-ipad-retina.png delete mode 100755 frontend/client/img/touch-icon-ipad.png delete mode 100755 frontend/client/img/touch-icon-iphone-retina.png delete mode 100755 frontend/client/img/touch-icon-iphone.png delete mode 100755 frontend/client/js/app.js delete mode 100755 frontend/client/js/app.min.js delete mode 100755 frontend/client/js/iconomatic/.gitignore delete mode 100755 frontend/client/js/iconomatic/.jshintrc delete mode 100755 frontend/client/js/iconomatic/jquery.iconomatic.js delete mode 100755 frontend/client/js/iconomatic/jquery.iconomatic.min.js delete mode 100644 frontend/client/js/jquery.gridster.min.js delete mode 100755 frontend/client/js/plugins.min.js delete mode 100644 frontend/composer.json delete mode 100644 frontend/composer.lock delete mode 100644 frontend/dates.html delete mode 100755 frontend/favicon.ico delete mode 100644 frontend/index.html delete mode 100644 frontend/metrics_program.html delete mode 100644 frontend/metrics_study.html delete mode 100644 frontend/options.html delete mode 100644 frontend/programs.html create mode 100644 outputs/README.md rename {viz_scripts/docker => rm_src}/.DS_Store (79%) delete mode 100644 rm_src/baseline_modeling0.ipynb delete mode 100644 rm_src/benchmark_analysis.ipynb delete mode 100644 rm_src/cost_time_avl_preprocessing.ipynb delete mode 100644 rm_src/env.txt delete mode 100644 rm_src/mnl_exploration.ipynb delete mode 100644 rm_src/multisource_data/01_extract_db_data.ipynb delete mode 100644 rm_src/multisource_data/02_extract_section_information.ipynb delete mode 100644 rm_src/rf_bayesian_optim.py delete mode 100644 viz_scripts/Dockerfile delete mode 100644 viz_scripts/auxiliary_files/energy_intensity.csv delete mode 100644 viz_scripts/auxiliary_files/mode_labels.csv delete mode 100644 viz_scripts/auxiliary_files/purpose_labels.csv delete mode 100644 viz_scripts/bin/generate_plots.py delete mode 100644 viz_scripts/bin/update_mappings.py delete mode 100644 viz_scripts/denver_weather_data.csv delete mode 100644 viz_scripts/docker/Dockerfile.dev delete mode 100644 viz_scripts/docker/crontab delete mode 100644 viz_scripts/docker/environment36.dashboard.additions.yml delete mode 100755 viz_scripts/docker/generate_plots.sh delete mode 100644 viz_scripts/docker/load_mongodump.sh delete mode 100755 viz_scripts/docker/start_notebook.sh delete mode 100755 viz_scripts/docker/update_mappings.sh delete mode 100644 viz_scripts/energy_calculations.ipynb delete mode 100644 viz_scripts/generic_metrics.ipynb delete mode 100644 viz_scripts/generic_timeseries.ipynb delete mode 100644 viz_scripts/mapping_dictionaries.ipynb delete mode 100644 viz_scripts/mode_specific_metrics.ipynb delete mode 100644 viz_scripts/mode_specific_timeseries.ipynb delete mode 100644 viz_scripts/plots.py delete mode 100644 viz_scripts/replacement_model_data_processing.ipynb delete mode 100644 viz_scripts/replacement_models.py delete mode 100644 viz_scripts/rm_src/LSTM.ipynb delete mode 100644 viz_scripts/rm_src/baseline_modeling0.ipynb delete mode 100644 viz_scripts/rm_src/biogeme_modeling.ipynb delete mode 100644 viz_scripts/rm_src/biogeme_modeling_train_test.ipynb delete mode 100644 viz_scripts/rm_src/cost_time_avl_preprocessing.ipynb delete mode 100644 viz_scripts/rm_src/mnl_exploration.ipynb delete mode 100644 viz_scripts/rm_src/time_distance_estimation.ipynb delete mode 100644 viz_scripts/rm_src/user_data_preprocessing.ipynb delete mode 100755 viz_scripts/run_from_host/generate_plots.sh delete mode 100755 viz_scripts/run_from_host/update_mappings.sh delete mode 100644 viz_scripts/run_replacement_models.ipynb delete mode 100644 viz_scripts/tests/TestGetMonthList.py delete mode 100644 viz_scripts/variation_across_individuals.ipynb diff --git a/.DS_Store b/.DS_Store index cf3a8894f99304d498ec589f7d349758bba2edcc..1c362cb5ad80ec01d3a8b8ed09321278e309bf4c 100644 GIT binary patch literal 10244 zcmeHMTWl0n82sD%+4%3vs<86 ztAJ0$XrfUg5{>#O-hD6;^}&RQ(ZrA-niwyMFZ$pEPbP~0nKQezThPRWq=|EqIsZBT z`TujyeCPY;>^Tbn*p^Au1B3v8(Zi)Wm$I8A-p-$CN%A!FNFw1y22>1y22+RZoXwT+}%@NYieFS_2d<60c@b5#29xlV4oDkCebWr9V0Z0~; z+D%lZbAam;@?_YP6GFPK)TcN-py!I-5d(!gwTHMl$*?CUgcR<8!X3~X8NCwxPO|E{n_TzB&;u#Zz@)Rj1sO;~ zoNC>myV3-kYBsEeBqYR5K)$Eb1wF~Io5pN~4%kWZCLU6>z+*OzmV^lPPoo-#>wDu? zGUd)nWK-MiYgv8hsi=6?>=Gs`a{~PX%1}gInANq>o|L0orrocl zZITgnfjwf4cEv4oS6buk198j9BuzV_md2w-JYz&1t<^Ak^%I&s=xE0rUK+NowA1by zMpQLpYr8eF)3aI!S=)m;b;r%hCQX-8HDjzYyjrY}3#wchuJe|QL4Y_KhHbEq z7@mTYa0Xt2bMOXy02kmQdHS?!+GK!~J*wBN)X)XkiMEqK(J#aXg8q@CkeppTpxO6eY{N~)GtOY5X&sYT3O^0rJE_TI!3QX3TtBPJyx zMml=4hzUNhRq2`$5p#7ekCD=ai^>)+udG_r(6lj}r;#9Dj%$-S?9z4$*szkvi zs%wLFidsaWB)h)rf;EbYOjI@~Es9!9K_#l2lr4%1JkCYEHP{|hd5HW6vc3%;!Y4%5 z%S6^+;8*w^t`kA$<5D8$Dy+h4ti?4%&}MAGjkpOraVu`a?L^l;?8gBd!eNY~Mr0j9 z9nb{Hb6_9cJR5Id6g=9=x9UX#< zz&>s|vi!`2&swM3B>vSVHS*8fM7B3=8kTvO`sRT$2eP!4op3jqIBhdJg}MXw)U8bV ziYzB@ins8JjoMy7!KGY4UCD1jGLz@Y`+I4p5#OJ-XnHTN?TR`hF|XWbSw_AbjrG%B z6j96CEz^nW^Z|68X*VE~eFMZ)YqZVEmYJJyYD0~6jpMbU zv6hAnwW0Mb4ddf7D_>c^x$9u^_=&NH#~*o-UXBvxz8ecfJ)fVY(k))N0L;9LU+@v| z5%3Z45%3Z45ttze6p49+`2Bz9t^fa@A+zo7JKmYsZ J|NrOt|8KcNq8KoLElY$`(;kgjCNWytZ&$xlwo$xnh>VGX1;{(}LK z1+qE~XhS|j9zzLGR~|zOn);Qf>L>FFR7$e~?aBe_DPbr^Rn7Q$a)p57WM>KS&Bo#r tnHIBia0oJktzi)02GXt|FK#US&ODi4#S`RV1}2E-LE*u$Ii6<@GXQ0eJ81v_ diff --git a/README.md b/README.md index cc17ed1..999722d 100644 --- a/README.md +++ b/README.md @@ -1,113 +1,31 @@ -# A simple and stupid dashboard for e-mission +# Efforts towards predicting the replaced mode without user labels -Issues: Since this repository is part of a larger project, all issues are tracked in the central docs repository. If you have a question, as suggested by the open source guide, please file an issue instead of sending an email. Since issues are public, other contributors can try to answer the question and benefit from the answer. +## Prerequisites: +- These experiments were conducted on top of the `emission` anaconda environment. Please ensure that this environment is available to you before re-running the code. +- In addition, the script uses `seaborn` for plotting and `pandarallel` for parallel pandas processing. +- Ensure you have the following data sources loaded in your MongoDB Docker container: + - Stage_database (All CEO) + - Durham + - Masscec + - Ride2own + - UPRM NICR +- Once these data sources are procured and loaded in your Mongo container, you will need to add the inferred sections to the data. To do this, please run the [add_sections_and_summaries_to_trips.py](https://github.com/e-mission/e-mission-server/blob/master/bin/historical/migrations/add_sections_and_summaries_to_trips.py) script. **NOTE**: If you see a lot of errors in the log, try to re-run the script by modifying the following line from: -## Development - -We use docker images for the software dependencies since we will not be modifying them here. - -So the steps are: - -#### Launch dev environment - -``` -$ docker-compose -f docker-compose.dev.yml up -Creating network "em-public-dashboard_emission" with the default driver -Creating em-public-dashboard_db_1 ... done -Creating em-public-dashboard_plot-gen_1 ... done -Creating em-public-dashboard_dashboard_1 ... done -... -dashboard_1 | Starting up http-server, serving ./ -dashboard_1 | Available on: -dashboard_1 | http://127.0.0.1:8080 -dashboard_1 | http://172.25.0.3:8080 -dashboard_1 | Hit CTRL-C to stop the server -... -notebook-server_1 | -notebook-server_1 | To access the notebook, open this file in a browser: -notebook-server_1 | file:///root/.local/share/jupyter/runtime/nbserver-22-open.html -notebook-server_1 | Or copy and paste one of these URLs: -notebook-server_1 | http://f8317197efaf:8888/?token=5cfd541b7461a47310c9c8aaa4114f921457a6f17b8ca159 -notebook-server_1 | or http://127.0.0.1:8888/?token=5cfd541b7461a47310c9c8aaa4114f921457a6f17b8ca159 -... -``` - -#### Test the frontend install - -Go to http://localhost:3274/ to see the front-end. Note that the port is *3274* -instead of the *8080* in the logs, since we remap it as part of the docker-compose. - -#### Test the notebook install - -Use the notebook URL from the console but change `8888` to `47962` - -``` -http://127.0.0.1:8888/?token= -``` - -becomes - -``` -http://127.0.0.1:47962/?token= -``` - -#### Load some data - -https://github.com/e-mission/e-mission-server/#quick-start - -There are multiple sources listed there, or you can use the mongodump from: -https://github.com/asiripanich/emdash#loading-test-data - -#### Loading data from a mongodump - -We have a helper script to load data directly from a mongodump. +```language=python +# Before +eps.dispatch(split_lists, skip_if_no_new_data=False, target_fn=add_sections_to_trips) +# After +eps.dispatch(split_lists, skip_if_no_new_data=False, target_fn=None) ``` -$ bash viz_scripts/docker/load_mongodump.sh -``` - -Note that this expects a standard setup with: -- this repository checked out under the `em-public-dashboard` directory, which makes the database name `em-public-dashboard_db_1` -- the incoming mongodump is in tar gz format. This should be true of all canbikeco dumps, you may need to change the `tar xvf` to `unzip` otherwise. The mongo container typically doesn't have zip installed, so using tar is more portable. - -**If you have a non-standard setup, please use your expertise to change the script appropriately.** - -#### Happy visualizations! - -Look at the existing notebooks for examples on how to start. -In particular, before you check in, please make sure that you are reading -inputs correctly, because otherwise, no metrics will be generated. - -### Design decisions - -Dashboards! They are fairly essential for user acceptance, but there are many options to build them. -And the choice of the technology stack for them is particularly fraught. -And for community projects, especially outside computer stack, choosing a technology stack ensures that half your collaborators cannot access it. -For example, choosing python will cause R users to balk and vice versa. -And there is although contributors can write some javascript, picking a charting library again steepens the learning curve. - -So we are going to use a simple and stupid dashboard. -This will consist of a reactive grid layout -(e.g. https://strml.github.io/react-grid-layout/examples/15-drag-from-outside.html) -served by a simple static express server following the instructions at -https://www.thoughts-in-motion.com/articles/creating-a-static-web-server-with-node-js-and-express/ - -The grid layout will display static, pre-generated images using whatever program the user wishes. -The program should take the time range as input and generate a static image shared with the express server. -We have included python examples using ipython notebook and simple python scripts for the following metrics: - -- mode share (notebook) -- purpose share (notebook) -- total number of trips per day (python) -In order to get the prototype out, there are a lot of shortcuts. We can revisit -this later if there is sufficient interest/funding. +This will trigger the intake pipeline for the current db and add the inferred section. -- Using gridster (https://github.com/dsmorse/gridster.js/) and bootstrap instead of react -- Using the pre-built (https://hub.docker.com/r/danjellz/http-server) instead of express -- Using a mounted volume instead of building a custom docker image to make deployment easier -- Using the e-mission server codebase to generate graphs instead of a REST API +- Note 2: The script above did not work for the All CEO data for me. Therefore, I obtained the section durations using the `get_section_durations` method I've written in `scaffolding.py` (you do not have to call this method, it is already handled in the notebooks). Please note that running this script takes a long time and it is advised to cache the generated output. -The one part where we are NOT cutting corners is in the parts where we expect -contributions from others. We are going to build in automated tests for that -part to ensure non-bitrotted code. +## Running the experiments +The order in which the experiments are to be run are denoted by the preceding number. The following is a brief summary about each notebook: +1. `01_extract_db_data.ipynb`: This notebook extracts the data, performs the necessary preprocessing, updates availability indicators, computes cost estimates, and stores the preprocessed data in `data/filtered_trips`. +2. `02_run_trip_level_models.py`: This script reads all the preprocessed data, fits trip-level models with different stratitifications, generates the outputs, and stores them in `outputs/benchmark_results/`. +3. `03_user_level_models.ipynb`: This notebook explores user fingerprints, similarity searching, and naive user-level models. +4. `04_FeatureClustering.ipynb`: This notebook performs two functions: (a) Cluster users based on demographics/trip feature summaries and check for target distributions across clusters, and (b) Cluster users by grouping w.r.t. the target and checking for feature homogeneity within clusters diff --git a/data/README.md b/data/README.md new file mode 100644 index 0000000..222add2 --- /dev/null +++ b/data/README.md @@ -0,0 +1 @@ +Placeholder folder to store data \ No newline at end of file diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml deleted file mode 100644 index b04d63e..0000000 --- a/docker-compose.dev.yml +++ /dev/null @@ -1,47 +0,0 @@ -version: "3" -services: - dashboard: - image: danjellz/http-server:1.4 - depends_on: - - db - ports: - # DASH in numbers - - "3274:8080" - volumes: - - ./frontend:/public - - ./plots:/public/plots - networks: - - emission - notebook-server: - image: em-pub-dash-dev/viz-scripts - build: - context: viz_scripts - dockerfile: docker/Dockerfile.dev - depends_on: - - db - environment: - - DB_HOST=db - - WEB_SERVER_HOST=0.0.0.0 - - CRON_MODE= - - STUDY_CONFIG=stage-program - ports: - # ipynb in numbers - - "47962:8888" - networks: - - emission - volumes: - - ./viz_scripts:/usr/src/app/saved-notebooks - - ./plots:/plots - db: - image: mongo:4.4.0 - volumes: - - mongo-data:/data/db - networks: - - emission - -networks: - emission: - -volumes: - mongo-data: - diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 73a9875..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,44 +0,0 @@ -version: "3" -services: - dashboard: - image: em-pub-dash-prod/frontend - build: frontend - depends_on: - - db - ports: - # DASH in numbers - - "3274:6060" - volumes: - - ./plots:/public/plots - networks: - - emission - notebook-server: - image: em-pub-dash-prod/viz-scripts - build: viz_scripts - depends_on: - - db - environment: - - DB_HOST=db - - WEB_SERVER_HOST=0.0.0.0 - - CRON_MODE=TRUE - - STUDY_CONFIG=stage-program - ports: - # ipynb in numbers - - "47962:8888" - networks: - - emission - volumes: - - ./plots:/plots - db: - image: mongo:4.4.0 - volumes: - - mongo-data:/data/db - networks: - - emission - -networks: - emission: - -volumes: - mongo-data: - diff --git a/frontend/Dockerfile b/frontend/Dockerfile deleted file mode 100644 index 69321ca..0000000 --- a/frontend/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM node:18-alpine -VOLUME /public/plots - -RUN mkdir -p /public -WORKDIR /public - -RUN npm install -g npm@8.14.0 && npm i -g http-server - -COPY client /public/client -COPY *.html /public/ - -EXPOSE 6060 -CMD ["http-server", "-p", "6060"] - diff --git a/frontend/client/css/bootstrap.min.css b/frontend/client/css/bootstrap.min.css deleted file mode 100644 index 286cde4..0000000 --- a/frontend/client/css/bootstrap.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v4.5.3 (https://getbootstrap.com/) - * Copyright 2011-2020 The Bootstrap Authors - * Copyright 2011-2020 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;-webkit-print-color-adjust:exact;color-adjust:exact}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item{display:-ms-flexbox;display:flex}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{-ms-flex-preferred-size:350px;flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;-ms-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} -/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/frontend/client/css/dashboard.css b/frontend/client/css/dashboard.css deleted file mode 100644 index 45aebbc..0000000 --- a/frontend/client/css/dashboard.css +++ /dev/null @@ -1,99 +0,0 @@ -/*! gridster.js - v0.6.10 - 2015-05-31 -* https://dsmorse.github.io/gridster.js/ -* Copyright (c) 2015 ducksboard; Licensed MIT */ -body { - font-size: 16px; - font-family: 'Helvetica Neue', Arial, sans-serif; - color: #ffffff; - margin: 0; -} -h1, -h2, -h3, -p { - margin: 10px; -} -table { - border-collapse: collapse; - border-spacing: 0; -} -.demo { - margin: 3em 0; - padding: 7.5em 0 5.5em; - background: #26941f; -} -.demo:hover .gridster { - margin: 0 auto; - opacity: .8; - -webkit-transition: opacity .6s; - -moz-transition: opacity .6s; - -o-transition: opacity .6s; - -ms-transition: opacity .6s; - transition: opacity .6s; -} -.content { - color: white; -} -.gridster .gs-w { - background: #61A9CF; - cursor: pointer; - -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); - box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); -} -.gridster .player { - -webkit-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); - box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); - background: #BBB; -} -.gridster .gs-w.try { - background-image: url(../img/sprite.png); - background-repeat: no-repeat; - background-position: 37px -169px; -} -.gridster .preview-holder { - border: none !important; - border-radius: 0 !important; - background: red !important; -} -.gridster ul { - background-color: #EFEFEF; -} -.gridster li { - font-size: 1em; - font-weight: bold; - text-align: center; - line-height: 100%; -} -ul { - list-style-type: none; -} -li { - list-style: none; - font-weight: bold; -} -.gridster-box { - position: relative; - width: 100%; - height: 100%; -} -.controls { - margin-bottom: 20px; -} -.bg-main-website { - background: url("../client/img/bg-pattern.png"), #7b4397; - background: url("../client/img/bg-pattern.png"), -webkit-linear-gradient(to left, #7b4397, #dc2430); - background: url("../client/img/bg-pattern.png"), linear-gradient(to left, #7b4397, #dc2430); -} -button { - background: #ff515d; - color: white; - border: none; - border-radius: 5px; - margin-left: 5px; -} -button.remove { - background: #fff0; - color: black; - border-color: black; -} -/*# sourceMappingURL=demos/assets/css/demo.css.map */ diff --git a/frontend/client/css/jquery.gridster.min.css b/frontend/client/css/jquery.gridster.min.css deleted file mode 100644 index 01d63b4..0000000 --- a/frontend/client/css/jquery.gridster.min.css +++ /dev/null @@ -1,2 +0,0 @@ -/*! gridster.js - v0.7.0 - 2016-02-26 - * https://dsmorse.github.io/gridster.js/ - Copyright (c) 2016 ducksboard; Licensed MIT */ -.gridster{position:relative}.gridster>*{-webkit-transition:height .4s,width .4s;-moz-transition:height .4s,width .4s;-o-transition:height .4s,width .4s;-ms-transition:height .4s,width .4s;transition:height .4s,width .4s}.gridster .gs-w{z-index:2;position:absolute}.gridster .preview-holder{z-index:1;position:absolute;background-color:#fff;border-color:#fff;opacity:.3}.gridster .player-revert{z-index:10!important;-webkit-transition:left .3s,top .3s!important;-moz-transition:left .3s,top .3s!important;-o-transition:left .3s,top .3s!important;transition:left .3s,top .3s!important}.gridster.collapsed{height:auto!important}.gridster.collapsed .gs-w{position:static!important}.ready .gs-w:not(.preview-holder),.ready .resize-preview-holder{-webkit-transition:opacity .3s,left .3s,top .3s,width .3s,height .3s;-moz-transition:opacity .3s,left .3s,top .3s,width .3s,height .3s;-o-transition:opacity .3s,left .3s,top .3s,width .3s,height .3s;transition:opacity .3s,left .3s,top .3s,width .3s,height .3s}.gridster .dragging,.gridster .resizing{z-index:10!important;-webkit-transition:all 0s!important;-moz-transition:all 0s!important;-o-transition:all 0s!important;transition:all 0s!important}.gs-resize-handle{position:absolute;z-index:1}.gs-resize-handle-both{width:20px;height:20px;bottom:-8px;right:-8px;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg08IS0tIEdlbmVyYXRvcjogQWRvYmUgRmlyZXdvcmtzIENTNiwgRXhwb3J0IFNWRyBFeHRlbnNpb24gYnkgQWFyb24gQmVhbGwgKGh0dHA6Ly9maXJld29ya3MuYWJlYWxsLmNvbSkgLiBWZXJzaW9uOiAwLjYuMSAgLS0+DTwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DTxzdmcgaWQ9IlVudGl0bGVkLVBhZ2UlMjAxIiB2aWV3Qm94PSIwIDAgNiA2IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHZlcnNpb249IjEuMSINCXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiDQl4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjZweCIgaGVpZ2h0PSI2cHgiDT4NCTxnIG9wYWNpdHk9IjAuMzAyIj4NCQk8cGF0aCBkPSJNIDYgNiBMIDAgNiBMIDAgNC4yIEwgNCA0LjIgTCA0LjIgNC4yIEwgNC4yIDAgTCA2IDAgTCA2IDYgTCA2IDYgWiIgZmlsbD0iIzAwMDAwMCIvPg0JPC9nPg08L3N2Zz4=);background-position:top left;background-repeat:no-repeat;cursor:se-resize;z-index:20}.gs-resize-handle-x{top:0;bottom:13px;right:-5px;width:10px;cursor:e-resize}.gs-resize-handle-y{left:0;right:13px;bottom:-5px;height:10px;cursor:s-resize}.gs-w:hover .gs-resize-handle,.resizing .gs-resize-handle{opacity:1}.gs-resize-handle,.gs-w.dragging .gs-resize-handle{opacity:0}.gs-resize-disabled .gs-resize-handle,[data-max-sizex="1"] .gs-resize-handle-x,[data-max-sizey="1"] .gs-resize-handle-y,[data-max-sizey="1"][data-max-sizex="1"] .gs-resize-handle{display:none!important} \ No newline at end of file diff --git a/frontend/client/css/nrel.application.css b/frontend/client/css/nrel.application.css deleted file mode 100755 index 4e8baa0..0000000 --- a/frontend/client/css/nrel.application.css +++ /dev/null @@ -1,114 +0,0 @@ -body, html { overflow-x:hidden; } -#content { - margin-top:.5em -} - -header .logo{ - background-position:center center -} -@media (min-width:768px){ - #content { - margin-top:1em - } - header .logo{ - background-position:center right - } - .navbar-wrapper .container.app{ - border-top:none - } -} -header a.app-name,header a.app-name:hover,header a.app-name:visited{ - color:#4B545A; - display:block; - font-family:Roboto; - font-size:1.5rem; - line-height:1.2em; - margin:0 0 .3em; - text-align:center; - text-decoration:none -} -@media (min-width:768px){ - header a.app-name,header a.app-name:hover,header a.app-name:visited { - font-size:1.85rem; - margin-top:28px; - text-align:left - } -} -/* Interior page header */ -header .logo.interior { - height: 65px; - background-size: 137px; -} -#interior.program-header .navbar-light .navbar-nav > li > a {padding: 5px 15px;} -@media (min-width: 768px) { - .banner-logo { - min-height: 75px; - } -} -/* Search */ -.site-searchbar-toggle { - border: 1px solid #5e6a71; - border-radius: 5px; - color: #5e6a71; - margin: 15px; - padding: 8px 6px 8px 6px; - position: absolute; - right: 0; - top: 0; -} -.site-searchbar-toggle.int {margin:0;} -.site-navbar-toggler { - display: inline-block; -} -.application .navbar-light .site-navbar-toggler, -.program-header .navbar-light .side-navbar-toggler { - border: none; -} -.site-navbar-toggler { - font-size: 1.25rem; - line-height: 1; - background-color: transparent; -} -.site-search-bar { - margin: 0; -} -.site-searchbar-form { - font-family: Roboto, "Helvetica Neue", Helvetica, sans-serif; - padding-top: 7px; - padding-bottom: 7px; - background-color: transparent; -} -.site-searchbar-form .form-control { - display: inline-block; - width: 200px; - vertical-align: middle; - box-shadow: none; - height: 40px; -} -@media (max-width: 350px) { - .site-searchbar-form .form-control { - width: 160px; - } -} -.site-searchbar-form .form-group {margin-bottom:0;} -#searchbar-collapse-mobile button { - background-color: #D1D5D8; - border-color: #D1D5D8; - color: #333; - line-height:1.7; -} - -@media (min-width: 576px) { - #searchbar-collapse-mobile button {margin-left:3px;} -} - -/* Medium devices (tablets, 768px and up) The navbar toggle appears at this breakpoint */ -@media (min-width: 768px) { - .site-searchbar-toggle { - position: relative; - } - .site-searchbar-form {float:right;} - .site-search-bar { - background-color: #e3e3e3; - } -} diff --git a/frontend/client/css/nrel.application.min.css b/frontend/client/css/nrel.application.min.css deleted file mode 100755 index 93f25d5..0000000 --- a/frontend/client/css/nrel.application.min.css +++ /dev/null @@ -1 +0,0 @@ -body, html {overflow-x:hidden;}#content {margin-top:.5em }header .logo{background-position:center center }@media (min-width:768px){#content {margin-top:1em }header .logo{background-position:center right }.navbar-wrapper .container.app{border-top:none }}header a.app-name,header a.app-name:hover,header a.app-name:visited{color:#4B545A;display:block;font-family:Roboto;font-size:1.5rem;line-height:1.2em;margin:0 0 .3em;text-align:center;text-decoration:none }@media (min-width:768px){header a.app-name,header a.app-name:hover,header a.app-name:visited {font-size:1.85rem;margin-top:28px;text-align:left }}header .logo.interior {height: 65px;background-size: 137px;}#interior.program-header .navbar-light .navbar-nav > li > a {padding: 5px 15px;}@media (min-width: 768px) {.banner-logo {min-height: 75px;}}.site-searchbar-toggle {border: 1px solid #5e6a71;border-radius: 5px;color: #5e6a71;margin: 15px;padding: 8px 6px 8px 6px;position: absolute;right: 0;top: 0;}.site-searchbar-toggle.int {margin:0;}.site-navbar-toggler {display: inline-block;}.application .navbar-light .site-navbar-toggler, .program-header .navbar-light .side-navbar-toggler {border: none;}.site-navbar-toggler {font-size: 1.25rem;line-height: 1;background-color: transparent;}.site-search-bar {margin: 0;}.site-searchbar-form {font-family: Roboto, "Helvetica Neue", Helvetica, sans-serif;padding-top: 7px;padding-bottom: 7px;background-color: transparent;}.site-searchbar-form .form-control {display: inline-block;width: 200px;vertical-align: middle;box-shadow: none;height: 40px;}@media (max-width: 350px) {.site-searchbar-form .form-control {width: 160px;}}.site-searchbar-form .form-group {margin-bottom:0;}#searchbar-collapse-mobile button {background-color: #D1D5D8;border-color: #D1D5D8;color: #333;line-height:1.7;}@media (min-width: 576px) {#searchbar-collapse-mobile button {margin-left:3px;}}@media (min-width: 768px) {.site-searchbar-toggle {position: relative;}.site-searchbar-form {float:right;}.site-search-bar {background-color: #e3e3e3;}} \ No newline at end of file diff --git a/frontend/client/css/nrel.complete.css b/frontend/client/css/nrel.complete.css deleted file mode 100755 index 0f7f852..0000000 --- a/frontend/client/css/nrel.complete.css +++ /dev/null @@ -1,2651 +0,0 @@ -@charset "UTF-8"; -/* CSS Document */ - -body, html {overflow-x:hidden;} -body { - background-color: transparent; - color: #222; - font-family:'Roboto', 'Helvetica Neue', Helvetica, sans-serif; - font-weight: 400; - line-height: 1.65; - padding: 0; -} -h1 { - color:#222; - font-weight: 300; - font-size: 2em; - margin-top: 0; -} -@media (min-width: 768px) { - h1 {font-size: 2.15em;} -} -h2 { - color: #e07700; - font-weight: 300; - font-size: 1.75em; -} -h3 { - color:#222; - font-weight: 400; - font-size: 1.5em; -} -h4 { - color: #222; - font-size: 1.375em; - font-weight: 400; -} -h5 { - color:#222; - font-weight: 400; - font-size: 1.25em; -} -h6 { - color:#222; - font-weight: 400; - font-size: 1.125em; -} -a { - color: #0071b8; -} -a:visited { - color: #9650b9; -} -a:hover, a:active { - color: #0071b8; - text-decoration: underline; -} -.blue a:visited { - color: #0071b8; -} -.green a:visited { - color: #5D9732; -} -a.tile { - display: block; -} -a.tile:hover { - text-decoration: none; -} -a.fa { - text-decoration: none; -} -a.fa:hover { - text-decoration: underline; -} -h1 a[href]::after, -h2 a[href]::after, -h3 a[href]::after, -h4 a[href]::after, -h5 a[href]::after, -h6 a[href]::after { - font-family: FontAwesome; - content: "\00a0\f054"; - display: inline; - font-size: 0.65em; -} -a[href]::after { - font-family: FontAwesome; - font-size: 0.85em; -} - -h1 a[href$=".pdf"]::after, -h2 a[href$=".pdf"]::after, -h3 a[href$=".pdf"]::after, -h4 a[href$=".pdf"]::after, -h5 a[href$=".pdf"]::after, -h6 a[href$=".pdf"]::after, -a[href$=".pdf"]::after { - content: "\00a0\f1c1"; - display: inline; -} - -h1 a[href$=".doc"]::after, -h2 a[href$=".doc"]::after, -h3 a[href$=".doc"]::after, -h4 a[href$=".doc"]::after, -h5 a[href$=".doc"]::after, -h6 a[href$=".doc"]::after, -a[href$=".doc"]::after { - content: "\00a0\f1c2"; - display: inline; -} - -h1 a[href$=".xls"]::after, -h2 a[href$=".xls"]::after, -h3 a[href$=".xls"]::after, -h4 a[href$=".xls"]::after, -h5 a[href$=".xls"]::after, -h6 a[href$=".xls"]::after, -a[href$=".xls"]::after{ - content: "\00a0\f1c3"; - display: inline; -} - -h1 a[href$=".ppt"]::after, -h2 a[href$=".ppt"]::after, -h3 a[href$=".ppt"]::after, -h4 a[href$=".ppt"]::after, -h5 a[href$=".ppt"]::after, -h6 a[href$=".ppt"]::after, -a[href$=".ppt"]::after { - content: "\00a0\f1c4"; - display: inline; -} - -h1 a[href$=".jpg"]::after, -h2 a[href$=".jpg"]::after, -h3 a[href$=".jpg"]::after, -h4 a[href$=".jpg"]::after, -h5 a[href$=".jpg"]::after, -h6 a[href$=".jpg"]::after, -h1 a[href$=".png"]::after, -h2 a[href$=".png"]::after, -h3 a[href$=".png"]::after, -h4 a[href$=".png"]::after, -h5 a[href$=".png"]::after, -h6 a[href$=".png"]::after, -h1 a[href$=".gif"]::after, -h2 a[href$=".gif"]::after, -h3 a[href$=".gif"]::after, -h4 a[href$=".gif"]::after, -h5 a[href$=".gif"]::after, -h6 a[href$=".gif"]::after, -a[href$=".jpg"]::after, a[href$=".png"]::after, a[href$=".gif"]::after { - content: "\00a0\f1c5"; - display: inline; -} - -h1 a[href$=".mp4"]::after, -h2 a[href$=".mp4"]::after, -h3 a[href$=".mp4"]::after, -h4 a[href$=".mp4"]::after, -h5 a[href$=".mp4"]::after, -h6 a[href$=".mp4"]::after, -a[href$=".mp4"]::after { - content: "\00a0\f03d"; - display: inline; -} - -h1 a[href$=".txt"]::after, -h2 a[href$=".txt"]::after, -h3 a[href$=".txt"]::after, -h4 a[href$=".txt"]::after, -h5 a[href$=".txt"]::after, -h6 a[href$=".txt"]::after, -a[href$=".txt"]::after { - content: "\00a0\f15b"; - display: inline; -} - -h1 a[href$=".zip"]::after, -h2 a[href$=".zip"]::after, -h3 a[href$=".zip"]::after, -h4 a[href$=".zip"]::after, -h5 a[href$=".zip"]::after, -h6 a[href$=".zip"]::after, -a[href$=".zip"]::after { - content: "\00a0\f1c6"; - display: inline; -} -img a[href]::after, -img a[href$=".pdf"]::after, -img a[href$=".doc"]::after, -img a[href$=".xls"]::after, -img a[href$=".ppt"]::after, -img a[href$=".jpg"]::after, -img a[href$=".png"]::after, -img a[href$=".gif"]::after, -img a[href$=".mp4"]::after, -img a[href$=".txt"]::after, -img a[href$=".zip"]::after {content:none;} -a.noicon::after {content:none;} -#content { - padding-bottom: 5em; -} -@media (min-width: 768px) { - body.layout-12 > #page-tools .row > .col-sm-9 { - width: 100%; - } - body.layout-12 > #page-tools .row > .col-sm-offset-3 { - margin-left:0; - } -} -.list-headline { - border-bottom: 1px solid #000; - padding-bottom: 10px; -} -.lead { - font-weight: 300; - font-size: 1.15em; - line-height: 1.4em; -} -.banner-site { - font-size: 1.5rem; - line-height: 1.2em; - font-weight: 400; - margin: 0 0 .3em; - text-align: center; - text-decoration: none; -} -@media (min-width: 768px) { - .banner-site { - font-size: 2rem; - font-weight: 300; - text-align: left; - margin: 5px 0; - } -} -.banner-site a, .banner-site a:hover { - color: #000; - text-decoration: none; -} -.banner-site a:visited { - color: #4B545A; - text-decoration: none; -} -.navbar-light .navbar-brand {color:#4B545A;} -.breadcrumb { - background-color: transparent; - font-size: 14px; - margin-bottom: 1em; - padding-left:0; -} -.breadcrumb > li + li:before { - content: "\00BB"; - padding: 0 5px; - color: #000; -} -.breadcrumb a, .breadcrumb a:visited { - color: #0071b8; - text-decoration: none; -} -nav.breadcrumb.invisible { - margin-top: -50px; -} -.hide { - display: none !important; -} -.sidenav { - margin: 2em 0; -} -.sidenav ul.nav li { - font-weight: 400; - line-height: 1.3; - width:100%; -} -.sidenav a, .sidenav a:visited { - color:#0079C2; - text-decoration: none; -} -.nav>li>a:hover, .nav>li>a:focus { - background-color: transparent; -} -@media (min-width: 992px) { - .sidenav { - margin: 0.6em 0; - } -} -.sidenav > ul.nav > li:first-child > a { - border-top: 3px solid #D1D5D8; -} -.sidenav > ul.nav > li > a { - background-color: transparent; - border-bottom:1px solid #d1d5d8; - border-top: 0; -} -.sidenav > ul.nav > li > a:hover, .sidenav > ul.nav > li > a:focus, .sidenav > ul.nav > li.active > a, .sidenav > ul.nav > li.active > a:visited { - background-color: #0079c2; - color: #fff; -} -.sidenav > ul.nav ul.nav li > a { - padding-left: 30px; - border-bottom: 1px dashed #d1d5d8; -} -.sidenav > ul.nav ul.nav li:last-child > a { - border-bottom: 1px solid #d1d5d8; -} -.sidenav > ul.nav ul.nav li > a:hover, .sidenav > ul.nav ul.nav li > a:focus, .sidenav > ul.nav ul.nav li.active > a, .sidenav > ul.nav ul.nav li.active > a:visited { - background-color: #E5F1F9; - color: #0064A2; -} -.sidenav ul.nav ul.nav ul.nav li { - color: #0079c2; - display: list-item; -} -.sidenav ul.nav ul.nav ul.nav li > a:before { - content: '\25A0\00a0'; - vertical-align: text-bottom; -} -.sidenav ul.nav ul.nav ul.nav li > a { - border-bottom: none; - margin-left: 1em; - text-indent: -0.85em; -} -.sidenav ul.nav ul.nav ul.nav li:last-child > a { - border-bottom: 1px dashed #d1d5d8; -} -.sidenav ul.nav ul.nav ul.nav li:hover, .sidenav ul.nav ul.nav ul.nav li:focus, .sidenav ul.nav ul.nav ul.nav li.active { - background-color: #E5F1F9; - color: #0064A2; -} -h1.green, h2.green, h3.green, h4.green, h5.green, h6.green, p.green { - color: #5D9732; -} -div.green { - background-color: #5D9732; -} -h1.grey, h1.gray, h2.grey, h2.gray, h3.grey, h3.gray, h4.grey, h4.gray, h5.grey, h5.gray, h6.grey, h6.gray, p.grey, p.gray { - color: #5E6A71; -} -div.grey, div.gray { - background-color: #5E6A71; - color: #fff; -} -h1.blue, h2.blue, h3.blue, h4.blue, h5.blue, h6.blue, p.blue { - color: #0079c2; -} -div.blue { - background-color: #0079C2; - color: #fff; -} -h1.black, h2.black, h3.black, h4.black, h5.black, h6.black, p.black { - color: #000; -} -div.black { - background-color: #000; - color: #fff; -} -h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { - text-decoration: none; -} -.allcaps { - text-transform: uppercase; -} -.nomargin + h2, .nomargin + h3, .nomargin + h4, .nomargin + h5, .nomargin + h6 { - margin-top: 0; -} -.smaller {font-size:90%;} - -/* CARDS */ -.card {display:block;} -.bg-blue .card-title { - color:#fff; -} -.headerlink-cr::after { - font-family: FontAwesome; - content: "\00a0\f054"; - display: inline; - font-size: 0.65em; -} -.card-header { - background-color: #fff; - border-bottom: 6px solid #E66D0A; -} -.card-header h2 { - font-size: 1.5em; - font-weight: 400; - margin:0; -} -.card-header h2 a:link, .card-header h2 a:visited, -.card-header h3 a:link, .card-header h3 a:visited { - color:#212121; -} -.card-header h2 a:hover, .card-header h2 a:focus, -.card-header h3 a:hover, .card-header h3 a:focus { - color:#cc6600; -} -.card-header.orange { - background-color: #fff; - border-bottom: 6px solid #E66D0A; -} -.card-text { - line-height: 1.35em; -} -.card-title {margin-bottom:0;} -.card-footer {background-color: #fff;} -.fw-feat { - background-color: #fff; - background-clip: border-box; - border: 1px solid rgba(0,0,0,.125); - border-radius: .25rem; - width:100%; -} -.fw-feat h3 a:link, .fw-feat h2 a:link, -.fw-feat h3 a:visited, .fw-feat h2 a:visited { - color:#000; - text-decoration: none; -} -.fw-feat h3 a:hover, .fw-feat h2 a:hover, -.fw-feat h3 a:active, .fw-feat h2 a:active { - color:#e07700; - text-decoration: none; -} -.fw-feat-info {padding:1em 1em 0 1em; border-bottom: 6px solid #E66D0A; border-top:none;} -/* Large Devices, Wide Screens */ -@media only screen and (min-width : 1200px) { - .overlay-text { - top: 65px; - } - .fw-feat-info {border-bottom:none; border-top: 6px solid #E66D0A;} -} - -/* secondary page features */ -.card.bg-secondary .card-body {border-top: 6px solid #e07700;} -.card.bg-secondary .card-body h2, -.card.bg-secondary .card-body h3, -.card.bg-secondary .card-body h4 { - color:#F5F5F5; -} - -/* orange navigation cards/blocks */ -.orange-card .card-body { - border-top: 6px solid #e07700; - font-size: 1rem; -} -.orange-card h3 {font-weight:400;} -.orange-card h4 a:link, .orange-card h4 a:visited {color:#e07700;font-weight:300;} -.orange-card h4 a:hover, .orange-card h4 a:active {color:#0071b8;font-weight:300;} -.img-feat-orange { - background: rgba(255, 255, 255, 0.8); - border-bottom: 6px solid #E66D0A; - position: absolute; - bottom: 0; - left: 0; - padding: 1em; - margin:0; - width: 100%; -} -.img-feat-orange a:link, -.img-feat-orange a:visited { - color:#000; -} -.img-feat-orange a:active, -.img-feat-orange a:hover { - color:#e07700; -} - -/* cards with color borders and icons */ -.border-danger {border-color:#D9531E !important;} -.border-danger .card-header { - background-color: #D9531E; - border-bottom:none; -} -.border-primary {border-color:#0079C2 !important;} -.border-primary .card-header { - background-color: #0079C2; - border-bottom:none; -} -.border-success {border-color:#5D9732 !important;} -.border-success .card-header { - background-color: #5D9732; - border-bottom:none; -} -.border-warning {border-color:#F7A11A !important;} -.border-warning .card-header { - background-color: #F7A11A; - border-bottom:none; -} -.border-danger .card-header h3, .border-primary .card-header h3, .border-success .card-header h3, .border-warning .card-header h3 {color:#fff;} -.card-title img {width: 30px; margin-bottom:5px; margin-right: 6px;} - -/* Vision callout boxes */ -/* snippets with images */ -.visionbox.main {background-color:#0079C2;color:#fff;} -.visionbox.ceem {background-color:#FFC432;color:#3A4246;} -.visionbox.e2m {background-color:#933C06;color:#fff;} -.visionbox.iep {background-color:#5D9732;color:#fff;} -.visiontext {padding:1em;} -.visionlink {font-weight: 300;font-size:1.35em;line-height:1.1em;} -.main .visionlink a:link, .main .visionlink a:visited, -.e2m .visionlink a:link, .e2m .visionlink a:visited, -.iep .visionlink a:link, .iep .visionlink a:visited {color:#fff;} -.ceem .visionlink a:link, .ceem .visionlink a:visited {color:#3A4246;} -/* assets with icons */ -.visionicon {height:90px; margin:0.35em auto;} -.vision h3 a:link, .vision h3 a:visited {color:#333;} -.vision h3 a:hover, .vision h3 a:active {color:#333;text-decoration:underline;} -.iep-top {background-color:#8CC63F;text-align:center;} -.iep-text {border:1px solid #8CC63F;padding:1em;} -.e2m-top {background-color:#D9531E;text-align:center;} -.e2m-text {border:1px solid #D9531E;padding:1em;} -.ceem-top {background-color:#F7A11A;text-align:center;} -.ceem-text {border:1px solid #F7A11A;padding:1em;} -.nrelvision-top {background-color:#E9ECEF;text-align:center;} -.nrelvision-text {border:1px solid #E9ECEF;padding:1em;} - - -/* Set width to make card deck cards 100% width */ -@media (max-width: 768px) { - - .card-deck-wrapper {margin-right:0;margin-left:0;} - .card-deck { - display: block; - width: 100%; - margin-bottom: .75rem; - table-layout: fixed; - border-spacing: 1.25rem 0; - } - .card-deck .card { - display: block; - margin-bottom: .75rem; - vertical-align: top; - } -} - -/* CARDS/ACCORDIONS */ - -#accordion .card, .accordion .card, -[id^="accordion_"] .card, .accordion .card { - border: 1px solid #0079C2; - border-radius: 0; - margin: -1px -1px 0.5rem -1px; -} -#accordion .card-header, .accordion .card-header, -[id^="accordion_"] .card-header, .accordion .card-header { - padding: 0; - margin: 0; - border-radius: 0; - border-bottom: none; -} -#accordion .card-header .btn, .accordion .card-header .btn, -[id^="accordion_"] .card-header .btn, .accordion .card-header .btn { - text-transform: none; - font-size: 1.3rem; - font-weight: 300; - width:100%; - text-align: left; - border-radius: 0; - line-height: 1; - padding: 0.65rem 0.65rem 0.65rem 40px; -} -#accordion .card-header .btn-link:hover, -[id^="accordion_"] .card-header .btn-link:hover, -#accordion .card-header .btn-link:active, -[id^="accordion_"] .card-header .btn-link:active, -#accordion .card-header .btn-link:focus, -[id^="accordion_"] .card-header .btn-link:focus, -.accordion .card-header .btn-link:hover, -.accordion .card-header .btn-link:active, -.accordion .card-header .btn-link:focus { - color: #0079C2; - text-decoration: none; -} -/* #accordion .card-header [data-toggle="collapse"] .fa:before { -content: "\f056"; -} -#accordion .card-header [data-toggle="collapse"].collapsed .fa:before { -content: "\f055"; -} */ -#accordion .card-header .btn[aria-expanded="true"], -[id^="accordion_"] .card-header .btn[aria-expanded="true"], -.accordion .card-header .btn[aria-expanded="true"] { - background-color: #0079C2; - color: #fff; - background-image: url('client/img/icon_minus.svg'); - background-repeat: no-repeat; - background-position: 1% center; - background-size: 25px 25px; - margin-left: 0px; - padding-left: 40px; - display: block; -} -#accordion .card-header .btn[aria-expanded="false"], -[id^="accordion_"] .card-header .btn[aria-expanded="false"], -.accordion .card-header .btn[aria-expanded="false"] { - background-color: #fff; - color: #0079C2; - background-image: url('client/img/icon_plus_blue.svg'); - background-repeat: no-repeat; - background-position: 1% center; - background-size: 25px 25px; - margin-left: 0px; - padding-left: 40px; - display: block; -} -#accordion .card-header .btn:hover, #accordion .card-header .btn:focus, -[id^="accordion_"] .card-header .btn:hover, [id^="accordion_"] .card-header .btn:focus { - background-color: #0079C2; - color: #fff; - background-image: url('/_resources/images/icon_minus.svg'); - background-repeat: no-repeat; - background-position: 1% center; - background-size: 25px 25px; -} -.accordion > .card:not(:first-of-type):not(:last-of-type), -.accordion > .card:first-of-type {border-bottom: 1px solid #0079C2;} - -/* striped list cards */ -.nrel-list .card-header h3 a:hover, .nrel-list .card-header h3 a:focus { - color: #303030; - text-decoration:underline; -} -.nrel-list .card-header span a:link, .nrel-list .card-header span a:visited { - color:#212121; - text-decoration:underline; - font-size: 0.9em; -} -.nrel-list .card-header span a:hover, .nrel-list .card-header span a:focus { - color:#F5F5F5; -} -ul.list-group>li:nth-child(odd){ - background-color:#F5F5F5; -} -.nrel-list .card-header { - background-color: #80D0FF; - border-bottom: 1px solid rgba(0,0,0,.125); -} -.nrel-list .card-header h3 { - font-size: 1.35em; - font-weight:400; - margin:0; -} -.nrel-list .list-group-item .date { - font-size: 0.85em; - margin: 0.3em 0 0 0; - font-weight: 300; -} -.nrel-list .list-group-item p, -.list-group-item { - font-weight: 400; - line-height: 1.2; - margin:0; -} - -/* Program site home page features */ -.feature-teaser { - background-color: #F5F5F5; - padding: 1.5em; - height:100%; -} -.feature-teaser.ft-blue { - background-color: #52BFFF; - color:#333; -} -.feature-teaser h1 { - font-size: 2em; -} -.feature-teaser h1 strong { - font-weight: bold; -} -.feature-teaser p.lead { - font-size: 1rem; -} -.feature-teaser.ft-blue a:link, -.feature-teaser.ft-blue a:visited { - color: #000; -} -@media (min-width: 768px) { - .feature-teaser h1{ - font-size: 3em; - } - .feature-teaser p.lead { - font-size: 1.25rem; - } -} -@media (min-width: 992px) { - .feature-teaser h1{ - font-size: 2em; - } - .feature-teaser p.lead { - font-size: 1rem; - } -} -@media (min-width: 1200px) { - .feature-teaser { - padding: 2em; - } - .feature-teaser h1 { - font-size: 2.5rem; - } - .feature-teaser p.lead { - font-size: 1.25rem; - } -} - -.big-quote::before { - color: #ccc; - font-family: serif; - font-size: 3em; - line-height: 0; - vertical-align: text-bottom; - content:"\201C"; - margin-right:3px; - float: left; - margin-top: -25px; - padding-top: 45px; -} -.header-description { - color:#757575; - font-size: 1rem; - font-weight: 400; - margin-top: 0; -} -h2 .fa, h3 .fa, h4 .fa, h5 .fa, h6 .fa, .header .fa { - font-size: 80%; - vertical-align:middle; -} -.headerlink:after { - font-family: FontAwesome; - content: "\00a0\f054"; - display: inline; - font-size: 0.65em; -} -.more, .learn-more { - font-weight: 400; -} -.more a, .more a:visited, .learn-more a, .learn-more a:visited { - color:#0071b8; - text-decoration: none; -} -.more a:hover, .learn-more a:hover { - text-decoration: underline; -} -.nav-tabs { - margin-top:1em; -} -.nav-tabs { - font-size: 21px; - font-weight: 300; -} -.nav-tabs .nav-link { - margin-bottom: -2px; - border-bottom: 1px solid #fff; - border-radius: 7px 7px 0 0; - margin-right:0; - background-color: #fff; - border-color: #e9ecef; -} -.nav-tabs .nav-link.active, -.nav-tabs .nav-link:hover { - border-color: #dee2e6 #dee2e6 #fff; -} -.nav-tabs .nav-item { - margin-bottom: 0; -} -.tab-pane { - padding:2em 1em; -} -.panel { - -webkit-box-shadow: none; - box-shadow: none; -} -.panel-default { - border: 1px solid #127BBF; -} -.panel-body { - padding: 15px; -} -.collapse.in { - display: block; -} -.panel-heading > .panel-title > .accordion-toggle { - margin-left:0px; - padding-left:40px; - display: block; -} -.panel-heading > .panel-title > .accordion-toggle, .panel-heading > .panel-title > .accordion-toggle:visited { - color:#fff; -} -.panel-heading > .panel-title > .accordion-toggle { - background-image: url('client/img/icon_minus.svg'); - background-repeat: no-repeat; - background-position: 1% center; - background-size: 25px 25px; -} -.panel-heading > .panel-title > .accordion-toggle.collapsed { - background-image: url('client/img/icon_plus_blue.svg'); -} -.panel-group .panel { - margin-bottom: 12px; -} -.panel-group .panel + .panel { - margin-top:1px; -} -.panel-group .panel, .panel-group .panel-heading { - border-radius: 1px; -} -.panel-group .panel:first-child { - border-top-left-radius: 4px; - border-top-right-radius: 4px; -} -.panel-group .panel:last-child { - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; -} -.panel-heading { - padding: 0; - cursor: pointer; -} -.panel-heading h4 { - margin: 0; -} -h4.panel-title a[href]::after {content:"";} -.panel-default > .panel-heading { - background-color: transparent; - color:#fff; -} -.panel-default > .panel-heading a { - display: block; - padding: 10px 15px; - text-decoration: none; -} -.panel-default > .panel-heading a:hover { - text-decoration: none; - color:#fff; -} - -.panel-group.inverse .panel-heading > .panel-title > a.accordion-toggle, .panel-group.inverse .panel-heading > .panel-title > a.accordion-toggle:visited { - background-color: #127BBF; - color:#fff; -} -.panel-group.inverse .panel-heading > .panel-title > a.accordion-toggle.collapsed, .panel-group.inverse .panel-heading > .panel-title > a.accordion-toggle.collapsed:visited { - background-color: transparent; - color: #127BBF; -} -.content-sandwich:before, .content-sandwich:after { - content: " "; - display: table; -} -.content-sandwich:after { - clear:both; -} -.content-sandwich { - border-top: 5px solid #ccc; - border-bottom: 5px solid #ccc; - margin-top: 1.65em; - margin-bottom: 1.65em; - padding: 1em 0; -} -.content-sandwich-topper + .content-sandwich { - margin-top: 0; -} -.content-sandwich p { - font-size: 16px; - font-weight: normal; -} -.content-sandwich .headline, .content-sandwich .header { - font-size: 18px; - font-weight: 600; - margin-bottom: 0; - margin-top: 0; -} -.content-sandwich .headline ~ p, .content-sandwich .header ~ p, .content-sandwich h1 ~ p, .content-sandwich h2 ~ p, .content-sandwich h3 ~ p, .content-sandwich h4 ~ p, .content-sandwich h5 ~ p, .content-sandwich h6 ~ p { - margin-top: 0; -} -.content-sandwich .item { - border-bottom: 1px solid #ccc; - padding: 1em 0; -} -.content-sandwich .item:last-child { - border-bottom: none; -} -.content-sandwich .item p { - margin-bottom: 0; -} -.content-sandwich ul { - font-size: 16px; - font-weight: normal; -} -.content-sandwich hr { - border-top: 1px solid #ccc; -} -.content-sandwich img { - margin: 0 auto; -} -.content-sandwich.vertical-aligned { -} -.content-sandwich.vertical-aligned [class*="col-"] .icon, .content-sandwich.vertical-aligned [class*="col-"] > *:only-child { - margin-top: 1.5em; -} -@media(min-width:768px) { - .content-sandwich.vertical-aligned [class*="col-"] .icon, .content-sandwich.vertical-aligned [class*="col-"] > *:only-child { - margin-top: .75em; - } -} -@media(min-width:1200px) { - .content-sandwich.vertical-aligned [class*="col-"] .icon, .content-sandwich.vertical-aligned [class*="col-"] > *:only-child { - margin-top: 1.5em; - } -} -.content-sandwich.quicklinks .icon { - margin-top: 1em; -} -.content-sandwich.quicklinks .header { - margin-top: 1em; -} -@media (min-width: 992px) { - .content-sandwich.quicklinks .header { - margin-top: 1.65em; - } -} -.bio { - padding-bottom: 2em; -} -.bio:last-child { - border-bottom: none; -} -.bio h3.header-description, .bio h4.header-description, .bio p.header-description { - font-size: 1rem; - color:#757575; - font-weight:400; - margin: 0 0 0.25em 0; -} -.bio p.header {font-size:1.3em;font-weight:300;line-height: 1.2;margin:0 0 0.25em 0;} -.bio p.header a[href]::after { - font-family: FontAwesome; - content: "\00a0\f054"; - display: inline; - font-size: 0.65em; -} -#staff_wrapper input { - margin-bottom:0.5em; -} -#staff .bg-blue { - color: #fff; - background-color: #0079C2; -} -table#staff td { - text-align: left; -} -table#staff td.child ul { - padding-left: 1.2em; -} -table#staff td.child ul li { - text-align: left; - list-style: none; - margin-left: 0; -} -.feature { - border-bottom: 1px solid #000; - display: block; - margin-bottom:30px; - min-height: 250px; - text-decoration: none; -} -@media(min-width:768px){ - .feature { - margin-bottom:12px; - } -} -.row .col-sm-6:last-child .feature.last { - border-bottom: none; -} -@media(min-width:768px){ - .feature.last { - border-bottom: none; - } -} -@media (min-width: 992px){ - .feature { - min-height: 260px; - } -} -@media (min-width: 1200px){ - .feature { - min-height: 290px; - } -} -.feature:hover { - text-decoration: none; -} -.feature:hover .headline { - color:#e07700; -} -.feature .category { - color: #5E6A71; - font-size: 16px; - font-weight: 700; - margin-bottom: 5px; - margin-top: 10px; - text-transform: uppercase; -} -.feature .headline { - color: #0079C2; - font-weight: 400; - font-size: 1.4em; - line-height: 1.2; - margin-top:0; -} -.feature-secondary .link-tile { - margin-top: 24px; -} -.feature-secondary .link-tile + .link-tile { - margin-top:24px; -} -.showcase { - opacity: 1; - padding-bottom: 2em; - padding-top: 2em; -} -.showcase .caption { - background-color: rgba(0,0,0,.8); - box-sizing: border-box; - color: #fff; - font-weight: 300; - line-height: 1.1; - padding: .5em 1em; - position:relative; -} -.showcase .link-tile, .showcase .link-tile { - position: relative; -} -.showcase .feature-primary .caption, .showcase .feature-secondary .caption { - font-size: 30px; -} -.modal-footer { - text-align: left; -} -@media(min-width:768px){ - .showcase { - height:431px; - } - .showcase .caption { - left: 0; - right: 0; - bottom: 0; - position: absolute; - } - .feature-secondary .link-tile { - margin-top: 0px; - } - .showcase .feature-primary .caption { - font-size: 20px; - } - .showcase .feature-secondary .caption { - font-size: 14px; - } -} -@media(min-width:992px){ - .showcase { - height:545px; - } -} -@media(min-width:1200px){ - .showcase { - height:649px; - } - .showcase .feature-primary .caption { - font-size: 30px; - } - .showcase .feature-secondary .caption { - font-size: 20px; - } -} -.modal.fade .modal-dialog { - transform: none !important; - -webkit-transition: -webkit-transform 0.3s ease-out; - -moz-transition: -moz-transform 0.3s ease-out; - -o-transition: -o-transform 0.3s ease-out; - transition: transform 0.3s ease-out; -} -.modal.in .modal-dialog { - transform: none !important; -} -span.required { - font-weight: normal; -} -select, select.form-control { - background-image: linear-gradient(#FFF,#E6E6E6); - box-shadow: inset 0 1px #FFF,inset 0 0 0 1px rgba(255, 255, 255, 0.5),0 1px 2px rgba(0, 0, 0, 0.1); -} -.dropdown-menu .divider { - width: auto; - border-top: none; - margin: 9px auto; - padding: 0; -} -a.btn, a.btn:visited, .btn a:hover { - color: #fff; - text-decoration: none; -} -a.btn-link, a.btn-link:visited { - color: #0079C2; - text-decoration: none; -} -.btn { - font-weight: 400; - min-height:40px; - text-transform: uppercase; - line-height: 1.8; -} -a.btn-default { - color:#333; -} -.btn-default { - color: #333; - background-color: #fff; - border-color: #ccc; -} -.btn-default:hover, .btn-default:focus, .btn-default:active, .btn-default.active, .open > .dropdown-toggle.btn-default { - color: #333; - background-color: #e6e6e6; - border-color: #adadad; - -webkit-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4); - -moz-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4); - box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4); -} -.btn-primary { - color: #fff; - background-color: #0079c2; - border-color: #0079c2; -} -.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .open > .dropdown-toggle.btn-primary { - color: #b7d6e9; - background-color: #3071a9; - border-color: #285e8e; - -webkit-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4); - -moz-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4); - box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4); -} -.btn-success { - color: #fff; - background-color: #4c8224; - border-color: #4c8224; -} -.btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .open > .dropdown-toggle.btn-success { - color: #d2e3c5; - background-color: #3b651c; - border-color: #3b651c; - -webkit-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4); - -moz-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4); - box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4); -} -.btn-info { - color: #fff; - background-color: #5e6a71; - border-color: #5e6a71; -} -.btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .open > .dropdown-toggle.btn-info { - color: #cccccc; - background-color: #3d4449; - border-color: #3d4449; - -webkit-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4); - -moz-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4); - box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4); -} -.btn-warning { - color: #000; - background-color: #f7a11a; - border-color: #f7a11a; -} -.btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .open > .dropdown-toggle.btn-warning { - color: #2d1c00; - background-color: #b87813; - border-color: #b87813; - -webkit-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.3); - -moz-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.3); - box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.3); -} -.btn-danger { - color: #fff; - background-color: #933c06; - border-color: #933c06; -} -.btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .open > .dropdown-toggle.btn-danger { - color: #dac4b7; - background-color: #702e05; - border-color: #702e05; - -webkit-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4); - -moz-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4); - box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4); -} -.btn-long { - font-size:16px; - height: 38px; - line-height: 1.3em; - white-space: normal; -} -.ou-form .btn { - display:inline-block; - padding:6px 12px; - margin-bottom:0; - font-weight:400; - text-align:center; - white-space:nowrap; - vertical-align:middle; - cursor:pointer; - border:1px solid transparent; - border-radius:4px; - color:#fff; - text-transform: uppercase; -} -.ou-form .btn-success:active,.ou-form .btn-success:hover { - color: #d2e3c5; - background-color: #3b651c; - border-color: #3b651c; - -webkit-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4); - -moz-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4); - box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4); -} -@media only screen and (min-width : 992px) { - .btn-long { - height: 80px; - } -} -@media only screen and (min-width : 1200px) { - .btn-long { - height: 60px; - } -} -select.form-control, input.form-control { - height: 40px; -} -@media(min-width:768px){ - .row-eq-height { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - } - .row-eq-height [class^="col-"] { - min-height: 270px; - } - .row-eq-height .sink { - bottom:0; - left: 15px; - right: 15px; - position: absolute; - } -} -.row-highlighted { - background-color: #F5F5F5; - margin-bottom:2em; - margin-top:2em; - padding-bottom:2em; - padding-top:1em; -} -.marketing { - text-align: center; -} -.marketing .img-circle { - margin-top:2em; -} -.marketing h2 { - padding-top:1em; -} -.marketing .btn { - margin-bottom:2em; -} -iframe { - border:0; -} -.video { - margin: 1em 0; -} -.play-overlay { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); -} -.container-xs-height { - display:table; - padding-left:0px; - padding-right:0px; -} -.row-xs-height { - display:table-row; -} -.col-xs-height { - display:table-cell; - float:none; -} -@media (min-width: 768px) { - .container-sm-height { - display:table; - padding-left:0px; - padding-right:0px; - } - .row-sm-height { - display:table-row; - } - .col-sm-height { - display:table-cell; - float:none; - } -} -@media (min-width: 992px) { - .container-md-height { - display:table; - padding-left:0px; - padding-right:0px; - } - .row-md-height { - display:table-row; - } - .col-md-height { - display:table-cell; - float:none; - } -} -@media (min-width: 1200px) { - .container-lg-height { - display:table; - padding-left:0px; - padding-right:0px; - } - .row-lg-height { - display:table-row; - } - .col-lg-height { - display:table-cell; - float:none; - } -} -.col-top { - vertical-align:top; -} -.col-middle { - vertical-align:middle; -} -.col-bottom { - vertical-align:bottom; -} -ul.fa-blue-arrow { - list-style-type: none; -} -ul.fa-blue-arrow li { - margin-bottom: 1em; -} -.fa-blue-arrow a { - margin-left: -5px; - color: #000; -} -.fa-blue-arrow a:visited { - color: #000; -} -.fa-blue-arrow a::before { - font-family: 'FontAwesome'; - content: '\f138'; - margin:0 5px 0 -15px; - color: #0071b8; - text-indent:15px; -} -.fa-blue-arrow a:hover { - text-decoration: none; - color: #0071b8; -} -ul.fa-check-circle:before { - content: ''; -} -ul.fa-check-circle { - list-style-type: none; -} -ul.fa-check-circle li { - margin-bottom: 1em; -} -ul.fa-check-circle li { - margin-left: -5px; - color:#000; -} -ul.fa-check-circle li:before { - color: #0071b8; - content: "\f058"; - font-family: 'FontAwesome'; - margin:0 5px 0 -15px; - text-indent:15px; -} -.list-pipes li + li:before { - content: " | "; -} -.list-pipes li { - padding-left:0 !important; - padding-right:0 !important; -} -.list-links.list-unstyled li { - padding-bottom: 10px; -} -ul.fa-blue-arrow-text { - list-style-type: none; -} -ul.fa-blue-arrow-text li { - margin-bottom: 1em; -} -ul.padded-list li, -ol.padded-list li { - margin-bottom:1.75em; -} -.fa-blue-arrow-text a { - margin-left: -17px; -} -.fa-blue-arrow-text a:before { - font-family: 'FontAwesome'; - content: '\f138'; - margin:0 5px 0 -15px; - color: #0071b8; - text-indent:15px; - display: inline-block; -} -.hero { - margin-bottom: 1em; -} -figcaption, .caption { - font-size: 12px; - color: #757575; -} -.credit { - font-style: italic; -} -a[data-toggle=lightbox] { - text-decoration: none; -} -.enlarge { - display: block; - font-size: 12px; - text-align: right; - text-decoration: none; -} -.enlarge:before { - content: '\f002'; - font-family: 'FontAwesome'; - padding-right: 3px; -} -.border { - border:1px solid #666; -} -a.singleLightbox { - text-decoration: none; -} -a.singleLightbox:visited { - color: #0071b8; -} -a.singleLightbox:hover { - color: #0071b8; - text-decoration: underline; -} -.icon-circle { - height: 100px; - width: 100px; - border-radius: 100px; - background-color: #0071b8; - line-height:100px; - text-align: center; - vertical-align: middle; - color: #FFF; - font-weight: 100; - font-size: 2.2em; - margin:0 auto; -} -@media (min-width: 768px) { - .icon-circle { - margin: auto; - } -} -.icon-circle.green { - background-color: #4c8224; -} -.divider { - width: 12%; - border-top: 1px solid #5D9732; - margin: 0 auto; - padding: 0 0 1.4em 0; -} -.cf:before, .cf:after { - content: " "; - display: table; -} -.cf:after { - clear:both; -} -.clearboth { - clear:both; -} -.wide-80 { - min-width: 80%; -} -.wide-60 { - min-width: 60%; -} -.wide-40 { - min-width: 40%; -} -.wide-20 { - min-width: 20%; -} -.nomargin { - margin-top: 0; - margin-bottom: 0; -} -.notop { - margin-top:0; -} -.padtop { - padding-top: 1em; -} -.padbottom { - padding-bottom: 1em; -} -.clear { - clear: both; -} -.kbd { - padding: 2px 4px; - font-size: 90%; - color: #252525; - background-color: #F5F5F5; - border-radius: 3px; - box-shadow: none; - font-family: Menlo,Monaco,Consolas,"Courier New",monospace; -} -.pull-right { - float: right; -} -.well { - background-color: #F5F5F5; - border-radius: 0; - border:none; - box-shadow: none; - padding: 20px; - margin-bottom: 20px; -} -.well.pull-right { - margin-left:0; - margin-bottom:1em; -} -.well h2 {color:#000;} -@media (min-width: 768px) { - .well.pull-right { - margin-left:1em; - } -} -.content-box { - border: 1px solid #D1D5D8; - padding: 1em; - margin: 0; -} -.actionbox { - border-radius: 0; - border:none; - box-shadow: none; - margin-bottom:2em; - margin-top: 2em; - padding-bottom:1.5em; - padding-top:1.5em; -} -.actionbox.pull-right { - margin-top:0; -} -.actionbox > h2, .actionbox > h3, .actionbox .header { - margin-top:0; -} -.actionbox .btn { - margin-top:.5em; - margin-bottom:.5em; -} -.actionbox.inline { - padding-top:1em; - padding-bottom:1em; -} -.actionbox.inline .header { - margin-top:0; - margin-bottom:.5em; -} -@media (min-width: 768px) { - .actionbox.inline .header { - display: inline; - } -} -.actionbox.inline .btn { - display: block; - margin-bottom:0; - margin-top:0; - max-width: 320px; - margin: 0 auto; -} -@media (min-width: 768px) { - .actionbox.inline .btn { - margin-left:2em; - display: inline; - vertical-align: top; - line-height: 33px; - } -} -.maintenancebox { - border-radius: 0; - border:none; - box-shadow: none; - margin-bottom:1.5em; - margin-top: 1.5em; - padding:1em; -} -.maintenancebox p { - margin:0; - text-align: center; -} -.graphic-box { - position: relative; -} -.caption-box { - background: #000; - background-color: rgba(0, 0, 0, 0.8); - box-sizing: border-box; - color: #fff; - padding:.5em; - text-align: left; - left: 0; - right:0; - bottom:0; - width: 100%; - position: relative; -} -@media (min-width:768px) { - .caption-box { - position: absolute; - padding:1em; - } -} -.caption-box .header, .caption-box h3 { - font-weight: 300; -} -.caption-box .teaser { - line-height: 34px; - margin:0; -} -.caption-box .btn { - text-transform: uppercase; -} -.caption-box a, .caption-box a:visited { - color: #fff; -} -.caption-box .small { - color: inherit; - line-height: inherit; -} -.fileIcon { - margin-left: 5px; -} -.lg-icon { - width:6.5em; -} -.fs-icon, .md-icon { - width:4.5em; -} -.sm-icon { - width:3.5em; -} -.sm-icon-h {height:3.5em;} -.icon-block:hover svg path, -.icon-block:hover h4 a, -.icon-block:hover { - fill: #cc6600; - color: #cc6600; - text-decoration: none; -} -.icon-block h4 {margin-top:0.5em;} -.v-center .row { - display: table; - margin: 0; - table-layout: fixed; - width: 100%; -} -.v-center [class^="col-"] { - display: table-cell; - vertical-align: middle; - float: none; -} -.v-center [class^="col-"] *:first-child { - margin-top: 0; -} -.v-center [class^="col-"] *:last-child { - margin-bottom: 0; -} -.img-center { - margin:0 auto; -} -.img-border{ - border: 1px solid #bebebe; -} -a > .fa:first-child { - margin-right: 5px; - padding-bottom: 3px; -} -a > .fa-ml { - margin-left: 5px; - margin-right:0!important; -} -.addthis_toolbar { - text-align: center; -} -.addthis_toolbar a, .addthis_toolbar a:visited { - color:#000; - line-height: 26px; - text-decoration: none; -} -#feedback-container { - margin-top:3em; - text-align: center; -} -#feedback-container .button-submit { - float:none; -} -#feedback-container textarea { - width: 50%; - margin: 0 auto; -} -.addtocalendar var{ - display: none; -} -.addtocalendar { - position: relative; - display: inline-block; - background: transparent!important; -} -.atcb-link { - display: block; - outline: none!important; - cursor: pointer; -} -.atcb-link:focus~ul, .atcb-link:active~ul, .atcb-list:hover{ - visibility:visible; -} -.atcb-list { - visibility: hidden; - position: absolute; - top: 100%; - left: 0; - width: 170px; - z-index: 900; -} -.atcb-list, .atcb-item { - list-style: none; - margin: 0; - padding: 0; - background: #fff; -} -.atcb-item { - float: none; - text-align: left; -} -.atcb-item-link { - text-decoration: none; - outline: none; - display: block; -} -.atcb-item.hover, .atcb-item:hover { - position: relative; - z-index: 900; - cursor: pointer; - text-decoration: none; - outline: none; -} -.atc-style-menu-wb .atcb-list { - width: 170px; - border: 1px solid rgb(186,186,186); - border-radius: 2px; - box-shadow: 0 0 5px #AAA; -} -.atc-style-menu-wb .atcb-list, .atc-style-menu-wb .atcb-item { - background: #fff; - color: #000; -} -.atc-style-menu-wb .atcb-item, .atc-style-menu-wb .atcb-item-link { - line-height: 1.3em; - vertical-align: middle; - zoom: 1; -} -.atc-style-menu-wb .atcb-item-link, .atc-style-menu-wb .atcb-item-link:hover, .atc-style-menu-wb .atcb-item-link:active, .atc-style-menu-wb .atcb-item-link:focus { - color: #000; - font-family: "Verdana"; - font-size: 14px; - text-decoration: none; - outline: none; - padding: 5px 15px; -} -.atc-style-menu-wb .atcb-item-link:hover, .atc-style-menu-wb .atcb-item-link:active, .atc-style-menu-wb .atcb-item-link:focus { - color: #fff; -} -.atc-style-menu-wb .atcb-item.hover, .atc-style-menu-wb .atcb-item:hover { - background: rgb(66,129,244); -} -.press { - line-height: 1.3; -} -.press .header { - display: table; - border-bottom: 1px solid #000; - margin-bottom: 7px; - width: 100%; -} -.press .more-link { - display: table-cell; - font-size:14px; - text-align: right; -} -.press .more-link a { - text-decoration: none; -} -.press .headline { - color: #0079C2; - font-weight: 400; - line-height: 1.2; - margin: 0; -} -.press .headline + .headline { - margin-top: 10px; -} -.date {margin-bottom:0;} -.press .date { - font-size: 0.85em; - font-weight: 300; - margin: 0.3em 0 1.5em 0; -} -.event .date { - margin-bottom:0; -} -.press .more, .press img { - display: none; -} -.press img.rss { - display: inline; -} -.item .date { - font-size: 1.1em; - font-weight: 500; - margin-top: 2em; -} -.item .date + .headline { - margin-top: .25em; -} -.event-list { - list-style-type: none; - margin-left: 0; - padding-left: 0; -} -.event-list > li { - margin-bottom:1.5em; -} -.event-list .date { - font-weight: bold; - margin-bottom: 0; - text-transform: uppercase; -} -.event-list .event { - font-weight: bold; - line-height:1.3; - margin-bottom: 0; -} -.event-list .location { - line-height:1.3; - margin-bottom: 0; -} -.event-list .addtocalendar > a { - text-transform: uppercase; - font-size: small; -} -div.event { - margin-bottom:10px; -} -.marketing-stack { - display: table; - margin-bottom: 2em; - min-height:555px; - text-align: center; -} -.marketing-stack > div { - display: table-row; -} -.marketing-stack > div > div { - display: table-cell; -} -.marketing-stack > div:first-child > div { - vertical-align: top; -} -.marketing-stack > div:last-child > div { - vertical-align: bottom; -} -@media(min-width:768px) { - .marketing-stack .img-fluid { - width:100%; - } -} -.media-block { - margin-top: 1em; - margin-bottom: 1em; - font-size:1rem; -} -.media-block:after { - clear:both; -} -.media-block h4 { - margin:0.25em 0; -} -.media-block .header, .media-block h2.header, .media-block h3.header, .media-block h4.header, .media-block h5.header, .media-block h6.header { - margin-top:0; -} -.media-block img + .header, .media-block img + h2.header, .media-block img + h3.header, .media-block img + h4.header { - margin-top:1em; -} -.media-block .more a { - text-decoration: none; -} -.media-block .more a:hover { - text-decoration: underline; -} -.media-block img + ul, .media-block img + ol, .media-block img + p { - margin-top: 0.5em; -} -.link-tile { - text-decoration: none; -} -.link-tile { - display: block; -} -.link-tile:hover { - text-decoration: none; -} -.link-tile a { - text-decoration: none; -} -.link-tile a:hover { - text-decoration: none; -} -.link-tile:hover h2, .link-tile:hover h4 { - color:#e07700; -} -.footnote { - border-top: 1px solid #ccc; - font-style: italic; - margin-top: 1.62em; - padding-top: 1em; -} -.table-sm-data, .table-data, .table.data { - font-size: 80%; -} -.table-inline, .table.inline { - display: inline; -} -.table-striped > tbody > tr:nth-child(2n+1) > td, .table-striped > tbody > tr:nth-child(2n+1) > th { - background-color: #F5F5F5; -} -caption { - font-size:22px; - text-align:left; - border-bottom: 3px solid #52BFFF; - color: #004677; - caption-side: top; - padding:0; -} -table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > td:first-child::before, table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > th:first-child::before { - background-color:#0079c2 !important; -} -#scrollUp { - bottom: 0; - right: 0; - padding: 10px 20px; - background-color: #0079c2; - color: #fff; - text-decoration: none; -} -.navbar { - padding:0; -} -.dropdown-toggle::after { - display:none; -} -@media (min-width:768px) { - .searchbar-toggle { - display: none; - } -} -.program-header .navbar .navbar-collapse { - border: none; -} -@media (min-width: 768px) { - .program-header .navbar .navbar-collapse { - border-top: 1px solid #d1d5d8; - } -} -@media (min-width: 992px) { - .program-header .navbar .navbar-collapse { - border:none; - } - .program-header .navbar .navbar-collapse.xl-row { - border-top: 1px solid #d1d5d8; - } - .program-header .navbar .navbar-collapse.rows { - border-top: 1px solid #d1d5d8; - } -} -@media (min-width: 1200px) { - .program-header .navbar .navbar-collapse.xl-row { - border-top:none - } -} -.application .navbar-light .navbar-nav .dropdown-menu, .program-header .navbar-light .navbar-nav .dropdown-menu { - left:auto; - right:0; - white-space: nowrap; -} -.application .navbar-light .navbar-toggler, .program-header .navbar-light .navbar-toggler { - border: none; -} -.navbar-toggle-label { - font-size: 0.8em; - color: #fff; -} -#app-menu, #program-menu { - background-color: #5e6a71; - color:#fff; - width: 100%; - position: relative; -} -#app-menu, #program-menu:hover { - background-color: #0079c2; -} -@media (min-width:768px) { - #app-menu, #program-menu { - width:auto - } -} -#app-menu, #program-menu:before { - content:""; - background-color: #5e6a71; - position: absolute; - height: 100%; - width: 4000px; - left: -2000px; - z-index: -1; -} -#app-menu, #program-menu:hover:before { - background-color: #0079c2; -} -.custom-toggler .navbar-toggler-icon { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgb(255,255,255)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E"); -} -.navbar-wrapper { - min-height: 50px; -} -.navbar-wrapper a { - text-decoration: none; -} -.navbar-wrapper.corporate-topnav .container { - border-top:none; -} -@media (min-width:768px) { - .navbar-wrapper .container { - border-top: 1px solid #d1d5d8; - } - .navbar-toggler { - display: none; - } -} -.navbar-light .navbar-nav > li > a { - border-top:3px solid transparent; - color: #5e6a71; - padding-top: 10px; - padding-bottom: 10px; - line-height:30px; -} -@media (min-width:768px) { - .navbar-light .navbar-nav > li > a { - text-transform: none; - border-top:3px solid transparent; - background-color: transparent; - } -} -.application .navbar-light .navbar-nav > li > a, .program-header .navbar-light .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; - border-top:3px solid transparent; -} -.application .navbar-light .navbar-nav > li > a:hover, .application .navbar-light .navbar-nav > li > a:focus, .application .navbar-light .navbar-nav > li.active > a:hover, .application .navbar-light .navbar-nav > li.active > a:focus, .program-header .navbar-light .navbar-nav > li > a:hover, .program-header .navbar-light .navbar-nav > li > a:focus, .program-header .navbar-light .navbar-nav > li.active > a:hover, .program-header .navbar-light .navbar-nav > li.active > a:focus { - background-color: #0B5E90; - border-top: 3px solid transparent; - color: #fff; -} -@media (min-width:768px) { - .application .navbar-light .navbar-nav > li.active > a, .application .navbar-light .navbar-nav > li > a:hover, .application .navbar-light .navbar-nav > li > a:focus, .application .navbar-light .navbar-nav > li.active > a:hover, .application .navbar-light .navbar-nav > li.active > a:focus, .program-header .navbar-light .navbar-nav > li.active > a, .program-header .navbar-light .navbar-nav > li > a:hover, .program-header .navbar-light .navbar-nav > li > a:focus, .program-header .navbar-light .navbar-nav > li.active > a:hover, .program-header .navbar-light .navbar-nav > li.active > a:focus { - background-color: #5E6A71; - } -} -.navbar-light .navbar-nav > li > a .fa-angle-down:before { - content: "\f107"; -} -.navbar-light .navbar-nav > li.show > a .fa-angle-down:before { - content: "\f106"; -} -@media(min-width:768px) { - .application .navbar-light .navbar-nav > li.show > a, .program-header .navbar-light .navbar-nav > li.show > a { - border-top:3px solid transparent; - } -} -.application .navbar-light .navbar-nav > li.show > a:hover, .application .navbar-light .navbar-nav > li.show > a:focus, .program-header .navbar-light .navbar-nav > li.show > a:hover, .program-header .navbar-light .navbar-nav > li.show > a:focus { - background-color: #0B5E90; - color: #fff; -} -@media(min-width:768px) { - .application .navbar-light .navbar-nav > li.show > a:hover, .application .navbar-light .navbar-nav > li.show > a:focus, .program-header .navbar-light .navbar-nav > li.show > a:hover, .program-header .navbar-light .navbar-nav > li.show > a:focus { - background-color: #5E6A71; - } -} -.application .navbar-light .navbar-nav .show .dropdown-menu > li > a, .program-header .navbar-light .navbar-nav .show .dropdown-menu > li > a { - background-color: #282e2e; - border-bottom: 1px solid #000; - color: #62d2ff; - padding-top:10px; - padding-bottom:10px; -} -@media(min-width:768px) { - .application .navbar-light .navbar-nav .show .dropdown-menu > li > a, .program-header .navbar-light .navbar-nav .show .dropdown-menu > li > a { - background-color: #5E6A71; - border-bottom: 1px solid #4B545A; - color: #fff; - } -} -.application .navbar-light .navbar-nav .show .dropdown-menu > li > a:hover, .application .navbar-light .navbar-nav .show .dropdown-menu > li > a:focus, .program-header .navbar-light .navbar-nav .show .dropdown-menu > li > a:hover, .program-header .navbar-light .navbar-nav .show .dropdown-menu > li > a:focus { - background-color: #0B5E90; - color: #fff; -} -.application .navbar-light .navbar-nav .show .dropdown-menu > li > a .fa-home, .program-header .navbar-light .navbar-nav .show .dropdown-menu > li > a .fa-home { - position: absolute; - right:10px; - top:15px; -} -.application .navbar-light .navbar-nav .show .dropdown-menu > li > a, .program-header .navbar-light .navbar-nav .show .dropdown-menu > li > a { - position: relative; -} -.application .navbar-light .navbar-nav .dropdown > ul ul, .program-header .navbar-light .navbar-nav .dropdown > ul ul { - padding-left:0; - list-style-type: none; -} -.application .navbar-light .navbar-nav .dropdown > ul ul li, .program-header .navbar-light .navbar-nav .dropdown > ul ul li { - background-color: #282e2e; -} -.application .navbar-light .navbar-nav .dropdown > ul ul a, .application .navbar-light .navbar-nav .dropdown > ul ul a:visited, .program-header .navbar-light .navbar-nav .dropdown > ul ul a, .program-header .navbar-light .navbar-nav .dropdown > ul ul a:visited { - color: #62d2ff; - display: block; - text-decoration: none; - padding-left:40px; - padding-top:10px; - padding-bottom:10px; -} -.application .navbar-light .navbar-nav .dropdown > ul ul a:hover, .program-header .navbar-light .navbar-nav .dropdown > ul ul a:hover { - background-color: #0B5E90; - color: #fff; -} -.navbar, .navbar-nav, .navbar-collapse { - border:0; - margin-bottom:0; - min-height: 0; -} -ul.navbar-nav { - margin-top:0; - margin-bottom: 0; -} -ul.dropdown-menu { - border:0; - padding-top: 0; - padding-bottom:0; - margin-top:0; -} -.corporate-topnav .container { - padding-left: 0; - padding-right: 0; -} -@media (min-width:768px) { - .corporate-topnav .container { - padding-left: 15px; - padding-right: 15px; - } -} -.corporate-topnav .navbar { - padding: 0.5rem 1rem 0 1rem; -} -.navbar-wrapper.corporate-topnav { - border-bottom: 1px solid #d1d5d8; -} -.corporate-topnav .navbar-inverse { - text-align: center; - background-color: transparent; -} -.corporate-topnav .navbar-expand .navbar-nav > li > a { - display: block; - font-size: 0.75em; - padding-left: 0.5em; - padding-right: 0.5em; - text-transform: none; -} -@media(min-width: 576px) { - .corporate-topnav .navbar-expand .navbar-nav > li > a { - font-size: 0.8em; - padding-left: 0.8em; - padding-right: 0.8em; - } -} -.corporate-topnav .navbar-expand .navbar-nav > li > a { - background-color: transparent; -} -.corporate-topnav .navbar-expand .navbar-nav > li > a:hover, .corporate-topnav .navbar-expand .navbar-nav > li > a:focus { - background-color:#0079c2; - color: #fff; -} -.navbar-light .navbar-nav.ml-auto .nav-link { - color: #0079C2; -} -.navbar-light .navbar-nav .nav-link { - color: #5e6a71; - background-color: #ededed; - padding: 15px; -} -.navbar-light .navbar-nav .active > .nav-link, .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .show > .nav-link { - background-color:#0079c2; - color: #fff; -} -@media(min-width:992px) { - .navbar-wrapper.corporate-topnav { - margin-top:-17px; - } -} -.corporate-topnav .navbar-expand .navbar-nav > li.active > a, .corporate-topnav .navbar-expand .navbar-nav > li.active > a:hover { - background-color:#0079c2; -} -.corporate-topnav .navbar-expand .navbar-nav > li.open > a { - background-color: #0079c2; -} -.corporate-topnav .navbar-expand .navbar-nav .show .dropdown-menu > li > a { - background-color: #5E6A71; - border-bottom: 1px solid #4B545A; - display: block !important; - color: #fff; -} -@media(min-width:768px) { - .corporate-topnav .navbar-expand .navbar-nav .show .dropdown-menu > li > a { - background-color: #5E6A71; - border-bottom: 1px solid #4B545A; - color: #fff; - } -} -.corporate-topnav .navbar-expand .navbar-nav .show .dropdown-menu > li > a:hover, .corporate-topnav .navbar-expand .navbar-nav .show .dropdown-menu > li > a:focus { - background-color: #0B5E90; - color: #fff; -} -@media (min-width:768px) { - .corporate-topnav .navbar-expand .navbar-nav > li > a { - font-size: 1em; - } -} -.corporate-topnav .navbar-expand .navbar-nav li.dropdown { - position: static; -} -.corporate-topnav .navbar-expand .navbar-nav .show .dropdown-menu { - background-color: #5E6A71; - border-top:0; - font-size: 1em; - width: 100%; -} -@media (min-width:768px) { - .corporate-topnav .navbar-expand .navbar-nav .show .dropdown-menu { - display:block; - left:auto; - width:auto; - } -} -.banner-logo { - width: 100%; - border-bottom: none; - min-height:60px; -} -header .logo { - background: url('client/img/nrel-logo-web.svg') no-repeat center; - height: 75px; - background-size: 190px; - margin: 0 0 10px 0; -} -.program-header { - background-color: transparent; -} -.program-header .navbar-inverse { - border-top: 1px solid #d1d5d8; -} -.program-header .container { - padding-right: 0; - padding-left: 0; -} -header.notopnav {border-bottom: 1px solid #d1d5d8; margin:0 0 1.5em 0;} -@media only screen and (min-width : 480px) { - header .logo { - height: 85px; - background-size: 214px; - margin: 0 0 10px 0; - } -} -@media (min-width: 768px) { - header .logo { - background: url('client/img/nrel-logo-web.svg') no-repeat left; - height:130px; - background-size: 328px; - } - .program-header .container { - padding-right: 15px; - padding-left: 15px; - } - .banner-logo { - min-height:92px; - } - .program-header { - background-color: #ededed; - } -} -@media only screen and (min-width : 1200px) { - .program-header .navbar-inverse { - border-top: none; - } -} -.searchbar-toggle { - border: 1px solid #5e6a71 ; - border-radius:5px; - color: #5e6a71 ; - margin:15px; - padding: 8px 6px 8px 6px; - position: absolute; - right: 0; - top:0px; -} -@media (min-width: 768px) { - #searchbar-collapse { - background-color: transparent; - margin-left: 0px; - margin-right: 0px; - } - #searchbar-collapse:before { - background-color:transparent; - } -} -@media (min-width: 768px) { - #searchbar-collapse:after { - display: none; - } -} -.searchbar-form { - padding-top: 7px; - padding-bottom: 7px; -} -@media (min-width: 768px) { - .searchbar-form { - background-color: transparent; - float:right; - } -} -.searchbar-form button { - background-color: #D1D5D8; - border-color: #D1D5D8; - color: #000; - height:40px; - text-transform: uppercase; -} -@media (min-width: 768px) { - header .navbar-collapse, header .navbar-form { - padding-left:0; - padding-right: 0; - } -} -header nav.navbar { - border: none; - box-shadow: none; - text-align: center; -} -.searchbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; -} -.searchbar-form .form-control { - display: inline-block; - width: 200px; - vertical-align: middle; - box-shadow: none; - height:40px; -} -@media (max-width: 350px) { - .searchbar-form .form-control { - width: 160px; - } -} -#page-tools { - margin: 2em 0; -} -footer { - background-color: #F5F5F5; - color: #000; - font-size: 14px; - font-weight: 400; - line-height: 1.2; - padding-bottom: 5em; -} -footer .footertop { - background-color: #D1D5D8; - padding: 2em 0; -} -footer .global div {margin: 1em 0 0 0; line-height:1.3;} -@media (min-width: 992px) { - footer .global div {margin: 0 2em;} - footer .global div:first-child {margin: 0 2em 0 0;} - footer .global div:last-child {margin: 0 0 0 2em;} -} -footer .footerbottom { - padding-top:2em; -} -footer .globalsecondary div, footer .nrel-attr {font-size: 0.75rem;} -footer .nrel-attr a:link, footer .nrel-attr a:visited {text-decoration:underline;} -footer .nrel-attr a:hover, footer .nrel-attr a:active {color: #0071b8;} -footer .header { - border-bottom:1px solid #5a5b5b; - font-size: 14px; - margin-top: 1em; - text-transform: uppercase; -} -footer .only-nrel { - font-size: 10px; -} -footer .social-links { - font-size: 14px; - margin:0 0 1em 0; -} -footer .social-links li { - padding: 0; -} -footer a, footer a:visited { - color: #000; - text-decoration: none; -} -footer a:hover, footer a:active { -color:#000; -text-decoration: underline; -} -footer .logo { - display: block; - max-width:100px; - margin-top: 1em; -} -footer ul { - list-style-type: none; - margin-left:0; - margin-bottom: 0; - padding-left: 0; -} -footer ul li { - line-height: 1.25em; - margin-bottom: 0.55em; -} -footer ul.dotlist li:before { - content: "\00a0 \00b7 \00a0"; -} -footer ul.dotlist li:first-child:before { - content: ""; -} -@media(min-width:768px) { - footer .ft-border-right { - border-right: 1px solid #5a5b5b; - } - footer .social-links { - font-size: 14px; - margin:0; - } - footer .header { - margin-top: 0; - } -} -#perPage { - margin-left: 10px; -} -.results-header .form-inline input[type=text] { - width: 99%; -} -@media(min-width:768px){ - .results-header .form-inline [class^="col-"] { - padding-right:0; - } - .results-header .form-inline [class^="col-"]+[class^="col-"] { - padding-left: 0; - } -} -.results-header a { - text-decoration: none; -} -.results-header a:hover { - text-decoration: underline; -} -.results-header p, .results-header label { - font-size: 18px; -} -.results-header .results-notes { - margin: 1.5em 0; -} -.results-header .results-notes p { - margin:0; -} -.results-header .results-total p { - margin-bottom: 0; -} -.results-header .highlighted { - color: #c60; - font-style: italic; - font-weight: bold; -} -.results-list { - margin-top:1.5em; - padding-top:1.5em; - border-top: 1px solid #ccc; -} -.results-highlighted { - font-weight: bold; -} -.results-item { - margin-bottom: 1.5em; - padding-bottom: 1.5em; - border-bottom: 1px solid #ccc; - text-decoration: none; -} -.results-item .summary { - color: initial; -} -.results-item .footer { - color:#5E6A71; -} -.results-pager .pagination { - margin: 0; -} -.results-pager p { - padding-top:.5em; -} -.results-pager a { - text-decoration: none; -} -.results-pager a:hover { - text-decoration: underline; -} -.results-pager .glyphicon { - font-size: 75%; -} -figure { - display: table; - margin:1em auto; -} -figure img { - display: block; -} -figcaption { - display: table-caption; - caption-side: bottom; - font-size: 12px; - color: #757575; - margin-top: .5em; -} -.hpf6df8a6f-3fb6-4eba-b28d-c99912998305{ - display:none; - margin-left:-1000px; -} -.hpe2cd04f6-da55-4773-80a2-c25c4ca203c4{ - display:none; - margin-left:-1000px; -} -.content-list-widget { - font-weight: 400; - font-size: 1.1em; - line-height: 1.2; - margin-bottom: 3em; -} -.content-list-widget .header-box { - background-color: #ededed; - border-bottom: 3px solid #00b5ef; -} -.content-list-widget .header-box .title { - color: #000; - font-size: 1.35em; - margin-bottom: 0; - padding: .8em; - text-transform: none; -} -.content-list-widget .header-box .title span { - font-weight: 500; - text-transform:uppercase; - color:#0079c5; -} -.content-list-widget .content-box { - border: 1px solid #D1D5D8; - padding: 1em; - margin: 0; -} -.content-list-widget .list { - padding-left: 1.35em; -} -.content-list-widget .title+.list { - border-top: 1px solid #D1D5D8; - margin-top: .5em; - padding-top: .75em; -} -.content-list-widget .list, .content-list-widget .btn-link { - text-decoration: none; - text-transform: none; -} -.content-list-widget .btn-link:visited { - color:#0079c2; -} -.content-list-widget .text-left .btn-link { - margin-left: 0; - padding-left: 0; -} -.content-list-widget .list .headline, .content-list-widget .list .date { - margin-bottom: 0; -} -.content-list-widget .footnotes{ - border-top: 1px solid #D1D5D8; - padding-top: 1em; -} -.content-list-widget .text-right { - text-align: inherit; -} -@media (min-width:768px) { - .content-list-widget .text-right { - text-align: right; - } - .addthis_inline_share_toolbox_hq4v {margin-left:0px;} -} -.bg-blue { - background-color:#0079C2; - border-bottom:none; -} -.blogpost h2 {margin:0.5em 0;} -.addthis_inline_share_toolbox_hq4v {margin-left:-10px;} -blockquote {color: #757575; border-top: 5px solid #00A4E4; border-bottom: 5px solid #00A4E4; padding: 1em 0;} -blockquote.green {color: #757575; border-top: 5px solid #8cc63f; border-bottom: 5px solid #8cc63f; padding: 1em 0;} \ No newline at end of file diff --git a/frontend/client/css/nrel.complete.min.css b/frontend/client/css/nrel.complete.min.css deleted file mode 100755 index 5e1ba75..0000000 --- a/frontend/client/css/nrel.complete.min.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";body, html {overflow-x:hidden;}body {background-color: transparent;color: #222;font-family:'Roboto', 'Helvetica Neue', Helvetica, sans-serif;font-weight: 400;line-height: 1.65;padding: 0;}h1 {color:#222;font-weight: 300;font-size: 2em;margin-top: 0;}@media (min-width: 768px) {h1 {font-size: 2.15em;}}h2 {color: #e07700;font-weight: 300;font-size: 1.75em;}h3 {color:#222;font-weight: 400;font-size: 1.5em;}h4 {color: #222;font-size: 1.375em;font-weight: 400;}h5 {color:#222;font-weight: 400;font-size: 1.25em;}h6 {color:#222;font-weight: 400;font-size: 1.125em;}a {color: #0071b8;}a:visited {color: #9650b9;}a:hover, a:active {color: #0071b8;text-decoration: underline;}.blue a:visited {color: #0071b8;}.green a:visited {color: #5D9732;}a.tile {display: block;}a.tile:hover {text-decoration: none;}a.fa {text-decoration: none;}a.fa:hover {text-decoration: underline;}h1 a[href]::after, h2 a[href]::after, h3 a[href]::after, h4 a[href]::after, h5 a[href]::after, h6 a[href]::after {font-family: FontAwesome;content: "\00a0\f054";display: inline;font-size: 0.65em;}a[href]::after {font-family: FontAwesome;font-size: 0.85em;}h1 a[href$=".pdf"]::after, h2 a[href$=".pdf"]::after, h3 a[href$=".pdf"]::after, h4 a[href$=".pdf"]::after, h5 a[href$=".pdf"]::after, h6 a[href$=".pdf"]::after, a[href$=".pdf"]::after {content: "\00a0\f1c1";display: inline;}h1 a[href$=".doc"]::after, h2 a[href$=".doc"]::after, h3 a[href$=".doc"]::after, h4 a[href$=".doc"]::after, h5 a[href$=".doc"]::after, h6 a[href$=".doc"]::after, a[href$=".doc"]::after {content: "\00a0\f1c2";display: inline;}h1 a[href$=".xls"]::after, h2 a[href$=".xls"]::after, h3 a[href$=".xls"]::after, h4 a[href$=".xls"]::after, h5 a[href$=".xls"]::after, h6 a[href$=".xls"]::after, a[href$=".xls"]::after{content: "\00a0\f1c3";display: inline;}h1 a[href$=".ppt"]::after, h2 a[href$=".ppt"]::after, h3 a[href$=".ppt"]::after, h4 a[href$=".ppt"]::after, h5 a[href$=".ppt"]::after, h6 a[href$=".ppt"]::after, a[href$=".ppt"]::after {content: "\00a0\f1c4";display: inline;}h1 a[href$=".jpg"]::after, h2 a[href$=".jpg"]::after, h3 a[href$=".jpg"]::after, h4 a[href$=".jpg"]::after, h5 a[href$=".jpg"]::after, h6 a[href$=".jpg"]::after, h1 a[href$=".png"]::after, h2 a[href$=".png"]::after, h3 a[href$=".png"]::after, h4 a[href$=".png"]::after, h5 a[href$=".png"]::after, h6 a[href$=".png"]::after, h1 a[href$=".gif"]::after, h2 a[href$=".gif"]::after, h3 a[href$=".gif"]::after, h4 a[href$=".gif"]::after, h5 a[href$=".gif"]::after, h6 a[href$=".gif"]::after, a[href$=".jpg"]::after, a[href$=".png"]::after, a[href$=".gif"]::after {content: "\00a0\f1c5";display: inline;}h1 a[href$=".mp4"]::after, h2 a[href$=".mp4"]::after, h3 a[href$=".mp4"]::after, h4 a[href$=".mp4"]::after, h5 a[href$=".mp4"]::after, h6 a[href$=".mp4"]::after, a[href$=".mp4"]::after {content: "\00a0\f03d";display: inline;}h1 a[href$=".txt"]::after, h2 a[href$=".txt"]::after, h3 a[href$=".txt"]::after, h4 a[href$=".txt"]::after, h5 a[href$=".txt"]::after, h6 a[href$=".txt"]::after, a[href$=".txt"]::after {content: "\00a0\f15b";display: inline;}h1 a[href$=".zip"]::after, h2 a[href$=".zip"]::after, h3 a[href$=".zip"]::after, h4 a[href$=".zip"]::after, h5 a[href$=".zip"]::after, h6 a[href$=".zip"]::after, a[href$=".zip"]::after {content: "\00a0\f1c6";display: inline;}img a[href]::after, img a[href$=".pdf"]::after, img a[href$=".doc"]::after, img a[href$=".xls"]::after, img a[href$=".ppt"]::after, img a[href$=".jpg"]::after, img a[href$=".png"]::after, img a[href$=".gif"]::after, img a[href$=".mp4"]::after, img a[href$=".txt"]::after, img a[href$=".zip"]::after {content:none;}a.noicon::after {content:none;}#content {padding-bottom: 5em;}@media (min-width: 768px) {body.layout-12 > #page-tools .row > .col-sm-9 {width: 100%;}body.layout-12 > #page-tools .row > .col-sm-offset-3 {margin-left:0;}}.list-headline {border-bottom: 1px solid #000;padding-bottom: 10px;}.lead {font-weight: 300;font-size: 1.15em;line-height: 1.4em;}.banner-site {font-size: 1.5rem;line-height: 1.2em;font-weight: 400;margin: 0 0 .3em;text-align: center;text-decoration: none;}@media (min-width: 768px) {.banner-site {font-size: 2rem;font-weight: 300;text-align: left;margin: 5px 0;}}.banner-site a, .banner-site a:hover {color: #000;text-decoration: none;}.banner-site a:visited {color: #4B545A;text-decoration: none;}.navbar-light .navbar-brand {color:#4B545A;}.breadcrumb {background-color: transparent;font-size: 14px;margin-bottom: 1em;padding-left:0;}.breadcrumb > li + li:before {content: "\00BB";padding: 0 5px;color: #000;}.breadcrumb a, .breadcrumb a:visited {color: #0071b8;text-decoration: none;}nav.breadcrumb.invisible {margin-top: -50px;}.hide {display: none !important;}.sidenav {margin: 2em 0;}.sidenav ul.nav li {font-weight: 400;line-height: 1.3;width:100%;}.sidenav a, .sidenav a:visited {color:#0079C2;text-decoration: none;}.nav>li>a:hover, .nav>li>a:focus {background-color: transparent;}@media (min-width: 992px) {.sidenav {margin: 0.6em 0;}}.sidenav > ul.nav > li:first-child > a {border-top: 3px solid #D1D5D8;}.sidenav > ul.nav > li > a {background-color: transparent;border-bottom:1px solid #d1d5d8;border-top: 0;}.sidenav > ul.nav > li > a:hover, .sidenav > ul.nav > li > a:focus, .sidenav > ul.nav > li.active > a, .sidenav > ul.nav > li.active > a:visited {background-color: #0079c2;color: #fff;}.sidenav > ul.nav ul.nav li > a {padding-left: 30px;border-bottom: 1px dashed #d1d5d8;}.sidenav > ul.nav ul.nav li:last-child > a {border-bottom: 1px solid #d1d5d8;}.sidenav > ul.nav ul.nav li > a:hover, .sidenav > ul.nav ul.nav li > a:focus, .sidenav > ul.nav ul.nav li.active > a, .sidenav > ul.nav ul.nav li.active > a:visited {background-color: #E5F1F9;color: #0064A2;}.sidenav ul.nav ul.nav ul.nav li {color: #0079c2;display: list-item;}.sidenav ul.nav ul.nav ul.nav li > a:before {content: '\25A0\00a0';vertical-align: text-bottom;}.sidenav ul.nav ul.nav ul.nav li > a {border-bottom: none;margin-left: 1em;text-indent: -0.85em;}.sidenav ul.nav ul.nav ul.nav li:last-child > a {border-bottom: 1px dashed #d1d5d8;}.sidenav ul.nav ul.nav ul.nav li:hover, .sidenav ul.nav ul.nav ul.nav li:focus, .sidenav ul.nav ul.nav ul.nav li.active {background-color: #E5F1F9;color: #0064A2;}h1.green, h2.green, h3.green, h4.green, h5.green, h6.green, p.green {color: #5D9732;}div.green {background-color: #5D9732;}h1.grey, h1.gray, h2.grey, h2.gray, h3.grey, h3.gray, h4.grey, h4.gray, h5.grey, h5.gray, h6.grey, h6.gray, p.grey, p.gray {color: #5E6A71;}div.grey, div.gray {background-color: #5E6A71;color: #fff;}h1.blue, h2.blue, h3.blue, h4.blue, h5.blue, h6.blue, p.blue {color: #0079c2;}div.blue {background-color: #0079C2;color: #fff;}h1.black, h2.black, h3.black, h4.black, h5.black, h6.black, p.black {color: #000;}div.black {background-color: #000;color: #fff;}h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {text-decoration: none;}.allcaps {text-transform: uppercase;}.nomargin + h2, .nomargin + h3, .nomargin + h4, .nomargin + h5, .nomargin + h6 {margin-top: 0;}.smaller {font-size:90%;}.card {display:block;}.bg-blue .card-title {color:#fff;}.headerlink-cr::after {font-family: FontAwesome;content: "\00a0\f054";display: inline;font-size: 0.65em;}.card-header {background-color: #fff;border-bottom: 6px solid #E66D0A;}.card-header h2 {font-size: 1.5em;font-weight: 400;margin:0;}.card-header h2 a:link, .card-header h2 a:visited, .card-header h3 a:link, .card-header h3 a:visited {color:#212121;}.card-header h2 a:hover, .card-header h2 a:focus, .card-header h3 a:hover, .card-header h3 a:focus {color:#cc6600;}.card-header.orange {background-color: #fff;border-bottom: 6px solid #E66D0A;}.card-text {line-height: 1.35em;}.card-title {margin-bottom:0;}.card-footer {background-color: #fff;}.fw-feat {background-color: #fff;background-clip: border-box;border: 1px solid rgba(0,0,0,.125);border-radius: .25rem;width:100%;}.fw-feat h3 a:link, .fw-feat h2 a:link, .fw-feat h3 a:visited, .fw-feat h2 a:visited {color:#000;text-decoration: none;}.fw-feat h3 a:hover, .fw-feat h2 a:hover, .fw-feat h3 a:active, .fw-feat h2 a:active {color:#e07700;text-decoration: none;}.fw-feat-info {padding:1em 1em 0 1em;border-bottom: 6px solid #E66D0A;border-top:none;}@media only screen and (min-width : 1200px) {.overlay-text {top: 65px;}.fw-feat-info {border-bottom:none;border-top: 6px solid #E66D0A;}}.card.bg-secondary .card-body {border-top: 6px solid #e07700;}.card.bg-secondary .card-body h2, .card.bg-secondary .card-body h3, .card.bg-secondary .card-body h4 {color:#F5F5F5;}.orange-card .card-body {border-top: 6px solid #e07700;font-size: 1rem;}.orange-card h3 {font-weight:400;}.orange-card h4 a:link, .orange-card h4 a:visited {color:#e07700;font-weight:300;}.orange-card h4 a:hover, .orange-card h4 a:active {color:#0071b8;font-weight:300;}.img-feat-orange {background: rgba(255, 255, 255, 0.8);border-bottom: 6px solid #E66D0A;position: absolute;bottom: 0;left: 0;padding: 1em;margin:0;width: 100%;}.img-feat-orange a:link, .img-feat-orange a:visited {color:#000;}.img-feat-orange a:active, .img-feat-orange a:hover {color:#e07700;}.border-danger {border-color:#D9531E !important;}.border-danger .card-header {background-color: #D9531E;border-bottom:none;}.border-primary {border-color:#0079C2 !important;}.border-primary .card-header {background-color: #0079C2;border-bottom:none;}.border-success {border-color:#5D9732 !important;}.border-success .card-header {background-color: #5D9732;border-bottom:none;}.border-warning {border-color:#F7A11A !important;}.border-warning .card-header {background-color: #F7A11A;border-bottom:none;}.border-danger .card-header h3, .border-primary .card-header h3, .border-success .card-header h3, .border-warning .card-header h3 {color:#fff;}.card-title img {width: 30px;margin-bottom:5px;margin-right: 6px;}.visionbox.main {background-color:#0079C2;color:#fff;}.visionbox.ceem {background-color:#FFC432;color:#3A4246;}.visionbox.e2m {background-color:#933C06;color:#fff;}.visionbox.iep {background-color:#5D9732;color:#fff;}.visiontext {padding:1em;}.visionlink {font-weight: 300;font-size:1.35em;line-height:1.1em;}.main .visionlink a:link, .main .visionlink a:visited, .e2m .visionlink a:link, .e2m .visionlink a:visited, .iep .visionlink a:link, .iep .visionlink a:visited {color:#fff;}.ceem .visionlink a:link, .ceem .visionlink a:visited {color:#3A4246;}.visionicon {height:90px;margin:0.35em auto;}.vision h3 a:link, .vision h3 a:visited {color:#333;}.vision h3 a:hover, .vision h3 a:active {color:#333;text-decoration:underline;}.iep-top {background-color:#8CC63F;text-align:center;}.iep-text {border:1px solid #8CC63F;padding:1em;}.e2m-top {background-color:#D9531E;text-align:center;}.e2m-text {border:1px solid #D9531E;padding:1em;}.ceem-top {background-color:#F7A11A;text-align:center;}.ceem-text {border:1px solid #F7A11A;padding:1em;}.nrelvision-top {background-color:#E9ECEF;text-align:center;}.nrelvision-text {border:1px solid #E9ECEF;padding:1em;}@media (max-width: 768px) {.card-deck-wrapper {margin-right:0;margin-left:0;}.card-deck {display: block;width: 100%;margin-bottom: .75rem;table-layout: fixed;border-spacing: 1.25rem 0;}.card-deck .card {display: block;margin-bottom: .75rem;vertical-align: top;}}#accordion .card, .accordion .card, [id^="accordion_"] .card, .accordion .card {border: 1px solid #0079C2;border-radius: 0;margin: -1px -1px 0.5rem -1px;}#accordion .card-header, .accordion .card-header, [id^="accordion_"] .card-header, .accordion .card-header {padding: 0;margin: 0;border-radius: 0;border-bottom: none;}#accordion .card-header .btn, .accordion .card-header .btn, [id^="accordion_"] .card-header .btn, .accordion .card-header .btn {text-transform: none;font-size: 1.3rem;font-weight: 300;width:100%;text-align: left;border-radius: 0;line-height: 1;padding: 0.65rem 0.65rem 0.65rem 40px;}#accordion .card-header .btn-link:hover, [id^="accordion_"] .card-header .btn-link:hover, #accordion .card-header .btn-link:active, [id^="accordion_"] .card-header .btn-link:active, #accordion .card-header .btn-link:focus, [id^="accordion_"] .card-header .btn-link:focus, .accordion .card-header .btn-link:hover, .accordion .card-header .btn-link:active, .accordion .card-header .btn-link:focus {color: #0079C2;text-decoration: none;}#accordion .card-header .btn[aria-expanded="true"], [id^="accordion_"] .card-header .btn[aria-expanded="true"], .accordion .card-header .btn[aria-expanded="true"] {background-color: #0079C2;color: #fff;background-image: url('client/img/icon_minus.svg');background-repeat: no-repeat;background-position: 1% center;background-size: 25px 25px;margin-left: 0px;padding-left: 40px;display: block;}#accordion .card-header .btn[aria-expanded="false"], [id^="accordion_"] .card-header .btn[aria-expanded="false"], .accordion .card-header .btn[aria-expanded="false"] {background-color: #fff;color: #0079C2;background-image: url('client/img/icon_plus_blue.svg');background-repeat: no-repeat;background-position: 1% center;background-size: 25px 25px;margin-left: 0px;padding-left: 40px;display: block;}#accordion .card-header .btn:hover, #accordion .card-header .btn:focus, [id^="accordion_"] .card-header .btn:hover, [id^="accordion_"] .card-header .btn:focus {background-color: #0079C2;color: #fff;background-image: url('/_resources/images/icon_minus.svg');background-repeat: no-repeat;background-position: 1% center;background-size: 25px 25px;}.accordion > .card:not(:first-of-type):not(:last-of-type), .accordion > .card:first-of-type {border-bottom: 1px solid #0079C2;}.nrel-list .card-header h3 a:hover, .nrel-list .card-header h3 a:focus {color: #303030;text-decoration:underline;}.nrel-list .card-header span a:link, .nrel-list .card-header span a:visited {color:#212121;text-decoration:underline;font-size: 0.9em;}.nrel-list .card-header span a:hover, .nrel-list .card-header span a:focus {color:#F5F5F5;}ul.list-group>li:nth-child(odd){background-color:#F5F5F5;}.nrel-list .card-header {background-color: #80D0FF;border-bottom: 1px solid rgba(0,0,0,.125);}.nrel-list .card-header h3 {font-size: 1.35em;font-weight:400;margin:0;}.nrel-list .list-group-item .date {font-size: 0.85em;margin: 0.3em 0 0 0;font-weight: 300;}.nrel-list .list-group-item p, .list-group-item {font-weight: 400;line-height: 1.2;margin:0;}.feature-teaser {background-color: #F5F5F5;padding: 1.5em;height:100%;}.feature-teaser.ft-blue {background-color: #52BFFF;color:#333;}.feature-teaser h1 {font-size: 2em;}.feature-teaser h1 strong {font-weight: bold;}.feature-teaser p.lead {font-size: 1rem;}.feature-teaser.ft-blue a:link, .feature-teaser.ft-blue a:visited {color: #000;}@media (min-width: 768px) {.feature-teaser h1{font-size: 3em;}.feature-teaser p.lead {font-size: 1.25rem;}}@media (min-width: 992px) {.feature-teaser h1{font-size: 2em;}.feature-teaser p.lead {font-size: 1rem;}}@media (min-width: 1200px) {.feature-teaser {padding: 2em;}.feature-teaser h1 {font-size: 2.5rem;}.feature-teaser p.lead {font-size: 1.25rem;}}.big-quote::before {color: #ccc;font-family: serif;font-size: 3em;line-height: 0;vertical-align: text-bottom;content:"\201C";margin-right:3px;float: left;margin-top: -25px;padding-top: 45px;}.header-description {color:#757575;font-size: 1rem;font-weight: 400;margin-top: 0;}h2 .fa, h3 .fa, h4 .fa, h5 .fa, h6 .fa, .header .fa {font-size: 80%;vertical-align:middle;}.headerlink:after {font-family: FontAwesome;content: "\00a0\f054";display: inline;font-size: 0.65em;}.more, .learn-more {font-weight: 400;}.more a, .more a:visited, .learn-more a, .learn-more a:visited {color:#0071b8;text-decoration: none;}.more a:hover, .learn-more a:hover {text-decoration: underline;}.nav-tabs {margin-top:1em;}.nav-tabs {font-size: 21px;font-weight: 300;}.nav-tabs .nav-link {margin-bottom: -2px;border-bottom: 1px solid #fff;border-radius: 7px 7px 0 0;margin-right:0;background-color: #fff;border-color: #e9ecef;}.nav-tabs .nav-link.active, .nav-tabs .nav-link:hover {border-color: #dee2e6 #dee2e6 #fff;}.nav-tabs .nav-item {margin-bottom: 0;}.tab-pane {padding:2em 1em;}.panel {-webkit-box-shadow: none;box-shadow: none;}.panel-default {border: 1px solid #127BBF;}.panel-body {padding: 15px;}.collapse.in {display: block;}.panel-heading > .panel-title > .accordion-toggle {margin-left:0px;padding-left:40px;display: block;}.panel-heading > .panel-title > .accordion-toggle, .panel-heading > .panel-title > .accordion-toggle:visited {color:#fff;}.panel-heading > .panel-title > .accordion-toggle {background-image: url('client/img/icon_minus.svg');background-repeat: no-repeat;background-position: 1% center;background-size: 25px 25px;}.panel-heading > .panel-title > .accordion-toggle.collapsed {background-image: url('client/img/icon_plus_blue.svg');}.panel-group .panel {margin-bottom: 12px;}.panel-group .panel + .panel {margin-top:1px;}.panel-group .panel, .panel-group .panel-heading {border-radius: 1px;}.panel-group .panel:first-child {border-top-left-radius: 4px;border-top-right-radius: 4px;}.panel-group .panel:last-child {border-bottom-left-radius: 4px;border-bottom-right-radius: 4px;}.panel-heading {padding: 0;cursor: pointer;}.panel-heading h4 {margin: 0;}h4.panel-title a[href]::after {content:"";}.panel-default > .panel-heading {background-color: transparent;color:#fff;}.panel-default > .panel-heading a {display: block;padding: 10px 15px;text-decoration: none;}.panel-default > .panel-heading a:hover {text-decoration: none;color:#fff;}.panel-group.inverse .panel-heading > .panel-title > a.accordion-toggle, .panel-group.inverse .panel-heading > .panel-title > a.accordion-toggle:visited {background-color: #127BBF;color:#fff;}.panel-group.inverse .panel-heading > .panel-title > a.accordion-toggle.collapsed, .panel-group.inverse .panel-heading > .panel-title > a.accordion-toggle.collapsed:visited {background-color: transparent;color: #127BBF;}.content-sandwich:before, .content-sandwich:after {content: " ";display: table;}.content-sandwich:after {clear:both;}.content-sandwich {border-top: 5px solid #ccc;border-bottom: 5px solid #ccc;margin-top: 1.65em;margin-bottom: 1.65em;padding: 1em 0;}.content-sandwich-topper + .content-sandwich {margin-top: 0;}.content-sandwich p {font-size: 16px;font-weight: normal;}.content-sandwich .headline, .content-sandwich .header {font-size: 18px;font-weight: 600;margin-bottom: 0;margin-top: 0;}.content-sandwich .headline ~ p, .content-sandwich .header ~ p, .content-sandwich h1 ~ p, .content-sandwich h2 ~ p, .content-sandwich h3 ~ p, .content-sandwich h4 ~ p, .content-sandwich h5 ~ p, .content-sandwich h6 ~ p {margin-top: 0;}.content-sandwich .item {border-bottom: 1px solid #ccc;padding: 1em 0;}.content-sandwich .item:last-child {border-bottom: none;}.content-sandwich .item p {margin-bottom: 0;}.content-sandwich ul {font-size: 16px;font-weight: normal;}.content-sandwich hr {border-top: 1px solid #ccc;}.content-sandwich img {margin: 0 auto;}.content-sandwich.vertical-aligned {}.content-sandwich.vertical-aligned [class*="col-"] .icon, .content-sandwich.vertical-aligned [class*="col-"] > *:only-child {margin-top: 1.5em;}@media(min-width:768px) {.content-sandwich.vertical-aligned [class*="col-"] .icon, .content-sandwich.vertical-aligned [class*="col-"] > *:only-child {margin-top: .75em;}}@media(min-width:1200px) {.content-sandwich.vertical-aligned [class*="col-"] .icon, .content-sandwich.vertical-aligned [class*="col-"] > *:only-child {margin-top: 1.5em;}}.content-sandwich.quicklinks .icon {margin-top: 1em;}.content-sandwich.quicklinks .header {margin-top: 1em;}@media (min-width: 992px) {.content-sandwich.quicklinks .header {margin-top: 1.65em;}}.bio {padding-bottom: 2em;}.bio:last-child {border-bottom: none;}.bio h3.header-description, .bio h4.header-description, .bio p.header-description {font-size: 1rem;color:#757575;font-weight:400;margin: 0 0 0.25em 0;}.bio p.header {font-size:1.3em;font-weight:300;line-height: 1.2;margin:0 0 0.25em 0;}.bio p.header a[href]::after {font-family: FontAwesome;content: "\00a0\f054";display: inline;font-size: 0.65em;}#staff_wrapper input {margin-bottom:0.5em;}#staff .bg-blue {color: #fff;background-color: #0079C2;}table#staff td {text-align: left;}table#staff td.child ul {padding-left: 1.2em;}table#staff td.child ul li {text-align: left;list-style: none;margin-left: 0;}.feature {border-bottom: 1px solid #000;display: block;margin-bottom:30px;min-height: 250px;text-decoration: none;}@media(min-width:768px){.feature {margin-bottom:12px;}}.row .col-sm-6:last-child .feature.last {border-bottom: none;}@media(min-width:768px){.feature.last {border-bottom: none;}}@media (min-width: 992px){.feature {min-height: 260px;}}@media (min-width: 1200px){.feature {min-height: 290px;}}.feature:hover {text-decoration: none;}.feature:hover .headline {color:#e07700;}.feature .category {color: #5E6A71;font-size: 16px;font-weight: 700;margin-bottom: 5px;margin-top: 10px;text-transform: uppercase;}.feature .headline {color: #0079C2;font-weight: 400;font-size: 1.4em;line-height: 1.2;margin-top:0;}.feature-secondary .link-tile {margin-top: 24px;}.feature-secondary .link-tile + .link-tile {margin-top:24px;}.showcase {opacity: 1;padding-bottom: 2em;padding-top: 2em;}.showcase .caption {background-color: rgba(0,0,0,.8);box-sizing: border-box;color: #fff;font-weight: 300;line-height: 1.1;padding: .5em 1em;position:relative;}.showcase .link-tile, .showcase .link-tile {position: relative;}.showcase .feature-primary .caption, .showcase .feature-secondary .caption {font-size: 30px;}.modal-footer {text-align: left;}@media(min-width:768px){.showcase {height:431px;}.showcase .caption {left: 0;right: 0;bottom: 0;position: absolute;}.feature-secondary .link-tile {margin-top: 0px;}.showcase .feature-primary .caption {font-size: 20px;}.showcase .feature-secondary .caption {font-size: 14px;}}@media(min-width:992px){.showcase {height:545px;}}@media(min-width:1200px){.showcase {height:649px;}.showcase .feature-primary .caption {font-size: 30px;}.showcase .feature-secondary .caption {font-size: 20px;}}.modal.fade .modal-dialog {transform: none !important;-webkit-transition: -webkit-transform 0.3s ease-out;-moz-transition: -moz-transform 0.3s ease-out;-o-transition: -o-transform 0.3s ease-out;transition: transform 0.3s ease-out;}.modal.in .modal-dialog {transform: none !important;}span.required {font-weight: normal;}select, select.form-control {background-image: linear-gradient(#FFF,#E6E6E6);box-shadow: inset 0 1px #FFF,inset 0 0 0 1px rgba(255, 255, 255, 0.5),0 1px 2px rgba(0, 0, 0, 0.1);}.dropdown-menu .divider {width: auto;border-top: none;margin: 9px auto;padding: 0;}a.btn, a.btn:visited, .btn a:hover {color: #fff;text-decoration: none;}a.btn-link, a.btn-link:visited {color: #0079C2;text-decoration: none;}.btn {font-weight: 400;min-height:40px;text-transform: uppercase;line-height: 1.8;}a.btn-default {color:#333;}.btn-default {color: #333;background-color: #fff;border-color: #ccc;}.btn-default:hover, .btn-default:focus, .btn-default:active, .btn-default.active, .open > .dropdown-toggle.btn-default {color: #333;background-color: #e6e6e6;border-color: #adadad;-webkit-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4);-moz-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4);box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4);}.btn-primary {color: #fff;background-color: #0079c2;border-color: #0079c2;}.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .open > .dropdown-toggle.btn-primary {color: #b7d6e9;background-color: #3071a9;border-color: #285e8e;-webkit-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4);-moz-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4);box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4);}.btn-success {color: #fff;background-color: #4c8224;border-color: #4c8224;}.btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .open > .dropdown-toggle.btn-success {color: #d2e3c5;background-color: #3b651c;border-color: #3b651c;-webkit-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4);-moz-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4);box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4);}.btn-info {color: #fff;background-color: #5e6a71;border-color: #5e6a71;}.btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .open > .dropdown-toggle.btn-info {color: #cccccc;background-color: #3d4449;border-color: #3d4449;-webkit-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4);-moz-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4);box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4);}.btn-warning {color: #000;background-color: #f7a11a;border-color: #f7a11a;}.btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .open > .dropdown-toggle.btn-warning {color: #2d1c00;background-color: #b87813;border-color: #b87813;-webkit-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.3);-moz-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.3);box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.3);}.btn-danger {color: #fff;background-color: #933c06;border-color: #933c06;}.btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .open > .dropdown-toggle.btn-danger {color: #dac4b7;background-color: #702e05;border-color: #702e05;-webkit-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4);-moz-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4);box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4);}.btn-long {font-size:16px;height: 38px;line-height: 1.3em;white-space: normal;}.ou-form .btn {display:inline-block;padding:6px 12px;margin-bottom:0;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;border:1px solid transparent;border-radius:4px;color:#fff;text-transform: uppercase;}.ou-form .btn-success:active,.ou-form .btn-success:hover {color: #d2e3c5;background-color: #3b651c;border-color: #3b651c;-webkit-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4);-moz-box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4);box-shadow: inset 0px 2px 2px 0px rgba(50, 50, 50, 0.4);}@media only screen and (min-width : 992px) {.btn-long {height: 80px;}}@media only screen and (min-width : 1200px) {.btn-long {height: 60px;}}select.form-control, input.form-control {height: 40px;}@media(min-width:768px){.row-eq-height {display: -webkit-box;display: -webkit-flex;display: -ms-flexbox;display: flex;}.row-eq-height [class^="col-"] {min-height: 270px;}.row-eq-height .sink {bottom:0;left: 15px;right: 15px;position: absolute;}}.row-highlighted {background-color: #F5F5F5;margin-bottom:2em;margin-top:2em;padding-bottom:2em;padding-top:1em;}.marketing {text-align: center;}.marketing .img-circle {margin-top:2em;}.marketing h2 {padding-top:1em;}.marketing .btn {margin-bottom:2em;}iframe {border:0;}.video {margin: 1em 0;}.play-overlay {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);}.container-xs-height {display:table;padding-left:0px;padding-right:0px;}.row-xs-height {display:table-row;}.col-xs-height {display:table-cell;float:none;}@media (min-width: 768px) {.container-sm-height {display:table;padding-left:0px;padding-right:0px;}.row-sm-height {display:table-row;}.col-sm-height {display:table-cell;float:none;}}@media (min-width: 992px) {.container-md-height {display:table;padding-left:0px;padding-right:0px;}.row-md-height {display:table-row;}.col-md-height {display:table-cell;float:none;}}@media (min-width: 1200px) {.container-lg-height {display:table;padding-left:0px;padding-right:0px;}.row-lg-height {display:table-row;}.col-lg-height {display:table-cell;float:none;}}.col-top {vertical-align:top;}.col-middle {vertical-align:middle;}.col-bottom {vertical-align:bottom;}ul.fa-blue-arrow {list-style-type: none;}ul.fa-blue-arrow li {margin-bottom: 1em;}.fa-blue-arrow a {margin-left: -5px;color: #000;}.fa-blue-arrow a:visited {color: #000;}.fa-blue-arrow a::before {font-family: 'FontAwesome';content: '\f138';margin:0 5px 0 -15px;color: #0071b8;text-indent:15px;}.fa-blue-arrow a:hover {text-decoration: none;color: #0071b8;}ul.fa-check-circle:before {content: '';}ul.fa-check-circle {list-style-type: none;}ul.fa-check-circle li {margin-bottom: 1em;}ul.fa-check-circle li {margin-left: -5px;color:#000;}ul.fa-check-circle li:before {color: #0071b8;content: "\f058";font-family: 'FontAwesome';margin:0 5px 0 -15px;text-indent:15px;}.list-pipes li + li:before {content: " | ";}.list-pipes li {padding-left:0 !important;padding-right:0 !important;}.list-links.list-unstyled li {padding-bottom: 10px;}ul.fa-blue-arrow-text {list-style-type: none;}ul.fa-blue-arrow-text li {margin-bottom: 1em;}ul.padded-list li, ol.padded-list li {margin-bottom:1.75em;}.fa-blue-arrow-text a {margin-left: -17px;}.fa-blue-arrow-text a:before {font-family: 'FontAwesome';content: '\f138';margin:0 5px 0 -15px;color: #0071b8;text-indent:15px;display: inline-block;}.hero {margin-bottom: 1em;}figcaption, .caption {font-size: 12px;color: #757575;}.credit {font-style: italic;}a[data-toggle=lightbox] {text-decoration: none;}.enlarge {display: block;font-size: 12px;text-align: right;text-decoration: none;}.enlarge:before {content: '\f002';font-family: 'FontAwesome';padding-right: 3px;}.border {border:1px solid #666;}a.singleLightbox {text-decoration: none;}a.singleLightbox:visited {color: #0071b8;}a.singleLightbox:hover {color: #0071b8;text-decoration: underline;}.icon-circle {height: 100px;width: 100px;border-radius: 100px;background-color: #0071b8;line-height:100px;text-align: center;vertical-align: middle;color: #FFF;font-weight: 100;font-size: 2.2em;margin:0 auto;}@media (min-width: 768px) {.icon-circle {margin: auto;}}.icon-circle.green {background-color: #4c8224;}.divider {width: 12%;border-top: 1px solid #5D9732;margin: 0 auto;padding: 0 0 1.4em 0;}.cf:before, .cf:after {content: " ";display: table;}.cf:after {clear:both;}.clearboth {clear:both;}.wide-80 {min-width: 80%;}.wide-60 {min-width: 60%;}.wide-40 {min-width: 40%;}.wide-20 {min-width: 20%;}.nomargin {margin-top: 0;margin-bottom: 0;}.notop {margin-top:0;}.padtop {padding-top: 1em;}.padbottom {padding-bottom: 1em;}.clear {clear: both;}.kbd {padding: 2px 4px;font-size: 90%;color: #252525;background-color: #F5F5F5;border-radius: 3px;box-shadow: none;font-family: Menlo,Monaco,Consolas,"Courier New",monospace;}.pull-right {float: right;}.well {background-color: #F5F5F5;border-radius: 0;border:none;box-shadow: none;padding: 20px;margin-bottom: 20px;}.well.pull-right {margin-left:0;margin-bottom:1em;}.well h2 {color:#000;}@media (min-width: 768px) {.well.pull-right {margin-left:1em;}}.content-box {border: 1px solid #D1D5D8;padding: 1em;margin: 0;}.actionbox {border-radius: 0;border:none;box-shadow: none;margin-bottom:2em;margin-top: 2em;padding-bottom:1.5em;padding-top:1.5em;}.actionbox.pull-right {margin-top:0;}.actionbox > h2, .actionbox > h3, .actionbox .header {margin-top:0;}.actionbox .btn {margin-top:.5em;margin-bottom:.5em;}.actionbox.inline {padding-top:1em;padding-bottom:1em;}.actionbox.inline .header {margin-top:0;margin-bottom:.5em;}@media (min-width: 768px) {.actionbox.inline .header {display: inline;}}.actionbox.inline .btn {display: block;margin-bottom:0;margin-top:0;max-width: 320px;margin: 0 auto;}@media (min-width: 768px) {.actionbox.inline .btn {margin-left:2em;display: inline;vertical-align: top;line-height: 33px;}}.maintenancebox {border-radius: 0;border:none;box-shadow: none;margin-bottom:1.5em;margin-top: 1.5em;padding:1em;}.maintenancebox p {margin:0;text-align: center;}.graphic-box {position: relative;}.caption-box {background: #000;background-color: rgba(0, 0, 0, 0.8);box-sizing: border-box;color: #fff;padding:.5em;text-align: left;left: 0;right:0;bottom:0;width: 100%;position: relative;}@media (min-width:768px) {.caption-box {position: absolute;padding:1em;}}.caption-box .header, .caption-box h3 {font-weight: 300;}.caption-box .teaser {line-height: 34px;margin:0;}.caption-box .btn {text-transform: uppercase;}.caption-box a, .caption-box a:visited {color: #fff;}.caption-box .small {color: inherit;line-height: inherit;}.fileIcon {margin-left: 5px;}.lg-icon {width:6.5em;}.fs-icon, .md-icon {width:4.5em;}.sm-icon {width:3.5em;}.sm-icon-h {height:3.5em;}.icon-block:hover svg path, .icon-block:hover h4 a, .icon-block:hover {fill: #cc6600;color: #cc6600;text-decoration: none;}.icon-block h4 {margin-top:0.5em;}.v-center .row {display: table;margin: 0;table-layout: fixed;width: 100%;}.v-center [class^="col-"] {display: table-cell;vertical-align: middle;float: none;}.v-center [class^="col-"] *:first-child {margin-top: 0;}.v-center [class^="col-"] *:last-child {margin-bottom: 0;}.img-center {margin:0 auto;}.img-border{border: 1px solid #bebebe;}a > .fa:first-child {margin-right: 5px;padding-bottom: 3px;}a > .fa-ml {margin-left: 5px;margin-right:0!important;}.addthis_toolbar {text-align: center;}.addthis_toolbar a, .addthis_toolbar a:visited {color:#000;line-height: 26px;text-decoration: none;}#feedback-container {margin-top:3em;text-align: center;}#feedback-container .button-submit {float:none;}#feedback-container textarea {width: 50%;margin: 0 auto;}.addtocalendar var{display: none;}.addtocalendar {position: relative;display: inline-block;background: transparent!important;}.atcb-link {display: block;outline: none!important;cursor: pointer;}.atcb-link:focus~ul, .atcb-link:active~ul, .atcb-list:hover{visibility:visible;}.atcb-list {visibility: hidden;position: absolute;top: 100%;left: 0;width: 170px;z-index: 900;}.atcb-list, .atcb-item {list-style: none;margin: 0;padding: 0;background: #fff;}.atcb-item {float: none;text-align: left;}.atcb-item-link {text-decoration: none;outline: none;display: block;}.atcb-item.hover, .atcb-item:hover {position: relative;z-index: 900;cursor: pointer;text-decoration: none;outline: none;}.atc-style-menu-wb .atcb-list {width: 170px;border: 1px solid rgb(186,186,186);border-radius: 2px;box-shadow: 0 0 5px #AAA;}.atc-style-menu-wb .atcb-list, .atc-style-menu-wb .atcb-item {background: #fff;color: #000;}.atc-style-menu-wb .atcb-item, .atc-style-menu-wb .atcb-item-link {line-height: 1.3em;vertical-align: middle;zoom: 1;}.atc-style-menu-wb .atcb-item-link, .atc-style-menu-wb .atcb-item-link:hover, .atc-style-menu-wb .atcb-item-link:active, .atc-style-menu-wb .atcb-item-link:focus {color: #000;font-family: "Verdana";font-size: 14px;text-decoration: none;outline: none;padding: 5px 15px;}.atc-style-menu-wb .atcb-item-link:hover, .atc-style-menu-wb .atcb-item-link:active, .atc-style-menu-wb .atcb-item-link:focus {color: #fff;}.atc-style-menu-wb .atcb-item.hover, .atc-style-menu-wb .atcb-item:hover {background: rgb(66,129,244);}.press {line-height: 1.3;}.press .header {display: table;border-bottom: 1px solid #000;margin-bottom: 7px;width: 100%;}.press .more-link {display: table-cell;font-size:14px;text-align: right;}.press .more-link a {text-decoration: none;}.press .headline {color: #0079C2;font-weight: 400;line-height: 1.2;margin: 0;}.press .headline + .headline {margin-top: 10px;}.date {margin-bottom:0;}.press .date {font-size: 0.85em;font-weight: 300;margin: 0.3em 0 1.5em 0;}.event .date {margin-bottom:0;}.press .more, .press img {display: none;}.press img.rss {display: inline;}.item .date {font-size: 1.1em;font-weight: 500;margin-top: 2em;}.item .date + .headline {margin-top: .25em;}.event-list {list-style-type: none;margin-left: 0;padding-left: 0;}.event-list > li {margin-bottom:1.5em;}.event-list .date {font-weight: bold;margin-bottom: 0;text-transform: uppercase;}.event-list .event {font-weight: bold;line-height:1.3;margin-bottom: 0;}.event-list .location {line-height:1.3;margin-bottom: 0;}.event-list .addtocalendar > a {text-transform: uppercase;font-size: small;}div.event {margin-bottom:10px;}.marketing-stack {display: table;margin-bottom: 2em;min-height:555px;text-align: center;}.marketing-stack > div {display: table-row;}.marketing-stack > div > div {display: table-cell;}.marketing-stack > div:first-child > div {vertical-align: top;}.marketing-stack > div:last-child > div {vertical-align: bottom;}@media(min-width:768px) {.marketing-stack .img-fluid {width:100%;}}.media-block {margin-top: 1em;margin-bottom: 1em;font-size:1rem;}.media-block:after {clear:both;}.media-block h4 {margin:0.25em 0;}.media-block .header, .media-block h2.header, .media-block h3.header, .media-block h4.header, .media-block h5.header, .media-block h6.header {margin-top:0;}.media-block img + .header, .media-block img + h2.header, .media-block img + h3.header, .media-block img + h4.header {margin-top:1em;}.media-block .more a {text-decoration: none;}.media-block .more a:hover {text-decoration: underline;}.media-block img + ul, .media-block img + ol, .media-block img + p {margin-top: 0.5em;}.link-tile {text-decoration: none;}.link-tile {display: block;}.link-tile:hover {text-decoration: none;}.link-tile a {text-decoration: none;}.link-tile a:hover {text-decoration: none;}.link-tile:hover h2, .link-tile:hover h4 {color:#e07700;}.footnote {border-top: 1px solid #ccc;font-style: italic;margin-top: 1.62em;padding-top: 1em;}.table-sm-data, .table-data, .table.data {font-size: 80%;}.table-inline, .table.inline {display: inline;}.table-striped > tbody > tr:nth-child(2n+1) > td, .table-striped > tbody > tr:nth-child(2n+1) > th {background-color: #F5F5F5;}caption {font-size:22px;text-align:left;border-bottom: 3px solid #52BFFF;color: #004677;caption-side: top;padding:0;}table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > td:first-child::before, table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > th:first-child::before {background-color:#0079c2 !important;}#scrollUp {bottom: 0;right: 0;padding: 10px 20px;background-color: #0079c2;color: #fff;text-decoration: none;}.navbar {padding:0;}.dropdown-toggle::after {display:none;}@media (min-width:768px) {.searchbar-toggle {display: none;}}.program-header .navbar .navbar-collapse {border: none;}@media (min-width: 768px) {.program-header .navbar .navbar-collapse {border-top: 1px solid #d1d5d8;}}@media (min-width: 992px) {.program-header .navbar .navbar-collapse {border:none;}.program-header .navbar .navbar-collapse.xl-row {border-top: 1px solid #d1d5d8;}.program-header .navbar .navbar-collapse.rows {border-top: 1px solid #d1d5d8;}}@media (min-width: 1200px) {.program-header .navbar .navbar-collapse.xl-row {border-top:none }}.application .navbar-light .navbar-nav .dropdown-menu, .program-header .navbar-light .navbar-nav .dropdown-menu {left:auto;right:0;white-space: nowrap;}.application .navbar-light .navbar-toggler, .program-header .navbar-light .navbar-toggler {border: none;}.navbar-toggle-label {font-size: 0.8em;color: #fff;}#app-menu, #program-menu {background-color: #5e6a71;color:#fff;width: 100%;position: relative;}#app-menu, #program-menu:hover {background-color: #0079c2;}@media (min-width:768px) {#app-menu, #program-menu {width:auto }}#app-menu, #program-menu:before {content:"";background-color: #5e6a71;position: absolute;height: 100%;width: 4000px;left: -2000px;z-index: -1;}#app-menu, #program-menu:hover:before {background-color: #0079c2;}.custom-toggler .navbar-toggler-icon {background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgb(255,255,255)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E");}.navbar-wrapper {min-height: 50px;}.navbar-wrapper a {text-decoration: none;}.navbar-wrapper.corporate-topnav .container {border-top:none;}@media (min-width:768px) {.navbar-wrapper .container {border-top: 1px solid #d1d5d8;}.navbar-toggler {display: none;}}.navbar-light .navbar-nav > li > a {border-top:3px solid transparent;color: #5e6a71;padding-top: 10px;padding-bottom: 10px;line-height:30px;}@media (min-width:768px) {.navbar-light .navbar-nav > li > a {text-transform: none;border-top:3px solid transparent;background-color: transparent;}}.application .navbar-light .navbar-nav > li > a, .program-header .navbar-light .navbar-nav > li > a {padding-top: 15px;padding-bottom: 15px;border-top:3px solid transparent;}.application .navbar-light .navbar-nav > li > a:hover, .application .navbar-light .navbar-nav > li > a:focus, .application .navbar-light .navbar-nav > li.active > a:hover, .application .navbar-light .navbar-nav > li.active > a:focus, .program-header .navbar-light .navbar-nav > li > a:hover, .program-header .navbar-light .navbar-nav > li > a:focus, .program-header .navbar-light .navbar-nav > li.active > a:hover, .program-header .navbar-light .navbar-nav > li.active > a:focus {background-color: #0B5E90;border-top: 3px solid transparent;color: #fff;}@media (min-width:768px) {.application .navbar-light .navbar-nav > li.active > a, .application .navbar-light .navbar-nav > li > a:hover, .application .navbar-light .navbar-nav > li > a:focus, .application .navbar-light .navbar-nav > li.active > a:hover, .application .navbar-light .navbar-nav > li.active > a:focus, .program-header .navbar-light .navbar-nav > li.active > a, .program-header .navbar-light .navbar-nav > li > a:hover, .program-header .navbar-light .navbar-nav > li > a:focus, .program-header .navbar-light .navbar-nav > li.active > a:hover, .program-header .navbar-light .navbar-nav > li.active > a:focus {background-color: #5E6A71;}}.navbar-light .navbar-nav > li > a .fa-angle-down:before {content: "\f107";}.navbar-light .navbar-nav > li.show > a .fa-angle-down:before {content: "\f106";}@media(min-width:768px) {.application .navbar-light .navbar-nav > li.show > a, .program-header .navbar-light .navbar-nav > li.show > a {border-top:3px solid transparent;}}.application .navbar-light .navbar-nav > li.show > a:hover, .application .navbar-light .navbar-nav > li.show > a:focus, .program-header .navbar-light .navbar-nav > li.show > a:hover, .program-header .navbar-light .navbar-nav > li.show > a:focus {background-color: #0B5E90;color: #fff;}@media(min-width:768px) {.application .navbar-light .navbar-nav > li.show > a:hover, .application .navbar-light .navbar-nav > li.show > a:focus, .program-header .navbar-light .navbar-nav > li.show > a:hover, .program-header .navbar-light .navbar-nav > li.show > a:focus {background-color: #5E6A71;}}.application .navbar-light .navbar-nav .show .dropdown-menu > li > a, .program-header .navbar-light .navbar-nav .show .dropdown-menu > li > a {background-color: #282e2e;border-bottom: 1px solid #000;color: #62d2ff;padding-top:10px;padding-bottom:10px;}@media(min-width:768px) {.application .navbar-light .navbar-nav .show .dropdown-menu > li > a, .program-header .navbar-light .navbar-nav .show .dropdown-menu > li > a {background-color: #5E6A71;border-bottom: 1px solid #4B545A;color: #fff;}}.application .navbar-light .navbar-nav .show .dropdown-menu > li > a:hover, .application .navbar-light .navbar-nav .show .dropdown-menu > li > a:focus, .program-header .navbar-light .navbar-nav .show .dropdown-menu > li > a:hover, .program-header .navbar-light .navbar-nav .show .dropdown-menu > li > a:focus {background-color: #0B5E90;color: #fff;}.application .navbar-light .navbar-nav .show .dropdown-menu > li > a .fa-home, .program-header .navbar-light .navbar-nav .show .dropdown-menu > li > a .fa-home {position: absolute;right:10px;top:15px;}.application .navbar-light .navbar-nav .show .dropdown-menu > li > a, .program-header .navbar-light .navbar-nav .show .dropdown-menu > li > a {position: relative;}.application .navbar-light .navbar-nav .dropdown > ul ul, .program-header .navbar-light .navbar-nav .dropdown > ul ul {padding-left:0;list-style-type: none;}.application .navbar-light .navbar-nav .dropdown > ul ul li, .program-header .navbar-light .navbar-nav .dropdown > ul ul li {background-color: #282e2e;}.application .navbar-light .navbar-nav .dropdown > ul ul a, .application .navbar-light .navbar-nav .dropdown > ul ul a:visited, .program-header .navbar-light .navbar-nav .dropdown > ul ul a, .program-header .navbar-light .navbar-nav .dropdown > ul ul a:visited {color: #62d2ff;display: block;text-decoration: none;padding-left:40px;padding-top:10px;padding-bottom:10px;}.application .navbar-light .navbar-nav .dropdown > ul ul a:hover, .program-header .navbar-light .navbar-nav .dropdown > ul ul a:hover {background-color: #0B5E90;color: #fff;}.navbar, .navbar-nav, .navbar-collapse {border:0;margin-bottom:0;min-height: 0;}ul.navbar-nav {margin-top:0;margin-bottom: 0;}ul.dropdown-menu {border:0;padding-top: 0;padding-bottom:0;margin-top:0;}.corporate-topnav .container {padding-left: 0;padding-right: 0;}@media (min-width:768px) {.corporate-topnav .container {padding-left: 15px;padding-right: 15px;}}.corporate-topnav .navbar {padding: 0.5rem 1rem 0 1rem;}.navbar-wrapper.corporate-topnav {border-bottom: 1px solid #d1d5d8;}.corporate-topnav .navbar-inverse {text-align: center;background-color: transparent;}.corporate-topnav .navbar-expand .navbar-nav > li > a {display: block;font-size: 0.75em;padding-left: 0.5em;padding-right: 0.5em;text-transform: none;}@media(min-width: 576px) {.corporate-topnav .navbar-expand .navbar-nav > li > a {font-size: 0.8em;padding-left: 0.8em;padding-right: 0.8em;}}.corporate-topnav .navbar-expand .navbar-nav > li > a {background-color: transparent;}.corporate-topnav .navbar-expand .navbar-nav > li > a:hover, .corporate-topnav .navbar-expand .navbar-nav > li > a:focus {background-color:#0079c2;color: #fff;}.navbar-light .navbar-nav.ml-auto .nav-link {color: #0079C2;}.navbar-light .navbar-nav .nav-link {color: #5e6a71;background-color: #ededed;padding: 15px;}.navbar-light .navbar-nav .active > .nav-link, .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .show > .nav-link {background-color:#0079c2;color: #fff;}@media(min-width:992px) {.navbar-wrapper.corporate-topnav {margin-top:-17px;}}.corporate-topnav .navbar-expand .navbar-nav > li.active > a, .corporate-topnav .navbar-expand .navbar-nav > li.active > a:hover {background-color:#0079c2;}.corporate-topnav .navbar-expand .navbar-nav > li.open > a {background-color: #0079c2;}.corporate-topnav .navbar-expand .navbar-nav .show .dropdown-menu > li > a {background-color: #5E6A71;border-bottom: 1px solid #4B545A;display: block !important;color: #fff;}@media(min-width:768px) {.corporate-topnav .navbar-expand .navbar-nav .show .dropdown-menu > li > a {background-color: #5E6A71;border-bottom: 1px solid #4B545A;color: #fff;}}.corporate-topnav .navbar-expand .navbar-nav .show .dropdown-menu > li > a:hover, .corporate-topnav .navbar-expand .navbar-nav .show .dropdown-menu > li > a:focus {background-color: #0B5E90;color: #fff;}@media (min-width:768px) {.corporate-topnav .navbar-expand .navbar-nav > li > a {font-size: 1em;}}.corporate-topnav .navbar-expand .navbar-nav li.dropdown {position: static;}.corporate-topnav .navbar-expand .navbar-nav .show .dropdown-menu {background-color: #5E6A71;border-top:0;font-size: 1em;width: 100%;}@media (min-width:768px) {.corporate-topnav .navbar-expand .navbar-nav .show .dropdown-menu {display:block;left:auto;width:auto;}}.banner-logo {width: 100%;border-bottom: none;min-height:60px;}header .logo {background: url('client/img/nrel-logo-web.svg') no-repeat center;height: 75px;background-size: 190px;margin: 0 0 10px 0;}.program-header {background-color: transparent;}.program-header .navbar-inverse {border-top: 1px solid #d1d5d8;}.program-header .container {padding-right: 0;padding-left: 0;}header.notopnav {border-bottom: 1px solid #d1d5d8;margin:0 0 1.5em 0;}@media only screen and (min-width : 480px) {header .logo {height: 85px;background-size: 214px;margin: 0 0 10px 0;}}@media (min-width: 768px) {header .logo {background: url('client/img/nrel-logo-web.svg') no-repeat left;height:130px;background-size: 328px;}.program-header .container {padding-right: 15px;padding-left: 15px;}.banner-logo {min-height:92px;}.program-header {background-color: #ededed;}}@media only screen and (min-width : 1200px) {.program-header .navbar-inverse {border-top: none;}}.searchbar-toggle {border: 1px solid #5e6a71 ;border-radius:5px;color: #5e6a71 ;margin:15px;padding: 8px 6px 8px 6px;position: absolute;right: 0;top:0px;}@media (min-width: 768px) {#searchbar-collapse {background-color: transparent;margin-left: 0px;margin-right: 0px;}#searchbar-collapse:before {background-color:transparent;}}@media (min-width: 768px) {#searchbar-collapse:after {display: none;}}.searchbar-form {padding-top: 7px;padding-bottom: 7px;}@media (min-width: 768px) {.searchbar-form {background-color: transparent;float:right;}}.searchbar-form button {background-color: #D1D5D8;border-color: #D1D5D8;color: #000;height:40px;text-transform: uppercase;}@media (min-width: 768px) {header .navbar-collapse, header .navbar-form {padding-left:0;padding-right: 0;}}header nav.navbar {border: none;box-shadow: none;text-align: center;}.searchbar-form .form-group {display: inline-block;margin-bottom: 0;vertical-align: middle;}.searchbar-form .form-control {display: inline-block;width: 200px;vertical-align: middle;box-shadow: none;height:40px;}@media (max-width: 350px) {.searchbar-form .form-control {width: 160px;}}#page-tools {margin: 2em 0;}footer {background-color: #F5F5F5;color: #000;font-size: 14px;font-weight: 400;line-height: 1.2;padding-bottom: 5em;}footer .footertop {background-color: #D1D5D8;padding: 2em 0;}footer .global div {margin: 1em 0 0 0;line-height:1.3;}@media (min-width: 992px) {footer .global div {margin: 0 2em;}footer .global div:first-child {margin: 0 2em 0 0;}footer .global div:last-child {margin: 0 0 0 2em;}}footer .footerbottom {padding-top:2em;}footer .globalsecondary div, footer .nrel-attr {font-size: 0.75rem;}footer .nrel-attr a:link, footer .nrel-attr a:visited {text-decoration:underline;}footer .nrel-attr a:hover, footer .nrel-attr a:active {color: #0071b8;}footer .header {border-bottom:1px solid #5a5b5b;font-size: 14px;margin-top: 1em;text-transform: uppercase;}footer .only-nrel {font-size: 10px;}footer .social-links {font-size: 14px;margin:0 0 1em 0;}footer .social-links li {padding: 0;}footer a, footer a:visited {color: #000;text-decoration: none;}footer a:hover, footer a:active {color:#000;text-decoration: underline;}footer .logo {display: block;max-width:100px;margin-top: 1em;}footer ul {list-style-type: none;margin-left:0;margin-bottom: 0;padding-left: 0;}footer ul li {line-height: 1.25em;margin-bottom: 0.55em;}footer ul.dotlist li:before {content: "\00a0 \00b7 \00a0";}footer ul.dotlist li:first-child:before {content: "";}@media(min-width:768px) {footer .ft-border-right {border-right: 1px solid #5a5b5b;}footer .social-links {font-size: 14px;margin:0;}footer .header {margin-top: 0;}}#perPage {margin-left: 10px;}.results-header .form-inline input[type=text] {width: 99%;}@media(min-width:768px){.results-header .form-inline [class^="col-"] {padding-right:0;}.results-header .form-inline [class^="col-"]+[class^="col-"] {padding-left: 0;}}.results-header a {text-decoration: none;}.results-header a:hover {text-decoration: underline;}.results-header p, .results-header label {font-size: 18px;}.results-header .results-notes {margin: 1.5em 0;}.results-header .results-notes p {margin:0;}.results-header .results-total p {margin-bottom: 0;}.results-header .highlighted {color: #c60;font-style: italic;font-weight: bold;}.results-list {margin-top:1.5em;padding-top:1.5em;border-top: 1px solid #ccc;}.results-highlighted {font-weight: bold;}.results-item {margin-bottom: 1.5em;padding-bottom: 1.5em;border-bottom: 1px solid #ccc;text-decoration: none;}.results-item .summary {color: initial;}.results-item .footer {color:#5E6A71;}.results-pager .pagination {margin: 0;}.results-pager p {padding-top:.5em;}.results-pager a {text-decoration: none;}.results-pager a:hover {text-decoration: underline;}.results-pager .glyphicon {font-size: 75%;}figure {display: table;margin:1em auto;}figure img {display: block;}figcaption {display: table-caption;caption-side: bottom;font-size: 12px;color: #757575;margin-top: .5em;}.hpf6df8a6f-3fb6-4eba-b28d-c99912998305{display:none;margin-left:-1000px;}.hpe2cd04f6-da55-4773-80a2-c25c4ca203c4{display:none;margin-left:-1000px;}.content-list-widget {font-weight: 400;font-size: 1.1em;line-height: 1.2;margin-bottom: 3em;}.content-list-widget .header-box {background-color: #ededed;border-bottom: 3px solid #00b5ef;}.content-list-widget .header-box .title {color: #000;font-size: 1.35em;margin-bottom: 0;padding: .8em;text-transform: none;}.content-list-widget .header-box .title span {font-weight: 500;text-transform:uppercase;color:#0079c5;}.content-list-widget .content-box {border: 1px solid #D1D5D8;padding: 1em;margin: 0;}.content-list-widget .list {padding-left: 1.35em;}.content-list-widget .title+.list {border-top: 1px solid #D1D5D8;margin-top: .5em;padding-top: .75em;}.content-list-widget .list, .content-list-widget .btn-link {text-decoration: none;text-transform: none;}.content-list-widget .btn-link:visited {color:#0079c2;}.content-list-widget .text-left .btn-link {margin-left: 0;padding-left: 0;}.content-list-widget .list .headline, .content-list-widget .list .date {margin-bottom: 0;}.content-list-widget .footnotes{border-top: 1px solid #D1D5D8;padding-top: 1em;}.content-list-widget .text-right {text-align: inherit;}@media (min-width:768px) {.content-list-widget .text-right {text-align: right;}.addthis_inline_share_toolbox_hq4v {margin-left:0px;}}.bg-blue {background-color:#0079C2;border-bottom:none;}.blogpost h2 {margin:0.5em 0;}.addthis_inline_share_toolbox_hq4v {margin-left:-10px;}blockquote {color: #757575;border-top: 5px solid #00A4E4;border-bottom: 5px solid #00A4E4;padding: 1em 0;}blockquote.green {color: #757575;border-top: 5px solid #8cc63f;border-bottom: 5px solid #8cc63f;padding: 1em 0;} \ No newline at end of file diff --git a/frontend/client/img/alliance-logo_black.png b/frontend/client/img/alliance-logo_black.png deleted file mode 100644 index 526d4576a617c8811a148943b931398ab968d7ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2498 zcmV;z2|f0SP)AOau)LYlBQz+42J#?`%iv`1+40}{LHswt3=W_o(Q z>FMri38flps35f(5nLYq{m;K{{L!ZJEiU@lq2pr|Q3>Pn8kgl?fBvy;K=kW?#*51> z0mUt``dM5?F_@wTL_a5RdU5HeXc*QmiZslB;`bZ+bdP{fYoq%ZNXrI9KL>a;a2`nW zNDAVzA+SX8pocj%+EW6cI$7&%KvXaA_=dp^2{@~GaD$TDo5ml$1Zmt(w*k@RgGVn- zb8V{>u~RJDevwOM+-7D>d~JrYGVthSWeVWY2JXCUjgvwv2_nr`RvsDzao z4T#P&;}>KwcPd)8B!JfHbL>fjdUA0fA_2P=mxfi&+yeb;)ABVqv%#Fkk12RL$}8j6 z89*ZUc=UItVAWeN0QL7*aF2D_<_VgeV8D7+FI}L09x0SyB5l~;=dHhW0?=sJ^@cv( z8Yl$T02@3$wPw(=sL9f$!Sirr;%Y75Dbh}>Bu0IezQ`SKhd zVk<@X>l}jC*>NjXQvU84LB^lg;`kCYO+@xsP{l-Tl>{ISmdf{pPU!jYl8L~&fy+(_ zI5g5R))iG9he`xd4gigQM(`8_o~w!lS}$swr)8LRZ)9 z3NIeXF*Rh9GO?e?VDDzF{|f=AXE|%0Ejd1qox}6IM87B0#RD(v@{hE^Jii0)OmEPxuMW3hu#O=dy9Sdd(&u>!ARqP7_0QGM&C#HK-*trBPoN? zH-q0iSWfu2E@^}(8q5LNI&6qyTQj(C0QHQB2L;+g#>gUJ|FGtnS}sSvupRG-j}Yn{ zkk;u^S%Q{IB9u=Lv_^;Oh+vh#)!+`~@gVASNS<4g<>0_OE0JzNkmCe9DUBTJz>C^% z{7SEFZdjHa5PU!b;R3+kh0)4_`%d4#(>)FhLu*hDoEX0MHaBz_Q>t|B&TZIFY6) zzFE4;jMgg>47-n6G?5DfWt(yvf>FL8K{)~}qXa;hfWTVh6?h0zCc|3obAoOYT=ub8 zLU`Zp9)N-%dJyMc)#1KfR+(}?`Uwiahh;1@$QaEVU61<}eoPzW9(B}43q>$^?8Rhx zInxR{l!XRr|47V&fYK%2+hEuRDKl|E_xr-e2rc^W2~9Af_88!g2Dv^70EZw0PfYZ2 zPR)Un?3j}@6_ZXG`tt~tr9ncsdfDU<<)D>+n;kpiha!GYZf|o6X5+)#ni0*k5 z8ae`*r^yE=6xI<4IY`II74;9rbz6*Bk1c@o!AP^|+R&$nb%MK^WMEDy)uEw=4nag4 zs&^_qV`u%?dzRF2!Nd0t5 zjwRO=_OGM1_0-`Oim4AK(grbZ|Gb?{6Nv%gmjKx2_^=nT$@@CnjDX?%XOChhE_qLR z(sg$U-d0dU5UrItZDW@(u4}`DV6XMGAcBEPdnv%N*n}?MAx@Dg!5p5(V8HyQ_HP<- zz-3+)e6}iS0DJ=H65Qh%I3b*Iz^?dA9q!t5Y-UD0^K14ZaItxSC-mFU&`w?u`4IcT z+$LA$PgBVTA^|2}?NchsqyUU|TcDQxXwnX}4^9Gp?ry6Nqup0@{33Yf;NlwY3Fy3O z3A&>}cIbNuOU+dYAX*S`m&$$%DHB=0t7*Y~gxgP;-@O*g z8PbHbGHb;?eV-7Z*EGoj&{7fcK8AkG;h2MxdV=1H{+6LB7~rp`T3>U$DUFQpkAyFH zC($+7Cq;<`_(}tE&PQm_2EsO<)jrqBgC&6{L0b$O0x<$D!5IelDxMXA$b&ZPW{Z^z zA^|A2190hcmHj{8;IsI3c;2d85&+TJuvwb7Br~?V<|Xxq+wZFr<*uLPos9&n2n2LV zG)w`7GH9xhY#vwGPExzJ)qXQtPOcd(l`brS>{Z>X&pFht;B}VJhYdIfYsKlTdt<+$ z5-BM?bPeB?I!x*HlsS#oGsJ9qDX}O_31)kV<2sHZPGqVl>HO4i{;k%U=t60fuslU- zpF6|L4DaGcwEXo!gRIo&opsj8yvrY{BGc0vKG-lj5p!}?J>I^XO8*Nm01g%drjj;GYybcN M07*qoM6N<$f<-i-Q2+n{ diff --git a/frontend/client/img/bg-pattern.png b/frontend/client/img/bg-pattern.png deleted file mode 100755 index cfd79110639b72f96f028efdba77979408402368..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 633 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 - - - - - - - - - -]> - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/frontend/client/img/icon_plus_blue.svg b/frontend/client/img/icon_plus_blue.svg deleted file mode 100755 index f417dd7..0000000 --- a/frontend/client/img/icon_plus_blue.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/frontend/client/img/logo-doe-footer.png b/frontend/client/img/logo-doe-footer.png deleted file mode 100755 index 8ab42ab643502f8c11a85f8d3bb0925ebff95e32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1207 zcmeAS@N?(olHy`uVBq!ia0vp^DL^d4!3-o9_`W*Dz`*F884^(v;p=0SoS&=`$p+baj zfP!;=QL2Keo|$g4p^1@#xuu?=nSrH|iH?GifuXs+fw{h+v95ukm4TU+v84hODA{o- z*c7FtSp~VcK`jIFY?U%fN(!v>^~=l4^~#O)@{7{-4J|D#^$m>ljf`}GDs+o0^GXsc zbn}XpK}JB#a7isrF3Kz@$;{7F0GXMXlwVq6tE8k4vP2(h3($M|aQ^{0@DNJP0|rYG z(Esyf65a#DjwRjE*O7r?V?XzwL{=c5u{g-xiDBJ2nU_G0aez;VE087?EM|2(3DhG{ z666=mpkOdR;k|%E!~XmI1p({NOV7^eV_;xf@9E+g;&J@$w3pLfD{wRv-dBGAe~Wm` zqGwy?etVz#OofGWKI4@pKZpM+b}YQUB^=WqXL~q^pHEIv3%z+H%#&I3#KVb-nPE5C zxqe2^@DG0RSIjBllg2L2zo{+#_p%+9UWjZy;_k|PYw;z%i9UUDHoIrL%qLa!H_0;ej9Phz(!$Ph7FQaR()M`>o8pGz4c(!=~Ze4aY( zbY4~5^n8ipERThOl4Uspt&NIjot5=GSOOaF7g?($8;PfeJ}O<9@pPd{NV5Abndb^W zD<(!6@OK=$bNT7QyXr1U0Z&@kn@+#k%<7w8waEIP*QGrf;k-*4PUj?tPIfbYcw4^O z#MnRj`;Ml?Teko67t9ks#qGKN|AoFn&TrTHr);?*>OJc&d;7aW@m1QLnR;tl>vpRK zT$~=WdEY&r?oA1^<=p3QnlfEr&%S1bZC4Wx8--*oT9zVbpnS~RBl}>!!rR%0UtXNg zyHwA#yMnzl-l^iy&n+TRIy#+YT4MH>r-eVfe%d-kbf05}alz8QBirUk0eb%7RnkO`^z>lyxcqa zmyY98u`O%Z?(E9xxbLM9f0bpP>BYTgwpgE@`spgSTTNR_zCz)V;^_XZs{5GsHP6_q zXz#eFhFLOEIcI{@t``@BUvWx4e%Rt-ZM=B?gt+SM&T@A}*Hk*l-3=|>v)Pcl-szWe zP17CEn%jqxrHaZX#r*xxSEPTey7Y+frfn~89!l-&KN^u1yubC%Bef%Y^=#Ia7M-2@ zu;&AJ%8?%oFF7CAZkSj7j9(z}Uqeqz;K{dsD?hP&$p2uG{OjVI{N8!>J^Sr^Co2Ek vvhRz(?tlH=2Kg \ No newline at end of file diff --git a/frontend/client/img/touch-icon-ipad-retina.png b/frontend/client/img/touch-icon-ipad-retina.png deleted file mode 100755 index d5ed0f8d8510fb6eaeaabaddf13c1e96ca9f4352..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4262 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 diff --git a/frontend/client/img/touch-icon-ipad.png b/frontend/client/img/touch-icon-ipad.png deleted file mode 100755 index 9be41a5aac80886c4fd3b684d8f158a9136f2673..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2631 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 z 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 diff --git a/frontend/client/js/app.js b/frontend/client/js/app.js deleted file mode 100755 index 83cc08c..0000000 --- a/frontend/client/js/app.js +++ /dev/null @@ -1,48 +0,0 @@ -'use strict'; - -/* - * moakley - * Set site-level variables (required) - */ - $(document).ready( function(){ - - window.nrel = $.extend({}, window.nrel); // Merge in page level variables if they are set - window.nrel.pagevars = $.extend({}, window.nrel.pagevars); // (in case window.nrel isn't defined) - - window.nrel.pagevars.sitename = 'AppName'; - - var $navlink, - $navitem, - slash, - nrel, - pv; - - // shorthand alias for our page variables - nrel = window.nrel || {}; - pv = nrel.pagevars || {}; - - - pv.pagename = $('h1').text(); - slash = location.pathname.lastIndexOf('/') + 1; - - pv.pageurl = location.pathname; // /foo/bar/baz/boink.html - pv.siteurl = location.pathname.substr(0,slash); // /foo/bar/baz/ - pv.filename = location.pathname.substr(slash) ; // boink.html - - // catch situations where the url ends in a slash, with index.html implied - if( ! pv.filename.length) { - pv.filename = 'index.html'; // this could be index.php or index.cfm, or ... - } - - - /* - * Contact Us footer link - * if the site doesn't defer to the globalwebmaster, use the local one - */ - if( !pv.globalwebmaster && pv.sitename ) { - $('#contact-link').attr( 'href', pv.siteurl + 'contacts.html' ); - } else { - $('#contact-link').attr( 'href', '/webmaster.html' ); - } - -}); diff --git a/frontend/client/js/app.min.js b/frontend/client/js/app.min.js deleted file mode 100755 index 206289e..0000000 --- a/frontend/client/js/app.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! application template scripts Mon June 22 2015 07:48:15 */ -"use strict";$(document).ready(function(){window.nrel=$.extend({},window.nrel),window.nrel.pagevars=$.extend({},window.nrel.pagevars),window.nrel.pagevars.sitename="AppName";var e,a,n;a=window.nrel||{},n=a.pagevars||{},n.pagename=$("h1").text(),e=location.pathname.lastIndexOf("/")+1,n.pageurl=location.pathname,n.siteurl=location.pathname.substr(0,e),n.filename=location.pathname.substr(e),n.filename.length||(n.filename="index.html"),!n.globalwebmaster&&n.sitename?$("#contact-link").attr("href",n.siteurl+"contacts.html"):$("#contact-link").attr("href","/webmaster.html")}); \ No newline at end of file diff --git a/frontend/client/js/iconomatic/.gitignore b/frontend/client/js/iconomatic/.gitignore deleted file mode 100755 index f97c964..0000000 --- a/frontend/client/js/iconomatic/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# -# NPM -# -node_modules diff --git a/frontend/client/js/iconomatic/.jshintrc b/frontend/client/js/iconomatic/.jshintrc deleted file mode 100755 index e51ca6c..0000000 --- a/frontend/client/js/iconomatic/.jshintrc +++ /dev/null @@ -1,7 +0,0 @@ -{ - "strict" : true, // Require `use strict` pragma in every file. - "white" : false, // Check against strict whitespace and indentation rules. - "jquery" : true, - "browser" : true, // Standard browser globals e.g. `window`, `document`. - "laxcomma" : true // Suppress warnings about comma-first coding style. -} diff --git a/frontend/client/js/iconomatic/jquery.iconomatic.js b/frontend/client/js/iconomatic/jquery.iconomatic.js deleted file mode 100755 index 6079239..0000000 --- a/frontend/client/js/iconomatic/jquery.iconomatic.js +++ /dev/null @@ -1,198 +0,0 @@ -;(function ( $, window, document, undefined ) { - - 'use strict'; - - // Default file types to label with icons - var fileTypes = { - 'avi' : { 'class' : 'fa-file-video-o', 'type' : 'Video'} - , 'doc' : { 'class' : 'fa-file-word-o', 'type' : 'Microsoft Word'} - , 'docx': { 'class' : 'fa-file-word-o', 'type' : 'Microsoft Word'} - , 'gif' : { 'class' : 'fa-file-image-o', 'type' : 'GIF'} - , 'jpg' : { 'class' : 'fa-file-image-o', 'type' : 'JPG'} - , 'm3u' : { 'class' : 'fa-file-audio-o', 'type' : 'Audio'} - , 'mov' : { 'class' : 'fa-file-video-o', 'type' : 'Video'} - , 'mp3' : { 'class' : 'fa-file-audio-o', 'type' : 'Audio'} - , 'mp4' : { 'class' : 'fa-file-video-o', 'type' : 'Video'} - , 'mpg' : { 'class' : 'fa-file-video-o', 'type' : 'Video'} - , 'mpeg': { 'class' : 'fa-file-video-o', 'type' : 'Video'} - , 'pdf' : { 'class' : 'fa-file-pdf-o', 'type' : 'PDF'} - , 'ppt' : { 'class' : 'fa-file-powerpoint-o', 'type' : 'Microsoft PowerPoint'} - , 'pptx': { 'class' : 'fa-file-powerpoint-o', 'type' : 'Microsoft PowerPoint'} - , 'wmv' : { 'class' : 'fa-file-video-o', 'type' : 'Video'} - , 'txt' : { 'class' : 'fa-file-text-o', 'type' : 'Text'} - , 'xls' : { 'class' : 'fa-file-excel-o', 'type' : 'Microsoft Excel'} - , 'xlsb': { 'class' : 'fa-file-excel-o', 'type' : 'Microsoft Excel'} - , 'xlsx': { 'class' : 'fa-file-excel-o', 'type' : 'Microsoft Excel'} - , 'xlsm': { 'class' : 'fa-file-excel-o', 'type' : 'Microsoft Excel'} - , 'zip' : { 'class' : 'fa-file-archive-o', 'type' : 'ZIP Archive'} - }; - - - var pluginName = 'iconomatic'; - - // Plugin defaults - var defaults = { - ajax: false - ,dataMode: false - ,dataAttr: 'iconomatic' - ,iconClass: 'fileIcon' - ,filesObj: fileTypes - }; - - // Constructor - function Iconomatic( element, options ) { - this.element = element; - - this.options = $.extend( {}, defaults, options ); - - this._defaults = defaults; - this._name = pluginName; - - this.init(); - } - - Iconomatic.prototype = { - - init: function() { - var links, - context; - - context = $('body'); // todo: move this into settings - - links = this.getLinks( context ); - this.addIcons( links ); - - if( this.options.ajax ) { - this.enableAjax(); - } - }, - - /* - * Inspect all tags within our region - * Return the ones with relevant file extensions or data attributes - * - */ - getLinks: function( region ) { - var opts, - types, - dataAttr, - links; - - opts = this.options; - types = opts.filesObj; - dataAttr = 'data-' + opts.dataAttr; - - links = []; - - $(region).find('a').filter(function(){ - return !$(this).attr('data-iconomatic-tagged'); // remove any previously tagged - }).each( function( idx, link ){ - var href, - ext; - - - href = $(link).attr('href'); - - if( typeof href !== 'undefined' && href !== null && href !== '' ) { - - ext = href.toLowerCase().split('.').splice( -1, 1 ).toString(); // this could be more elegant - - if( ext in types ) { - $(link).attr('data-iconomatic-tagged', ext); // tag our valid links - links.push( link ); - } - } - if( opts.dataMode ) { - - // copy the users data attribute to our data attribute - if( $(link).attr(dataAttr) ) { - - $(link).attr('data-iconomatic-tagged', function(){ // tag our valid links - return $(this).attr( dataAttr ); - }); - - links.push( link ); - } - } - }); - - return links; - }, - - /* - * Use the mutation observer to watch for changes in our doc. - * Find the Links and add the icons in the changed region. - * - */ - enableAjax: function(){ - var links, - MutationObserver, - region, - observer, - self = this; - - if( window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver ) { - MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; - } else { - return true; // BAIL ON ', attrs ).appendTo(link); // finally do the work! - } - }); - } - - }; - - $.fn[pluginName] = function ( options ) { - return this.each(function () { - if (!$.data(this, 'plugin_' + pluginName)) { - $.data(this, 'plugin_' + pluginName, new Iconomatic( this, options )); - } - }); - }; - - -})( jQuery, window, document ); diff --git a/frontend/client/js/iconomatic/jquery.iconomatic.min.js b/frontend/client/js/iconomatic/jquery.iconomatic.min.js deleted file mode 100755 index 2644eb2..0000000 --- a/frontend/client/js/iconomatic/jquery.iconomatic.min.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! -* Project: Iconomatic -* Version: 2.0.0 -* Description: Detect links to native files and append the proper icon image after the link -* Author: Michael Oakley -* Build Date: 2016-05-12 -*/ - -(function(a,b,c,d){"use strict";var e={avi:{"class":"fa-file-video-o",type:"Video"},doc:{"class":"fa-file-word-o",type:"Microsoft Word"},docx:{"class":"fa-file-word-o",type:"Microsoft Word"},gif:{"class":"fa-file-image-o",type:"GIF"},jpg:{"class":"fa-file-image-o",type:"JPG"},m3u:{"class":"fa-file-audio-o",type:"Audio"},mov:{"class":"fa-file-video-o",type:"Video"},mp3:{"class":"fa-file-audio-o",type:"Audio"},mp4:{"class":"fa-file-video-o",type:"Video"},mpg:{"class":"fa-file-video-o",type:"Video"},mpeg:{"class":"fa-file-video-o",type:"Video"},pdf:{"class":"fa-file-pdf-o",type:"PDF"},ppt:{"class":"fa-file-powerpoint-o",type:"Microsoft PowerPoint"},pptx:{"class":"fa-file-powerpoint-o",type:"Microsoft PowerPoint"},wmv:{"class":"fa-file-video-o",type:"Video"},txt:{"class":"fa-file-text-o",type:"Text"},xls:{"class":"fa-file-excel-o",type:"Microsoft Excel"},xlsb:{"class":"fa-file-excel-o",type:"Microsoft Excel"},xlsx:{"class":"fa-file-excel-o",type:"Microsoft Excel"},xlsm:{"class":"fa-file-excel-o",type:"Microsoft Excel"},zip:{"class":"fa-file-archive-o",type:"ZIP Archive"}};var f="iconomatic";var g={ajax:false,dataMode:false,dataAttr:"iconomatic",iconClass:"fileIcon",filesObj:e};function h(b,c){this.element=b;this.options=a.extend({},g,c);this._defaults=g;this._name=f;this.init()}h.prototype={init:function(){var b,c;c=a("body");b=this.getLinks(c);this.addIcons(b);if(this.options.ajax){this.enableAjax()}},getLinks:function(b){var c,d,e,f;c=this.options;d=c.filesObj;e="data-"+c.dataAttr;f=[];a(b).find("a").filter(function(){return!a(this).attr("data-iconomatic-tagged")}).each(function(b,g){var h,i;h=a(g).attr("href");if(typeof h!=="undefined"&&h!==null&&h!==""){i=h.toLowerCase().split(".").splice(-1,1).toString();if(i in d){a(g).attr("data-iconomatic-tagged",i);f.push(g)}}if(c.dataMode){if(a(g).attr(e)){a(g).attr("data-iconomatic-tagged",function(){return a(this).attr(e)});f.push(g)}}});return f},enableAjax:function(){var a,d,e,f,g=this;if(b.MutationObserver||b.WebKitMutationObserver||b.MozMutationObserver){d=b.MutationObserver||b.WebKitMutationObserver||b.MozMutationObserver}else{return true}e=c.querySelector("body");f=new d(function(b){b.forEach(function(b){if(b.type==="childList"){a=g.getLinks(b.target);g.addIcons(a)}})});f.observe(e,{childList:true,subtree:true})},addIcons:function(b){var c=this.options;a(b).filter(function(){return a(this).has("img").length===0}).each(function(b,d){var e,f,g;e=a(d).data("iconomatic-tagged");f=typeof c.filesObj[e]!=="undefined"?c.filesObj[e].class:false;if(f){g={"class":c.iconClass+" fa "+f,title:c.filesObj[e].type};a("",g).appendTo(d)}})}};a.fn[f]=function(b){return this.each(function(){if(!a.data(this,"plugin_"+f)){a.data(this,"plugin_"+f,new h(this,b))}})}})(jQuery,window,document); -//# sourceMappingURL=jquery.iconomatic.min.map \ No newline at end of file diff --git a/frontend/client/js/jquery.gridster.min.js b/frontend/client/js/jquery.gridster.min.js deleted file mode 100644 index 0c7b018..0000000 --- a/frontend/client/js/jquery.gridster.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! gridster.js - v0.7.0 - 2016-02-26 - * https://dsmorse.github.io/gridster.js/ - Copyright (c) 2016 ducksboard; Licensed MIT */ !function(a,b){"use strict";"object"==typeof exports?module.exports=b(require("jquery")):"function"==typeof define&&define.amd?define("gridster-coords",["jquery"],b):a.GridsterCoords=b(a.$||a.jQuery)}(this,function(a){"use strict";function b(b){return b[0]&&a.isPlainObject(b[0])?this.data=b[0]:this.el=b,this.isCoords=!0,this.coords={},this.init(),this}var c=b.prototype;return c.init=function(){this.set(),this.original_coords=this.get()},c.set=function(a,b){var c=this.el;if(c&&!a&&(this.data=c.offset(),this.data.width=c[0].scrollWidth,this.data.height=c[0].scrollHeight),c&&a&&!b){var d=c.offset();this.data.top=d.top,this.data.left=d.left}var e=this.data;return void 0===e.left&&(e.left=e.x1),void 0===e.top&&(e.top=e.y1),this.coords.x1=e.left,this.coords.y1=e.top,this.coords.x2=e.left+e.width,this.coords.y2=e.top+e.height,this.coords.cx=e.left+e.width/2,this.coords.cy=e.top+e.height/2,this.coords.width=e.width,this.coords.height=e.height,this.coords.el=c||!1,this},c.update=function(b){if(!b&&!this.el)return this;if(b){var c=a.extend({},this.data,b);return this.data=c,this.set(!0,!0)}return this.set(!0),this},c.get=function(){return this.coords},c.destroy=function(){this.el.removeData("coords"),delete this.el},a.fn.coords=function(){if(this.data("coords"))return this.data("coords");var a=new b(this);return this.data("coords",a),a},b}),function(a,b){"use strict";"object"==typeof exports?module.exports=b(require("jquery")):"function"==typeof define&&define.amd?define("gridster-collision",["jquery","gridster-coords"],b):a.GridsterCollision=b(a.$||a.jQuery,a.GridsterCoords)}(this,function(a,b){"use strict";function c(b,c,e){this.options=a.extend(d,e),this.$element=b,this.last_colliders=[],this.last_colliders_coords=[],this.set_colliders(c),this.init()}var d={colliders_context:document.body,overlapping_region:"C"};c.defaults=d;var e=c.prototype;return e.init=function(){this.find_collisions()},e.overlaps=function(a,b){var c=!1,d=!1;return(b.x1>=a.x1&&b.x1<=a.x2||b.x2>=a.x1&&b.x2<=a.x2||a.x1>=b.x1&&a.x2<=b.x2)&&(c=!0),(b.y1>=a.y1&&b.y1<=a.y2||b.y2>=a.y1&&b.y2<=a.y2||a.y1>=b.y1&&a.y2<=b.y2)&&(d=!0),c&&d},e.detect_overlapping_region=function(a,b){var c="",d="";return a.y1>b.cy&&a.y1b.y1&&a.y2b.cx&&a.x1b.x1&&a.x2f;f++)-1===a.inArray(e[f],b)&&c.call(this,e[f]);for(var h=0,i=b.length;i>h;h++)-1===a.inArray(b[h],e)&&d.call(this,b[h])},e.find_collisions=function(b){for(var c=this,d=this.options.overlapping_region,e=[],f=[],g=this.colliders||this.$colliders,h=g.length,i=c.$element.coords().update(b||!1).get();h--;){var j=c.$colliders?a(g[h]):g[h],k=j.isCoords?j:j.coords(),l=k.get(),m=c.overlaps(i,l);if(m){var n=c.detect_overlapping_region(i,l);if(n===d||"all"===d){var o=c.calculate_overlapped_area_coords(i,l),p=c.calculate_overlapped_area(o);if(0!==p){var q={area:p,area_coords:o,region:n,coords:l,player_coords:i,el:j};c.options.on_overlap&&c.options.on_overlap.call(this,q),e.push(k),f.push(q)}}}}return(c.options.on_overlap_stop||c.options.on_overlap_start)&&this.manage_colliders_start_stop(e,c.options.on_overlap_start,c.options.on_overlap_stop),this.last_colliders_coords=e,f},e.get_closest_colliders=function(a){var b=this.find_collisions(a);return b.sort(function(a,b){return"C"===a.region&&"C"===b.region?a.coords.y1this.player_max_left?e=this.player_max_left:e=q&&(l=n+h,t>l&&(this.$scroll_container[i](l),this["scroll_offset_"+a]+=h)),r>=s&&(l=n-h,l>0&&(this.$scroll_container[i](l),this["scroll_offset_"+a]-=h)),this},j.manage_scroll=function(a){this.scroll_in("x",a),this.scroll_in("y",a)},j.calculate_dimensions=function(){this.scroller_height=this.$scroll_container.height(),this.scroller_width=this.$scroll_container.width()},j.drag_handler=function(b){if(!this.disabled&&(1===b.which||f)&&!this.ignore_drag(b)){var c=this,d=!0;return this.$player=a(b.currentTarget),this.el_init_pos=this.get_actual_pos(this.$player),this.mouse_init_pos=this.get_mouse_pos(b),this.offsetY=this.mouse_init_pos.top-this.el_init_pos.top,this.$document.on(this.pointer_events.move,function(a){var b=c.get_mouse_pos(a),e=Math.abs(b.left-c.mouse_init_pos.left),f=Math.abs(b.top-c.mouse_init_pos.top);return e>c.options.distance||f>c.options.distance?d?(d=!1,c.on_dragstart.call(c,a),!1):(c.is_dragging===!0&&c.on_dragmove.call(c,a),!1):!1}),f?void 0:!1}},j.on_dragstart=function(a){if(a.preventDefault(),this.is_dragging)return this;this.drag_start=this.is_dragging=!0;var b=this.$container.offset();return this.baseX=Math.round(b.left),this.baseY=Math.round(b.top),"clone"===this.options.helper?(this.$helper=this.$player.clone().appendTo(this.$container).addClass("helper"),this.helper=!0):this.helper=!1,this.scroll_container_offset_y=this.$scroll_container.scrollTop(),this.scroll_container_offset_x=this.$scroll_container.scrollLeft(),this.el_init_offset=this.$player.offset(),this.player_width=this.$player.width(),this.set_limits(this.options.container_width),this.options.start&&this.options.start.call(this.$player,a,this.get_drag_data(a)),!1},j.on_dragmove=function(a){var b=this.get_drag_data(a);this.options.autoscroll&&this.manage_scroll(b),this.options.move_element&&(this.helper?this.$helper:this.$player).css({position:"absolute",left:b.position.left,top:b.position.top});var c=this.last_position||b.position;return b.prev_position=c,this.options.drag&&this.options.drag.call(this.$player,a,b),this.last_position=b.position,!1},j.on_dragstop=function(a){var b=this.get_drag_data(a);return this.drag_start=!1,this.options.stop&&this.options.stop.call(this.$player,a,b),this.helper&&this.options.remove_helper&&this.$helper.remove(),!1},j.on_select_start=function(a){return this.disabled||this.ignore_drag(a)?void 0:!1},j.enable=function(){this.disabled=!1},j.disable=function(){this.disabled=!0},j.destroy=function(){this.disable(),this.$container.off(this.ns),this.$document.off(this.ns),d.off(this.ns),a.removeData(this.$container,"drag")},j.ignore_drag=function(b){return this.options.handle?!a(b.target).is(this.options.handle):a.isFunction(this.options.ignore_dragging)?this.options.ignore_dragging(b):this.options.resize?!a(b.target).is(this.options.items):a(b.target).is(this.options.ignore_dragging.join(", "))},a.fn.gridDraggable=function(a){return new b(this,a)},a.fn.dragg=function(c){return this.each(function(){a.data(this,"drag")||a.data(this,"drag",new b(this,c))})},b}),function(a,b){"use strict";"object"==typeof exports?module.exports=b(require("jquery"),require("./jquery.draggable.js"),require("./jquery.collision.js"),require("./jquery.coords.js"),require("./utils.js")):"function"==typeof define&&define.amd?define(["jquery","gridster-draggable","gridster-collision"],b):a.Gridster=b(a.$||a.jQuery,a.GridsterDraggable,a.GridsterCollision)}(this,function(a,b,c){"use strict";function d(b,c){this.options=a.extend(!0,{},g,c),this.options.draggable=this.options.draggable||{},this.options.draggable=a.extend(!0,{},this.options.draggable,{scroll_container:this.options.scroll_container}),this.$el=a(b),this.$scroll_container=this.options.scroll_container===window?a(window):this.$el.closest(this.options.scroll_container),this.$wrapper=this.$el.parent(),this.$widgets=this.$el.children(this.options.widget_selector).addClass("gs-w"),this.$changed=a([]),this.w_queue={},this.is_responsive()?this.min_widget_width=this.get_responsive_col_width():this.min_widget_width=this.options.widget_base_dimensions[0],this.min_widget_height=this.options.widget_base_dimensions[1],this.is_resizing=!1,this.min_col_count=this.options.min_cols,this.prev_col_count=this.min_col_count,this.generated_stylesheets=[],this.$style_tags=a([]),this.options.auto_init&&this.init()}function e(a){for(var b=["col","row","size_x","size_y"],c={},d=0,e=b.length;e>d;d++){var f=b[d];if(!(f in a))throw new Error("Not exists property `"+f+"`");var g=a[f];if(!g||isNaN(g))throw new Error("Invalid value of `"+f+"` property");c[f]=+g}return c}var f=a(window),g={namespace:"",widget_selector:"li",static_class:"static",widget_margins:[10,10],widget_base_dimensions:[400,225],extra_rows:0,extra_cols:0,min_cols:1,max_cols:1/0,min_rows:1,max_rows:15,autogenerate_stylesheet:!0,avoid_overlapped_widgets:!0,auto_init:!0,center_widgets:!1,responsive_breakpoint:!1,scroll_container:window,shift_larger_widgets_down:!0,move_widgets_down_only:!1,shift_widgets_up:!0,show_element:function(a,b){b?a.fadeIn(b):a.fadeIn()},hide_element:function(a,b){b?a.fadeOut(b):a.fadeOut()},serialize_params:function(a,b){return{col:b.col,row:b.row,size_x:b.size_x,size_y:b.size_y}},collision:{wait_for_mouseup:!1},draggable:{items:".gs-w:not(.static)",distance:4,ignore_dragging:b.defaults.ignore_dragging.slice(0)},resize:{enabled:!1,axes:["both"],handle_append_to:"",handle_class:"gs-resize-handle",max_size:[1/0,1/0],min_size:[1,1]}};d.defaults=g,d.generated_stylesheets=[],d.sort_by_row_asc=function(b){return b=b.sort(function(b,c){return b.row||(b=a(b).coords().grid,c=a(c).coords().grid),b=e(b),c=e(c),b.row>c.row?1:-1})},d.sort_by_row_and_col_asc=function(a){return a=a.sort(function(a,b){return a=e(a),b=e(b),a.row>b.row||a.row===b.row&&a.col>b.col?1:-1})},d.sort_by_col_asc=function(a){return a=a.sort(function(a,b){return a=e(a),b=e(b),a.col>b.col?1:-1})},d.sort_by_row_desc=function(a){return a=a.sort(function(a,b){return a=e(a),b=e(b),a.row+a.size_yi&&this.add_faux_rows(Math.max(d-i,0));var k={col:j,row:g.row,size_x:c,size_y:d};return this.mutate_widget_in_gridmap(b,g,k),this.set_dom_grid_height(),this.set_dom_grid_width(),f&&f.call(this,k.size_x,k.size_y),b},h.collapse_widget=function(a,b){var c=a.coords().grid,d=parseInt(a.attr("pre_expand_sizex")),e=parseInt(a.attr("pre_expand_sizey")),f=parseInt(a.attr("pre_expand_col")),g={col:f,row:c.row,size_x:d,size_y:e};return this.mutate_widget_in_gridmap(a,c,g),this.set_dom_grid_height(),this.set_dom_grid_width(),b&&b.call(this,g.size_x,g.size_y),a},h.fit_to_content=function(a,b,c,d){var e=a.coords().grid,f=this.$wrapper.width(),g=this.$wrapper.height(),h=this.options.widget_base_dimensions[0]+2*this.options.widget_margins[0],i=this.options.widget_base_dimensions[1]+2*this.options.widget_margins[1],j=Math.ceil((f+2*this.options.widget_margins[0])/h),k=Math.ceil((g+2*this.options.widget_margins[1])/i),l={col:e.col,row:e.row,size_x:Math.min(b,j),size_y:Math.min(c,k)};return this.mutate_widget_in_gridmap(a,e,l),this.set_dom_grid_height(),this.set_dom_grid_width(),d&&d.call(this,l.size_x,l.size_y),a},h.center_widgets=debounce(function(){var b,c=this.$wrapper.width();b=this.is_responsive()?this.get_responsive_col_width():this.options.widget_base_dimensions[0]+2*this.options.widget_margins[0];var d=2*Math.floor(Math.max(Math.floor(c/b),this.min_col_count)/2);this.options.min_cols=d,this.options.max_cols=d,this.options.extra_cols=0,this.set_dom_grid_width(d),this.cols=d;var e=(d-this.prev_col_count)/2;return 0>e?(this.get_min_col()>-1*e?this.shift_cols(e):this.resize_widget_dimensions(this.options),setTimeout(a.proxy(function(){this.resize_widget_dimensions(this.options)},this),0)):e>0?(this.resize_widget_dimensions(this.options),setTimeout(a.proxy(function(){this.shift_cols(e)},this),0)):(this.resize_widget_dimensions(this.options),setTimeout(a.proxy(function(){this.resize_widget_dimensions(this.options)},this),0)),this.prev_col_count=d,this},200),h.get_min_col=function(){return Math.min.apply(Math,this.$widgets.map(a.proxy(function(b,c){return this.get_cells_occupied(a(c).coords().grid).cols},this)).get())},h.shift_cols=function(b){var c=this.$widgets.map(a.proxy(function(b,c){var d=a(c);return this.dom_to_coords(d)},this));c=d.sort_by_row_and_col_asc(c),c.each(a.proxy(function(c,d){var e=a(d.el),f=e.coords().grid,g=parseInt(e.attr("data-col")),h={col:Math.max(Math.round(g+b),1),row:f.row,size_x:f.size_x,size_y:f.size_y};setTimeout(a.proxy(function(){this.mutate_widget_in_gridmap(e,f,h)},this),0)},this))},h.mutate_widget_in_gridmap=function(b,c,d){var e=c.size_y,f=this.get_cells_occupied(c),g=this.get_cells_occupied(d),h=[];a.each(f.cols,function(b,c){-1===a.inArray(c,g.cols)&&h.push(c)});var i=[];a.each(g.cols,function(b,c){-1===a.inArray(c,f.cols)&&i.push(c)});var j=[];a.each(f.rows,function(b,c){-1===a.inArray(c,g.rows)&&j.push(c)});var k=[];if(a.each(g.rows,function(b,c){-1===a.inArray(c,f.rows)&&k.push(c)}),this.remove_from_gridmap(c),i.length){var l=[d.col,d.row,d.size_x,Math.min(e,d.size_y),b];this.empty_cells.apply(this,l)}if(k.length){var m=[d.col,d.row,d.size_x,d.size_y,b];this.empty_cells.apply(this,m)}if(c.col=d.col,c.row=d.row,c.size_x=d.size_x,c.size_y=d.size_y,this.add_to_gridmap(d,b),b.removeClass("player-revert"),this.update_widget_dimensions(b,d),h.length){var n=[h[0],d.row,h[h.length-1]-h[0]+1,Math.min(e,d.size_y),b];this.remove_empty_cells.apply(this,n)}if(j.length){var o=[d.col,d.row,d.size_x,d.size_y,b];this.remove_empty_cells.apply(this,o)}return this.move_widget_up(b),this},h.empty_cells=function(b,c,d,e,f){var g=this.widgets_below({col:b,row:c-e,size_x:d,size_y:e});return g.not(f).each(a.proxy(function(b,d){var f=a(d),g=f.coords().grid;if(g.row<=c+e-1){var h=c+e-g.row;this.move_widget_down(f,h)}},this)),this.is_resizing||this.set_dom_grid_height(),this},h.remove_empty_cells=function(b,c,d,e,f){var g=this.widgets_below({col:b,row:c,size_x:d,size_y:e});return g.not(f).each(a.proxy(function(b,c){this.move_widget_up(a(c),e)},this)),this.set_dom_grid_height(),this},h.next_position=function(a,b){a||(a=1),b||(b=1);for(var c,e=this.gridmap,f=e.length,g=[],h=1;f>h;h++){c=e[h].length;for(var i=1;c>=i;i++){var j=this.can_move_to({size_x:a,size_y:b},h,i);j&&g.push({col:h,row:i,size_y:b,size_x:a})}}return g.length?d.sort_by_row_and_col_asc(g)[0]:!1},h.remove_by_grid=function(a,b){var c=this.is_widget(a,b);c&&this.remove_widget(c)},h.remove_widget=function(b,c,d){var e=b instanceof a?b:a(b);if(0===e.length)return this;var f=e.coords().grid;if(void 0===f)return this;a.isFunction(c)&&(d=c,c=!1),this.cells_occupied_by_placeholder={},this.$widgets=this.$widgets.not(e);var g=this.widgets_below(e);return this.remove_from_gridmap(f),this.options.hide_element.call(this,e,a.proxy(function(){e.remove(),c||g.each(a.proxy(function(b,c){this.move_widget_up(a(c),f.size_y)},this)),this.set_dom_grid_height(),d&&d.call(this,b)},this)),this},h.remove_all_widgets=function(b){return this.$widgets.each(a.proxy(function(a,c){this.remove_widget(c,!0,b)},this)),this},h.serialize=function(b){b||(b=this.$widgets);var c=[];return b.each(a.proxy(function(b,d){var e=a(d);"undefined"!=typeof e.coords().grid&&c.push(this.options.serialize_params(e,e.coords().grid))},this)),c},h.serialize_changed=function(){return this.serialize(this.$changed)},h.dom_to_coords=function(a){return{col:parseInt(a.attr("data-col"),10),row:parseInt(a.attr("data-row"),10),size_x:parseInt(a.attr("data-sizex"),10)||1,size_y:parseInt(a.attr("data-sizey"),10)||1,max_size_x:parseInt(a.attr("data-max-sizex"),10)||!1,max_size_y:parseInt(a.attr("data-max-sizey"),10)||!1,min_size_x:parseInt(a.attr("data-min-sizex"),10)||!1,min_size_y:parseInt(a.attr("data-min-sizey"),10)||!1,el:a}},h.register_widget=function(b){var c=b instanceof a,d=c?this.dom_to_coords(b):b,e=!1;c||(b=d.el);var f=this.can_go_widget_up(d);return this.options.shift_widgets_up&&f&&(d.row=f,b.attr("data-row",f),this.$el.trigger("gridster:positionchanged",[d]),e=!0),this.options.avoid_overlapped_widgets&&!this.can_move_to({size_x:d.size_x,size_y:d.size_y},d.col,d.row)&&(a.extend(d,this.next_position(d.size_x,d.size_y)),b.attr({"data-col":d.col,"data-row":d.row,"data-sizex":d.size_x,"data-sizey":d.size_y}),e=!0),b.data("coords",b.coords()),b.data("coords").grid=d,this.add_to_gridmap(d,b),this.update_widget_dimensions(b,d),this.options.resize.enabled&&this.add_resize_handle(b),e},h.update_widget_position=function(a,b){return this.for_each_cell_occupied(a,function(a,c){return this.gridmap[a]?void(this.gridmap[a][c]=b):this}),this},h.update_widget_dimensions=function(a,b){var c=b.size_x*(this.is_responsive()?this.get_responsive_col_width():this.options.widget_base_dimensions[0])+(b.size_x-1)*this.options.widget_margins[0],d=b.size_y*this.options.widget_base_dimensions[1]+(b.size_y-1)*this.options.widget_margins[1];return a.data("coords").update({width:c,height:d}),a.attr({"data-col":b.col,"data-row":b.row,"data-sizex":b.size_x,"data-sizey":b.size_y}),this},h.update_widgets_dimensions=function(){return a.each(this.$widgets,a.proxy(function(b,c){var d=a(c).coords().grid;"object"==typeof d&&this.update_widget_dimensions(a(c),d)},this)),this},h.remove_from_gridmap=function(a){return this.update_widget_position(a,!1)},h.add_to_gridmap=function(a,b){this.update_widget_position(a,b||a.el)},h.draggable=function(){var b=this,c=a.extend(!0,{},this.options.draggable,{offset_left:this.options.widget_margins[0],offset_top:this.options.widget_margins[1],container_width:this.cols*this.min_widget_width+(this.cols+1)*this.options.widget_margins[0],limit:!0,start:function(c,d){b.$widgets.filter(".player-revert").removeClass("player-revert"),b.$player=a(this),b.$helper=a(d.$helper),b.helper=!b.$helper.is(b.$player),b.on_start_drag.call(b,c,d),b.$el.trigger("gridster:dragstart")},stop:function(a,c){b.on_stop_drag.call(b,a,c),b.$el.trigger("gridster:dragstop")},drag:throttle(function(a,c){b.on_drag.call(b,a,c),b.$el.trigger("gridster:drag")},60)});this.drag_api=this.$el.dragg(c).data("drag")},h.resizable=function(){return this.resize_api=this.$el.gridDraggable({items:"."+this.options.resize.handle_class,offset_left:this.options.widget_margins[0],container_width:this.container_width,move_element:!1,resize:!0,limit:this.options.max_cols!==1/0,scroll_container:this.options.scroll_container,start:a.proxy(this.on_start_resize,this),stop:a.proxy(function(b,c){delay(a.proxy(function(){this.on_stop_resize(b,c)},this),120)},this),drag:throttle(a.proxy(this.on_resize,this),60)}),this},h.setup_resize=function(){this.resize_handle_class=this.options.resize.handle_class;var b=this.options.resize.axes,c='';return this.resize_handle_tpl=a.map(b,function(a){return c.replace("{type}",a)}).join(""),a.isArray(this.options.draggable.ignore_dragging)&&this.options.draggable.ignore_dragging.push("."+this.resize_handle_class),this},h.on_start_drag=function(b,c){this.$helper.add(this.$player).add(this.$wrapper).addClass("dragging"),this.highest_col=this.get_highest_occupied_cell().col,this.$player.addClass("player"),this.player_grid_data=this.$player.coords().grid,this.placeholder_grid_data=a.extend({},this.player_grid_data),this.set_dom_grid_height(this.$el.height()+this.player_grid_data.size_y*this.min_widget_height),this.set_dom_grid_width(this.cols);var d=this.player_grid_data.size_x,e=this.cols-this.highest_col;this.options.max_cols===1/0&&d>=e&&this.add_faux_cols(Math.min(d-e,1));var f=this.faux_grid,g=this.$player.data("coords").coords;this.cells_occupied_by_player=this.get_cells_occupied(this.player_grid_data),this.cells_occupied_by_placeholder=this.get_cells_occupied(this.placeholder_grid_data),this.last_cols=[],this.last_rows=[],this.collision_api=this.$helper.collision(f,this.options.collision),this.$preview_holder=a("<"+this.$player.get(0).tagName+" />",{"class":"preview-holder","data-row":this.$player.attr("data-row"),"data-col":this.$player.attr("data-col"),css:{width:g.width,height:g.height}}).appendTo(this.$el),this.options.draggable.start&&this.options.draggable.start.call(this,b,c)},h.on_drag=function(a,b){if(null===this.$player)return!1;var c=this.options.widget_margins,d=this.$preview_holder.attr("data-col"),e=this.$preview_holder.attr("data-row"),f={left:b.position.left+this.baseX-c[0]*d,top:b.position.top+this.baseY-c[1]*e};if(this.options.max_cols===1/0){var g=this.placeholder_grid_data.col+this.placeholder_grid_data.size_x-1;g>=this.cols-1&&this.options.max_cols>=this.cols+1&&(this.add_faux_cols(1),this.set_dom_grid_width(this.cols+1),this.drag_api.set_limits(this.cols*this.min_widget_width+(this.cols+1)*this.options.widget_margins[0])),this.collision_api.set_colliders(this.faux_grid)}this.colliders_data=this.collision_api.get_closest_colliders(f),this.on_overlapped_column_change(this.on_start_overlapping_column,this.on_stop_overlapping_column),this.on_overlapped_row_change(this.on_start_overlapping_row,this.on_stop_overlapping_row),this.helper&&this.$player&&this.$player.css({left:b.position.left,top:b.position.top}),this.options.draggable.drag&&this.options.draggable.drag.call(this,a,b)},h.on_stop_drag=function(a,b){this.$helper.add(this.$player).add(this.$wrapper).removeClass("dragging");var c=this.options.widget_margins,d=this.$preview_holder.attr("data-col"),e=this.$preview_holder.attr("data-row");b.position.left=b.position.left+this.baseX-c[0]*d,b.position.top=b.position.top+this.baseY-c[1]*e,this.colliders_data=this.collision_api.get_closest_colliders(b.position),this.on_overlapped_column_change(this.on_start_overlapping_column,this.on_stop_overlapping_column),this.on_overlapped_row_change(this.on_start_overlapping_row,this.on_stop_overlapping_row),this.$changed=this.$changed.add(this.$player),this.placeholder_grid_data.el.coords().grid.col===this.placeholder_grid_data.col&&this.placeholder_grid_data.el.coords().grid.row===this.placeholder_grid_data.row||(this.update_widget_position(this.placeholder_grid_data.el.coords().grid,!1),this.options.collision.wait_for_mouseup&&this.for_each_cell_occupied(this.placeholder_grid_data,function(a,b){if(this.is_widget(a,b)){var c=this.placeholder_grid_data.row+this.placeholder_grid_data.size_y,d=parseInt(this.gridmap[a][b][0].getAttribute("data-row")),e=c-d;this.move_widget_down(this.is_widget(a,b),e)}})),this.cells_occupied_by_player=this.get_cells_occupied(this.placeholder_grid_data);var f=this.placeholder_grid_data.col,g=this.placeholder_grid_data.row;this.set_cells_player_occupies(f,g),this.$player.coords().grid.row=g,this.$player.coords().grid.col=f,this.$player.addClass("player-revert").removeClass("player").attr({"data-col":f,"data-row":g}).css({left:"",top:""}),this.options.draggable.stop&&this.options.draggable.stop.call(this,a,b),this.$preview_holder.remove(),this.$player=null,this.$helper=null,this.placeholder_grid_data={},this.player_grid_data={},this.cells_occupied_by_placeholder={},this.cells_occupied_by_player={},this.w_queue={},this.set_dom_grid_height(),this.set_dom_grid_width(),this.options.max_cols===1/0&&this.drag_api.set_limits(this.cols*this.min_widget_width+(this.cols+1)*this.options.widget_margins[0])},h.on_start_resize=function(b,c){this.$resized_widget=c.$player.closest(".gs-w"),this.resize_coords=this.$resized_widget.coords(),this.resize_wgd=this.resize_coords.grid,this.resize_initial_width=this.resize_coords.coords.width,this.resize_initial_height=this.resize_coords.coords.height,this.resize_initial_sizex=this.resize_coords.grid.size_x,this.resize_initial_sizey=this.resize_coords.grid.size_y,this.resize_initial_col=this.resize_coords.grid.col,this.resize_last_sizex=this.resize_initial_sizex,this.resize_last_sizey=this.resize_initial_sizey,this.resize_max_size_x=Math.min(this.resize_wgd.max_size_x||this.options.resize.max_size[0],this.options.max_cols-this.resize_initial_col+1),this.resize_max_size_y=this.resize_wgd.max_size_y||this.options.resize.max_size[1],this.resize_min_size_x=this.resize_wgd.min_size_x||this.options.resize.min_size[0]||1,this.resize_min_size_y=this.resize_wgd.min_size_y||this.options.resize.min_size[1]||1,this.resize_initial_last_col=this.get_highest_occupied_cell().col,this.set_dom_grid_width(this.cols),this.resize_dir={right:c.$player.is("."+this.resize_handle_class+"-x"),bottom:c.$player.is("."+this.resize_handle_class+"-y")},this.is_responsive()||this.$resized_widget.css({"min-width":this.options.widget_base_dimensions[0],"min-height":this.options.widget_base_dimensions[1]});var d=this.$resized_widget.get(0).tagName;this.$resize_preview_holder=a("<"+d+" />",{"class":"preview-holder resize-preview-holder","data-row":this.$resized_widget.attr("data-row"),"data-col":this.$resized_widget.attr("data-col"), -css:{width:this.resize_initial_width,height:this.resize_initial_height}}).appendTo(this.$el),this.$resized_widget.addClass("resizing"),this.options.resize.start&&this.options.resize.start.call(this,b,c,this.$resized_widget),this.$el.trigger("gridster:resizestart")},h.on_stop_resize=function(b,c){this.$resized_widget.removeClass("resizing").css({width:"",height:"","min-width":"","min-height":""}),delay(a.proxy(function(){this.$resize_preview_holder.remove().css({"min-width":"","min-height":""}),this.options.resize.stop&&this.options.resize.stop.call(this,b,c,this.$resized_widget),this.$el.trigger("gridster:resizestop")},this),300),this.set_dom_grid_width(),this.set_dom_grid_height(),this.options.max_cols===1/0&&this.drag_api.set_limits(this.cols*this.min_widget_width)},h.on_resize=function(a,b){var c,d=b.pointer.diff_left,e=b.pointer.diff_top,f=this.is_responsive()?this.get_responsive_col_width():this.options.widget_base_dimensions[0],g=this.options.widget_base_dimensions[1],h=this.options.widget_margins[0],i=this.options.widget_margins[1],j=this.resize_max_size_x,k=this.resize_min_size_x,l=this.resize_max_size_y,m=this.resize_min_size_y,n=this.options.max_cols===1/0,o=Math.ceil(d/(f+2*h)-.2),p=Math.ceil(e/(g+2*i)-.2),q=Math.max(1,this.resize_initial_sizex+o),r=Math.max(1,this.resize_initial_sizey+p),s=Math.floor(this.container_width/this.min_widget_width-this.resize_initial_col+1),t=s*this.min_widget_width+(s-1)*h;q=Math.max(Math.min(q,j),k),q=Math.min(s,q),c=j*f+(q-1)*h;var u=Math.min(c,t),v=k*f+(q-1)*h;r=Math.max(Math.min(r,l),m);var w=l*g+(r-1)*i,x=m*g+(r-1)*i;if(this.resize_dir.right?r=this.resize_initial_sizey:this.resize_dir.bottom&&(q=this.resize_initial_sizex),n){var y=this.resize_initial_col+q-1;n&&this.resize_initial_last_col<=y&&(this.set_dom_grid_width(Math.max(y+1,this.cols)),this.colsd;d++)-1===a.inArray(e[d],this.last_cols)&&(b||a.noop).call(this,e[d]);for(d=0;f>d;d++)-1===a.inArray(this.last_cols[d],e)&&(c||a.noop).call(this,this.last_cols[d]);return this.last_cols=e,this},h.on_overlapped_row_change=function(b,c){if(!this.colliders_data.length)return this;var d,e=this.get_targeted_rows(this.colliders_data[0].el.data.row),f=this.last_rows.length,g=e.length;for(d=0;g>d;d++)-1===a.inArray(e[d],this.last_rows)&&(b||a.noop).call(this,e[d]);for(d=0;f>d;d++)-1===a.inArray(this.last_rows[d],e)&&(c||a.noop).call(this,this.last_rows[d]);this.last_rows=e},h.set_player=function(b,c,d){var e=this,f=!1,g=d?{col:b}:e.colliders_data[0].el.data,h=g.col,i=g.row||c;this.player_grid_data={col:h,row:i,size_y:this.player_grid_data.size_y,size_x:this.player_grid_data.size_x},this.cells_occupied_by_player=this.get_cells_occupied(this.player_grid_data),this.cells_occupied_by_placeholder=this.get_cells_occupied(this.placeholder_grid_data);var j=this.get_widgets_overlapped(this.player_grid_data),k=this.player_grid_data.size_y,l=this.player_grid_data.size_x,m=this.cells_occupied_by_placeholder,n=this;if(j.each(a.proxy(function(b,c){var d=a(c),e=d.coords().grid,g=m.cols[0]+l-1,o=m.rows[0]+k-1;if(d.hasClass(n.options.static_class))return!0;if(n.options.collision.wait_for_mouseup&&n.drag_api.is_dragging)n.placeholder_grid_data.col=h,n.placeholder_grid_data.row=i,n.cells_occupied_by_placeholder=n.get_cells_occupied(n.placeholder_grid_data),n.$preview_holder.attr({"data-row":i,"data-col":h});else if(e.size_x<=l&&e.size_y<=k)if(n.is_swap_occupied(m.cols[0],e.row,e.size_x,e.size_y)||n.is_player_in(m.cols[0],e.row)||n.is_in_queue(m.cols[0],e.row,d))if(n.is_swap_occupied(g,e.row,e.size_x,e.size_y)||n.is_player_in(g,e.row)||n.is_in_queue(g,e.row,d))if(n.is_swap_occupied(e.col,m.rows[0],e.size_x,e.size_y)||n.is_player_in(e.col,m.rows[0])||n.is_in_queue(e.col,m.rows[0],d))if(n.is_swap_occupied(e.col,o,e.size_x,e.size_y)||n.is_player_in(e.col,o)||n.is_in_queue(e.col,o,d))if(n.is_swap_occupied(m.cols[0],m.rows[0],e.size_x,e.size_y)||n.is_player_in(m.cols[0],m.rows[0])||n.is_in_queue(m.cols[0],m.rows[0],d))for(var p=0;l>p;p++)for(var q=0;k>q;q++){var r=m.cols[0]+p,s=m.rows[0]+q;if(!n.is_swap_occupied(r,s,e.size_x,e.size_y)&&!n.is_player_in(r,s)&&!n.is_in_queue(r,s,d)){f=n.queue_widget(r,s,d),p=l;break}}else n.options.move_widgets_down_only?j.each(a.proxy(function(b,c){var d=a(c);n.can_go_down(d)&&d.coords().grid.row===n.player_grid_data.row&&!n.is_in_queue(g,e.row,d)&&(n.move_widget_down(d,n.player_grid_data.size_y),n.set_placeholder(h,i))})):f=n.queue_widget(m.cols[0],m.rows[0],d);else f=n.queue_widget(e.col,o,d);else f=n.queue_widget(e.col,m.rows[0],d);else f=n.queue_widget(g,e.row,d);else n.options.move_widgets_down_only?j.each(a.proxy(function(b,c){var d=a(c);n.can_go_down(d)&&d.coords().grid.row===n.player_grid_data.row&&!n.is_in_queue(d.coords().grid.col,e.row,d)&&(n.move_widget_down(d,n.player_grid_data.size_y),n.set_placeholder(h,i))})):f=n.queue_widget(m.cols[0],e.row,d);else n.options.shift_larger_widgets_down&&!f&&j.each(a.proxy(function(b,c){var d=a(c);n.can_go_down(d)&&d.coords().grid.row===n.player_grid_data.row&&(n.move_widget_down(d,n.player_grid_data.size_y),n.set_placeholder(h,i))}));n.clean_up_changed()})),f&&this.can_placeholder_be_set(h,i,l,k)){for(var o in this.w_queue){var p=parseInt(o.split("_")[0]),q=parseInt(o.split("_")[1]);"full"!==this.w_queue[o]&&this.new_move_widget_to(this.w_queue[o],p,q)}this.set_placeholder(h,i)}if(!j.length){if(this.options.shift_widgets_up){var r=this.can_go_player_up(this.player_grid_data);r!==!1&&(i=r)}this.can_placeholder_be_set(h,i,l,k)&&this.set_placeholder(h,i)}return this.w_queue={},{col:h,row:i}},h.is_swap_occupied=function(a,b,c,d){for(var e=!1,f=0;c>f;f++)for(var g=0;d>g;g++){var h=a+f,i=b+g,j=h+"_"+i;if(this.is_occupied(h,i))e=!0;else if(j in this.w_queue){if("full"===this.w_queue[j]){e=!0;continue}var k=this.w_queue[j],l=k.coords().grid;this.is_widget_under_player(l.col,l.row)||delete this.w_queue[j]}i>parseInt(this.options.max_rows)&&(e=!0),h>parseInt(this.options.max_cols)&&(e=!0),this.is_player_in(h,i)&&(e=!0)}return e},h.can_placeholder_be_set=function(a,b,c,d){for(var e=!0,f=0;c>f;f++)for(var g=0;d>g;g++){var h=a+f,i=b+g,j=this.is_widget(h,i);i>parseInt(this.options.max_rows)&&(e=!1),h>parseInt(this.options.max_cols)&&(e=!1),this.is_occupied(h,i)&&!this.is_widget_queued_and_can_move(j)&&(e=!1)}return e},h.queue_widget=function(a,b,c){var d=c,e=d.coords().grid,f=a+"_"+b;if(f in this.w_queue)return!1;this.w_queue[f]=d;for(var g=0;g=0&&a.inArray(c,d.rows)>=0},h.is_placeholder_in=function(b,c){var d=this.cells_occupied_by_placeholder||{};return this.is_placeholder_in_col(b)&&a.inArray(c,d.rows)>=0},h.is_placeholder_in_col=function(b){var c=this.cells_occupied_by_placeholder||[];return a.inArray(b,c.cols)>=0},h.is_empty=function(a,b){return"undefined"!=typeof this.gridmap[a]?"undefined"!=typeof this.gridmap[a][b]&&this.gridmap[a][b]===!1:!0},h.is_valid_col=function(a,b){return this.options.max_cols===1/0?!0:this.cols>=this.calculate_highest_col(a,b)},h.is_valid_row=function(a,b){return this.rows>=this.calculate_highest_row(a,b)},h.calculate_highest_col=function(a,b){return a+(b||1)-1},h.calculate_highest_row=function(a,b){return a+(b||1)-1},h.is_occupied=function(a,b){return this.gridmap[a]?!!this.gridmap[a][b]:!1},h.is_widget=function(a,b){var c=this.gridmap[a];return c?(c=c[b],c?c:!1):!1},h.is_static=function(a,b){var c=this.gridmap[a];return c?(c=c[b],!(!c||!c.hasClass(this.options.static_class))):!1},h.is_widget_under_player=function(a,b){return this.is_widget(a,b)?this.is_player_in(a,b):!1},h.get_widgets_under_player=function(b){b||(b=this.cells_occupied_by_player||{cols:[],rows:[]});var c=a([]);return a.each(b.cols,a.proxy(function(d,e){a.each(b.rows,a.proxy(function(a,b){this.is_widget(e,b)&&(c=c.add(this.gridmap[e][b]))},this))},this)),c},h.set_placeholder=function(b,c){var d=a.extend({},this.placeholder_grid_data),e=b+d.size_x-1;e>this.cols&&(b-=e-b);var f=this.placeholder_grid_data.row0&&(this.is_empty(a,h)||this.is_player(a,h)||this.is_widget(a,h)&&g[h].is(f));)d[a].push(h),e=e>h?h:e;return 0===d[a].length?(c=!1,!0):void d[a].sort(function(a,b){return a-b})}),c?this.get_valid_rows(a,d,e):!1},h.can_go_widget_up=function(a){var b=a.row+a.size_y-1,c=!0,d=[],e=1e4;return this.for_each_column_occupied(a,function(f){var g=this.gridmap[f];d[f]=[];for(var h=b+1;--h>0&&(!this.is_widget(f,h)||this.is_player_in(f,h)||g[h].is(a.el));)this.is_player(f,h)||this.is_placeholder_in(f,h)||this.is_player_in(f,h)||d[f].push(h),e>h&&(e=h);return 0===d[f].length?(c=!1,!0):void d[f].sort(function(a,b){return a-b})}),c?this.get_valid_rows(a,d,e):!1},h.get_valid_rows=function(b,c,d){for(var e=b.row,f=b.row+b.size_y-1,g=b.size_y,h=d-1,i=[];++h<=f;){var j=!0;if(a.each(c,function(b,c){a.isArray(c)&&-1===a.inArray(h,c)&&(j=!1)}),j===!0&&(i.push(h),i.length===g))break}var k=!1;return 1===g?i[0]!==e&&(k=i[0]||!1):i[0]!==e&&(k=this.get_consecutive_numbers_index(i,g)),k},h.get_consecutive_numbers_index=function(a,b){for(var c=a.length,d=[],e=!0,f=-1,g=0;c>g;g++){if(e||a[g]===f+1){if(d.push(g),d.length===b)break;e=!1}else d=[],e=!0;f=a[g]}return d.length>=b?a[d[0]]:!1},h.get_widgets_overlapped=function(){var b=a([]),c=[],d=this.cells_occupied_by_player.rows.slice(0);return d.reverse(),a.each(this.cells_occupied_by_player.cols,a.proxy(function(e,f){a.each(d,a.proxy(function(d,e){if(!this.gridmap[f])return!0;var g=this.gridmap[f][e];this.is_occupied(f,e)&&!this.is_player(g)&&-1===a.inArray(g,c)&&(b=b.add(g),c.push(g))},this))},this)),b},h.on_start_overlapping_column=function(a){this.set_player(a,void 0,!1)},h.on_start_overlapping_row=function(a){this.set_player(void 0,a,!1)},h.on_stop_overlapping_column=function(a){var b=this;this.options.shift_larger_widgets_down&&this.for_each_widget_below(a,this.cells_occupied_by_player.rows[0],function(a,c){b.move_widget_up(this,b.player_grid_data.size_y)})},h.on_stop_overlapping_row=function(a){var b=this,c=this.cells_occupied_by_player.cols;if(this.options.shift_larger_widgets_down)for(var d=0,e=c.length;e>d;d++)this.for_each_widget_below(c[d],a,function(a,c){b.move_widget_up(this,b.player_grid_data.size_y)})},h.new_move_widget_to=function(a,b,c){var d=a.coords().grid;return this.remove_from_gridmap(d),d.row=c,d.col=b,this.add_to_gridmap(d),a.attr("data-row",c),a.attr("data-col",b),this.update_widget_position(d,a),this.$changed=this.$changed.add(a),this},h.move_widget=function(a,b,c,d){var e=a.coords().grid,f={col:b,row:c,size_x:e.size_x,size_y:e.size_y};return this.mutate_widget_in_gridmap(a,e,f),this.set_dom_grid_height(),this.set_dom_grid_width(),d&&d.call(this,f.col,f.row),a},h.move_widget_to=function(b,c){var d=this,e=b.coords().grid,f=this.widgets_below(b),g=this.can_move_to(e,e.col,c);return g===!1?!1:(this.remove_from_gridmap(e),e.row=c,this.add_to_gridmap(e),b.attr("data-row",c),this.$changed=this.$changed.add(b),f.each(function(b,c){var e=a(c),f=e.coords().grid,g=d.can_go_widget_up(f);g&&g!==f.row&&d.move_widget_to(e,g)}),this)},h.move_widget_up=function(b,c){if(void 0===c)return!1;var d=b.coords().grid,e=d.row,f=[];return c||(c=1),this.can_go_up(b)?void this.for_each_column_occupied(d,function(d){if(-1===a.inArray(b,f)){var g=b.coords().grid,h=e-c;if(h=this.can_go_up_to_row(g,d,h),!h)return!0;this.remove_from_gridmap(g),g.row=h,this.add_to_gridmap(g),b.attr("data-row",g.row),this.$changed=this.$changed.add(b),f.push(b)}}):!1},h.move_widget_down=function(b,c){var d,e,f,g;if(0>=c)return!1;if(d=b.coords().grid,e=d.row,f=[],g=c,!b)return!1;if(-1===a.inArray(b,f)){var h=b.coords().grid,i=e+c,j=this.widgets_below(b);this.remove_from_gridmap(h),j.each(a.proxy(function(b,c){var d=a(c),e=d.coords().grid,f=this.displacement_diff(e,h,g);f>0&&this.move_widget_down(d,f)},this)),h.row=i,this.update_widget_position(h,b),b.attr("data-row",h.row),this.$changed=this.$changed.add(b),f.push(b)}},h.can_go_up_to_row=function(b,c,d){var e,f=!0,g=[],h=b.row;if(this.for_each_column_occupied(b,function(a){for(g[a]=[],e=h;e--&&this.is_empty(a,e)&&!this.is_placeholder_in(a,e);)g[a].push(e);return g[a].length?void 0:(f=!1,!0)}),!f)return!1;for(e=d,e=1;h>e;e++){for(var i=!0,j=0,k=g.length;k>j;j++)g[j]&&-1===a.inArray(e,g[j])&&(i=!1);if(i===!0){f=e;break}}return f},h.displacement_diff=function(a,b,c){var d=a.row,e=[],f=b.row+b.size_y;this.for_each_column_occupied(a,function(a){for(var b=0,c=f;d>c;c++)this.is_empty(a,c)&&(b+=1);e.push(b)});var g=Math.max.apply(Math,e);return c-=g,c>0?c:0},h.widgets_below=function(b){var c=a([]),e=a.isPlainObject(b)?b:b.coords().grid;if(void 0===e)return c;var f=this,g=e.row+e.size_y-1;return this.for_each_column_occupied(e,function(b){f.for_each_widget_below(b,g,function(b,d){return f.is_player(this)||-1!==a.inArray(this,c)?void 0:(c=c.add(this),!0)})}),d.sort_by_row_asc(c)},h.set_cells_player_occupies=function(a,b){return this.remove_from_gridmap(this.placeholder_grid_data),this.placeholder_grid_data.col=a,this.placeholder_grid_data.row=b,this.add_to_gridmap(this.placeholder_grid_data,this.$player),this},h.empty_cells_player_occupies=function(){return this.remove_from_gridmap(this.placeholder_grid_data),this},h.can_go_down=function(b){var c=!0,d=this;return b.hasClass(this.options.static_class)&&(c=!1),this.widgets_below(b).each(function(){a(this).hasClass(d.options.static_class)&&(c=!1)}),c},h.can_go_up=function(a){var b=a.coords().grid,c=b.row,d=c-1,e=!0;return 1===c?!1:(this.for_each_column_occupied(b,function(a){return this.is_occupied(a,d)||this.is_player(a,d)||this.is_placeholder_in(a,d)||this.is_player_in(a,d)?(e=!1,!0):void 0}),e)},h.can_move_to=function(a,b,c){var d=a.el,e={size_y:a.size_y,size_x:a.size_x,col:b,row:c},f=!0;if(this.options.max_cols!==1/0){var g=b+a.size_x-1;if(g>this.cols)return!1}return this.options.max_rows=d;d++)c.push(d);return c},h.get_targeted_rows=function(a){for(var b=(a||this.player_grid_data.row)+(this.player_grid_data.size_y-1),c=[],d=a;b>=d;d++)c.push(d);return c},h.get_cells_occupied=function(b){var c,d={cols:[],rows:[]};for(arguments[1]instanceof a&&(b=arguments[1].coords().grid),c=0;c0&&this.is_widget(d,m)&&-1===a.inArray(g[d][m],l)&&(h=f.call(g[d][m],d,m),l.push(g[d][m]),h)););},"for_each/below":function(){for(m=e+1,i=g[d].length;i>m;m++)this.is_widget(d,m)&&-1===a.inArray(g[d][m],l)&&(h=f.call(g[d][m],d,m),l.push(g[d][m]))}};n[j]&&n[j].call(this)}},h.for_each_widget_above=function(a,b,c){return this._traversing_widgets("for_each","above",a,b,c),this},h.for_each_widget_below=function(a,b,c){return this._traversing_widgets("for_each","below",a,b,c),this},h.get_highest_occupied_cell=function(){for(var a,b=this.gridmap,c=b[1].length,d=[],e=[],f=b.length-1;f>=1;f--)for(a=c-1;a>=1;a--)if(this.is_widget(f,a)){d.push(a),e.push(f);break}return{col:Math.max.apply(Math,e),row:Math.max.apply(Math,d)}},h.get_widgets_in_range=function(b,c,d,e){var f,g,h,i,j=a([]);for(f=d;f>=b;f--)for(g=e;g>=c;g--)h=this.is_widget(f,g),h!==!1&&(i=h.data("coords").grid,i.col>=b&&i.col<=d&&i.row>=c&&i.row<=e&&(j=j.add(h)));return j},h.get_widgets_at_cell=function(a,b){return this.get_widgets_in_range(a,b,a,b)},h.get_widgets_from=function(b,c){var d=a();return b&&(d=d.add(this.$widgets.filter(function(){var c=parseInt(a(this).attr("data-col"));return c===b||c>b}))),c&&(d=d.add(this.$widgets.filter(function(){var b=parseInt(a(this).attr("data-row"));return b===c||b>c}))),d},h.set_dom_grid_height=function(a){if("undefined"==typeof a){var b=this.get_highest_occupied_cell().row;a=(b+1)*this.options.widget_margins[1]+b*this.min_widget_height}return this.container_height=a,this.$el.css("height",this.container_height),this},h.set_dom_grid_width=function(a){"undefined"==typeof a&&(a=this.get_highest_occupied_cell().col);var b=this.options.max_cols===1/0?this.options.max_cols:this.cols;return a=Math.min(b,Math.max(a,this.options.min_cols)),this.container_width=(a+1)*this.options.widget_margins[0]+a*this.min_widget_width,this.is_responsive()?(this.$el.css({"min-width":"100%","max-width":"100%"}),this):(this.$el.css("width",this.container_width),this)},h.is_responsive=function(){return this.options.autogenerate_stylesheet&&"auto"===this.options.widget_base_dimensions[0]&&this.options.max_cols!==1/0},h.get_responsive_col_width=function(){var a=this.cols||this.options.max_cols;return(this.$el[0].clientWidth-3-(a+1)*this.options.widget_margins[0])/a},h.resize_responsive_layout=function(){return this.min_widget_width=this.get_responsive_col_width(),this.generate_stylesheet(),this.update_widgets_dimensions(),this.drag_api.set_limits(this.cols*this.min_widget_width+(this.cols+1)*this.options.widget_margins[0]),this},h.toggle_collapsed_grid=function(a,b){return a?(this.$widgets.css({"margin-top":b.widget_margins[0],"margin-bottom":b.widget_margins[0],"min-height":b.widget_base_dimensions[1]}),this.$el.addClass("collapsed"),this.resize_api&&this.disable_resize(),this.drag_api&&this.disable()):(this.$widgets.css({"margin-top":"auto","margin-bottom":"auto","min-height":"auto"}),this.$el.removeClass("collapsed"),this.resize_api&&this.enable_resize(),this.drag_api&&this.enable()),this},h.generate_stylesheet=function(b){var c,e="",f=this.is_responsive()&&this.options.responsive_breakpoint&&a(window).width()=0)return!1;for(this.generated_stylesheets.push(g),d.generated_stylesheets.push(g),c=1;c<=b.cols+1;c++)e+=b.namespace+' [data-col="'+c+'"] { left:'+(f?this.options.widget_margins[0]:c*b.widget_margins[0]+(c-1)*b.widget_base_dimensions[0])+"px; }\n";for(c=1;c<=b.rows+1;c++)e+=b.namespace+' [data-row="'+c+'"] { top:'+(c*b.widget_margins[1]+(c-1)*b.widget_base_dimensions[1])+"px; }\n";for(var h=1;h<=b.rows;h++)e+=b.namespace+' [data-sizey="'+h+'"] { height:'+(f?"auto":h*b.widget_base_dimensions[1]+(h-1)*b.widget_margins[1])+(f?"":"px")+"; }\n";for(var i=1;i<=b.cols;i++){var j=i*b.widget_base_dimensions[0]+(i-1)*b.widget_margins[0];e+=b.namespace+' [data-sizex="'+i+'"] { width:'+(f?this.$wrapper.width()-2*this.options.widget_margins[0]:j>this.$wrapper.width()?this.$wrapper.width():j)+"px; }\n"}return this.remove_style_tags(),this.add_style_tag(e)},h.add_style_tag=function(a){var b=document,c="gridster-stylesheet";if(""!==this.options.namespace&&(c=c+"-"+this.options.namespace),!document.getElementById(c)){var d=b.createElement("style");d.id=c,b.getElementsByTagName("head")[0].appendChild(d),d.setAttribute("type","text/css"),d.styleSheet?d.styleSheet.cssText=a:d.appendChild(document.createTextNode(a)),this.remove_style_tags(),this.$style_tags=this.$style_tags.add(d)}return this},h.remove_style_tags=function(){var b=d.generated_stylesheets,c=this.generated_stylesheets;this.$style_tags.remove(),d.generated_stylesheets=a.map(b,function(b){return-1===a.inArray(b,c)?b:void 0})},h.generate_faux_grid=function(a,b){this.faux_grid=[],this.gridmap=[];var c,d;for(c=b;c>0;c--)for(this.gridmap[c]=[],d=a;d>0;d--)this.add_faux_cell(d,c);return this},h.add_faux_cell=function(b,c){var d=a({left:this.baseX+(c-1)*this.min_widget_width,top:this.baseY+(b-1)*this.min_widget_height,width:this.min_widget_width,height:this.min_widget_height,col:c,row:b,original_col:c,original_row:b}).coords();return a.isArray(this.gridmap[c])||(this.gridmap[c]=[]),"undefined"==typeof this.gridmap[c][b]&&(this.gridmap[c][b]=!1),this.faux_grid.push(d),this},h.add_faux_rows=function(a){a=window.parseInt(a,10);for(var b=this.rows,c=b+parseInt(a||1),d=c;d>b;d--)for(var e=this.cols;e>=1;e--)this.add_faux_cell(d,e);return this.rows=c,this.options.autogenerate_stylesheet&&this.generate_stylesheet(),this},h.add_faux_cols=function(a){a=window.parseInt(a,10);var b=this.cols,c=b+parseInt(a||1);c=Math.min(c,this.options.max_cols);for(var d=b+1;c>=d;d++)for(var e=this.rows;e>=1;e--)this.add_faux_cell(e,d);return this.cols=c,this.options.autogenerate_stylesheet&&this.generate_stylesheet(),this},h.recalculate_faux_grid=function(){var b=this.$wrapper.width();return this.baseX=(f.width()-b)/2,this.baseY=this.$wrapper.offset().top,"relative"===this.$wrapper.css("position")&&(this.baseX=this.baseY=0),a.each(this.faux_grid,a.proxy(function(a,b){this.faux_grid[a]=b.update({left:this.baseX+(b.data.col-1)*this.min_widget_width,top:this.baseY+(b.data.row-1)*this.min_widget_height})},this)),this.is_responsive()&&this.resize_responsive_layout(),this.options.center_widgets&&this.center_widgets(),this},h.resize_widget_dimensions=function(b){return b.widget_margins&&(this.options.widget_margins=b.widget_margins),b.widget_base_dimensions&&(this.options.widget_base_dimensions=b.widget_base_dimensions),this.min_widget_width=2*this.options.widget_margins[0]+this.options.widget_base_dimensions[0],this.min_widget_height=2*this.options.widget_margins[1]+this.options.widget_base_dimensions[1],this.$widgets.each(a.proxy(function(b,c){var d=a(c);this.resize_widget(d)},this)),this.generate_grid_and_stylesheet(),this.get_widgets_from_DOM(),this.set_dom_grid_height(),this.set_dom_grid_width(),this},h.get_widgets_from_DOM=function(){var b=this.$widgets.map(a.proxy(function(b,c){var d=a(c);return this.dom_to_coords(d)},this));b=d.sort_by_row_and_col_asc(b);var c=a(b).map(a.proxy(function(a,b){return this.register_widget(b)||null},this));return c.length&&this.$el.trigger("gridster:positionschanged"),this},h.get_num_widgets=function(){return this.$widgets.size()},h.set_num_columns=function(b){var c=this.options.max_cols,d=Math.floor(b/(this.min_widget_width+this.options.widget_margins[0]))+this.options.extra_cols,e=this.$widgets.map(function(){return a(this).attr("data-col")}).get();e.length||(e=[0]);var f=Math.max.apply(Math,e);this.cols=Math.max(f,d,this.options.min_cols),c!==1/0&&c>=f&&cNov 2020 - - - - diff --git a/frontend/favicon.ico b/frontend/favicon.ico deleted file mode 100755 index 035bf978e540acb8e5950ff6b8389f1ffa1f7b01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmb`H!41Mt3`32?06lT$$XeW3fo+(DAy}uxpeI?8f>ae(`AKajKfP2s)UzzA^Q_xZ zI!U@z6jjWZuOyY$vHk(iyVf2a3zs#VGe|D^*W5X~$oh?>BP44-p4Drx!WFYciy!)v$Gj~t!|AVdXZ_+L%cmMzZ diff --git a/frontend/index.html b/frontend/index.html deleted file mode 100644 index f3caf3f..0000000 --- a/frontend/index.html +++ /dev/null @@ -1,486 +0,0 @@ - - - - - - - - Placeholder - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Skip to main content - - - - - - -
-
- -
-
- - - - - - - -
-
-
    -
-
-
-
-

Developed with funding from the Vehicle Technologies Office, Office of Energy Efficiency and Renewable Energy, U.S. Department of Energy.

-
-
- U.S. Department of Energy Office of Energy Efficiency and Renewable Energy -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/frontend/metrics_program.html b/frontend/metrics_program.html deleted file mode 100644 index 7574620..0000000 --- a/frontend/metrics_program.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/frontend/metrics_study.html b/frontend/metrics_study.html deleted file mode 100644 index 9657483..0000000 --- a/frontend/metrics_study.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/frontend/options.html b/frontend/options.html deleted file mode 100644 index 5c08b8c..0000000 --- a/frontend/options.html +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/frontend/programs.html b/frontend/programs.html deleted file mode 100644 index b78603b..0000000 --- a/frontend/programs.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/outputs/README.md b/outputs/README.md new file mode 100644 index 0000000..bd2374a --- /dev/null +++ b/outputs/README.md @@ -0,0 +1 @@ +Placeholder directory to hold outputs \ No newline at end of file diff --git a/viz_scripts/docker/.DS_Store b/rm_src/.DS_Store similarity index 79% rename from viz_scripts/docker/.DS_Store rename to rm_src/.DS_Store index c95f7deb550b627d9b6bb5d4e1c68872e1d6e433..e6699c11d32c180eae581f3e2673895bab1bece9 100644 GIT binary patch delta 292 zcmZoMXfc=|#>B`mu~2NHo}wrV0|Nsi1A_nqLncEpLq0<(LlHyr#KPtEAPE76T%bS> zLkY4ZLn=c&LkdG8P&6?o-7q*gKeqs=76u6F$<23hNy^Dj0&3t;C_Z?+?(R`XARA3z z5X2?OmgVNB5TOxMUqJ@Mk((bftFdhUz|6|DnVo~50~iKCk?+it`9&-_K&}S{1JmXJ HkuA&sqsl`~ literal 6148 zcmeHKJ5Iwu5PfSRB|sBspmc*og@ll3Xsjp{)Epq#u?Z1QY~_PQ=Z3>@8Vt7%a+4S1ByU8k z<1aEG@2-n67AP>sxA#{hd?H_qE9&Wo6^?*C3>iDdBQj>)V~QM^d*_>+*ILdAW9N8c ztm`wg^A#>|i8G}9)-3UWgmq&^r1ZtKDdSgES=o}lXUvdqcQQw{P6wFS+OoEo*%?MC zxx#{Dslh(A3NMWc5-t5l>?ge^v?pp_FS`AKBlmTTx8Tf$#p4lS3eTQn50cAiL*f1c!4n^v zKOHpo3P9}8ZG~g`(S#@|qk z?aun44Tp&ws#OM*fo%qM+_W#}|Mk!J|Lr85DFe#Dzhc02hPT53x8%>(#^&U#4XJlj p5s9lDZc;d~M=@jNC_biIp+A%XG4fbBq=%w^1S}0|l!0Gm;1d#Zgunm* diff --git a/rm_src/02_run_trip_level_models.py b/rm_src/02_run_trip_level_models.py index cd1c476..16567ec 100644 --- a/rm_src/02_run_trip_level_models.py +++ b/rm_src/02_run_trip_level_models.py @@ -464,7 +464,7 @@ def save_metadata(dir_name: Path, **kwargs): # args = parse_args() sweep_number = 1 - root = Path('../benchmark_results') + root = Path('../outputs/benchmark_results') if not root.exists(): root.mkdir() diff --git a/rm_src/04_FeatureClustering.ipynb b/rm_src/04_FeatureClustering.ipynb index 31c1191..e61668c 100644 --- a/rm_src/04_FeatureClustering.ipynb +++ b/rm_src/04_FeatureClustering.ipynb @@ -1,78 +1,8 @@ { "cells": [ - { - "cell_type": "markdown", - "id": "aa5d3c5f", - "metadata": {}, - "source": [ - "To determine which non-demographic trip-level characteristics we should stratify by, we want to do some high level clustering.\n", - "\n", - "we already have clustering based on demographics (which corresponds to the demographic stratification) and can show that the argmax replaced mode is not the same\n", - "\n", - "we should now try two clusterings:\n", - "- based on trip summaries\n", - " - % of trips in each primary sensed mode\n", - " - number of trips\n", - " - % of distance in each primary sensed mode\n", - " - most common start time\n", - " - most common end time\n", - "\n", - "we can see whether the replaced mode argmax is now consistent in each cluster\n", - "\n", - "- cluster based on the replaced mode distributions. features are:\n", - " - % of trips with x replaced mode for x in set of unique replaced modes (filtered to top 75%)\n", - " - distance of trips with x replaced mode for x in set of unique replaced modes (filtered to top 75%)\n", - "\n", - "see how the demographics and trip summaries vary per cluster and see if there is a strong correlation between certain characteristics and being in the same cluster.\n", - "\n", - "\n", - "- Chart 1 will visualize the clustering with trip-summary features\n", - "- Chart 2 will visualize the clustering with replaced mode features.\n", - "\n", - "Note that clustering is unsupervised and does not have a target variable.\n", - "\n", - "For chart 1, for $n$ users, our input matrix will be $O(n \\times 15)$ since there are ~ 6 sensed modes. After the clustering, we will check the replaced mode argmax distribution in each cluster.\n", - "\n", - "For chart 2, for $n$ users where the 75th percentile of the replaced modes has modes, our input matrix will be $O(n \\times 2 \\times r)$. After the clustering, we will check the distribution of demographics and trip characteristics in each cluster." - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "1db71454", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "9 72866\n", - "2 18633\n", - "5 13834\n", - "3 9455\n", - "8 7908\n", - "1 6539\n", - "4 1630\n", - "7 1469\n", - "6 189\n", - "Name: target, dtype: int64" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import pandas as pd\n", - "\n", - "\n", - "df = pd.read_csv('../data/filtered_data/preprocessed_data_Stage_database.csv')\n", - "df.drop_duplicates(inplace=True)\n", - "display(df.target.value_counts())" - ] - }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "789df947", "metadata": {}, "outputs": [], @@ -109,49 +39,50 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, + "id": "aea4dda7", + "metadata": {}, + "outputs": [], + "source": [ + "DATA_SOURCES = [\n", + " ('../data/filtered_data/preprocessed_data_Stage_database.csv', 'allceo'),\n", + " ('../data/filtered_data/preprocessed_data_openpath_prod_durham.csv', 'durham'),\n", + " ('../data/filtered_data/preprocessed_data_openpath_prod_ride2own.csv', 'ride2own'),\n", + " ('../data/filtered_data/preprocessed_data_openpath_prod_mm_masscec.csv', 'masscec'),\n", + " ('../data/filtered_data/preprocessed_data_openpath_prod_uprm_nicr.csv', 'nicr')\n", + "]\n", + "\n", + "# Switch between 0-4\n", + "DB_NUMBER = 0" + ] + }, + { + "cell_type": "code", + "execution_count": null, "id": "33ef3275", "metadata": {}, "outputs": [], "source": [ - "# Data is located at\n", - "CURRENT_DB = 'ride2own'\n", + "# Change this name to something unique\n", + "CURRENT_DB = DATA_SOURCES[DB_NUMBER][1]\n", + "PATH = DATA_SOURCES[DB_NUMBER][0]\n", "\n", - "df = pd.read_csv('../data/filtered_data/preprocessed_data_openpath_prod_ride2own.csv')" + "df = pd.read_csv(PATH)" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "d0d884a3", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "9 800\n", - "4 33\n", - "8 6\n", - "7 5\n", - "2 1\n", - "1 1\n", - "3 1\n", - "5 1\n", - "Name: target, dtype: int64" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "df.target.value_counts()" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "b2281bdc", "metadata": {}, "outputs": [], @@ -164,7 +95,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "9c22d6ac", "metadata": {}, "outputs": [], @@ -176,7 +107,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "063f6124", "metadata": {}, "outputs": [], @@ -186,7 +117,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "cef8d45b", "metadata": {}, "outputs": [], @@ -200,7 +131,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "68c6af2d", "metadata": {}, "outputs": [], @@ -210,7 +141,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "eff378a7", "metadata": {}, "outputs": [], @@ -220,7 +151,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "id": "cffbd401", "metadata": {}, "outputs": [], @@ -230,7 +161,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "id": "f1eb1633", "metadata": {}, "outputs": [], @@ -244,7 +175,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "d9cc0a0f", "metadata": { "scrolled": true @@ -260,7 +191,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "id": "750fbd0c", "metadata": {}, "outputs": [], @@ -278,236 +209,20 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "1c3d1849", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
coverage_bicyclingcoverage_carcoverage_transitcoverage_unknowncoverage_walkingpct_distance_bicyclingpct_distance_carpct_distance_transitpct_distance_unknownpct_distance_walkingn_tripsstart:hourend:hour
user_id
258a8119-a5c2-4d38-875d-a9a9f7ed2d7d0.1666670.3333330.1666670.1666670.1666670.1722180.6682930.0176670.1341880.0076340.008219-0.287903-0.287903
7ac8a16d-bafe-4bef-a5b5-43b64beb97a60.0331130.4437090.1192050.0132450.3907280.0231190.8621700.0860550.0058390.0228170.8191780.6502880.420167
87e12281-655e-4b7f-9dce-67b42217a5e80.3000000.2333330.0333330.0333330.4000000.2775270.5154700.0371760.0371510.1326760.073973-0.544021-0.544021
bc08c318-5a56-4e11-9f69-9c48468b75710.0679350.7391300.0489130.0271740.1168480.0380100.9149760.0229740.0096260.0144141.0000000.656987-0.961397
be2a3c5c-1db0-4736-8304-a1c705da4cd60.0091740.2201830.0550460.0733940.6422020.0121700.4162930.0928560.0800600.3986200.290411-0.2879030.656987
\n", - "
" - ], - "text/plain": [ - " coverage_bicycling coverage_car \\\n", - "user_id \n", - "258a8119-a5c2-4d38-875d-a9a9f7ed2d7d 0.166667 0.333333 \n", - "7ac8a16d-bafe-4bef-a5b5-43b64beb97a6 0.033113 0.443709 \n", - "87e12281-655e-4b7f-9dce-67b42217a5e8 0.300000 0.233333 \n", - "bc08c318-5a56-4e11-9f69-9c48468b7571 0.067935 0.739130 \n", - "be2a3c5c-1db0-4736-8304-a1c705da4cd6 0.009174 0.220183 \n", - "\n", - " coverage_transit coverage_unknown \\\n", - "user_id \n", - "258a8119-a5c2-4d38-875d-a9a9f7ed2d7d 0.166667 0.166667 \n", - "7ac8a16d-bafe-4bef-a5b5-43b64beb97a6 0.119205 0.013245 \n", - "87e12281-655e-4b7f-9dce-67b42217a5e8 0.033333 0.033333 \n", - "bc08c318-5a56-4e11-9f69-9c48468b7571 0.048913 0.027174 \n", - "be2a3c5c-1db0-4736-8304-a1c705da4cd6 0.055046 0.073394 \n", - "\n", - " coverage_walking \\\n", - "user_id \n", - "258a8119-a5c2-4d38-875d-a9a9f7ed2d7d 0.166667 \n", - "7ac8a16d-bafe-4bef-a5b5-43b64beb97a6 0.390728 \n", - "87e12281-655e-4b7f-9dce-67b42217a5e8 0.400000 \n", - "bc08c318-5a56-4e11-9f69-9c48468b7571 0.116848 \n", - "be2a3c5c-1db0-4736-8304-a1c705da4cd6 0.642202 \n", - "\n", - " pct_distance_bicycling \\\n", - "user_id \n", - "258a8119-a5c2-4d38-875d-a9a9f7ed2d7d 0.172218 \n", - "7ac8a16d-bafe-4bef-a5b5-43b64beb97a6 0.023119 \n", - "87e12281-655e-4b7f-9dce-67b42217a5e8 0.277527 \n", - "bc08c318-5a56-4e11-9f69-9c48468b7571 0.038010 \n", - "be2a3c5c-1db0-4736-8304-a1c705da4cd6 0.012170 \n", - "\n", - " pct_distance_car pct_distance_transit \\\n", - "user_id \n", - "258a8119-a5c2-4d38-875d-a9a9f7ed2d7d 0.668293 0.017667 \n", - "7ac8a16d-bafe-4bef-a5b5-43b64beb97a6 0.862170 0.086055 \n", - "87e12281-655e-4b7f-9dce-67b42217a5e8 0.515470 0.037176 \n", - "bc08c318-5a56-4e11-9f69-9c48468b7571 0.914976 0.022974 \n", - "be2a3c5c-1db0-4736-8304-a1c705da4cd6 0.416293 0.092856 \n", - "\n", - " pct_distance_unknown \\\n", - "user_id \n", - "258a8119-a5c2-4d38-875d-a9a9f7ed2d7d 0.134188 \n", - "7ac8a16d-bafe-4bef-a5b5-43b64beb97a6 0.005839 \n", - "87e12281-655e-4b7f-9dce-67b42217a5e8 0.037151 \n", - "bc08c318-5a56-4e11-9f69-9c48468b7571 0.009626 \n", - "be2a3c5c-1db0-4736-8304-a1c705da4cd6 0.080060 \n", - "\n", - " pct_distance_walking n_trips \\\n", - "user_id \n", - "258a8119-a5c2-4d38-875d-a9a9f7ed2d7d 0.007634 0.008219 \n", - "7ac8a16d-bafe-4bef-a5b5-43b64beb97a6 0.022817 0.819178 \n", - "87e12281-655e-4b7f-9dce-67b42217a5e8 0.132676 0.073973 \n", - "bc08c318-5a56-4e11-9f69-9c48468b7571 0.014414 1.000000 \n", - "be2a3c5c-1db0-4736-8304-a1c705da4cd6 0.398620 0.290411 \n", - "\n", - " start:hour end:hour \n", - "user_id \n", - "258a8119-a5c2-4d38-875d-a9a9f7ed2d7d -0.287903 -0.287903 \n", - "7ac8a16d-bafe-4bef-a5b5-43b64beb97a6 0.650288 0.420167 \n", - "87e12281-655e-4b7f-9dce-67b42217a5e8 -0.544021 -0.544021 \n", - "bc08c318-5a56-4e11-9f69-9c48468b7571 0.656987 -0.961397 \n", - "be2a3c5c-1db0-4736-8304-a1c705da4cd6 -0.287903 0.656987 " - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "figure1_df.head()" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "id": "598d82bc", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-inf\n" - ] - } - ], + "outputs": [], "source": [ "epsilons = np.linspace(1e-3, 1., 1000)\n", "\n", @@ -530,18 +245,10 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "id": "bc89a42d", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Counter({-1: 7})\n" - ] - } - ], + "outputs": [], "source": [ "'''\n", "AlLCEO: eps=0.542\n", @@ -556,30 +263,12 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "id": "05c9a7c4", "metadata": { "scrolled": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "7 users in cluster -1\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAHFCAYAAACuBbDPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA39UlEQVR4nO3deXQUVd7/8U9DOp0FEkhCJEAkLCL7oiAgSlgGkE1ckH0VfPQB9UFEGWRLcAmizuCoLA4KjoLigoiIQhCJKKDBkVUQcFgVGAEhCNI0yf39wUn/aDpbxxtD8P06h3Oom1t1v11dVfmklm6HMcYIAADAglLFXQAAALhyECwAAIA1BAsAAGANwQIAAFhDsAAAANYQLAAAgDUECwAAYA3BAgAAWEOwAAAA1lyWwWLevHlyOBzef0FBQYqLi1OfPn20a9euIh9/yJAhSkhIKPJxCit7/ezdu7e4S8nT6tWr5XA4tHr16uIu5U8np3VfmO36p59+UlJSkjZu3BjQfDmN5XA4dP/99we0nPzMmDFD8+bN82vfu3evHA5Hjj/7I7zwwguqWbOmgoOD5XA4dOLEiWKpo6RxOBxKSkr6Q8cs6uPp2rVrlZSUdNlsAxMmTFC3bt1UuXJlORwODRkyxPoYl2WwyDZ37lytW7dOK1eu1P33368lS5bopptu0i+//FLcpQElzsSJE/X+++8HNM9PP/2k5OTkgINFYcYqjNyCRVxcnNatW6euXbsWeQ2X2rhxox588EG1bdtWq1at0rp161S2bNk/vI6SaN26dRo+fHhxl2HV2rVrlZycfNkEi7///e86duyYbr31VgUHBxfJGEFFslRL6tevr6ZNm0qS2rRpo8zMTE2ePFmLFy/W0KFDi7k6lCTGGJ09e1ahoaHFXUqxqVGjRpGPcebMGYWFhf0hY+XF5XKpRYsWxTL2tm3bJEn33HOPbrjhBivLzF6vlzMb+1hxvWclUWG3iVOnTqlUqQvnFF5//XXbZUm6zM9YXCo7ZBw5csSnfcOGDbr11lsVFRWlkJAQNWnSRG+//bZPn+zTXampqRo6dKiioqIUHh6u7t276z//+U++Y7/00ktq3bq1YmNjFR4ergYNGmjatGnyeDx+fT/55BO1b99ekZGRCgsLU506dZSSkhJwzZK0fv16tWrVSiEhIapUqZLGjRuX45g5GTJkiMqUKaMdO3aoU6dOCg8PV1xcnKZOnepd9k033aTw8HDVqlVLr732mt8ytm7dqh49eqh8+fIKCQlR48aNc+y3Y8cO3XLLLQoLC1NMTIzuu+8+nTp1Kse6Vq5cqfbt2ysiIkJhYWFq1aqVPv3003xfz9mzZ/Xwww+rcePGioyMVFRUlFq2bKkPPvjAr2/2afdZs2apTp06crlc3rq/+OILtWzZUiEhIapcubImTpyoOXPm+J0OTUhIULdu3bR06VI1adJEoaGhqlOnjpYuXSrpwjZVp04dhYeH64YbbtCGDRt8atiwYYP69OmjhIQEhYaGKiEhQX379tW+ffu8fYwx6tKli6Kjo7V//35v+5kzZ1SvXj3VqVNHp0+fznO9FHTd53R54p133lHz5s2922r16tV19913S7pwOaVZs2aSpKFDh3ovTWafqs7evrZs2aKOHTuqbNmyat++fa5jZZs9e7Zq1aoll8ulunXr6q233vL5eVJSkhwOh998l56yTkhI0LZt25SWluatLXvM3C6FfPHFF2rfvr3Kli2rsLAw3Xjjjfroo49yHOezzz7T//7v/yomJkbR0dG644479NNPP+X4mrK1adNGAwYMkCQ1b97c71Tzq6++qkaNGikkJERRUVG6/fbbtX37dp9l5LVec5Lbus5pPeb1fmfLyMjQmDFjVK1aNQUHB6ty5coaNWqU33aY1z42c+ZMNWrUSGXKlFHZsmVVu3ZtPfbYY3muu+xlXnwp5Pe8F9m++uorde/eXdHR0QoJCVGNGjU0atSoPOdJSEjI8RJBmzZt1KZNG+90VlaWnnjiCV177bUKDQ1VuXLl1LBhQz3//POSLrwHjzzyiCSpWrVq3u304kuUCxcuVMuWLRUeHq4yZcqoU6dO+vbbb33GDXSbyEt2qChKl/UZi0vt2bNHklSrVi1v22effaZbbrlFzZs316xZsxQZGam33npLvXv31pkzZ/w2jmHDhqlDhw5asGCBDhw4oAkTJqhNmzbavHmzypUrl+vYP/zwg/r16+fd2TZt2qQnn3xSO3bs0Kuvvurt98orr+iee+5RYmKiZs2apdjYWO3cuVNbt24NuObvvvtO7du3V0JCgubNm6ewsDDNmDFDCxYsKPA683g8uuOOO3TffffpkUce0YIFCzRu3DhlZGTovffe09ixY1WlShW98MILGjJkiOrXr6/rr79ekvT999/rxhtvVGxsrP7xj38oOjpab7zxhoYMGaIjR47o0UcflXQh6CUmJsrpdGrGjBm66qqrNH/+/Byvp7/xxhsaNGiQevTooddee01Op1OzZ89Wp06dtHz58jx3FrfbrePHj2vMmDGqXLmyzp07p5UrV+qOO+7Q3LlzNWjQIJ/+ixcv1po1azRp0iRVrFhRsbGx2rx5szp06OANUmFhYZo1a5beeOONHMfctGmTxo0bp/HjxysyMlLJycm64447NG7cOH366ad66qmn5HA4NHbsWHXr1k179uzx/sW2d+9eXXvtterTp4+ioqJ06NAhzZw5U82aNdN3332nmJgYORwOvf7662rcuLF69eqlNWvWyOl0asSIEdqzZ4+++uorhYeH57pOAln3l1q3bp169+6t3r17KykpSSEhIdq3b59WrVolSbruuus0d+5cDR06VBMmTPBeVqhSpYp3GefOndOtt96qe++9V3/96191/vz5PMdcsmSJPvvsM02ZMkXh4eGaMWOG+vbtq6CgIPXs2TPfmi/2/vvvq2fPnoqMjNSMGTMkXThTkZu0tDR16NBBDRs21CuvvCKXy6UZM2aoe/fuevPNN9W7d2+f/sOHD1fXrl29x4pHHnlEAwYM8K6fnMyYMUNvvvmmnnjiCc2dO1e1a9dWhQoVJEkpKSl67LHH1LdvX6WkpOjYsWNKSkpSy5YtlZ6ermuuuca7nEDXa0Hk935LFwJtYmKiDh48qMcee0wNGzbUtm3bNGnSJG3ZskUrV670CSs57WNvvfWWRowYoQceeEDPPvusSpUqpd27d+u7774rdO2FeS8kafny5erevbvq1Kmjv/3tb7r66qu1d+9erVixotC1XGzatGlKSkrShAkT1Lp1a3k8Hu3YscN72WP48OE6fvy4XnjhBS1atEhxcXGSpLp160qSnnrqKU2YMMG7j507d07PPPOMbr75Zn399dfeflLRbBNFxlyG5s6daySZ9evXG4/HY06dOmU++eQTU7FiRdO6dWvj8Xi8fWvXrm2aNGni02aMMd26dTNxcXEmMzPTZ5m33367T78vv/zSSDJPPPGEt23w4MGmatWqudaXmZlpPB6P+de//mVKly5tjh8/bowx5tSpUyYiIsLcdNNNJisrK9f5C1pz7969TWhoqDl8+LC3z/nz503t2rWNJLNnz55cx8h+HZLMe++9523zeDymQoUKRpL597//7W0/duyYKV26tBk9erS3rU+fPsblcpn9+/f7LLdz584mLCzMnDhxwhhjzNixY43D4TAbN2706dehQwcjyXz22WfGGGNOnz5toqKiTPfu3X36ZWZmmkaNGpkbbrghz9dzqfPnzxuPx2OGDRtmmjRp4vMzSSYyMtL73mS76667THh4uPn55599xq9bt67fOq1ataoJDQ01Bw8e9LZt3LjRSDJxcXHm9OnT3vbFixcbSWbJkiV51vvrr7+a8PBw8/zzz/v87IsvvjBBQUFm1KhR5tVXXzWSzJw5c/JdBwVd98b4b9fPPvuskeR9H3OSnp5uJJm5c+f6/Sx7+3r11Vdz/Nml+5CkXLfnmjVretsmT55scjo0Ze/DF79H9erVM4mJiX599+zZ41d3ixYtTGxsrDl16pTP+PXr1zdVqlTx7rPZ44wYMcJnmdOmTTOSzKFDh/zGy6nO9PR0b9svv/xiQkNDTZcuXXz67t+/37hcLtOvXz9vW17rNSe5Ha8uXY8Feb9TUlJMqVKlfGo3xph3333XSDLLli3ztuW2j91///2mXLlyBar9UpLM5MmTvdO/972oUaOGqVGjhvntt99y7ZPTdlW1alUzePBgv76JiYk+21u3bt1M48aN86zhmWeeyfF4vX//fhMUFGQeeOABn/ZTp06ZihUrml69ennbAt0mCio8PDzH1/l7XdaXQlq0aCGn06myZcvqlltuUfny5fXBBx8oKOjCiZbdu3drx44d6t+/vyTp/Pnz3n9dunTRoUOH9P333/ssM7tvthtvvFFVq1bVZ599lmct3377rW699VZFR0erdOnScjqdGjRokDIzM7Vz505JF27SycjI0IgRI3I8lRtozZ999pnat2+vq666yjt/6dKl/f6yyovD4VCXLl2800FBQapZs6bi4uLUpEkTb3tUVJRiY2N9TtOvWrVK7du3V3x8vM8yhwwZojNnzmjdunXeOuvVq6dGjRr59OvXr5/P9Nq1a3X8+HENHjzY53VnZWXplltuUXp6er6n/d955x21atVKZcqUUVBQkJxOp1555RW/08mS1K5dO5UvX96nLS0tTe3atVNMTIy3rVSpUurVq1eO4zVu3FiVK1f2TtepU0fShVOiF1/fzG6/eP39+uuvGjt2rGrWrKmgoCAFBQWpTJkyOn36tF+9rVq10pNPPqnp06frf//3fzVgwAANGzYsz3UhFXzd5yT7MkevXr309ttv68cff8x3npzceeedBe6b2/a8e/duHTx4sFDjF8Tp06f11VdfqWfPnipTpozP+AMHDtTBgwf9jhW33nqrz3TDhg0l+b7HBbVu3Tr99ttvfmdQ4+Pj1a5duxwvBQayXguiIO/30qVLVb9+fTVu3NhnH+3UqVOOT3jltI/dcMMNOnHihPr27asPPvhAR48e/d21F+a92Llzp3744QcNGzZMISEhv7uGnNxwww3atGmTRowYoeXLlysjI6PA8y5fvlznz5/XoEGDfNZ1SEiIEhMTc3yarqDbxMXLO3/+vIwxBa7Lhss6WPzrX/9Senq6Vq1apXvvvVfbt29X3759vT/PvtdizJgxcjqdPv9GjBghSX4bdcWKFf3GqVixoo4dO5ZrHfv379fNN9+sH3/8Uc8//7zWrFmj9PR0vfTSS5Kk3377TZL0888/S/I9VXypQGo+duxYrvUWVFhYmN9OFRwcrKioKL++wcHBOnv2rHf62LFj3lN3F6tUqZL354HUmf3ae/bs6ffan376aRljdPz48Vxfy6JFi9SrVy9VrlxZb7zxhtatW6f09HTdfffdPnVny6n2Y8eO+fxiy5ZTmyS/9ZR9F3Vu7RfX0a9fP7344osaPny4li9frq+//lrp6emqUKGCd5u5WP/+/RUcHCy32+29Lpuf37ONtG7dWosXL/Ye3KpUqaL69evrzTffLNDY0oXtKyIiosD986o1r33w9/rll19kjCnQ9pwtOjraZzr7MktO711+sped2/iXjh3oei2IgrzfR44c0ebNm/32z7Jly8oY43c8zen1DBw4UK+++qr27dunO++8U7GxsWrevLlSU1MLXXth3ouCHI9/r3HjxunZZ5/V+vXr1blzZ0VHR6t9+/Z+91vlJPt42KxZM7/1vXDhQr91XdBtYu/evX7LS0tLK9wLLKTL+h6LOnXqeG/YbNu2rTIzMzVnzhy9++676tmzp/evznHjxumOO+7IcRnXXnutz/Thw4f9+hw+fFg1a9bMtY7Fixfr9OnTWrRokapWreptv/QRvOxrqXn95RVIzdHR0bnW+0eIjo7WoUOH/Nqzb5rKfi0FrTO7/wsvvJDr3d+5/YKXLtyfUa1aNS1cuNDnjJDb7c6xf05njaKjo/1u/s2p1t/r5MmTWrp0qSZPnqy//vWv3vbs+0QulZmZqf79+6t8+fJyuVwaNmyYvvzyy3wfB/u920iPHj3Uo0cPud1urV+/XikpKerXr58SEhLUsmXLfOfP7cxcbvKqNfuXR3YQdrvdPvdM/J6/fMuXL69SpUoVaHsuCtmvLbfxLx07kPUaEhKS4z6Q0/rK7/2OiYlRaGioz31jFytonUOHDtXQoUN1+vRpff7555o8ebK6deumnTt3+hxDi1JBjse5yWudXrwOgoKCNHr0aI0ePVonTpzQypUr9dhjj6lTp046cOBAnk9tZC/n3XffLdA6Keg2UalSJaWnp/u0Xfp7sKhd1mcsLjVt2jSVL19ekyZNUlZWlq699lpdc8012rRpk5o2bZrjv0ufH58/f77P9Nq1a7Vv3z6fO30vlf2GXnyQM8bon//8p0+/G2+8UZGRkZo1a1aup54Cqblt27b69NNPfX4RZmZmauHChfmvLAvat2+vVatW+d19/a9//UthYWHecNC2bVtt27ZNmzZt8ul36U2mrVq1Urly5fTdd9/l+trz+kXqcDi8HziU7fDhwzk+FZKbxMRErVq1yuegm5WVpXfeeafAyygIh8MhY4zfzYRz5sxRZmamX//JkydrzZo1mj9/vhYuXKhNmzYV6KxFQdd9flwulxITE/X0009Lkveu9N/zV3pOctuea9So4f3LMvsJh82bN/vM++GHH+ZYd0FqCw8PV/PmzbVo0SKf/llZWXrjjTdUpUoVn5vCbWvZsqVCQ0P9bhI+ePCg95JjYSUkJOi///2vz3o9d+6cli9fnus8ub3f3bp10w8//KDo6Ogc989AP2AtPDxcnTt31vjx43Xu3Dnvo7h/hFq1aqlGjRp69dVXc/3jIzcJCQl+29/OnTv9LpddrFy5curZs6dGjhyp48ePe59eym0f6tSpk4KCgvTDDz/kejwsjODg4Hx/Dxa1y/qMxaXKly+vcePG6dFHH9WCBQs0YMAAzZ49W507d1anTp00ZMgQVa5cWcePH9f27dv173//2+8XxoYNGzR8+HDdddddOnDggMaPH6/KlSt7L0PkpEOHDgoODlbfvn316KOP6uzZs5o5c6bfB3WVKVNGzz33nIYPH66//OUvuueee3TVVVdp9+7d2rRpk1588UVJKnDNEyZM0JIlS9SuXTtNmjRJYWFheumll/K9D8GWyZMna+nSpWrbtq0mTZqkqKgozZ8/Xx999JGmTZumyMhISdKoUaP06quvqmvXrnriiSe8Tybs2LHDb/288MILGjx4sI4fP66ePXsqNjZWP//8szZt2qSff/5ZM2fOzLWebt26adGiRRoxYoR69uypAwcO6PHHH1dcXFyBP5F1/Pjx+vDDD9W+fXuNHz9eoaGhmjVrlned2noUKyIiQq1bt9YzzzyjmJgYJSQkKC0tTa+88orf00epqalKSUnRxIkTvb9gUlJSNGbMGLVp00a33357ruMUdN3nZNKkSTp48KDat2+vKlWq6MSJE3r++efldDqVmJgo6cJnX4SGhmr+/PmqU6eOypQpo0qVKnkvHwQqJiZG7dq108SJE71PhezYscPnkdMuXbooKipKw4YN05QpUxQUFKR58+bpwIEDfstr0KCB3nrrLS1cuFDVq1dXSEiIGjRokOPYKSkp6tChg9q2basxY8YoODhYM2bM0NatW/Xmm28GfPYlEOXKldPEiRP12GOPadCgQerbt6+OHTum5ORkhYSEaPLkyYVedu/evTVp0iT16dNHjzzyiM6ePat//OMffgG2IO/3qFGj9N5776l169Z66KGH1LBhQ2VlZWn//v1asWKFHn74YTVv3jzPeu655x6FhoaqVatWiouL0+HDh5WSkqLIyEjvfR5/lJdeekndu3dXixYt9NBDD+nqq6/W/v37tXz5cr8/Mi82cOBADRgwQCNGjNCdd96pffv2adq0ad6zINm6d+/u/bylChUqaN++fZo+fbqqVq3qfcone3t8/vnnNXjwYDmdTl177bVKSEjQlClTNH78eP3nP//x3kd45MgRff311woPD1dycrL1dZKWlua9TJSZmal9+/bp3XfflXThD69LX2OhWL8d1IKc7qrO9ttvv5mrr77aXHPNNeb8+fPGGGM2bdpkevXqZWJjY43T6TQVK1Y07dq1M7NmzfJb5ooVK8zAgQNNuXLlvHdp79q1y2eMnO6y/vDDD02jRo1MSEiIqVy5snnkkUfMxx9/7HfnvTHGLFu2zCQmJprw8HATFhZm6tata55++mmfPgWp2ZgLT620aNHCuFwuU7FiRfPII4+Yl19+ucBPhYSHh/u1JyYmmnr16vm1V61a1XTt2tWnbcuWLaZ79+4mMjLSBAcHm0aNGuX4hMB3331nOnToYEJC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rzFjxmjjxo2qVauW+vbtq/Pnz0uSvvnmG/Xq1Ut9+vTRli1blJSUpIkTJ2revHmSpDZt2mjbtm06evSoJCktLU0xMTFKS0uTJJ0/f15r165VYmKid7wffvhBixcv1tKlS7V06VKlpaVp6tSpRbWKABQCwQL4kxoyZIj69u2rmjVr6qmnntLp06f19ddf+/Q5cuSIEhMTFRsbq48++kjh4eE+Px8zZoy6du2qWrVqKTk5Wfv27dPu3bslSX/729/Uvn17TZw4UbVq1dKQIUN0//3365lnnpEk1a9fX9HR0d4gsXr1aj388MPe6fT0dJ09e1Y33XSTd7ysrCzNmzdP9evX180336yBAwfq008/LbJ1BCBwBAvgT6phw4be/4eHh6ts2bL673//69PnL3/5i6pXr663335bwcHBeS4jLi5OkrzL2L59u1q1auXTv1WrVtq1a5cyMzPlcDjUunVrrV69WidOnNC2bdt03333KTMzU9u3b9fq1at13XXXqUyZMt75ExISVLZsWZ8xL60ZQPEiWABXoFKlSunST+v3eDw+006n02fa4XAoKyvLp61r165as2aNvvvuuxzHuXgZDodDkrzLMMZ427JdWlObNm20evVqrVmzRo0aNVK5cuXUunVrpaWlafXq1WrTpk3ANQMoXgQL4ApUoUIFHTp0yDudkZGhPXv2BLycqVOnavDgwWrfvn2u4SI3devW1RdffOHTtnbtWtWqVUulS5eW9P/vs3j33Xe9ISIxMVErV670u78CQMlAsACuQO3atdPrr7+uNWvWaOvWrRo8eLD3l3mgnn32WfXv31/t2rXTjh07Cjzfww8/rE8//VSPP/64du7cqddee00vvviixowZ4+2TfZ/F/PnzvcGiTZs2Wrx4sX777Tef+ysAlAxBxV0AAPvGjRun//znP+rWrZsiIyP1+OOPF+qMRba///3vyszMVLt27bR69eoc77e41HXXXae3335bkyZN0uOPP664uDhNmTJFQ4YM8fZxOBxKTEzU4sWLdfPNN0u6cN9GZGSkqlevroiIiELXDKB48LXpAADAGi6FAAAAawgWAADAGoIFAACwhmABAACsIVgAAABrCBYAAMAaggUAALCGYAEAAKwhWAB/Ug6HI89/F39C5h8tISFB06dPL7bxARQeH+kN/Eld/CVlCxcu1KRJk/T9999720JDQwNa3rlz5wr0Ud8ArmycsQD+pCpWrOj9FxkZKYfD4Z12Op267777VKVKFYWFhalBgwZ68803feZv06aN7r//fo0ePVoxMTHq0KGDJGnJkiW65pprFBoaqrZt2+q1116Tw+HQiRMnvPOuXbtWrVu3VmhoqOLj4/Xggw/q9OnT3uXu27dPDz30kPfsCYCSg2ABwM/Zs2d1/fXXa+nSpdq6dav+53/+RwMHDtRXX33l0++1115TUFCQvvzyS82ePVt79+5Vz549ddttt2njxo269957NX78eJ95tmzZok6dOumOO+7Q5s2btXDhQn3xxRe6//77JUmLFi1SlSpVNGXKFB06dMjnzAqAyx9fQgZA8+bN06hRo3zOKlyqa9euqlOnjp599llJF84snDx5Ut9++623z1//+ld99NFH2rJli7dtwoQJevLJJ/XLL7+oXLlyGjRokEJDQzV79mxvny+++EKJiYk6ffq0QkJClJCQoFGjRmnUqFHWXyuAosU9FgD8ZGZmaurUqVq4cKF+/PFHud1uud1uhYeH+/Rr2rSpz/T333+vZs2a+bTdcMMNPtPffPONdu/erfnz53vbjDHKysrSnj17VKdOHcuvBsAfiWABwM9zzz2nv//975o+fboaNGig8PBwjRo1SufOnfPpd2nQMMb43RNx6UnRrKws3XvvvXrwwQf9xr366qstvQIAxYVgAcDPmjVr1KNHDw0YMEDShTCwa9eufM8m1K5dW8uWLfNp27Bhg8/0ddddp23btqlmzZq5Lic4OFiZmZmFrB5AceLmTQB+atasqdTUVK1du1bbt2/Xvffeq8OHD+c737333qsdO3Zo7Nix2rlzp95++23NmzdPkrxnMsaOHat169Zp5MiR2rhxo3bt2qUlS5bogQce8C4nISFBn3/+uX788UcdPXq0SF4jgKJBsADgZ+LEibruuuvUqVMntWnTRhUrVtRtt92W73zVqlXTu+++q0WLFqlhw4aaOXOm96kQl8slSWrYsKHS0tK0a9cu3XzzzWrSpIkmTpyouLg473KmTJmivXv3qkaNGqpQoUKRvEYARYOnQgAUqSeffFKzZs3SgQMHirsUAH8A7rEAYNWMGTPUrFkzRUdH68svv9Qzzzzj/YwKAFc+ggUAq3bt2qUnnnhCx48f19VXX62HH35Y48aNK+6yAPxBuBQCAACs4eZNAABgDcECAABYQ7AAAADWECwAAIA1BAsAAGANwQIAAFhDsAAAANYQLAAAgDUECwAAYM3/A3B8szXBm5L9AAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# After clustering, we would like to see what the replaced mode argmax distribution in each cluster is.\n", "\n", @@ -601,7 +290,7 @@ " ax.set_title(f\"Replaced mode argmax distribution for users in cluster {cix}\")\n", " ax.set_xlabel(\"Target\")\n", " \n", - " plt.savefig(f'./plots_for_paper/{CURRENT_DB}__FIG1_cluster_{cix}_target_dist.png', dpi=300)\n", + " plt.savefig(f'../outputs/{CURRENT_DB}__FIG1_cluster_{cix}_target_dist.png', dpi=300)\n", " \n", " plt.show()" ] @@ -759,7 +448,7 @@ "fig, ax = plt.subplots()\n", "sns.scatterplot(x=tsfm[:,0], y=tsfm[:,1], c=cl2.labels_)\n", "ax.set(xlabel='Latent Dim 0', ylabel='Latent Dim 1')\n", - "plt.savefig(f'./plots_for_paper/{CURRENT_DB}__Fig2__PCA_w_colors.png', dpi=300)\n", + "plt.savefig(f'../outputs/{CURRENT_DB}__Fig2__PCA_w_colors.png', dpi=300)\n", "plt.show()" ] }, @@ -1165,7 +854,7 @@ " offset_col_ix += 1\n", " \n", " plt.tight_layout()\n", - " plt.savefig(f\"./plots_for_paper/{CURRENT_DB}_cluster{cix}_combined_features.png\", dpi=300)\n", + " plt.savefig(f\"../outputs/{CURRENT_DB}_cluster{cix}_combined_features.png\", dpi=300)\n", " plt.show()\n", " print(50 * '=')" ] @@ -1175,7 +864,7 @@ "id": "24a80f68", "metadata": {}, "source": [ - "## Try a different clustering technique?" + "## Try a different clustering technique? (Unexplored)" ] }, { diff --git a/rm_src/baseline_modeling0.ipynb b/rm_src/baseline_modeling0.ipynb deleted file mode 100644 index 8e623b4..0000000 --- a/rm_src/baseline_modeling0.ipynb +++ /dev/null @@ -1,1431 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### All experiments are logged in Notion [here](https://www.notion.so/Replacement-mode-modeling-257c2f460377498d921e6b167f465945)" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from enum import Enum\n", - "import random\n", - "\n", - "# Math and graphing.\n", - "import pandas as pd\n", - "import numpy as np\n", - "import seaborn as sns\n", - "import matplotlib.pyplot as plt\n", - "\n", - "# sklearn imports.\n", - "from sklearn.model_selection import train_test_split, StratifiedGroupKFold, GroupKFold\n", - "from sklearn.preprocessing import StandardScaler\n", - "from sklearn.linear_model import LinearRegression\n", - "from sklearn.metrics import f1_score, r2_score, ConfusionMatrixDisplay\n", - "\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# Global experiment flags and variables.\n", - "SEED = 19348\n", - "TARGETS = ['p_micro', 'no_trip', 's_car', 'transit', 'car', 's_micro', 'ridehail', 'walk', 'unknown']\n", - "\n", - "DROP_S_MICRO = True\n", - "\n", - "# Set the Numpy seed too.\n", - "random.seed(SEED)\n", - "np.random.seed(SEED)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "class SPLIT_TYPE(Enum):\n", - " INTRA_USER = 0\n", - " INTER_USER = 1\n", - " TARGET = 2\n", - " MODE = 3\n", - " INTER_USER_STATIC = 4\n", - " \n", - "\n", - "class SPLIT(Enum):\n", - " TRAIN = 0\n", - " TEST = 1\n", - "\n", - "\n", - "def get_train_test_splits(data: pd.DataFrame, how=SPLIT_TYPE, test_ratio=0.2, shuffle=True):\n", - " \n", - " if how == SPLIT_TYPE.INTER_USER:\n", - "\n", - " X = data.drop(columns=['target'])\n", - " y = data['target'].values\n", - " groups = data.user_id.values\n", - " \n", - " splitter = StratifiedGroupKFold(n_splits=5, shuffle=shuffle, random_state=SEED)\n", - " # splitter = GroupKFold(n_splits=5)\n", - " \n", - " for train_index, test_index in splitter.split(X, y, groups):\n", - " X_tr = data.iloc[train_index, :]\n", - " X_te = data.iloc[test_index, :]\n", - " \n", - " # Iterate only once and break.\n", - " break\n", - "\n", - " return X_tr, X_te\n", - " \n", - " elif how == SPLIT_TYPE.INTRA_USER:\n", - " \n", - " # There are certain users with only one observation. What do we do with those?\n", - " # As per the mobilitynet modeling pipeline, we randomly assign them to either the\n", - " # training or test set.\n", - " \n", - " value_counts = data.user_id.value_counts()\n", - " single_count_ids = value_counts[value_counts == 1].index\n", - " \n", - " data_filtered = data.loc[~data.user_id.isin(single_count_ids), :].reset_index(drop=True)\n", - " data_single_counts = data.loc[data.user_id.isin(single_count_ids), :].reset_index(drop=True)\n", - " \n", - " X_tr, X_te = train_test_split(\n", - " data_filtered, test_size=test_ratio, shuffle=shuffle, stratify=data_filtered.user_id,\n", - " random_state=SEED\n", - " )\n", - " \n", - " data_single_counts['assigned'] = np.random.choice(['train', 'test'], len(data_single_counts))\n", - " X_tr_merged = pd.concat(\n", - " [X_tr, data_single_counts.loc[data_single_counts.assigned == 'train', :].drop(\n", - " columns=['assigned'], inplace=False\n", - " )],\n", - " ignore_index=True, axis=0\n", - " )\n", - " \n", - " X_te_merged = pd.concat(\n", - " [X_te, data_single_counts.loc[data_single_counts.assigned == 'test', :].drop(\n", - " columns=['assigned'], inplace=False\n", - " )],\n", - " ignore_index=True, axis=0\n", - " )\n", - " \n", - " return X_tr_merged, X_te_merged\n", - " \n", - " elif how == SPLIT_TYPE.TARGET:\n", - " \n", - " X_tr, X_te = train_test_split(\n", - " data, test_size=test_ratio, shuffle=shuffle, stratify=data.target,\n", - " random_state=SEED\n", - " )\n", - " \n", - " return X_tr, X_te\n", - " \n", - " elif how == SPLIT_TYPE.MODE:\n", - " X_tr, X_te = train_test_split(\n", - " data, test_size=test_ratio, shuffle=shuffle, stratify=data.section_mode_argmax,\n", - " random_state=SEED\n", - " )\n", - " \n", - " return X_tr, X_te\n", - " \n", - " elif how == SPLIT_TYPE.INTER_USER_STATIC:\n", - " \n", - " train_ids = ['810be63d084746e3b7da9d943dd88e8c', 'bf774cbe6c3040b0a022278d36a23f19', '8a8332a53a1b4cdd9f3680434e91a6ef', \n", - " '5ad862e79a6341f69f28c0096fe884da', '7f89656bd4a94d12ad8e5ad9f0afecaf', 'fbaa338d7cd7457c8cad4d0e60a44d18', \n", - " '3b25446778824941a4c70ae5774f4c68', '28cb1dde85514bbabfd42145bdaf7e0a', '3aeb5494088542fdaf798532951aebb0', \n", - " '531732fee3c24366a286d76eb534aebc', '950f4287bab5444aa0527cc23fb082b2', '737ef8494f26407b8b2a6b1b1dc631a4', \n", - " 'e06cf95717f448ecb81c440b1b2fe1ab', '7347df5e0ac94a109790b31ba2e8a02a', 'bd9cffc8dbf1402da479f9f148ec9e60', \n", - " '2f3b66a5f98546d4b7691fba57fa640f', 'f289f7001bd94db0b33a7d2e1cd28b19', '19a043d1f2414dbcafcca44ea2bd1f19', \n", - " '68788082836e4762b26ad0877643fdcf', '4e8b1b7f026c4384827f157225da13fa', '703a9cee8315441faff7eb63f2bfa93f', \n", - " 'add706b73839413da13344c355dde0bb', '47b5d57bd4354276bb6d2dcd1438901d', 'e4cfb2a8f600426897569985e234636e', \n", - " '0154d71439284c34b865e5a417cd48af', '234f4f2366244fe682dccded2fa7cc4e', '0d0ae3a556414d138c52a6040a203d24', \n", - " '44c10f66dec244d6b8644231d4a8fecb', '30e9b141d7894fbfaacecd2fa18929f9', '0eb313ab00e6469da78cc2d2e94660fb', \n", - " 'fc51d1258e4649ecbfb0e6ecdaeca454', 'a1954793b1454b2f8cf95917d7547169', '6656c04c6cba4c189fed805eaa529741', \n", - " '6a0f3653b80a4c949e127d6504debb55', 'dfe5ca1bb0854b67a6ffccad9565d669', '8b1f3ba43de945bea79de6a81716ad04', \n", - " 'cde34edb8e3a4278a18e0adb062999e5', '6d96909e5ca442ccb5679d9cdf3c8f5b', 'a60a64d82d1c439a901b683b73a74d73', \n", - " '60e6a6f6ed2e4e838f2bbed6a427028d', '88041eddad7542ea8c92b30e5c64e198', '1635c003b1f94a399ebebe21640ffced', \n", - " '1581993b404a4b9c9ca6b0e0b8212316', 'b1aed24c863949bfbfa3a844ecf60593', '4b89612d7f1f4b368635c2bc48bd7993', \n", - " 'eb2e2a5211564a9290fcb06032f9b4af', '26767f9f3da54e93b692f8be6acdac43', '8a98e383a2d143e798fc23869694934a', \n", - " 'b346b83b9f7c4536b809d5f92074fdae', 'd929e7f8b7624d76bdb0ec9ada6cc650', '863e9c6c8ec048c4b7653f73d839c85b', \n", - " 'f50537eb104e4213908f1862c8160a3e', '4a9db5a9bac046a59403b44b883cc0ba', 'cded005d5fd14c64a5bba3f5c4fe8385', \n", - " 'c7ce889c796f4e2a8859fa2d7d5068fe', '405b221abe9e43bc86a57ca7fccf2227', '0b3e78fa91d84aa6a3203440143c8c16', \n", - " 'fbff5e08b7f24a94ab4b2d7371999ef7', 'e35e65107a34496db49fa5a0b41a1e9e', 'd5137ebd4f034dc193d216128bb7fc9a', \n", - " '3f7f2e536ba9481e92f8379b796ad1d0', 'dc75e0b776214e1b9888f6abd042fd95', 'b41dd7d7c6d94fe6afe2fd26fa4ac0bd', \n", - " 'eec6936e1ac347ef9365881845ec74df', '8c7d261fe8284a42a777ffa6f380ba3b', '4baf8c8af7b7445e9067854065e3e612', \n", - " 'c6e4db31c18b4355b02a7dd97deca70b', 'f0db3b1999c2410ba5933103eca9212f', '487e20ab774742378198f94f5b5b0b43', \n", - " 'dc1ed4d71e3645d0993885398d5628ca', '8c3c63abb3ec4fc3a61e7bf316ee4efd', '15eb78dd6e104966ba6112589c29dc41', \n", - " 'c23768ccb817416eaf08be487b2e3643', 'ecd2ae17d5184807abd87a287115c299', '71f21d53b655463784f3a3c63c56707b', \n", - " '2931e0a34319495bbb5898201a54feb5', '92bde0d0662f45ac864629f486cffe77', '42b3ee0bc02a481ab1a94644a8cd7a0d', \n", - " '15aa4ba144a34b8b8079ed7e049d84df', '509b909390934e988eb120b58ed9bd8c', '14103cda12c94642974129989d39e50d', \n", - " '8b0876430c2641bcaea954ea00520e64', 'baa4ff1573ae411183e10aeb17c71c53', '14fe8002bbdc4f97acbd1a00de241bf6', \n", - " '1b7d6dfea8464bcab9321018b10ec9c9', '487ad897ba93404a8cbe5de7d1922691', '5182d93d69754d7ba06200cd1ac5980a', \n", - " '91f3ca1c278247f79a806e49e9cc236f', 'e66e63b206784a559d977d4cb5f1ec34', '840297ae39484e26bfebe83ee30c5b3e', \n", - " 'c6807997194c4c528a8fa8c1f6ee1595', '802667b6371f45b29c7abb051244836a', 'b2bbe715b6a14fd19f751cae8adf6b4e', \n", - " 'feb1d940cd3647d1a101580c2a3b3f8c', '1b9883393ab344a69bc1a0fab192a94c', 'ac604b44fdca482fb753034cb55d1351', \n", - " 'f446bf3102ff4bd99ea1c98f7d2f7af0', 'c2c5d4b9a607487ea405a99c721079d4', '85ddd3c34c58407392953c47a32f5428', \n", - " 'd51de709f95045f8bacf473574b96ba5', '6373dfb8cb9b47e88e8f76adcfadde20', '313d003df34b4bd9823b3474fc93f9f9', \n", - " '53e78583db87421f8decb529ba859ca4', '8fdc9b926a674a9ea07d91df2c5e06f2', '90480ac60a3d475a88fbdab0a003dd5d', \n", - " '7559c3f880f341e898a402eba96a855d', '19a4c2cf718d40588eb96ac25a566353', 'f4427cccaa9442b48b42bedab5ab648e', \n", - " 'e192b8a00b6c422296851c93785deaf7', '355e25bdfc244c5e85d358e39432bd44', 'a0c3a7b410b24e18995f63369a31d123', \n", - " '03a395b4d8614757bb8432b4984559b0', 'a2d48b05d5454d428c0841432c7467b6', '3d981e617b304afab0f21ce8aa6c9786', \n", - " '2cd5668ac9054e2eb2c88bb4ed94bc6d', 'd7a732f4a8644bcbb8dedfc8be242fb2', '367eb90b929d4f6e9470d15c700d2e3f', \n", - " 'e049a7b2a6cb44259f907abbb44c5abc', 'a231added8674bef95092b32bc254ac8', 'e88a8f520dde445484c0a9395e1a0599',\n", - " 'cba570ae38f341faa6257342727377b7', '97953af1b97d4e268c52e1e54dcf421a', 'd200a61757d84b1dab8fbac35ff52c28', \n", - " 'fc68a5bb0a7b4b6386b3f08a69ead36f', '4a8210aec25e443391efb924cc0e5f23', '903742c353ce42c3ad9ab039fc418816', \n", - " '2114e2a75304475fad06ad201948fbad', 'ac917eae407c4deb96625dd0dc2f2ba9', '3dddfb70e7cd40f18a63478654182e9a', \n", - " 'd3735ba212dd4c768e1675dca7bdcb6f', '7abe572148864412a33979592fa985fb', 'd3dff742d07942ca805c2f72e49e12c5' \n", - " ]\n", - " \n", - " X_tr = data.loc[data.user_id.isin(train_ids), :]\n", - " X_te = data.loc[~data.user_id.isin(train_ids), :]\n", - " \n", - " return X_tr, X_te\n", - " \n", - " raise NotImplementedError(\"Unknown split type\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Modeling" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/2274972291.py:4: DtypeWarning: Columns (38) have mixed types. Specify dtype option on import or set low_memory=False.\n", - " data = pd.read_csv('../data/ReplacedMode_Fix_02142024.csv')\n" - ] - } - ], - "source": [ - "# Read the data.\n", - "# data = pd.read_csv('../data/FULL_preprocessed_data_RM_weather.csv')\n", - "# data = pd.read_csv('../data/ReplacedMode_Fix.csv')\n", - "data = pd.read_csv('../data/ReplacedMode_Fix_02142024.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "if DROP_S_MICRO:\n", - " data.drop(\n", - " index=data.loc[data.target == 6, :].index,\n", - " inplace=True\n", - " )\n", - " \n", - " # Shift all values after 6 by -1\n", - " data.loc[data.target > 5, 'target'] -= 1" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "data.drop_duplicates(inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "def plot_hist(df, features=None):\n", - " if not features:\n", - " # All features.\n", - " features = df.columns.tolist()\n", - " \n", - " n_features = len(features)\n", - " \n", - " ncols = 6\n", - " nrows = n_features//ncols if n_features%ncols == 0 else (n_features//ncols) + 1\n", - " \n", - " fig, axes = plt.subplots(nrows=nrows, ncols=ncols, figsize=(10, 10))\n", - " for ix, ax in enumerate(axes.flatten()):\n", - " \n", - " if ix > n_features:\n", - " break\n", - " \n", - " df[features[ix]].hist(ax=ax)\n", - " ax.set(title=features[ix])\n", - " \n", - " plt.tight_layout()\n", - " plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "# First, we map the user IDs to ints.\n", - "\n", - "# USERS = list(data.user_id.unique())\n", - "\n", - "# USER_MAP = {\n", - "# u: i+1 for (i, u) in enumerate(USERS)\n", - "# }\n", - "\n", - "# data['user_id'] = data['user_id'].apply(lambda x: USER_MAP[x])\n", - "\n", - "# data.rename(\n", - "# columns={'start_local_dt_weekday': 'start:DOW', 'end_local_dt_weekday': 'end:DOW'},\n", - "# inplace=True\n", - "# )\n", - "\n", - "# Drop the samples with chosen == no trip or chosen == unknown\n", - "# data.drop(index=data.loc[data.chosen.isin([2, 9])].index, inplace=True)\n", - "\n", - "# data.n_working_residents = data.n_working_residents.apply(lambda x: 0 if x < 0 else x)\n", - "\n", - "# Fix some age preprocessing issues.\n", - "# data.age = data.age.apply(lambda x: x if x < 100 else 2024-x)\n", - "\n", - "# Collapse 'train' and 'bus' into 'transit'\n", - "# data.loc[\n", - "# data.section_mode_argmax.isin(['train', 'bus']), 'section_mode_argmax'\n", - "# ] = 'transit'" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "# display(data.section_mode_argmax.value_counts())" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "# transit = data.loc[data.section_mode_argmax == 'transit', :].copy()\n", - "# transit['section_duration_argmax'] /= 60.\n", - "\n", - "# transit['mph'] = transit['section_distance_argmax']/transit['section_duration_argmax']\n", - "\n", - "# display(transit[['section_duration_argmax', 'section_distance_argmax', 'mph']].describe())" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "# import plotly.express as px\n", - "\n", - "# sp = data.loc[data.section_mode_argmax.isin(['car', 'transit', 'walking']), :]\n", - "# fig = px.line(sp, y='section_distance_argmax', color='section_mode_argmax')\n", - "# fig.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "# Close the figure above.\n", - "# plt.close()" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "def get_duration_estimate(df: pd.DataFrame, dset: SPLIT, model_dict: dict):\n", - " \n", - " X_features = ['section_distance_argmax', 'age']\n", - " \n", - " if 'mph' in df.columns:\n", - " X_features += ['mph']\n", - " \n", - " if dset == SPLIT.TRAIN and model_dict is None:\n", - " model_dict = dict()\n", - " \n", - " if dset == SPLIT.TEST and model_dict is None:\n", - " raise AttributeError(\"Expected model dict for testing.\")\n", - " \n", - " if dset == SPLIT.TRAIN:\n", - " for section_mode in df.section_mode_argmax.unique():\n", - " section_data = df.loc[df.section_mode_argmax == section_mode, :]\n", - " if section_mode not in model_dict:\n", - " model_dict[section_mode] = dict()\n", - "\n", - " model = LinearRegression(fit_intercept=True)\n", - "\n", - " X = section_data[\n", - " X_features\n", - " ]\n", - " Y = section_data[['section_duration_argmax']]\n", - "\n", - " model.fit(X, Y.values.ravel())\n", - "\n", - " r2 = r2_score(y_pred=model.predict(X), y_true=Y.values.ravel())\n", - " print(f\"Train R2 for {section_mode}: {r2}\")\n", - "\n", - " model_dict[section_mode]['model'] = model\n", - " \n", - " elif dset == SPLIT.TEST:\n", - " for section_mode in df.section_mode_argmax.unique():\n", - " section_data = df.loc[df.section_mode_argmax == section_mode, :]\n", - " X = section_data[\n", - " X_features\n", - " ]\n", - " Y = section_data[['section_duration_argmax']]\n", - " \n", - " y_pred = model_dict[section_mode]['model'].predict(X)\n", - " r2 = r2_score(y_pred=y_pred, y_true=Y.values.ravel())\n", - " print(f\"Test R2 for {section_mode}: {r2}\")\n", - " \n", - " # Create the new columns for the duration.\n", - " new_columns = ['p_micro','no_trip','s_car','transit','car','s_micro','ridehail','walk','unknown']\n", - " df[new_columns] = 0\n", - " df['temp'] = 0\n", - " \n", - " for section in df.section_mode_argmax.unique():\n", - " X_section = df.loc[df.section_mode_argmax == section, X_features]\n", - " \n", - " # broadcast to all columns.\n", - " df.loc[df.section_mode_argmax == section, 'temp'] = model_dict[section]['model'].predict(X_section)\n", - " \n", - " for c in new_columns:\n", - " df[c] = df['av_' + c] * df['temp']\n", - " \n", - " df.drop(columns=['temp'], inplace=True)\n", - " \n", - " df.rename(columns=dict([(x, 'tt_'+x) for x in new_columns]), inplace=True)\n", - " \n", - " # return model_dict, result_df\n", - " return model_dict, df" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "# Now, we split the data.\n", - "train_data, test_data = get_train_test_splits(data=data, how=SPLIT_TYPE.INTER_USER)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.7757575757575758\n", - "0.8380486968449932\n" - ] - } - ], - "source": [ - "# If split is inter-user, we should verify test size.\n", - "\n", - "n_tr, n_te = len(train_data.user_id.unique()), len(test_data.user_id.unique())\n", - "n_ex_tr, n_ex_te = train_data.shape[0], test_data.shape[0]\n", - "\n", - "print(n_tr/(n_tr+n_te))\n", - "print(n_ex_tr/(n_ex_tr+n_ex_te))" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['source', 'end_ts', 'end_fmt_time', 'end_loc', 'raw_trip', 'start_ts', 'start_fmt_time', 'start_loc', 'duration', 'distance', 'start_place', 'end_place', 'cleaned_trip', 'inferred_labels', 'inferred_trip', 'expectation', 'confidence_threshold', 'expected_trip', 'user_input', 'start:year', 'start:month', 'start:day', 'start:hour', 'start_local_dt_minute', 'start_local_dt_second', 'start_local_dt_weekday', 'start_local_dt_timezone', 'end:year', 'end:month', 'end:day', 'end:hour', 'end_local_dt_minute', 'end_local_dt_second', 'end_local_dt_weekday', 'end_local_dt_timezone', '_id', 'user_id', 'metadata_write_ts', 'additions', 'mode_confirm', 'purpose_confirm', 'distance_miles', 'Mode_confirm', 'Trip_purpose', 'original_user_id', 'program', 'opcode', 'Timestamp', 'birth_year', 'primary_job_commute_time', 'income_category', 'n_residence_members', 'n_residents_u18', 'n_residents_with_license', 'n_motor_vehicles', 'available_modes', 'age', 'gender_Man', 'gender_Man;Nonbinary/genderqueer/genderfluid', 'gender_Nonbinary/genderqueer/genderfluid', 'gender_Prefer not to say', 'gender_Woman', 'gender_Woman;Nonbinary/genderqueer/genderfluid', 'has_drivers_license_No', 'has_drivers_license_Prefer not to say', 'has_drivers_license_Yes', 'has_multiple_jobs_No', 'has_multiple_jobs_Prefer not to say', 'has_multiple_jobs_Yes', \"highest_education_Bachelor's degree\", 'highest_education_Graduate degree or professional degree', 'highest_education_High school graduate or GED', 'highest_education_Less than a high school graduate', 'highest_education_Prefer not to say', 'highest_education_Some college or associates degree', 'primary_job_type_Full-time', 'primary_job_type_Part-time', 'primary_job_type_Prefer not to say', 'primary_job_description_Clerical or administrative support', 'primary_job_description_Custodial', 'primary_job_description_Education', 'primary_job_description_Food service', 'primary_job_description_Manufacturing, construction, maintenance, or farming', 'primary_job_description_Medical/healthcare', 'primary_job_description_Other', 'primary_job_description_Professional, managerial, or technical', 'primary_job_description_Sales or service', 'primary_job_commute_mode_Active transport', 'primary_job_commute_mode_Car transport', 'primary_job_commute_mode_Hybrid', 'primary_job_commute_mode_Public transport', 'primary_job_commute_mode_Unknown', 'primary_job_commute_mode_WFH', 'is_overnight_trip', 'n_working_residents', 'start_lat', 'start_lng', 'end_lat', 'end_lng', 'temperature_2m (°F)', 'relative_humidity_2m (%)', 'dew_point_2m (°F)', 'rain (inch)', 'snowfall (inch)', 'wind_speed_10m (mp/h)', 'wind_gusts_10m (mp/h)', 'section_distance_argmax', 'section_duration_argmax', 'section_mode_argmax', 'section_coordinates_argmax', 'mph', 'target', 'av_s_micro', 'av_ridehail', 'av_unknown', 'av_car', 'av_transit', 'av_walk', 'av_s_car', 'av_no_trip', 'av_p_micro', 'cost_p_micro', 'cost_no_trip', 'cost_s_car', 'cost_transit', 'cost_car', 'cost_s_micro', 'cost_ridehail', 'cost_walk', 'cost_unknown']\n" - ] - } - ], - "source": [ - "print(train_data.columns.tolist())" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Train R2 for bicycling: 0.9131217438269534\n", - "Train R2 for transit: 0.7868655990732462\n", - "Train R2 for car: 0.7673262331496208\n", - "Train R2 for no_sensed: 0.6274006368569693\n", - "Train R2 for walking: 0.6356687086293809\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df[new_columns] = 0\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df[new_columns] = 0\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df[new_columns] = 0\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df[new_columns] = 0\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df[new_columns] = 0\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df[new_columns] = 0\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df[new_columns] = 0\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df[new_columns] = 0\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df[new_columns] = 0\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:49: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df['temp'] = 0\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:58: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df[c] = df['av_' + c] * df['temp']\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:60: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df.drop(columns=['temp'], inplace=True)\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:62: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df.rename(columns=dict([(x, 'tt_'+x) for x in new_columns]), inplace=True)\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df[new_columns] = 0\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df[new_columns] = 0\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df[new_columns] = 0\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df[new_columns] = 0\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df[new_columns] = 0\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df[new_columns] = 0\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df[new_columns] = 0\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df[new_columns] = 0\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:48: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df[new_columns] = 0\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:49: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df['temp'] = 0\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:58: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df[c] = df['av_' + c] * df['temp']\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:60: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df.drop(columns=['temp'], inplace=True)\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_76325/1465244600.py:62: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df.rename(columns=dict([(x, 'tt_'+x) for x in new_columns]), inplace=True)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "----------\n", - "Test R2 for bicycling: 0.9035643287707561\n", - "Test R2 for transit: 0.41808445188600185\n", - "Test R2 for car: 0.729524725154663\n", - "Test R2 for no_sensed: 0.708585489321987\n", - "Test R2 for walking: 0.6801138679986298\n" - ] - } - ], - "source": [ - "params, train_data = get_duration_estimate(train_data, SPLIT.TRAIN, None)\n", - "print(10 * \"-\")\n", - "_, test_data = get_duration_estimate(test_data, SPLIT.TEST, params)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "((58650, 139), (11334, 139))" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "train_data.shape, test_data.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "# Some helper functions that will help ease redundancy in the code.\n", - "\n", - "def drop_columns(df: pd.DataFrame):\n", - " to_drop = [\n", - " 'source', 'end_ts', 'end_fmt_time', 'end_loc', 'raw_trip', 'start_ts', \n", - " 'start_fmt_time', 'start_loc', 'duration', 'distance', 'start_place', \n", - " 'end_place', 'cleaned_trip', 'inferred_labels', 'inferred_trip', 'expectation',\n", - " 'confidence_threshold', 'expected_trip', 'user_input', 'start:year', 'start:month', \n", - " 'start:day', 'start_local_dt_minute', 'start_local_dt_second', \n", - " 'start_local_dt_weekday', 'start_local_dt_timezone', 'end:year', 'end:month', 'end:day', \n", - " 'end_local_dt_minute', 'end_local_dt_second', 'end_local_dt_weekday', \n", - " 'end_local_dt_timezone', '_id', 'user_id', 'metadata_write_ts', 'additions', \n", - " 'mode_confirm', 'purpose_confirm', 'Mode_confirm', 'Trip_purpose', \n", - " 'original_user_id', 'program', 'opcode', 'Timestamp', 'birth_year', \n", - " 'available_modes', 'section_coordinates_argmax', 'section_mode_argmax'\n", - " ]\n", - " \n", - " # Drop section_mode_argmax and available_modes.\n", - " return df.drop(\n", - " columns=to_drop, \n", - " inplace=False\n", - " )\n", - "\n", - "\n", - "def scale_values(df: pd.DataFrame, split: SPLIT, scalers=None):\n", - " # Scale costs using StandardScaler.\n", - " costs = df[[c for c in df.columns if 'cost_' in c]].copy()\n", - " times = df[[c for c in df.columns if 'tt_' in c or 'duration' in c]].copy()\n", - " distances = df[[c for c in df.columns if 'distance' in c]]\n", - " \n", - " print(\n", - " \"Cost columns to be scaled: \", costs.columns,\"\\nTime columns to be scaled: \", times.columns, \\\n", - " \"\\nDistance columns to be scaled: \", distances.columns\n", - " )\n", - " \n", - " if split == SPLIT.TRAIN and scalers is None:\n", - " cost_scaler = StandardScaler()\n", - " tt_scaler = StandardScaler()\n", - " dist_scaler = StandardScaler()\n", - " \n", - " cost_scaled = pd.DataFrame(\n", - " cost_scaler.fit_transform(costs), \n", - " columns=costs.columns, \n", - " index=costs.index\n", - " )\n", - " \n", - " tt_scaled = pd.DataFrame(\n", - " tt_scaler.fit_transform(times),\n", - " columns=times.columns,\n", - " index=times.index\n", - " )\n", - " \n", - " dist_scaled = pd.DataFrame(\n", - " dist_scaler.fit_transform(distances),\n", - " columns=distances.columns,\n", - " index=distances.index\n", - " )\n", - " \n", - " elif split == SPLIT.TEST and scalers is not None:\n", - " \n", - " cost_scaler, tt_scaler, dist_scaler = scalers\n", - " \n", - " cost_scaled = pd.DataFrame(\n", - " cost_scaler.transform(costs), \n", - " columns=costs.columns, \n", - " index=costs.index\n", - " )\n", - " \n", - " tt_scaled = pd.DataFrame(\n", - " tt_scaler.transform(times), \n", - " columns=times.columns, \n", - " index=times.index\n", - " )\n", - " \n", - " dist_scaled = pd.DataFrame(\n", - " dist_scaler.transform(distances),\n", - " columns=distances.columns,\n", - " index=distances.index\n", - " )\n", - " \n", - " else:\n", - " raise NotImplementedError(\"Unknown split\")\n", - " \n", - " # Drop the original columns.\n", - " df.drop(\n", - " columns=costs.columns.tolist() + times.columns.tolist() + distances.columns.tolist(), \n", - " inplace=True\n", - " )\n", - " \n", - " df = df.merge(right=cost_scaled, left_index=True, right_index=True)\n", - " df = df.merge(right=tt_scaled, left_index=True, right_index=True)\n", - " df = df.merge(right=dist_scaled, left_index=True, right_index=True)\n", - " \n", - " return df, (cost_scaler, tt_scaler, dist_scaler)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "# First, drop columns.\n", - "\n", - "train_data = drop_columns(train_data)\n", - "\n", - "# Scale cost.\n", - "# train_data, scalers = scale_values(train_data, SPLIT.TRAIN, None)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "test_data = drop_columns(test_data)\n", - "\n", - "# Scale cost.\n", - "# test_data, _ = scale_values(test_data, SPLIT.TEST, scalers)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Index(['start:hour', 'end:hour', 'distance_miles', 'primary_job_commute_time',\n", - " 'income_category', 'n_residence_members', 'n_residents_u18',\n", - " 'n_residents_with_license', 'n_motor_vehicles', 'age', 'gender_Man',\n", - " 'gender_Man;Nonbinary/genderqueer/genderfluid',\n", - " 'gender_Nonbinary/genderqueer/genderfluid', 'gender_Prefer not to say',\n", - " 'gender_Woman', 'gender_Woman;Nonbinary/genderqueer/genderfluid',\n", - " 'has_drivers_license_No', 'has_drivers_license_Prefer not to say',\n", - " 'has_drivers_license_Yes', 'has_multiple_jobs_No',\n", - " 'has_multiple_jobs_Prefer not to say', 'has_multiple_jobs_Yes',\n", - " 'highest_education_Bachelor's degree',\n", - " 'highest_education_Graduate degree or professional degree',\n", - " 'highest_education_High school graduate or GED',\n", - " 'highest_education_Less than a high school graduate',\n", - " 'highest_education_Prefer not to say',\n", - " 'highest_education_Some college or associates degree',\n", - " 'primary_job_type_Full-time', 'primary_job_type_Part-time',\n", - " 'primary_job_type_Prefer not to say',\n", - " 'primary_job_description_Clerical or administrative support',\n", - " 'primary_job_description_Custodial',\n", - " 'primary_job_description_Education',\n", - " 'primary_job_description_Food service',\n", - " 'primary_job_description_Manufacturing, construction, maintenance, or farming',\n", - " 'primary_job_description_Medical/healthcare',\n", - " 'primary_job_description_Other',\n", - " 'primary_job_description_Professional, managerial, or technical',\n", - " 'primary_job_description_Sales or service',\n", - " 'primary_job_commute_mode_Active transport',\n", - " 'primary_job_commute_mode_Car transport',\n", - " 'primary_job_commute_mode_Hybrid',\n", - " 'primary_job_commute_mode_Public transport',\n", - " 'primary_job_commute_mode_Unknown', 'primary_job_commute_mode_WFH',\n", - " 'is_overnight_trip', 'n_working_residents', 'start_lat', 'start_lng',\n", - " 'end_lat', 'end_lng', 'temperature_2m (°F)', 'relative_humidity_2m (%)',\n", - " 'dew_point_2m (°F)', 'rain (inch)', 'snowfall (inch)',\n", - " 'wind_speed_10m (mp/h)', 'wind_gusts_10m (mp/h)',\n", - " 'section_distance_argmax', 'section_duration_argmax', 'mph', 'target',\n", - " 'av_s_micro', 'av_ridehail', 'av_unknown', 'av_car', 'av_transit',\n", - " 'av_walk', 'av_s_car', 'av_no_trip', 'av_p_micro', 'cost_p_micro',\n", - " 'cost_no_trip', 'cost_s_car', 'cost_transit', 'cost_car',\n", - " 'cost_s_micro', 'cost_ridehail', 'cost_walk', 'cost_unknown',\n", - " 'tt_p_micro', 'tt_no_trip', 'tt_s_car', 'tt_transit', 'tt_car',\n", - " 'tt_s_micro', 'tt_ridehail', 'tt_walk', 'tt_unknown'],\n", - " dtype='object')\n" - ] - } - ], - "source": [ - "print(train_data.columns)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "8" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(train_data.target.unique())" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "# train_data.to_csv('../data/train.csv', index=False)\n", - "# test_data.to_csv('../data/test.csv', index=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.metrics import classification_report\n", - "from sklearn.model_selection import GridSearchCV, StratifiedKFold\n", - "from pprint import pprint\n", - "from sklearn.inspection import permutation_importance\n", - "from time import perf_counter" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Random Forest classifier" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [], - "source": [ - "CV = False\n", - "SAVE_MODEL = True" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.ensemble import RandomForestClassifier\n", - "\n", - "# exp question - compute sample weights using user_id.\n", - "\n", - "rf_train = train_data.drop(columns=['target', \n", - " 'start_lat', 'start_lng', 'end_lat', 'end_lng'\n", - " ])\n", - "rf_test = test_data.drop(columns=['target', \n", - " 'start_lat', 'start_lng', 'end_lat', 'end_lng'\n", - " ])\n", - "\n", - "if CV:\n", - "\n", - " model = RandomForestClassifier(random_state=SEED)\n", - "\n", - " # We want to build bootstrapped trees that would not always use all the features.\n", - "\n", - " param_set2 = {\n", - " 'n_estimators': [150, 200, 250, 300],\n", - " 'min_samples_split': [2, 3, 4],\n", - " 'min_samples_leaf': [1, 2, 3],\n", - " 'class_weight': ['balanced_subsample'],\n", - " 'max_features': [None, 'sqrt'],\n", - " 'bootstrap': [True]\n", - " }\n", - "\n", - " cv_set2 = StratifiedKFold(n_splits=3, shuffle=True, random_state=SEED)\n", - "\n", - " clf_set2 = GridSearchCV(model, param_set2, cv=cv_set2, n_jobs=-1, scoring='f1_weighted', verbose=1)\n", - "\n", - " start = perf_counter()\n", - "\n", - " clf_set2.fit(\n", - " rf_train,\n", - " train_data.target.values.ravel()\n", - " )\n", - "\n", - " time_req = (perf_counter() - start)/60.\n", - "\n", - " best_model = clf_set2.best_estimator_\n", - "else:\n", - " best_model = RandomForestClassifier(\n", - " n_estimators=150,\n", - " max_depth=None,\n", - " min_samples_leaf=2,\n", - " bootstrap=True,\n", - " class_weight='balanced_subsample',\n", - " random_state=SEED,\n", - " n_jobs=-1\n", - " ).fit(rf_train, train_data.target.values.ravel())" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
RandomForestClassifier(class_weight='balanced_subsample', min_samples_leaf=2,\n",
-       "                       n_estimators=150, n_jobs=-1, random_state=19348)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" - ], - "text/plain": [ - "RandomForestClassifier(class_weight='balanced_subsample', min_samples_leaf=2,\n", - " n_estimators=150, n_jobs=-1, random_state=19348)" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "best_model" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [], - "source": [ - "tr_f1_set2 = f1_score(\n", - " y_true=train_data.target.values,\n", - " y_pred=best_model.predict(rf_train),\n", - " average='weighted'\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [], - "source": [ - "te_f1_set2 = f1_score(\n", - " y_true=test_data.target.values,\n", - " y_pred=best_model.predict(rf_test),\n", - " average='weighted'\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[BOOTSTRAPPED] | Train F1: 0.9429078702826239, Test F1: 0.3260387751184679\n" - ] - } - ], - "source": [ - "# Without location:\n", - "#. intra-user split:\n", - "# [BOOTSTRAPPED] | Train F1: 0.9983454261487021, Test F1: 0.7192048995905516\n", - "# if stratified by section_mode_argmax:\n", - "# [BOOTSTRAPPED] | Train F1: 0.9987250576328509, Test F1: 0.7242573620109232\n", - "\n", - "# With location:\n", - "# [BOOTSTRAPPED] | Train F1: 0.9992402006853468, Test F1: 0.7654135199070202\n", - "\n", - "print(f\"[BOOTSTRAPPED] | Train F1: {tr_f1_set2}, Test F1: {te_f1_set2}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [], - "source": [ - "if SAVE_MODEL:\n", - "\n", - " import pickle\n", - "\n", - " with open('../models/tuned_rf_model.pkl', 'wb') as f:\n", - " f.write(pickle.dumps(best_model))" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[('primary_job_commute_time', 0.03656116744063983),\n", - " ('distance_miles', 0.03384896885706385),\n", - " ('mph', 0.03365824428294463),\n", - " ('cost_transit', 0.03351839132356644),\n", - " ('income_category', 0.03327663593086925),\n", - " ('age', 0.03320140844541059),\n", - " ('dew_point_2m (°F)', 0.03174850829935579),\n", - " ('section_distance_argmax', 0.0316844184072864),\n", - " ('temperature_2m (°F)', 0.031062635841221802),\n", - " ('n_motor_vehicles', 0.02809262054525041),\n", - " ('cost_s_car', 0.02590076039294508),\n", - " ('cost_ridehail', 0.02390316297823517),\n", - " ('section_duration_argmax', 0.023124663088762328),\n", - " ('n_residents_with_license', 0.022957697145547393),\n", - " ('tt_p_micro', 0.022799905074206473),\n", - " ('tt_transit', 0.02231532316999558),\n", - " ('relative_humidity_2m (%)', 0.02223392911205542),\n", - " ('tt_walk', 0.02156031560995313),\n", - " ('end:hour', 0.02127261764701738),\n", - " ('start:hour', 0.02113307125915479),\n", - " ('cost_car', 0.02069943868032831),\n", - " ('primary_job_commute_mode_Car transport', 0.020695999999399473),\n", - " ('n_residence_members', 0.02039769915552014),\n", - " ('wind_gusts_10m (mp/h)', 0.020371151744672206),\n", - " ('wind_speed_10m (mp/h)', 0.0202171294903448),\n", - " ('n_working_residents', 0.019856756085641247),\n", - " ('tt_s_car', 0.018478958407386708),\n", - " ('tt_car', 0.017174957078456614),\n", - " ('tt_ridehail', 0.01676576006316021),\n", - " ('cost_s_micro', 0.014284462066383688),\n", - " ('primary_job_description_Sales or service', 0.012984251205446487),\n", - " ('n_residents_u18', 0.011854045241279415),\n", - " ('tt_s_micro', 0.011691299016354224),\n", - " ('primary_job_commute_mode_Public transport', 0.011604917446563265),\n", - " ('primary_job_commute_mode_Active transport', 0.011563480793645827),\n", - " ('gender_Woman', 0.011263214031603247),\n", - " ('highest_education_High school graduate or GED', 0.010576049151755485),\n", - " ('highest_education_Some college or associates degree', 0.01020534553535622),\n", - " ('av_transit', 0.009289915096852685),\n", - " ('primary_job_type_Full-time', 0.009228727317286755),\n", - " ('primary_job_description_Clerical or administrative support',\n", - " 0.009038264768764997),\n", - " ('primary_job_type_Part-time', 0.008895929760766197),\n", - " ('av_p_micro', 0.00863641893397233),\n", - " ('gender_Man', 0.008452778636530149),\n", - " ('primary_job_description_Professional, managerial, or technical',\n", - " 0.008401553611939554),\n", - " ('has_drivers_license_Yes', 0.007324804786898662),\n", - " ('primary_job_description_Manufacturing, construction, maintenance, or '\n", - " 'farming',\n", - " 0.007086900844546432),\n", - " ('av_walk', 0.0065497221649774935),\n", - " ('primary_job_description_Education', 0.0062592730468462535),\n", - " ('has_drivers_license_No', 0.0061996065304084184),\n", - " (\"highest_education_Bachelor's degree\", 0.006032319692096047),\n", - " ('has_multiple_jobs_Yes', 0.005882443681020677),\n", - " ('has_multiple_jobs_No', 0.005335658287831361),\n", - " ('av_s_micro', 0.005050550371666917),\n", - " ('av_car', 0.004728243532015504),\n", - " ('highest_education_Graduate degree or professional degree',\n", - " 0.004642958375833981),\n", - " ('gender_Woman;Nonbinary/genderqueer/genderfluid', 0.00421330092341653),\n", - " ('primary_job_description_Custodial', 0.003419042865152697),\n", - " ('av_s_car', 0.0033783136347606295),\n", - " ('av_ridehail', 0.0027666404305310257),\n", - " ('gender_Nonbinary/genderqueer/genderfluid', 0.0026293269089904046),\n", - " ('highest_education_Prefer not to say', 0.002504632146302557),\n", - " ('primary_job_description_Food service', 0.002417226793032642),\n", - " ('primary_job_description_Medical/healthcare', 0.002318202110078709),\n", - " ('primary_job_type_Prefer not to say', 0.0018874661300219261),\n", - " ('tt_unknown', 0.0017189591933169184),\n", - " ('primary_job_description_Other', 0.0016913655476757901),\n", - " ('rain (inch)', 0.0014573980261950155),\n", - " ('has_drivers_license_Prefer not to say', 0.0012507320988533646),\n", - " ('primary_job_commute_mode_WFH', 0.0010339629984452642),\n", - " ('av_unknown', 0.0009490470975242473),\n", - " ('highest_education_Less than a high school graduate', 0.0009240966799280463),\n", - " ('has_multiple_jobs_Prefer not to say', 0.0009222062920680996),\n", - " ('snowfall (inch)', 0.0009015378230446266),\n", - " ('primary_job_commute_mode_Hybrid', 0.0008805253765039911),\n", - " ('gender_Man;Nonbinary/genderqueer/genderfluid', 0.0005723629022594494),\n", - " ('primary_job_commute_mode_Unknown', 0.0005385851614091888),\n", - " ('gender_Prefer not to say', 3.0396144453361146e-05),\n", - " ('tt_no_trip', 1.0172431126169753e-05),\n", - " ('av_no_trip', 9.070799875677394e-06),\n", - " ('is_overnight_trip', 0.0),\n", - " ('cost_p_micro', 0.0),\n", - " ('cost_no_trip', 0.0),\n", - " ('cost_walk', 0.0),\n", - " ('cost_unknown', 0.0)]\n" - ] - } - ], - "source": [ - "# Feature importances - gini entropy\n", - "\n", - "pprint(\n", - " sorted(\n", - " zip(\n", - " best_model.feature_names_in_, \n", - " best_model.feature_importances_\n", - " ), \n", - " key=lambda x: x[-1], reverse=True\n", - " )\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [], - "source": [ - "# importance = permutation_importance(\n", - "# best_model,\n", - "# rf_test,\n", - "# test_data.target.values,\n", - "# n_repeats=5,\n", - "# random_state=SEED,\n", - "# n_jobs=-1,\n", - "# scoring='f1_weighted'\n", - "# )" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "# pd.DataFrame(\n", - "# {\n", - "# 'feature names': test_data.columns.delete(\n", - "# test_data.columns.isin(['target'])\n", - "# ),\n", - "# 'imp_mean': importance.importances_mean, \n", - "# 'imp_std': importance.importances_std\n", - "# }\n", - "# ).sort_values(by=['imp_mean'], axis='rows', ascending=False).head(20)" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "# fig, ax = plt.subplots(nrows=1, ncols=2)\n", - "y_pred = best_model.predict(rf_test)\n", - "pred_df = pd.DataFrame(\n", - " {\n", - " 'y_pred': y_pred.ravel(),\n", - " 'y_true': test_data.target.values.ravel()\n", - " }\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqEAAAKyCAYAAADl4AdrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAC4pElEQVR4nOzdd3hT5dsH8G+atElnuneBQssuqKBQHAyZMuRVAUUQAQFlyZ4q4ABBERAEEVFA8AcqIs4KylA2VMooo0BL94K26U6a5Lx/RFJjG2ixyWnC93NduSAnT865T5Nzcud+nudEIgiCACIiIiIiK3IQOwAiIiIiuvcwCSUiIiIiq2MSSkRERERWxySUiIiIiKyOSSgRERERWR2TUCIiIiKyOiahRERERGR1TEKJiIiIyOpkYgdAREREVB+Vl5dDo9GIHQacnJygUCjEDqPOMQklIiIi+pfy8nKEN3RDVo5O7FAQGBiIpKQku0tEmYQSERER/YtGo0FWjg7JsY3g4S7e6MXCIj0atrsOjUbDJJSIiIjoXuHh7gAPd6nYYdglJqFEREREZughQA+9qNu3V5wdT0RERERWx0ooERERkRk6QQ+diMVInSBeFdbSWAklIiIiIqtjEkpEREREVsfueCIiIiIzDBOTxOuP58QkIiIiIqI6xEooERERkRl6US/QBJG3blmshBIRERGR1TEJJSIiIiKrY3c8ERERkRk6QYBOEG9ykJjbtjRWQomIiIjI6piEEhEREZHVsTueiIiIyAxeJ9RyWAklIiIiIqtjJZSIiIjIDD0E6FgJtQhWQomIiIjI6piEEhEREZHVsTueiIiIyAxOTLIcVkKJiIiIyOqYhBIRERGR1bE7noiIiMgM/myn5bASSkRERERWx0ooERERkRn6v29ibt9esRJKRERERFbHJJSIiIiIrI7d8URERERm6ET+2U4xt21prIQSERERkdWxEkpERERkhk4w3MTcvr1iJZSIiIiIrI5JKBERERFZHbvjiYiIiMzgdUIth5VQIiIiIrI6JqFEREREZHXsjiciIiIyQw8JdJCIun17xUooEREREVkdK6FEREREZugFw03M7dsrVkKJiIiIyOqYhBIRERGR1bE7noiIiMgMncgTk8TctqWxEkpEREREVsdKKBEREZEZrIRaDiuhRERERGR1TEKJiIiI7MS6devQpk0b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rcRzw4YNiI6OrrvIiIiIiMR26xJNYt7sVK2745csWYLevXvjwoUL0Gq1WLVqFeLj43H06FEcPHjQEjESERERkZ2pdSW0U6dOOHz4MEpLS9GkSRPs2bMHAQEBOHr0qMk1P4mIiIiIzLmr631ERUUZL9FEREREZLc4Mcli7ioJ1el02LVrFy5evAiJRIIWLVrgySefvKuL1hMRERHRvafWWeP58+fx5JNPIisrC82aGX6WMiEhAX5+fvj+++8RFRVV50ESERERkX2p9ZjQl156Ca1atUJaWhr++usv/PXXX0hNTUWbNm0wduxYS8RIREREJA6hHtzsVK0roWfOnMGpU6fg5eVlXObl5YV33nkHDz74YJ0GR0RERET2qdaV0GbNmiE7O7vK8pycHERERNRJUERERET1gthVUDuuhNYoCS0sLDTeFi9ejMmTJ+Obb75BWloa0tLS8M0332DKlClYunSppeMlIiIiIjtQo+54T09Pk5/kFAQBgwcPNi4TBEOa3r9/f+h0OguESURERET2pEZJ6P79+y0dBxEREVH9I/ZPZ97rP9vZuXNnS8dBRERERPeQu766fGlpKVJSUqDRaEyWt2nT5j8HRURERET2rdZJaG5uLkaOHIlffvml2sc5JpSIiIjshUQw3MTcvr2q9SWapkyZgvz8fBw7dgzOzs6IiYnB5s2bERkZie+//94SMRIRERGRnal1JXTfvn3YvXs3HnzwQTg4OKBhw4bo0aMHPDw8sGTJEvTt29cScRIRERFZn9jX6mQltFJJSQn8/f0BAN7e3sjNzQUAREVF4a+//qrb6IiIiIjILt3VLyZdvnwZAHDfffdh/fr1SE9Px8cff4ygoKA6D5CIiIiI7E+tu+OnTJmCzMxMAMCCBQvQq1cvbNu2DU5OTti0aVNdx0dEREREdqjWSejzzz9v/P/999+P69ev49KlS2jQoAF8fX3rNDgiIiIisk93fZ3QW1xcXPDAAw/URSxERERE9YoEIl+iSbxNW1yNktBp06bVeIUffPDBXQdDRERERPeGGiWhp0+frtHKJBJ7zteJiIiIqK7UKAndv3+/peOguyANDRY7BNEIjv95JIlN011LFjsE0fyaESd2CKLpFXK/2CGIRqr0EDsEUQk6vdghiMJB0ABFIgchSAw3Mbdvp2p9iSYiIiIiov+KSSgRERERWd293adJ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S7zzzjssX76cFStWEB8fz/bt2xk7dizR0dEkJiYaHZ64CSWhct4eeOABPvroI7799luaNGlidDgu5ePjYx+Y1LlzZ7Zs2cKCBQt45ZVXDI7MuZKSksjIyKBTp072bRaLhW+//ZZFixZRVlZWZwbrBAYGkpCQwIEDB4wOxekaNWpU5QtWu3bteP/99w2KyBgpKSmsW7eODz74wOhQXOaxxx5j4sSJDB06FKj8ApaSksKcOXOUhEqNURIqf5jNZuOBBx5g1apVfP3118TGxhodkuFsNhtlZWVGh+F01113Hbt27XLYNmLECNq2bcuECRPqTAIKUFZWRnJyMldffbXRoTjdVVddVWUatv3799OsWTODIjLGmUGYZwbp1AXFxcV4eDgOG/H09KybUzRpdLzTKAn9EwoLCzl48KB9/ciRI2zfvp3w8HCaNm1qYGTONWbMGFasWMGHH35IcHAw6enpAISGhuLv729wdM73+OOP069fP2JiYigoKGDlypV8/fXXVWYNcEfBwcFV+v4GBgYSERHh9n2CH330UQYOHEjTpk3JyMhg5syZ5Ofn14lq0MMPP8yVV17J7Nmzufnmm9m8eTOvvvoqr776qtGhuYzVamXJkiUkJibi5VV3/sscOHAgs2bNomnTpsTHx7Nt2zbmzZvHyJEjjQ5N3Ejd+YuqQVu3bqVnz5729TP9whITE1m6dKlBUTnf4sWLAejRo4fD9iVLltSJzvqnTp3iH//4BydPniQ0NJQOHTrw2Wef0atXL6NDEydKS0tj2LBhnD59mgYNGtClSxc2bdpUJ6qBl112GatWrWLSpEk89dRTxMbGMn/+fG699VajQ3OZdevWcezYsTqXfC1cuJApU6YwevRoMjIyiI6O5p577mHq1KlGh+Z6VhuGDg5y419MMtlsblznFREREfkT8vPzCQ0N5fpm9+Pl4WtYHGZrGetSFpGXl0dISIhhcTiD5gkVEREREZdTc7yIiIhIdWzWysXI87spVUJFRERExOVUCRURERGpjqZochpVQkVERETE5ZSEioiIiIjLqTleREREpDqaJ9RpVAkVEREREZdTEioiNWratGlccskl9vU77riDwYMHuzyOo0ePYjKZ2L59e7XHNG/enPnz5//h51y6dClhYWF/OTaTycTq1av/8vOIiNRmSkJF6oA77rgDk8mEyWTC29ubuLg4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5foGo/Dy8DEsDrO1nHWZb5CXl0dISIhhcTiDKqEiIiIi4nJKQkVERETE5TQwSURERKQ6mifUaVQJFRERERGXUyVUREREpDpWG2BgNdKqSqiIiIiISI1REioiIiIiLqfmeBEREZFq2GxWbDbjfrXIyHM7myqhIiIiIuJySkJFRERExOXUHC8iIiJSHZvN2BHqmidURERERKTmqBIqIiIiUh2bwfOEqhIqIiIiIlJzlISKiIiIiMupOV5ERESkOlYrmAycq1PzhIqIiIiI1BxVQkVERESqo4FJTqNKqIiIiIi4nJJQEREREXE5NceLiIiIVMNmtWIzcGCSTQOTRERERERqjpJQEREREXE5NceLiIiIVEej451GlVARERERcTlVQkVERESqY7WBSZVQZ1AlVERERERcTkmoiIiIiLicmuNFREREqmOzAQbO1anmeBERERGRmqMkVERERERcTs3xIiIiItWwWW3YDBwdb1NzvIiIiIhIzVElVERERKQ6NivGDkwy8NxOpkqoiIiIiLicklARERERcTk1x4uIiIhUQwOTnEeVUBERERFxOVVCRURERKqjgUlOo0qoiIiIiLicKqEiIiIi1TBTAQZ2yzRTYdzJnUxJqIiIiMiv+Pj4EBUVxYb0NUaHQlRUFD4+PkaHUeNMNncediUiIiLyJ5WWllJeXm50GPj4+ODn52d0GDVOSaiIiIiIuJwGJomIiIiIyykJFRERERGXUxIqIiIiIi6nJFREREREXE5JqIiIiIi4nJJQEREREXE5JaEiIiIi4nL/D426dC0AWTFTAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig, ax = plt.subplots(figsize=(7, 7))\n", - "cm = ConfusionMatrixDisplay.from_estimator(\n", - " best_model,\n", - " X=rf_test,\n", - " y=test_data[['target']],\n", - " ax=ax\n", - ")\n", - "# ax.set_xticklabels(TARGETS, rotation=45)\n", - "# ax.set_yticklabels(TARGETS)\n", - "fig.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " precision recall f1-score support\n", - "\n", - " 1 0.71 0.73 0.72 1087\n", - " 2 0.78 0.74 0.76 3358\n", - " 3 0.61 0.59 0.60 1690\n", - " 4 0.53 0.61 0.57 565\n", - " 5 0.79 0.76 0.77 4288\n", - " 6 0.57 0.65 0.61 348\n", - " 7 0.65 0.73 0.69 1351\n", - " 8 0.77 0.82 0.79 1310\n", - "\n", - " accuracy 0.73 13997\n", - " macro avg 0.68 0.70 0.69 13997\n", - "weighted avg 0.73 0.73 0.73 13997\n", - "\n" - ] - } - ], - "source": [ - "# print(classification_report(y_true=pred_df.y_true, y_pred=pred_df.y_pred, target_names=TARGETS))\n", - "print(classification_report(y_true=pred_df.y_true, y_pred=pred_df.y_pred))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## XGBoost" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "# from sklearn.utils.class_weight import compute_sample_weight\n", - "\n", - "# sample_weights = compute_sample_weight(class_weight='balanced', y=train_data.user_id.values.ravel())" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [], - "source": [ - "# from xgboost import XGBClassifier\n", - "\n", - "# y_train = train_data.target.values.ravel() - 1\n", - "# y_test = test_data.target.values.ravel() - 1\n", - "\n", - "# # weights = compute_class_weight(class_weight='balanced', classes=np.unique(y_pred), y_pred)\n", - "\n", - "# xgm = XGBClassifier(\n", - "# n_estimators=300,\n", - "# max_depth=None,\n", - "# tree_method='hist',\n", - "# objective='multi:softmax',\n", - "# num_class=9\n", - "# ).fit(rf_train, y_train)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [], - "source": [ - "# preds = xgm.predict(rf_test)\n", - "\n", - "# print(classification_report(y_true=y_test, y_pred=preds, target_names=TARGETS))" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [], - "source": [ - "# import pickle\n", - "\n", - "# # RF_RM.pkl = 0.8625 on test.\n", - "# # RF_RM_1.pkl = 0.77 on test.\n", - "# with open('../models/RF_RM_1.pkl', 'wb') as f:\n", - "# f.write(pickle.dumps(model))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## TODO:\n", - "\n", - "\n", - "- Explain why location might not be a good feature to add (plot start and end on map and explain how model might just overfit to the raw coordinates)\n", - "- Merge `unknown` and `no_trip` into one category and validate against models trained on (a) separate labels (b) dropped labels\n", - "- Explore more of the abnormal `walking` trips" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "interpreter": { - "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" - }, - "kernelspec": { - "display_name": "emission", - "language": "python", - "name": "emission" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.16" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/rm_src/benchmark_analysis.ipynb b/rm_src/benchmark_analysis.ipynb deleted file mode 100644 index 104dd51..0000000 --- a/rm_src/benchmark_analysis.ipynb +++ /dev/null @@ -1,381 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "269547d8", - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "28343f2b", - "metadata": {}, - "outputs": [], - "source": [ - "df = pd.read_csv('../data/FULL_preprocessed_data_RM_weather.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "fa60582f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "E-bike 20029\n", - "Gas Car, drove alone 18412\n", - "Gas Car, with others 16684\n", - "Walk 10857\n", - "Not a Trip 2420\n", - "Regular Bike 1703\n", - "Bus 1363\n", - "Other 1145\n", - "Taxi/Uber/Lyft 310\n", - "Bikeshare 84\n", - "Train 67\n", - "Scooter share 52\n", - "Free Shuttle 50\n", - "Skate board 41\n", - "Name: Mode_confirm, dtype: int64" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df.Mode_confirm.value_counts()" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "7e380c56", - "metadata": {}, - "outputs": [], - "source": [ - "# hyp = df[df.Mode_confirm == 'E-bike']\n", - "hyp = df.copy()\n", - "hyp = hyp[['income_category', 'n_motor_vehicles',\n", - " 'n_residence_members', 'n_residents_u18', 'is_student',\n", - " 'n_residents_with_license', 'duration', 'distance_miles',\n", - " 'age', 'is_overnight_trip', 'n_working_residents', 'is_male',\n", - " 'start:sin_HOD', \n", - " 'start:cos_HOD',\n", - " 'end:sin_HOD', 'end:cos_HOD', 'temperature_2m (°F)',\n", - " 'relative_humidity_2m (%)', 'dew_point_2m (°F)', 'rain (inch)',\n", - " 'snowfall (inch)', 'cloud_cover (%)', 'wind_speed_10m (mp/h)',\n", - " 'wind_gusts_10m (mp/h)', 'section_distance_argmax',\n", - " 'section_duration_argmax', 'mph', 'chosen', 'av_no_trip', 'av_s_car',\n", - " 'av_p_micro', 'av_walk', 'av_s_micro', 'av_transit', 'av_ridehail',\n", - " 'av_car', 'av_unknown', 'cost_p_micro', 'cost_no_trip', 'cost_s_car',\n", - " 'cost_transit', 'cost_car', 'cost_s_micro', 'cost_ridehail',\n", - " 'cost_walk', 'cost_unknown']]" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "77e331a5", - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.model_selection import train_test_split\n", - "from sklearn.metrics import f1_score\n", - "from sklearn.ensemble import RandomForestClassifier" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "1ccfe253", - "metadata": {}, - "outputs": [], - "source": [ - "X_tr, X_te, Y_tr, Y_te = train_test_split(\n", - " hyp.drop(columns=['chosen']), hyp[['chosen']], test_size=0.2, shuffle=True, stratify=hyp[['chosen']]\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "2ea90f37", - "metadata": {}, - "outputs": [], - "source": [ - "model = RandomForestClassifier().fit(X_tr, Y_tr.values.ravel())" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "46c50e0d", - "metadata": {}, - "outputs": [], - "source": [ - "y_tr_pred = model.predict(X_tr)\n", - "y_te_pred = model.predict(X_te)" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "77f9f005", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1.0" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "f1_score(y_true=Y_tr.values.ravel(), y_pred=y_tr_pred, average='weighted')" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "c08ccd5a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.7247243014745804" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "f1_score(y_true=Y_te.values.ravel(), y_pred=y_te_pred, average='weighted')" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "bb5be29d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[('age', 0.07034490454052576), ('mph', 0.046077458861916464), ('distance_miles', 0.04227922185622416), ('income_category', 0.042045300984451986), ('dew_point_2m (°F)', 0.040326971736931075), ('temperature_2m (°F)', 0.04026013502695752), ('n_residence_members', 0.04011768641381229), ('duration', 0.038452743580322295), ('section_distance_argmax', 0.038170155240570436), ('cost_transit', 0.03781163632826536), ('section_duration_argmax', 0.035462758618913716), ('cost_s_car', 0.034390094889762884), ('n_motor_vehicles', 0.03379247604608051), ('n_residents_with_license', 0.03070869700490467), ('cost_ridehail', 0.03048846642958717), ('relative_humidity_2m (%)', 0.030090075033090597), ('wind_gusts_10m (mp/h)', 0.029081664383436266), ('n_working_residents', 0.028816144221162413), ('wind_speed_10m (mp/h)', 0.02858556819484081), ('cloud_cover (%)', 0.02495871571321774), ('cost_car', 0.023892323875139673), ('end:cos_HOD', 0.023765393583672044), ('start:cos_HOD', 0.023437391395931484), ('start:sin_HOD', 0.022230720826376518), ('end:sin_HOD', 0.02207708217592035), ('n_residents_u18', 0.021771464179907447), ('is_male', 0.02009990945010731), ('cost_s_micro', 0.01639305932751749), ('av_p_micro', 0.015927295338181373), ('av_walk', 0.012539972617736221), ('av_transit', 0.011339815089503233), ('is_student', 0.010405977662256977), ('av_s_micro', 0.007322014585269799), ('av_car', 0.006833582392128755), ('av_ridehail', 0.006552208955349027), ('av_s_car', 0.006497932334664742), ('rain (inch)', 0.0026762209888453866), ('av_unknown', 0.0016465804016971863), ('snowfall (inch)', 0.0016132591409545494), ('av_no_trip', 0.0007168051104359397), ('is_overnight_trip', 1.1546343053889719e-07), ('cost_p_micro', 0.0), ('cost_no_trip', 0.0), ('cost_walk', 0.0), ('cost_unknown', 0.0)]\n" - ] - } - ], - "source": [ - "print(\n", - " sorted(list(zip(model.feature_names_in_, model.feature_importances_)), key=lambda x: x[-1], reverse=True)\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "7c886ef1", - "metadata": {}, - "outputs": [], - "source": [ - "survey_data = pd.read_csv('../viz_scripts/Can Do Colorado eBike Program - en.csv')\n", - "df = pd.read_csv('../data/FULL_preprocessed_data_RM_weather.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "id": "88434a04", - "metadata": {}, - "outputs": [], - "source": [ - "# column renaming here!\n", - "\n", - "survey_data.rename(\n", - " {\n", - " \"Unique User ID (auto-filled, do not edit)\": \"user_id\",\n", - " \"In which year were you born?\": \"birth_year\",\n", - " \"What is your gender?\": \"gender\",\n", - " \"Do you have a valid driver's license?\": \"has_drivers_license\",\n", - " \"Are you a student?\": \"is_student\",\n", - " \"What is the highest grade or degree that you have completed?\": \"highest_education\",\n", - " \"Do you work for either pay or profit?\": \"is_paid\",\n", - " \"Do you have more than one job?\": \"has_multiple_jobs\",\n", - " \"Do you work full-time or part-time at your primary job?\": \"primary_job_type\",\n", - " \"Which best describes your primary job?\": \"primary_job_description\",\n", - " \"How did you usually get to your primary job last week? \": \"primary_job_commute_mode\",\n", - " \"Thinking about your daily commute to work last week, how many minutes did it usually take to get from home to the primary job/work place?\": \"primary_job_commute_time\",\n", - " \"At your primary job, do you have the ability to set or change your own start time?\": \"is_primary_job_flexible\",\n", - " \"Do you have the option of working from home or an alternate location instead of going into your primary work place?\": \"primary_job_can_wfh\",\n", - " \"How many days per week do you usually work from home or an alternate location?\": \"wfh_days\",\n", - " \"Do you own or rent your place of residence?\": \"residence_ownership_type\",\n", - " \"What is your home type?\": \"residence_type\",\n", - " \"Please identify which category represents your total household income, before taxes, for last year.\": \"income_category\",\n", - " \"Including yourself, how many people live in your home?\": \"n_residence_members\",\n", - " \"How many children under age 18 live in your home?\": \"n_residents_u18\",\n", - " \"Including yourself, how many people have a driver's license in your household?\": \"n_residents_with_license\",\n", - " \"How many motor vehicles are owned, leased, or available for regular use by the people who currently live in your household?\": \"n_motor_vehicles\",\n", - " \"If you were unable to use your household vehicle(s), which of the following options would be available to you to get you from place to place?\": \"available_modes\",\n", - " \"Do you have a medical condition that makes it difficult to travel outside of the home?\": \"has_medical_condition\",\n", - " \"How long have you had this condition?\": \"medical_condition_duration\"\n", - " },\n", - " axis='columns',\n", - " inplace=True\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "id": "48a2ece6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0 a2d48b05d5454d428c0841432c7467b6\n", - "1 f2799dc202bc4249b42a4fda8770d1b6\n", - "2 b2bbe715b6a14fd19f751cae8adf6b4e\n", - "3 6373dfb8cb9b47e88e8f76adcfadde20\n", - "4 93c6e0f156a44e07b920ded664419dc6\n", - "Name: user_id, dtype: object" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "display(survey_data.user_id.head())" - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "id": "f88441fe", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0 6373dfb8cb9b47e88e8f76adcfadde20\n", - "1 6373dfb8cb9b47e88e8f76adcfadde20\n", - "2 6373dfb8cb9b47e88e8f76adcfadde20\n", - "3 6373dfb8cb9b47e88e8f76adcfadde20\n", - "4 6373dfb8cb9b47e88e8f76adcfadde20\n", - "Name: user_id, dtype: object" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "display(df.user_id.head())" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "2af9b36f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "203" - ] - }, - "execution_count": 70, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(survey_data.user_id.unique())" - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "id": "de46b68c", - "metadata": {}, - "outputs": [], - "source": [ - "f_survey = survey_data.loc[survey_data.user_id.isin(df.user_id), :]" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "id": "9b77fd2f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "156" - ] - }, - "execution_count": 75, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(f_survey.user_id.unique())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e23fa31b", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "emission", - "language": "python", - "name": "emission" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.16" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/rm_src/cost_time_avl_preprocessing.ipynb b/rm_src/cost_time_avl_preprocessing.ipynb deleted file mode 100644 index 9ed8ed4..0000000 --- a/rm_src/cost_time_avl_preprocessing.ipynb +++ /dev/null @@ -1,1865 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "import ast\n", - "from traceback import print_exception\n", - "\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_62467/3166671539.py:3: DtypeWarning: Columns (40) have mixed types. Specify dtype option on import or set low_memory=False.\n", - " df = pd.read_csv('../data/final_modeling_data_02142024.csv')\n" - ] - } - ], - "source": [ - "# Data loading. Refer to the mnl_exploration.ipynb file for details on how user-level features are generated.\n", - "\n", - "df = pd.read_csv('../data/final_modeling_data_02142024.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Shape: (80691, 103)\n" - ] - } - ], - "source": [ - "print(\"Shape: \", df.shape)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "df.drop_duplicates(inplace=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Add weather info" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "df.start_fmt_time = pd.to_datetime(df.start_fmt_time, utc=True).dt.tz_convert('America/Denver')" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(Timestamp('2020-11-02 18:48:13.450000-0700', tz='America/Denver'),\n", - " Timestamp('2022-12-30 23:33:27.147785-0700', tz='America/Denver'))" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# We now need weather data. To get that, we download data from OpenMeteo for the given dates.\n", - "df.start_fmt_time.min(), df.start_fmt_time.max()" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "# Downloaded using OpenMeteo API.\n", - "weather_df = pd.read_csv('../data/denver_weather_data.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "weather_df.time = pd.to_datetime(weather_df.time, utc=True).dt.tz_convert('America/Denver')" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "original_shape = df.shape[0]\n", - "\n", - "# Round start time to nearest hour.\n", - "df['start_time_rounded'] = df.start_fmt_time.dt.round(\n", - " 'H', ambiguous='infer', nonexistent='shift_backward'\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "# True intersection\n", - "df = df.merge(right=weather_df, left_on='start_time_rounded', right_on='time', how='left')" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "# Drop rows where weather data is NA.\n", - "df.dropna(subset=['temperature_2m (°F)','relative_humidity_2m (%)', 'dew_point_2m (°F)', 'rain (inch)',\n", - " 'snowfall (inch)', 'wind_speed_10m (mp/h)', 'wind_gusts_10m (mp/h)'], inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Old shape: 80691. new shape: 80689\n" - ] - } - ], - "source": [ - "print(f\"Old shape: {original_shape}. new shape: {df.shape[0]}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "df.drop(columns=['start_time_rounded', 'time'], inplace=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Creating the dummy variables for the available modes" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'source': 0,\n", - " 'end_ts': 0,\n", - " 'end_fmt_time': 0,\n", - " 'end_loc': 0,\n", - " 'raw_trip': 0,\n", - " 'start_ts': 0,\n", - " 'start_fmt_time': 0,\n", - " 'start_loc': 0,\n", - " 'duration': 0,\n", - " 'distance': 0,\n", - " 'start_place': 0,\n", - " 'end_place': 0,\n", - " 'cleaned_trip': 0,\n", - " 'inferred_labels': 217,\n", - " 'inferred_trip': 217,\n", - " 'expectation': 217,\n", - " 'confidence_threshold': 217,\n", - " 'expected_trip': 217,\n", - " 'user_input': 0,\n", - " 'section_modes': 0,\n", - " 'section_distances': 0,\n", - " 'start:year': 0,\n", - " 'start:month': 0,\n", - " 'start:day': 0,\n", - " 'start:hour': 0,\n", - " 'start_local_dt_minute': 0,\n", - " 'start_local_dt_second': 0,\n", - " 'start_local_dt_weekday': 0,\n", - " 'start_local_dt_timezone': 0,\n", - " 'end:year': 0,\n", - " 'end:month': 0,\n", - " 'end:day': 0,\n", - " 'end:hour': 0,\n", - " 'end_local_dt_minute': 0,\n", - " 'end_local_dt_second': 0,\n", - " 'end_local_dt_weekday': 0,\n", - " 'end_local_dt_timezone': 0,\n", - " '_id': 0,\n", - " 'user_id': 0,\n", - " 'metadata_write_ts': 0,\n", - " 'additions': 80687,\n", - " 'mode_confirm': 337,\n", - " 'purpose_confirm': 527,\n", - " 'distance_miles': 0,\n", - " 'Mode_confirm': 0,\n", - " 'Replaced_mode': 0,\n", - " 'Trip_purpose': 0,\n", - " 'original_user_id': 0,\n", - " 'program': 0,\n", - " 'opcode': 0,\n", - " 'Timestamp': 0,\n", - " 'birth_year': 0,\n", - " 'primary_job_commute_time': 0,\n", - " 'income_category': 0,\n", - " 'n_residence_members': 0,\n", - " 'n_residents_u18': 0,\n", - " 'n_residents_with_license': 0,\n", - " 'n_motor_vehicles': 0,\n", - " 'available_modes': 0,\n", - " 'age': 0,\n", - " 'gender_Man': 0,\n", - " 'gender_Man;Nonbinary/genderqueer/genderfluid': 0,\n", - " 'gender_Nonbinary/genderqueer/genderfluid': 0,\n", - " 'gender_Prefer not to say': 0,\n", - " 'gender_Woman': 0,\n", - " 'gender_Woman;Nonbinary/genderqueer/genderfluid': 0,\n", - " 'has_drivers_license_No': 0,\n", - " 'has_drivers_license_Prefer not to say': 0,\n", - " 'has_drivers_license_Yes': 0,\n", - " 'has_multiple_jobs_No': 0,\n", - " 'has_multiple_jobs_Prefer not to say': 0,\n", - " 'has_multiple_jobs_Yes': 0,\n", - " \"highest_education_Bachelor's degree\": 0,\n", - " 'highest_education_Graduate degree or professional degree': 0,\n", - " 'highest_education_High school graduate or GED': 0,\n", - " 'highest_education_Less than a high school graduate': 0,\n", - " 'highest_education_Prefer not to say': 0,\n", - " 'highest_education_Some college or associates degree': 0,\n", - " 'primary_job_type_Full-time': 0,\n", - " 'primary_job_type_Part-time': 0,\n", - " 'primary_job_type_Prefer not to say': 0,\n", - " 'primary_job_description_Clerical or administrative support': 0,\n", - " 'primary_job_description_Custodial': 0,\n", - " 'primary_job_description_Education': 0,\n", - " 'primary_job_description_Food service': 0,\n", - " 'primary_job_description_Manufacturing, construction, maintenance, or farming': 0,\n", - " 'primary_job_description_Medical/healthcare': 0,\n", - " 'primary_job_description_Other': 0,\n", - " 'primary_job_description_Professional, managerial, or technical': 0,\n", - " 'primary_job_description_Sales or service': 0,\n", - " 'primary_job_commute_mode_Active transport': 0,\n", - " 'primary_job_commute_mode_Car transport': 0,\n", - " 'primary_job_commute_mode_Hybrid': 0,\n", - " 'primary_job_commute_mode_Public transport': 0,\n", - " 'primary_job_commute_mode_Unknown': 0,\n", - " 'primary_job_commute_mode_WFH': 0,\n", - " 'is_overnight_trip': 0,\n", - " 'n_working_residents': 0,\n", - " 'start_lat': 0,\n", - " 'start_lng': 0,\n", - " 'end_lat': 0,\n", - " 'end_lng': 0,\n", - " 'section_durations': 0,\n", - " 'temperature_2m (°F)': 0,\n", - " 'relative_humidity_2m (%)': 0,\n", - " 'dew_point_2m (°F)': 0,\n", - " 'rain (inch)': 0,\n", - " 'snowfall (inch)': 0,\n", - " 'wind_speed_10m (mp/h)': 0,\n", - " 'wind_gusts_10m (mp/h)': 0}" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df.isna().sum().to_dict()" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "# | [d1, d2, d3] | [t1, t2, t3] | [m1, m2, m3] |\n", - "\n", - "\n", - "def compute_argmax(df: pd.DataFrame):\n", - " # Create the two columns.\n", - " df[['section_distance_argmax', 'section_duration_argmax', 'section_mode_argmax', 'section_coordinates_argmax']] = None\n", - " rows = list()\n", - "\n", - " for ix, row in df.iterrows():\n", - " row_dict = row.to_dict()\n", - " \n", - " try:\n", - " parsed_distances = ast.literal_eval(row_dict['section_distances'])\n", - " parsed_durations = ast.literal_eval(row_dict['section_durations'])\n", - " parsed_modes = ast.literal_eval(row_dict['section_modes'])\n", - "\n", - " argmax_ix = np.argmax(parsed_distances)\n", - " \n", - " # Pick the argmax and scale to miles. (meters -> miles)\n", - " row_dict['section_distance_argmax'] = parsed_distances[argmax_ix] * 0.0006213712\n", - " \n", - " # Pick the argmax and scale to minutes.\n", - " row_dict['section_duration_argmax'] = parsed_durations[argmax_ix] / 60\n", - " \n", - " # Pick the argmax mode.\n", - " row_dict['section_mode_argmax'] = parsed_modes[argmax_ix]\n", - " \n", - " row_dict['mark'] = False\n", - "\n", - " except Exception as e:\n", - " row_dict['mark'] = True\n", - "\n", - " rows.append(row_dict)\n", - "\n", - " return pd.DataFrame(rows)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "# Let's plot the mode-wise durations as a function of distance.\n", - "df = compute_argmax(df)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "df.drop(columns=['section_distances', 'section_durations', 'section_modes'], inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "df = df.loc[~df.mark, :].reset_index(drop=True, inplace=False).drop(columns=['mark'], inplace=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "# Drop instances where duration/distance is unusable.\n", - "df.drop(\n", - " index=df.loc[(df.section_distance_argmax <= 0) | (df.section_duration_argmax <= 0), :].index,\n", - " inplace=False\n", - ").reset_index(drop=True, inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "# bus, train, bicycling, walking, car\n", - "# split-apply-combine\n", - "def drop_outliers(df: pd.DataFrame, low=0.1, high=0.9) -> pd.DataFrame:\n", - " def filter_by_percentiles(group):\n", - " distance_low = group['section_distance_argmax'].quantile(low)\n", - " distance_high = group['section_distance_argmax'].quantile(high)\n", - " duration_low = group['section_duration_argmax'].quantile(low)\n", - " duration_high = group['section_duration_argmax'].quantile(high)\n", - " \n", - " l1_filter = group[\n", - " (group['section_distance_argmax'] >= distance_low) &\n", - " (group['section_distance_argmax'] <= distance_high)\n", - " ].reset_index(drop=True)\n", - " \n", - " l2_filter = l1_filter[\n", - " (l1_filter['section_duration_argmax'] >= duration_low) &\n", - " (l1_filter['section_duration_argmax'] <= duration_high)\n", - " ].reset_index(drop=True)\n", - " \n", - " return l2_filter\n", - " \n", - " return df.groupby('section_mode_argmax').apply(filter_by_percentiles).reset_index(drop=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "filtered_df = drop_outliers(df, low=0.01, high=0.99)\n", - "\n", - "# Ideal speed. distance/time.\n", - "filtered_df['mph'] = (\n", - " (filtered_df['section_distance_argmax'] * 60.)/filtered_df['section_duration_argmax']\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "def filter_mph(df: pd.DataFrame, low=0.1, high=0.9) -> pd.DataFrame:\n", - " \n", - " MPH_THRESHOLDS = {\n", - " # https://www.sciencedirect.com/science/article/pii/S2210670718304682\n", - " 'bicycling': 15.,\n", - " # https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7806575/\n", - " 'walking': 2.93\n", - " }\n", - " \n", - " def custom_filter(group):\n", - " # Drop data specified in the dict manually.\n", - " if group.name in MPH_THRESHOLDS.keys():\n", - " f_df = group[group['mph'] <= MPH_THRESHOLDS[group.name]]\n", - " else:\n", - " mph_low = group['mph'].quantile(low)\n", - " mph_high = group['mph'].quantile(high)\n", - "\n", - " f_df = group[(group['mph'] >= mph_low) & (group['mph'] <= mph_high)]\n", - " \n", - " return f_df\n", - " \n", - " return df.groupby('section_mode_argmax').apply(custom_filter).reset_index(drop=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "filtered_df = filter_mph(filtered_df, low=0.01, high=0.99)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
section_distance_argmaxsection_duration_argmax
countmeanstdmin25%50%75%maxcountmeanstdmin25%50%75%max
section_mode_argmax
bicycling9330.02.3445441.5918890.2375421.3568891.9442322.84951111.0639289330.015.47328610.2903711.9445019.03576612.60526818.45200373.866648
bus478.01.5522301.4132800.0907730.6462641.2944771.96049311.592445478.010.0174397.3021100.5182575.8019838.16453012.26903959.147400
car40885.05.9405427.9846880.1961411.7135573.3460606.76201374.46435240885.016.71742713.2743852.0895678.29183912.63890120.472570110.945333
no_sensed2730.04.6353807.4772240.1038540.7519981.9925924.91712071.8569712730.021.32137926.6386770.2629415.85108212.44090226.501255215.273083
subway9.022.42263712.1751413.25961114.51015123.58765527.75658342.8919059.043.06526923.00917313.10361627.56275934.40000058.71400081.366026
train96.014.30393613.0792180.8863428.64742910.57257615.51667067.98700996.030.68719517.1348546.33244220.76354925.69510640.19015888.009998
walking16608.00.5455240.7196910.0712370.1730100.3097770.6048848.70644316608.027.73044935.4896952.2836178.55144715.59037631.206353295.377052
\n", - "
" - ], - "text/plain": [ - " section_distance_argmax \\\n", - " count mean std min \n", - "section_mode_argmax \n", - "bicycling 9330.0 2.344544 1.591889 0.237542 \n", - "bus 478.0 1.552230 1.413280 0.090773 \n", - "car 40885.0 5.940542 7.984688 0.196141 \n", - "no_sensed 2730.0 4.635380 7.477224 0.103854 \n", - "subway 9.0 22.422637 12.175141 3.259611 \n", - "train 96.0 14.303936 13.079218 0.886342 \n", - "walking 16608.0 0.545524 0.719691 0.071237 \n", - "\n", - " \\\n", - " 25% 50% 75% max \n", - "section_mode_argmax \n", - "bicycling 1.356889 1.944232 2.849511 11.063928 \n", - "bus 0.646264 1.294477 1.960493 11.592445 \n", - "car 1.713557 3.346060 6.762013 74.464352 \n", - "no_sensed 0.751998 1.992592 4.917120 71.856971 \n", - "subway 14.510151 23.587655 27.756583 42.891905 \n", - "train 8.647429 10.572576 15.516670 67.987009 \n", - "walking 0.173010 0.309777 0.604884 8.706443 \n", - "\n", - " section_duration_argmax \\\n", - " count mean std min \n", - "section_mode_argmax \n", - "bicycling 9330.0 15.473286 10.290371 1.944501 \n", - "bus 478.0 10.017439 7.302110 0.518257 \n", - "car 40885.0 16.717427 13.274385 2.089567 \n", - "no_sensed 2730.0 21.321379 26.638677 0.262941 \n", - "subway 9.0 43.065269 23.009173 13.103616 \n", - "train 96.0 30.687195 17.134854 6.332442 \n", - "walking 16608.0 27.730449 35.489695 2.283617 \n", - "\n", - " \n", - " 25% 50% 75% max \n", - "section_mode_argmax \n", - "bicycling 9.035766 12.605268 18.452003 73.866648 \n", - "bus 5.801983 8.164530 12.269039 59.147400 \n", - "car 8.291839 12.638901 20.472570 110.945333 \n", - "no_sensed 5.851082 12.440902 26.501255 215.273083 \n", - "subway 27.562759 34.400000 58.714000 81.366026 \n", - "train 20.763549 25.695106 40.190158 88.009998 \n", - "walking 8.551447 15.590376 31.206353 295.377052 " - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "filtered_df.groupby('section_mode_argmax')[['section_distance_argmax', 'section_duration_argmax']].describe()" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
mph
countmeanstdmin25%50%75%max
section_mode_argmax
bicycling9330.09.2473912.5968762.5792017.3631369.29994011.14917414.998472
bus478.09.8021044.9857440.5411395.8717609.73236713.05967228.627234
car40885.018.58825710.3420231.64471911.09961516.53874024.23853355.344377
no_sensed2730.013.0426749.2094853.8911096.28956610.04212116.65885853.570005
subway9.031.47696012.52411314.92539825.30840427.72687535.93073059.570373
train96.025.33505010.2497564.68230021.23773924.78125728.72312862.081000
walking16608.01.4947370.8070070.0225500.8041961.4750822.1925422.929953
\n", - "
" - ], - "text/plain": [ - " mph \\\n", - " count mean std min 25% \n", - "section_mode_argmax \n", - "bicycling 9330.0 9.247391 2.596876 2.579201 7.363136 \n", - "bus 478.0 9.802104 4.985744 0.541139 5.871760 \n", - "car 40885.0 18.588257 10.342023 1.644719 11.099615 \n", - "no_sensed 2730.0 13.042674 9.209485 3.891109 6.289566 \n", - "subway 9.0 31.476960 12.524113 14.925398 25.308404 \n", - "train 96.0 25.335050 10.249756 4.682300 21.237739 \n", - "walking 16608.0 1.494737 0.807007 0.022550 0.804196 \n", - "\n", - " \n", - " 50% 75% max \n", - "section_mode_argmax \n", - "bicycling 9.299940 11.149174 14.998472 \n", - "bus 9.732367 13.059672 28.627234 \n", - "car 16.538740 24.238533 55.344377 \n", - "no_sensed 10.042121 16.658858 53.570005 \n", - "subway 27.726875 35.930730 59.570373 \n", - "train 24.781257 28.723128 62.081000 \n", - "walking 1.475082 2.192542 2.929953 " - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "filtered_df.groupby('section_mode_argmax')[['mph']].describe()" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Dropped 10460 rows.\n" - ] - } - ], - "source": [ - "print(f\"Dropped {df.shape[0] - filtered_df.shape[0]} rows.\")" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.12963353121243293" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(80689 - 70229)/80689" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array(['Regular Bike', 'Other', 'No Travel', 'Gas Car, drove alone',\n", - " 'Gas Car, with others', 'Walk', 'Taxi/Uber/Lyft', 'Train',\n", - " 'Bikeshare', 'Bus', 'Skate board', 'Free Shuttle', 'Scooter share',\n", - " 'E-bike', 'Not a Trip'], dtype=object)" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "filtered_df.Replaced_mode.unique()" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'p_micro': 1, 'no_trip': 2, 's_car': 3, 'transit': 4, 'car': 5, 's_micro': 6, 'ridehail': 7, 'walk': 8, 'unknown': 9}\n" - ] - } - ], - "source": [ - "## Define the mapping strategy\n", - "\n", - "\"\"\"\n", - "p_micro: Personal micromobility\n", - "s_micro: Shared micromobility\n", - "s_car: Shared car\n", - "car: Car/rental car\n", - "transit: train + bus\n", - "no_trip: No vehicle / None\n", - "ridehail: Uber/Lyft\n", - "\"\"\"\n", - "\n", - "available = {\n", - " 'Bicycle': 'p_micro',\n", - " 'Do not have vehicle': 'unknown',\n", - " 'Get a ride from a friend or family member': 's_car',\n", - " 'None': 'no_trip',\n", - " 'Public transportation (bus, subway, light rail, etc.)': 'transit',\n", - " 'Rental car (including Zipcar/ Car2Go)': 'car',\n", - " 'Shared bicycle or scooter': 's_micro',\n", - " 'Skateboard': 'p_micro',\n", - " 'Taxi (regular taxi, Uber, Lyft, etc)': 'ridehail',\n", - " 'Walk/roll': 'walk',\n", - " 'Prefer not to say': 'unknown'\n", - "}\n", - "\n", - "# Map each sensed mode to the binary indicators.\n", - "section_mode_mapping = {\n", - " 'bicycling': ['p_micro', 's_micro'],\n", - " 'bus': ['transit'],\n", - " 'car': ['s_car', 'car', 'ridehail'],\n", - " 'no_sensed': ['unknown'],\n", - " 'train': ['transit'],\n", - " 'walking': ['walk'],\n", - " 'subway': ['transit']\n", - "}\n", - "\n", - "# For target - mode_confirm\n", - "# target_mapping = {\n", - "# 'Regular Bike': 'p_micro',\n", - "# 'Walk': 'walk',\n", - "# 'Gas Car, with others': 's_car',\n", - "# 'Gas Car, drove alone': 'car',\n", - "# 'Bikeshare': 's_micro',\n", - "# 'Other': 'unknown',\n", - "# 'Bus': 'transit',\n", - "# 'Not a Trip': 'no_trip',\n", - "# 'E-bike': 'p_micro',\n", - "# 'Train': 'transit',\n", - "# 'Taxi/Uber/Lyft': 'ridehail',\n", - "# 'Free Shuttle': 'transit',\n", - "# 'Scooter share': 's_micro',\n", - "# 'Skate board': 'p_micro'\n", - "# }\n", - "\n", - "# For target - replaced_mode\n", - "target_mapping = {\n", - " 'Regular Bike': 'p_micro', \n", - " 'Walk': 'walk', \n", - " 'No Travel': 'no_trip', \n", - " 'Other': 'unknown',\n", - " 'Gas Car, with others': 's_car',\n", - " 'Gas Car, drove alone': 'car',\n", - " 'Train': 'transit',\n", - " 'Scooter share': 's_micro', \n", - " 'Taxi/Uber/Lyft': 'ridehail', \n", - " 'Free Shuttle': 'transit', \n", - " 'Skate board': 'p_micro',\n", - " 'Bikeshare': 's_micro',\n", - " 'Bus': 'transit',\n", - " 'Not a Trip': 'no_trip',\n", - " 'E-bike': 'p_micro'\n", - "}\n", - "\n", - "# # These values were obtained using a simple linear regression model. Specifics can be found in time_distance_estimation.ipynb\n", - "# duration_dict = {\n", - "# 'walk': {\n", - "# 'intercept': 14.09698152519682,\n", - "# 'coef': 19.153802211061134\n", - "# },\n", - "# 'p_micro': {\n", - "# 'intercept': 4.753590860550791,\n", - "# 'coef': 4.2723965916811935\n", - "# },\n", - "# 's_micro': {\n", - "# 'intercept': 4.753590860550791,\n", - "# 'coef': 4.2723965916811935\n", - "# },\n", - "# 's_car': {\n", - "# 'intercept': 10.515751350707365, \n", - "# 'coef': 1.112111276629702\n", - "# },\n", - "# 'car': {\n", - "# 'intercept': 10.515751350707365, \n", - "# 'coef': 1.112111276629702\n", - "# },\n", - "# 'ridehail': {\n", - "# 'intercept': 10.515751350707365, \n", - "# 'coef': 1.112111276629702\n", - "# },\n", - "# 'transit': {\n", - "# 'intercept': 7.5000351741492395,\n", - "# 'coef': 1.839562017986485\n", - "# },\n", - "# 'unknown': {\n", - "# 'intercept': 9.423026094931313,\n", - "# 'coef': 2.640429444466706\n", - "# },\n", - "# 'no_trip': {\n", - "# 'intercept': 0.,\n", - "# 'coef': 0.\n", - "# }\n", - "# }\n", - "\n", - "ordinal_mapping = {'p_micro': 1, 'no_trip': 2, 's_car': 3, 'transit': 4, 'car': 5, 's_micro': 6, 'ridehail': 7, 'walk': 8, 'unknown': 9}\n", - "reverse_ordinal_mapping = {v:k for k,v in ordinal_mapping.items()}\n", - "\n", - "print(ordinal_mapping)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [], - "source": [ - "def generate_available_features(\n", - " df: pd.DataFrame, av: dict, sm: dict, target_mapper: dict\n", - "):\n", - " \"\"\"\n", - " This method generates the wide-form dummy features for available modes.\n", - " The current implementation uses (section_mode_argmax OR available_modes) to indicate mode availability.\n", - " \"\"\"\n", - "\n", - " # Reset indices.\n", - " df = df.reset_index(drop=True, inplace=False)\n", - "\n", - " columns = list(set(av.values())) + ['unknown']\n", - "\n", - " # Create the columns along with the 'chosen' column.\n", - " df[columns] = 0\n", - "\n", - " row_dicts = list()\n", - "\n", - " for i, row in df.iterrows():\n", - " row_dict = row.to_dict()\n", - "\n", - " # Access the available modes. Split on ; and strip all the elements.\n", - " available_modes = [x.strip() for x in str(row_dict['available_modes']).split(';')]\n", - " \n", - " # Set all the available modes associated with the chosen modes too.\n", - " # Toggle this flag off if you don't want the target to be considered as an available mode.\n", - " # row_dict[row_dict['chosen']] = 1\n", - " \n", - " row_dict['target'] = target_mapper[row_dict['target']]\n", - " \n", - " # Update the available modes.\n", - " for available_mode in available_modes:\n", - " row_dict[av[available_mode]] = 1\n", - " \n", - " # Now, look at the section_mode_argmax as a proxy for the confirmed mode.\n", - " chosen_modes = sm[row_dict['section_mode_argmax']]\n", - "\n", - " # Determine the length of the mapping.\n", - " n = len(chosen_modes)\n", - "\n", - " # # Go ahead and modify the current dict with the first value.\n", - " # row_dict['chosen'] = ordinal_mapper[chosen_modes[0]]\n", - " # row_dict['primary_mode'] = 1\n", - "\n", - " # Also update the available modes.\n", - " for chosen_mode in chosen_modes:\n", - " row_dict[chosen_mode] = 1\n", - "\n", - " # # Append the first row to the list.\n", - " row_dicts.append(row_dict)\n", - " \n", - " constructed = pd.DataFrame(row_dicts)\n", - " constructed.rename(columns=dict([(c, 'av_'+c) for c in target_mapper.keys()]), inplace=True)\n", - "\n", - " return constructed" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "```language=python\n", - "{'p_micro': 1, 'no_trip': 2, 's_car': 3, 'transit': 4, 'car': 5, 's_micro': 6, 'ridehail': 7, 'walk': 8, 'unknown': 9}\n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [], - "source": [ - "def generate_target_variable(df: pd.DataFrame, mapper: dict):\n", - " df['target'] = df['Replaced_mode'].apply(lambda x: mapper[x])\n", - " df.drop(columns=['Replaced_mode'], inplace=True)\n", - " return df\n", - "\n", - "filtered_df = generate_target_variable(filtered_df, target_mapping)" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [], - "source": [ - "# Generate wide-format availability indicators..\n", - "av_df = generate_available_features(filtered_df, available, section_mode_mapping, ordinal_mapping)\n", - "\n", - "# Collapse train and bus into 'transit'.\n", - "av_df.loc[av_df.section_mode_argmax.isin(['bus', 'train', 'subway']), 'section_mode_argmax'] = 'transit'" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array(['bicycling', 'transit', 'car', 'no_sensed', 'walking'],\n", - " dtype=object)" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "av_df.section_mode_argmax.unique()" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
sourceend_tsend_fmt_timeend_locraw_tripstart_tsstart_fmt_timestart_locdurationdistance...targetav_s_microav_ridehailav_unknownav_carav_transitav_walkav_s_carav_no_tripav_p_micro
0DwellSegmentationTimeFilter1.619140e+092021-04-22 18:59:39-06:00{'type': 'Point', 'coordinates': [-105.1002447...6082e47f27dcf1f393b70dd81.619139e+092021-04-22 18:48:48.365291-06:00{'type': 'Point', 'coordinates': [-105.0772567...10.8439121995.541857...1100000001
1DwellSegmentationTimeFilter1.619197e+092021-04-23 11:04:53-06:00{'type': 'Point', 'coordinates': [-105.0776493...60830eac2b9762e085f774e81.619196e+092021-04-23 10:45:48.219950-06:00{'type': 'Point', 'coordinates': [-105.1228294...19.0796674764.133777...1100000001
2DwellSegmentationTimeFilter1.619662e+092021-04-28 19:58:51-06:00{'type': 'Point', 'coordinates': [-105.0854639...608adb94b706ddbc669dabb51.619658e+092021-04-28 19:07:47.510844-06:00{'type': 'Point', 'coordinates': [-105.1227172...51.0581539049.744908...1100000001
3DwellSegmentationTimeFilter1.619728e+092021-04-29 14:23:25-06:00{'type': 'Point', 'coordinates': [-105.0776309...608b21db654c4a5ab2fa435a1.619727e+092021-04-29 14:05:50.979267-06:00{'type': 'Point', 'coordinates': [-105.1228283...17.5670124731.604069...9100000001
4DwellSegmentationTimeFilter1.619794e+092021-04-30 08:54:03-06:00{'type': 'Point', 'coordinates': [-105.0775022...608c1f002f548f5db71d16ef1.619793e+092021-04-30 08:34:49.162054-06:00{'type': 'Point', 'coordinates': [-105.1226652...19.2306324675.329725...9100000001
\n", - "

5 rows × 121 columns

\n", - "
" - ], - "text/plain": [ - " source end_ts end_fmt_time \\\n", - "0 DwellSegmentationTimeFilter 1.619140e+09 2021-04-22 18:59:39-06:00 \n", - "1 DwellSegmentationTimeFilter 1.619197e+09 2021-04-23 11:04:53-06:00 \n", - "2 DwellSegmentationTimeFilter 1.619662e+09 2021-04-28 19:58:51-06:00 \n", - "3 DwellSegmentationTimeFilter 1.619728e+09 2021-04-29 14:23:25-06:00 \n", - "4 DwellSegmentationTimeFilter 1.619794e+09 2021-04-30 08:54:03-06:00 \n", - "\n", - " end_loc \\\n", - "0 {'type': 'Point', 'coordinates': [-105.1002447... \n", - "1 {'type': 'Point', 'coordinates': [-105.0776493... \n", - "2 {'type': 'Point', 'coordinates': [-105.0854639... \n", - "3 {'type': 'Point', 'coordinates': [-105.0776309... \n", - "4 {'type': 'Point', 'coordinates': [-105.0775022... \n", - "\n", - " raw_trip start_ts start_fmt_time \\\n", - "0 6082e47f27dcf1f393b70dd8 1.619139e+09 2021-04-22 18:48:48.365291-06:00 \n", - "1 60830eac2b9762e085f774e8 1.619196e+09 2021-04-23 10:45:48.219950-06:00 \n", - "2 608adb94b706ddbc669dabb5 1.619658e+09 2021-04-28 19:07:47.510844-06:00 \n", - "3 608b21db654c4a5ab2fa435a 1.619727e+09 2021-04-29 14:05:50.979267-06:00 \n", - "4 608c1f002f548f5db71d16ef 1.619793e+09 2021-04-30 08:34:49.162054-06:00 \n", - "\n", - " start_loc duration distance \\\n", - "0 {'type': 'Point', 'coordinates': [-105.0772567... 10.843912 1995.541857 \n", - "1 {'type': 'Point', 'coordinates': [-105.1228294... 19.079667 4764.133777 \n", - "2 {'type': 'Point', 'coordinates': [-105.1227172... 51.058153 9049.744908 \n", - "3 {'type': 'Point', 'coordinates': [-105.1228283... 17.567012 4731.604069 \n", - "4 {'type': 'Point', 'coordinates': [-105.1226652... 19.230632 4675.329725 \n", - "\n", - " ... target av_s_micro av_ridehail av_unknown av_car av_transit av_walk \\\n", - "0 ... 1 1 0 0 0 0 0 \n", - "1 ... 1 1 0 0 0 0 0 \n", - "2 ... 1 1 0 0 0 0 0 \n", - "3 ... 9 1 0 0 0 0 0 \n", - "4 ... 9 1 0 0 0 0 0 \n", - "\n", - " av_s_car av_no_trip av_p_micro \n", - "0 0 0 1 \n", - "1 0 0 1 \n", - "2 0 0 1 \n", - "3 0 0 1 \n", - "4 0 0 1 \n", - "\n", - "[5 rows x 121 columns]" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "display(av_df.head())" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "# def compute_alt_durations(df: pd.DataFrame, reverse_mapper: dict, duration_mapper: dict):\n", - "# '''\n", - "# We re-iterate over the generated available mode df and populate the modes.\n", - "# We are only concerned with the rows that have primary_mode = 0, which indicates that they are alternate mode rows.\n", - "# '''\n", - "\n", - "# column_names = list(reverse_mapper.values())\n", - "\n", - "# # Start with a 0 cost for everyone.\n", - "# df[column_names] = 0\n", - "\n", - "# rows = list()\n", - "# for ix, row in df.iterrows():\n", - " \n", - "# # Convert to a dict\n", - "# row_dict = row.to_dict()\n", - "\n", - "# for mode in column_names:\n", - "# if mode == reverse_mapper[row['chosen']]:\n", - "# row_dict[mode] = row_dict['section_distance_argmax']\n", - "# continue\n", - " \n", - "# mode_params = duration_mapper[mode]\n", - "# # use availability as a mask.\n", - "# row_dict[mode] = mode_params['intercept'] + (mode_params['coef'] * row_dict['section_distance_argmax'])\n", - " \n", - "# rows.append(row_dict)\n", - " \n", - "# return pd.DataFrame(rows).rename(columns=dict([(c, 'tt_'+c) for c in column_names]), inplace=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [], - "source": [ - "# av_time_df = compute_alt_durations(av_df, reverse_ordinal_mapping, duration_dict)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Cost estimation\n", - "\n", - "```\n", - "{'p_micro': 1, 'no_trip': 2, 's_car': 3, 'transit': 4, 'car': 5, 's_micro': 6, 'ridehail': 7, 'walk': 8, 'unknown': 9}\n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [], - "source": [ - "# All values are taken from VTPI.\n", - "# https://www.vtpi.org/tca/tca0501.pdf\n", - "mode_cost_per_mile = {\n", - " # bicycle/skateboard\n", - " 'p_micro': 0.,\n", - " 'no_trip': 0.,\n", - " # Shared car is half the cost of regular car, which is $0.6/mile.\n", - " 's_car': 0.3,\n", - " # Rental car.\n", - " 'car': 0.6,\n", - " # Average of bus and train taken.\n", - " 'transit': 0.5,\n", - " # Shared bicyle or scooter - values taken from https://nacto.org/shared-micromobility-2020-2021/ and \n", - " # https://www.mckinsey.com/industries/automotive-and-assembly/our-insights/how-sharing-the-road-is-likely-to-transform-american-mobility\n", - " 's_micro': 0.3,\n", - " # uber/taxi/lyft\n", - " 'ridehail': 2.,\n", - " 'walk': 0.,\n", - " 'unknown': 0.\n", - "}\n", - "\n", - "# Assumptions.\n", - "mode_init_cost = {\n", - " 'p_micro': 0.,\n", - " 'no_trip': 0.,\n", - " # Shared car is half the cost of regular car, which is $0.6/mile.\n", - " 's_car': 0.,\n", - " # Rental car.\n", - " 'car': 0.,\n", - " # Average of bus and train taken.\n", - " 'transit': 0.,\n", - " # $1 unlocking cost.\n", - " 's_micro': 1.,\n", - " # uber/taxi/lyft\n", - " 'ridehail': 1.5,\n", - " 'walk': 0.,\n", - " 'unknown': 0.\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "def compute_cost_estimates(df: pd.DataFrame, cost_mapper: dict, init_cost_mapper: dict, ordinal_mapper: dict):\n", - " \n", - " # Create some extra colums.\n", - " columns = list(ordinal_mapper.keys())\n", - "\n", - " # Initialize the columns to 0.\n", - " df[columns] = 0.\n", - "\n", - " rows = list()\n", - "\n", - " # Iterate over every row.\n", - " for _, row in df.iterrows():\n", - " # Check which flags are active.\n", - " row_dict = row.to_dict()\n", - "\n", - " # Access the section_distance_argmax attribute for the distance. Note that this is now in miles.\n", - " distance = row_dict['section_distance_argmax']\n", - " \n", - " # Mask using availability.\n", - " for lookup in columns:\n", - " row_dict[lookup] = row_dict['av_' + lookup] * (init_cost_mapper[lookup] + (cost_mapper[lookup] * distance))\n", - "\n", - " rows.append(row_dict)\n", - "\n", - " new_df = pd.DataFrame(rows)\n", - " new_df.rename(columns=dict([(c, 'cost_'+c) for c in ordinal_mapper.keys()]), inplace=True)\n", - "\n", - " return new_df" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [], - "source": [ - "cost_df = compute_cost_estimates(\n", - " av_df, cost_mapper=mode_cost_per_mile, \n", - " init_cost_mapper=mode_init_cost, \n", - " ordinal_mapper=ordinal_mapping\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cost_p_microcost_no_tripcost_s_carcost_transitcost_carcost_s_microcost_ridehailcost_walkcost_unknown
count70136.070136.070136.00000070136.00000070136.00000070136.00000070136.00000070136.070136.0
mean0.00.01.1411061.3771552.1056480.4241358.4993170.00.0
std0.00.02.0364752.8822274.0725741.09201913.7634830.00.0
min0.00.00.0000000.0000000.0000000.0000000.0000000.00.0
25%0.00.00.0724390.0000000.0000000.0000000.0000000.00.0
50%0.00.00.5073840.4143110.7847330.0000004.6687140.00.0
75%0.00.01.2541981.4195532.3882350.0000009.7276180.00.0
max0.00.022.33930637.23217644.67861123.262930150.4287030.00.0
\n", - "
" - ], - "text/plain": [ - " cost_p_micro cost_no_trip cost_s_car cost_transit cost_car \\\n", - "count 70136.0 70136.0 70136.000000 70136.000000 70136.000000 \n", - "mean 0.0 0.0 1.141106 1.377155 2.105648 \n", - "std 0.0 0.0 2.036475 2.882227 4.072574 \n", - "min 0.0 0.0 0.000000 0.000000 0.000000 \n", - "25% 0.0 0.0 0.072439 0.000000 0.000000 \n", - "50% 0.0 0.0 0.507384 0.414311 0.784733 \n", - "75% 0.0 0.0 1.254198 1.419553 2.388235 \n", - "max 0.0 0.0 22.339306 37.232176 44.678611 \n", - "\n", - " cost_s_micro cost_ridehail cost_walk cost_unknown \n", - "count 70136.000000 70136.000000 70136.0 70136.0 \n", - "mean 0.424135 8.499317 0.0 0.0 \n", - "std 1.092019 13.763483 0.0 0.0 \n", - "min 0.000000 0.000000 0.0 0.0 \n", - "25% 0.000000 0.000000 0.0 0.0 \n", - "50% 0.000000 4.668714 0.0 0.0 \n", - "75% 0.000000 9.727618 0.0 0.0 \n", - "max 23.262930 150.428703 0.0 0.0 " - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cost_df[[c for c in cost_df.columns if 'cost_' in c]].describe()" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [], - "source": [ - "# student_status = {\n", - "# 'Not a student': 0,\n", - "# 'Yes - Full Time College/University': 1,\n", - "# 'Yes - Vocation/Technical/Trade School': 1,\n", - "# 'Yes - Part-Time College/University': 1,\n", - "# 'Fire Fighter 2 Training': 0,\n", - "# 'Taking prerequisites missing for grad program ': 1,\n", - "# 'Work': 0,\n", - "# 'Graduate': 1,\n", - "# 'Work at csu': 0,\n", - "# 'Custodian': 0, \n", - "# 'taking classes toward early childhood licensure': 1,\n", - "# 'Prefer not to say': 0\n", - "# }\n", - "\n", - "\n", - "# cost_df['is_student'] = cost_df['is_student'].apply(lambda x: student_status[x])" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [], - "source": [ - "# cost_df['age'] = cost_df['age'].apply(lambda x: x if x < 100 else 2024 - x)\n", - "# cost_df['n_working_residents'] = cost_df['n_working_residents'].apply(lambda x: 0 if x < 0 else x)\n", - "# cost_df.rename(\n", - "# columns={'start_local_dt_weekday': 'start:DOW', 'end_local_dt_weekday': 'end:DOW'},\n", - "# inplace=True\n", - "# )" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [], - "source": [ - "cost_df.to_csv('../data/ReplacedMode_Fix_02142024.csv', index=False)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "interpreter": { - "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" - }, - "kernelspec": { - "display_name": "emission", - "language": "python", - "name": "emission" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.16" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/rm_src/env.txt b/rm_src/env.txt deleted file mode 100644 index b2d31ea..0000000 --- a/rm_src/env.txt +++ /dev/null @@ -1,214 +0,0 @@ -# This file may be used to create an environment using: -# $ conda create --name --file -# platform: osx-64 -@EXPLICIT -https://conda.anaconda.org/conda-forge/osx-64/_py-xgboost-mutex-2.0-cpu_0.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h0d85af4_4.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.2.2-h8857fd0_0.conda -https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.0.9-hb7f2c08_9.conda -https://conda.anaconda.org/conda-forge/osx-64/libcxx-16.0.6-hd57cbcb_0.conda -https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.18-hac1461d_0.conda -https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-2.1.5.1-hb7f2c08_0.conda -https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.18-hbcb3906_1.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.3.1-h0dc2134_0.conda -https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.2.13-h8a1eda9_5.conda -https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-16.0.6-hff08bdf_0.conda -https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.4-hf0c8a7f_0.conda -https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-hc929b4f_1001.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.9-3_cp39.conda -https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda -https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.11-h0dc2134_0.conda -https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.3-h35c211d_0.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.0.9-hb7f2c08_9.conda -https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.0.9-hb7f2c08_9.conda -https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-12.3.0-hbd3c1fe_1.conda -https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.39-ha978bb4_0.conda -https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.42.0-h58db7d2_0.conda -https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.15-hb7f2c08_0.conda -https://conda.anaconda.org/conda-forge/osx-64/libxgboost-2.0.3-cpu_h397da94_1.conda -https://conda.anaconda.org/conda-forge/osx-64/openssl-3.2.1-hd75f5a5_0.conda -https://conda.anaconda.org/conda-forge/osx-64/pandoc-3.1.3-h9d075a6_0.conda -https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda -https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.12-h5dbffcc_0.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.4-he49afe7_1.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.2-h829000d_7.conda -https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.0.9-hb7f2c08_9.conda -https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h3f81eb7_1.conda -https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-12_3_0_h97931a8_1.conda -https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.5.1-hf955e92_0.conda -https://conda.anaconda.org/conda-forge/osx-64/python-3.9.16-h709bd14_0_cpython.conda -https://conda.anaconda.org/conda-forge/noarch/aiofiles-22.1.0-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.3-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda -https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda -https://conda.anaconda.org/conda-forge/osx-64/brotli-1.0.9-hb7f2c08_9.conda -https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/certifi-2024.2.2-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.2.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.6.7-py39h7a8716b_0.conda -https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.2-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/executing-1.2.0-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/flit-core-3.9.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/future-0.18.3-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/geojson-2.5.0-py_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/jsonpointer-2.0-py_0.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.4-py39h92daf61_1.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.15-h2dcdeff_1.conda -https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.23-openmp_h429af6e_0.conda -https://conda.anaconda.org/conda-forge/osx-64/markupsafe-2.1.3-py39hdc70f33_0.conda -https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.0.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.6-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.0-h13ac156_2.conda -https://conda.anaconda.org/conda-forge/noarch/packaging-23.1-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.17.1-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/osx-64/psutil-5.9.5-py39ha30fb19_0.conda -https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/pygments-2.15.1-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.18.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/pytz-2022.7.1-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0-py39ha30fb19_5.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/pyzmq-25.1.0-py39hdac9eea_0.conda -https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.9.2-py39hf33989b_0.conda -https://conda.anaconda.org/conda-forge/osx-64/setuptools-58.5.3-py39h6e9494a_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.3.2.post1-pyhd8ed1ab_0.tar.bz2 -https://repo.anaconda.com/pkgs/main/osx-64/tenacity-8.2.2-py39hecd8cb5_0.conda -https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.2.0-pyha21a80b_0.conda -https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/tornado-6.3.2-py39hdc70f33_0.conda -https://conda.anaconda.org/conda-forge/noarch/traitlets-5.9.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.7.1-pyha770c72_0.conda -https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-15.0.0-py39ha30fb19_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/utm-0.7.0-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.1-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/osx-64/y-py-0.5.9-py39hd4bc93a_0.conda -https://conda.anaconda.org/conda-forge/noarch/zipp-3.16.2-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/asttokens-2.2.1-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/attrdict-2.0.1-pyhd8ed1ab_1.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/babel-2.12.1-pyhd8ed1ab_1.conda -https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda -https://conda.anaconda.org/conda-forge/noarch/bleach-6.0.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/cffi-1.15.1-py39h131948b_3.conda -https://conda.anaconda.org/conda-forge/noarch/comm-0.1.3-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.41.1-py39hdc70f33_0.conda -https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda -https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.0.0-pyhd8ed1ab_1.conda -https://conda.anaconda.org/conda-forge/noarch/jaraco.functools-3.8.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/jedi-0.18.2-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/joblib-1.3.0-pyhd8ed1ab_1.conda -https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.2.2-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-17_osx64_openblas.conda -https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/overrides-7.3.1-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/pillow-10.0.0-py39he6683de_0.conda -https://conda.anaconda.org/conda-forge/noarch/pip-23.0.1-pyhd8ed1ab_0.conda -https://repo.anaconda.com/pkgs/main/osx-64/plotly-5.9.0-py39hecd8cb5_0.conda -https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-9.2-py39head00df_0.conda -https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/referencing-0.30.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/terminado-0.17.1-pyhd1c38e8_0.conda -https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.1-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.7.1-hd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py39ha30fb19_3.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/arrow-1.2.3-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/branca-0.6.0-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/brotlipy-0.7.0-py39ha30fb19_1005.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/cheroot-9.0.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/osx-64/cryptography-41.0.2-py39he8b0a07_0.conda -https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.0.0-pyhd8ed1ab_1.conda -https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.4.4-pyhd8ed1ab_1.conda -https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-17_osx64_openblas.conda -https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-17_osx64_openblas.conda -https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.9.1-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-9.2-py39head00df_0.conda -https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.6-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-21.3.0-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/jsonpickle-3.0.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.18.4-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/osx-64/jupyter_core-5.3.1-py39h6e9494a_0.conda -https://conda.anaconda.org/conda-forge/noarch/jupyter_ydoc-0.2.4-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/osx-64/numpy-1.24.2-py39h6ee2318_0.conda -https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.39-pyha770c72_0.conda -https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.2.0-pyhd8ed1ab_1.conda -https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyhd1c38e8_0.conda -https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.8.2-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.1.0-py39h8ee36c8_0.conda -https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.18.4-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.3.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.1-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/osx-64/pandas-1.5.3-py39hecff1ad_1.conda -https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.39-hd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.15-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/ipython-8.12.0-pyhd1c38e8_0.conda -https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.6.3-pyhd8ed1ab_1.conda -https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.7.1-py39hb2f573b_0.conda -https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/requests-2.28.2-pyhd8ed1ab_1.conda -https://conda.anaconda.org/conda-forge/noarch/folium-0.14.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.25.0-pyh5fb750a_0.conda -https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.7.1-py39h6e9494a_0.conda -https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.7.3-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/pooch-1.7.0-pyha770c72_3.conda -https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.7.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.7.3-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/osx-64/scipy-1.10.0-py39h8a15683_2.conda -https://conda.anaconda.org/conda-forge/noarch/jupyter_server_fileid-0.9.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.24.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.7.3-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.3-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.2.1-py39hdbdcc14_0.conda -https://conda.anaconda.org/conda-forge/noarch/bayesian-optimization-1.4.3-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/jupyter_server_ydoc-0.8.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/nbclassic-1.0.0-pyhb4ecaf3_1.conda -https://conda.anaconda.org/conda-forge/noarch/py-xgboost-2.0.3-cpu_pyh0a621ce_1.conda -https://conda.anaconda.org/conda-forge/osx-64/statsmodels-0.14.0-py39h5b4affa_2.conda -https://conda.anaconda.org/conda-forge/noarch/notebook-6.5.4-pyha770c72_0.conda -https://conda.anaconda.org/conda-forge/noarch/py-xgboost-cpu-2.0.3-pyhb06c54e_1.conda -https://conda.anaconda.org/conda-forge/noarch/pylogit-1.0.1-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/choicemodels-0.2.2-pyh9f0ad1d_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/jupyterlab-3.6.3-pyhd8ed1ab_0.conda diff --git a/rm_src/mnl_exploration.ipynb b/rm_src/mnl_exploration.ipynb deleted file mode 100644 index 6518977..0000000 --- a/rm_src/mnl_exploration.ipynb +++ /dev/null @@ -1,1213 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import sys\n", - "import pickle\n", - "import importlib\n", - "\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import pandas as pd\n", - "import seaborn as sns\n", - "\n", - "from pathlib import Path\n", - "from uuid import UUID\n", - "from collections import defaultdict\n", - "\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "emission_path = Path(os.getcwd()).parent.parent / 'my_emission_server' / 'e-mission-server'\n", - "sys.path.append(str(emission_path))\n", - "\n", - "# Also add the home (viz_scripts) to the path\n", - "sys.path.append('../viz_scripts')" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "storage not configured, falling back to sample, default configuration\n", - "URL not formatted, defaulting to \"Stage_database\"\n", - "Connecting to database URL localhost\n" - ] - } - ], - "source": [ - "import scaffolding\n", - "import emission.core.get_database as edb" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "importlib.reload(scaffolding)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "def r(df: pd.DataFrame) -> pd.DataFrame:\n", - " return df.reset_index(drop=True, inplace=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "with open('../viz_scripts/auxiliary_files/dic_re.pkl', 'rb') as f:\n", - " dic_re = pickle.loads(f.read())\n", - "\n", - "with open('../viz_scripts/auxiliary_files/dic_pur.pkl', 'rb') as f:\n", - " dic_pur = pickle.loads(f.read())\n", - "\n", - "# convert a dictionary to a defaultdict\n", - "dic_re = defaultdict(lambda: 'Other', dic_re)\n", - "dic_pur = defaultdict(lambda: 'Other', dic_pur)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Found new program stage, creating new list\n", - "Found new program 4c, creating new list\n", - "Found new program cc, creating new list\n", - "Found new program fc, creating new list\n", - "Found new program pc, creating new list\n", - "Found new program sc, creating new list\n", - "Found new program vail, creating new list\n", - "Found new program prepilot, creating new list\n" - ] - } - ], - "source": [ - "# Split UUIDs by program\n", - "program_uuid_map = {}\n", - "for ue in edb.get_uuid_db().find():\n", - " uuid = str(ue['uuid'])\n", - " # uuid = str(ue['uuid'])\n", - " program = ue['user_email'].split(\"_\")[0]\n", - " if program in program_uuid_map.keys():\n", - " program_uuid_map[program].append(uuid)\n", - " else:\n", - " print(f\"Found new program {program}, creating new list\")\n", - " program_uuid_map[program] = []\n", - " program_uuid_map[program].append(uuid)\n", - "\n", - "uuid_program_list = []\n", - "for ue in edb.get_uuid_db().find():\n", - " # uuid = str(ue['uuid'].as_uuid(3))\n", - " uuid = str(ue['uuid'])\n", - " program = ue['user_email'].split(\"_\")[0]\n", - " uuid_program_list.append({\"program\": program, \"opcode\": ue[\"user_email\"], \"user_id\": uuid})" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "uuid_program_df = pd.DataFrame(uuid_program_list)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loaded all confirmed trips of length 241123\n", - "After filtering, found 241123 participant trips \n", - "After filtering, found 92446 labeled trips\n", - "Found Index(['mode_confirm', 'purpose_confirm', 'replaced_mode'], dtype='object') columns of length 3\n", - "After expanding, columns went from 41 -> 44\n", - "_prepilot\n", - "Based on 92395 confirmed trips from 235 users\n", - "of 241123 total trips from 261 users (38.32%)\n" - ] - } - ], - "source": [ - "# %%capture\n", - "\n", - "# for program in uuid_program_df.program.unique():\n", - "expanded_ct, file_suffix, quality_text, debug_df = scaffolding.load_viz_notebook_data(None,\n", - " None,\n", - " 'prepilot',\n", - " 'program',\n", - " dic_re,\n", - " dic_pur=dic_pur)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "# Join to the program df to get each user's program\n", - "expanded_ct['original_user_id'] = expanded_ct['user_id'].copy()\n", - "expanded_ct['user_id'] = expanded_ct['user_id'].apply(lambda x: str(x))\n", - "expanded_ct = expanded_ct.merge(uuid_program_df, on='user_id')\n", - "expanded_ct['user_id'] = expanded_ct['user_id'].apply(lambda x: str(x).replace(\"-\", \"\"))" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Index(['source', 'end_ts', 'end_fmt_time', 'end_loc', 'raw_trip', 'start_ts',\n", - " 'start_fmt_time', 'start_loc', 'duration', 'distance', 'start_place',\n", - " 'end_place', 'cleaned_trip', 'inferred_labels', 'inferred_trip',\n", - " 'expectation', 'confidence_threshold', 'expected_trip', 'user_input',\n", - " 'section_modes', 'section_distances', 'start_local_dt_year',\n", - " 'start_local_dt_month', 'start_local_dt_day', 'start_local_dt_hour',\n", - " 'start_local_dt_minute', 'start_local_dt_second',\n", - " 'start_local_dt_weekday', 'start_local_dt_timezone',\n", - " 'end_local_dt_year', 'end_local_dt_month', 'end_local_dt_day',\n", - " 'end_local_dt_hour', 'end_local_dt_minute', 'end_local_dt_second',\n", - " 'end_local_dt_weekday', 'end_local_dt_timezone', '_id', 'user_id',\n", - " 'metadata_write_ts', 'additions', 'mode_confirm', 'purpose_confirm',\n", - " 'replaced_mode', 'distance_miles', 'Mode_confirm', 'Replaced_mode',\n", - " 'Trip_purpose', 'original_user_id', 'program', 'opcode'],\n", - " dtype='object')" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "expanded_ct.columns" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "# Rename the target column.\n", - "expanded_ct.drop(columns=['replaced_mode'], axis='rows', inplace=True)\n", - "expanded_ct['Replaced_mode'] = expanded_ct['Replaced_mode'].fillna('Unlabeled')" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "92383 trips across 235 users\n" - ] - } - ], - "source": [ - "print(\n", - " \"{n_trips} trips across {n_users} users\".format(\n", - " n_trips=len(expanded_ct.cleaned_trip.unique()),\n", - " n_users=len(expanded_ct.user_id.unique())\n", - " )\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "dates = pd.to_datetime(\n", - " expanded_ct.start_fmt_time, utc=True\n", - ").dt.tz_convert('America/Denver')" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Date range from 2016-08-15 07:59:32.418000-06:00 to 2022-12-30 23:33:27.147785-07:00\n" - ] - } - ], - "source": [ - "print(\n", - " \"Date range from {min_dt} to {max_dt}\".format(\n", - " min_dt=dates.min(),\n", - " max_dt=dates.max()\n", - " )\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Survey Data preprocessing" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Read the Denver dedmographic info\n", - "survey_data = pd.read_csv('../viz_scripts/Can Do Colorado eBike Program - en.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "survey_data.rename(\n", - " {\n", - " \"Unique User ID (auto-filled, do not edit)\": \"user_id\",\n", - " \"In which year were you born?\": \"birth_year\",\n", - " \"What is your gender?\": \"gender\",\n", - " \"Do you have a valid driver's license?\": \"has_drivers_license\",\n", - " \"Are you a student?\": \"is_student\",\n", - " \"What is the highest grade or degree that you have completed?\": \"highest_education\",\n", - " \"Do you work for either pay or profit?\": \"is_paid\",\n", - " \"Do you have more than one job?\": \"has_multiple_jobs\",\n", - " \"Do you work full-time or part-time at your primary job?\": \"primary_job_type\",\n", - " \"Which best describes your primary job?\": \"primary_job_description\",\n", - " \"How did you usually get to your primary job last week? \": \"primary_job_commute_mode\",\n", - " \"Thinking about your daily commute to work last week, how many minutes did it usually take to get from home to the primary job/work place?\": \"primary_job_commute_time\",\n", - " \"At your primary job, do you have the ability to set or change your own start time?\": \"is_primary_job_flexible\",\n", - " \"Do you have the option of working from home or an alternate location instead of going into your primary work place?\": \"primary_job_can_wfh\",\n", - " \"How many days per week do you usually work from home or an alternate location?\": \"wfh_days\",\n", - " \"Do you own or rent your place of residence?\": \"residence_ownership_type\",\n", - " \"What is your home type?\": \"residence_type\",\n", - " \"Please identify which category represents your total household income, before taxes, for last year.\": \"income_category\",\n", - " \"Including yourself, how many people live in your home?\": \"n_residence_members\",\n", - " \"How many children under age 18 live in your home?\": \"n_residents_u18\",\n", - " \"Including yourself, how many people have a driver's license in your household?\": \"n_residents_with_license\",\n", - " \"How many motor vehicles are owned, leased, or available for regular use by the people who currently live in your household?\": \"n_motor_vehicles\",\n", - " \"If you were unable to use your household vehicle(s), which of the following options would be available to you to get you from place to place?\": \"available_modes\",\n", - " \"Do you have a medical condition that makes it difficult to travel outside of the home?\": \"has_medical_condition\",\n", - " \"How long have you had this condition?\": \"medical_condition_duration\"\n", - " },\n", - " axis='columns',\n", - " inplace=True\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "survey_data['Timestamp'] = pd.to_datetime(survey_data['Timestamp'])\n", - "survey_data['Timestamp'] = survey_data['Timestamp'].dt.tz_localize('America/Los_Angeles', ambiguous='infer')\n", - "survey_data['Timestamp'] = survey_data['Timestamp'].dt.tz_convert('America/Denver')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "survey_data.Timestamp.min(), survey_data.Timestamp.max()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "f_survey = survey_data.loc[survey_data.user_id.isin(expanded_ct.user_id), :]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "len(f_survey.user_id.unique()), len(survey_data.user_id.unique())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "f_survey = f_survey.sort_values(\n", - " by=['user_id', 'Timestamp'], ascending=True\n", - ").drop_duplicates(\n", - " subset=['user_id'], keep='last', ignore_index=True\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "assert f_survey.user_id.value_counts().max() == 1" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Remove outliers.\n", - "\n", - "bad_ix = list()\n", - "\n", - "# WFH is not a good feature to include because of its high sparsity.\n", - "# wfh_mask = f_survey.wfh_days > 7\n", - "\n", - "# Computed by calculating 99th percentile.\n", - "commute_time_mask = f_survey.primary_job_commute_time > 75\n", - "\n", - "# Computed by calculating 99th percentile.\n", - "residence_members_mask = f_survey.n_residence_members > 8\n", - "\n", - "for mask in [commute_time_mask, residence_members_mask]:\n", - " bad_ix += f_survey[mask].index.tolist()\n", - "\n", - "f_survey.drop(index=set(bad_ix), inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Find age at the time of the timestamp. subtract birth year from timestamp year.\n", - "def compute_age(row):\n", - " if row['birth_year'] < 100:\n", - " return row['birth_year']\n", - " return row['Timestamp'].year - row['birth_year']\n", - "\n", - "f_survey['age'] = f_survey.apply(lambda x: compute_age(x), axis=1)\n", - "# f_survey.drop(columns=['birth_year'], inplace=True)\n", - "\n", - "# For those who leave it NA, categorize them as 'prefer not to say'.\n", - "f_survey.loc[f_survey['has_multiple_jobs'].isna(), 'has_multiple_jobs'] = 'Prefer not to say'\n", - "\n", - "# Fix primary commute mode.\n", - "\n", - "f_survey.loc[\n", - " f_survey.primary_job_commute_mode.isna(), 'primary_job_commute_mode'\n", - "] = 'Unknown'\n", - "\n", - "# Remove all leading and trailing whitespace.\n", - "f_survey.primary_job_commute_mode = f_survey.primary_job_commute_mode.str.strip()\n", - "\n", - "f_survey.loc[\n", - " f_survey.primary_job_commute_mode.isin([\n", - " 'Car', 'SUV', 'Pickup truck', 'Taxi/Limo (including services like Uber or Lyft)', 'Van',\n", - " 'Shared vehicle'\n", - " ]), 'primary_job_commute_mode'\n", - "] = 'Car transport'\n", - "\n", - "f_survey.loc[\n", - " f_survey.primary_job_commute_mode.isin([\n", - " 'Public or commuter bus', 'Buss'\n", - " ]), 'primary_job_commute_mode'\n", - "] = 'Public transport'\n", - "\n", - "f_survey.loc[\n", - " f_survey.primary_job_commute_mode.isin([\n", - " 'Walk', 'Skateboard', 'Bicycle'\n", - " ]), 'primary_job_commute_mode'\n", - "] = 'Active transport'\n", - "\n", - "f_survey.loc[\n", - " f_survey.primary_job_commute_mode.isin([\n", - " 'Telecommute', 'Work from home', 'I work from home'\n", - " ]), 'primary_job_commute_mode'\n", - "] = 'WFH'\n", - "\n", - "f_survey.loc[\n", - " f_survey.primary_job_commute_mode.isin([\n", - " 'Walk, bike, bus, uber or lyft.', 'Car and E-Bike'\n", - " ]), 'primary_job_commute_mode'\n", - "] = 'Hybrid'\n", - "\n", - "# Fix primary job type\n", - "f_survey.loc[f_survey.primary_job_type.isna(), 'primary_job_type'] = 'Prefer not to say'\n", - "\n", - "# Remove whitespace.\n", - "f_survey.primary_job_description = f_survey.primary_job_description.str.strip()\n", - "\n", - "# Normalize the job description. Inspired from the 'e-bike trips by occupation' \n", - "# plot in the CanBikeCo full pilot paper.\n", - "f_survey.loc[\n", - " f_survey.primary_job_description.isin([\n", - " 'Paraprofessional', 'Education', 'education/early childhood', 'Teacher',\n", - " 'Education non-profit manager', 'Scientific research', 'Research',\n", - " 'Preschool Tracher'\n", - " ]), 'primary_job_description'\n", - "] = 'Education'\n", - "\n", - "f_survey.loc[\n", - " f_survey.primary_job_description.isin([\n", - " 'Custodian', 'Custodial', 'Csu custodian', 'Janitorial',\n", - " 'Custodial Maintanace'\n", - " ]), 'primary_job_description'\n", - "] = 'Custodial'\n", - "\n", - "f_survey.loc[\n", - " f_survey.primary_job_description.isin([\n", - " 'Inbound cs', 'Accounting Technician', \n", - " 'Clerical'\n", - " ]), 'primary_job_description'\n", - "] = 'Clerical or administrative support'\n", - "\n", - "f_survey.loc[\n", - " f_survey.primary_job_description.isin([\n", - " 'Restaurant manager', 'Transportaion Services',\n", - " ]), 'primary_job_description'\n", - "] = 'Sales or service'\n", - "\n", - "f_survey.loc[\n", - " f_survey.primary_job_description.isin([\n", - " 'Pastry chef and line cook', 'Cook', 'Chef', 'Dining Services',\n", - " 'Food Service', 'Cooking', 'Residential Dining Services', 'Line Cook'\n", - " ]), 'primary_job_description'\n", - "] = 'Food service'\n", - "\n", - "f_survey.loc[\n", - " f_survey.primary_job_description.isin([\n", - " 'CNA', 'Caregiver/ Qmap', 'Health care', 'Nurse',\n", - " 'Healthcare', 'Medical', 'Medical field',\n", - " 'Family support'\n", - " ]), 'primary_job_description'\n", - "] = 'Medical/healthcare'\n", - "\n", - "f_survey.loc[\n", - " f_survey.primary_job_description.isin([\n", - " 'Amazon', 'Hockey rink', 'Caregiver', 'Security', 'Nonprofit social work',\n", - " 'Therapeutic', 'Driver'\n", - " ]), 'primary_job_description'\n", - "] = 'Other'\n", - "\n", - "f_survey.loc[\n", - " f_survey.primary_job_description.isin([\n", - " 'Hospital laundry', 'Matreal handler', 'Maintenance',\n", - " 'Co op laundry'\n", - " ]), 'primary_job_description'\n", - "] = 'Manufacturing, construction, maintenance, or farming'\n", - "\n", - "f_survey.loc[f_survey.primary_job_description.isna(), 'primary_job_description'] = 'Other'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "f_survey.primary_job_description.unique()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Impute the commute time by grouping by occupation type and using median.\n", - "job_commutes = f_survey.groupby('primary_job_description')['primary_job_commute_time'].median()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for job_type in job_commutes.index:\n", - " f_survey.loc[\n", - " (f_survey.primary_job_description == job_type)&(f_survey.primary_job_commute_time.isna()), \n", - " 'primary_job_commute_time'\n", - " ] = job_commutes[job_type]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Fix motor vehicles. Keep this ordinal.\n", - "f_survey.loc[f_survey.n_motor_vehicles == '4+', 'n_motor_vehicles'] = 4\n", - "f_survey.loc[f_survey.n_motor_vehicles == 'Prefer not to say / Prefiero no decir.', 'n_motor_vehicles'] = 0\n", - "f_survey.n_motor_vehicles = f_survey.n_motor_vehicles.astype(int)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "to_drop = [\n", - " 'Which one below describe you best?', 'wfh_days', 'primary_job_can_wfh', 'is_primary_job_flexible',\n", - " 'medical_condition_duration', 'has_medical_condition', 'residence_type', 'residence_ownership_type',\n", - " 'is_paid', 'is_student'\n", - "]\n", - "\n", - "f_survey.drop(columns=to_drop, inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "display(f_survey.isna().sum())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "Let us think about this. Given that the income category is not defined, it does not make sense\n", - "to encode the factor as a non-zero ordinal number. 9.6% of the people in the dataset choose to\n", - "not disclose their income. We could just drop them, but then we risk losing quite a lot of information.\n", - "'''\n", - "\n", - "f_survey.loc[f_survey.income_category == 'Prefer not to say', 'income_category'] = 0\n", - "f_survey.loc[f_survey.income_category == 'Less than $24,999', 'income_category'] = 1\n", - "f_survey.loc[f_survey.income_category == '$25,000-$49,999', 'income_category'] = 2\n", - "f_survey.loc[f_survey.income_category == '$50,000-$99,999', 'income_category'] = 3\n", - "f_survey.loc[f_survey.income_category == '$100,000 -$149,999', 'income_category'] = 4\n", - "f_survey.loc[f_survey.income_category == '$150,000-$199,999', 'income_category'] = 5\n", - "f_survey.loc[f_survey.income_category == '$150,000', 'income_category'] = 5\n", - "f_survey.loc[f_survey.income_category == '$150,000-$199,999', 'income_category'] = 6\n", - "f_survey.loc[f_survey.income_category == '$200,000 or more', 'income_category'] = 7\n", - "f_survey.income_category = f_survey.income_category.astype(int)\n", - "\n", - "# TODO: Think of a strategy here." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "f_survey.primary_job_description.value_counts()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "display(f_survey.info())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.preprocessing import OneHotEncoder\n", - "\n", - "def generate_ohe_features(df, feature_name):\n", - " ohe = OneHotEncoder()\n", - " ohe.fit(df[[feature_name]])\n", - " return pd.DataFrame(\n", - " ohe.transform(df[[feature_name]]).todense(), \n", - " columns=ohe.get_feature_names_out(),\n", - " index=df.index\n", - " ), ohe" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ohe_features = [\n", - " 'gender', 'has_drivers_license', 'has_multiple_jobs', 'highest_education', \n", - " 'primary_job_type', 'primary_job_description', 'primary_job_commute_mode'\n", - "]\n", - "\n", - "for feature in ohe_features:\n", - " df, _ = generate_ohe_features(f_survey, feature)\n", - " f_survey = f_survey.merge(right=df, left_index=True, right_index=True)\n", - "\n", - "f_survey.drop(columns=ohe_features, inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "display(f_survey.info())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from typing import List\n", - "\n", - "def plot_survey_distribution(df: pd.DataFrame, feature_names: List[str]):\n", - " \n", - " n = len(feature_names)\n", - " \n", - " # No more than 4 plots in on subplot.\n", - " assert n <= 4, \"Only 4 features can be visualized at a time.\"\n", - " \n", - " ncols = 2\n", - " nrows = n//ncols if n%ncols == 0 else (n//ncols) + 1\n", - " \n", - " h_scale = 4*nrows\n", - " \n", - " fig, axes = plt.subplots(nrows=nrows, ncols=ncols, figsize=(8, h_scale))\n", - " for ix, ax in enumerate(axes.flatten()):\n", - " if ix < n:\n", - " sns.histplot(data=df, y=feature_names[ix], ax=ax)\n", - " else:\n", - " ax.set_axis_off()\n", - " plt.tight_layout()\n", - " plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# plot_survey_distribution(\n", - "# f_survey, ['income_category', 'n_motor_vehicles', 'primary_job_commute_mode']\n", - "# )" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(len(f_survey.user_id.unique()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## GPS Data Preprocessing" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# We only wish to focus on Denver data for now.\n", - "# denver_data = r(expanded_ct.loc[\n", - "# (expanded_ct.start_local_dt_timezone == \"America/Denver\") & (expanded_ct.end_local_dt_timezone == \"America/Denver\"), \n", - "# :])\n", - "\n", - "denver_data = expanded_ct.copy()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "denver_data['start_fmt_time'] = pd.to_datetime(\n", - " denver_data['start_fmt_time'], utc=True\n", - ").dt.tz_convert('America/Denver')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(denver_data.start_fmt_time.min(), denver_data.start_fmt_time.max())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Parse the datetime to Denver time.\n", - "denver_data['start_fmt_time'] = pd.to_datetime(\n", - " denver_data['start_fmt_time'], utc=True\n", - ").dt.tz_convert('America/Denver')\n", - "\n", - "# Re-compute all the start variables.\n", - "# denver_data['start_local_dt_year'] = denver_data['start_fmt_time'].dt.year\n", - "# denver_data['start_local_dt_month'] = denver_data['start_fmt_time'].dt.month\n", - "# denver_data['start_local_dt_day'] = denver_data['start_fmt_time'].dt.day\n", - "# denver_data['start_local_dt_hour'] = denver_data['start_fmt_time'].dt.hour\n", - "# denver_data['start_local_dt_weekday'] = denver_data['start_fmt_time'].dt.weekday\n", - "\n", - "# ## Do the same with the end time.\n", - "denver_data['end_fmt_time'] = pd.to_datetime(\n", - " denver_data['end_fmt_time'], utc=True\n", - ").dt.tz_convert('America/Denver')\n", - "\n", - "# # Re-compute all the end variables.\n", - "# denver_data['end_local_dt_year'] = denver_data['end_fmt_time'].dt.year\n", - "# denver_data['end_local_dt_month'] = denver_data['end_fmt_time'].dt.month\n", - "# denver_data['end_local_dt_day'] = denver_data['end_fmt_time'].dt.day\n", - "# denver_data['end_local_dt_hour'] = denver_data['end_fmt_time'].dt.hour\n", - "# denver_data['end_local_dt_weekday'] = denver_data['end_fmt_time'].dt.weekday" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Merge the trip data with the survey data.\n", - "\n", - "# inner join.\n", - "merged_data = denver_data.merge(\n", - " f_survey, left_on='user_id', right_on='user_id'\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(len(denver_data.user_id.unique()), len(merged_data.user_id.unique()))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Let's start choosing features for modeling.\n", - "\n", - "# base_time_features = ['fmt_time', 'local_dt_year', 'local_dt_month', 'local_dt_day', 'local_dt_hour', 'local_dt_weekday']\n", - "# time_features = ['start_' + x for x in base_time_features] + ['end_' + x for x in base_time_features]\n", - "\n", - "# demographic_features = ['available_modes',\n", - "# 'birth_year', 'income_category', 'n_motor_vehicles', 'n_residence_members', 'n_residents_u18', 'gender', \n", - "# 'is_student', 'n_residents_with_license']\n", - "\n", - "# sensed_features = ['duration', 'distance_miles', 'cleaned_trip', 'start_loc', 'end_loc', 'section_modes', 'section_distances']\n", - "\n", - "# modeling_data = merged_data[['user_id', '_id', 'original_user_id', 'cleaned_trip', 'Replaced_mode', 'Mode_confirm'] + time_features + demographic_features + sensed_features].copy()\n", - "modeling_data = merged_data.copy()\n", - "\n", - "# Rename columns in-place.\n", - "modeling_data.rename(columns={\n", - " 'start_local_dt_year': 'start:year', 'start_local_dt_month': 'start:month', 'start_local_dt_day': 'start:day', 'start_local_dt_hour': 'start:hour',\n", - " 'end_local_dt_year': 'end:year', 'end_local_dt_month': 'end:month', 'end_local_dt_day': 'end:day', 'end_local_dt_hour': 'end:hour'\n", - " }, inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def is_overnight_trip(start_date, end_date):\n", - " return int((end_date - start_date).days > 0)\n", - "\n", - "# overnight trips may be more likely taken by car.\n", - "modeling_data['is_overnight_trip'] = modeling_data.apply(\n", - " lambda x: is_overnight_trip(x.start_fmt_time, x.end_fmt_time), axis=1\n", - ")\n", - "\n", - "# Number of working individuals in the household = number of individuals in the house - number of children.\n", - "modeling_data['n_working_residents'] = (modeling_data['n_residence_members'] - modeling_data['n_residents_u18']).astype(int)\n", - "\n", - "# Convert the total duration of the trip into minutes.\n", - "modeling_data[['duration']] = modeling_data[['duration']]/60\n", - "\n", - "# Extract start and end latitudes and longitudes.\n", - "modeling_data['start_lat'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][1])\n", - "modeling_data['start_lng'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][0])\n", - "\n", - "modeling_data['end_lat'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][1])\n", - "modeling_data['end_lng'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][0])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# from calendar import monthrange\n", - "\n", - "# # Find day of month: use monthrange with (mm, yyyy) args and find how many days that month had (leap years are supported).\n", - "# def get_num_days_in_month(yyyy, mm):\n", - "# return monthrange(yyyy, mm)[1]\n", - "\n", - "# def is_overnight_trip(start_date, end_date):\n", - "# return int((end_date - start_date).days > 0)\n", - "\n", - "# # get the number of days for the start and end times.\n", - "# modeling_data['start:n_days_in_month'] = modeling_data.apply(lambda x: get_num_days_in_month(x['start:year'], x['start:month']), axis=1)\n", - "# modeling_data['end:n_days_in_month'] = modeling_data.apply(lambda x: get_num_days_in_month(x['end:year'], x['end:month']), axis=1)\n", - "\n", - "# # age = current year - year of birth\n", - "# modeling_data['age'] = 2023 - modeling_data['birth_year']\n", - "\n", - "# # overnight trips may be more likely taken by car.\n", - "# modeling_data['is_overnight_trip'] = modeling_data.apply(lambda x: is_overnight_trip(x.start_fmt_time, x.end_fmt_time), axis=1)\n", - "\n", - "# # Number of working individuals in the household = number of individuals in the house - number of children.\n", - "# modeling_data['n_working_residents'] = (modeling_data['n_residence_members'] - modeling_data['n_residents_u18']).astype(int)\n", - "\n", - "# # Create a binary indicator.\n", - "# modeling_data['is_male'] = modeling_data.gender.apply(lambda x: 1 if x==\"Male\" else 0)\n", - "\n", - "# # Bin the number of vehicles owned.\n", - "# # Drop the observations with (Prefer not to say)\n", - "# modeling_data = modeling_data.loc[~modeling_data['n_motor_vehicles'].isin(['Prefer not to say / Prefiero no decir.']), :]\n", - "# modeling_data.loc[modeling_data['n_motor_vehicles'].isin(['4+']), 'n_motor_vehicles'] = 4\n", - "# modeling_data['n_motor_vehicles'] = modeling_data['n_motor_vehicles'].astype(int)\n", - "\n", - "# # Convert the total duration of the trip into minutes.\n", - "# modeling_data[['duration']] = modeling_data[['duration']]/60\n", - "\n", - "# # Extract start and end latitudes and longitudes.\n", - "# modeling_data['start_lat'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][1])\n", - "# modeling_data['start_lng'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][0])\n", - "\n", - "# modeling_data['end_lat'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][1])\n", - "# modeling_data['end_lng'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][0])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# # Time-related feature engineeering:\n", - "# '''\n", - "# HOD: hour of day\n", - "# DOM: day of month\n", - "# MOY: month of year\n", - "# '''\n", - "\n", - "# def get_HOD(hour, how='sin'):\n", - "# if how == 'sin':\n", - "# return np.sin(2 * np.pi * (hour/24))\n", - "# return np.cos(2 * np.pi * (hour/24))\n", - "\n", - "# def get_DOM(day, n_days, how='sin'):\n", - "# if how == 'sin':\n", - "# return np.sin(2 * np.pi * (day/n_days))\n", - "# return np.cos(2 * np.pi * (day/n_days))\n", - "\n", - "# def get_MOY(month, how='sin'):\n", - "# if how == 'sin':\n", - "# return np.sin(2 * np.pi * (month/12))\n", - "# return np.cos(2 * np.pi * (month/12))\n", - "\n", - "# # Start - sin\n", - "# modeling_data['start:sin_HOD'] = modeling_data.apply(lambda x: get_HOD(x['start:hour']), axis=1)\n", - "# modeling_data['start:sin_DOM'] = modeling_data.apply(lambda x: get_DOM(x['start:day'], x['start:n_days_in_month']), axis=1)\n", - "# modeling_data['start:sin_MOY'] = modeling_data.apply(lambda x: get_MOY(x['start:year']), axis=1)\n", - "\n", - "# # Start - cos\n", - "# modeling_data['start:cos_HOD'] = modeling_data.apply(lambda x: get_HOD(x['start:hour'], how='cos'), axis=1)\n", - "# modeling_data['start:cos_DOM'] = modeling_data.apply(lambda x: get_DOM(x['start:day'], x['start:n_days_in_month'], how='cos'), axis=1)\n", - "# modeling_data['start:cos_MOY'] = modeling_data.apply(lambda x: get_MOY(x['start:year'], how='cos'), axis=1)\n", - "\n", - "# # End - sin\n", - "# modeling_data['end:sin_HOD'] = modeling_data.apply(lambda x: get_HOD(x['end:hour']), axis=1)\n", - "# modeling_data['end:sin_DOM'] = modeling_data.apply(lambda x: get_DOM(x['end:day'], x['end:n_days_in_month']), axis=1)\n", - "# modeling_data['end:sin_MOY'] = modeling_data.apply(lambda x: get_MOY(x['end:year']), axis=1)\n", - "\n", - "# # End - cos\n", - "# modeling_data['end:cos_HOD'] = modeling_data.apply(lambda x: get_HOD(x['end:hour'], how='cos'), axis=1)\n", - "# modeling_data['end:cos_DOM'] = modeling_data.apply(lambda x: get_DOM(x['end:day'], x['end:n_days_in_month'], how='cos'), axis=1)\n", - "# modeling_data['end:cos_MOY'] = modeling_data.apply(lambda x: get_MOY(x['end:year'], how='cos'), axis=1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "modeling_data.head()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def remove_air_or_hsr(df):\n", - "\n", - " df['mark'] = 0\n", - "\n", - " for ix, row in df.iterrows():\n", - " sections = row['section_modes']\n", - " if 'air_or_hsr' in sections:\n", - " df.loc[ix, 'mark'] = 1\n", - " \n", - " df = r(df.loc[df.mark == 0, :])\n", - " df.drop(columns=['mark'], inplace=True)\n", - "\n", - " return df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "modeling_data = remove_air_or_hsr(modeling_data)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "importlib.reload(scaffolding)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "results = list()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "modeling_data = r(modeling_data.loc[:,~modeling_data.columns.duplicated()].copy())\n", - "subset = modeling_data[['original_user_id', 'cleaned_trip']]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "EXTRACT_DURATIONS = False" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Takes ~150 minutes if n=5.\n", - "num_splits = 5\n", - "samples_per_split = modeling_data.shape[0]//num_splits" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "from time import perf_counter\n", - "\n", - "if EXTRACT_DURATIONS:\n", - "\n", - " for split_ix in range(num_splits):\n", - " low = samples_per_split * split_ix\n", - "\n", - " # -1 since .loc is index-inclusive.\n", - " high = samples_per_split * (split_ix + 1) - 1\n", - "\n", - " # For last split, include last index too.\n", - " if split_ix < num_splits - 1:\n", - " split = subset.loc[low:high, :]\n", - " else:\n", - " split = subset.loc[low:, :]\n", - "\n", - " print(f\"Split {split_ix} size: {split.shape[0]}\")\n", - "\n", - " now = perf_counter()\n", - " result = scaffolding.get_section_durations(split)\n", - " end = perf_counter() - now\n", - "\n", - " print(f\"Took {end/60} minutes to complete\")\n", - "\n", - " results.append(result)\n", - "\n", - " print(50*'-')\n", - "\n", - " cat = pd.concat(results, axis=0)\n", - " \n", - " # This will save a LOT of time.\n", - " # cat.to_csv('../data/section_durations.csv', index=False)\n", - "else:\n", - " cat = pd.read_csv('../data/section_durations.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(modeling_data.shape[0], cat.shape[0])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "modeling_data = pd.concat([modeling_data, cat[['section_durations']]], axis=1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "modeling_data.to_csv('../data/final_modeling_data_02142024.csv', index=False)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "interpreter": { - "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" - }, - "kernelspec": { - "display_name": "emission", - "language": "python", - "name": "emission" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.16" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/rm_src/multisource_data/01_extract_db_data.ipynb b/rm_src/multisource_data/01_extract_db_data.ipynb deleted file mode 100644 index c907842..0000000 --- a/rm_src/multisource_data/01_extract_db_data.ipynb +++ /dev/null @@ -1,1008 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "38b147ff", - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import sys\n", - "import pickle\n", - "import importlib\n", - "\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import pandas as pd\n", - "import seaborn as sns\n", - "\n", - "from pathlib import Path\n", - "from uuid import UUID\n", - "from collections import defaultdict\n", - "\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "e550aa2b", - "metadata": {}, - "outputs": [], - "source": [ - "INCLUDE_TEST_USERS = False" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "39306a1d", - "metadata": {}, - "outputs": [], - "source": [ - "emission_path = Path(os.getcwd()).parent.parent / 'my_emission_server' / 'e-mission-server'\n", - "sys.path.append(str(emission_path))\n", - "\n", - "# Also add the home (viz_scripts) to the path\n", - "sys.path.append('../viz_scripts')" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "e171e277", - "metadata": {}, - "outputs": [], - "source": [ - "DB_SOURCE = [\n", - " \"Stage_database\",\n", - " \"openpath_prod_durham\",\n", - " \"openpath_prod_mm_masscec\",\n", - " \"openpath_prod_ride2own\",\n", - " # No replaced mode!\n", - " \"openpath_prod_uprm_civic\",\n", - " \"openpath_prod_uprm_nicr\"\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "70fa3112", - "metadata": {}, - "outputs": [], - "source": [ - "CURRENT_DB = DB_SOURCE[0]\n", - "\n", - "assert CURRENT_DB in DB_SOURCE" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "bbde79d1", - "metadata": {}, - "outputs": [], - "source": [ - "# ['p_micro', 'no_trip', 's_car', 'transit', 'car', 's_micro', 'ridehail', 'walk', 'unknown']\n", - "\n", - "REPLACED_MODE_DICT = {\n", - " \"Stage_database\": {\n", - " 'no_travel': 'no_trip',\n", - " 'Unknown': 'unknown',\n", - " 'bus': 'transit',\n", - " 'drove_alone': 'car',\n", - " 'bike': 'p_micro',\n", - " 'shared_ride': 's_car',\n", - " 'walk': 'walk',\n", - " 'train': 'transit',\n", - " 'bikeshare': 's_micro',\n", - " 'not_a trip': 'no_trip',\n", - " 'pilot_ebike': 'p_micro',\n", - " 'electric_car': 'car',\n", - " 'taxi': 'ridehail',\n", - " 'not_a_trip': 'no_trip',\n", - " 'run': 'walk',\n", - " 'scootershare': 's_micro',\n", - " 'tramway': 'transit',\n", - " 'free_shuttle': 'transit',\n", - " 'e-bike': 'p_micro',\n", - " 'rental_car': 'car',\n", - " 'train_+ bus': 'transit',\n", - " 'skateboard': 'p_micro',\n", - " 'snowboarding': 'p_micro',\n", - " 'e_bike': 'p_micro',\n", - " 'golf_cart': 'unknown',\n", - " 'emergency_vehicle with others': 's_car',\n", - " 'call_friend': 's_car',\n", - " 'no_replacement': 'no_travel',\n", - " 'doing_nothing': 'no_trip',\n", - " 'na': 'no_trip',\n", - " 'ebike': 'p_micro',\n", - " 'hiking': 'walk',\n", - " 'n/a': 'no_trip',\n", - " 'testing': 'unknown',\n", - " 'home': 'no_trip',\n", - " 'must_walk 3-5 mi a day for back': 'walk',\n", - " 'family': 's_car',\n", - " 'car': 'car',\n", - " 'pilot_e-bike': 'p_micro',\n", - " 'pilot_bike': 'p_micro',\n", - " 'time_spent on the clock at amazon': 'no_trip',\n", - " 'working': 'no_trip',\n", - " 'walk_at work': 'walk',\n", - " 'sitting_on my butt doing nothing': 'no_trip',\n", - " 'nothing._delivered food for work': 'no_trip',\n", - " 'train,_bus and walk': 'transit',\n", - " 'work_vehicle': 'car',\n", - " 'friend_picked me up': 's_car',\n", - " 'ski': 'p_micro',\n", - " 'not_accurate': 'unknown',\n", - " 'stolen_ebike': 'p_micro'\n", - " },\n", - " \"openpath_prod_durham\": {\n", - " 'Unknown': 'unknown',\n", - " 'bike': 'p_micro',\n", - " 'shared_ride': 's_car',\n", - " 'drove_alone': 'car',\n", - " 'bus': 'transit',\n", - " 'no_travel': 'no_trip',\n", - " 'scootershare': 's_micro',\n", - " 'walk': 'walk',\n", - " 'taxi': 'ridehail',\n", - " 'e_car_drove_alone': 'car',\n", - " 'bikeshare': 's_micro',\n", - " 'ebike': 'p_micro',\n", - " 'train': 'transit',\n", - " 'e_car_shared_ride': 's_car'\n", - " },\n", - " \"openpath_prod_mm_masscec\": {\n", - " 'Unknown': 'unknown',\n", - " 'drove_alone': 'car',\n", - " 'walk': 'walk',\n", - " 'shared_ride': 's_car',\n", - " 'bike': 'p_micro',\n", - " 'bikeshare': 's_micro',\n", - " 'no_travel': 'no_trip',\n", - " 'taxi': 'ridehail',\n", - " 'bus': 'transit',\n", - " 'scootershare': 's_micro',\n", - " 'train': 'transit',\n", - " 'walking': 'walk',\n", - " 'e_car_drove_alone': 'car'\n", - " },\n", - " \"openpath_prod_ride2own\": {\n", - " 'Unknown': 'unknown',\n", - " 'drove_alone': 'car',\n", - " 'walk': 'walk',\n", - " 'shared_ride': 's_car',\n", - " 'bike': 'p_micro',\n", - " 'no_travel': 'no_trip',\n", - " 'taxi': 'ridehail',\n", - " 'bus': 'transit',\n", - " 'train': 'transit',\n", - " 'e_car_drove_alone': 'car',\n", - " 'e_car_shared_ride': 's_car'\n", - " },\n", - " \"openpath_prod_uprm_nicr\": {\n", - " 'Unknown': 'unknown',\n", - " 'walk': 'walk',\n", - " 'drove_alone': 'car'\n", - " }\n", - "}\n", - "\n", - "SURVEY_DATA_DICT = {\n", - " \"Stage_database\": {\n", - " \"Unique User ID (auto-filled, do not edit)\": \"user_id\",\n", - " \"In which year were you born?\": \"birth_year\",\n", - " \"What is your gender?\": \"gender\",\n", - " \"Do you have a valid driver's license?\": \"has_drivers_license\",\n", - " \"Are you a student?\": \"is_student\",\n", - " \"What is the highest grade or degree that you have completed?\": \"highest_education\",\n", - " \"Do you work for either pay or profit?\": \"is_paid\",\n", - " \"Do you have more than one job?\": \"has_multiple_jobs\",\n", - " \"Do you work full-time or part-time at your primary job?\": \"primary_job_type\",\n", - " \"Which best describes your primary job?\": \"primary_job_description\",\n", - " \"How did you usually get to your primary job last week? \": \"primary_job_commute_mode\",\n", - " \"Thinking about your daily commute to work last week, how many minutes did it usually take to get from home to the primary job/work place?\": \"primary_job_commute_time\",\n", - " \"At your primary job, do you have the ability to set or change your own start time?\": \"is_primary_job_flexible\",\n", - " \"Do you have the option of working from home or an alternate location instead of going into your primary work place?\": \"primary_job_can_wfh\",\n", - " \"How many days per week do you usually work from home or an alternate location?\": \"wfh_days\",\n", - " \"Do you own or rent your place of residence?\": \"residence_ownership_type\",\n", - " \"What is your home type?\": \"residence_type\",\n", - " \"Please identify which category represents your total household income, before taxes, for last year.\": \"income_category\",\n", - " \"Including yourself, how many people live in your home?\": \"n_residence_members\",\n", - " \"How many children under age 18 live in your home?\": \"n_residents_u18\",\n", - " \"Including yourself, how many people have a driver's license in your household?\": \"n_residents_with_license\",\n", - " \"How many motor vehicles are owned, leased, or available for regular use by the people who currently live in your household?\": \"n_motor_vehicles\",\n", - " \"If you were unable to use your household vehicle(s), which of the following options would be available to you to get you from place to place?\": \"available_modes\",\n", - " \"Do you have a medical condition that makes it difficult to travel outside of the home?\": \"has_medical_condition\",\n", - " \"How long have you had this condition?\": \"medical_condition_duration\"\n", - " },\n", - " # Retrieved from: e-mission-phone/survey-resources/data-xls/demo-survey-v1.xlsx\n", - " \"openpath_prod_durham\": {\n", - " \"At_your_primary_job_do_you_ha\": \"is_primary_job_flexible\",\n", - " \"Which_best_describes_your_prim\": \"primary_job_description\",\n", - " \"Do_you_work_full_time_or_part_\": \"primary_job_type\",\n", - " \"Do_you_have_the_option_of_work\": \"primary_job_can_wfh\",\n", - " \"Please_describe_your_primary_job\": \"primary_job_description\",\n", - " \"Do_you_have_more_than_one_job\": \"has_multiple_jobs\",\n", - " # Two columns: how many days/week do you work & what days of the week do you work. \n", - " # the latter has only 4 NA values, the former has 45 NA values.\n", - " \"What_days_of_the_week_do_you_t\": \"wfh_days\",\n", - " \"How_many_days_do_you_usually_w_001\": \"n_wfh_days\",\n", - " # All these are NAs.\n", - " \"Which_one_below_describe_you_b\": \"description\",\n", - " \"What_is_your_race_ethnicity\": \"race_or_ethnicity\",\n", - " \"Are_you_a_student\": \"is_student\",\n", - " \"What_is_the_highest_grade_or_d\": \"highest_education\",\n", - " \"do_you_consider_yourself_to_be\": \"is_transgender\",\n", - " \"What_is_your_gender\": \"gender\",\n", - " \"How_old_are_you\": \"age\",\n", - " \"Are_you_a_paid_worker\": \"is_paid\",\n", - " \"Do_you_have_a_driver_license\": \"has_drivers_license\",\n", - " \"How_long_you_had_this_conditio\": \"medical_condition_duration\",\n", - " \"Including_yourself_how_many_w_001\": \"n_residents_u18\",\n", - " \"Including_yourself_how_many_p\": \"n_residence_members\",\n", - " \"Do_you_own_or_rent_your_home\": \"residence_ownership_type\",\n", - " \"Please_identify_which_category\": \"income_category\",\n", - " \"If_you_were_unable_to_use_your\": \"available_modes\",\n", - " \"Including_yourself_how_many_p_001\": \"n_residents_with_license\",\n", - " \"Including_yourself_how_many_w\": \"n_working_residents\",\n", - " \"What_is_your_home_type\": \"residence_type\",\n", - " \"How_many_motor_vehicles_are_ow\": \"n_motor_vehicles\",\n", - " \"Do_you_have_a_condition_or_han\": \"has_medical_condition\"\n", - " },\n", - " \"openpath_prod_mm_masscec\": {\n", - " # Same questions as Durham.\n", - " \"At_your_primary_job_do_you_ha\": \"is_primary_job_flexible\",\n", - " \"Which_best_describes_your_prim\": \"primary_job_description\",\n", - " \"Do_you_work_full_time_or_part_\": \"primary_job_type\",\n", - " \"Do_you_have_the_option_of_work\": \"primary_job_can_wfh\",\n", - " \"Please_describe_your_primary_job\": \"primary_job_description\",\n", - " \"Do_you_have_more_than_one_job\": \"has_multiple_jobs\",\n", - " # Two columns: how many days/week do you work & what days of the week do you work. \n", - " # the latter has only 4 NA values, the former has 45 NA values.\n", - " \"What_days_of_the_week_do_you_t\": \"wfh_days\",\n", - " \"How_many_days_do_you_usually_w_001\": \"n_wfh_days\",\n", - " # All these are NAs.\n", - " \"Which_one_below_describe_you_b\": \"description\",\n", - " \"What_is_your_race_ethnicity\": \"race_or_ethnicity\",\n", - " \"Are_you_a_student\": \"is_student\",\n", - " \"What_is_the_highest_grade_or_d\": \"highest_education\",\n", - " \"do_you_consider_yourself_to_be\": \"is_transgender\",\n", - " \"What_is_your_gender\": \"gender\",\n", - " \"How_old_are_you\": \"age\",\n", - " \"Are_you_a_paid_worker\": \"is_paid\",\n", - " \"Do_you_have_a_driver_license\": \"has_drivers_license\",\n", - " \"How_long_you_had_this_conditio\": \"medical_condition_duration\",\n", - " \"Including_yourself_how_many_w_001\": \"n_residents_u18\",\n", - " \"Including_yourself_how_many_p\": \"n_residence_members\",\n", - " \"Do_you_own_or_rent_your_home\": \"residence_ownership_type\",\n", - " \"Please_identify_which_category\": \"income_category\",\n", - " \"If_you_were_unable_to_use_your\": \"available_modes\",\n", - " \"Including_yourself_how_many_p_001\": \"n_residents_with_license\",\n", - " \"Including_yourself_how_many_w\": \"n_working_residents\",\n", - " \"What_is_your_home_type\": \"residence_type\",\n", - " \"How_many_motor_vehicles_are_ow\": \"n_motor_vehicles\",\n", - " \"Do_you_have_a_condition_or_han\": \"has_medical_condition\"\n", - " },\n", - " \"openpath_prod_ride2own\": {\n", - " # Same questions as Durham.\n", - " \"How_old_are_you\": \"age\",\n", - " \"What_is_your_gender\": \"gender\",\n", - " \"do_you_consider_yourself_to_be\": \"is_transgender\",\n", - " \"What_is_your_race_ethnicity\": \"race_or_ethnicity\",\n", - " \"Do_you_have_a_driver_license\": \"has_drivers_license\",\n", - " \"Are_you_a_student\": \"is_student\",\n", - " \"What_is_the_highest_grade_or_d\": \"highest_education\",\n", - " \"Are_you_a_paid_worker\": \"is_paid\",\n", - " \"Which_one_below_describe_you_b\": \"description\",\n", - " \"Do_you_own_or_rent_your_home\": \"residence_ownership_type\",\n", - " \"What_is_your_home_type\": \"residence_type\",\n", - " \"Please_identify_which_category\": \"income_category\",\n", - " \"Including_yourself_how_many_p\": \"n_residence_members\",\n", - " \"Including_yourself_how_many_w\": \"n_working_residents\",\n", - " \"Including_yourself_how_many_p_001\": \"n_residents_with_license\",\n", - " \"Including_yourself_how_many_w_001\": \"n_residents_u18\",\n", - " \"How_many_motor_vehicles_are_ow\": \"n_motor_vehicles\",\n", - " \"If_you_were_unable_to_use_your\": \"available_modes\",\n", - " \"Do_you_have_a_condition_or_han\": \"has_medical_condition\",\n", - " \"How_long_you_had_this_conditio\": \"medical_condition_duration\",\n", - " \"Do_you_have_more_than_one_job\": \"has_multiple_jobs\",\n", - " \"Do_you_work_full_time_or_part_\": \"primary_job_type\",\n", - " \"Which_best_describes_your_prim\": \"primary_job_description\",\n", - " \"Please_describe_your_primary_job\": \"primary_job_description\",\n", - " \"At_your_primary_job_do_you_ha\": \"is_primary_job_flexible\",\n", - " \"Do_you_have_the_option_of_work\": \"primary_job_can_wfh\",\n", - " \"How_many_days_do_you_usually_w_001\": \"n_wfh_days\",\n", - " \"What_days_of_the_week_do_you_t\": \"wfh_days\"\n", - " },\n", - " \"openpath_prod_uprm_nicr\": {\n", - " # Same as Durham!\n", - " \"At_your_primary_job_do_you_ha\": \"is_primary_job_flexible\",\n", - " \"Which_best_describes_your_prim\": \"primary_job_description\",\n", - " \"Do_you_work_full_time_or_part_\": \"primary_job_type\",\n", - " \"Do_you_have_the_option_of_work\": \"primary_job_can_wfh\",\n", - " \"Please_describe_your_primary_job\": \"primary_job_description\",\n", - " \"Do_you_have_more_than_one_job\": \"has_multiple_jobs\",\n", - " # Two columns: how many days/week do you work & what days of the week do you work. \n", - " # the latter has only 4 NA values, the former has 45 NA values.\n", - " \"What_days_of_the_week_do_you_t\": \"wfh_days\",\n", - " \"How_many_days_do_you_usually_w_001\": \"n_wfh_days\",\n", - " # All these are NAs.\n", - " \"Which_one_below_describe_you_b\": \"description\",\n", - " \"What_is_your_race_ethnicity\": \"race_or_ethnicity\",\n", - " \"Are_you_a_student\": \"is_student\",\n", - " \"What_is_the_highest_grade_or_d\": \"highest_education\",\n", - " \"do_you_consider_yourself_to_be\": \"is_transgender\",\n", - " \"What_is_your_gender\": \"gender\",\n", - " \"How_old_are_you\": \"age\",\n", - " \"Are_you_a_paid_worker\": \"is_paid\",\n", - " \"Do_you_have_a_driver_license\": \"has_drivers_license\",\n", - " \"How_long_you_had_this_conditio\": \"medical_condition_duration\",\n", - " \"Including_yourself_how_many_w_001\": \"n_residents_u18\",\n", - " \"Including_yourself_how_many_p\": \"n_residence_members\",\n", - " \"Do_you_own_or_rent_your_home\": \"residence_ownership_type\",\n", - " \"Please_identify_which_category\": \"income_category\",\n", - " \"If_you_were_unable_to_use_your\": \"available_modes\",\n", - " \"Including_yourself_how_many_p_001\": \"n_residents_with_license\",\n", - " \"Including_yourself_how_many_w\": \"n_working_residents\",\n", - " \"What_is_your_home_type\": \"residence_type\",\n", - " \"How_many_motor_vehicles_are_ow\": \"n_motor_vehicles\",\n", - " \"Do_you_have_a_condition_or_han\": \"has_medical_condition\"\n", - " }\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "4df64ba8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'birth_year',\n", - " 'primary_job_commute_mode',\n", - " 'primary_job_commute_time',\n", - " 'user_id'}" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "set(SURVEY_DATA_DICT[\"Stage_database\"].values()).difference(\n", - " set(SURVEY_DATA_DICT[\"openpath_prod_durham\"].values())\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "69008893", - "metadata": {}, - "outputs": [], - "source": [ - "## Source: db_utils.py in op-admin-dashboard.\n", - "\n", - "BINARY_DEMOGRAPHICS_COLS = [\n", - " 'user_id',\n", - " '_id',\n", - "]\n", - "\n", - "EXCLUDED_DEMOGRAPHICS_COLS = [\n", - " 'data.xmlResponse', \n", - " 'data.name',\n", - " 'data.version',\n", - " 'data.label',\n", - " 'xmlns:jr',\n", - " 'xmlns:orx',\n", - " 'id',\n", - " 'start',\n", - " 'end',\n", - " 'attrxmlns:jr',\n", - " 'attrxmlns:orx',\n", - " 'attrid',\n", - " '__version__',\n", - " 'attrversion',\n", - " 'instanceID',\n", - "]" - ] - }, - { - "cell_type": "markdown", - "id": "4357d455", - "metadata": {}, - "source": [ - "Ensure that you point the database to the appropriate name" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "255b8896", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "storage not configured, falling back to sample, default configuration\n", - "URL not formatted, defaulting to Stage_database\n", - "Connecting to database URL localhost\n" - ] - } - ], - "source": [ - "import scaffolding\n", - "import emission.core.get_database as edb\n", - "import emission.storage.timeseries.abstract_timeseries as esta" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "12cc0c54", - "metadata": {}, - "outputs": [], - "source": [ - "## Source: scaffolding.py\n", - "\n", - "def expand_userinputs(labeled_ct):\n", - " '''\n", - " param: labeled_ct: a dataframe of confirmed trips, some of which have labels\n", - " params: labels_per_trip: the number of labels for each trip.\n", - " Currently, this is 2 for studies and 3 for programs, and should be \n", - " passed in by the notebook based on the input config.\n", - " If used with a trip-level survey, it could be even larger.\n", - " '''\n", - " # CASE 1 of https://github.com/e-mission/em-public-dashboard/issues/69#issuecomment-1256835867\n", - " if len(labeled_ct) == 0:\n", - " return labeled_ct\n", - " label_only = pd.DataFrame(labeled_ct.user_input.to_list(), index=labeled_ct.index)\n", - " # disp.display(label_only.head())\n", - " labels_per_trip = len(label_only.columns)\n", - " print(\"Found %s columns of length %d\" % (label_only.columns, labels_per_trip))\n", - " expanded_ct = pd.concat([labeled_ct, label_only], axis=1)\n", - " assert len(expanded_ct) == len(labeled_ct), \\\n", - " (\"Mismatch after expanding labels, expanded_ct.rows = %s != labeled_ct.rows %s\" %\n", - " (len(expanded_ct), len(labeled_ct)))\n", - " print(\"After expanding, columns went from %s -> %s\" %\n", - " (len(labeled_ct.columns), len(expanded_ct.columns)))\n", - " assert len(expanded_ct.columns) == len(labeled_ct.columns) + labels_per_trip, \\\n", - " (\"Mismatch after expanding labels, expanded_ct.columns = %s != labeled_ct.columns %s\" %\n", - " (len(expanded_ct.columns), len(labeled_ct.columns)))\n", - " # disp.display(expanded_ct.head())\n", - " return expanded_ct" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "9a98e2fb", - "metadata": {}, - "outputs": [], - "source": [ - "## Source: scaffolding.py\n", - "\n", - "def data_quality_check(expanded_ct):\n", - " '''1. Delete rows where the mode_confirm was pilot_ebike and repalced_mode was pilot_ebike.\n", - " 2. Delete rows where the mode_confirm was pilot_ebike and repalced_mode was same_mode.\n", - " 3. Replace same_mode for the mode_confirm for Energy Impact Calcualtion.'''\n", - "\n", - " # TODO: This is only really required for the initial data collection around the minipilot\n", - " # in subsequent deployes, we removed \"same mode\" and \"pilot_ebike\" from the options, so the\n", - " # dataset did not contain of these data quality issues\n", - "\n", - " if 'replaced_mode' in expanded_ct.columns:\n", - " expanded_ct.drop(expanded_ct[(expanded_ct['mode_confirm'] == 'pilot_ebike') & (expanded_ct['replaced_mode'] == 'pilot_ebike')].index, inplace=True)\n", - " expanded_ct.drop(expanded_ct[(expanded_ct['mode_confirm'] == 'pilot_ebike') & (expanded_ct['replaced_mode'] == 'same_mode')].index, inplace=True)\n", - " expanded_ct['replaced_mode'] = np.where(expanded_ct['replaced_mode'] == 'same_mode',expanded_ct['mode_confirm'], expanded_ct['replaced_mode'])\n", - " \n", - " return expanded_ct" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "fe37bf27", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Before filtering, length=241123\n", - "After filtering, length=241123\n", - "Found Index(['mode_confirm', 'purpose_confirm', 'replaced_mode'], dtype='object') columns of length 3\n", - "After expanding, columns went from 41 -> 44\n", - "['source', 'end_ts', 'end_fmt_time', 'end_loc', 'raw_trip', 'start_ts', 'start_fmt_time', 'start_loc', 'duration', 'distance', 'start_place', 'end_place', 'cleaned_trip', 'inferred_labels', 'inferred_trip', 'expectation', 'confidence_threshold', 'expected_trip', 'user_input', 'section_modes', 'section_distances', 'start_local_dt_year', 'start_local_dt_month', 'start_local_dt_day', 'start_local_dt_hour', 'start_local_dt_minute', 'start_local_dt_second', 'start_local_dt_weekday', 'start_local_dt_timezone', 'end_local_dt_year', 'end_local_dt_month', 'end_local_dt_day', 'end_local_dt_hour', 'end_local_dt_minute', 'end_local_dt_second', 'end_local_dt_weekday', 'end_local_dt_timezone', '_id', 'user_id', 'metadata_write_ts', 'additions', 'mode_confirm', 'purpose_confirm', 'replaced_mode']\n" - ] - } - ], - "source": [ - "## Source: scaffolding.py\n", - "\n", - "uuid_df = pd.json_normalize(list(edb.get_uuid_db().find()))\n", - "\n", - "if not INCLUDE_TEST_USERS:\n", - " uuid_df = uuid_df.loc[~uuid_df.user_email.str.contains('_test_'), :]\n", - "\n", - "filtered = uuid_df.uuid.unique()\n", - "\n", - "agg = esta.TimeSeries.get_aggregate_time_series()\n", - "all_ct = agg.get_data_df(\"analysis/confirmed_trip\", None)\n", - "\n", - "print(f\"Before filtering, length={len(all_ct)}\")\n", - "participant_ct_df = all_ct.loc[all_ct.user_id.isin(filtered), :]\n", - "print(f\"After filtering, length={len(participant_ct_df)}\")\n", - "\n", - "expanded_ct = expand_userinputs(participant_ct_df)\n", - "expanded_ct = data_quality_check(expanded_ct)\n", - "print(expanded_ct.columns.tolist())\n", - "expanded_ct['replaced_mode'] = expanded_ct['replaced_mode'].fillna('Unknown')" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "13536d14", - "metadata": {}, - "outputs": [], - "source": [ - "# # Additional preprocessing for replaced mode (if any)\n", - "\n", - "mode_counts = expanded_ct['replaced_mode'].value_counts()\n", - "drop_modes = mode_counts[mode_counts == 1].index.tolist()\n", - "\n", - "expanded_ct.drop(\n", - " index=expanded_ct.loc[expanded_ct.replaced_mode.isin(drop_modes)].index,\n", - " inplace=True\n", - ")\n", - "\n", - "# Additional modes to drop.\n", - "expanded_ct.drop(\n", - " index=expanded_ct.loc[expanded_ct.replaced_mode.isin(\n", - " # Remove all rows with air, boat, or weird answers.\n", - " ['houseboat', 'gondola', 'airline_flight', 'aircraft', 'zoo', 'air',\n", - " 'airplane', 'boat', 'flight', 'plane', 'meal', 'lunch']\n", - " )].index,\n", - " inplace=True\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "2b56af00", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['no_travel' 'Unknown' 'bus' 'drove_alone' 'bike' 'shared_ride' 'walk'\n", - " 'train' 'bikeshare' 'not_a trip' 'pilot_ebike' 'electric_car' 'taxi'\n", - " 'not_a_trip' 'run' 'scootershare' 'tramway' 'free_shuttle' 'e-bike'\n", - " 'rental_car' 'train_+ bus' 'skateboard' 'e_bike' 'golf_cart'\n", - " 'emergency_vehicle with others' 'call_friend' 'no_replacement'\n", - " 'doing_nothing' 'na' 'ebike' 'hiking' 'ski' 'not_accurate' 'pilot_bike'\n", - " 'snowboarding' 'stolen_ebike' 'n/a' 'testing' 'home'\n", - " 'must_walk 3-5 mi a day for back' 'family' 'car' 'pilot_e-bike'\n", - " 'time_spent on the clock at amazon' 'working' 'walk_at work'\n", - " 'sitting_on my butt doing nothing' 'nothing._delivered food for work'\n", - " 'train,_bus and walk' 'work_vehicle' 'friend_picked me up']\n" - ] - } - ], - "source": [ - "print(expanded_ct.replaced_mode.unique())" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "757ccbee", - "metadata": {}, - "outputs": [], - "source": [ - "expanded_ct.replaced_mode = expanded_ct.replaced_mode.apply(lambda x: REPLACED_MODE_DICT[CURRENT_DB][x])" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "c878ad12", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['no_trip' 'unknown' 'transit' 'car' 'p_micro' 's_car' 'walk' 's_micro'\n", - " 'ridehail' 'no_travel']\n" - ] - } - ], - "source": [ - "print(expanded_ct.replaced_mode.unique())" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "7461a4d2", - "metadata": {}, - "outputs": [], - "source": [ - "# Demographics\n", - "\n", - "if CURRENT_DB != \"Stage_database\":\n", - "\n", - " decoded_uuids = [str(x) for x in filtered]\n", - "\n", - " ## Source: query_demographics() in op-admin-dashboard.\n", - " ts = esta.TimeSeries.get_aggregate_time_series()\n", - " entries = list(ts.find_entries([\"manual/demographic_survey\"]))\n", - "\n", - " available_key = {}\n", - " for entry in entries:\n", - " survey_key = list(entry['data']['jsonDocResponse'].keys())[0]\n", - " if survey_key not in available_key:\n", - " available_key[survey_key] = []\n", - "\n", - " # Minor modification: Added user_id check to filter users.\n", - " if str(entry['user_id']) in decoded_uuids:\n", - " available_key[survey_key].append(entry)\n", - "\n", - " dataframes = {}\n", - " for key, json_object in available_key.items():\n", - " df = pd.json_normalize(json_object)\n", - " dataframes[key] = df\n", - "\n", - " for key, df in dataframes.items():\n", - " if not df.empty:\n", - " for col in BINARY_DEMOGRAPHICS_COLS:\n", - " if col in df.columns:\n", - " df[col] = df[col].apply(str) \n", - " columns_to_drop = [col for col in df.columns if col.startswith(\"metadata\")]\n", - " df.drop(columns= columns_to_drop, inplace=True) \n", - " df.columns=[col.rsplit('.',1)[-1] if col.startswith('data.jsonDocResponse.') else col for col in df.columns]\n", - " for col in EXCLUDED_DEMOGRAPHICS_COLS:\n", - " if col in df.columns:\n", - " df.drop(columns= [col], inplace=True)\n", - "\n", - " survey_data = pd.DataFrame() \n", - " for v in dataframes.values():\n", - " survey_data = pd.concat([survey_data, v], axis=0, ignore_index=True)\n", - "else:\n", - " # Read the demographics.\n", - " survey_data = pd.read_csv('../viz_scripts/Can Do Colorado eBike Program - en.csv')\n", - " survey_data.rename(columns={'Unique User ID (auto-filled, do not edit)': 'user_id'}, inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "a6be751e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "203 261\n" - ] - } - ], - "source": [ - "print(len(survey_data.user_id.unique()), len(expanded_ct.user_id.unique()))" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "9ebc87d8", - "metadata": {}, - "outputs": [], - "source": [ - "survey_data.rename(SURVEY_DATA_DICT[CURRENT_DB], axis='columns', inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "86bd8337", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
user_id
0a2d48b05d5454d428c0841432c7467b6
1f2799dc202bc4249b42a4fda8770d1b6
2b2bbe715b6a14fd19f751cae8adf6b4e
36373dfb8cb9b47e88e8f76adcfadde20
493c6e0f156a44e07b920ded664419dc6
\n", - "
" - ], - "text/plain": [ - " user_id\n", - "0 a2d48b05d5454d428c0841432c7467b6\n", - "1 f2799dc202bc4249b42a4fda8770d1b6\n", - "2 b2bbe715b6a14fd19f751cae8adf6b4e\n", - "3 6373dfb8cb9b47e88e8f76adcfadde20\n", - "4 93c6e0f156a44e07b920ded664419dc6" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "display(survey_data[['user_id']].head())\n", - "print(type(survey_data['user_id'][0]))" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "189ab848", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
user_id
08a0473ca-e53d-4720-a99c-0696cc1fb407
10a093cbd-b536-43af-b03d-293425e84c76
20a093cbd-b536-43af-b03d-293425e84c76
30a093cbd-b536-43af-b03d-293425e84c76
40a093cbd-b536-43af-b03d-293425e84c76
\n", - "
" - ], - "text/plain": [ - " user_id\n", - "0 8a0473ca-e53d-4720-a99c-0696cc1fb407\n", - "1 0a093cbd-b536-43af-b03d-293425e84c76\n", - "2 0a093cbd-b536-43af-b03d-293425e84c76\n", - "3 0a093cbd-b536-43af-b03d-293425e84c76\n", - "4 0a093cbd-b536-43af-b03d-293425e84c76" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "display(expanded_ct[['user_id']].head())\n", - "print(type(expanded_ct['user_id'][0]))" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "c7eb2e09", - "metadata": {}, - "outputs": [], - "source": [ - "# Additional preprocessing to filter unwanted users from sensed trips data.\n", - "ct_users = expanded_ct['user_id'].apply(lambda x: str(x).replace('-', ''))\n", - "survey_users = survey_data['user_id'].apply(lambda x: str(x).replace('-', ''))\n", - "\n", - "common = set(ct_users.unique()).intersection(set(survey_users.unique()))\n", - "\n", - "filtered_trips = expanded_ct.loc[ct_users.isin(common), :].reset_index(drop=True)\n", - "filtered_survey = survey_data.loc[survey_users.isin(common), :].reset_index(drop=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "1ca22a08", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[trip data] After filtering, size goes from 240962 -> 205388\n", - "[trip data] Unique users after filtering: 184\n", - "[survey data] After filtering, size goes from 310 -> 286\n", - "[survey data] Unique users after filtering: 184\n" - ] - } - ], - "source": [ - "print(f\"[trip data] After filtering, size goes from {expanded_ct.shape[0]} -> {filtered_trips.shape[0]}\")\n", - "print(f\"[trip data] Unique users after filtering: {len(filtered_trips.user_id.unique())}\")\n", - "\n", - "print(f\"[survey data] After filtering, size goes from {survey_users.shape[0]} -> {filtered_survey.shape[0]}\")\n", - "print(f\"[survey data] Unique users after filtering: {len(filtered_survey.user_id.unique())}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "b48cd6e2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "uuid.UUID" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(filtered_trips.user_id[0])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "86deb40c", - "metadata": {}, - "outputs": [], - "source": [ - "# raw data dump.\n", - "expanded_ct.to_csv(f'../data/raw_data/trips__{CURRENT_DB}.csv', index=False)\n", - "survey_data.to_csv(f'../data/raw_data/survey__{CURRENT_DB}.csv', index=False)\n", - "\n", - "# filtered data dump.\n", - "filtered_trips.to_csv(f'../data/filtered_data/trips__{CURRENT_DB}.csv', index=False)\n", - "filtered_survey.to_csv(f'../data/filtered_data/survey__{CURRENT_DB}.csv', index=False)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a1b140b9", - "metadata": {}, - "outputs": [], - "source": [ - "# durham has section modes and section distances.\n", - "# masscec does not have section distance and section modes.\n", - "# ride2own does not have section distances and modes.\n", - "# uprm nicr also does not have section distances and modes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "062c18c7", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ea248509", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "emission", - "language": "python", - "name": "emission" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.16" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/rm_src/multisource_data/02_extract_section_information.ipynb b/rm_src/multisource_data/02_extract_section_information.ipynb deleted file mode 100644 index ee5c2ac..0000000 --- a/rm_src/multisource_data/02_extract_section_information.ipynb +++ /dev/null @@ -1,299 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "e3166085", - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import sys\n", - "import pickle\n", - "import ast\n", - "import importlib\n", - "# from multiprocessing import cpu_count, Pool\n", - "\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import pandas as pd\n", - "import seaborn as sns\n", - "\n", - "from enum import Enum\n", - "from pathlib import Path\n", - "from uuid import UUID\n", - "from bson.objectid import ObjectId\n", - "from collections import defaultdict\n", - "\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "5d482225", - "metadata": {}, - "outputs": [], - "source": [ - "emission_path = Path(os.getcwd()).parent.parent / 'my_emission_server' / 'e-mission-server'\n", - "sys.path.append(str(emission_path))\n", - "\n", - "# Also add the home (viz_scripts) to the path\n", - "sys.path.append('../viz_scripts')" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "cf187095", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "storage not configured, falling back to sample, default configuration\n", - "URL not formatted, defaulting to openpath_prod_ride2own\n", - "Connecting to database URL localhost\n" - ] - } - ], - "source": [ - "import scaffolding\n", - "\n", - "import emission.core.get_database as edb\n", - "import emission.storage.timeseries.abstract_timeseries as esta\n", - "import emission.storage.decorations.trip_queries as esdt" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "5eba5f02", - "metadata": {}, - "outputs": [], - "source": [ - "class Sections(Enum):\n", - " DURATION = 0\n", - " DISTANCE = 1\n", - " MODE = 2\n", - " \n", - "# A lightweight wrapper around the lists to ease management.\n", - "class SectionData:\n", - " def __init__(self, section_dict):\n", - " self._section_dict = section_dict\n", - " \n", - " def get_section_data(self, section: Sections):\n", - " if section not in self._section_dict:\n", - " return []\n", - " return self._section_dict[section]\n", - " \n", - "SENSED_MODE_DICT = {\n", - " 'IN_VEHICLE': 'car',\n", - " 'BICYCLING': 'p_micro',\n", - " ''\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "fcd776e5", - "metadata": {}, - "outputs": [], - "source": [ - "REQUIRED = {\n", - " \"Stage_database\": [Sections.DURATION],\n", - " \"openpath_prod_durham\": [Sections.DURATION],\n", - " \"openpath_prod_mm_masscec\": [Sections.DURATION, Sections.DISTANCE, Sections.MODE],\n", - " \"openpath_prod_ride2own\": [Sections.DURATION, Sections.DISTANCE, Sections.MODE],\n", - " \"openpath_prod_uprm_nicr\": [Sections.DURATION, Sections.DISTANCE, Sections.MODE]\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "be70ead8", - "metadata": {}, - "outputs": [], - "source": [ - "def get_section_data(df: pd.DataFrame, db_name: str):\n", - " \n", - " def _get_section_data(row):\n", - " \n", - " user_id, trip_id = UUID(row.user_id), ObjectId(row.cleaned_trip)\n", - " \n", - " section_data = esdt.get_sections_for_trip(\n", - " key='analysis/cleaned_section', user_id=user_id, trip_id=trip_id\n", - " )\n", - " \n", - " if section_data is None or len(section_data) == 0:\n", - " section_data = esdt.get_sections_for_trip(\n", - " key='analysis/inferred_section', user_id=user_id, trip_id=trip_id\n", - " )\n", - " \n", - " if section_data is None or len(section_data) == 0:\n", - " return None\n", - " \n", - " required = REQUIRED[db_name]\n", - " \n", - " section_dict = dict()\n", - " \n", - " if Sections.DURATION in required:\n", - " section_dict[Sections.DURATION] = [x.data.duration for x in section_data]\n", - " else:\n", - " section_dict[Sections.DURATION] = ast.literal_eval(x.section_durations)\n", - " \n", - " if Sections.DISTANCE in required:\n", - " section_dict[Sections.DISTANCE] = [x.data.distance for x in section_data]\n", - " else:\n", - " section_dict[Sections.DISTANCE] = ast.literal_eval(x.section_distances)\n", - " \n", - " if Sections.MODE in required:\n", - " section_dict[Sections.MODE] = [x.data.sensed_mode for x in section_data]\n", - " else:\n", - " section_dict[Sections.MODE] = ast.literal_eval(x.section_modes)\n", - " \n", - " return SectionData(section_dict)\n", - " \n", - " \n", - " section_series = df.apply(lambda x: _get_section_data(x), axis=1)\n", - " \n", - " return section_series" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "27cd85fd", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_33228/382724123.py:41: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " sections.loc[:, 'user_id'] = sections.loc[:, 'user_id'].apply(lambda x: UUID(x))\n", - "/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_33228/382724123.py:42: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " sections.loc[:, 'cleaned_trip'] = sections.loc[:, 'cleaned_trip'].apply(lambda x: ObjectId(x))\n" - ] - } - ], - "source": [ - "df = pd.read_csv('../data/filtered_data/trips__openpath_prod_ride2own.csv')\n", - "\n", - "section_info = get_section_data(df, 'openpath_prod_ride2own')" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "0ff2d17f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0 <__main__.SectionData object at 0x165720d00>\n", - "1 <__main__.SectionData object at 0x165720880>\n", - "2 <__main__.SectionData object at 0x1657209d0>\n", - "3 <__main__.SectionData object at 0x165720f70>\n", - "4 <__main__.SectionData object at 0x165720fa0>\n", - " ... \n", - "5817 <__main__.SectionData object at 0x1659ebd60>\n", - "5818 <__main__.SectionData object at 0x1659eb400>\n", - "5819 <__main__.SectionData object at 0x1659ebf70>\n", - "5820 <__main__.SectionData object at 0x1659ebf10>\n", - "5821 <__main__.SectionData object at 0x1659eba60>\n", - "Length: 5822, dtype: object" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "section_info" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "938db9b9", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{, , , , , }\n" - ] - } - ], - "source": [ - "modes = set()\n", - "for s in section_info:\n", - " modes.update(s.get_section_data(Sections.MODE))\n", - "\n", - "print(modes)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d30a8d58", - "metadata": {}, - "outputs": [], - "source": [ - "def compute_argmax(db_name: str, df:pd.DataFrame, sections: pd.Series):\n", - " # Evaluate once.\n", - " distance_mask = Sections.DISTANCE in REQUIRED[db_name]\n", - " mode_mask = Sections.MODE in REQUIRED[db_name]\n", - " \n", - " for ix, section in enumerate(sections):\n", - " distance = ast.literal_eval(\n", - " section.get_section_data(Sections.DISTANCE) if distance_mask else df.loc[ix, 'section_distances']\n", - " )\n", - " \n", - " duration = ast.literal_eval(section.get_section_data(Sections.DISTANCE))\n", - " \n", - " mode = ast.literal_eval(\n", - " section.get_section_data(Sections.DISTANCE) if distance_mask else df.loc[ix, 'section_modes']\n", - " )\n", - " \n", - " " - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "emission", - "language": "python", - "name": "emission" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.16" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/rm_src/rf_bayesian_optim.py b/rm_src/rf_bayesian_optim.py deleted file mode 100644 index 6c911bd..0000000 --- a/rm_src/rf_bayesian_optim.py +++ /dev/null @@ -1,280 +0,0 @@ -import warnings -warnings.simplefilter(action='ignore', category=Warning) - -import os -import numpy as np -import pandas as pd -import pickle -from bayes_opt import BayesianOptimization -from sklearn.linear_model import LinearRegression -from sklearn.ensemble import RandomForestClassifier -from sklearn.model_selection import StratifiedGroupKFold -from sklearn.metrics import f1_score, log_loss, r2_score - -SEED = 13210 - -class BayesianCV: - def __init__(self, data): - - init_splitter = StratifiedGroupKFold(n_splits=5, shuffle=True, random_state=SEED) - X = data.drop(columns=['target']) - groups = data.user_id.values - y = data.target.values - - for train_ix, test_ix in init_splitter.split(X, y, groups): - train = data.iloc[train_ix, :] - test = data.iloc[test_ix, :] - - break - - # Can't have split, so let it happen for two times. - # train, test = train_test_split(data, test_size=0.2, shuffle=True, stratify=data.target) - - print("Train-test split done.") - - # Estimate the test durations using the train data. - params, train = self._get_duration_estimate(train, 'train', None) - _, test = self._get_duration_estimate(test, 'test', params) - - # We drop the training duration estimates since we will be re-computing them during CV. - train.drop(columns=[c for c in train.columns if 'tt_' in c], inplace=True) - - # This is out final train and test data. - self.data = train.reset_index(drop=True) - self.test = test.reset_index(drop=True) - - self._optimizer = self._setup_optimizer() - - - def _drop_columns(self, df: pd.DataFrame): - to_drop = [ - 'source', 'end_ts', 'end_fmt_time', 'end_loc', 'raw_trip', 'start_ts', - 'start_fmt_time', 'start_loc', 'duration', 'distance', 'start_place', - 'end_place', 'cleaned_trip', 'inferred_labels', 'inferred_trip', 'expectation', - 'confidence_threshold', 'expected_trip', 'user_input', 'start:year', 'start:month', - 'start:day', 'start_local_dt_minute', 'start_local_dt_second', - 'start_local_dt_weekday', 'start_local_dt_timezone', 'end:year', 'end:month', 'end:day', - 'end_local_dt_minute', 'end_local_dt_second', 'end_local_dt_weekday', - 'end_local_dt_timezone', '_id', 'user_id', 'metadata_write_ts', 'additions', - 'mode_confirm', 'purpose_confirm', 'Mode_confirm', 'Trip_purpose', - 'original_user_id', 'program', 'opcode', 'Timestamp', 'birth_year', - 'available_modes', 'section_coordinates_argmax', 'section_mode_argmax', - 'start_lat', 'start_lng', 'end_lat', 'end_lng' - ] - - # Drop section_mode_argmax and available_modes. - return df.drop( - columns=to_drop, - inplace=False - ) - - - def _get_duration_estimate(self, df: pd.DataFrame, dset: str, model_dict: dict): - - X_features = ['section_distance_argmax', 'age'] - - if 'mph' in df.columns: - X_features += ['mph'] - - if dset == 'train' and model_dict is None: - model_dict = dict() - - if dset == 'test' and model_dict is None: - raise AttributeError("Expected model dict for testing.") - - if dset == 'train': - for section_mode in df.section_mode_argmax.unique(): - section_data = df.loc[df.section_mode_argmax == section_mode, :] - if section_mode not in model_dict: - model_dict[section_mode] = dict() - - model = LinearRegression(fit_intercept=True) - - X = section_data[ - X_features - ] - Y = section_data[['section_duration_argmax']] - - model.fit(X, Y.values.ravel()) - - r2 = r2_score(y_pred=model.predict(X), y_true=Y.values.ravel()) - # print(f"Train R2 for {section_mode}: {r2}") - - model_dict[section_mode]['model'] = model - - elif dset == 'test': - for section_mode in df.section_mode_argmax.unique(): - section_data = df.loc[df.section_mode_argmax == section_mode, :] - X = section_data[ - X_features - ] - Y = section_data[['section_duration_argmax']] - - y_pred = model_dict[section_mode]['model'].predict(X) - r2 = r2_score(y_pred=y_pred, y_true=Y.values.ravel()) - # print(f"Test R2 for {section_mode}: {r2}") - - # Create the new columns for the duration. - new_columns = ['p_micro','no_trip','s_car','transit','car','s_micro','ridehail','walk','unknown'] - df[new_columns] = 0 - df['temp'] = 0 - - for section in df.section_mode_argmax.unique(): - X_section = df.loc[df.section_mode_argmax == section, X_features] - - # broadcast to all columns. - df.loc[df.section_mode_argmax == section, 'temp'] = model_dict[section]['model'].predict(X_section) - - for c in new_columns: - df[c] = df['av_' + c] * df['temp'] - - df.drop(columns=['temp'], inplace=True) - - df.rename(columns=dict([(x, 'tt_'+x) for x in new_columns]), inplace=True) - - # return model_dict, result_df - return model_dict, df - - - def _setup_optimizer(self): - # Define search space. - hparam_dict = { - # 10-500 - 'n_estimators': (0.25, 3), - # 5-150 - 'max_depth': (0.5, 15), - # 2-20 - 'min_samples_split': (0.2, 2.5), - # 1-20 - 'min_samples_leaf': (0.1, 2.5), - # as-is. - 'ccp_alpha': (0., 0.5), - # as-is. - 'max_features': (0.1, 0.99), - # Use clip to establish mask. - 'class_weight': (0, 1), - } - - return BayesianOptimization( - self._surrogate, - hparam_dict - ) - - - def _surrogate(self, n_estimators, max_depth, min_samples_split, min_samples_leaf, ccp_alpha, max_features, class_weight): - - cw = 'balanced_subsample' if class_weight < 0.5 else 'balanced' - - # Builds a surrogate model using the samples hparams. - model = RandomForestClassifier( - n_estimators=int(n_estimators * 100), - max_depth=int(max_depth * 10), - min_samples_split=int(min_samples_split * 10), - min_samples_leaf=int(min_samples_leaf * 10), - max_features=max(min(max_features, 0.999), 1e-3), - ccp_alpha=ccp_alpha, - bootstrap=True, - class_weight=cw, - n_jobs=os.cpu_count(), - random_state=SEED - ) - - fold_crossentropy = list() - - # Use the train split and further split in train-val. - X = self.data.drop(columns=['target']) - y = self.data.target.values.ravel() - users = X.user_id.values - - gkfold = StratifiedGroupKFold(n_splits=5, shuffle=True, random_state=SEED) - - for train_ix, test_ix in gkfold.split(X, y, users): - - X_train = X.iloc[train_ix, :] - X_test = X.iloc[test_ix, :] - - y_train = y[train_ix] - y_test = y[test_ix] - - # Re-estimate durations. - params, X_train = self._get_duration_estimate(X_train, 'train', None) - _, X_test = self._get_duration_estimate(X_test, 'test', params) - - X_train = self._drop_columns(X_train) - X_test = self._drop_columns(X_test) - - model.fit( - X_train, - y_train - ) - - # Measure performance on valid split. - ce = log_loss( - y_true=y_test, - y_pred=model.predict_proba(X_test), - labels=list(range(1, 10)) - ) - - fold_crossentropy.append(ce) - - # Return the average negative crossentropy (since bayesian optimization aims to maximize an objective). - return -np.mean(fold_crossentropy) - - - def optimize(self): - self._optimizer.maximize(n_iter=100, init_points=10) - print("Done optimizing!") - best_params = self._optimizer.max['params'] - best_loss = -self._optimizer.max['target'] - return best_loss, best_params - - -def train_final_model(params, cv_obj): - # Construct the model using the params. - model = RandomForestClassifier( - n_estimators=int(params['n_estimators'] * 100), - max_depth=int(params['max_depth'] * 10), - min_samples_split=int(params['min_samples_split'] * 10), - min_samples_leaf=int(params['min_samples_leaf'] * 10), - max_features=params['max_features'], - ccp_alpha=params['ccp_alpha'], - bootstrap=True, - class_weight='balanced_subsample', - n_jobs=os.cpu_count() - ) - - - X_tr = cv_obj.data.drop(columns=['target']) - y_tr = cv_obj.data.target.values.ravel() - - X_te = cv_obj.test.drop(columns=['target']) - y_te = cv_obj.test.target.values.ravel() - - params, X_tr = cv_obj._get_duration_estimate(X_tr, 'train', None) - - X_tr = cv_obj._drop_columns(X_tr) - X_te = cv_obj._drop_columns(X_te) - - model.fit( - X_tr, - y_tr - ) - - model.fit(X_tr, y_tr) - - print(f"Train loss: {log_loss(y_true=y_tr, y_pred=model.predict_proba(X_tr))}") - print(f"Train performance: {f1_score(y_true=y_tr, y_pred=model.predict(X_tr), average='weighted')}") - print(f"Test loss: {log_loss(y_true=y_te, y_pred=model.predict_proba(X_te))}") - print(f"Test performance: {f1_score(y_true=y_te, y_pred=model.predict(X_te), average='weighted')}") - - with open('./bayes_rf.pkl', 'wb') as f: - f.write(pickle.dumps(model)) - - -if __name__ == "__main__": - data = pd.read_csv('../data/ReplacedMode_Fix_02142024.csv') - bayes_cv = BayesianCV(data) - best_loss, best_params = bayes_cv.optimize() - print(f"Best loss: {best_loss}, best params: {str(best_params)}") - train_final_model(best_params, bayes_cv) - \ No newline at end of file diff --git a/viz_scripts/.DS_Store b/viz_scripts/.DS_Store index 147fc0ae208e4357c20fe72befadf1956a5d71e7..cea56581763453b1f7d758e2a09ed44dab75bcdf 100644 GIT binary patch literal 10244 zcmeHMU2GIp6h3EL%FICNv=&)P7dBM1)BJqiFnj&_qno=z|*KgNYauA50U)pBH0%F;O0jsL|lL_s%xE3&!}MkT|!w zbMCqKoO|zl_d9ob?*agJW%X8oC;&*5nN%0j;|htjvwT?!`8Aa!k^BKHFhPS1OhV!^ z>!2b)AV45MAV45MAVA<+K!Cp4EJ+K544wf30RjO6a|p2gAxfFam@j99nqbR3JBmO+v_wM#mDm0Air^sNdVD?kSaQg9dy$P~Nd@e=nU+vJ2h?$7<>Z?(ZB~vsC83QYg*ekw>3vMwrrekj!tc9+teK0 zu%&H!T9%fqYTed>b~h?&oHoP5A*jrTAqlP=;8Am);8g-qF z*Ub$_O!8%Q302Ly#+?Q^m^q_|+}v84bYVjI^@WS;Rx~uOY1_25v$ucOY~`XVRjE;G zhjXTDCM{!V!qmO7y_%acY~8dEjnZ=1o_WwTGP3%bJZNiaV^&>MReAlAaCjt}H1Ext z-lWEm; zv#h%E;9;VMa9yXgN~$goSz6MtMAZhRT~c?-!#M$?sNAA-NY&UZkEEP*nx^fF>RZDx zNj)ds&Bnf6bG?Ca!_Lp@)^Lv`jk;r6#u%6&ZstAuB#AE#)iak~-SnIcfAJml;qYG8 zRi~~Sy8qtcf$$xY`YHLSrkyh>GH7i@fJhCoCb0$_yoOkd&}5?AQleT6`d~lBC{Yeh zz$thRPQ%-97CwMa;5>W*U%}V#4SWwj!Ow6JenG?#mg79E!DU#F5nPRJxE?oRJ9c0X z_TqNz!(F%shjA~C;sG@A9<(rxSv-dK#ZDLjc!<12Uu-@rHVEPjaR@FV;Z zzr`Q$N4$W);&1pn{t;3`)uFo3icq7NbSNKQ!-ce>|7li}UK$eqE)p8QQb$@df+)>O$e6N&?C0l(ZZP{6{Y4bivC5Lb0VEOB#!C8FmyX2l z+M|>YP-cnQ%?Qa|=)p`_J-?18gCP1>`wd7?K(C z8S)s?CVvzZo_tY2a`Qd`B}QvyhIEEhpl~Wf5kn?WNjyU?kX-`h6$AOH3`szlY#<%a zPyiIqXUGDwlNm}T+et{9p9fl~@gEF;ECvQCp#DUlx&ok{JfPX}3@Ko9OMoQE`b4nF zsgrFaWXu?>ff{BYX_f$L&If9MSXByCS^(r1gZae_8DPz+Kx?J=7*--{oqSi&c=Bm+ zD_uUI;$)z*G$71p$N}38a)lnypi0l2{N$vZ{3M`GU@$R$p8QRG&SG{B4nbz12uP3{ hNVtN+Z)4$i=E?jjo}kcVV1k4!D6kne$Mei#1^~%pT0sB+ diff --git a/viz_scripts/Dockerfile b/viz_scripts/Dockerfile deleted file mode 100644 index e4c3c37..0000000 --- a/viz_scripts/Dockerfile +++ /dev/null @@ -1,42 +0,0 @@ -# python 3 -FROM emission/e-mission-server.dev.server-only:4.0.0 -ENV SERVER_REPO=https://github.com/e-mission/e-mission-server.git -ENV SERVER_BRANCH=join_redirect_to_static - -VOLUME /plots - -ADD docker/environment36.dashboard.additions.yml / - -RUN /bin/bash -c "/clone_server.sh" - -WORKDIR /usr/src/app - -RUN /bin/bash -c "cd e-mission-server && source setup/activate.sh && conda env update --name emission --file setup/environment36.notebook.additions.yml" -RUN /bin/bash -c "cd e-mission-server && source setup/activate.sh && conda env update --name emission --file /environment36.dashboard.additions.yml" - -RUN mkdir -p /usr/src/app/saved-notebooks -WORKDIR /usr/src/app/saved-notebooks - -COPY auxiliary_files ./auxiliary_files -COPY bin ./bin -COPY *.ipynb . -COPY *.py . - -# Delete all test packages since they generate false positives in the vulnerability scan -# e.g. -# root/miniconda-4.12.0/pkgs/conda-4.12.0-py38h06a4308_0/info/test/tests/data/env_metadata/py27-osx-no-binary/lib/python2.7/site-packages/requests-2.19.1-py2.7.egg-info/PKG-INFO -# root/miniconda-4.12.0/pkgs/conda-4.12.0-py38h06a4308_0/info/test/tests/data/env_metadata/py36-osx-whl/lib/python3.6/site-packages/Django-2.1.dist-info/METADATA -# root/miniconda-4.12.0/pkgs/conda-4.12.0-py38h06a4308_0/info/test/tests/data/env_metadata/py36-osx-whl/lib/python3.6/site-packages/Scrapy-1.5.1.dist-info/METADATA - -RUN /bin/bash -c "find /root/miniconda-*/pkgs -wholename \*info/test\* -type d | xargs rm -rf" - -WORKDIR /usr/src/app - -ADD docker/start_notebook.sh /usr/src/app/.docker/start_notebook.sh -RUN chmod u+x /usr/src/app/.docker/start_notebook.sh - -ADD docker/crontab /usr/src/app/crontab - -EXPOSE 8888 - -CMD ["/bin/bash", "/usr/src/app/.docker/start_notebook.sh"] diff --git a/viz_scripts/auxiliary_files/energy_intensity.csv b/viz_scripts/auxiliary_files/energy_intensity.csv deleted file mode 100644 index c203241..0000000 --- a/viz_scripts/auxiliary_files/energy_intensity.csv +++ /dev/null @@ -1,17 +0,0 @@ -mode,fuel,(kWH)/trip,EI(kWH/PMT),energy_intensity_factor,energy_intensity_units,CO2_factor,CO2_factor_units -"Gas Car, drove alone",gasoline,0,,5170,BTU/PMT,157.2,lb_CO2/MMBTU -"Gas Car, with others",gasoline,0,,2585,BTU/PMT,157.2,lb_CO2/MMBTU -"E-car, drove alone",electric,0,0.25,0.25,kWH/PMT,1166,lb_CO2/MWH -"E-car, with others",electric,0,0.125,0.125,kWH/PMT,1166,lb_CO2/MWH -Taxi/Uber/Lyft,gasoline,0,,7214,BTU/PMT,157.2,lb_CO2/MMBTU -Bus,diesel,0,,4560,BTU/PMT,161.3,lb_CO2/MMBTU -Free Shuttle,diesel,0,,4560,BTU/PMT,161.3,lb_CO2/MMBTU -Train,electric,0,0.37,0.37,kWH/PMT,1166,lb_CO2/MWH -Scooter share,electric,0.0041,0.027,0.027,kWH/PMT,1166,lb_CO2/MWH -E-bike,electric,0,0.022,0.022,kWH/PMT,1166,lb_CO2/MWH -Bikeshare,human_powered,0.09,0,0,kWH/PMT,1166,lb_CO2/MWH -Walk,human_powered,0,,0,,0,0 -Skate board,human_powered,0,,0,,0,0 -Regular Bike,human_powered,0,,0,,0,0 -Not a Trip,none,0,,0,,0,0 -No Travel,none,0,,0,,0,0 diff --git a/viz_scripts/auxiliary_files/mode_labels.csv b/viz_scripts/auxiliary_files/mode_labels.csv deleted file mode 100644 index 9397d75..0000000 --- a/viz_scripts/auxiliary_files/mode_labels.csv +++ /dev/null @@ -1,32 +0,0 @@ -replaced_mode,mode_confirm,mode_clean -drove_alone,drove_alone,"Gas Car, drove alone" -e_car_drove_alone,e_car_drove_alone,"E-car, drove alone" -work_vehicle,work_vehicle,"Gas Car, drove alone" -bus,bus,Bus -train,train,Train -free_shuttle,free_shuttle,Free Shuttle -"train,_bus and walk","train,_bus and walk",Train -train_and pilot e-bike,train_and pilot e-bike,Train -taxi,taxi,Taxi/Uber/Lyft -friend_picked me up,friend_picked me up,"Gas Car, with others" -carpool_w/ friend to work,carpool_w/ friend to work,"Gas Car, with others" -friend_carpool to work,friend_carpool to work,"Gas Car, with others" -carpool_to work,carpool_to work,"Gas Car, with others" -friend/co_worker carpool,friend/co_worker carpool,"Gas Car, with others" -carpool_to lunch,carpool_to lunch,"Gas Car, with others" -carpool,carpool,"Gas Car, with others" -carpool_for lunch,carpool_for lunch,"Gas Car, with others" -carpool_lunch,carpool_lunch,"Gas Car, with others" -shared_ride,shared_ride,"Gas Car, with others" -e_car_shared_ride,e_car_shared_ride,"E-car, with others" -bikeshare,bikeshare,Bikeshare -scootershare,scootershare,Scooter share -pilot_ebike,pilot_ebike,E-bike -e-bike,e-bike,E-bike -walk,walk,Walk -skateboard,skateboard,Skate board -bike,bike,Regular Bike -the_friend who drives us to work was running errands after the shift before dropping me off. not a trip of mine.,the_friend who drives us to work was running errands after the shift before dropping me off. not a trip of mine.,Not a Trip -not_a_trip,not_a_trip,Not a Trip -no_travel,,No Travel -same_mode,,Same Mode diff --git a/viz_scripts/auxiliary_files/purpose_labels.csv b/viz_scripts/auxiliary_files/purpose_labels.csv deleted file mode 100644 index 298e8aa..0000000 --- a/viz_scripts/auxiliary_files/purpose_labels.csv +++ /dev/null @@ -1,47 +0,0 @@ -purpose_confirm,bin_purpose -work_travel,Work -work,Work -home,Home -meal,Meal -shopping,Shopping -personal_med,Personal/Medical -exercise,Recreation/Exercise -transit_transfer,Transit transfer -pick_drop,Pick-up/Drop off -entertainment,Entertainment/Social -car_mechanic,Other -school,School -revisado_bike,Other -placas_de carro,Other -community_walk,Entertainment/Social -gardening,Entertainment/Social -visiting,Entertainment/Social -church,Religious -community_garden,Entertainment/Social -community_meeting,Entertainment/Social -visit_a friend,Entertainment/Social -aseguranza,Other -meeting_bike,Entertainment/Social -gas_station,Other -iglesia,Religious -curso,School -mi_hija recién aliviada,Entertainment/Social -servicio_comunitario,Entertainment/Social -pago_de aseguranza,Other -grupo_comunitario,Entertainment/Social -caminata_comunitaria,Entertainment/Social -bank,Other -religious,Religious -no_travel,No travel -work_break - short walk,Entertainment/Social -work_- lunch break,Meal -friend_was running errands before dropping me off after work,Other -"multiple_errands, etc.",Other -lunch_break,Meal -break,Entertainment/Social -pet,Entertainment/Social -recording_performance at park,Entertainment/Social -not_a trip,not_a_trip -on_the way home,Home -other,Other -nan,nan \ No newline at end of file diff --git a/viz_scripts/bin/generate_plots.py b/viz_scripts/bin/generate_plots.py deleted file mode 100644 index 966e5fd..0000000 --- a/viz_scripts/bin/generate_plots.py +++ /dev/null @@ -1,87 +0,0 @@ -import nbclient -import nbformat -import nbparameterise as nbp -import argparse -import arrow -import requests -import json -import os -import sys - - -# Configuration settings to use for all generated plots by this instance -# This could also be specified as a parser argument, if we want to generate plots for all programs from one instance -# Full list is at -# https://github.com/e-mission/nrel-openpath-deploy-configs/tree/main/configs -STUDY_CONFIG = os.getenv('STUDY_CONFIG', "stage-program") - -parser = argparse.ArgumentParser(prog="generate_metrics") -parser.add_argument("plot_notebook", help="the notebook the generates the plot") -parser.add_argument("program", help="the program for the plot") -parser.add_argument("-d", "--date", nargs=2, type=int, - help="the year and month for the plot. Default: all previous days and months since program start + one combined for the program as a whole") - -args = parser.parse_args() - -# Read and use parameters from the unified config file on the e-mission Github page -download_url = "https://raw.githubusercontent.com/e-mission/nrel-openpath-deploy-configs/main/configs/" + STUDY_CONFIG + ".nrel-op.json" -print("About to download config from %s" % download_url) -r = requests.get(download_url) -if r.status_code is not 200: - print(f"Unable to download study config, status code: {r.status_code}") - sys.exit(1) -else: - dynamic_config = json.loads(r.text) - print(f"Successfully downloaded config with version {dynamic_config['version']} "\ - f"for {dynamic_config['intro']['translated_text']['en']['deployment_name']} "\ - f"and data collection URL {dynamic_config['server']['connectUrl']}") - -if dynamic_config['intro']['program_or_study'] == 'program': - mode_studied = dynamic_config['intro']['mode_studied'] -else: - mode_studied = None - -if args.date is None: - start_date = arrow.get(int(dynamic_config['intro']['start_year']), - int(dynamic_config['intro']['start_month']), 1) - end_date = arrow.get() -else: - start_date = arrow.get() - end_date = start_date - -compute_range = list(arrow.Arrow.range('month', start_date, end_date)) - -print(f"Running at {arrow.get()} with args {args} for range {compute_range[0], compute_range[-1]}") - -with open(args.plot_notebook) as f: - nb = nbformat.read(f, as_version=4) - -# Get a list of Parameter objects -orig_parameters = nbp.extract_parameters(nb) - -# We will be recomputing values for multiple months -# So let's make a common function to invoke -def compute_for_date(month, year): - params = nbp.parameter_values( - orig_parameters, - year=year, - month=month, - program=args.program, - study_type=dynamic_config['intro']['program_or_study'], - mode_of_interest=mode_studied, - include_test_users=dynamic_config.get('metrics', {}).get('include_test_users', False)) - - print(f"Running at {arrow.get()} with params {params}") - - # Make a notebook object with these definitions - new_nb = nbp.replace_definitions(nb, params, execute=False) - - # Execute the notebook with the new parameters - nbclient.execute(new_nb) - -# Compute the overall metrics -compute_for_date(None, None) - -# Compute for every month until now -for month_year in compute_range: - compute_for_date(month_year.month, month_year.year) diff --git a/viz_scripts/bin/update_mappings.py b/viz_scripts/bin/update_mappings.py deleted file mode 100644 index 906bfb2..0000000 --- a/viz_scripts/bin/update_mappings.py +++ /dev/null @@ -1,16 +0,0 @@ -# In a docker setup, run as -# sudo run_from_host/update_mappings.sh -# -# -import nbclient -import nbformat -import argparse - -parser = argparse.ArgumentParser(prog="update_mappings") -parser.add_argument("mapping_notebook", help="the notebook the stores the mappings") - -args = parser.parse_args() - -with open(args.mapping_notebook) as f: - nb = nbformat.read(f, as_version=4) - nbclient.execute(nb) diff --git a/viz_scripts/denver_weather_data.csv b/viz_scripts/denver_weather_data.csv deleted file mode 100644 index 77def6f..0000000 --- a/viz_scripts/denver_weather_data.csv +++ /dev/null @@ -1,26329 +0,0 @@ -time,temperature_2m (°F),relative_humidity_2m (%),dew_point_2m (°F),rain (inch),snowfall (inch),wind_speed_10m (mp/h),wind_gusts_10m (mp/h) -2020-01-01T00:00,24.1,56,10.8,0,0,7.3,15 -2020-01-01T01:00,24,58,11.3,0,0,6,12.5 -2020-01-01T02:00,26.7,57,13.5,0,0,7.7,14.1 -2020-01-01T03:00,27.1,57,13.7,0,0,6.5,13.2 -2020-01-01T04:00,24.9,61,13.3,0,0,5.6,11.2 -2020-01-01T05:00,30.8,57,17.3,0,0,8.9,8.9 -2020-01-01T06:00,28.7,61,16.9,0,0,10.6,17.7 -2020-01-01T07:00,27.1,68,18,0,0,5.5,17.4 -2020-01-01T08:00,30.7,67,21.1,0,0,5.6,9.8 -2020-01-01T09:00,33.6,65,23.3,0,0,5.1,9.2 -2020-01-01T10:00,38.3,59,25.3,0,0,8.1,13.2 -2020-01-01T11:00,42,54,26.7,0,0,9.5,16.8 -2020-01-01T12:00,39.5,67,29.3,0,0,5.1,16.8 -2020-01-01T13:00,38.3,72,30,0.008,0,6,42.1 -2020-01-01T14:00,39,75,31.6,0,0,5.8,10.1 -2020-01-01T15:00,42.8,59,29.7,0,0,3.2,9.4 -2020-01-01T16:00,38.1,65,27.5,0,0,7,8.5 -2020-01-01T17:00,31.2,67,21.5,0,0,7.4,11.2 -2020-01-01T18:00,30,70,21.6,0,0,6.3,10.5 -2020-01-01T19:00,29.3,73,21.6,0,0,8.2,13.9 -2020-01-01T20:00,26.9,71,18.9,0,0,6.7,13.6 -2020-01-01T21:00,23.7,65,13.7,0,0,10.4,13.2 -2020-01-01T22:00,24.5,58,11.9,0,0,10.1,13.2 -2020-01-01T23:00,34.7,43,14.4,0,0,6.5,12.8 -2020-01-02T00:00,32.2,47,14.4,0,0,3.6,8.5 -2020-01-02T01:00,28.3,52,13.1,0,0,6.9,8.5 -2020-01-02T02:00,26.1,51,10.6,0,0,8.9,11.2 -2020-01-02T03:00,18.3,57,5.6,0,0,12.2,14.8 -2020-01-02T04:00,32.3,36,8.1,0,0,4.3,16.1 -2020-01-02T05:00,24.9,69,16.1,0,0,6,10.5 -2020-01-02T06:00,24.9,63,14.1,0,0,7.5,11.2 -2020-01-02T07:00,22.2,72,14.5,0,0,8.4,12.1 -2020-01-02T08:00,20.1,73,12.9,0,0,7.9,11 -2020-01-02T09:00,30.7,62,19.3,0,0,5.3,11 -2020-01-02T10:00,36.2,53,20.9,0,0,6.5,12.1 -2020-01-02T11:00,37.7,50,20.8,0,0,5.7,12.5 -2020-01-02T12:00,38.6,51,22.1,0,0,3.4,11.2 -2020-01-02T13:00,42.6,30,13.2,0,0,4.8,11.6 -2020-01-02T14:00,42.4,30,13.4,0,0,8.9,15.7 -2020-01-02T15:00,39.8,35,14.5,0,0,11.6,19.7 -2020-01-02T16:00,36.4,39,13.8,0,0,10.7,19.9 -2020-01-02T17:00,33.9,52,18.3,0,0,4.8,17 -2020-01-02T18:00,29.7,62,18.1,0,0,3.8,5.6 -2020-01-02T19:00,30.1,53,15.2,0,0,1.8,6.3 -2020-01-02T20:00,26.3,61,14.6,0,0,4.6,5.4 -2020-01-02T21:00,29.2,46,10.9,0,0,9.6,13.2 -2020-01-02T22:00,28.2,48,11.2,0,0,6,17.4 -2020-01-02T23:00,24.3,57,11.3,0,0,4.7,9.4 -2020-01-03T00:00,22.6,58,10,0,0,4.1,6.7 -2020-01-03T01:00,22.6,53,8.2,0,0,4.3,6.9 -2020-01-03T02:00,22.8,51,7.3,0,0,3.6,6.9 -2020-01-03T03:00,22.3,51,6.9,0,0,4.3,6.3 -2020-01-03T04:00,22.6,49,6.4,0,0,3.3,6.5 -2020-01-03T05:00,24.9,49,8.5,0,0,6.4,5.6 -2020-01-03T06:00,25.3,50,9.1,0,0,5.3,8.3 -2020-01-03T07:00,23,55,9.2,0,0,9.8,14.3 -2020-01-03T08:00,23,53,8.3,0,0,9.6,14.8 -2020-01-03T09:00,28.8,44,9.7,0,0,9.4,16.3 -2020-01-03T10:00,34.2,38,10.9,0,0,8.4,16.1 -2020-01-03T11:00,40.2,29,10.6,0,0,7.1,15.7 -2020-01-03T12:00,42.5,27,11,0,0,0.9,14.1 -2020-01-03T13:00,43.3,31,14.7,0,0,2.7,8.5 -2020-01-03T14:00,43.3,33,16.3,0,0,5.8,10.3 -2020-01-03T15:00,41,42,19.9,0,0,9.1,16.6 -2020-01-03T16:00,37,49,19.7,0,0,5.9,14.3 -2020-01-03T17:00,42.6,34,16.4,0,0,4.8,8.7 -2020-01-03T18:00,36.5,46,17.9,0,0,3.2,6.5 -2020-01-03T19:00,32,60,19.6,0,0,4.1,5.6 -2020-01-03T20:00,32.1,60,19.7,0,0,3.6,6 -2020-01-03T21:00,31.2,63,20.1,0,0,4.5,9.4 -2020-01-03T22:00,30.7,64,19.9,0,0,1.6,7.6 -2020-01-03T23:00,30.3,66,20.2,0,0,2.7,4.5 -2020-01-04T00:00,29.8,67,20.1,0,0,5.9,9.6 -2020-01-04T01:00,29.8,64,19.1,0,0,3.7,9.6 -2020-01-04T02:00,28.6,67,18.9,0,0,5.2,6 -2020-01-04T03:00,28.2,66,18.1,0,0,4.4,6 -2020-01-04T04:00,29.9,59,17.5,0,0,5.5,8.9 -2020-01-04T05:00,29.6,63,18.5,0,0,5.1,8.9 -2020-01-04T06:00,30.2,61,18.3,0,0,4.6,8.3 -2020-01-04T07:00,29.9,61,18.2,0,0,7.4,8.7 -2020-01-04T08:00,33.7,53,18.5,0,0,5.9,9.2 -2020-01-04T09:00,40.9,44,20.4,0,0,5.9,9.2 -2020-01-04T10:00,45.2,45,25.3,0,0,7.9,13.9 -2020-01-04T11:00,49.6,41,26.6,0,0,8.6,15.2 -2020-01-04T12:00,50.6,39,26.3,0,0,10.3,18.1 -2020-01-04T13:00,53.1,35,26.2,0,0,10.3,18.1 -2020-01-04T14:00,54.4,33,26.2,0,0,7.6,18.1 -2020-01-04T15:00,54.1,38,29,0,0,3.2,13.2 -2020-01-04T16:00,49.7,49,31.6,0,0,4.5,5.6 -2020-01-04T17:00,50.5,43,28.8,0,0,1.6,5.6 -2020-01-04T18:00,35.5,73,27.8,0,0,5.6,6.5 -2020-01-04T19:00,39.7,55,24.8,0,0,3.8,8.1 -2020-01-04T20:00,38.7,54,23.4,0,0,4,5.4 -2020-01-04T21:00,35.3,53,19.8,0,0,6.5,9.8 -2020-01-04T22:00,39.2,39,16.3,0,0,9.8,15 -2020-01-04T23:00,43.2,30,13.6,0,0,15.2,24.2 -2020-01-05T00:00,44.2,29,13.7,0,0,22.1,36.2 -2020-01-05T01:00,43.6,30,14.1,0,0,22.2,38.9 -2020-01-05T02:00,41.7,31,13.2,0,0,6.4,37.1 -2020-01-05T03:00,32.6,55,18.1,0,0,9.1,13.4 -2020-01-05T04:00,27.7,71,19.6,0,0,5.6,16.1 -2020-01-05T05:00,25.9,73,18.3,0,0,6.3,9.2 -2020-01-05T06:00,25.9,67,16.4,0,0,5.4,10.1 -2020-01-05T07:00,24.5,68,15.6,0,0,4.8,8.7 -2020-01-05T08:00,26.8,61,15.2,0,0,2.9,7.2 -2020-01-05T09:00,31.3,49,14.5,0,0,4.1,8.7 -2020-01-05T10:00,36.3,43,16,0,0,5.6,10.7 -2020-01-05T11:00,38.5,37,14.4,0,0,9.2,17.4 -2020-01-05T12:00,41.3,35,15.7,0,0,7.2,17.7 -2020-01-05T13:00,43.5,36,18.1,0,0,4.1,15.2 -2020-01-05T14:00,44.2,36,18.9,0,0,4.2,11 -2020-01-05T15:00,43.9,38,19.7,0,0,6.6,12.3 -2020-01-05T16:00,39.9,48,21.6,0,0,10.3,16.3 -2020-01-05T17:00,30.9,60,18.8,0,0,11.1,18.8 -2020-01-05T18:00,29.1,61,17.4,0,0,5.6,18.3 -2020-01-05T19:00,26,68,17,0,0,6.5,8.9 -2020-01-05T20:00,25.4,67,16.1,0,0,2.9,7.8 -2020-01-05T21:00,27.6,58,14.9,0,0,2.4,4 -2020-01-05T22:00,28,54,13.4,0,0,1.4,5.4 -2020-01-05T23:00,23.4,66,13.7,0,0,3.4,5.6 -2020-01-06T00:00,22.6,72,14.8,0,0,2.9,7.2 -2020-01-06T01:00,23.1,68,14.1,0,0,5.4,7.4 -2020-01-06T02:00,30.4,41,9.6,0,0,12.3,18.3 -2020-01-06T03:00,30.9,35,6.3,0,0,15.7,25.9 -2020-01-06T04:00,30.2,33,4.2,0,0,16.4,27.5 -2020-01-06T05:00,23.8,46,6.1,0,0,7.1,27.3 -2020-01-06T06:00,23.4,52,8.2,0,0,3.8,9.2 -2020-01-06T07:00,23,49,6.5,0,0,6.2,10.1 -2020-01-06T08:00,24.6,45,6.1,0,0,6.1,10.3 -2020-01-06T09:00,29.2,39,7.3,0,0,6.8,12.1 -2020-01-06T10:00,33.7,35,8.9,0,0,6.3,13.9 -2020-01-06T11:00,37.9,29,8.2,0,0,6.5,15 -2020-01-06T12:00,40.1,23,5.5,0,0,14.9,23.9 -2020-01-06T13:00,39.9,24,6.4,0,0,14.1,27.3 -2020-01-06T14:00,40.2,25,6.7,0,0,10.8,24.8 -2020-01-06T15:00,40.1,25,6.6,0,0,5.3,19.2 -2020-01-06T16:00,36.9,38,13.6,0,0,4.2,15.7 -2020-01-06T17:00,29.4,42,9,0,0,7.9,7.4 -2020-01-06T18:00,34.8,31,7.3,0,0,3.4,9.2 -2020-01-06T19:00,26.4,47,8.7,0,0,4.7,7.2 -2020-01-06T20:00,24.1,54,9.9,0,0,6.1,8.1 -2020-01-06T21:00,23.9,54,9.5,0,0,6.6,8.3 -2020-01-06T22:00,25.3,47,8,0,0,5.8,8.3 -2020-01-06T23:00,26.2,42,6.4,0,0,9.7,15 -2020-01-07T00:00,26.2,43,7,0,0,10.9,17.4 -2020-01-07T01:00,25.9,46,7.8,0,0,11.1,17.4 -2020-01-07T02:00,23.6,50,7.9,0,0,9.7,18.6 -2020-01-07T03:00,25.5,47,8.2,0,0,2.7,14.8 -2020-01-07T04:00,23.2,54,8.9,0,0,3.6,5.6 -2020-01-07T05:00,24.2,61,12.5,0,0,5.9,7.6 -2020-01-07T06:00,26.1,58,13.3,0,0,4.5,7.2 -2020-01-07T07:00,26.2,57,13.2,0,0,5.2,7.8 -2020-01-07T08:00,28,56,14.4,0,0,3.7,7.6 -2020-01-07T09:00,33.2,49,15.9,0,0,5.7,10.1 -2020-01-07T10:00,39.2,41,17.7,0,0,6.7,13.4 -2020-01-07T11:00,44.9,34,18.5,0,0,5.2,13.4 -2020-01-07T12:00,48.2,31,18.9,0,0,6,13.2 -2020-01-07T13:00,50,28,18.1,0,0,6.9,14.1 -2020-01-07T14:00,50.9,27,18.2,0,0,6.6,14.3 -2020-01-07T15:00,50.5,29,19.8,0,0,5.9,13.2 -2020-01-07T16:00,45.1,55,29.9,0,0,4.5,10.1 -2020-01-07T17:00,36.8,59,23.6,0,0,7.4,5.4 -2020-01-07T18:00,34.7,60,22.4,0,0,4.3,8.9 -2020-01-07T19:00,30.7,67,21,0,0,5,8.9 -2020-01-07T20:00,27.6,69,18.6,0,0,4.4,7.6 -2020-01-07T21:00,26.4,66,16.6,0,0,5.5,7.2 -2020-01-07T22:00,25.6,64,15.2,0,0,6.7,8.3 -2020-01-07T23:00,25.5,62,14.5,0,0,6.5,8.1 -2020-01-08T00:00,25.4,62,14.3,0,0,6,8.1 -2020-01-08T01:00,25.8,62,14.6,0,0,5.9,7.6 -2020-01-08T02:00,25.4,62,14.2,0,0,6.2,7.8 -2020-01-08T03:00,25.9,58,13.3,0,0,4.5,7.6 -2020-01-08T04:00,25.9,57,12.7,0,0,4.3,6.7 -2020-01-08T05:00,24.5,61,13,0,0,6.3,6.7 -2020-01-08T06:00,25.2,59,12.7,0,0,6.6,7.8 -2020-01-08T07:00,25.8,55,11.9,0,0,6.2,8.1 -2020-01-08T08:00,29.5,47,11.5,0,0,4.5,7.8 -2020-01-08T09:00,35.6,42,14.5,0,0,5.8,10.5 -2020-01-08T10:00,42.6,35,16.6,0,0,6.6,12.8 -2020-01-08T11:00,47.5,29,16.9,0,0,9.1,16.6 -2020-01-08T12:00,51.2,25,16.5,0,0,10.6,19 -2020-01-08T13:00,53,24,16.7,0,0,13.5,23.3 -2020-01-08T14:00,53.2,23,16.5,0,0,12.1,23.7 -2020-01-08T15:00,52.3,27,19,0,0,8,21 -2020-01-08T16:00,44.9,51,27.6,0,0,6.3,12.8 -2020-01-08T17:00,43.5,31,14.5,0,0,8.3,7.6 -2020-01-08T18:00,36.6,40,14.4,0,0,5.9,13.9 -2020-01-08T19:00,35.7,41,14.5,0,0,1.4,9.4 -2020-01-08T20:00,33.4,51,17.2,0,0,1.4,4 -2020-01-08T21:00,28.5,50,12.4,0,0,5.2,8.1 -2020-01-08T22:00,28.8,43,8.9,0,0,6,9.4 -2020-01-08T23:00,27.7,48,10.5,0,0,6,11 -2020-01-09T00:00,26,55,11.9,0,0,5,9.8 -2020-01-09T01:00,23.4,65,13.2,0,0,6.5,8.3 -2020-01-09T02:00,22.3,68,13.4,0,0,3.2,8.1 -2020-01-09T03:00,22.5,67,13.2,0,0,4.3,5.4 -2020-01-09T04:00,24.6,56,11.3,0,0,2.3,5.4 -2020-01-09T05:00,22.6,63,12.1,0,0,3.5,4.7 -2020-01-09T06:00,23.2,63,12.5,0,0,3.4,4.7 -2020-01-09T07:00,24.6,58,12,0,0,3.9,5.8 -2020-01-09T08:00,25.3,56,11.9,0,0,4.7,6.3 -2020-01-09T09:00,30.7,46,12.6,0,0,1.6,7.6 -2020-01-09T10:00,35.2,40,13.4,0,0,3.5,8.7 -2020-01-09T11:00,37.9,33,11.3,0,0,4.3,11.6 -2020-01-09T12:00,40.1,29,10.6,0,0,1.6,11.2 -2020-01-09T13:00,40.7,29,11.1,0,0,4.1,11 -2020-01-09T14:00,41.3,28,10.9,0,0,6.9,14.1 -2020-01-09T15:00,40.9,29,10.9,0,0,7.7,15 -2020-01-09T16:00,38.7,46,19.5,0,0,2.8,13.9 -2020-01-09T17:00,36.2,49,18.9,0,0,5.1,8.7 -2020-01-09T18:00,35.6,49,18.1,0,0,4,7.4 -2020-01-09T19:00,31.3,59,18.8,0,0,4.1,6.3 -2020-01-09T20:00,30.8,66,20.9,0,0,4.7,6 -2020-01-09T21:00,31.1,68,21.9,0,0.028,0.4,5.6 -2020-01-09T22:00,30,72,22.2,0,0.028,1.8,2.9 -2020-01-09T23:00,27.5,79,21.9,0,0,3.4,4.7 -2020-01-10T00:00,29.1,72,21.4,0,0,1,4 -2020-01-10T01:00,27.2,76,20.8,0,0,0.8,1.6 -2020-01-10T02:00,22.2,85,18.4,0,0,4.6,4.9 -2020-01-10T03:00,22.3,73,15,0,0,4.5,6.3 -2020-01-10T04:00,21.7,67,12.3,0,0,3.3,6 -2020-01-10T05:00,23.5,58,10.9,0,0,4.7,4.5 -2020-01-10T06:00,23.5,63,12.9,0,0,5.2,7.4 -2020-01-10T07:00,21.9,67,12.7,0,0.028,5.6,7.6 -2020-01-10T08:00,25.1,59,12.9,0,0.028,1.6,6.7 -2020-01-10T09:00,28.3,55,14.1,0,0,3.2,7.4 -2020-01-10T10:00,30.7,48,13.5,0,0,5.4,12.1 -2020-01-10T11:00,32.2,42,11.8,0,0,7.5,15.7 -2020-01-10T12:00,32.9,41,11.5,0,0,8.2,17.2 -2020-01-10T13:00,32.1,43,12.3,0,0,8.3,17.2 -2020-01-10T14:00,31.6,46,13,0,0,7.7,17.4 -2020-01-10T15:00,30.8,44,11.6,0,0,6.5,15.9 -2020-01-10T16:00,29.1,44,9.9,0,0,5.6,13.2 -2020-01-10T17:00,22.6,58,10,0,0,6,9.4 -2020-01-10T18:00,19.9,65,10.1,0,0,3.2,9.8 -2020-01-10T19:00,18.2,71,10.5,0,0,3.6,5.4 -2020-01-10T20:00,18.1,70,10,0,0,3.2,4.7 -2020-01-10T21:00,18.3,70,10.2,0,0,1.8,3.6 -2020-01-10T22:00,18,71,10,0,0,3,4.3 -2020-01-10T23:00,17.9,72,10.4,0,0,3.3,5.6 -2020-01-11T00:00,17.7,74,10.8,0,0,2.8,5.6 -2020-01-11T01:00,19.2,70,10.9,0,0,0.5,3.8 -2020-01-11T02:00,17.7,74,10.8,0,0,3,3.6 -2020-01-11T03:00,16.6,72,9.2,0,0,2.6,3.4 -2020-01-11T04:00,15.8,65,6.1,0,0,1.8,2.9 -2020-01-11T05:00,15.1,47,-1.7,0,0,2.5,2.7 -2020-01-11T06:00,16.2,38,-5.1,0,0,2.7,6 -2020-01-11T07:00,16.8,37,-4.9,0,0,1.7,4.3 -2020-01-11T08:00,18.6,41,-1.5,0,0,5.6,9.4 -2020-01-11T09:00,19.5,48,2.8,0,0,5,11 -2020-01-11T10:00,21.9,39,0.9,0,0,3.3,12.5 -2020-01-11T11:00,26.3,32,0.4,0,0,4.1,12.5 -2020-01-11T12:00,31.3,26,0.6,0,0,5.4,13.2 -2020-01-11T13:00,35.9,23,1.4,0,0,6.3,14.5 -2020-01-11T14:00,38.9,21,2.7,0,0,5.7,14.5 -2020-01-11T15:00,39.5,22,3.7,0,0,3.2,12.8 -2020-01-11T16:00,34.4,29,5.1,0,0,4.1,7.8 -2020-01-11T17:00,30.5,54,15.6,0,0,6.2,5.8 -2020-01-11T18:00,32.5,54,17.7,0,0,4,7.6 -2020-01-11T19:00,30.2,66,20.1,0,0.028,4.9,6.7 -2020-01-11T20:00,30.7,58,17.5,0,0,4.5,6.7 -2020-01-11T21:00,30.7,53,15.4,0,0,5.5,8.9 -2020-01-11T22:00,26.8,60,14.6,0,0,4.9,8.9 -2020-01-11T23:00,24,62,13,0,0,4.3,7.8 -2020-01-12T00:00,21.9,63,11.2,0,0,3.6,7.4 -2020-01-12T01:00,19.9,64,9.7,0,0,3.8,5.8 -2020-01-12T02:00,19.9,62,9.1,0,0,3.8,6 -2020-01-12T03:00,19.5,57,6.9,0,0,4.4,7.6 -2020-01-12T04:00,20.2,52,5.5,0,0,4,7.6 -2020-01-12T05:00,19.7,53,5.5,0,0,2.8,8.9 -2020-01-12T06:00,20.7,49,4.6,0,0,3.6,5.6 -2020-01-12T07:00,19.9,47,2.8,0,0,6,9.6 -2020-01-12T08:00,20.9,43,1.8,0,0,8.1,12.1 -2020-01-12T09:00,28,31,1,0,0,6.5,13 -2020-01-12T10:00,35.2,23,1.3,0,0,5.8,12.5 -2020-01-12T11:00,37.5,21,1.5,0,0,3.8,12.5 -2020-01-12T12:00,39.7,18,-0.8,0,0,2.6,11 -2020-01-12T13:00,41.1,15,-3.5,0,0,2.5,9.6 -2020-01-12T14:00,41.8,14,-4.1,0,0,6.5,13 -2020-01-12T15:00,41,16,-2.4,0,0,7.1,13.9 -2020-01-12T16:00,37.3,23,3.1,0,0,10.3,17 -2020-01-12T17:00,33.8,34,8.3,0,0,6.5,17 -2020-01-12T18:00,31.3,37,7.7,0,0,7.6,10.3 -2020-01-12T19:00,25.3,45,7,0,0,3.2,8.9 -2020-01-12T20:00,21.7,58,9.1,0,0,2,4.7 -2020-01-12T21:00,20.1,62,9.3,0,0,4.7,5.4 -2020-01-12T22:00,19.8,60,8.1,0,0,4.8,6.3 -2020-01-12T23:00,19.6,57,7,0,0,5.1,5.8 -2020-01-13T00:00,20.8,50,5.1,0,0,4.4,6.7 -2020-01-13T01:00,19,53,4.6,0,0,4.5,6.7 -2020-01-13T02:00,21.1,47,4.2,0,0,3.8,6.3 -2020-01-13T03:00,19.5,48,3,0,0,4.6,6.3 -2020-01-13T04:00,19.6,46,2.2,0,0,4.3,6.3 -2020-01-13T05:00,19.9,46,2.6,0,0,6,6.5 -2020-01-13T06:00,19,47,2,0,0,4.1,7.4 -2020-01-13T07:00,18.1,49,1.9,0,0,4.7,5.8 -2020-01-13T08:00,21.6,42,2,0,0,3.2,6.3 -2020-01-13T09:00,28,32,2.1,0,0,0.8,5.6 -2020-01-13T10:00,32.9,27,2.3,0,0,1.3,7.6 -2020-01-13T11:00,37.6,23,3.3,0,0,1.6,7.8 -2020-01-13T12:00,40.1,22,3.8,0,0,5.3,12.8 -2020-01-13T13:00,38.9,24,5,0,0,8.1,15 -2020-01-13T14:00,40.3,25,7.3,0,0,6,17.4 -2020-01-13T15:00,41.8,23,6.8,0,0,1.8,12.5 -2020-01-13T16:00,38.9,23,4.3,0,0,5.1,7.8 -2020-01-13T17:00,29.7,45,10.7,0,0,7,10.5 -2020-01-13T18:00,32.5,41,11.4,0,0,2.2,7.8 -2020-01-13T19:00,23.5,61,11.9,0,0,6.5,7.8 -2020-01-13T20:00,24,60,12.1,0,0,4.9,8.1 -2020-01-13T21:00,25.4,50,9.1,0,0,7,11.2 -2020-01-13T22:00,24.4,48,7.3,0,0,6,11.2 -2020-01-13T23:00,23.4,51,8,0,0,6.5,8.7 -2020-01-14T00:00,23.6,52,8.6,0,0,5.2,8.1 -2020-01-14T01:00,22.6,53,7.9,0,0,5.5,6.5 -2020-01-14T02:00,21.7,54,7.4,0,0,5.6,7.4 -2020-01-14T03:00,21.3,54,7.1,0,0,5.5,6.9 -2020-01-14T04:00,22.4,50,6.5,0,0,4.2,6.7 -2020-01-14T05:00,21.2,51,5.7,0,0,5.4,7.2 -2020-01-14T06:00,20.9,50,5.2,0,0,5.4,7.2 -2020-01-14T07:00,21.2,49,4.9,0,0,5.6,6.7 -2020-01-14T08:00,25.5,41,4.9,0,0,3.7,7.6 -2020-01-14T09:00,35.3,27,5,0,0,3.5,7.2 -2020-01-14T10:00,45.5,19,5.6,0,0,6.9,12.3 -2020-01-14T11:00,51.3,16,6.3,0,0,14,23.7 -2020-01-14T12:00,52.7,16,7.2,0,0,17.7,30.2 -2020-01-14T13:00,52.9,16,8,0,0,19.2,32.9 -2020-01-14T14:00,53.1,17,9.8,0,0,18.4,32.9 -2020-01-14T15:00,52.3,21,13.7,0,0,15.4,30.6 -2020-01-14T16:00,47.8,27,15.1,0,0,7.1,25.5 -2020-01-14T17:00,37.3,34,11.4,0,0,2.7,11.6 -2020-01-14T18:00,32.3,44,12.7,0,0,2.7,3.4 -2020-01-14T19:00,26.7,59,14.1,0,0,4.4,6.7 -2020-01-14T20:00,24.9,65,14.8,0,0,4.2,6.7 -2020-01-14T21:00,24,66,14.2,0,0,4.5,6.5 -2020-01-14T22:00,24.4,62,13.1,0,0,3.2,6 -2020-01-14T23:00,23.5,61,12.2,0,0,4,5.4 -2020-01-15T00:00,27.6,51,11.8,0,0,2.6,5.1 -2020-01-15T01:00,26.8,57,13.7,0,0,9.3,16.3 -2020-01-15T02:00,23.6,70,15.4,0,0,4,15 -2020-01-15T03:00,23.3,70,14.9,0,0,5.8,6.9 -2020-01-15T04:00,23.5,67,14,0,0,5.2,7.6 -2020-01-15T05:00,23.3,70,14.9,0,0,5,7.4 -2020-01-15T06:00,21.6,74,14.5,0,0,4.8,7.6 -2020-01-15T07:00,22.3,69,13.7,0,0,4.8,7.4 -2020-01-15T08:00,24.4,62,13,0,0,4.5,7.8 -2020-01-15T09:00,28.4,52,13,0,0,4.1,9.6 -2020-01-15T10:00,33.9,40,11.8,0,0,2.9,9.6 -2020-01-15T11:00,40.5,28,10,0,0,4,11.2 -2020-01-15T12:00,44.1,24,9.6,0,0,7.3,14.3 -2020-01-15T13:00,41.8,31,13.3,0,0,15.4,27.3 -2020-01-15T14:00,43.8,30,14,0,0,13.9,27.5 -2020-01-15T15:00,39.3,38,15.9,0,0,16.3,28.6 -2020-01-15T16:00,35.8,47,17.3,0,0,14.3,27.7 -2020-01-15T17:00,30.8,47,13,0,0,9.8,23.9 -2020-01-15T18:00,29.2,47,11.5,0,0,12.3,20.1 -2020-01-15T19:00,26.7,52,11.5,0,0,7.5,19.9 -2020-01-15T20:00,25,58,12.3,0,0,4.7,8.7 -2020-01-15T21:00,26.1,58,13.4,0,0,5.4,6.5 -2020-01-15T22:00,23.6,63,13,0,0,6,8.3 -2020-01-15T23:00,22.8,64,12.6,0,0,4.5,7.6 -2020-01-16T00:00,22.7,61,11.1,0,0,5.7,7.6 -2020-01-16T01:00,22.5,51,7.2,0,0,6.9,8.5 -2020-01-16T02:00,23.6,49,7.1,0,0,5,8.7 -2020-01-16T03:00,22,54,8,0,0,3.8,6.5 -2020-01-16T04:00,21.3,55,7.8,0,0,4.1,6.5 -2020-01-16T05:00,19,56,5.8,0,0,6.7,10.7 -2020-01-16T06:00,17.4,59,5.6,0,0,6.1,10.5 -2020-01-16T07:00,16.7,61,5.7,0,0,5.2,9.4 -2020-01-16T08:00,17.3,61,6.2,0,0,3.5,7.8 -2020-01-16T09:00,20.4,55,6.8,0,0,3.5,9.4 -2020-01-16T10:00,24.9,46,6.8,0,0,3.7,10.7 -2020-01-16T11:00,30.4,36,6.7,0,0,5.1,12.8 -2020-01-16T12:00,34.5,31,7,0,0,7.5,15.7 -2020-01-16T13:00,36.8,29,7.4,0,0,9,17.4 -2020-01-16T14:00,37.8,29,8.3,0,0,9,17.4 -2020-01-16T15:00,36.2,32,9.4,0,0,9.2,17 -2020-01-16T16:00,32.6,39,10.3,0,0,9.4,16.3 -2020-01-16T17:00,24.2,47,6.7,0,0,4.9,15.2 -2020-01-16T18:00,23.4,49,6.9,0,0,5.8,9.2 -2020-01-16T19:00,23.1,50,7.3,0,0,4.9,9.2 -2020-01-16T20:00,23.9,50,7.9,0,0,6.1,9.6 -2020-01-16T21:00,24.4,51,8.7,0,0,4.9,10.1 -2020-01-16T22:00,25.3,50,9.2,0,0,5.6,8.9 -2020-01-16T23:00,24.8,50,8.7,0,0,7.9,13 -2020-01-17T00:00,23.3,52,8.2,0,0,6.1,13 -2020-01-17T01:00,22.8,52,7.9,0,0,4.5,9.8 -2020-01-17T02:00,22,54,8,0,0,5,8.7 -2020-01-17T03:00,21.9,55,8.1,0,0,3,8.1 -2020-01-17T04:00,21.1,57,8.1,0,0,2.6,4.9 -2020-01-17T05:00,21.3,54,7.3,0,0,2.8,4.5 -2020-01-17T06:00,20.9,58,8.3,0,0,5,7.4 -2020-01-17T07:00,20.4,64,10.3,0,0,5.1,6.5 -2020-01-17T08:00,24.9,61,13.4,0,0,4.3,6.3 -2020-01-17T09:00,33.7,46,15.3,0,0,4.9,9.8 -2020-01-17T10:00,45.2,31,16.2,0,0,6.2,12.1 -2020-01-17T11:00,51.7,27,18.5,0,0,13.8,23.9 -2020-01-17T12:00,52.1,21,13.6,0,0,10.5,24.8 -2020-01-17T13:00,52.1,15,6,0,0,12.5,22.4 -2020-01-17T14:00,50.5,19,9.5,0,0,11.6,23.7 -2020-01-17T15:00,47.4,21,9.1,0,0,10.5,21.9 -2020-01-17T16:00,39.7,33,12.9,0,0,19.7,34 -2020-01-17T17:00,35.4,39,12.7,0,0,8.3,33.6 -2020-01-17T18:00,35.2,37,11.4,0,0,9.6,15.9 -2020-01-17T19:00,35,35,10.1,0,0,10.5,20.4 -2020-01-17T20:00,30.8,40,9.3,0,0,7.9,17.2 -2020-01-17T21:00,32.3,35,7.5,0,0,4.5,12.3 -2020-01-17T22:00,30.4,37,7.3,0,0,1.9,6.3 -2020-01-17T23:00,27.5,41,6.8,0,0,6.4,8.7 -2020-01-18T00:00,29.1,36,5.2,0,0,10.3,17.2 -2020-01-18T01:00,26.9,37,3.9,0,0,6.4,16.8 -2020-01-18T02:00,28,35,3.9,0,0,9.7,16.3 -2020-01-18T03:00,22.3,45,4.3,0,0,6.5,15.9 -2020-01-18T04:00,19.8,52,4.8,0,0,5.4,8.1 -2020-01-18T05:00,19.3,54,5.5,0,0,4,6.7 -2020-01-18T06:00,20.9,50,5.3,0,0,3.6,4.9 -2020-01-18T07:00,19,53,4.8,0,0,5.9,6.9 -2020-01-18T08:00,22.9,44,4,0,0,1.9,6.9 -2020-01-18T09:00,27.5,34,2.8,0,0,1.8,6.7 -2020-01-18T10:00,32,26,1,0,0,2.9,9.2 -2020-01-18T11:00,36.4,20,-1.3,0,0,3.4,10.7 -2020-01-18T12:00,39.8,16,-3.2,0,0,1.5,10.7 -2020-01-18T13:00,41.8,14,-4.1,0,0,4.6,11.6 -2020-01-18T14:00,41.8,14,-4.1,0,0,8.4,16.6 -2020-01-18T15:00,42.2,16,-1.2,0,0,8,16.8 -2020-01-18T16:00,38.8,20,1.1,0,0,4.7,14.5 -2020-01-18T17:00,30.5,42,10,0,0,5.7,8.5 -2020-01-18T18:00,27.3,49,10.5,0,0,5.3,8.3 -2020-01-18T19:00,28,47,10.3,0,0,4.6,8.1 -2020-01-18T20:00,28.9,46,10.9,0,0,4.4,5.6 -2020-01-18T21:00,30,45,11.1,0,0,1.7,5.4 -2020-01-18T22:00,28,48,10.9,0,0,2.2,2.5 -2020-01-18T23:00,22.6,58,10,0,0,3.8,4.7 -2020-01-19T00:00,21.5,60,9.9,0,0,3.4,4.5 -2020-01-19T01:00,21,63,10.5,0,0,4.1,5.6 -2020-01-19T02:00,21.1,64,10.8,0,0,3.5,5.4 -2020-01-19T03:00,20.1,67,10.9,0,0,3.9,5.1 -2020-01-19T04:00,20.1,67,10.9,0,0,4.1,5.1 -2020-01-19T05:00,20,65,10.3,0,0,4.7,5.8 -2020-01-19T06:00,19.9,63,9.3,0,0,4.9,5.8 -2020-01-19T07:00,20,60,8.4,0,0,4.3,5.8 -2020-01-19T08:00,22.5,53,7.8,0,0,3.5,5.1 -2020-01-19T09:00,27.3,42,7.3,0,0,2,6.7 -2020-01-19T10:00,33.9,33,7.7,0,0,4.3,10.5 -2020-01-19T11:00,39.9,26,8.1,0,0,6,13.6 -2020-01-19T12:00,43.7,23,8.7,0,0,5.6,13.6 -2020-01-19T13:00,44.8,23,9.1,0,0,4.7,13.4 -2020-01-19T14:00,44.9,23,9.6,0,0,4.3,11.9 -2020-01-19T15:00,44,25,10.4,0,0,5.9,11.2 -2020-01-19T16:00,39.9,31,11.4,0,0,5.1,11.6 -2020-01-19T17:00,31.3,50,14.6,0,0,6.5,8.3 -2020-01-19T18:00,27.8,58,15.1,0,0,5.5,8.7 -2020-01-19T19:00,27.1,61,15.5,0,0,3.8,7.6 -2020-01-19T20:00,25.6,63,14.8,0,0,4.2,5.6 -2020-01-19T21:00,23.6,70,15.4,0,0,4,6 -2020-01-19T22:00,24.2,66,14.5,0,0,5.2,8.7 -2020-01-19T23:00,22.9,64,12.7,0,0,4.5,8.7 -2020-01-20T00:00,21.9,63,11.4,0,0,5.6,6.9 -2020-01-20T01:00,22,59,9.9,0,0,4.6,7.2 -2020-01-20T02:00,21,57,8,0,0,4.6,6.5 -2020-01-20T03:00,20.8,52,6.1,0,0,4.6,6.5 -2020-01-20T04:00,20.6,49,4.6,0,0,4.7,6.5 -2020-01-20T05:00,20.8,43,1.7,0,0,3.7,6.5 -2020-01-20T06:00,21.7,38,0.1,0,0,3,4.5 -2020-01-20T07:00,23.1,34,-1,0,0,1.6,3.6 -2020-01-20T08:00,22.2,35,-1.1,0,0,1.4,1.8 -2020-01-20T09:00,27,28,-1.7,0,0,1.5,6 -2020-01-20T10:00,32.8,21,-2.6,0,0,2.8,8.9 -2020-01-20T11:00,39,16,-3.7,0,0,2.6,9.6 -2020-01-20T12:00,44.5,11,-6.2,0,0,2.7,9.6 -2020-01-20T13:00,48.2,10,-6.7,0,0,2.8,9.8 -2020-01-20T14:00,49.5,10,-4,0,0,3.2,9.4 -2020-01-20T15:00,48.7,12,-1.6,0,0,4.9,9.2 -2020-01-20T16:00,42.4,17,0.3,0,0,4.7,9.4 -2020-01-20T17:00,32.5,31,5.1,0,0,7.6,9.2 -2020-01-20T18:00,31.3,34,5.8,0,0,5.9,9.2 -2020-01-20T19:00,33.6,29,4.4,0,0,5.2,7.6 -2020-01-20T20:00,32.1,32,5.5,0,0,5,6 -2020-01-20T21:00,27.1,46,9.1,0,0,6.6,8.1 -2020-01-20T22:00,32,39,10,0,0,2.9,7.8 -2020-01-20T23:00,31.3,43,11.6,0,0,1.4,3.6 -2020-01-21T00:00,31.1,45,12,0,0,0.5,2.2 -2020-01-21T01:00,31.2,43,11.4,0,0,1.6,2.2 -2020-01-21T02:00,31,41,10,0,0,3.4,3.4 -2020-01-21T03:00,30.1,41,9.2,0,0,4.1,6.9 -2020-01-21T04:00,28,43,8.6,0,0,2.4,6.7 -2020-01-21T05:00,30.5,54,15.6,0,0,2.9,4 -2020-01-21T06:00,31.7,51,15.8,0,0,4.5,5.8 -2020-01-21T07:00,33.4,58,20.2,0,0,4.2,7.4 -2020-01-21T08:00,33.5,63,22.1,0,0,3.5,6.3 -2020-01-21T09:00,37.1,58,23.7,0,0,3.6,5.6 -2020-01-21T10:00,41,53,25.2,0,0,0.2,6 -2020-01-21T11:00,44.2,46,24.7,0,0,4.5,8.9 -2020-01-21T12:00,45.6,42,23.7,0,0,5.7,13 -2020-01-21T13:00,43.7,45,23.9,0,0,2.6,12.5 -2020-01-21T14:00,45.4,44,24.8,0,0,3.4,6.7 -2020-01-21T15:00,44.9,49,26.7,0,0,3.4,7.8 -2020-01-21T16:00,42.7,55,27.6,0,0,3.3,6.3 -2020-01-21T17:00,41.1,53,25.2,0,0,3.5,6.5 -2020-01-21T18:00,35.6,65,25.2,0,0,5.6,6.5 -2020-01-21T19:00,31.3,65,21,0,0,6.1,8.1 -2020-01-21T20:00,35.4,55,20.8,0,0,2.4,7.2 -2020-01-21T21:00,33.1,67,23.4,0,0,4.3,6.5 -2020-01-21T22:00,33.7,72,25.7,0,0,5.2,6.9 -2020-01-21T23:00,33.6,73,25.8,0,0,3.6,6.3 -2020-01-22T00:00,34.6,68,25,0,0,3.4,5.8 -2020-01-22T01:00,35.2,66,24.8,0,0,1.5,4.5 -2020-01-22T02:00,28,83,23.5,0,0,5.4,6 -2020-01-22T03:00,26.9,84,22.6,0,0,6,7.8 -2020-01-22T04:00,28,81,22.7,0,0,5.8,8.1 -2020-01-22T05:00,35.8,55,21,0,0,7.6,7.6 -2020-01-22T06:00,36.2,54,21.2,0,0,6.7,12.8 -2020-01-22T07:00,36.1,57,22.1,0,0,5.6,11.4 -2020-01-22T08:00,34,63,22.6,0,0,4.8,9.2 -2020-01-22T09:00,39.4,53,23.5,0,0,6.8,11.2 -2020-01-22T10:00,46.3,40,23.5,0,0,8.8,15 -2020-01-22T11:00,47,36,21.2,0,0,11,19.5 -2020-01-22T12:00,47.8,32,19,0,0,12.9,23.5 -2020-01-22T13:00,49.6,29,18.2,0,0,10.6,23.5 -2020-01-22T14:00,49.6,30,19.3,0,0,10.1,20.1 -2020-01-22T15:00,48.6,30,18.7,0,0,10,19 -2020-01-22T16:00,45.7,36,20.1,0,0,7.2,17.9 -2020-01-22T17:00,40.6,37,16.5,0,0,6,16.3 -2020-01-22T18:00,43.3,40,20.4,0,0,16.9,26.8 -2020-01-22T19:00,39.3,42,18,0,0,9,28.2 -2020-01-22T20:00,37.4,45,17.9,0,0,5,14.8 -2020-01-22T21:00,33.1,54,18.4,0,0,4.1,6.5 -2020-01-22T22:00,33,55,18.7,0,0,7.1,11.2 -2020-01-22T23:00,32.9,55,18.3,0,0,6.5,12.3 -2020-01-23T00:00,32.4,54,17.6,0,0,6.7,10.7 -2020-01-23T01:00,32.6,46,14.3,0,0,8.6,13.9 -2020-01-23T02:00,31.6,47,13.5,0,0,7.8,14.1 -2020-01-23T03:00,31.6,45,12.7,0,0,8.7,14.1 -2020-01-23T04:00,31.4,40,10,0,0,9.5,16.3 -2020-01-23T05:00,31.5,49,14.5,0,0,1,17 -2020-01-23T06:00,25.8,64,15.2,0,0,6.6,6.9 -2020-01-23T07:00,25.9,59,13.5,0,0,5.8,8.1 -2020-01-23T08:00,28.7,50,12.4,0,0,3.1,7.4 -2020-01-23T09:00,31.8,43,11.8,0,0,3.1,6.7 -2020-01-23T10:00,33.8,41,12.4,0,0,5.5,11.9 -2020-01-23T11:00,35.6,40,13.6,0,0,7.4,15 -2020-01-23T12:00,38.4,38,14.9,0,0,9,17.9 -2020-01-23T13:00,40.3,37,16,0,0,7.1,17.9 -2020-01-23T14:00,42.4,36,17.2,0,0,4.2,15 -2020-01-23T15:00,43.3,37,18.5,0,0,5.8,11.6 -2020-01-23T16:00,41.4,42,19.9,0,0,6.5,12.1 -2020-01-23T17:00,36.1,42,15,0,0,5.5,10.7 -2020-01-23T18:00,35.3,43,14.9,0,0,5.5,10.3 -2020-01-23T19:00,34.7,45,15.6,0,0,3.9,9.2 -2020-01-23T20:00,34,49,17,0,0,3.8,6.3 -2020-01-23T21:00,32.2,56,18.2,0,0,4.1,6.5 -2020-01-23T22:00,29.5,66,19.4,0,0,4.5,7.2 -2020-01-23T23:00,28.5,71,20.3,0,0,3.6,7.2 -2020-01-24T00:00,30.4,67,20.7,0,0,3.3,6.3 -2020-01-24T01:00,30.5,67,20.9,0,0,3.7,5.6 -2020-01-24T02:00,30.7,67,21,0,0,3.9,4.7 -2020-01-24T03:00,30.2,67,20.4,0,0,3.4,5.4 -2020-01-24T04:00,30.4,63,19.4,0,0,3.7,6 -2020-01-24T05:00,29.7,62,18.1,0,0,3.8,5.8 -2020-01-24T06:00,30.8,58,17.9,0,0,2.1,4.7 -2020-01-24T07:00,29,59,16.5,0,0,3.7,5.4 -2020-01-24T08:00,31.1,54,16.3,0,0,7,10.1 -2020-01-24T09:00,37.3,43,16.9,0,0,7.4,13.2 -2020-01-24T10:00,45.1,32,17.2,0,0,4.9,13 -2020-01-24T11:00,49.3,32,20.8,0,0,3.3,11 -2020-01-24T12:00,51.4,31,21.6,0,0,1.2,8.9 -2020-01-24T13:00,52.4,30,22.2,0,0,0.6,6.9 -2020-01-24T14:00,52.8,31,22.9,0,0,2.4,7.6 -2020-01-24T15:00,52.1,32,23.4,0,0,3.5,8.1 -2020-01-24T16:00,48.7,42,26.8,0,0,4,8.1 -2020-01-24T17:00,41.1,50,23.7,0,0,7.1,10.3 -2020-01-24T18:00,40.2,51,23.7,0,0,5.8,8.5 -2020-01-24T19:00,43.9,42,22.4,0,0,3.5,7.2 -2020-01-24T20:00,38.6,55,24,0,0,4.6,4.9 -2020-01-24T21:00,41.1,50,23.8,0,0,2,5.8 -2020-01-24T22:00,40,52,23.9,0,0,1.3,2.7 -2020-01-24T23:00,35.5,65,25,0,0,0.9,2 -2020-01-25T00:00,32.5,74,25.1,0,0,2.5,3.8 -2020-01-25T01:00,30.8,80,25.3,0,0,2.7,4.9 -2020-01-25T02:00,29.6,85,25.7,0,0,3.8,6.7 -2020-01-25T03:00,31.6,78,25.4,0,0,5.4,8.9 -2020-01-25T04:00,30,80,24.7,0,0,5.1,9.2 -2020-01-25T05:00,35.2,61,23.1,0,0,1,8.5 -2020-01-25T06:00,32.3,72,24.3,0,0,3.4,4 -2020-01-25T07:00,32.2,71,23.9,0,0,3.5,4.9 -2020-01-25T08:00,35.2,67,25.2,0,0,1.8,4.7 -2020-01-25T09:00,41,51,24.3,0,0,4.5,7.8 -2020-01-25T10:00,44.8,40,21.7,0,0,3.8,8.5 -2020-01-25T11:00,47.4,34,20.3,0,0,4.5,11 -2020-01-25T12:00,48.9,31,19.4,0,0,4.1,11 -2020-01-25T13:00,50.4,29,19.5,0,0,5.2,12.5 -2020-01-25T14:00,51.5,26,18.1,0,0,8.2,16.1 -2020-01-25T15:00,50.9,28,19.1,0,0,9.2,17.7 -2020-01-25T16:00,48.9,32,20.7,0,0,4.5,17.2 -2020-01-25T17:00,44.2,38,20.5,0,0,8.6,7.6 -2020-01-25T18:00,41.1,43,20.4,0,0,10.3,17 -2020-01-25T19:00,36,55,21.2,0,0,5.8,17.2 -2020-01-25T20:00,31.8,67,22.1,0,0,3.7,9.4 -2020-01-25T21:00,31.2,71,22.9,0,0,2.4,7.2 -2020-01-25T22:00,31.8,73,24.1,0,0,2.4,4.9 -2020-01-25T23:00,30.7,73,23,0,0,2.2,3.1 -2020-01-26T00:00,33.5,63,22.2,0,0,4.3,3.8 -2020-01-26T01:00,31.2,69,22.1,0,0,4.6,6.7 -2020-01-26T02:00,29,74,21.7,0,0,3.5,6 -2020-01-26T03:00,28.7,75,21.8,0,0,3.6,4.3 -2020-01-26T04:00,26.3,79,20.7,0,0,5.4,6 -2020-01-26T05:00,29.3,67,19.6,0,0,5.7,6.3 -2020-01-26T06:00,28.1,67,18.5,0,0,5.6,6.7 -2020-01-26T07:00,27.5,65,17.4,0,0,4.1,7.4 -2020-01-26T08:00,28.9,63,17.9,0,0,4.1,6.3 -2020-01-26T09:00,33.7,53,18.3,0,0,2.8,7.6 -2020-01-26T10:00,38.9,44,19,0,0,3.4,9.4 -2020-01-26T11:00,44.8,36,19.3,0,0,3.8,10.7 -2020-01-26T12:00,49,30,19,0,0,4.4,12.1 -2020-01-26T13:00,51.5,25,17.1,0,0,3.3,11.9 -2020-01-26T14:00,52.8,23,16.4,0,0,2.3,10.5 -2020-01-26T15:00,53.1,23,16.7,0,0,3.2,8.5 -2020-01-26T16:00,51,29,19.9,0,0,6.3,10.5 -2020-01-26T17:00,44.2,43,23.2,0,0,4.6,10.3 -2020-01-26T18:00,41,47,22.5,0,0,5.6,6.9 -2020-01-26T19:00,40.9,46,21.8,0,0,3.8,6.9 -2020-01-26T20:00,33.4,63,22.3,0,0,3.4,4.9 -2020-01-26T21:00,31.6,68,22.3,0,0,2.5,4.9 -2020-01-26T22:00,29.6,74,22.5,0,0,3,5.1 -2020-01-26T23:00,27.6,80,22.4,0,0,4,5.6 -2020-01-27T00:00,27.4,79,21.8,0,0,4,5.6 -2020-01-27T01:00,28,73,20.7,0,0,4.5,6 -2020-01-27T02:00,30.9,64,20.3,0,0,2.3,5.8 -2020-01-27T03:00,31.1,64,20.3,0,0,0.9,2.5 -2020-01-27T04:00,31.2,64,20.3,0,0,3,2.9 -2020-01-27T05:00,31,66,20.8,0,0,1.5,6.7 -2020-01-27T06:00,29.9,72,21.9,0,0,2.1,2.9 -2020-01-27T07:00,30.7,70,21.9,0,0,2.1,2.5 -2020-01-27T08:00,32.2,65,21.7,0,0,2.8,4 -2020-01-27T09:00,32.5,67,22.7,0,0.028,4.1,8.7 -2020-01-27T10:00,33.7,67,23.9,0.004,0.138,2.7,8.9 -2020-01-27T11:00,36.2,62,24.4,0,0,4.4,10.7 -2020-01-27T12:00,36.2,63,25,0,0.028,5.4,11.9 -2020-01-27T13:00,36.1,68,26.6,0,0.11,5.7,12.5 -2020-01-27T14:00,33.7,80,28.3,0,0.276,2,12.1 -2020-01-27T15:00,32.9,86,29,0,0.165,1.2,6.3 -2020-01-27T16:00,33.7,85,29.8,0,0.028,0.5,6.5 -2020-01-27T17:00,33.5,98,33,0.004,0,6.2,4.5 -2020-01-27T18:00,33.1,99,32.9,0.004,0,4.7,11.4 -2020-01-27T19:00,32.9,100,32.8,0.004,0,5.1,8.1 -2020-01-27T20:00,33.4,99,33,0.004,0,3.8,8.3 -2020-01-27T21:00,33.1,94,31.6,0,0,2.8,6 -2020-01-27T22:00,34.4,66,24.2,0,0,6.3,9.6 -2020-01-27T23:00,32.6,63,21.3,0,0,5.2,9.8 -2020-01-28T00:00,32.5,58,19.1,0,0,5.1,7.2 -2020-01-28T01:00,29.2,64,18.4,0,0,6.2,7.6 -2020-01-28T02:00,31.4,56,17.5,0,0,4.4,7.8 -2020-01-28T03:00,29.7,62,18.3,0,0,5.2,6.5 -2020-01-28T04:00,32.8,52,17,0,0,3.4,6.5 -2020-01-28T05:00,27.5,71,19.3,0,0,3.4,4.3 -2020-01-28T06:00,31.3,58,18.1,0,0,1.5,4.5 -2020-01-28T07:00,26.6,65,16.3,0,0,4.2,5.1 -2020-01-28T08:00,28.7,55,14.5,0,0,3.3,6.5 -2020-01-28T09:00,33.9,46,15.2,0,0,1.4,7.2 -2020-01-28T10:00,37.2,38,14.1,0,0,0.5,5.8 -2020-01-28T11:00,40,32,12.2,0,0,1,7.2 -2020-01-28T12:00,42.5,26,9.9,0,0,1.7,8.5 -2020-01-28T13:00,44.3,24,9.4,0,0,1.8,8.9 -2020-01-28T14:00,45.6,23,9.5,0,0,1.7,8.5 -2020-01-28T15:00,46,23,9.9,0,0,2.1,8.1 -2020-01-28T16:00,45.2,26,12.4,0,0,2.9,7.4 -2020-01-28T17:00,34.7,49,17.3,0,0,8.5,6.7 -2020-01-28T18:00,32,48,14.4,0,0,7.4,10.1 -2020-01-28T19:00,32.7,43,12.7,0,0,4.1,9.8 -2020-01-28T20:00,27.7,55,13.6,0,0,4.4,7.2 -2020-01-28T21:00,24.4,65,14.3,0,0,6,7.2 -2020-01-28T22:00,25.3,61,13.7,0,0,4.3,7.2 -2020-01-28T23:00,26.9,57,13.6,0,0,4.3,6.9 -2020-01-29T00:00,25.4,60,13.4,0,0,4.1,6.9 -2020-01-29T01:00,25.6,59,13.4,0,0,3.1,6.7 -2020-01-29T02:00,25.3,63,14.4,0,0,2.9,4.7 -2020-01-29T03:00,27,60,15,0,0,3.3,5.6 -2020-01-29T04:00,28.3,63,17.2,0,0,3,6.3 -2020-01-29T05:00,31.4,50,14.9,0,0,1.6,3.8 -2020-01-29T06:00,29.6,60,17.4,0,0,4.1,4.7 -2020-01-29T07:00,29,61,17.3,0,0,3.6,5.6 -2020-01-29T08:00,30.3,57,16.9,0,0,4.6,6.5 -2020-01-29T09:00,32.3,54,17.3,0,0.028,4.4,8.7 -2020-01-29T10:00,35.5,52,19.6,0,0,4.3,10.1 -2020-01-29T11:00,37.9,47,19.7,0,0,3.8,10.5 -2020-01-29T12:00,40.2,45,20.3,0,0,3.3,10.7 -2020-01-29T13:00,41.7,43,20.8,0,0,3.1,10.3 -2020-01-29T14:00,42.5,43,21.4,0,0,2.8,10.3 -2020-01-29T15:00,42.6,43,21.8,0,0,3,9.4 -2020-01-29T16:00,42,45,22,0,0,4.2,8.7 -2020-01-29T17:00,35,69,25.8,0,0,5.4,8.1 -2020-01-29T18:00,32.7,79,26.9,0,0,4.9,7.6 -2020-01-29T19:00,31.7,91,29.4,0,0.083,5.3,9.4 -2020-01-29T20:00,32.1,90,29.5,0,0.11,2.9,9.4 -2020-01-29T21:00,31.6,90,29,0,0.055,2.6,4.5 -2020-01-29T22:00,30,93,28.2,0,0.083,4.3,6.7 -2020-01-29T23:00,27.1,90,24.5,0,0.055,2.7,6.9 -2020-01-30T00:00,27.7,77,21.4,0,0,4.2,6.7 -2020-01-30T01:00,25.4,67,16.2,0,0,4.1,6.9 -2020-01-30T02:00,23.9,70,15.4,0,0,5.3,8.3 -2020-01-30T03:00,23.4,70,14.9,0,0,5.7,8.7 -2020-01-30T04:00,22.7,61,11.1,0,0,5.4,9.8 -2020-01-30T05:00,22.9,56,9.4,0,0,3.7,8.5 -2020-01-30T06:00,25,50,9.1,0,0,5.2,9.6 -2020-01-30T07:00,25.7,49,9,0,0,5.1,8.9 -2020-01-30T08:00,28.7,41,7.8,0,0,4.7,8.5 -2020-01-30T09:00,33.5,33,7.8,0,0,1.6,7.6 -2020-01-30T10:00,38.7,29,9.1,0,0,3.4,9.2 -2020-01-30T11:00,40.7,29,10.6,0,0,7,14.5 -2020-01-30T12:00,41.6,31,12.8,0,0,6.8,15.2 -2020-01-30T13:00,41.5,34,15.1,0,0,9,17.4 -2020-01-30T14:00,38.9,43,18.5,0,0.028,6.2,17.7 -2020-01-30T15:00,37.8,48,20,0,0,8.4,13.6 -2020-01-30T16:00,36.4,55,21.6,0,0,9.8,16.6 -2020-01-30T17:00,33,64,22.1,0,0.055,5.4,16.1 -2020-01-30T18:00,31.2,84,27,0,0.193,5.8,12.5 -2020-01-30T19:00,30.2,84,26,0,0.165,4,10.7 -2020-01-30T20:00,26.5,94,25.1,0,0.138,3.4,11.6 -2020-01-30T21:00,27.1,92,25.1,0,0.083,1.8,10.5 -2020-01-30T22:00,25.9,91,23.5,0,0,4.1,6.5 -2020-01-30T23:00,23.5,88,20.5,0,0,2.9,6.9 -2020-01-31T00:00,23.3,76,16.8,0,0,4.3,6.9 -2020-01-31T01:00,23,60,11.2,0,0,4.3,6.9 -2020-01-31T02:00,22.9,50,7.1,0,0,5.3,7.6 -2020-01-31T03:00,27.4,41,6.5,0,0,9.6,14.5 -2020-01-31T04:00,28.9,38,6.6,0,0,13.2,20.8 -2020-01-31T05:00,28.4,39,6.4,0,0,10.8,23.7 -2020-01-31T06:00,29.4,34,4.6,0,0,9.4,18.3 -2020-01-31T07:00,27.1,34,2.8,0,0,7.5,14.8 -2020-01-31T08:00,32.3,28,2.8,0,0,5.4,10.3 -2020-01-31T09:00,38.8,23,3.7,0,0,7.2,12.3 -2020-01-31T10:00,43.1,19,4.1,0,0,6.6,12.8 -2020-01-31T11:00,46.6,17,3.7,0,0,9.2,17 -2020-01-31T12:00,48.9,15,3.7,0,0,12.9,22.6 -2020-01-31T13:00,49.7,15,4,0,0,12.9,23.9 -2020-01-31T14:00,50,17,7.1,0,0,12.3,23 -2020-01-31T15:00,48.9,21,10.8,0,0,10.3,21.3 -2020-01-31T16:00,45.1,25,11.2,0,0,9.5,17 -2020-01-31T17:00,39.6,32,12.1,0,0,13.3,15.2 -2020-01-31T18:00,38,35,13,0,0,14.2,23.3 -2020-01-31T19:00,37.2,37,13.6,0,0,13,22.8 -2020-01-31T20:00,37.1,39,14.5,0,0,13.1,20.8 -2020-01-31T21:00,37,39,14.3,0,0,13.4,22.1 -2020-01-31T22:00,37.5,40,15.4,0,0,13.5,21.9 -2020-01-31T23:00,38.1,41,16.6,0,0,11.6,22.1 -2020-02-01T00:00,36.3,47,17.8,0,0,7.7,19 -2020-02-01T01:00,33.2,55,18.6,0,0,8.8,12.1 -2020-02-01T02:00,35,51,18.7,0,0,8.8,10.7 -2020-02-01T03:00,33.6,56,19.5,0,0,9.3,11.4 -2020-02-01T04:00,34.1,56,20,0,0,8.6,11.4 -2020-02-01T05:00,35.1,56,21.1,0,0,9,11.2 -2020-02-01T06:00,36.9,56,22.7,0,0,5.4,10.7 -2020-02-01T07:00,33.5,64,22.7,0,0,4.4,11.4 -2020-02-01T08:00,37.9,63,26.3,0,0,4.2,6.9 -2020-02-01T09:00,46.7,41,24.4,0,0,5.6,7.4 -2020-02-01T10:00,54.1,31,24.2,0,0,10.4,15 -2020-02-01T11:00,57.9,25,22.3,0,0,15.4,24.2 -2020-02-01T12:00,60.8,20,19.3,0,0,19.1,31.5 -2020-02-01T13:00,61.4,18,17.8,0,0,21.3,35.1 -2020-02-01T14:00,61.3,19,18.1,0,0,21.9,36 -2020-02-01T15:00,60.6,18,16.3,0,0,22.5,37.6 -2020-02-01T16:00,58.1,17,13.7,0,0,22.6,38 -2020-02-01T17:00,49.3,28,17.6,0,0,7,37.1 -2020-02-01T18:00,44.2,31,15.7,0,0,5.4,8.3 -2020-02-01T19:00,40.4,39,17.6,0,0,5.3,8.5 -2020-02-01T20:00,38.3,49,20.6,0,0,7.8,11.2 -2020-02-01T21:00,39.8,43,19.3,0,0,7.1,14.3 -2020-02-01T22:00,38.8,44,18.7,0,0,8.4,13.2 -2020-02-01T23:00,37.5,43,17.2,0,0,6.8,13.4 -2020-02-02T00:00,34.5,46,15.7,0,0,6,11 -2020-02-02T01:00,34.4,40,12.7,0,0,7.6,9.8 -2020-02-02T02:00,35.2,36,10.9,0,0,7.5,10.3 -2020-02-02T03:00,34.3,37,10.8,0,0,7.3,10.3 -2020-02-02T04:00,33.8,38,10.8,0,0,8.1,10.7 -2020-02-02T05:00,32.5,42,12.1,0,0,10.3,10.7 -2020-02-02T06:00,37.3,32,10,0,0,8,13.2 -2020-02-02T07:00,36.1,34,10.6,0,0,8.3,11.2 -2020-02-02T08:00,42.3,30,13.3,0,0,7.7,11.6 -2020-02-02T09:00,50,27,17.2,0,0,10.8,16.1 -2020-02-02T10:00,57.4,22,19.3,0,0,12,19.9 -2020-02-02T11:00,61.6,19,19.2,0,0,12.4,21.9 -2020-02-02T12:00,63.5,18,19.2,0,0,15,25.7 -2020-02-02T13:00,64.2,17,18.6,0,0,17.3,29.8 -2020-02-02T14:00,65,16,18.3,0,0,17.8,30.6 -2020-02-02T15:00,64.4,19,21.1,0,0,16.5,30.4 -2020-02-02T16:00,62,21,21.3,0,0,14,27.7 -2020-02-02T17:00,57.6,22,18.9,0,0,10.8,23 -2020-02-02T18:00,51.4,24,15.9,0,0,8.7,17.9 -2020-02-02T19:00,46.6,27,14.2,0,0,7.7,14.1 -2020-02-02T20:00,41.3,34,15,0,0,6.2,12.3 -2020-02-02T21:00,39.9,37,15.5,0,0,7,11.4 -2020-02-02T22:00,37.9,43,17.6,0,0,7.3,12.8 -2020-02-02T23:00,34.1,66,23.7,0,0,12.8,36 -2020-02-03T00:00,33.1,70,24.3,0,0,11.9,22.4 -2020-02-03T01:00,31.8,74,24.5,0,0,10.6,21.7 -2020-02-03T02:00,32.1,73,24.5,0,0,9.8,18.6 -2020-02-03T03:00,31.6,75,24.7,0,0,7.9,16.8 -2020-02-03T04:00,30.7,80,25.1,0,0,7.6,13.6 -2020-02-03T05:00,28.5,80,23,0,0.028,7.6,15 -2020-02-03T06:00,27.7,82,22.9,0,0.055,6.7,13.2 -2020-02-03T07:00,26.1,84,21.8,0,0.055,7.9,14.1 -2020-02-03T08:00,24.7,81,19.6,0,0.055,6.9,14.1 -2020-02-03T09:00,24.6,77,18.6,0,0.028,5.6,13.2 -2020-02-03T10:00,24.4,76,18,0,0.028,6.6,13 -2020-02-03T11:00,24.4,73,16.9,0,0.055,8.1,15.4 -2020-02-03T12:00,24.3,70,15.9,0,0.028,10,18.6 -2020-02-03T13:00,24.1,66,14.4,0,0.028,11,20.4 -2020-02-03T14:00,24.2,62,13.1,0,0.028,10.7,20.8 -2020-02-03T15:00,23.9,61,12.3,0,0.028,9.1,19.9 -2020-02-03T16:00,23.4,61,12,0,0.028,7.8,17.2 -2020-02-03T17:00,18.8,74,11.8,0,0.055,6.5,15 -2020-02-03T18:00,19,76,12.6,0,0.083,5.6,12.1 -2020-02-03T19:00,19.1,73,11.8,0,0.165,7.6,13.6 -2020-02-03T20:00,18.7,73,11.4,0,0.138,8.2,14.5 -2020-02-03T21:00,18,74,11,0,0.11,8.5,15.7 -2020-02-03T22:00,17.5,71,9.8,0,0.11,7.9,15.7 -2020-02-03T23:00,17.1,72,9.5,0,0.083,7.8,14.1 -2020-02-04T00:00,16.8,71,9.1,0,0.055,7.8,14.3 -2020-02-04T01:00,16.5,71,8.7,0,0.028,7.3,14.1 -2020-02-04T02:00,16.3,71,8.7,0,0.028,7.6,13.4 -2020-02-04T03:00,16.2,73,9,0,0.028,7.3,13.4 -2020-02-04T04:00,16.2,73,9.1,0,0.028,7.1,13.2 -2020-02-04T05:00,15.5,76,9.4,0,0.028,8.5,13 -2020-02-04T06:00,14.4,75,7.9,0,0.055,6,14.1 -2020-02-04T07:00,13.4,75,6.8,0,0.028,4.6,11 -2020-02-04T08:00,13.5,76,7.2,0,0.028,6.1,10.7 -2020-02-04T09:00,14.1,73,7,0,0.028,7.2,12.8 -2020-02-04T10:00,15.2,66,5.9,0,0.028,6.8,12.8 -2020-02-04T11:00,16,63,5.6,0,0,5.1,12.1 -2020-02-04T12:00,17,61,5.7,0,0,5.4,11 -2020-02-04T13:00,17.9,61,6.6,0,0,5.9,11.6 -2020-02-04T14:00,18.1,56,4.8,0,0,5.7,11.9 -2020-02-04T15:00,17.8,53,3.5,0,0,3.9,11 -2020-02-04T16:00,16.2,58,3.8,0,0,2.9,8.3 -2020-02-04T17:00,13.3,63,3.2,0,0,5.5,9.6 -2020-02-04T18:00,8.5,69,0.4,0,0,4.7,9.6 -2020-02-04T19:00,8.9,64,-0.7,0,0,5.6,10.3 -2020-02-04T20:00,10.6,61,-0.3,0,0,3.8,7.8 -2020-02-04T21:00,3.5,65,-5.6,0,0,4.5,6.7 -2020-02-04T22:00,-3.2,67,-11.6,0,0,7.3,10.3 -2020-02-04T23:00,-2.3,60,-12.8,0,0,6.3,10.5 -2020-02-05T00:00,3,47,-12.6,0,0,4.8,8.9 -2020-02-05T01:00,2.5,46,-13.5,0,0,3.7,6.9 -2020-02-05T02:00,-4,54,-16.5,0,0,5.3,7.6 -2020-02-05T03:00,-5.7,56,-17.5,0,0,5.9,8.7 -2020-02-05T04:00,-7.7,58,-18.4,0,0,6.4,8.9 -2020-02-05T05:00,-4.1,57,-15.4,0,0,5.5,12.3 -2020-02-05T06:00,-10.1,58,-20.9,0,0,8.9,13.6 -2020-02-05T07:00,2.4,40,-16.4,0,0,5.2,12.3 -2020-02-05T08:00,7.4,34,-15.2,0,0,0.5,7.2 -2020-02-05T09:00,9.1,35,-13.3,0,0,4.3,6.7 -2020-02-05T10:00,11.7,49,-3.9,0,0,4.4,7.6 -2020-02-05T11:00,18.8,50,3.1,0,0,2.6,7.2 -2020-02-05T12:00,23.5,39,2.3,0,0,1.4,5.1 -2020-02-05T13:00,25.3,40,4.1,0,0,2.1,4.7 -2020-02-05T14:00,25.3,40,4.5,0,0,3.3,7.4 -2020-02-05T15:00,24,44,5.4,0,0,3,7.6 -2020-02-05T16:00,22.3,38,0.2,0,0,3.9,7.4 -2020-02-05T17:00,24.2,29,-3.8,0,0,2.3,6.5 -2020-02-05T18:00,22.7,31,-3.3,0,0,3.5,3.8 -2020-02-05T19:00,12.7,52,-1.6,0,0,8.8,13.9 -2020-02-05T20:00,15.7,51,0.7,0,0,7.4,13 -2020-02-05T21:00,14.8,56,2.1,0,0,9.4,12.8 -2020-02-05T22:00,22.4,38,0.7,0,0,1.4,12.5 -2020-02-05T23:00,20.6,39,-0.4,0,0,2.2,4.3 -2020-02-06T00:00,19.3,39,-1.4,0,0,2.4,3.1 -2020-02-06T01:00,15.4,44,-2.6,0,0,3.7,4.9 -2020-02-06T02:00,18.6,39,-2.2,0,0,2.1,5.4 -2020-02-06T03:00,21.4,36,-1.3,0,0,0.2,2.7 -2020-02-06T04:00,11.4,54,-2.2,0,0,3.3,4.9 -2020-02-06T05:00,17,53,2.8,0,0,4.2,8.7 -2020-02-06T06:00,18.6,53,4.5,0,0,6.9,11.6 -2020-02-06T07:00,19.1,59,7,0,0,7.1,12.8 -2020-02-06T08:00,21.4,59,9.3,0,0,6,12.8 -2020-02-06T09:00,26.2,53,11.2,0,0,5.8,10.7 -2020-02-06T10:00,31,44,11.8,0,0,7.2,13.2 -2020-02-06T11:00,33.2,51,16.9,0,0,2.8,13 -2020-02-06T12:00,34.3,57,20.4,0,0,1.8,5.6 -2020-02-06T13:00,35.4,49,18.3,0,0,3.3,6.7 -2020-02-06T14:00,35.4,51,19.2,0,0,3.5,7.4 -2020-02-06T15:00,35.6,55,21.1,0,0,3.2,7.4 -2020-02-06T16:00,34.6,58,21.3,0,0,4.1,7.2 -2020-02-06T17:00,33.3,55,18.9,0,0,6.1,8.9 -2020-02-06T18:00,27.9,73,20.2,0,0.028,5.4,10.5 -2020-02-06T19:00,25.5,84,21.4,0,0.083,5.4,8.5 -2020-02-06T20:00,26.2,87,22.9,0,0.193,3.7,6.3 -2020-02-06T21:00,27.4,89,24.6,0.004,0.358,3.6,5.8 -2020-02-06T22:00,27.5,90,25,0,0.303,4.8,8.1 -2020-02-06T23:00,27.1,90,24.6,0,0.248,4.8,8.1 -2020-02-07T00:00,26.3,90,23.9,0,0.248,5.1,8.3 -2020-02-07T01:00,26,89,23.2,0,0.193,6.1,9.6 -2020-02-07T02:00,25.8,88,22.6,0,0.165,6.9,11.2 -2020-02-07T03:00,25.2,88,22.2,0,0.11,9.1,14.5 -2020-02-07T04:00,24.5,87,21.3,0,0.083,8.9,14.8 -2020-02-07T05:00,22.4,80,17.2,0,0.083,8.1,14.3 -2020-02-07T06:00,22.1,81,17.1,0,0.055,9.9,15.9 -2020-02-07T07:00,21.4,80,16.3,0,0.055,8,16.3 -2020-02-07T08:00,21.6,80,16.4,0,0.11,7.2,13 -2020-02-07T09:00,23.1,79,17.6,0,0.138,6.3,11.9 -2020-02-07T10:00,23.8,80,18.5,0,0.22,4.6,10.3 -2020-02-07T11:00,25.2,78,19.2,0,0.165,6.3,11.6 -2020-02-07T12:00,26.1,76,19.4,0,0.055,6.9,13.9 -2020-02-07T13:00,27.4,76,20.9,0,0.11,4,11.6 -2020-02-07T14:00,28.9,76,22.1,0,0.028,4.8,7.8 -2020-02-07T15:00,28.4,78,22.5,0,0,3.6,8.1 -2020-02-07T16:00,28.1,80,22.8,0,0.028,2.9,6.3 -2020-02-07T17:00,26.2,92,24.1,0,0.083,2.4,5.4 -2020-02-07T18:00,26,92,24,0,0.055,2.2,3.8 -2020-02-07T19:00,25.9,92,24,0,0.11,2.7,2.7 -2020-02-07T20:00,22.8,91,20.7,0,0.055,4.7,5.1 -2020-02-07T21:00,22.3,86,18.9,0,0.028,4.2,6.7 -2020-02-07T22:00,20.7,86,17.1,0,0,5.1,6.7 -2020-02-07T23:00,23.5,82,18.9,0,0,4.9,8.5 -2020-02-08T00:00,20.8,85,16.9,0,0,5.1,8.3 -2020-02-08T01:00,20.2,83,15.9,0,0,5.2,6.9 -2020-02-08T02:00,17.8,83,13.6,0,0,6.3,8.5 -2020-02-08T03:00,13.2,86,9.7,0,0,6.8,7.8 -2020-02-08T04:00,11.3,82,6.9,0,0,8.5,10.1 -2020-02-08T05:00,16.8,77,10.8,0,0,3.3,10.1 -2020-02-08T06:00,17.3,73,10.1,0,0,1.7,4.3 -2020-02-08T07:00,18.1,70,10,0,0,2.6,2.5 -2020-02-08T08:00,14.5,80,9.5,0,0,4.3,5.8 -2020-02-08T09:00,17.7,85,14,0,0,1.3,5.6 -2020-02-08T10:00,21,80,15.8,0,0,1.8,3.6 -2020-02-08T11:00,27.1,76,20.4,0,0,0.5,4.3 -2020-02-08T12:00,32.5,73,24.8,0,0,2.1,3.4 -2020-02-08T13:00,34.5,73,26.6,0,0,3.6,6.3 -2020-02-08T14:00,32.7,79,27,0,0,5.4,8.7 -2020-02-08T15:00,31.6,77,25.3,0,0,5,9.8 -2020-02-08T16:00,33.6,63,22.6,0,0,4,7.8 -2020-02-08T17:00,28.7,81,23.5,0,0,5.5,4.9 -2020-02-08T18:00,28.9,71,20.7,0,0,5.4,6.5 -2020-02-08T19:00,26.8,74,19.8,0,0,6.9,9.4 -2020-02-08T20:00,20,88,17,0,0,4.7,8.3 -2020-02-08T21:00,19.9,83,15.5,0,0,7.3,11.2 -2020-02-08T22:00,28.3,69,19.6,0,0.028,1.6,11.2 -2020-02-08T23:00,24.1,79,18.4,0,0,7.4,11 -2020-02-09T00:00,25,84,20.8,0,0,6.7,14.1 -2020-02-09T01:00,25.2,86,21.5,0,0.055,4.2,10.5 -2020-02-09T02:00,24.8,85,21,0.004,0.055,6.1,9.2 -2020-02-09T03:00,25.2,86,21.5,0,0.138,6.7,11.4 -2020-02-09T04:00,24.7,90,22.2,0,0.165,3.8,10.5 -2020-02-09T05:00,25.3,86,21.7,0,0.11,1.3,4.9 -2020-02-09T06:00,24.7,88,21.7,0,0.055,3.5,3.8 -2020-02-09T07:00,25.2,91,22.8,0,0.248,3.1,4.9 -2020-02-09T08:00,25.5,92,23.6,0,0.276,5.2,7.8 -2020-02-09T09:00,25.4,89,22.7,0,0.11,7.2,12.1 -2020-02-09T10:00,25.3,87,21.9,0,0.055,7.7,12.8 -2020-02-09T11:00,24.6,83,20.2,0,0.028,9.3,15.4 -2020-02-09T12:00,24,83,19.6,0,0.028,8.6,16.1 -2020-02-09T13:00,24.2,84,20,0,0.028,7,15 -2020-02-09T14:00,24.2,85,20.4,0,0.028,6.1,12.5 -2020-02-09T15:00,23.3,88,20.1,0,0,5.7,10.7 -2020-02-09T16:00,21.2,89,18.6,0,0,4,9.6 -2020-02-09T17:00,22.6,88,19.5,0,0,3.8,6.5 -2020-02-09T18:00,21.9,84,18,0,0,4.9,8.3 -2020-02-09T19:00,19.9,83,15.6,0,0,5.4,7.6 -2020-02-09T20:00,17.3,82,12.8,0,0,6.8,8.3 -2020-02-09T21:00,12.6,85,8.9,0,0,7.5,8.9 -2020-02-09T22:00,9.3,88,6.5,0,0,7.2,8.9 -2020-02-09T23:00,4.8,87,1.8,0,0,8.1,9.6 -2020-02-10T00:00,9.4,78,3.8,0,0,3.4,9.6 -2020-02-10T01:00,9.3,74,2.6,0,0,2.7,4.3 -2020-02-10T02:00,11,69,2.8,0,0,1.5,3.4 -2020-02-10T03:00,10.8,71,3.3,0,0,0.5,2.2 -2020-02-10T04:00,9.6,80,4.6,0,0,1.6,2.2 -2020-02-10T05:00,5.5,92,3.7,0,0,1.9,5.6 -2020-02-10T06:00,4.8,93,3.3,0,0,4,5.4 -2020-02-10T07:00,10.1,93,8.4,0,0,3.8,6.9 -2020-02-10T08:00,9.4,87,6.3,0,0,2.9,4.5 -2020-02-10T09:00,10.2,88,7.4,0,0,5.1,8.9 -2020-02-10T10:00,14,85,10.3,0,0,2.9,8.5 -2020-02-10T11:00,16.9,84,12.9,0,0,1.8,5.8 -2020-02-10T12:00,19.8,84,15.7,0,0,3.4,7.4 -2020-02-10T13:00,22.7,83,18.3,0,0,5.4,9.4 -2020-02-10T14:00,24.4,83,20,0,0,5.9,10.1 -2020-02-10T15:00,24.4,82,19.8,0,0,3.5,9.6 -2020-02-10T16:00,22.6,87,19.3,0,0.028,5.6,8.5 -2020-02-10T17:00,23.3,85,19.4,0,0.028,4.2,10.5 -2020-02-10T18:00,22,87,18.9,0,0.083,3.3,6.9 -2020-02-10T19:00,21.7,87,18.4,0,0.11,5.8,8.5 -2020-02-10T20:00,21.3,88,18.4,0,0.193,8.1,12.5 -2020-02-10T21:00,21.2,90,18.7,0,0.193,9.6,15 -2020-02-10T22:00,21.1,91,19,0,0.138,9.8,17 -2020-02-10T23:00,20.5,90,18.1,0,0.055,6.3,15.7 -2020-02-11T00:00,20,88,17,0,0.055,5.6,10.1 -2020-02-11T01:00,19.6,87,16.3,0,0.028,4.3,8.9 -2020-02-11T02:00,17.5,87,14.4,0,0,4.4,6.9 -2020-02-11T03:00,15.4,89,12.8,0,0,4.9,5.8 -2020-02-11T04:00,10.7,94,9.2,0,0,5.2,6.3 -2020-02-11T05:00,11.1,93,9.6,0,0,6.6,8.1 -2020-02-11T06:00,14.1,89,11.6,0,0,4.7,8.7 -2020-02-11T07:00,13.9,94,12.6,0,0,4.9,8.1 -2020-02-11T08:00,5.6,92,3.8,0,0,4.5,6 -2020-02-11T09:00,9,79,3.8,0,0,4.1,6.3 -2020-02-11T10:00,14.8,71,7,0,0,4.9,6.7 -2020-02-11T11:00,20.1,68,11.4,0,0,6,7.2 -2020-02-11T12:00,22.7,70,14.4,0,0,2.3,7.4 -2020-02-11T13:00,21.8,73,14.5,0,0,5.4,8.7 -2020-02-11T14:00,19,77,13,0,0,6.7,11.4 -2020-02-11T15:00,16.9,77,10.9,0,0,2.9,10.7 -2020-02-11T16:00,13.5,76,7.4,0,0,2.7,4.7 -2020-02-11T17:00,11.2,85,7.5,0,0,4.7,3.6 -2020-02-11T18:00,16.3,74,9.3,0,0,1,5.6 -2020-02-11T19:00,17.6,69,9.2,0,0,2.6,2.7 -2020-02-11T20:00,6.4,87,3.3,0,0,5.8,6.9 -2020-02-11T21:00,2,87,-0.8,0,0,6,7.2 -2020-02-11T22:00,2.5,81,-1.9,0,0,5.1,7.8 -2020-02-11T23:00,0.6,76,-5.2,0,0,7.4,8.9 -2020-02-12T00:00,6.9,68,-1.3,0,0,6.2,8.7 -2020-02-12T01:00,8.3,70,0.5,0,0,6.9,8.3 -2020-02-12T02:00,13.6,61,2.7,0,0,3.1,9.2 -2020-02-12T03:00,9.2,66,0.2,0,0,2.8,3.8 -2020-02-12T04:00,15.3,57,2.8,0,0,4.3,4.7 -2020-02-12T05:00,27.3,51,11.7,0,0,12.3,7.6 -2020-02-12T06:00,26.2,51,10.5,0,0,13.6,21.9 -2020-02-12T07:00,26.7,51,11.1,0,0,14.1,23.3 -2020-02-12T08:00,25.6,58,12.9,0,0,11.4,22.6 -2020-02-12T09:00,25.6,64,15.3,0,0,5.4,18.3 -2020-02-12T10:00,29,67,19.4,0,0,2.3,8.5 -2020-02-12T11:00,27.6,72,19.9,0,0,7.6,11.6 -2020-02-12T12:00,27.8,68,18.5,0,0,2.9,12.1 -2020-02-12T13:00,29.5,65,19.1,0,0.028,3.2,5.8 -2020-02-12T14:00,28.9,69,20.1,0,0.028,3.4,6.5 -2020-02-12T15:00,28.3,74,21.1,0,0.028,2.5,6 -2020-02-12T16:00,27.2,80,22,0,0.028,3,5.4 -2020-02-12T17:00,23.8,82,19.1,0,0.055,4,6 -2020-02-12T18:00,21.1,85,17.3,0,0.055,5.4,6.7 -2020-02-12T19:00,23.2,85,19.2,0,0.138,4.3,6.9 -2020-02-12T20:00,23.3,91,20.9,0,0.276,8.6,13.9 -2020-02-12T21:00,22.6,92,20.7,0,0.138,4.5,13.9 -2020-02-12T22:00,22.2,92,20.1,0,0.055,3.8,7.6 -2020-02-12T23:00,21.1,92,19.2,0,0,2.8,6 -2020-02-13T00:00,20.6,92,18.7,0,0,3.1,3.6 -2020-02-13T01:00,19.6,92,17.6,0,0,2.9,4 -2020-02-13T02:00,18.2,88,15.3,0,0,3.3,5.6 -2020-02-13T03:00,14.3,87,11,0,0,2.6,5.6 -2020-02-13T04:00,13.2,89,10.6,0,0,1.6,3.4 -2020-02-13T05:00,16.5,88,13.6,0,0,6.6,2.9 -2020-02-13T06:00,15.7,87,12.5,0,0.028,3,10.7 -2020-02-13T07:00,16.3,83,12,0,0.028,1.8,4.9 -2020-02-13T08:00,15.6,85,12,0,0.028,2.1,2.9 -2020-02-13T09:00,16,85,12.3,0,0,3,5.4 -2020-02-13T10:00,16.5,83,12.3,0,0,1.8,6.7 -2020-02-13T11:00,16.3,86,12.9,0,0,0.8,5.1 -2020-02-13T12:00,16.4,89,13.6,0,0,2.8,6.7 -2020-02-13T13:00,16.5,91,14.5,0,0,4,8.7 -2020-02-13T14:00,17.5,89,14.9,0,0,1.3,8.3 -2020-02-13T15:00,18.5,86,15.1,0,0,0.9,4.5 -2020-02-13T16:00,18.3,86,14.9,0,0,1.9,2.7 -2020-02-13T17:00,16.4,91,14.3,0,0,1.3,2.7 -2020-02-13T18:00,14.6,90,12.1,0,0,2,4 -2020-02-13T19:00,16.3,89,13.6,0,0,2.2,3.1 -2020-02-13T20:00,11.9,90,9.7,0,0,5.5,6.5 -2020-02-13T21:00,9.3,86,6,0,0,5.4,6.5 -2020-02-13T22:00,3.7,83,-0.3,0,0,7.3,8.7 -2020-02-13T23:00,3.8,76,-1.9,0,0,5.8,8.9 -2020-02-14T00:00,2.7,75,-3.5,0,0,8.2,9.8 -2020-02-14T01:00,4.4,72,-2.6,0,0,8.1,10.1 -2020-02-14T02:00,9.2,69,1.1,0,0,6.5,10.1 -2020-02-14T03:00,12.9,67,3.9,0,0,6.4,9.6 -2020-02-14T04:00,15.5,65,6,0,0,6.5,10.1 -2020-02-14T05:00,18.3,69,9.9,0,0,7.1,10.7 -2020-02-14T06:00,18.4,69,10,0,0,7.8,12.1 -2020-02-14T07:00,17.7,70,9.7,0,0,7.4,13 -2020-02-14T08:00,19.6,69,11.2,0,0,6.3,11.4 -2020-02-14T09:00,20.8,72,13.1,0,0,6.8,9.6 -2020-02-14T10:00,28.2,67,18.8,0,0,5,8.3 -2020-02-14T11:00,33.4,66,23.4,0,0,4.5,7.8 -2020-02-14T12:00,39.1,47,20.6,0,0,2,7.6 -2020-02-14T13:00,41.9,41,19.9,0,0,1.1,2.2 -2020-02-14T14:00,44.6,34,17.8,0,0,1,2.5 -2020-02-14T15:00,38.2,60,25.4,0,0,4.7,5.6 -2020-02-14T16:00,35.2,58,22,0,0,6.5,8.1 -2020-02-14T17:00,44.9,38,20.8,0,0,2,7.8 -2020-02-14T18:00,39.6,43,19.1,0,0,2.5,3.6 -2020-02-14T19:00,26.8,73,19.2,0,0,7,7.8 -2020-02-14T20:00,28,69,19.1,0,0,7.1,9.8 -2020-02-14T21:00,29.5,63,18.6,0,0,2.7,8.5 -2020-02-14T22:00,23.7,71,15.6,0,0,3.4,3.4 -2020-02-14T23:00,17.5,83,13.3,0,0,5.5,8.3 -2020-02-15T00:00,20.8,76,14.3,0,0,2.8,9.2 -2020-02-15T01:00,19.9,74,12.9,0,0,2.9,2.9 -2020-02-15T02:00,19.6,70,11.5,0,0,2.6,5.1 -2020-02-15T03:00,14,74,7.2,0,0,4.2,4.7 -2020-02-15T04:00,11.9,71,4.3,0,0,5.8,6.9 -2020-02-15T05:00,7.2,77,1.4,0,0,8.3,8.3 -2020-02-15T06:00,12.1,71,4.4,0,0,5.8,10.1 -2020-02-15T07:00,10,70,2.3,0,0,6.8,7.6 -2020-02-15T08:00,15,61,4.1,0,0,4.7,8.3 -2020-02-15T09:00,16.3,63,5.7,0,0,4.7,5.6 -2020-02-15T10:00,22.6,58,9.9,0,0,4.5,6.3 -2020-02-15T11:00,27.6,57,14.2,0,0,2.7,5.4 -2020-02-15T12:00,29.5,63,18.3,0,0,3,4.9 -2020-02-15T13:00,29,70,20.3,0,0,6.4,10.3 -2020-02-15T14:00,27.8,74,20.5,0,0,8.2,13.4 -2020-02-15T15:00,26.6,73,19.1,0,0,7,13.6 -2020-02-15T16:00,23.5,78,17.8,0,0,3.8,11.4 -2020-02-15T17:00,22.9,78,17,0,0,1.3,4.7 -2020-02-15T18:00,16.3,87,13.3,0,0,4.8,6.5 -2020-02-15T19:00,16.7,89,14,0,0,5.1,7.8 -2020-02-15T20:00,21.3,84,17.2,0,0,4.2,6.7 -2020-02-15T21:00,22.2,81,17.3,0,0,4.3,5.1 -2020-02-15T22:00,22.6,79,17.1,0,0,4.2,5.8 -2020-02-15T23:00,20.8,77,14.6,0,0,2.7,4.9 -2020-02-16T00:00,12.8,83,8.6,0,0,4.5,5.4 -2020-02-16T01:00,13.9,80,8.9,0,0,2.8,5.4 -2020-02-16T02:00,15.4,74,8.7,0,0,3.4,5.1 -2020-02-16T03:00,10.4,75,4.2,0,0,4.7,5.8 -2020-02-16T04:00,10.3,72,3.1,0,0,7.2,8.1 -2020-02-16T05:00,20.4,54,6.5,0,0,3.8,8.7 -2020-02-16T06:00,17.5,62,6.5,0,0,4.3,5.1 -2020-02-16T07:00,14.1,74,7.3,0,0,5.8,7.4 -2020-02-16T08:00,14.4,77,8.6,0,0,5.5,8.1 -2020-02-16T09:00,21.2,74,14.4,0,0,3.1,6.7 -2020-02-16T10:00,27.4,72,19.5,0,0,3.8,6 -2020-02-16T11:00,31.3,71,22.9,0,0,4.1,5.8 -2020-02-16T12:00,33.8,76,27.1,0,0,2.4,4.9 -2020-02-16T13:00,34.9,73,27.1,0,0,2.9,4.9 -2020-02-16T14:00,35,76,28.3,0,0,5.1,8.1 -2020-02-16T15:00,34.4,81,29.1,0,0,5.2,8.5 -2020-02-16T16:00,33,79,27.1,0,0,4,9.2 -2020-02-16T17:00,37.3,56,23,0,0,3.9,7.8 -2020-02-16T18:00,29.4,74,22,0,0,5.7,6.7 -2020-02-16T19:00,30.7,72,22.7,0,0,6,7.4 -2020-02-16T20:00,27.2,76,20.7,0,0,5.9,7.6 -2020-02-16T21:00,33.4,65,23,0,0,2.8,7.4 -2020-02-16T22:00,28.4,78,22.5,0,0,1.8,3.8 -2020-02-16T23:00,24.7,84,20.7,0,0,1.8,4 -2020-02-17T00:00,23.2,81,18.2,0,0,7.4,11.6 -2020-02-17T01:00,27.5,78,21.5,0,0,5.2,11.4 -2020-02-17T02:00,22.2,80,17,0,0,5.2,7.6 -2020-02-17T03:00,18.6,81,13.7,0,0,6.8,8.3 -2020-02-17T04:00,18.2,79,12.8,0,0,6.1,9.4 -2020-02-17T05:00,20.9,67,11.6,0,0,4.6,8.5 -2020-02-17T06:00,12.6,78,7.1,0,0,7.2,7.8 -2020-02-17T07:00,10.1,83,5.9,0,0,7.1,9.4 -2020-02-17T08:00,13.1,81,8.4,0,0,5.9,8.3 -2020-02-17T09:00,21.5,76,15,0,0,3.1,7.2 -2020-02-17T10:00,28,74,20.8,0,0,3.6,5.1 -2020-02-17T11:00,32.5,78,26.4,0,0,6.7,9.6 -2020-02-17T12:00,33.6,80,28,0,0,5.7,11.4 -2020-02-17T13:00,34.9,80,29.3,0,0,5.8,9.4 -2020-02-17T14:00,35.1,80,29.4,0,0,8.2,13 -2020-02-17T15:00,34.3,80,28.7,0,0,7.6,13.2 -2020-02-17T16:00,32.7,74,25.3,0,0,7.3,12.1 -2020-02-17T17:00,30.9,68,21.6,0,0,7.2,11.9 -2020-02-17T18:00,29.4,73,21.7,0,0,3.8,11.6 -2020-02-17T19:00,28.4,69,19.6,0,0.028,8.9,12.8 -2020-02-17T20:00,25.8,80,20.6,0,0.083,3.1,15 -2020-02-17T21:00,25.3,85,21.6,0,0.138,2.5,4.7 -2020-02-17T22:00,24.9,87,21.5,0,0.11,3.9,6 -2020-02-17T23:00,23.9,87,20.6,0,0.055,3.5,6.7 -2020-02-18T00:00,21.1,89,18.4,0,0.028,4.5,5.8 -2020-02-18T01:00,21.6,91,19.3,0,0.028,3.3,5.1 -2020-02-18T02:00,21.3,93,19.7,0,0.055,3.5,6.5 -2020-02-18T03:00,19.7,94,18.3,0,0.055,3,5.6 -2020-02-18T04:00,18.5,95,17.2,0,0.028,3.2,4.7 -2020-02-18T05:00,20.8,90,18.4,0,0.055,1.5,3.8 -2020-02-18T06:00,20.3,90,17.9,0,0.028,3.5,3.8 -2020-02-18T07:00,14.4,93,12.7,0,0,7,7.8 -2020-02-18T08:00,17.1,89,14.4,0,0,4.8,9.2 -2020-02-18T09:00,20.8,84,16.6,0,0,3.8,7.2 -2020-02-18T10:00,25.1,78,19.2,0,0,5.7,8.5 -2020-02-18T11:00,26.2,75,19.4,0,0,8.2,13 -2020-02-18T12:00,27.1,61,15.4,0,0,8.1,14.1 -2020-02-18T13:00,27.6,51,12,0,0,7.4,13.4 -2020-02-18T14:00,27.2,58,14.3,0,0,5.9,12.1 -2020-02-18T15:00,27.3,65,17.1,0,0,4,9.6 -2020-02-18T16:00,25.7,76,19.3,0,0,2.6,6.5 -2020-02-18T17:00,21.7,78,15.9,0,0,4.7,4.7 -2020-02-18T18:00,25.9,69,17.1,0,0,3.5,5.6 -2020-02-18T19:00,22.2,78,16.4,0,0,6,6.7 -2020-02-18T20:00,16.2,86,12.7,0,0,7.2,8.7 -2020-02-18T21:00,14.3,86,10.8,0,0,6.8,8.7 -2020-02-18T22:00,12.2,84,8.4,0,0,6.4,8.7 -2020-02-18T23:00,15.5,78,10,0,0,2.1,7.6 -2020-02-19T00:00,12.2,78,6.5,0,0,4,4.3 -2020-02-19T01:00,10.8,82,6.3,0,0,5.9,7.2 -2020-02-19T02:00,14.3,85,10.5,0,0,3.8,7.2 -2020-02-19T03:00,14,86,10.5,0,0,0.7,4.5 -2020-02-19T04:00,10.1,89,7.4,0,0,3.4,4 -2020-02-19T05:00,15.4,82,11,0,0,1.4,4.5 -2020-02-19T06:00,12.1,78,6.4,0,0,4.5,5.6 -2020-02-19T07:00,11.1,70,3.4,0,0,3.8,5.4 -2020-02-19T08:00,11.7,72,4.3,0,0,5.2,6.7 -2020-02-19T09:00,17.4,73,10.2,0,0,5.4,7.8 -2020-02-19T10:00,19,79,13.5,0,0,9.7,15.4 -2020-02-19T11:00,19,78,13.1,0,0.028,10.4,17.2 -2020-02-19T12:00,19.5,77,13.4,0,0.028,10,17.2 -2020-02-19T13:00,20.2,77,14.2,0,0,9.8,17.2 -2020-02-19T14:00,20.8,78,14.9,0,0.028,10.2,17.2 -2020-02-19T15:00,20.3,82,15.6,0,0.028,9.3,17.4 -2020-02-19T16:00,19.6,84,15.6,0.004,0.055,9.1,15.4 -2020-02-19T17:00,19.7,85,16,0,0.083,7.2,14.5 -2020-02-19T18:00,18.7,89,15.9,0,0.165,9.4,14.1 -2020-02-19T19:00,17.4,87,14.3,0,0.083,7,14.8 -2020-02-19T20:00,16.7,87,13.5,0,0.055,4.3,11.2 -2020-02-19T21:00,15.6,88,12.7,0,0.055,2.1,6.7 -2020-02-19T22:00,15.1,88,12.2,0,0.028,2,4.7 -2020-02-19T23:00,15,89,12.4,0,0.028,0.7,2.7 -2020-02-20T00:00,14.4,91,12.2,0,0.028,2.1,2 -2020-02-20T01:00,10.9,93,9.4,0,0,3.6,4.3 -2020-02-20T02:00,11.7,96,10.9,0,0,1.7,4.3 -2020-02-20T03:00,6.5,94,5.2,0,0,4.5,4.9 -2020-02-20T04:00,6.7,90,4.4,0,0,5.2,6.5 -2020-02-20T05:00,4.5,91,2.4,0,0,4.9,6.3 -2020-02-20T06:00,1.9,89,-0.5,0,0,5.7,6.7 -2020-02-20T07:00,-0.1,87,-3.1,0,0,5,6.7 -2020-02-20T08:00,-1.9,83,-5.8,0,0,5.5,6.5 -2020-02-20T09:00,3.6,74,-3,0,0,2.7,6.5 -2020-02-20T10:00,8.5,66,-0.4,0,0,3.2,5.6 -2020-02-20T11:00,12.9,70,5,0,0,3.2,6.5 -2020-02-20T12:00,16.3,73,9.1,0,0,2.7,6.5 -2020-02-20T13:00,18.1,74,11.1,0,0,3.5,7.2 -2020-02-20T14:00,19.1,75,12.6,0,0,4.1,7.8 -2020-02-20T15:00,19.6,79,14,0,0,2.8,7.8 -2020-02-20T16:00,19.1,79,13.6,0,0,2.3,4.9 -2020-02-20T17:00,19.2,73,11.9,0,0,1.9,3.6 -2020-02-20T18:00,20.9,64,10.5,0,0,3.2,4.3 -2020-02-20T19:00,12.2,74,5.4,0,0,5.3,6.3 -2020-02-20T20:00,11.8,74,5.1,0,0,5.7,6.9 -2020-02-20T21:00,8.8,73,1.9,0,0,5.6,6.9 -2020-02-20T22:00,2,76,-3.7,0,0,5.5,6.7 -2020-02-20T23:00,-0.5,74,-6.8,0,0,6.7,7.8 -2020-02-21T00:00,-0.5,69,-8.2,0,0,8,9.4 -2020-02-21T01:00,0,66,-8.8,0,0,8.1,9.6 -2020-02-21T02:00,1.9,62,-8.2,0,0,7.1,9.6 -2020-02-21T03:00,1.9,63,-7.8,0,0,7.8,9.2 -2020-02-21T04:00,2.1,64,-7.4,0,0,6.8,9.2 -2020-02-21T05:00,2.1,65,-6.9,0,0,7.8,8.3 -2020-02-21T06:00,-1.7,70,-9.1,0,0,8.6,10.3 -2020-02-21T07:00,-1.7,69,-9.3,0,0,8.1,10.1 -2020-02-21T08:00,3.8,62,-6.3,0,0,7.4,9.6 -2020-02-21T09:00,12,55,-1.1,0,0,7.1,8.7 -2020-02-21T10:00,20.6,56,7.4,0,0,7.2,8.3 -2020-02-21T11:00,30.2,54,15.4,0,0,5.9,8.9 -2020-02-21T12:00,35.2,56,21.2,0,0,4.9,9.6 -2020-02-21T13:00,37.7,59,24.8,0,0,4.9,8.5 -2020-02-21T14:00,40.3,55,25.3,0,0,5.4,6.9 -2020-02-21T15:00,39.4,52,23.2,0,0,5.1,6.3 -2020-02-21T16:00,35.5,63,24,0,0,5.8,7.2 -2020-02-21T17:00,40.2,34,14.2,0,0,3.1,6.9 -2020-02-21T18:00,37.5,34,11.8,0,0,0.8,4 -2020-02-21T19:00,29.9,48,12.6,0,0,5.8,6.3 -2020-02-21T20:00,22.8,68,14,0,0,6.1,8.1 -2020-02-21T21:00,16.8,85,13.2,0,0,5.9,7.4 -2020-02-21T22:00,14.5,85,10.7,0,0,8.2,9.4 -2020-02-21T23:00,14.9,78,9.3,0,0,8.6,10.1 -2020-02-22T00:00,17.4,74,10.7,0,0,5.7,10.1 -2020-02-22T01:00,15.4,75,9,0,0,5.9,6.7 -2020-02-22T02:00,12.7,78,7.2,0,0,7.9,9.6 -2020-02-22T03:00,14.9,76,8.6,0,0,6.7,9.6 -2020-02-22T04:00,17.7,72,10.3,0,0,6,9.2 -2020-02-22T05:00,14.8,77,9.1,0,0,9.1,9.2 -2020-02-22T06:00,18.9,75,12.4,0,0,7.4,11 -2020-02-22T07:00,19.9,75,13.2,0,0,7.4,9.6 -2020-02-22T08:00,24.4,72,16.7,0,0,5.8,9.6 -2020-02-22T09:00,28.9,72,21,0,0,4.8,8.7 -2020-02-22T10:00,32.6,72,24.5,0,0,5.3,8.3 -2020-02-22T11:00,37.5,70,28.5,0,0,6.9,8.1 -2020-02-22T12:00,46.9,41,24.6,0,0,4.5,8.7 -2020-02-22T13:00,45,52,28.4,0,0,3.5,5.6 -2020-02-22T14:00,42.7,58,28.9,0,0,5,7.2 -2020-02-22T15:00,39.3,71,30.8,0,0,4.9,8.5 -2020-02-22T16:00,40.5,63,28.9,0,0,3.2,6.9 -2020-02-22T17:00,43.4,51,26.3,0,0,1.1,4.3 -2020-02-22T18:00,42.6,52,26.3,0,0,5.1,5.8 -2020-02-22T19:00,35.3,65,24.9,0,0,3.8,6 -2020-02-22T20:00,34.4,69,25.4,0,0,2.9,4.9 -2020-02-22T21:00,29.8,87,26.2,0,0,4,5.6 -2020-02-22T22:00,28.7,91,26.4,0,0,3.3,4.9 -2020-02-22T23:00,29.9,90,27.2,0,0,3.5,4.5 -2020-02-23T00:00,32.7,80,27.1,0,0,0.7,5.8 -2020-02-23T01:00,31.2,83,26.5,0,0,1.2,2.9 -2020-02-23T02:00,30.3,79,24.4,0,0,6.6,8.7 -2020-02-23T03:00,28.3,73,20.8,0,0,9.1,11 -2020-02-23T04:00,32.2,72,24.2,0,0,5.5,11.2 -2020-02-23T05:00,33,70,24.3,0,0,7.9,11.2 -2020-02-23T06:00,33.5,72,25.6,0,0,7.9,14.1 -2020-02-23T07:00,33.7,75,26.7,0,0.055,5.9,12.5 -2020-02-23T08:00,33.9,82,29,0,0.11,6.2,9.6 -2020-02-23T09:00,33.6,86,30,0,0.138,5.9,10.5 -2020-02-23T10:00,33.7,87,30.4,0.004,0.083,5.2,10.5 -2020-02-23T11:00,34.2,89,31.2,0.004,0.055,6.3,9.8 -2020-02-23T12:00,33.9,89,31.1,0,0.138,7.4,11.6 -2020-02-23T13:00,33.6,90,31.1,0,0.138,7.9,12.5 -2020-02-23T14:00,33.8,90,31.1,0,0.083,7.2,12.5 -2020-02-23T15:00,34.1,87,30.7,0.004,0.028,5.6,11.4 -2020-02-23T16:00,34,85,29.9,0,0,4.3,9.6 -2020-02-23T17:00,32.5,87,29,0,0,4.6,6.9 -2020-02-23T18:00,25.8,93,24,0,0,8.1,9.4 -2020-02-23T19:00,26.2,91,24,0,0,7.1,9.6 -2020-02-23T20:00,30.7,88,27.6,0,0,4.2,8.7 -2020-02-23T21:00,30.5,86,26.7,0,0,5.9,7.4 -2020-02-23T22:00,26.7,84,22.6,0,0,7.7,10.1 -2020-02-23T23:00,24.3,88,21.2,0,0,6.6,9.4 -2020-02-24T00:00,21.3,89,18.7,0,0,6.2,9.2 -2020-02-24T01:00,19.6,88,16.7,0,0,6.9,9.2 -2020-02-24T02:00,16.9,85,13.3,0,0,8.9,10.5 -2020-02-24T03:00,17.7,77,11.8,0,0,9.3,12.3 -2020-02-24T04:00,19,73,11.9,0,0,5.6,11 -2020-02-24T05:00,12.7,81,8.1,0,0,7.1,7.4 -2020-02-24T06:00,11.7,81,7.1,0,0,7.4,8.7 -2020-02-24T07:00,11.4,81,6.8,0,0,9.4,11.2 -2020-02-24T08:00,20.8,70,12.4,0,0,7.7,11.4 -2020-02-24T09:00,33,54,18.3,0,0.028,22.4,33.1 -2020-02-24T10:00,32.4,51,16.3,0,0,15.1,36.7 -2020-02-24T11:00,33,49,15.8,0,0,12.5,24.6 -2020-02-24T12:00,32.9,50,16.4,0,0,14.2,24.6 -2020-02-24T13:00,33.3,49,16.1,0,0,14.9,23.7 -2020-02-24T14:00,32.3,49,15.3,0,0,18.3,29.8 -2020-02-24T15:00,31.6,50,14.9,0,0,14.9,30 -2020-02-24T16:00,30.2,50,14,0,0,11.6,24.4 -2020-02-24T17:00,28.1,50,11.8,0,0,6.5,19 -2020-02-24T18:00,25.4,52,10.2,0,0,8.5,13.2 -2020-02-24T19:00,22.6,57,9.5,0,0,7.4,14.5 -2020-02-24T20:00,19.6,60,7.8,0,0,6.8,12.1 -2020-02-24T21:00,20.3,61,8.9,0,0,7.5,11.9 -2020-02-24T22:00,20.3,59,8.4,0,0,9.2,14.3 -2020-02-24T23:00,19.9,59,7.7,0,0,9.6,15.4 -2020-02-25T00:00,20.5,58,7.9,0,0,9.5,15.7 -2020-02-25T01:00,19.2,58,6.9,0,0,7.9,15.4 -2020-02-25T02:00,17.2,60,5.7,0,0,6.4,12.5 -2020-02-25T03:00,18.2,55,4.9,0,0,5.4,9.8 -2020-02-25T04:00,18.3,56,5.3,0,0,4,6.7 -2020-02-25T05:00,13.9,57,1.3,0,0,7.7,6.7 -2020-02-25T06:00,18.2,61,7.2,0,0,11.8,16.1 -2020-02-25T07:00,20,62,9.1,0,0,20.9,33.3 -2020-02-25T08:00,20.1,64,10,0,0,23.1,37.1 -2020-02-25T09:00,20.8,62,9.9,0,0,21.3,37.6 -2020-02-25T10:00,21.5,63,10.7,0,0.028,21.8,35.1 -2020-02-25T11:00,22.5,67,13,0,0.028,19.3,35.3 -2020-02-25T12:00,23.5,59,11,0,0.028,21.6,34.9 -2020-02-25T13:00,24.2,60,12.3,0,0.028,21.3,35.1 -2020-02-25T14:00,24.3,60,12.2,0,0.055,20.8,34.4 -2020-02-25T15:00,23.8,65,13.8,0,0,17.7,33.6 -2020-02-25T16:00,23,67,13.7,0,0,15.5,28.9 -2020-02-25T17:00,20.7,67,11.6,0,0,9.4,25.1 -2020-02-25T18:00,15.9,71,8.2,0,0,5.7,15.2 -2020-02-25T19:00,13.2,66,4,0,0,6.3,10.3 -2020-02-25T20:00,11,66,2,0,0,6,9.6 -2020-02-25T21:00,6.4,68,-1.8,0,0,8.1,10.3 -2020-02-25T22:00,4.3,67,-4.2,0,0,5.7,9.8 -2020-02-25T23:00,1.4,71,-5.9,0,0,5.1,7.2 -2020-02-26T00:00,-0.4,73,-7.1,0,0,5.7,7.2 -2020-02-26T01:00,-4.5,77,-10,0,0,6.3,7.4 -2020-02-26T02:00,-6.8,76,-12.5,0,0,8.6,9.8 -2020-02-26T03:00,-5.2,71,-12.3,0,0,7.2,9.8 -2020-02-26T04:00,-2.9,66,-11.6,0,0,6,9.2 -2020-02-26T05:00,-3.5,64,-12.5,0,0,7.5,8.7 -2020-02-26T06:00,-1.7,63,-11.4,0,0,6.1,9.4 -2020-02-26T07:00,-0.1,63,-9.7,0,0,5.5,8.5 -2020-02-26T08:00,6.1,63,-3.9,0,0,5.3,9.2 -2020-02-26T09:00,14,63,3.7,0,0,4.3,8.5 -2020-02-26T10:00,19.1,70,10.9,0,0,6.9,11.4 -2020-02-26T11:00,23.2,66,13.6,0,0,7.1,12.3 -2020-02-26T12:00,26.3,55,12.4,0,0,6.7,12.1 -2020-02-26T13:00,28.9,57,15.4,0,0,6.8,12.1 -2020-02-26T14:00,29.9,55,15.7,0,0,4.6,11.6 -2020-02-26T15:00,29.7,56,15.8,0,0,2.5,8.3 -2020-02-26T16:00,29.9,70,21.5,0,0,1.9,4.5 -2020-02-26T17:00,32.4,59,19.5,0,0,2.2,6.7 -2020-02-26T18:00,23,74,15.9,0,0,6.9,7.8 -2020-02-26T19:00,20,72,12.5,0,0,4.6,8.3 -2020-02-26T20:00,16.5,79,11,0,0,5.4,7.4 -2020-02-26T21:00,15.4,75,9.1,0,0,6,8.1 -2020-02-26T22:00,14.7,72,7.3,0,0,6,8.1 -2020-02-26T23:00,16.7,68,7.9,0,0,5.9,8.9 -2020-02-27T00:00,17.9,69,9.3,0,0,7.9,12.5 -2020-02-27T01:00,17.5,76,11.2,0,0,5.8,13.2 -2020-02-27T02:00,17.2,75,10.8,0,0,5,8.5 -2020-02-27T03:00,15.9,72,8.5,0,0,5.8,9.4 -2020-02-27T04:00,16,72,8.4,0,0,5.7,8.7 -2020-02-27T05:00,22.9,57,10.1,0,0,0.4,8.7 -2020-02-27T06:00,18.6,68,9.8,0,0,5.5,7.4 -2020-02-27T07:00,29.5,47,11.8,0,0,6.6,8.3 -2020-02-27T08:00,30.1,49,13,0,0,4.2,8.3 -2020-02-27T09:00,30.8,61,19,0,0,2.3,5.4 -2020-02-27T10:00,32.5,77,26.1,0,0,1.5,5.4 -2020-02-27T11:00,35.7,67,25.9,0,0,2.3,3.6 -2020-02-27T12:00,36.6,62,24.8,0,0,5.1,7.6 -2020-02-27T13:00,36.3,63,25,0,0,6.3,10.3 -2020-02-27T14:00,36.1,64,25.2,0,0,4.6,10.1 -2020-02-27T15:00,36,65,25.3,0,0,2.9,7.2 -2020-02-27T16:00,36.1,53,20.8,0,0,2.3,4.9 -2020-02-27T17:00,39.3,45,19.6,0,0,3.4,6.7 -2020-02-27T18:00,29.2,63,18.3,0,0,8.8,10.3 -2020-02-27T19:00,28.9,52,13.5,0,0,7.9,11.9 -2020-02-27T20:00,26.7,54,12.5,0,0,3.6,9.8 -2020-02-27T21:00,23.7,72,15.9,0,0,4.8,7.4 -2020-02-27T22:00,21,74,14.2,0,0,6.8,9.2 -2020-02-27T23:00,15.8,80,10.8,0,0,8.2,10.3 -2020-02-28T00:00,13.5,81,8.8,0,0,6.2,10.1 -2020-02-28T01:00,12.2,77,6.4,0,0,6.9,8.9 -2020-02-28T02:00,12.7,74,5.9,0,0,6.9,9.4 -2020-02-28T03:00,12,74,5.4,0,0,7,9.2 -2020-02-28T04:00,10.6,75,4.3,0,0,7.8,9.6 -2020-02-28T05:00,14.7,69,6.4,0,0,6.1,9.6 -2020-02-28T06:00,14,69,5.5,0,0,8.1,9.6 -2020-02-28T07:00,14.2,71,6.4,0,0,7.3,9.8 -2020-02-28T08:00,19.7,69,11.3,0,0,4.4,9.4 -2020-02-28T09:00,28.3,65,18.1,0,0,3.1,6.3 -2020-02-28T10:00,35.5,57,21.8,0,0,4.9,6.7 -2020-02-28T11:00,38.7,60,26,0,0,2.5,7.8 -2020-02-28T12:00,42.4,43,21.3,0,0,2.6,3.1 -2020-02-28T13:00,42.1,55,27.2,0,0,4.3,4.7 -2020-02-28T14:00,41.4,59,28,0,0,5.9,7.4 -2020-02-28T15:00,41.1,57,27.1,0,0,6.5,8.5 -2020-02-28T16:00,45.8,34,19,0,0,3.8,8.1 -2020-02-28T17:00,38.5,58,24.9,0,0,6.2,4.5 -2020-02-28T18:00,45.8,33,18.5,0,0,1.7,7.4 -2020-02-28T19:00,38,45,18.4,0,0,2.5,2.9 -2020-02-28T20:00,21.9,83,17.7,0,0,4.8,6 -2020-02-28T21:00,19,91,16.7,0,0,7.3,8.7 -2020-02-28T22:00,18.7,84,14.7,0,0,8.1,9.8 -2020-02-28T23:00,17.1,83,12.8,0,0,8.1,9.8 -2020-02-29T00:00,15.1,83,10.9,0,0,8.7,10.7 -2020-02-29T01:00,13.9,83,9.7,0,0,8.5,10.7 -2020-02-29T02:00,13.4,82,8.9,0,0,8.5,11 -2020-02-29T03:00,12.5,82,8.1,0,0,8.3,10.5 -2020-02-29T04:00,11.8,81,7.1,0,0,8.7,11 -2020-02-29T05:00,16,75,9.6,0,0,7.6,11 -2020-02-29T06:00,18.5,74,11.6,0,0,6.2,8.7 -2020-02-29T07:00,19.9,74,12.8,0,0,6,7.6 -2020-02-29T08:00,24.8,72,17.2,0,0,4.9,7.6 -2020-02-29T09:00,30.5,79,24.6,0,0,2.8,6.5 -2020-02-29T10:00,35.3,73,27.7,0,0,3.5,5.1 -2020-02-29T11:00,39.1,64,27.9,0,0,3.8,6 -2020-02-29T12:00,44.6,38,20.8,0,0,1.4,5.1 -2020-02-29T13:00,46.1,37,21,0,0,3.4,4.5 -2020-02-29T14:00,48.4,33,20.6,0,0,1.6,4.9 -2020-02-29T15:00,49.1,36,23,0,0,2.3,3.8 -2020-02-29T16:00,41.2,61,28.7,0,0,3.7,5.6 -2020-02-29T17:00,39.4,64,28.1,0,0,6.1,6 -2020-02-29T18:00,42.6,40,20.2,0,0,5,7.8 -2020-02-29T19:00,29.2,70,20.8,0,0,6.7,9.4 -2020-02-29T20:00,28,78,22,0,0,5.7,9.2 -2020-02-29T21:00,25.3,80,19.9,0,0,5.2,9.2 -2020-02-29T22:00,22.6,84,18.4,0,0,6.6,9.4 -2020-02-29T23:00,20.7,81,15.6,0,0,8.1,11 -2020-03-01T00:00,19.7,81,14.9,0,0,7.9,10.1 -2020-03-01T01:00,17.4,83,13,0,0,8.6,10.5 -2020-03-01T02:00,19.1,79,13.6,0,0,7.9,10.7 -2020-03-01T03:00,20.3,76,14.1,0,0,7.3,9.8 -2020-03-01T04:00,20.1,77,14,0,0,7,8.9 -2020-03-01T05:00,19.1,82,14.5,0,0,4,9.4 -2020-03-01T06:00,19.9,80,14.6,0,0,4.9,6.5 -2020-03-01T07:00,14.8,84,10.9,0,0,6.4,8.5 -2020-03-01T08:00,23.2,81,18.1,0,0,3.4,8.9 -2020-03-01T09:00,30.7,70,22.2,0,0,9.3,13.9 -2020-03-01T10:00,30.2,73,22.6,0,0,10.1,18.1 -2020-03-01T11:00,34.1,68,24.7,0,0,7.9,17.7 -2020-03-01T12:00,35.9,66,25.6,0,0,5.8,14.3 -2020-03-01T13:00,36.3,68,26.6,0,0,7.2,13.2 -2020-03-01T14:00,36.3,69,27,0,0,7.1,13.6 -2020-03-01T15:00,36.4,69,27.2,0,0.083,6.5,13.9 -2020-03-01T16:00,36.2,71,27.6,0,0.028,4.1,12.3 -2020-03-01T17:00,32.8,81,27.6,0,0.028,6.6,11 -2020-03-01T18:00,31.3,84,26.9,0,0.11,7.5,12.3 -2020-03-01T19:00,30.4,86,26.6,0,0.138,9.1,15.4 -2020-03-01T20:00,28.9,88,25.7,0,0.138,7.6,15 -2020-03-01T21:00,27.9,90,25.3,0,0.138,4.7,12.5 -2020-03-01T22:00,26.5,91,24.3,0,0.055,2.8,8.1 -2020-03-01T23:00,25.6,92,23.7,0,0.028,3,4.9 -2020-03-02T00:00,26,91,23.8,0,0,1.4,4 -2020-03-02T01:00,25.3,92,23.3,0,0,3,4 -2020-03-02T02:00,24.7,95,23.5,0,0,2.5,4 -2020-03-02T03:00,22,98,21.5,0,0,3,3.4 -2020-03-02T04:00,22,96,20.9,0,0,4.1,6.5 -2020-03-02T05:00,23.3,93,21.7,0,0.028,4.3,7.2 -2020-03-02T06:00,20.8,93,19.1,0,0,3.7,6.9 -2020-03-02T07:00,21.7,96,20.7,0,0,1.4,5.4 -2020-03-02T08:00,22.2,97,21.5,0,0,1.6,4.9 -2020-03-02T09:00,22.2,98,21.8,0,0,0.7,6 -2020-03-02T10:00,24.5,95,23.3,0,0,3.4,9.2 -2020-03-02T11:00,30.1,81,24.9,0,0,2.5,8.9 -2020-03-02T12:00,35.2,69,26.2,0,0,4.1,8.5 -2020-03-02T13:00,39.7,66,29.3,0,0,2.7,7.6 -2020-03-02T14:00,40.6,65,29.9,0,0,4.1,6.9 -2020-03-02T15:00,41.6,55,26.6,0,0,4.2,8.3 -2020-03-02T16:00,40.4,56,25.8,0,0,5.2,9.2 -2020-03-02T17:00,38.7,59,25.7,0,0,4.8,9.6 -2020-03-02T18:00,29.9,61,18,0,0,5.1,10.3 -2020-03-02T19:00,36.3,46,17.3,0,0,10.5,15.4 -2020-03-02T20:00,35.5,50,18.9,0,0,10.9,22.1 -2020-03-02T21:00,30.6,49,13.8,0,0,11,18.3 -2020-03-02T22:00,24.3,62,13.2,0,0,9.6,14.5 -2020-03-02T23:00,24.7,63,13.9,0,0,5.9,12.1 -2020-03-03T00:00,24.1,63,13.4,0,0,6.7,11.4 -2020-03-03T01:00,17.6,70,9.3,0,0,8.1,11.2 -2020-03-03T02:00,17.2,69,8.8,0,0,7.7,10.1 -2020-03-03T03:00,13.2,78,7.5,0,0,8.2,10.5 -2020-03-03T04:00,11.6,81,6.9,0,0,7.3,11 -2020-03-03T05:00,16.9,77,10.9,0,0,4.7,10.3 -2020-03-03T06:00,14.4,76,8.2,0,0,6.8,10.3 -2020-03-03T07:00,16.8,74,10,0,0,5.8,10.3 -2020-03-03T08:00,24.9,68,16,0,0,5.8,10.1 -2020-03-03T09:00,33.3,61,21.2,0,0,4.8,11.4 -2020-03-03T10:00,38.8,58,25.4,0,0,3.2,8.7 -2020-03-03T11:00,47.6,37,22.3,0,0,6.5,14.8 -2020-03-03T12:00,51.6,29,20.4,0,0,5,14.8 -2020-03-03T13:00,54.5,25,19.1,0,0,4.5,13.2 -2020-03-03T14:00,56.2,22,18.3,0,0,10.5,19 -2020-03-03T15:00,55,25,19.8,0,0,9.8,21.3 -2020-03-03T16:00,53.2,31,22.9,0,0,9,17.9 -2020-03-03T17:00,49.5,47,30.1,0,0,6,18.1 -2020-03-03T18:00,41.1,58,27.3,0,0,6.7,10.5 -2020-03-03T19:00,39.7,44,19.8,0,0,9.6,18.6 -2020-03-03T20:00,37.2,48,19.2,0,0,5.1,15.2 -2020-03-03T21:00,29.5,63,18.6,0,0,6.7,8.1 -2020-03-03T22:00,27.5,67,18,0,0,5.5,8.9 -2020-03-03T23:00,23.1,80,17.9,0,0,4.3,8.3 -2020-03-04T00:00,24.3,78,18.5,0,0,6.2,9.2 -2020-03-04T01:00,24.6,74,17.5,0,0,5.7,9.4 -2020-03-04T02:00,24.2,70,15.7,0,0,5.8,9.2 -2020-03-04T03:00,22.9,70,14.5,0,0,5.6,9.2 -2020-03-04T04:00,23.2,66,13.6,0,0,6.1,9.8 -2020-03-04T05:00,20,67,10.9,0,0,6.5,9.6 -2020-03-04T06:00,23.2,60,11.5,0,0,5,8.1 -2020-03-04T07:00,24.6,58,12.1,0,0,5.4,7.8 -2020-03-04T08:00,29.8,50,13.6,0,0,4.5,10.1 -2020-03-04T09:00,38.8,44,18.5,0,0,2.3,10.1 -2020-03-04T10:00,46.5,39,23.1,0,0,2.3,8.5 -2020-03-04T11:00,52.7,28,20.7,0,0,7.8,15.2 -2020-03-04T12:00,56,24,19.9,0,0,10.3,19.9 -2020-03-04T13:00,58.2,22,19.6,0,0,10.1,19.9 -2020-03-04T14:00,59.6,21,19.1,0,0,10.2,19.7 -2020-03-04T15:00,59.5,22,20.2,0,0,9.2,19.2 -2020-03-04T16:00,58.6,25,23.1,0,0,6.5,16.8 -2020-03-04T17:00,52.3,24,16.4,0,0,8.7,11 -2020-03-04T18:00,46.9,23,11.1,0,0,7,15.2 -2020-03-04T19:00,40.3,28,10,0,0,5.6,11.4 -2020-03-04T20:00,32.1,56,18.2,0,0,7.5,11.4 -2020-03-04T21:00,30.7,60,18.4,0,0,9.3,15 -2020-03-04T22:00,31.1,50,14.8,0,0,5.6,14.8 -2020-03-04T23:00,31.6,43,11.7,0,0,8.9,12.8 -2020-03-05T00:00,29.6,48,12.3,0,0,8.3,15.2 -2020-03-05T01:00,27.8,58,14.7,0,0,6.2,13.2 -2020-03-05T02:00,26.2,62,15,0,0,6.5,11 -2020-03-05T03:00,24.8,68,15.6,0,0,5.5,10.3 -2020-03-05T04:00,26.7,58,13.9,0,0,5.8,9.4 -2020-03-05T05:00,28,62,16.8,0,0,3,9.2 -2020-03-05T06:00,23.8,81,18.8,0,0,5.3,4.9 -2020-03-05T07:00,27,79,21.2,0,0,4.1,6.7 -2020-03-05T08:00,29.9,70,21.5,0,0,5,10.3 -2020-03-05T09:00,33.4,63,22.2,0,0,7.2,15.2 -2020-03-05T10:00,37.1,56,23,0,0,4.7,15.7 -2020-03-05T11:00,39.8,52,23.5,0,0,1.7,12.8 -2020-03-05T12:00,42.9,47,24.2,0,0,3.2,11.9 -2020-03-05T13:00,46.1,44,25.6,0,0,2.6,11.6 -2020-03-05T14:00,48.5,42,26.2,0,0,3.3,11.2 -2020-03-05T15:00,49.6,42,27.3,0,0,4.8,12.3 -2020-03-05T16:00,49.5,45,28.8,0,0,6.6,13.4 -2020-03-05T17:00,47.2,53,31.1,0,0,6.3,14.1 -2020-03-05T18:00,39.1,71,30.4,0,0,5,11.2 -2020-03-05T19:00,34.9,78,28.8,0,0,5,9.2 -2020-03-05T20:00,32,82,27.2,0,0,3.4,8.5 -2020-03-05T21:00,29.1,87,25.8,0,0,3.7,4.9 -2020-03-05T22:00,27.1,90,24.6,0,0,3.7,5.6 -2020-03-05T23:00,25.1,92,23,0,0,3,5.8 -2020-03-06T00:00,23.7,91,21.5,0,0,3.5,4.9 -2020-03-06T01:00,23.4,90,20.8,0,0,3.3,5.1 -2020-03-06T02:00,22.6,89,19.9,0,0,2.9,4.9 -2020-03-06T03:00,22.9,85,19,0,0,3.4,5.1 -2020-03-06T04:00,24,75,17.2,0,0,3.8,5.8 -2020-03-06T05:00,23.7,74,16.5,0,0,4,6.3 -2020-03-06T06:00,24.7,69,16,0,0,4.2,6.9 -2020-03-06T07:00,26.5,66,16.6,0,0,4.1,6.7 -2020-03-06T08:00,33.1,59,20.1,0,0,4.5,9.6 -2020-03-06T09:00,43.1,50,25.5,0,0,3.1,9.6 -2020-03-06T10:00,52.1,36,26,0,0,4.3,10.5 -2020-03-06T11:00,58.1,26,23.5,0,0,7.4,15.4 -2020-03-06T12:00,61.6,21,21.4,0,0,8.5,17.7 -2020-03-06T13:00,63.3,19,20.5,0,0,7.9,17.7 -2020-03-06T14:00,64,19,21.5,0,0,7.1,16.6 -2020-03-06T15:00,63.9,21,22.6,0,0,6.8,15 -2020-03-06T16:00,62.2,25,26.1,0,0,6.3,13.6 -2020-03-06T17:00,58.7,50,40,0,0,4.8,11.4 -2020-03-06T18:00,57.5,36,30.7,0,0,2.8,5.8 -2020-03-06T19:00,41.4,65,30.4,0,0,5.9,7.4 -2020-03-06T20:00,37.2,72,29,0,0,5.4,7.4 -2020-03-06T21:00,34.7,76,27.9,0,0,4.1,6.9 -2020-03-06T22:00,34.7,72,26.5,0,0,3.1,6.7 -2020-03-06T23:00,30.7,80,25.4,0,0,5.4,5.8 -2020-03-07T00:00,32,72,24,0,0,4.9,6.7 -2020-03-07T01:00,30.5,74,23.2,0,0,6.5,7.8 -2020-03-07T02:00,30.3,72,22.5,0,0,6.3,7.6 -2020-03-07T03:00,29.2,73,21.7,0,0,6.8,8.1 -2020-03-07T04:00,28,76,21.5,0,0,6.3,8.3 -2020-03-07T05:00,27.8,78,21.7,0,0,5.9,7.8 -2020-03-07T06:00,29.2,73,21.5,0,0,5.2,7.2 -2020-03-07T07:00,31.6,67,21.9,0,0,4.6,7.4 -2020-03-07T08:00,38.8,57,25,0,0,5.5,10.5 -2020-03-07T09:00,49,46,29.2,0,0,4,10.5 -2020-03-07T10:00,57.7,32,28.1,0,0,6.5,13.4 -2020-03-07T11:00,61.9,22,23.1,0,0,11.2,20.8 -2020-03-07T12:00,62.5,22,23.3,0,0,11.3,22.4 -2020-03-07T13:00,63,22,23.5,0,0,10.1,21.7 -2020-03-07T14:00,63.3,22,24.1,0,0,9.4,19.5 -2020-03-07T15:00,63,23,24.9,0,0,8.6,18.6 -2020-03-07T16:00,62,25,25.9,0,0,8.3,16.8 -2020-03-07T17:00,59.5,43,37.2,0,0,4.9,15.2 -2020-03-07T18:00,51.9,37,26.2,0,0,7,10.3 -2020-03-07T19:00,44.4,53,28.1,0,0,6.5,10.7 -2020-03-07T20:00,39.8,61,27.6,0,0,6.5,11.6 -2020-03-07T21:00,39,60,26.4,0,0,5.9,10.7 -2020-03-07T22:00,38.1,62,26.1,0,0,5.9,10.1 -2020-03-07T23:00,38.8,58,25.5,0,0,7.1,11.2 -2020-03-08T00:00,40.4,54,24.9,0,0,8.5,14.1 -2020-03-08T01:00,39.7,55,24.8,0,0,8.9,14.5 -2020-03-08T02:00,37.8,59,24.7,0,0,7.9,14.5 -2020-03-08T03:00,35.5,65,24.8,0,0,7.6,13 -2020-03-08T04:00,34.5,66,24.4,0,0,6.5,12.3 -2020-03-08T05:00,31.7,77,25.3,0,0,4.7,10.7 -2020-03-08T06:00,30.7,80,25.1,0,0,4.9,6.7 -2020-03-08T07:00,33.7,72,25.7,0,0,3.4,6.5 -2020-03-08T08:00,41.8,59,28.6,0,0,4.3,9.2 -2020-03-08T09:00,51.2,47,31.4,0,0,3.7,10.1 -2020-03-08T10:00,58,36,31.4,0,0,5.4,12.5 -2020-03-08T11:00,61.7,29,28.9,0,0,5.1,14.1 -2020-03-08T12:00,63.2,25,27.1,0,0,2.6,13.2 -2020-03-08T13:00,64.5,23,26.1,0,0,3.4,10.5 -2020-03-08T14:00,64.8,23,25.6,0,0,8.7,17.7 -2020-03-08T15:00,62.5,24,25.3,0,0,4.7,17.9 -2020-03-08T16:00,61.1,28,27.5,0,0,10.5,18.8 -2020-03-08T17:00,58.4,34,30.1,0,0,11,18.8 -2020-03-08T18:00,51.3,45,30.7,0,0,6.8,19.2 -2020-03-08T19:00,46.2,73,37.9,0.016,0,6.9,12.5 -2020-03-08T20:00,45.3,85,41,0.051,0,8.4,14.5 -2020-03-08T21:00,43.3,88,40,0.079,0,6.2,13.6 -2020-03-08T22:00,43.3,89,40.3,0.079,0,7.5,11.9 -2020-03-08T23:00,38.8,98,38.3,0.067,0,9.8,16.8 -2020-03-09T00:00,36.7,99,36.4,0.024,0,6.9,16.3 -2020-03-09T01:00,36.5,98,35.9,0.008,0,0.9,12.1 -2020-03-09T02:00,36.9,94,35.3,0.004,0,2.8,6.5 -2020-03-09T03:00,37.6,92,35.4,0,0,1.4,5.8 -2020-03-09T04:00,36.3,95,35,0,0,2.3,3.1 -2020-03-09T05:00,37.9,93,36.1,0,0,3.6,3.1 -2020-03-09T06:00,38.1,93,36.2,0,0,1.8,6 -2020-03-09T07:00,38.3,93,36.4,0,0,3,5.6 -2020-03-09T08:00,38.4,92,36.3,0,0,0,6.5 -2020-03-09T09:00,39.5,88,36.2,0,0,3.6,8.7 -2020-03-09T10:00,44.1,73,36.1,0,0,4.3,11.9 -2020-03-09T11:00,49.6,52,32.8,0,0,3.8,12.3 -2020-03-09T12:00,54.1,35,26.9,0,0,4,12.5 -2020-03-09T13:00,56.6,29,25.1,0,0,4.5,13.4 -2020-03-09T14:00,57.7,26,23.3,0,0,5.7,13.6 -2020-03-09T15:00,59.2,24,21.9,0,0,6.4,13.9 -2020-03-09T16:00,58.4,24,21.7,0,0,7.6,15.2 -2020-03-09T17:00,55,45,34.2,0,0,3.2,14.5 -2020-03-09T18:00,51.4,58,37,0.004,0,0.9,6.5 -2020-03-09T19:00,45.2,70,36.1,0,0,4.5,7.4 -2020-03-09T20:00,39.6,83,35,0,0,3.9,8.3 -2020-03-09T21:00,36.2,91,34,0,0,2.9,6.7 -2020-03-09T22:00,34.5,92,32.4,0,0,3.2,5.4 -2020-03-09T23:00,32.1,93,30.3,0,0,4,6.9 -2020-03-10T00:00,30.7,91,28.4,0,0,2.8,6.9 -2020-03-10T01:00,31.5,81,26.2,0,0,3.4,5.8 -2020-03-10T02:00,29.6,81,24.5,0,0,4.1,5.6 -2020-03-10T03:00,28.3,82,23.5,0,0,4.8,6.3 -2020-03-10T04:00,28.9,75,22,0,0,4.3,6.7 -2020-03-10T05:00,29.4,68,20.3,0,0,5.2,7.8 -2020-03-10T06:00,29.1,68,19.9,0,0,4.8,9.4 -2020-03-10T07:00,30.7,67,21,0,0,5.1,7.8 -2020-03-10T08:00,38.5,56,24,0,0,4.1,10.1 -2020-03-10T09:00,46.6,44,25.9,0,0,2.8,9.2 -2020-03-10T10:00,53,32,23.7,0,0,5.7,13.2 -2020-03-10T11:00,56.1,27,22.5,0,0,6.9,15.4 -2020-03-10T12:00,57.8,27,24.2,0,0,7.5,16.6 -2020-03-10T13:00,58.5,28,25.5,0,0,8.9,19 -2020-03-10T14:00,58.8,29,26.7,0,0,9.5,20.4 -2020-03-10T15:00,60.6,27,26.6,0,0,5.4,19.2 -2020-03-10T16:00,60.1,22,21.1,0,0,10.7,19 -2020-03-10T17:00,57.1,30,26.2,0,0,7.4,20.8 -2020-03-10T18:00,47.2,45,27.1,0,0,6.5,12.8 -2020-03-10T19:00,48.6,40,25.4,0,0,4.4,8.7 -2020-03-10T20:00,42.7,54,27.3,0,0,4.8,6.9 -2020-03-10T21:00,40.7,62,28.7,0,0,13.1,17.9 -2020-03-10T22:00,40.6,59,27.3,0,0,9.2,21 -2020-03-10T23:00,36.3,69,27.1,0,0,5.6,14.8 -2020-03-11T00:00,35.9,65,25.2,0,0,6.3,9.8 -2020-03-11T01:00,35,66,24.8,0,0,5.8,10.7 -2020-03-11T02:00,33.1,66,23.1,0,0,5.1,9.4 -2020-03-11T03:00,29.5,76,22.7,0,0,6.3,7.8 -2020-03-11T04:00,28.4,78,22.4,0,0,5.7,8.1 -2020-03-11T05:00,28.3,76,21.7,0,0,5.3,7.6 -2020-03-11T06:00,27.9,73,20.5,0,0,4.7,8.1 -2020-03-11T07:00,32.3,61,20.2,0,0,6,9.2 -2020-03-11T08:00,41.5,48,23.5,0,0,6.2,12.3 -2020-03-11T09:00,48.6,41,26.2,0,0,5.2,11.9 -2020-03-11T10:00,54.3,33,26,0,0,5.4,13.4 -2020-03-11T11:00,59.1,27,25.3,0,0,5.4,13.6 -2020-03-11T12:00,62.1,24,24.7,0,0,6.1,14.8 -2020-03-11T13:00,63.8,24,26.6,0,0,5.2,14.8 -2020-03-11T14:00,64.9,24,27.3,0,0,4.7,13.6 -2020-03-11T15:00,65,24,27.6,0,0,7.1,14.1 -2020-03-11T16:00,63.8,25,27,0,0,8.6,16.6 -2020-03-11T17:00,61.8,53,44.4,0,0,2.9,15.7 -2020-03-11T18:00,60.3,34,31.5,0,0,4.7,6.7 -2020-03-11T19:00,48.5,53,32.3,0,0,5.4,5.4 -2020-03-11T20:00,49.1,45,28.6,0,0,9.2,15.2 -2020-03-11T21:00,45.1,50,27.8,0,0,6.5,15.2 -2020-03-11T22:00,40.5,57,26.6,0,0,7.6,11 -2020-03-11T23:00,42.2,54,26.7,0,0,7.8,10.1 -2020-03-12T00:00,43,44,22.5,0,0,13,24.4 -2020-03-12T01:00,43.8,43,22.5,0,0,9.9,23 -2020-03-12T02:00,39.8,53,24.1,0,0,6.2,15.9 -2020-03-12T03:00,36,64,24.9,0,0,7.8,9.4 -2020-03-12T04:00,36.5,62,24.5,0,0,4,9.2 -2020-03-12T05:00,36.4,70,27.4,0,0,4.6,7.2 -2020-03-12T06:00,37.3,67,27.3,0,0,4.5,8.5 -2020-03-12T07:00,39.4,63,27.9,0,0,4,7.2 -2020-03-12T08:00,43.5,57,29.4,0,0,9.1,13 -2020-03-12T09:00,46.8,51,29.5,0,0,9.7,22.1 -2020-03-12T10:00,48.6,49,30.2,0,0,6.5,18.6 -2020-03-12T11:00,49.8,48,30.9,0,0,8.8,17.9 -2020-03-12T12:00,50.5,48,31.7,0,0,11.9,23.3 -2020-03-12T13:00,51.6,45,30.8,0,0,8.4,23.5 -2020-03-12T14:00,49.7,47,30.1,0,0,10.3,18.3 -2020-03-12T15:00,44.5,58,30.7,0,0,12.7,25.7 -2020-03-12T16:00,46.1,54,30.3,0,0,8.6,22.8 -2020-03-12T17:00,42,56,27.5,0,0,12.3,17 -2020-03-12T18:00,38.5,65,27.6,0,0,8.5,21.9 -2020-03-12T19:00,37.5,68,27.8,0,0,5.1,13.9 -2020-03-12T20:00,37.5,67,27.5,0,0,4.4,9.8 -2020-03-12T21:00,37.2,68,27.6,0,0,2.2,7.8 -2020-03-12T22:00,36.8,70,27.9,0,0,1.5,4.9 -2020-03-12T23:00,36.1,72,28,0,0,2.2,4.7 -2020-03-13T00:00,36.6,71,28.2,0,0,3.4,6.3 -2020-03-13T01:00,36.4,71,28,0,0,7.9,12.8 -2020-03-13T02:00,34.5,76,27.9,0,0,11.1,17.9 -2020-03-13T03:00,32.2,84,27.8,0,0,11.4,19.9 -2020-03-13T04:00,31.5,86,27.7,0,0,9.6,19.2 -2020-03-13T05:00,31,84,26.8,0,0,6.5,16.1 -2020-03-13T06:00,31.6,81,26.5,0,0,6,11.4 -2020-03-13T07:00,31,82,26.2,0,0,7,12.5 -2020-03-13T08:00,30.7,84,26.5,0,0.11,6.2,12.8 -2020-03-13T09:00,31.4,83,26.8,0,0.138,3.7,12.1 -2020-03-13T10:00,33.8,76,27.1,0,0.028,1.8,9.2 -2020-03-13T11:00,38.6,60,25.9,0,0,5.5,12.3 -2020-03-13T12:00,41.8,50,24.6,0,0,9.6,17.4 -2020-03-13T13:00,44.1,47,25.1,0,0,10.8,20.8 -2020-03-13T14:00,45.8,44,25.2,0,0,13.2,23 -2020-03-13T15:00,42.1,51,25.2,0,0,18.6,32.2 -2020-03-13T16:00,40.3,54,25.2,0,0,17.6,32.2 -2020-03-13T17:00,36.8,56,22.5,0,0,10.8,29.8 -2020-03-13T18:00,36.6,58,23.3,0,0,10,18.3 -2020-03-13T19:00,35.1,63,23.8,0,0,3,16.8 -2020-03-13T20:00,33.3,70,24.4,0,0,2,5.1 -2020-03-13T21:00,30.9,74,23.6,0,0,2.6,4.7 -2020-03-13T22:00,31.4,71,23.2,0,0,0.7,4.5 -2020-03-13T23:00,29.3,89,26.3,0,0,4,6 -2020-03-14T00:00,28.8,92,26.8,0,0,5.6,9.2 -2020-03-14T01:00,28.4,88,25.4,0,0,4.7,10.5 -2020-03-14T02:00,28.1,87,24.8,0,0,4.8,8.9 -2020-03-14T03:00,27.8,86,24,0,0,4.9,9.2 -2020-03-14T04:00,27.2,86,23.5,0,0,4.5,8.5 -2020-03-14T05:00,26.8,95,25.5,0,0,6.1,7.8 -2020-03-14T06:00,27.1,94,25.6,0,0,3.8,10.5 -2020-03-14T07:00,27.8,90,25.3,0,0,2.3,7.4 -2020-03-14T08:00,29,85,25.1,0,0,2,7.2 -2020-03-14T09:00,30.5,80,25,0,0,1.9,8.3 -2020-03-14T10:00,33.5,72,25.6,0,0,2.3,9.4 -2020-03-14T11:00,38.2,64,27.2,0,0,2.9,11.6 -2020-03-14T12:00,42.5,57,28.3,0,0,4,13.2 -2020-03-14T13:00,46.6,51,29.5,0,0,4.7,14.1 -2020-03-14T14:00,49.4,47,30.2,0,0,6.5,15.7 -2020-03-14T15:00,51.4,45,30.5,0,0,8.6,17.9 -2020-03-14T16:00,50.1,47,30.4,0,0,9.6,19 -2020-03-14T17:00,43.2,60,30,0,0,11.3,18.6 -2020-03-14T18:00,41.5,63,29.8,0,0,8.8,19 -2020-03-14T19:00,40.6,66,30,0,0,8.9,15.4 -2020-03-14T20:00,38.2,73,30.2,0,0,8.2,14.8 -2020-03-14T21:00,34.7,82,29.8,0,0,5.2,13.4 -2020-03-14T22:00,33.1,87,29.6,0,0,4.2,8.5 -2020-03-14T23:00,30.5,94,29,0,0,4.2,6.7 -2020-03-15T00:00,29.1,94,27.6,0,0,3.7,4.7 -2020-03-15T01:00,28.7,96,27.6,0,0,4.1,6 -2020-03-15T02:00,28.3,99,28,0,0,3.5,8.3 -2020-03-15T03:00,29.4,95,28.1,0,0,4.3,7.2 -2020-03-15T04:00,29.4,93,27.5,0,0,4.3,8.7 -2020-03-15T05:00,29.1,93,27.2,0,0,1.5,7.2 -2020-03-15T06:00,29.4,93,27.5,0,0,2.8,5.1 -2020-03-15T07:00,29.8,92,27.8,0,0,5.1,9.8 -2020-03-15T08:00,31,88,27.8,0,0,4.5,10.5 -2020-03-15T09:00,35.2,76,28.2,0,0,2.5,10.7 -2020-03-15T10:00,40.5,65,29.7,0,0,5.2,13.4 -2020-03-15T11:00,45.1,57,31,0,0,4.8,14.5 -2020-03-15T12:00,49.4,53,32.7,0,0,4.8,14.1 -2020-03-15T13:00,52.1,50,33.9,0,0,6.1,15.4 -2020-03-15T14:00,53.1,49,34.3,0,0,6.6,15.7 -2020-03-15T15:00,54,47,34.1,0,0,6.3,16.1 -2020-03-15T16:00,54.1,45,33.4,0,0,6.4,15 -2020-03-15T17:00,52.1,47,32.5,0,0,7.8,13.6 -2020-03-15T18:00,46.3,62,34.1,0,0,4.4,13.2 -2020-03-15T19:00,43.7,69,34.3,0,0,4.3,8.3 -2020-03-15T20:00,39.8,81,34.6,0,0,4.7,6.7 -2020-03-15T21:00,36.8,90,34.1,0,0,3.2,6 -2020-03-15T22:00,34,93,32.3,0,0,1.6,4.9 -2020-03-15T23:00,31.9,95,30.7,0,0,3.2,4.9 -2020-03-16T00:00,30.4,93,28.6,0,0,4.4,5.6 -2020-03-16T01:00,31.3,85,27.3,0,0,2.6,6 -2020-03-16T02:00,28.8,87,25.3,0,0,3.3,3.8 -2020-03-16T03:00,28.1,88,25,0,0,2.8,4.5 -2020-03-16T04:00,27.3,89,24.5,0,0,4.2,6.7 -2020-03-16T05:00,28.1,80,22.8,0,0,4.9,6.7 -2020-03-16T06:00,27.1,82,22.3,0,0,5.5,7.2 -2020-03-16T07:00,30.9,73,23.3,0,0,5.9,8.7 -2020-03-16T08:00,39.9,57,25.7,0,0,4.1,10.3 -2020-03-16T09:00,48.2,44,27.3,0,0,3.6,10.3 -2020-03-16T10:00,54.3,35,27.1,0,0,5.1,12.8 -2020-03-16T11:00,58.6,26,24.1,0,0,6.2,14.8 -2020-03-16T12:00,61.4,21,20.9,0,0,5.4,14.8 -2020-03-16T13:00,63,17,17.4,0,0,6.8,15.2 -2020-03-16T14:00,64.3,15,15.9,0,0,8.1,16.8 -2020-03-16T15:00,64.5,13,12.4,0,0,7.8,17.7 -2020-03-16T16:00,59.2,37,33.1,0,0,12,20.4 -2020-03-16T17:00,49.6,52,32.6,0,0,12.4,24.6 -2020-03-16T18:00,43.7,64,32.4,0,0,13.6,23 -2020-03-16T19:00,41.2,69,31.9,0,0,9.6,22.8 -2020-03-16T20:00,39.6,74,32.1,0,0,10.1,17.4 -2020-03-16T21:00,38.1,80,32.6,0,0,7,17.4 -2020-03-16T22:00,37.9,81,32.7,0,0,5.4,12.5 -2020-03-16T23:00,37.8,82,32.6,0,0,5.2,10.3 -2020-03-17T00:00,37.9,82,32.7,0,0,4.7,9.4 -2020-03-17T01:00,37.6,83,32.8,0,0,6.5,11.4 -2020-03-17T02:00,37.7,83,32.9,0,0,3.6,11.4 -2020-03-17T03:00,37.9,82,33,0,0,0.8,6.7 -2020-03-17T04:00,37,86,33.3,0,0,4.9,8.5 -2020-03-17T05:00,37.2,84,32.8,0,0,5.6,10.7 -2020-03-17T06:00,36.6,86,32.8,0,0,5.4,11 -2020-03-17T07:00,36,88,32.8,0,0,4,9.6 -2020-03-17T08:00,36.7,86,33,0,0,2.9,8.5 -2020-03-17T09:00,38.2,83,33.4,0,0,3.3,9.4 -2020-03-17T10:00,41.4,74,33.6,0,0,3.8,11.4 -2020-03-17T11:00,43.9,68,34.2,0,0,7.5,16.8 -2020-03-17T12:00,45.7,65,34.6,0,0,9.1,20.4 -2020-03-17T13:00,50.4,56,35.2,0,0,7.1,20.1 -2020-03-17T14:00,54.8,50,36.2,0,0,6.5,17 -2020-03-17T15:00,55.7,49,37,0,0,6.9,16.6 -2020-03-17T16:00,55.9,50,37.5,0,0,3.8,15.4 -2020-03-17T17:00,50.7,54,34.7,0,0,9,10.1 -2020-03-17T18:00,47.3,64,35.7,0,0,2.1,14.8 -2020-03-17T19:00,45.1,72,36.5,0,0,2.9,4.5 -2020-03-17T20:00,43.3,77,36.4,0,0,3.1,3.6 -2020-03-17T21:00,40.1,85,36.1,0,0,4,6.3 -2020-03-17T22:00,37,86,33.2,0,0,5.3,6.5 -2020-03-17T23:00,39.8,70,30.7,0,0,1.9,6.5 -2020-03-18T00:00,35.3,83,30.6,0,0,2.7,2.7 -2020-03-18T01:00,33.4,83,28.7,0,0,3.1,4.5 -2020-03-18T02:00,31.2,86,27.4,0,0,3.2,3.8 -2020-03-18T03:00,30.3,85,26.3,0,0,4.1,4.7 -2020-03-18T04:00,29.1,84,25,0,0,4.6,5.4 -2020-03-18T05:00,27.5,85,23.7,0,0,4.8,5.8 -2020-03-18T06:00,27.5,80,22.3,0,0,4.2,6 -2020-03-18T07:00,31.8,69,22.7,0,0,4.7,8.1 -2020-03-18T08:00,40.1,54,24.6,0,0,4.1,9.6 -2020-03-18T09:00,49.4,40,25.9,0,0,4.6,11.6 -2020-03-18T10:00,57.7,31,27.2,0,0,4.7,11.9 -2020-03-18T11:00,62.2,20,21,0,0,10.7,20.1 -2020-03-18T12:00,63.5,20,21.4,0,0,13.5,24.6 -2020-03-18T13:00,63.9,18,20.1,0,0,15.7,31.8 -2020-03-18T14:00,64,18,19.3,0,0,15.6,28.9 -2020-03-18T15:00,63.2,20,20.9,0,0,14.2,28.4 -2020-03-18T16:00,62.4,20,21.2,0,0,11.4,25.3 -2020-03-18T17:00,56.2,44,34.7,0,0,8.4,19.7 -2020-03-18T18:00,51.6,48,32.6,0,0,10.9,20.4 -2020-03-18T19:00,48.6,63,36.6,0,0,19.6,33.6 -2020-03-18T20:00,47.2,69,37.7,0,0,17.9,32.4 -2020-03-18T21:00,45.4,78,39.1,0,0,15.6,30 -2020-03-18T22:00,43.5,83,38.8,0.004,0,16.2,28 -2020-03-18T23:00,41.5,85,37.2,0.004,0,13.7,27.1 -2020-03-19T00:00,40.6,85,36.4,0,0,13.2,23.3 -2020-03-19T01:00,40.6,84,36.2,0,0,12.5,22.1 -2020-03-19T02:00,40.4,84,36.1,0,0,12.7,21.9 -2020-03-19T03:00,39.8,87,36.1,0.004,0,10.5,21.5 -2020-03-19T04:00,38.8,94,37.2,0.024,0,11,18.3 -2020-03-19T05:00,36.2,100,36.2,0.043,0,11.4,18.6 -2020-03-19T06:00,36,100,35.9,0.047,0.028,11.5,19 -2020-03-19T07:00,35.7,100,35.6,0.047,0.276,11.7,18.3 -2020-03-19T08:00,35.5,100,35.4,0.039,0.386,13.7,21 -2020-03-19T09:00,35.4,100,35.3,0.039,0.579,18.1,27.3 -2020-03-19T10:00,35.5,100,35.4,0.039,0.772,16.9,28.4 -2020-03-19T11:00,34.6,99,34.3,0.039,0.661,18.3,29.5 -2020-03-19T12:00,34.7,97,33.9,0.028,0.661,18.1,29.8 -2020-03-19T13:00,34.5,95,33.4,0.016,0.551,16.2,30.2 -2020-03-19T14:00,33.9,93,32.2,0.008,0.524,16.7,29.1 -2020-03-19T15:00,33.2,92,31.1,0.004,0.441,15.2,28.4 -2020-03-19T16:00,32.5,88,29.3,0,0.248,13.7,25.1 -2020-03-19T17:00,31.3,91,28.9,0,0.193,13.1,22.6 -2020-03-19T18:00,29.5,93,27.7,0,0.11,8.7,21.7 -2020-03-19T19:00,29.2,94,27.8,0,0.083,5.7,14.3 -2020-03-19T20:00,28.8,94,27.1,0,0.083,5.5,9.2 -2020-03-19T21:00,28.4,90,26,0,0.083,4.2,9.6 -2020-03-19T22:00,27.9,91,25.7,0,0.083,3.8,7.2 -2020-03-19T23:00,27,94,25.3,0,0.083,3.4,6 -2020-03-20T00:00,26.2,93,24.4,0,0.11,2.9,5.6 -2020-03-20T01:00,25.7,92,23.6,0,0.083,3.8,6 -2020-03-20T02:00,25.3,90,22.8,0,0.028,3.6,6.5 -2020-03-20T03:00,25,91,22.6,0,0.028,4,6.3 -2020-03-20T04:00,24.7,91,22.5,0,0.028,4.9,7.6 -2020-03-20T05:00,22.1,88,19.2,0,0,6.1,9.4 -2020-03-20T06:00,21.3,88,18.2,0,0.055,5.3,9.6 -2020-03-20T07:00,20.9,87,17.8,0,0.028,5.6,8.9 -2020-03-20T08:00,21.1,86,17.6,0,0,6.5,11.2 -2020-03-20T09:00,21.6,85,17.8,0,0,7.2,12.5 -2020-03-20T10:00,22.1,82,17.4,0,0,6.7,13.2 -2020-03-20T11:00,22.9,77,16.8,0,0,4.4,12.1 -2020-03-20T12:00,23.7,78,18,0,0,7.3,12.8 -2020-03-20T13:00,25.1,85,21.2,0,0,8.8,15.7 -2020-03-20T14:00,24.7,90,22.2,0,0,9,15.9 -2020-03-20T15:00,24.1,90,21.6,0,0,6.8,15.9 -2020-03-20T16:00,24.4,88,21.3,0,0,5.6,12.3 -2020-03-20T17:00,20.8,88,17.7,0,0,5.5,9.8 -2020-03-20T18:00,20.3,88,17.2,0,0,1.8,8.7 -2020-03-20T19:00,19.9,88,17,0,0.165,2.8,4.7 -2020-03-20T20:00,18,92,16,0,0,5.7,9.2 -2020-03-20T21:00,16.1,92,14.3,0,0,4.6,9.6 -2020-03-20T22:00,16.3,94,15,0,0,4.5,6.7 -2020-03-20T23:00,17.8,94,16.4,0,0,2.1,5.4 -2020-03-21T00:00,16.4,95,15.4,0,0,1.8,2.7 -2020-03-21T01:00,14.4,97,13.7,0,0,2.2,2.7 -2020-03-21T02:00,8.6,91,6.5,0,0,3.6,4.5 -2020-03-21T03:00,7.3,86,4,0,0,4.4,5.4 -2020-03-21T04:00,8.1,83,3.9,0,0,4.6,6.5 -2020-03-21T05:00,8.4,78,3,0,0,6.5,8.3 -2020-03-21T06:00,8.7,80,3.7,0,0,7.2,8.5 -2020-03-21T07:00,9.8,80,4.9,0,0,6.8,9.2 -2020-03-21T08:00,16.2,76,10,0,0,6,8.1 -2020-03-21T09:00,25.5,71,17.5,0,0,4.2,7.4 -2020-03-21T10:00,32.7,71,24.3,0,0,4.1,6.7 -2020-03-21T11:00,35.1,73,27.2,0,0,3.9,7.8 -2020-03-21T12:00,37,72,28.8,0,0,3.6,6.3 -2020-03-21T13:00,38.1,68,28.5,0,0,3.8,5.8 -2020-03-21T14:00,36.7,76,29.8,0,0,4.1,6 -2020-03-21T15:00,36.7,77,30.2,0,0,3.4,6 -2020-03-21T16:00,35.9,80,30.4,0,0,3.8,7.6 -2020-03-21T17:00,34.6,87,31,0,0,3.9,6.3 -2020-03-21T18:00,33.4,77,26.9,0.004,0.055,6.5,8.5 -2020-03-21T19:00,31.6,80,26.2,0.004,0,6.2,7.8 -2020-03-21T20:00,31.3,85,27.3,0,0,5.1,7.6 -2020-03-21T21:00,30.2,88,27.1,0,0,4.9,8.3 -2020-03-21T22:00,25.6,91,23.4,0,0,7.7,9.6 -2020-03-21T23:00,21.7,93,20.1,0,0,6.8,9.6 -2020-03-22T00:00,20,89,17.2,0,0,6.8,8.3 -2020-03-22T01:00,18.2,86,14.6,0,0,6.9,8.7 -2020-03-22T02:00,18,85,14.3,0,0,6.4,8.5 -2020-03-22T03:00,18.1,85,14.4,0,0,5.3,7.8 -2020-03-22T04:00,13.5,89,10.9,0,0,6.3,7.8 -2020-03-22T05:00,13.5,86,10,0,0,7.3,8.1 -2020-03-22T06:00,11.5,88,8.5,0,0,7.6,9.4 -2020-03-22T07:00,15,86,11.5,0,0,5.8,9.4 -2020-03-22T08:00,21.7,83,17.4,0,0,3.9,7.2 -2020-03-22T09:00,30.7,78,24.7,0,0,2.4,6.9 -2020-03-22T10:00,32.2,78,26.2,0,0,7.8,11.6 -2020-03-22T11:00,31.5,78,25.5,0,0,4.5,14.8 -2020-03-22T12:00,33.9,74,26.6,0,0,3,8.1 -2020-03-22T13:00,35.3,74,28,0,0,1.6,5.4 -2020-03-22T14:00,37,76,29.9,0,0,2.8,4.9 -2020-03-22T15:00,37.9,74,30.5,0,0,3.7,6.5 -2020-03-22T16:00,37.9,75,30.8,0,0,5,7.6 -2020-03-22T17:00,37.9,80,32.3,0,0,5.7,8.1 -2020-03-22T18:00,40.7,70,31.8,0,0,4.1,7.8 -2020-03-22T19:00,33.6,83,29,0,0,4.2,4.9 -2020-03-22T20:00,24.2,95,23,0,0,6.3,8.5 -2020-03-22T21:00,22.5,90,20,0,0,6.7,8.3 -2020-03-22T22:00,20,84,16.1,0,0,7,8.5 -2020-03-22T23:00,17,84,13,0,0,7.6,9.4 -2020-03-23T00:00,16,83,11.8,0,0,6.8,10.3 -2020-03-23T01:00,12.5,87,9.3,0,0,7.9,10.1 -2020-03-23T02:00,11.3,89,8.7,0,0,7.7,10.1 -2020-03-23T03:00,13.5,87,10.4,0,0,6,9.8 -2020-03-23T04:00,10.9,88,8.1,0,0,6.5,8.3 -2020-03-23T05:00,14.4,83,10.1,0,0,7.2,8.3 -2020-03-23T06:00,12.6,85,8.9,0,0,5.9,9.8 -2020-03-23T07:00,13.9,82,9.5,0,0,5.1,7.8 -2020-03-23T08:00,22.2,78,16.5,0,0,4.5,7.2 -2020-03-23T09:00,32.4,70,23.5,0,0,2.6,6.5 -2020-03-23T10:00,37.3,70,28.6,0,0,3.4,6.7 -2020-03-23T11:00,41,64,29.8,0,0,4.3,6.9 -2020-03-23T12:00,44.9,54,29,0,0,4.2,7.4 -2020-03-23T13:00,44.6,59,31.1,0,0,4.3,6.5 -2020-03-23T14:00,44.8,63,32.8,0,0,4.6,9.6 -2020-03-23T15:00,46.4,56,31.6,0,0,4.5,9.6 -2020-03-23T16:00,51.1,43,29.3,0,0,0.9,6.9 -2020-03-23T17:00,45.5,68,35.6,0,0,6.4,5.6 -2020-03-23T18:00,38.8,74,31.2,0,0,5.9,11 -2020-03-23T19:00,37.5,78,31.2,0,0,5.4,11.2 -2020-03-23T20:00,33.3,87,29.8,0,0,6.6,8.9 -2020-03-23T21:00,35.6,85,31.6,0,0,4.1,8.7 -2020-03-23T22:00,27.8,96,26.9,0,0,4,5.1 -2020-03-23T23:00,23.8,96,22.8,0,0,5,6.5 -2020-03-24T00:00,24.8,92,22.7,0,0,5.2,7.8 -2020-03-24T01:00,23,92,20.9,0,0,6,8.3 -2020-03-24T02:00,19.8,93,18.1,0,0,7.5,10.1 -2020-03-24T03:00,26.2,83,21.6,0,0,5.4,9.6 -2020-03-24T04:00,23.4,81,18.3,0,0,5.7,7.2 -2020-03-24T05:00,25.7,84,21.5,0,0,6,6.9 -2020-03-24T06:00,26.8,82,22,0,0,6.8,8.3 -2020-03-24T07:00,31.7,81,26.4,0,0,4.8,8.3 -2020-03-24T08:00,37.2,78,31.1,0,0,1.1,6.3 -2020-03-24T09:00,39.7,76,32.7,0,0,3,5.1 -2020-03-24T10:00,46.9,54,31,0,0,2,5.6 -2020-03-24T11:00,51.7,44,30.7,0,0,2.9,10.3 -2020-03-24T12:00,54.9,30,24.2,0,0,6,14.8 -2020-03-24T13:00,56.4,29,24.5,0,0,4.7,14.8 -2020-03-24T14:00,57.3,28,24.4,0,0,6.5,14.8 -2020-03-24T15:00,57.7,27,23.8,0,0,6.9,15.2 -2020-03-24T16:00,57.5,27,23.8,0,0,6,14.5 -2020-03-24T17:00,54.5,49,36,0,0,4,12.5 -2020-03-24T18:00,47.4,61,34.7,0,0,7.2,8.1 -2020-03-24T19:00,42.2,65,31.4,0,0,4.5,8.5 -2020-03-24T20:00,36.1,77,29.7,0,0,5.8,8.1 -2020-03-24T21:00,34.2,81,29,0,0,4.1,7.2 -2020-03-24T22:00,32.5,84,28.3,0,0,4.4,7.2 -2020-03-24T23:00,32.4,81,27.1,0,0,4.8,7.6 -2020-03-25T00:00,30.4,83,26,0,0,4.3,7.6 -2020-03-25T01:00,29.5,81,24.4,0,0,4.9,7.8 -2020-03-25T02:00,29,77,22.6,0,0,5,8.7 -2020-03-25T03:00,28.8,75,21.9,0,0,4.4,8.1 -2020-03-25T04:00,28.9,75,22.1,0,0,4.4,7.2 -2020-03-25T05:00,28,77,21.8,0,0,6,7.2 -2020-03-25T06:00,30.6,70,22.1,0,0,3.7,7.2 -2020-03-25T07:00,36.3,62,24.4,0,0,5.8,9.2 -2020-03-25T08:00,44.9,53,28.6,0,0,5.6,11.2 -2020-03-25T09:00,50.4,43,28.7,0,0,4.5,11.2 -2020-03-25T10:00,55.1,33,26.8,0,0,3.1,11.2 -2020-03-25T11:00,57.3,32,27.7,0,0,5.1,12.8 -2020-03-25T12:00,58.7,29,26.3,0,0,6.9,15.2 -2020-03-25T13:00,60.4,26,25.1,0,0,4.5,15.9 -2020-03-25T14:00,61.7,22,22,0,0,4,12.3 -2020-03-25T15:00,62.2,20,20.7,0,0,3.5,11.2 -2020-03-25T16:00,61.7,20,20.5,0,0,5.6,11 -2020-03-25T17:00,55.5,42,32.8,0,0,3.7,11.2 -2020-03-25T18:00,50.7,51,33.3,0,0,4.1,6.7 -2020-03-25T19:00,45.1,60,32.1,0,0,5,6 -2020-03-25T20:00,42.6,67,32.5,0,0,3.1,6.3 -2020-03-25T21:00,40.5,71,31.6,0,0,4.6,5.6 -2020-03-25T22:00,37.7,72,29.5,0,0,5.6,8.3 -2020-03-25T23:00,38,68,28.3,0,0,7.3,11.2 -2020-03-26T00:00,38.1,62,26.4,0,0,6.3,13 -2020-03-26T01:00,36.1,65,25.3,0,0,4.5,10.3 -2020-03-26T02:00,34.8,67,25.1,0,0,4.4,6.7 -2020-03-26T03:00,33.9,70,25.1,0,0,4,6.9 -2020-03-26T04:00,31,77,24.7,0,0,2.5,6.9 -2020-03-26T05:00,29,82,24.4,0,0,6.7,3.6 -2020-03-26T06:00,29.1,82,24.3,0,0,5.4,8.1 -2020-03-26T07:00,33.5,72,25.4,0,0,1.1,6.7 -2020-03-26T08:00,38.1,66,27.8,0,0,2.2,7.6 -2020-03-26T09:00,40.3,69,30.8,0,0,3.8,11.4 -2020-03-26T10:00,43.2,66,32.5,0,0,4.1,12.3 -2020-03-26T11:00,46.8,61,33.9,0,0,5.6,14.8 -2020-03-26T12:00,50.7,56,35.5,0,0,7.7,17.4 -2020-03-26T13:00,54.7,51,37,0,0,8.4,19.2 -2020-03-26T14:00,58,49,39,0,0,6.7,18.6 -2020-03-26T15:00,58.7,51,40.6,0,0,7.4,16.3 -2020-03-26T16:00,57.1,54,40.6,0,0,10.7,19.9 -2020-03-26T17:00,50,57,35.2,0,0,7.3,20.8 -2020-03-26T18:00,46.1,67,35.6,0,0,3.9,12.5 -2020-03-26T19:00,41.1,79,35.1,0,0,6.5,7.6 -2020-03-26T20:00,40.9,79,34.9,0,0,4.9,7.6 -2020-03-26T21:00,38.8,85,34.6,0,0,5.1,6.3 -2020-03-26T22:00,39.4,81,34.1,0,0,3.8,6.3 -2020-03-26T23:00,39,83,34.2,0,0,3.8,4.5 -2020-03-27T00:00,38.1,85,34.1,0,0,2.9,4.7 -2020-03-27T01:00,38.3,82,33.4,0,0,1.8,4.7 -2020-03-27T02:00,37.6,85,33.4,0,0,1.6,2.2 -2020-03-27T03:00,35.9,90,33.4,0,0,2.7,3.8 -2020-03-27T04:00,34.4,92,32.5,0,0,4.8,6.9 -2020-03-27T05:00,32.2,93,30.3,0,0,5.1,10.1 -2020-03-27T06:00,31,96,30,0,0,3.6,8.9 -2020-03-27T07:00,33.4,91,31.1,0,0,5.8,11.2 -2020-03-27T08:00,35.2,81,29.9,0,0,5.9,12.5 -2020-03-27T09:00,37,74,29.4,0,0,5.4,12.8 -2020-03-27T10:00,39.3,68,29.6,0,0,5.9,14.3 -2020-03-27T11:00,41.3,61,28.9,0,0,4.9,14.5 -2020-03-27T12:00,44.2,53,28,0,0,2.1,13.6 -2020-03-27T13:00,46.4,50,28.8,0,0,4.6,13.4 -2020-03-27T14:00,47.5,48,28.7,0,0,6.4,15.9 -2020-03-27T15:00,48.3,46,28.6,0,0,6,15.9 -2020-03-27T16:00,45.4,52,28.7,0.004,0,13,22.4 -2020-03-27T17:00,34.9,80,29.3,0.028,0,12.7,24.2 -2020-03-27T18:00,34.3,81,29,0,0.22,9.7,21.5 -2020-03-27T19:00,33.6,86,29.9,0,0.248,6.8,17 -2020-03-27T20:00,34.1,89,31.3,0,0.22,5.5,12.1 -2020-03-27T21:00,32.9,91,30.6,0.004,0.193,6.2,11.6 -2020-03-27T22:00,32.2,91,29.8,0,0.083,3.2,9.8 -2020-03-27T23:00,32.5,89,29.6,0,0.22,5.2,12.8 -2020-03-28T00:00,31.8,91,29.6,0,0.083,4.7,13.9 -2020-03-28T01:00,31.4,86,27.7,0,0,3.2,7.6 -2020-03-28T02:00,33.1,67,23.4,0,0,2.9,5.1 -2020-03-28T03:00,30.9,58,18.1,0,0,5,8.1 -2020-03-28T04:00,31.9,42,11.6,0,0,8.3,12.8 -2020-03-28T05:00,30.1,39,8,0,0,10.1,18.1 -2020-03-28T06:00,30.8,38,8.4,0,0,17,26.4 -2020-03-28T07:00,32.4,38,9.8,0,0,17.7,29.8 -2020-03-28T08:00,35.9,37,11.8,0,0,11.4,28.9 -2020-03-28T09:00,38.8,33,12.1,0,0,13,23.3 -2020-03-28T10:00,41.4,30,11.9,0,0,14.5,26.4 -2020-03-28T11:00,44,26,11.6,0,0,15.5,28.6 -2020-03-28T12:00,45.8,23,10.3,0,0,17.6,32 -2020-03-28T13:00,46.6,22,9.8,0,0,17.6,32.4 -2020-03-28T14:00,46.9,20,7.9,0,0,15.2,32 -2020-03-28T15:00,46.3,24,11.8,0,0,16.2,29.1 -2020-03-28T16:00,45.4,28,14.3,0,0,15.6,29.1 -2020-03-28T17:00,44.7,31,15.8,0,0,8.9,27.7 -2020-03-28T18:00,40.8,36,15.8,0,0,7.2,15.7 -2020-03-28T19:00,35.2,43,14.7,0,0,5,11.6 -2020-03-28T20:00,31.3,54,16.4,0,0,6.3,8.3 -2020-03-28T21:00,29.4,58,16.3,0,0,4.7,8.1 -2020-03-28T22:00,27.9,62,16.6,0,0,3.9,5.8 -2020-03-28T23:00,27.4,61,15.8,0,0,3.5,5.6 -2020-03-29T00:00,26.2,61,14.5,0,0,4.3,5.8 -2020-03-29T01:00,25.6,60,13.6,0,0,4.1,6 -2020-03-29T02:00,25.4,58,12.8,0,0,3.9,5.8 -2020-03-29T03:00,25.2,58,12.5,0,0,4.2,7.2 -2020-03-29T04:00,24.6,59,12.5,0,0,3.9,6.7 -2020-03-29T05:00,23.5,64,13.3,0,0,4.5,8.5 -2020-03-29T06:00,23.5,63,12.8,0,0,6.4,9.8 -2020-03-29T07:00,27.6,56,14,0,0,8.5,14.5 -2020-03-29T08:00,35.1,49,17.8,0,0,7.4,14.8 -2020-03-29T09:00,42.2,37,17.9,0,0,4.9,14.8 -2020-03-29T10:00,45.2,34,18.4,0,0,4.3,12.5 -2020-03-29T11:00,47.8,30,17.7,0,0,5.1,13.9 -2020-03-29T12:00,50,29,19.1,0,0,5.6,14.8 -2020-03-29T13:00,51.6,27,19,0,0,6.3,15.7 -2020-03-29T14:00,52.8,24,17.2,0,0,7.3,16.1 -2020-03-29T15:00,53.2,23,16.2,0,0,7.1,16.6 -2020-03-29T16:00,53.8,22,15.8,0,0,5.9,15.2 -2020-03-29T17:00,52,28,19.8,0,0,3.4,12.5 -2020-03-29T18:00,47.8,35,21.7,0,0,5.2,7.8 -2020-03-29T19:00,42.8,46,23.2,0,0,4.8,8.5 -2020-03-29T20:00,37.8,60,25,0,0,4.5,9.2 -2020-03-29T21:00,33.6,74,26.2,0,0,4.3,6.5 -2020-03-29T22:00,32.7,75,25.7,0,0,2.7,6 -2020-03-29T23:00,33.3,71,24.8,0.004,0,2.9,7.4 -2020-03-30T00:00,32.2,76,25.4,0,0,3.1,5.4 -2020-03-30T01:00,30.8,79,25.2,0,0,2.5,5.4 -2020-03-30T02:00,30.4,82,25.6,0,0,1.1,9.8 -2020-03-30T03:00,29.7,82,25,0,0.028,1.3,11.4 -2020-03-30T04:00,28.5,88,25.3,0,0.055,1.8,12.8 -2020-03-30T05:00,30,85,26,0,0.055,0.8,13 -2020-03-30T06:00,29.9,88,26.7,0,0,2.7,3.1 -2020-03-30T07:00,33.9,75,26.7,0,0,1.5,4.5 -2020-03-30T08:00,38.7,58,25.2,0,0,0.8,5.6 -2020-03-30T09:00,41.9,49,24,0,0,1.8,8.5 -2020-03-30T10:00,45.9,43,24.6,0,0,1.5,8.5 -2020-03-30T11:00,49.9,40,26.3,0,0,3.4,11 -2020-03-30T12:00,52.5,37,26.9,0,0,5.2,18.6 -2020-03-30T13:00,55.4,34,27.2,0,0,6.6,17.4 -2020-03-30T14:00,51.4,50,33.4,0.031,0,10.9,21.3 -2020-03-30T15:00,52.9,37,27.1,0,0,5.4,21.7 -2020-03-30T16:00,53.5,33,25.4,0,0,5.1,14.5 -2020-03-30T17:00,50.7,43,29.1,0,0,7.3,11.4 -2020-03-30T18:00,47.5,51,30.3,0,0,4.2,13.4 -2020-03-30T19:00,40.1,68,30.4,0,0,3.1,7.2 -2020-03-30T20:00,34.9,85,30.9,0,0,3.4,5.6 -2020-03-30T21:00,31.6,93,29.8,0,0,3.5,5.6 -2020-03-30T22:00,31.2,90,28.7,0,0,4.1,6 -2020-03-30T23:00,30.3,87,27,0,0,5.7,7.2 -2020-03-31T00:00,29.9,85,25.9,0,0,4.7,7.2 -2020-03-31T01:00,29.2,77,22.8,0,0,4.6,7.2 -2020-03-31T02:00,29.2,68,20.1,0,0,4.9,7.4 -2020-03-31T03:00,29.2,64,18.4,0,0,5,7.8 -2020-03-31T04:00,28.9,65,18.4,0,0,6.3,7.6 -2020-03-31T05:00,28.8,66,18.7,0,0,4.5,8.5 -2020-03-31T06:00,28.3,69,19.5,0,0,4.1,5.8 -2020-03-31T07:00,34.3,61,22,0,0,3.2,6.7 -2020-03-31T08:00,43.1,47,24.4,0,0,2.9,8.7 -2020-03-31T09:00,50.8,37,25.7,0,0,6.4,13.2 -2020-03-31T10:00,55.9,29,24,0,0,8,17.2 -2020-03-31T11:00,58.5,26,23.9,0,0,10.2,20.4 -2020-03-31T12:00,60,25,24,0,0,9.3,20.8 -2020-03-31T13:00,62.1,23,24.3,0,0,8.1,19.7 -2020-03-31T14:00,63,23,25,0,0,7,17.7 -2020-03-31T15:00,63.4,23,25.2,0,0,5.3,15.7 -2020-03-31T16:00,63.6,23,25.1,0,0,3,12.8 -2020-03-31T17:00,61.6,29,29.4,0,0,4.1,8.1 -2020-03-31T18:00,53.9,46,33.7,0,0,6.5,7.6 -2020-03-31T19:00,47.9,49,29.5,0,0,8.1,9.8 -2020-03-31T20:00,47.8,46,28.3,0,0,1.8,9.6 -2020-03-31T21:00,43.1,53,27.3,0,0,6.2,9.8 -2020-03-31T22:00,40.6,56,26.1,0,0,4.3,10.1 -2020-03-31T23:00,36.4,70,27.6,0,0,4.8,6.7 -2020-04-01T00:00,36.6,69,27.2,0,0,4.9,7.6 -2020-04-01T01:00,37.8,61,25.5,0,0,1.8,7.6 -2020-04-01T02:00,36.2,65,25.5,0,0,0.7,2.2 -2020-04-01T03:00,31.6,76,25.1,0,0,3.7,4.3 -2020-04-01T04:00,29.9,78,23.8,0,0,4.7,6.3 -2020-04-01T05:00,31.1,74,23.7,0,0,4.2,6.9 -2020-04-01T06:00,32.3,71,23.8,0,0,4.7,7.6 -2020-04-01T07:00,38.4,60,25.6,0,0,4.9,9.2 -2020-04-01T08:00,47,50,29.4,0,0,2.7,8.9 -2020-04-01T09:00,55.8,38,30.7,0,0,4.5,11 -2020-04-01T10:00,62.2,25,26.2,0,0,10.7,19.7 -2020-04-01T11:00,64.6,20,22.4,0,0,10.3,22.8 -2020-04-01T12:00,65.7,20,23.5,0,0,7.9,20.6 -2020-04-01T13:00,66.8,20,24,0,0,8.1,17.7 -2020-04-01T14:00,67.3,19,24,0,0,7.9,17.7 -2020-04-01T15:00,66.9,19,22.9,0,0,4.9,17 -2020-04-01T16:00,66.1,19,22.3,0,0,2,11.9 -2020-04-01T17:00,64.5,31,33.1,0,0,2.9,9.2 -2020-04-01T18:00,57.8,37,31.6,0,0,4.8,7.2 -2020-04-01T19:00,51,44,29.8,0,0,4.6,7.6 -2020-04-01T20:00,50.5,44,29.4,0,0,8.9,15.2 -2020-04-01T21:00,48.5,59,34.8,0,0,11.7,23.3 -2020-04-01T22:00,44.9,78,38.3,0,0,11.3,22.1 -2020-04-01T23:00,46,76,38.8,0,0,11,18.6 -2020-04-02T00:00,44.2,84,39.7,0.004,0,8.7,18.8 -2020-04-02T01:00,42.8,88,39.6,0.004,0,7.9,14.8 -2020-04-02T02:00,41.1,90,38.5,0.004,0,7.6,13.6 -2020-04-02T03:00,39.7,92,37.4,0,0,7.5,13.2 -2020-04-02T04:00,38.5,91,36.1,0,0,7.3,13.2 -2020-04-02T05:00,33.7,75,26.8,0.004,0,8.2,13 -2020-04-02T06:00,32.1,74,24.8,0,0,9.1,15.9 -2020-04-02T07:00,29.9,73,22.4,0,0,11.1,19.7 -2020-04-02T08:00,28.4,71,20.3,0,0,10.8,20.6 -2020-04-02T09:00,25.5,72,17.6,0,0,10.3,19.9 -2020-04-02T10:00,25,71,16.9,0,0,8,19.2 -2020-04-02T11:00,24.9,70,16.6,0,0,8,16.8 -2020-04-02T12:00,25.7,66,15.8,0,0,9.2,18.1 -2020-04-02T13:00,26.9,61,15.4,0,0.028,6.9,18.6 -2020-04-02T14:00,27.2,62,16,0,0.028,4.2,15.7 -2020-04-02T15:00,27.8,63,17,0,0,1.4,11.6 -2020-04-02T16:00,28.1,64,17.4,0,0.028,3.2,9.2 -2020-04-02T17:00,24.3,76,17.8,0,0.11,2.7,9.6 -2020-04-02T18:00,24.9,75,18.2,0,0.083,0.3,7.8 -2020-04-02T19:00,24.6,79,19.1,0,0.11,6.5,10.7 -2020-04-02T20:00,22.9,68,14,0,0.083,9.8,17.7 -2020-04-02T21:00,22,70,13.7,0,0.055,7.8,17.2 -2020-04-02T22:00,21.3,72,13.6,0,0.028,6.8,14.1 -2020-04-02T23:00,20.9,73,13.6,0,0.055,6,12.5 -2020-04-03T00:00,20.6,74,13.7,0,0.083,5.8,11.4 -2020-04-03T01:00,20.5,74,13.6,0,0.055,5.9,11.4 -2020-04-03T02:00,20.7,74,13.8,0,0.055,5.1,11 -2020-04-03T03:00,20.9,74,14,0,0.028,3.7,9.8 -2020-04-03T04:00,21.3,74,14.3,0,0.028,4.2,8.3 -2020-04-03T05:00,19.9,79,14.3,0,0.028,6,9.8 -2020-04-03T06:00,19.6,81,14.7,0,0,4.4,10.1 -2020-04-03T07:00,23.1,72,15.5,0,0,3.1,8.5 -2020-04-03T08:00,26.1,66,16.3,0,0,4.3,11 -2020-04-03T09:00,29.6,59,17.1,0,0,6.3,14.5 -2020-04-03T10:00,33.3,52,17.4,0,0,6.8,16.3 -2020-04-03T11:00,37.9,41,16,0,0,8.2,18.1 -2020-04-03T12:00,40.2,36,15.4,0,0,7.6,18.1 -2020-04-03T13:00,42.5,35,16.8,0,0,6.1,17 -2020-04-03T14:00,43.3,35,17.5,0,0,4.8,15 -2020-04-03T15:00,45.7,34,18.6,0,0,3.7,12.5 -2020-04-03T16:00,46,33,18.8,0,0,3.2,11.6 -2020-04-03T17:00,39.2,47,20.8,0,0,6.3,10.1 -2020-04-03T18:00,38.7,48,20.6,0,0,5.4,11.9 -2020-04-03T19:00,36.4,52,20.6,0,0,10,15 -2020-04-03T20:00,34.5,56,20.5,0,0,9.4,19 -2020-04-03T21:00,33.5,60,21.1,0,0,3.6,14.5 -2020-04-03T22:00,32.7,64,21.7,0,0,3.4,6 -2020-04-03T23:00,30.8,69,22,0,0,2.1,5.6 -2020-04-04T00:00,28.4,78,22.3,0,0,2.2,4.5 -2020-04-04T01:00,26.7,82,21.8,0,0,1.8,4 -2020-04-04T02:00,25.1,86,21.4,0,0,3,4.5 -2020-04-04T03:00,23.8,87,20.4,0,0,2.5,5.1 -2020-04-04T04:00,23.3,87,19.9,0,0,1.8,3.4 -2020-04-04T05:00,20.7,92,18.6,0,0,3.8,4.3 -2020-04-04T06:00,22.6,92,20.6,0,0,1.7,4.7 -2020-04-04T07:00,25.6,85,21.7,0,0,1.6,5.8 -2020-04-04T08:00,29.5,78,23.5,0,0,3.5,10.3 -2020-04-04T09:00,33.8,70,25.2,0,0,4,12.5 -2020-04-04T10:00,38.5,61,26.3,0,0,2.8,12.5 -2020-04-04T11:00,43.9,52,27.2,0,0,4.1,13 -2020-04-04T12:00,49.1,44,28,0,0,5.6,15.7 -2020-04-04T13:00,52.5,39,28.4,0,0,5.9,15.4 -2020-04-04T14:00,55.6,34,27.5,0,0,6,15.4 -2020-04-04T15:00,57.2,29,25.5,0,0,6.7,15 -2020-04-04T16:00,57.2,27,23.6,0,0,7.2,15.4 -2020-04-04T17:00,55.8,35,28.2,0,0,3.3,14.3 -2020-04-04T18:00,50.6,50,32.6,0,0,7,10.7 -2020-04-04T19:00,45.3,63,33.4,0,0,6.8,12.1 -2020-04-04T20:00,42.1,69,32.5,0,0,4.1,11.2 -2020-04-04T21:00,37.9,86,34,0,0,3.5,6.7 -2020-04-04T22:00,35.1,92,33,0,0,3.8,6.3 -2020-04-04T23:00,33.2,91,30.8,0,0,3.4,6 -2020-04-05T00:00,32.1,87,28.7,0,0,4.1,6.3 -2020-04-05T01:00,31.4,82,26.4,0,0,4.6,7.6 -2020-04-05T02:00,30.4,80,25.1,0,0,4,7.6 -2020-04-05T03:00,29.2,82,24.4,0,0,4.3,6.3 -2020-04-05T04:00,30.4,76,23.7,0,0,3.1,5.4 -2020-04-05T05:00,29,78,23.1,0,0,4,5.1 -2020-04-05T06:00,29.3,79,23.7,0,0,3.6,4.9 -2020-04-05T07:00,36.2,65,25.5,0,0,3.4,7.6 -2020-04-05T08:00,45.1,53,28.9,0,0,1.1,7.6 -2020-04-05T09:00,54.1,42,31.6,0,0,2.9,9.6 -2020-04-05T10:00,61.3,30,29.9,0,0,7,15 -2020-04-05T11:00,63.7,26,28,0,0,9.2,18.8 -2020-04-05T12:00,64.8,25,27.8,0,0,8.9,19.2 -2020-04-05T13:00,66,23,27,0,0,10,20.4 -2020-04-05T14:00,66.6,21,25.5,0,0,10.2,20.6 -2020-04-05T15:00,67.3,19,23.6,0,0,11.4,21.9 -2020-04-05T16:00,67.2,18,22.2,0,0,11.4,22.1 -2020-04-05T17:00,63.3,38,37,0,0,6.6,20.6 -2020-04-05T18:00,59,45,37.9,0,0,5.3,11.2 -2020-04-05T19:00,52.2,50,34.3,0,0,7.4,10.3 -2020-04-05T20:00,46.2,52,29.8,0,0,4.8,13.9 -2020-04-05T21:00,44.3,52,27.7,0,0,6.3,10.7 -2020-04-05T22:00,40.7,60,28,0,0,4.5,10.5 -2020-04-05T23:00,39.4,64,28.4,0,0,4.4,7.2 -2020-04-06T00:00,37.7,65,27.1,0,0,4.1,6.7 -2020-04-06T01:00,35.9,65,25.2,0,0,5.2,7.4 -2020-04-06T02:00,36.2,59,23.2,0,0,4.9,7.6 -2020-04-06T03:00,35.5,60,23,0,0,5.2,8.3 -2020-04-06T04:00,34.4,62,22.8,0,0,4.8,8.3 -2020-04-06T05:00,35.1,60,22.4,0,0,5.1,7.8 -2020-04-06T06:00,34,65,23.4,0,0,3.8,8.3 -2020-04-06T07:00,40.8,55,26.1,0,0,3.5,8.1 -2020-04-06T08:00,50.8,45,30.3,0,0,1.7,7.6 -2020-04-06T09:00,59.8,33,30.8,0,0,3.5,10.1 -2020-04-06T10:00,64.9,20,22.7,0,0,6.3,14.3 -2020-04-06T11:00,66.7,15,17.8,0,0,9.7,19.5 -2020-04-06T12:00,67.1,16,19.5,0,0,9.8,21.3 -2020-04-06T13:00,68,16,20.1,0,0,8.4,20.4 -2020-04-06T14:00,68.7,15,19.8,0,0,7,18.3 -2020-04-06T15:00,68.9,15,19.6,0,0,6.2,15.9 -2020-04-06T16:00,68.8,15,18.6,0,0,4.7,13.9 -2020-04-06T17:00,67.2,22,27,0,0,4.7,10.7 -2020-04-06T18:00,58.6,39,33.7,0,0,5.9,8.1 -2020-04-06T19:00,56.6,32,27.1,0,0,4,8.5 -2020-04-06T20:00,46.4,48,28,0,0,4.3,7.2 -2020-04-06T21:00,44.1,50,26.4,0,0,5.5,8.7 -2020-04-06T22:00,43.8,44,23.5,0,0,5.7,9.8 -2020-04-06T23:00,41.3,46,21.8,0,0,5.4,9.4 -2020-04-07T00:00,39.1,49,21.6,0,0,5,8.7 -2020-04-07T01:00,37.4,54,22.1,0,0,5.3,7.8 -2020-04-07T02:00,35.9,59,22.9,0,0,4.9,7.4 -2020-04-07T03:00,35.2,61,23.1,0,0,4.4,7.2 -2020-04-07T04:00,34.8,59,21.9,0,0,6.5,8.7 -2020-04-07T05:00,40.1,43,19.2,0,0,4.7,7.8 -2020-04-07T06:00,38.7,46,19.6,0,0,3.9,5.8 -2020-04-07T07:00,42.3,50,24.9,0,0,1.2,5.1 -2020-04-07T08:00,50.4,37,25.3,0,0,4.3,10.5 -2020-04-07T09:00,58.2,28,25.3,0,0,4,11.2 -2020-04-07T10:00,63.1,22,23.7,0,0,3.8,11.9 -2020-04-07T11:00,64.7,18,20.7,0,0,1.9,11.6 -2020-04-07T12:00,65.8,18,21.4,0,0,4.3,12.5 -2020-04-07T13:00,66.6,18,21.2,0,0,6.4,15.4 -2020-04-07T14:00,67.1,17,20.9,0,0,6.2,15.7 -2020-04-07T15:00,67.4,16,20.3,0,0,6.4,15 -2020-04-07T16:00,67.4,16,19.2,0,0,7.4,15.7 -2020-04-07T17:00,67.1,21,25.9,0,0,7.9,15 -2020-04-07T18:00,61.1,39,35.7,0,0,5.1,13 -2020-04-07T19:00,51.4,47,31.9,0,0,6.2,6.7 -2020-04-07T20:00,48,51,30.8,0,0,4.7,7.8 -2020-04-07T21:00,44.9,47,25.6,0,0,4.8,7.6 -2020-04-07T22:00,41.9,45,22.1,0,0,4.8,7.6 -2020-04-07T23:00,41.7,49,23.7,0,0,5.9,9.8 -2020-04-08T00:00,39.9,54,24.7,0,0,4.7,9.8 -2020-04-08T01:00,38.4,56,24.3,0,0,4.4,7.6 -2020-04-08T02:00,37,57,23,0,0,4.8,7.8 -2020-04-08T03:00,35.3,61,23.3,0,0,3.9,7.6 -2020-04-08T04:00,34.2,63,22.7,0,0,4.3,5.8 -2020-04-08T05:00,34.4,65,24,0,0,3.2,7.8 -2020-04-08T06:00,35.6,61,23.4,0,0,4.6,6.9 -2020-04-08T07:00,41.8,53,25.7,0,0,4.5,9.6 -2020-04-08T08:00,50.5,39,26.7,0,0,5,11.4 -2020-04-08T09:00,57.6,24,21,0,0,4.1,11.9 -2020-04-08T10:00,60.9,20,19.9,0,0,4.9,13.4 -2020-04-08T11:00,62.5,20,21.1,0,0,4,13.6 -2020-04-08T12:00,64.3,20,21.9,0,0,3.4,12.8 -2020-04-08T13:00,65.8,20,23.3,0,0,5.3,13.6 -2020-04-08T14:00,66,21,24.5,0,0,9.1,18.8 -2020-04-08T15:00,66.2,22,26.1,0,0,8.5,19.9 -2020-04-08T16:00,65.8,23,26.7,0,0,8.9,17.7 -2020-04-08T17:00,66.5,19,22.8,0,0,5.6,20.4 -2020-04-08T18:00,60.4,31,29.2,0,0,4.9,10.7 -2020-04-08T19:00,52.4,43,30.4,0,0,7.4,8.7 -2020-04-08T20:00,50.8,42,28.4,0,0,5.1,9.6 -2020-04-08T21:00,47.4,49,29,0,0,6.4,10.3 -2020-04-08T22:00,45.7,53,29.4,0,0,7.2,11.9 -2020-04-08T23:00,42.4,61,29.7,0,0,4.3,11.9 -2020-04-09T00:00,40.6,67,30.3,0,0,5,6.7 -2020-04-09T01:00,39.8,69,30.5,0,0,3.6,7.2 -2020-04-09T02:00,39.9,67,29.8,0,0,5.4,8.9 -2020-04-09T03:00,38.1,71,29.5,0,0,4.7,8.9 -2020-04-09T04:00,36.4,76,29.6,0,0,4.2,7.4 -2020-04-09T05:00,35.1,80,29.4,0,0,3.9,4.9 -2020-04-09T06:00,36.5,77,29.9,0,0,3,6.7 -2020-04-09T07:00,39.2,70,30.2,0,0,5.9,10.1 -2020-04-09T08:00,41.9,61,29.5,0,0,11.6,20.8 -2020-04-09T09:00,45.2,53,28.9,0,0,10.3,22.1 -2020-04-09T10:00,48,48,29.2,0,0,10.1,21.5 -2020-04-09T11:00,49.8,44,28.9,0,0,11.1,23.5 -2020-04-09T12:00,52.5,41,29.3,0,0,9.3,23.3 -2020-04-09T13:00,54.5,39,30.1,0,0,6.9,20.8 -2020-04-09T14:00,55.9,38,30.3,0,0,6.4,17.4 -2020-04-09T15:00,56.8,37,30.7,0,0,5.1,16.3 -2020-04-09T16:00,56.4,37,30.3,0,0,4.8,13.9 -2020-04-09T17:00,55.4,42,32.8,0,0,7.3,13.4 -2020-04-09T18:00,53.3,46,32.9,0,0,5.1,14.5 -2020-04-09T19:00,50.5,51,33.2,0,0,2.3,8.1 -2020-04-09T20:00,47.8,61,35.2,0,0,4.1,4.9 -2020-04-09T21:00,46.4,62,34.2,0,0,3.4,4.9 -2020-04-09T22:00,45.3,61,32.5,0,0,3.8,6.3 -2020-04-09T23:00,41.1,74,33.4,0,0,3.9,6.5 -2020-04-10T00:00,38.2,86,34.4,0,0,2.7,5.6 -2020-04-10T01:00,36.6,93,34.8,0,0,2.7,4.9 -2020-04-10T02:00,35.1,95,33.8,0,0,3.2,4.3 -2020-04-10T03:00,35.1,92,32.9,0,0,3.3,5.1 -2020-04-10T04:00,34.4,90,31.8,0,0,5,6 -2020-04-10T05:00,37.8,91,35.4,0,0,4.4,6.3 -2020-04-10T06:00,37,92,34.8,0,0,4.1,6.9 -2020-04-10T07:00,42.4,80,36.9,0,0,4.3,9.2 -2020-04-10T08:00,51.2,63,39.1,0,0,5,11.4 -2020-04-10T09:00,60.6,38,34.9,0,0,6.7,15 -2020-04-10T10:00,65.8,28,31.4,0,0,4.2,19.7 -2020-04-10T11:00,67.6,22,27.2,0,0,5.7,15.9 -2020-04-10T12:00,68.7,19,24.8,0,0,6.7,17 -2020-04-10T13:00,70.3,18,25.4,0,0,8.1,18.1 -2020-04-10T14:00,65.2,29,31.8,0.024,0,7.4,18.1 -2020-04-10T15:00,62.6,29,29.5,0,0,11.2,21.7 -2020-04-10T16:00,66,19,23.1,0,0,5.5,20.4 -2020-04-10T17:00,64.6,22,25.1,0,0,10.2,15 -2020-04-10T18:00,60.1,32,29.8,0,0,10.3,17.9 -2020-04-10T19:00,59.3,26,24.3,0,0,13.6,22.8 -2020-04-10T20:00,56.7,29,25.1,0,0,10.8,22.8 -2020-04-10T21:00,52.4,38,27.7,0,0,8.1,17.7 -2020-04-10T22:00,49.8,43,28.2,0,0,5.8,13.4 -2020-04-10T23:00,46.7,47,27.6,0,0,4.9,9.2 -2020-04-11T00:00,43,54,27.5,0,0,6.6,8.7 -2020-04-11T01:00,40.3,58,26.9,0,0,5.3,8.3 -2020-04-11T02:00,39,61,26.9,0,0,4.3,6.9 -2020-04-11T03:00,38.2,58,24.9,0,0,4.7,6.9 -2020-04-11T04:00,38.3,50,21.4,0,0,5.6,8.5 -2020-04-11T05:00,38.8,47,20,0,0,5.6,11 -2020-04-11T06:00,39.5,46,20.2,0,0,6.5,10.5 -2020-04-11T07:00,45.1,41,23.1,0,0,6,12.8 -2020-04-11T08:00,53.3,33,24.7,0,0,2.9,11.2 -2020-04-11T09:00,60.2,20,19,0,0,5.4,13.4 -2020-04-11T10:00,62.6,17,17.5,0,0,2.9,13.2 -2020-04-11T11:00,64.5,16,18,0,0,0.5,11.2 -2020-04-11T12:00,66,15,16.7,0,0,2.7,11.4 -2020-04-11T13:00,67.4,13,14,0,0,3.3,12.5 -2020-04-11T14:00,69,11,11.4,0,0,2.7,12.3 -2020-04-11T15:00,69.7,8,6.4,0,0,7.7,16.3 -2020-04-11T16:00,68.1,9,8.2,0,0,9.4,19.5 -2020-04-11T17:00,65,16,17.4,0,0,11.7,18.3 -2020-04-11T18:00,60.9,19,18.6,0,0,9,20.4 -2020-04-11T19:00,54,30,23.3,0,0,7.8,14.5 -2020-04-11T20:00,53.9,31,23.6,0,0,4.6,9.4 -2020-04-11T21:00,52.2,34,24.6,0,0,4.3,8.5 -2020-04-11T22:00,51,39,26.9,0,0,10.5,17 -2020-04-11T23:00,47.7,57,33.3,0,0,12.3,19.7 -2020-04-12T00:00,40.6,83,35.8,0.008,0,17,28 -2020-04-12T01:00,36.3,99,36.1,0.028,0.055,13.8,29.3 -2020-04-12T02:00,34.8,96,33.7,0.012,0.11,12.1,22.6 -2020-04-12T03:00,30.7,91,28.2,0.004,0.11,14.4,26.2 -2020-04-12T04:00,27.9,87,24.4,0,0.11,12.1,24.8 -2020-04-12T05:00,23.1,84,19,0,0.193,10.6,21 -2020-04-12T06:00,22.6,83,18.3,0,0.055,9.7,18.3 -2020-04-12T07:00,22.6,80,17.4,0,0.055,10.1,18.3 -2020-04-12T08:00,23.4,75,16.5,0,0.055,10.4,19.9 -2020-04-12T09:00,24.1,66,14.5,0,0.028,10.3,20.1 -2020-04-12T10:00,25.4,63,14.6,0,0.055,10.2,21 -2020-04-12T11:00,26.1,62,14.8,0,0.028,9.3,20.8 -2020-04-12T12:00,27.1,64,16.7,0,0.055,7.4,19.5 -2020-04-12T13:00,28,64,17.5,0,0.028,8.1,18.6 -2020-04-12T14:00,29.6,59,17,0,0.028,9,19.9 -2020-04-12T15:00,30,46,11.5,0,0,10,20.8 -2020-04-12T16:00,29.2,50,12.7,0,0,10.2,21 -2020-04-12T17:00,24.4,58,11.7,0,0.028,7.7,19.9 -2020-04-12T18:00,22.9,61,11.6,0,0,7.6,15.7 -2020-04-12T19:00,21.7,66,12.2,0,0.028,6.7,15 -2020-04-12T20:00,21.9,66,12.3,0,0.055,5.9,13.2 -2020-04-12T21:00,21.7,67,12.3,0,0.055,3.8,11.9 -2020-04-12T22:00,21.3,71,13.4,0,0.083,2.6,8.7 -2020-04-12T23:00,21.2,77,15.1,0,0.055,3,7.2 -2020-04-13T00:00,21.4,77,15.4,0,0.028,3.9,8.1 -2020-04-13T01:00,21.4,75,14.7,0,0.028,4.5,8.7 -2020-04-13T02:00,21.4,75,14.6,0,0.028,5.4,10.1 -2020-04-13T03:00,21.2,75,14.5,0,0.028,6.3,11.9 -2020-04-13T04:00,20.6,78,14.9,0,0.028,8.1,13.9 -2020-04-13T05:00,17.3,77,11.5,0,0.028,10.2,16.3 -2020-04-13T06:00,17.1,76,10.7,0,0.055,8.9,17.9 -2020-04-13T07:00,17,74,10.2,0,0.055,9.4,17.9 -2020-04-13T08:00,17.2,73,10.1,0,0.055,8.2,17.4 -2020-04-13T09:00,17.3,76,11.1,0,0.028,7.6,17 -2020-04-13T10:00,19.3,64,9.2,0,0.028,6.7,14.1 -2020-04-13T11:00,23.2,56,10,0,0.028,6.7,17.4 -2020-04-13T12:00,22,68,13.1,0,0.028,8.2,18.8 -2020-04-13T13:00,22.2,67,13,0,0.028,8.2,17.7 -2020-04-13T14:00,23.5,64,13.3,0,0.028,8,15.7 -2020-04-13T15:00,23.4,68,14.5,0,0.028,9.5,17.4 -2020-04-13T16:00,22.2,68,13.4,0,0.055,9.2,17.9 -2020-04-13T17:00,21.2,67,12,0,0.083,3.6,16.8 -2020-04-13T18:00,19.8,75,13.2,0,0.028,1.7,6.9 -2020-04-13T19:00,19.9,69,11.5,0,0.028,2,4.5 -2020-04-13T20:00,17.2,79,11.8,0,0.028,3.4,5.6 -2020-04-13T21:00,15.2,79,9.8,0,0,5.4,7.6 -2020-04-13T22:00,19.4,72,11.8,0,0,4.2,7.8 -2020-04-13T23:00,16.9,76,10.6,0,0,4.1,5.8 -2020-04-14T00:00,12,82,7.6,0,0,4.5,7.2 -2020-04-14T01:00,12.9,76,6.7,0,0,3.7,6.7 -2020-04-14T02:00,11.8,75,5.3,0,0,4.8,7.4 -2020-04-14T03:00,6.2,83,2.1,0,0,6.4,8.1 -2020-04-14T04:00,9.4,79,4.3,0,0,3.4,9.2 -2020-04-14T05:00,5.2,75,-1,0,0,6.1,10.3 -2020-04-14T06:00,0.6,75,-5.5,0,0,7.4,10.3 -2020-04-14T07:00,6.1,62,-4.2,0,0,6.5,10.5 -2020-04-14T08:00,13.6,56,0.7,0,0,5.9,9.8 -2020-04-14T09:00,25.4,43,5.9,0,0,5.2,10.5 -2020-04-14T10:00,29.6,38,6.8,0,0,4.5,11.6 -2020-04-14T11:00,33.7,43,13.6,0,0,2.3,9.6 -2020-04-14T12:00,35.1,56,20.8,0,0,2.8,5.8 -2020-04-14T13:00,37.4,36,12.6,0,0,4.6,9.6 -2020-04-14T14:00,37.7,38,14.2,0,0,4.4,11.4 -2020-04-14T15:00,37.1,48,19,0,0,4.1,9.8 -2020-04-14T16:00,36.9,40,14.6,0,0,4,8.5 -2020-04-14T17:00,42.4,36,17.3,0,0,4.3,9.6 -2020-04-14T18:00,30.9,48,13.4,0,0,8.4,12.1 -2020-04-14T19:00,37.1,30,8.3,0,0,6.1,11.6 -2020-04-14T20:00,30.7,40,9.1,0,0,4,6.9 -2020-04-14T21:00,20.9,66,11.4,0,0,6.3,8.7 -2020-04-14T22:00,14.6,78,9,0,0,7.3,10.1 -2020-04-14T23:00,16.9,75,10.3,0,0,6.3,10.1 -2020-04-15T00:00,20.7,68,11.8,0,0,5.1,8.5 -2020-04-15T01:00,18.5,72,11.1,0,0,4.8,6.9 -2020-04-15T02:00,16.8,75,10.2,0,0,5.4,7.6 -2020-04-15T03:00,15.7,78,10.1,0,0,5.9,8.1 -2020-04-15T04:00,13.1,79,7.7,0,0,7.5,10.1 -2020-04-15T05:00,17.6,77,11.7,0,0,5.6,10.1 -2020-04-15T06:00,16.1,75,9.4,0,0,6.2,11.4 -2020-04-15T07:00,20.9,68,11.9,0,0,6.5,10.7 -2020-04-15T08:00,30.7,55,16.6,0,0,5,10.3 -2020-04-15T09:00,39.1,43,18.4,0,0,5.5,11 -2020-04-15T10:00,41.3,39,18.1,0,0,6.5,13 -2020-04-15T11:00,42,43,21.1,0,0,4.4,13.2 -2020-04-15T12:00,49.8,21,11.7,0,0,7.7,17.4 -2020-04-15T13:00,50.5,21,12.5,0,0,8.6,20.1 -2020-04-15T14:00,51.5,23,14.5,0,0,7.4,19.2 -2020-04-15T15:00,51.7,24,16,0,0,9.3,19.2 -2020-04-15T16:00,50.9,26,17.3,0,0,10.5,19.5 -2020-04-15T17:00,42.8,61,30.3,0,0,13,24.6 -2020-04-15T18:00,40.8,68,31.2,0,0,9.9,24.6 -2020-04-15T19:00,37.6,80,31.8,0.004,0,10.5,17 -2020-04-15T20:00,35.1,86,31.4,0.012,0.028,7.9,17.2 -2020-04-15T21:00,34.6,88,31.5,0.004,0.083,5.6,13.6 -2020-04-15T22:00,33.9,90,31.3,0.004,0.11,4.8,9.6 -2020-04-15T23:00,33.5,90,31,0.004,0.083,2.2,12.1 -2020-04-16T00:00,31.6,97,30.9,0.004,0.193,2,5.1 -2020-04-16T01:00,31.6,97,31,0,0.193,2.1,4 -2020-04-16T02:00,31,99,30.7,0,0.193,4,14.5 -2020-04-16T03:00,31.2,97,30.4,0,0.248,4.7,19 -2020-04-16T04:00,31.2,97,30.5,0,0.138,3.3,8.3 -2020-04-16T05:00,30,97,29.3,0,0.11,8.7,6.9 -2020-04-16T06:00,28.9,95,27.5,0,0.579,10.2,16.6 -2020-04-16T07:00,27.3,95,26,0,0.469,12.4,20.4 -2020-04-16T08:00,27.1,95,25.8,0,0.276,9.3,19.9 -2020-04-16T09:00,27.7,92,25.8,0,0.165,9.3,15.9 -2020-04-16T10:00,27.6,94,26.1,0,0.055,11.3,19 -2020-04-16T11:00,26.7,94,25.1,0,0.11,11,19.5 -2020-04-16T12:00,27.4,92,25.4,0,0.303,10.1,18.6 -2020-04-16T13:00,26.7,90,24.2,0,0.331,10.7,17.4 -2020-04-16T14:00,26.2,90,23.6,0,0.22,11.5,20.1 -2020-04-16T15:00,26.2,89,23.5,0,0.11,11.7,19.2 -2020-04-16T16:00,25.8,91,23.6,0,0.165,13.2,21.5 -2020-04-16T17:00,22.6,92,20.6,0,0.138,10.1,21.7 -2020-04-16T18:00,22.4,91,20.1,0,0.055,8.1,16.3 -2020-04-16T19:00,21.4,89,18.8,0,0.028,7.4,13.4 -2020-04-16T20:00,20.2,90,17.8,0,0,3.6,11.6 -2020-04-16T21:00,19.5,90,17.2,0,0,2.3,5.6 -2020-04-16T22:00,18.7,90,16.2,0,0,2.4,4 -2020-04-16T23:00,18,88,15,0,0,3.6,6 -2020-04-17T00:00,13.2,88,10.2,0,0,5.8,6.9 -2020-04-17T01:00,15.4,85,11.8,0,0,5.1,6.9 -2020-04-17T02:00,15.4,87,12.3,0,0,5.3,6.5 -2020-04-17T03:00,13.2,89,10.6,0,0,5.8,6.9 -2020-04-17T04:00,10.7,90,8.2,0,0,5.4,7.4 -2020-04-17T05:00,14.3,82,9.7,0,0,5.7,8.3 -2020-04-17T06:00,12.3,79,7.1,0,0,4.9,9.2 -2020-04-17T07:00,13.6,77,7.8,0,0,6,9.2 -2020-04-17T08:00,18.7,75,12.1,0,0,7.5,11.6 -2020-04-17T09:00,23.9,77,17.7,0,0,7.5,12.5 -2020-04-17T10:00,29.5,71,21.4,0,0,4.1,11 -2020-04-17T11:00,32.5,79,26.8,0,0,2.2,7.2 -2020-04-17T12:00,34.5,67,24.5,0,0,2.2,3.8 -2020-04-17T13:00,35.2,67,25.5,0,0,3.6,6.7 -2020-04-17T14:00,35.6,71,27.2,0,0,3.2,6.9 -2020-04-17T15:00,35.8,75,28.6,0,0,2.6,6 -2020-04-17T16:00,35.5,76,28.7,0,0,3.2,5.1 -2020-04-17T17:00,32.4,80,26.8,0,0,5.2,5.6 -2020-04-17T18:00,34.5,66,24.4,0,0,1.9,6.3 -2020-04-17T19:00,32.3,71,23.8,0,0,3.7,4.7 -2020-04-17T20:00,29,75,22.2,0,0,3.2,6.3 -2020-04-17T21:00,20.8,90,18.4,0,0,7.1,8.7 -2020-04-17T22:00,18.4,88,15.5,0,0,7.3,9.2 -2020-04-17T23:00,16.4,84,12.5,0,0,8.1,10.1 -2020-04-18T00:00,17.8,76,11.6,0,0,7.3,9.4 -2020-04-18T01:00,18.9,72,11.4,0,0,6.9,8.7 -2020-04-18T02:00,18.5,71,10.8,0,0,7.3,8.7 -2020-04-18T03:00,18.9,71,11.1,0,0,6.7,8.7 -2020-04-18T04:00,19,72,11.5,0,0,6.1,8.1 -2020-04-18T05:00,14,83,9.9,0,0,7.1,7.2 -2020-04-18T06:00,15.3,83,11.1,0,0,6.3,9.2 -2020-04-18T07:00,21.5,80,16.2,0,0,4.6,8.1 -2020-04-18T08:00,29.7,79,23.9,0,0,4.3,6.3 -2020-04-18T09:00,35,73,27.1,0,0,4.9,5.8 -2020-04-18T10:00,41.4,52,25.2,0,0,1.6,5.8 -2020-04-18T11:00,40.3,66,29.8,0,0,3.8,5.4 -2020-04-18T12:00,36.9,77,30.4,0,0,6.3,11.6 -2020-04-18T13:00,37.4,73,29.6,0,0,5.9,11.9 -2020-04-18T14:00,38.5,71,30,0,0,3.5,11 -2020-04-18T15:00,37.5,73,29.6,0,0,5.1,8.7 -2020-04-18T16:00,38,70,29,0.004,0.028,4.7,8.7 -2020-04-18T17:00,37.1,84,32.7,0,0,3.3,8.1 -2020-04-18T18:00,34.5,89,31.6,0,0,5.7,7.2 -2020-04-18T19:00,31.1,87,27.8,0,0,6.3,8.3 -2020-04-18T20:00,31.4,89,28.4,0,0,4.5,8.1 -2020-04-18T21:00,31.3,89,28.5,0,0,5.4,8.5 -2020-04-18T22:00,30.4,91,28,0,0,4.6,8.5 -2020-04-18T23:00,32.3,89,29.3,0,0,5.5,8.7 -2020-04-19T00:00,35.2,84,30.9,0.004,0,7.1,11.4 -2020-04-19T01:00,35.1,86,31.3,0.004,0,5,11.4 -2020-04-19T02:00,34,87,30.4,0.004,0,6.2,8.3 -2020-04-19T03:00,34.3,85,30.3,0.004,0,5,7.6 -2020-04-19T04:00,38.1,75,30.8,0.004,0,0.2,6.9 -2020-04-19T05:00,28.9,87,25.4,0,0,5.2,4.9 -2020-04-19T06:00,27.4,89,24.6,0,0,4.7,7.8 -2020-04-19T07:00,30.4,89,27.6,0,0,4.3,8.5 -2020-04-19T08:00,32.5,87,29,0,0,4,7.8 -2020-04-19T09:00,33.1,87,29.6,0,0,1.1,6.9 -2020-04-19T10:00,35,84,30.7,0,0,1.6,4 -2020-04-19T11:00,37.6,85,33.6,0,0,1.1,3.4 -2020-04-19T12:00,39.9,81,34.7,0,0,2.2,4.7 -2020-04-19T13:00,42.5,74,34.8,0,0,3.2,6.9 -2020-04-19T14:00,41.8,73,33.8,0,0,10.1,17.7 -2020-04-19T15:00,44.9,59,31.3,0,0,8.4,23.3 -2020-04-19T16:00,48.3,50,30.5,0,0,6.2,18.1 -2020-04-19T17:00,51.9,47,32.5,0,0,1,14.1 -2020-04-19T18:00,49.1,62,36.8,0,0,4.2,7.4 -2020-04-19T19:00,43,63,31.2,0,0,4.9,8.1 -2020-04-19T20:00,38,68,28.3,0,0,3.5,7.6 -2020-04-19T21:00,34.4,84,30,0,0,4.6,5.4 -2020-04-19T22:00,33.8,84,29.4,0,0,3.8,6 -2020-04-19T23:00,33.9,77,27.4,0,0,5.6,9.4 -2020-04-20T00:00,31.3,85,27.4,0,0,4.7,8.7 -2020-04-20T01:00,30.5,88,27.2,0,0,4.8,6.7 -2020-04-20T02:00,29,88,25.8,0,0,3,6 -2020-04-20T03:00,28,85,24.1,0,0,3.6,3.8 -2020-04-20T04:00,27.2,82,22.6,0,0,3.8,4.9 -2020-04-20T05:00,25.2,87,21.7,0,0,5.6,5.8 -2020-04-20T06:00,29.4,79,23.7,0,0,5.7,8.7 -2020-04-20T07:00,35.9,68,26.3,0,0,4.3,10.3 -2020-04-20T08:00,44.2,57,30.1,0,0,3,9.8 -2020-04-20T09:00,51.2,46,30.9,0,0,1.4,9.6 -2020-04-20T10:00,54.9,38,30,0,0,0,8.7 -2020-04-20T11:00,56.8,34,28.9,0,0,3,11 -2020-04-20T12:00,58.6,27,24.4,0,0,4.6,13.4 -2020-04-20T13:00,60.3,24,23.3,0,0,4.2,13.6 -2020-04-20T14:00,61.4,24,24.6,0,0,4.3,12.8 -2020-04-20T15:00,61.3,25,24.9,0,0,5.3,13.2 -2020-04-20T16:00,60.3,28,26.8,0,0,8.5,15.7 -2020-04-20T17:00,58.7,44,36.6,0,0,8.6,22.6 -2020-04-20T18:00,54.1,53,37.5,0,0,7.2,16.1 -2020-04-20T19:00,46.8,61,34.2,0,0,4.1,11.4 -2020-04-20T20:00,42.4,72,34.1,0,0,3.6,6.9 -2020-04-20T21:00,38.9,82,33.9,0,0,2.1,6 -2020-04-20T22:00,37,85,33.1,0,0,2.1,4 -2020-04-20T23:00,34.9,89,32,0,0,3,5.6 -2020-04-21T00:00,33.2,93,31.5,0,0,1.5,4.9 -2020-04-21T01:00,32.9,91,30.7,0,0,3.8,5.8 -2020-04-21T02:00,31.8,94,30.3,0,0,3.1,7.4 -2020-04-21T03:00,31.6,92,29.5,0,0,1.8,4.9 -2020-04-21T04:00,30.4,93,28.6,0,0,2.6,3.4 -2020-04-21T05:00,29.1,97,28.5,0,0,1.7,4.3 -2020-04-21T06:00,30.3,97,29.6,0,0,3,6.7 -2020-04-21T07:00,37.4,83,32.6,0,0,1.8,7.2 -2020-04-21T08:00,45.3,63,33.4,0,0,0.7,7.6 -2020-04-21T09:00,49.9,53,33.6,0,0,2.9,10.5 -2020-04-21T10:00,54.1,47,34.1,0,0,4.3,13 -2020-04-21T11:00,57.5,43,35.2,0,0,4.7,14.1 -2020-04-21T12:00,60,41,36.3,0,0,6,15.4 -2020-04-21T13:00,60.4,40,36.1,0,0,6.1,17 -2020-04-21T14:00,62.4,34,33.7,0,0,2.6,15.9 -2020-04-21T15:00,62.1,35,34.4,0,0,5.4,13.4 -2020-04-21T16:00,62.1,36,34.7,0,0,6.1,13.6 -2020-04-21T17:00,54,66,42.7,0,0,12.2,13.4 -2020-04-21T18:00,54.8,64,42.7,0,0,2.2,22.4 -2020-04-21T19:00,50.5,73,42.1,0,0,4.3,6.7 -2020-04-21T20:00,48.1,69,38.3,0,0,6.5,10.7 -2020-04-21T21:00,44.8,71,36,0,0,5.1,10.7 -2020-04-21T22:00,42.1,75,34.8,0,0,5.1,8.5 -2020-04-21T23:00,40,74,32.3,0,0,4.4,8.7 -2020-04-22T00:00,38.8,73,30.8,0,0,3.8,7.2 -2020-04-22T01:00,37.5,73,29.7,0,0,5.4,6.7 -2020-04-22T02:00,37.1,70,28.3,0,0,6.8,8.3 -2020-04-22T03:00,36.9,67,27,0,0,7.3,8.7 -2020-04-22T04:00,37.6,61,25.3,0,0,7.8,9.4 -2020-04-22T05:00,45.2,42,23.3,0,0,9.6,10.5 -2020-04-22T06:00,47.8,40,24.6,0,0,10.3,18.8 -2020-04-22T07:00,51.5,43,29.5,0,0,5.2,16.8 -2020-04-22T08:00,55,41,31.9,0,0,5.4,12.3 -2020-04-22T09:00,57.6,38,32,0,0,7.2,15.7 -2020-04-22T10:00,60.1,31,29.4,0,0,7.7,17 -2020-04-22T11:00,60.6,37,34.3,0.02,0,7.5,20.1 -2020-04-22T12:00,60.8,38,34.8,0.031,0,1.7,17.7 -2020-04-22T13:00,61.2,38,35.2,0,0,5.9,14.1 -2020-04-22T14:00,58.1,47,38.2,0.043,0,1.4,19.2 -2020-04-22T15:00,61.3,36,33.8,0,0,2.7,11 -2020-04-22T16:00,61.8,34,33.2,0,0,2.9,10.1 -2020-04-22T17:00,60.3,39,35.3,0,0,2.4,9.4 -2020-04-22T18:00,57.7,50,39.2,0,0,5.5,10.1 -2020-04-22T19:00,50.5,65,39,0,0,5.4,9.4 -2020-04-22T20:00,47.7,72,39,0,0,4.3,6.9 -2020-04-22T21:00,45.1,71,36.1,0,0,6.1,9.6 -2020-04-22T22:00,44.6,52,27.9,0,0,7,11.9 -2020-04-22T23:00,42.4,51,25.7,0,0,6.9,11.9 -2020-04-23T00:00,41.5,54,26.1,0,0,7.1,12.3 -2020-04-23T01:00,39.2,60,26.6,0,0,5.3,12.1 -2020-04-23T02:00,35.5,74,28,0,0,3.6,8.9 -2020-04-23T03:00,33.7,82,28.7,0,0,3.5,6.3 -2020-04-23T04:00,34.6,79,28.7,0,0,3.4,6.7 -2020-04-23T05:00,36.5,71,27.9,0,0,5.7,11.9 -2020-04-23T06:00,42.8,56,28.2,0,0,5.8,10.7 -2020-04-23T07:00,49.5,49,30.9,0,0,5.4,10.1 -2020-04-23T08:00,55.4,38,30.1,0,0,3.4,10.7 -2020-04-23T09:00,58.7,34,30.2,0,0,10.6,20.4 -2020-04-23T10:00,59,34,30.4,0,0,5.4,20.8 -2020-04-23T11:00,61.3,32,31.3,0,0,6.1,17.2 -2020-04-23T12:00,62.8,30,30.7,0,0,8.4,20.6 -2020-04-23T13:00,64.2,27,29.7,0,0,10,23 -2020-04-23T14:00,65.6,23,26.2,0,0,10.4,23.3 -2020-04-23T15:00,65.2,22,25,0,0,12.4,24.2 -2020-04-23T16:00,64.9,22,24.9,0,0,9.7,24.6 -2020-04-23T17:00,64.7,23,26.5,0,0,8.6,18.3 -2020-04-23T18:00,59.5,34,31.2,0,0,7.3,14.8 -2020-04-23T19:00,54,45,33.4,0,0,7.6,14.5 -2020-04-23T20:00,50.8,64,39.1,0.016,0,9.4,13.4 -2020-04-23T21:00,48.8,86,44.7,0.02,0,5.2,15.4 -2020-04-23T22:00,48.2,87,44.5,0.008,0,3.4,9.2 -2020-04-23T23:00,46.8,91,44.2,0,0,6.4,10.3 -2020-04-24T00:00,43.3,90,40.7,0,0,7.4,12.1 -2020-04-24T01:00,43.2,73,35.2,0,0,10.1,16.8 -2020-04-24T02:00,44.1,66,33.4,0,0,6.3,17.2 -2020-04-24T03:00,41.9,68,32.1,0,0,4,10.5 -2020-04-24T04:00,39.7,74,32,0,0,4.6,7.4 -2020-04-24T05:00,38.1,97,37.3,0,0,5.5,6 -2020-04-24T06:00,37.9,98,37.2,0.063,0.055,4.1,14.3 -2020-04-24T07:00,39.8,92,37.7,0.004,0,5.4,11.4 -2020-04-24T08:00,42.5,82,37.5,0.004,0,5.7,13.4 -2020-04-24T09:00,46,69,36.3,0,0,2.5,13.4 -2020-04-24T10:00,49.3,56,34.3,0,0,2.3,10.5 -2020-04-24T11:00,53.2,45,32.5,0,0,3.9,21.5 -2020-04-24T12:00,54.9,39,30.7,0,0,5,21.5 -2020-04-24T13:00,56.3,36,29.4,0,0,6.9,18.1 -2020-04-24T14:00,58.4,31,28.1,0,0,9.1,20.4 -2020-04-24T15:00,57.5,32,28.1,0,0,7.5,20.6 -2020-04-24T16:00,57.1,35,29.7,0,0,7.6,17 -2020-04-24T17:00,52.3,47,32.8,0,0,2.3,16.3 -2020-04-24T18:00,51.4,49,32.8,0,0,1.3,7.6 -2020-04-24T19:00,46.1,65,35.1,0,0,3.8,5.8 -2020-04-24T20:00,45.5,71,36.6,0,0,0.9,6.7 -2020-04-24T21:00,42.4,81,37,0,0,2.6,3.1 -2020-04-24T22:00,40.8,86,36.9,0,0,3.5,5.1 -2020-04-24T23:00,38.8,91,36.2,0,0,3.3,5.6 -2020-04-25T00:00,37,94,35.3,0,0,3,5.1 -2020-04-25T01:00,38.1,91,35.8,0,0,1.7,5.6 -2020-04-25T02:00,37.3,94,35.7,0.004,0,3.6,4 -2020-04-25T03:00,38.4,92,36.2,0.012,0,1.6,8.5 -2020-04-25T04:00,38.6,93,36.7,0,0,1.8,4 -2020-04-25T05:00,40.6,89,37.7,0,0,0.9,4.3 -2020-04-25T06:00,40.6,90,37.9,0,0,2.2,4.3 -2020-04-25T07:00,42.7,82,37.6,0,0,3.8,8.5 -2020-04-25T08:00,47.9,66,37,0,0,6.3,13.6 -2020-04-25T09:00,52.5,47,32.9,0,0,2.9,19.9 -2020-04-25T10:00,55,38,29.7,0,0,2.7,18.8 -2020-04-25T11:00,56.2,36,29.3,0.02,0,5.3,14.8 -2020-04-25T12:00,56.9,33,28.4,0.02,0,7.7,17.9 -2020-04-25T13:00,57.7,33,28.8,0,0,6.4,18.3 -2020-04-25T14:00,58.2,34,29.8,0,0,6.7,16.3 -2020-04-25T15:00,59.6,31,29.3,0,0,4.6,16.6 -2020-04-25T16:00,59.5,31,28.9,0,0,4.2,13 -2020-04-25T17:00,60.5,29,28.2,0,0,7,11.2 -2020-04-25T18:00,58.5,51,40.3,0,0,2.5,13 -2020-04-25T19:00,57.7,33,28.9,0,0,3,3.4 -2020-04-25T20:00,49.5,49,31.2,0,0,4.6,6.9 -2020-04-25T21:00,46.7,61,33.9,0,0,4.9,8.5 -2020-04-25T22:00,44.5,70,35.3,0,0,4.8,8.1 -2020-04-25T23:00,44.1,70,34.9,0,0,5.1,8.3 -2020-04-26T00:00,41.8,72,33.4,0,0,4,8.3 -2020-04-26T01:00,39.3,73,31.4,0,0,3.8,6.7 -2020-04-26T02:00,37.6,74,30,0,0,5.3,6.5 -2020-04-26T03:00,37.5,69,28.1,0,0,5.2,6.5 -2020-04-26T04:00,39,60,26.2,0,0,4,6.5 -2020-04-26T05:00,37.9,69,28.6,0,0,3.7,4.9 -2020-04-26T06:00,41.6,60,28.6,0,0,3.6,5.1 -2020-04-26T07:00,48.6,50,30.8,0,0,2.5,7.2 -2020-04-26T08:00,57.6,41,33.8,0,0,1.6,7.4 -2020-04-26T09:00,64.5,32,34.2,0,0,3.2,9.6 -2020-04-26T10:00,68.5,23,29.6,0,0,4.2,11.6 -2020-04-26T11:00,70.2,21,28,0,0,2.9,11.6 -2020-04-26T12:00,72.1,19,27.6,0,0,0,11.6 -2020-04-26T13:00,72.1,19,27.2,0,0,1.8,10.3 -2020-04-26T14:00,72.6,19,28,0,0,8.4,15.7 -2020-04-26T15:00,66.6,30,34.3,0,0,15.4,26.4 -2020-04-26T16:00,62.7,37,36.1,0,0,15.7,27.3 -2020-04-26T17:00,60.4,45,38.8,0,0,2.5,26.4 -2020-04-26T18:00,59.1,50,40.6,0,0,5.4,11.4 -2020-04-26T19:00,56.1,54,39.6,0,0,4.2,8.5 -2020-04-26T20:00,56.7,51,38.8,0,0,2.9,6.7 -2020-04-26T21:00,53.6,57,38.8,0,0,3.8,5.8 -2020-04-26T22:00,50,60,36.9,0,0,3.9,7.6 -2020-04-26T23:00,45.2,67,35,0,0,5.4,6.5 -2020-04-27T00:00,43.3,69,33.9,0,0,5.1,6.5 -2020-04-27T01:00,42.4,70,33.2,0,0,3.8,6.3 -2020-04-27T02:00,40,76,33.2,0,0,4.2,6.3 -2020-04-27T03:00,38.9,80,33.2,0,0,3.6,5.8 -2020-04-27T04:00,39.7,76,32.9,0,0,4.5,7.4 -2020-04-27T05:00,40,72,31.8,0,0,4.1,7.6 -2020-04-27T06:00,42.5,68,32.6,0,0,5.9,8.7 -2020-04-27T07:00,49.6,57,34.9,0,0,2.6,9.4 -2020-04-27T08:00,58,44,36.1,0,0,3.7,9.6 -2020-04-27T09:00,64.9,32,34,0,0,5.4,13.2 -2020-04-27T10:00,68.6,25,31.3,0,0,4.4,14.1 -2020-04-27T11:00,70.3,24,31.8,0,0,1.7,12.8 -2020-04-27T12:00,71.7,24,33.4,0,0,2.3,10.5 -2020-04-27T13:00,73.1,23,33.3,0,0,2.7,11.4 -2020-04-27T14:00,73.9,22,32.5,0,0,4.6,12.8 -2020-04-27T15:00,74.4,21,32.1,0,0,4.6,13.2 -2020-04-27T16:00,74.1,20,30.7,0,0,2.9,12.3 -2020-04-27T17:00,73.9,18,27.3,0,0,6,8.7 -2020-04-27T18:00,68.5,46,46.9,0,0,4.7,9.6 -2020-04-27T19:00,64.9,28,31.3,0,0,1.9,5.6 -2020-04-27T20:00,57.2,41,33.6,0,0,5.4,8.7 -2020-04-27T21:00,53.1,54,36.9,0,0,3.6,9.6 -2020-04-27T22:00,50,63,37.9,0,0,4.3,6.7 -2020-04-27T23:00,50.3,61,37.1,0,0,3.1,8.1 -2020-04-28T00:00,46.8,69,37,0,0,4.6,5.4 -2020-04-28T01:00,51.8,55,36,0,0,2.5,8.1 -2020-04-28T02:00,47.3,59,33.9,0,0,7.6,12.1 -2020-04-28T03:00,45.9,62,33.5,0,0,5.4,12.3 -2020-04-28T04:00,45.7,63,33.7,0,0,4.7,8.9 -2020-04-28T05:00,47.2,64,35.6,0,0,1.1,7.6 -2020-04-28T06:00,48.7,63,36.7,0,0,0.3,2.9 -2020-04-28T07:00,53.8,56,38.3,0,0,3.4,8.5 -2020-04-28T08:00,61.5,37,35.2,0,0,1.2,8.9 -2020-04-28T09:00,63.5,29,31,0,0,5.1,13 -2020-04-28T10:00,65.6,29,32.6,0,0,7.4,16.6 -2020-04-28T11:00,69.4,17,23.2,0,0,12.5,23.7 -2020-04-28T12:00,70.3,16,22.6,0,0,16.8,32.2 -2020-04-28T13:00,71.1,16,23.2,0,0,16,31.3 -2020-04-28T14:00,70.9,16,22.6,0,0,16.7,30.6 -2020-04-28T15:00,70.2,16,22.3,0,0,16.8,30.9 -2020-04-28T16:00,68.5,18,23.4,0,0,16.2,30.4 -2020-04-28T17:00,65.5,22,26.1,0,0,13.1,28.9 -2020-04-28T18:00,57.3,36,30.3,0,0,13.5,25.9 -2020-04-28T19:00,53.8,40,30.2,0,0,3,21.9 -2020-04-28T20:00,51,49,32.3,0,0,4,7.4 -2020-04-28T21:00,50.2,52,33.2,0,0,3.7,6.7 -2020-04-28T22:00,46.3,61,33.7,0,0,5.2,6 -2020-04-28T23:00,45.1,63,33.2,0,0,4.2,6.3 -2020-04-29T00:00,44,66,33.4,0,0,4.8,6.5 -2020-04-29T01:00,42.1,71,33.4,0,0,5.8,6.9 -2020-04-29T02:00,40.6,76,33.5,0,0,5.2,7.4 -2020-04-29T03:00,39,81,33.6,0,0,4.3,6 -2020-04-29T04:00,38.7,83,33.8,0,0,2.2,5.4 -2020-04-29T05:00,36.7,89,33.7,0,0,3.3,4.3 -2020-04-29T06:00,40.1,79,34,0,0,5.4,8.7 -2020-04-29T07:00,46.9,54,31.3,0,0,5.4,11.2 -2020-04-29T08:00,52.6,29,21.3,0,0,6.6,14.8 -2020-04-29T09:00,57,27,23.3,0,0,5.1,14.8 -2020-04-29T10:00,61,25,24.9,0,0,4.5,13.6 -2020-04-29T11:00,64.5,22,24.4,0,0,4.8,14.1 -2020-04-29T12:00,66.5,20,23.7,0,0,6.5,16.3 -2020-04-29T13:00,68,19,24.5,0,0,6.8,17.2 -2020-04-29T14:00,68.7,20,26,0,0,6.5,17 -2020-04-29T15:00,68.6,21,27,0,0,6.4,16.1 -2020-04-29T16:00,67.8,22,27.5,0,0,5.9,15.2 -2020-04-29T17:00,68.6,20,26,0,0,4,13.6 -2020-04-29T18:00,65.6,28,31.5,0,0,3.7,9.8 -2020-04-29T19:00,60.9,31,29.8,0,0,5,6.5 -2020-04-29T20:00,61.9,25,25.5,0,0,3.5,5.8 -2020-04-29T21:00,58.4,28,25.4,0,0,0.9,4.3 -2020-04-29T22:00,48.1,54,32.2,0,0,3.2,5.4 -2020-04-29T23:00,45,70,35.9,0,0,3.3,5.6 -2020-04-30T00:00,43.3,77,36.7,0,0,3,5.6 -2020-04-30T01:00,42.6,77,36.1,0,0,3.7,4.7 -2020-04-30T02:00,42,75,34.7,0,0,3.8,5.1 -2020-04-30T03:00,40.8,76,34,0,0,4.1,5.4 -2020-04-30T04:00,41.1,75,33.9,0,0,3.8,5.4 -2020-04-30T05:00,42,70,33.1,0,0,4,5.6 -2020-04-30T06:00,45.9,61,33.2,0,0,3.5,5.1 -2020-04-30T07:00,52.1,52,35,0,0,4,8.9 -2020-04-30T08:00,61,37,34.4,0,0,3.9,10.5 -2020-04-30T09:00,68.6,27,33.7,0,0,2.3,10.5 -2020-04-30T10:00,76.2,21,32.9,0,0,3.8,11.6 -2020-04-30T11:00,80.2,15,27.9,0,0,3.1,11.6 -2020-04-30T12:00,82,14,27.8,0,0,3.6,11 -2020-04-30T13:00,83.3,13,28.1,0,0,3.3,11 -2020-04-30T14:00,83,13,27.2,0,0,3.2,10.5 -2020-04-30T15:00,81.3,17,32.5,0,0,3.3,8.9 -2020-04-30T16:00,81.7,16,31.8,0,0,6.8,13.2 -2020-04-30T17:00,79.5,21,36.1,0,0,5.8,15.7 -2020-04-30T18:00,75.7,32,43.7,0,0,4.4,8.9 -2020-04-30T19:00,66.8,40,41.5,0,0,5.5,7.8 -2020-04-30T20:00,62.5,47,41.9,0,0,4.1,9.6 -2020-04-30T21:00,55.9,56,40.3,0,0,4.8,7.8 -2020-04-30T22:00,55.8,49,37,0,0,6.2,10.7 -2020-04-30T23:00,56,47,36.2,0,0,6.5,13.9 -2020-05-01T00:00,53.9,49,35.2,0,0,4.8,10.5 -2020-05-01T01:00,51.2,50,33.4,0,0,5.7,12.5 -2020-05-01T02:00,50.5,50,32.3,0,0,5.5,9.6 -2020-05-01T03:00,47.4,55,32.1,0,0,4.6,8.7 -2020-05-01T04:00,47,55,31.6,0,0,4.1,6.7 -2020-05-01T05:00,46.3,58,32.4,0,0,4.2,7.6 -2020-05-01T06:00,51.2,50,33.2,0,0,6.5,9.6 -2020-05-01T07:00,59.1,42,36,0,0,3.3,10.5 -2020-05-01T08:00,66.1,36,38.4,0,0,4,9.6 -2020-05-01T09:00,70.3,28,35.4,0,0,8.9,18.1 -2020-05-01T10:00,74.9,23,34.3,0,0,8.9,19.2 -2020-05-01T11:00,78.4,21,34.9,0,0,6.5,18.8 -2020-05-01T12:00,80.1,19,33.9,0,0,4.5,19.7 -2020-05-01T13:00,80.1,19,34.2,0,0,7,16.1 -2020-05-01T14:00,80.4,18,32.7,0,0,7.1,19.7 -2020-05-01T15:00,81.8,16,31,0,0,8.8,19.9 -2020-05-01T16:00,80.1,19,34.3,0,0,10.2,19 -2020-05-01T17:00,74.3,40,48.1,0,0,15.1,19 -2020-05-01T18:00,71.8,42,47.4,0,0,10.1,25.7 -2020-05-01T19:00,66.1,49,46.2,0,0,6.9,16.8 -2020-05-01T20:00,64,53,46.5,0,0,14.9,24.4 -2020-05-01T21:00,61.4,61,48,0,0,14,25.3 -2020-05-01T22:00,58.6,73,50,0,0,10.2,23 -2020-05-01T23:00,57.3,79,51,0,0,10.3,17.4 -2020-05-02T00:00,56.7,83,51.5,0,0,7.6,16.8 -2020-05-02T01:00,55.4,88,51.9,0.004,0,7.3,12.5 -2020-05-02T02:00,54.7,90,51.9,0.004,0,6.4,12.5 -2020-05-02T03:00,54.2,91,51.8,0.004,0,4.5,10.7 -2020-05-02T04:00,53.2,95,51.8,0,0,1.6,7.6 -2020-05-02T05:00,51.8,89,48.7,0,0,4.7,2.7 -2020-05-02T06:00,52.1,81,46.4,0,0,6.2,10.7 -2020-05-02T07:00,52.6,76,45.3,0,0,6.6,12.3 -2020-05-02T08:00,55.3,68,44.9,0,0,6.3,13.2 -2020-05-02T09:00,58.9,57,43.9,0,0,5.7,15 -2020-05-02T10:00,61.4,51,43.3,0,0,5.5,14.1 -2020-05-02T11:00,62.9,48,42.8,0,0,4.5,14.1 -2020-05-02T12:00,66.9,41,42.5,0,0,2.1,12.8 -2020-05-02T13:00,68.5,38,42,0,0,6.6,16.1 -2020-05-02T14:00,67,40,42,0,0,8.1,18.3 -2020-05-02T15:00,64.9,52,46.9,0,0,16.4,28 -2020-05-02T16:00,63.4,58,48.3,0,0,19.1,33.1 -2020-05-02T17:00,57.3,77,50.1,0.055,0,8.3,35.3 -2020-05-02T18:00,57.9,74,49.7,0,0,7.8,15 -2020-05-02T19:00,55.3,83,50.2,0.004,0,8.1,14.1 -2020-05-02T20:00,53.4,93,51.4,0.098,0,8.1,16.3 -2020-05-02T21:00,52.4,93,50.5,0.02,0,3.3,14.1 -2020-05-02T22:00,50.6,98,50,0,0,5.4,9.4 -2020-05-02T23:00,51.1,95,49.8,0,0,6.8,11 -2020-05-03T00:00,49.5,95,48.2,0,0,4.3,11.2 -2020-05-03T01:00,47.7,97,46.9,0,0,2.2,7.4 -2020-05-03T02:00,45.4,98,45,0,0,2.9,5.6 -2020-05-03T03:00,43.8,97,42.9,0,0,3.3,6 -2020-05-03T04:00,43.9,96,42.8,0,0,3.2,6.7 -2020-05-03T05:00,45.6,94,44.1,0,0,3.5,6 -2020-05-03T06:00,47,96,46,0,0,2.8,6.3 -2020-05-03T07:00,49.6,92,47.3,0,0,1,7.2 -2020-05-03T08:00,53,80,46.9,0,0,2.4,9.4 -2020-05-03T09:00,58.3,64,46.1,0,0,2.2,10.3 -2020-05-03T10:00,63.3,55,47,0,0,4.5,13.2 -2020-05-03T11:00,67.4,49,47.4,0,0,5.1,14.8 -2020-05-03T12:00,70.9,45,48.6,0.016,0,7.9,18.6 -2020-05-03T13:00,71.2,43,47.3,0.02,0,7.7,18.6 -2020-05-03T14:00,71.6,35,42.5,0.008,0,9.6,20.4 -2020-05-03T15:00,70.3,42,46,0,0,14.4,26.6 -2020-05-03T16:00,70.4,39,44.5,0,0,8.8,26.6 -2020-05-03T17:00,67.9,47,47.2,0,0,9.6,20.4 -2020-05-03T18:00,64.9,55,48.2,0,0,11.8,19 -2020-05-03T19:00,60.3,66,48.9,0,0,13.1,22.8 -2020-05-03T20:00,56.3,81,50.6,0.012,0,10.8,23.3 -2020-05-03T21:00,53.6,84,49,0,0,10.3,18.8 -2020-05-03T22:00,53,86,48.9,0,0,6.9,16.8 -2020-05-03T23:00,52.1,88,48.6,0,0,5.3,11.4 -2020-05-04T00:00,52.9,85,48.7,0,0,5.1,10.1 -2020-05-04T01:00,52.6,86,48.6,0,0,1.7,8.5 -2020-05-04T02:00,51.4,92,49.2,0,0,4.2,6.3 -2020-05-04T03:00,51.9,89,48.7,0,0,6.7,10.7 -2020-05-04T04:00,51.4,87,47.8,0,0,8.7,13.9 -2020-05-04T05:00,49.9,85,45.5,0,0,7.8,14.1 -2020-05-04T06:00,49.8,76,42.7,0,0,4.6,13 -2020-05-04T07:00,51.3,68,41,0,0,1.1,8.9 -2020-05-04T08:00,53.4,60,39.9,0,0,1.6,8.9 -2020-05-04T09:00,55.9,54,39.5,0,0,2.6,10.5 -2020-05-04T10:00,58.7,50,40.1,0,0,4.1,13.2 -2020-05-04T11:00,64.4,36,36.8,0.004,0,8.6,24.2 -2020-05-04T12:00,68.7,21,26.7,0,0,12.4,24.4 -2020-05-04T13:00,69.4,21,27.7,0,0,14.1,27.7 -2020-05-04T14:00,68,23,28.9,0,0,22.4,38.7 -2020-05-04T15:00,68.1,20,25.2,0,0,22.5,42.3 -2020-05-04T16:00,67,17,21.1,0,0,19,39.8 -2020-05-04T17:00,65.6,16,17.5,0,0,18.7,33.8 -2020-05-04T18:00,60.4,23,22.1,0,0,17.6,33.1 -2020-05-04T19:00,56.7,22,18.6,0,0,15.6,30.9 -2020-05-04T20:00,53.7,26,19.3,0,0,10.1,25.9 -2020-05-04T21:00,50.6,32,21.5,0,0,6.2,16.8 -2020-05-04T22:00,47.4,40,24.4,0,0,6.2,9.8 -2020-05-04T23:00,44.6,51,27.8,0,0,3.3,10.1 -2020-05-05T00:00,42,57,27.9,0,0,4.8,6.3 -2020-05-05T01:00,43.3,52,26.7,0,0,2.5,6 -2020-05-05T02:00,37.9,69,28.6,0,0,5.4,6.9 -2020-05-05T03:00,36.5,72,28.2,0,0,5.4,6.7 -2020-05-05T04:00,35.7,70,27,0,0,4.6,6.7 -2020-05-05T05:00,34.8,76,28,0,0,4.7,6.3 -2020-05-05T06:00,38.5,62,26.4,0,0,5,8.7 -2020-05-05T07:00,44.5,50,27,0,0,4.3,10.7 -2020-05-05T08:00,52.7,33,24.4,0,0,4,11.2 -2020-05-05T09:00,58.2,24,21.2,0,0,1.9,11.9 -2020-05-05T10:00,61,19,18.6,0,0,3,11.9 -2020-05-05T11:00,63.3,19,20,0,0,2.5,12.1 -2020-05-05T12:00,65.8,18,20.6,0,0,4.5,13.9 -2020-05-05T13:00,67.1,17,21.3,0,0,6.2,16.1 -2020-05-05T14:00,67.5,18,22.9,0,0,6.9,16.8 -2020-05-05T15:00,66.9,20,24,0,0,10.9,21.5 -2020-05-05T16:00,66.3,19,22.8,0,0,11.4,22.6 -2020-05-05T17:00,66.6,17,21,0,0,10.4,21.5 -2020-05-05T18:00,64.7,21,24.4,0,0,4.6,17.7 -2020-05-05T19:00,62.3,24,25.2,0,0,2.9,7.4 -2020-05-05T20:00,59.7,26,25.1,0,0,2.8,3.6 -2020-05-05T21:00,52.9,37,27.4,0,0,4.5,7.2 -2020-05-05T22:00,51.4,40,27.7,0,0,5.1,11.9 -2020-05-05T23:00,49.2,46,29.5,0,0,8.1,12.5 -2020-05-06T00:00,47.4,46,27.8,0,0,8.1,14.1 -2020-05-06T01:00,45.2,50,27.9,0,0,6,13.2 -2020-05-06T02:00,42.2,60,29.3,0,0,3.9,9.8 -2020-05-06T03:00,40.7,66,30.2,0,0,3.5,5.8 -2020-05-06T04:00,40.3,68,30.6,0,0,1.8,4.9 -2020-05-06T05:00,38.8,69,29.6,0,0,4.9,3.1 -2020-05-06T06:00,42.1,63,30.3,0,0,2.7,6.3 -2020-05-06T07:00,46.6,51,29.3,0,0,0.9,6.5 -2020-05-06T08:00,51,44,29.8,0,0,1.6,8.7 -2020-05-06T09:00,55.8,37,29.9,0,0,0.7,8.9 -2020-05-06T10:00,60.3,32,30.2,0,0,2.7,11.4 -2020-05-06T11:00,64.1,28,30.6,0,0,5.4,15.2 -2020-05-06T12:00,67.4,25,30.4,0,0,6.5,16.8 -2020-05-06T13:00,69.8,22,28.7,0,0,7.2,17.7 -2020-05-06T14:00,71.2,20,27.8,0,0,7,17.7 -2020-05-06T15:00,71.2,20,28,0,0,8.8,18.1 -2020-05-06T16:00,69.1,28,34.4,0,0,13.7,25.1 -2020-05-06T17:00,65.4,33,35.8,0,0,9.1,25.5 -2020-05-06T18:00,63.8,34,35.2,0,0,6.7,17 -2020-05-06T19:00,61.7,39,36.3,0,0,2.9,11 -2020-05-06T20:00,55.9,43,33.5,0,0,5.6,8.3 -2020-05-06T21:00,52.5,49,34.1,0,0,3.8,7.8 -2020-05-06T22:00,50.3,53,33.6,0,0,7.6,11.6 -2020-05-06T23:00,48.7,54,32.7,0,0,6.2,12.3 -2020-05-07T00:00,48.7,51,31.5,0,0,9.2,15 -2020-05-07T01:00,46.5,57,32,0,0,5.9,15 -2020-05-07T02:00,44.6,69,35,0,0,5.6,11.2 -2020-05-07T03:00,44.4,64,32.9,0,0,3,6.9 -2020-05-07T04:00,42.4,64,31.1,0,0,2.9,4.7 -2020-05-07T05:00,39.9,72,31.5,0,0,4.3,4.3 -2020-05-07T06:00,44.3,61,31.6,0,0,2.1,5.1 -2020-05-07T07:00,51.8,49,33,0,0,3.5,8.9 -2020-05-07T08:00,59.1,37,32.8,0,0,6.6,14.1 -2020-05-07T09:00,62.2,33,32.6,0,0,11.2,21.7 -2020-05-07T10:00,64.8,27,30.3,0,0,9.4,22.1 -2020-05-07T11:00,66.7,26,30.6,0,0,7.4,19.9 -2020-05-07T12:00,67.8,26,32.1,0,0,8.1,18.8 -2020-05-07T13:00,68.3,26,31.7,0,0,10.7,21.9 -2020-05-07T14:00,70.2,21,28.2,0,0,13.7,25.7 -2020-05-07T15:00,72.1,15,22.6,0,0,9.9,27.3 -2020-05-07T16:00,66.6,13,14,0,0,26.6,44.7 -2020-05-07T17:00,65.1,11,8.9,0,0,28.1,47.4 -2020-05-07T18:00,62.6,12,9.1,0,0,19.4,47.6 -2020-05-07T19:00,57.2,17,12.4,0,0,14.8,33.1 -2020-05-07T20:00,54.1,22,15.9,0,0,14.7,24.8 -2020-05-07T21:00,48.7,38,24.5,0,0,17.5,31.3 -2020-05-07T22:00,45.9,46,26.1,0,0,10.6,29.3 -2020-05-07T23:00,42.4,60,29.3,0,0,5.5,17.7 -2020-05-08T00:00,41.1,66,30.7,0,0,4,9.2 -2020-05-08T01:00,42.3,59,28.8,0,0,5.1,10.7 -2020-05-08T02:00,41.8,54,26.3,0,0,5,9.8 -2020-05-08T03:00,40.8,55,25.8,0,0,6.3,11.4 -2020-05-08T04:00,39.4,63,27.9,0,0,6.7,12.8 -2020-05-08T05:00,37.4,78,31.2,0,0,4.2,12.1 -2020-05-08T06:00,37.7,78,31.6,0.004,0,1.6,8.5 -2020-05-08T07:00,38.4,76,31.6,0,0,2.3,7.2 -2020-05-08T08:00,39.6,71,31.1,0,0,3.7,9.8 -2020-05-08T09:00,42.4,58,28.5,0,0,4.9,12.1 -2020-05-08T10:00,47.1,46,27.3,0,0,6.6,16.1 -2020-05-08T11:00,53.4,33,25.3,0,0,3.6,16.6 -2020-05-08T12:00,57.3,29,25.2,0,0,4.7,14.8 -2020-05-08T13:00,60.2,26,25.1,0,0,5.5,15.7 -2020-05-08T14:00,63.6,22,24.3,0,0,5.7,15.7 -2020-05-08T15:00,64.3,22,24.3,0,0,5.1,15.4 -2020-05-08T16:00,63.1,23,24.9,0,0,1.1,14.1 -2020-05-08T17:00,59.9,28,27,0,0,8.7,13 -2020-05-08T18:00,57.8,32,27.9,0,0,6.2,17.2 -2020-05-08T19:00,54.1,38,29.4,0,0,3.6,11.9 -2020-05-08T20:00,52,39,28,0,0,5.2,8.5 -2020-05-08T21:00,48.9,43,27.5,0,0,4.5,8.7 -2020-05-08T22:00,47.9,41,25.4,0,0,5.5,8.7 -2020-05-08T23:00,46,42,24,0,0,4.7,8.7 -2020-05-09T00:00,43.6,55,28.4,0,0,4.8,7.4 -2020-05-09T01:00,45.3,53,29,0,0,11.9,19.2 -2020-05-09T02:00,44.9,48,26.5,0,0,9.4,21 -2020-05-09T03:00,45.1,51,28,0,0,5,15.7 -2020-05-09T04:00,42.5,59,29.3,0,0,6.2,10.3 -2020-05-09T05:00,42.8,68,33.1,0,0,5.9,10.3 -2020-05-09T06:00,45.3,63,33.5,0,0,7.8,13.4 -2020-05-09T07:00,48.4,56,33.4,0,0,9.4,17.9 -2020-05-09T08:00,50.6,49,32.1,0,0,13.1,23.7 -2020-05-09T09:00,53.1,41,29.8,0,0,13.3,26.2 -2020-05-09T10:00,55.5,35,28,0,0,9.9,24.8 -2020-05-09T11:00,56.8,32,27.5,0,0,9.2,20.1 -2020-05-09T12:00,58.6,31,27.8,0,0,9,19.7 -2020-05-09T13:00,58.6,32,28.9,0,0,10.3,21.5 -2020-05-09T14:00,59.9,32,29.8,0,0,7.8,22.4 -2020-05-09T15:00,60.1,31,29.7,0,0,6.8,18.3 -2020-05-09T16:00,60.3,30,28.8,0,0,7.6,16.8 -2020-05-09T17:00,55.7,38,30.3,0,0,11.9,23.5 -2020-05-09T18:00,52.3,39,27.9,0,0,13.3,23 -2020-05-09T19:00,51.2,39,27.2,0,0,8.1,23.3 -2020-05-09T20:00,50.4,38,26,0,0,6.7,14.1 -2020-05-09T21:00,48.7,37,23.6,0,0,8.3,14.5 -2020-05-09T22:00,48.1,38,23.5,0,0,5.8,13.9 -2020-05-09T23:00,47.7,39,23.7,0,0,4.2,9.8 -2020-05-10T00:00,46.2,40,23.5,0,0,5.4,7.8 -2020-05-10T01:00,45,39,21.7,0,0,7.1,11.2 -2020-05-10T02:00,43.3,40,20.7,0,0,6.7,11.2 -2020-05-10T03:00,40.5,49,22.8,0,0,5.9,10.7 -2020-05-10T04:00,42.6,42,21.3,0,0,0.8,6.9 -2020-05-10T05:00,38.9,57,25.1,0,0,5.8,5.8 -2020-05-10T06:00,39.7,56,25.3,0,0,13.3,21.5 -2020-05-10T07:00,41.3,51,24.4,0,0,12.8,23.5 -2020-05-10T08:00,43.3,47,24.3,0,0,10.2,23.7 -2020-05-10T09:00,46.2,43,24.7,0,0,7.2,20.8 -2020-05-10T10:00,49.6,41,26.5,0,0,6.6,17.4 -2020-05-10T11:00,52.9,37,27.6,0,0,6.7,17.4 -2020-05-10T12:00,56,34,28,0,0,7.1,17.9 -2020-05-10T13:00,58.6,31,28.1,0,0,7.7,18.6 -2020-05-10T14:00,60.3,30,28.3,0,0,6.9,18.6 -2020-05-10T15:00,61.3,28,28.3,0,0,8.4,18.8 -2020-05-10T16:00,61.5,29,28.8,0,0,7.9,18.8 -2020-05-10T17:00,60,31,28.9,0,0,8.4,17.7 -2020-05-10T18:00,59,32,28.9,0,0,10.6,18.6 -2020-05-10T19:00,54.9,39,30.2,0,0,9.1,18.8 -2020-05-10T20:00,52.3,43,30.4,0,0,10.1,17.2 -2020-05-10T21:00,49.5,44,28.3,0,0,10.6,19 -2020-05-10T22:00,47,50,29.1,0,0,8.5,17.7 -2020-05-10T23:00,45.8,52,29.1,0,0,6.8,14.1 -2020-05-11T00:00,43.7,54,28,0,0,7.1,11.4 -2020-05-11T01:00,40.5,62,28.3,0,0,8.3,13.6 -2020-05-11T02:00,39.3,64,28.3,0,0,7.5,13.6 -2020-05-11T03:00,38.2,67,28.1,0,0,6.9,12.3 -2020-05-11T04:00,36.9,70,28,0,0,6.8,11.2 -2020-05-11T05:00,36,71,27.6,0,0,8.3,12.3 -2020-05-11T06:00,35.1,76,28.1,0.004,0,8.6,19.5 -2020-05-11T07:00,36.5,71,28.1,0,0,5.6,15.7 -2020-05-11T08:00,38.9,65,28,0,0.138,1.8,12.1 -2020-05-11T09:00,40.3,62,28.3,0,0,0.7,8.5 -2020-05-11T10:00,41.9,60,29.2,0.004,0.028,3.4,10.5 -2020-05-11T11:00,41.3,64,29.9,0.02,0.028,3.4,11.2 -2020-05-11T12:00,40.4,71,31.8,0.02,0,2.4,10.3 -2020-05-11T13:00,41.4,74,33.5,0.004,0,1.6,8.5 -2020-05-11T14:00,44.2,70,35.2,0.004,0,0.5,8.9 -2020-05-11T15:00,46.2,68,36.1,0,0,1.8,9.6 -2020-05-11T16:00,50.4,61,37.6,0,0,2.7,10.1 -2020-05-11T17:00,53,62,40.5,0,0,7.2,10.3 -2020-05-11T18:00,53,63,40.6,0,0,7.7,13.2 -2020-05-11T19:00,50.2,71,41.1,0,0,9.9,17.7 -2020-05-11T20:00,48.2,77,41.2,0.012,0,5.2,15.9 -2020-05-11T21:00,46.8,83,41.8,0.004,0,2.9,8.5 -2020-05-11T22:00,45.3,93,43.3,0.016,0,1.6,5.1 -2020-05-11T23:00,44.9,93,43.1,0.035,0,2.5,9.2 -2020-05-12T00:00,44.7,94,43.2,0.035,0,5,7.8 -2020-05-12T01:00,43.7,96,42.5,0,0,2.3,8.1 -2020-05-12T02:00,41.5,98,40.9,0,0,9.4,14.8 -2020-05-12T03:00,39.9,100,39.8,0,0,11,17.9 -2020-05-12T04:00,40.3,98,39.7,0,0,6.8,17.2 -2020-05-12T05:00,37.8,97,37,0,0,4.1,11.2 -2020-05-12T06:00,38.2,95,36.9,0,0,2.6,7.2 -2020-05-12T07:00,38.6,95,37.2,0,0,5.2,11 -2020-05-12T08:00,41.1,87,37.6,0,0,5.7,13.4 -2020-05-12T09:00,46.1,79,40.1,0,0,2.2,14.1 -2020-05-12T10:00,52.1,69,42.3,0,0,4.3,13.4 -2020-05-12T11:00,57.6,60,43.9,0,0,6.5,16.8 -2020-05-12T12:00,64,51,45.5,0,0,6.5,16.6 -2020-05-12T13:00,68.4,45,46.3,0,0,9.2,19.5 -2020-05-12T14:00,70.7,43,46.9,0,0,10,21.3 -2020-05-12T15:00,71.4,41,46.7,0,0,12.2,23.9 -2020-05-12T16:00,72,40,46.1,0,0,9.9,23.5 -2020-05-12T17:00,68.7,45,46.8,0,0,3,19.2 -2020-05-12T18:00,66.1,50,46.9,0,0,4.7,8.3 -2020-05-12T19:00,60.4,53,43.4,0,0,4.7,8.7 -2020-05-12T20:00,55.5,63,43.3,0,0,2.9,7.8 -2020-05-12T21:00,53.3,70,43.6,0,0,6.7,7.6 -2020-05-12T22:00,50.7,76,43.3,0,0,4.3,8.9 -2020-05-12T23:00,48.1,76,40.9,0,0,5.3,8.3 -2020-05-13T00:00,47.7,63,35.9,0,0,7.2,11.2 -2020-05-13T01:00,48.6,52,31.8,0,0,6.2,11.9 -2020-05-13T02:00,50.5,45,30.1,0,0,8.1,12.3 -2020-05-13T03:00,51.7,42,29.1,0,0,10.1,16.8 -2020-05-13T04:00,51.4,39,27.3,0,0,10,16.8 -2020-05-13T05:00,44.7,45,24.7,0,0,5.9,16.3 -2020-05-13T06:00,49.7,44,28.9,0,0,6.2,9.6 -2020-05-13T07:00,58.9,39,34.3,0,0,6,11.6 -2020-05-13T08:00,66.9,30,34.1,0,0,4.1,11.4 -2020-05-13T09:00,70.3,18,25.1,0,0,2.1,10.1 -2020-05-13T10:00,71.5,18,26.2,0,0,2.7,10.3 -2020-05-13T11:00,73,18,27.1,0,0,0.9,10.7 -2020-05-13T12:00,75.9,15,24.9,0,0,3.7,11.6 -2020-05-13T13:00,76.8,14,23.2,0,0,6.1,14.3 -2020-05-13T14:00,75.8,17,28.6,0,0,8.8,17.4 -2020-05-13T15:00,73.4,19,28.9,0,0,16,27.7 -2020-05-13T16:00,73.4,17,25.3,0,0,11.1,27.7 -2020-05-13T17:00,73,20,29.1,0,0,7.2,19.2 -2020-05-13T18:00,70.1,33,39.4,0,0,4.1,13 -2020-05-13T19:00,68.1,29,34.3,0,0,1.4,6.7 -2020-05-13T20:00,63.1,34,34.2,0,0,1.8,3.6 -2020-05-13T21:00,57.2,48,37.5,0,0,12.3,18.8 -2020-05-13T22:00,55,62,42.2,0,0,9,20.6 -2020-05-13T23:00,53.9,63,41.6,0,0,9.7,15.7 -2020-05-14T00:00,51.6,70,42,0,0,5.3,16.1 -2020-05-14T01:00,49.9,77,43,0,0,4.5,8.7 -2020-05-14T02:00,52.3,71,43,0,0,4.4,6.7 -2020-05-14T03:00,51.7,83,46.7,0.02,0,7.7,15.9 -2020-05-14T04:00,51.2,88,47.8,0,0,4.4,12.8 -2020-05-14T05:00,49.4,76,42.2,0,0,3,7.2 -2020-05-14T06:00,51,81,45.2,0,0,4,7.8 -2020-05-14T07:00,52.8,85,48.3,0,0,5.7,12.1 -2020-05-14T08:00,56.1,73,47.5,0,0,3.4,12.5 -2020-05-14T09:00,59.8,59,45.4,0,0,2.2,11 -2020-05-14T10:00,64,47,43.1,0,0,5.6,14.3 -2020-05-14T11:00,67.6,35,38.8,0,0,4.4,15.9 -2020-05-14T12:00,68.9,32,37.6,0,0,6.5,15.2 -2020-05-14T13:00,64.3,50,45.5,0,0,17.9,30.4 -2020-05-14T14:00,64.3,50,45.3,0,0,11.1,33.1 -2020-05-14T15:00,65.5,50,46.5,0,0,6.1,21.9 -2020-05-14T16:00,62,61,48.3,0.02,0,4.4,17.2 -2020-05-14T17:00,60.5,59,46,0,0,1.7,19.2 -2020-05-14T18:00,58.3,68,47.9,0.016,0,7.4,13.2 -2020-05-14T19:00,55.3,82,50,0.004,0,2.5,13.2 -2020-05-14T20:00,54.4,86,50.5,0,0,1.4,4.5 -2020-05-14T21:00,53.2,89,49.9,0.012,0,2.8,3.6 -2020-05-14T22:00,51.7,90,48.8,0.016,0,4.1,8.5 -2020-05-14T23:00,50.1,94,48.4,0,0,4.4,5.1 -2020-05-15T00:00,49.3,96,48.2,0,0,3.6,5.8 -2020-05-15T01:00,49.7,95,48.4,0,0,3.8,6.5 -2020-05-15T02:00,50.3,95,48.9,0,0,1,4.9 -2020-05-15T03:00,48.9,96,47.9,0,0,2,2.2 -2020-05-15T04:00,49.1,96,47.9,0,0,2.8,3.1 -2020-05-15T05:00,47.7,95,46.3,0,0,4.4,4.3 -2020-05-15T06:00,49.6,90,46.9,0,0,3.8,8.7 -2020-05-15T07:00,51.4,84,46.9,0,0,3.1,7.8 -2020-05-15T08:00,53.2,78,46.7,0,0,2.1,8.3 -2020-05-15T09:00,56.4,69,46.2,0,0,2.4,8.7 -2020-05-15T10:00,59,61,45.4,0,0,3.4,11 -2020-05-15T11:00,62.1,51,43.7,0,0,3.6,11 -2020-05-15T12:00,63.1,48,42.9,0,0,7.8,15.7 -2020-05-15T13:00,65.3,46,44.2,0,0,3.1,16.8 -2020-05-15T14:00,63.3,52,45.1,0.004,0,8.9,19.7 -2020-05-15T15:00,62.7,53,45.4,0.004,0,3.8,20.1 -2020-05-15T16:00,60.8,60,46.8,0.008,0,7.3,19.7 -2020-05-15T17:00,60.8,70,50.8,0.02,0,8.1,20.6 -2020-05-15T18:00,56.2,86,52.2,0.118,0,12,21.5 -2020-05-15T19:00,53.7,92,51.5,0.083,0,10.3,21 -2020-05-15T20:00,52.8,93,50.8,0.028,0,6.7,17 -2020-05-15T21:00,52.6,87,48.9,0,0,3.2,10.7 -2020-05-15T22:00,51.7,85,47.2,0,0,2.1,6 -2020-05-15T23:00,49.5,93,47.4,0,0,2.5,4.3 -2020-05-16T00:00,49.1,94,47.4,0,0,5.1,8.7 -2020-05-16T01:00,48,94,46.4,0,0,4.7,8.7 -2020-05-16T02:00,46.7,94,45.1,0,0,4.4,8.3 -2020-05-16T03:00,45.2,95,43.9,0,0,4.2,7.4 -2020-05-16T04:00,43.3,96,42.3,0,0,3.9,6.9 -2020-05-16T05:00,46.4,91,44,0,0,2.1,6.3 -2020-05-16T06:00,48.5,88,45,0,0,2.2,4.9 -2020-05-16T07:00,51.9,76,44.5,0,0,1,5.8 -2020-05-16T08:00,54.6,57,39.7,0,0,1.1,6.7 -2020-05-16T09:00,57.8,44,35.9,0,0,3.2,10.1 -2020-05-16T10:00,60.6,36,33.4,0,0,5.4,14.3 -2020-05-16T11:00,62.8,35,34.6,0,0,4,14.8 -2020-05-16T12:00,64.9,34,35.8,0,0,5.1,13.9 -2020-05-16T13:00,66.6,33,36.4,0,0,9.4,19.9 -2020-05-16T14:00,67.1,33,36.7,0,0,9.9,20.6 -2020-05-16T15:00,66.8,33,36.6,0,0,7.8,20.6 -2020-05-16T16:00,67,32,36.1,0,0,6,17.2 -2020-05-16T17:00,66.1,29,32.9,0,0,4.9,13.9 -2020-05-16T18:00,64.8,31,33.6,0,0,5.3,10.3 -2020-05-16T19:00,59.8,44,37.9,0,0,3.6,9.4 -2020-05-16T20:00,57.3,41,33.8,0,0,6.6,12.3 -2020-05-16T21:00,56.8,41,33.6,0,0,1.5,10.5 -2020-05-16T22:00,52.8,53,36.1,0,0,2.9,4.5 -2020-05-16T23:00,50.9,61,37.9,0,0,3.5,6 -2020-05-17T00:00,51.6,57,37,0,0,0.3,4.3 -2020-05-17T01:00,48.4,67,37.8,0,0,1.3,1.8 -2020-05-17T02:00,46.8,70,37.6,0,0,1.8,2.5 -2020-05-17T03:00,43.7,79,37.8,0,0,3.2,4.5 -2020-05-17T04:00,43.1,80,37.3,0,0,3,5.4 -2020-05-17T05:00,43.3,79,37,0,0,3.8,5.4 -2020-05-17T06:00,46,74,38.1,0,0,3.8,8.3 -2020-05-17T07:00,49.6,67,39.2,0,0,4.3,10.5 -2020-05-17T08:00,52.8,61,39.6,0,0,4.6,12.8 -2020-05-17T09:00,56.1,55,40.3,0,0,3.8,12.8 -2020-05-17T10:00,60.1,51,42,0,0,5,14.3 -2020-05-17T11:00,64.2,47,43.6,0,0,6.2,16.3 -2020-05-17T12:00,67.6,43,44.2,0,0,6.9,17.2 -2020-05-17T13:00,70.3,40,44.9,0,0,6.8,17.2 -2020-05-17T14:00,72.2,38,45.4,0,0,7.6,17.9 -2020-05-17T15:00,73,36,44.8,0,0,6.5,17.7 -2020-05-17T16:00,73.9,35,44.2,0,0,6.5,15.7 -2020-05-17T17:00,73.3,32,41.9,0,0,8.5,15.4 -2020-05-17T18:00,71.1,37,43.3,0,0,6.3,15.7 -2020-05-17T19:00,64.9,48,44.9,0,0,4.4,10.5 -2020-05-17T20:00,61.2,58,46.3,0,0,4.3,7.4 -2020-05-17T21:00,59.6,63,47,0,0,6.3,9.8 -2020-05-17T22:00,57.7,68,47.2,0,0,4.4,10.3 -2020-05-17T23:00,54.5,77,47.3,0,0,4.7,7.2 -2020-05-18T00:00,55.5,72,46.7,0,0,2.7,5.6 -2020-05-18T01:00,54.6,75,46.9,0,0,2.6,3.1 -2020-05-18T02:00,49.3,89,46.1,0,0,4.6,5.6 -2020-05-18T03:00,51.1,80,45.1,0,0,3,5.6 -2020-05-18T04:00,50.2,83,45.3,0,0,1.9,3.4 -2020-05-18T05:00,49.4,87,45.8,0,0,2.5,2.5 -2020-05-18T06:00,50.2,85,45.8,0,0,0.7,3.8 -2020-05-18T07:00,52.6,77,45.6,0,0,0.8,6.3 -2020-05-18T08:00,55.6,71,46.3,0,0,1.6,8.7 -2020-05-18T09:00,60.2,62,47.2,0,0,1.7,9.8 -2020-05-18T10:00,66.3,51,47.7,0,0,3.2,11.9 -2020-05-18T11:00,72.3,43,48.8,0,0,4.3,13.4 -2020-05-18T12:00,77.7,39,50.5,0,0,6.6,15.9 -2020-05-18T13:00,80.7,34,49.6,0,0,8.2,18.1 -2020-05-18T14:00,83.2,28,46.3,0,0,7.6,18.1 -2020-05-18T15:00,84.4,24,43.6,0,0,7.6,16.6 -2020-05-18T16:00,84.4,24,44,0,0,9.2,17.7 -2020-05-18T17:00,84.2,23,42.6,0,0,4.7,19.2 -2020-05-18T18:00,77.5,35,47.8,0,0,12.9,20.1 -2020-05-18T19:00,69.4,45,47.1,0,0,6.5,21.9 -2020-05-18T20:00,66,51,47.4,0,0,4,10.7 -2020-05-18T21:00,62.1,56,46,0,0,4.5,8.5 -2020-05-18T22:00,59.2,57,44.2,0,0,5.7,7.8 -2020-05-18T23:00,57.7,57,42.4,0,0,4.6,8.1 -2020-05-19T00:00,55.9,57,40.9,0,0,5.2,8.7 -2020-05-19T01:00,52.3,64,40.5,0,0,5.2,8.5 -2020-05-19T02:00,51.5,67,41,0,0,5.7,8.1 -2020-05-19T03:00,53.4,61,40.3,0,0,1.5,6.9 -2020-05-19T04:00,49.5,67,39,0,0,2.1,2.5 -2020-05-19T05:00,49.6,75,41.9,0,0,4.2,5.4 -2020-05-19T06:00,52.8,72,43.9,0,0,5,9.6 -2020-05-19T07:00,58.2,65,46.5,0,0,2.6,9.4 -2020-05-19T08:00,62.9,60,48.7,0,0,2.8,9.6 -2020-05-19T09:00,70.3,40,45,0,0,3.4,11.2 -2020-05-19T10:00,81,23,40,0,0,3.9,12.3 -2020-05-19T11:00,86.7,11,26.8,0,0,10,18.6 -2020-05-19T12:00,89.2,10,24.4,0,0,12.8,23.9 -2020-05-19T13:00,86.3,16,34.2,0,0,16.1,29.1 -2020-05-19T14:00,86.3,14,31.3,0,0,14.2,29.3 -2020-05-19T15:00,84.5,16,32.8,0,0,20.3,34.2 -2020-05-19T16:00,85.9,14,31.7,0,0,18.5,34.7 -2020-05-19T17:00,85.1,15,31.7,0,0,13.9,35.1 -2020-05-19T18:00,79.3,25,40.6,0,0,20.2,34.7 -2020-05-19T19:00,75.7,29,41.4,0,0,20.4,34 -2020-05-19T20:00,72,43,48,0,0,17.8,34.7 -2020-05-19T21:00,69,47,47.9,0,0,13.2,29.3 -2020-05-19T22:00,67.1,50,47.7,0,0,11.2,22.1 -2020-05-19T23:00,66.1,52,47.8,0,0,10.6,19 -2020-05-20T00:00,63.9,56,47.9,0,0,8.7,17.7 -2020-05-20T01:00,61.5,60,47.4,0,0,6.9,14.5 -2020-05-20T02:00,58.4,65,46.5,0,0,5.9,11.4 -2020-05-20T03:00,56.9,66,45.6,0,0,6.5,10.7 -2020-05-20T04:00,55.2,67,44.5,0,0,6.5,11 -2020-05-20T05:00,54.3,67,43.7,0,0,5.9,11.2 -2020-05-20T06:00,57.7,61,44.2,0,0,6.5,11.6 -2020-05-20T07:00,65,47,44.1,0,0,7.3,13.9 -2020-05-20T08:00,72.9,33,42.4,0,0,10,18.6 -2020-05-20T09:00,78.1,20,33.7,0,0,13.9,25.5 -2020-05-20T10:00,81,12,24.2,0,0,15.9,29.1 -2020-05-20T11:00,82.9,10,21.4,0,0,16.4,29.8 -2020-05-20T12:00,84,10,22.7,0,0,17.5,32.2 -2020-05-20T13:00,85.6,8,16.7,0,0,19.2,34.4 -2020-05-20T14:00,85.5,9,20.2,0,0,18.6,34.7 -2020-05-20T15:00,86.5,7,15.1,0,0,19.6,33.8 -2020-05-20T16:00,83.9,9,18,0,0,15,34.7 -2020-05-20T17:00,83.1,8,15.8,0,0,14.5,26.8 -2020-05-20T18:00,80.1,10,18,0,0,8.6,24.6 -2020-05-20T19:00,71.2,18,25,0,0,10.5,14.5 -2020-05-20T20:00,64.9,15,15.7,0,0,16,28.6 -2020-05-20T21:00,62.4,12,9.8,0,0,6.5,26.6 -2020-05-20T22:00,59.2,22,20.8,0,0,5.5,11 -2020-05-20T23:00,54.1,37,28.7,0,0,5.5,6.7 -2020-05-21T00:00,53.2,49,34.7,0,0,3.6,7.2 -2020-05-21T01:00,49.6,57,35.2,0,0,4.5,6.5 -2020-05-21T02:00,48.5,52,31.7,0,0,2,5.8 -2020-05-21T03:00,45.9,47,27,0,0,2.9,5.6 -2020-05-21T04:00,43.9,48,25.4,0,0,3.8,7.2 -2020-05-21T05:00,44.1,45,24.2,0,0,2.9,6.9 -2020-05-21T06:00,48.8,45,28.4,0,0,3.1,7.4 -2020-05-21T07:00,55.7,37,29.9,0,0,1.9,7.4 -2020-05-21T08:00,58.6,34,30.2,0,0,2.7,9.8 -2020-05-21T09:00,62.3,27,27.6,0,0,5,13.6 -2020-05-21T10:00,66,22,25.7,0,0,6.3,16.1 -2020-05-21T11:00,69.2,18,24.3,0,0,5.2,16.3 -2020-05-21T12:00,71.2,17,24.2,0,0,4.7,15.2 -2020-05-21T13:00,72.7,16,24.2,0,0,5.1,14.8 -2020-05-21T14:00,73.2,15,22.6,0,0,5.6,15 -2020-05-21T15:00,73.3,14,21.4,0,0,6.3,14.3 -2020-05-21T16:00,72.1,15,22.1,0,0,11.1,20.1 -2020-05-21T17:00,72.1,15,21.8,0,0,6.1,22.6 -2020-05-21T18:00,70.3,17,23.7,0,0,5.6,9.8 -2020-05-21T19:00,65,26,29.2,0,0,5.4,12.8 -2020-05-21T20:00,59.5,35,32.2,0,0,4.8,8.9 -2020-05-21T21:00,55.1,46,34.9,0,0,5.7,9.8 -2020-05-21T22:00,57.4,40,33,0,0,1.2,7.2 -2020-05-21T23:00,53.5,48,34.3,0,0,2.2,3.4 -2020-05-22T00:00,50.8,46,30.7,0,0,5.2,8.7 -2020-05-22T01:00,48.9,44,28.1,0,0,5,8.7 -2020-05-22T02:00,47.1,46,27.4,0,0,4.1,8.3 -2020-05-22T03:00,45,52,28.4,0,0,5.3,6.5 -2020-05-22T04:00,43.9,55,28.9,0,0,5.3,6.7 -2020-05-22T05:00,44.6,68,34.8,0,0,2.8,6.5 -2020-05-22T06:00,49,54,33.1,0,0,2.2,5.8 -2020-05-22T07:00,55,44,33.4,0,0,2.7,8.7 -2020-05-22T08:00,61.4,33,31.8,0,0,2.2,9.2 -2020-05-22T09:00,68.1,24,30.3,0,0,4.3,12.3 -2020-05-22T10:00,73.1,16,24.7,0,0,6,15 -2020-05-22T11:00,75.9,13,21.1,0,0,7,17.2 -2020-05-22T12:00,78.3,10,17.9,0,0,7.4,17.7 -2020-05-22T13:00,80.2,8,13.7,0,0,8.5,18.8 -2020-05-22T14:00,81.2,7,11.8,0,0,9.6,20.4 -2020-05-22T15:00,81,7,12.1,0,0,9,20.1 -2020-05-22T16:00,80.8,7,11.8,0,0,4.9,18.8 -2020-05-22T17:00,79.9,10,18.6,0,0,12.2,12.1 -2020-05-22T18:00,78.6,9,15.1,0,0,9.4,20.8 -2020-05-22T19:00,69.3,15,20.3,0,0,5.2,15.7 -2020-05-22T20:00,63.4,23,24.5,0,0,6.1,8.5 -2020-05-22T21:00,65.8,19,22.1,0,0,1.3,7.2 -2020-05-22T22:00,58.6,28,25.6,0,0,5.6,7.6 -2020-05-22T23:00,56.1,33,27.7,0,0,5.9,7.8 -2020-05-23T00:00,55.8,34,28,0,0,4.3,7.6 -2020-05-23T01:00,52.9,42,30.6,0,0,5.4,5.6 -2020-05-23T02:00,50.5,52,33.7,0,0,5.6,7.4 -2020-05-23T03:00,48.8,54,33.1,0,0,2.8,7.2 -2020-05-23T04:00,47.3,56,32.5,0,0,2.5,4.9 -2020-05-23T05:00,49.9,57,35.2,0,0,2.2,4.5 -2020-05-23T06:00,53.2,51,35.6,0,0,3.8,7.2 -2020-05-23T07:00,56.6,53,39.7,0,0,1.3,8.1 -2020-05-23T08:00,60.3,45,39,0,0,1.6,8.5 -2020-05-23T09:00,65.4,36,37.4,0,0,3.2,11.4 -2020-05-23T10:00,71.8,24,33.1,0,0,6,15.4 -2020-05-23T11:00,75.8,18,29.3,0,0,5.2,16.6 -2020-05-23T12:00,78.3,13,23.4,0,0,2.9,15 -2020-05-23T13:00,79.5,10,18.4,0,0,1.7,12.1 -2020-05-23T14:00,79.7,10,18.1,0,0,4.4,12.8 -2020-05-23T15:00,76.3,19,31.3,0,0,14.4,25.1 -2020-05-23T16:00,75.3,15,24.4,0,0,13.2,27.7 -2020-05-23T17:00,73.9,21,31.6,0,0,13.1,23.3 -2020-05-23T18:00,71.9,23,31.6,0,0,7.2,22.6 -2020-05-23T19:00,67.6,28,33.2,0,0,6.7,11.9 -2020-05-23T20:00,65.5,30,33.2,0,0,12.2,20.1 -2020-05-23T21:00,61.2,42,37.8,0,0,13.1,21.5 -2020-05-23T22:00,57.7,59,43.4,0,0,9.1,21.9 -2020-05-23T23:00,55.8,65,44.2,0,0,5.5,15.2 -2020-05-24T00:00,52.6,75,45,0,0,5.1,9.4 -2020-05-24T01:00,52.2,76,44.9,0,0,2.8,6.5 -2020-05-24T02:00,50.6,79,44.2,0,0,3.2,4.9 -2020-05-24T03:00,50.6,78,44.1,0,0,3.5,5.1 -2020-05-24T04:00,49.5,82,44.1,0,0,3.3,5.4 -2020-05-24T05:00,49.7,80,43.8,0,0,2.1,5.6 -2020-05-24T06:00,52,72,43.3,0,0,3.4,7.2 -2020-05-24T07:00,53.6,65,42.2,0,0,2.9,9.2 -2020-05-24T08:00,55,64,42.8,0.004,0,3,9.6 -2020-05-24T09:00,57,60,43.1,0,0,4,14.1 -2020-05-24T10:00,58.4,53,41.5,0,0,4.4,13.9 -2020-05-24T11:00,59.5,46,38.6,0,0,3.7,14.1 -2020-05-24T12:00,62.9,39,37.6,0,0,3.5,13.9 -2020-05-24T13:00,65,37,38.1,0,0,5.9,16.1 -2020-05-24T14:00,56.6,63,44.2,0.047,0,10.1,18.6 -2020-05-24T15:00,53.6,80,47.7,0.154,0,5.1,18.1 -2020-05-24T16:00,50.6,82,45.2,0.118,0,15.9,22.1 -2020-05-24T17:00,46,79,39.7,0.268,0,8.6,35.6 -2020-05-24T18:00,45.3,85,41,0.079,0,6.2,15.4 -2020-05-24T19:00,45.1,82,40.1,0.024,0,3.5,11 -2020-05-24T20:00,44.5,84,40.1,0.004,0,5.2,8.7 -2020-05-24T21:00,44.2,90,41.4,0,0,4.4,10.1 -2020-05-24T22:00,43.6,93,41.6,0,0,3.1,7.8 -2020-05-24T23:00,42,95,40.6,0,0,3.7,6.5 -2020-05-25T00:00,41.5,93,39.7,0,0,3.8,6.7 -2020-05-25T01:00,40.3,93,38.5,0,0,3.6,6.7 -2020-05-25T02:00,38.6,95,37.2,0,0,3.3,6.7 -2020-05-25T03:00,37.7,94,36.2,0,0,3.4,6 -2020-05-25T04:00,37,92,35.1,0,0,3.7,6.5 -2020-05-25T05:00,38.4,97,37.7,0,0,3.2,6.9 -2020-05-25T06:00,41.8,88,38.6,0,0,3.4,8.3 -2020-05-25T07:00,46.7,70,37.5,0,0,4,9.6 -2020-05-25T08:00,49.8,60,36.4,0,0,5.4,13.9 -2020-05-25T09:00,52.3,55,36.7,0,0,3.1,13.6 -2020-05-25T10:00,55.7,49,37,0,0,3.3,11.6 -2020-05-25T11:00,57.8,42,34.7,0.012,0,7.2,17 -2020-05-25T12:00,58.6,41,34.7,0.02,0,7.6,19 -2020-05-25T13:00,60,39,34.7,0,0,7.7,19 -2020-05-25T14:00,61.3,35,33.6,0,0,7.4,18.6 -2020-05-25T15:00,61.4,33,32.4,0,0,5.5,17.9 -2020-05-25T16:00,61.5,31,30.8,0,0,4.1,14.1 -2020-05-25T17:00,59.2,45,37.6,0,0,6.1,11.4 -2020-05-25T18:00,58.6,47,38.6,0,0,4.8,13.4 -2020-05-25T19:00,57.7,51,39.7,0,0,3,9.2 -2020-05-25T20:00,55.9,55,40,0,0,1.6,3.8 -2020-05-25T21:00,49.6,74,41.5,0,0,4,4.9 -2020-05-25T22:00,46.9,77,40.1,0,0,3.5,6 -2020-05-25T23:00,44.3,82,39.3,0,0,4.6,7.4 -2020-05-26T00:00,43.4,81,37.9,0,0,4.3,7.6 -2020-05-26T01:00,41.9,75,34.6,0,0,3.6,7.2 -2020-05-26T02:00,39.7,73,31.8,0,0,3.5,6.5 -2020-05-26T03:00,38.7,71,29.9,0,0,4.4,6 -2020-05-26T04:00,38.9,62,27.1,0,0,4.1,6 -2020-05-26T05:00,40.1,59,26.9,0,0,3.8,6.7 -2020-05-26T06:00,44.7,54,28.9,0,0,4.2,8.1 -2020-05-26T07:00,51.7,51,34,0,0,3.2,8.9 -2020-05-26T08:00,59.9,41,36,0,0,2.1,9.4 -2020-05-26T09:00,65.1,33,35.3,0,0,0.6,8.7 -2020-05-26T10:00,68.3,27,33.2,0,0,2.4,10.1 -2020-05-26T11:00,70.3,26,34,0,0,3.7,12.1 -2020-05-26T12:00,71.9,26,35.2,0,0,5,13.6 -2020-05-26T13:00,73,26,36.1,0,0,3.7,14.5 -2020-05-26T14:00,75.3,24,36.5,0,0,7.8,15.7 -2020-05-26T15:00,75.1,24,36.2,0,0,8.9,20.8 -2020-05-26T16:00,74.4,25,36.8,0,0,7.8,18.1 -2020-05-26T17:00,73.6,29,39.3,0,0,4.5,15.2 -2020-05-26T18:00,72.1,41,46.9,0,0,2,9.2 -2020-05-26T19:00,66.6,40,41.6,0,0,9.9,15.7 -2020-05-26T20:00,62.4,46,41.5,0,0,9.2,17 -2020-05-26T21:00,61.7,44,39.6,0,0,12.1,19.2 -2020-05-26T22:00,60.8,39,36,0,0,10.6,21.3 -2020-05-26T23:00,55.3,53,38.5,0,0,4,17.4 -2020-05-27T00:00,53.1,60,39.7,0,0,3.2,7.6 -2020-05-27T01:00,53.6,56,38.1,0,0,6.2,11 -2020-05-27T02:00,50.9,63,38.8,0,0,5.1,9.8 -2020-05-27T03:00,52,64,40.2,0,0,4.3,6.7 -2020-05-27T04:00,53.4,63,41.2,0,0,3,6 -2020-05-27T05:00,54.5,54,38.4,0,0,2.6,3.6 -2020-05-27T06:00,55.6,58,41.2,0,0,3.3,6 -2020-05-27T07:00,60.7,53,43.3,0,0,1.1,6.5 -2020-05-27T08:00,66.2,45,44.2,0,0,2.8,8.9 -2020-05-27T09:00,71,35,41.7,0,0,2.7,9.8 -2020-05-27T10:00,73.8,30,40.7,0,0,3.8,12.1 -2020-05-27T11:00,74.8,30,41.4,0,0,3.1,12.1 -2020-05-27T12:00,75.9,29,41.5,0,0,1.9,11 -2020-05-27T13:00,76.8,28,41.6,0,0,2.6,10.3 -2020-05-27T14:00,77.7,28,41.8,0,0,4.3,12.1 -2020-05-27T15:00,76.6,29,41.7,0,0,3,12.3 -2020-05-27T16:00,76.5,29,42.2,0,0,4,10.3 -2020-05-27T17:00,75.2,34,44.9,0,0,4.8,12.5 -2020-05-27T18:00,71.5,44,48.2,0,0,5.6,8.9 -2020-05-27T19:00,66,56,49.9,0,0,7.7,19.5 -2020-05-27T20:00,62.8,67,51.8,0,0,2.6,17 -2020-05-27T21:00,60.7,70,50.8,0,0,4.9,7.2 -2020-05-27T22:00,58.9,73,50.3,0,0,6.7,11.2 -2020-05-27T23:00,57.1,73,48.7,0,0,4.9,11 -2020-05-28T00:00,54.9,75,47.2,0,0,3.5,8.1 -2020-05-28T01:00,55.2,66,43.9,0,0,6.6,11 -2020-05-28T02:00,53.3,73,44.9,0,0,6.8,11.4 -2020-05-28T03:00,55.9,66,44.5,0,0,4,8.5 -2020-05-28T04:00,51.7,78,45,0,0,5.3,7.2 -2020-05-28T05:00,54.5,78,47.9,0,0,5.7,8.7 -2020-05-28T06:00,56.8,75,48.9,0.004,0,6.4,11.2 -2020-05-28T07:00,58.8,71,49.3,0,0,7.8,15.2 -2020-05-28T08:00,60.4,67,49.5,0,0,7,15.2 -2020-05-28T09:00,62.9,61,49.4,0,0,6.7,15.4 -2020-05-28T10:00,66.1,55,49.6,0,0,6.4,15.7 -2020-05-28T11:00,69.1,50,49.6,0,0,5.8,15.7 -2020-05-28T12:00,70.7,46,49.2,0,0,5,15.2 -2020-05-28T13:00,72.8,44,49.4,0,0,4.2,13.9 -2020-05-28T14:00,73.9,42,49.1,0,0,3.4,13 -2020-05-28T15:00,74.3,41,49.1,0,0,1.8,12.5 -2020-05-28T16:00,73.9,40,48.3,0.008,0,3.5,11.9 -2020-05-28T17:00,70.7,53,52.5,0,0,3.9,11.6 -2020-05-28T18:00,69.6,55,52.8,0,0,3.9,10.1 -2020-05-28T19:00,66.5,62,53.2,0,0,6.4,10.7 -2020-05-28T20:00,62.7,71,53.2,0,0,4,10.7 -2020-05-28T21:00,61.2,77,53.9,0,0,3.1,6.7 -2020-05-28T22:00,60.2,78,53.2,0,0,3,5.1 -2020-05-28T23:00,57.4,83,52.2,0,0,4.5,5.4 -2020-05-29T00:00,56.5,83,51.5,0,0,3.7,5.1 -2020-05-29T01:00,55.7,86,51.6,0,0,3.4,5.4 -2020-05-29T02:00,54.2,89,51.2,0,0,3.2,5.4 -2020-05-29T03:00,52.4,92,50.3,0,0,3.4,3.8 -2020-05-29T04:00,50.5,96,49.4,0,0,4.1,5.4 -2020-05-29T05:00,51,90,48.1,0,0,3.2,5.4 -2020-05-29T06:00,54.7,76,47.4,0,0,1.4,4.5 -2020-05-29T07:00,58.4,74,50.1,0,0,2.8,8.7 -2020-05-29T08:00,62.7,66,51,0,0,2.4,9.8 -2020-05-29T09:00,67.6,56,51.4,0,0,2.6,10.5 -2020-05-29T10:00,72.1,50,52.7,0,0,4.8,13.2 -2020-05-29T11:00,76.7,46,54.2,0,0,6.1,15.9 -2020-05-29T12:00,80.8,41,54.9,0,0,7.5,17 -2020-05-29T13:00,80.4,41,54.6,0,0,3,17.4 -2020-05-29T14:00,80.5,38,52.5,0,0,0.9,11.2 -2020-05-29T15:00,84.4,24,44.2,0,0,4.7,11.9 -2020-05-29T16:00,84.5,21,40.7,0,0,1.4,12.3 -2020-05-29T17:00,82.5,26,44.6,0,0,7.8,12.5 -2020-05-29T18:00,78.6,34,48.3,0,0,10.7,17.9 -2020-05-29T19:00,73.9,42,49,0,0,8.9,17.7 -2020-05-29T20:00,67.4,55,50.7,0,0,5.4,14.8 -2020-05-29T21:00,65.6,59,50.7,0,0,5.4,8.3 -2020-05-29T22:00,64.2,58,49.3,0,0,5.5,10.3 -2020-05-29T23:00,61,56,45.2,0,0,5.2,8.9 -2020-05-30T00:00,58.5,56,42.7,0,0,5.6,7.4 -2020-05-30T01:00,57.7,57,42.7,0,0,5.7,7.4 -2020-05-30T02:00,58.7,60,44.8,0,0,4.3,6.9 -2020-05-30T03:00,57.7,66,46.4,0,0,3.3,6.5 -2020-05-30T04:00,56.9,68,46.6,0,0,5.5,6 -2020-05-30T05:00,59.6,60,45.9,0,0,3.9,7.2 -2020-05-30T06:00,61.3,60,47.1,0,0,3.4,6 -2020-05-30T07:00,66.9,50,47.7,0,0,4.6,10.3 -2020-05-30T08:00,72.1,43,48.7,0,0,3.4,10.7 -2020-05-30T09:00,76.4,40,50.3,0,0,3.8,10.5 -2020-05-30T10:00,78.4,38,50.6,0,0,8.9,18.1 -2020-05-30T11:00,78.6,37,50.1,0,0,7.2,19.5 -2020-05-30T12:00,77.1,38,49.3,0,0,3.3,16.6 -2020-05-30T13:00,79.7,34,48.7,0,0,1.2,11.4 -2020-05-30T14:00,79.7,31,46.2,0,0,2.2,10.1 -2020-05-30T15:00,79.1,33,47.8,0,0,5.4,13 -2020-05-30T16:00,77.3,39,50.4,0,0,8.2,16.3 -2020-05-30T17:00,74.3,50,54.6,0,0,13.7,16.1 -2020-05-30T18:00,71.2,59,56.2,0,0,8.4,23.5 -2020-05-30T19:00,69.4,63,56.3,0,0,5.6,15 -2020-05-30T20:00,67.4,70,57.2,0,0,2.5,9.6 -2020-05-30T21:00,65.9,77,58.4,0,0,1.8,4 -2020-05-30T22:00,64.9,81,58.8,0.004,0,4.6,10.3 -2020-05-30T23:00,63.5,84,58.6,0,0,0.7,7.6 -2020-05-31T00:00,60.5,91,58,0,0,4.7,8.1 -2020-05-31T01:00,58.8,93,56.8,0,0,2.8,7.6 -2020-05-31T02:00,57.4,95,55.9,0,0,1.8,4.9 -2020-05-31T03:00,57.1,91,54.5,0,0,1.6,2.9 -2020-05-31T04:00,56.3,87,52.3,0,0,2.1,3.1 -2020-05-31T05:00,56.8,87,53,0,0,3.5,4 -2020-05-31T06:00,59.5,77,52.3,0,0,2,5.8 -2020-05-31T07:00,62.6,70,52.8,0,0,0.9,6.3 -2020-05-31T08:00,66.8,61,53.1,0,0,2.3,9.2 -2020-05-31T09:00,72.3,48,51.7,0,0,1.7,9.6 -2020-05-31T10:00,77.9,37,49.6,0,0,2.9,10.5 -2020-05-31T11:00,82.2,30,47.7,0,0,3.8,11.9 -2020-05-31T12:00,84.7,27,46.9,0,0,4.6,13.9 -2020-05-31T13:00,85,26,46.6,0.004,0,1.6,13 -2020-05-31T14:00,85,23,42.8,0,0,2.3,9.4 -2020-05-31T15:00,83.9,26,45.1,0,0,5.5,12.8 -2020-05-31T16:00,82.6,26,44.4,0,0,5.7,12.5 -2020-05-31T17:00,78.4,37,50.1,0,0,7.6,12.1 -2020-05-31T18:00,76.1,44,52.5,0,0,6.9,12.8 -2020-05-31T19:00,72.7,48,51.8,0,0,7,12.3 -2020-05-31T20:00,68.6,54,51.1,0,0,4.3,11.6 -2020-05-31T21:00,64.7,63,52,0,0,5.1,6.7 -2020-05-31T22:00,63.4,62,50.3,0,0,4,6.5 -2020-05-31T23:00,63,56,47.1,0,0,5.1,7.8 -2020-06-01T00:00,62.2,52,44.2,0,0,4.2,8.5 -2020-06-01T01:00,59.8,58,44.9,0,0,5.7,6.7 -2020-06-01T02:00,59.2,56,43.5,0,0,5.2,6.9 -2020-06-01T03:00,57.7,58,43.2,0,0,5.9,7.2 -2020-06-01T04:00,57.7,55,41.5,0,0,5.6,7.2 -2020-06-01T05:00,56.9,65,45.2,0,0,4.8,7.2 -2020-06-01T06:00,62.7,51,44.4,0,0,4.7,8.1 -2020-06-01T07:00,68.8,46,47,0,0,4.2,9.4 -2020-06-01T08:00,75.5,36,46.5,0,0,4.7,11.9 -2020-06-01T09:00,80.7,29,45.8,0,0,3,11.6 -2020-06-01T10:00,84.1,26,45.2,0,0,3.5,11 -2020-06-01T11:00,86,20,39.7,0,0,3.8,12.1 -2020-06-01T12:00,87.4,19,39.5,0,0,6.9,16.6 -2020-06-01T13:00,87.6,18,39,0,0,2.2,16.3 -2020-06-01T14:00,87.8,17,37.8,0,0,2.5,10.3 -2020-06-01T15:00,87.6,17,37.5,0,0,3,9.8 -2020-06-01T16:00,87.2,17,37.8,0,0,5.4,11.2 -2020-06-01T17:00,87.3,20,40.8,0,0,7.6,13.9 -2020-06-01T18:00,82.6,28,46.4,0,0,5.1,13.6 -2020-06-01T19:00,78.2,32,45.9,0,0,9.6,14.8 -2020-06-01T20:00,75.2,35,45.8,0,0,11.3,18.3 -2020-06-01T21:00,73.9,34,43.5,0,0,12.6,21.3 -2020-06-01T22:00,71.2,36,42.6,0,0,9.5,20.8 -2020-06-01T23:00,67.7,42,43.5,0,0,5.1,15.7 -2020-06-02T00:00,64.7,48,44.6,0,0,4.6,8.1 -2020-06-02T01:00,62.6,53,45.4,0,0,5.5,6.7 -2020-06-02T02:00,62,51,43.6,0,0,4.4,6.7 -2020-06-02T03:00,61.1,53,43.6,0,0,5.4,6.7 -2020-06-02T04:00,60.7,50,42.1,0,0,5.4,6.9 -2020-06-02T05:00,61.2,54,44.2,0,0,2.8,7.2 -2020-06-02T06:00,67.2,43,44.2,0,0,0.9,4.7 -2020-06-02T07:00,72.2,36,43.8,0,0,1.7,6.3 -2020-06-02T08:00,76.6,31,44.1,0,0,0.7,6.3 -2020-06-02T09:00,79.3,24,39.8,0,0,2.7,9.4 -2020-06-02T10:00,81.8,20,36.9,0,0,2.9,9.4 -2020-06-02T11:00,83.5,18,35.7,0,0,4.2,12.1 -2020-06-02T12:00,84.8,17,35.2,0,0,4.5,13 -2020-06-02T13:00,86.4,16,34.8,0,0,6,14.8 -2020-06-02T14:00,87,15,34.3,0,0,7.6,17 -2020-06-02T15:00,87.3,15,33.5,0,0,8.3,17.9 -2020-06-02T16:00,86.5,15,33.4,0,0,9.3,18.6 -2020-06-02T17:00,79.3,24,39.2,0,0,8.3,20.4 -2020-06-02T18:00,79.9,24,40.2,0,0,4.4,14.1 -2020-06-02T19:00,74,42,49.5,0,0,4.1,8.1 -2020-06-02T20:00,70.8,41,45.8,0,0,4.1,5.1 -2020-06-02T21:00,68.3,44,45.2,0,0,4.7,6.9 -2020-06-02T22:00,65.1,55,48.7,0,0,3.6,8.5 -2020-06-02T23:00,63.1,67,51.8,0,0,4.1,5.6 -2020-06-03T00:00,61.4,75,53.4,0,0,4.7,5.6 -2020-06-03T01:00,59.9,87,55.9,0,0,9.4,15.4 -2020-06-03T02:00,58.4,86,54.2,0,0,5.9,15.7 -2020-06-03T03:00,58,80,51.7,0,0,3.2,9.6 -2020-06-03T04:00,57.9,85,53.5,0,0,3.8,6.5 -2020-06-03T05:00,55,76,47.6,0,0,3.9,6.7 -2020-06-03T06:00,60.2,57,45,0,0,2.2,5.6 -2020-06-03T07:00,65.1,52,46.9,0,0,0.9,6.7 -2020-06-03T08:00,69.4,50,50,0,0,1.7,8.3 -2020-06-03T09:00,74.5,42,49.9,0,0,1.4,9.6 -2020-06-03T10:00,79.9,27,42.9,0,0,2.1,9.6 -2020-06-03T11:00,82.8,20,37.4,0,0,5.1,13.2 -2020-06-03T12:00,84.4,18,36.5,0,0,8.5,18.1 -2020-06-03T13:00,86.2,17,36.1,0,0,4,18.6 -2020-06-03T14:00,84.6,19,37.1,0,0,10.9,21.9 -2020-06-03T15:00,85,15,31.6,0,0,3.5,21.5 -2020-06-03T16:00,84,15,32,0,0,8.3,15.4 -2020-06-03T17:00,83.9,17,33.7,0,0,15.9,18.1 -2020-06-03T18:00,77.4,31,44.6,0,0,12.6,28.4 -2020-06-03T19:00,74.5,43,50.3,0,0,1.8,20.1 -2020-06-03T20:00,69.6,47,48.6,0,0,5.1,8.3 -2020-06-03T21:00,64.7,61,51.1,0,0,2.6,8.3 -2020-06-03T22:00,62.9,62,49.8,0,0,5.7,8.7 -2020-06-03T23:00,61.5,52,43.7,0,0,5.8,11 -2020-06-04T00:00,60.5,51,42.4,0,0,5.2,9.8 -2020-06-04T01:00,59.5,51,41.1,0,0,5.1,8.7 -2020-06-04T02:00,58,48,38.7,0,0,5.3,8.9 -2020-06-04T03:00,56.5,49,37.6,0,0,4.4,8.7 -2020-06-04T04:00,55.4,50,37.2,0,0,4.2,7.2 -2020-06-04T05:00,54.7,60,41,0,0,3.9,6.7 -2020-06-04T06:00,59.5,48,39.8,0,0,3.2,6.9 -2020-06-04T07:00,66.6,41,42.4,0,0,3.6,9.6 -2020-06-04T08:00,73.9,32,42.2,0,0,1.9,9.6 -2020-06-04T09:00,79.7,22,37,0,0,3.3,10.5 -2020-06-04T10:00,82.7,17,33.7,0,0,3.8,11.6 -2020-06-04T11:00,83.6,18,35.1,0,0,5.9,15.9 -2020-06-04T12:00,82.5,20,37.3,0,0,4.7,21.7 -2020-06-04T13:00,82.8,19,36.1,0,0,4.1,22.1 -2020-06-04T14:00,85.2,19,37.9,0,0,8.6,18.6 -2020-06-04T15:00,79.8,29,44.3,0.004,0,11,22.8 -2020-06-04T16:00,82.6,20,37.4,0,0,6.8,21.3 -2020-06-04T17:00,82.5,19,36.4,0,0,6.4,17.2 -2020-06-04T18:00,81.6,23,40.1,0,0,4.8,12.5 -2020-06-04T19:00,75,34,44.4,0,0,5.8,8.3 -2020-06-04T20:00,70.7,33,39.9,0,0,3,7.4 -2020-06-04T21:00,66.9,38,40.6,0,0,2.7,4.3 -2020-06-04T22:00,62.8,47,42.1,0,0,4.1,6.5 -2020-06-04T23:00,61.4,47,41.2,0,0,5,8.9 -2020-06-05T00:00,59.5,49,40.3,0,0,4.6,8.3 -2020-06-05T01:00,58.2,51,40.3,0,0,4.3,7.8 -2020-06-05T02:00,56.6,53,39.8,0,0,4,6.9 -2020-06-05T03:00,55.2,55,39.3,0,0,5,6.7 -2020-06-05T04:00,55.7,50,37.4,0,0,4.5,6.9 -2020-06-05T05:00,56.6,56,41.1,0,0,3.6,7.4 -2020-06-05T06:00,60.4,51,42,0,0,2.4,5.8 -2020-06-05T07:00,65,43,42.3,0,0,1.2,6.3 -2020-06-05T08:00,71.7,34,41.8,0,0,2.9,9.6 -2020-06-05T09:00,78.4,27,41.5,0,0,1.8,9.8 -2020-06-05T10:00,83.6,23,41.4,0,0,0.9,9.2 -2020-06-05T11:00,87.4,18,38.9,0,0,2.5,9.6 -2020-06-05T12:00,90.1,14,34.3,0,0,6.5,16.6 -2020-06-05T13:00,91.9,13,33.6,0,0,6.9,17.2 -2020-06-05T14:00,92.6,13,33.6,0,0,6.3,16.3 -2020-06-05T15:00,91.8,14,35.1,0,0,8.8,17.7 -2020-06-05T16:00,91.9,13,33.4,0,0,7.8,17.7 -2020-06-05T17:00,89.8,14,34.6,0,0,15.6,21 -2020-06-05T18:00,84.1,22,41.2,0,0,12,26.2 -2020-06-05T19:00,79.8,27,42.7,0,0,10.3,19.7 -2020-06-05T20:00,75.5,33,44.3,0,0,9.6,17.2 -2020-06-05T21:00,74.2,35,44.6,0,0,7.9,15.7 -2020-06-05T22:00,72.1,37,44.2,0,0,6.2,13.2 -2020-06-05T23:00,68.8,43,45.6,0,0,5.1,10.3 -2020-06-06T00:00,66.5,51,47.6,0,0,4.8,8.5 -2020-06-06T01:00,65.9,52,47.8,0,0,3.8,6 -2020-06-06T02:00,64.8,52,46.7,0,0,2.8,5.1 -2020-06-06T03:00,63.1,53,46,0,0,3.6,5.8 -2020-06-06T04:00,60.5,57,45.3,0,0,4.6,7.2 -2020-06-06T05:00,64,46,42.6,0,0,5.3,7.6 -2020-06-06T06:00,67.7,41,43.4,0,0,4.5,20.1 -2020-06-06T07:00,71.4,35,42.4,0,0,10.2,15.2 -2020-06-06T08:00,74.4,35,45.1,0,0,16.2,28.4 -2020-06-06T09:00,72.4,43,48.7,0.008,0,17,33.8 -2020-06-06T10:00,74,42,49.6,0.008,0,13.8,41.2 -2020-06-06T11:00,72.4,46,50.5,0.004,0,10.3,36 -2020-06-06T12:00,81.1,32,48.4,0,0,15.8,30.6 -2020-06-06T13:00,84.5,26,46,0,0,24.6,45.4 -2020-06-06T14:00,82.9,26,44.9,0,0,25.7,45.9 -2020-06-06T15:00,81,30,46.6,0,0,26.6,49.9 -2020-06-06T16:00,79.1,31,46.1,0,0,20.2,44.7 -2020-06-06T17:00,78.9,29,44.3,0,0,13.9,35.3 -2020-06-06T18:00,79.4,42,54.2,0,0,2.8,23 -2020-06-06T19:00,71.7,43,48.3,0,0,14,23 -2020-06-06T20:00,68.1,48,47.4,0,0,3.5,23 -2020-06-06T21:00,67,50,47.6,0,0,1.1,4.5 -2020-06-06T22:00,61.7,62,48.7,0,0,4.1,5.1 -2020-06-06T23:00,59,70,49.1,0,0,2.9,5.1 -2020-06-07T00:00,57.8,73,49.1,0,0,2.9,5.1 -2020-06-07T01:00,55.9,75,48,0,0,3.1,6 -2020-06-07T02:00,53.2,79,46.9,0,0,3.4,5.4 -2020-06-07T03:00,52,76,44.8,0,0,3.4,4.9 -2020-06-07T04:00,50.8,70,41.3,0,0,3.2,4.9 -2020-06-07T05:00,51.4,61,38.3,0,0,3.8,5.1 -2020-06-07T06:00,56.7,48,37,0,0,3.6,7.8 -2020-06-07T07:00,66.2,34,37,0,0,4.5,9.4 -2020-06-07T08:00,76.2,17,27.8,0,0,11.6,20.1 -2020-06-07T09:00,78.8,16,29.3,0,0,14.6,26.8 -2020-06-07T10:00,82.4,15,30.3,0,0,12,26.8 -2020-06-07T11:00,84.3,14,29.8,0,0,16.1,29.1 -2020-06-07T12:00,85.6,13,29.8,0,0,17.3,31.3 -2020-06-07T13:00,86.8,13,29.4,0,0,19.2,34.2 -2020-06-07T14:00,88.7,10,25.7,0,0,21.3,35.3 -2020-06-07T15:00,89.1,10,25.6,0,0,21.8,37.4 -2020-06-07T16:00,88.8,10,24.7,0,0,20.1,38.7 -2020-06-07T17:00,88.3,10,23.7,0,0,16.9,34.7 -2020-06-07T18:00,84.4,14,30.1,0,0,10,28.4 -2020-06-07T19:00,80.4,15,28.6,0,0,10.9,20.4 -2020-06-07T20:00,72.6,21,29.8,0,0,5.5,17.7 -2020-06-07T21:00,70.2,21,28.9,0,0,7.9,12.3 -2020-06-07T22:00,66.3,24,28.3,0,0,6.7,13.2 -2020-06-07T23:00,61.4,31,30.7,0,0,4.4,11 -2020-06-08T00:00,59.2,37,32.7,0,0,4.8,9.4 -2020-06-08T01:00,60.2,52,42.4,0,0,13.2,25.9 -2020-06-08T02:00,56.1,64,44.1,0,0,5.6,21.7 -2020-06-08T03:00,57.6,59,43.3,0,0,1.7,7.4 -2020-06-08T04:00,54.2,69,44.2,0,0,4.5,5.1 -2020-06-08T05:00,53.5,74,45.6,0,0,2.4,5.8 -2020-06-08T06:00,58.3,57,43,0,0,6.2,11 -2020-06-08T07:00,60.5,51,42.4,0,0,5.5,13.9 -2020-06-08T08:00,63.1,46,41.7,0,0,4.7,13 -2020-06-08T09:00,66.3,37,39.3,0,0,5.7,14.8 -2020-06-08T10:00,69.4,30,36.8,0,0,8.2,18.1 -2020-06-08T11:00,72,27,36.3,0,0,10.5,22.1 -2020-06-08T12:00,73,26,35.9,0,0,9.5,22.1 -2020-06-08T13:00,74.3,25,36.1,0,0,8.6,20.6 -2020-06-08T14:00,75,25,36.6,0,0,7.8,19.2 -2020-06-08T15:00,76.7,25,37.8,0.008,0,8.4,17.4 -2020-06-08T16:00,76.6,25,37.9,0,0,10.4,21.7 -2020-06-08T17:00,75.8,29,41.5,0,0,18.4,21.7 -2020-06-08T18:00,66,43,43,0,0,24.1,40.7 -2020-06-08T19:00,61.7,51,43.2,0,0,18.4,55 -2020-06-08T20:00,58.6,52,40.9,0,0,9.9,31.1 -2020-06-08T21:00,56.2,56,40.6,0,0,12.2,21 -2020-06-08T22:00,52,74,43.9,0.055,0,7.2,26.4 -2020-06-08T23:00,49.3,86,45.4,0.079,0,7.7,25.3 -2020-06-09T00:00,46.5,86,42.6,0.059,0,11.7,23.9 -2020-06-09T01:00,45.8,82,40.6,0.067,0,9.8,19.5 -2020-06-09T02:00,45.3,82,40,0.035,0,7.6,16.6 -2020-06-09T03:00,45.1,87,41.6,0.024,0,5.1,13 -2020-06-09T04:00,46.3,85,42,0.016,0,3.3,9.2 -2020-06-09T05:00,44,79,37.9,0.028,0,2.2,9.8 -2020-06-09T06:00,44.7,82,39.6,0.031,0,8.2,12.5 -2020-06-09T07:00,44.5,84,39.8,0.055,0,10.5,18.8 -2020-06-09T08:00,46.9,76,39.7,0.039,0,7,17.7 -2020-06-09T09:00,47.7,77,40.6,0.008,0,3.4,13.6 -2020-06-09T10:00,50,71,41.1,0,0,5.7,20.1 -2020-06-09T11:00,55.4,54,38.8,0,0,9.2,23.9 -2020-06-09T12:00,59.2,41,35.3,0,0,8.1,20.4 -2020-06-09T13:00,64.1,32,33.9,0,0,11,21.9 -2020-06-09T14:00,66.2,22,26.6,0,0,18.9,32.7 -2020-06-09T15:00,67.2,20,25,0,0,17.9,35.3 -2020-06-09T16:00,66.4,21,25.4,0,0,14,32.2 -2020-06-09T17:00,66.5,21,25.1,0,0,10.2,25.5 -2020-06-09T18:00,62.9,24,25.1,0,0,10.9,22.6 -2020-06-09T19:00,59.4,27,25,0,0,10.5,18.6 -2020-06-09T20:00,55.9,31,25.3,0,0,8.7,17.7 -2020-06-09T21:00,52.7,37,27.1,0,0,6.9,14.5 -2020-06-09T22:00,51.7,40,27.9,0,0,9.4,15.4 -2020-06-09T23:00,48.7,49,30.5,0,0,3.6,15.4 -2020-06-10T00:00,47.3,58,33.3,0,0,3.1,6.3 -2020-06-10T01:00,49.9,54,34,0,0,1.6,6.3 -2020-06-10T02:00,45.1,69,35.3,0,0,3.1,2.9 -2020-06-10T03:00,43.9,70,34.8,0,0,5.9,6.7 -2020-06-10T04:00,44.7,69,35.1,0,0,3.6,6.9 -2020-06-10T05:00,48.9,57,34.5,0,0,1.3,5.4 -2020-06-10T06:00,49.7,60,36.4,0,0,1.8,5.1 -2020-06-10T07:00,54,46,33.9,0,0,4.8,10.7 -2020-06-10T08:00,59.7,37,33.1,0,0,7.2,15.4 -2020-06-10T09:00,63.1,34,34.3,0,0,5.7,15.4 -2020-06-10T10:00,66.3,32,35.2,0,0,3.4,14.5 -2020-06-10T11:00,69.4,29,35.3,0,0,1.7,12.1 -2020-06-10T12:00,73,22,32.1,0,0,3.8,11.9 -2020-06-10T13:00,74.9,19,30.3,0,0,8.7,18.6 -2020-06-10T14:00,75.2,19,30.4,0,0,9.4,22.1 -2020-06-10T15:00,74.8,20,30.7,0,0,8.2,19.9 -2020-06-10T16:00,74,23,33.4,0,0,7,17.2 -2020-06-10T17:00,74.9,19,30.4,0,0,4.7,15 -2020-06-10T18:00,72.9,25,34.7,0,0,2.4,10.3 -2020-06-10T19:00,68.8,37,41.5,0,0,3.6,3.8 -2020-06-10T20:00,61.8,46,41,0,0,6.6,8.3 -2020-06-10T21:00,57.7,52,40.4,0,0,4.8,8.1 -2020-06-10T22:00,55.7,56,40.4,0,0,4.6,7.6 -2020-06-10T23:00,53.7,59,39.7,0,0,4.2,7.6 -2020-06-11T00:00,51.9,63,39.7,0,0,5,8.3 -2020-06-11T01:00,50.9,61,38.1,0,0,4.5,8.3 -2020-06-11T02:00,48.7,65,37.3,0,0,4.3,7.4 -2020-06-11T03:00,47.2,70,37.9,0,0,4.4,6 -2020-06-11T04:00,46.7,71,37.7,0,0,4.1,5.8 -2020-06-11T05:00,48.4,63,36.5,0,0,3.6,5.8 -2020-06-11T06:00,52.7,59,38.8,0,0,2.4,6.3 -2020-06-11T07:00,58.8,52,41.5,0,0,2.7,8.3 -2020-06-11T08:00,65.8,38,39.7,0,0,3,10.1 -2020-06-11T09:00,70.4,28,36.1,0,0,2.8,10.1 -2020-06-11T10:00,73.6,23,33,0,0,4.2,12.8 -2020-06-11T11:00,75.7,21,33,0,0,3.8,12.8 -2020-06-11T12:00,77.4,21,33.8,0,0,5,14.1 -2020-06-11T13:00,78.1,20,34,0,0,5.5,14.8 -2020-06-11T14:00,78.9,19,33.6,0,0,3,14.5 -2020-06-11T15:00,79.6,19,33.5,0,0,3.2,11.2 -2020-06-11T16:00,79.7,19,34.2,0,0,6.4,13.6 -2020-06-11T17:00,79.6,19,33.5,0,0,7,14.1 -2020-06-11T18:00,77.4,22,36,0,0,6.3,14.5 -2020-06-11T19:00,71.2,40,45.9,0,0,4.7,10.1 -2020-06-11T20:00,71.5,32,40.1,0,0,1.8,5.8 -2020-06-11T21:00,62.2,47,41.5,0,0,5.3,6.3 -2020-06-11T22:00,60.6,46,39.8,0,0,4.6,7.2 -2020-06-11T23:00,56.4,56,40.7,0,0,5.2,7.2 -2020-06-12T00:00,53.8,61,40.6,0,0,2.6,6.5 -2020-06-12T01:00,51.5,70,42,0,0,4.5,5.8 -2020-06-12T02:00,50.8,71,41.8,0,0,2.2,6.3 -2020-06-12T03:00,49.8,74,41.7,0,0,2.7,5.1 -2020-06-12T04:00,47.8,77,41,0,0,2.2,5.1 -2020-06-12T05:00,48.7,76,41.5,0,0,3.1,4.7 -2020-06-12T06:00,54.4,63,42,0,0,3.6,8.3 -2020-06-12T07:00,62.7,48,42.8,0,0,2.7,8.3 -2020-06-12T08:00,70.6,36,42.4,0,0,4.5,11.6 -2020-06-12T09:00,76.9,28,41.1,0,0,5.2,13 -2020-06-12T10:00,82,22,39.5,0,0,5.4,14.1 -2020-06-12T11:00,85.2,17,35.5,0,0,4.2,15 -2020-06-12T12:00,87.1,14,33,0,0,5.4,14.1 -2020-06-12T13:00,88,14,32.4,0,0,5.4,15 -2020-06-12T14:00,88.3,14,32.3,0,0,7.2,15.4 -2020-06-12T15:00,87.5,14,32.5,0,0,10.1,19.5 -2020-06-12T16:00,87.4,14,31.6,0,0,9.7,19.9 -2020-06-12T17:00,87.5,14,31.9,0,0,6.2,22.8 -2020-06-12T18:00,82,24,41.5,0,0,10.2,19.7 -2020-06-12T19:00,77.8,30,43.8,0,0,7.7,18.1 -2020-06-12T20:00,72.7,31,40.6,0,0,8.8,15.4 -2020-06-12T21:00,68.7,37,41.4,0,0,5.6,14.5 -2020-06-12T22:00,65.7,42,41.8,0,0,5.2,9.2 -2020-06-12T23:00,64.5,44,42,0,0,5.6,8.5 -2020-06-13T00:00,63,47,42.4,0,0,5.2,9.8 -2020-06-13T01:00,60.6,51,42.4,0,0,4.9,8.7 -2020-06-13T02:00,57.1,59,43.1,0,0,4.6,7.8 -2020-06-13T03:00,55,64,43.2,0,0,4.3,6.5 -2020-06-13T04:00,54.6,61,41.5,0,0,3.6,5.8 -2020-06-13T05:00,54.8,67,43.9,0,0,3.3,5.8 -2020-06-13T06:00,59.3,56,43.6,0,0,1,4.5 -2020-06-13T07:00,64,45,42.2,0,0,1.6,6.7 -2020-06-13T08:00,67.3,41,43.1,0,0,3.1,10.7 -2020-06-13T09:00,72.7,35,43.5,0,0,3.8,11.4 -2020-06-13T10:00,78.5,28,42.3,0,0,3.6,12.8 -2020-06-13T11:00,83.6,24,43,0,0,7.3,18.6 -2020-06-13T12:00,84.7,19,38.4,0,0,4.7,17.4 -2020-06-13T13:00,87.8,19,39.9,0,0,2.7,16.3 -2020-06-13T14:00,78.4,34,47.5,0,0,15.7,34 -2020-06-13T15:00,79.5,33,47.6,0,0,8.1,28.2 -2020-06-13T16:00,81.9,30,47,0,0,5.6,17 -2020-06-13T17:00,79.6,34,49.1,0,0,8.2,16.3 -2020-06-13T18:00,78.1,38,50.1,0,0,3.1,14.1 -2020-06-13T19:00,75.4,35,46.1,0,0,6.9,13.6 -2020-06-13T20:00,71.3,43,47.8,0,0,4.2,11.4 -2020-06-13T21:00,68.7,49,48.7,0,0,4,6.9 -2020-06-13T22:00,66.6,51,48,0,0,5.8,9.4 -2020-06-13T23:00,65.1,52,47.2,0,0,6.3,10.1 -2020-06-14T00:00,65.6,52,47.3,0,0,7.6,12.3 -2020-06-14T01:00,65.8,49,45.9,0,0,8,13.4 -2020-06-14T02:00,64.3,47,43.7,0,0,7.1,13.4 -2020-06-14T03:00,62.2,48,42.4,0,0,6.7,11.9 -2020-06-14T04:00,59.8,50,41.2,0,0,6.9,11.6 -2020-06-14T05:00,62.6,49,43.3,0,0,12.3,12.3 -2020-06-14T06:00,65.5,46,44.4,0,0,11.9,20.4 -2020-06-14T07:00,71.6,39,45.2,0,0,12,21.3 -2020-06-14T08:00,76.5,32,44.4,0,0,14,24.8 -2020-06-14T09:00,79.5,26,42,0,0,13.7,26.8 -2020-06-14T10:00,82.4,21,38.2,0,0,12.2,25.5 -2020-06-14T11:00,85.1,17,35.7,0,0,12.5,25.7 -2020-06-14T12:00,87.4,14,32.8,0,0,10.5,25.7 -2020-06-14T13:00,89.2,12,30.7,0,0,10.8,23.3 -2020-06-14T14:00,90.3,11,29.4,0,0,12.4,24.8 -2020-06-14T15:00,90,11,29,0,0,13.2,26.4 -2020-06-14T16:00,89.8,11,28.7,0,0,7.6,25.5 -2020-06-14T17:00,89.2,11,27.2,0,0,10.3,17.2 -2020-06-14T18:00,82.8,18,35.6,0,0,15.2,24.8 -2020-06-14T19:00,79.3,21,35.5,0,0,4.7,24.8 -2020-06-14T20:00,72.6,27,37.1,0,0,4.5,7.6 -2020-06-14T21:00,67.8,36,40.2,0,0,4,6.9 -2020-06-14T22:00,65.8,40,41.1,0,0,5.1,7.4 -2020-06-14T23:00,62.3,44,40,0,0,5.7,10.7 -2020-06-15T00:00,59.8,46,38.9,0,0,3.8,9.4 -2020-06-15T01:00,58.4,46,37.6,0,0,3.5,6.3 -2020-06-15T02:00,55.9,48,36.3,0,0,4.2,6.3 -2020-06-15T03:00,54,48,34.9,0,0,4.2,6.5 -2020-06-15T04:00,52.8,47,33.2,0,0,4.2,6 -2020-06-15T05:00,53.4,42,30.8,0,0,3.8,6.3 -2020-06-15T06:00,57.5,39,32.6,0,0,3.9,8.1 -2020-06-15T07:00,64,33,34.3,0,0,0.6,8.1 -2020-06-15T08:00,68.7,26,32.3,0,0,3.7,11.2 -2020-06-15T09:00,74.9,22,33,0,0,2.7,11.4 -2020-06-15T10:00,80.4,17,32.1,0,0,2.9,11.2 -2020-06-15T11:00,84.8,13,29.4,0,0,4.4,13.4 -2020-06-15T12:00,88,11,26.5,0,0,6.4,15.7 -2020-06-15T13:00,90.4,10,25.5,0,0,8.3,18.6 -2020-06-15T14:00,90.7,10,25.8,0,0,6.5,18.6 -2020-06-15T15:00,90.9,10,26.2,0,0,4,15.7 -2020-06-15T16:00,90.8,9,25.1,0,0,2.2,11.9 -2020-06-15T17:00,90.1,10,26.5,0,0,5.2,14.3 -2020-06-15T18:00,88.1,12,29,0,0,1.4,10.7 -2020-06-15T19:00,80.8,22,38.4,0,0,4.1,7.2 -2020-06-15T20:00,74.4,27,38.6,0,0,5.4,7.2 -2020-06-15T21:00,71,31,38.8,0,0,4,7.6 -2020-06-15T22:00,68.5,33,38.2,0,0,5,8.3 -2020-06-15T23:00,65.3,37,38.3,0,0,3.9,8.1 -2020-06-16T00:00,63.3,40,38.8,0,0,4.1,6.7 -2020-06-16T01:00,61.3,43,38.4,0,0,4.3,6.7 -2020-06-16T02:00,59.9,44,37.9,0,0,4.7,7.6 -2020-06-16T03:00,59.6,43,36.9,0,0,6,9.6 -2020-06-16T04:00,59.6,39,34.5,0,0,6.5,10.5 -2020-06-16T05:00,60.6,34,31.9,0,0,5.9,12.8 -2020-06-16T06:00,65.8,31,34.1,0,0,5.8,9.4 -2020-06-16T07:00,73.1,26,36.1,0,0,4.3,9.8 -2020-06-16T08:00,80.5,21,36.4,0,0,6,12.8 -2020-06-16T09:00,86.1,14,31.6,0,0,9,17.7 -2020-06-16T10:00,88.7,12,29.8,0,0,14.5,26.4 -2020-06-16T11:00,89.5,12,29.7,0,0,12.9,29.1 -2020-06-16T12:00,90.4,12,31.1,0,0,11.1,25.3 -2020-06-16T13:00,92.4,11,29.8,0,0,12.1,24.8 -2020-06-16T14:00,92.9,10,29.3,0,0,15,28.6 -2020-06-16T15:00,91.6,12,31.7,0,0,12.9,28.9 -2020-06-16T16:00,91.2,13,33.7,0,0,13.4,25.1 -2020-06-16T17:00,92.6,11,29.3,0,0,11.1,25.5 -2020-06-16T18:00,90.1,12,30.4,0,0,10.2,19.5 -2020-06-16T19:00,85.2,14,30.5,0,0,10.8,17.9 -2020-06-16T20:00,79.6,16,30.1,0,0,9.8,18.3 -2020-06-16T21:00,72.9,22,32.3,0,0,5.3,16.3 -2020-06-16T22:00,68.8,27,33.4,0,0,5.9,10.1 -2020-06-16T23:00,65.9,31,34.6,0,0,5.8,9.8 -2020-06-17T00:00,64.4,34,35.2,0,0,6.8,12.1 -2020-06-17T01:00,61.3,38,35.8,0,0,5.4,11.6 -2020-06-17T02:00,60.4,39,35,0,0,6.5,12.5 -2020-06-17T03:00,58.6,42,35.7,0,0,5.1,11.6 -2020-06-17T04:00,59.6,40,35.3,0,0,1.3,7.8 -2020-06-17T05:00,55.5,56,39.8,0,0,2.9,3.6 -2020-06-17T06:00,60.1,44,38.1,0,0,4.1,8.5 -2020-06-17T07:00,64,38,37.7,0,0,4,10.7 -2020-06-17T08:00,68.1,32,37.3,0,0,2.7,11 -2020-06-17T09:00,76.4,24,36.4,0,0,1.6,10.3 -2020-06-17T10:00,84.5,15,31.8,0,0,3,11.4 -2020-06-17T11:00,88.7,9,22.8,0,0,4.3,13 -2020-06-17T12:00,91,9,23.6,0,0,6.2,15.7 -2020-06-17T13:00,93,8,22.2,0,0,6,16.6 -2020-06-17T14:00,94.3,7,20.4,0,0,3,15.7 -2020-06-17T15:00,93.4,9,25.4,0,0,9.3,18.1 -2020-06-17T16:00,90.1,11,29.4,0,0,18.4,33.1 -2020-06-17T17:00,88.5,12,30.2,0,0,9.8,32.7 -2020-06-17T18:00,87.4,14,32.1,0,0,12.5,19.5 -2020-06-17T19:00,81.4,17,32.1,0,0,17.8,27.7 -2020-06-17T20:00,74.7,24,36,0,0,13.3,37.6 -2020-06-17T21:00,72.1,27,36.5,0,0,7.6,21.7 -2020-06-17T22:00,70.1,29,36.5,0,0,7.2,12.8 -2020-06-17T23:00,67,29,33.4,0,0,8.3,13.6 -2020-06-18T00:00,63.7,32,33.5,0,0,5.1,13.9 -2020-06-18T01:00,62,36,34.6,0,0,5.1,8.5 -2020-06-18T02:00,60.3,25,24.4,0,0,6.3,11.4 -2020-06-18T03:00,58,25,22.7,0,0,4.7,10.5 -2020-06-18T04:00,55.7,28,22.9,0,0,5.2,7.6 -2020-06-18T05:00,55,39,30.7,0,0,3.2,7.6 -2020-06-18T06:00,56.1,36,29.6,0,0,4.9,9.6 -2020-06-18T07:00,58,34,30.1,0,0,6.2,13.9 -2020-06-18T08:00,59.9,34,31.2,0,0,6.5,15.7 -2020-06-18T09:00,62,33,32.2,0,0,5.1,15.7 -2020-06-18T10:00,64.5,31,33.2,0,0,4,14.5 -2020-06-18T11:00,66.8,30,34.3,0,0,4.7,14.8 -2020-06-18T12:00,69.3,29,35.5,0,0,5.1,15.4 -2020-06-18T13:00,71.7,27,36.1,0,0,3.7,15.4 -2020-06-18T14:00,73.4,26,36.1,0,0,3.6,13.6 -2020-06-18T15:00,73.9,25,36.1,0,0,6.9,15.2 -2020-06-18T16:00,72.2,26,35.1,0,0,5.9,15.4 -2020-06-18T17:00,66.8,36,38.7,0,0,4.9,13 -2020-06-18T18:00,62.6,46,41.6,0.008,0,6,13.6 -2020-06-18T19:00,60.3,59,45.9,0.02,0,3.5,14.5 -2020-06-18T20:00,58.4,76,50.7,0.016,0,4,10.7 -2020-06-18T21:00,57.3,79,50.9,0.024,0,1.1,8.9 -2020-06-18T22:00,56.2,87,52.3,0.028,0,3.4,10.5 -2020-06-18T23:00,55,91,52.4,0.012,0,4.4,8.5 -2020-06-19T00:00,53.2,92,50.8,0,0,2.6,7.8 -2020-06-19T01:00,53.1,91,50.5,0,0,2.2,4.7 -2020-06-19T02:00,52.3,95,51.1,0,0,2.7,3.8 -2020-06-19T03:00,53.9,92,51.6,0,0,2.5,4.5 -2020-06-19T04:00,53.9,92,51.7,0,0,1.4,4.5 -2020-06-19T05:00,54.3,85,50,0.047,0,8.7,15 -2020-06-19T06:00,54.1,81,48.2,0.008,0,7.9,19 -2020-06-19T07:00,55.5,74,47.2,0,0,7.7,15.7 -2020-06-19T08:00,57.4,67,46.6,0.039,0,3.9,20.6 -2020-06-19T09:00,58.6,66,47.3,0.02,0,0.9,20.8 -2020-06-19T10:00,61.4,60,47.6,0.004,0,1.7,20.1 -2020-06-19T11:00,67.6,43,44.4,0,0,1.3,10.3 -2020-06-19T12:00,71.1,34,41.4,0,0,2.6,15.2 -2020-06-19T13:00,74.1,31,41.5,0,0,10.6,19.5 -2020-06-19T14:00,67,47,46.1,0.004,0,15.7,27.5 -2020-06-19T15:00,65.2,52,47.4,0.004,0,14.4,28.6 -2020-06-19T16:00,66.8,44,44.4,0,0,9,29.1 -2020-06-19T17:00,67.3,44,44.4,0,0,2.9,18.6 -2020-06-19T18:00,64.3,56,48.4,0,0,10,17.2 -2020-06-19T19:00,61.4,66,50.1,0,0,7.3,18.1 -2020-06-19T20:00,58.9,73,50.3,0,0,5.3,12.1 -2020-06-19T21:00,55.6,85,51,0,0,4.3,8.7 -2020-06-19T22:00,55.1,85,50.7,0,0,2.3,5.1 -2020-06-19T23:00,54.1,87,50.2,0,0,4.6,7.8 -2020-06-20T00:00,51.9,91,49.3,0,0,3.8,7.6 -2020-06-20T01:00,50.4,90,47.5,0,0,3.4,6.3 -2020-06-20T02:00,49.5,86,45.5,0,0,3.6,6 -2020-06-20T03:00,48.2,82,43,0,0,4,6.9 -2020-06-20T04:00,46.5,77,39.6,0,0,3.2,6.7 -2020-06-20T05:00,46.6,74,38.7,0,0,4.7,5.8 -2020-06-20T06:00,51.3,59,37.6,0,0,5,9.6 -2020-06-20T07:00,60.4,45,39.1,0,0,3.4,9.8 -2020-06-20T08:00,69.2,32,38.1,0,0,3.2,10.3 -2020-06-20T09:00,75,21,32.3,0,0,2.6,10.1 -2020-06-20T10:00,77.5,17,28.5,0,0,2.4,10.7 -2020-06-20T11:00,79.3,16,29.1,0,0,4.8,13.2 -2020-06-20T12:00,81,15,29.1,0,0,5.1,14.5 -2020-06-20T13:00,81.6,15,28.8,0,0,5.5,15 -2020-06-20T14:00,82,15,29.8,0,0,5.6,15 -2020-06-20T15:00,82.6,16,31.4,0,0,7.1,16.3 -2020-06-20T16:00,83.5,14,30,0,0,7.2,16.1 -2020-06-20T17:00,83.6,14,29.2,0,0,6.3,17 -2020-06-20T18:00,79.3,20,34.3,0,0,9.3,15.7 -2020-06-20T19:00,74.3,27,38.5,0,0,4.5,15.2 -2020-06-20T20:00,71.5,32,40.5,0,0,5.5,9.8 -2020-06-20T21:00,68.6,34,39,0,0,4.9,8.9 -2020-06-20T22:00,67.6,34,38.1,0,0,3.1,6.9 -2020-06-20T23:00,66.9,38,40.4,0,0,4.7,8.7 -2020-06-21T00:00,65.2,40,40.6,0,0,3.8,7.4 -2020-06-21T01:00,64.4,38,38,0,0,6,10.3 -2020-06-21T02:00,62.2,40,37.2,0,0,4.6,10.1 -2020-06-21T03:00,59.5,46,38.9,0,0,3.4,7.6 -2020-06-21T04:00,59,46,38.2,0,0,4,6.7 -2020-06-21T05:00,58.9,59,44.7,0,0,3.5,6.7 -2020-06-21T06:00,61,44,39.1,0,0,3.4,6 -2020-06-21T07:00,64,41,39.7,0,0,4,8.3 -2020-06-21T08:00,68.6,34,39.4,0,0,5.2,11 -2020-06-21T09:00,73.6,27,37.1,0,0,3.5,11.4 -2020-06-21T10:00,77.5,22,35.4,0,0,3.1,10.7 -2020-06-21T11:00,80.1,22,37.3,0,0,3.1,11.2 -2020-06-21T12:00,81.6,21,38.4,0,0,5.4,15.4 -2020-06-21T13:00,81.4,21,37.5,0,0,6.8,16.3 -2020-06-21T14:00,81.5,21,37.9,0,0,10,19.9 -2020-06-21T15:00,79.4,24,40,0,0,7.7,21.3 -2020-06-21T16:00,79.4,24,39.1,0,0,7,16.8 -2020-06-21T17:00,67.1,61,53.1,0,0,17.3,14.3 -2020-06-21T18:00,68,55,51.4,0,0,9.1,28.6 -2020-06-21T19:00,67.9,53,50,0,0,2.1,16.6 -2020-06-21T20:00,64.9,61,51.1,0,0,3.3,5.1 -2020-06-21T21:00,63.4,65,51.4,0,0,4.5,6.5 -2020-06-21T22:00,61.2,71,51.6,0,0,3.5,9.2 -2020-06-21T23:00,59.5,76,51.9,0,0,3.4,6 -2020-06-22T00:00,59.1,74,50.8,0,0,2.9,4.7 -2020-06-22T01:00,57.9,73,49.4,0,0,4.7,8.3 -2020-06-22T02:00,57.9,66,46.6,0,0,3.6,8.7 -2020-06-22T03:00,57.8,71,48.6,0,0,12.6,20.1 -2020-06-22T04:00,56.4,78,49.7,0,0,8.2,21.3 -2020-06-22T05:00,56,70,46.4,0,0,4.1,13.6 -2020-06-22T06:00,60.4,58,45.5,0,0,2.7,7.2 -2020-06-22T07:00,64.6,49,44.8,0,0,2.9,8.7 -2020-06-22T08:00,67.1,45,44.9,0,0,2.7,10.1 -2020-06-22T09:00,70,43,46.5,0,0,4,12.3 -2020-06-22T10:00,73.1,39,46.9,0,0,6,15.4 -2020-06-22T11:00,74.3,37,46.4,0,0,5.7,15.9 -2020-06-22T12:00,76.1,34,45.3,0,0,5.5,15.4 -2020-06-22T13:00,77.4,31,44.2,0,0,5.7,15.9 -2020-06-22T14:00,78.5,29,43.8,0,0,5.8,15.4 -2020-06-22T15:00,78.8,29,43.6,0,0,6,16.3 -2020-06-22T16:00,79.3,27,42.6,0,0,6.6,15 -2020-06-22T17:00,77.2,35,47.7,0,0,10.4,16.1 -2020-06-22T18:00,76.8,33,45.1,0,0,7.2,19.7 -2020-06-22T19:00,73.9,37,46.2,0,0,5.4,13.2 -2020-06-22T20:00,68,53,50.4,0,0,11,18.3 -2020-06-22T21:00,65.2,63,52.3,0,0,7.1,18.1 -2020-06-22T22:00,63,69,52.7,0,0,4.3,12.1 -2020-06-22T23:00,61.9,71,52.5,0.004,0,2.4,6.9 -2020-06-23T00:00,61.8,75,53.7,0,0,3.9,6.3 -2020-06-23T01:00,63.1,67,52,0,0,8.3,13.2 -2020-06-23T02:00,61.5,61,47.9,0,0,7.3,13.9 -2020-06-23T03:00,58.8,64,46.8,0,0,4.2,12.1 -2020-06-23T04:00,56.2,75,48.4,0,0,2.9,6.7 -2020-06-23T05:00,56,82,50.6,0,0,4.6,4.7 -2020-06-23T06:00,58.5,76,51.1,0,0,0.2,7.6 -2020-06-23T07:00,62.9,62,49.5,0,0,0.9,6.7 -2020-06-23T08:00,66.7,53,49,0,0,0.8,7.6 -2020-06-23T09:00,70.2,48,49.3,0,0,1.6,9.4 -2020-06-23T10:00,73.8,43,49.7,0,0,3.1,11.9 -2020-06-23T11:00,76.9,39,50.1,0,0,4.7,13.6 -2020-06-23T12:00,79.3,33,47.7,0,0,5.3,15.2 -2020-06-23T13:00,82,28,45.8,0,0,7.8,16.1 -2020-06-23T14:00,77.1,33,46,0,0,9.3,23.9 -2020-06-23T15:00,80.7,28,44.3,0,0,8.5,19 -2020-06-23T16:00,79.4,29,44.8,0,0,9,19 -2020-06-23T17:00,81.2,27,43.6,0,0,4.9,17.9 -2020-06-23T18:00,79.7,29,45.1,0,0,5.6,10.3 -2020-06-23T19:00,74.5,45,51.8,0,0,4.1,9.8 -2020-06-23T20:00,69.7,51,50.5,0,0,4.6,6.7 -2020-06-23T21:00,68.5,50,49.2,0,0,5.4,8.7 -2020-06-23T22:00,64.9,58,49.7,0,0,4.7,8.9 -2020-06-23T23:00,62.6,63,49.8,0,0,4.5,7.8 -2020-06-24T00:00,60.5,66,49,0,0,3.6,7.4 -2020-06-24T01:00,58.4,69,48.1,0,0,3.8,5.6 -2020-06-24T02:00,57,70,47.4,0,0,4.4,5.6 -2020-06-24T03:00,56.7,66,45.4,0,0,3.8,5.6 -2020-06-24T04:00,55.5,66,44.2,0,0,4,5.6 -2020-06-24T05:00,55.9,66,44.8,0,0,3.6,5.8 -2020-06-24T06:00,60,60,46,0,0,4.4,8.9 -2020-06-24T07:00,67.6,48,47.4,0,0,2.8,8.9 -2020-06-24T08:00,74.7,37,46.4,0,0,2.2,8.7 -2020-06-24T09:00,80.1,29,44.8,0,0,2.5,9.8 -2020-06-24T10:00,83.9,24,43.5,0,0,1.7,10.5 -2020-06-24T11:00,85.6,18,36.7,0,0,2.6,12.1 -2020-06-24T12:00,87.4,16,36.2,0,0,6.3,15 -2020-06-24T13:00,87.6,17,37.5,0,0,10.1,20.8 -2020-06-24T14:00,88,16,36.5,0,0,8.1,21 -2020-06-24T15:00,87.8,16,36.5,0,0,4.5,17.9 -2020-06-24T16:00,87.3,16,36.3,0,0,5,13 -2020-06-24T17:00,87.1,18,37.9,0,0,7.5,12.3 -2020-06-24T18:00,79.8,30,45.2,0.004,0,5.4,13.2 -2020-06-24T19:00,75.5,35,45.7,0,0,10.6,18.1 -2020-06-24T20:00,72.4,42,48.2,0,0,3.4,17.2 -2020-06-24T21:00,70.2,51,51.3,0,0,3.5,5.4 -2020-06-24T22:00,68.7,53,51,0,0,4.8,7.2 -2020-06-24T23:00,66.4,58,51.2,0,0,5.2,9.4 -2020-06-25T00:00,63.8,64,51.4,0,0,4.1,8.9 -2020-06-25T01:00,60.6,73,51.9,0,0,5.1,8.3 -2020-06-25T02:00,59.7,70,49.8,0,0,4.5,8.5 -2020-06-25T03:00,58.6,65,46.9,0,0,4.6,7.6 -2020-06-25T04:00,61.3,55,45,0,0,3.6,7.4 -2020-06-25T05:00,58.2,66,46.9,0,0,5.5,4.5 -2020-06-25T06:00,64.3,53,46.6,0,0,4.5,7.4 -2020-06-25T07:00,71.1,38,44.5,0,0,4.9,10.5 -2020-06-25T08:00,78.6,28,42.8,0,0,2.9,10.7 -2020-06-25T09:00,85.6,21,41.5,0,0,1.9,9.4 -2020-06-25T10:00,87.5,17,37.7,0,0,7.9,17.2 -2020-06-25T11:00,86,21,41.9,0,0,13,24.2 -2020-06-25T12:00,88.6,14,34.1,0,0,4.6,24.8 -2020-06-25T13:00,86.6,19,39.1,0,0,12.1,23.3 -2020-06-25T14:00,87.4,17,37.8,0,0,3.9,23.3 -2020-06-25T15:00,87.5,18,38.9,0,0,8.6,14.8 -2020-06-25T16:00,84.9,23,42.5,0,0,9.7,23.5 -2020-06-25T17:00,84,23,41.7,0,0,7.5,19.2 -2020-06-25T18:00,83.6,22,40.7,0,0,10.6,17.4 -2020-06-25T19:00,78.4,29,43.3,0,0,14.8,23.9 -2020-06-25T20:00,74.7,35,44.9,0,0,9.2,25.3 -2020-06-25T21:00,73,38,45.8,0,0,4.3,15 -2020-06-25T22:00,71.9,43,48,0,0,10,16.8 -2020-06-25T23:00,68.2,55,51.5,0,0,8.6,16.8 -2020-06-26T00:00,67.6,55,50.8,0,0,7.1,14.3 -2020-06-26T01:00,64.1,64,51.6,0,0,3.5,11.9 -2020-06-26T02:00,62.4,66,50.9,0,0,2,4.7 -2020-06-26T03:00,59.5,73,50.8,0,0,1.8,5.1 -2020-06-26T04:00,57.8,79,51.4,0,0,1.1,3.6 -2020-06-26T05:00,58.4,81,52.7,0,0,4.5,2.7 -2020-06-26T06:00,61.8,71,52.4,0,0,3,7.4 -2020-06-26T07:00,66.7,59,52.2,0,0,3.6,9.8 -2020-06-26T08:00,71.2,48,50.5,0,0,3.4,10.7 -2020-06-26T09:00,74.6,43,50.4,0,0,4.7,13 -2020-06-26T10:00,76.6,41,51.2,0,0,4.7,14.3 -2020-06-26T11:00,78.7,39,52,0,0,4.2,14.1 -2020-06-26T12:00,77.5,42,52.6,0.008,0,1.2,14.5 -2020-06-26T13:00,78.2,41,52.3,0,0,3.4,13 -2020-06-26T14:00,76.7,45,53.5,0,0,8.8,17.2 -2020-06-26T15:00,74.8,48,54,0.004,0,6.3,22.6 -2020-06-26T16:00,70.9,60,56.3,0,0,5.7,17 -2020-06-26T17:00,67.3,77,59.8,0,0,8.7,18.6 -2020-06-26T18:00,67.8,81,61.8,0.016,0,8.5,22.1 -2020-06-26T19:00,68.5,64,55.9,0,0,4.1,17.2 -2020-06-26T20:00,65.3,82,59.8,0,0,7.2,11.4 -2020-06-26T21:00,63.9,88,60.4,0,0,5.5,11.6 -2020-06-26T22:00,62.9,79,56.2,0,0,5.9,10.5 -2020-06-26T23:00,62.2,74,53.8,0,0,5.3,9.6 -2020-06-27T00:00,59.9,74,51.5,0,0,4.6,8.7 -2020-06-27T01:00,58.6,70,48.8,0,0,4.9,7.8 -2020-06-27T02:00,57.2,72,48.1,0,0,4.4,7.8 -2020-06-27T03:00,56.5,68,46.2,0,0,4.3,7.2 -2020-06-27T04:00,55.2,66,44.1,0,0,6,7.8 -2020-06-27T05:00,59.4,51,41,0,0,7.4,7.2 -2020-06-27T06:00,64.9,42,40.9,0,0,4.5,11.9 -2020-06-27T07:00,70.1,36,41.6,0,0,3.3,8.1 -2020-06-27T08:00,75.3,31,42.4,0,0,3.2,10.3 -2020-06-27T09:00,79.9,27,43.1,0,0,2.7,10.1 -2020-06-27T10:00,82.7,22,40.4,0,0,5.1,13.6 -2020-06-27T11:00,84.7,19,37.8,0,0,5.2,15.9 -2020-06-27T12:00,86.6,17,36,0,0,6.5,17 -2020-06-27T13:00,87.7,15,34.4,0,0,7.6,18.6 -2020-06-27T14:00,87.8,15,34.4,0,0,4.4,18.3 -2020-06-27T15:00,85.3,18,37.5,0,0,9.7,17.7 -2020-06-27T16:00,85.1,17,35.1,0,0,4.5,21 -2020-06-27T17:00,85.2,18,37,0,0,10.7,19.5 -2020-06-27T18:00,82.3,20,37.1,0,0,8.7,19.7 -2020-06-27T19:00,77.8,41,52.3,0,0,2.1,14.8 -2020-06-27T20:00,73.8,30,40.2,0,0,5.4,8.7 -2020-06-27T21:00,71.5,32,40.1,0,0,5.8,8.7 -2020-06-27T22:00,69.3,35,40.6,0,0,6,10.1 -2020-06-27T23:00,66,38,39.5,0,0,5.2,9.6 -2020-06-28T00:00,64.2,38,38.4,0,0,4.9,8.3 -2020-06-28T01:00,63.2,37,36.7,0,0,5.5,8.5 -2020-06-28T02:00,62.2,35,34.3,0,0,6.2,10.1 -2020-06-28T03:00,61.8,33,32.1,0,0,6,10.1 -2020-06-28T04:00,61.9,30,30.1,0,0,6.6,11.2 -2020-06-28T05:00,59.5,40,35.2,0,0,4.3,10.7 -2020-06-28T06:00,65.5,35,36.8,0,0,6,10.1 -2020-06-28T07:00,73,30,40,0,0,3.5,10.1 -2020-06-28T08:00,80.5,24,40.6,0,0,4,9.6 -2020-06-28T09:00,85.8,17,35.5,0,0,4.7,14.3 -2020-06-28T10:00,88.3,15,34.6,0,0,6.5,15.4 -2020-06-28T11:00,86,18,37.4,0,0,10.4,21.3 -2020-06-28T12:00,89.3,14,34.6,0,0,4.3,21 -2020-06-28T13:00,85.1,20,40.1,0.004,0,12.1,25.5 -2020-06-28T14:00,87.6,16,35.2,0,0,2.7,23 -2020-06-28T15:00,85.7,19,38.1,0,0,5.2,14.5 -2020-06-28T16:00,87.7,17,37,0,0,10,19.2 -2020-06-28T17:00,81.4,28,45,0,0,4,30.2 -2020-06-28T18:00,82.4,27,44.7,0,0,2.4,10.1 -2020-06-28T19:00,78.3,37,49.6,0,0,4.5,6.7 -2020-06-28T20:00,72.8,38,45.8,0,0,6.1,7.6 -2020-06-28T21:00,69.1,44,46.1,0,0,4.7,7.6 -2020-06-28T22:00,66.4,50,47.2,0,0,3.6,6.7 -2020-06-28T23:00,63.8,54,46.9,0,0,4.6,6.5 -2020-06-29T00:00,62.9,52,45,0,0,4,6.5 -2020-06-29T01:00,61.9,53,44.3,0,0,4.7,7.6 -2020-06-29T02:00,61.5,53,44.2,0,0,6.2,9.8 -2020-06-29T03:00,60.8,51,42.4,0,0,6.8,11.2 -2020-06-29T04:00,59.8,49,40.5,0,0,7.1,11.9 -2020-06-29T05:00,56.8,63,44.2,0,0,4.6,12.8 -2020-06-29T06:00,63.2,45,41.4,0,0,6.1,10.1 -2020-06-29T07:00,71.6,33,40.8,0,0,6.9,13 -2020-06-29T08:00,80.1,22,37.6,0,0,8.1,16.1 -2020-06-29T09:00,84,16,33.4,0,0,7.6,17.4 -2020-06-29T10:00,86.1,15,33.5,0,0,6.1,16.8 -2020-06-29T11:00,87.8,15,34.1,0,0,5.6,15.4 -2020-06-29T12:00,89.6,14,34.3,0,0,5.2,15.2 -2020-06-29T13:00,90.9,14,34.6,0,0,4.3,14.8 -2020-06-29T14:00,92.1,13,33.4,0,0,3.5,13.2 -2020-06-29T15:00,93.7,12,34,0,0,7.8,17.2 -2020-06-29T16:00,92.8,13,34.3,0,0,4.9,18.3 -2020-06-29T17:00,90,14,34.5,0,0,8.8,13.6 -2020-06-29T18:00,88.8,15,35.7,0,0,7.9,16.1 -2020-06-29T19:00,83.1,20,38.3,0,0,6.8,13.4 -2020-06-29T20:00,79.4,21,35.5,0,0,9,14.8 -2020-06-29T21:00,77.4,20,33.5,0,0,9.2,15.4 -2020-06-29T22:00,73.7,25,36.1,0,0,7.9,15.2 -2020-06-29T23:00,68.4,38,41.5,0,0,4.8,13 -2020-06-30T00:00,64.6,46,43.3,0,0,3.4,7.8 -2020-06-30T01:00,64,51,45.7,0,0,6.7,10.1 -2020-06-30T02:00,63.2,43,40.6,0,0,6.8,12.3 -2020-06-30T03:00,62.4,45,41,0,0,3.7,8.5 -2020-06-30T04:00,62.9,44,40.6,0,0,2.9,5.6 -2020-06-30T05:00,60.3,51,42.2,0,0,4.3,3.8 -2020-06-30T06:00,64.1,44,41.5,0,0,5,8.5 -2020-06-30T07:00,67.2,39,41.5,0,0,7.1,14.3 -2020-06-30T08:00,69.9,35,41.2,0,0,7.3,17 -2020-06-30T09:00,70.7,34,40.9,0,0,0.7,16.3 -2020-06-30T10:00,69.5,38,42.9,0,0,6.7,17.2 -2020-06-30T11:00,72.9,31,40.3,0,0,1.6,19.7 -2020-06-30T12:00,76.8,18,30.3,0,0,4.6,20.4 -2020-06-30T13:00,79.9,10,18.5,0,0,6.3,17.4 -2020-06-30T14:00,81,8,15.2,0,0,8.5,19.2 -2020-06-30T15:00,82,8,16.2,0,0,8.8,19.9 -2020-06-30T16:00,81.3,9,16.8,0,0,9.4,19.7 -2020-06-30T17:00,82.8,8,14.6,0,0,7.1,21.5 -2020-06-30T18:00,78.4,14,25.4,0,0,10.8,21.7 -2020-06-30T19:00,71.8,28,37.2,0,0,11.3,19 -2020-06-30T20:00,69.4,31,37.3,0,0,6.9,18.6 -2020-06-30T21:00,66.7,35,38.3,0,0,4.2,10.7 -2020-06-30T22:00,64.9,38,38.8,0,0,5.8,12.1 -2020-06-30T23:00,62,43,39.4,0,0,7.4,12.5 -2020-07-01T00:00,59.4,48,39.5,0,0,4.5,12.1 -2020-07-01T01:00,58.2,56,42.4,0,0,2.7,8.3 -2020-07-01T02:00,57.2,58,42.7,0,0,5.8,9.6 -2020-07-01T03:00,55.2,59,41.1,0,0,3.3,9.6 -2020-07-01T04:00,53.6,67,42.9,0,0,2.6,4.9 -2020-07-01T05:00,53.9,56,38.6,0,0,4.3,4.3 -2020-07-01T06:00,58.4,43,36.1,0,0,3.2,9.8 -2020-07-01T07:00,64,41,39.7,0,0,5.4,11.9 -2020-07-01T08:00,71.4,27,35.2,0,0,8.8,17.4 -2020-07-01T09:00,77.3,17,29,0,0,10.9,21.9 -2020-07-01T10:00,80.6,13,25.2,0,0,9.4,21.9 -2020-07-01T11:00,83.3,11,23.6,0,0,9.5,20.6 -2020-07-01T12:00,85.2,13,28,0,0,13.9,26.6 -2020-07-01T13:00,85.8,13,30.2,0,0,15.5,29.5 -2020-07-01T14:00,86.2,13,30,0,0,15.8,31.1 -2020-07-01T15:00,85.8,13,29.3,0,0,16.8,30.6 -2020-07-01T16:00,86.1,12,28,0,0,18.6,32.9 -2020-07-01T17:00,85,14,30.7,0,0,15.7,32.9 -2020-07-01T18:00,84.5,14,30.6,0,0,14.7,28.4 -2020-07-01T19:00,80.2,17,30.9,0,0,16.1,26.2 -2020-07-01T20:00,76.7,18,30,0,0,14.6,26.6 -2020-07-01T21:00,73.6,21,30.9,0,0,11.8,23.9 -2020-07-01T22:00,69.5,25,31.9,0,0,6.5,19.5 -2020-07-01T23:00,65.3,31,33.7,0,0,4.3,11 -2020-07-02T00:00,62.9,36,35.4,0,0,3.3,6.5 -2020-07-02T01:00,61.8,40,37,0,0,4.5,7.4 -2020-07-02T02:00,61.9,39,36.7,0,0,4.7,8.5 -2020-07-02T03:00,60.8,42,37.6,0,0,5.8,7.6 -2020-07-02T04:00,60,46,39.1,0,0,5.5,8.1 -2020-07-02T05:00,58.7,53,41.6,0,0,3.9,7.6 -2020-07-02T06:00,63.1,42,39.8,0,0,3.1,6.7 -2020-07-02T07:00,68.2,33,38.2,0,0,3.4,8.9 -2020-07-02T08:00,72.5,29,38,0,0,3.4,11 -2020-07-02T09:00,77.6,23,37.4,0,0,2.8,11.2 -2020-07-02T10:00,83.8,17,34.3,0,0,4.1,12.8 -2020-07-02T11:00,88.6,13,30.7,0,0,6,18.1 -2020-07-02T12:00,90.9,10,27.3,0,0,3.6,17.4 -2020-07-02T13:00,92.4,9,25.9,0,0,5.2,15.4 -2020-07-02T14:00,92.8,8,24.4,0,0,5.8,16.3 -2020-07-02T15:00,92.4,9,24.3,0,0,6.2,15.9 -2020-07-02T16:00,92.3,9,25.3,0,0,5.3,15.7 -2020-07-02T17:00,90.9,11,28.9,0,0,15,13.4 -2020-07-02T18:00,85.8,17,35.5,0,0,9.4,26.8 -2020-07-02T19:00,80.7,30,46.5,0,0,15.4,25.1 -2020-07-02T20:00,74.5,41,48.9,0,0,6.2,25.5 -2020-07-02T21:00,75.3,37,47.5,0,0,9.2,15.4 -2020-07-02T22:00,73.1,39,46.9,0,0,2.9,15 -2020-07-02T23:00,74.2,37,46.2,0,0,4.1,11.2 -2020-07-03T00:00,70.4,37,43,0,0,5.6,9.6 -2020-07-03T01:00,68.5,39,42.5,0,0,3,9.4 -2020-07-03T02:00,67.6,43,44,0,0,2.1,4 -2020-07-03T03:00,63.9,43,40.8,0,0,5.6,9.2 -2020-07-03T04:00,61.3,43,38.5,0,0,4.9,9.4 -2020-07-03T05:00,61.1,56,45.1,0,0,3.5,6.3 -2020-07-03T06:00,64.7,49,45.1,0,0,2,5.6 -2020-07-03T07:00,69.1,50,49.8,0,0,3.8,9.8 -2020-07-03T08:00,73.9,43,49.9,0,0,6.7,14.1 -2020-07-03T09:00,77.4,37,48.9,0,0,6,17.9 -2020-07-03T10:00,82,31,48.1,0,0,3.8,15 -2020-07-03T11:00,84.9,26,46.1,0,0,2.1,13.4 -2020-07-03T12:00,87.2,21,42.9,0,0,3.2,12.3 -2020-07-03T13:00,89.6,18,39.9,0,0,7.7,18.3 -2020-07-03T14:00,90,16,38.4,0,0,4.4,18.3 -2020-07-03T15:00,90.8,17,39.3,0,0,9.7,19.2 -2020-07-03T16:00,89.4,18,40.6,0,0,7.6,21.5 -2020-07-03T17:00,83.5,23,41.9,0,0,16.6,16.1 -2020-07-03T18:00,82.2,23,40.8,0,0,10.6,28.4 -2020-07-03T19:00,80.7,25,41.5,0,0,5.1,18.6 -2020-07-03T20:00,76.9,29,42.4,0,0,12.7,19 -2020-07-03T21:00,74.9,43,51.2,0,0,13,24.6 -2020-07-03T22:00,73,49,52.4,0,0,9.7,21.3 -2020-07-03T23:00,71.7,54,54,0,0,7.5,15.9 -2020-07-04T00:00,68.9,54,51.4,0,0,4.5,12.5 -2020-07-04T01:00,68.1,52,50,0,0,4,7.6 -2020-07-04T02:00,67.8,52,49.4,0,0,4.9,8.3 -2020-07-04T03:00,65.6,52,47.5,0,0,2.6,8.1 -2020-07-04T04:00,64,53,46.8,0,0,3.3,4.7 -2020-07-04T05:00,64.3,62,50.9,0,0,5.1,4.3 -2020-07-04T06:00,68.3,51,49.3,0,0,1.2,6 -2020-07-04T07:00,71.2,44,47.9,0,0,2.9,8.5 -2020-07-04T08:00,74.3,39,47.6,0,0,5.7,13.9 -2020-07-04T09:00,78.7,33,47.3,0,0,6.2,15.7 -2020-07-04T10:00,84.2,27,46.1,0,0,6,15.7 -2020-07-04T11:00,86.8,21,42,0,0,4.7,19.5 -2020-07-04T12:00,87.7,21,42.4,0,0,11.7,23 -2020-07-04T13:00,88.6,21,44.1,0,0,11.3,25.7 -2020-07-04T14:00,87.7,23,45.2,0,0,9.3,23.9 -2020-07-04T15:00,86.7,24,45.4,0,0,6.1,20.1 -2020-07-04T16:00,87,22,43.5,0,0,8,16.3 -2020-07-04T17:00,75,44,51.6,0,0,4.6,19.9 -2020-07-04T18:00,70.2,64,57.3,0.02,0,8.6,15.7 -2020-07-04T19:00,69.1,70,58.7,0,0,7,15.9 -2020-07-04T20:00,67.8,75,59.7,0,0,8.3,13.2 -2020-07-04T21:00,67.4,76,59.5,0,0,6.5,13.4 -2020-07-04T22:00,66.1,79,59.3,0,0,4.8,10.3 -2020-07-04T23:00,64.9,82,59.3,0,0,4,7.8 -2020-07-05T00:00,63.3,84,58.6,0,0,4.4,7.2 -2020-07-05T01:00,61.6,83,56.5,0,0,2.7,7.4 -2020-07-05T02:00,59.9,88,56.4,0,0,3.4,5.4 -2020-07-05T03:00,58.1,92,55.9,0,0,3.9,6.7 -2020-07-05T04:00,57.1,92,54.7,0,0,2.6,6.5 -2020-07-05T05:00,57.7,87,53.7,0,0,1.3,4.3 -2020-07-05T06:00,61.6,70,51.8,0,0,0.8,5.1 -2020-07-05T07:00,66.8,58,51.8,0,0,1.3,7.4 -2020-07-05T08:00,73.6,43,49.7,0,0,1.1,7.8 -2020-07-05T09:00,80,32,47.1,0,0,4.3,12.8 -2020-07-05T10:00,84.7,23,43.2,0,0,5.9,15.7 -2020-07-05T11:00,88.1,19,40.1,0,0,3.5,15.9 -2020-07-05T12:00,90.2,16,38.5,0,0,4,13.2 -2020-07-05T13:00,90.3,16,37.5,0,0,4.6,14.5 -2020-07-05T14:00,91.1,15,36.6,0,0,7.9,17.7 -2020-07-05T15:00,92,16,38.8,0,0,10.4,20.8 -2020-07-05T16:00,85.3,24,44.5,0,0,14.6,27.7 -2020-07-05T17:00,85.6,21,41.7,0,0,8.1,26.8 -2020-07-05T18:00,84.7,23,42.6,0,0,6.6,16.6 -2020-07-05T19:00,81.6,27,44.3,0,0,3.1,12.5 -2020-07-05T20:00,77.5,31,44.9,0,0,6.9,11.2 -2020-07-05T21:00,74.5,37,46.5,0,0,6.9,11.2 -2020-07-05T22:00,70.7,43,47.3,0,0,4.6,11.6 -2020-07-05T23:00,67.8,48,47.2,0,0,3.8,7.4 -2020-07-06T00:00,65.5,52,47.3,0,0,4.6,8.1 -2020-07-06T01:00,63.7,55,47.2,0,0,3.2,7.8 -2020-07-06T02:00,62.1,57,46.9,0,0,4.7,5.8 -2020-07-06T03:00,61.2,59,46.7,0,0,4.5,6.3 -2020-07-06T04:00,60.1,59,45.9,0,0,3.8,6.3 -2020-07-06T05:00,59.3,58,44.6,0,0,3,5.8 -2020-07-06T06:00,63.3,51,44.7,0,0,3.8,7.8 -2020-07-06T07:00,70.1,41,45,0,0,2.8,8.5 -2020-07-06T08:00,76.3,32,44.2,0,0,2.7,10.1 -2020-07-06T09:00,81.7,26,43.2,0,0,1.6,9.8 -2020-07-06T10:00,86.2,22,43,0,0,4.3,13.6 -2020-07-06T11:00,89.8,19,41.5,0,0,4.3,14.3 -2020-07-06T12:00,91.9,14,35.7,0,0,3,14.1 -2020-07-06T13:00,92.7,12,31.6,0,0,2.3,12.1 -2020-07-06T14:00,94,10,29.9,0,0,3.1,12.1 -2020-07-06T15:00,94,10,30.2,0,0,5.6,15 -2020-07-06T16:00,93.5,10,29.5,0,0,5.5,15 -2020-07-06T17:00,91.1,12,32.5,0,0,3.1,13.9 -2020-07-06T18:00,88.4,16,36.9,0,0,6,11.6 -2020-07-06T19:00,85.3,23,43.3,0,0,3.4,11.4 -2020-07-06T20:00,82,24,41.1,0,0,2.9,6.9 -2020-07-06T21:00,77.7,26,40.1,0,0,4.3,5.4 -2020-07-06T22:00,75.3,30,41.7,0,0,11.7,17.7 -2020-07-06T23:00,75.4,28,39.6,0,0,13.1,22.8 -2020-07-07T00:00,74.6,27,38.5,0,0,12.2,21.7 -2020-07-07T01:00,71.7,30,38.9,0,0,9.2,20.1 -2020-07-07T02:00,70.1,34,40.3,0,0,8.4,15.2 -2020-07-07T03:00,69.6,35,40.6,0,0,9.7,15.9 -2020-07-07T04:00,69.1,35,40,0,0,10.2,16.8 -2020-07-07T05:00,69.6,32,38.8,0,0,9.7,16.8 -2020-07-07T06:00,71.7,32,40.5,0,0,8.8,16.1 -2020-07-07T07:00,77.9,26,40.6,0,0,6.8,14.1 -2020-07-07T08:00,84.2,21,40.2,0,0,7,14.5 -2020-07-07T09:00,90.4,16,38,0,0,9.6,19 -2020-07-07T10:00,94.1,12,34.3,0,0,10.2,20.6 -2020-07-07T11:00,93.2,12,32.5,0,0,14.3,28 -2020-07-07T12:00,95.4,9,28.7,0,0,10.5,27.1 -2020-07-07T13:00,97.4,9,29.4,0,0,9.6,22.4 -2020-07-07T14:00,96.1,12,35.1,0,0,16.3,28.4 -2020-07-07T15:00,92.5,14,36.3,0,0,19.4,40.7 -2020-07-07T16:00,95.1,12,33.8,0,0,12.3,34 -2020-07-07T17:00,88.8,19,40.6,0,0,11.4,23.9 -2020-07-07T18:00,88.2,19,40.9,0,0,6.5,19.5 -2020-07-07T19:00,85.1,21,41.4,0,0,6.2,12.3 -2020-07-07T20:00,80.1,24,40.6,0,0,5.6,11.6 -2020-07-07T21:00,78.8,32,46.9,0,0,15,25.5 -2020-07-07T22:00,76.3,36,47.2,0,0,9.1,24.8 -2020-07-07T23:00,72.6,37,44.6,0,0,7.3,15 -2020-07-08T00:00,69,35,39.8,0,0,6,12.1 -2020-07-08T01:00,67.8,23,29.1,0,0,5,10.1 -2020-07-08T02:00,65.8,20,23.5,0,0,5.3,8.7 -2020-07-08T03:00,63.7,21,23.4,0,0,5.1,8.9 -2020-07-08T04:00,61.3,22,22,0,0,4.9,8.7 -2020-07-08T05:00,59.6,21,20.1,0,0,4.7,8.5 -2020-07-08T06:00,64.5,18,20.2,0,0,6,10.3 -2020-07-08T07:00,73.4,15,23.3,0,0,3.3,10.1 -2020-07-08T08:00,80.7,12,22.9,0,0,0.2,8.9 -2020-07-08T09:00,84.4,11,23.2,0,0,1.7,9.2 -2020-07-08T10:00,87.9,8,19.3,0,0,3.8,12.5 -2020-07-08T11:00,91.5,7,19,0,0,5.4,15.4 -2020-07-08T12:00,93.3,7,18.8,0,0,5.4,15.2 -2020-07-08T13:00,94.6,7,19.6,0,0,7.5,18.6 -2020-07-08T14:00,94.8,7,19.5,0,0,5.7,18.6 -2020-07-08T15:00,94.9,6,17.9,0,0,2.3,15.4 -2020-07-08T16:00,94.7,6,16.3,0,0,1.1,10.3 -2020-07-08T17:00,92.8,6,17,0,0,9.2,7.6 -2020-07-08T18:00,91.9,6,16.2,0,0,5.7,15.4 -2020-07-08T19:00,87.4,8,19,0,0,4.9,9.2 -2020-07-08T20:00,83.5,9,17.4,0,0,4.6,9.2 -2020-07-08T21:00,76.9,13,23.2,0,0,4.3,7.6 -2020-07-08T22:00,76.3,16,26.6,0,0,3.1,7.4 -2020-07-08T23:00,73.3,25,35,0,0,9.4,13.9 -2020-07-09T00:00,70,29,36.2,0,0,4.4,16.1 -2020-07-09T01:00,67.8,30,35.2,0,0,3.9,6.7 -2020-07-09T02:00,64.2,34,35.5,0,0,5,6.3 -2020-07-09T03:00,63.6,34,34.9,0,0,4.3,6.3 -2020-07-09T04:00,61.2,40,36.5,0,0,4.7,5.8 -2020-07-09T05:00,59.5,39,34.8,0,0,5.1,6.3 -2020-07-09T06:00,64,33,34,0,0,1.4,6.7 -2020-07-09T07:00,72.1,23,31.7,0,0,4,9.8 -2020-07-09T08:00,76.5,18,30.5,0,0,1.8,10.3 -2020-07-09T09:00,80.2,16,30.3,0,0,1.4,9.2 -2020-07-09T10:00,84.2,14,29,0,0,3.5,12.3 -2020-07-09T11:00,87.5,12,28.9,0,0,4.7,14.8 -2020-07-09T12:00,89.7,12,29.5,0,0,5.7,15.7 -2020-07-09T13:00,91.3,11,29,0,0,7.2,18.1 -2020-07-09T14:00,91.6,11,29.9,0,0,8.1,18.1 -2020-07-09T15:00,91.6,11,30.4,0,0,7,20.8 -2020-07-09T16:00,92.7,10,28.6,0,0,3.4,17 -2020-07-09T17:00,86.1,23,44.1,0,0,11.2,14.1 -2020-07-09T18:00,85.4,30,50.8,0,0,13.1,21 -2020-07-09T19:00,72.1,66,60.1,0.091,0,7.3,24.8 -2020-07-09T20:00,67.4,77,60.1,0.02,0,4.6,13.9 -2020-07-09T21:00,67.6,79,60.7,0,0,4.6,9.4 -2020-07-09T22:00,67.8,80,61.3,0,0,0.9,8.1 -2020-07-09T23:00,67.1,83,61.6,0,0,1.9,3.4 -2020-07-10T00:00,67,82,61.4,0,0,3.8,6.3 -2020-07-10T01:00,65.7,83,60.4,0,0,4,7.2 -2020-07-10T02:00,64.1,85,59.6,0,0,4.4,7.2 -2020-07-10T03:00,63,79,56.4,0,0,3.3,7.2 -2020-07-10T04:00,61.8,65,50,0,0,3.4,5.6 -2020-07-10T05:00,61.9,44,39.7,0,0,4.1,6.5 -2020-07-10T06:00,64.5,49,45.1,0,0,5.5,11.6 -2020-07-10T07:00,67.6,58,52.2,0,0,0.3,11 -2020-07-10T08:00,72.3,47,50.8,0,0,4.3,12.3 -2020-07-10T09:00,80.4,26,42.5,0,0,3.8,12.8 -2020-07-10T10:00,89.2,11,27.3,0,0,4.1,13.4 -2020-07-10T11:00,93.6,6,16.6,0,0,4.8,14.3 -2020-07-10T12:00,95.6,6,17.1,0,0,4.1,14.5 -2020-07-10T13:00,97.4,6,17.9,0,0,4.7,14.3 -2020-07-10T14:00,98.7,5,17.9,0,0,6.5,16.6 -2020-07-10T15:00,99.1,5,17.8,0,0,7.6,17.9 -2020-07-10T16:00,98.9,5,17.8,0,0,6.6,17.7 -2020-07-10T17:00,96.1,6,19.6,0,0,0.6,17 -2020-07-10T18:00,95.7,6,19.2,0,0,3.2,6.7 -2020-07-10T19:00,89.5,10,26.3,0,0,4.9,7.4 -2020-07-10T20:00,90.1,9,22.6,0,0,0.9,7.2 -2020-07-10T21:00,77.6,16,27.1,0,0,4.1,6.9 -2020-07-10T22:00,76.1,17,27.6,0,0,4.4,7.2 -2020-07-10T23:00,74.8,13,21.4,0,0,6.3,7.8 -2020-07-11T00:00,71.9,15,21.7,0,0,6.5,8.7 -2020-07-11T01:00,71.1,18,25.8,0,0,5.1,8.9 -2020-07-11T02:00,70.4,21,28.1,0,0,7.3,12.3 -2020-07-11T03:00,68.9,24,30.8,0,0,6.5,12.1 -2020-07-11T04:00,66.7,28,32.8,0,0,4.8,11 -2020-07-11T05:00,64.8,37,38.2,0,0,4.1,7.6 -2020-07-11T06:00,69.3,37,41.8,0,0,4.8,8.9 -2020-07-11T07:00,72.3,37,44.7,0,0,6.3,13.4 -2020-07-11T08:00,74.7,37,46.9,0,0,4.1,13.6 -2020-07-11T09:00,77.5,34,46.9,0,0,3.6,12.5 -2020-07-11T10:00,81,30,46.2,0,0,3.7,13.2 -2020-07-11T11:00,85.1,25,45.2,0,0,4.1,13.9 -2020-07-11T12:00,89.5,19,42.3,0,0,5,15.2 -2020-07-11T13:00,91.6,16,39.4,0,0,6.6,17 -2020-07-11T14:00,92.7,14,37.2,0,0,7.5,17.9 -2020-07-11T15:00,93.7,12,34.2,0,0,7.7,18.3 -2020-07-11T16:00,93.5,12,33.3,0,0,8.6,18.3 -2020-07-11T17:00,91.5,13,34,0,0,12.2,18.3 -2020-07-11T18:00,90.6,13,32.5,0,0,9.6,21.7 -2020-07-11T19:00,86.9,13,30.7,0,0,8.3,17.2 -2020-07-11T20:00,80.7,20,35.3,0,0,4.7,13.6 -2020-07-11T21:00,79.3,23,38.4,0,0,5.4,8.5 -2020-07-11T22:00,79.4,30,45.1,0,0,11.9,19.5 -2020-07-11T23:00,75.8,31,42.6,0,0,8.8,19.9 -2020-07-12T00:00,72.1,33,41.2,0,0,6.8,14.3 -2020-07-12T01:00,70,34,40.6,0,0,7.6,12.1 -2020-07-12T02:00,70.1,37,42.3,0,0,9.2,15.4 -2020-07-12T03:00,69,40,43.6,0,0,6.3,15.2 -2020-07-12T04:00,67.6,44,45.1,0,0,4.5,10.3 -2020-07-12T05:00,66.5,54,49.1,0,0,5.2,7.6 -2020-07-12T06:00,71.1,44,48.1,0,0,3.8,6.9 -2020-07-12T07:00,77.3,35,47.4,0,0,4.3,10.1 -2020-07-12T08:00,83.9,27,46.6,0,0,3.3,10.7 -2020-07-12T09:00,88.4,19,41.3,0,0,3.6,11.6 -2020-07-12T10:00,91.6,14,36.2,0,0,5.5,15.9 -2020-07-12T11:00,95.2,10,30.3,0,0,6,15 -2020-07-12T12:00,95.2,10,30.4,0,0,5,17.7 -2020-07-12T13:00,95.9,9,28.7,0,0,4.9,14.8 -2020-07-12T14:00,90.9,13,33.9,0,0,10.9,18.6 -2020-07-12T15:00,92.2,12,32.6,0,0,8.7,24.4 -2020-07-12T16:00,92.6,13,34.5,0,0,10.6,22.6 -2020-07-12T17:00,88.7,18,40,0,0,8.8,20.4 -2020-07-12T18:00,90.8,14,35.7,0,0,6.7,17.2 -2020-07-12T19:00,86.7,16,35.2,0,0,4.5,12.5 -2020-07-12T20:00,80.8,21,36.8,0,0,4,7.8 -2020-07-12T21:00,80.6,24,40.3,0,0,7.9,13 -2020-07-12T22:00,77.5,28,41.6,0,0,5.7,13.2 -2020-07-12T23:00,74.6,32,42.5,0,0,5.1,9.2 -2020-07-13T00:00,72.6,34,42.6,0,0,4.6,8.5 -2020-07-13T01:00,70.7,36,42.1,0,0,5.2,7.4 -2020-07-13T02:00,70.7,34,41.3,0,0,4.5,7.4 -2020-07-13T03:00,69.9,35,40.7,0,0,5,7.8 -2020-07-13T04:00,68.7,36,40.5,0,0,4.8,7.8 -2020-07-13T05:00,65.9,42,42.3,0,0,5.6,7.4 -2020-07-13T06:00,72.5,32,41.4,0,0,2.6,6.9 -2020-07-13T07:00,78.9,27,42.1,0,0,3.8,9.2 -2020-07-13T08:00,84.5,22,42,0,0,4.3,11.4 -2020-07-13T09:00,89.4,18,40.7,0,0,5.4,13.2 -2020-07-13T10:00,92.9,17,41.4,0,0,12.2,24.8 -2020-07-13T11:00,92.4,16,39.1,0,0,4.1,24.4 -2020-07-13T12:00,96.1,14,38.3,0,0,5.4,15.9 -2020-07-13T13:00,87.2,28,50.5,0.016,0,14.6,26.8 -2020-07-13T14:00,92.4,17,41.3,0,0,7.9,27.3 -2020-07-13T15:00,88.3,20,41.6,0,0,2.9,18.1 -2020-07-13T16:00,88.9,19,40.9,0,0,6.5,15.4 -2020-07-13T17:00,93.3,17,41.8,0,0,16.1,15.9 -2020-07-13T18:00,78.1,44,54.3,0,0,16.7,30 -2020-07-13T19:00,75.9,50,56.2,0,0,6.4,28.6 -2020-07-13T20:00,74.5,53,56.2,0,0,2.8,11.9 -2020-07-13T21:00,73.9,53,55.8,0,0,5.7,8.9 -2020-07-13T22:00,71.9,54,54.4,0,0,5.4,9.4 -2020-07-13T23:00,70.5,57,54.3,0,0,5.9,9.6 -2020-07-14T00:00,69.4,57,53.8,0,0,4.9,9.8 -2020-07-14T01:00,68.4,54,51.3,0,0,4.6,8.5 -2020-07-14T02:00,67.6,51,49,0,0,4.6,7.6 -2020-07-14T03:00,68.2,46,46.9,0,0,5.2,9.2 -2020-07-14T04:00,68,43,45,0,0,5.1,8.7 -2020-07-14T05:00,66.5,46,45.2,0,0,5.2,8.3 -2020-07-14T06:00,70,41,45.2,0,0,7.9,11 -2020-07-14T07:00,68.9,50,49.6,0,0,8.6,21 -2020-07-14T08:00,70.3,42,46.1,0,0,10.1,21.3 -2020-07-14T09:00,72.5,36,44.2,0,0,6.5,20.8 -2020-07-14T10:00,75.3,34,45.1,0,0,6,16.3 -2020-07-14T11:00,78.8,33,47.6,0,0,6.8,18.1 -2020-07-14T12:00,80.2,33,48.4,0,0,6.4,18.3 -2020-07-14T13:00,81.3,32,48.5,0,0,3.1,16.8 -2020-07-14T14:00,85.6,27,48.1,0,0,2.9,12.5 -2020-07-14T15:00,82.9,30,48,0.016,0,7.5,18.3 -2020-07-14T16:00,83.2,30,48.7,0,0,5.6,17.2 -2020-07-14T17:00,72.5,58,57.1,0,0,6.4,13.6 -2020-07-14T18:00,70.2,70,59.9,0.012,0,9.2,17.2 -2020-07-14T19:00,70.8,72,61.3,0,0,11.4,19.9 -2020-07-14T20:00,70.9,67,59.5,0,0,9.4,19.9 -2020-07-14T21:00,69.4,70,59.1,0,0,4,15.7 -2020-07-14T22:00,68.1,74,59.4,0,0,7.1,11.2 -2020-07-14T23:00,66.8,76,59,0,0,4.3,13 -2020-07-15T00:00,66,75,57.7,0,0,4.9,10.3 -2020-07-15T01:00,64.5,77,57.2,0,0,1.9,8.1 -2020-07-15T02:00,63.8,79,57.2,0,0,4,5.8 -2020-07-15T03:00,62.2,81,56.1,0,0,3.3,6.9 -2020-07-15T04:00,60.5,78,53.7,0,0,3.8,4.5 -2020-07-15T05:00,58.9,81,53.2,0,0,3.6,9.6 -2020-07-15T06:00,62.4,67,51.2,0,0,0.2,4.3 -2020-07-15T07:00,65.4,64,52.8,0,0,1.8,7.4 -2020-07-15T08:00,70.6,57,54.9,0,0,9.2,17 -2020-07-15T09:00,72.7,55,55.6,0,0,10.7,24.6 -2020-07-15T10:00,75.3,49,54.6,0,0,8.6,22.4 -2020-07-15T11:00,77.5,43,53.4,0,0,8.7,19.9 -2020-07-15T12:00,77.4,41,52.1,0,0,3.7,20.1 -2020-07-15T13:00,79.1,38,51.1,0,0,4.6,13.9 -2020-07-15T14:00,80.8,34,50.1,0,0,2.5,14.1 -2020-07-15T15:00,81.1,34,49.7,0,0,10.1,20.8 -2020-07-15T16:00,82.2,31,48.4,0.004,0,4.3,20.6 -2020-07-15T17:00,71.3,67,59.6,0,0,4.3,14.3 -2020-07-15T18:00,73.3,61,59.2,0,0,2.8,10.7 -2020-07-15T19:00,73.9,58,58.4,0,0,1.6,9.6 -2020-07-15T20:00,73.6,55,56.3,0,0,4,6 -2020-07-15T21:00,72.6,47,51.4,0,0,4.5,8.1 -2020-07-15T22:00,69.7,50,50.1,0,0,4.1,7.4 -2020-07-15T23:00,69.6,51,50.5,0,0,1.7,6.7 -2020-07-16T00:00,67.2,56,51,0,0,1.5,2.5 -2020-07-16T01:00,63.6,64,51.4,0,0,2.9,3.6 -2020-07-16T02:00,62.4,65,50.5,0,0,4.5,5.4 -2020-07-16T03:00,64,59,49.4,0,0,3.6,5.4 -2020-07-16T04:00,61.6,62,48.7,0,0,4.3,4.9 -2020-07-16T05:00,62,63,49.3,0,0,4.3,5.1 -2020-07-16T06:00,66.8,47,45.9,0,0,5.2,8.5 -2020-07-16T07:00,73.9,35,44.7,0,0,3.3,8.9 -2020-07-16T08:00,80.9,27,44,0,0,2.1,8.9 -2020-07-16T09:00,86.5,20,40.9,0,0,3.7,11 -2020-07-16T10:00,88.6,19,41,0,0,4.9,12.8 -2020-07-16T11:00,91.9,15,37,0,0,5.8,17.9 -2020-07-16T12:00,92.9,14,37.5,0,0,7.8,18.1 -2020-07-16T13:00,88.8,19,41.7,0,0,13.7,23.7 -2020-07-16T14:00,90.3,16,38,0,0,6.3,30.4 -2020-07-16T15:00,91.1,15,36.3,0,0,6.5,15.2 -2020-07-16T16:00,90.1,17,39.7,0,0,7.6,18.8 -2020-07-16T17:00,81.1,28,44.8,0,0,15.1,17 -2020-07-16T18:00,79.9,31,46.7,0,0,12.3,26.6 -2020-07-16T19:00,78.9,34,47.8,0,0,7.8,21 -2020-07-16T20:00,76.7,36,48,0,0,8.1,13 -2020-07-16T21:00,73.2,42,48.7,0,0,6.9,13.2 -2020-07-16T22:00,72.1,43,48.6,0,0,6.7,11.2 -2020-07-16T23:00,70.4,46,48.7,0,0,6.1,11.2 -2020-07-17T00:00,69.1,47,48,0,0,5.1,10.1 -2020-07-17T01:00,68.3,45,46.4,0,0,5.3,8.7 -2020-07-17T02:00,66.7,46,45.5,0,0,4.9,8.3 -2020-07-17T03:00,65.2,49,45.3,0,0,6,7.6 -2020-07-17T04:00,64.9,48,44.9,0,0,6.9,8.3 -2020-07-17T05:00,65.5,44,43,0,0,6.4,8.7 -2020-07-17T06:00,70.4,39,44.2,0,0,3.2,8.5 -2020-07-17T07:00,75.6,33,44.6,0,0,2.2,7.4 -2020-07-17T08:00,81,27,44,0,0,1.3,7.4 -2020-07-17T09:00,86.1,22,42.4,0,0,4.5,12.3 -2020-07-17T10:00,89.8,17,39.3,0,0,8,18.3 -2020-07-17T11:00,90.4,17,38.9,0,0,11.7,23.5 -2020-07-17T12:00,91.9,15,38.1,0,0,8.5,23.9 -2020-07-17T13:00,92.3,15,37.8,0,0,5.7,19.5 -2020-07-17T14:00,92.8,15,37.5,0,0,4.6,15.9 -2020-07-17T15:00,93.4,14,37.2,0,0,4.2,13.9 -2020-07-17T16:00,86.9,27,49.1,0,0,18.5,31.5 -2020-07-17T17:00,89.9,16,37.7,0,0,11.1,32.9 -2020-07-17T18:00,83.2,25,44.2,0,0,17.5,30 -2020-07-17T19:00,80.3,33,48.5,0.004,0,14.3,29.5 -2020-07-17T20:00,76.6,42,52.1,0.016,0,13.3,23.7 -2020-07-17T21:00,73.5,50,53.7,0.008,0,11.4,21 -2020-07-17T22:00,74.3,44,51,0,0,9.7,18.3 -2020-07-17T23:00,73,45,50.4,0,0,6.1,15.9 -2020-07-18T00:00,69.3,55,52.3,0,0,4.8,10.3 -2020-07-18T01:00,66.8,61,52.8,0,0,4.3,8.1 -2020-07-18T02:00,66.2,55,49.5,0,0,5.4,9.6 -2020-07-18T03:00,65.8,49,46.1,0,0,5.6,9.2 -2020-07-18T04:00,65.2,50,46,0,0,6.5,7.8 -2020-07-18T05:00,69.7,41,45,0,0,5.2,7.8 -2020-07-18T06:00,72.8,38,45.6,0,0,1.3,6.3 -2020-07-18T07:00,78.4,31,45.1,0,0,2.7,7.6 -2020-07-18T08:00,85.9,23,43.5,0,0,3.9,10.5 -2020-07-18T09:00,91,15,37,0,0,2.7,11 -2020-07-18T10:00,93.4,11,31.3,0,0,5.6,13.6 -2020-07-18T11:00,94.7,10,30.3,0,0,11,22.1 -2020-07-18T12:00,96.3,10,30.5,0,0,11,23.7 -2020-07-18T13:00,97,10,31.2,0,0,11.7,23.7 -2020-07-18T14:00,96.1,10,30.4,0,0,11.6,24.6 -2020-07-18T15:00,95.2,11,31.6,0,0,9.6,23.5 -2020-07-18T16:00,94.3,11,31.9,0,0,8.7,20.1 -2020-07-18T17:00,89.3,17,38.8,0,0,11.4,19.9 -2020-07-18T18:00,87.6,15,35.1,0,0,15.1,25.5 -2020-07-18T19:00,85.9,19,39.4,0,0,7.2,25.7 -2020-07-18T20:00,81.8,23,40.7,0,0,4.5,12.1 -2020-07-18T21:00,79,29,44.4,0,0,6.5,11.2 -2020-07-18T22:00,76.4,35,46.6,0,0,3.9,11 -2020-07-18T23:00,73.3,40,47.8,0,0,2.4,6.5 -2020-07-19T00:00,70.6,44,47.4,0,0,4.1,6.3 -2020-07-19T01:00,67.5,49,47.6,0,0,3.3,7.2 -2020-07-19T02:00,68.9,48,48.3,0,0,2.6,4.9 -2020-07-19T03:00,67.7,54,50.3,0,0,5.7,8.7 -2020-07-19T04:00,67.1,58,51.6,0,0,6.3,10.7 -2020-07-19T05:00,62.4,76,54.8,0,0,3.6,10.3 -2020-07-19T06:00,64.1,64,51.5,0,0,2.5,7.2 -2020-07-19T07:00,66.5,60,52.3,0,0,3,8.7 -2020-07-19T08:00,69.5,57,53.7,0,0,3,10.7 -2020-07-19T09:00,73.9,51,54.5,0,0,2.9,11.9 -2020-07-19T10:00,79.4,40,52.8,0,0,3,11.6 -2020-07-19T11:00,84.5,32,51.1,0,0,5.2,14.8 -2020-07-19T12:00,86.7,25,46.4,0,0,6.4,15.2 -2020-07-19T13:00,89.7,19,41.7,0,0,4.9,18.8 -2020-07-19T14:00,89.8,19,41.9,0,0,7.8,17.7 -2020-07-19T15:00,90.1,16,37.9,0,0,2.7,18.8 -2020-07-19T16:00,89.6,17,39.5,0,0,10.4,18.3 -2020-07-19T17:00,87.2,19,39.5,0,0,7.2,23.3 -2020-07-19T18:00,86.6,19,39.4,0,0,8,15 -2020-07-19T19:00,83,22,40.8,0,0,4.1,14.5 -2020-07-19T20:00,78.1,28,42.4,0,0,5.2,7.8 -2020-07-19T21:00,75.2,33,44,0,0,6.7,10.5 -2020-07-19T22:00,74.2,35,44.7,0,0,6.8,13 -2020-07-19T23:00,72,39,45.8,0,0,5.9,11.4 -2020-07-20T00:00,69.9,41,45.2,0,0,5.6,9.8 -2020-07-20T01:00,68.5,41,43.9,0,0,5.3,9.2 -2020-07-20T02:00,67.8,40,42.5,0,0,5.4,8.7 -2020-07-20T03:00,66.3,40,41.5,0,0,4.9,8.7 -2020-07-20T04:00,64.2,42,40.6,0,0,4.8,7.8 -2020-07-20T05:00,66.4,37,39.7,0,0,1.2,6.9 -2020-07-20T06:00,66.5,40,41.4,0,0,2.1,3.8 -2020-07-20T07:00,69.5,35,40.8,0,0,3.5,9.2 -2020-07-20T08:00,74.9,30,41.3,0,0,3,10.1 -2020-07-20T09:00,81.3,24,40.7,0,0,4,12.5 -2020-07-20T10:00,86.5,19,40,0,0,8.5,17.9 -2020-07-20T11:00,88.7,20,42.5,0,0,8.6,22.8 -2020-07-20T12:00,89.2,19,41.2,0,0,8.4,21.3 -2020-07-20T13:00,89.4,19,42.1,0,0,4.6,21 -2020-07-20T14:00,90.3,19,42,0,0,8.7,17.9 -2020-07-20T15:00,90.1,17,40,0,0,8,20.4 -2020-07-20T16:00,89.1,17,38.9,0,0,6.7,17.9 -2020-07-20T17:00,89.6,17,39.1,0,0,7.8,15.2 -2020-07-20T18:00,87.1,22,43.5,0,0,9.2,16.6 -2020-07-20T19:00,78.4,37,50.3,0,0,16.1,27.1 -2020-07-20T20:00,75.4,43,51.4,0,0,6.3,26.8 -2020-07-20T21:00,73.4,43,49.8,0,0,3.6,10.7 -2020-07-20T22:00,71.5,48,50.6,0,0,3.3,6 -2020-07-20T23:00,71.6,51,52.4,0,0,5.2,7.8 -2020-07-21T00:00,69.4,56,52.9,0,0,4.1,9.8 -2020-07-21T01:00,67.4,58,52.1,0,0,4,6 -2020-07-21T02:00,66.2,60,51.7,0,0,3,5.6 -2020-07-21T03:00,63.6,65,51.6,0,0,2.9,3.8 -2020-07-21T04:00,62.7,65,50.7,0,0,2.6,4 -2020-07-21T05:00,63.6,68,53,0,0,2.9,4.3 -2020-07-21T06:00,64.8,69,54.2,0,0,3.2,7.4 -2020-07-21T07:00,66.3,70,56,0,0,6.1,13 -2020-07-21T08:00,69.2,65,57,0,0,6.5,15.4 -2020-07-21T09:00,72.6,58,57.1,0,0,5,15.2 -2020-07-21T10:00,76.3,51,56.8,0,0,2.8,14.3 -2020-07-21T11:00,80.8,43,56.5,0,0,3.6,13 -2020-07-21T12:00,84.2,38,55.8,0,0,5.9,15.9 -2020-07-21T13:00,82.1,38,54.1,0,0,6.8,18.1 -2020-07-21T14:00,83.8,32,51,0,0,1.8,17.2 -2020-07-21T15:00,84,29,48,0,0,9.7,22.6 -2020-07-21T16:00,86.6,24,46,0,0,5.9,20.6 -2020-07-21T17:00,81.4,36,52,0,0,0.6,20.6 -2020-07-21T18:00,84.6,24,43.3,0,0,10.1,16.1 -2020-07-21T19:00,81.7,27,44.2,0,0,7.5,19 -2020-07-21T20:00,77.7,30,43.4,0,0,7.8,12.8 -2020-07-21T21:00,74.6,32,43.1,0,0,7.8,13.4 -2020-07-21T22:00,70.9,39,44.6,0,0,4.5,12.8 -2020-07-21T23:00,69.4,44,46.3,0,0,3.6,5.6 -2020-07-22T00:00,67.5,49,47.7,0,0,4.2,7.6 -2020-07-22T01:00,64.5,55,47.8,0,0,3.9,7.2 -2020-07-22T02:00,63.9,55,47.4,0,0,4,7.6 -2020-07-22T03:00,62.8,55,46.4,0,0,4.1,6.7 -2020-07-22T04:00,61.7,56,46,0,0,3.8,6.9 -2020-07-22T05:00,60.5,65,48.8,0,0,2.1,6 -2020-07-22T06:00,62.2,61,48.7,0,0,1.4,4.5 -2020-07-22T07:00,66.3,54,49,0,0,3.8,9.4 -2020-07-22T08:00,72.1,45,49.4,0,0,3.8,11.4 -2020-07-22T09:00,77.6,35,47.6,0,0,2.7,11 -2020-07-22T10:00,83.8,26,45.2,0,0,2.6,11 -2020-07-22T11:00,89,20,42.3,0,0,3.6,12.1 -2020-07-22T12:00,91.5,16,39.7,0,0,3.6,12.1 -2020-07-22T13:00,92.8,15,38.3,0,0,2.7,12.1 -2020-07-22T14:00,93.5,14,37.3,0,0,2.7,11.2 -2020-07-22T15:00,94.3,14,37.8,0,0,4.4,11.9 -2020-07-22T16:00,88.7,21,44,0,0,13.2,22.6 -2020-07-22T17:00,85.8,24,45.1,0,0,12.8,23.9 -2020-07-22T18:00,82.6,29,47.1,0,0,16.4,28 -2020-07-22T19:00,79.6,35,49.6,0,0,9.3,27.7 -2020-07-22T20:00,78.7,37,50,0,0,2.7,15.2 -2020-07-22T21:00,75.4,42,50.9,0,0,3.3,6 -2020-07-22T22:00,72.5,51,53.2,0,0,5.3,8.3 -2020-07-22T23:00,70.3,56,54.1,0,0,4.3,9.4 -2020-07-23T00:00,71.8,52,53.1,0,0,9.2,15.2 -2020-07-23T01:00,72.1,49,52,0,0,6.5,15.4 -2020-07-23T02:00,71.3,47,50.1,0,0,5.9,11 -2020-07-23T03:00,70.3,47,48.9,0,0,3.8,10.1 -2020-07-23T04:00,70,45,47.8,0,0,4.4,8.1 -2020-07-23T05:00,66.2,60,51.8,0,0,3.2,7.4 -2020-07-23T06:00,68.6,53,51,0,0,5.5,9.4 -2020-07-23T07:00,74.9,42,50.1,0,0,3.1,9.6 -2020-07-23T08:00,79.2,34,48.7,0,0,3.6,10.1 -2020-07-23T09:00,82.4,30,48,0,0,5.1,13.2 -2020-07-23T10:00,85.2,26,46.9,0,0,5.1,14.1 -2020-07-23T11:00,87.2,24,46.5,0,0,4.6,14.1 -2020-07-23T12:00,88.5,23,46.2,0,0,4.5,14.1 -2020-07-23T13:00,89.5,23,46.6,0,0,3.2,13.9 -2020-07-23T14:00,89.8,23,46.9,0,0,1.1,12.3 -2020-07-23T15:00,91,22,47.4,0,0,2.4,10.7 -2020-07-23T16:00,89.8,23,47.4,0,0,2.5,10.7 -2020-07-23T17:00,85.6,27,47.4,0,0,9.5,9.4 -2020-07-23T18:00,85.7,25,45.9,0,0,11.4,19.7 -2020-07-23T19:00,83,28,46.6,0,0,8.1,19.7 -2020-07-23T20:00,79.4,33,47.9,0,0,4.7,13.6 -2020-07-23T21:00,76.6,38,49.1,0,0,3.7,8.1 -2020-07-23T22:00,73.6,41,48.4,0,0,4.7,6.9 -2020-07-23T23:00,71.7,42,47.3,0,0,5.1,8.5 -2020-07-24T00:00,70.6,45,48.1,0,0,4,8.5 -2020-07-24T01:00,70.3,46,48.6,0,0,3.3,7.2 -2020-07-24T02:00,68.7,50,49.5,0,0,3,5.6 -2020-07-24T03:00,65.8,57,50,0,0,3.8,5.6 -2020-07-24T04:00,65.2,58,50.1,0,0,3.5,5.1 -2020-07-24T05:00,66.6,59,52,0,0,1.4,4.5 -2020-07-24T06:00,67.9,59,52.9,0,0,1.8,5.4 -2020-07-24T07:00,71.6,52,52.8,0,0,0.7,5.6 -2020-07-24T08:00,76.9,42,51.8,0,0,1.4,7.6 -2020-07-24T09:00,81.8,34,50.4,0,0,3.9,11.4 -2020-07-24T10:00,85.6,28,49.1,0,0,3.8,13.2 -2020-07-24T11:00,87.2,28,49.8,0,0,3.8,12.8 -2020-07-24T12:00,85,30,50.2,0,0,8.3,17.4 -2020-07-24T13:00,87.1,26,47.8,0,0,4.8,19.7 -2020-07-24T14:00,88.3,25,47.8,0,0,5.6,15.9 -2020-07-24T15:00,83.5,31,49.8,0,0,4.5,14.3 -2020-07-24T16:00,83.6,33,51.6,0,0,7.1,18.1 -2020-07-24T17:00,79.7,41,53.6,0,0,2.8,15.2 -2020-07-24T18:00,75.7,53,57.2,0.004,0,6.7,12.3 -2020-07-24T19:00,73,61,58.8,0,0,7.4,13.4 -2020-07-24T20:00,70.9,68,59.8,0.008,0,6.3,13 -2020-07-24T21:00,69.1,81,62.9,0.02,0,4.8,10.7 -2020-07-24T22:00,68.8,83,63.3,0.012,0,1.6,8.5 -2020-07-24T23:00,67.7,88,64.1,0,0,3.4,5.4 -2020-07-25T00:00,67.2,94,65.3,0,0,3.9,6.9 -2020-07-25T01:00,65.8,96,64.8,0,0,3.8,6.7 -2020-07-25T02:00,63.6,97,62.8,0,0,4,7.2 -2020-07-25T03:00,62.4,96,61.3,0,0,4.3,7.6 -2020-07-25T04:00,62.3,88,58.7,0,0,4.8,8.1 -2020-07-25T05:00,62.7,69,52.5,0,0,4.7,8.1 -2020-07-25T06:00,67.7,56,51.4,0,0,3.5,6.5 -2020-07-25T07:00,72.9,46,50.7,0,0,1.1,6.5 -2020-07-25T08:00,76.8,40,50.9,0,0,1.8,7.4 -2020-07-25T09:00,81,34,49.6,0,0,4.1,11.4 -2020-07-25T10:00,83.9,30,48.8,0,0,6,15.2 -2020-07-25T11:00,85.9,25,46.3,0,0,8.8,19.2 -2020-07-25T12:00,86.6,24,45.8,0,0,7.6,19.7 -2020-07-25T13:00,87.1,24,46,0,0,7,17.7 -2020-07-25T14:00,84.4,28,47.6,0,0,13.2,23.5 -2020-07-25T15:00,82.8,30,48.4,0,0,11.6,28 -2020-07-25T16:00,83.7,28,47.5,0,0,4.3,21.7 -2020-07-25T17:00,68.5,76,60.5,0,0,4.1,11.4 -2020-07-25T18:00,70.9,64,58.3,0.004,0,5.5,12.3 -2020-07-25T19:00,68.9,76,61.1,0.012,0,7.9,13.6 -2020-07-25T20:00,68.4,78,61.3,0.004,0,6.8,13.4 -2020-07-25T21:00,68.4,77,60.8,0,0,5.9,11.2 -2020-07-25T22:00,67.4,79,60.5,0.016,0,7.8,12.5 -2020-07-25T23:00,65.8,90,62.9,0.043,0,5.4,12.5 -2020-07-26T00:00,65.8,92,63.4,0.024,0,3.7,9.2 -2020-07-26T01:00,65.3,91,62.5,0,0,2.1,6.3 -2020-07-26T02:00,65,92,62.6,0,0,2.3,4 -2020-07-26T03:00,62.4,97,61.6,0,0,3.4,4.9 -2020-07-26T04:00,61.9,98,61.3,0,0,2.6,4.9 -2020-07-26T05:00,64,82,58.2,0,0,4.2,5.1 -2020-07-26T06:00,66,75,57.9,0,0,1.8,7.4 -2020-07-26T07:00,68.5,70,58.4,0,0,0.8,4.9 -2020-07-26T08:00,71.9,60,57.3,0,0,1.3,6.5 -2020-07-26T09:00,76.5,45,53.5,0,0,4.5,11 -2020-07-26T10:00,80.1,37,51.4,0,0,8.9,18.3 -2020-07-26T11:00,81.5,35,51.2,0,0,10,20.4 -2020-07-26T12:00,81.1,35,51.3,0,0,9.9,20.6 -2020-07-26T13:00,79.3,40,53.2,0,0,12.3,23.5 -2020-07-26T14:00,78.4,43,54,0.004,0,7.9,23.3 -2020-07-26T15:00,80,41,54,0,0,6.4,17.9 -2020-07-26T16:00,80.6,39,53.6,0,0,3.9,15 -2020-07-26T17:00,72.4,59,57.3,0,0,0.7,11.2 -2020-07-26T18:00,73.6,54,55.7,0,0,4.8,10.3 -2020-07-26T19:00,71.8,55,54.5,0,0,5.1,10.5 -2020-07-26T20:00,69.8,58,54.6,0,0,3.7,8.5 -2020-07-26T21:00,67.8,65,55.7,0,0,2.6,6.3 -2020-07-26T22:00,67.6,66,55.9,0,0,0.5,5.1 -2020-07-26T23:00,66,74,57.4,0,0,2.5,3.4 -2020-07-27T00:00,66.1,75,58.1,0,0,1.6,3.4 -2020-07-27T01:00,64.9,78,58,0,0,1.9,2.7 -2020-07-27T02:00,64,76,56.4,0,0,3.2,5.1 -2020-07-27T03:00,62.3,79,55.7,0,0,3.1,5.4 -2020-07-27T04:00,62.7,77,55.4,0,0,1.8,3.8 -2020-07-27T05:00,60.9,82,55.4,0,0,2.2,3.4 -2020-07-27T06:00,63,75,55,0,0,2.9,6.3 -2020-07-27T07:00,66.2,73,57.1,0,0,4.1,10.3 -2020-07-27T08:00,69.7,65,57.6,0,0,2.5,10.3 -2020-07-27T09:00,73.6,57,57.4,0,0,2.7,10.7 -2020-07-27T10:00,77.5,48,55.9,0,0,3.9,12.8 -2020-07-27T11:00,80.6,40,54.1,0,0,4.9,14.3 -2020-07-27T12:00,82.7,36,53,0,0,5.6,15.7 -2020-07-27T13:00,83.6,32,50.5,0,0,5.8,15.7 -2020-07-27T14:00,83.7,30,48.7,0,0,6.2,15.7 -2020-07-27T15:00,84.7,28,47.6,0,0,5.8,15.4 -2020-07-27T16:00,84.3,28,47.2,0,0,6.5,14.5 -2020-07-27T17:00,84.5,28,47.4,0,0,6,15 -2020-07-27T18:00,79.3,41,53.4,0,0,13.5,22.6 -2020-07-27T19:00,76.6,46,54.3,0,0,10.4,23.9 -2020-07-27T20:00,74.6,54,56.8,0,0,10,17 -2020-07-27T21:00,72.9,54,55.4,0,0,13.3,21.9 -2020-07-27T22:00,70,62,56.2,0,0,9.4,22.4 -2020-07-27T23:00,68.2,64,55.7,0,0,6.3,15.4 -2020-07-28T00:00,66.8,65,54.9,0,0,5.9,10.5 -2020-07-28T01:00,64.8,66,53.2,0,0,4.5,9.8 -2020-07-28T02:00,63.2,67,52.2,0,0,3.2,7.6 -2020-07-28T03:00,61.7,70,51.8,0,0,3.8,4.9 -2020-07-28T04:00,61.2,69,51.1,0,0,4,4.9 -2020-07-28T05:00,63.2,68,52.5,0,0,3.6,4.9 -2020-07-28T06:00,65.5,66,53.9,0,0,2.2,5.6 -2020-07-28T07:00,67.8,67,56.3,0,0,1.6,6.7 -2020-07-28T08:00,70.3,62,56.5,0,0,2.2,8.9 -2020-07-28T09:00,73.1,55,56.2,0,0,1.6,8.9 -2020-07-28T10:00,76.9,46,54.7,0,0,3.7,11.4 -2020-07-28T11:00,80.2,38,52.6,0,0,4.8,13.6 -2020-07-28T12:00,81.6,36,51.9,0,0,6.2,17.4 -2020-07-28T13:00,81.3,39,53.8,0.008,0,5.8,19.2 -2020-07-28T14:00,79.7,39,52.5,0.004,0,7.6,18.1 -2020-07-28T15:00,82.3,31,49,0,0,5.4,16.3 -2020-07-28T16:00,82,31,48.4,0,0,2.8,15.2 -2020-07-28T17:00,77.5,43,53.2,0,0,8.9,13 -2020-07-28T18:00,73.6,56,56.8,0,0,8.4,20.6 -2020-07-28T19:00,70.1,63,57,0.008,0,8.1,16.6 -2020-07-28T20:00,67.5,79,60.7,0.031,0,4.5,13.6 -2020-07-28T21:00,66.6,80,60.3,0,0,4.3,9.2 -2020-07-28T22:00,65,82,59.5,0,0,5.2,8.5 -2020-07-28T23:00,64.1,83,58.8,0,0,5.4,8.9 -2020-07-29T00:00,62.8,85,58.1,0,0,5.5,9.2 -2020-07-29T01:00,61.8,84,56.8,0,0,4.7,9.2 -2020-07-29T02:00,60.4,84,55.4,0,0,4.3,8.1 -2020-07-29T03:00,58.1,83,52.9,0,0,3.3,7.2 -2020-07-29T04:00,57.2,75,49.3,0,0,3.7,6.3 -2020-07-29T05:00,60,50,41.5,0,0,4.6,6.5 -2020-07-29T06:00,63.1,44,41.1,0,0,6.3,9.8 -2020-07-29T07:00,69.9,38,43.1,0,0,4.3,10.3 -2020-07-29T08:00,78.7,28,43.3,0,0,4,10.7 -2020-07-29T09:00,84.6,19,37.6,0,0,5.4,13.4 -2020-07-29T10:00,87.1,16,35.5,0,0,6.7,17 -2020-07-29T11:00,89.9,13,31.8,0,0,17.1,32 -2020-07-29T12:00,89.9,14,33.8,0,0,14.3,35.1 -2020-07-29T13:00,92,10,28.6,0,0,16.1,29.8 -2020-07-29T14:00,92.6,11,30.2,0,0,15.1,32.7 -2020-07-29T15:00,92,11,30.4,0,0,11,29.8 -2020-07-29T16:00,92,11,29.2,0,0,16.9,29.3 -2020-07-29T17:00,87.3,19,40.5,0,0,11.5,30.9 -2020-07-29T18:00,84.8,20,39.7,0,0,12.7,19.7 -2020-07-29T19:00,77.4,37,49,0,0,13.5,27.7 -2020-07-29T20:00,74.3,42,49.7,0,0,4.9,22.4 -2020-07-29T21:00,72.2,47,50.7,0,0,5.1,8.5 -2020-07-29T22:00,70.3,51,51.4,0,0,3.6,8.7 -2020-07-29T23:00,69,54,51.8,0,0,4.3,6.5 -2020-07-30T00:00,66.4,62,52.8,0,0,4.1,6.9 -2020-07-30T01:00,64.8,67,53.6,0,0,4.4,5.8 -2020-07-30T02:00,63.8,69,53.5,0,0,3.4,5.4 -2020-07-30T03:00,62.8,69,52.6,0,0,1.6,4.5 -2020-07-30T04:00,60.7,71,51.1,0,0,3.4,5.8 -2020-07-30T05:00,59.5,69,49.3,0,0,0.3,6.3 -2020-07-30T06:00,60.5,67,49.5,0,0,2.7,5.6 -2020-07-30T07:00,65.9,53,48.6,0,0,2.7,9.4 -2020-07-30T08:00,70.2,48,49.4,0,0,3.9,11 -2020-07-30T09:00,74.5,41,49,0,0,5.8,14.1 -2020-07-30T10:00,76.5,37,48.5,0,0,11.9,23.7 -2020-07-30T11:00,74.8,42,50,0,0,12.9,25.3 -2020-07-30T12:00,75,43,51.1,0,0,12.5,25.1 -2020-07-30T13:00,76.3,42,51.7,0,0,12.5,25.9 -2020-07-30T14:00,77.5,42,52.7,0,0,12.3,25.9 -2020-07-30T15:00,77.2,42,52.6,0,0,10.6,25.1 -2020-07-30T16:00,74,50,54.3,0.02,0,10.4,22.1 -2020-07-30T17:00,70.2,59,55.1,0.012,0,6.3,20.1 -2020-07-30T18:00,68.9,64,56.3,0,0,12.2,21.3 -2020-07-30T19:00,65.9,76,58,0.004,0,7.2,22.4 -2020-07-30T20:00,65.2,78,58.2,0,0,4,13.4 -2020-07-30T21:00,64.5,83,59.1,0,0,1.4,7.2 -2020-07-30T22:00,63.3,86,58.9,0,0,2.2,3.4 -2020-07-30T23:00,62.3,87,58.6,0,0,2.2,3.6 -2020-07-31T00:00,60.7,92,58.3,0,0,2.9,4 -2020-07-31T01:00,59.8,93,57.9,0,0,3.2,4.7 -2020-07-31T02:00,58.2,96,57,0,0,1.7,3.8 -2020-07-31T03:00,57.1,94,55.4,0,0,1.5,3.8 -2020-07-31T04:00,55.9,92,53.5,0,0,1.6,3.1 -2020-07-31T05:00,56.8,86,52.7,0,0,3,3.6 -2020-07-31T06:00,59.5,74,51.3,0,0,2.6,6.3 -2020-07-31T07:00,65,61,51.2,0,0,2.1,7.6 -2020-07-31T08:00,70.6,51,51.4,0,0,1.4,8.5 -2020-07-31T09:00,75.1,43,51.3,0,0,1.2,8.7 -2020-07-31T10:00,79.3,31,45.8,0,0,4,13 -2020-07-31T11:00,82.4,25,42.8,0,0,5.2,14.8 -2020-07-31T12:00,84.5,22,41.2,0,0,7.4,18.8 -2020-07-31T13:00,85.3,21,40.6,0,0,11,22.1 -2020-07-31T14:00,85.6,20,39.9,0,0,10.2,22.6 -2020-07-31T15:00,85.4,21,40.9,0,0,7,21.3 -2020-07-31T16:00,85.1,21,41.4,0,0,6.7,17 -2020-07-31T17:00,83.1,25,43.9,0,0,6.5,18.1 -2020-07-31T18:00,82,27,44.6,0,0,2.6,13.6 -2020-07-31T19:00,77.9,31,44.4,0,0,10.3,16.6 -2020-07-31T20:00,73.1,39,47,0,0,3.8,17.4 -2020-07-31T21:00,70.6,47,49.5,0,0,6.7,11.2 -2020-07-31T22:00,67,55,50.3,0,0,3.9,11 -2020-07-31T23:00,65,61,51.1,0,0,3.6,5.6 -2020-08-01T00:00,63.7,62,50.5,0,0,4.4,7.4 -2020-08-01T01:00,61.7,65,50,0,0,3.5,7.6 -2020-08-01T02:00,60.2,69,50.1,0,0,2.9,5.8 -2020-08-01T03:00,58.8,74,50.6,0,0,2.8,4.7 -2020-08-01T04:00,57.4,80,51.3,0,0,3.2,4.5 -2020-08-01T05:00,57.7,64,45.5,0,0,3.6,4.3 -2020-08-01T06:00,59.8,59,45.2,0,0,3,6.7 -2020-08-01T07:00,65.7,48,45.7,0,0,1.6,6.9 -2020-08-01T08:00,72.1,38,45.2,0,0,1.4,8.3 -2020-08-01T09:00,77.9,30,43.8,0,0,1.6,8.9 -2020-08-01T10:00,82.5,25,43,0,0,2.6,11 -2020-08-01T11:00,85.8,19,39.2,0,0,5.2,14.3 -2020-08-01T12:00,87.7,17,37,0,0,6.3,16.8 -2020-08-01T13:00,88.8,16,37.1,0,0,9,19.5 -2020-08-01T14:00,88.3,17,37.3,0,0,8.5,20.8 -2020-08-01T15:00,86,21,41.1,0,0,12,23.3 -2020-08-01T16:00,84.9,20,39.8,0,0,14,25.9 -2020-08-01T17:00,80.7,28,44.6,0,0,10.4,25.7 -2020-08-01T18:00,80.1,27,43.3,0,0,9.3,18.1 -2020-08-01T19:00,77.3,30,43.8,0,0,4.7,16.1 -2020-08-01T20:00,73.8,36,45.1,0,0,3.7,7.8 -2020-08-01T21:00,70.3,41,45.8,0,0,4.3,6 -2020-08-01T22:00,69.5,43,45.8,0,0,5.1,8.9 -2020-08-01T23:00,65.8,51,46.9,0,0,3.7,8.1 -2020-08-02T00:00,64,55,47.7,0,0,2.7,5.4 -2020-08-02T01:00,62.5,59,48,0,0,3,5.1 -2020-08-02T02:00,60.8,63,48,0,0,2.9,5.1 -2020-08-02T03:00,60,64,47.8,0,0,4.2,7.2 -2020-08-02T04:00,57.8,69,47.8,0,0,3.5,7.2 -2020-08-02T05:00,60,64,47.7,0,0,3.7,4.5 -2020-08-02T06:00,62.6,60,48.4,0,0,5.9,8.9 -2020-08-02T07:00,66.8,57,51,0,0,6.3,13 -2020-08-02T08:00,71,51,51.7,0,0,5.1,13.4 -2020-08-02T09:00,74.5,45,51.6,0,0,6.4,15.4 -2020-08-02T10:00,77.4,40,51,0,0,5.5,16.3 -2020-08-02T11:00,80.2,34,49.5,0,0,5.8,15.7 -2020-08-02T12:00,82.7,30,48.2,0,0,6.3,17 -2020-08-02T13:00,82.5,29,47.3,0.008,0,6.4,17.2 -2020-08-02T14:00,84.7,24,44,0,0,6.2,16.8 -2020-08-02T15:00,84.7,23,42.8,0,0,8.4,19.2 -2020-08-02T16:00,84.3,24,44.1,0,0,6.2,18.1 -2020-08-02T17:00,83.9,26,45.7,0,0,4.2,14.8 -2020-08-02T18:00,80.5,33,48.6,0,0,8.6,16.3 -2020-08-02T19:00,77.3,37,48.7,0,0,2.9,15.2 -2020-08-02T20:00,77,37,48.6,0,0,2.8,6.5 -2020-08-02T21:00,70.4,48,49.8,0,0,4.1,6 -2020-08-02T22:00,67.9,54,50.6,0,0,4.8,7.8 -2020-08-02T23:00,65.7,60,51.3,0,0,3,8.1 -2020-08-03T00:00,64.6,63,51.8,0,0,3.4,5.1 -2020-08-03T01:00,62,70,52.2,0,0,3.3,6 -2020-08-03T02:00,62.2,72,53.1,0,0,6.7,10.3 -2020-08-03T03:00,60.9,76,53.4,0,0,4.6,11.9 -2020-08-03T04:00,58.7,81,52.9,0,0,5,7.4 -2020-08-03T05:00,60.9,76,53.4,0,0,1.5,6.3 -2020-08-03T06:00,60.6,78,53.8,0,0,1.1,3.4 -2020-08-03T07:00,63.9,69,53.5,0,0,0.4,6.3 -2020-08-03T08:00,67.7,62,54.2,0,0,2.7,9.6 -2020-08-03T09:00,71.8,55,54.7,0,0,2.6,11 -2020-08-03T10:00,75.6,48,54.3,0,0,2.8,11.9 -2020-08-03T11:00,79.4,41,53.8,0,0,3.7,13 -2020-08-03T12:00,83.7,35,52.8,0,0,3.7,13.6 -2020-08-03T13:00,85.6,31,51.9,0,0,1.4,13.4 -2020-08-03T14:00,84.7,33,52.2,0.02,0,1.5,10.7 -2020-08-03T15:00,86.1,28,49,0.004,0,4.9,14.3 -2020-08-03T16:00,85.1,27,47.4,0,0,4.3,14.8 -2020-08-03T17:00,82.3,37,53.5,0,0,8.5,11 -2020-08-03T18:00,80.5,40,53.7,0,0,10.4,22.1 -2020-08-03T19:00,78.7,39,51.9,0,0,9.9,18.3 -2020-08-03T20:00,75.7,41,50.4,0,0,7.6,16.6 -2020-08-03T21:00,74.2,44,50.9,0,0,6.3,12.8 -2020-08-03T22:00,72.7,52,54,0,0,18.6,25.7 -2020-08-03T23:00,68.5,64,55.7,0,0,8.8,32.7 -2020-08-04T00:00,66.9,67,55.7,0,0,7.3,15 -2020-08-04T01:00,65.6,69,55,0,0,3.4,13.2 -2020-08-04T02:00,63.3,75,55.4,0,0,3.8,5.4 -2020-08-04T03:00,63.1,75,54.9,0,0,2.8,4.9 -2020-08-04T04:00,62.1,68,51.4,0,0,3.8,5.8 -2020-08-04T05:00,62.6,69,52.3,0,0,3.2,6.5 -2020-08-04T06:00,65,62,51.5,0,0,3.8,5.4 -2020-08-04T07:00,68.5,54,51.4,0,0,4.5,7.8 -2020-08-04T08:00,75.9,39,49.1,0,0,4.8,15.9 -2020-08-04T09:00,80.1,35,49.8,0,0,5.9,13.9 -2020-08-04T10:00,83.8,30,49.3,0,0,3.4,15 -2020-08-04T11:00,89.5,24,47.6,0,0,6.4,14.8 -2020-08-04T12:00,86.7,28,49.3,0,0,6.1,23.5 -2020-08-04T13:00,89.8,24,48.4,0,0,7.8,21.3 -2020-08-04T14:00,87,25,46.6,0.012,0,7.8,23.9 -2020-08-04T15:00,84.8,25,45.2,0,0,10.1,22.6 -2020-08-04T16:00,83,29,47.4,0,0,17.2,29.5 -2020-08-04T17:00,81.1,42,55.9,0,0,18.7,31.5 -2020-08-04T18:00,79,41,53.1,0.004,0,4.9,31.8 -2020-08-04T19:00,73.6,52,54.7,0.004,0,2,9.6 -2020-08-04T20:00,71.4,58,55.8,0,0,5.8,9.8 -2020-08-04T21:00,70,60,55.7,0,0,6.8,11.2 -2020-08-04T22:00,68.9,63,55.6,0,0,7.3,11.9 -2020-08-04T23:00,68,63,55.1,0,0,6,12.3 -2020-08-05T00:00,66.3,67,55,0,0,4.2,10.1 -2020-08-05T01:00,63.9,73,55.1,0,0,2.8,7.2 -2020-08-05T02:00,63,75,54.9,0,0,3.3,4.7 -2020-08-05T03:00,62,75,53.9,0,0,3.6,5.6 -2020-08-05T04:00,61.5,69,51.4,0,0,4.2,6.7 -2020-08-05T05:00,61.1,81,55.1,0,0,3.4,6.7 -2020-08-05T06:00,62.3,74,54,0,0,3.7,7.4 -2020-08-05T07:00,66.7,65,54.4,0,0,4.3,9.4 -2020-08-05T08:00,73.3,48,52.2,0,0,5.4,13 -2020-08-05T09:00,79.3,36,50.2,0,0,4.2,13.2 -2020-08-05T10:00,83.8,29,48.3,0,0,1.4,12.5 -2020-08-05T11:00,87.2,24,46.3,0,0,3.4,12.5 -2020-08-05T12:00,85,29,49.2,0.008,0,4.3,18.3 -2020-08-05T13:00,86.2,24,45.1,0,0,2.7,13.6 -2020-08-05T14:00,85.2,27,47.1,0.008,0,1.8,11.4 -2020-08-05T15:00,84.4,28,47.8,0.004,0,7.5,14.5 -2020-08-05T16:00,84.2,27,46.4,0,0,5.8,18.3 -2020-08-05T17:00,83.1,37,54.1,0,0,10.4,15.7 -2020-08-05T18:00,79.1,42,54.1,0.008,0,4.1,19 -2020-08-05T19:00,66.8,79,60.3,0.122,0,13.2,26.4 -2020-08-05T20:00,68.6,71,58.7,0,0,6.4,22.4 -2020-08-05T21:00,68.5,71,58.8,0,0,5.2,11.6 -2020-08-05T22:00,67.3,74,58.8,0,0,4,8.7 -2020-08-05T23:00,67.6,73,58.6,0,0,5.5,9.4 -2020-08-06T00:00,65.6,74,56.9,0,0,3.2,9.2 -2020-08-06T01:00,63.8,80,57.6,0,0,4.2,5.4 -2020-08-06T02:00,64,78,56.8,0,0,4.2,7.2 -2020-08-06T03:00,63.3,72,54,0,0,3.6,6.7 -2020-08-06T04:00,62.8,70,52.9,0,0,1.7,4.3 -2020-08-06T05:00,60.8,73,52,0,0,4.4,4 -2020-08-06T06:00,63.6,59,48.9,0,0,2.2,5.4 -2020-08-06T07:00,67.4,52,49.1,0,0,2,7.2 -2020-08-06T08:00,72.9,43,49.2,0,0,4.5,11.9 -2020-08-06T09:00,82.5,25,43.6,0,0,3.4,12.1 -2020-08-06T10:00,88.3,19,40.9,0,0,3.4,14.1 -2020-08-06T11:00,85.1,24,44.1,0,0,5.2,13.6 -2020-08-06T12:00,85.6,21,41.8,0,0,4.2,17.7 -2020-08-06T13:00,89,18,40.3,0,0,10,20.4 -2020-08-06T14:00,88.5,19,40.7,0,0,11.5,26.2 -2020-08-06T15:00,88.5,18,39.6,0,0,2.8,22.8 -2020-08-06T16:00,87.5,19,40,0,0,10.6,19 -2020-08-06T17:00,86.5,21,41.6,0,0,6.8,21 -2020-08-06T18:00,83.1,25,43.8,0,0,5.6,15.4 -2020-08-06T19:00,79.9,30,45.6,0,0,5.2,9.8 -2020-08-06T20:00,76.4,35,46.4,0,0,4.8,13.6 -2020-08-06T21:00,72.8,42,48.1,0,0,3.8,7.8 -2020-08-06T22:00,69.4,50,50,0,0,4,6.5 -2020-08-06T23:00,66.9,55,50.2,0,0,4.2,6.5 -2020-08-07T00:00,65.8,57,50.3,0,0,3.4,5.6 -2020-08-07T01:00,64.3,57,48.9,0,0,4,6.7 -2020-08-07T02:00,63.1,55,46.4,0,0,5.2,8.9 -2020-08-07T03:00,62.3,48,42.5,0,0,6.1,10.3 -2020-08-07T04:00,62.3,41,38,0,0,6.2,10.7 -2020-08-07T05:00,59.1,40,34.9,0,0,5.4,10.5 -2020-08-07T06:00,63.4,33,34,0,0,5.1,7.6 -2020-08-07T07:00,70.9,26,34.3,0,0,4.6,10.1 -2020-08-07T08:00,80.4,20,35.2,0,0,3.2,10.1 -2020-08-07T09:00,87.1,13,29.6,0,0,1.4,9.8 -2020-08-07T10:00,89.7,9,23.5,0,0,2.3,10.1 -2020-08-07T11:00,91.3,9,24.4,0,0,4.6,13.4 -2020-08-07T12:00,93.2,9,25.4,0,0,6.5,16.3 -2020-08-07T13:00,93.7,9,25.3,0,0,6.3,16.6 -2020-08-07T14:00,94.8,8,24.4,0,0,4.5,15.7 -2020-08-07T15:00,95.5,8,23.5,0,0,3.6,13.2 -2020-08-07T16:00,94.7,7,22.7,0,0,3.8,11.4 -2020-08-07T17:00,94.6,7,22.6,0,0,5.8,15.7 -2020-08-07T18:00,91.6,9,26,0,0,6.2,11.4 -2020-08-07T19:00,82,14,27.8,0,0,5.9,10.3 -2020-08-07T20:00,80.3,15,29.1,0,0,6.2,9.4 -2020-08-07T21:00,74.8,18,28.9,0,0,5.4,8.7 -2020-08-07T22:00,71,26,34.7,0,0,4.6,8.9 -2020-08-07T23:00,66.4,38,40.1,0,0,4.6,7.6 -2020-08-08T00:00,66.4,37,39.6,0,0,4.1,6.5 -2020-08-08T01:00,68.5,23,29.7,0,0,7,11.4 -2020-08-08T02:00,67.3,16,19.2,0,0,5.8,11.6 -2020-08-08T03:00,70.3,13,17.6,0,0,4.5,10.5 -2020-08-08T04:00,61.8,26,26.2,0,0,6.2,7.4 -2020-08-08T05:00,61.7,31,30.7,0,0,4.7,7.4 -2020-08-08T06:00,63.1,32,32.6,0,0,4.7,7.4 -2020-08-08T07:00,69.2,26,32.4,0,0,2.4,8.3 -2020-08-08T08:00,76.6,19,31.4,0,0,1.5,7.2 -2020-08-08T09:00,84.3,12,25.6,0,0,0.9,7.6 -2020-08-08T10:00,88,9,20.9,0,0,5.1,13.9 -2020-08-08T11:00,89.2,9,22.4,0,0,2.1,13.9 -2020-08-08T12:00,91,8,22.2,0,0,6.3,15.2 -2020-08-08T13:00,92.1,8,23.6,0,0,8.9,19.5 -2020-08-08T14:00,92.5,9,24.7,0,0,9,19.7 -2020-08-08T15:00,92.4,8,23.9,0,0,8.8,19.2 -2020-08-08T16:00,92.5,8,23.5,0,0,10.6,20.1 -2020-08-08T17:00,91.1,8,22.1,0,0,9.3,22.4 -2020-08-08T18:00,88.3,11,28,0,0,12.5,20.8 -2020-08-08T19:00,83,14,28.9,0,0,10.2,20.8 -2020-08-08T20:00,79.7,15,28.4,0,0,8.9,17 -2020-08-08T21:00,76.5,19,31.1,0,0,9.5,15.9 -2020-08-08T22:00,72.1,25,34.3,0,0,7.9,15.9 -2020-08-08T23:00,70,28,35.4,0,0,6.5,13.2 -2020-08-09T00:00,68.3,30,35.5,0,0,5.4,11 -2020-08-09T01:00,67.6,29,34.5,0,0,6.7,11.4 -2020-08-09T02:00,63.9,32,33.8,0,0,5.3,11 -2020-08-09T03:00,61.4,34,32.9,0,0,6.8,8.1 -2020-08-09T04:00,60.7,33,31.3,0,0,6.8,8.3 -2020-08-09T05:00,61.4,27,27.4,0,0,6.1,8.5 -2020-08-09T06:00,65,26,29.8,0,0,4.5,8.7 -2020-08-09T07:00,72.5,22,31.3,0,0,3.8,9.2 -2020-08-09T08:00,81.7,17,31.9,0,0,2.3,8.5 -2020-08-09T09:00,89.2,10,24.7,0,0,5.8,13 -2020-08-09T10:00,91.7,8,21.7,0,0,6.5,16.1 -2020-08-09T11:00,92.8,8,22.1,0,0,2.8,15.7 -2020-08-09T12:00,93.8,8,22.2,0,0,1,11.6 -2020-08-09T13:00,94.6,7,21.9,0,0,4.8,13.4 -2020-08-09T14:00,94.9,7,21.7,0,0,6.3,15.7 -2020-08-09T15:00,94.5,7,20.8,0,0,7.7,17 -2020-08-09T16:00,93.7,7,20.2,0,0,9.1,17.4 -2020-08-09T17:00,93.1,7,18.8,0,0,5.4,18.6 -2020-08-09T18:00,91,9,25.4,0,0,3.7,10.5 -2020-08-09T19:00,87.1,11,25.3,0,0,1.7,6.7 -2020-08-09T20:00,78,16,28.5,0,0,6.5,8.7 -2020-08-09T21:00,74.5,17,27.4,0,0,5.3,8.7 -2020-08-09T22:00,71.5,21,29.2,0,0,4.3,7.6 -2020-08-09T23:00,69.9,23,30,0,0,7.1,11.9 -2020-08-10T00:00,66.3,26,30.3,0,0,3.8,11.9 -2020-08-10T01:00,63.8,31,32.3,0,0,5,6.3 -2020-08-10T02:00,64.1,26,28.9,0,0,6.2,7.6 -2020-08-10T03:00,64.9,26,29.4,0,0,7.1,8.7 -2020-08-10T04:00,64.7,28,30.7,0,0,5.3,9.4 -2020-08-10T05:00,62.1,53,44.5,0,0,6.9,8.1 -2020-08-10T06:00,61.9,58,47.1,0,0,6.9,11.4 -2020-08-10T07:00,64,58,49.1,0,0,5.3,13.4 -2020-08-10T08:00,66.7,55,49.8,0,0,0.7,11.6 -2020-08-10T09:00,71.2,46,49.6,0,0,2.3,10.3 -2020-08-10T10:00,76.9,36,47.9,0,0,3.5,12.3 -2020-08-10T11:00,82.1,28,46.1,0,0,3.5,13.9 -2020-08-10T12:00,86.9,22,43.7,0,0,6.5,16.1 -2020-08-10T13:00,89.2,20,42.8,0,0,8.6,19.7 -2020-08-10T14:00,88.9,16,36.5,0,0,3.7,19.2 -2020-08-10T15:00,89.2,14,33.8,0,0,3.8,13.6 -2020-08-10T16:00,88.8,14,34.3,0,0,9.3,17.7 -2020-08-10T17:00,87.4,22,43.3,0,0,6.7,22.1 -2020-08-10T18:00,85,23,43.3,0,0,2.3,12.1 -2020-08-10T19:00,80.7,26,42.8,0,0,3.5,5.8 -2020-08-10T20:00,76.1,33,44.8,0,0,4.1,6.5 -2020-08-10T21:00,72.1,41,46.8,0,0,5.9,7.8 -2020-08-10T22:00,68,49,48.2,0,0,5.1,7.6 -2020-08-10T23:00,65.3,55,48.7,0,0,2.6,6.3 -2020-08-11T00:00,63.4,56,47.4,0,0,3.2,5.1 -2020-08-11T01:00,62.4,54,45.7,0,0,3.8,5.8 -2020-08-11T02:00,62.3,46,41.2,0,0,4.3,7.4 -2020-08-11T03:00,60.8,45,39.3,0,0,3.8,7.2 -2020-08-11T04:00,59.4,46,38.5,0,0,3,6.5 -2020-08-11T05:00,61.3,45,39.7,0,0,3,5.8 -2020-08-11T06:00,63.1,46,42,0,0,1.3,6 -2020-08-11T07:00,66.8,36,39,0,0,2.1,7.2 -2020-08-11T08:00,72.8,28,38,0,0,1.3,7.8 -2020-08-11T09:00,80.6,20,35.9,0,0,1.3,8.9 -2020-08-11T10:00,87.9,14,32.2,0,0,3.5,11 -2020-08-11T11:00,90.7,10,25.4,0,0,3.7,13.9 -2020-08-11T12:00,92.3,9,24.4,0,0,5.4,13.9 -2020-08-11T13:00,93.2,8,23.5,0,0,6.6,15.9 -2020-08-11T14:00,93.1,8,23,0,0,5.5,15.9 -2020-08-11T15:00,93.4,8,22.6,0,0,2.4,14.1 -2020-08-11T16:00,92.8,8,22.6,0,0,3.9,9.8 -2020-08-11T17:00,90.4,10,25.9,0,0,11.9,13.2 -2020-08-11T18:00,89,10,25.6,0,0,11.1,21.3 -2020-08-11T19:00,84.2,12,25.6,0,0,4.9,18.6 -2020-08-11T20:00,80.9,15,28.6,0,0,8.9,13.9 -2020-08-11T21:00,74.6,23,34.2,0,0,4.7,15 -2020-08-11T22:00,73.6,23,33.8,0,0,3.9,6 -2020-08-11T23:00,71.2,27,35.6,0,0,4.7,8.1 -2020-08-12T00:00,67.3,35,38.7,0,0,6.4,7.6 -2020-08-12T01:00,66,37,38.7,0,0,6,7.8 -2020-08-12T02:00,64.1,36,36.5,0,0,5.3,7.4 -2020-08-12T03:00,62.9,34,34.3,0,0,4,6.7 -2020-08-12T04:00,61.7,34,33.2,0,0,5.2,8.7 -2020-08-12T05:00,59.4,70,49.6,0,0,4.1,8.7 -2020-08-12T06:00,61.5,59,47.1,0,0,5.4,9.4 -2020-08-12T07:00,66.5,50,47.1,0,0,4.3,8.5 -2020-08-12T08:00,72.1,40,46.7,0,0,6.6,15.4 -2020-08-12T09:00,79.3,25,40.2,0,0,4.7,14.8 -2020-08-12T10:00,86.2,15,33.5,0,0,4,13.4 -2020-08-12T11:00,90.1,11,27.6,0,0,4.2,13.4 -2020-08-12T12:00,90.4,10,25.8,0,0,5.3,14.3 -2020-08-12T13:00,90.9,10,27.4,0,0,3,14.5 -2020-08-12T14:00,91.4,11,28.4,0,0,2.4,12.1 -2020-08-12T15:00,91.6,11,28.8,0,0,5.2,13.2 -2020-08-12T16:00,90.9,11,28.9,0,0,8.3,17 -2020-08-12T17:00,91,13,33.4,0,0,7.4,22.1 -2020-08-12T18:00,85.9,17,35.8,0,0,7.8,18.8 -2020-08-12T19:00,81.6,19,35.5,0,0,5.4,13 -2020-08-12T20:00,75.9,24,36.8,0,0,4.4,8.9 -2020-08-12T21:00,73,26,36.2,0,0,5.2,8.9 -2020-08-12T22:00,71.6,21,29.8,0,0,5.4,8.5 -2020-08-12T23:00,70.5,21,28.1,0,0,6.2,10.1 -2020-08-13T00:00,67.6,24,29.8,0,0,5.6,10.1 -2020-08-13T01:00,64,31,32.8,0,0,4.3,8.9 -2020-08-13T02:00,61.8,37,35.4,0,0,3.8,6 -2020-08-13T03:00,61.9,36,34.8,0,0,4.1,6.9 -2020-08-13T04:00,60,36,33.1,0,0,4,6.9 -2020-08-13T05:00,58.7,27,25.1,0,0,4.6,6.3 -2020-08-13T06:00,61.5,26,26.6,0,0,4.8,6.7 -2020-08-13T07:00,68.7,23,29.7,0,0,4.7,10.3 -2020-08-13T08:00,77.5,17,29,0,0,4.1,11 -2020-08-13T09:00,84.1,11,25,0,0,2.7,10.7 -2020-08-13T10:00,88.5,9,22.4,0,0,1.6,10.3 -2020-08-13T11:00,90.6,8,21.8,0,0,4,12.5 -2020-08-13T12:00,92.2,8,22.3,0,0,3.2,14.1 -2020-08-13T13:00,93.2,8,22.1,0,0,1.6,12.3 -2020-08-13T14:00,94.3,7,21.5,0,0,5.5,14.8 -2020-08-13T15:00,94.5,7,20.5,0,0,7.3,17.2 -2020-08-13T16:00,94.7,7,19.5,0,0,3.4,16.8 -2020-08-13T17:00,93.3,8,23.4,0,0,4.3,15.4 -2020-08-13T18:00,90.2,22,46.1,0,0,2.7,8.9 -2020-08-13T19:00,85.6,12,27.1,0,0,5.5,5.4 -2020-08-13T20:00,81.2,14,27,0,0,5.5,8.9 -2020-08-13T21:00,76.5,18,30.5,0,0,5.7,10.5 -2020-08-13T22:00,70.8,26,34.3,0,0,5.1,9.4 -2020-08-13T23:00,67.5,32,36.2,0,0,4.7,6.9 -2020-08-14T00:00,66.1,32,35.7,0,0,3.9,6.3 -2020-08-14T01:00,66.6,29,33.1,0,0,6.5,10.5 -2020-08-14T02:00,65.1,28,31.6,0,0,6.5,11.2 -2020-08-14T03:00,63.5,29,30.6,0,0,6.1,11.2 -2020-08-14T04:00,62.7,29,29.8,0,0,5.5,10.5 -2020-08-14T05:00,63.5,23,25.5,0,0,6.6,8.7 -2020-08-14T06:00,64.7,28,30.5,0,0,3.6,8.1 -2020-08-14T07:00,71.6,23,32.2,0,0,5.4,11 -2020-08-14T08:00,79.1,19,32.7,0,0,4,11 -2020-08-14T09:00,85.7,13,28.9,0,0,1.8,10.7 -2020-08-14T10:00,89.9,9,22.9,0,0,7.2,16.3 -2020-08-14T11:00,90.7,9,24.4,0,0,11.2,22.4 -2020-08-14T12:00,92.3,9,24.8,0,0,10.7,24.8 -2020-08-14T13:00,94,8,24.4,0,0,9,22.4 -2020-08-14T14:00,93.9,8,24.8,0,0,9.2,20.1 -2020-08-14T15:00,93.8,9,26.1,0,0,8.9,19.9 -2020-08-14T16:00,92.3,11,29.2,0,0,11.1,21.3 -2020-08-14T17:00,88.8,15,34.8,0,0,8.8,21.9 -2020-08-14T18:00,86.3,17,35.6,0,0,9.8,16.3 -2020-08-14T19:00,79.5,27,42.3,0,0,11.1,20.6 -2020-08-14T20:00,76.1,31,43.6,0,0,5.2,18.1 -2020-08-14T21:00,75.9,32,43.9,0,0,1.3,8.3 -2020-08-14T22:00,71.7,38,45.1,0,0,2.9,3.4 -2020-08-14T23:00,72.2,37,44.5,0,0,1.2,3.4 -2020-08-15T00:00,65.4,49,46,0,0,3.2,4.5 -2020-08-15T01:00,63.1,55,46.5,0,0,2.6,4.5 -2020-08-15T02:00,61.2,58,46.5,0,0,2.4,4.9 -2020-08-15T03:00,59.6,60,45.7,0,0,1.2,4.5 -2020-08-15T04:00,59.6,55,43.6,0,0,3.5,4.7 -2020-08-15T05:00,61.3,49,42,0,0,4.7,6.5 -2020-08-15T06:00,62.1,47,41.7,0,0,4.9,7.8 -2020-08-15T07:00,67.7,39,42.1,0,0,2.6,7.6 -2020-08-15T08:00,72.9,35,43.3,0,0,3.2,10.3 -2020-08-15T09:00,78.7,28,42.9,0,0,1.4,10.5 -2020-08-15T10:00,84.5,20,39,0,0,4.1,12.5 -2020-08-15T11:00,89.1,15,35.7,0,0,5.6,15 -2020-08-15T12:00,91.9,13,34.5,0,0,6.7,17 -2020-08-15T13:00,92.6,13,34.8,0,0,9,19.7 -2020-08-15T14:00,92.7,14,35.7,0,0,8.6,20.4 -2020-08-15T15:00,92.8,13,35.2,0,0,8.6,19.2 -2020-08-15T16:00,91.7,14,35,0,0,9.8,19.2 -2020-08-15T17:00,89.5,15,35.1,0,0,11.4,19.7 -2020-08-15T18:00,87.7,15,35.2,0,0,6.8,20.4 -2020-08-15T19:00,81.9,20,37,0,0,5.5,11.2 -2020-08-15T20:00,82.7,19,35.7,0,0,3.2,6.7 -2020-08-15T21:00,80.8,20,36.1,0,0,1.1,3.8 -2020-08-15T22:00,74.1,26,37.1,0,0,4.1,5.1 -2020-08-15T23:00,68.8,32,37.8,0,0,3.3,5.1 -2020-08-16T00:00,65.9,38,39.5,0,0,4.3,5.6 -2020-08-16T01:00,64,42,40.2,0,0,4.7,6 -2020-08-16T02:00,63.6,40,38.7,0,0,3.7,6 -2020-08-16T03:00,61.6,43,39,0,0,3.8,5.8 -2020-08-16T04:00,61,45,39.7,0,0,3.8,5.8 -2020-08-16T05:00,61.9,47,41.6,0,0,3,6.3 -2020-08-16T06:00,63.9,46,42.5,0,0,5.1,7.4 -2020-08-16T07:00,70.6,38,43.4,0,0,3,8.3 -2020-08-16T08:00,78.4,28,42.4,0,0,2.6,8.9 -2020-08-16T09:00,84.2,22,41.5,0,0,2.1,9.8 -2020-08-16T10:00,88.5,18,39.4,0,0,1.6,9.6 -2020-08-16T11:00,91.9,13,33.4,0,0,6.2,15.4 -2020-08-16T12:00,93.4,10,28.9,0,0,7.8,18.8 -2020-08-16T13:00,94.4,10,28.8,0,0,7.3,18.6 -2020-08-16T14:00,94.8,10,29.3,0,0,8.1,18.6 -2020-08-16T15:00,94.4,11,31.1,0,0,9.9,19.9 -2020-08-16T16:00,87.4,23,45.5,0,0,19.1,33.6 -2020-08-16T17:00,93,12,33.5,0,0,10.7,33.8 -2020-08-16T18:00,89.9,14,35,0,0,12.7,21.5 -2020-08-16T19:00,85.1,18,37,0,0,10.5,21.7 -2020-08-16T20:00,80.1,24,40.1,0,0,4.2,17 -2020-08-16T21:00,78.5,26,41.3,0,0,4.7,6.7 -2020-08-16T22:00,77,33,45.6,0,0,4.7,10.1 -2020-08-16T23:00,72.7,40,46.7,0,0,4.1,7.4 -2020-08-17T00:00,70.1,41,45,0,0,3.6,5.6 -2020-08-17T01:00,69,38,42.4,0,0,4.2,6.3 -2020-08-17T02:00,67.5,48,46.9,0,0,5.9,7.4 -2020-08-17T03:00,66.7,50,47.8,0,0,4.7,7.6 -2020-08-17T04:00,64,52,45.8,0,0,3.2,5.6 -2020-08-17T05:00,63.6,53,46,0,0,2.7,4.3 -2020-08-17T06:00,64.5,50,45.4,0,0,2.4,5.1 -2020-08-17T07:00,70.1,46,48.2,0,0,1.2,5.8 -2020-08-17T08:00,74,44,50.8,0,0,2,8.7 -2020-08-17T09:00,78.9,37,50.5,0,0,2.8,11 -2020-08-17T10:00,83.6,31,49.7,0,0,3.2,11.9 -2020-08-17T11:00,88.1,25,48.3,0,0,3.7,13.2 -2020-08-17T12:00,91.9,19,43.7,0,0,3.8,13.4 -2020-08-17T13:00,93.8,16,40.2,0,0,10.7,20.8 -2020-08-17T14:00,91.9,13,34.3,0,0,9.7,24.8 -2020-08-17T15:00,93.7,11,32.1,0,0,8.8,19.9 -2020-08-17T16:00,92.8,14,36.3,0,0,7.4,18.8 -2020-08-17T17:00,92.8,15,38.6,0,0,9.8,15.9 -2020-08-17T18:00,89.4,33,56.3,0,0,2.2,17.4 -2020-08-17T19:00,85.3,20,40,0,0,5,9.6 -2020-08-17T20:00,80.9,25,41.6,0,0,4.5,8.5 -2020-08-17T21:00,77.5,28,41.5,0,0,4.4,7.6 -2020-08-17T22:00,73.9,34,43.9,0,0,6.5,7.8 -2020-08-17T23:00,71.7,36,43.3,0,0,4.6,7.6 -2020-08-18T00:00,69.9,39,43.8,0,0,4,6.3 -2020-08-18T01:00,67.7,42,43.9,0,0,3.7,6.9 -2020-08-18T02:00,65.7,44,43.4,0,0,4,6.3 -2020-08-18T03:00,64.6,45,43,0,0,3.5,6 -2020-08-18T04:00,63.7,46,42.6,0,0,3.8,6 -2020-08-18T05:00,62.8,49,43.3,0,0,5.4,6 -2020-08-18T06:00,65.6,43,42.4,0,0,3.9,6.7 -2020-08-18T07:00,72.1,35,42.5,0,0,3.5,8.7 -2020-08-18T08:00,80.7,26,42.4,0,0,1.1,8.7 -2020-08-18T09:00,86.8,20,40.9,0,0,3.4,10.5 -2020-08-18T10:00,91.3,16,39.6,0,0,3.2,11.9 -2020-08-18T11:00,93.9,13,35.8,0,0,2.8,13 -2020-08-18T12:00,95.2,12,33.8,0,0,4.5,14.5 -2020-08-18T13:00,96.3,11,32.1,0,0,8.5,19 -2020-08-18T14:00,96.6,11,33.3,0,0,10.4,21.3 -2020-08-18T15:00,95.6,11,33.4,0,0,9.7,21.5 -2020-08-18T16:00,93.7,13,34.5,0,0,12,21 -2020-08-18T17:00,93.7,11,30.7,0,0,8.2,24.8 -2020-08-18T18:00,90.1,14,33.6,0,0,10.9,18.3 -2020-08-18T19:00,86.5,16,35.2,0,0,5.4,18.3 -2020-08-18T20:00,81.5,19,35.5,0,0,3.2,8.9 -2020-08-18T21:00,80.2,21,36.2,0,0,4.5,5.4 -2020-08-18T22:00,79.2,22,36.6,0,0,1.8,6 -2020-08-18T23:00,73.1,29,38.6,0,0,3.2,3.6 -2020-08-19T00:00,72.3,30,38.9,0,0,4.8,7.4 -2020-08-19T01:00,69,35,40,0,0,6.4,7.8 -2020-08-19T02:00,68.4,35,39.6,0,0,5,7.8 -2020-08-19T03:00,66.1,37,39.1,0,0,4.6,7.2 -2020-08-19T04:00,64.7,38,38.7,0,0,3.7,5.6 -2020-08-19T05:00,65.5,45,43.3,0,0,4.3,5.8 -2020-08-19T06:00,66.9,42,43.1,0,0,4.3,7.4 -2020-08-19T07:00,71.7,35,42.6,0,0,0.7,7.6 -2020-08-19T08:00,75.6,32,43.4,0,0,2.4,8.9 -2020-08-19T09:00,80.1,28,43.7,0,0,2.5,10.5 -2020-08-19T10:00,85,23,43,0,0,1.6,10.7 -2020-08-19T11:00,89.2,19,41.7,0,0,1.5,10.5 -2020-08-19T12:00,92.3,16,39.6,0,0,1.6,14.8 -2020-08-19T13:00,93.5,14,37.5,0,0,3.2,13 -2020-08-19T14:00,93.1,14,37.7,0,0,12.8,23.5 -2020-08-19T15:00,91.4,14,36.1,0,0,7.1,25.1 -2020-08-19T16:00,88.4,20,42.8,0,0,17.7,32 -2020-08-19T17:00,87,19,39.1,0,0,11.8,31.3 -2020-08-19T18:00,85.5,21,41.4,0,0,2.1,20.1 -2020-08-19T19:00,82.7,21,38.9,0,0,6.8,11.4 -2020-08-19T20:00,79.4,26,41.4,0,0,4.9,11.6 -2020-08-19T21:00,78.2,32,45.9,0,0,3.7,7.8 -2020-08-19T22:00,73.5,38,46.3,0,0,2.9,4.3 -2020-08-19T23:00,72.8,40,47.2,0,0,4.2,7.6 -2020-08-20T00:00,70.3,48,49.9,0,0,5.1,7.6 -2020-08-20T01:00,69,53,51.1,0,0,2.9,9.2 -2020-08-20T02:00,67.7,54,50.4,0,0,1.4,3.6 -2020-08-20T03:00,64.4,53,47.1,0,0,2.7,5.4 -2020-08-20T04:00,62.2,52,44.3,0,0,2.1,5.1 -2020-08-20T05:00,60.9,60,47,0,0,2.2,3.6 -2020-08-20T06:00,62.3,58,47.6,0,0,2.3,3.6 -2020-08-20T07:00,67,51,48.5,0,0,2.1,7.2 -2020-08-20T08:00,71.8,44,48.5,0,0,4.1,11.6 -2020-08-20T09:00,79.2,31,45.8,0,0,3.1,11.6 -2020-08-20T10:00,86.6,22,42.7,0,0,7.5,16.8 -2020-08-20T11:00,90.6,19,42.8,0,0,7.9,21.5 -2020-08-20T12:00,91.1,19,43.1,0,0,8.1,20.8 -2020-08-20T13:00,91.9,18,41.8,0,0,6.7,19.5 -2020-08-20T14:00,90.8,18,41.2,0,0,13.3,27.7 -2020-08-20T15:00,90.1,17,39,0,0,10.6,25.7 -2020-08-20T16:00,89.2,18,40,0,0,9.1,21.9 -2020-08-20T17:00,85.5,23,43.9,0,0,6.5,18.3 -2020-08-20T18:00,84.3,25,44.2,0,0,5.8,13.9 -2020-08-20T19:00,78.6,31,45.8,0,0,4,10.5 -2020-08-20T20:00,79.1,31,45.7,0,0,5,8.5 -2020-08-20T21:00,76.4,37,48.2,0,0,12.3,19.9 -2020-08-20T22:00,75.1,38,48.1,0,0,11.5,20.4 -2020-08-20T23:00,73.7,41,48.7,0,0,3.3,19.2 -2020-08-21T00:00,71.4,44,48.5,0,0,5.9,9.8 -2020-08-21T01:00,68.9,47,47.9,0,0,5.9,10.1 -2020-08-21T02:00,67.5,49,47.8,0,0,6.5,10.7 -2020-08-21T03:00,66.6,50,47.1,0,0,5.2,10.7 -2020-08-21T04:00,65.4,49,46,0,0,4.5,8.9 -2020-08-21T05:00,63,51,44.4,0,0,4.3,7.4 -2020-08-21T06:00,65.6,48,45.1,0,0,2.9,6.9 -2020-08-21T07:00,72.5,36,43.8,0,0,2.1,6.9 -2020-08-21T08:00,79.5,27,42.4,0,0,2.2,8.3 -2020-08-21T09:00,84.9,20,40,0,0,3,10.5 -2020-08-21T10:00,88.3,17,38.7,0,0,5.8,14.5 -2020-08-21T11:00,90.2,16,37.5,0,0,6.6,17.2 -2020-08-21T12:00,91.6,15,36.7,0,0,5.9,17.2 -2020-08-21T13:00,93.3,13,35.2,0,0,5.8,16.6 -2020-08-21T14:00,94.1,12,34.3,0,0,7.8,18.1 -2020-08-21T15:00,93.8,12,33.4,0,0,7.9,18.8 -2020-08-21T16:00,93.4,12,32.3,0,0,6.5,17.4 -2020-08-21T17:00,90.8,16,39.2,0,0,5.9,14.8 -2020-08-21T18:00,88.9,18,40.2,0,0,5.9,14.3 -2020-08-21T19:00,86.8,19,40.3,0,0,1.4,9.8 -2020-08-21T20:00,78.9,27,41.9,0,0,5.2,6.7 -2020-08-21T21:00,76.7,28,41.5,0,0,5.6,8.3 -2020-08-21T22:00,73,34,42.7,0,0,4.2,10.3 -2020-08-21T23:00,69.8,39,43.7,0,0,4.5,6.9 -2020-08-22T00:00,67.7,42,43.6,0,0,4.7,6 -2020-08-22T01:00,67,40,41.8,0,0,4,6.3 -2020-08-22T02:00,66,37,38.8,0,0,4.9,8.1 -2020-08-22T03:00,64,34,35.2,0,0,4.7,8.1 -2020-08-22T04:00,61.8,34,33.4,0,0,5.5,6.9 -2020-08-22T05:00,63.4,30,31.6,0,0,3.8,7.4 -2020-08-22T06:00,64.7,28,30.9,0,0,4.3,7.2 -2020-08-22T07:00,72.3,22,31,0,0,3,7.8 -2020-08-22T08:00,81.7,16,31.6,0,0,2.2,8.1 -2020-08-22T09:00,89.5,11,28.9,0,0,1.4,8.5 -2020-08-22T10:00,93,9,26.1,0,0,5.6,13.9 -2020-08-22T11:00,94.8,8,25.4,0,0,7.5,17.4 -2020-08-22T12:00,96.1,8,25.7,0,0,8.8,19.7 -2020-08-22T13:00,97,8,26.2,0,0,9.2,21.3 -2020-08-22T14:00,97.6,7,23.8,0,0,10.5,21.5 -2020-08-22T15:00,97,7,21.6,0,0,9.8,21.9 -2020-08-22T16:00,96.3,6,20.4,0,0,9.7,20.1 -2020-08-22T17:00,93.9,8,22.5,0,0,7.1,19.2 -2020-08-22T18:00,90.6,11,29.3,0,0,3.5,13 -2020-08-22T19:00,87.4,10,24.5,0,0,2.3,6.9 -2020-08-22T20:00,80.6,16,29.9,0,0,3.8,5.1 -2020-08-22T21:00,75.1,18,29,0,0,4.1,6.3 -2020-08-22T22:00,72.1,21,30.4,0,0,3.8,6 -2020-08-22T23:00,70.3,23,31,0,0,3.4,5.6 -2020-08-23T00:00,67.5,28,33.5,0,0,4.2,6 -2020-08-23T01:00,65.8,32,34.8,0,0,5,6 -2020-08-23T02:00,68.4,28,33.6,0,0,2.5,6.3 -2020-08-23T03:00,63.9,33,34.3,0,0,4.3,4.9 -2020-08-23T04:00,61.8,35,33.8,0,0,4.3,5.8 -2020-08-23T05:00,61.3,38,35.4,0,0,5,5.4 -2020-08-23T06:00,63.1,37,36.1,0,0,3.6,7.4 -2020-08-23T07:00,70.2,28,35.8,0,0,3.9,9.4 -2020-08-23T08:00,77.6,21,34.8,0,0,2,8.7 -2020-08-23T09:00,85.1,14,31.3,0,0,2.8,10.3 -2020-08-23T10:00,91.1,11,29.8,0,0,3.8,11.9 -2020-08-23T11:00,94.7,10,29.8,0,0,4.2,13.2 -2020-08-23T12:00,96.7,9,28.9,0,0,4.8,14.1 -2020-08-23T13:00,97.2,9,28.5,0,0,5.9,15.2 -2020-08-23T14:00,97.3,9,28.7,0,0,7.4,17.2 -2020-08-23T15:00,96.9,9,28.4,0,0,6.8,17.2 -2020-08-23T16:00,96.3,9,28,0,0,6.3,15.9 -2020-08-23T17:00,92.8,12,32,0,0,13.8,13.9 -2020-08-23T18:00,90.6,12,30.8,0,0,4.8,22.8 -2020-08-23T19:00,86,16,35.2,0,0,8.1,13.6 -2020-08-23T20:00,79.7,22,37.7,0,0,4.5,13.4 -2020-08-23T21:00,77.3,26,39.7,0,0,5.4,7.2 -2020-08-23T22:00,74.8,28,39.4,0,0,5.2,8.7 -2020-08-23T23:00,71.6,30,38.4,0,0,4.1,8.5 -2020-08-24T00:00,69.4,34,39.9,0,0,5.1,8.7 -2020-08-24T01:00,68.1,36,39.9,0,0,5.7,9.4 -2020-08-24T02:00,67.4,33,37.2,0,0,4.1,10.3 -2020-08-24T03:00,66.7,36,39.1,0,0,4,6.5 -2020-08-24T04:00,64.4,41,40.4,0,0,3.8,6.7 -2020-08-24T05:00,65.8,38,39.1,0,0,4,5.1 -2020-08-24T06:00,66.5,35,37.9,0,0,4.6,7.8 -2020-08-24T07:00,73,28,38.2,0,0,3.6,8.9 -2020-08-24T08:00,81.9,21,38,0,0,2.3,8.5 -2020-08-24T09:00,87.1,16,35.9,0,0,0.9,8.5 -2020-08-24T10:00,90.4,14,35.4,0,0,4,12.3 -2020-08-24T11:00,93.4,13,34.9,0,0,6,15.4 -2020-08-24T12:00,95.5,12,34.7,0,0,5.7,16.3 -2020-08-24T13:00,96.4,11,33.9,0,0,5.9,15.7 -2020-08-24T14:00,97.3,11,33.5,0,0,7.1,16.3 -2020-08-24T15:00,94.2,13,36.8,0,0,11.8,23.3 -2020-08-24T16:00,93.7,13,35.3,0,0,8.4,23.3 -2020-08-24T17:00,90.7,16,37.8,0,0,18.3,16.8 -2020-08-24T18:00,88.5,19,40.6,0,0,13.6,31.1 -2020-08-24T19:00,83.8,24,43.2,0,0,10.3,22.8 -2020-08-24T20:00,81.6,26,43.3,0,0,7.1,17.2 -2020-08-24T21:00,79.2,28,43.6,0,0,4,11.9 -2020-08-24T22:00,76.4,32,44.6,0,0,6,10.3 -2020-08-24T23:00,73.3,36,44.7,0,0,6.4,11.2 -2020-08-25T00:00,71.6,37,44.2,0,0,4.8,10.7 -2020-08-25T01:00,69.4,40,43.9,0,0,3.6,8.3 -2020-08-25T02:00,69.7,38,43.1,0,0,5.3,8.9 -2020-08-25T03:00,68.6,39,42.6,0,0,4.5,9.2 -2020-08-25T04:00,67.4,40,41.9,0,0,4.3,7.6 -2020-08-25T05:00,66.5,40,41.5,0,0,5.4,6.7 -2020-08-25T06:00,68.8,38,42.4,0,0,3.8,6.9 -2020-08-25T07:00,74.6,30,41,0,0,3.1,7.4 -2020-08-25T08:00,81.7,24,41.3,0,0,1.9,7.8 -2020-08-25T09:00,87.9,18,39.4,0,0,2.5,9.4 -2020-08-25T10:00,91,16,38.5,0,0,3.8,11.9 -2020-08-25T11:00,94.5,14,37.5,0,0,3.9,13.6 -2020-08-25T12:00,95.6,13,37.4,0,0,3.3,13.4 -2020-08-25T13:00,95.8,13,37.6,0,0,3.1,12.1 -2020-08-25T14:00,96,13,37.5,0,0,4.9,13.2 -2020-08-25T15:00,96.1,13,37.4,0,0,5.6,15.4 -2020-08-25T16:00,93.2,17,41.2,0,0,15.6,25.7 -2020-08-25T17:00,90.7,18,41.3,0,0,4.5,31.5 -2020-08-25T18:00,86.8,25,46.4,0,0,13.2,21.7 -2020-08-25T19:00,81.8,31,47.9,0,0,14.2,27.5 -2020-08-25T20:00,80.9,32,48.1,0,0,7.9,23.3 -2020-08-25T21:00,78.1,36,48.8,0,0,5.8,13.2 -2020-08-25T22:00,75.6,40,49.7,0,0,6.1,10.5 -2020-08-25T23:00,73.4,44,50.2,0,0,4.9,10.3 -2020-08-26T00:00,70.8,48,50.2,0,0,3.6,8.1 -2020-08-26T01:00,69.5,47,48.6,0,0,3.9,6.3 -2020-08-26T02:00,69.1,45,47.1,0,0,4.3,7.4 -2020-08-26T03:00,67.9,47,46.7,0,0,3.7,7.2 -2020-08-26T04:00,66.9,46,45.7,0,0,3.8,5.8 -2020-08-26T05:00,72.9,35,43.3,0,0,4.4,6.5 -2020-08-26T06:00,73.3,33,42.8,0,0,1.6,5.6 -2020-08-26T07:00,75.3,32,43.5,0,0,2,6 -2020-08-26T08:00,78.9,29,43.6,0,0,2.8,9.6 -2020-08-26T09:00,84,24,43.3,0,0,1.4,9.2 -2020-08-26T10:00,87.9,21,42.6,0,0,6.9,15.9 -2020-08-26T11:00,88.7,21,43.3,0,0,10.1,21.7 -2020-08-26T12:00,88.7,20,42.6,0,0,3.8,21 -2020-08-26T13:00,91.6,18,41.7,0,0,3.5,13.2 -2020-08-26T14:00,92.8,17,41.7,0,0,5.4,14.5 -2020-08-26T15:00,92.5,18,42.2,0,0,6.7,15.2 -2020-08-26T16:00,90.5,19,42.4,0,0,10.8,19.7 -2020-08-26T17:00,80.5,35,50.5,0,0,6.6,21 -2020-08-26T18:00,76.3,50,56.2,0.028,0,6.3,11.6 -2020-08-26T19:00,70.6,75,62.2,0.035,0,11.7,18.8 -2020-08-26T20:00,69.9,72,60.3,0.008,0,15,24.6 -2020-08-26T21:00,69.7,67,58.4,0.004,0,11.6,24.6 -2020-08-26T22:00,69.6,66,57.7,0,0,5.9,18.6 -2020-08-26T23:00,70,57,54.2,0,0,4.6,9.2 -2020-08-27T00:00,69.4,55,52.3,0,0,5.8,9.8 -2020-08-27T01:00,67.3,57,51.6,0,0,5.9,9.8 -2020-08-27T02:00,66.2,59,51.4,0,0,5,9.8 -2020-08-27T03:00,64.3,64,51.9,0,0,3.9,8.3 -2020-08-27T04:00,63.2,64,51,0,0,3.5,6.5 -2020-08-27T05:00,61.9,74,53.6,0,0,3.9,5.6 -2020-08-27T06:00,64.1,58,48.8,0,0,4.1,6 -2020-08-27T07:00,70.4,41,45.6,0,0,2.4,8.7 -2020-08-27T08:00,77.1,31,44.3,0,0,3.5,9.8 -2020-08-27T09:00,82,26,43.9,0,0,4.1,12.3 -2020-08-27T10:00,86.1,22,43.3,0,0,4.4,13.4 -2020-08-27T11:00,89.7,19,41.6,0,0,3.8,13.4 -2020-08-27T12:00,92.4,16,39.6,0,0,5.6,15.4 -2020-08-27T13:00,94.3,14,38.1,0,0,6.9,17 -2020-08-27T14:00,94.6,13,36.3,0,0,6.8,17.4 -2020-08-27T15:00,94.5,12,34.8,0,0,6,16.8 -2020-08-27T16:00,94,13,34.8,0,0,6.3,14.8 -2020-08-27T17:00,88.4,20,42.7,0,0,15.4,14.8 -2020-08-27T18:00,85.6,24,44.7,0,0,10,26.6 -2020-08-27T19:00,82.1,26,44,0,0,6.7,16.6 -2020-08-27T20:00,79.3,29,44.1,0,0,6.1,11.9 -2020-08-27T21:00,76.1,34,45.9,0,0,4,10.3 -2020-08-27T22:00,73.2,39,46.6,0,0,3.4,6.7 -2020-08-27T23:00,71.2,42,47.1,0,0,3.7,5.8 -2020-08-28T00:00,69.8,44,46.7,0,0,5.5,9.4 -2020-08-28T01:00,68.3,45,46.1,0,0,4.4,9.4 -2020-08-28T02:00,67.2,45,45,0,0,4.3,7.6 -2020-08-28T03:00,65.8,44,43.5,0,0,3.7,7.2 -2020-08-28T04:00,64.5,45,42.8,0,0,4.6,5.8 -2020-08-28T05:00,65.4,53,47.7,0,0,8.8,17.9 -2020-08-28T06:00,65.5,56,49.4,0,0,5,14.5 -2020-08-28T07:00,68.9,49,49.2,0,0,5,9.8 -2020-08-28T08:00,71.8,46,50.1,0,0,10.8,20.6 -2020-08-28T09:00,74.1,43,50.2,0,0,9.9,21 -2020-08-28T10:00,76.7,38,49.6,0,0,9.5,20.6 -2020-08-28T11:00,78.4,36,49,0,0,9,20.4 -2020-08-28T12:00,79.9,33,48.3,0,0,9.6,21 -2020-08-28T13:00,80.6,30,46.6,0,0,7.9,21.3 -2020-08-28T14:00,81.1,29,45.6,0,0,6.5,18.1 -2020-08-28T15:00,80.4,29,45.1,0,0,4.5,15.9 -2020-08-28T16:00,78.4,33,46.5,0.004,0,4.6,12.3 -2020-08-28T17:00,67.3,78,60.1,0.008,0,5.4,14.5 -2020-08-28T18:00,65.9,82,60.2,0.067,0,4.5,9.4 -2020-08-28T19:00,64.6,88,61.1,0.067,0,7.7,11.9 -2020-08-28T20:00,64,89,60.8,0.02,0,8.5,15.4 -2020-08-28T21:00,63.2,89,59.9,0,0,7.4,13.6 -2020-08-28T22:00,62.6,87,58.7,0,0,7.4,12.3 -2020-08-28T23:00,63.1,83,57.8,0,0,3.9,12.1 -2020-08-29T00:00,62.6,81,56.8,0,0,3.6,6.7 -2020-08-29T01:00,60.3,93,58.2,0,0,3.8,6 -2020-08-29T02:00,60,96,58.9,0,0,4.9,8.7 -2020-08-29T03:00,58.5,98,57.8,0,0,3.9,8.3 -2020-08-29T04:00,58.8,99,58.5,0,0,1.9,5.1 -2020-08-29T05:00,61.5,89,58.4,0,0,1.5,6 -2020-08-29T06:00,61.6,87,57.8,0,0,0.9,4.5 -2020-08-29T07:00,62.6,87,58.6,0,0,1.8,5.8 -2020-08-29T08:00,64.4,79,57.7,0,0,0.9,6.5 -2020-08-29T09:00,67.1,67,55.9,0,0,1.6,8.7 -2020-08-29T10:00,70.3,56,54,0,0,2.1,9.4 -2020-08-29T11:00,71.9,49,51.9,0,0,3.5,10.7 -2020-08-29T12:00,74.8,41,49.7,0,0,2.7,10.7 -2020-08-29T13:00,80.3,32,47.8,0,0,3.2,10.7 -2020-08-29T14:00,79.7,30,46,0,0,1.8,14.8 -2020-08-29T15:00,80.9,26,43.3,0,0,6,12.8 -2020-08-29T16:00,81.7,26,43,0,0,7.2,16.8 -2020-08-29T17:00,77.4,31,44.1,0,0,9.2,15.9 -2020-08-29T18:00,74.1,36,45.4,0,0,7.5,16.8 -2020-08-29T19:00,67.5,47,46.4,0,0,5.5,12.1 -2020-08-29T20:00,69.2,46,47.8,0,0,11.2,15.7 -2020-08-29T21:00,64.7,62,51.5,0,0,3.8,19.2 -2020-08-29T22:00,65.2,62,52.1,0,0,3,5.4 -2020-08-29T23:00,61.5,69,51.3,0,0,3.8,6 -2020-08-30T00:00,59.6,71,50.2,0,0,4,6.5 -2020-08-30T01:00,58.7,71,49.2,0,0,3.7,6.3 -2020-08-30T02:00,59,67,48,0,0,4.6,7.4 -2020-08-30T03:00,59.5,58,44.5,0,0,5.2,8.1 -2020-08-30T04:00,60.6,49,41.5,0,0,5.3,9.8 -2020-08-30T05:00,60.6,45,39,0,0,5.9,8.7 -2020-08-30T06:00,59.6,48,39.7,0,0,4.5,9.6 -2020-08-30T07:00,65.4,41,41,0,0,1.8,7.6 -2020-08-30T08:00,74.4,30,40.6,0,0,3.8,9.8 -2020-08-30T09:00,80.5,20,35.8,0,0,1.2,11 -2020-08-30T10:00,82.4,19,35.6,0,0,1,10.1 -2020-08-30T11:00,85.5,17,35.2,0,0,2.1,14.8 -2020-08-30T12:00,89.5,11,28.8,0,0,9.9,20.1 -2020-08-30T13:00,88.3,12,30.2,0,0,13.1,27.3 -2020-08-30T14:00,88.4,13,31,0,0,7.7,25.9 -2020-08-30T15:00,88.9,13,30.9,0,0,6.2,18.3 -2020-08-30T16:00,88.7,12,29.7,0,0,8.5,17.7 -2020-08-30T17:00,83.5,17,34.8,0,0,13.1,21.5 -2020-08-30T18:00,81.8,20,36.7,0,0,7.6,22.8 -2020-08-30T19:00,74.2,28,39.2,0,0,3.8,13 -2020-08-30T20:00,70.9,35,42,0,0,6.4,9.8 -2020-08-30T21:00,67.9,41,43.5,0,0,6.3,11.2 -2020-08-30T22:00,67.4,38,40.6,0,0,21,31.5 -2020-08-30T23:00,64.5,35,35.9,0,0,14.8,35.3 -2020-08-31T00:00,61.9,38,36,0,0,12.6,24.8 -2020-08-31T01:00,58.4,43,36.2,0,0,11.9,23.3 -2020-08-31T02:00,56.3,48,36.7,0,0,9,19.9 -2020-08-31T03:00,54.5,51,36.9,0,0,5.6,15 -2020-08-31T04:00,52.4,56,37.4,0,0,3.4,9.4 -2020-08-31T05:00,51.6,63,39.3,0,0,2.1,4.5 -2020-08-31T06:00,52.1,62,39.7,0,0,2,4.3 -2020-08-31T07:00,54.6,55,38.7,0,0,6.1,12.1 -2020-08-31T08:00,58.1,48,38.8,0,0,5.6,14.3 -2020-08-31T09:00,63.1,41,38.8,0,0,4.9,14.1 -2020-08-31T10:00,67.7,35,39.1,0,0,0.6,14.1 -2020-08-31T11:00,73,30,39.4,0,0,4.1,13.4 -2020-08-31T12:00,77.3,26,39.4,0,0,6,17.2 -2020-08-31T13:00,79.8,24,39.8,0,0,3.3,17.9 -2020-08-31T14:00,81.5,23,39.7,0,0,4,16.1 -2020-08-31T15:00,81.2,23,40.2,0,0,3.1,13.2 -2020-08-31T16:00,79.1,27,42.2,0,0,4.3,18.6 -2020-08-31T17:00,76.1,26,38.6,0,0,7.6,11.4 -2020-08-31T18:00,74.1,29,39.8,0,0,8.8,14.5 -2020-08-31T19:00,69.3,40,43.8,0,0,6.9,16.6 -2020-08-31T20:00,67.1,42,43.3,0,0,6.5,11.2 -2020-08-31T21:00,60.8,64,48.6,0.031,0,15,30 -2020-08-31T22:00,60.2,66,48.9,0.008,0,8.3,23.9 -2020-08-31T23:00,59.2,70,49.4,0,0,1,13.2 -2020-09-01T00:00,58.6,77,51.4,0.004,0,5.4,7.8 -2020-09-01T01:00,57.8,76,50.5,0,0,5.2,10.1 -2020-09-01T02:00,56,80,50.1,0,0,4.1,8.5 -2020-09-01T03:00,57,77,49.9,0,0,2.3,7.6 -2020-09-01T04:00,56.9,76,49.5,0,0,2.1,3.8 -2020-09-01T05:00,54.7,87,50.9,0,0,3.7,4.7 -2020-09-01T06:00,55.9,79,49.5,0,0,1.9,4.9 -2020-09-01T07:00,58.2,69,47.9,0,0,2.2,6.7 -2020-09-01T08:00,61.2,57,45.8,0,0,3.4,10.1 -2020-09-01T09:00,65.6,45,43.8,0,0,6.9,15.7 -2020-09-01T10:00,71,36,42.9,0,0,7.9,18.6 -2020-09-01T11:00,74.8,30,41.3,0,0,4.2,18.6 -2020-09-01T12:00,77.7,25,39.3,0,0,3.1,14.3 -2020-09-01T13:00,80,22,37.4,0,0,6.2,16.3 -2020-09-01T14:00,81.2,18,33.4,0,0,8.5,19.7 -2020-09-01T15:00,81.8,18,33.7,0,0,6,19.5 -2020-09-01T16:00,81.7,18,34.7,0,0,7.6,16.1 -2020-09-01T17:00,79.6,20,34.6,0,0,6.2,18.3 -2020-09-01T18:00,77.1,22,35.7,0,0,5.7,13 -2020-09-01T19:00,72.1,28,37.2,0,0,4.4,9.2 -2020-09-01T20:00,72.4,27,36.9,0,0,1.8,5.4 -2020-09-01T21:00,65.4,38,39.4,0,0,3.3,5.1 -2020-09-01T22:00,62.4,46,41.5,0,0,4.1,6.5 -2020-09-01T23:00,60.9,45,39.6,0,0,4.8,8.3 -2020-09-02T00:00,59.5,42,36.6,0,0,3.6,8.3 -2020-09-02T01:00,58.5,42,35.5,0,0,4.3,6.9 -2020-09-02T02:00,57.1,42,34.3,0,0,3.8,6.9 -2020-09-02T03:00,55.9,46,35.5,0,0,3.8,6.7 -2020-09-02T04:00,54.8,48,35.2,0,0,4.5,6.5 -2020-09-02T05:00,55.9,38,30.9,0,0,4,5.6 -2020-09-02T06:00,54.9,40,31.1,0,0,3.1,5.8 -2020-09-02T07:00,60.5,32,30.8,0,0,2.4,7.2 -2020-09-02T08:00,65.2,29,32.2,0,0,1.3,7.4 -2020-09-02T09:00,70.2,25,32.4,0,0,2.8,10.7 -2020-09-02T10:00,76.2,19,31.3,0,0,3.4,12.1 -2020-09-02T11:00,81.5,16,31.7,0,0,4.3,13.6 -2020-09-02T12:00,85.2,14,31.1,0,0,4.1,14.1 -2020-09-02T13:00,87.8,13,30.7,0,0,4.3,14.1 -2020-09-02T14:00,89.2,12,29.8,0,0,5.1,14.5 -2020-09-02T15:00,89.6,11,29.2,0,0,5.6,14.8 -2020-09-02T16:00,89.5,11,28.6,0,0,5,14.5 -2020-09-02T17:00,89,12,28.9,0,0,4.4,12.3 -2020-09-02T18:00,83.9,17,34.2,0,0,4,9.2 -2020-09-02T19:00,77.4,19,32,0,0,5,5.6 -2020-09-02T20:00,74.8,23,34.5,0,0,6.2,9.6 -2020-09-02T21:00,71.2,27,35.4,0,0,7.8,13.9 -2020-09-02T22:00,68.5,28,34,0,0,5.5,12.8 -2020-09-02T23:00,66.9,25,30.2,0,0,5.3,8.9 -2020-09-03T00:00,67.1,22,27.2,0,0,6.4,9.8 -2020-09-03T01:00,65.8,23,27.2,0,0,6.3,9.8 -2020-09-03T02:00,63.3,26,28,0,0,8.3,10.3 -2020-09-03T03:00,65.1,25,28.2,0,0,6.3,9.6 -2020-09-03T04:00,63.3,34,34.3,0,0,13.1,23.9 -2020-09-03T05:00,56,51,38.4,0,0,5.4,21.7 -2020-09-03T06:00,55.9,54,39.6,0,0,4.3,8.9 -2020-09-03T07:00,60.4,45,38.9,0,0,1.8,7.8 -2020-09-03T08:00,63.3,39,37.8,0,0,3,9.4 -2020-09-03T09:00,66.9,34,37.6,0,0,6.1,15 -2020-09-03T10:00,71.6,28,36.6,0,0,7,17.2 -2020-09-03T11:00,76.6,22,35.2,0,0,6.5,17.4 -2020-09-03T12:00,81.2,18,33.9,0,0,6.5,17 -2020-09-03T13:00,85.2,15,32.9,0,0,6.5,17 -2020-09-03T14:00,87.5,14,32.8,0,0,6.4,16.8 -2020-09-03T15:00,88.6,14,34,0,0,5.5,16.1 -2020-09-03T16:00,88.6,15,34.4,0,0,5,14.3 -2020-09-03T17:00,86.4,14,31.9,0,0,4.3,12.3 -2020-09-03T18:00,82.2,17,33.4,0,0,6.8,11.9 -2020-09-03T19:00,76.9,22,35.1,0,0,6.8,12.1 -2020-09-03T20:00,72,27,36.3,0,0,6.3,11.4 -2020-09-03T21:00,67.7,33,37.6,0,0,2.7,7.6 -2020-09-03T22:00,65.9,37,38.9,0,0,4.1,6 -2020-09-03T23:00,63.2,42,39.7,0,0,4.2,6.7 -2020-09-04T00:00,61.2,47,40.8,0,0,4.5,5.8 -2020-09-04T01:00,62.4,45,40.9,0,0,0.5,5.6 -2020-09-04T02:00,59.5,50,40.9,0,0,4.9,6.7 -2020-09-04T03:00,58.2,50,39.4,0,0,3.6,6.5 -2020-09-04T04:00,56.9,48,37.4,0,0,3.5,5.1 -2020-09-04T05:00,54.7,57,39.6,0,0,2.9,5.6 -2020-09-04T06:00,54.5,58,40.2,0,0,3.3,4.9 -2020-09-04T07:00,62,44,39.6,0,0,3.7,8.7 -2020-09-04T08:00,70.4,30,37.2,0,0,2.9,9.4 -2020-09-04T09:00,77.5,23,36.4,0,0,1,9.4 -2020-09-04T10:00,82.7,19,36,0,0,5.4,13.9 -2020-09-04T11:00,86,17,35.8,0,0,8.1,18.3 -2020-09-04T12:00,88.3,15,34.5,0,0,8.2,19.5 -2020-09-04T13:00,89.9,13,33.3,0,0,6.5,19 -2020-09-04T14:00,90.6,13,32.9,0,0,6.7,16.6 -2020-09-04T15:00,90.6,13,32.7,0,0,7.6,16.8 -2020-09-04T16:00,90,13,32.6,0,0,7.3,17 -2020-09-04T17:00,87.3,14,31.9,0,0,9.9,16.3 -2020-09-04T18:00,83.8,16,32.7,0,0,4.8,17.2 -2020-09-04T19:00,78.5,20,34.1,0,0,4.6,7.8 -2020-09-04T20:00,76.7,22,34.6,0,0,3,5.6 -2020-09-04T21:00,71.5,27,35.8,0,0,4.5,5.6 -2020-09-04T22:00,67.6,33,37.5,0,0,5.1,6 -2020-09-04T23:00,67.8,33,37.6,0,0,5.1,8.3 -2020-09-05T00:00,65,37,38,0,0,5.2,8.3 -2020-09-05T01:00,63.1,40,38.5,0,0,5.4,7.2 -2020-09-05T02:00,60.4,45,38.8,0,0,3,7.2 -2020-09-05T03:00,58.8,48,39.4,0,0,4.9,7.6 -2020-09-05T04:00,58.4,50,39.6,0,0,4,7.6 -2020-09-05T05:00,57.9,50,39.5,0,0,3.4,6.3 -2020-09-05T06:00,58,49,39,0,0,3.1,5.8 -2020-09-05T07:00,64.1,39,38.9,0,0,3.6,8.5 -2020-09-05T08:00,73.5,29,39.1,0,0,3.3,9.6 -2020-09-05T09:00,82.8,19,36.4,0,0,3.9,11.4 -2020-09-05T10:00,89.7,14,34.5,0,0,6.1,14.5 -2020-09-05T11:00,94.3,11,30.8,0,0,5.4,15.7 -2020-09-05T12:00,96.4,9,27.9,0,0,3.3,14.8 -2020-09-05T13:00,97.4,8,27.1,0,0,3.4,12.1 -2020-09-05T14:00,98.3,8,25.7,0,0,5.2,13.9 -2020-09-05T15:00,98.5,7,24.8,0,0,6.5,15.2 -2020-09-05T16:00,97.4,7,24.4,0,0,2.3,15 -2020-09-05T17:00,95,10,30.1,0,0,11.2,16.6 -2020-09-05T18:00,89.2,12,30.3,0,0,7.9,19 -2020-09-05T19:00,82.2,15,30.4,0,0,5.8,13 -2020-09-05T20:00,77.3,19,32.4,0,0,5.2,9.2 -2020-09-05T21:00,73,24,34,0,0,4.9,7.2 -2020-09-05T22:00,71.3,24,32.5,0,0,6.3,7.8 -2020-09-05T23:00,68.8,24,30.4,0,0,6.2,7.8 -2020-09-06T00:00,68.8,23,29.8,0,0,6.2,9.8 -2020-09-06T01:00,69.1,22,28.4,0,0,7.9,13 -2020-09-06T02:00,67.5,22,27.1,0,0,7.6,13 -2020-09-06T03:00,65,25,28,0,0,7.9,13.2 -2020-09-06T04:00,65.8,23,26.5,0,0,10.2,16.6 -2020-09-06T05:00,67.8,21,26.2,0,0,10.5,17.4 -2020-09-06T06:00,68.9,20,26.1,0,0,11.2,18.3 -2020-09-06T07:00,76.1,16,27,0,0,13,20.8 -2020-09-06T08:00,85.1,13,28.1,0,0,13.7,23.5 -2020-09-06T09:00,91.7,9,25.3,0,0,13.2,25.1 -2020-09-06T10:00,94.4,8,23.7,0,0,11.3,24.6 -2020-09-06T11:00,96.1,7,21.9,0,0,12,23.9 -2020-09-06T12:00,96.8,7,23.3,0,0,12.1,24.2 -2020-09-06T13:00,96.7,7,24.2,0,0,10.7,24.4 -2020-09-06T14:00,96.8,6,20.8,0,0,7.7,21.9 -2020-09-06T15:00,96.7,7,20.8,0,0,7.6,16.6 -2020-09-06T16:00,94.3,7,22.3,0,0,8.1,15.4 -2020-09-06T17:00,92.8,7,20.4,0,0,6.4,15.7 -2020-09-06T18:00,90.6,8,22.2,0,0,2.1,10.5 -2020-09-06T19:00,79.9,13,24.4,0,0,4.6,6.3 -2020-09-06T20:00,75.4,16,26.5,0,0,4,6.7 -2020-09-06T21:00,73.7,18,27.8,0,0,7.6,13 -2020-09-06T22:00,72,22,30.5,0,0,5.2,12.3 -2020-09-06T23:00,71,22,29.9,0,0,5.4,9.2 -2020-09-07T00:00,65.6,29,32.7,0,0,6.8,8.9 -2020-09-07T01:00,63.9,32,33.5,0,0,5.1,8.3 -2020-09-07T02:00,61.7,34,33,0,0,3,6.5 -2020-09-07T03:00,61.6,34,32.6,0,0,4.7,7.2 -2020-09-07T04:00,59.8,35,32.3,0,0,5.7,7.8 -2020-09-07T05:00,57.8,39,33,0,0,2.6,6.9 -2020-09-07T06:00,56.4,43,34.2,0,0,2.8,4.7 -2020-09-07T07:00,62.8,35,34.5,0,0,3.4,8.1 -2020-09-07T08:00,70.6,25,32.8,0,0,6,13.2 -2020-09-07T09:00,81,15,28.9,0,0,8.3,16.8 -2020-09-07T10:00,88.5,8,19.7,0,0,6.5,17.9 -2020-09-07T11:00,90.8,7,18.3,0,0,5.7,15.7 -2020-09-07T12:00,92.6,5,11.8,0,0,7.5,18.1 -2020-09-07T13:00,94,5,11.6,0,0,8.1,18.8 -2020-09-07T14:00,94.8,5,13.2,0,0,8.6,18.8 -2020-09-07T15:00,94.7,6,15.7,0,0,9.2,19.7 -2020-09-07T16:00,94.4,6,15.5,0,0,4.8,19.2 -2020-09-07T17:00,76.6,18,30.4,0,0,23,11.6 -2020-09-07T18:00,73.9,26,36.8,0,0,18.2,38 -2020-09-07T19:00,68.5,44,45.7,0,0,23.9,39.6 -2020-09-07T20:00,64,56,47.8,0,0,17.5,40 -2020-09-07T21:00,60.8,72,51.6,0.039,0,17.4,29.3 -2020-09-07T22:00,50.8,76,43.4,0.039,0,17.9,35.3 -2020-09-07T23:00,49.5,74,41.6,0.024,0,16.4,30.2 -2020-09-08T00:00,47,88,43.8,0.028,0,14.9,27.3 -2020-09-08T01:00,46.5,93,44.6,0.043,0,14.5,26.4 -2020-09-08T02:00,45.4,92,43.2,0.024,0,12.7,24.6 -2020-09-08T03:00,44.2,85,40,0.012,0,11.4,22.1 -2020-09-08T04:00,43.3,92,41,0.016,0,12,20.4 -2020-09-08T05:00,37.5,100,37.5,0.039,0,13.2,21.3 -2020-09-08T06:00,35.3,98,34.9,0.031,0.11,15.4,24.6 -2020-09-08T07:00,35.9,100,35.9,0.016,0.22,12.5,25.7 -2020-09-08T08:00,35.9,100,35.9,0.02,0.165,12.4,22.6 -2020-09-08T09:00,35.2,100,35.2,0.016,0.138,14.3,23.3 -2020-09-08T10:00,35.1,94,33.5,0.008,0.138,12.8,23.7 -2020-09-08T11:00,35.4,87,31.9,0.008,0.11,12.7,22.6 -2020-09-08T12:00,36.5,78,30.4,0.004,0.083,12.6,23.3 -2020-09-08T13:00,36.5,74,29,0.004,0.083,12.9,23 -2020-09-08T14:00,36.9,73,29.1,0,0.083,12.2,23.9 -2020-09-08T15:00,36.5,73,28.7,0,0.138,11.3,21.9 -2020-09-08T16:00,35.4,79,29.7,0,0.579,10.3,20.4 -2020-09-08T17:00,34.5,88,31.4,0,0.303,9.5,20.1 -2020-09-08T18:00,34.5,87,31,0,0.331,9.1,18.1 -2020-09-08T19:00,33.2,90,30.7,0,0.248,6,16.3 -2020-09-08T20:00,32.8,90,30.2,0,0.303,6.5,11.2 -2020-09-08T21:00,32.6,92,30.6,0,0.386,3.8,11.6 -2020-09-08T22:00,32.4,92,30.4,0,0.22,2.9,7.2 -2020-09-08T23:00,31.6,93,29.8,0,0.083,2.6,5.4 -2020-09-09T00:00,31.1,92,29.1,0,0.028,2.9,4.5 -2020-09-09T01:00,32,90,29.4,0,0.028,3.2,5.4 -2020-09-09T02:00,32.1,88,29,0,0.028,4.3,7.6 -2020-09-09T03:00,31.5,90,28.8,0,0.028,2.9,7.6 -2020-09-09T04:00,31.6,90,28.9,0,0.055,3.3,6.3 -2020-09-09T05:00,31.4,91,28.9,0,0.11,5.4,6.9 -2020-09-09T06:00,31.1,90,28.5,0,0.055,3.7,8.9 -2020-09-09T07:00,31.6,89,28.7,0,0.055,3.4,6.5 -2020-09-09T08:00,32.2,86,28.5,0,0.055,5.1,8.5 -2020-09-09T09:00,32.8,83,28.1,0,0.055,4.9,8.9 -2020-09-09T10:00,33.8,80,28.2,0,0.028,4.3,9.4 -2020-09-09T11:00,35.2,75,28.2,0,0,3.6,8.3 -2020-09-09T12:00,36.1,75,28.9,0,0,2.2,6.9 -2020-09-09T13:00,37.3,71,28.8,0,0,2.5,5.8 -2020-09-09T14:00,37.7,71,29,0,0,2.8,6.5 -2020-09-09T15:00,37.7,70,28.8,0,0,3.5,7.6 -2020-09-09T16:00,37.4,70,28.5,0,0,4.8,9.8 -2020-09-09T17:00,37.9,72,29.7,0,0,5.3,11.2 -2020-09-09T18:00,34,81,28.7,0,0,4,9.6 -2020-09-09T19:00,37.1,69,27.8,0,0,3.5,6.7 -2020-09-09T20:00,33.3,75,26.2,0,0,4.5,6.3 -2020-09-09T21:00,27.6,85,23.8,0,0,6.7,9.2 -2020-09-09T22:00,33.2,82,28.2,0,0,5.1,9.2 -2020-09-09T23:00,33.2,83,28.6,0,0,4.1,7.2 -2020-09-10T00:00,30.9,87,27.4,0,0,2,4.9 -2020-09-10T01:00,26.8,90,24.2,0,0,3.6,5.6 -2020-09-10T02:00,29.8,89,27,0,0,3.5,5.8 -2020-09-10T03:00,30.7,87,27.1,0,0.055,3.4,6.3 -2020-09-10T04:00,31.4,91,29,0,0.193,2.1,6 -2020-09-10T05:00,34.4,91,32.1,0,0.028,2.2,4 -2020-09-10T06:00,35.2,89,32.2,0,0,2.9,4.9 -2020-09-10T07:00,34,93,32.3,0,0,2.8,4.5 -2020-09-10T08:00,37.5,85,33.4,0,0,1.2,4.5 -2020-09-10T09:00,37.1,89,34.1,0,0,2.9,4.9 -2020-09-10T10:00,40.1,79,34.3,0,0,2.8,5.4 -2020-09-10T11:00,44.6,66,33.8,0,0,1.6,4.5 -2020-09-10T12:00,48.4,59,34.7,0,0,0.9,3.4 -2020-09-10T13:00,49.8,58,35.6,0,0,4.9,14.1 -2020-09-10T14:00,51.7,56,36.6,0,0,4.5,14.8 -2020-09-10T15:00,52.3,55,36.8,0,0,7.4,16.6 -2020-09-10T16:00,51.7,55,35.9,0,0,8.4,17.2 -2020-09-10T17:00,48,67,37.4,0,0,12.4,17 -2020-09-10T18:00,46.6,68,36.5,0,0,10.6,21.3 -2020-09-10T19:00,47.7,66,36.7,0,0,5.6,17.2 -2020-09-10T20:00,48.1,64,36.5,0,0,4.2,9.6 -2020-09-10T21:00,46.9,68,37,0,0,1.9,7.4 -2020-09-10T22:00,44.6,81,39,0,0,2.6,4 -2020-09-10T23:00,43.4,82,38.4,0,0,2.5,4.3 -2020-09-11T00:00,40.6,92,38.4,0,0,3.9,6.3 -2020-09-11T01:00,38,96,37,0,0,3.8,6.5 -2020-09-11T02:00,37.3,94,35.9,0,0,3.5,6.3 -2020-09-11T03:00,37.1,93,35.3,0,0,3.3,5.8 -2020-09-11T04:00,35.4,96,34.3,0,0,2.8,5.6 -2020-09-11T05:00,34,96,32.9,0,0,4.6,4.7 -2020-09-11T06:00,36.1,89,33,0,0,4.5,7.2 -2020-09-11T07:00,39.6,79,33.7,0,0,1.4,7.6 -2020-09-11T08:00,43.5,70,34.4,0,0,1.6,7.8 -2020-09-11T09:00,48,62,35.8,0,0,4.3,12.5 -2020-09-11T10:00,53.2,53,36.7,0,0,4,13 -2020-09-11T11:00,56.7,50,38,0,0,4.6,13.9 -2020-09-11T12:00,60.1,43,37.5,0,0,3,13.6 -2020-09-11T13:00,61.3,38,35.7,0,0,1.8,11.6 -2020-09-11T14:00,63.2,37,36.7,0,0,1.8,10.1 -2020-09-11T15:00,66.2,34,36.7,0,0,7.2,14.8 -2020-09-11T16:00,67.6,30,35.2,0,0,5.2,15.9 -2020-09-11T17:00,62.7,43,40.1,0,0,2.9,11.2 -2020-09-11T18:00,56.5,60,42.8,0,0,4.4,8.3 -2020-09-11T19:00,51.4,74,43.4,0,0,2.9,6 -2020-09-11T20:00,49.6,75,42,0,0,5.1,8.1 -2020-09-11T21:00,48,69,38.2,0,0,5.7,10.1 -2020-09-11T22:00,46,68,36,0,0,5.9,9.6 -2020-09-11T23:00,46.5,61,33.9,0,0,5.2,9.8 -2020-09-12T00:00,46.8,60,33.6,0,0,3.8,8.3 -2020-09-12T01:00,47.6,58,33.7,0,0,5.6,8.7 -2020-09-12T02:00,46.8,60,33.4,0,0,6.2,10.7 -2020-09-12T03:00,43.9,67,33.7,0,0,4.1,9.8 -2020-09-12T04:00,43.3,69,34,0,0,4.3,6.7 -2020-09-12T05:00,41.9,75,34.7,0,0,4.3,7.8 -2020-09-12T06:00,44,70,34.7,0,0,4.3,6.5 -2020-09-12T07:00,49.9,59,36.2,0,0,6.2,11 -2020-09-12T08:00,58.6,47,38.2,0,0,6.5,13.2 -2020-09-12T09:00,65.8,34,37,0,0,4.5,13.4 -2020-09-12T10:00,70.2,31,37.8,0,0,2.2,11.6 -2020-09-12T11:00,72.9,24,34.3,0,0,1.8,9.4 -2020-09-12T12:00,74.9,19,30.3,0,0,1.9,9.6 -2020-09-12T13:00,76.2,17,28.5,0,0,2.6,10.1 -2020-09-12T14:00,76.7,18,29.5,0,0,4.5,12.1 -2020-09-12T15:00,76.7,19,31,0,0,5.2,12.8 -2020-09-12T16:00,76.3,20,32.2,0,0,5.2,12.5 -2020-09-12T17:00,74.8,30,41,0,0,3.3,11.2 -2020-09-12T18:00,70.2,34,40.1,0,0,4.7,6.3 -2020-09-12T19:00,70.3,30,37.8,0,0,1.8,5.6 -2020-09-12T20:00,64.3,38,38,0,0,2.9,2.7 -2020-09-12T21:00,60.2,45,39,0,0,3.7,5.8 -2020-09-12T22:00,53.3,61,40.1,0,0,4,6 -2020-09-12T23:00,51.2,65,39.9,0,0,4.4,6 -2020-09-13T00:00,49.1,70,39.8,0,0,4.1,5.8 -2020-09-13T01:00,47.7,74,39.9,0,0,5.2,6.3 -2020-09-13T02:00,47.1,74,39.3,0,0,4.9,6 -2020-09-13T03:00,46.4,73,38.4,0,0,4.8,6.5 -2020-09-13T04:00,46.1,71,37.2,0,0,3.9,6.3 -2020-09-13T05:00,45.9,68,36.1,0,0,3.9,6 -2020-09-13T06:00,45.8,68,35.8,0,0,3.4,6.5 -2020-09-13T07:00,51.4,59,37.3,0,0,4.9,9.6 -2020-09-13T08:00,60.4,48,40.4,0,0,2.7,9.6 -2020-09-13T09:00,68.3,37,41.3,0,0,1.9,8.5 -2020-09-13T10:00,74,27,38.1,0,0,1.4,8.7 -2020-09-13T11:00,78.1,22,35.9,0,0,2.7,10.3 -2020-09-13T12:00,80.4,17,32.1,0,0,4.8,13 -2020-09-13T13:00,81.7,15,28.8,0,0,5.5,14.1 -2020-09-13T14:00,82.1,13,27.1,0,0,5.3,14.3 -2020-09-13T15:00,82,13,26.4,0,0,4.5,13.2 -2020-09-13T16:00,81.3,13,26.4,0,0,4.9,11.4 -2020-09-13T17:00,79,20,34.3,0,0,4.3,10.5 -2020-09-13T18:00,69.5,30,37,0,0,6.2,7.6 -2020-09-13T19:00,64.4,39,38.8,0,0,5.9,8.3 -2020-09-13T20:00,60.8,48,40.7,0,0,4.1,7.4 -2020-09-13T21:00,56.9,57,41.9,0,0,1.3,5.6 -2020-09-13T22:00,54,62,41.1,0,0,2.4,3.6 -2020-09-13T23:00,52.1,64,40.4,0,0,2.9,4.7 -2020-09-14T00:00,50,70,40.6,0,0,2.9,5.1 -2020-09-14T01:00,48.7,75,41,0,0,2.9,4.7 -2020-09-14T02:00,47.6,78,40.9,0,0,3.2,5.4 -2020-09-14T03:00,46.6,78,40.2,0,0,2.9,5.4 -2020-09-14T04:00,46.5,74,38.7,0,0,4.3,5.6 -2020-09-14T05:00,47.4,66,36.5,0,0,4.5,6 -2020-09-14T06:00,46.9,69,37.3,0,0,4.5,5.1 -2020-09-14T07:00,53.5,54,37.1,0,0,3.3,7.4 -2020-09-14T08:00,61.3,43,38.8,0,0,1.6,7.6 -2020-09-14T09:00,68.5,32,37.5,0,0,1.5,8.3 -2020-09-14T10:00,74.5,24,35.8,0,0,0.7,8.5 -2020-09-14T11:00,78.9,20,34.3,0,0,2.5,10.3 -2020-09-14T12:00,82,17,33,0,0,3,11.4 -2020-09-14T13:00,83.7,15,31.8,0,0,3,11.4 -2020-09-14T14:00,84.5,15,31,0,0,2,11.2 -2020-09-14T15:00,84.6,14,29.8,0,0,0.6,9.6 -2020-09-14T16:00,84.2,13,28.5,0,0,2.8,7.8 -2020-09-14T17:00,82.3,39,54.9,0,0,2.9,8.5 -2020-09-14T18:00,73.2,30,40.2,0,0,5.3,7.4 -2020-09-14T19:00,67.1,39,41.2,0,0,6.6,8.1 -2020-09-14T20:00,68.3,30,35.3,0,0,8.3,13.6 -2020-09-14T21:00,63.2,39,37.6,0,0,6.7,13.6 -2020-09-14T22:00,59.6,46,38.8,0,0,4.9,11.2 -2020-09-14T23:00,58.1,47,37.8,0,0,5.8,9.2 -2020-09-15T00:00,57.3,44,35.7,0,0,5.4,9.4 -2020-09-15T01:00,54.3,48,35.2,0,0,6.1,8.7 -2020-09-15T02:00,53.1,49,34.2,0,0,5.2,7.2 -2020-09-15T03:00,52.9,46,32.8,0,0,5.2,6.9 -2020-09-15T04:00,52.3,46,32.2,0,0,5.4,6.9 -2020-09-15T05:00,51.9,46,31.6,0,0,5.5,7.2 -2020-09-15T06:00,51.4,50,33.4,0,0,5.8,7.8 -2020-09-15T07:00,59.1,39,34,0,0,3.6,7.2 -2020-09-15T08:00,67.2,32,36.6,0,0,0.9,7.2 -2020-09-15T09:00,75.6,25,37.2,0,0,1.8,7.8 -2020-09-15T10:00,81.4,15,30,0,0,4.7,12.3 -2020-09-15T11:00,84,11,24.1,0,0,7.4,16.6 -2020-09-15T12:00,85.2,10,23,0,0,7.4,17.2 -2020-09-15T13:00,86,10,23.2,0,0,6.9,17 -2020-09-15T14:00,86.3,11,25.3,0,0,7,16.6 -2020-09-15T15:00,86.1,11,24.6,0,0,7.4,16.1 -2020-09-15T16:00,85.4,10,23.6,0,0,6,15.9 -2020-09-15T17:00,83.3,11,23.3,0,0,7.8,12.5 -2020-09-15T18:00,75.9,20,31.4,0,0,6.6,13.2 -2020-09-15T19:00,71,29,37.1,0,0,6.6,11 -2020-09-15T20:00,67,32,36.2,0,0,4.6,10.7 -2020-09-15T21:00,64,34,34.9,0,0,5.9,7.8 -2020-09-15T22:00,61.5,37,35,0,0,6.3,7.8 -2020-09-15T23:00,59.5,40,35.2,0,0,5.1,7.6 -2020-09-16T00:00,57.5,43,35.2,0,0,5.5,6.7 -2020-09-16T01:00,57.4,42,34.4,0,0,4.2,6.5 -2020-09-16T02:00,57.6,41,33.8,0,0,3.3,5.4 -2020-09-16T03:00,55.4,45,34.3,0,0,3.8,4.9 -2020-09-16T04:00,55.4,47,35.4,0,0,3.8,4.9 -2020-09-16T05:00,54.3,45,33.4,0,0,6.7,5.6 -2020-09-16T06:00,55,44,33.5,0,0,6.3,9.6 -2020-09-16T07:00,61.5,41,37.6,0,0,9,14.1 -2020-09-16T08:00,65.6,42,41.6,0,0,9.9,18.3 -2020-09-16T09:00,67.5,39,41.9,0,0,8.3,19 -2020-09-16T10:00,69.8,35,41,0,0,7.6,17.9 -2020-09-16T11:00,72.1,31,40.2,0,0,7.6,17.9 -2020-09-16T12:00,74.2,27,38.4,0,0,7.2,18.1 -2020-09-16T13:00,75.7,25,37.3,0,0,6.1,17.4 -2020-09-16T14:00,76.6,24,37.2,0,0,4.8,16.1 -2020-09-16T15:00,77.2,24,37.5,0,0,3.9,14.1 -2020-09-16T16:00,76.8,25,37.9,0,0,3.6,11.9 -2020-09-16T17:00,74,26,37,0,0,3.1,10.3 -2020-09-16T18:00,70.1,33,39.3,0,0,3.6,6.5 -2020-09-16T19:00,65.8,41,41.4,0,0,4.7,7.6 -2020-09-16T20:00,63.3,49,43.7,0,0,6.4,10.3 -2020-09-16T21:00,60.3,55,44.2,0,0,4.5,10.5 -2020-09-16T22:00,57.3,62,44.2,0,0,3.6,7.2 -2020-09-16T23:00,54.5,69,44.5,0,0,3.1,5.6 -2020-09-17T00:00,53.2,72,44.3,0,0,3.2,5.4 -2020-09-17T01:00,52.1,72,43.3,0,0,3,5.6 -2020-09-17T02:00,50.9,73,42.4,0,0,3.8,4.7 -2020-09-17T03:00,50.3,71,41.2,0,0,3.8,4.9 -2020-09-17T04:00,49,74,40.9,0,0,4.3,5.1 -2020-09-17T05:00,48.4,71,39.3,0,0,4.7,5.6 -2020-09-17T06:00,48.1,70,38.8,0,0,4.5,6.3 -2020-09-17T07:00,54.8,56,39.3,0,0,3.6,7.6 -2020-09-17T08:00,63.2,43,40.3,0,0,3.5,9.6 -2020-09-17T09:00,72.1,29,37.7,0,0,2.9,10.1 -2020-09-17T10:00,78.8,19,33,0,0,2.9,10.1 -2020-09-17T11:00,82.9,13,27.9,0,0,6.9,15.9 -2020-09-17T12:00,84.9,11,24.7,0,0,9,19.7 -2020-09-17T13:00,86.1,10,23.4,0,0,8.9,19.7 -2020-09-17T14:00,86,10,22.4,0,0,9.9,20.4 -2020-09-17T15:00,85.7,10,23.5,0,0,8.7,20.1 -2020-09-17T16:00,84.9,11,24.8,0,0,7.6,18.1 -2020-09-17T17:00,82,16,30.8,0,0,2.2,15 -2020-09-17T18:00,78.8,15,27.1,0,0,3.4,4.7 -2020-09-17T19:00,75.7,16,26.5,0,0,3.1,4.5 -2020-09-17T20:00,69.2,22,28.8,0,0,2.5,3.8 -2020-09-17T21:00,66,32,35.7,0,0,10.3,15 -2020-09-17T22:00,63.7,36,36.5,0,0,10.4,17.9 -2020-09-17T23:00,62.2,41,38.2,0,0,6.3,17.9 -2020-09-18T00:00,59.4,49,40.3,0,0,4.7,10.1 -2020-09-18T01:00,57.5,55,41.5,0,0,4.2,7.4 -2020-09-18T02:00,53.5,64,41.5,0,0,2.3,5.1 -2020-09-18T03:00,51.7,67,41.3,0,0,1.9,3.6 -2020-09-18T04:00,49.8,73,41.4,0,0,2.9,4 -2020-09-18T05:00,48.7,76,41.6,0,0,2.4,4.5 -2020-09-18T06:00,48,78,41.4,0,0,2.4,4.3 -2020-09-18T07:00,53.4,64,41.6,0,0,2.5,6.7 -2020-09-18T08:00,59.5,50,41,0,0,1.3,7.6 -2020-09-18T09:00,64.9,39,39.5,0,0,2.4,9.8 -2020-09-18T10:00,71.2,31,38.8,0,0,2.7,11 -2020-09-18T11:00,77,26,39.4,0,0,4.7,13.6 -2020-09-18T12:00,81.8,22,38.8,0,0,5.4,15 -2020-09-18T13:00,85.1,15,32,0,0,4,15 -2020-09-18T14:00,86.3,12,27.6,0,0,4.3,13 -2020-09-18T15:00,86.2,13,30,0,0,7.3,15.9 -2020-09-18T16:00,84.5,16,33.4,0,0,9.5,18.3 -2020-09-18T17:00,76.2,27,39.4,0,0,7.1,17.9 -2020-09-18T18:00,73,32,41.5,0,0,2.1,11.4 -2020-09-18T19:00,72.8,33,41.8,0,0,2.8,3.4 -2020-09-18T20:00,67.9,42,43.8,0,0,4.3,4.9 -2020-09-18T21:00,66.9,43,43.8,0,0,2.1,4.9 -2020-09-18T22:00,62.1,50,43.2,0,0,3.6,5.4 -2020-09-18T23:00,60.1,57,44.7,0,0,1.8,5.1 -2020-09-19T00:00,58,63,45.3,0,0,2.4,3.8 -2020-09-19T01:00,57.8,61,44.4,0,0,3.5,5.8 -2020-09-19T02:00,56.7,55,40.6,0,0,3.6,5.8 -2020-09-19T03:00,56.2,50,37.9,0,0,3.5,5.8 -2020-09-19T04:00,55.4,49,36.5,0,0,3.5,5.6 -2020-09-19T05:00,56.6,45,35.2,0,0,3.8,5.8 -2020-09-19T06:00,54.4,45,33.6,0,0,4.3,6.9 -2020-09-19T07:00,59.9,37,33.6,0,0,5.4,9.6 -2020-09-19T08:00,68.8,30,36.1,0,0,3.4,9.6 -2020-09-19T09:00,78.5,21,35.3,0,0,1.8,9.2 -2020-09-19T10:00,83.8,13,28.5,0,0,2.1,9.2 -2020-09-19T11:00,85.7,12,27.5,0,0,2.3,10.5 -2020-09-19T12:00,86.7,11,26.3,0,0,2.1,10.5 -2020-09-19T13:00,87.8,10,25.4,0,0,4.6,12.5 -2020-09-19T14:00,87.8,10,25.4,0,0,5.9,14.8 -2020-09-19T15:00,85.8,11,26.2,0,0,8.5,16.6 -2020-09-19T16:00,84.3,13,28.9,0,0,13.2,23.3 -2020-09-19T17:00,82.6,15,30,0,0,7.5,24.6 -2020-09-19T18:00,75.8,23,35.2,0,0,5.3,14.3 -2020-09-19T19:00,71,29,37,0,0,5.6,8.5 -2020-09-19T20:00,65.9,37,39,0,0,4.4,9.4 -2020-09-19T21:00,62.8,43,40,0,0,4.7,9.6 -2020-09-19T22:00,60.6,51,42.2,0,0,6.1,10.3 -2020-09-19T23:00,58.2,54,41.8,0,0,4,10.7 -2020-09-20T00:00,57.3,52,39.7,0,0,4.5,6.9 -2020-09-20T01:00,55.4,54,39.2,0,0,4.7,6 -2020-09-20T02:00,56.8,47,36.6,0,0,5.6,9.4 -2020-09-20T03:00,55.1,49,36.1,0,0,4.7,9.2 -2020-09-20T04:00,56.8,45,36,0,0,1.6,5.6 -2020-09-20T05:00,52.6,55,36.9,0,0,4.5,4.9 -2020-09-20T06:00,52.2,56,37.1,0,0,4.7,6 -2020-09-20T07:00,58.6,44,36.6,0,0,2.6,6.7 -2020-09-20T08:00,66.2,34,37.2,0,0,3.6,8.9 -2020-09-20T09:00,72.1,25,34.4,0,0,7.4,15 -2020-09-20T10:00,76.6,21,34,0,0,8,17.9 -2020-09-20T11:00,79.2,21,35.6,0,0,4.9,17.4 -2020-09-20T12:00,82.3,17,33.7,0,0,1.7,13.6 -2020-09-20T13:00,83.6,16,32.6,0,0,1.4,9.8 -2020-09-20T14:00,85.3,14,31.3,0,0,1.1,9.6 -2020-09-20T15:00,84.8,14,30.8,0,0,7.9,15.9 -2020-09-20T16:00,82.5,18,34.5,0,0,9.7,18.3 -2020-09-20T17:00,80.2,20,35.7,0,0,2.9,18.1 -2020-09-20T18:00,78.1,22,36,0,0,3,5.1 -2020-09-20T19:00,69.7,31,37.9,0,0,3.8,4.5 -2020-09-20T20:00,65.4,39,40.1,0,0,3.5,6 -2020-09-20T21:00,61.8,44,39.9,0,0,6.2,9.8 -2020-09-20T22:00,60.9,43,38.1,0,0,6.1,10.3 -2020-09-20T23:00,59,46,38.4,0,0,4.7,10.1 -2020-09-21T00:00,57.7,51,39.5,0,0,5.5,7.4 -2020-09-21T01:00,57.1,49,38.3,0,0,3.4,6.9 -2020-09-21T02:00,54.9,52,37.7,0,0,4.7,7.8 -2020-09-21T03:00,53.6,53,37,0,0,3.9,8.1 -2020-09-21T04:00,52.4,56,37,0,0,3.8,6.5 -2020-09-21T05:00,52.1,60,38.7,0,0,4.3,4.9 -2020-09-21T06:00,50.9,66,39.8,0,0,4.1,6.7 -2020-09-21T07:00,56.8,54,40.5,0,0,4.8,9.2 -2020-09-21T08:00,64.1,41,40.2,0,0,3,9.4 -2020-09-21T09:00,71.6,28,36.8,0,0,2.4,9.6 -2020-09-21T10:00,78.1,21,34.4,0,0,2.4,10.1 -2020-09-21T11:00,82.8,16,31.7,0,0,3.1,11.4 -2020-09-21T12:00,84.7,14,29.7,0,0,2.7,11.4 -2020-09-21T13:00,85.6,13,29.1,0,0,3.6,12.1 -2020-09-21T14:00,86.2,13,28.9,0,0,6.7,15.2 -2020-09-21T15:00,85.9,13,29.2,0,0,7,16.1 -2020-09-21T16:00,84.7,14,29.7,0,0,4.8,15.2 -2020-09-21T17:00,79.2,20,35.1,0,0,9.9,10.1 -2020-09-21T18:00,73.9,27,37.5,0,0,3.1,16.3 -2020-09-21T19:00,69.6,32,38.6,0,0,6.3,9.8 -2020-09-21T20:00,67.3,34,37.9,0,0,4.6,10.3 -2020-09-21T21:00,66.4,35,37.9,0,0,6.6,10.3 -2020-09-21T22:00,63.8,38,37.9,0,0,5.8,10.7 -2020-09-21T23:00,61,43,38.6,0,0,4.6,9.4 -2020-09-22T00:00,59.1,47,39,0,0,4.1,7.2 -2020-09-22T01:00,55.9,54,39.7,0,0,4.9,6.9 -2020-09-22T02:00,54.2,58,39.6,0,0,4,5.8 -2020-09-22T03:00,53.9,57,39,0,0,4.1,5.1 -2020-09-22T04:00,53.2,57,38.2,0,0,4.1,4.9 -2020-09-22T05:00,54,53,37.3,0,0,3.8,5.8 -2020-09-22T06:00,52.7,59,38.8,0,0,3.8,5.4 -2020-09-22T07:00,58.6,48,38.8,0,0,6.4,11 -2020-09-22T08:00,66.7,37,39.9,0,0,3.4,11.2 -2020-09-22T09:00,73,28,37.7,0,0,5.8,13 -2020-09-22T10:00,79.4,21,35.8,0,0,7.2,15.7 -2020-09-22T11:00,82.6,18,34.3,0,0,8.2,18.6 -2020-09-22T12:00,83.3,16,33.1,0,0,5.9,18.1 -2020-09-22T13:00,82.3,18,34.1,0,0,10.3,21.3 -2020-09-22T14:00,82.9,16,31.6,0,0,4.3,20.8 -2020-09-22T15:00,83.5,14,29,0,0,1.8,12.1 -2020-09-22T16:00,82.9,13,27.9,0,0,1.8,9.2 -2020-09-22T17:00,80.8,16,29.9,0,0,3.6,7.8 -2020-09-22T18:00,75.1,22,34.2,0,0,4,6.5 -2020-09-22T19:00,72.9,27,37,0,0,7.8,12.3 -2020-09-22T20:00,69.2,31,37.4,0,0,9.5,15.4 -2020-09-22T21:00,67.9,32,37.1,0,0,7.6,15.7 -2020-09-22T22:00,65.1,36,37.8,0,0,4.3,12.8 -2020-09-22T23:00,62.5,40,37.7,0,0,4.9,7.8 -2020-09-23T00:00,59.8,42,37,0,0,7.2,8.1 -2020-09-23T01:00,61.6,40,36.9,0,0,4.3,8.5 -2020-09-23T02:00,58,46,37.1,0,0,6,8.1 -2020-09-23T03:00,58.7,44,37,0,0,5.2,7.8 -2020-09-23T04:00,57.2,47,37.2,0,0,8.1,9.6 -2020-09-23T05:00,60.1,44,38,0,0,4.7,9.8 -2020-09-23T06:00,57.8,49,38.6,0,0,4,6.7 -2020-09-23T07:00,61.2,44,38.8,0,0,2.4,6 -2020-09-23T08:00,67.2,37,39.7,0,0,2.7,8.5 -2020-09-23T09:00,71.7,31,39.2,0,0,6.3,12.8 -2020-09-23T10:00,77,21,34.3,0,0,4.5,14.5 -2020-09-23T11:00,79.5,17,31.4,0,0,0.8,12.8 -2020-09-23T12:00,80.7,15,29.5,0,0,2.3,11 -2020-09-23T13:00,82.1,14,28.3,0,0,2,11.2 -2020-09-23T14:00,82.5,14,28.1,0,0,2.7,10.7 -2020-09-23T15:00,82.4,13,27.1,0,0,4.7,12.8 -2020-09-23T16:00,82,13,26,0,0,3.2,12.8 -2020-09-23T17:00,80.9,15,28.9,0,0,2.2,9.2 -2020-09-23T18:00,75.7,19,31,0,0,4.3,5.1 -2020-09-23T19:00,70.3,24,31.6,0,0,5.1,6.5 -2020-09-23T20:00,68.2,27,32.8,0,0,4,6.5 -2020-09-23T21:00,64.9,32,34.4,0,0,4.5,7.2 -2020-09-23T22:00,61.6,35,33.7,0,0,5.2,7.2 -2020-09-23T23:00,59.7,34,31.1,0,0,5.7,7.8 -2020-09-24T00:00,58.5,34,30.1,0,0,4.5,7.4 -2020-09-24T01:00,56.2,36,29.9,0,0,6.7,8.1 -2020-09-24T02:00,55.4,37,29.7,0,0,6.4,8.3 -2020-09-24T03:00,54.1,40,30.1,0,0,6.5,8.1 -2020-09-24T04:00,54.7,39,30.4,0,0,4.9,7.8 -2020-09-24T05:00,54.1,43,32.3,0,0,4.4,7.4 -2020-09-24T06:00,52.7,45,32.1,0,0,5,6.9 -2020-09-24T07:00,59.5,36,32.8,0,0,5.2,9.2 -2020-09-24T08:00,67.8,28,33.4,0,0,5,11.2 -2020-09-24T09:00,75.9,20,31.5,0,0,5,12.8 -2020-09-24T10:00,80.5,16,29.6,0,0,4.1,12.5 -2020-09-24T11:00,83.6,14,28.5,0,0,3.9,12.8 -2020-09-24T12:00,85.9,12,27.5,0,0,3.2,12.5 -2020-09-24T13:00,87.8,11,26.6,0,0,2.7,11.9 -2020-09-24T14:00,89,10,25.8,0,0,2.6,11 -2020-09-24T15:00,89.5,10,25.3,0,0,3.4,10.5 -2020-09-24T16:00,89,10,24.5,0,0,4.7,10.7 -2020-09-24T17:00,85.2,16,34.7,0,0,2.9,10.5 -2020-09-24T18:00,83.7,12,25.3,0,0,3.4,5.1 -2020-09-24T19:00,73.5,18,27.2,0,0,5.4,5.6 -2020-09-24T20:00,67.4,25,30.6,0,0,3.8,7.6 -2020-09-24T21:00,63.1,33,33.7,0,0,4.1,6.9 -2020-09-24T22:00,62.8,35,34.5,0,0,4.6,7.8 -2020-09-24T23:00,60.7,37,34.3,0,0,4.1,8.1 -2020-09-25T00:00,59.4,38,33.5,0,0,4.3,7.4 -2020-09-25T01:00,58.6,37,32.6,0,0,4.4,7.2 -2020-09-25T02:00,57.2,39,32.3,0,0,5.4,7.2 -2020-09-25T03:00,55.5,40,31.6,0,0,6.4,7.8 -2020-09-25T04:00,54,42,31.4,0,0,6.5,8.1 -2020-09-25T05:00,53.7,44,32.5,0,0,5.1,7.8 -2020-09-25T06:00,53.1,45,32.3,0,0,4.9,7.2 -2020-09-25T07:00,60.5,35,32.5,0,0,5.1,8.5 -2020-09-25T08:00,69.4,27,33.9,0,0,2,9.8 -2020-09-25T09:00,71.6,24,33.4,0,0,12,22.1 -2020-09-25T10:00,75.6,19,30.7,0,0,6.6,22.4 -2020-09-25T11:00,79.5,17,30.7,0,0,6.7,15.9 -2020-09-25T12:00,82.6,15,29.7,0,0,3.2,15.9 -2020-09-25T13:00,85.6,13,28.5,0,0,2.8,11 -2020-09-25T14:00,88.8,11,28.1,0,0,4.6,12.5 -2020-09-25T15:00,89.3,11,27.4,0,0,3,12.8 -2020-09-25T16:00,89.3,11,27.1,0,0,3.1,9.8 -2020-09-25T17:00,83.9,16,32.9,0,0,9.8,9.2 -2020-09-25T18:00,76.4,21,34,0,0,6.4,16.3 -2020-09-25T19:00,71.6,25,34.2,0,0,4.7,7.4 -2020-09-25T20:00,70.2,27,34.8,0,0,4.6,6.9 -2020-09-25T21:00,66,32,35.6,0,0,4.5,6.7 -2020-09-25T22:00,64.9,31,33.7,0,0,6.8,11.2 -2020-09-25T23:00,63.2,31,32.2,0,0,5.9,11.6 -2020-09-26T00:00,62.7,30,31,0,0,6.7,11.2 -2020-09-26T01:00,61.8,31,30.7,0,0,6.1,11.2 -2020-09-26T02:00,61,32,30.8,0,0,4.8,10.3 -2020-09-26T03:00,61.2,31,30.5,0,0,6,9.6 -2020-09-26T04:00,60.7,31,29.8,0,0,5.1,9.8 -2020-09-26T05:00,59.4,34,30.7,0,0,5.9,9.6 -2020-09-26T06:00,58.8,34,30.4,0,0,4.9,8.5 -2020-09-26T07:00,64.1,28,30.4,0,0,7.8,11.9 -2020-09-26T08:00,74.7,20,30.4,0,0,8.9,15.9 -2020-09-26T09:00,81.4,14,28.4,0,0,12.6,22.4 -2020-09-26T10:00,84.2,11,24.9,0,0,13.4,26.2 -2020-09-26T11:00,86.5,10,24.3,0,0,6.9,25.3 -2020-09-26T12:00,88.3,9,22.6,0,0,9,19 -2020-09-26T13:00,89.7,9,22.3,0,0,9.7,20.6 -2020-09-26T14:00,89.8,9,22.6,0,0,11.2,21.7 -2020-09-26T15:00,89.2,9,22.7,0,0,11,22.1 -2020-09-26T16:00,87.9,9,23,0,0,12.2,22.4 -2020-09-26T17:00,79,15,26.8,0,0,13.9,21.9 -2020-09-26T18:00,73.8,18,27.8,0,0,6.6,22.8 -2020-09-26T19:00,71.3,20,28.2,0,0,6.5,12.3 -2020-09-26T20:00,68,24,29.9,0,0,5,10.5 -2020-09-26T21:00,64.3,28,30.4,0,0,5.7,8.5 -2020-09-26T22:00,63.3,32,33.2,0,0,4.5,10.5 -2020-09-26T23:00,62.4,35,34.6,0,0,3.9,7.2 -2020-09-27T00:00,58.7,41,35.1,0,0,5,5.6 -2020-09-27T01:00,56.7,44,34.8,0,0,5.2,6.9 -2020-09-27T02:00,56.3,45,35,0,0,4.8,6.7 -2020-09-27T03:00,57.6,42,34.6,0,0,2.4,6 -2020-09-27T04:00,57,43,34.8,0,0,2.3,3.1 -2020-09-27T05:00,53.1,59,38.9,0,0,5.1,3.8 -2020-09-27T06:00,52.6,63,40.4,0,0,4.9,6.7 -2020-09-27T07:00,54.8,59,40.6,0,0,11.2,19 -2020-09-27T08:00,54.8,55,39.1,0,0,15.5,25.7 -2020-09-27T09:00,50.2,49,31.8,0,0,15.5,31.5 -2020-09-27T10:00,48.7,53,32.2,0,0,8.5,27.3 -2020-09-27T11:00,49.8,51,32.2,0,0,4.5,16.1 -2020-09-27T12:00,53.4,45,32.5,0,0,4.7,13.2 -2020-09-27T13:00,56.3,39,31.9,0,0,6.3,15.4 -2020-09-27T14:00,57.5,37,31.2,0,0,11.4,21.3 -2020-09-27T15:00,54.3,42,31.6,0,0,13.8,26.4 -2020-09-27T16:00,52.4,45,31.6,0,0,10.1,25.3 -2020-09-27T17:00,48.5,63,36.3,0,0,14.8,18.8 -2020-09-27T18:00,47.2,62,34.8,0.012,0,8.1,24.6 -2020-09-27T19:00,46.9,66,36.2,0.02,0,4.3,14.8 -2020-09-27T20:00,46.1,71,37.1,0.016,0,4.8,8.7 -2020-09-27T21:00,45.3,78,38.8,0,0,5.8,9.8 -2020-09-27T22:00,45.9,76,38.8,0,0,6.3,11 -2020-09-27T23:00,45.9,72,37.5,0,0,5.4,10.5 -2020-09-28T00:00,44.2,69,34.6,0,0,5,9.2 -2020-09-28T01:00,41.6,68,31.8,0,0,3.9,8.5 -2020-09-28T02:00,40.2,71,31.5,0,0,4.4,6 -2020-09-28T03:00,40.7,68,30.8,0,0,4.1,6 -2020-09-28T04:00,39.6,65,28.9,0,0,4.4,6 -2020-09-28T05:00,42.5,59,29,0,0,4.3,5.6 -2020-09-28T06:00,42.4,60,29.3,0,0,3.6,6.9 -2020-09-28T07:00,44.5,57,30.2,0,0,3.8,8.5 -2020-09-28T08:00,49,40,25.6,0,0,2,8.9 -2020-09-28T09:00,51.7,30,21.1,0,0,0.4,8.5 -2020-09-28T10:00,54.2,24,18.5,0,0,2.5,10.7 -2020-09-28T11:00,57,20,16.6,0,0,6,15.9 -2020-09-28T12:00,59.7,17,14.4,0,0,9,20.1 -2020-09-28T13:00,61.2,16,15.2,0,0,9.2,21 -2020-09-28T14:00,61.7,16,14.5,0,0,6.8,20.4 -2020-09-28T15:00,61.9,15,13,0,0,5.6,17 -2020-09-28T16:00,61.6,13,10.9,0,0,5.6,14.3 -2020-09-28T17:00,59.8,15,12.4,0,0,4.1,13 -2020-09-28T18:00,58.3,17,13.3,0,0,1.6,7.2 -2020-09-28T19:00,53.2,24,17.6,0,0,4.6,6.7 -2020-09-28T20:00,50.8,28,19.2,0,0,6.6,11.4 -2020-09-28T21:00,47.8,35,21.2,0,0,4.5,11.2 -2020-09-28T22:00,45.5,42,23.5,0,0,5.1,8.5 -2020-09-28T23:00,45.5,40,22.5,0,0,5.1,9.2 -2020-09-29T00:00,45.8,33,18.4,0,0,4.8,8.1 -2020-09-29T01:00,44.9,30,15.4,0,0,6,7.6 -2020-09-29T02:00,44,31,15.5,0,0,5.9,7.8 -2020-09-29T03:00,43.2,34,16.5,0,0,6,7.4 -2020-09-29T04:00,42.8,34,16.6,0,0,6.4,7.6 -2020-09-29T05:00,45.4,32,16.9,0,0,7.8,8.1 -2020-09-29T06:00,44.5,35,18.6,0,0,7.9,9.6 -2020-09-29T07:00,52.6,28,20.7,0,0,5.4,9.4 -2020-09-29T08:00,60.8,23,22.9,0,0,5.2,11.2 -2020-09-29T09:00,69,18,24.3,0,0,4.3,11.9 -2020-09-29T10:00,73.8,17,25.9,0,0,4.1,12.3 -2020-09-29T11:00,76,16,26.4,0,0,5.2,14.1 -2020-09-29T12:00,78,15,25.8,0,0,5.4,15.2 -2020-09-29T13:00,79.7,13,24.4,0,0,4.1,14.8 -2020-09-29T14:00,80.7,12,23.9,0,0,2.8,12.8 -2020-09-29T15:00,80.8,12,23.9,0,0,1.6,11 -2020-09-29T16:00,80.1,12,23.7,0,0,2.6,8.5 -2020-09-29T17:00,75.2,18,28.1,0,0,2.7,8.5 -2020-09-29T18:00,70,19,25.9,0,0,2.9,5.1 -2020-09-29T19:00,62.4,28,28.9,0,0,3.7,5.1 -2020-09-29T20:00,58.1,34,30.1,0,0,4.8,7.6 -2020-09-29T21:00,59.8,24,23,0,0,7.2,11.6 -2020-09-29T22:00,61.8,16,15.4,0,0,6.9,11.6 -2020-09-29T23:00,56.8,20,16.1,0,0,8.9,11.2 -2020-09-30T00:00,62.8,16,15.6,0,0,5.6,11 -2020-09-30T01:00,52.5,23,15.6,0,0,8,9.4 -2020-09-30T02:00,51.4,23,15.3,0,0,8.5,10.5 -2020-09-30T03:00,52.3,23,15.2,0,0,7.9,11.2 -2020-09-30T04:00,56.9,19,15.5,0,0,1.8,9.4 -2020-09-30T05:00,53.2,26,19.1,0,0,5.4,4.3 -2020-09-30T06:00,49.7,32,21.1,0,0,3.8,6.5 -2020-09-30T07:00,53.5,29,22,0,0,2.6,4.7 -2020-09-30T08:00,60.9,22,21.3,0,0,1.6,6.9 -2020-09-30T09:00,65.1,17,19.8,0,0,7,13.9 -2020-09-30T10:00,67.3,21,26.3,0,0,7.4,17.2 -2020-09-30T11:00,69.4,20,26.5,0,0,7.1,17.4 -2020-09-30T12:00,71.2,19,26.2,0,0,5.9,17.2 -2020-09-30T13:00,72.7,18,27.1,0,0,6.2,16.1 -2020-09-30T14:00,73.2,19,28.4,0,0,6.3,16.1 -2020-09-30T15:00,72.9,20,29.2,0,0,6.5,15.7 -2020-09-30T16:00,72.1,21,30,0,0,6.4,15.2 -2020-09-30T17:00,69.3,25,31.6,0,0,5,13.4 -2020-09-30T18:00,64.1,31,33,0,0,5.8,8.5 -2020-09-30T19:00,61.7,35,33.8,0,0,6,11.2 -2020-09-30T20:00,59.7,38,34,0,0,4,9.6 -2020-09-30T21:00,58.8,39,34.2,0,0,2.4,4.7 -2020-09-30T22:00,56.9,44,35.2,0,0,3.4,3.8 -2020-09-30T23:00,53.7,50,35.7,0,0,4.5,5.1 -2020-10-01T00:00,52.5,54,36.5,0,0,5.2,7.6 -2020-10-01T01:00,50.5,54,34.5,0,0,6.5,11.4 -2020-10-01T02:00,49,54,33.2,0,0,7.9,13 -2020-10-01T03:00,47,56,32.3,0,0,4.8,13 -2020-10-01T04:00,45,62,32.5,0,0,4.7,7.8 -2020-10-01T05:00,45.3,61,32.6,0,0,1.8,5.8 -2020-10-01T06:00,45.1,61,32.6,0,0,0.5,2 -2020-10-01T07:00,46,57,31.6,0,0,0.4,3.1 -2020-10-01T08:00,49.8,44,28.6,0,0,1.6,7.2 -2020-10-01T09:00,53.2,37,27.4,0,0,2.9,10.7 -2020-10-01T10:00,56.4,33,27.3,0,0,4.1,13 -2020-10-01T11:00,60.1,29,27.4,0,0,3.7,13.2 -2020-10-01T12:00,63.6,25,27.5,0,0,2.8,13.2 -2020-10-01T13:00,65.9,23,26.9,0,0,5.2,14.8 -2020-10-01T14:00,67.1,21,25.9,0,0,5.3,15.4 -2020-10-01T15:00,67.6,20,25.6,0,0,4.3,14.5 -2020-10-01T16:00,67,21,25.5,0,0,4.5,12.5 -2020-10-01T17:00,64.4,23,26.2,0,0,0.4,11.2 -2020-10-01T18:00,60.5,28,27.3,0,0,2.8,3.4 -2020-10-01T19:00,59.2,30,28,0,0,3.3,4.3 -2020-10-01T20:00,59.5,29,27.6,0,0,2.1,4 -2020-10-01T21:00,54.1,39,29.4,0,0,2,3.4 -2020-10-01T22:00,51.1,48,32.2,0,0,2.6,4.9 -2020-10-01T23:00,49.6,53,33.3,0,0,3.6,5.6 -2020-10-02T00:00,49,51,31.7,0,0,3.5,6 -2020-10-02T01:00,49,46,29.1,0,0,2.9,6.3 -2020-10-02T02:00,46.9,46,27.2,0,0,3.5,5.6 -2020-10-02T03:00,45.3,50,28,0,0,4,5.6 -2020-10-02T04:00,44.4,53,28.4,0,0,5,6.3 -2020-10-02T05:00,46,47,27.1,0,0,3.5,6.3 -2020-10-02T06:00,46.8,43,25.5,0,0,2.7,4.5 -2020-10-02T07:00,49.6,37,24.5,0,0,2.8,4.5 -2020-10-02T08:00,56.5,26,22.2,0,0,2.7,8.5 -2020-10-02T09:00,63.7,20,21.6,0,0,3.6,10.5 -2020-10-02T10:00,68.5,17,21.4,0,0,5.1,13.6 -2020-10-02T11:00,71.3,15,21.6,0,0,5.3,15 -2020-10-02T12:00,73.4,14,21.6,0,0,3.3,14.5 -2020-10-02T13:00,75,13,21.2,0,0,3.5,12.3 -2020-10-02T14:00,75.8,13,20.8,0,0,3.2,12.3 -2020-10-02T15:00,75.7,13,20.9,0,0,5.1,13.4 -2020-10-02T16:00,74.2,13,20.8,0,0,1.3,13.2 -2020-10-02T17:00,72.3,14,19.6,0,0,1.7,8.1 -2020-10-02T18:00,64.7,20,22.2,0,0,5.2,5.8 -2020-10-02T19:00,63.4,22,23.4,0,0,4.5,6.3 -2020-10-02T20:00,63.2,23,24.4,0,0,4.8,7.8 -2020-10-02T21:00,59.8,28,26.3,0,0,4.3,10.1 -2020-10-02T22:00,57.2,35,30.1,0,0,6.8,25.5 -2020-10-02T23:00,52.2,46,32.1,0,0,4.8,11.2 -2020-10-03T00:00,53.5,44,32.4,0,0,2.7,6 -2020-10-03T01:00,49.9,52,33.1,0,0,3.8,5.6 -2020-10-03T02:00,49.2,56,34,0,0,3.6,5.6 -2020-10-03T03:00,48.1,58,34,0,0,2.1,4 -2020-10-03T04:00,44.9,65,34,0,0,3.2,4 -2020-10-03T05:00,43.1,70,33.9,0,0,1.5,4 -2020-10-03T06:00,41.3,74,33.7,0,0,1.9,3.4 -2020-10-03T07:00,45.7,63,33.8,0,0,3.5,7.6 -2020-10-03T08:00,53.2,46,32.9,0,0,1.8,7.6 -2020-10-03T09:00,57.5,39,32.6,0,0,2.8,10.1 -2020-10-03T10:00,60.2,35,32.7,0,0,5,13.9 -2020-10-03T11:00,62.8,32,32.5,0,0,5.2,14.8 -2020-10-03T12:00,64.7,29,32.1,0,0,7,17 -2020-10-03T13:00,65.7,28,31.5,0,0,8,18.8 -2020-10-03T14:00,66.2,27,31.2,0,0,6.4,18.6 -2020-10-03T15:00,66.6,27,31.1,0,0,4.3,15.9 -2020-10-03T16:00,66,27,30.9,0,0,3.8,12.3 -2020-10-03T17:00,63.5,30,31.6,0,0,0.7,10.3 -2020-10-03T18:00,58.3,39,33.4,0,0,4.5,5.6 -2020-10-03T19:00,55.6,45,34.6,0,0,3.9,5.8 -2020-10-03T20:00,53.5,50,35.3,0,0,3.7,5.4 -2020-10-03T21:00,51.6,54,35.6,0,0,4.4,5.6 -2020-10-03T22:00,50.7,56,35.6,0,0,3.6,6 -2020-10-03T23:00,50.5,56,35.4,0,0,2.4,4.5 -2020-10-04T00:00,47.2,63,35.2,0,0,2.8,4.9 -2020-10-04T01:00,46.5,62,34.1,0,0,3.7,5.6 -2020-10-04T02:00,46,58,31.8,0,0,4,6 -2020-10-04T03:00,44.5,58,30.8,0,0,4.6,6 -2020-10-04T04:00,45.6,52,29.1,0,0,3.4,5.6 -2020-10-04T05:00,43.5,55,28.4,0,0,3.9,4.3 -2020-10-04T06:00,41.3,63,29.7,0,0,5.3,6.5 -2020-10-04T07:00,47,52,30.1,0,0,4.1,7.4 -2020-10-04T08:00,55.1,39,30.7,0,0,3.3,8.9 -2020-10-04T09:00,64,26,28.2,0,0,3.9,11 -2020-10-04T10:00,71.9,16,23.6,0,0,5.3,13.4 -2020-10-04T11:00,76.9,12,19.6,0,0,6.8,16.1 -2020-10-04T12:00,79.5,10,18.5,0,0,7,16.6 -2020-10-04T13:00,81.1,9,17.4,0,0,5.8,16.6 -2020-10-04T14:00,82,9,16.8,0,0,4.7,15 -2020-10-04T15:00,82.5,8,16.5,0,0,4.2,13 -2020-10-04T16:00,81.7,9,17.3,0,0,6.4,11.9 -2020-10-04T17:00,76.3,12,20.1,0,0,6.3,12.8 -2020-10-04T18:00,70,16,22.3,0,0,6.4,10.5 -2020-10-04T19:00,64.6,20,23.1,0,0,5.3,8.9 -2020-10-04T20:00,59.4,27,25,0,0,4.6,8.3 -2020-10-04T21:00,55.6,32,26.5,0,0,3.9,7.4 -2020-10-04T22:00,55.8,32,26.7,0,0,4.8,7.4 -2020-10-04T23:00,56.8,31,26.1,0,0,6.1,9.8 -2020-10-05T00:00,53.8,34,26.3,0,0,4.6,10.1 -2020-10-05T01:00,50.8,39,26.9,0,0,4.4,7.6 -2020-10-05T02:00,48.2,44,27.1,0,0,5,6.9 -2020-10-05T03:00,47.6,45,27.1,0,0,4.7,6.9 -2020-10-05T04:00,47.6,44,26.5,0,0,4,5.6 -2020-10-05T05:00,47.2,39,23.5,0,0,5.9,7.2 -2020-10-05T06:00,46,40,22.9,0,0,4.6,7.6 -2020-10-05T07:00,52.8,31,23.1,0,0,7,11.2 -2020-10-05T08:00,64.2,22,24.3,0,0,5.9,12.5 -2020-10-05T09:00,71.3,14,19.9,0,0,2,11.9 -2020-10-05T10:00,74.8,12,19.2,0,0,0.9,8.7 -2020-10-05T11:00,78.6,10,18.5,0,0,3.4,11 -2020-10-05T12:00,80.6,10,18.2,0,0,7.5,17 -2020-10-05T13:00,81.5,10,19.4,0,0,8.1,18.6 -2020-10-05T14:00,82.9,8,16.9,0,0,8,17.9 -2020-10-05T15:00,83.1,8,15,0,0,8.4,18.3 -2020-10-05T16:00,81.1,10,18.8,0,0,8.4,17.2 -2020-10-05T17:00,74.3,13,20.6,0,0,12.5,17.2 -2020-10-05T18:00,64.8,23,25.6,0,0,4.8,23.3 -2020-10-05T19:00,61.8,26,27,0,0,4,7.2 -2020-10-05T20:00,58,32,28.5,0,0,3.9,6.7 -2020-10-05T21:00,55.1,37,29.3,0,0,3.3,6 -2020-10-05T22:00,52.3,42,29.8,0,0,3,5.1 -2020-10-05T23:00,50.5,46,30.3,0,0,3.7,5.6 -2020-10-06T00:00,49.3,46,29.2,0,0,4.1,6.7 -2020-10-06T01:00,47,48,28.1,0,0,5,6.7 -2020-10-06T02:00,45.9,48,27.3,0,0,5.1,6.3 -2020-10-06T03:00,45.1,45,25.2,0,0,5.1,6.5 -2020-10-06T04:00,44.8,40,22.2,0,0,3.8,6.5 -2020-10-06T05:00,45.9,39,22,0,0,4.4,6.3 -2020-10-06T06:00,44.9,39,21.6,0,0,5,7.4 -2020-10-06T07:00,51.4,30,21,0,0,5.9,8.9 -2020-10-06T08:00,60.8,22,21.4,0,0,3.8,10.7 -2020-10-06T09:00,69,17,21.7,0,0,2.7,9.6 -2020-10-06T10:00,73.6,14,20.7,0,0,2.4,9.6 -2020-10-06T11:00,77.5,10,16.9,0,0,4.1,12.5 -2020-10-06T12:00,81,8,13.6,0,0,4.4,13 -2020-10-06T13:00,83.8,7,11.9,0,0,4.5,13.2 -2020-10-06T14:00,84.8,6,11.3,0,0,3.9,13 -2020-10-06T15:00,84.7,6,9.6,0,0,4.5,11.4 -2020-10-06T16:00,83.5,6,8.8,0,0,6.2,12.1 -2020-10-06T17:00,79.1,11,19.2,0,0,4.1,11.2 -2020-10-06T18:00,76.6,9,13.9,0,0,2.1,4.7 -2020-10-06T19:00,70.9,12,15.9,0,0,1.3,2.7 -2020-10-06T20:00,61.7,19,19.6,0,0,4,4.7 -2020-10-06T21:00,55,29,23.6,0,0,4,5.4 -2020-10-06T22:00,54,31,24.3,0,0,4.6,6.9 -2020-10-06T23:00,52.8,32,24.1,0,0,4.3,6.9 -2020-10-07T00:00,51.1,34,23.7,0,0,4.3,6.9 -2020-10-07T01:00,50.1,34,23,0,0,5.7,7.4 -2020-10-07T02:00,49.2,34,21.7,0,0,7.3,8.7 -2020-10-07T03:00,52.9,27,19.9,0,0,5.5,8.7 -2020-10-07T04:00,54.9,24,19,0,0,3.5,6.7 -2020-10-07T05:00,47.8,36,21.9,0,0,5.2,5.6 -2020-10-07T06:00,46.4,37,21.7,0,0,6.5,7.6 -2020-10-07T07:00,52.3,31,22.3,0,0,3.5,7.6 -2020-10-07T08:00,60.4,25,24.3,0,0,4.7,10.1 -2020-10-07T09:00,70.2,16,21.6,0,0,4.4,11.2 -2020-10-07T10:00,77.2,11,19.4,0,0,3.7,11.2 -2020-10-07T11:00,80.2,9,16,0,0,6.5,15 -2020-10-07T12:00,81.3,8,15.5,0,0,7.8,17.4 -2020-10-07T13:00,81.9,8,16,0,0,7,17.7 -2020-10-07T14:00,82.3,9,16.5,0,0,5.6,16.6 -2020-10-07T15:00,82.2,9,17.2,0,0,5.1,13.9 -2020-10-07T16:00,81.4,9,18.3,0,0,4.9,12.1 -2020-10-07T17:00,75.2,14,22.9,0,0,5.5,9.8 -2020-10-07T18:00,67.7,17,21,0,0,6.7,8.9 -2020-10-07T19:00,66.2,19,23,0,0,4.8,8.3 -2020-10-07T20:00,64.6,22,24.5,0,0,4.4,5.6 -2020-10-07T21:00,64.8,22,24.5,0,0,0.6,5.1 -2020-10-07T22:00,55.7,31,25.6,0,0,3.6,4.5 -2020-10-07T23:00,54.5,33,26.2,0,0,3.6,4.7 -2020-10-08T00:00,51.8,37,26.5,0,0,1.1,4.5 -2020-10-08T01:00,48.9,43,27.3,0,0,2.3,3.8 -2020-10-08T02:00,46.5,48,28,0,0,3,4.7 -2020-10-08T03:00,45.1,52,28.4,0,0,3.5,4.7 -2020-10-08T04:00,44.1,54,28.5,0,0,3.4,4.9 -2020-10-08T05:00,43.9,52,27.3,0,0,2.6,4.5 -2020-10-08T06:00,42.2,55,27.2,0,0,3.4,4 -2020-10-08T07:00,47.4,46,27.8,0,0,4,6.7 -2020-10-08T08:00,56,32,26.4,0,0,4.5,10.3 -2020-10-08T09:00,65,21,24.2,0,0,3.9,11.2 -2020-10-08T10:00,73.9,13,20.2,0,0,3.3,11.2 -2020-10-08T11:00,79.4,10,17.2,0,0,1.9,11 -2020-10-08T12:00,82.7,8,16,0,0,2.2,10.1 -2020-10-08T13:00,84.7,7,15.3,0,0,3.5,11.4 -2020-10-08T14:00,85.7,7,14.8,0,0,5.1,13 -2020-10-08T15:00,85.5,7,13.8,0,0,8.7,16.6 -2020-10-08T16:00,82.9,8,14.5,0,0,11.5,19.9 -2020-10-08T17:00,80.6,8,13.6,0,0,1.3,19.7 -2020-10-08T18:00,73.7,11,16.3,0,0,2.9,3.8 -2020-10-08T19:00,63.9,17,18.6,0,0,4.9,6.9 -2020-10-08T20:00,60.6,21,20.4,0,0,4.5,7.6 -2020-10-08T21:00,59,20,17.5,0,0,5.9,9.4 -2020-10-08T22:00,57.5,18,14.8,0,0,6,10.1 -2020-10-08T23:00,56.8,19,14.9,0,0,5.9,10.3 -2020-10-09T00:00,55,21,16.2,0,0,5.3,9.6 -2020-10-09T01:00,53.7,24,17.6,0,0,5.2,8.5 -2020-10-09T02:00,52.4,26,18.7,0,0,5,8.1 -2020-10-09T03:00,50.5,30,19.9,0,0,6,7.8 -2020-10-09T04:00,51.2,30,20.6,0,0,4.7,7.8 -2020-10-09T05:00,50.1,34,22.9,0,0,5.9,11 -2020-10-09T06:00,50,34,22.6,0,0,5.4,8.1 -2020-10-09T07:00,54,31,23.9,0,0,3.7,7.6 -2020-10-09T08:00,61.5,25,25.8,0,0,2.7,8.1 -2020-10-09T09:00,70.5,19,26.2,0,0,3.4,9.6 -2020-10-09T10:00,77.9,13,23.3,0,0,3.6,11.6 -2020-10-09T11:00,81.1,11,22.2,0,0,1.1,11.2 -2020-10-09T12:00,82.6,11,22.3,0,0,1.4,9.8 -2020-10-09T13:00,82.3,11,22.2,0,0,1,9.2 -2020-10-09T14:00,82.6,11,21.9,0,0,2.9,10.1 -2020-10-09T15:00,82.8,10,21.2,0,0,5.8,12.5 -2020-10-09T16:00,81.7,11,21.7,0,0,8.1,14.3 -2020-10-09T17:00,74.9,17,27.1,0,0,6.3,14.3 -2020-10-09T18:00,74.3,14,22.6,0,0,6.8,10.7 -2020-10-09T19:00,69.8,17,22.6,0,0,4.7,11.2 -2020-10-09T20:00,67.8,19,23.5,0,0,3.7,7.2 -2020-10-09T21:00,64.3,24,26.5,0,0,4.7,7.6 -2020-10-09T22:00,58.8,31,28.6,0,0,5.4,8.1 -2020-10-09T23:00,62.7,26,27.7,0,0,3.3,6.3 -2020-10-10T00:00,56.2,34,28,0,0,3.5,4 -2020-10-10T01:00,51.7,42,29.1,0,0,3.9,6.3 -2020-10-10T02:00,49.2,46,29,0,0,3.2,5.4 -2020-10-10T03:00,47.7,49,29.3,0,0,3.5,4.9 -2020-10-10T04:00,48,46,28.3,0,0,4.9,6.5 -2020-10-10T05:00,46.3,50,28.7,0,0,5.1,7.4 -2020-10-10T06:00,44.9,53,28.6,0,0,2.9,6.3 -2020-10-10T07:00,48.4,48,29.6,0,0,2.7,5.4 -2020-10-10T08:00,56.6,34,28.7,0,0,1.5,6.5 -2020-10-10T09:00,62.7,24,25.8,0,0,2.2,9.2 -2020-10-10T10:00,68.2,19,24.3,0,0,1.9,9.6 -2020-10-10T11:00,73.6,15,23.3,0,0,1.4,9.6 -2020-10-10T12:00,78.2,13,22.6,0,0,1.8,9.8 -2020-10-10T13:00,81.1,11,21.3,0,0,3,10.7 -2020-10-10T14:00,82.6,10,20.8,0,0,7.9,15.7 -2020-10-10T15:00,80.6,13,24.4,0,0,15,26.2 -2020-10-10T16:00,79.4,13,24.7,0,0,11.8,26.6 -2020-10-10T17:00,75.8,16,26.6,0,0,2.4,19.7 -2020-10-10T18:00,71.5,19,27.4,0,0,4.2,5.4 -2020-10-10T19:00,65.5,25,28.4,0,0,4.5,4.9 -2020-10-10T20:00,62.1,29,29.5,0,0,4.4,7.2 -2020-10-10T21:00,57.7,34,29.2,0,0,4.2,6.7 -2020-10-10T22:00,56.4,35,29.1,0,0,5.4,8.7 -2020-10-10T23:00,55.4,35,28.1,0,0,4.9,8.9 -2020-10-11T00:00,54.4,35,27.2,0,0,5.6,9.2 -2020-10-11T01:00,53.7,34,26.1,0,0,6.2,10.3 -2020-10-11T02:00,55.6,30,24.4,0,0,6.9,10.7 -2020-10-11T03:00,56.3,28,23.2,0,0,8.2,13 -2020-10-11T04:00,56.5,27,22.9,0,0,10.4,16.8 -2020-10-11T05:00,53.9,32,24.6,0,0,9.4,17.7 -2020-10-11T06:00,51.5,35,24.7,0,0,8.1,15.4 -2020-10-11T07:00,54.8,32,25.2,0,0,8.9,14.3 -2020-10-11T08:00,64.5,23,25.7,0,0,8.6,15.7 -2020-10-11T09:00,72.3,16,23.5,0,0,9,17.4 -2020-10-11T10:00,74.1,15,23,0,0,10.7,19.7 -2020-10-11T11:00,74.5,16,26,0,0,12.7,24.6 -2020-10-11T12:00,73.5,18,27.6,0,0,15.9,28.9 -2020-10-11T13:00,61.5,31,30.9,0.004,0,24.4,45.9 -2020-10-11T14:00,60.2,29,28,0.008,0,24.7,43 -2020-10-11T15:00,59.1,28,25.7,0.004,0,21.5,42.7 -2020-10-11T16:00,55.3,26,21.3,0,0,21.9,38.9 -2020-10-11T17:00,52.3,28,20.5,0,0,16.3,37.6 -2020-10-11T18:00,50.5,32,21.5,0,0,12,28.4 -2020-10-11T19:00,48.5,37,23.5,0,0,7.9,20.4 -2020-10-11T20:00,46.2,41,24.1,0,0,4.3,13.2 -2020-10-11T21:00,46.7,40,23.5,0,0,2.5,7.2 -2020-10-11T22:00,44.6,42,22.6,0,0,8.5,11.9 -2020-10-11T23:00,44.2,39,20.8,0,0,10,16.3 -2020-10-12T00:00,43,41,20.8,0,0,9.9,15.9 -2020-10-12T01:00,42.5,42,20.9,0,0,11.5,18.3 -2020-10-12T02:00,41.5,43,20.6,0,0,10,18.3 -2020-10-12T03:00,40.1,45,20.5,0,0,5.9,15.9 -2020-10-12T04:00,38,51,21.7,0,0,4.1,9.2 -2020-10-12T05:00,39,48,20.9,0,0,4.4,7.8 -2020-10-12T06:00,36.7,51,20.4,0,0,5.1,6.7 -2020-10-12T07:00,41.6,38,17.9,0,0,7.6,10.5 -2020-10-12T08:00,48.5,26,15.3,0,0,4.1,12.5 -2020-10-12T09:00,55.2,19,13.3,0,0,4,10.7 -2020-10-12T10:00,59.5,16,13.7,0,0,4.7,13.2 -2020-10-12T11:00,64.5,15,15.4,0,0,2.7,13.2 -2020-10-12T12:00,69.5,13,16.4,0,0,2.9,11.2 -2020-10-12T13:00,73.6,11,15.4,0,0,5.2,13.6 -2020-10-12T14:00,75.8,9,11.8,0,0,9.5,19 -2020-10-12T15:00,75.7,8,9.7,0,0,11,21 -2020-10-12T16:00,74.3,8,9.5,0,0,8.9,20.8 -2020-10-12T17:00,68.9,12,14.3,0,0,7.2,15.9 -2020-10-12T18:00,63.3,15,14.8,0,0,7.1,12.8 -2020-10-12T19:00,56.5,22,18.1,0,0,4.1,11.4 -2020-10-12T20:00,51.9,31,22,0,0,3.7,6.7 -2020-10-12T21:00,55.3,27,21.7,0,0,1.9,4.7 -2020-10-12T22:00,55.2,27,21.7,0,0,1.4,2.5 -2020-10-12T23:00,50.9,31,21.1,0,0,3.5,4.3 -2020-10-13T00:00,46.8,34,19.8,0,0,6,7.8 -2020-10-13T01:00,49,31,19.4,0,0,4.1,8.3 -2020-10-13T02:00,43.6,39,20,0,0,5.8,7.6 -2020-10-13T03:00,42.6,42,21.1,0,0,4.4,7.4 -2020-10-13T04:00,42.1,44,21.7,0,0,4.5,7.2 -2020-10-13T05:00,42.3,45,22.6,0,0,5.2,7.4 -2020-10-13T06:00,42.5,43,21.7,0,0,5.3,8.7 -2020-10-13T07:00,46.4,41,24.2,0,0,1.6,8.3 -2020-10-13T08:00,54.3,28,22.2,0,0,1.4,6 -2020-10-13T09:00,58.4,25,22.9,0,0,10.4,19.5 -2020-10-13T10:00,61.3,21,21,0,0,8,20.1 -2020-10-13T11:00,66.3,17,20.6,0,0,1.6,17.7 -2020-10-13T12:00,73.5,13,20.4,0,0,5.9,14.1 -2020-10-13T13:00,77.7,11,20,0,0,3.5,15.7 -2020-10-13T14:00,78.5,11,20.3,0,0,5.4,13.2 -2020-10-13T15:00,79.6,11,20.9,0,0,3.8,13.4 -2020-10-13T16:00,79,11,20.9,0,0,3.6,10.1 -2020-10-13T17:00,68.5,21,27.1,0,0,5.8,8.3 -2020-10-13T18:00,64.2,21,23.9,0,0,6.3,6.7 -2020-10-13T19:00,61.3,23,23.4,0,0,5.1,8.5 -2020-10-13T20:00,56.8,28,23.9,0,0,5.2,8.3 -2020-10-13T21:00,55.9,30,25,0,0,5.2,8.5 -2020-10-13T22:00,55.5,30,24.8,0,0,7,11 -2020-10-13T23:00,59.4,23,21.5,0,0,10.1,15.9 -2020-10-14T00:00,60.9,18,17.5,0,0,11.7,19.2 -2020-10-14T01:00,59.7,19,17,0,0,11.4,19.2 -2020-10-14T02:00,58.1,20,17.2,0,0,10.3,18.3 -2020-10-14T03:00,55.6,23,18.3,0,0,7.8,16.8 -2020-10-14T04:00,52.1,28,20.1,0,0,5.6,12.5 -2020-10-14T05:00,51.4,30,21.3,0,0,5,9.2 -2020-10-14T06:00,52.6,28,20.5,0,0,6.5,10.1 -2020-10-14T07:00,55.5,26,21.5,0,0,5.6,12.5 -2020-10-14T08:00,62.7,23,24.7,0,0,3.4,9.2 -2020-10-14T09:00,69.5,17,22.5,0,0,3.8,10.3 -2020-10-14T10:00,73.8,14,20.9,0,0,1.4,10.3 -2020-10-14T11:00,78.2,13,23.8,0,0,4.7,11.4 -2020-10-14T12:00,80.5,12,23.6,0,0,10.1,21.5 -2020-10-14T13:00,80.4,12,22.9,0,0,14,25.9 -2020-10-14T14:00,82.4,11,22.3,0,0,11.4,26.6 -2020-10-14T15:00,71.4,21,29.8,0,0,16.4,27.7 -2020-10-14T16:00,65.6,27,30.9,0,0,16.7,31.8 -2020-10-14T17:00,55.6,48,36.3,0,0,12.2,28.2 -2020-10-14T18:00,52.5,54,36.4,0,0,9.7,20.6 -2020-10-14T19:00,48.8,59,35.3,0,0,13.1,21.9 -2020-10-14T20:00,46.6,54,31,0,0,7.6,22.1 -2020-10-14T21:00,46.5,56,31.7,0,0,7.4,13.6 -2020-10-14T22:00,45.2,63,33.3,0,0,4,13.2 -2020-10-14T23:00,44.4,66,33.8,0,0,2.1,8.5 -2020-10-15T00:00,44.3,66,33.6,0,0,0.9,5.6 -2020-10-15T01:00,43.7,63,32.1,0,0,0.5,4.3 -2020-10-15T02:00,43.4,57,29,0,0,2.9,2.9 -2020-10-15T03:00,43.3,46,24.2,0,0,2.9,3.4 -2020-10-15T04:00,42.4,48,23.9,0,0,1.6,3.1 -2020-10-15T05:00,41.5,53,25.5,0,0,7.4,3.6 -2020-10-15T06:00,40.2,54,24.9,0,0,6.4,12.3 -2020-10-15T07:00,40.5,54,25.3,0,0,5.5,11 -2020-10-15T08:00,41.8,51,25.1,0,0,4.8,11 -2020-10-15T09:00,44.4,46,25.1,0,0,2.2,11.6 -2020-10-15T10:00,47.6,41,25,0,0,1.5,9.2 -2020-10-15T11:00,50.5,36,24.6,0,0,4.3,13 -2020-10-15T12:00,53.2,32,24.2,0,0,6.3,16.3 -2020-10-15T13:00,54.6,29,23,0,0,5.3,16.8 -2020-10-15T14:00,56.1,27,22.5,0,0,5.5,14.8 -2020-10-15T15:00,55.9,28,22.9,0,0,7.1,15.9 -2020-10-15T16:00,54.5,30,23.5,0,0,8,15.9 -2020-10-15T17:00,51.3,29,19.9,0,0,6.3,15.9 -2020-10-15T18:00,47.6,35,21,0,0,9.5,12.3 -2020-10-15T19:00,42.1,49,24.4,0,0,6.3,22.6 -2020-10-15T20:00,41.5,52,25,0,0,3.5,10.3 -2020-10-15T21:00,39.5,59,26.2,0,0,3,6 -2020-10-15T22:00,38.8,61,26.4,0,0,2,4.3 -2020-10-15T23:00,37.6,64,26.4,0,0,3.5,5.4 -2020-10-16T00:00,37,65,26.3,0,0,4.3,7.6 -2020-10-16T01:00,36.1,69,26.7,0,0,4.7,8.1 -2020-10-16T02:00,34.3,74,27.1,0,0,3.8,7.8 -2020-10-16T03:00,35.2,72,27.1,0,0,2,4.9 -2020-10-16T04:00,32.5,81,27.3,0,0,3,4 -2020-10-16T05:00,31.6,88,28.5,0,0,3,4.3 -2020-10-16T06:00,30.5,91,28,0,0,3.4,5.1 -2020-10-16T07:00,32.8,80,27.4,0,0,3.7,7.4 -2020-10-16T08:00,38.2,60,25.4,0,0,1.1,7.4 -2020-10-16T09:00,44.1,44,23.5,0,0,2,8.7 -2020-10-16T10:00,50.8,29,19.9,0,0,2.3,10.1 -2020-10-16T11:00,56.5,21,17.4,0,0,2.7,12.1 -2020-10-16T12:00,61,17,15.8,0,0,2,11.2 -2020-10-16T13:00,66,15,17,0,0,3.3,11.6 -2020-10-16T14:00,70.3,13,17.2,0,0,2.7,11.6 -2020-10-16T15:00,72,13,18.1,0,0,2.9,10.1 -2020-10-16T16:00,71.6,14,19.1,0,0,0.8,8.9 -2020-10-16T17:00,62.6,24,25.2,0,0,5.6,6.9 -2020-10-16T18:00,59.5,27,25.3,0,0,4.8,8.7 -2020-10-16T19:00,54.6,35,27.1,0,0,4.3,8.1 -2020-10-16T20:00,52.5,34,25.2,0,0,5.1,7.6 -2020-10-16T21:00,51.9,30,21.7,0,0,5.6,8.7 -2020-10-16T22:00,52.8,26,18.9,0,0,6.1,10.5 -2020-10-16T23:00,51.3,27,18.1,0,0,4.9,9.6 -2020-10-17T00:00,50.4,28,18.5,0,0,4.8,7.4 -2020-10-17T01:00,50.1,28,18.5,0,0,7.1,11.4 -2020-10-17T02:00,48.7,31,19.1,0,0,7.7,12.8 -2020-10-17T03:00,45.6,40,22.4,0,0,5.1,12.3 -2020-10-17T04:00,47.2,40,23.9,0,0,2.4,6.5 -2020-10-17T05:00,51.6,33,23.4,0,0,2.3,7.2 -2020-10-17T06:00,45.6,41,23,0,0,4.7,5.8 -2020-10-17T07:00,50.5,32,21.5,0,0,3,6 -2020-10-17T08:00,56.1,29,24.4,0,0,2.1,5.6 -2020-10-17T09:00,62.1,22,23.2,0,0,2.4,7.8 -2020-10-17T10:00,66.4,18,21.5,0,0,5.4,12.3 -2020-10-17T11:00,69.2,16,21.7,0,0,7.5,16.3 -2020-10-17T12:00,72,15,22.2,0,0,6.5,17 -2020-10-17T13:00,74.4,15,23,0,0,2.9,15.4 -2020-10-17T14:00,74.5,15,23.4,0,0,0.3,10.7 -2020-10-17T15:00,74.5,15,23.2,0,0,3.7,9.6 -2020-10-17T16:00,73,18,26.6,0,0,2.1,9.8 -2020-10-17T17:00,62,28,28.3,0,0,6.8,4.5 -2020-10-17T18:00,62.5,24,24.8,0,0,4.2,8.1 -2020-10-17T19:00,61.3,24,24.6,0,0,4.7,5.6 -2020-10-17T20:00,54.1,33,25.9,0,0,3.4,5.6 -2020-10-17T21:00,52.8,43,30.7,0,0,17,28.2 -2020-10-17T22:00,46.9,62,34.6,0,0,12.4,28.9 -2020-10-17T23:00,43.3,73,35.2,0,0,3.1,20.6 -2020-10-18T00:00,42.1,76,35,0,0,3.2,5.1 -2020-10-18T01:00,40.8,80,35.1,0,0,3,4.5 -2020-10-18T02:00,40.7,80,35.1,0,0,2.6,3.6 -2020-10-18T03:00,39.5,83,34.8,0,0,5,8.1 -2020-10-18T04:00,39.4,82,34.3,0,0,5.6,10.1 -2020-10-18T05:00,38.9,77,32.2,0,0,6.3,12.1 -2020-10-18T06:00,37.9,76,30.8,0,0,9.4,16.6 -2020-10-18T07:00,37.7,77,31.1,0,0,6.4,16.8 -2020-10-18T08:00,38.5,75,31.2,0.004,0,4.8,12.3 -2020-10-18T09:00,39.7,70,30.8,0,0,6.4,13.4 -2020-10-18T10:00,41.1,66,30.7,0,0,5.2,13.4 -2020-10-18T11:00,43.3,60,30.4,0,0,4.8,12.8 -2020-10-18T12:00,46.8,52,30.2,0,0,3.1,12.8 -2020-10-18T13:00,50.3,46,30.2,0,0,4.9,13.6 -2020-10-18T14:00,52.7,42,30.4,0,0,6.4,15.2 -2020-10-18T15:00,53.6,41,30.7,0,0,4.5,15.4 -2020-10-18T16:00,54.5,41,31.1,0,0,4.7,11.9 -2020-10-18T17:00,46,54,30.5,0,0,4.3,12.3 -2020-10-18T18:00,43.2,62,30.8,0,0,1.8,7.2 -2020-10-18T19:00,41.3,66,30.7,0,0,3.4,5.6 -2020-10-18T20:00,38.8,73,30.7,0,0,5,8.3 -2020-10-18T21:00,38.8,75,31.4,0,0,4,8.9 -2020-10-18T22:00,38.1,76,31.3,0,0,5.2,9.4 -2020-10-18T23:00,36.9,82,31.8,0,0,4.5,8.9 -2020-10-19T00:00,37.6,81,32.2,0,0,1.2,7.8 -2020-10-19T01:00,36,87,32.4,0,0,3.4,6.3 -2020-10-19T02:00,34.5,91,32.3,0,0,3,5.8 -2020-10-19T03:00,37,82,32.1,0,0,2.9,3.8 -2020-10-19T04:00,35.2,89,32.2,0,0,3,4 -2020-10-19T05:00,35.2,84,30.8,0,0,5.7,5.8 -2020-10-19T06:00,35.7,81,30.5,0,0,5.9,7.2 -2020-10-19T07:00,41.5,59,28.4,0,0,5.2,7.6 -2020-10-19T08:00,49.7,40,26.2,0,0,5.2,11.6 -2020-10-19T09:00,57.7,30,26.3,0,0,2.5,10.3 -2020-10-19T10:00,62.8,25,26.2,0,0,4.2,10.1 -2020-10-19T11:00,66,21,24.7,0,0,6.8,17 -2020-10-19T12:00,69.1,20,26.2,0,0,6.8,15.9 -2020-10-19T13:00,69.4,22,29.1,0,0,8.5,18.1 -2020-10-19T14:00,69.7,22,29.5,0,0,7,18.1 -2020-10-19T15:00,70.1,22,29.1,0,0,4.7,15 -2020-10-19T16:00,68.5,23,29.7,0,0,3.3,10.7 -2020-10-19T17:00,60.3,31,29.1,0,0,7.5,6.7 -2020-10-19T18:00,54.8,41,31.6,0,0,4.7,12.3 -2020-10-19T19:00,54.6,42,32.1,0,0,2.7,7.8 -2020-10-19T20:00,48.7,54,32.6,0,0,3.8,4.3 -2020-10-19T21:00,48.7,52,31.9,0,0,4,5.8 -2020-10-19T22:00,45.6,56,30.7,0,0,4.1,5.1 -2020-10-19T23:00,42.7,59,29.3,0,0,1.7,5.1 -2020-10-20T00:00,40.3,62,28.4,0,0,2.6,4.3 -2020-10-20T01:00,39.9,59,26.6,0,0,3.4,5.1 -2020-10-20T02:00,42.7,52,26.2,0,0,0.9,4.3 -2020-10-20T03:00,40.4,55,25.3,0,0,4.1,4.7 -2020-10-20T04:00,39.9,47,21.5,0,0,7.4,8.7 -2020-10-20T05:00,52,23,15.7,0,0,10,11 -2020-10-20T06:00,49.5,26,16.1,0,0,6.9,16.3 -2020-10-20T07:00,47.7,32,19.4,0,0,5.2,11 -2020-10-20T08:00,51,37,25.3,0,0,3.9,8.9 -2020-10-20T09:00,55.9,32,26.3,0,0,3.2,8.5 -2020-10-20T10:00,62.8,21,22.1,0,0,1.2,10.3 -2020-10-20T11:00,67.4,17,20.5,0,0,3.2,11 -2020-10-20T12:00,70.6,16,22.6,0,0,2.2,11 -2020-10-20T13:00,72.7,16,24.3,0,0,6,13.9 -2020-10-20T14:00,72.6,17,25.7,0,0,7.3,16.1 -2020-10-20T15:00,72.5,17,25.6,0,0,5,15.2 -2020-10-20T16:00,70.1,20,27.1,0,0,7.1,11.6 -2020-10-20T17:00,56.5,40,32.2,0,0,9.1,17.2 -2020-10-20T18:00,53.4,45,32.5,0,0,5,15 -2020-10-20T19:00,50.8,50,33,0,0,4.3,8.1 -2020-10-20T20:00,52.5,47,32.8,0,0,0.9,5.8 -2020-10-20T21:00,49.6,53,33.4,0,0,2.2,3.1 -2020-10-20T22:00,49,55,33.6,0,0,0.5,2.9 -2020-10-20T23:00,44.1,67,33.8,0,0,4.8,5.6 -2020-10-21T00:00,42.4,73,34.3,0,0,4.1,6.5 -2020-10-21T01:00,41.2,76,34.3,0,0,2.8,5.4 -2020-10-21T02:00,39.3,82,34.2,0,0,2.1,4.7 -2020-10-21T03:00,38.2,81,32.8,0,0,2.8,4.3 -2020-10-21T04:00,40.6,68,30.8,0,0,2.4,5.6 -2020-10-21T05:00,37.1,85,33.1,0,0,3.2,3.4 -2020-10-21T06:00,34.9,95,33.6,0,0,3.4,7.2 -2020-10-21T07:00,36.2,93,34.5,0,0,2.9,5.6 -2020-10-21T08:00,41.2,76,34.2,0,0,3.4,8.3 -2020-10-21T09:00,47.6,58,33.6,0,0,3.7,10.5 -2020-10-21T10:00,53.4,47,33.5,0,0,7.2,15.4 -2020-10-21T11:00,58.2,33,28.9,0,0,2,16.6 -2020-10-21T12:00,67.1,23,27.6,0,0,3.7,11 -2020-10-21T13:00,73.3,16,24.2,0,0,5.5,13.2 -2020-10-21T14:00,76,13,21,0,0,5,13.2 -2020-10-21T15:00,76.5,13,22,0,0,4.1,12.1 -2020-10-21T16:00,73.9,19,29.6,0,0,2.8,9.4 -2020-10-21T17:00,65.1,21,24.4,0,0,5.6,9.2 -2020-10-21T18:00,57.7,32,27.9,0,0,5.8,8.9 -2020-10-21T19:00,54.6,37,29.1,0,0,4.7,7.6 -2020-10-21T20:00,51.3,42,28.9,0,0,3.8,6.7 -2020-10-21T21:00,48.6,46,28.8,0,0,5.9,7.4 -2020-10-21T22:00,45.6,51,28.7,0,0,3,7.8 -2020-10-21T23:00,44.4,51,27.3,0,0,4.4,6 -2020-10-22T00:00,44.3,40,21.6,0,0,5,6.9 -2020-10-22T01:00,43.7,36,18.8,0,0,6.8,8.5 -2020-10-22T02:00,43.3,35,17.3,0,0,6.2,8.5 -2020-10-22T03:00,42.2,35,16.3,0,0,7.1,8.7 -2020-10-22T04:00,42.7,33,15.4,0,0,8.3,10.1 -2020-10-22T05:00,36.6,98,36.1,0,0,9.8,10.1 -2020-10-22T06:00,35.3,97,34.5,0,0,10.4,17.9 -2020-10-22T07:00,36.4,88,33.3,0,0,8.3,17 -2020-10-22T08:00,37.1,79,31.4,0,0,9.1,17 -2020-10-22T09:00,37.1,76,30.1,0,0,6.7,17 -2020-10-22T10:00,38.8,69,29.4,0,0,6.3,14.1 -2020-10-22T11:00,41.3,61,28.9,0,0,7.4,15.7 -2020-10-22T12:00,44.2,54,28.8,0,0,12.2,22.4 -2020-10-22T13:00,44.6,53,28.3,0,0,13.1,24.6 -2020-10-22T14:00,43.9,52,27.6,0,0,9,24.6 -2020-10-22T15:00,44.7,50,27.1,0,0,10.3,18.8 -2020-10-22T16:00,42.8,55,27.7,0,0,13.6,24.2 -2020-10-22T17:00,35.2,60,22.6,0,0,16.9,23.9 -2020-10-22T18:00,32.5,58,19.4,0,0.028,12.7,28.4 -2020-10-22T19:00,30.4,57,16.9,0,0.028,11.7,22.6 -2020-10-22T20:00,28.3,60,16.3,0,0,11.7,21.5 -2020-10-22T21:00,27.1,64,16.3,0,0,9.2,20.8 -2020-10-22T22:00,26,66,16.3,0,0,7.2,16.8 -2020-10-22T23:00,25,68,15.8,0,0,7.1,13.9 -2020-10-23T00:00,23.4,70,15.1,0,0,7.9,14.8 -2020-10-23T01:00,22.7,71,14.7,0,0,7.4,15 -2020-10-23T02:00,22.6,71,14.5,0,0,6.1,13.9 -2020-10-23T03:00,22.1,72,14.5,0,0,6.5,12.3 -2020-10-23T04:00,21.7,74,14.7,0,0,6.3,12.3 -2020-10-23T05:00,20.3,78,14.5,0,0,6.1,12.1 -2020-10-23T06:00,20,79,14.5,0,0,5.9,12.5 -2020-10-23T07:00,19.9,77,13.8,0,0,3.8,11.4 -2020-10-23T08:00,20.8,73,13.5,0,0,3.7,10.1 -2020-10-23T09:00,23.3,65,13.2,0,0,2.9,10.3 -2020-10-23T10:00,25.3,58,12.7,0,0,2.3,10.3 -2020-10-23T11:00,28.6,52,13,0,0,2.9,11.6 -2020-10-23T12:00,34.1,44,14.5,0,0,3.7,14.1 -2020-10-23T13:00,36.1,41,14.8,0,0,2.9,13 -2020-10-23T14:00,37.7,39,15.1,0,0,6.4,15.4 -2020-10-23T15:00,38.7,37,14.9,0,0,6.6,16.1 -2020-10-23T16:00,38.7,38,15,0,0,5.2,15 -2020-10-23T17:00,33.7,54,19,0,0,1.8,11.4 -2020-10-23T18:00,32.1,60,19.7,0,0,4.7,7.6 -2020-10-23T19:00,29.9,64,19.3,0,0,1.4,8.3 -2020-10-23T20:00,28,66,18.2,0,0,0.9,3.1 -2020-10-23T21:00,27.8,68,18.5,0,0,3.1,5.1 -2020-10-23T22:00,27.6,72,19.7,0,0,3.4,7.4 -2020-10-23T23:00,28.6,69,19.9,0,0,2.1,5.6 -2020-10-24T00:00,26.9,75,19.9,0,0,3.6,6.9 -2020-10-24T01:00,25.3,79,19.6,0,0,3,7.4 -2020-10-24T02:00,23.9,80,18.7,0,0,4.8,8.3 -2020-10-24T03:00,21.9,84,17.9,0,0,5.9,11 -2020-10-24T04:00,20.9,87,17.8,0,0,5,10.5 -2020-10-24T05:00,20.4,92,18.5,0,0,4.6,12.5 -2020-10-24T06:00,21.7,89,18.9,0,0,3.6,11.6 -2020-10-24T07:00,24.1,82,19.4,0,0,5.9,11.9 -2020-10-24T08:00,32.8,61,20.7,0,0,5.1,11.2 -2020-10-24T09:00,41.1,47,22.5,0,0,5.5,12.1 -2020-10-24T10:00,46.3,41,23.6,0,0,8.1,18.3 -2020-10-24T11:00,52.7,34,25.1,0,0,3.5,17.4 -2020-10-24T12:00,56.8,29,24.6,0,0,7,16.3 -2020-10-24T13:00,59.4,27,25.1,0,0,7.3,16.8 -2020-10-24T14:00,59.5,27,25.4,0,0,7.1,17.4 -2020-10-24T15:00,59.2,27,25.6,0,0,7.3,15.7 -2020-10-24T16:00,57.5,30,25.9,0,0,5.4,14.8 -2020-10-24T17:00,47.1,39,23.6,0,0,4.7,9.6 -2020-10-24T18:00,44.9,45,24.7,0,0,7.9,12.5 -2020-10-24T19:00,42.7,49,24.9,0,0,10.1,15.9 -2020-10-24T20:00,38.8,56,24.3,0,0,11.9,19.5 -2020-10-24T21:00,36.5,60,24.1,0,0,11.4,19.9 -2020-10-24T22:00,34.2,65,23.5,0,0,9,19 -2020-10-24T23:00,32.5,68,23.1,0,0,5.9,15 -2020-10-25T00:00,32.2,67,22.6,0,0,5.7,10.5 -2020-10-25T01:00,31.6,68,22.2,0,0,6.6,11.2 -2020-10-25T02:00,31.2,69,22.4,0,0,7.1,12.5 -2020-10-25T03:00,28.4,76,21.7,0,0.055,12.8,20.6 -2020-10-25T04:00,23.3,76,17,0,0.083,13,25.9 -2020-10-25T05:00,17.7,70,9.7,0,0.055,13.1,23 -2020-10-25T06:00,16.3,72,8.8,0,0.055,12.3,23.5 -2020-10-25T07:00,15.1,71,7.3,0,0.055,12.2,23.7 -2020-10-25T08:00,15.3,65,5.6,0.004,0.028,8.4,21.7 -2020-10-25T09:00,15.7,62,5.1,0,0.028,9.2,19.7 -2020-10-25T10:00,16.3,62,5.6,0,0.055,6.3,18.1 -2020-10-25T11:00,17.2,62,6.3,0,0.11,7.3,16.1 -2020-10-25T12:00,17.5,62,6.5,0,0.083,9,17.2 -2020-10-25T13:00,17.8,61,6.6,0,0.083,11.2,22.6 -2020-10-25T14:00,17,64,6.9,0,0.138,12.8,23 -2020-10-25T15:00,16.1,66,6.8,0,0.138,11.4,23.3 -2020-10-25T16:00,15.3,68,6.6,0,0.11,11,21.7 -2020-10-25T17:00,11.2,76,5.2,0,0.11,10.2,21 -2020-10-25T18:00,10.8,73,3.9,0,0.22,9.5,17.2 -2020-10-25T19:00,10.6,75,4.2,0,0.165,9.2,17.7 -2020-10-25T20:00,10.1,83,6.1,0,0.11,8.1,15.9 -2020-10-25T21:00,9.5,83,5.5,0,0.11,7.4,14.1 -2020-10-25T22:00,9.4,83,5.3,0,0.11,6,12.5 -2020-10-25T23:00,8.6,84,4.8,0,0.11,6.2,11.9 -2020-10-26T00:00,8.2,85,4.7,0,0.11,5.4,10.5 -2020-10-26T01:00,8,87,4.8,0,0.055,4.6,9.4 -2020-10-26T02:00,7.6,88,4.8,0,0.055,6.5,10.7 -2020-10-26T03:00,7.1,88,4.3,0,0.11,6.8,10.3 -2020-10-26T04:00,6.5,88,3.7,0,0.083,7.8,11.6 -2020-10-26T05:00,6.5,89,3.9,0,0.055,4.8,11.9 -2020-10-26T06:00,6,89,3.5,0,0.055,5.8,8.9 -2020-10-26T07:00,6.3,89,3.7,0,0.055,4.5,8.7 -2020-10-26T08:00,7.1,88,4.3,0,0.028,4.5,7.6 -2020-10-26T09:00,7.3,88,4.5,0,0,4.8,8.5 -2020-10-26T10:00,7.6,86,4.2,0,0,2.8,9.2 -2020-10-26T11:00,8.5,77,2.7,0,0,1.3,6.7 -2020-10-26T12:00,9.2,75,2.8,0,0.028,2.8,6.9 -2020-10-26T13:00,10.4,72,3.3,0,0.028,3.8,8.5 -2020-10-26T14:00,10.5,74,3.7,0,0,2.7,8.7 -2020-10-26T15:00,9.9,77,4.1,0,0,1.8,6.3 -2020-10-26T16:00,7.1,79,1.9,0,0,4,5.6 -2020-10-26T17:00,6.2,89,3.6,0,0,2.9,5.1 -2020-10-26T18:00,6.6,88,3.7,0,0,4.1,4.3 -2020-10-26T19:00,1.8,92,0,0,0,5.7,6.3 -2020-10-26T20:00,-1.4,95,-2.5,0,0,5.5,7.6 -2020-10-26T21:00,-2.5,91,-4.4,0,0,4.7,6.7 -2020-10-26T22:00,-5.3,89,-7.9,0,0,5.7,6.5 -2020-10-26T23:00,-7.8,83,-11.6,0,0,7.7,8.7 -2020-10-27T00:00,-4.4,77,-9.8,0,0,8.6,10.3 -2020-10-27T01:00,-1.8,77,-7.4,0,0,7.7,10.1 -2020-10-27T02:00,-2.6,78,-7.6,0,0,8.5,9.6 -2020-10-27T03:00,1,75,-5.3,0,0,7,10.3 -2020-10-27T04:00,-1.4,78,-6.6,0,0,7.5,8.9 -2020-10-27T05:00,-0.3,73,-7,0,0,7.5,9.2 -2020-10-27T06:00,-4.1,73,-10.7,0,0,8.4,9.8 -2020-10-27T07:00,-5.6,72,-12.2,0,0,9.8,12.1 -2020-10-27T08:00,0.4,67,-8,0,0,8.1,11.9 -2020-10-27T09:00,8.4,63,-1.5,0,0,7,9.6 -2020-10-27T10:00,21.4,44,2.9,0,0,3,8.5 -2020-10-27T11:00,22.7,59,10.7,0,0,4.4,6 -2020-10-27T12:00,29,60,16.8,0,0,5.8,11 -2020-10-27T13:00,33.8,47,15.8,0,0,5.8,8.7 -2020-10-27T14:00,37.9,34,12,0,0,3.8,7.2 -2020-10-27T15:00,31,56,17.1,0,0,5.1,7.8 -2020-10-27T16:00,24.4,69,15.7,0,0,5.6,10.3 -2020-10-27T17:00,23,71,14.9,0,0,2.1,9.6 -2020-10-27T18:00,22.4,73,14.9,0,0,1.4,2.5 -2020-10-27T19:00,15.9,75,9.2,0,0,6.7,7.2 -2020-10-27T20:00,14,80,9,0,0,5.9,9.4 -2020-10-27T21:00,7.6,87,4.5,0,0,6.2,7.6 -2020-10-27T22:00,7.2,81,2.7,0,0,5.7,7.4 -2020-10-27T23:00,7.2,75,1,0,0,7.2,8.7 -2020-10-28T00:00,7.5,79,2.4,0,0,6.3,8.5 -2020-10-28T01:00,9,78,3.5,0,0,5.9,7.8 -2020-10-28T02:00,9.5,76,3.5,0,0,7.2,8.7 -2020-10-28T03:00,10.3,77,4.5,0,0,7.1,8.7 -2020-10-28T04:00,13.3,74,6.5,0,0,8.2,9.8 -2020-10-28T05:00,18,76,11.6,0,0,7.2,9.8 -2020-10-28T06:00,18.9,74,11.8,0,0,6.9,9.8 -2020-10-28T07:00,23,71,14.9,0,0,4.2,8.1 -2020-10-28T08:00,22.2,74,15.1,0,0,7.4,10.3 -2020-10-28T09:00,36.1,52,20.4,0,0,2.6,9.2 -2020-10-28T10:00,35.2,68,25.7,0,0,6.3,7.8 -2020-10-28T11:00,40,63,28.3,0,0,4.3,8.7 -2020-10-28T12:00,41.2,64,29.8,0,0,5.2,8.3 -2020-10-28T13:00,41.7,60,28.7,0,0,4.6,8.7 -2020-10-28T14:00,41.2,60,28.4,0,0,4.8,9.4 -2020-10-28T15:00,39.2,65,28.6,0,0,5.4,8.7 -2020-10-28T16:00,44.1,48,25.5,0,0,4,8.5 -2020-10-28T17:00,35.7,71,27.1,0,0,7.5,6 -2020-10-28T18:00,40.5,58,26.8,0,0,4,8.9 -2020-10-28T19:00,33.5,68,24.3,0,0,4.9,5.6 -2020-10-28T20:00,28.3,80,22.8,0,0,6.2,8.7 -2020-10-28T21:00,24.1,87,20.7,0,0,6,8.5 -2020-10-28T22:00,21.6,88,18.7,0,0,6.1,8.5 -2020-10-28T23:00,19.2,88,16.3,0,0,7,9.2 -2020-10-29T00:00,18.3,87,15.1,0,0,8.6,10.7 -2020-10-29T01:00,19.7,84,15.5,0,0,8.3,11.2 -2020-10-29T02:00,18.9,85,15,0,0,8.4,11.4 -2020-10-29T03:00,21.2,82,16.7,0,0,7,10.5 -2020-10-29T04:00,20.4,82,15.8,0,0,7.1,8.9 -2020-10-29T05:00,20.4,84,16.3,0,0,7.9,9.6 -2020-10-29T06:00,19.3,84,15.2,0,0,8.1,10.7 -2020-10-29T07:00,21.6,81,16.7,0,0,7.3,10.7 -2020-10-29T08:00,27.5,75,20.7,0,0,6.5,10.3 -2020-10-29T09:00,37.5,65,26.8,0,0,4.6,9.6 -2020-10-29T10:00,41.9,59,28.8,0,0,5.4,9.2 -2020-10-29T11:00,44.6,56,30,0,0,6.3,9.8 -2020-10-29T12:00,56.3,31,26,0,0,4.6,10.3 -2020-10-29T13:00,54.1,36,28,0,0,4.9,6.9 -2020-10-29T14:00,46.8,53,30.6,0,0,6.8,10.5 -2020-10-29T15:00,49.8,45,29.1,0,0,6.1,10.3 -2020-10-29T16:00,56.6,34,28.3,0,0,5.3,9.2 -2020-10-29T17:00,51.6,48,32.6,0,0,3.4,6.7 -2020-10-29T18:00,50,50,32.1,0,0,5,7.6 -2020-10-29T19:00,45.1,56,30.4,0,0,6.1,6.7 -2020-10-29T20:00,33.7,76,26.9,0,0,8.9,11.9 -2020-10-29T21:00,33.1,76,26.3,0,0,8.2,11.6 -2020-10-29T22:00,32.5,72,24.6,0,0,8.5,11.6 -2020-10-29T23:00,34.6,63,23.2,0,0,7.4,12.1 -2020-10-30T00:00,36.3,60,23.8,0,0,5.5,8.9 -2020-10-30T01:00,34.1,64,23.1,0,0,5.7,6.7 -2020-10-30T02:00,28.8,70,20.3,0,0,6.8,8.1 -2020-10-30T03:00,27,71,18.8,0,0,7.4,8.9 -2020-10-30T04:00,26.6,70,18.2,0,0,7.3,9.2 -2020-10-30T05:00,26,76,19.6,0,0,7.4,8.9 -2020-10-30T06:00,24.4,74,17.4,0,0,7.6,10.1 -2020-10-30T07:00,25.8,72,18,0,0,6.5,9.4 -2020-10-30T08:00,30.4,69,21.3,0,0,5.4,8.9 -2020-10-30T09:00,42.6,48,24.2,0,0,3.3,8.1 -2020-10-30T10:00,50.2,35,23.7,0,0,3.1,5.6 -2020-10-30T11:00,56.1,29,24.6,0,0,4.1,11.4 -2020-10-30T12:00,59.5,27,25.2,0,0,4.8,12.5 -2020-10-30T13:00,61.9,25,25.8,0,0,4.9,12.8 -2020-10-30T14:00,62.7,25,26.5,0,0,5.6,12.3 -2020-10-30T15:00,61.5,28,27.9,0,0,7.2,13.4 -2020-10-30T16:00,57.8,36,30.8,0,0,5.4,13.2 -2020-10-30T17:00,46,56,30.9,0,0,7.9,8.5 -2020-10-30T18:00,47.6,53,31.4,0,0,2.1,9.4 -2020-10-30T19:00,42.4,63,30.5,0,0,4.5,6.5 -2020-10-30T20:00,38.2,69,29,0,0,4.4,6.9 -2020-10-30T21:00,35.2,73,27.5,0,0,4.8,7.8 -2020-10-30T22:00,33.8,72,25.7,0,0,4.6,7.4 -2020-10-30T23:00,34.1,67,24.3,0,0,5.7,8.3 -2020-10-31T00:00,37.2,54,21.9,0,0,7.2,11 -2020-10-31T01:00,39.1,45,19.5,0,0,7.5,11.9 -2020-10-31T02:00,36.6,48,18.7,0,0,6.4,11.4 -2020-10-31T03:00,32.6,56,18.7,0,0,8,9.8 -2020-10-31T04:00,31.1,59,18.6,0,0,6.9,9.8 -2020-10-31T05:00,28.6,68,19.5,0,0,7,8.7 -2020-10-31T06:00,31.2,63,19.9,0,0,4.3,8.3 -2020-10-31T07:00,34.3,57,20.8,0,0,4.3,7.4 -2020-10-31T08:00,40.7,51,23.9,0,0,4.7,9.2 -2020-10-31T09:00,49.2,41,26.5,0,0,3.6,9.4 -2020-10-31T10:00,56.6,27,22.7,0,0,4.7,10.7 -2020-10-31T11:00,59.8,22,20.7,0,0,5.5,12.8 -2020-10-31T12:00,60.4,25,24.2,0,0,11.1,20.4 -2020-10-31T13:00,55.9,33,27.1,0,0,15.3,27.7 -2020-10-31T14:00,55.7,33,26.7,0,0,9.9,27.3 -2020-10-31T15:00,54.3,35,27,0,0,8.2,19 -2020-10-31T16:00,52.6,39,28,0,0,4.7,15.4 -2020-10-31T17:00,51.3,37,25.8,0,0,2.1,7.6 -2020-10-31T18:00,48.3,41,25.8,0,0,1.1,2.9 -2020-10-31T19:00,43.3,52,26.8,0,0,2.4,2.9 -2020-10-31T20:00,36.1,74,28.6,0,0,3.4,5.1 -2020-10-31T21:00,34,82,29,0,0,3.4,4.9 -2020-10-31T22:00,31.9,88,28.9,0,0,4.4,5.8 -2020-10-31T23:00,31.1,88,27.9,0,0,4.9,6.5 -2020-11-01T00:00,29.8,87,26.4,0,0,4.3,6.7 -2020-11-01T01:00,29.7,82,24.9,0,0,4,5.1 -2020-11-01T02:00,28.1,82,23.5,0,0,5.1,6 -2020-11-01T03:00,28.9,74,21.7,0,0,3.6,6 -2020-11-01T04:00,31.1,66,21.1,0,0,1.2,4.5 -2020-11-01T05:00,31.3,67,21.7,0,0,1,1.8 -2020-11-01T06:00,26.3,79,20.6,0,0,4.6,4.9 -2020-11-01T07:00,28.2,72,20.2,0,0,4,6.7 -2020-11-01T08:00,36,54,21.1,0,0,6.3,11.2 -2020-11-01T09:00,45.3,40,22.4,0,0,6.6,13.2 -2020-11-01T10:00,53.5,28,21.2,0,0,6.5,14.1 -2020-11-01T11:00,60.7,22,21.4,0,0,5.1,14.1 -2020-11-01T12:00,64.9,18,20.6,0,0,4.4,12.1 -2020-11-01T13:00,62.4,26,26.9,0,0,11.1,20.6 -2020-11-01T14:00,61.2,28,27.8,0,0,9,20.8 -2020-11-01T15:00,60.5,29,28,0,0,6.9,17.4 -2020-11-01T16:00,57.5,38,31.7,0,0,3.9,13.2 -2020-11-01T17:00,49.8,45,29.6,0,0,6.1,7.6 -2020-11-01T18:00,45.7,56,30.8,0,0,6,8.5 -2020-11-01T19:00,51.1,42,28.7,0,0,2.9,7.8 -2020-11-01T20:00,52.1,37,26.8,0,0,1.6,3.6 -2020-11-01T21:00,45.6,47,26.4,0,0,1.6,2.2 -2020-11-01T22:00,37.6,63,26,0,0,3.6,4.5 -2020-11-01T23:00,34.8,67,24.8,0,0,4,4.7 -2020-11-02T00:00,33.7,65,23.4,0,0,5.2,6.5 -2020-11-02T01:00,34.1,61,21.8,0,0,5.5,7.4 -2020-11-02T02:00,33.8,62,22,0,0,6.5,8.1 -2020-11-02T03:00,33.4,62,21.6,0,0,6.9,8.3 -2020-11-02T04:00,33,61,20.8,0,0,7.1,8.5 -2020-11-02T05:00,35.3,53,20,0,0,6.1,8.5 -2020-11-02T06:00,34.2,56,19.9,0,0,6.1,7.4 -2020-11-02T07:00,34.6,60,22.2,0,0,5.9,7.6 -2020-11-02T08:00,43.5,43,22.6,0,0,4.5,8.3 -2020-11-02T09:00,51.7,36,25.8,0,0,3.6,9.2 -2020-11-02T10:00,59,29,26.8,0,0,4.4,11 -2020-11-02T11:00,65.8,19,22.4,0,0,4.8,11.6 -2020-11-02T12:00,69.5,15,20.1,0,0,3.1,11.4 -2020-11-02T13:00,71.2,15,20.5,0,0,3,9.6 -2020-11-02T14:00,71.6,15,21.9,0,0,3.4,9.2 -2020-11-02T15:00,70.4,18,25.1,0,0,4.5,8.9 -2020-11-02T16:00,64.4,31,33.4,0,0,4.4,8.5 -2020-11-02T17:00,57.3,33,28.7,0,0,6.9,8.5 -2020-11-02T18:00,53.5,41,30.2,0,0,5.2,8.3 -2020-11-02T19:00,46.9,53,30.7,0,0,3.4,6.5 -2020-11-02T20:00,42.9,61,30.2,0,0,3.8,5.4 -2020-11-02T21:00,41.7,59,28.3,0,0,5.7,7.4 -2020-11-02T22:00,41,55,25.9,0,0,5.4,7.4 -2020-11-02T23:00,39.7,53,23.8,0,0,5.7,7.4 -2020-11-03T00:00,38.9,53,23.1,0,0,7,8.7 -2020-11-03T01:00,38.2,56,23.7,0,0,7.8,9.2 -2020-11-03T02:00,37.4,58,24.1,0,0,7.7,9.4 -2020-11-03T03:00,37.4,58,23.9,0,0,7.9,9.2 -2020-11-03T04:00,37.8,56,23.6,0,0,7.5,9.6 -2020-11-03T05:00,37.1,58,23.5,0,0,7.9,8.9 -2020-11-03T06:00,38.2,55,23.5,0,0,6.8,9.2 -2020-11-03T07:00,40.1,54,24.9,0,0,5.7,8.7 -2020-11-03T08:00,48.7,42,26.4,0,0,5.4,7.8 -2020-11-03T09:00,57.3,34,29.5,0,0,3.9,9.2 -2020-11-03T10:00,64.9,28,31.5,0,0,4,9.8 -2020-11-03T11:00,69.7,23,29.8,0,0,3.4,10.3 -2020-11-03T12:00,71.3,22,30.1,0,0,3,9.8 -2020-11-03T13:00,71.4,21,29.9,0,0,3.4,9.2 -2020-11-03T14:00,70.8,20,28,0,0,3.6,9.2 -2020-11-03T15:00,70.8,19,26.7,0,0,2.9,8.7 -2020-11-03T16:00,65.3,42,41.8,0,0,4.8,6.3 -2020-11-03T17:00,59.6,29,27.2,0,0,6.3,8.7 -2020-11-03T18:00,54.4,39,29.8,0,0,5.6,9.2 -2020-11-03T19:00,50.4,49,31.7,0,0,6,7.6 -2020-11-03T20:00,50.7,42,28.4,0,0,6.1,9.8 -2020-11-03T21:00,51.4,39,27.1,0,0,6.3,10.3 -2020-11-03T22:00,48.8,39,25.1,0,0,6.5,10.1 -2020-11-03T23:00,45.7,42,24,0,0,8.7,10.3 -2020-11-04T00:00,45.3,44,24.8,0,0,7,10.5 -2020-11-04T01:00,42.8,55,27.7,0,0,6.5,8.5 -2020-11-04T02:00,41.3,62,29.1,0,0,6.3,7.8 -2020-11-04T03:00,41,62,29.1,0,0,5.2,7.6 -2020-11-04T04:00,41.2,61,28.9,0,0,4.2,6.9 -2020-11-04T05:00,40.6,61,28.3,0,0,5,7.4 -2020-11-04T06:00,40.6,60,27.7,0,0,4.6,7.8 -2020-11-04T07:00,42.3,56,27.7,0,0,4.6,7.4 -2020-11-04T08:00,50.4,45,29.7,0,0,5.9,9.8 -2020-11-04T09:00,59,36,32,0,0,7.1,13.2 -2020-11-04T10:00,66.1,27,30.8,0,0,5.8,14.3 -2020-11-04T11:00,70.2,24,31.9,0,0,1.6,12.5 -2020-11-04T12:00,72.6,22,31.9,0,0,4.5,11 -2020-11-04T13:00,73.8,17,26.6,0,0,7.8,15.7 -2020-11-04T14:00,73.7,17,26.1,0,0,10.3,18.8 -2020-11-04T15:00,71.6,20,28.5,0,0,12,21.5 -2020-11-04T16:00,67.7,27,32.1,0,0,5.7,20.6 -2020-11-04T17:00,61.8,32,31.5,0,0,7.3,10.5 -2020-11-04T18:00,59.4,32,29.8,0,0,7.7,13.6 -2020-11-04T19:00,54.7,39,30.4,0,0,6.4,12.5 -2020-11-04T20:00,56,37,30.4,0,0,6.4,10.3 -2020-11-04T21:00,56.8,36,29.8,0,0,1.8,8.1 -2020-11-04T22:00,47.9,53,31.8,0,0,4.5,6.9 -2020-11-04T23:00,46.4,58,32.5,0,0,5,8.3 -2020-11-05T00:00,44,63,32.2,0,0,5.4,7.8 -2020-11-05T01:00,43.1,64,31.6,0,0,6,7.6 -2020-11-05T02:00,42.1,63,30.5,0,0,6.7,8.1 -2020-11-05T03:00,41.4,62,29.2,0,0,7,8.3 -2020-11-05T04:00,41.2,60,28.4,0,0,6.3,8.5 -2020-11-05T05:00,42,58,28.3,0,0,5,8.1 -2020-11-05T06:00,41.2,59,28,0,0,5,7.8 -2020-11-05T07:00,41.6,57,27.7,0,0,5,8.1 -2020-11-05T08:00,48.7,45,28.4,0,0,5.6,9.8 -2020-11-05T09:00,56.4,36,29.8,0,0,4.5,10.5 -2020-11-05T10:00,63.2,27,28.7,0,0,4.1,11 -2020-11-05T11:00,68.1,21,26.4,0,0,4,11.2 -2020-11-05T12:00,70.9,17,24.5,0,0,3.5,11.2 -2020-11-05T13:00,72.2,17,24.9,0,0,2.1,10.5 -2020-11-05T14:00,73,16,24.6,0,0,2.3,8.7 -2020-11-05T15:00,72.9,16,24.4,0,0,2.5,8.1 -2020-11-05T16:00,67.5,36,39.7,0,0,3.2,6.3 -2020-11-05T17:00,62.1,28,28.3,0,0,5.8,6.7 -2020-11-05T18:00,65.1,24,27.1,0,0,1.6,6.9 -2020-11-05T19:00,51.8,41,28.6,0,0,5.2,6.3 -2020-11-05T20:00,47.4,51,30.2,0,0,4.9,6.9 -2020-11-05T21:00,46.4,52,29.7,0,0,4.4,6.9 -2020-11-05T22:00,44.7,54,29,0,0,5.2,7.2 -2020-11-05T23:00,44.1,53,28,0,0,4.6,7.4 -2020-11-06T00:00,43.3,50,26.1,0,0,5,7.8 -2020-11-06T01:00,42.2,49,24.2,0,0,5.3,7.8 -2020-11-06T02:00,42.4,45,22.8,0,0,5.4,8.3 -2020-11-06T03:00,42.5,41,20.4,0,0,6.1,8.9 -2020-11-06T04:00,39.9,43,19.4,0,0,8.1,9.8 -2020-11-06T05:00,43.4,35,17.9,0,0,6.2,9.8 -2020-11-06T06:00,45.1,34,18.2,0,0,5.4,7.2 -2020-11-06T07:00,42.5,42,20.8,0,0,6.1,6.9 -2020-11-06T08:00,49.7,33,21.6,0,0,3.4,6.9 -2020-11-06T09:00,58.2,26,23.2,0,0,4,8.9 -2020-11-06T10:00,65.9,20,24,0,0,4.6,11 -2020-11-06T11:00,71.1,16,22.1,0,0,3.3,11.2 -2020-11-06T12:00,73.1,15,22,0,0,3.8,10.5 -2020-11-06T13:00,74,15,23.5,0,0,7.2,14.8 -2020-11-06T14:00,73.7,15,23.5,0,0,7.8,15.9 -2020-11-06T15:00,72.3,16,24.1,0,0,7.4,15.2 -2020-11-06T16:00,67.1,23,27.9,0,0,8.1,13 -2020-11-06T17:00,57.4,33,28.9,0,0,7.4,13 -2020-11-06T18:00,61.7,27,27.3,0,0,2.7,8.3 -2020-11-06T19:00,61.1,28,27.3,0,0,1,2.9 -2020-11-06T20:00,59.2,30,27.4,0,0,1.7,2 -2020-11-06T21:00,53.5,40,29.8,0,0,4.3,6.5 -2020-11-06T22:00,54.3,39,30.1,0,0,6,9.8 -2020-11-06T23:00,55,37,28.9,0,0,7.6,12.3 -2020-11-07T00:00,52.8,39,28.8,0,0,9.2,15 -2020-11-07T01:00,52.2,41,28.9,0,0,10.4,17 -2020-11-07T02:00,52.3,41,29.1,0,0,11.4,18.8 -2020-11-07T03:00,53,40,29.5,0,0,10.8,19.2 -2020-11-07T04:00,53.9,39,29.8,0,0,11.5,18.8 -2020-11-07T05:00,53,41,29.9,0,0,9.9,18.8 -2020-11-07T06:00,51.6,43,30.1,0,0,11.5,19 -2020-11-07T07:00,50.5,45,29.8,0,0,9.6,19 -2020-11-07T08:00,55.7,38,30.2,0,0,10.1,16.1 -2020-11-07T09:00,62.2,30,30.7,0,0,11.3,18.3 -2020-11-07T10:00,67.2,25,30,0,0,19.2,32.2 -2020-11-07T11:00,67.8,25,31.1,0,0,22.4,38.5 -2020-11-07T12:00,71.2,23,31,0,0,19.7,38.5 -2020-11-07T13:00,70.5,23,31.3,0,0,17.9,34.2 -2020-11-07T14:00,71.2,23,31.3,0,0,18.3,31.3 -2020-11-07T15:00,70.6,23,31.1,0,0,18.8,32.2 -2020-11-07T16:00,68,25,31.2,0,0,20.1,33.1 -2020-11-07T17:00,63.1,29,30.1,0,0,8.9,33.6 -2020-11-07T18:00,56.2,38,30.8,0,0,5.9,15 -2020-11-07T19:00,54.5,41,31.6,0,0,6.4,10.1 -2020-11-07T20:00,58.4,36,31.3,0,0,13.7,20.6 -2020-11-07T21:00,57.5,40,33.4,0,0,14.8,25.7 -2020-11-07T22:00,55,45,33.9,0,0,11.6,24.8 -2020-11-07T23:00,53.4,48,34.1,0,0,10.7,19.5 -2020-11-08T00:00,54,45,33.1,0,0,16,25.5 -2020-11-08T01:00,50.4,69,40.6,0.024,0,15.5,27.3 -2020-11-08T02:00,51,70,41.7,0.047,0,14.7,28 -2020-11-08T03:00,48.7,73,40.6,0.004,0,10,23.7 -2020-11-08T04:00,49.4,71,40.4,0,0,9.8,16.6 -2020-11-08T05:00,48.9,71,40,0,0,5.2,16.1 -2020-11-08T06:00,48.1,69,38.4,0.004,0,5.7,9.2 -2020-11-08T07:00,45.7,63,34,0,0,6.1,9.8 -2020-11-08T08:00,49.5,36,23.4,0,0,10.3,16.3 -2020-11-08T09:00,51.6,19,10.4,0,0,15.4,26.4 -2020-11-08T10:00,52.6,16,8.1,0,0,12.3,27.5 -2020-11-08T11:00,54.3,15,7,0,0,9.9,23.3 -2020-11-08T12:00,56.2,13,5.1,0,0,10.3,20.8 -2020-11-08T13:00,57.7,10,2.3,0,0,12.8,23.7 -2020-11-08T14:00,57.6,13,6.5,0,0,15.2,27.3 -2020-11-08T15:00,57.7,13,7.3,0,0,13.6,27.3 -2020-11-08T16:00,55.4,17,11.3,0,0,14.1,25.1 -2020-11-08T17:00,51.4,20,12,0,0,17.7,25.7 -2020-11-08T18:00,49.5,24,13.9,0,0,12.3,30 -2020-11-08T19:00,43.3,34,16.5,0,0,4.6,20.1 -2020-11-08T20:00,39.8,43,19.1,0,0,5.3,8.3 -2020-11-08T21:00,43.5,40,21,0,0,5.7,17.9 -2020-11-08T22:00,41.5,47,22.7,0,0,2.7,9.4 -2020-11-08T23:00,39.5,54,24.3,0,0,2.5,3.8 -2020-11-09T00:00,37.6,61,25.3,0,0,4.9,4.5 -2020-11-09T01:00,40.5,35,15,0,0,7.6,12.8 -2020-11-09T02:00,39.1,38,15.5,0,0,8.6,13.2 -2020-11-09T03:00,38.1,43,17.3,0,0,9.4,15.9 -2020-11-09T04:00,37.2,47,19,0,0,6.4,15.4 -2020-11-09T05:00,37.3,54,22.2,0,0,6.3,10.5 -2020-11-09T06:00,35.4,60,22.8,0,0,6.1,10.1 -2020-11-09T07:00,34.5,65,24,0,0,5.4,10.7 -2020-11-09T08:00,36.4,72,28.1,0,0,8.7,15.4 -2020-11-09T09:00,35.6,75,28.5,0.004,0,9.6,17.4 -2020-11-09T10:00,35.2,72,27,0,0.028,10.2,19.7 -2020-11-09T11:00,36,68,26.5,0,0.028,9,19 -2020-11-09T12:00,34.6,72,26.6,0,0.11,8.9,17.7 -2020-11-09T13:00,34.8,70,26.1,0,0.028,7.6,16.8 -2020-11-09T14:00,36.6,64,25.4,0.004,0,7.1,16.1 -2020-11-09T15:00,35.8,67,25.9,0,0.055,6.1,15.2 -2020-11-09T16:00,35.1,69,26,0,0.165,6.9,13 -2020-11-09T17:00,29.8,81,24.7,0,0.331,7,13.6 -2020-11-09T18:00,29.2,80,23.9,0,0.055,5.6,12.8 -2020-11-09T19:00,28.9,79,23.4,0,0.055,3.4,10.5 -2020-11-09T20:00,29.1,79,23.3,0,0.055,2.1,7.6 -2020-11-09T21:00,28.8,80,23.3,0,0.055,2.4,6.3 -2020-11-09T22:00,28.6,80,23.2,0,0.028,1.6,6 -2020-11-09T23:00,27.8,83,23.2,0,0,1.4,5.1 -2020-11-10T00:00,26.8,86,23.1,0,0,1.3,4.5 -2020-11-10T01:00,26.2,88,23.3,0,0,5.2,7.2 -2020-11-10T02:00,26.9,89,24,0,0,8.4,12.3 -2020-11-10T03:00,27.8,69,19,0,0,8.6,14.5 -2020-11-10T04:00,27.1,49,10.4,0,0,7.7,13.6 -2020-11-10T05:00,27.5,45,9.1,0,0,7.5,14.5 -2020-11-10T06:00,26.2,48,9.2,0,0,6.4,12.1 -2020-11-10T07:00,25.2,50,9.1,0,0,6.6,10.3 -2020-11-10T08:00,31.3,39,9.4,0,0,7.4,12.3 -2020-11-10T09:00,38.6,27,7.8,0,0,8.1,15.9 -2020-11-10T10:00,40.6,24,6.8,0,0,4.8,15.4 -2020-11-10T11:00,42.5,21,5.5,0,0,3.4,12.8 -2020-11-10T12:00,44.4,19,4.8,0,0,3.5,11.9 -2020-11-10T13:00,46,18,5.4,0,0,5.7,13.9 -2020-11-10T14:00,46.3,18,5.1,0,0,10.7,19.7 -2020-11-10T15:00,43.4,21,6.1,0,0,13.6,25.1 -2020-11-10T16:00,40.7,27,9,0,0,14.6,24.4 -2020-11-10T17:00,37,36,12.7,0,0,10.6,25.7 -2020-11-10T18:00,35.9,38,12.7,0,0,7.8,17.4 -2020-11-10T19:00,35.1,36,10.9,0,0,6,12.8 -2020-11-10T20:00,34.6,36,10.6,0,0,2.2,10.7 -2020-11-10T21:00,29.1,52,13.5,0,0,3.7,4.7 -2020-11-10T22:00,27.7,57,14.3,0,0,2.7,4.9 -2020-11-10T23:00,28.8,54,14.2,0,0,2.3,3.6 -2020-11-11T00:00,24.2,70,15.9,0,0,5.6,6.3 -2020-11-11T01:00,22.8,72,15.2,0,0,4.4,6.9 -2020-11-11T02:00,23.2,67,13.8,0,0,3.6,6 -2020-11-11T03:00,21.3,71,13.3,0,0,4.3,5.1 -2020-11-11T04:00,21.1,69,12.6,0,0,3.2,5.4 -2020-11-11T05:00,20.7,77,14.5,0,0,5.2,5.6 -2020-11-11T06:00,20,74,13,0,0,5.4,6.3 -2020-11-11T07:00,21.7,67,12.3,0,0,3.9,6.9 -2020-11-11T08:00,27.6,49,11,0,0,4.7,9.6 -2020-11-11T09:00,33.9,35,9.1,0,0,4.5,10.7 -2020-11-11T10:00,37.9,27,6.6,0,0,5,12.8 -2020-11-11T11:00,40.9,23,6.1,0,0,4.3,12.5 -2020-11-11T12:00,43.9,20,5.6,0,0,5.6,14.1 -2020-11-11T13:00,46,18,5.4,0,0,6.1,14.5 -2020-11-11T14:00,47.2,17,4.3,0,0,7,15.7 -2020-11-11T15:00,47.2,16,3.4,0,0,6.3,15 -2020-11-11T16:00,44.7,19,5.2,0,0,9.4,15.7 -2020-11-11T17:00,35,41,13.6,0,0,5.9,15.4 -2020-11-11T18:00,34,43,13.6,0,0,4.9,8.3 -2020-11-11T19:00,29.8,53,14.7,0,0,4.5,8.1 -2020-11-11T20:00,30.9,50,14.6,0,0,1.8,5.8 -2020-11-11T21:00,26.2,62,14.8,0,0,3.4,5.6 -2020-11-11T22:00,26,62,14.7,0,0,1.4,5.6 -2020-11-11T23:00,26.9,60,14.7,0,0,2.9,5.4 -2020-11-12T00:00,23.6,68,14.7,0,0,3.3,5.6 -2020-11-12T01:00,22.7,68,13.9,0,0,4.3,5.6 -2020-11-12T02:00,22.6,69,13.9,0,0,4.7,6 -2020-11-12T03:00,22.5,70,14.1,0,0,4.7,6 -2020-11-12T04:00,23.6,66,13.9,0,0,4.3,6.5 -2020-11-12T05:00,25.5,59,13.3,0,0,0.9,6.3 -2020-11-12T06:00,23.8,64,13.5,0,0,3.7,3.4 -2020-11-12T07:00,26.2,62,15.1,0,0,5.2,7.4 -2020-11-12T08:00,28.7,54,14.1,0,0,6.8,12.3 -2020-11-12T09:00,33.1,44,13.3,0,0,8.3,15.4 -2020-11-12T10:00,35,41,13.6,0,0,11.4,20.1 -2020-11-12T11:00,36.4,37,12.7,0,0,8.3,22.1 -2020-11-12T12:00,38.8,32,11.6,0,0,3.1,17.4 -2020-11-12T13:00,42.4,26,10.1,0,0,1.6,11 -2020-11-12T14:00,44.2,25,10.8,0,0,8.8,15.7 -2020-11-12T15:00,41.3,27,10.1,0,0,11.2,23.9 -2020-11-12T16:00,40.2,28,10,0,0,8.1,19.9 -2020-11-12T17:00,36.1,45,16.9,0,0,8.8,13 -2020-11-12T18:00,31.4,53,16.2,0,0,6.9,14.3 -2020-11-12T19:00,34,47,15.6,0,0,1.6,8.5 -2020-11-12T20:00,27.1,63,16.1,0,0,4.7,6 -2020-11-12T21:00,25.3,63,14.6,0,0,3.7,6.3 -2020-11-12T22:00,23,65,13.1,0,0,4.9,6.3 -2020-11-12T23:00,22.1,62,11,0,0,4.7,6.5 -2020-11-13T00:00,21.5,55,7.9,0,0,4.9,6.3 -2020-11-13T01:00,21.2,49,5,0,0,5.6,6.7 -2020-11-13T02:00,21.8,44,3.3,0,0,4.6,6.9 -2020-11-13T03:00,23.5,39,2.3,0,0,3.3,5.6 -2020-11-13T04:00,23,40,2.3,0,0,3.6,4.3 -2020-11-13T05:00,20.9,46,3.4,0,0,4.4,4.5 -2020-11-13T06:00,19.7,47,2.5,0,0,3.8,5.4 -2020-11-13T07:00,21.7,39,0.5,0,0,4.1,6.7 -2020-11-13T08:00,31.6,23,-1.7,0,0,10.4,15.2 -2020-11-13T09:00,43.6,15,-0.8,0,0,14.8,23.7 -2020-11-13T10:00,51.7,13,2.6,0,0,15,25.9 -2020-11-13T11:00,55.9,13,5.1,0,0,9,25.5 -2020-11-13T12:00,58.8,12,6.4,0,0,6,17 -2020-11-13T13:00,61,11,6.9,0,0,7.6,14.5 -2020-11-13T14:00,60.7,13,9.9,0,0,10.3,17.9 -2020-11-13T15:00,58.5,17,14.3,0,0,11.1,19.7 -2020-11-13T16:00,53.4,23,17,0,0,9.9,18.1 -2020-11-13T17:00,44.7,33,17.6,0,0,7.8,15.9 -2020-11-13T18:00,44.9,35,18.8,0,0,7.1,11.9 -2020-11-13T19:00,43.5,37,18.8,0,0,9.4,14.1 -2020-11-13T20:00,44.8,33,17.1,0,0,14.8,24.2 -2020-11-13T21:00,42.4,34,15.9,0,0,12.5,24.4 -2020-11-13T22:00,41.5,34,15,0,0,14.9,23.7 -2020-11-13T23:00,41.9,31,13.6,0,0,15,24.8 -2020-11-14T00:00,40.4,32,12.8,0,0,9.7,23.9 -2020-11-14T01:00,39.4,35,13.7,0,0,5.1,15.2 -2020-11-14T02:00,38.3,38,15.2,0,0,4.6,8.3 -2020-11-14T03:00,39.5,44,19.1,0.004,0,6.4,9.8 -2020-11-14T04:00,39.5,49,22.1,0,0,8,13 -2020-11-14T05:00,35.1,61,22.9,0,0,7.4,17.4 -2020-11-14T06:00,38.6,61,26.2,0,0,6,10.1 -2020-11-14T07:00,38.8,65,27.9,0,0,7.2,11 -2020-11-14T08:00,42,61,29.6,0,0,9.8,15 -2020-11-14T09:00,48,38,23.9,0.004,0,13.4,21.3 -2020-11-14T10:00,43.1,29,13.3,0.008,0,23.8,39.4 -2020-11-14T11:00,41.8,27,10.3,0,0.055,22.5,40.5 -2020-11-14T12:00,42.1,21,4.7,0,0,23.8,42.7 -2020-11-14T13:00,42.4,19,3.4,0,0,22.4,41.4 -2020-11-14T14:00,41.2,19,2.5,0,0,22.4,39.1 -2020-11-14T15:00,39.1,21,2.3,0,0,21.5,38.7 -2020-11-14T16:00,37.2,24,3.5,0,0,15.5,36.7 -2020-11-14T17:00,34.6,27,4.2,0,0,12.5,29.5 -2020-11-14T18:00,32.1,30,4.4,0,0,10.1,21.3 -2020-11-14T19:00,31.5,33,5.6,0,0,9.8,18.3 -2020-11-14T20:00,29.1,34,4.5,0,0,5.6,16.8 -2020-11-14T21:00,28.1,33,2.8,0,0,5.4,9.8 -2020-11-14T22:00,28.9,32,2.7,0,0,7.2,10.7 -2020-11-14T23:00,29.8,31,2.9,0,0,12.6,20.6 -2020-11-15T00:00,28.2,33,2.8,0,0,6.4,20.6 -2020-11-15T01:00,23.7,39,2.5,0,0,4.7,10.3 -2020-11-15T02:00,20.8,41,1,0,0,9.5,15.4 -2020-11-15T03:00,22.6,40,1.9,0,0,6.3,15 -2020-11-15T04:00,22,41,1.8,0,0,4.3,10.3 -2020-11-15T05:00,23.9,40,3.3,0,0,4.8,8.1 -2020-11-15T06:00,24.6,36,1.4,0,0,6.8,9.6 -2020-11-15T07:00,26.6,30,-0.7,0,0,14.7,22.1 -2020-11-15T08:00,35.3,25,3.4,0,0,9.8,22.6 -2020-11-15T09:00,42.5,24,8.2,0,0,7.4,14.8 -2020-11-15T10:00,47.8,23,11.6,0,0,7.6,14.3 -2020-11-15T11:00,52.6,22,14.5,0,0,10.7,19.5 -2020-11-15T12:00,56.5,21,16.5,0,0,6.3,19.9 -2020-11-15T13:00,57.6,21,17.4,0,0,2.4,13.9 -2020-11-15T14:00,57.8,20,17.4,0,0,3.2,8.9 -2020-11-15T15:00,57.2,22,18.6,0,0,2.7,8.9 -2020-11-15T16:00,53.2,32,23.9,0,0,2.3,6 -2020-11-15T17:00,45.5,37,20.6,0,0,7.2,8.5 -2020-11-15T18:00,40.7,46,21.7,0,0,6.1,11.4 -2020-11-15T19:00,40.6,47,22.1,0,0,2.7,7.2 -2020-11-15T20:00,37.5,53,21.8,0,0,5.1,7.2 -2020-11-15T21:00,36.1,57,22.4,0,0,5,7.2 -2020-11-15T22:00,35.4,60,22.8,0,0,4.4,6.7 -2020-11-15T23:00,33.7,66,23.5,0,0,4.5,6.9 -2020-11-16T00:00,32,70,23.3,0,0,4.5,6.9 -2020-11-16T01:00,30.5,72,22.6,0,0,6.9,7.8 -2020-11-16T02:00,30.2,71,21.9,0,0,5.2,8.1 -2020-11-16T03:00,31.4,66,21.4,0,0,4.8,7.8 -2020-11-16T04:00,31,67,21.3,0,0,5.6,9.4 -2020-11-16T05:00,32.2,65,21.6,0,0,6.3,9.2 -2020-11-16T06:00,37.8,51,21.4,0,0,4.3,8.7 -2020-11-16T07:00,34.4,59,21.7,0,0,4.6,5.4 -2020-11-16T08:00,37.2,55,22.5,0,0,5.7,9.8 -2020-11-16T09:00,44.8,43,23.9,0,0,3.2,10.1 -2020-11-16T10:00,52.3,34,24.6,0,0,3.8,10.3 -2020-11-16T11:00,57.8,27,24.2,0,0,1.6,10.1 -2020-11-16T12:00,61.3,23,23.1,0,0,4.5,11.2 -2020-11-16T13:00,63.6,20,22.1,0,0,4.3,11.9 -2020-11-16T14:00,64.8,19,22.1,0,0,3.5,11.2 -2020-11-16T15:00,64.4,20,22.4,0,0,3.1,9.2 -2020-11-16T16:00,57.5,35,30.1,0,0,4.7,6.5 -2020-11-16T17:00,53.9,35,27.1,0,0,5,7.8 -2020-11-16T18:00,48.9,43,27.3,0,0,3.3,5.8 -2020-11-16T19:00,45.6,49,27.6,0,0,3.6,5.6 -2020-11-16T20:00,39.7,63,28,0,0,4.6,5.4 -2020-11-16T21:00,37.8,66,27.6,0,0,4.5,6.9 -2020-11-16T22:00,37.2,61,25.2,0,0,4.6,7.8 -2020-11-16T23:00,34.3,66,24.3,0,0,5.1,7.4 -2020-11-17T00:00,33.6,65,23,0,0,5.7,7.4 -2020-11-17T01:00,33.4,62,21.8,0,0,6.5,8.1 -2020-11-17T02:00,32.5,63,21.4,0,0,6.1,8.1 -2020-11-17T03:00,33,60,20.8,0,0,5.2,7.2 -2020-11-17T04:00,32.2,61,20.1,0,0,6.9,8.3 -2020-11-17T05:00,31.4,63,20.3,0,0,7.3,8.5 -2020-11-17T06:00,30.6,65,20.2,0,0,7.5,8.9 -2020-11-17T07:00,30,66,20,0,0,6.9,8.9 -2020-11-17T08:00,38.5,47,20.1,0,0,4.4,8.5 -2020-11-17T09:00,46.7,36,21.4,0,0,4.1,9.2 -2020-11-17T10:00,55.4,25,20.3,0,0,5.1,11.6 -2020-11-17T11:00,62.2,19,19.3,0,0,4,11.6 -2020-11-17T12:00,66.7,16,18.6,0,0,2.6,10.5 -2020-11-17T13:00,69.2,14,17.2,0,0,2.6,8.9 -2020-11-17T14:00,69.7,13,17.2,0,0,4.5,10.1 -2020-11-17T15:00,67.9,16,20.2,0,0,5.6,10.5 -2020-11-17T16:00,59.6,28,26.6,0,0,4.9,9.2 -2020-11-17T17:00,53.2,38,28.5,0,0,6.5,8.1 -2020-11-17T18:00,47.6,52,30.8,0,0,7,10.3 -2020-11-17T19:00,46.7,49,28.7,0,0,2,8.9 -2020-11-17T20:00,40.4,58,26.6,0,0,4.5,6.7 -2020-11-17T21:00,38.1,58,24.7,0,0,5.6,7.4 -2020-11-17T22:00,36.4,60,23.8,0,0,7.5,8.5 -2020-11-17T23:00,37.1,51,20.7,0,0,6.5,9.4 -2020-11-18T00:00,38.3,45,19,0,0,5.9,8.9 -2020-11-18T01:00,37.8,46,18.9,0,0,6.1,9.4 -2020-11-18T02:00,38.8,45,19.2,0,0,6.5,10.3 -2020-11-18T03:00,40.4,44,19.9,0,0,6.7,10.7 -2020-11-18T04:00,41.5,42,20.1,0,0,6.8,10.7 -2020-11-18T05:00,38.3,50,21.2,0,0,8.5,10.7 -2020-11-18T06:00,41.5,44,21.4,0,0,5.4,10.5 -2020-11-18T07:00,42,43,21.3,0,0,5.4,8.1 -2020-11-18T08:00,48.9,34,21.7,0,0,7.2,10.5 -2020-11-18T09:00,56.3,27,22.5,0,0,10.7,17 -2020-11-18T10:00,60.9,24,23.6,0,0,12.2,19.2 -2020-11-18T11:00,65.6,20,23.8,0,0,13.2,22.6 -2020-11-18T12:00,66.7,20,24.6,0,0,12.6,22.4 -2020-11-18T13:00,68.5,20,25.5,0,0,11.9,22.1 -2020-11-18T14:00,69.3,20,26.4,0,0,12.5,21.3 -2020-11-18T15:00,67.1,24,29.1,0,0,13.2,23.5 -2020-11-18T16:00,63.5,30,31.1,0,0,7.5,21.7 -2020-11-18T17:00,59.5,26,24.9,0,0,4.7,12.1 -2020-11-18T18:00,53.2,34,25.6,0,0,6.7,9.8 -2020-11-18T19:00,46.6,44,25.7,0,0,4.1,8.1 -2020-11-18T20:00,42.5,57,28.2,0,0,4.4,6.5 -2020-11-18T21:00,42,60,28.9,0,0,5.6,7.6 -2020-11-18T22:00,44.2,52,27.7,0,0,6.2,9.8 -2020-11-18T23:00,43,52,26.5,0,0,6.8,10.7 -2020-11-19T00:00,41.2,54,25.8,0,0,7,11.2 -2020-11-19T01:00,40.6,54,25.2,0,0,7.4,11.6 -2020-11-19T02:00,40.6,53,24.9,0,0,7.4,12.3 -2020-11-19T03:00,40,55,25.2,0,0,7.9,13 -2020-11-19T04:00,38.1,61,25.9,0,0,5.8,13 -2020-11-19T05:00,37,62,25.2,0,0,4.3,9.4 -2020-11-19T06:00,35.3,67,25.5,0,0,3,6.5 -2020-11-19T07:00,39.9,56,25.4,0,0,1.8,4 -2020-11-19T08:00,40.6,57,26.5,0,0,0.7,2.9 -2020-11-19T09:00,47.7,46,27.8,0,0,2.3,6.9 -2020-11-19T10:00,54.5,35,27.3,0,0,6.2,12.8 -2020-11-19T11:00,59.9,27,25.5,0,0,7.8,15.4 -2020-11-19T12:00,62.3,24,24.8,0,0,11.3,21 -2020-11-19T13:00,63.1,24,25.5,0,0,11.1,22.1 -2020-11-19T14:00,63.8,25,26.9,0,0,9.6,20.8 -2020-11-19T15:00,62.4,28,29.2,0,0,9.5,18.1 -2020-11-19T16:00,57.8,37,31.6,0,0,5,16.8 -2020-11-19T17:00,49.1,50,31.1,0,0,5.8,8.3 -2020-11-19T18:00,46.1,57,31.6,0,0,5.9,7.8 -2020-11-19T19:00,47.7,52,30.8,0,0,4.3,7.2 -2020-11-19T20:00,44.1,59,30.7,0,0,8,9.2 -2020-11-19T21:00,45.3,53,29.1,0,0,7.4,11 -2020-11-19T22:00,43.5,49,25.6,0,0,9.5,15.9 -2020-11-19T23:00,40.9,52,24.6,0,0,6.7,15.4 -2020-11-20T00:00,38,57,24.3,0,0,5.3,10.5 -2020-11-20T01:00,35.8,62,24,0,0,7.4,8.9 -2020-11-20T02:00,38.3,54,23,0,0,6.8,9.2 -2020-11-20T03:00,37,54,21.7,0,0,7.2,8.9 -2020-11-20T04:00,41.5,42,20.1,0,0,4.9,8.9 -2020-11-20T05:00,39.2,44,19.1,0,0,3.9,6.3 -2020-11-20T06:00,38.2,43,17.7,0,0,2.8,5.1 -2020-11-20T07:00,37,44,17.3,0,0,3,4 -2020-11-20T08:00,36.6,54,21.4,0,0,2.1,4 -2020-11-20T09:00,41.2,44,20.7,0,0,3,8.1 -2020-11-20T10:00,44.6,38,20.8,0,0,3.5,10.5 -2020-11-20T11:00,47.8,37,23,0,0,2.7,10.5 -2020-11-20T12:00,50.3,34,22.6,0,0,0.9,10.1 -2020-11-20T13:00,51.6,31,22.1,0,0,6.2,13.9 -2020-11-20T14:00,51.3,31,21.6,0,0,10.6,19.9 -2020-11-20T15:00,51.8,25,17.4,0,0,12.8,22.1 -2020-11-20T16:00,48.2,28,16.8,0,0,15.8,25.9 -2020-11-20T17:00,46,28,14.7,0,0,15.6,26.4 -2020-11-20T18:00,43.8,31,14.8,0,0,17.5,28.9 -2020-11-20T19:00,40.6,31,12.1,0,0,14.7,29.1 -2020-11-20T20:00,39.9,32,12.7,0,0,11.5,24.2 -2020-11-20T21:00,39.6,34,13.2,0,0,7.3,19 -2020-11-20T22:00,37.1,38,13.8,0,0,4.8,12.1 -2020-11-20T23:00,35.7,41,14.5,0,0,5.1,7.8 -2020-11-21T00:00,34.7,44,15.2,0,0,2.7,6.3 -2020-11-21T01:00,33.4,50,16.7,0,0,3.4,4.5 -2020-11-21T02:00,32.4,54,17.7,0,0,4.7,5.6 -2020-11-21T03:00,35.1,46,16.5,0,0,2.7,5.8 -2020-11-21T04:00,33,53,17.9,0,0,5,7.8 -2020-11-21T05:00,31.1,56,17.2,0,0,4.7,9.6 -2020-11-21T06:00,28.9,61,17.2,0,0,4.1,7.8 -2020-11-21T07:00,27.9,65,17.7,0,0,4.1,6.3 -2020-11-21T08:00,30.8,57,17.2,0,0,3.6,7.6 -2020-11-21T09:00,35.2,48,17.4,0,0,3.1,9.2 -2020-11-21T10:00,39,42,17.7,0,0,4.6,12.1 -2020-11-21T11:00,42.6,37,18.2,0,0,5.6,14.1 -2020-11-21T12:00,44.2,37,19.4,0,0,4.7,14.8 -2020-11-21T13:00,46.4,36,20.8,0,0,3.4,13.2 -2020-11-21T14:00,47.8,35,21.7,0,0,3.8,10.7 -2020-11-21T15:00,47.5,36,21.7,0,0,4.8,11 -2020-11-21T16:00,45.6,39,22.3,0,0,3.8,10.7 -2020-11-21T17:00,39.7,49,22.1,0,0,5.4,6.9 -2020-11-21T18:00,37.3,61,25,0,0,4.9,6.5 -2020-11-21T19:00,37.2,66,27.1,0,0,2.3,6 -2020-11-21T20:00,38.7,62,26.9,0,0,2.7,3.1 -2020-11-21T21:00,38.5,62,26.4,0,0,2.3,3.1 -2020-11-21T22:00,37.8,61,25.7,0,0,4.1,5.4 -2020-11-21T23:00,37.1,60,24.6,0,0,1.7,5.1 -2020-11-22T00:00,30.4,73,22.9,0,0,5.1,5.8 -2020-11-22T01:00,29.1,76,22.4,0,0,6,8.1 -2020-11-22T02:00,27.1,79,21.6,0,0,5.6,8.1 -2020-11-22T03:00,25.5,84,21.4,0,0,5.8,6.7 -2020-11-22T04:00,25.9,83,21.4,0,0,4.5,6.7 -2020-11-22T05:00,28,71,19.9,0,0,3.9,5.6 -2020-11-22T06:00,26.3,62,15,0,0,5.1,6.3 -2020-11-22T07:00,24.5,60,12.7,0,0,4.1,5.8 -2020-11-22T08:00,29.3,50,13,0,0,2.5,5.4 -2020-11-22T09:00,32.3,38,9.4,0,0,3,8.5 -2020-11-22T10:00,35.2,30,7,0,0,3,9.8 -2020-11-22T11:00,38.2,26,6.7,0,0,3.4,10.5 -2020-11-22T12:00,41.5,24,7.3,0,0,3.3,11 -2020-11-22T13:00,44,23,8.8,0,0,4.1,11.2 -2020-11-22T14:00,44.9,23,9.3,0,0,7.4,15.2 -2020-11-22T15:00,43.3,25,9.6,0,0,10.6,19 -2020-11-22T16:00,40.4,30,11,0,0,7.5,19.2 -2020-11-22T17:00,36.1,34,10.3,0,0,6.3,12.3 -2020-11-22T18:00,32.2,46,13.6,0,0,5.4,10.3 -2020-11-22T19:00,32.6,43,12.5,0,0,3.8,6.3 -2020-11-22T20:00,33.4,40,11.6,0,0,3.7,6.5 -2020-11-22T21:00,35.2,35,10.3,0,0,2.7,5.6 -2020-11-22T22:00,31.9,39,9.7,0,0,1.9,3.8 -2020-11-22T23:00,29.4,44,10,0,0,3.2,4 -2020-11-23T00:00,30.3,42,10.1,0,0,3.4,4.9 -2020-11-23T01:00,27.9,49,11,0,0,4.5,5.4 -2020-11-23T02:00,29.3,46,11.2,0,0,2.7,5.1 -2020-11-23T03:00,27.4,54,12.8,0,0,2.7,3.8 -2020-11-23T04:00,28.9,55,14.8,0,0,2.1,3.6 -2020-11-23T05:00,29.5,55,15.4,0,0,2.5,3.4 -2020-11-23T06:00,27.7,56,14.2,0,0,3.6,4.3 -2020-11-23T07:00,30.8,52,15.1,0,0,1.6,4.7 -2020-11-23T08:00,33.8,51,17.8,0,0,2.7,4.5 -2020-11-23T09:00,42.2,48,24,0,0,4.1,8.5 -2020-11-23T10:00,51.3,44,29.8,0,0,8.3,14.8 -2020-11-23T11:00,58.3,35,30.6,0,0,6.2,16.8 -2020-11-23T12:00,60.6,31,29.8,0,0,4.1,13 -2020-11-23T13:00,59.7,31,29,0,0,10.4,19.2 -2020-11-23T14:00,57.5,32,27.5,0,0,12.8,23 -2020-11-23T15:00,56.2,33,27.3,0,0,10.1,22.8 -2020-11-23T16:00,52.2,40,28.5,0,0,5.2,17.7 -2020-11-23T17:00,43.7,56,28.9,0,0,7,8.7 -2020-11-23T18:00,43.7,53,27.6,0,0,5.4,8.7 -2020-11-23T19:00,41.8,54,26.4,0,0,5.7,9.2 -2020-11-23T20:00,40.5,58,27,0,0,8.3,12.3 -2020-11-23T21:00,41.1,66,30.6,0,0,8.8,15.9 -2020-11-23T22:00,40.6,69,31.3,0,0,7.2,14.5 -2020-11-23T23:00,38.6,72,30.3,0,0,4.7,11.9 -2020-11-24T00:00,39.8,67,29.8,0,0,4.9,7.6 -2020-11-24T01:00,41,64,29.8,0,0,3.8,5.8 -2020-11-24T02:00,37.3,74,29.8,0,0,4.7,8.1 -2020-11-24T03:00,37.3,76,30.4,0.004,0,9,15.9 -2020-11-24T04:00,34.8,93,32.9,0.012,0.028,6.1,14.8 -2020-11-24T05:00,33.6,98,33.1,0.012,0.138,6.7,9.8 -2020-11-24T06:00,32.9,96,31.9,0.004,0.579,8.6,13.9 -2020-11-24T07:00,31,93,29.1,0,0.606,9.6,16.6 -2020-11-24T08:00,29.7,86,25.9,0,0.413,5,16.6 -2020-11-24T09:00,29.8,88,26.5,0,0.276,3.1,9.4 -2020-11-24T10:00,31.2,80,25.6,0,0.11,2.6,6.7 -2020-11-24T11:00,32.4,75,25.3,0,0.028,1.6,5.6 -2020-11-24T12:00,33.3,71,24.8,0,0,1.6,4.5 -2020-11-24T13:00,34.1,67,24.4,0,0,2.1,4.5 -2020-11-24T14:00,37.1,40,15.2,0,0,0.2,4.3 -2020-11-24T15:00,37.9,37,14.2,0,0,0.8,1.8 -2020-11-24T16:00,37.8,37,14,0,0,2.4,4 -2020-11-24T17:00,32,73,24.2,0,0,4.1,8.1 -2020-11-24T18:00,30.7,72,22.7,0,0,4.5,7.2 -2020-11-24T19:00,29.1,72,21.4,0,0,4.3,8.1 -2020-11-24T20:00,26.2,76,19.7,0,0,5.7,8.5 -2020-11-24T21:00,25.3,70,16.9,0,0,5.7,9.4 -2020-11-24T22:00,24,69,15.4,0,0,4.8,9.2 -2020-11-24T23:00,21.9,75,15.4,0,0,5.3,7.8 -2020-11-25T00:00,21.3,76,15,0,0,6,9.2 -2020-11-25T01:00,22.8,68,13.8,0,0,5,9.2 -2020-11-25T02:00,23.8,62,12.8,0,0,5.4,8.5 -2020-11-25T03:00,24.3,59,12,0,0,6,9.6 -2020-11-25T04:00,23.9,58,11.4,0,0,6.4,9.8 -2020-11-25T05:00,21.3,68,12.3,0,0,5.2,9.8 -2020-11-25T06:00,23.1,61,11.5,0,0,6.4,10.1 -2020-11-25T07:00,23.1,59,10.8,0,0,5.9,10.3 -2020-11-25T08:00,27.3,49,10.5,0,0,7.4,11.9 -2020-11-25T09:00,34.4,36,10.1,0,0,5.8,12.1 -2020-11-25T10:00,41.5,24,7.5,0,0,5.4,12.3 -2020-11-25T11:00,46.5,18,5.1,0,0,5.6,13 -2020-11-25T12:00,49.5,17,6.4,0,0,3.7,13 -2020-11-25T13:00,51.1,17,7.7,0,0,2.2,10.3 -2020-11-25T14:00,52.2,17,9.1,0,0,1.5,7.8 -2020-11-25T15:00,51.4,21,12.7,0,0,3.8,6 -2020-11-25T16:00,43.9,27,12.4,0,0,4.8,7.8 -2020-11-25T17:00,32.9,52,17,0,0,6.6,7.8 -2020-11-25T18:00,31.5,60,19.3,0,0,4.4,8.3 -2020-11-25T19:00,28,77,21.7,0,0,3.9,6.3 -2020-11-25T20:00,25.4,83,21.1,0,0,3,5.8 -2020-11-25T21:00,22.9,87,19.6,0,0,4.3,5.1 -2020-11-25T22:00,24.8,77,18.7,0,0,3.3,5.1 -2020-11-25T23:00,26.3,70,17.9,0,0,4.5,5.4 -2020-11-26T00:00,25.1,67,15.8,0,0,4,6 -2020-11-26T01:00,22.6,71,14.7,0,0,3.7,6 -2020-11-26T02:00,21.1,73,13.8,0,0,5.5,8.3 -2020-11-26T03:00,22,67,12.7,0,0,4.1,8.5 -2020-11-26T04:00,21.7,64,11.4,0,0,5.1,6.5 -2020-11-26T05:00,20.4,64,10,0,0,7,6.5 -2020-11-26T06:00,22.6,57,9.7,0,0,4.7,8.5 -2020-11-26T07:00,23.9,58,11.3,0,0,4.9,7.4 -2020-11-26T08:00,29.5,48,12.3,0,0,6.7,10.1 -2020-11-26T09:00,35.3,42,14.3,0,0,4.9,10.5 -2020-11-26T10:00,39.6,37,15.5,0,0,5.5,12.3 -2020-11-26T11:00,41.6,35,15.7,0,0,6.3,13.6 -2020-11-26T12:00,43.4,33,16.1,0,0,7.7,15.7 -2020-11-26T13:00,44.6,31,16.2,0,0,7.9,15.9 -2020-11-26T14:00,45.1,31,16.3,0,0,7.2,15.4 -2020-11-26T15:00,44.9,32,16.8,0,0,8.9,14.5 -2020-11-26T16:00,40,40,17.8,0,0,9.1,15.9 -2020-11-26T17:00,36.4,54,21.4,0,0,11.9,14.3 -2020-11-26T18:00,34.1,63,22.7,0,0,9,21 -2020-11-26T19:00,33.2,66,23,0,0,8.4,14.5 -2020-11-26T20:00,33,64,22.2,0,0,4.7,13.4 -2020-11-26T21:00,32.6,70,24,0,0.028,1.9,7.4 -2020-11-26T22:00,31.9,72,23.8,0,0.028,2.3,3.6 -2020-11-26T23:00,29.1,82,24.3,0,0,3.4,4.7 -2020-11-27T00:00,27.4,86,23.8,0,0,3.5,5.6 -2020-11-27T01:00,25.4,88,22.5,0,0,3.7,5.8 -2020-11-27T02:00,24,87,20.6,0,0,3.8,6 -2020-11-27T03:00,22.6,84,18.4,0,0,3.2,6 -2020-11-27T04:00,21.4,77,15.2,0,0,2.5,5.1 -2020-11-27T05:00,18.7,78,12.8,0,0,3.9,4 -2020-11-27T06:00,20.2,62,9.2,0,0,2,4.7 -2020-11-27T07:00,20.1,54,6.1,0,0,3.6,6 -2020-11-27T08:00,22.2,49,6,0,0,3.2,7.6 -2020-11-27T09:00,27.6,39,5.7,0,0,0.5,7.6 -2020-11-27T10:00,32.3,38,9.5,0,0,3.3,9.8 -2020-11-27T11:00,35.3,38,11.9,0,0,4.5,12.3 -2020-11-27T12:00,37.8,35,12.7,0,0,2.9,12.3 -2020-11-27T13:00,39.9,32,12.7,0,0,0.7,10.3 -2020-11-27T14:00,41.5,30,12.3,0,0,2,8.1 -2020-11-27T15:00,41.3,30,12.4,0,0,2.2,7.8 -2020-11-27T16:00,38.3,38,15.1,0,0,2.7,6 -2020-11-27T17:00,35.1,43,14.7,0,0,3.8,4.5 -2020-11-27T18:00,28.3,56,14.7,0,0,6.4,7.8 -2020-11-27T19:00,25,61,13.5,0,0,3.7,7.8 -2020-11-27T20:00,21.5,69,12.9,0,0,3,5.1 -2020-11-27T21:00,21.1,68,12.2,0,0,3.6,5.1 -2020-11-27T22:00,21.8,60,10.1,0,0,4,6 -2020-11-27T23:00,22.4,52,7.3,0,0,4.1,6.5 -2020-11-28T00:00,22.2,49,6.1,0,0,4.1,6.5 -2020-11-28T01:00,21.9,49,5.8,0,0,3.8,6.3 -2020-11-28T02:00,21.4,52,6.4,0,0,3.8,5.8 -2020-11-28T03:00,20.9,53,6.6,0,0,3.9,5.4 -2020-11-28T04:00,21.3,52,6.4,0,0,3.8,5.6 -2020-11-28T05:00,18.8,57,6.2,0,0,7,6.3 -2020-11-28T06:00,21.7,51,6.4,0,0,4.2,8.3 -2020-11-28T07:00,21.6,53,7,0,0,4.8,6.5 -2020-11-28T08:00,27,44,8.1,0,0,6.1,9.6 -2020-11-28T09:00,34.5,34,8.8,0,0,4.4,10.5 -2020-11-28T10:00,43,24,8.3,0,0,2.2,9.8 -2020-11-28T11:00,48.5,18,6.3,0,0,1.9,8.1 -2020-11-28T12:00,51.5,15,5.6,0,0,2.3,8.5 -2020-11-28T13:00,53.1,16,7.4,0,0,3.5,9.2 -2020-11-28T14:00,53.2,17,9.4,0,0,2.8,9.2 -2020-11-28T15:00,50.5,45,30.2,0,0,2.2,6.7 -2020-11-28T16:00,43.8,34,17,0,0,3.7,4.7 -2020-11-28T17:00,37.5,35,12.2,0,0,4.9,5.1 -2020-11-28T18:00,31.8,50,15.1,0,0,5.8,7.4 -2020-11-28T19:00,32.1,50,15.6,0,0,6.2,8.7 -2020-11-28T20:00,35.2,41,13.8,0,0,7.2,11 -2020-11-28T21:00,32.9,44,13.1,0,0,7.8,11 -2020-11-28T22:00,30.2,49,13.2,0,0,9.9,11.6 -2020-11-28T23:00,30.9,47,13.2,0,0,8.5,11.9 -2020-11-29T00:00,30.4,52,14.6,0,0,7,11 -2020-11-29T01:00,25.6,65,15.4,0,0,6.2,11.4 -2020-11-29T02:00,27.1,62,15.7,0,0,6.4,10.1 -2020-11-29T03:00,28.9,53,13.8,0,0,5.5,13 -2020-11-29T04:00,24.9,62,13.6,0,0,6.5,8.9 -2020-11-29T05:00,29.1,51,13.1,0,0,2.7,8.3 -2020-11-29T06:00,29.6,50,13,0,0,2.9,4 -2020-11-29T07:00,29.6,50,13.1,0,0,1.7,4 -2020-11-29T08:00,29.1,51,13.1,0,0,1.2,2.7 -2020-11-29T09:00,32.9,43,12.9,0,0,2.4,7.2 -2020-11-29T10:00,34.8,40,12.8,0,0,1.9,8.3 -2020-11-29T11:00,35.7,39,13.1,0,0,3.8,11.2 -2020-11-29T12:00,36.1,39,13.5,0,0,3.7,11.9 -2020-11-29T13:00,36.7,38,13.6,0,0,3.1,11.4 -2020-11-29T14:00,37.1,38,13.6,0,0,2.5,10.3 -2020-11-29T15:00,36.9,38,13.6,0,0,2.1,8.9 -2020-11-29T16:00,33.7,48,16.3,0,0,2.7,6.9 -2020-11-29T17:00,31.9,48,14.3,0,0,2.8,5.6 -2020-11-29T18:00,26.3,61,14.8,0,0,4.2,6 -2020-11-29T19:00,24.1,67,14.8,0,0,4.1,6.7 -2020-11-29T20:00,22,73,14.7,0,0,4.3,6.5 -2020-11-29T21:00,20.8,74,13.9,0,0,3.7,6 -2020-11-29T22:00,19.6,73,12.5,0,0,2.7,6 -2020-11-29T23:00,20.1,68,11.4,0,0,3.2,4.7 -2020-11-30T00:00,20.2,64,9.9,0,0,3.4,5.1 -2020-11-30T01:00,20.4,57,7.5,0,0,3.7,5.8 -2020-11-30T02:00,20.2,51,5.1,0,0,4.2,6.9 -2020-11-30T03:00,19.4,50,3.6,0,0,4.1,7.2 -2020-11-30T04:00,19.6,45,1.7,0,0,4,6.9 -2020-11-30T05:00,17.2,48,1,0,0,7.1,6.5 -2020-11-30T06:00,20.6,41,0.8,0,0,4.7,8.3 -2020-11-30T07:00,21.1,41,1,0,0,4.5,7.2 -2020-11-30T08:00,26.7,32,0.7,0,0,6.7,10.1 -2020-11-30T09:00,35.8,22,0.6,0,0,6.5,12.3 -2020-11-30T10:00,44.8,16,1.2,0,0,5.9,12.3 -2020-11-30T11:00,51.6,12,0.1,0,0,4.7,12.3 -2020-11-30T12:00,55,10,-1.5,0,0,4.2,11 -2020-11-30T13:00,56.1,9,-0.9,0,0,5.8,11.6 -2020-11-30T14:00,55.1,11,1.9,0,0,5.9,12.1 -2020-11-30T15:00,50.5,15,4.6,0,0,4.8,10.5 -2020-11-30T16:00,48.8,17,5.3,0,0,7.2,10.5 -2020-11-30T17:00,42.7,25,9.3,0,0,3.4,8.9 -2020-11-30T18:00,29.5,44,10.1,0,0,5,8.5 -2020-11-30T19:00,25,65,14.8,0,0,4.1,7.2 -2020-11-30T20:00,27.5,49,10.9,0,0,6.1,9.2 -2020-11-30T21:00,26.5,48,9.2,0,0,4.7,10.1 -2020-11-30T22:00,26.4,47,9,0,0,7,11 -2020-11-30T23:00,28.3,41,7.5,0,0,6.9,11.9 -2020-12-01T00:00,27.9,41,7.3,0,0,5.1,11 -2020-12-01T01:00,27.8,42,7.9,0,0,4.1,7.8 -2020-12-01T02:00,28.5,42,8.2,0,0,5.4,8.9 -2020-12-01T03:00,28.4,43,8.9,0,0,5,9.2 -2020-12-01T04:00,29.4,45,10.5,0,0,4,7.8 -2020-12-01T05:00,38.8,26,7,0,0,2.8,6.3 -2020-12-01T06:00,30.4,37,7.3,0,0,6.6,8.5 -2020-12-01T07:00,31.1,38,8.6,0,0,5.8,8.5 -2020-12-01T08:00,34.7,37,11,0,0,7,10.5 -2020-12-01T09:00,36.4,40,14.2,0,0,9.2,14.5 -2020-12-01T10:00,35.2,48,17.4,0,0.055,4.1,15 -2020-12-01T11:00,38.7,37,14.5,0,0.028,6.4,11.6 -2020-12-01T12:00,40.3,33,13.2,0,0,7.2,16.6 -2020-12-01T13:00,41.1,33,13.9,0,0,8.9,17 -2020-12-01T14:00,37.9,49,20.6,0,0,12.3,22.1 -2020-12-01T15:00,38.7,41,16.9,0,0,9.5,21.5 -2020-12-01T16:00,36.8,39,14.4,0,0,8.1,15.9 -2020-12-01T17:00,33.3,57,19.7,0,0,13.3,27.7 -2020-12-01T18:00,31.3,64,20.6,0,0,11.2,22.1 -2020-12-01T19:00,28.7,72,20.9,0,0,8.5,18.3 -2020-12-01T20:00,28.2,74,20.9,0,0,6.5,14.1 -2020-12-01T21:00,27.1,73,19.5,0,0,7.6,12.1 -2020-12-01T22:00,26.9,61,15.3,0,0,9.1,15 -2020-12-01T23:00,26.2,60,14.3,0,0,7.8,14.8 -2020-12-02T00:00,25.8,59,13.4,0,0,7,12.8 -2020-12-02T01:00,24.8,58,12.1,0,0,5.4,11.6 -2020-12-02T02:00,24.6,58,11.8,0,0,5.7,9.2 -2020-12-02T03:00,22.8,61,11.2,0,0,5.1,9.2 -2020-12-02T04:00,21.2,63,10.4,0,0,3.6,8.3 -2020-12-02T05:00,19.9,59,7.8,0,0,4.7,6 -2020-12-02T06:00,18.9,61,7.6,0,0,4.4,7.2 -2020-12-02T07:00,18.7,64,8.4,0,0,3.7,6.3 -2020-12-02T08:00,22.1,56,8.9,0,0,1.4,5.1 -2020-12-02T09:00,24.8,47,7.4,0,0,3.4,8.7 -2020-12-02T10:00,27.7,35,3.7,0,0,9.4,17.2 -2020-12-02T11:00,29.3,32,2.8,0,0,11.2,21.3 -2020-12-02T12:00,30.3,30,2.8,0,0,11.8,21.7 -2020-12-02T13:00,31.6,29,3.3,0,0,12.5,23.7 -2020-12-02T14:00,31.9,30,4.1,0,0,11.9,23.3 -2020-12-02T15:00,31.4,32,4.7,0,0,9.1,21.3 -2020-12-02T16:00,29,37,6,0,0,6.1,15.7 -2020-12-02T17:00,23.2,57,10.2,0,0,6.8,9.6 -2020-12-02T18:00,22.7,61,11.3,0,0,5.1,8.5 -2020-12-02T19:00,23.8,59,11.4,0,0,3.8,6.5 -2020-12-02T20:00,25.3,54,10.9,0,0,1.6,6.5 -2020-12-02T21:00,22.9,60,11,0,0,2,2.7 -2020-12-02T22:00,20.4,60,8.9,0,0,3.4,4.7 -2020-12-02T23:00,19.6,57,7,0,0,4.2,5.4 -2020-12-03T00:00,19.5,54,5.6,0,0,4.6,5.6 -2020-12-03T01:00,19.3,52,4.4,0,0,4,5.6 -2020-12-03T02:00,19,50,3.3,0,0,4.5,5.4 -2020-12-03T03:00,19.1,47,2.3,0,0,4.5,5.8 -2020-12-03T04:00,19.4,45,1.5,0,0,4.5,5.8 -2020-12-03T05:00,19.7,44,1.2,0,0,5.4,6.5 -2020-12-03T06:00,18.6,45,1,0,0,5.9,6.9 -2020-12-03T07:00,18.3,46,1,0,0,6,7.6 -2020-12-03T08:00,23.9,36,0.9,0,0,5.9,8.5 -2020-12-03T09:00,30.4,27,0.7,0,0,3.4,9.4 -2020-12-03T10:00,37,20,-0.8,0,0,3,8.9 -2020-12-03T11:00,41.5,15,-3.2,0,0,3.6,10.5 -2020-12-03T12:00,43.8,12,-5.6,0,0,2.5,10.5 -2020-12-03T13:00,45,9,-11.4,0,0,1.6,8.9 -2020-12-03T14:00,45.1,7,-16.2,0,0,3.9,8.9 -2020-12-03T15:00,43.4,7,-15.5,0,0,3,9.2 -2020-12-03T16:00,41.8,9,-13.2,0,0,2.2,5.1 -2020-12-03T17:00,39.1,13,-7.3,0,0,3.4,2.7 -2020-12-03T18:00,27.3,32,1,0,0,5.9,7.6 -2020-12-03T19:00,26.1,43,6.8,0,0,4.7,7.6 -2020-12-03T20:00,25.2,49,8.7,0,0,5.2,7.2 -2020-12-03T21:00,25.3,48,8.5,0,0,5.4,7.4 -2020-12-03T22:00,25.2,49,8.7,0,0,6.2,7.8 -2020-12-03T23:00,24.6,51,9.1,0,0,7.3,8.5 -2020-12-04T00:00,24.8,51,9.4,0,0,7,8.5 -2020-12-04T01:00,25.3,52,10.2,0,0,6,8.3 -2020-12-04T02:00,25.1,55,11.1,0,0,6.4,7.8 -2020-12-04T03:00,25.3,55,11.5,0,0,5.9,7.8 -2020-12-04T04:00,24.9,57,11.7,0,0,6.7,8.1 -2020-12-04T05:00,24.1,57,11.1,0,0,6.9,8.3 -2020-12-04T06:00,24.1,58,11.3,0,0,7.1,8.3 -2020-12-04T07:00,24.4,57,11.5,0,0,6.5,8.3 -2020-12-04T08:00,30,46,11.6,0,0,5.2,8.1 -2020-12-04T09:00,37.6,34,11.9,0,0,5,10.3 -2020-12-04T10:00,45.9,25,12.2,0,0,3.1,9.8 -2020-12-04T11:00,51.8,20,11.4,0,0,3.5,9.4 -2020-12-04T12:00,55,16,10,0,0,3.2,9.6 -2020-12-04T13:00,55.9,17,11.9,0,0,2.6,8.9 -2020-12-04T14:00,55.4,19,13.2,0,0,2.3,7.6 -2020-12-04T15:00,54.1,21,15.4,0,0,1.1,4.9 -2020-12-04T16:00,51.3,25,16.2,0,0,1.4,1.8 -2020-12-04T17:00,48,28,16.1,0,0,1.6,2 -2020-12-04T18:00,36.5,44,16.8,0,0,3,3.6 -2020-12-04T19:00,28,67,18.6,0,0,3.3,5.4 -2020-12-04T20:00,24.6,79,19,0,0,3.8,6 -2020-12-04T21:00,23.3,81,18.2,0,0,5.1,8.3 -2020-12-04T22:00,22.9,78,17.2,0,0,3.2,8.1 -2020-12-04T23:00,22.1,80,16.9,0,0,2.8,5.4 -2020-12-05T00:00,22.1,77,16.1,0,0,2.1,3.6 -2020-12-05T01:00,23.1,69,14.5,0,0,3.6,5.8 -2020-12-05T02:00,24.1,61,12.5,0,0,5.5,6.7 -2020-12-05T03:00,24.3,58,11.7,0,0,5.4,7.2 -2020-12-05T04:00,24.5,56,11.2,0,0,5.1,6.9 -2020-12-05T05:00,23.3,60,11.4,0,0,6.9,7.4 -2020-12-05T06:00,23.5,59,11.1,0,0,6.1,8.1 -2020-12-05T07:00,22.8,60,10.9,0,0,5,7.4 -2020-12-05T08:00,26,52,10.8,0,0,6.2,9.6 -2020-12-05T09:00,35.9,35,10.7,0,0,6,11.4 -2020-12-05T10:00,46.1,23,10.7,0,0,5.1,11.4 -2020-12-05T11:00,50.2,20,10.8,0,0,5.6,12.3 -2020-12-05T12:00,50.5,23,13.8,0,0,7.7,15 -2020-12-05T13:00,50.5,24,14.7,0,0,6.1,15.2 -2020-12-05T14:00,50.3,25,15.4,0,0,2.7,12.5 -2020-12-05T15:00,49.1,32,20.6,0,0,1.3,7.2 -2020-12-05T16:00,42.2,41,20.3,0,0,4.2,4.5 -2020-12-05T17:00,38.8,43,18.3,0,0,4.5,9.4 -2020-12-05T18:00,33.4,56,19.5,0,0,6.5,7.8 -2020-12-05T19:00,29,69,20,0,0,4.6,7.6 -2020-12-05T20:00,27.8,70,19.2,0,0,4.4,6.7 -2020-12-05T21:00,27.5,63,16.5,0,0,4.3,6.9 -2020-12-05T22:00,26.2,62,15,0,0,4.3,6.9 -2020-12-05T23:00,25.5,61,13.8,0,0,4.5,6.3 -2020-12-06T00:00,25.5,59,13,0,0,5.1,6.5 -2020-12-06T01:00,25.3,58,12.7,0,0,5.5,7.4 -2020-12-06T02:00,25.4,57,12.2,0,0,5.4,7.2 -2020-12-06T03:00,25.8,55,11.7,0,0,6,7.8 -2020-12-06T04:00,25.6,53,10.9,0,0,6.7,7.8 -2020-12-06T05:00,24.9,53,10.3,0,0,6.7,8.1 -2020-12-06T06:00,29.1,43,9.1,0,0,4.5,7.8 -2020-12-06T07:00,28.7,42,8.7,0,0,4.7,5.4 -2020-12-06T08:00,32.2,37,8.6,0,0,4.2,6.9 -2020-12-06T09:00,41.1,26,9.1,0,0,3.7,8.1 -2020-12-06T10:00,47.4,24,12.6,0,0,2.1,7.6 -2020-12-06T11:00,51.9,22,14.5,0,0,2.9,8.3 -2020-12-06T12:00,54.8,21,15.5,0,0,2.7,8.7 -2020-12-06T13:00,56.9,19,15.3,0,0,2.7,8.3 -2020-12-06T14:00,57.8,19,15.9,0,0,3.2,7.8 -2020-12-06T15:00,55.9,26,21.5,0,0,3.3,7.6 -2020-12-06T16:00,46.9,34,19.6,0,0,6.4,7.8 -2020-12-06T17:00,50.4,21,12.2,0,0,5.8,9.4 -2020-12-06T18:00,38.1,37,14.3,0,0,5,6.7 -2020-12-06T19:00,32.9,50,16.3,0,0,4.9,8.1 -2020-12-06T20:00,30,54,15.4,0,0,5.2,7.4 -2020-12-06T21:00,28.8,53,13.6,0,0,5.2,7.4 -2020-12-06T22:00,27.3,52,12,0,0,5.4,7.4 -2020-12-06T23:00,26.2,53,11.2,0,0,5.9,7.6 -2020-12-07T00:00,25.8,53,11,0,0,6.6,8.1 -2020-12-07T01:00,26.6,50,10.6,0,0,5.2,7.8 -2020-12-07T02:00,25,54,10.5,0,0,6.1,6.7 -2020-12-07T03:00,25.2,52,10.1,0,0,5.4,7.2 -2020-12-07T04:00,24.4,54,10.1,0,0,5.1,6.7 -2020-12-07T05:00,23.8,56,10.3,0,0,5.9,6.3 -2020-12-07T06:00,24.4,53,9.5,0,0,5.7,7.2 -2020-12-07T07:00,25.5,49,9,0,0,5,7.2 -2020-12-07T08:00,30.8,39,8.8,0,0,5.7,8.9 -2020-12-07T09:00,38.3,31,10.2,0,0,5.1,10.5 -2020-12-07T10:00,46.5,27,14.1,0,0,4.3,9.8 -2020-12-07T11:00,53.1,20,13.2,0,0,5,10.7 -2020-12-07T12:00,56.6,15,9.5,0,0,5,11.2 -2020-12-07T13:00,58.1,14,8.9,0,0,4.4,11 -2020-12-07T14:00,58,14,9.2,0,0,3.6,9.8 -2020-12-07T15:00,55.3,27,21.8,0,0,2.4,8.1 -2020-12-07T16:00,45.8,35,19.9,0,0,6.7,7.8 -2020-12-07T17:00,38.8,35,13.6,0,0,6.8,9.8 -2020-12-07T18:00,36.2,42,15.3,0,0,5.9,8.9 -2020-12-07T19:00,33.7,46,14.9,0,0,5.2,8.9 -2020-12-07T20:00,31,50,14.7,0,0,4.8,8.1 -2020-12-07T21:00,29,49,12.1,0,0,6.7,8.3 -2020-12-07T22:00,33.4,37,9.9,0,0,4.6,8.9 -2020-12-07T23:00,28,45,9.3,0,0,6.2,6.9 -2020-12-08T00:00,30.3,39,8.1,0,0,5,7.6 -2020-12-08T01:00,27.1,44,8.1,0,0,5.7,6.5 -2020-12-08T02:00,24.8,50,8.9,0,0,6.6,7.8 -2020-12-08T03:00,24.5,52,9.5,0,0,6.1,7.8 -2020-12-08T04:00,24.1,53,9.5,0,0,6.2,7.8 -2020-12-08T05:00,24.4,49,7.9,0,0,6.8,7.8 -2020-12-08T06:00,24.9,44,6.2,0,0,6.4,8.5 -2020-12-08T07:00,24.2,42,4.1,0,0,7.5,8.9 -2020-12-08T08:00,31,30,3,0,0,5.2,8.9 -2020-12-08T09:00,40.3,21,3.8,0,0,7.1,12.3 -2020-12-08T10:00,48.8,20,9.2,0,0,5.9,12.1 -2020-12-08T11:00,55.3,18,12.9,0,0,5.5,11.9 -2020-12-08T12:00,59.5,16,13.7,0,0,4.5,11.2 -2020-12-08T13:00,61.4,15,13.8,0,0,4.2,9.8 -2020-12-08T14:00,62.2,17,16.6,0,0,2.8,9.2 -2020-12-08T15:00,60,32,29.9,0,0,1.6,6 -2020-12-08T16:00,57.7,24,21.4,0,0,4.4,5.1 -2020-12-08T17:00,51.5,24,15.8,0,0,3.7,12.1 -2020-12-08T18:00,49.1,24,14.3,0,0,6.9,6.9 -2020-12-08T19:00,37.5,28,7,0,0,9.7,12.3 -2020-12-08T20:00,35.3,27,4.6,0,0,10.4,12.5 -2020-12-08T21:00,32.8,33,6.5,0,0,9.2,12.3 -2020-12-08T22:00,30.8,40,9.4,0,0,7.6,11.2 -2020-12-08T23:00,29.6,41,8.7,0,0,7.8,9.4 -2020-12-09T00:00,29.8,38,7.4,0,0,6.7,9.2 -2020-12-09T01:00,28.9,40,7.4,0,0,6,8.1 -2020-12-09T02:00,27.8,41,7.1,0,0,7.7,8.9 -2020-12-09T03:00,28.3,38,5.9,0,0,7.6,9.4 -2020-12-09T04:00,28.7,37,5.7,0,0,6.4,9.2 -2020-12-09T05:00,27.3,36,4,0,0,7.8,8.5 -2020-12-09T06:00,28,36,4.2,0,0,5.7,9.6 -2020-12-09T07:00,27,37,3.9,0,0,5.4,8.5 -2020-12-09T08:00,30.5,30,2.8,0,0,4.2,8.3 -2020-12-09T09:00,36.8,22,1.6,0,0,4.9,9.8 -2020-12-09T10:00,44.6,17,2.8,0,0,3.4,9.6 -2020-12-09T11:00,51.1,16,6.9,0,0,3.1,8.9 -2020-12-09T12:00,55.2,15,7.9,0,0,4.5,9.8 -2020-12-09T13:00,58.3,11,4.7,0,0,4.6,10.7 -2020-12-09T14:00,59.3,11,4.9,0,0,3.2,9.6 -2020-12-09T15:00,55.5,40,31.4,0,0,4,6.5 -2020-12-09T16:00,55.9,15,8.3,0,0,2.9,5.4 -2020-12-09T17:00,46,26,13.1,0,0,5.7,4.5 -2020-12-09T18:00,39.3,36,14.4,0,0,7.2,8.5 -2020-12-09T19:00,36.5,35,11.7,0,0,7.9,9.2 -2020-12-09T20:00,32.2,43,11.9,0,0,7.9,10.3 -2020-12-09T21:00,29.7,49,12.8,0,0,7.6,9.6 -2020-12-09T22:00,28.2,52,12.8,0,0,7.4,9.2 -2020-12-09T23:00,27.3,53,12.3,0,0,7.4,8.9 -2020-12-10T00:00,26.9,51,11.2,0,0,6.8,8.7 -2020-12-10T01:00,27,49,10.1,0,0,6.4,8.5 -2020-12-10T02:00,26.7,48,9.7,0,0,6.9,8.1 -2020-12-10T03:00,27.2,47,9.4,0,0,6.9,8.3 -2020-12-10T04:00,30.2,41,9.2,0,0,5.2,8.3 -2020-12-10T05:00,31.2,40,9.4,0,0,5.6,7.8 -2020-12-10T06:00,29.5,49,12.5,0,0,5.4,9.6 -2020-12-10T07:00,26.7,57,13.5,0,0,7.6,9.2 -2020-12-10T08:00,31.1,55,16.7,0,0,5.7,9.2 -2020-12-10T09:00,37,39,14.2,0,0,4.8,9.4 -2020-12-10T10:00,40.1,40,17.4,0,0,6.7,12.5 -2020-12-10T11:00,40.4,43,19.9,0,0,7.1,14.5 -2020-12-10T12:00,40.6,43,19.9,0,0,4.7,14.5 -2020-12-10T13:00,40.5,44,20.3,0,0,4.2,10.7 -2020-12-10T14:00,40.3,46,20.9,0,0,4,10.1 -2020-12-10T15:00,40.1,47,21.6,0,0,4.7,9.6 -2020-12-10T16:00,37.8,55,23,0,0,3.4,9.2 -2020-12-10T17:00,35.6,56,21.3,0,0,6.5,6.3 -2020-12-10T18:00,33.7,62,22.2,0,0,6.3,11.2 -2020-12-10T19:00,32.1,68,22.8,0,0,5.7,10.3 -2020-12-10T20:00,30.3,77,23.8,0,0.028,5.9,9.8 -2020-12-10T21:00,29.4,82,24.5,0,0.083,5.8,10.5 -2020-12-10T22:00,28.5,85,24.6,0,0.11,6.4,11.2 -2020-12-10T23:00,27.9,86,24.1,0,0.055,5.9,11.2 -2020-12-11T00:00,27.2,85,23.3,0,0.028,4.8,10.3 -2020-12-11T01:00,26.8,84,22.7,0,0.028,4.4,8.7 -2020-12-11T02:00,26.3,84,22.3,0,0.028,3.8,8.3 -2020-12-11T03:00,26.1,84,21.8,0,0,3.2,7.2 -2020-12-11T04:00,26,83,21.4,0,0,2.9,6.5 -2020-12-11T05:00,25.6,83,21.3,0,0,3.5,6.3 -2020-12-11T06:00,25.8,82,21.1,0,0.028,3,7.4 -2020-12-11T07:00,25.8,81,20.8,0,0.028,2.4,6.5 -2020-12-11T08:00,26,81,20.9,0,0.028,2.7,6.3 -2020-12-11T09:00,26.9,79,21.3,0,0.028,3.3,8.5 -2020-12-11T10:00,27.4,79,21.7,0,0.028,4,9.6 -2020-12-11T11:00,28,77,21.6,0,0.055,3.8,10.3 -2020-12-11T12:00,28.3,76,21.7,0,0.055,3.2,10.1 -2020-12-11T13:00,28.8,72,20.9,0,0.055,4.1,10.3 -2020-12-11T14:00,29.1,70,20.6,0,0.055,4.8,11 -2020-12-11T15:00,29.5,68,20.2,0,0.028,4.8,11.4 -2020-12-11T16:00,28.6,69,19.8,0,0,4.9,10.7 -2020-12-11T17:00,23.1,79,17.6,0,0,4.4,8.7 -2020-12-11T18:00,22.7,81,17.7,0,0,3.7,8.1 -2020-12-11T19:00,22.8,80,17.7,0,0,1.1,6.3 -2020-12-11T20:00,23.2,79,17.5,0,0,0.6,3.8 -2020-12-11T21:00,22.7,76,16.3,0,0,0.5,3.8 -2020-12-11T22:00,21.7,78,15.8,0,0,1.4,3.4 -2020-12-11T23:00,20.6,82,15.9,0,0,1.6,3.4 -2020-12-12T00:00,19.2,88,16.2,0,0,2.6,4.3 -2020-12-12T01:00,19,89,16.3,0,0,2.7,4.5 -2020-12-12T02:00,18.3,90,15.8,0,0,3.6,4.7 -2020-12-12T03:00,18.1,90,15.7,0,0,2.9,4.7 -2020-12-12T04:00,18.5,88,15.4,0,0,2.6,4 -2020-12-12T05:00,16.2,92,14.4,0,0,3.6,4.5 -2020-12-12T06:00,17.2,94,15.8,0,0,3.8,6 -2020-12-12T07:00,17.7,91,15.6,0,0,5.3,9.2 -2020-12-12T08:00,18.2,88,15.4,0,0,4.5,9.8 -2020-12-12T09:00,19.2,85,15.4,0,0,3.2,9.2 -2020-12-12T10:00,20.8,78,15.1,0,0,3.8,9.6 -2020-12-12T11:00,22.7,72,14.9,0,0,4.7,11.6 -2020-12-12T12:00,25.7,63,14.9,0,0,5.5,13.6 -2020-12-12T13:00,27.3,60,15.3,0,0,6.2,14.5 -2020-12-12T14:00,26.8,61,15.3,0,0,8.2,16.1 -2020-12-12T15:00,25.9,65,15.7,0,0,9.1,16.3 -2020-12-12T16:00,24.8,69,16.2,0,0,9.4,18.1 -2020-12-12T17:00,20.7,77,14.5,0,0.028,6.5,15.7 -2020-12-12T18:00,20.7,78,14.8,0,0.055,8,14.3 -2020-12-12T19:00,21.3,78,15.4,0,0.055,7.3,14.3 -2020-12-12T20:00,21.3,78,15.6,0,0.028,8.3,14.1 -2020-12-12T21:00,21.6,77,15.5,0,0.055,7.9,14.8 -2020-12-12T22:00,22.2,80,17,0,0.11,9,15 -2020-12-12T23:00,22.9,84,18.8,0,0.138,9.3,16.6 -2020-12-13T00:00,23.5,85,19.8,0,0.083,10.6,17.4 -2020-12-13T01:00,24.4,80,19,0,0.028,10.7,17.9 -2020-12-13T02:00,23.2,76,16.8,0,0,6.7,17.7 -2020-12-13T03:00,22.2,77,16.2,0,0,1.9,10.7 -2020-12-13T04:00,20.7,81,15.8,0,0,1.6,3.8 -2020-12-13T05:00,16,86,12.7,0,0,3.4,4 -2020-12-13T06:00,16.5,87,13.4,0,0,4.7,7.2 -2020-12-13T07:00,15.9,82,11.4,0,0,4.4,7.6 -2020-12-13T08:00,17.2,64,6.9,0,0,6.3,9.8 -2020-12-13T09:00,21.8,48,5.2,0,0,6.3,12.1 -2020-12-13T10:00,27.1,42,7,0,0,10.6,18.8 -2020-12-13T11:00,30.6,31,3.2,0,0,12.5,22.8 -2020-12-13T12:00,34.6,26,2.9,0,0,11.9,22.8 -2020-12-13T13:00,37.9,20,0.8,0,0,9.8,22.1 -2020-12-13T14:00,39.5,18,-0.5,0,0,7.8,18.3 -2020-12-13T15:00,39.3,18,-1,0,0,5.1,14.5 -2020-12-13T16:00,35.1,21,-0.8,0,0,3.3,7.8 -2020-12-13T17:00,22.4,52,7.3,0,0,6.3,8.1 -2020-12-13T18:00,22.7,52,7.7,0,0,4.6,8.3 -2020-12-13T19:00,27.2,43,7.5,0,0,2.3,6.7 -2020-12-13T20:00,20.8,55,7.1,0,0,4.5,5.1 -2020-12-13T21:00,18.4,59,6.4,0,0,4.4,6 -2020-12-13T22:00,19.2,52,4.6,0,0,3.6,5.6 -2020-12-13T23:00,20.9,46,3.3,0,0,1.9,4.7 -2020-12-14T00:00,20.9,45,2.8,0,0,0.9,2.5 -2020-12-14T01:00,17.8,52,2.9,0,0,3,3.8 -2020-12-14T02:00,17.3,57,4.6,0,0,3,4 -2020-12-14T03:00,17.6,61,6.4,0,0,3.4,4.5 -2020-12-14T04:00,16.7,64,6.6,0,0,6.9,12.8 -2020-12-14T05:00,13.6,80,8.6,0,0,3.7,11.4 -2020-12-14T06:00,13.6,75,7.1,0,0,2.6,4.7 -2020-12-14T07:00,14.2,68,5.6,0,0,2.5,4.3 -2020-12-14T08:00,14.8,66,5.4,0,0,4.6,8.3 -2020-12-14T09:00,19.1,52,4.3,0,0,4.3,10.3 -2020-12-14T10:00,25.2,40,4.1,0,0,3.7,10.5 -2020-12-14T11:00,30.5,34,5.2,0,0,2,10.5 -2020-12-14T12:00,34.3,32,7.5,0,0,5.1,11.6 -2020-12-14T13:00,33.9,32,7.3,0,0,5.9,12.3 -2020-12-14T14:00,33.9,34,8.3,0,0,5.1,12.5 -2020-12-14T15:00,32.9,36,9,0,0,6.5,11.9 -2020-12-14T16:00,28.9,44,10,0,0,3.6,11.6 -2020-12-14T17:00,21.5,68,12.4,0,0,6.5,6 -2020-12-14T18:00,25.3,59,12.9,0,0,3.8,8.1 -2020-12-14T19:00,26.4,60,14.5,0,0.028,4.1,6 -2020-12-14T20:00,25.7,70,17.2,0,0.055,5.1,8.3 -2020-12-14T21:00,25.2,77,19,0,0.055,5.1,8.1 -2020-12-14T22:00,24.5,81,19.6,0,0.055,6.5,10.5 -2020-12-14T23:00,23.9,81,19,0,0.055,6.3,11.6 -2020-12-15T00:00,23.7,83,19.2,0,0.055,5.4,10.3 -2020-12-15T01:00,23.2,83,18.9,0,0.055,4,8.9 -2020-12-15T02:00,23.1,83,18.6,0,0.028,2.2,7.2 -2020-12-15T03:00,22.7,83,18.3,0,0,2.3,4.5 -2020-12-15T04:00,22.2,84,18.1,0,0,1.1,4 -2020-12-15T05:00,19.5,89,16.8,0,0,5.4,2.9 -2020-12-15T06:00,22.2,83,17.9,0,0,4.7,7.4 -2020-12-15T07:00,20.4,81,15.4,0,0,5.5,7.8 -2020-12-15T08:00,23.5,76,16.9,0,0.028,4.5,7.8 -2020-12-15T09:00,22.9,78,17.2,0,0.028,3.6,7.4 -2020-12-15T10:00,26.8,67,17.2,0,0.028,4.1,7.8 -2020-12-15T11:00,27.9,62,16.4,0,0.028,5.8,10.7 -2020-12-15T12:00,28.8,60,16.4,0,0,5,11.6 -2020-12-15T13:00,29.4,57,15.9,0,0,3.9,9.4 -2020-12-15T14:00,29.6,56,16,0,0,2.1,7.4 -2020-12-15T15:00,27.3,66,17.4,0,0,2.7,4.7 -2020-12-15T16:00,21.1,68,12.3,0,0,6.8,8.9 -2020-12-15T17:00,27.9,56,14,0,0,2.1,10.7 -2020-12-15T18:00,23.7,66,14.2,0,0,3.6,4.7 -2020-12-15T19:00,21.2,73,13.8,0,0,8.5,12.3 -2020-12-15T20:00,19.8,72,12.1,0,0,10.6,16.6 -2020-12-15T21:00,16.1,70,8.2,0,0,5.2,16.6 -2020-12-15T22:00,16.1,63,5.8,0,0,10.6,16.1 -2020-12-15T23:00,15.4,60,3.8,0,0,11.9,18.1 -2020-12-16T00:00,15.7,59,3.8,0,0,11.3,18.1 -2020-12-16T01:00,16.9,58,4.5,0,0,11.6,17.7 -2020-12-16T02:00,17,57,4.3,0,0,12,17.7 -2020-12-16T03:00,16.5,59,4.8,0,0,13.6,20.4 -2020-12-16T04:00,16.6,61,5.4,0,0,12.5,20.6 -2020-12-16T05:00,20.3,60,8.7,0,0,5.5,19.9 -2020-12-16T06:00,21.7,60,10.1,0,0,14.3,22.8 -2020-12-16T07:00,21,64,10.8,0,0,7.6,21.5 -2020-12-16T08:00,25.3,53,10.7,0,0,2.5,8.5 -2020-12-16T09:00,27.9,48,10.6,0,0,1.4,5.8 -2020-12-16T10:00,33.5,39,11,0,0,2.6,7.2 -2020-12-16T11:00,36.6,36,12.2,0,0,4.5,11.2 -2020-12-16T12:00,38.5,33,11.7,0,0,4.8,11 -2020-12-16T13:00,40.4,29,10.8,0,0,4,11.6 -2020-12-16T14:00,39.9,29,10,0,0,2.4,9.8 -2020-12-16T15:00,38.8,31,10.7,0,0,6.3,9.8 -2020-12-16T16:00,34.2,40,12.4,0,0,6.7,11.4 -2020-12-16T17:00,30,55,15.6,0,0,5.9,10.3 -2020-12-16T18:00,30.3,53,15.1,0,0,4.7,8.1 -2020-12-16T19:00,31.6,44,12,0,0,6.3,8.3 -2020-12-16T20:00,33.4,39,11.4,0,0,2.7,9.2 -2020-12-16T21:00,27.8,56,14.2,0,0,4.9,6.7 -2020-12-16T22:00,24.7,66,14.8,0,0,9.9,14.8 -2020-12-16T23:00,25.2,61,13.5,0,0,8.5,15.4 -2020-12-17T00:00,25.4,58,12.7,0,0,5.8,13.2 -2020-12-17T01:00,25.5,56,11.9,0,0,4.8,9.2 -2020-12-17T02:00,24.4,57,11.1,0,0,6.6,10.3 -2020-12-17T03:00,23.5,56,10.1,0,0,7.2,11.2 -2020-12-17T04:00,22.6,55,9,0,0,6.5,11.2 -2020-12-17T05:00,20.3,61,9,0,0,7.3,11 -2020-12-17T06:00,21.4,57,8.4,0,0,5.9,12.1 -2020-12-17T07:00,21,58,8.5,0,0,4.5,9.2 -2020-12-17T08:00,23.7,52,8.6,0,0,6.1,8.5 -2020-12-17T09:00,29.5,42,9.1,0,0,4.8,10.7 -2020-12-17T10:00,36.3,34,10.5,0,0,5.8,11.9 -2020-12-17T11:00,42.1,29,12.3,0,0,6.4,13.2 -2020-12-17T12:00,41.7,33,14.8,0,0,6.9,13.2 -2020-12-17T13:00,43.2,32,15.3,0,0,5.9,11.2 -2020-12-17T14:00,42.4,34,15.7,0,0,3.2,9.4 -2020-12-17T15:00,39.5,39,16.7,0,0,4.6,5.8 -2020-12-17T16:00,35.3,47,17.2,0,0,6.1,6.9 -2020-12-17T17:00,33.5,52,18,0,0,4.3,7.8 -2020-12-17T18:00,28.5,69,19.7,0,0,5.5,8.1 -2020-12-17T19:00,29,70,20.5,0,0,5.8,6.9 -2020-12-17T20:00,25.7,78,19.9,0,0,5,6.9 -2020-12-17T21:00,25.4,76,19,0,0,5.7,7.2 -2020-12-17T22:00,24.4,75,17.5,0,0,5.2,6.9 -2020-12-17T23:00,24.3,72,16.4,0,0,3.5,6 -2020-12-18T00:00,22.1,76,15.6,0,0,2.1,4.7 -2020-12-18T01:00,19.7,81,14.8,0,0,2.7,3.6 -2020-12-18T02:00,19.6,79,14,0,0,3.2,5.1 -2020-12-18T03:00,18.8,78,13.1,0,0,2.6,5.4 -2020-12-18T04:00,18,79,12.7,0,0,1.4,4.5 -2020-12-18T05:00,16.6,79,11.2,0,0,4.5,6.9 -2020-12-18T06:00,20.8,70,12.7,0,0,2.6,5.8 -2020-12-18T07:00,23.2,65,13.2,0,0,3.4,4 -2020-12-18T08:00,27.7,55,13.6,0,0,2.4,4.7 -2020-12-18T09:00,30.1,53,15.2,0,0,7.3,12.8 -2020-12-18T10:00,33.1,55,18.9,0,0,2.2,12.1 -2020-12-18T11:00,34.9,63,23.5,0,0.055,5.2,11.9 -2020-12-18T12:00,33.5,77,27.1,0,0.11,3.6,11.9 -2020-12-18T13:00,33.4,79,27.6,0,0.055,4.2,8.3 -2020-12-18T14:00,33.7,78,27.6,0,0.028,5,9.2 -2020-12-18T15:00,33.8,77,27.4,0,0,3.7,9.4 -2020-12-18T16:00,33.4,74,26,0,0,2.9,6.9 -2020-12-18T17:00,27.7,86,24,0,0,4.7,3.6 -2020-12-18T18:00,25.8,86,22.2,0,0,5.2,7.6 -2020-12-18T19:00,24.1,86,20.6,0,0,6,8.1 -2020-12-18T20:00,22.8,86,19.1,0,0,6.5,8.9 -2020-12-18T21:00,19.9,85,16.1,0,0,7.4,9.8 -2020-12-18T22:00,16.2,87,13.1,0,0,7.6,10.5 -2020-12-18T23:00,13.5,87,10.4,0,0,7.6,11 -2020-12-19T00:00,12.8,84,8.9,0,0,7.6,10.3 -2020-12-19T01:00,12.7,81,7.9,0,0,6.9,10.7 -2020-12-19T02:00,15,74,8.2,0,0,5.4,10.1 -2020-12-19T03:00,15.8,72,8.2,0,0,5.6,9.2 -2020-12-19T04:00,15.9,70,7.9,0,0,6,9.4 -2020-12-19T05:00,19.9,68,10.9,0,0,8.1,9.6 -2020-12-19T06:00,18.8,66,9.1,0,0,7.2,13.2 -2020-12-19T07:00,16.5,66,7.3,0,0,6.1,12.3 -2020-12-19T08:00,20.1,63,9.5,0,0,4.6,8.9 -2020-12-19T09:00,27.2,59,14.7,0,0,3.8,8.5 -2020-12-19T10:00,34.3,54,19.5,0,0,5,10.3 -2020-12-19T11:00,38.4,48,20.5,0,0,8.3,15.4 -2020-12-19T12:00,39.7,44,19.6,0,0,16,27.7 -2020-12-19T13:00,43.5,30,14.2,0,0,13.2,28.4 -2020-12-19T14:00,43.8,31,15.3,0,0,13.5,22.1 -2020-12-19T15:00,41.5,35,16,0,0,10.6,22.4 -2020-12-19T16:00,36.7,39,14.2,0,0,5.4,15.9 -2020-12-19T17:00,32.5,46,13.9,0,0,7.8,9.6 -2020-12-19T18:00,31.6,52,15.9,0,0,6.8,13.2 -2020-12-19T19:00,29.1,57,15.8,0,0,4.9,11.4 -2020-12-19T20:00,28.8,55,14.5,0,0,6,8.9 -2020-12-19T21:00,29.8,52,14.5,0,0,7.2,10.7 -2020-12-19T22:00,28.3,56,14.5,0,0,6.7,10.1 -2020-12-19T23:00,29.8,52,14.4,0,0,3.1,8.7 -2020-12-20T00:00,25,60,13.1,0,0,3.7,6.3 -2020-12-20T01:00,23.3,58,10.9,0,0,8.5,12.1 -2020-12-20T02:00,23.1,56,9.9,0,0,8.9,13.4 -2020-12-20T03:00,23.1,56,9.9,0,0,9,13.6 -2020-12-20T04:00,22.4,57,9.6,0,0,8.7,14.1 -2020-12-20T05:00,22.5,61,11.2,0,0,7.8,13.9 -2020-12-20T06:00,23.2,60,11.2,0,0,6.8,14.1 -2020-12-20T07:00,24.7,56,11.2,0,0,5.7,10.3 -2020-12-20T08:00,27.4,51,11.5,0,0,7.4,9.8 -2020-12-20T09:00,32.8,40,11.3,0,0,9.9,13.9 -2020-12-20T10:00,38,38,14.6,0,0,11.9,18.8 -2020-12-20T11:00,44,32,16.2,0,0,13.5,22.1 -2020-12-20T12:00,47.9,30,18.1,0,0,15.4,23.9 -2020-12-20T13:00,51,28,18.7,0,0,13.8,26.8 -2020-12-20T14:00,52.4,29,20.8,0,0,4.7,23 -2020-12-20T15:00,50.2,32,21.7,0,0,1.4,9.6 -2020-12-20T16:00,48.3,36,22.6,0,0,4.1,5.8 -2020-12-20T17:00,38.8,52,22.7,0,0,7.6,6.9 -2020-12-20T18:00,37,57,23,0,0,7.3,9.6 -2020-12-20T19:00,33.3,67,23.4,0,0,7.5,8.5 -2020-12-20T20:00,39.1,52,22.8,0,0,7.7,11.2 -2020-12-20T21:00,40.3,50,23.2,0,0,8.8,14.3 -2020-12-20T22:00,36.1,58,22.9,0,0,6.5,14.1 -2020-12-20T23:00,31.7,68,22.4,0,0,7.7,9.6 -2020-12-21T00:00,31.6,68,22.4,0,0,6.7,9.4 -2020-12-21T01:00,35.3,59,22.6,0,0,6.8,10.1 -2020-12-21T02:00,36.4,58,23.1,0,0,7.7,12.1 -2020-12-21T03:00,35.8,60,23.4,0,0,7.5,12.1 -2020-12-21T04:00,34.5,64,23.6,0,0,5.9,11.6 -2020-12-21T05:00,30.8,72,22.7,0,0,7.2,8.9 -2020-12-21T06:00,30.4,72,22.6,0,0,5.9,8.7 -2020-12-21T07:00,30,75,22.9,0,0,5.8,7.2 -2020-12-21T08:00,35.3,62,23.5,0,0,5.9,8.3 -2020-12-21T09:00,43.1,47,24.1,0,0,7.4,11.2 -2020-12-21T10:00,49.7,39,25.5,0,0,2.3,11.2 -2020-12-21T11:00,52,39,27.6,0,0,2.9,6 -2020-12-21T12:00,53.4,38,28.5,0,0,6.8,11.9 -2020-12-21T13:00,54.2,36,27.9,0,0,10.4,16.8 -2020-12-21T14:00,54.1,35,27.1,0,0,12,20.1 -2020-12-21T15:00,53,37,27.4,0,0,8.9,19.7 -2020-12-21T16:00,46.1,50,28.5,0,0,6,13.6 -2020-12-21T17:00,39.7,55,24.9,0,0,9.5,9.6 -2020-12-21T18:00,37.9,64,26.8,0,0,6.3,11.4 -2020-12-21T19:00,34.1,76,27.4,0,0,6.7,11.4 -2020-12-21T20:00,30.9,80,25.6,0,0,5.8,10.5 -2020-12-21T21:00,29.9,81,24.8,0,0,4.7,8.1 -2020-12-21T22:00,29.7,78,23.7,0,0,5.2,8.1 -2020-12-21T23:00,29.5,74,22.1,0,0,5,8.5 -2020-12-22T00:00,28,75,20.9,0,0,4.8,8.1 -2020-12-22T01:00,26.2,77,20,0,0,5.9,7.4 -2020-12-22T02:00,26.3,75,19.5,0,0,4.7,7.2 -2020-12-22T03:00,25.8,76,19.2,0,0,5.8,6.9 -2020-12-22T04:00,26.1,75,19.1,0,0,6.2,7.4 -2020-12-22T05:00,24.9,77,18.8,0,0,7.1,7.4 -2020-12-22T06:00,25.8,76,19.2,0,0,6.9,8.5 -2020-12-22T07:00,26.1,73,18.5,0,0,8.2,9.4 -2020-12-22T08:00,33,52,17.3,0,0,6.4,9.8 -2020-12-22T09:00,40,40,17.8,0,0,11.6,17.4 -2020-12-22T10:00,45.9,34,18.8,0,0,12.4,20.8 -2020-12-22T11:00,51,29,20.2,0,0,15.1,24.8 -2020-12-22T12:00,53.8,29,22,0,0,17.7,29.5 -2020-12-22T13:00,55.8,28,23.3,0,0,15.4,29.5 -2020-12-22T14:00,56.4,29,24.5,0,0,13,25.5 -2020-12-22T15:00,54.9,32,25.2,0,0,9.9,21 -2020-12-22T16:00,48.7,39,24.8,0,0,6.9,15.9 -2020-12-22T17:00,43.2,42,21.7,0,0,8.2,11 -2020-12-22T18:00,40.7,54,25.5,0,0,8.5,15 -2020-12-22T19:00,42.2,52,25.6,0,0,11,20.6 -2020-12-22T20:00,39,54,23.7,0,0,10.6,17.9 -2020-12-22T21:00,36,40,14.2,0,0,19.3,31.5 -2020-12-22T22:00,30.7,32,4.5,0,0,20.7,37.6 -2020-12-22T23:00,24.9,35,1,0,0,6.6,33.8 -2020-12-23T00:00,24.1,37,1.6,0,0,4.1,8.7 -2020-12-23T01:00,24.9,37,2,0,0,5,8.1 -2020-12-23T02:00,26.3,36,2.8,0,0,7.6,14.8 -2020-12-23T03:00,25.3,37,2.5,0,0,7.4,14.1 -2020-12-23T04:00,24.6,38,2.7,0,0,7.1,12.3 -2020-12-23T05:00,25.3,35,1.4,0,0,8.4,15.4 -2020-12-23T06:00,23.1,38,1.4,0,0,4.7,14.3 -2020-12-23T07:00,21.4,38,-0.1,0,0,5.3,8.7 -2020-12-23T08:00,22.6,35,-1.3,0,0,5.1,8.9 -2020-12-23T09:00,25.4,32,-0.1,0,0,6.7,11.9 -2020-12-23T10:00,27.1,34,2.1,0,0,8.6,17.2 -2020-12-23T11:00,29.4,21,-5.6,0,0,12.5,22.1 -2020-12-23T12:00,29.8,19,-7.3,0,0,16.9,29.5 -2020-12-23T13:00,29.1,21,-6.2,0,0,17.7,32.2 -2020-12-23T14:00,28.6,21,-6.6,0,0,16.7,31.5 -2020-12-23T15:00,28,19,-9.1,0,0,14.2,29.1 -2020-12-23T16:00,25.8,21,-8.4,0,0,12.7,24.8 -2020-12-23T17:00,21.1,29,-6.2,0,0,4.9,21.5 -2020-12-23T18:00,23.4,27,-5.7,0,0,0.8,8.3 -2020-12-23T19:00,19.6,36,-3,0,0,3.6,5.4 -2020-12-23T20:00,22.8,30,-4.3,0,0,9.8,14.3 -2020-12-23T21:00,23.8,29,-4.1,0,0,9.7,19.7 -2020-12-23T22:00,22.7,29,-4.7,0,0,5,16.1 -2020-12-23T23:00,21,30,-5.6,0,0,6.9,9.8 -2020-12-24T00:00,23.9,26,-5.7,0,0,2.1,9.2 -2020-12-24T01:00,20,33,-4.6,0,0,2.6,4.5 -2020-12-24T02:00,19.9,33,-4.9,0,0,3.6,6.5 -2020-12-24T03:00,19.9,33,-4.9,0,0,3.1,6.5 -2020-12-24T04:00,20.8,32,-4.4,0,0,2.7,5.4 -2020-12-24T05:00,24.9,29,-3.2,0,0,4.5,4.9 -2020-12-24T06:00,28.3,25,-2.7,0,0,4.3,6.7 -2020-12-24T07:00,27.2,30,-0.3,0,0,7.8,11.6 -2020-12-24T08:00,30.8,29,2.1,0,0,9.4,16.6 -2020-12-24T09:00,35.1,25,2.8,0,0,4.5,15.2 -2020-12-24T10:00,39.4,22,3.2,0,0,3.2,9.2 -2020-12-24T11:00,44.4,20,6.2,0,0,11.2,20.1 -2020-12-24T12:00,47.5,20,7.9,0,0,10.1,20.8 -2020-12-24T13:00,49,19,8.8,0,0,7.6,18.6 -2020-12-24T14:00,49.2,20,9.6,0,0,8,15.2 -2020-12-24T15:00,47.2,23,11.1,0,0,8.6,15 -2020-12-24T16:00,41.3,29,11.7,0,0,8.5,14.3 -2020-12-24T17:00,37.1,34,11.3,0,0,10.2,16.1 -2020-12-24T18:00,37.1,34,11.2,0,0,13.2,21 -2020-12-24T19:00,37.3,33,10.9,0,0,13.4,22.6 -2020-12-24T20:00,36.7,34,11,0,0,10.1,21.9 -2020-12-24T21:00,34.7,37,11.2,0,0,7.7,16.6 -2020-12-24T22:00,32.6,41,11.6,0,0,6.5,12.3 -2020-12-24T23:00,29.9,47,12.1,0,0,7.3,9.6 -2020-12-25T00:00,28.2,51,12.6,0,0,7.3,9.8 -2020-12-25T01:00,27.5,53,12.6,0,0,6.5,9.2 -2020-12-25T02:00,26.6,54,12.3,0,0,5.6,8.5 -2020-12-25T03:00,26.9,53,11.8,0,0,5.4,8.1 -2020-12-25T04:00,27.2,49,10.5,0,0,6.3,9.8 -2020-12-25T05:00,27.7,45,8.9,0,0,6.2,10.5 -2020-12-25T06:00,26.7,44,7.8,0,0,5.2,9.8 -2020-12-25T07:00,25.6,45,7.4,0,0,5.3,8.1 -2020-12-25T08:00,28.7,40,7.5,0,0,5.4,8.3 -2020-12-25T09:00,35.2,32,8,0,0,6.5,11.9 -2020-12-25T10:00,43,24,8.5,0,0,6.2,12.5 -2020-12-25T11:00,49.6,19,8.9,0,0,6.2,13 -2020-12-25T12:00,53.2,20,13.5,0,0,5.7,13 -2020-12-25T13:00,55.1,19,13.3,0,0,5.6,11.9 -2020-12-25T14:00,55.7,18,12.6,0,0,5.1,11.4 -2020-12-25T15:00,52.9,33,24.9,0,0,3.3,9.4 -2020-12-25T16:00,46,35,20.1,0,0,5.8,6.9 -2020-12-25T17:00,46.6,33,18.9,0,0,3.1,6.9 -2020-12-25T18:00,31.8,62,20.3,0,0,6.1,7.6 -2020-12-25T19:00,27.5,75,20.7,0,0,6.7,7.6 -2020-12-25T20:00,28,65,17.6,0,0,5.8,8.1 -2020-12-25T21:00,27.8,54,13.4,0,0,7.4,9.4 -2020-12-25T22:00,27.4,52,11.9,0,0,8.3,10.1 -2020-12-25T23:00,28.2,50,11.9,0,0,5.2,9.8 -2020-12-26T00:00,27.1,51,11.2,0,0,5.4,9.4 -2020-12-26T01:00,24.3,55,10.4,0,0,7,8.9 -2020-12-26T02:00,25.2,49,8.8,0,0,6.4,8.3 -2020-12-26T03:00,26.5,48,9.2,0,0,5.1,8.3 -2020-12-26T04:00,25.9,47,8.6,0,0,8,13.2 -2020-12-26T05:00,25.3,51,9.7,0,0,5,14.3 -2020-12-26T06:00,27.2,47,9.4,0,0,6.4,10.1 -2020-12-26T07:00,30,43,10.4,0,0,6.2,11.2 -2020-12-26T08:00,31.6,42,11.3,0,0,7.6,12.1 -2020-12-26T09:00,37.8,37,14,0,0,7.7,12.8 -2020-12-26T10:00,45.2,32,17.2,0,0,2.5,12.5 -2020-12-26T11:00,50.1,29,18.7,0,0,0.5,6.9 -2020-12-26T12:00,53.8,23,17.1,0,0,4.2,9.6 -2020-12-26T13:00,55.9,20,15.5,0,0,2.3,10.1 -2020-12-26T14:00,56.9,21,17,0,0,6.5,11.4 -2020-12-26T15:00,56.7,30,25.6,0,0,2,11.9 -2020-12-26T16:00,47.7,44,26.6,0,0,6.9,8.3 -2020-12-26T17:00,40.2,44,19.9,0,0,7.4,8.1 -2020-12-26T18:00,39.4,46,20.1,0,0,8.4,10.1 -2020-12-26T19:00,42.9,40,20.5,0,0,0.9,11 -2020-12-26T20:00,32.4,59,19.5,0,0,5.1,7.6 -2020-12-26T21:00,33.7,48,16,0,0,7.1,11 -2020-12-26T22:00,37.3,41,16,0,0,12,18.8 -2020-12-26T23:00,37.8,47,19.5,0,0,15.2,24.6 -2020-12-27T00:00,37,51,20.5,0,0,12.2,25.1 -2020-12-27T01:00,35.2,58,22,0,0,10.4,19.9 -2020-12-27T02:00,36.3,56,22.1,0,0,10.4,17.7 -2020-12-27T03:00,36.4,53,20.8,0,0,12.7,19.9 -2020-12-27T04:00,37.8,45,18.5,0,0,14.8,24.8 -2020-12-27T05:00,36.6,46,17.8,0,0,12.8,24.8 -2020-12-27T06:00,35.5,39,12.7,0,0,13,22.1 -2020-12-27T07:00,33.8,40,12,0,0,7.7,21.7 -2020-12-27T08:00,33.2,46,14.7,0,0,6.2,12.8 -2020-12-27T09:00,36.9,40,14.7,0,0,4.1,9.8 -2020-12-27T10:00,40.5,33,13.6,0,0,4,9.4 -2020-12-27T11:00,43.1,27,11,0,0,5.4,12.3 -2020-12-27T12:00,45,23,9.2,0,0,5.1,13.4 -2020-12-27T13:00,46.2,21,8.1,0,0,8.2,15.7 -2020-12-27T14:00,45.7,21,8.1,0,0,10.1,19.7 -2020-12-27T15:00,44.2,23,8.4,0,0,8.1,19.2 -2020-12-27T16:00,40.9,30,11.7,0,0,6.7,14.8 -2020-12-27T17:00,32.8,42,12.5,0,0,6.6,14.3 -2020-12-27T18:00,30.2,51,14.3,0,0,6.2,8.3 -2020-12-27T19:00,29.2,54,14.7,0,0,5.1,7.6 -2020-12-27T20:00,28.7,51,12.7,0,0,4,6.3 -2020-12-27T21:00,27.1,51,11.3,0,0,3.3,5.1 -2020-12-27T22:00,26.6,49,9.9,0,0,4.1,6.9 -2020-12-27T23:00,25.4,50,9.5,0,0,4.4,6.7 -2020-12-28T00:00,24.1,60,12.1,0,0,4.5,6.5 -2020-12-28T01:00,24.6,61,13,0,0,2.9,5.4 -2020-12-28T02:00,23.6,66,14.1,0,0,3.1,4.9 -2020-12-28T03:00,26.2,62,14.7,0,0,1.8,3.6 -2020-12-28T04:00,25.3,66,15.7,0,0,2.1,2.5 -2020-12-28T05:00,25,74,17.8,0,0,2.8,3.4 -2020-12-28T06:00,24.6,75,17.8,0,0,2.6,3.8 -2020-12-28T07:00,24,76,17.6,0,0,1.9,3.4 -2020-12-28T08:00,24,76,17.5,0,0,0.5,2.7 -2020-12-28T09:00,27.5,63,16.4,0,0,2.4,6.7 -2020-12-28T10:00,29.7,54,15,0,0.028,5.2,11 -2020-12-28T11:00,29.7,62,18.1,0,0.028,6.4,13 -2020-12-28T12:00,30.5,68,21.2,0,0,5.3,13.6 -2020-12-28T13:00,30.7,72,22.7,0,0.028,5.1,12.1 -2020-12-28T14:00,30.5,75,23.4,0,0.028,5.1,11.6 -2020-12-28T15:00,30,77,23.7,0,0.028,4.5,11 -2020-12-28T16:00,28.9,82,24.3,0,0.083,4.6,9.4 -2020-12-28T17:00,24.9,90,22.3,0,0.055,3.2,8.7 -2020-12-28T18:00,26.3,85,22.6,0,0.028,3.6,8.1 -2020-12-28T19:00,26.2,86,22.7,0,0.11,5.6,10.1 -2020-12-28T20:00,25.7,89,22.9,0,0.138,5.3,19.2 -2020-12-28T21:00,25.6,89,22.7,0,0.22,5.8,21 -2020-12-28T22:00,25.8,88,22.6,0,0.11,3.7,10.1 -2020-12-28T23:00,25.3,89,22.5,0,0.055,3.9,7.2 -2020-12-29T00:00,24,94,22.5,0,0.028,4,7.2 -2020-12-29T01:00,24.1,93,22.3,0,0.028,3.7,8.3 -2020-12-29T02:00,24.6,91,22.4,0,0.028,4.1,7.4 -2020-12-29T03:00,24.7,89,21.9,0,0.055,2.8,7.8 -2020-12-29T04:00,23.3,93,21.6,0,0,1.5,5.8 -2020-12-29T05:00,23.6,91,21.4,0,0,5,5.6 -2020-12-29T06:00,23.5,91,21.2,0,0,0.9,8.7 -2020-12-29T07:00,21,97,20.2,0,0,3,5.4 -2020-12-29T08:00,21.2,95,20,0,0,8.5,11.2 -2020-12-29T09:00,21.2,94,19.7,0,0,8.6,20.6 -2020-12-29T10:00,26.1,72,18.4,0,0,2.8,15.7 -2020-12-29T11:00,29.5,63,18.5,0,0,1.3,8.9 -2020-12-29T12:00,31.2,59,18.5,0,0,3.5,10.7 -2020-12-29T13:00,32.9,57,19.4,0,0,4.3,11.4 -2020-12-29T14:00,33.7,56,19.5,0,0,5.8,12.8 -2020-12-29T15:00,33.4,54,18.4,0,0,3.4,12.8 -2020-12-29T16:00,32.6,53,17.2,0,0,0.9,8.3 -2020-12-29T17:00,25.1,72,17.3,0,0,3.4,2 -2020-12-29T18:00,24.2,80,19,0,0,4.5,6 -2020-12-29T19:00,25.9,73,18.5,0,0,3.9,6 -2020-12-29T20:00,22.7,78,17,0,0,4.3,6.5 -2020-12-29T21:00,21.1,74,14,0,0,4.1,7.2 -2020-12-29T22:00,20,71,12,0,0,3.7,6.3 -2020-12-29T23:00,19.5,64,9.2,0,0,5.1,8.1 -2020-12-30T00:00,18.9,61,7.6,0,0,4.6,8.1 -2020-12-30T01:00,18.1,61,6.9,0,0,4.7,7.4 -2020-12-30T02:00,17.5,60,5.8,0,0,6,9.4 -2020-12-30T03:00,17.7,49,1.8,0,0,5.3,9.4 -2020-12-30T04:00,18.1,40,-2.1,0,0,4,8.5 -2020-12-30T05:00,14.2,44,-3.5,0,0,7.3,6.7 -2020-12-30T06:00,17.6,38,-3.6,0,0,5,8.5 -2020-12-30T07:00,17.5,37,-4.6,0,0,4.5,6.7 -2020-12-30T08:00,20.4,31,-5.4,0,0,4.5,6.7 -2020-12-30T09:00,26.7,24,-5.3,0,0,5.1,10.5 -2020-12-30T10:00,33.2,19,-4.5,0,0,3.4,10.3 -2020-12-30T11:00,37.9,17,-3.7,0,0,1.7,9.6 -2020-12-30T12:00,40.3,15,-3.3,0,0,1.6,8.1 -2020-12-30T13:00,42.3,14,-3.3,0,0,1.1,8.1 -2020-12-30T14:00,43.2,14,-3,0,0,0.9,7.4 -2020-12-30T15:00,42.3,15,-2.2,0,0,2.9,6 -2020-12-30T16:00,33.4,25,1.6,0,0,6.9,8.1 -2020-12-30T17:00,37.3,24,4,0,0,3.6,8.7 -2020-12-30T18:00,31.8,32,5,0,0,3.8,4.9 -2020-12-30T19:00,24.8,46,6.8,0,0,4.8,6.7 -2020-12-30T20:00,23.4,53,8.6,0,0,6.3,9.8 -2020-12-30T21:00,22.6,51,7.2,0,0,4.9,9.8 -2020-12-30T22:00,23.6,46,6,0,0,4.1,7.8 -2020-12-30T23:00,24.7,43,5.2,0,0,4.6,7.4 -2020-12-31T00:00,24.3,43,5,0,0,5.7,8.9 -2020-12-31T01:00,23.5,46,5.7,0,0,7.1,11.2 -2020-12-31T02:00,23.1,49,6.8,0,0,6.8,11.9 -2020-12-31T03:00,22.4,53,7.7,0,0,3.6,10.7 -2020-12-31T04:00,21.9,56,8.5,0,0,4.7,5.6 -2020-12-31T05:00,23.3,58,10.8,0,0,4.7,6.7 -2020-12-31T06:00,23.5,57,10.3,0,0,4,8.5 -2020-12-31T07:00,23.6,56,10.2,0,0,4.7,6.9 -2020-12-31T08:00,24.7,53,10,0,0,6.7,10.3 -2020-12-31T09:00,30,43,10.2,0,0,2.7,10.3 -2020-12-31T10:00,35.1,35,10.2,0,0,2.2,7.8 -2020-12-31T11:00,39.1,30,10,0,0,4.5,11 -2020-12-31T12:00,41.3,28,10.4,0,0,6.7,14.5 -2020-12-31T13:00,42.2,27,10.6,0,0,6.9,15 -2020-12-31T14:00,42.4,27,10.6,0,0,6,14.5 -2020-12-31T15:00,41.6,28,10.7,0,0,5.2,12.8 -2020-12-31T16:00,35.2,37,11.2,0,0,5.1,9.6 -2020-12-31T17:00,29.6,50,13.1,0,0,6.3,8.9 -2020-12-31T18:00,28.9,49,12.3,0,0,6.3,9.2 -2020-12-31T19:00,27,52,11.7,0,0,4.5,7.4 -2020-12-31T20:00,28.8,51,13,0,0,4.1,5.6 -2020-12-31T21:00,26.1,57,12.7,0,0,5.7,6.7 -2020-12-31T22:00,25.5,57,12.4,0,0,5.5,6.7 -2020-12-31T23:00,28.3,50,12,0,0,3.5,6.5 -2021-01-01T00:00,23.5,61,11.9,0,0,3.2,4 -2021-01-01T01:00,21.4,66,11.8,0,0,2.7,4.3 -2021-01-01T02:00,20.8,64,10.6,0,0,2.5,4.3 -2021-01-01T03:00,19.9,64,9.8,0,0,3.5,5.8 -2021-01-01T04:00,20,61,8.9,0,0,2.9,5.8 -2021-01-01T05:00,18.8,64,8.6,0,0,4,5.1 -2021-01-01T06:00,21,57,8.2,0,0,2.1,5.4 -2021-01-01T07:00,21.5,56,8.2,0,0,4,4.7 -2021-01-01T08:00,25.3,48,8.4,0,0,2.2,5.4 -2021-01-01T09:00,31.2,39,9.1,0,0,0.8,5.4 -2021-01-01T10:00,35.2,36,11.2,0,0,1.6,6.9 -2021-01-01T11:00,37.2,41,15.4,0,0,2.7,9.6 -2021-01-01T12:00,38.1,40,16.1,0,0,1.4,9.8 -2021-01-01T13:00,38.6,40,16.3,0,0,2.5,8.9 -2021-01-01T14:00,38.4,43,17.6,0,0,4.1,10.5 -2021-01-01T15:00,37.9,44,17.9,0,0,3.2,10.3 -2021-01-01T16:00,36.9,46,17.9,0,0,2.1,7.4 -2021-01-01T17:00,35.8,49,18.3,0,0,3.7,2.7 -2021-01-01T18:00,33.4,54,18.4,0,0,1.4,4.3 -2021-01-01T19:00,30.4,60,18.2,0,0,1.7,2.2 -2021-01-01T20:00,27.5,66,17.8,0,0,1.5,2.2 -2021-01-01T21:00,21.8,82,17.1,0,0,3.4,4.7 -2021-01-01T22:00,21.5,77,15.4,0,0,3.3,4.9 -2021-01-01T23:00,21.9,67,12.7,0,0,3.5,5.8 -2021-01-02T00:00,21.5,61,10,0,0,3.3,5.8 -2021-01-02T01:00,21.3,57,8.3,0,0,4,6.3 -2021-01-02T02:00,21.9,54,7.6,0,0,3.9,6.5 -2021-01-02T03:00,22,53,7.6,0,0,4.4,7.2 -2021-01-02T04:00,21.4,54,7.3,0,0,3.8,6.9 -2021-01-02T05:00,19.9,56,6.5,0,0,4.3,7.2 -2021-01-02T06:00,21.6,49,5.2,0,0,4.3,8.3 -2021-01-02T07:00,21.5,47,4.6,0,0,6.2,7.4 -2021-01-02T08:00,26.2,38,4.2,0,0,4.2,8.5 -2021-01-02T09:00,33.8,28,3.7,0,0,4.9,8.9 -2021-01-02T10:00,39.6,22,3.9,0,0,2.9,8.9 -2021-01-02T11:00,43.9,19,4.4,0,0,4.5,10.5 -2021-01-02T12:00,46.6,17,3.6,0,0,3.5,11.6 -2021-01-02T13:00,47.9,15,2.9,0,0,3,10.1 -2021-01-02T14:00,47.8,15,2.2,0,0,6.6,12.3 -2021-01-02T15:00,44.8,22,8.1,0,0,9.2,14.3 -2021-01-02T16:00,39.6,29,9.9,0,0,5.7,16.6 -2021-01-02T17:00,34.1,38,11.2,0,0,5.7,10.3 -2021-01-02T18:00,37.5,30,9,0,0,3.5,9.4 -2021-01-02T19:00,29.6,46,11.3,0,0,5.9,9.6 -2021-01-02T20:00,30.9,42,10.3,0,0,8.9,13.2 -2021-01-02T21:00,28.5,47,10.9,0,0,5.5,15.4 -2021-01-02T22:00,27,51,11,0,0,5.4,7.8 -2021-01-02T23:00,25.3,52,10,0,0,8.7,13.9 -2021-01-03T00:00,25.7,48,8.5,0,0,8.3,15.4 -2021-01-03T01:00,26,47,8.5,0,0,3.9,13.4 -2021-01-03T02:00,25.1,49,8.5,0,0,3.9,6.5 -2021-01-03T03:00,25.5,47,8.2,0,0,4.6,7.4 -2021-01-03T04:00,25.4,47,8.1,0,0,4.8,8.3 -2021-01-03T05:00,25.2,53,10.3,0,0,5.7,8.5 -2021-01-03T06:00,28,44,8.9,0,0,8.6,13.4 -2021-01-03T07:00,25.7,48,8.8,0,0,7.8,15.4 -2021-01-03T08:00,26.2,48,9.3,0,0,7.7,12.3 -2021-01-03T09:00,33.6,37,10.3,0,0,6.1,12.1 -2021-01-03T10:00,40.7,29,10.6,0,0,5.8,11.9 -2021-01-03T11:00,43.8,26,10.7,0,0,6,13.4 -2021-01-03T12:00,46.2,27,13.8,0,0,5.7,13.2 -2021-01-03T13:00,48.1,26,14.9,0,0,7.4,14.1 -2021-01-03T14:00,48.8,25,14.9,0,0,9,16.3 -2021-01-03T15:00,46.8,31,17.3,0,0,5.2,16.3 -2021-01-03T16:00,42.9,36,17.7,0,0,3.9,8.1 -2021-01-03T17:00,43.6,32,15.4,0,0,16.8,13.4 -2021-01-03T18:00,42.6,36,17.2,0,0,14,28.2 -2021-01-03T19:00,38.8,43,18.3,0,0,10.1,22.8 -2021-01-03T20:00,33.8,53,18.7,0,0,4.9,16.3 -2021-01-03T21:00,31.1,58,18,0,0,6.7,9.2 -2021-01-03T22:00,36.8,46,17.7,0,0,8.3,14.1 -2021-01-03T23:00,35.4,48,17.7,0,0,6.7,14.1 -2021-01-04T00:00,36.2,47,18.1,0,0,7.4,12.8 -2021-01-04T01:00,35.3,49,18,0,0,8.1,12.8 -2021-01-04T02:00,32.4,53,17.3,0,0,5.7,13.6 -2021-01-04T03:00,34,50,17.2,0,0,1,9.6 -2021-01-04T04:00,27.1,66,17.3,0,0,6.5,10.3 -2021-01-04T05:00,25.7,71,17.7,0,0,6.2,10.3 -2021-01-04T06:00,26.6,66,16.8,0,0,4.5,8.1 -2021-01-04T07:00,26.2,62,15.1,0,0,5.2,8.9 -2021-01-04T08:00,26.3,63,15.4,0,0,3.9,8.3 -2021-01-04T09:00,33.5,43,13.3,0,0,4.2,8.5 -2021-01-04T10:00,39.2,35,13.7,0,0,4.3,8.7 -2021-01-04T11:00,43.8,27,12,0,0,7.5,15 -2021-01-04T12:00,48.1,23,11.6,0,0,6.2,15.2 -2021-01-04T13:00,51.5,18,9.6,0,0,6.9,13.6 -2021-01-04T14:00,53,17,9.9,0,0,6.4,14.5 -2021-01-04T15:00,52.4,19,11.5,0,0,3.2,12.5 -2021-01-04T16:00,50.6,21,12.2,0,0,1.9,5.8 -2021-01-04T17:00,47.8,26,14.3,0,0,2.7,5.4 -2021-01-04T18:00,34.3,46,15.9,0,0,8.3,9.2 -2021-01-04T19:00,31,57,17.7,0,0,5.5,9.8 -2021-01-04T20:00,28.2,64,17.6,0,0,4.5,7.6 -2021-01-04T21:00,27.2,62,15.8,0,0,4.8,7.4 -2021-01-04T22:00,27.3,54,12.9,0,0,5,8.1 -2021-01-04T23:00,26.4,55,12.4,0,0,4.4,8.1 -2021-01-05T00:00,25.8,57,12.5,0,0,5.6,6.9 -2021-01-05T01:00,26.1,56,12.5,0,0,5.2,6.9 -2021-01-05T02:00,25.5,60,13.5,0,0,5.5,6.7 -2021-01-05T03:00,25.3,63,14.5,0,0,5.4,6.9 -2021-01-05T04:00,25.2,66,15.4,0,0,5.9,6.9 -2021-01-05T05:00,25.3,71,17.2,0,0,4.4,6.9 -2021-01-05T06:00,25.6,71,17.5,0,0,4,6.3 -2021-01-05T07:00,26.5,70,18,0,0,3.1,4.7 -2021-01-05T08:00,28.7,66,18.6,0,0,2.8,5.4 -2021-01-05T09:00,35.8,51,19.6,0,0,3.7,8.5 -2021-01-05T10:00,44.4,38,20.3,0,0,2.4,8.3 -2021-01-05T11:00,49.9,36,23.8,0,0,4.3,13.6 -2021-01-05T12:00,51.2,29,20.1,0,0,11.5,19 -2021-01-05T13:00,50.9,27,18.1,0,0,12.9,23.5 -2021-01-05T14:00,47.8,29,17.3,0,0,11.7,22.8 -2021-01-05T15:00,45.4,31,16.8,0,0,8.5,20.4 -2021-01-05T16:00,42.7,36,17.5,0,0,6.7,14.8 -2021-01-05T17:00,40.2,34,13.7,0,0,9.7,14.5 -2021-01-05T18:00,38.3,37,14.3,0,0,12,22.1 -2021-01-05T19:00,37,41,15.5,0,0,4.5,19.7 -2021-01-05T20:00,35.4,46,16.8,0,0,5,8.7 -2021-01-05T21:00,33.5,60,21.2,0,0,5.6,9.8 -2021-01-05T22:00,33.1,63,22,0,0,4.9,9.2 -2021-01-05T23:00,30.8,68,21.6,0,0,4.8,8.3 -2021-01-06T00:00,31.6,65,21.4,0,0,3.2,6.5 -2021-01-06T01:00,30.9,64,20.2,0,0,0.6,4.3 -2021-01-06T02:00,27.1,71,19,0,0,4.1,4.7 -2021-01-06T03:00,26.7,60,14.7,0,0,6.9,8.3 -2021-01-06T04:00,28.9,44,9.9,0,0,5.4,8.9 -2021-01-06T05:00,29.4,53,14.4,0,0,2.8,8.5 -2021-01-06T06:00,30,47,12,0,0,3.8,4.7 -2021-01-06T07:00,26.2,48,9.4,0,0,7.4,8.1 -2021-01-06T08:00,30,38,7.6,0,0,5.4,9.8 -2021-01-06T09:00,34.9,31,7.3,0,0,5,10.1 -2021-01-06T10:00,38.8,26,6.8,0,0,1.6,9.2 -2021-01-06T11:00,41.2,26,9.2,0,0,4,9.8 -2021-01-06T12:00,41.5,28,10.6,0,0,6.1,13.9 -2021-01-06T13:00,41.9,26,9.2,0,0,5.9,13.9 -2021-01-06T14:00,42.2,22,6.1,0,0,7.3,14.8 -2021-01-06T15:00,41.9,21,4.6,0,0,6.7,14.8 -2021-01-06T16:00,38.3,38,14.7,0,0,4,12.5 -2021-01-06T17:00,31.9,43,11.8,0,0,6.1,6.9 -2021-01-06T18:00,36.1,34,10.7,0,0,1.3,7.2 -2021-01-06T19:00,29.7,48,12.3,0,0,3.3,3.4 -2021-01-06T20:00,25.3,64,14.7,0,0,4.5,6 -2021-01-06T21:00,24.6,69,16,0,0,3.7,6 -2021-01-06T22:00,24.3,69,15.6,0,0,4,6.3 -2021-01-06T23:00,25.2,63,14.5,0,0,4.3,7.2 -2021-01-07T00:00,25.3,58,12.6,0,0,4,6.9 -2021-01-07T01:00,24.6,56,11.3,0,0,4.3,6.5 -2021-01-07T02:00,23.8,58,11.2,0,0,4.7,6.3 -2021-01-07T03:00,23.5,58,11,0,0,4,6 -2021-01-07T04:00,23.6,59,11.5,0,0,3.8,5.4 -2021-01-07T05:00,26.3,56,12.7,0,0,1.8,4.3 -2021-01-07T06:00,24.2,61,12.7,0,0,1.1,2 -2021-01-07T07:00,22.8,65,12.9,0,0,3,3.4 -2021-01-07T08:00,25.3,59,13,0,0,3.4,4.5 -2021-01-07T09:00,30.6,47,12.7,0,0,3.7,7.8 -2021-01-07T10:00,37.9,34,12.2,0,0,4.1,9.8 -2021-01-07T11:00,43.3,28,12.7,0,0,3.4,9.8 -2021-01-07T12:00,46.6,26,13.3,0,0,3.1,9.2 -2021-01-07T13:00,47.4,27,14.8,0,0,4.3,8.9 -2021-01-07T14:00,48.1,28,16.8,0,0,5.6,10.5 -2021-01-07T15:00,46,32,18.1,0,0,8,13.4 -2021-01-07T16:00,40.1,41,18.2,0,0,8.5,14.5 -2021-01-07T17:00,31.9,53,16.5,0,0,5.5,14.3 -2021-01-07T18:00,30.4,54,15.7,0,0,6.7,10.7 -2021-01-07T19:00,30,54,15.2,0,0,6.1,12.1 -2021-01-07T20:00,30,55,15.9,0,0.028,4.7,10.1 -2021-01-07T21:00,30.9,53,15.8,0,0,2.7,7.8 -2021-01-07T22:00,25.5,67,16.2,0,0,3.9,6 -2021-01-07T23:00,23.7,72,16.2,0,0,4.1,6.7 -2021-01-08T00:00,24.1,67,14.7,0,0,4.9,7.8 -2021-01-08T01:00,23.7,64,13.2,0,0,5.8,9.4 -2021-01-08T02:00,23.3,61,11.7,0,0,4.4,9.2 -2021-01-08T03:00,23.3,56,9.7,0,0,4,6.9 -2021-01-08T04:00,22.6,54,8.4,0,0,3.8,6.9 -2021-01-08T05:00,22.3,56,9.1,0,0,3.2,6 -2021-01-08T06:00,21.7,57,8.6,0,0,3.2,4.7 -2021-01-08T07:00,21.2,56,8.1,0,0,4.3,5.8 -2021-01-08T08:00,24,46,6.2,0,0,4,6.3 -2021-01-08T09:00,29.6,33,3.7,0,0,4.1,9.2 -2021-01-08T10:00,35.7,24,2.8,0,0,5.6,11.9 -2021-01-08T11:00,39.2,24,5.5,0,0,8.5,17 -2021-01-08T12:00,41.6,22,5.1,0,0,8.7,18.1 -2021-01-08T13:00,43.3,19,3.8,0,0,7.6,17.7 -2021-01-08T14:00,43.8,21,6.3,0,0,7.1,15.9 -2021-01-08T15:00,43,23,7.3,0,0,6.3,13.9 -2021-01-08T16:00,36.1,46,17.2,0,0,6.2,11 -2021-01-08T17:00,30.5,52,14.8,0,0,6,10.5 -2021-01-08T18:00,27.1,60,14.8,0,0,7.8,9.6 -2021-01-08T19:00,31.9,47,14.2,0,0,2.6,9.4 -2021-01-08T20:00,28.3,55,14.4,0,0,3.6,4.9 -2021-01-08T21:00,28.3,55,14.1,0,0,2.4,4.3 -2021-01-08T22:00,25.3,62,14.2,0,0,6,6.9 -2021-01-08T23:00,25.2,63,14.3,0,0,5,7.2 -2021-01-09T00:00,24.1,62,13.1,0,0,5.3,7.4 -2021-01-09T01:00,24.2,61,12.7,0,0,4.9,6.3 -2021-01-09T02:00,25.9,60,14,0,0,3.3,6 -2021-01-09T03:00,25.3,61,13.6,0,0,2.2,4.3 -2021-01-09T04:00,26.3,57,13.1,0,0,1.4,3.1 -2021-01-09T05:00,26.8,59,14.2,0,0,0,2 -2021-01-09T06:00,24.5,68,15.4,0,0,2.2,2.9 -2021-01-09T07:00,23.8,73,16.5,0,0,2.7,4.3 -2021-01-09T08:00,24.7,72,17,0,0,3.4,5.6 -2021-01-09T09:00,27.8,65,17.4,0,0,3,7.6 -2021-01-09T10:00,29.6,63,18.5,0,0,3.1,8.9 -2021-01-09T11:00,30.6,64,19.7,0,0,3.3,9.2 -2021-01-09T12:00,30.8,66,20.7,0,0.028,4.1,9.8 -2021-01-09T13:00,32.3,62,20.7,0,0,6.1,13.4 -2021-01-09T14:00,33.2,62,21.6,0,0,7.6,15.7 -2021-01-09T15:00,32.4,65,21.9,0,0,7.1,15.9 -2021-01-09T16:00,31.2,68,21.8,0,0,6.1,13.9 -2021-01-09T17:00,28.4,79,22.7,0,0.028,5.7,10.5 -2021-01-09T18:00,27.4,83,23,0,0,6.6,11 -2021-01-09T19:00,27.1,86,23.5,0,0.028,7.1,12.1 -2021-01-09T20:00,28,86,24.5,0,0.083,7.6,13 -2021-01-09T21:00,28.4,89,25.6,0,0.138,7.4,12.8 -2021-01-09T22:00,28.1,91,25.9,0,0.11,6.3,12.3 -2021-01-09T23:00,28.1,89,25.4,0,0.028,5.4,10.7 -2021-01-10T00:00,28,89,25.3,0,0,5.3,9.2 -2021-01-10T01:00,27.8,89,25.1,0,0,5.3,9.4 -2021-01-10T02:00,27,92,25,0,0,4.5,9.2 -2021-01-10T03:00,26.9,92,24.9,0,0,3.8,7.6 -2021-01-10T04:00,26.3,94,24.8,0,0,2.6,6.5 -2021-01-10T05:00,26.1,93,24.3,0,0,5.6,4.3 -2021-01-10T06:00,25.8,93,24.1,0,0,5.1,9.4 -2021-01-10T07:00,25.8,92,23.9,0,0,5.6,9.8 -2021-01-10T08:00,25.7,92,23.6,0,0,5.4,10.1 -2021-01-10T09:00,26.6,83,22.1,0,0,3.2,10.1 -2021-01-10T10:00,28.3,75,21.3,0,0,2.1,8.5 -2021-01-10T11:00,30,71,21.8,0,0,2.7,9.4 -2021-01-10T12:00,32.4,60,19.9,0,0,1.4,10.1 -2021-01-10T13:00,34,54,19.2,0,0,2.1,9.4 -2021-01-10T14:00,35.1,50,18.5,0,0,2.4,9.4 -2021-01-10T15:00,35.2,49,18,0,0,3,9.2 -2021-01-10T16:00,33.8,51,17.8,0,0,4.8,8.5 -2021-01-10T17:00,23.7,80,18.4,0,0,5.4,8.1 -2021-01-10T18:00,23.7,81,18.8,0,0,3.6,6.5 -2021-01-10T19:00,27.2,70,18.9,0,0,1,4.7 -2021-01-10T20:00,21.7,83,17.4,0,0,3.8,4 -2021-01-10T21:00,21.6,73,14.1,0,0,3.7,5.6 -2021-01-10T22:00,20.9,63,10.1,0,0,3.8,5.8 -2021-01-10T23:00,20.5,56,7.2,0,0,3.8,5.8 -2021-01-11T00:00,20.1,51,4.7,0,0,4.3,5.8 -2021-01-11T01:00,19.9,46,2.5,0,0,4.4,6 -2021-01-11T02:00,20,41,0.3,0,0,4.2,6.3 -2021-01-11T03:00,19.9,39,-1.4,0,0,3.9,6 -2021-01-11T04:00,19.4,37,-2.6,0,0,4.1,6 -2021-01-11T05:00,16.4,39,-4,0,0,6.6,6.3 -2021-01-11T06:00,19.3,33,-5,0,0,4,8.1 -2021-01-11T07:00,18.8,33,-5.5,0,0,4,6.3 -2021-01-11T08:00,20.8,30,-6,0,0,4.7,7.2 -2021-01-11T09:00,26.2,23,-6.9,0,0,4.3,9.8 -2021-01-11T10:00,33.2,16,-7.9,0,0,2.8,9.8 -2021-01-11T11:00,38.4,13,-8.4,0,0,2.7,9.2 -2021-01-11T12:00,42.1,10,-10.2,0,0,4.2,11.2 -2021-01-11T13:00,44.9,9,-11.5,0,0,5.7,13 -2021-01-11T14:00,46.4,8,-12.8,0,0,6.7,13.6 -2021-01-11T15:00,46,8,-11.3,0,0,5.3,13.2 -2021-01-11T16:00,40.3,13,-6.9,0,0,5.1,8.5 -2021-01-11T17:00,38.2,14,-7.1,0,0,1.3,6 -2021-01-11T18:00,32.7,19,-5.6,0,0,4.4,4.9 -2021-01-11T19:00,23.5,30,-3.3,0,0,6,7.4 -2021-01-11T20:00,22.2,40,1.4,0,0,5.2,7.4 -2021-01-11T21:00,22.6,41,2.3,0,0,5,7.6 -2021-01-11T22:00,23,38,1.4,0,0,5.3,8.1 -2021-01-11T23:00,21.7,37,-0.6,0,0,4.6,8.1 -2021-01-12T00:00,21.7,35,-1.7,0,0,4.5,7.2 -2021-01-12T01:00,21.3,34,-2.6,0,0,4.7,8.1 -2021-01-12T02:00,21,33,-3.4,0,0,4.1,7.6 -2021-01-12T03:00,19.9,34,-3.9,0,0,5.7,6.9 -2021-01-12T04:00,19.7,34,-4.4,0,0,5.8,7.2 -2021-01-12T05:00,19.1,37,-3,0,0,6.8,6.9 -2021-01-12T06:00,22,34,-2.2,0,0,4.7,8.3 -2021-01-12T07:00,21.2,35,-2,0,0,5.6,7.2 -2021-01-12T08:00,25.4,30,-1.5,0,0,3.6,7.2 -2021-01-12T09:00,31.7,25,-0.5,0,0,5,10.1 -2021-01-12T10:00,39.9,19,1,0,0,4.6,11 -2021-01-12T11:00,46.6,15,1.1,0,0,5,11.4 -2021-01-12T12:00,50.5,12,0.3,0,0,8.5,16.3 -2021-01-12T13:00,53.8,12,1.7,0,0,6.1,16.8 -2021-01-12T14:00,55.2,12,3.9,0,0,2.2,12.5 -2021-01-12T15:00,52.9,17,8.7,0,0,4.4,7.8 -2021-01-12T16:00,44.2,26,11.1,0,0,6.5,8.5 -2021-01-12T17:00,41.2,27,9.7,0,0,6.6,11.4 -2021-01-12T18:00,32.7,45,13.5,0,0,7.4,9.8 -2021-01-12T19:00,30.7,53,15.8,0,0,7.4,10.1 -2021-01-12T20:00,28.6,63,17.4,0,0,6.8,9.8 -2021-01-12T21:00,27.1,70,18.5,0,0,7.1,10.1 -2021-01-12T22:00,28.9,53,14,0,0,6.8,12.8 -2021-01-12T23:00,30,47,12.2,0,0,6.8,11.6 -2021-01-13T00:00,29.3,47,11.6,0,0,10.4,16.1 -2021-01-13T01:00,28,50,11.6,0,0,11.6,17.4 -2021-01-13T02:00,31.8,46,13.2,0,0,12.2,19.7 -2021-01-13T03:00,34.7,42,13.9,0,0,9.3,19.5 -2021-01-13T04:00,32.8,46,14.2,0,0,12,19.9 -2021-01-13T05:00,35.1,51,18.8,0,0,6.8,19.5 -2021-01-13T06:00,34.8,51,18.4,0,0,6.6,11.6 -2021-01-13T07:00,34.2,54,19.4,0,0,5.3,11 -2021-01-13T08:00,37.7,52,21.5,0,0,4,8.7 -2021-01-13T09:00,45.6,46,25.9,0,0,2.2,6.7 -2021-01-13T10:00,53.2,32,24.4,0,0,9.2,13 -2021-01-13T11:00,56.4,28,23.6,0,0,9.8,16.1 -2021-01-13T12:00,58.7,28,25.5,0,0,14.6,25.3 -2021-01-13T13:00,59.8,28,26.3,0,0,11.9,25.1 -2021-01-13T14:00,57.3,42,34.6,0,0,2.1,23 -2021-01-13T15:00,52.7,41,29.4,0,0,10.9,16.1 -2021-01-13T16:00,53,36,26.7,0,0,14,22.4 -2021-01-13T17:00,48.7,41,26.3,0,0,6.8,22.4 -2021-01-13T18:00,52,34,24.7,0,0,3.2,11.6 -2021-01-13T19:00,39.5,58,26,0,0,5.3,9.6 -2021-01-13T20:00,35.5,69,26.3,0,0,6,11.6 -2021-01-13T21:00,37.8,60,25.2,0,0,8.1,12.8 -2021-01-13T22:00,39.3,52,23.2,0,0,5.5,16.1 -2021-01-13T23:00,35.1,70,26.4,0.004,0,17,26.6 -2021-01-14T00:00,35.8,63,24.3,0,0,10.5,27.5 -2021-01-14T01:00,37,39,14.5,0,0,15.7,26.4 -2021-01-14T02:00,31.5,42,11,0,0,5.8,25.9 -2021-01-14T03:00,30.9,46,12.7,0,0,5.5,9.6 -2021-01-14T04:00,31.8,35,7.3,0,0,7,10.7 -2021-01-14T05:00,25.8,48,8.9,0,0,6.7,11.9 -2021-01-14T06:00,26.8,42,6.5,0,0,4.3,8.7 -2021-01-14T07:00,26.7,42,6.4,0,0,5.5,8.9 -2021-01-14T08:00,27.8,41,7.3,0,0,5.3,9.4 -2021-01-14T09:00,32.8,32,6.4,0,0,4.7,10.3 -2021-01-14T10:00,34,27,3.5,0,0,6.4,12.8 -2021-01-14T11:00,35.8,25,3.4,0,0,8.9,18.3 -2021-01-14T12:00,37,25,4,0,0,6.6,17.7 -2021-01-14T13:00,36.8,25,4.3,0,0,9,17.9 -2021-01-14T14:00,36.8,24,3.2,0,0,7.4,19.2 -2021-01-14T15:00,36,25,3.5,0,0,5.8,15.7 -2021-01-14T16:00,34.7,26,3.7,0,0,5.7,12.5 -2021-01-14T17:00,28.3,37,5.1,0,0,7.2,9.8 -2021-01-14T18:00,26.7,40,5.5,0,0,5.9,12.8 -2021-01-14T19:00,23.7,48,6.7,0,0,3.8,9.8 -2021-01-14T20:00,23,52,8.1,0,0,2.1,6.5 -2021-01-14T21:00,22,54,7.8,0,0,5.5,6.3 -2021-01-14T22:00,21.2,55,7.6,0,0,6.8,8.1 -2021-01-14T23:00,20.8,56,7.3,0,0,6.2,8.1 -2021-01-15T00:00,22.1,52,7.2,0,0,4.3,7.2 -2021-01-15T01:00,20.7,57,7.8,0,0,3.7,6 -2021-01-15T02:00,20.4,53,6.1,0,0,4,6 -2021-01-15T03:00,19.5,52,4.8,0,0,4.4,7.4 -2021-01-15T04:00,18.3,54,4.5,0,0,5.2,7.6 -2021-01-15T05:00,19,56,5.7,0,0,4.6,7.2 -2021-01-15T06:00,19.2,49,3.1,0,0,4.6,6.5 -2021-01-15T07:00,19,45,1.2,0,0,4.8,6.9 -2021-01-15T08:00,20.8,40,0.1,0,0,4.6,6.9 -2021-01-15T09:00,27.1,30,-0.3,0,0,3.4,8.7 -2021-01-15T10:00,32.4,24,-0.8,0,0,4.3,10.7 -2021-01-15T11:00,36.9,21,0.6,0,0,7.1,14.8 -2021-01-15T12:00,42,18,1.5,0,0,4.8,15.4 -2021-01-15T13:00,45.5,17,3.2,0,0,4.1,12.3 -2021-01-15T14:00,47.6,18,5.5,0,0,4.4,11.2 -2021-01-15T15:00,47.6,19,6.8,0,0,4.4,10.7 -2021-01-15T16:00,40.9,26,8.4,0,0,4.4,8.5 -2021-01-15T17:00,32.1,38,9.5,0,0,6.6,5.6 -2021-01-15T18:00,28.7,44,9.6,0,0,5.5,8.3 -2021-01-15T19:00,25.8,53,10.9,0,0,4.3,7.4 -2021-01-15T20:00,27.1,50,10.9,0,0,4.3,6.9 -2021-01-15T21:00,27.5,48,10.5,0,0,5,8.9 -2021-01-15T22:00,26.2,56,12.5,0,0,5.7,8.9 -2021-01-15T23:00,26.8,52,11.5,0,0,8.3,13.2 -2021-01-16T00:00,26.2,50,10,0,0,7.4,13.2 -2021-01-16T01:00,25.5,52,10.1,0,0,4.7,11.9 -2021-01-16T02:00,26.6,49,10.1,0,0,5,8.3 -2021-01-16T03:00,27.6,47,10,0,0,3.8,8.7 -2021-01-16T04:00,28.1,46,10,0,0,4,6 -2021-01-16T05:00,28.1,49,11.2,0,0,4.4,5.1 -2021-01-16T06:00,30.4,48,12.9,0,0,5.1,6.7 -2021-01-16T07:00,30.1,53,15.2,0,0,5.1,7.2 -2021-01-16T08:00,31.9,49,14.8,0,0,4,6 -2021-01-16T09:00,34.2,45,14.9,0,0,4.3,6.9 -2021-01-16T10:00,37.3,43,16.6,0,0,6.5,11.2 -2021-01-16T11:00,41.5,38,17.5,0,0,6.8,14.8 -2021-01-16T12:00,45,36,19.5,0,0,3.8,13.9 -2021-01-16T13:00,45.9,36,20.2,0,0,4.7,11 -2021-01-16T14:00,46,34,19.1,0,0,5.4,11.2 -2021-01-16T15:00,45.7,32,17.7,0,0,5.9,11.6 -2021-01-16T16:00,43,39,19.7,0,0,4.8,11 -2021-01-16T17:00,35.6,56,21.5,0,0,7.1,8.5 -2021-01-16T18:00,32.1,67,22.2,0,0,5.9,11.4 -2021-01-16T19:00,31.4,67,21.6,0,0,4,6.9 -2021-01-16T20:00,32,65,21.4,0,0,3,4.7 -2021-01-16T21:00,26.7,79,21,0,0,5.4,5.4 -2021-01-16T22:00,28,78,21.9,0,0,6.6,9.8 -2021-01-16T23:00,27.9,79,22.2,0,0,5.8,10.7 -2021-01-17T00:00,27.8,78,21.9,0,0,5.2,9.2 -2021-01-17T01:00,27.6,77,21.5,0,0,4.1,8.1 -2021-01-17T02:00,27.8,75,20.8,0,0,3.9,6.5 -2021-01-17T03:00,27.1,76,20.5,0,0,3.8,6 -2021-01-17T04:00,26,79,20.5,0,0,3.4,6 -2021-01-17T05:00,26.2,74,19,0,0,3,4.9 -2021-01-17T06:00,25.9,69,17.1,0,0,3.4,4.7 -2021-01-17T07:00,26.9,59,14.6,0,0,3.3,5.6 -2021-01-17T08:00,29.1,48,11.8,0,0,4.5,6.9 -2021-01-17T09:00,33.5,39,11.1,0,0,6,11 -2021-01-17T10:00,38.4,34,12.7,0,0,7.5,13.6 -2021-01-17T11:00,41.5,32,13.5,0,0,8.2,15.9 -2021-01-17T12:00,44.7,29,14.4,0,0,6.6,15.9 -2021-01-17T13:00,47.3,27,14.7,0,0,6.5,13.9 -2021-01-17T14:00,48.7,26,15.3,0,0,6.7,13.6 -2021-01-17T15:00,48.7,26,15.6,0,0,7.1,13.2 -2021-01-17T16:00,45.1,33,17.9,0,0,5.7,12.5 -2021-01-17T17:00,37.7,45,18.3,0,0,6.8,8.5 -2021-01-17T18:00,38.8,41,17.2,0,0,4.6,8.1 -2021-01-17T19:00,36.5,45,17.2,0,0,6.6,10.1 -2021-01-17T20:00,31.7,60,19.3,0,0,4.3,9.8 -2021-01-17T21:00,31.6,65,21.4,0,0,3.4,6 -2021-01-17T22:00,33.2,62,21.5,0,0,3.2,4.9 -2021-01-17T23:00,34.8,57,21.1,0,0,0.9,4 -2021-01-18T00:00,30.1,71,21.9,0,0,3.4,4.7 -2021-01-18T01:00,29.6,74,22.4,0,0,3.9,6.3 -2021-01-18T02:00,27.8,79,22.1,0,0,3.5,6.3 -2021-01-18T03:00,29.5,73,22,0,0,6,9.6 -2021-01-18T04:00,30,71,21.7,0,0,6.3,10.3 -2021-01-18T05:00,30.5,77,24,0,0.028,1.6,9.6 -2021-01-18T06:00,30.7,78,24.8,0,0,2.4,4.5 -2021-01-18T07:00,30.2,81,25.2,0,0,1.1,5.1 -2021-01-18T08:00,31.1,72,23.3,0,0,1.4,3.1 -2021-01-18T09:00,31.8,59,19,0,0,1.6,4.9 -2021-01-18T10:00,33,54,18.2,0,0,3.3,8.5 -2021-01-18T11:00,33.4,51,17.2,0,0,2.2,8.9 -2021-01-18T12:00,33.7,49,16.6,0,0,1.6,7.6 -2021-01-18T13:00,35.5,46,16.9,0,0,0.8,7.8 -2021-01-18T14:00,36.7,44,16.9,0,0,0.7,7.2 -2021-01-18T15:00,37.3,43,16.7,0,0,1.9,7.6 -2021-01-18T16:00,37,44,16.9,0,0,1,7.4 -2021-01-18T17:00,31.3,66,21.2,0,0,4,4.7 -2021-01-18T18:00,29.1,74,21.8,0,0.028,4.3,5.1 -2021-01-18T19:00,29.8,72,21.8,0,0.028,5.1,7.2 -2021-01-18T20:00,30,54,15.4,0,0.028,8.1,14.1 -2021-01-18T21:00,28.5,56,14.8,0,0.028,2.4,13 -2021-01-18T22:00,28.3,58,15.4,0,0,0.2,4.3 -2021-01-18T23:00,28.2,58,15.3,0,0,1,1.1 -2021-01-19T00:00,27,64,16.3,0,0,1.9,2.9 -2021-01-19T01:00,26,67,16.6,0,0,3.1,4.7 -2021-01-19T02:00,24.2,71,16.3,0,0,4.1,6.3 -2021-01-19T03:00,24.4,70,15.9,0,0,3.7,6.9 -2021-01-19T04:00,24.4,69,15.7,0,0,2.9,6 -2021-01-19T05:00,25.3,67,15.7,0,0,2.4,4.3 -2021-01-19T06:00,24.4,68,15.4,0,0,3.2,4 -2021-01-19T07:00,24.7,68,15.5,0,0,2.7,4 -2021-01-19T08:00,26.9,62,15.7,0,0,3.3,5.6 -2021-01-19T09:00,29.3,56,15.4,0,0,1.6,6 -2021-01-19T10:00,31.1,41,10,0,0,1.5,7.4 -2021-01-19T11:00,32.5,42,12.2,0,0,4.2,11.2 -2021-01-19T12:00,35.1,41,13.6,0,0,5.6,14.1 -2021-01-19T13:00,37.2,35,12,0,0,4.6,13.6 -2021-01-19T14:00,37.9,34,12.2,0,0,7,14.8 -2021-01-19T15:00,36.1,40,13.9,0,0,9.7,18.6 -2021-01-19T16:00,34.3,42,13.6,0,0,7.1,18.6 -2021-01-19T17:00,30.7,53,15.4,0,0,4.4,12.5 -2021-01-19T18:00,28,58,15.2,0,0,6.1,7.2 -2021-01-19T19:00,30,51,14.3,0,0,0.7,6.7 -2021-01-19T20:00,28.2,56,14.5,0,0,1.6,2.7 -2021-01-19T21:00,27.1,58,14.5,0,0,1.1,2.2 -2021-01-19T22:00,22,71,14.1,0,0,2.8,4.5 -2021-01-19T23:00,23.4,63,12.5,0,0,8.6,14.8 -2021-01-20T00:00,23.1,58,10.4,0,0,3.6,13.9 -2021-01-20T01:00,25.6,49,9.2,0,0,7.7,12.1 -2021-01-20T02:00,25.2,50,9,0,0,8.7,13.4 -2021-01-20T03:00,24.8,49,8.5,0,0,7.4,16.3 -2021-01-20T04:00,27.9,42,8,0,0,2.2,11.9 -2021-01-20T05:00,26.1,46,7.9,0,0,8.7,7.2 -2021-01-20T06:00,24.8,47,7.6,0,0,6.5,13.6 -2021-01-20T07:00,23.8,51,8.4,0,0,7.9,9.8 -2021-01-20T08:00,29.8,42,9.8,0,0,6.4,9.6 -2021-01-20T09:00,37.6,33,11.2,0,0,6.9,11.9 -2021-01-20T10:00,45.8,25,12.1,0,0,6.7,12.5 -2021-01-20T11:00,50.8,21,12.1,0,0,6.9,14.5 -2021-01-20T12:00,52.5,20,12.6,0,0,5.6,14.3 -2021-01-20T13:00,53.8,20,13.2,0,0,6.7,14.1 -2021-01-20T14:00,53.7,23,16.3,0,0,7.1,14.1 -2021-01-20T15:00,52.6,26,18.3,0,0,6.7,13.2 -2021-01-20T16:00,46.9,35,21,0,0,6.1,11 -2021-01-20T17:00,44.3,30,15.1,0,0,7.4,10.7 -2021-01-20T18:00,44.2,34,17.3,0,0,11.9,19.2 -2021-01-20T19:00,37,47,18.6,0,0,5.8,19.7 -2021-01-20T20:00,34.1,55,19.5,0,0,4.9,8.7 -2021-01-20T21:00,30.2,64,19.3,0,0,4.4,8.9 -2021-01-20T22:00,27.1,72,19.1,0,0,3,6.5 -2021-01-20T23:00,24.8,77,18.5,0,0,4.3,5.4 -2021-01-21T00:00,27.4,66,17.7,0,0,2.5,5.6 -2021-01-21T01:00,26.6,68,17.4,0,0,1.9,3.4 -2021-01-21T02:00,25.3,72,17.4,0,0,4.3,5.1 -2021-01-21T03:00,30.5,57,17.1,0,0,3.2,5.1 -2021-01-21T04:00,28.9,61,17.2,0,0,3.9,4.5 -2021-01-21T05:00,28.8,63,17.7,0,0,4.3,4.7 -2021-01-21T06:00,27.7,64,17.2,0,0,5.8,8.1 -2021-01-21T07:00,28.4,60,16.3,0,0,4.3,8.1 -2021-01-21T08:00,31,55,16.6,0,0,5.5,8.1 -2021-01-21T09:00,35.2,48,17.7,0,0,5.7,11.2 -2021-01-21T10:00,41.5,41,19.4,0,0,3.5,10.3 -2021-01-21T11:00,44.7,35,18.4,0,0,6.1,12.3 -2021-01-21T12:00,46.5,33,19.1,0,0,7.9,15.9 -2021-01-21T13:00,47.8,32,19,0,0,6.7,16.1 -2021-01-21T14:00,47.9,31,18.8,0,0,5.9,14.3 -2021-01-21T15:00,46.7,32,18.5,0,0,7.7,13.6 -2021-01-21T16:00,43.2,41,21.3,0,0,5.1,13.6 -2021-01-21T17:00,38.6,51,21.8,0,0,4.5,8.3 -2021-01-21T18:00,36.1,56,21.7,0,0,4.3,6.5 -2021-01-21T19:00,34.2,63,22.9,0,0,5.2,6.7 -2021-01-21T20:00,33,64,22.3,0,0,5.4,8.1 -2021-01-21T21:00,30.2,67,20.6,0,0,7.4,12.1 -2021-01-21T22:00,27.7,72,19.7,0,0,5,11.9 -2021-01-21T23:00,27.2,71,19,0,0,4.4,8.1 -2021-01-22T00:00,25.9,73,18.4,0,0,2.9,5.4 -2021-01-22T01:00,26.2,73,18.9,0,0,3.8,5.1 -2021-01-22T02:00,24.5,80,19.1,0,0,4.7,5.1 -2021-01-22T03:00,23.6,82,19,0,0,4.7,6 -2021-01-22T04:00,26.7,70,18.1,0,0,1.7,5.8 -2021-01-22T05:00,23.8,80,18.5,0,0,3.8,4 -2021-01-22T06:00,24,79,18.3,0,0,2.6,5.8 -2021-01-22T07:00,22.6,83,18.1,0,0,3.8,4.5 -2021-01-22T08:00,24.4,77,18.1,0,0,4.1,7.4 -2021-01-22T09:00,27.1,67,17.6,0,0,1.9,7.6 -2021-01-22T10:00,31.6,55,17.4,0,0,2.4,8.7 -2021-01-22T11:00,36.4,45,17.2,0,0,4.1,11.2 -2021-01-22T12:00,39.3,40,17.1,0,0,6.8,15.4 -2021-01-22T13:00,41.3,38,17.3,0,0,8.5,17.7 -2021-01-22T14:00,41.8,39,18.9,0,0,7.5,17.7 -2021-01-22T15:00,41.2,40,18.8,0,0,8.2,15.4 -2021-01-22T16:00,37.9,46,19,0,0,8.6,16.6 -2021-01-22T17:00,36.1,49,19,0,0,7.4,14.3 -2021-01-22T18:00,32.1,60,19.7,0,0,5.3,12.5 -2021-01-22T19:00,29.4,67,19.9,0,0,5.6,8.5 -2021-01-22T20:00,31.8,60,19.4,0,0,3.5,6.5 -2021-01-22T21:00,30.7,62,19.2,0,0,2.1,4 -2021-01-22T22:00,26.4,75,19.5,0,0,2.9,4.7 -2021-01-22T23:00,29.8,65,19.3,0,0,0.9,3.8 -2021-01-23T00:00,28.3,68,19.2,0,0,3.1,3.6 -2021-01-23T01:00,26.2,74,19.2,0,0,3,4.5 -2021-01-23T02:00,25.8,75,18.9,0,0,1.9,3.8 -2021-01-23T03:00,22.2,87,18.9,0,0,4,5.1 -2021-01-23T04:00,22,89,19.2,0,0,3.5,5.1 -2021-01-23T05:00,23,84,18.9,0,0,3.5,6.5 -2021-01-23T06:00,22.2,85,18.3,0,0,4,4.9 -2021-01-23T07:00,24,80,18.6,0,0,3.1,5.4 -2021-01-23T08:00,24.8,76,18.3,0,0,1.8,3.8 -2021-01-23T09:00,28.3,64,17.8,0,0,3.3,8.3 -2021-01-23T10:00,32.8,54,17.8,0,0,5,12.3 -2021-01-23T11:00,37.4,44,17.6,0,0,4.8,12.8 -2021-01-23T12:00,40.4,40,17.9,0,0,7.2,15.7 -2021-01-23T13:00,41.5,41,19.6,0,0,7.2,17.2 -2021-01-23T14:00,43,40,20.4,0,0,7.6,16.1 -2021-01-23T15:00,42.6,42,20.9,0,0,7.7,15.7 -2021-01-23T16:00,40.8,46,21.7,0,0,6.1,14.5 -2021-01-23T17:00,35,57,21.1,0,0,7.7,10.1 -2021-01-23T18:00,32,69,23,0,0.083,5,13.6 -2021-01-23T19:00,30.4,73,22.9,0,0.055,8.5,13 -2021-01-23T20:00,25.7,82,21,0,0,8.1,15.4 -2021-01-23T21:00,26.3,76,19.8,0,0,6.1,14.3 -2021-01-23T22:00,25.9,76,19.4,0,0,4.8,10.5 -2021-01-23T23:00,25.7,76,19.2,0,0,2.8,8.9 -2021-01-24T00:00,25.4,77,19.1,0,0,2.6,6.3 -2021-01-24T01:00,25.2,77,19,0,0,2.7,6.3 -2021-01-24T02:00,24.9,78,19,0,0,2.1,6 -2021-01-24T03:00,24.5,79,19,0,0,2.2,5.4 -2021-01-24T04:00,24.3,81,19.1,0,0,3.8,7.6 -2021-01-24T05:00,22.6,85,18.7,0,0,4.5,7.8 -2021-01-24T06:00,22.7,84,18.6,0,0,3.8,9.2 -2021-01-24T07:00,22.7,83,18.4,0,0,2.8,8.1 -2021-01-24T08:00,23,82,18.4,0,0,2.8,6.9 -2021-01-24T09:00,24.4,78,18.5,0,0,1.8,7.4 -2021-01-24T10:00,26.1,69,17.3,0,0,1.9,8.3 -2021-01-24T11:00,28.4,59,16,0,0,0.6,8.7 -2021-01-24T12:00,30.7,53,15.5,0,0,3,10.1 -2021-01-24T13:00,34.6,49,17.2,0,0,5,12.5 -2021-01-24T14:00,36.1,49,18.8,0,0,6.3,14.5 -2021-01-24T15:00,35.7,50,18.9,0,0,6.5,14.3 -2021-01-24T16:00,34.8,52,19,0,0,6.1,13.9 -2021-01-24T17:00,26.9,72,19,0,0,4.7,11.4 -2021-01-24T18:00,24.7,78,18.9,0,0,4.1,9.4 -2021-01-24T19:00,24.4,80,19.2,0,0,3.8,6.5 -2021-01-24T20:00,24.1,80,18.7,0,0,2.4,4.7 -2021-01-24T21:00,23.1,82,18.3,0,0,3.1,5.1 -2021-01-24T22:00,22.5,83,18,0,0,1.4,3.8 -2021-01-24T23:00,20.6,89,17.8,0,0,3.1,4.3 -2021-01-25T00:00,21.4,85,17.5,0,0,3.5,5.1 -2021-01-25T01:00,22.3,79,16.9,0,0,3.4,4.9 -2021-01-25T02:00,22.6,76,16.2,0,0,2.2,6 -2021-01-25T03:00,23.5,73,16.3,0,0,1.1,4.7 -2021-01-25T04:00,24.5,71,16.3,0,0,1.6,4 -2021-01-25T05:00,25.3,71,17.2,0,0,2.7,4.3 -2021-01-25T06:00,23.9,77,17.7,0,0,4,6.3 -2021-01-25T07:00,23.3,79,17.8,0,0,3.8,6.3 -2021-01-25T08:00,24,76,17.4,0,0,2.5,6 -2021-01-25T09:00,26.1,69,17.2,0,0,3.2,8.3 -2021-01-25T10:00,29.2,59,16.5,0,0,2.9,9.6 -2021-01-25T11:00,31.7,51,15.7,0,0,5.3,13 -2021-01-25T12:00,33.6,47,15.4,0,0,7.6,16.8 -2021-01-25T13:00,34.5,47,16.5,0,0,7.4,17.4 -2021-01-25T14:00,34.8,47,16.6,0,0,6.8,16.6 -2021-01-25T15:00,34.3,47,16.3,0,0,6.8,15.2 -2021-01-25T16:00,32.9,49,15.8,0,0,6.3,14.1 -2021-01-25T17:00,28.6,62,17.2,0,0,7.6,11.2 -2021-01-25T18:00,26.6,69,17.8,0,0.028,7.8,13 -2021-01-25T19:00,25.5,72,17.6,0,0.028,7.2,13 -2021-01-25T20:00,24.7,74,17.5,0,0.028,6.1,12.3 -2021-01-25T21:00,24,75,17.2,0,0.028,5.7,11 -2021-01-25T22:00,23.5,75,16.7,0,0.028,5.5,10.5 -2021-01-25T23:00,23,76,16.4,0,0,4.5,10.3 -2021-01-26T00:00,22.7,76,16.2,0,0,3.1,8.7 -2021-01-26T01:00,22.4,76,15.9,0,0,3.8,7.2 -2021-01-26T02:00,22.2,75,15.4,0,0,4.9,8.7 -2021-01-26T03:00,22.1,74,15,0,0,4.3,8.9 -2021-01-26T04:00,21.7,74,14.8,0,0,4.7,9.4 -2021-01-26T05:00,22.5,80,17.2,0,0,3.5,9.6 -2021-01-26T06:00,22.5,80,17.3,0,0.028,5.2,9.8 -2021-01-26T07:00,22.5,81,17.4,0,0.028,5.4,10.1 -2021-01-26T08:00,22.7,80,17.5,0,0.055,5.7,10.7 -2021-01-26T09:00,23.6,75,16.9,0,0.055,5.9,11.9 -2021-01-26T10:00,24.4,71,16.3,0,0.055,4.8,11.6 -2021-01-26T11:00,25.7,67,16.3,0,0.055,3.1,11 -2021-01-26T12:00,26.4,67,17,0,0.083,5.7,12.5 -2021-01-26T13:00,27.3,66,17.3,0,0.055,7.4,15.4 -2021-01-26T14:00,27.5,67,18,0,0.055,7.6,16.1 -2021-01-26T15:00,27.4,67,18,0,0.028,8.1,15.9 -2021-01-26T16:00,26.7,69,18,0,0.028,8.1,15.7 -2021-01-26T17:00,21.9,78,16.3,0,0.083,11.9,15.7 -2021-01-26T18:00,21.2,82,16.4,0,0.083,10.7,20.1 -2021-01-26T19:00,21.2,82,16.4,0,0.083,8.5,18.1 -2021-01-26T20:00,21.3,82,16.5,0,0.055,6.5,15 -2021-01-26T21:00,21,81,16.2,0,0.028,4.3,11.6 -2021-01-26T22:00,20.8,79,15.4,0,0,2.4,8.5 -2021-01-26T23:00,20,80,15,0,0,1,5.6 -2021-01-27T00:00,19,82,14.5,0,0,0.4,4 -2021-01-27T01:00,17.8,86,14.4,0,0,0.8,2.7 -2021-01-27T02:00,16,91,13.8,0,0,1.8,2.5 -2021-01-27T03:00,15.9,91,13.6,0,0,3.2,4.5 -2021-01-27T04:00,15.9,83,11.6,0,0,4.7,6.9 -2021-01-27T05:00,12.9,75,6.5,0,0,5.6,8.3 -2021-01-27T06:00,14.1,52,-0.5,0,0,5.4,8.5 -2021-01-27T07:00,12.7,48,-3.4,0,0,4.8,8.5 -2021-01-27T08:00,14.5,44,-3.4,0,0,5.4,9.2 -2021-01-27T09:00,21.5,33,-3.2,0,0,5.5,10.7 -2021-01-27T10:00,29.8,23,-3.2,0,0,7.5,16.6 -2021-01-27T11:00,35.5,17,-4.8,0,0,5.6,15.7 -2021-01-27T12:00,38.7,15,-5.3,0,0,3,13.6 -2021-01-27T13:00,40.4,14,-5.3,0,0,4.7,12.3 -2021-01-27T14:00,41.7,13,-6.1,0,0,4.1,12.8 -2021-01-27T15:00,42.5,12,-6.2,0,0,2.1,11 -2021-01-27T16:00,40.2,14,-6,0,0,4.1,6.9 -2021-01-27T17:00,29.1,40,7.8,0,0,7.5,8.3 -2021-01-27T18:00,27.3,42,7.3,0,0,7.4,9.6 -2021-01-27T19:00,26.7,43,7,0,0,6.3,8.5 -2021-01-27T20:00,29,39,7.1,0,0,2.9,7.6 -2021-01-27T21:00,25.6,47,8,0,0,1.2,3.4 -2021-01-27T22:00,24.4,49,7.9,0,0,1.3,2 -2021-01-27T23:00,20.7,57,8,0,0,2.7,3.4 -2021-01-28T00:00,20.8,60,8.9,0,0,3.6,4.7 -2021-01-28T01:00,22.2,59,10.1,0,0,3.3,5.4 -2021-01-28T02:00,21.8,63,11.1,0,0,5.6,6.7 -2021-01-28T03:00,27.6,51,11.8,0,0,4.8,6.9 -2021-01-28T04:00,27.7,51,11.9,0,0,4.2,5.6 -2021-01-28T05:00,24.6,64,14.2,0,0,4,5.4 -2021-01-28T06:00,22,71,14.1,0,0,4,5.1 -2021-01-28T07:00,21,74,13.9,0,0,4.1,4.9 -2021-01-28T08:00,25.2,62,14.1,0,0,3.2,5.8 -2021-01-28T09:00,32.5,48,14.7,0,0,4.9,9.6 -2021-01-28T10:00,41.1,35,15.7,0,0,5.1,11 -2021-01-28T11:00,47.7,28,16.3,0,0,7.1,13.6 -2021-01-28T12:00,51.8,24,16.4,0,0,8.2,15.7 -2021-01-28T13:00,54.1,23,16.8,0,0,7.8,15.7 -2021-01-28T14:00,54.6,23,17.2,0,0,7.2,15 -2021-01-28T15:00,53,25,17.7,0,0,4.7,13 -2021-01-28T16:00,44.8,35,18.5,0,0,6.8,7.4 -2021-01-28T17:00,40.6,44,20.6,0,0,5.4,8.3 -2021-01-28T18:00,32.2,62,20.8,0,0,7.2,9.6 -2021-01-28T19:00,29.4,68,20.3,0,0,6.5,9.4 -2021-01-28T20:00,27.3,75,20.3,0,0,2.9,7.8 -2021-01-28T21:00,23.8,87,20.5,0,0,4.3,6 -2021-01-28T22:00,22.6,88,19.5,0,0,4.7,6 -2021-01-28T23:00,22.7,82,18.1,0,0,6,7.2 -2021-01-29T00:00,23.5,76,17.2,0,0,6.3,8.1 -2021-01-29T01:00,23.3,74,16.2,0,0,6.2,7.6 -2021-01-29T02:00,23.7,70,15.3,0,0,6.8,8.1 -2021-01-29T03:00,24.5,65,14.4,0,0,7.1,8.5 -2021-01-29T04:00,25.3,61,13.6,0,0,7.1,8.7 -2021-01-29T05:00,23.9,66,14.1,0,0,7.4,8.5 -2021-01-29T06:00,24.7,64,14.2,0,0,6.9,8.9 -2021-01-29T07:00,26.2,60,14.3,0,0,5.3,8.3 -2021-01-29T08:00,29.7,53,14.5,0,0,3.4,6.3 -2021-01-29T09:00,38.5,38,15.1,0,0,1.8,6.3 -2021-01-29T10:00,46.8,27,14.2,0,0,3.9,8.9 -2021-01-29T11:00,54.1,20,13.5,0,0,6.3,12.8 -2021-01-29T12:00,58.7,17,13.6,0,0,7.9,15.9 -2021-01-29T13:00,60.6,15,12.7,0,0,7.3,15.7 -2021-01-29T14:00,60.4,15,12.7,0,0,5.9,14.8 -2021-01-29T15:00,58,17,13.4,0,0,3.3,12.1 -2021-01-29T16:00,48.6,39,24.4,0,0,6.3,7.4 -2021-01-29T17:00,42.7,41,20.4,0,0,5,9.4 -2021-01-29T18:00,43.6,38,19.5,0,0,1.7,6.9 -2021-01-29T19:00,32.4,58,19.1,0,0,5.8,6.9 -2021-01-29T20:00,31.2,62,19.5,0,0,5.2,7.4 -2021-01-29T21:00,28,69,19,0,0,6,8.1 -2021-01-29T22:00,28.7,62,17.2,0,0,5.5,8.5 -2021-01-29T23:00,30.5,54,15.7,0,0,6,9.2 -2021-01-30T00:00,31.2,51,15.2,0,0,5.8,11.4 -2021-01-30T01:00,30.5,53,15.2,0,0,5.3,8.9 -2021-01-30T02:00,31.2,52,15.6,0,0,1.7,6.7 -2021-01-30T03:00,28.5,59,16,0,0,5.2,7.6 -2021-01-30T04:00,27.9,62,16.6,0,0,7.3,9.2 -2021-01-30T05:00,32.7,61,20.8,0,0,7.9,9.8 -2021-01-30T06:00,35.5,56,21.6,0.004,0,6,10.5 -2021-01-30T07:00,32.2,65,21.7,0,0,4.6,9.4 -2021-01-30T08:00,33.2,67,23.5,0,0,4.5,7.4 -2021-01-30T09:00,38.7,58,25.3,0,0,1.8,7.8 -2021-01-30T10:00,44.3,41,22.2,0,0,2.3,6.7 -2021-01-30T11:00,45.9,33,18.6,0,0,6.4,13.4 -2021-01-30T12:00,47.2,32,18.5,0,0,4.1,13.6 -2021-01-30T13:00,48.3,30,18.2,0,0,4.5,12.5 -2021-01-30T14:00,48.7,27,16.5,0,0,5.5,13 -2021-01-30T15:00,48,25,13.7,0,0,5,13.4 -2021-01-30T16:00,46.3,27,13.9,0,0,3.6,11.6 -2021-01-30T17:00,41.2,43,20.1,0,0,5.6,9.8 -2021-01-30T18:00,37,38,14,0,0,6,10.1 -2021-01-30T19:00,34.1,46,15.6,0,0,5.7,9.6 -2021-01-30T20:00,36.8,43,16.3,0,0,4.6,9.8 -2021-01-30T21:00,35.3,43,14.8,0,0,1.6,6.3 -2021-01-30T22:00,30.8,50,14.3,0,0,4.1,6.3 -2021-01-30T23:00,28.1,54,13.7,0,0,5.2,9.6 -2021-01-31T00:00,25.4,63,14.7,0,0,3.6,8.9 -2021-01-31T01:00,23.9,68,14.9,0,0,4.1,6 -2021-01-31T02:00,24.7,63,13.8,0,0,3.4,5.4 -2021-01-31T03:00,24.1,60,12.3,0,0,3.6,5.4 -2021-01-31T04:00,27.5,50,11.2,0,0,2,4.7 -2021-01-31T05:00,25.8,59,13.5,0,0,8.4,2.9 -2021-01-31T06:00,28.3,52,12.7,0,0,4.6,10.1 -2021-01-31T07:00,23.8,59,11.6,0,0,5.9,6.7 -2021-01-31T08:00,28.4,46,10.3,0,0,4.8,7.4 -2021-01-31T09:00,33.4,34,8.3,0,0,4.3,9.8 -2021-01-31T10:00,39.1,25,6.6,0,0,5.1,11.9 -2021-01-31T11:00,43.3,19,3.7,0,0,4.4,12.3 -2021-01-31T12:00,45.7,20,6.5,0,0,3,11.9 -2021-01-31T13:00,47.5,19,6.9,0,0,3.4,10.1 -2021-01-31T14:00,48.7,17,6.2,0,0,4.5,11.2 -2021-01-31T15:00,48.9,16,4.2,0,0,4.2,11.2 -2021-01-31T16:00,47,30,17.1,0,0,2.1,9.4 -2021-01-31T17:00,45.1,20,6,0,0,4.7,6 -2021-01-31T18:00,42.5,21,5.4,0,0,3.8,5.6 -2021-01-31T19:00,30.6,36,6.4,0,0,5.4,6.5 -2021-01-31T20:00,25.6,50,9.4,0,0,5,6.7 -2021-01-31T21:00,22.8,64,12.6,0,0,4.2,6.9 -2021-01-31T22:00,22.9,62,11.9,0,0,5.3,6.9 -2021-01-31T23:00,22.7,57,9.7,0,0,5.4,6.7 -2021-02-01T00:00,23.2,51,7.5,0,0,4.8,6.9 -2021-02-01T01:00,25,43,5.5,0,0,3.4,5.6 -2021-02-01T02:00,25.3,42,5.3,0,0,3,4 -2021-02-01T03:00,25.3,42,5.3,0,0,3.1,3.8 -2021-02-01T04:00,24.7,43,5.5,0,0,3,3.6 -2021-02-01T05:00,25.4,44,6.4,0,0,3.3,3.6 -2021-02-01T06:00,24.3,46,6.6,0,0,3.4,3.8 -2021-02-01T07:00,22.8,49,6.7,0,0,5.3,6.3 -2021-02-01T08:00,29,38,6.4,0,0,4.2,6.3 -2021-02-01T09:00,36,27,5.2,0,0,4.3,9.2 -2021-02-01T10:00,43.3,19,3.7,0,0,2.9,9.2 -2021-02-01T11:00,48.9,14,2.1,0,0,4.2,10.3 -2021-02-01T12:00,53.4,11,-0.6,0,0,5.2,11.6 -2021-02-01T13:00,55.3,13,4.6,0,0,5.2,11.9 -2021-02-01T14:00,55.2,17,10.5,0,0,1.4,10.3 -2021-02-01T15:00,52.4,28,20.6,0,0,3.4,5.1 -2021-02-01T16:00,47,30,17.4,0,0,5.4,8.7 -2021-02-01T17:00,40.2,41,18.4,0,0,6.7,8.7 -2021-02-01T18:00,38.4,39,15.7,0,0,4.7,8.7 -2021-02-01T19:00,36.4,39,13.7,0,0,5.8,6.9 -2021-02-01T20:00,42,26,9.7,0,0,1.7,7.2 -2021-02-01T21:00,37.8,34,11.8,0,0,2.1,2.9 -2021-02-01T22:00,31.5,53,16.4,0,0,2.1,2.9 -2021-02-01T23:00,28.9,69,19.9,0,0,3.6,5.6 -2021-02-02T00:00,26.9,77,20.8,0,0,4.1,6.5 -2021-02-02T01:00,26.7,76,20.2,0,0,5.9,7.2 -2021-02-02T02:00,27.5,74,20.2,0,0,5,7.2 -2021-02-02T03:00,28.9,69,20,0,0,4.3,6.5 -2021-02-02T04:00,28.7,68,19.3,0,0,4.9,8.1 -2021-02-02T05:00,27.8,69,19,0,0,4.9,8.5 -2021-02-02T06:00,27.8,69,18.8,0,0,5.1,7.4 -2021-02-02T07:00,27.4,69,18.5,0,0,5.4,5.8 -2021-02-02T08:00,33.2,57,19.7,0,0,5.6,8.5 -2021-02-02T09:00,40.3,48,22.2,0,0,7.6,13.6 -2021-02-02T10:00,48.9,37,23.9,0,0,8.5,16.1 -2021-02-02T11:00,55.1,30,24.5,0,0,4.9,15.7 -2021-02-02T12:00,57.4,30,25.8,0,0,3.6,11.6 -2021-02-02T13:00,58.9,29,27,0,0,4.4,11.6 -2021-02-02T14:00,59.4,30,28,0,0,4.7,11.6 -2021-02-02T15:00,59.5,30,28.2,0,0,4.6,11.6 -2021-02-02T16:00,58,39,33,0,0,2.2,10.1 -2021-02-02T17:00,49.3,48,30.5,0,0,6.7,7.2 -2021-02-02T18:00,52.9,37,27.3,0,0,4.7,9.4 -2021-02-02T19:00,46.4,47,27.1,0,0,3.4,5.4 -2021-02-02T20:00,36.5,70,27.8,0,0,3.7,6.5 -2021-02-02T21:00,32.2,84,28,0,0,2.7,5.8 -2021-02-02T22:00,30,89,27.1,0,0,3,5.1 -2021-02-02T23:00,30.2,84,25.9,0,0,4.8,7.4 -2021-02-03T00:00,29.9,79,24.3,0,0,4.7,7.6 -2021-02-03T01:00,29,80,23.7,0,0,6,7.4 -2021-02-03T02:00,28.8,79,23.2,0,0,7.2,8.5 -2021-02-03T03:00,30.1,75,23.1,0,0,6.1,8.5 -2021-02-03T04:00,30.7,74,23.5,0,0,8.6,9.6 -2021-02-03T05:00,31.3,72,23.5,0,0,7.8,10.7 -2021-02-03T06:00,31.6,73,23.8,0,0,6.9,9.4 -2021-02-03T07:00,31.1,76,24.4,0,0,8.3,10.3 -2021-02-03T08:00,39.7,57,25.8,0,0,7.2,11.2 -2021-02-03T09:00,48.6,45,28.3,0,0,9.9,15.2 -2021-02-03T10:00,55,37,29.5,0,0,10.2,17.7 -2021-02-03T11:00,58.8,31,28.2,0,0,11.6,21.9 -2021-02-03T12:00,60.4,28,26.9,0,0,6.9,21.5 -2021-02-03T13:00,62.1,24,24.8,0,0,1.9,15 -2021-02-03T14:00,61.4,23,22.8,0,0,3.1,11.6 -2021-02-03T15:00,57.5,40,33.2,0.008,0,3.2,9.8 -2021-02-03T16:00,52.1,54,36.1,0.016,0,6.5,10.7 -2021-02-03T17:00,45.2,79,39,0,0,5.2,12.3 -2021-02-03T18:00,46.9,71,38.1,0.028,0,2.5,6.5 -2021-02-03T19:00,42.4,90,39.6,0.024,0,3.4,6.5 -2021-02-03T20:00,40.2,87,36.8,0.024,0,6.2,8.5 -2021-02-03T21:00,37,88,33.8,0.012,0,6.6,12.8 -2021-02-03T22:00,35.1,94,33.4,0.012,0.028,2.3,10.7 -2021-02-03T23:00,34.9,93,33.1,0.004,0.028,3.2,5.4 -2021-02-04T00:00,32.9,58,19.7,0,0.028,14.5,18.8 -2021-02-04T01:00,28.9,71,20.5,0,0.028,6,25.9 -2021-02-04T02:00,28.7,74,21.3,0,0.028,3.8,10.1 -2021-02-04T03:00,27.4,82,22.6,0,0,2.4,6.7 -2021-02-04T04:00,26.3,87,23.1,0,0,1.4,4.3 -2021-02-04T05:00,23.4,84,19.3,0,0,5,5.8 -2021-02-04T06:00,22.5,84,18.4,0,0,4,8.7 -2021-02-04T07:00,22,86,18.4,0,0,4.7,6.5 -2021-02-04T08:00,27.2,73,19.6,0,0,2.9,5.8 -2021-02-04T09:00,33.9,29,5.3,0,0,10,16.8 -2021-02-04T10:00,35.7,26,4,0,0,8.6,19.7 -2021-02-04T11:00,38.3,22,3.2,0,0,12.6,23.5 -2021-02-04T12:00,39.3,19,0.6,0,0,15.7,28 -2021-02-04T13:00,38.8,21,2.1,0,0,18.1,33.3 -2021-02-04T14:00,38.7,22,3.4,0,0,14.9,32.2 -2021-02-04T15:00,38.4,22,2.8,0,0,14,27.3 -2021-02-04T16:00,37.6,23,2.8,0,0,11.2,25.1 -2021-02-04T17:00,35,28,5.2,0,0,4.9,19.9 -2021-02-04T18:00,31.2,35,6.8,0,0,7.7,12.1 -2021-02-04T19:00,30.1,37,7,0,0,7.2,14.1 -2021-02-04T20:00,27.4,44,8.3,0,0,6.5,11.9 -2021-02-04T21:00,29.3,41,8.2,0,0,3.8,8.1 -2021-02-04T22:00,26.7,49,10.1,0,0,4.5,4.9 -2021-02-04T23:00,24.7,51,9.2,0,0,5.2,7.4 -2021-02-05T00:00,23.1,56,9.8,0,0,5.9,6.9 -2021-02-05T01:00,23.2,55,9.2,0,0,3.3,6.9 -2021-02-05T02:00,22.4,56,9.2,0,0,3.8,5.8 -2021-02-05T03:00,21.8,57,9.1,0,0,3.9,6.3 -2021-02-05T04:00,20.9,60,9.1,0,0,4.9,6 -2021-02-05T05:00,23,52,8.2,0,0,3.4,6 -2021-02-05T06:00,22.8,50,7.1,0,0,4.2,8.3 -2021-02-05T07:00,22.8,50,6.9,0,0,3.6,6.7 -2021-02-05T08:00,26.2,44,7.4,0,0,4.7,8.3 -2021-02-05T09:00,32.4,33,6.3,0,0,7.1,13.2 -2021-02-05T10:00,36.3,28,6.2,0,0,11.2,19.9 -2021-02-05T11:00,39.8,24,6.1,0,0,11.5,22.6 -2021-02-05T12:00,42.4,23,7.5,0,0,6.7,21.7 -2021-02-05T13:00,43.8,23,8.8,0,0,1.6,14.8 -2021-02-05T14:00,44.2,23,9.1,0,0,2.9,8.9 -2021-02-05T15:00,44.6,23,8.9,0,0,4.7,12.3 -2021-02-05T16:00,43.8,24,9.3,0,0,4.7,11.2 -2021-02-05T17:00,37.9,39,15.2,0,0,3.7,9.6 -2021-02-05T18:00,34.3,43,14,0,0,3.8,4.7 -2021-02-05T19:00,31,49,13.9,0,0,4.5,6.9 -2021-02-05T20:00,28.7,53,13.7,0,0,4.2,7.2 -2021-02-05T21:00,28,55,14.1,0,0,5.2,6.9 -2021-02-05T22:00,28.6,53,13.7,0,0,5.4,8.1 -2021-02-05T23:00,29.1,53,14,0,0,5.6,8.3 -2021-02-06T00:00,33.8,41,12.7,0,0,7.9,12.1 -2021-02-06T01:00,34.4,39,11.9,0,0,12.4,20.8 -2021-02-06T02:00,32.5,41,11.1,0,0,8,21 -2021-02-06T03:00,27.6,50,11.4,0,0,7,13.6 -2021-02-06T04:00,29.5,46,11.3,0,0,5.8,9.6 -2021-02-06T05:00,28,56,14.2,0,0,5.8,8.3 -2021-02-06T06:00,30.6,53,15.3,0,0,5,7.4 -2021-02-06T07:00,33.2,44,13.6,0,0,2.4,6.9 -2021-02-06T08:00,33,48,15.4,0,0,1.8,3.4 -2021-02-06T09:00,35.6,41,14.4,0,0,0.5,6.5 -2021-02-06T10:00,38.7,28,8.2,0,0,3.4,8.9 -2021-02-06T11:00,41.6,22,5.5,0,0,10.3,19.5 -2021-02-06T12:00,43.3,20,4.9,0,0,9.3,21.9 -2021-02-06T13:00,45.1,18,3.7,0,0,8.9,19.2 -2021-02-06T14:00,45.9,18,4.1,0,0,9.4,19.7 -2021-02-06T15:00,46.1,18,4.4,0,0,6.7,18.8 -2021-02-06T16:00,46.9,17,4.2,0,0,5.7,13.6 -2021-02-06T17:00,42.6,25,8.9,0,0,1.6,10.3 -2021-02-06T18:00,34.3,41,13,0,0,5.5,5.1 -2021-02-06T19:00,34,42,13.2,0,0,6.2,9.2 -2021-02-06T20:00,33.8,41,12.7,0,0,5.2,10.3 -2021-02-06T21:00,33.7,40,11.7,0,0,3.6,8.7 -2021-02-06T22:00,31.8,43,11.8,0,0,2.1,4.7 -2021-02-06T23:00,28.8,51,12.9,0,0,3.8,4.9 -2021-02-07T00:00,28.9,52,13.6,0,0,1.4,4.7 -2021-02-07T01:00,27.4,59,14.8,0,0,3.3,4.5 -2021-02-07T02:00,29.8,54,15.3,0,0,4,5.6 -2021-02-07T03:00,32.2,46,13.5,0,0,5.1,7.4 -2021-02-07T04:00,32.5,45,13.5,0,0,5.7,8.7 -2021-02-07T05:00,34.1,45,14.8,0,0,5.1,8.5 -2021-02-07T06:00,33.6,47,15.5,0,0,4.9,8.1 -2021-02-07T07:00,32.5,49,15.4,0,0,5.3,8.3 -2021-02-07T08:00,33.6,49,16.4,0,0,6.9,10.7 -2021-02-07T09:00,43,32,15.2,0,0,8.8,14.8 -2021-02-07T10:00,48.2,19,7.6,0,0,18.9,31.1 -2021-02-07T11:00,50.5,16,6.2,0,0,16.2,32.7 -2021-02-07T12:00,53.1,12,2,0,0,17.2,31.5 -2021-02-07T13:00,54.1,10,-2.5,0,0,18.8,33.1 -2021-02-07T14:00,54.2,9,-4.3,0,0,19,34 -2021-02-07T15:00,53.7,8,-6.1,0,0,17.9,33.3 -2021-02-07T16:00,52.2,9,-5.4,0,0,13.5,31.1 -2021-02-07T17:00,46.5,15,1.5,0,0,6.3,22.8 -2021-02-07T18:00,41.6,18,1.1,0,0,6.2,12.5 -2021-02-07T19:00,23.8,69,15.3,0,0,18.7,30.9 -2021-02-07T20:00,19.3,71,11.4,0,0,11.9,30.9 -2021-02-07T21:00,17.4,71,9.7,0,0,5.9,21.3 -2021-02-07T22:00,16.5,72,9.1,0,0,0.4,11.4 -2021-02-07T23:00,13.9,81,9.1,0,0,0.5,6.9 -2021-02-08T00:00,11.5,84,7.5,0,0,2.7,7.8 -2021-02-08T01:00,9.7,95,8.4,0,0,2.3,8.1 -2021-02-08T02:00,8.7,91,6.5,0,0,3.1,8.7 -2021-02-08T03:00,8.1,91,5.9,0,0,3.5,8.9 -2021-02-08T04:00,7.9,90,5.5,0,0,4.7,10.7 -2021-02-08T05:00,9,91,6.8,0,0,1.3,10.7 -2021-02-08T06:00,7.3,88,4.6,0,0,3,8.3 -2021-02-08T07:00,6.4,88,3.5,0,0,6.8,12.8 -2021-02-08T08:00,11.5,77,5.5,0,0,6.9,14.1 -2021-02-08T09:00,20.7,51,5.3,0,0,4.8,14.1 -2021-02-08T10:00,28.7,37,5.4,0,0,9.5,18.3 -2021-02-08T11:00,30.4,35,6.2,0,0,14.4,26.4 -2021-02-08T12:00,32.4,32,5.6,0,0,11.5,26.8 -2021-02-08T13:00,35.3,28,5.4,0,0,10.8,22.8 -2021-02-08T14:00,37.2,25,4.9,0,0,11.4,21.9 -2021-02-08T15:00,36.9,26,4.9,0,0,9.8,21.9 -2021-02-08T16:00,34.7,28,5,0,0,8.3,18.8 -2021-02-08T17:00,26.4,41,5.8,0,0,4.7,14.8 -2021-02-08T18:00,21,52,6.1,0,0,4,8.1 -2021-02-08T19:00,20.2,54,6.2,0,0,3.8,5.4 -2021-02-08T20:00,19,56,5.9,0,0,3.5,5.4 -2021-02-08T21:00,18.6,58,6.1,0,0,2.7,4.7 -2021-02-08T22:00,17.8,60,6.3,0,0,2.6,5.6 -2021-02-08T23:00,16,64,6.1,0,0,3.2,5.6 -2021-02-09T00:00,14.2,69,6,0,0,2.5,5.6 -2021-02-09T01:00,13.3,72,5.8,0,0,4.5,7.8 -2021-02-09T02:00,12.1,75,5.8,0,0,5.9,11 -2021-02-09T03:00,10.9,80,6,0,0,4.4,11 -2021-02-09T04:00,9.7,84,5.8,0,0,2.4,8.7 -2021-02-09T05:00,10,87,6.9,0,0,2.4,7.2 -2021-02-09T06:00,9.9,85,6.2,0,0,2.6,8.3 -2021-02-09T07:00,10,84,6,0,0,3.1,7.6 -2021-02-09T08:00,11.2,81,6.5,0,0,0.9,7.4 -2021-02-09T09:00,13,75,6.5,0,0,1.5,9.8 -2021-02-09T10:00,18.2,61,7.1,0,0,3.2,11.6 -2021-02-09T11:00,24.4,47,7.3,0,0,3.4,12.3 -2021-02-09T12:00,29.3,39,7.3,0,0,5.4,14.5 -2021-02-09T13:00,33,34,7.8,0,0,5.5,15.4 -2021-02-09T14:00,34.4,33,8.1,0,0,6.3,15 -2021-02-09T15:00,34.6,33,8.2,0,0,5.3,15.2 -2021-02-09T16:00,35.4,32,8.2,0,0,2.8,12.5 -2021-02-09T17:00,27.7,46,9.8,0,0,3.4,7.2 -2021-02-09T18:00,22.4,57,9.5,0,0,3.9,6.5 -2021-02-09T19:00,20.5,62,9.5,0,0,3.2,5.1 -2021-02-09T20:00,19,67,9.7,0,0,5.1,8.9 -2021-02-09T21:00,17.7,70,9.7,0,0,3.1,8.5 -2021-02-09T22:00,18,69,9.6,0,0,3.5,6.3 -2021-02-09T23:00,17.8,70,9.7,0,0,2,6.5 -2021-02-10T00:00,18.3,69,9.8,0,0,3.2,5.8 -2021-02-10T01:00,18.2,70,10.2,0,0,4.6,8.5 -2021-02-10T02:00,18.2,72,10.8,0,0,4.3,9.2 -2021-02-10T03:00,19.2,70,10.9,0,0,5.8,10.3 -2021-02-10T04:00,18.4,72,11,0,0,5.4,11.4 -2021-02-10T05:00,15.4,80,10.4,0,0,5.3,9.8 -2021-02-10T06:00,14.7,80,9.8,0,0,2.4,10.5 -2021-02-10T07:00,14.7,79,9.5,0,0,2.5,7.2 -2021-02-10T08:00,15.1,78,9.4,0,0,1.1,6.7 -2021-02-10T09:00,15.5,76,9.4,0,0,2.5,7.6 -2021-02-10T10:00,16.2,75,9.5,0,0,2.2,9.4 -2021-02-10T11:00,20.2,63,9.7,0,0,2.9,11.4 -2021-02-10T12:00,24.3,54,10,0,0,2.1,11 -2021-02-10T13:00,29.9,43,10.1,0,0,2.6,11.2 -2021-02-10T14:00,34.2,37,10.5,0,0,2.8,11.2 -2021-02-10T15:00,36.5,35,11.2,0,0,4.5,11.6 -2021-02-10T16:00,36.7,35,11.5,0,0,8,14.8 -2021-02-10T17:00,26.9,53,12.1,0,0,3.2,15 -2021-02-10T18:00,21.8,67,12.6,0,0,3.8,5.1 -2021-02-10T19:00,25.1,61,13.5,0,0,2.4,4.9 -2021-02-10T20:00,20.4,68,11.4,0,0,9.9,14.3 -2021-02-10T21:00,16.4,72,8.9,0,0,8.4,17.7 -2021-02-10T22:00,14,74,7.3,0,0,5.5,14.1 -2021-02-10T23:00,11.3,82,6.9,0,0,3.8,9.4 -2021-02-11T00:00,10.8,83,6.6,0,0,3.7,7.8 -2021-02-11T01:00,11.5,79,6.4,0,0,6,10.7 -2021-02-11T02:00,11.4,78,6,0,0,7.1,13 -2021-02-11T03:00,10.8,82,6.3,0,0,3.3,12.5 -2021-02-11T04:00,10.2,86,6.9,0,0,5.5,10.3 -2021-02-11T05:00,8.4,87,5.3,0,0,3.9,10.1 -2021-02-11T06:00,8.3,86,5.1,0,0,2.2,7.4 -2021-02-11T07:00,10,80,5.2,0,0,4,8.5 -2021-02-11T08:00,12,78,6.4,0,0,3.5,9.2 -2021-02-11T09:00,16.5,63,6.1,0,0,5.1,12.1 -2021-02-11T10:00,20.9,50,5.4,0,0,5,14.1 -2021-02-11T11:00,25.2,43,6,0,0,4.9,13.6 -2021-02-11T12:00,30.7,35,6.3,0,0,7.6,17.7 -2021-02-11T13:00,33.5,31,6.1,0,0,7.4,17.9 -2021-02-11T14:00,34.9,29,5.8,0,0,9.5,19.5 -2021-02-11T15:00,33.8,29,5,0,0,8.9,19.9 -2021-02-11T16:00,31.7,31,4.4,0,0,9,18.1 -2021-02-11T17:00,16.7,51,1.9,0,0,8.6,17.2 -2021-02-11T18:00,13.8,54,0.3,0,0,9.2,16.1 -2021-02-11T19:00,12.2,58,0.1,0,0,6.8,14.8 -2021-02-11T20:00,11.3,60,0.1,0,0,7.8,13.4 -2021-02-11T21:00,11,60,-0.1,0,0,7,15 -2021-02-11T22:00,10.8,61,0.1,0,0,4.3,13.2 -2021-02-11T23:00,10.7,62,0.2,0,0,3.6,9.6 -2021-02-12T00:00,10.4,64,0.5,0,0,4.3,9.2 -2021-02-12T01:00,9.7,65,0.1,0,0,4.7,10.1 -2021-02-12T02:00,9.2,65,-0.1,0,0,4.7,10.1 -2021-02-12T03:00,8.8,66,-0.3,0,0,4.2,10.1 -2021-02-12T04:00,8,68,-0.4,0,0,4,9.6 -2021-02-12T05:00,5.8,68,-2.4,0,0,8.6,12.3 -2021-02-12T06:00,4.4,69,-3.5,0,0.028,8.3,15.4 -2021-02-12T07:00,4,68,-4.2,0,0,7.3,15.4 -2021-02-12T08:00,4,66,-4.7,0,0,6.1,14.3 -2021-02-12T09:00,5.5,60,-5.3,0,0,4.8,13 -2021-02-12T10:00,6.5,55,-6.1,0,0,5,12.8 -2021-02-12T11:00,10,50,-5.2,0,0,3.8,13.6 -2021-02-12T12:00,15.5,43,-3.2,0,0,3.8,13.2 -2021-02-12T13:00,17.1,40,-3.1,0,0,6.3,15.7 -2021-02-12T14:00,17.2,39,-3.5,0,0,7.4,18.1 -2021-02-12T15:00,18.2,38,-3.4,0,0,7.2,17.9 -2021-02-12T16:00,17.7,38,-3.9,0,0,9.8,18.6 -2021-02-12T17:00,7.3,58,-4.5,0,0,6,18.8 -2021-02-12T18:00,7.4,57,-4.7,0,0,3.4,11.9 -2021-02-12T19:00,7.5,57,-4.7,0,0,1.6,8.9 -2021-02-12T20:00,6.6,60,-4.4,0,0,3,7.6 -2021-02-12T21:00,7.1,61,-3.7,0,0,3.4,8.7 -2021-02-12T22:00,6.6,64,-3.1,0,0,1.4,8.3 -2021-02-12T23:00,7.2,63,-2.9,0,0.028,3.1,6.5 -2021-02-13T00:00,7.6,60,-3.5,0,0,5.9,12.8 -2021-02-13T01:00,7.3,61,-3.4,0,0.028,5.4,12.5 -2021-02-13T02:00,6.4,65,-2.9,0,0.028,4.3,11 -2021-02-13T03:00,6.4,64,-3,0,0,5,10.7 -2021-02-13T04:00,5.7,65,-3.6,0,0,5.1,10.3 -2021-02-13T05:00,1.8,62,-8.4,0,0,7.6,10.7 -2021-02-13T06:00,0.8,64,-8.7,0,0,4.3,13.9 -2021-02-13T07:00,0.1,64,-9,0,0,4.5,10.1 -2021-02-13T08:00,1.1,61,-9.3,0,0,2.7,10.3 -2021-02-13T09:00,1.9,56,-10,0,0,3.7,11.2 -2021-02-13T10:00,4.2,51,-10,0,0,2.4,11.2 -2021-02-13T11:00,6.3,47,-9.8,0,0,2.7,11.2 -2021-02-13T12:00,7.8,46,-8.7,0,0,2.5,11.2 -2021-02-13T13:00,8.7,46,-8,0,0,3.9,11 -2021-02-13T14:00,8.8,48,-7.1,0,0.028,5.9,14.1 -2021-02-13T15:00,10,49,-5.5,0,0.055,6,14.5 -2021-02-13T16:00,10.5,51,-4.1,0,0.083,8.1,15.9 -2021-02-13T17:00,3.5,59,-7.6,0,0.055,4,16.1 -2021-02-13T18:00,3.6,62,-6.7,0,0.11,4.5,11 -2021-02-13T19:00,3.8,62,-6.3,0,0.083,2.8,10.5 -2021-02-13T20:00,4.2,64,-5.3,0,0.083,4.2,9.6 -2021-02-13T21:00,4.2,63,-5.6,0,0.083,6.6,12.3 -2021-02-13T22:00,3.8,62,-6.2,0,0.055,7.9,15 -2021-02-13T23:00,3.5,63,-6.4,0,0.055,7.5,14.8 -2021-02-14T00:00,2.9,64,-6.6,0,0.055,8.6,15.7 -2021-02-14T01:00,2.1,63,-7.5,0,0.055,8,15.9 -2021-02-14T02:00,1.8,63,-7.8,0,0.055,7.2,15 -2021-02-14T03:00,1.7,64,-7.6,0,0.055,6.4,13.9 -2021-02-14T04:00,1.5,63,-8,0,0.055,7.1,13 -2021-02-14T05:00,-2.6,61,-12.5,0,0.028,7.8,14.5 -2021-02-14T06:00,-2.9,60,-13.4,0,0,7.8,15.2 -2021-02-14T07:00,-3.5,59,-14.2,0,0.028,7.3,14.5 -2021-02-14T08:00,-3.3,57,-14.6,0,0.028,7.6,15.2 -2021-02-14T09:00,-2.2,53,-15.1,0,0,5.9,15.4 -2021-02-14T10:00,-1.1,49,-15.8,0,0,3.8,14.1 -2021-02-14T11:00,0.5,41,-17.9,0,0,3.4,13.2 -2021-02-14T12:00,2.1,38,-17.6,0,0,4.3,14.5 -2021-02-14T13:00,3.2,38,-16.8,0,0,4.1,15 -2021-02-14T14:00,4.1,38,-16,0,0,4.9,15 -2021-02-14T15:00,4.3,38,-15.5,0,0,6,15.4 -2021-02-14T16:00,3.1,42,-14.8,0,0,7.2,15.9 -2021-02-14T17:00,-0.8,53,-14.1,0,0,4.4,16.1 -2021-02-14T18:00,-0.8,53,-13.9,0,0,4.2,12.3 -2021-02-14T19:00,-0.3,52,-13.6,0,0,4.1,9.6 -2021-02-14T20:00,-0.3,51,-14.3,0,0,4.1,9.4 -2021-02-14T21:00,-0.4,49,-15.1,0,0,4.9,9.8 -2021-02-14T22:00,-1,52,-14.5,0,0,5.3,10.3 -2021-02-14T23:00,-2,55,-14.2,0,0,4.3,9.8 -2021-02-15T00:00,-3.2,58,-14.3,0,0,4,8.9 -2021-02-15T01:00,-4.5,62,-14.3,0,0,4.2,8.5 -2021-02-15T02:00,-6.2,67,-14.3,0,0,3.1,8.3 -2021-02-15T03:00,-7.2,70,-14.4,0,0,3,8.3 -2021-02-15T04:00,-7.9,72,-14.4,0,0,3,7.8 -2021-02-15T05:00,-8.5,77,-13.7,0,0,0.4,7.8 -2021-02-15T06:00,-7.8,73,-14.2,0,0,2.4,7.2 -2021-02-15T07:00,-8.1,74,-14.2,0,0,2.4,7.4 -2021-02-15T08:00,-6,68,-13.9,0,0,2,8.1 -2021-02-15T09:00,-0.8,54,-13.4,0,0,3.3,11 -2021-02-15T10:00,7.2,40,-12,0,0,3.1,12.1 -2021-02-15T11:00,16,33,-8.2,0,0,4.3,13.2 -2021-02-15T12:00,22.7,29,-4.6,0,0,5.7,15.4 -2021-02-15T13:00,25.8,27,-3.5,0,0,8.2,18.1 -2021-02-15T14:00,26.2,28,-2.4,0,0,9.7,19.7 -2021-02-15T15:00,25,31,-1.3,0,0,9.6,20.4 -2021-02-15T16:00,24.6,32,-1.1,0,0,8.7,19.2 -2021-02-15T17:00,19.7,47,2.7,0,0,7.1,16.6 -2021-02-15T18:00,18.3,49,2.2,0,0,5.7,13.9 -2021-02-15T19:00,16.2,53,1.9,0,0,4.4,8.7 -2021-02-15T20:00,16.3,51,1.5,0,0,2,5.4 -2021-02-15T21:00,15.6,54,1.8,0,0,3.6,5.8 -2021-02-15T22:00,16.2,54,2.5,0,0,1.1,6.5 -2021-02-15T23:00,16.4,54,2.8,0,0,1.6,4.5 -2021-02-16T00:00,15.4,57,2.8,0,0,2.1,4.7 -2021-02-16T01:00,15.6,57,2.9,0,0,5.5,7.8 -2021-02-16T02:00,16.3,57,3.7,0,0,6.9,10.5 -2021-02-16T03:00,16.9,58,4.5,0,0,7.2,10.7 -2021-02-16T04:00,17.1,58,4.7,0,0,5.6,10.7 -2021-02-16T05:00,19,58,6.7,0,0,2.2,8.7 -2021-02-16T06:00,17.9,62,7,0,0,1.6,3.4 -2021-02-16T07:00,15.5,68,6.7,0,0,3.6,5.1 -2021-02-16T08:00,19.7,55,6.3,0,0,7,12.3 -2021-02-16T09:00,28.8,38,6.5,0,0,0.9,12.1 -2021-02-16T10:00,33.7,32,7,0,0,3.2,9.8 -2021-02-16T11:00,37.6,30,8.7,0,0,4,11.9 -2021-02-16T12:00,40.4,27,9.1,0,0,3.8,12.1 -2021-02-16T13:00,41.5,24,7.3,0,0,4.7,12.5 -2021-02-16T14:00,41.8,24,7.2,0,0,6.9,15 -2021-02-16T15:00,41.1,23,6.4,0,0,6.9,15.7 -2021-02-16T16:00,39.7,24,6,0,0,6.8,14.1 -2021-02-16T17:00,28.9,49,12.4,0,0,5.4,11.4 -2021-02-16T18:00,26.2,57,13.2,0,0,4.6,6.9 -2021-02-16T19:00,24,65,13.8,0,0,3.5,6.3 -2021-02-16T20:00,21.8,71,13.8,0,0,4.4,5.8 -2021-02-16T21:00,20.7,72,13.1,0,0,3.2,5.4 -2021-02-16T22:00,19.9,70,11.6,0,0,4,5.8 -2021-02-16T23:00,18.9,69,10.2,0,0,3.5,6.3 -2021-02-17T00:00,18.5,68,9.8,0,0,3.2,5.4 -2021-02-17T01:00,18.6,65,8.8,0,0,2.1,5.6 -2021-02-17T02:00,17.2,67,8.1,0,0,0.9,3.1 -2021-02-17T03:00,16.8,63,6.5,0,0,1.4,2.9 -2021-02-17T04:00,17.2,59,5.2,0,0,2.6,4.3 -2021-02-17T05:00,14.5,82,10.1,0,0,6.1,5.4 -2021-02-17T06:00,17.2,82,12.7,0,0,4,7.4 -2021-02-17T07:00,16.7,86,13.4,0,0,2.2,6.5 -2021-02-17T08:00,19,82,14.5,0,0,0.3,5.6 -2021-02-17T09:00,22.6,76,16.3,0,0,0.4,6.3 -2021-02-17T10:00,26.1,67,16.5,0,0,2.4,9.6 -2021-02-17T11:00,29.8,58,16.8,0,0,2.9,11.4 -2021-02-17T12:00,32.9,49,15.7,0,0,3.8,12.5 -2021-02-17T13:00,34.2,45,15,0,0,5,13.6 -2021-02-17T14:00,34.5,44,14.8,0,0,6.7,15.2 -2021-02-17T15:00,33.5,47,15.4,0,0,7.6,15.7 -2021-02-17T16:00,32,53,16.6,0,0,7.7,15.4 -2021-02-17T17:00,27.1,77,20.7,0,0.028,6.1,13.9 -2021-02-17T18:00,25.6,82,21,0,0.083,7.2,11.2 -2021-02-17T19:00,25.3,84,21.1,0,0.138,7.3,12.5 -2021-02-17T20:00,24.9,88,21.9,0,0.276,7.2,11.9 -2021-02-17T21:00,23.8,87,20.6,0,0.22,5.6,13 -2021-02-17T22:00,23.4,88,20.3,0,0.165,4.4,9.8 -2021-02-17T23:00,23,90,20.4,0,0.165,4.7,8.5 -2021-02-18T00:00,22.6,91,20.2,0,0.138,4.7,8.5 -2021-02-18T01:00,22.2,90,19.8,0,0.083,4.7,8.3 -2021-02-18T02:00,21,91,18.9,0,0.055,2.9,7.8 -2021-02-18T03:00,20.1,91,17.9,0,0.028,3,5.4 -2021-02-18T04:00,20.6,93,19,0,0.028,1.3,4 -2021-02-18T05:00,18.1,99,17.8,0,0,3,3.4 -2021-02-18T06:00,17.2,98,16.6,0,0,2.9,4 -2021-02-18T07:00,14.5,97,13.8,0,0,4.3,6 -2021-02-18T08:00,12.5,85,8.7,0,0,3.2,6 -2021-02-18T09:00,19.1,77,13,0,0,0.3,5.6 -2021-02-18T10:00,20.7,78,14.8,0,0,2.4,5.6 -2021-02-18T11:00,25.3,65,15.2,0,0,1.8,5.4 -2021-02-18T12:00,28.2,52,12.7,0,0,2.1,4.5 -2021-02-18T13:00,29.9,45,11.3,0,0,2.8,6.3 -2021-02-18T14:00,30.3,43,10.4,0,0,4.2,8.7 -2021-02-18T15:00,29.4,48,12,0,0,3.7,8.9 -2021-02-18T16:00,25.9,54,11.4,0,0,4.9,8.1 -2021-02-18T17:00,24.1,68,15.2,0,0,5.4,9.6 -2021-02-18T18:00,25.9,60,13.9,0,0,3.7,6.5 -2021-02-18T19:00,25.7,59,13.2,0,0,2.6,4.9 -2021-02-18T20:00,18.1,67,8.8,0,0,6.7,8.3 -2021-02-18T21:00,12.3,73,5.3,0,0,6.3,8.5 -2021-02-18T22:00,11.2,70,3.3,0,0,5.1,8.5 -2021-02-18T23:00,9.9,65,0.6,0,0,5.2,7.2 -2021-02-19T00:00,1.8,68,-6.4,0,0,8.2,11 -2021-02-19T01:00,1.8,65,-7.4,0,0,8.6,12.3 -2021-02-19T02:00,3.8,61,-6.7,0,0,7.4,11.4 -2021-02-19T03:00,-0.2,66,-8.9,0,0,8.6,11.4 -2021-02-19T04:00,1,64,-8.2,0,0,7.9,12.1 -2021-02-19T05:00,12.3,64,2.5,0,0,5.8,10.7 -2021-02-19T06:00,17.8,43,-0.9,0,0,2.8,8.1 -2021-02-19T07:00,14.5,56,1.8,0,0,5.8,7.2 -2021-02-19T08:00,17.4,60,5.9,0,0,4.8,8.7 -2021-02-19T09:00,23.5,49,7.1,0,0,4.5,9.4 -2021-02-19T10:00,31.3,41,10,0,0,8.4,14.5 -2021-02-19T11:00,38.4,33,11.8,0,0,11.7,19.9 -2021-02-19T12:00,41.5,35,15.7,0,0,7.8,20.6 -2021-02-19T13:00,41.1,43,20.1,0,0,4.2,15 -2021-02-19T14:00,41.5,41,19.4,0,0,4.6,9.4 -2021-02-19T15:00,41.6,39,18.3,0,0,10.4,17.7 -2021-02-19T16:00,39.1,45,19.3,0,0,12,21.7 -2021-02-19T17:00,36.4,49,19.1,0,0,9.2,20.8 -2021-02-19T18:00,29.2,59,16.8,0,0,7.4,14.8 -2021-02-19T19:00,26.9,60,14.7,0,0,5.1,10.7 -2021-02-19T20:00,23,69,14.3,0,0,6,9.8 -2021-02-19T21:00,19.3,74,12.4,0,0,9.3,11.6 -2021-02-19T22:00,19,70,10.9,0,0,7.6,12.1 -2021-02-19T23:00,16.9,71,9.1,0,0,7.2,9.4 -2021-02-20T00:00,11.6,76,5.4,0,0,8.4,11 -2021-02-20T01:00,13.9,71,6.4,0,0,6.9,11 -2021-02-20T02:00,12.1,72,4.7,0,0,8.2,10.5 -2021-02-20T03:00,11,73,3.9,0,0,9.3,12.1 -2021-02-20T04:00,16.3,65,6.5,0,0,7.9,12.1 -2021-02-20T05:00,16.3,73,9.1,0,0,7.8,9.8 -2021-02-20T06:00,15,71,7.3,0,0,8.6,10.5 -2021-02-20T07:00,12.5,76,6.4,0,0,9.5,13 -2021-02-20T08:00,21.3,67,12.2,0,0,6.6,13 -2021-02-20T09:00,31.2,58,18.2,0,0,5.4,11 -2021-02-20T10:00,38.1,59,25.2,0,0,5.1,9.8 -2021-02-20T11:00,40.6,55,25.8,0,0,5.4,8.9 -2021-02-20T12:00,43.2,50,25.6,0,0,5.4,9.4 -2021-02-20T13:00,54.7,18,12.3,0,0,5.3,14.8 -2021-02-20T14:00,51.4,24,16,0,0,10.2,16.3 -2021-02-20T15:00,42.3,42,20.9,0,0,15.7,29.3 -2021-02-20T16:00,40.9,51,24.1,0,0,16.3,26.4 -2021-02-20T17:00,37.3,68,27.7,0,0,6.8,27.1 -2021-02-20T18:00,34.2,80,28.6,0.004,0.055,4.6,11.9 -2021-02-20T19:00,34.3,80,28.7,0,0.165,3.6,9.2 -2021-02-20T20:00,30.7,92,28.7,0,0.358,6,10.1 -2021-02-20T21:00,28.9,94,27.2,0,0.165,2.3,9.8 -2021-02-20T22:00,28.8,93,27.1,0,0.028,3.7,6.5 -2021-02-20T23:00,28.8,91,26.5,0.004,0.11,3.5,7.6 -2021-02-21T00:00,23.4,91,21.2,0,0.055,4.3,8.5 -2021-02-21T01:00,22,91,19.7,0,0,4,6 -2021-02-21T02:00,21.2,81,16.3,0,0.028,5.2,17 -2021-02-21T03:00,17.2,77,11.2,0,0,4,9.2 -2021-02-21T04:00,18,76,11.7,0,0,4.8,7.4 -2021-02-21T05:00,23.5,70,15.2,0,0,7.7,7.8 -2021-02-21T06:00,27.2,57,14.2,0,0,4.9,9.6 -2021-02-21T07:00,26.7,62,15.4,0,0,1.5,6.5 -2021-02-21T08:00,27.8,57,14.5,0,0,3.8,4.9 -2021-02-21T09:00,26.8,56,13.2,0,0,3.6,6.5 -2021-02-21T10:00,30.6,49,13.8,0,0,2.8,6.9 -2021-02-21T11:00,32.9,50,16.4,0,0,1.9,6 -2021-02-21T12:00,33.8,47,15.9,0,0,2.7,6.5 -2021-02-21T13:00,35.1,48,17.2,0,0,2.3,5.8 -2021-02-21T14:00,35.9,47,17.5,0,0,3.2,6.3 -2021-02-21T15:00,36.2,42,15.3,0,0,5.5,10.1 -2021-02-21T16:00,34.6,46,16.1,0,0,6,12.8 -2021-02-21T17:00,34.9,44,14.9,0,0,9.2,12.3 -2021-02-21T18:00,31.3,47,13.3,0,0,15,25.1 -2021-02-21T19:00,30.7,48,13.1,0,0,12.8,25.5 -2021-02-21T20:00,29.2,50,12.7,0,0,8.4,21.7 -2021-02-21T21:00,25.3,54,11,0,0,8,14.1 -2021-02-21T22:00,28.3,50,12.2,0,0,8.8,14.5 -2021-02-21T23:00,29.1,50,12.7,0,0,9.2,16.8 -2021-02-22T00:00,31.9,38,9.1,0,0,1.8,15.4 -2021-02-22T01:00,18.3,62,7.6,0,0,6.7,8.5 -2021-02-22T02:00,20.4,56,7.3,0,0,5.1,9.4 -2021-02-22T03:00,30.9,40,9.4,0,0,1.8,6.3 -2021-02-22T04:00,18.4,63,7.9,0,0,5.6,7.2 -2021-02-22T05:00,25.8,60,13.9,0,0,12.7,10.3 -2021-02-22T06:00,18.3,67,9.1,0,0,7.9,19.2 -2021-02-22T07:00,24.2,61,12.7,0,0,8.2,13 -2021-02-22T08:00,28.9,60,16.7,0,0,6.8,14.8 -2021-02-22T09:00,35.5,60,22.9,0,0,3.7,12.3 -2021-02-22T10:00,45.1,31,16,0,0,2.8,7.2 -2021-02-22T11:00,44.7,41,22.5,0,0,6,9.2 -2021-02-22T12:00,46.2,41,23.9,0,0,7.8,13.4 -2021-02-22T13:00,48.8,38,24.1,0,0,13.3,22.6 -2021-02-22T14:00,54.5,26,20.3,0,0,20.8,35.8 -2021-02-22T15:00,55,26,20.7,0,0,17.9,34.9 -2021-02-22T16:00,53.6,27,20,0,0,16.9,29.5 -2021-02-22T17:00,48.8,31,19.3,0,0,7.6,27.1 -2021-02-22T18:00,47.4,30,17.7,0,0,16.5,27.5 -2021-02-22T19:00,41,40,18.3,0,0,9.7,26.6 -2021-02-22T20:00,34.3,55,19.9,0,0,5.7,15.4 -2021-02-22T21:00,29.8,67,20.1,0,0,5.9,8.5 -2021-02-22T22:00,30.1,63,18.9,0,0,4,7.8 -2021-02-22T23:00,29.5,60,17.2,0,0,5.3,8.3 -2021-02-23T00:00,28.7,60,16.3,0,0,5.8,10.1 -2021-02-23T01:00,26.2,64,15.8,0,0,6.1,9.2 -2021-02-23T02:00,25.1,65,15,0,0,6.5,8.1 -2021-02-23T03:00,29.2,54,14.5,0,0,2.7,7.6 -2021-02-23T04:00,26.8,58,14,0,0,3,3.4 -2021-02-23T05:00,21.1,74,14.2,0,0,6.3,5.8 -2021-02-23T06:00,23.7,67,14.4,0,0,3.5,7.4 -2021-02-23T07:00,24.6,63,13.8,0,0,3.4,5.4 -2021-02-23T08:00,32.2,46,13.9,0,0,5.7,10.1 -2021-02-23T09:00,40.8,35,15.3,0,0,6.3,12.8 -2021-02-23T10:00,47.8,26,14.3,0,0,5.5,12.8 -2021-02-23T11:00,52.1,22,14.5,0,0,2.7,13 -2021-02-23T12:00,55,17,11.1,0,0,8.1,16.8 -2021-02-23T13:00,55.9,17,12.1,0,0,7.8,17.7 -2021-02-23T14:00,56.5,18,13.3,0,0,7.3,16.8 -2021-02-23T15:00,55.5,20,15.5,0,0,10.5,19 -2021-02-23T16:00,53.6,26,19.5,0,0,11.1,19.7 -2021-02-23T17:00,49.1,29,18.1,0,0,13.1,18.3 -2021-02-23T18:00,44.5,37,19.8,0,0,16.7,28.2 -2021-02-23T19:00,39.2,44,19.3,0,0,9,27.1 -2021-02-23T20:00,36.5,49,19.3,0,0,8.8,15 -2021-02-23T21:00,32.5,60,20.1,0,0,7.3,15.2 -2021-02-23T22:00,28.7,68,19.6,0,0,10.5,18.1 -2021-02-23T23:00,27.5,69,18.7,0,0,2.9,17.2 -2021-02-24T00:00,25.7,75,18.8,0,0,4.3,6.9 -2021-02-24T01:00,24.6,78,18.9,0,0,3.8,7.4 -2021-02-24T02:00,22.6,83,18.3,0,0,5.2,6.7 -2021-02-24T03:00,22,81,17,0,0,3.5,6.7 -2021-02-24T04:00,22.3,71,14.4,0,0,4.6,6.7 -2021-02-24T05:00,20.8,66,11.1,0,0,5.9,8.3 -2021-02-24T06:00,21.5,65,11.6,0,0,4.1,7.6 -2021-02-24T07:00,21.3,67,12.2,0,0,3.5,6.3 -2021-02-24T08:00,27.3,51,11.5,0,0,5.6,10.3 -2021-02-24T09:00,30.9,48,13.7,0,0,7.9,15.4 -2021-02-24T10:00,33.7,45,14.5,0,0,7.6,16.3 -2021-02-24T11:00,37,38,13.9,0,0,6.3,16.8 -2021-02-24T12:00,39.1,37,14.9,0,0,6.2,15.4 -2021-02-24T13:00,40.6,36,15.6,0,0,7.8,17 -2021-02-24T14:00,40.9,36,15.9,0,0,7.2,17 -2021-02-24T15:00,40.6,36,15.5,0,0,4.9,15.7 -2021-02-24T16:00,38.8,41,16.9,0,0,7,11.9 -2021-02-24T17:00,35.3,52,19.2,0.004,0.028,5,12.1 -2021-02-24T18:00,31.5,64,20.6,0,0.055,9.2,12.5 -2021-02-24T19:00,27.8,75,21,0,0.165,17.8,28.6 -2021-02-24T20:00,25.1,82,20.3,0,0.386,14.9,30.2 -2021-02-24T21:00,24.9,84,20.8,0,0.441,11.4,24.6 -2021-02-24T22:00,24.1,86,20.5,0,0.413,10.8,19 -2021-02-24T23:00,23.8,85,20,0,0.358,10.2,17.9 -2021-02-25T00:00,23.3,87,19.9,0,0.276,10.1,17.7 -2021-02-25T01:00,22.8,89,20.1,0,0.22,10,17.2 -2021-02-25T02:00,22.4,90,19.9,0,0.165,9.9,16.3 -2021-02-25T03:00,21.6,91,19.2,0,0.138,9.9,16.8 -2021-02-25T04:00,20.9,91,18.6,0,0.083,8.1,16.1 -2021-02-25T05:00,21.9,90,19.4,0,0.028,4.5,13.2 -2021-02-25T06:00,20.3,89,17.6,0,0.028,2.8,7.2 -2021-02-25T07:00,20.6,89,17.8,0,0,2.2,4.9 -2021-02-25T08:00,19.8,89,17,0,0,2.5,3.4 -2021-02-25T09:00,21.7,83,17.4,0,0,3.3,5.8 -2021-02-25T10:00,24.4,76,17.9,0,0,4.8,8.3 -2021-02-25T11:00,27.1,70,18.7,0,0,4.2,8.3 -2021-02-25T12:00,26.2,75,19.5,0,0,9.6,16.8 -2021-02-25T13:00,27.4,71,19.4,0,0,7.1,16.8 -2021-02-25T14:00,29.7,68,20.5,0,0,5.7,12.8 -2021-02-25T15:00,29.3,71,21,0,0,5.2,10.5 -2021-02-25T16:00,27.6,74,20.4,0,0,2.9,9.6 -2021-02-25T17:00,23.5,77,17.5,0,0,3.3,6 -2021-02-25T18:00,22.5,81,17.5,0,0,2,5.8 -2021-02-25T19:00,17.3,91,15.1,0,0,4.6,5.1 -2021-02-25T20:00,19.5,86,16.1,0,0,5,6.9 -2021-02-25T21:00,18,87,14.6,0,0,4.2,6 -2021-02-25T22:00,12.9,93,11.3,0,0,2.8,5.4 -2021-02-25T23:00,5.6,91,3.5,0,0,4.8,6.5 -2021-02-26T00:00,8.5,78,3,0,0,3.4,6.5 -2021-02-26T01:00,8.7,73,1.8,0,0,1.6,4.5 -2021-02-26T02:00,8.9,68,0.6,0,0,3.8,5.4 -2021-02-26T03:00,10.9,64,1.1,0,0,1.6,5.1 -2021-02-26T04:00,10.9,64,1,0,0,3.3,4.9 -2021-02-26T05:00,11.7,66,2.4,0,0,2.6,4.3 -2021-02-26T06:00,4.6,74,-1.8,0,0,6,7.6 -2021-02-26T07:00,6.4,70,-1.3,0,0,5.6,8.1 -2021-02-26T08:00,10,65,0.5,0,0,5.7,7.6 -2021-02-26T09:00,19.9,59,7.9,0,0,6.1,9.8 -2021-02-26T10:00,28,58,15.1,0,0,5.1,12.3 -2021-02-26T11:00,34.8,46,16,0,0,3.1,8.9 -2021-02-26T12:00,36.6,53,20.9,0,0,3.5,6.3 -2021-02-26T13:00,38.1,43,17.7,0,0,3.7,7.8 -2021-02-26T14:00,38.5,45,18.8,0,0,4.3,7.4 -2021-02-26T15:00,44.6,12,-5.3,0,0,3,7.6 -2021-02-26T16:00,39.1,32,11.8,0,0,4.7,4.9 -2021-02-26T17:00,36.9,31,9.3,0,0,3,9.8 -2021-02-26T18:00,29.7,45,11,0,0,3.2,4 -2021-02-26T19:00,22,62,10.9,0,0,6.7,7.8 -2021-02-26T20:00,14.2,81,9.5,0,0,8.1,9.6 -2021-02-26T21:00,11.1,83,7,0,0,8.9,11.6 -2021-02-26T22:00,14.8,76,8.6,0,0,6.5,11.4 -2021-02-26T23:00,17.8,70,9.5,0,0,3.3,8.1 -2021-02-27T00:00,9.4,76,3.3,0,0,8.6,11.9 -2021-02-27T01:00,19,65,9.1,0,0,6.8,11.4 -2021-02-27T02:00,18.4,68,9.7,0,0,7.2,15.9 -2021-02-27T03:00,14.5,72,7.1,0,0,8.1,11.9 -2021-02-27T04:00,19.7,65,9.9,0,0,5.9,9.8 -2021-02-27T05:00,16.6,67,7.7,0,0,5.2,6.9 -2021-02-27T06:00,13.9,66,4.7,0,0,6.5,8.9 -2021-02-27T07:00,10.9,72,3.7,0,0,6.9,8.7 -2021-02-27T08:00,15.6,65,5.8,0,0,4.7,9.8 -2021-02-27T09:00,21.2,65,11.4,0,0,2.7,6.5 -2021-02-27T10:00,25.3,60,13.5,0,0,4.5,7.8 -2021-02-27T11:00,26.8,59,14.4,0,0.028,1.6,16.6 -2021-02-27T12:00,27.9,58,14.8,0,0.028,4.3,8.3 -2021-02-27T13:00,30.3,58,17.2,0,0,5.1,9.8 -2021-02-27T14:00,32.3,57,18.9,0,0,4.8,9.6 -2021-02-27T15:00,32.5,58,19.5,0,0,6.7,11.9 -2021-02-27T16:00,31.6,58,18.4,0,0,5,12.1 -2021-02-27T17:00,29.7,56,16.1,0,0,7.6,12.1 -2021-02-27T18:00,25.1,51,9.3,0,0,12.9,20.4 -2021-02-27T19:00,22.2,52,7.3,0,0,15.4,24.8 -2021-02-27T20:00,21.5,52,6.4,0,0,16.7,27.7 -2021-02-27T21:00,20.9,53,6.4,0,0,12.7,27.7 -2021-02-27T22:00,19.3,54,5.3,0,0,9.7,21.3 -2021-02-27T23:00,17.4,55,3.8,0,0,8.4,16.3 -2021-02-28T00:00,12.7,59,1,0,0,9,13.9 -2021-02-28T01:00,17.3,47,0.7,0,0,2.8,13.9 -2021-02-28T02:00,5.1,62,-5.1,0,0,7.8,10.5 -2021-02-28T03:00,5.5,61,-5.3,0,0,7.2,10.5 -2021-02-28T04:00,11.8,49,-3.8,0,0,7.6,11.4 -2021-02-28T05:00,10,55,-2.8,0,0,6.6,9.2 -2021-02-28T06:00,7.4,58,-4.4,0,0,3.7,7.6 -2021-02-28T07:00,7.8,62,-2.4,0,0,5.8,9.8 -2021-02-28T08:00,9.4,63,-0.5,0,0,4.9,9.8 -2021-02-28T09:00,18.7,54,4.9,0,0,3.5,8.1 -2021-02-28T10:00,25.3,45,7,0,0,3.6,7.4 -2021-02-28T11:00,28.9,32,2.8,0,0,1.6,7.2 -2021-02-28T12:00,30.5,32,4.2,0,0,2.7,5.6 -2021-02-28T13:00,31.3,32,4.7,0,0,3.8,6.9 -2021-02-28T14:00,31.9,34,6.8,0,0,4.6,8.3 -2021-02-28T15:00,32,37,8.6,0,0,3.8,8.3 -2021-02-28T16:00,30.2,47,12.2,0,0,3.9,6.9 -2021-02-28T17:00,31.8,22,-2.6,0,0,1.9,8.1 -2021-02-28T18:00,22.4,37,0,0,0,5.1,5.6 -2021-02-28T19:00,12.8,58,0.9,0,0,8.4,11 -2021-02-28T20:00,9.4,62,-0.9,0,0,10.4,13 -2021-02-28T21:00,9.9,54,-3.4,0,0,11.2,15 -2021-02-28T22:00,14.5,46,-2.6,0,0,7.2,14.1 -2021-02-28T23:00,12.8,48,-3.4,0,0,5,8.9 -2021-03-01T00:00,9.1,52,-4.9,0,0,5.2,7.4 -2021-03-01T01:00,6.7,56,-5.6,0,0,6.4,8.5 -2021-03-01T02:00,4.9,60,-5.8,0,0,7.7,10.1 -2021-03-01T03:00,4.8,62,-5.3,0,0,8.3,10.5 -2021-03-01T04:00,4.5,65,-4.6,0,0,8.6,11.2 -2021-03-01T05:00,9.2,65,-0.2,0,0,8.4,11.9 -2021-03-01T06:00,6.7,67,-2,0,0,9.6,13 -2021-03-01T07:00,8,66,-0.9,0,0,8.4,12.5 -2021-03-01T08:00,15.2,63,4.9,0,0,5.4,11.4 -2021-03-01T09:00,24.2,64,13.9,0,0,2.9,8.3 -2021-03-01T10:00,30.9,45,12,0,0,2.5,4.5 -2021-03-01T11:00,34.2,52,18.3,0,0,1.4,5.4 -2021-03-01T12:00,37.2,60,24.8,0,0,2.5,3.8 -2021-03-01T13:00,38.8,56,24.5,0,0,3.4,5.6 -2021-03-01T14:00,39.7,52,23.4,0,0,3.5,5.8 -2021-03-01T15:00,39.3,53,23.4,0,0,4.1,7.2 -2021-03-01T16:00,39.7,46,20.5,0,0,4.7,9.2 -2021-03-01T17:00,39.7,56,25.3,0,0,6.9,10.3 -2021-03-01T18:00,33.4,45,14.5,0,0,7.4,11.2 -2021-03-01T19:00,38.9,34,13,0,0,2,8.7 -2021-03-01T20:00,26.8,56,13.3,0,0,4.1,5.4 -2021-03-01T21:00,19.3,76,13,0,0,5.4,6.5 -2021-03-01T22:00,17,79,11.6,0,0,7.2,9.2 -2021-03-01T23:00,16.6,77,10.6,0,0,7.5,9.4 -2021-03-02T00:00,14.8,74,8.2,0,0,7.9,10.1 -2021-03-02T01:00,13.8,72,6.4,0,0,8.4,10.5 -2021-03-02T02:00,14.5,68,5.8,0,0,8.1,10.7 -2021-03-02T03:00,14.5,65,5,0,0,8.4,10.5 -2021-03-02T04:00,16,61,4.9,0,0,8,10.5 -2021-03-02T05:00,17.2,65,7.5,0,0,8.4,10.1 -2021-03-02T06:00,13.6,63,3.3,0,0,9,11.4 -2021-03-02T07:00,14,62,3.4,0,0,8.8,11.6 -2021-03-02T08:00,23.4,57,10.5,0,0,6,11.9 -2021-03-02T09:00,34.3,54,19.1,0,0,3.6,9.6 -2021-03-02T10:00,40.7,51,23.8,0,0,4,8.5 -2021-03-02T11:00,44.6,45,24.8,0,0,4.6,9.2 -2021-03-02T12:00,45.2,47,26.3,0,0,5.5,9.4 -2021-03-02T13:00,56.7,18,14,0,0,4.1,13.6 -2021-03-02T14:00,57.8,18,14.6,0,0,2.3,11.6 -2021-03-02T15:00,58.1,19,15.4,0,0,0.7,9.2 -2021-03-02T16:00,57,19,14.9,0,0,3.5,7.6 -2021-03-02T17:00,49.4,43,27.8,0,0,7.4,7.6 -2021-03-02T18:00,45.3,37,20.8,0,0,6.1,9.2 -2021-03-02T19:00,35.4,55,21,0,0,6.9,7.2 -2021-03-02T20:00,30.7,66,20.6,0,0,3.9,8.7 -2021-03-02T21:00,26.2,79,20.4,0,0,6.7,7.2 -2021-03-02T22:00,29,66,19.1,0,0,2.5,7.8 -2021-03-02T23:00,25.7,73,18.2,0,0,3.8,5.8 -2021-03-03T00:00,23.5,77,17.4,0,0,2.2,6.9 -2021-03-03T01:00,22,80,16.8,0,0,3.1,4 -2021-03-03T02:00,22.6,74,15.4,0,0,4.9,5.8 -2021-03-03T03:00,23.9,62,12.8,0,0,4.4,6.5 -2021-03-03T04:00,23.5,61,12,0,0,4.5,6.3 -2021-03-03T05:00,19.8,73,12.6,0,0,7,6.3 -2021-03-03T06:00,23.1,62,12.1,0,0,3.6,8.1 -2021-03-03T07:00,23.9,60,12,0,0,4.9,6.7 -2021-03-03T08:00,30.1,50,13.8,0,0,4.7,9.8 -2021-03-03T09:00,38.7,41,17.2,0,0,3.6,10.3 -2021-03-03T10:00,46,34,19.3,0,0,3,9.8 -2021-03-03T11:00,51.1,26,17.2,0,0,4.3,11.9 -2021-03-03T12:00,55.1,21,15.4,0,0,4.6,12.5 -2021-03-03T13:00,57.5,16,11.1,0,0,4.3,12.5 -2021-03-03T14:00,58.2,14,9.1,0,0,3.1,12.1 -2021-03-03T15:00,58.7,14,10,0,0,1.8,10.3 -2021-03-03T16:00,58.1,16,12.1,0,0,5.4,9.8 -2021-03-03T17:00,52.4,35,25.3,0,0,5.1,11.9 -2021-03-03T18:00,45.1,43,24.2,0,0,6.6,11 -2021-03-03T19:00,43.2,43,22.1,0,0,5.2,10.5 -2021-03-03T20:00,43,41,20.8,0,0,4.2,5.8 -2021-03-03T21:00,30.7,67,21,0,0,5,8.1 -2021-03-03T22:00,26.6,77,20.4,0,0,4.4,6.9 -2021-03-03T23:00,25.3,78,19.3,0,0,4.2,6.9 -2021-03-04T00:00,24.1,78,18.3,0,0,4.2,6.5 -2021-03-04T01:00,23.8,76,17.3,0,0,3.4,6 -2021-03-04T02:00,22.4,78,16.5,0,0,3.7,5.6 -2021-03-04T03:00,23.7,72,16.1,0,0,2.2,4.9 -2021-03-04T04:00,26.7,69,17.9,0,0,1.1,3.1 -2021-03-04T05:00,27.2,61,15.5,0,0,1.8,3.8 -2021-03-04T06:00,28.5,55,14.3,0,0.055,3,5.1 -2021-03-04T07:00,30.7,48,13.4,0,0,1.5,6 -2021-03-04T08:00,32.9,48,15.3,0,0,2,6.3 -2021-03-04T09:00,36.9,44,16.8,0,0,2.9,7.6 -2021-03-04T10:00,37.6,43,17.1,0,0,5.1,11.9 -2021-03-04T11:00,38.2,43,17.9,0,0,6.7,13 -2021-03-04T12:00,40.9,40,18.6,0,0,11.7,21 -2021-03-04T13:00,42.9,40,20.4,0,0,14,25.3 -2021-03-04T14:00,44.1,46,24.5,0,0,13.3,26.4 -2021-03-04T15:00,42,56,27.6,0.004,0,8.7,24.4 -2021-03-04T16:00,40.3,70,31.1,0.008,0,14.9,22.8 -2021-03-04T17:00,34.8,96,33.7,0.008,0,5.6,28.4 -2021-03-04T18:00,34.3,94,32.9,0.043,0.193,10.2,16.1 -2021-03-04T19:00,34.6,94,33.2,0.031,0.083,9.7,17.4 -2021-03-04T20:00,34.3,97,33.4,0.028,0.055,9.9,16.3 -2021-03-04T21:00,34.2,98,33.5,0.024,0.11,10.4,16.8 -2021-03-04T22:00,34.5,96,33.5,0.024,0.028,9.9,16.8 -2021-03-04T23:00,35.5,92,33.4,0.012,0,8.6,16.3 -2021-03-05T00:00,36.1,89,33.1,0.008,0,9.2,15.2 -2021-03-05T01:00,37,81,31.6,0.004,0,9.9,16.6 -2021-03-05T02:00,33.5,79,27.7,0,0,7.2,15.9 -2021-03-05T03:00,32.1,76,25.4,0,0,7.2,11.4 -2021-03-05T04:00,30,79,24.2,0,0,6.4,11.4 -2021-03-05T05:00,25.7,84,21.6,0,0,5.3,10.1 -2021-03-05T06:00,26.2,83,21.7,0,0,4.4,6.9 -2021-03-05T07:00,28.3,76,21.7,0,0,6.3,9.2 -2021-03-05T08:00,34,68,24.4,0,0,6.4,12.1 -2021-03-05T09:00,40.9,58,27.4,0,0,3.6,11.6 -2021-03-05T10:00,46.9,47,27.9,0,0,3.4,10.5 -2021-03-05T11:00,51.4,32,22.6,0,0,4,11.9 -2021-03-05T12:00,54.1,26,19.9,0,0,4.9,13 -2021-03-05T13:00,55.4,24,18.9,0,0,6,14.8 -2021-03-05T14:00,56.2,21,16.7,0,0,6.2,15 -2021-03-05T15:00,56.5,19,14.7,0,0,5.9,14.5 -2021-03-05T16:00,55.9,19,14.5,0,0,5.6,13.2 -2021-03-05T17:00,50.5,51,33.1,0,0,5.7,11.2 -2021-03-05T18:00,42.7,43,22,0,0,6.7,8.7 -2021-03-05T19:00,38.2,52,22.2,0,0,7.5,10.3 -2021-03-05T20:00,32.4,65,21.9,0,0,6.1,8.9 -2021-03-05T21:00,29.2,71,21.1,0,0,4.9,7.4 -2021-03-05T22:00,26.1,75,19.3,0,0,5.5,8.7 -2021-03-05T23:00,24.8,73,17.4,0,0,5,8.7 -2021-03-06T00:00,25.3,67,16.1,0,0,4.4,8.1 -2021-03-06T01:00,25.1,66,15.3,0,0,4.1,6.9 -2021-03-06T02:00,24.8,65,14.5,0,0,4.5,6.7 -2021-03-06T03:00,24.4,64,13.9,0,0,4.4,6.9 -2021-03-06T04:00,23.9,63,13.2,0,0,4.1,6.9 -2021-03-06T05:00,21.9,67,12.7,0,0,5.5,6.7 -2021-03-06T06:00,23,62,12,0,0,5.4,6.7 -2021-03-06T07:00,26.5,54,12.1,0,0,3.5,7.4 -2021-03-06T08:00,32.6,46,14.4,0,0,3.5,8.5 -2021-03-06T09:00,40.3,41,18.2,0,0,2.8,8.9 -2021-03-06T10:00,48.2,32,19.6,0,0,4.7,11.9 -2021-03-06T11:00,54.9,23,17.8,0,0,6,13.9 -2021-03-06T12:00,59.1,20,18,0,0,7.2,15.7 -2021-03-06T13:00,61.3,17,15.6,0,0,8.1,17 -2021-03-06T14:00,62.2,16,15.4,0,0,8.6,17.4 -2021-03-06T15:00,61.9,17,16.6,0,0,6.5,17 -2021-03-06T16:00,61.3,18,17.2,0,0,4.2,13.4 -2021-03-06T17:00,55.6,46,35.2,0,0,4.9,8.5 -2021-03-06T18:00,46.7,40,23.5,0,0,7.6,9.4 -2021-03-06T19:00,41.3,48,23,0,0,5.7,9.2 -2021-03-06T20:00,37.5,52,21.5,0,0,5,8.5 -2021-03-06T21:00,32.5,68,23,0,0,4.3,7.8 -2021-03-06T22:00,31.9,65,21.7,0,0,4.9,7.8 -2021-03-06T23:00,30.9,60,18.8,0,0,4.9,8.1 -2021-03-07T00:00,28.8,61,17,0,0,5.1,8.1 -2021-03-07T01:00,27.2,61,15.6,0,0,6.7,7.8 -2021-03-07T02:00,26.6,62,15.4,0,0,6.7,8.3 -2021-03-07T03:00,26.6,62,15.4,0,0,5.5,8.1 -2021-03-07T04:00,28.6,59,16.1,0,0,4.8,7.6 -2021-03-07T05:00,28.7,60,16.4,0,0,6.2,7.8 -2021-03-07T06:00,30.5,57,17,0,0,5.5,8.5 -2021-03-07T07:00,32.3,56,18.3,0,0,5.2,8.5 -2021-03-07T08:00,39.1,48,20.8,0,0,4.9,10.3 -2021-03-07T09:00,47.8,40,24.5,0,0,4.3,10.5 -2021-03-07T10:00,55.3,29,23.8,0,0,7.6,15.2 -2021-03-07T11:00,60.9,21,21.1,0,0,9.8,19 -2021-03-07T12:00,64,17,18.6,0,0,9.9,19.7 -2021-03-07T13:00,65,17,18.8,0,0,10.5,20.4 -2021-03-07T14:00,65.2,16,18.4,0,0,10,20.6 -2021-03-07T15:00,64.9,17,18.7,0,0,7.3,19 -2021-03-07T16:00,64.1,19,21,0,0,5.4,14.3 -2021-03-07T17:00,61.2,23,23.2,0,0,7,9.6 -2021-03-07T18:00,54.3,24,18.7,0,0,8,16.3 -2021-03-07T19:00,49.9,32,21.3,0,0,5.8,12.8 -2021-03-07T20:00,40.2,53,24.3,0,0,7.1,8.5 -2021-03-07T21:00,37,60,24.4,0,0,5.7,8.7 -2021-03-07T22:00,35.5,60,23,0,0,4.4,7.4 -2021-03-07T23:00,34.2,61,21.9,0,0,4.5,7.4 -2021-03-08T00:00,32.7,64,21.8,0,0,5.9,7.2 -2021-03-08T01:00,33,62,21.6,0,0,4.5,7.6 -2021-03-08T02:00,35,55,20.5,0,0,2.7,5.4 -2021-03-08T03:00,31,63,20,0,0,3.2,3.4 -2021-03-08T04:00,27.1,74,19.8,0,0,4.4,5.4 -2021-03-08T05:00,26.4,76,19.9,0,0,5.7,6.3 -2021-03-08T06:00,30,67,20.4,0,0,4.9,6.7 -2021-03-08T07:00,32.6,63,21.4,0,0,3,6.3 -2021-03-08T08:00,38.9,52,22.6,0,0,3.2,7.2 -2021-03-08T09:00,43.5,48,25.3,0,0,2.6,7.2 -2021-03-08T10:00,47.5,44,26.5,0,0,4.3,8.9 -2021-03-08T11:00,51.2,37,25.9,0,0,3.3,9.4 -2021-03-08T12:00,52.3,36,26.2,0,0,3.1,8.1 -2021-03-08T13:00,53,37,27.1,0,0,2.1,7.6 -2021-03-08T14:00,60.2,26,25.5,0,0,6.2,13.9 -2021-03-08T15:00,60.4,26,25.3,0,0,8.7,17.4 -2021-03-08T16:00,61.2,25,25.1,0,0,6.4,17.4 -2021-03-08T17:00,59.3,31,28.9,0,0,5.1,12.5 -2021-03-08T18:00,51,40,27.6,0,0,6.2,9.4 -2021-03-08T19:00,46.2,46,26.8,0,0,6,11.4 -2021-03-08T20:00,43,50,25.6,0,0,6.7,10.7 -2021-03-08T21:00,41,51,24.4,0,0,6.7,10.7 -2021-03-08T22:00,40.6,54,25.2,0,0,8.1,13.2 -2021-03-08T23:00,40.3,53,24.6,0,0,7.7,13.2 -2021-03-09T00:00,40.3,51,23.5,0,0,10.1,16.3 -2021-03-09T01:00,38.9,53,23.1,0,0,7.2,16.6 -2021-03-09T02:00,36.1,58,22.9,0,0,6.3,11.9 -2021-03-09T03:00,37.8,52,21.9,0,0,7.1,10.7 -2021-03-09T04:00,38.3,51,21.7,0,0,7.6,13 -2021-03-09T05:00,31.3,70,22.6,0,0,6.6,12.5 -2021-03-09T06:00,29.6,74,22.2,0,0,6,8.3 -2021-03-09T07:00,33.8,63,22.6,0,0,4.5,7.4 -2021-03-09T08:00,41.9,51,24.9,0,0,4.8,9.8 -2021-03-09T09:00,52.1,36,26.2,0,0,2.3,9.8 -2021-03-09T10:00,58.1,30,26.7,0,0,3.3,9.6 -2021-03-09T11:00,61.5,26,26.7,0,0,3.7,11.6 -2021-03-09T12:00,63.5,23,25.5,0,0,3.7,11.6 -2021-03-09T13:00,64.9,21,23.9,0,0,5.6,13.9 -2021-03-09T14:00,65.5,20,23.3,0,0,6.7,15 -2021-03-09T15:00,65,18,20.3,0,0,8.2,16.1 -2021-03-09T16:00,63.1,15,14.3,0,0,9.1,16.6 -2021-03-09T17:00,59,25,22.8,0,0,9.3,15.9 -2021-03-09T18:00,52.1,27,19.3,0,0,6.7,15.7 -2021-03-09T19:00,50.2,34,23.2,0,0,14.5,21.7 -2021-03-09T20:00,48.9,34,22.1,0,0,15.4,28.4 -2021-03-09T21:00,47.4,39,23.6,0,0,12.2,25.7 -2021-03-09T22:00,43.2,51,26.2,0.004,0,9.7,20.1 -2021-03-09T23:00,42,53,26.2,0,0,10.3,18.6 -2021-03-10T00:00,38.8,62,27,0,0,6.3,17 -2021-03-10T01:00,39.9,61,27.5,0,0,7.3,11.6 -2021-03-10T02:00,38.1,69,28.7,0,0,6.6,12.1 -2021-03-10T03:00,36.8,77,30.1,0,0,5.9,11.4 -2021-03-10T04:00,34.9,88,31.6,0.004,0,6.4,10.7 -2021-03-10T05:00,34.3,99,34,0.004,0,2.5,10.7 -2021-03-10T06:00,34.2,99,33.9,0.012,0.083,2.7,8.1 -2021-03-10T07:00,34.3,99,33.9,0.012,0.248,4.1,11.6 -2021-03-10T08:00,35.4,96,34.5,0.008,0.276,3,12.3 -2021-03-10T09:00,35.9,97,35.1,0.008,0.055,3,13.2 -2021-03-10T10:00,38.3,78,32.1,0,0,4.1,11.4 -2021-03-10T11:00,42.8,52,26.3,0,0.028,5.8,14.5 -2021-03-10T12:00,46.8,43,25.3,0,0,4.6,30.9 -2021-03-10T13:00,49.4,42,27.4,0,0,7.1,26.4 -2021-03-10T14:00,51.1,14,3.4,0,0,10.6,21.3 -2021-03-10T15:00,49.8,15,3.3,0,0,13,24.8 -2021-03-10T16:00,48.7,14,2,0,0,12.3,24.2 -2021-03-10T17:00,45.2,17,2.7,0,0,13.1,22.4 -2021-03-10T18:00,39.5,22,4.2,0,0,5.3,22.1 -2021-03-10T19:00,32.8,37,9.3,0,0,6,8.7 -2021-03-10T20:00,29.8,44,10.2,0,0,6.1,7.8 -2021-03-10T21:00,30.5,40,9.1,0,0,2.8,7.4 -2021-03-10T22:00,25.7,59,13.3,0,0,6.7,7.8 -2021-03-10T23:00,25.7,62,14.6,0,0,2.8,8.1 -2021-03-11T00:00,24.3,55,10.4,0,0,4.3,8.3 -2021-03-11T01:00,21.9,57,9.1,0,0,3.6,6.9 -2021-03-11T02:00,22.8,52,8,0,0,2,4.9 -2021-03-11T03:00,22.7,53,8.2,0,0,1.3,2.7 -2021-03-11T04:00,21.6,62,10.7,0,0,3.9,4.3 -2021-03-11T05:00,21.5,83,17.1,0,0,3.9,5.8 -2021-03-11T06:00,20.8,89,18.1,0,0,3.8,6.5 -2021-03-11T07:00,22.5,83,18,0,0,6.2,10.7 -2021-03-11T08:00,27.1,79,21.3,0,0,4.5,11.2 -2021-03-11T09:00,31,70,22.4,0,0,4,11.4 -2021-03-11T10:00,34.8,61,22.7,0,0,4.2,13.2 -2021-03-11T11:00,38.5,53,22.6,0,0,5.7,15 -2021-03-11T12:00,41.4,45,21.4,0,0,9.1,19.9 -2021-03-11T13:00,44.4,38,20.1,0,0,8.9,20.4 -2021-03-11T14:00,46.9,34,19.9,0,0,10.1,21 -2021-03-11T15:00,47.6,33,20.2,0,0,6.7,21.3 -2021-03-11T16:00,48.5,31,19.1,0,0,2.5,15.4 -2021-03-11T17:00,45.3,42,23.5,0,0,4.6,8.7 -2021-03-11T18:00,42.2,51,25.2,0,0,5.2,12.3 -2021-03-11T19:00,39.6,63,28,0,0,8.8,14.5 -2021-03-11T20:00,37.1,65,26.5,0,0,9.2,16.3 -2021-03-11T21:00,36,70,27.1,0.004,0,6.8,15 -2021-03-11T22:00,35.4,76,28.7,0,0.11,7.1,11.6 -2021-03-11T23:00,34.2,81,29,0,0.083,5.4,11.4 -2021-03-12T00:00,33.4,85,29.3,0,0.055,4,8.5 -2021-03-12T01:00,33,85,28.9,0,0.055,4.3,7.4 -2021-03-12T02:00,32.5,86,28.8,0,0.055,4.7,8.3 -2021-03-12T03:00,31.7,88,28.7,0,0,3.8,8.3 -2021-03-12T04:00,30.7,92,28.7,0,0,3.5,6 -2021-03-12T05:00,30.2,96,29.2,0,0,3.1,6.3 -2021-03-12T06:00,32,93,30.2,0,0,5.1,8.7 -2021-03-12T07:00,32.6,90,30.1,0,0,5.2,9.4 -2021-03-12T08:00,33.8,86,30.1,0,0,5.3,11 -2021-03-12T09:00,34.8,82,29.8,0,0,5.4,11.4 -2021-03-12T10:00,36.9,75,29.6,0,0,5.4,12.3 -2021-03-12T11:00,39.7,64,28.3,0,0,4.3,13 -2021-03-12T12:00,41.7,57,27.6,0,0,4.1,12.1 -2021-03-12T13:00,42.3,55,27.3,0,0,4.6,11.6 -2021-03-12T14:00,43,54,27.5,0,0,4.8,11.2 -2021-03-12T15:00,43.4,55,28.1,0,0,3.3,11.2 -2021-03-12T16:00,43.6,55,28.3,0,0,4.1,8.5 -2021-03-12T17:00,38.7,67,28.7,0,0,4.8,15.2 -2021-03-12T18:00,38.7,67,28.7,0,0,4,11 -2021-03-12T19:00,37.8,71,29.2,0,0,3,6.5 -2021-03-12T20:00,38,74,30.4,0,0,6.1,9.8 -2021-03-12T21:00,37.4,78,31,0,0,4.2,9.6 -2021-03-12T22:00,36.7,82,31.7,0.004,0,3.1,6.7 -2021-03-12T23:00,36.1,87,32.5,0.004,0,3.2,5.6 -2021-03-13T00:00,35.6,89,32.8,0,0,3.1,5.1 -2021-03-13T01:00,35.2,91,32.7,0,0,4.3,6.9 -2021-03-13T02:00,34.9,92,32.9,0,0,4.7,8.3 -2021-03-13T03:00,34.8,94,33.4,0,0,5,8.1 -2021-03-13T04:00,34.8,95,33.6,0.004,0,5.2,9.2 -2021-03-13T05:00,33.8,92,31.8,0.008,0,3.8,8.7 -2021-03-13T06:00,34.2,92,32,0,0,5,8.1 -2021-03-13T07:00,34.4,92,32.4,0.004,0,6.7,11 -2021-03-13T08:00,34.1,98,33.5,0.008,0.11,8.5,13.9 -2021-03-13T09:00,34.2,99,33.8,0.008,0.028,9.9,17.7 -2021-03-13T10:00,34.5,96,33.6,0.008,0.055,8.9,16.3 -2021-03-13T11:00,34.3,98,33.9,0.008,0.331,9.3,15.7 -2021-03-13T12:00,34.6,98,34,0.008,0.248,10.9,19.2 -2021-03-13T13:00,35.7,88,32.4,0.008,0.165,12.3,22.4 -2021-03-13T14:00,34.9,90,32.3,0.004,0.248,10.2,21.7 -2021-03-13T15:00,34.5,92,32.5,0.008,0.22,9.6,19 -2021-03-13T16:00,34.1,96,33.1,0.008,0.22,11.3,18.3 -2021-03-13T17:00,31.9,93,30.2,0.004,0.331,8.7,19 -2021-03-13T18:00,30.7,95,29.4,0,0.441,7.8,14.5 -2021-03-13T19:00,30.3,96,29.4,0,0.909,9.9,15 -2021-03-13T20:00,30.1,94,28.7,0,0.413,9.6,19.7 -2021-03-13T21:00,30.5,93,28.8,0,0.028,6.6,15.7 -2021-03-13T22:00,30.5,96,29.4,0,0.138,11.7,18.6 -2021-03-13T23:00,30.5,95,29.3,0,0.083,11.5,19.7 -2021-03-14T00:00,30.7,95,29.4,0,0.083,12.6,20.4 -2021-03-14T01:00,31.5,96,30.5,0,0.303,12.9,21.3 -2021-03-14T02:00,31.6,96,30.7,0,0.248,16.4,26.6 -2021-03-14T03:00,31.9,95,30.7,0,0.358,17.7,28.4 -2021-03-14T04:00,32,95,30.7,0,0.524,19.9,32.2 -2021-03-14T05:00,32,95,30.7,0,0.717,18.8,34.9 -2021-03-14T06:00,31.7,95,30.5,0,0.524,21.5,34.2 -2021-03-14T07:00,31.6,95,30.3,0,0.634,23.3,36.9 -2021-03-14T08:00,31.4,95,30.1,0,0.551,25.9,40.9 -2021-03-14T09:00,31.3,94,29.8,0,0.579,25.4,41.8 -2021-03-14T10:00,31,94,29.6,0,0.524,25.2,40.7 -2021-03-14T11:00,30.7,94,29.1,0,0.551,25.2,40.7 -2021-03-14T12:00,30.7,92,28.6,0,0.469,25,40.7 -2021-03-14T13:00,30.6,90,27.9,0,0.496,24.5,39.6 -2021-03-14T14:00,29.9,89,27.1,0,0.579,27.4,42.7 -2021-03-14T15:00,29.8,87,26.5,0,0.551,27.8,42.5 -2021-03-14T16:00,29.6,86,26,0,0.524,26.3,42.5 -2021-03-14T17:00,28.4,82,23.7,0,0.276,26.7,39.8 -2021-03-14T18:00,27.8,82,23,0,0.276,26.4,39.4 -2021-03-14T19:00,27.7,81,22.7,0,0.138,24.1,38.9 -2021-03-14T20:00,27.8,80,22.6,0,0.055,19.2,35.1 -2021-03-14T21:00,27.5,81,22.5,0,0.028,14.8,28 -2021-03-14T22:00,27,83,22.6,0,0.028,11.3,21.5 -2021-03-14T23:00,27,82,22.3,0,0.028,10.5,16.6 -2021-03-15T00:00,26.8,81,21.7,0,0,8,15.2 -2021-03-15T01:00,23.9,82,19.3,0,0,6,11.6 -2021-03-15T02:00,22.2,80,17,0,0,3.8,8.1 -2021-03-15T03:00,16.8,83,12.7,0,0,6.7,8.3 -2021-03-15T04:00,15.4,82,10.9,0,0,6,8.3 -2021-03-15T05:00,16.5,78,10.9,0,0,3.8,8.5 -2021-03-15T06:00,13.3,80,8.3,0,0,6.2,7.6 -2021-03-15T07:00,13.6,80,8.7,0,0,4.7,7.6 -2021-03-15T08:00,18.9,76,12.6,0,0,5.6,7.4 -2021-03-15T09:00,23.1,74,16,0,0,6.9,9.8 -2021-03-15T10:00,27.4,75,20.4,0,0,6.4,9.8 -2021-03-15T11:00,31.8,67,22.2,0,0,2.2,9.2 -2021-03-15T12:00,33.5,67,23.9,0,0,4.3,6 -2021-03-15T13:00,34.1,71,25.5,0,0,6.2,8.9 -2021-03-15T14:00,34,69,25,0,0,10.3,13.9 -2021-03-15T15:00,32.3,78,26.3,0,0,9.2,14.8 -2021-03-15T16:00,31.6,83,27,0,0,4.7,13.2 -2021-03-15T17:00,29.2,84,25,0,0,4,6.5 -2021-03-15T18:00,28,83,23.5,0,0,9,11.2 -2021-03-15T19:00,30.1,77,23.9,0,0,10.8,14.5 -2021-03-15T20:00,29.4,80,24,0,0,10.8,15.2 -2021-03-15T21:00,25.9,86,22.2,0,0,8.7,14.5 -2021-03-15T22:00,26.5,81,21.6,0,0,3.2,11.6 -2021-03-15T23:00,23.2,83,18.9,0,0,4.3,5.1 -2021-03-16T00:00,26.6,79,20.8,0,0,2,5.4 -2021-03-16T01:00,19.8,91,17.5,0,0,7.8,8.3 -2021-03-16T02:00,17.2,96,16.2,0,0,6,11.9 -2021-03-16T03:00,19.9,95,18.6,0,0,1.4,7.6 -2021-03-16T04:00,18.6,95,17.3,0,0,3.4,4 -2021-03-16T05:00,18.2,95,17.2,0,0,3,4 -2021-03-16T06:00,16.4,94,15.1,0,0,3.6,4.3 -2021-03-16T07:00,18.1,94,16.7,0,0,2.4,4.3 -2021-03-16T08:00,20,96,19,0,0,1.8,4 -2021-03-16T09:00,21.9,97,21.1,0,0,1.7,5.1 -2021-03-16T10:00,24.4,95,23.1,0,0,0.9,5.4 -2021-03-16T11:00,26.7,93,25,0,0,3.5,7.2 -2021-03-16T12:00,28.8,89,25.9,0,0,4.3,8.1 -2021-03-16T13:00,29.6,89,26.7,0,0,3.5,8.3 -2021-03-16T14:00,29.8,90,27.2,0,0.055,3,6.9 -2021-03-16T15:00,30,91,27.7,0,0.055,4.4,6.9 -2021-03-16T16:00,30,89,27.2,0,0.028,4,7.6 -2021-03-16T17:00,30.6,91,28.3,0,0.028,5.6,6.9 -2021-03-16T18:00,29.6,93,27.9,0,0.028,4.7,8.5 -2021-03-16T19:00,28.6,94,27.1,0,0.028,3.6,6.5 -2021-03-16T20:00,28.9,95,27.5,0,0.028,3.9,5.4 -2021-03-16T21:00,28.7,95,27.4,0,0.028,4,5.6 -2021-03-16T22:00,28.4,95,27.1,0,0.028,4.6,6.5 -2021-03-16T23:00,28.7,95,27.4,0,0.028,3.3,6.7 -2021-03-17T00:00,28.6,96,27.6,0,0.028,1.3,4.9 -2021-03-17T01:00,28.4,97,27.6,0,0.055,2.7,3.8 -2021-03-17T02:00,28.3,96,27.3,0,0.055,3.9,5.4 -2021-03-17T03:00,28.5,94,27,0,0.028,3,5.6 -2021-03-17T04:00,28.6,95,27.2,0,0,1.4,4.3 -2021-03-17T05:00,29.4,93,27.6,0,0,2.2,3.8 -2021-03-17T06:00,29.6,94,28,0,0.028,4.1,5.6 -2021-03-17T07:00,28.9,96,28,0,0.11,4,6.7 -2021-03-17T08:00,28.9,96,27.9,0,0.028,3.2,6.3 -2021-03-17T09:00,29.3,94,27.9,0,0.028,4.4,7.8 -2021-03-17T10:00,29.5,93,27.6,0,0.028,2.4,8.1 -2021-03-17T11:00,30.1,89,27.3,0,0,1.1,5.6 -2021-03-17T12:00,31.1,85,27.2,0,0,2.3,4.9 -2021-03-17T13:00,32.2,81,26.9,0,0,5.1,8.7 -2021-03-17T14:00,33.1,75,26,0,0,5.3,9.2 -2021-03-17T15:00,34.3,70,25.5,0,0,4.7,8.7 -2021-03-17T16:00,34,72,26,0,0,4,6.9 -2021-03-17T17:00,32.3,73,24.7,0,0,5.7,5.1 -2021-03-17T18:00,27.9,70,19.5,0,0,4.3,7.4 -2021-03-17T19:00,27,70,18.5,0,0,4.3,4.9 -2021-03-17T20:00,24.2,75,17.5,0,0,4.6,5.8 -2021-03-17T21:00,21.1,82,16.4,0,0,6.2,7.4 -2021-03-17T22:00,19.5,84,15.4,0,0,6.7,8.5 -2021-03-17T23:00,17.2,83,13,0,0,5.7,8.5 -2021-03-18T00:00,16.2,83,11.8,0,0,5.3,7.2 -2021-03-18T01:00,13.7,84,9.8,0,0,5.3,6.7 -2021-03-18T02:00,11.5,84,7.6,0,0,5.4,6.9 -2021-03-18T03:00,9.4,84,5.5,0,0,5.6,7.2 -2021-03-18T04:00,7.9,83,3.8,0,0,6.2,7.6 -2021-03-18T05:00,7.4,82,3.1,0,0,5.3,7.6 -2021-03-18T06:00,6.4,82,1.9,0,0,5.5,6.7 -2021-03-18T07:00,9.4,79,4.2,0,0,5.9,7.4 -2021-03-18T08:00,16.4,74,9.5,0,0,4.8,7.4 -2021-03-18T09:00,23.8,68,14.9,0,0,4.4,7.4 -2021-03-18T10:00,28.8,72,20.9,0,0,5.2,8.7 -2021-03-18T11:00,33.5,72,25.4,0,0,4,7.2 -2021-03-18T12:00,37.2,65,26.7,0,0,5.6,7.6 -2021-03-18T13:00,36.5,75,29.4,0,0,10,14.5 -2021-03-18T14:00,33.8,81,28.5,0,0,10.2,17.2 -2021-03-18T15:00,33.5,85,29.5,0,0,8.2,16.1 -2021-03-18T16:00,32,88,28.9,0,0,9.3,14.1 -2021-03-18T17:00,32.1,82,27.1,0,0,5.9,14.1 -2021-03-18T18:00,26.2,84,21.9,0,0,7.2,8.9 -2021-03-18T19:00,31.1,72,23.2,0,0,4.5,9.4 -2021-03-18T20:00,30.6,75,23.5,0,0,1.7,5.1 -2021-03-18T21:00,29.8,77,23.5,0,0,2.9,3.6 -2021-03-18T22:00,26.1,79,20.6,0,0,3.1,4 -2021-03-18T23:00,21.6,87,18.2,0,0,3.1,4.3 -2021-03-19T00:00,19,92,17,0,0,2.8,4 -2021-03-19T01:00,17.9,94,16.3,0,0,3.4,4 -2021-03-19T02:00,14.5,92,12.7,0,0,5.4,6.3 -2021-03-19T03:00,15.3,88,12.4,0,0,3.7,6.5 -2021-03-19T04:00,17.7,81,12.8,0,0,2.2,4.5 -2021-03-19T05:00,18.6,81,13.8,0,0,2,3.4 -2021-03-19T06:00,15.5,83,11.2,0,0,3.1,3.6 -2021-03-19T07:00,14.7,83,10.4,0,0,4.9,5.6 -2021-03-19T08:00,22.7,73,15.5,0,0,3.4,5.8 -2021-03-19T09:00,28.7,76,22.2,0,0,4.3,7.6 -2021-03-19T10:00,35.3,71,26.9,0,0,4,9.6 -2021-03-19T11:00,40.5,71,31.6,0,0,4.9,6.3 -2021-03-19T12:00,43.4,67,33.4,0,0,6.6,7.8 -2021-03-19T13:00,45,64,33.4,0,0,6.6,8.3 -2021-03-19T14:00,45.2,60,32.4,0,0,6.6,8.7 -2021-03-19T15:00,42.8,65,31.7,0,0,7.3,8.9 -2021-03-19T16:00,40.6,69,31,0,0,4.4,9.2 -2021-03-19T17:00,38.8,73,30.8,0,0,5.9,9.6 -2021-03-19T18:00,33.8,80,28.4,0,0,5.8,8.7 -2021-03-19T19:00,37.8,69,28.4,0,0,3.9,9.4 -2021-03-19T20:00,33.5,73,25.7,0,0,3.6,4.5 -2021-03-19T21:00,29.6,81,24.4,0,0,3.9,5.1 -2021-03-19T22:00,27.4,84,23.2,0,0,4.5,6 -2021-03-19T23:00,27.1,84,23.1,0,0,2.2,5.4 -2021-03-20T00:00,24.5,88,21.4,0,0,2.9,3.4 -2021-03-20T01:00,25.9,83,21.3,0,0,3.8,4.7 -2021-03-20T02:00,27.3,77,21,0,0,4.1,4.9 -2021-03-20T03:00,25.3,78,19.4,0,0,5.4,6.3 -2021-03-20T04:00,22.2,79,16.8,0,0,6.6,7.8 -2021-03-20T05:00,24.7,79,19,0,0,6.2,9.4 -2021-03-20T06:00,22,82,17.3,0,0,8.7,10.3 -2021-03-20T07:00,25.1,80,19.7,0,0,9,10.7 -2021-03-20T08:00,34.9,74,27.6,0,0,5.4,10.7 -2021-03-20T09:00,38.1,71,29.5,0,0,7.6,10.3 -2021-03-20T10:00,44.8,59,31.5,0,0,6.3,9.6 -2021-03-20T11:00,48.5,53,32,0,0,8.7,13.6 -2021-03-20T12:00,50.3,50,32.5,0,0,9.5,15.2 -2021-03-20T13:00,50.2,53,33.6,0,0,7.7,15.2 -2021-03-20T14:00,52,43,30.4,0,0,8.3,12.8 -2021-03-20T15:00,53.2,37,27.7,0,0,2.6,10.3 -2021-03-20T16:00,42.3,70,33.2,0,0,4.1,4.9 -2021-03-20T17:00,40.5,67,30.4,0,0,5.1,7.6 -2021-03-20T18:00,46.1,41,24,0,0,2.3,7.8 -2021-03-20T19:00,35.5,68,25.9,0,0,7,11.4 -2021-03-20T20:00,31.9,77,25.5,0,0,6.4,10.5 -2021-03-20T21:00,30.3,78,24.4,0,0,6.1,10.3 -2021-03-20T22:00,28.7,76,22.1,0,0,7.4,9.8 -2021-03-20T23:00,27.6,70,19,0,0,8.2,11.6 -2021-03-21T00:00,27.1,69,18.4,0,0,6.9,10.3 -2021-03-21T01:00,31,64,20.1,0,0,4.5,8.7 -2021-03-21T02:00,24.4,75,17.6,0,0,3.5,5.8 -2021-03-21T03:00,24.3,77,18.2,0,0,3.8,6.5 -2021-03-21T04:00,21,84,16.9,0,0,5.5,8.9 -2021-03-21T05:00,23.5,77,17.3,0,0,7.6,10.1 -2021-03-21T06:00,22.1,80,17,0,0,9.1,10.5 -2021-03-21T07:00,30.7,75,23.7,0,0,4.1,11.4 -2021-03-21T08:00,33,80,27.5,0,0,4.1,7.4 -2021-03-21T09:00,35.9,75,28.6,0,0,3.4,7.2 -2021-03-21T10:00,38.4,71,29.7,0,0,5,8.1 -2021-03-21T11:00,39.4,67,29.2,0,0,6.7,11.9 -2021-03-21T12:00,39.4,64,28.3,0,0,4.9,11.9 -2021-03-21T13:00,38.6,70,29.7,0,0,5.6,10.1 -2021-03-21T14:00,36.9,76,29.9,0,0,7.3,13.4 -2021-03-21T15:00,35.4,83,30.7,0.004,0,6.2,13.2 -2021-03-21T16:00,34.9,87,31.4,0.004,0,5.9,11.2 -2021-03-21T17:00,33.3,92,31.1,0,0.028,6.3,11.4 -2021-03-21T18:00,31.8,94,30.3,0,0.083,4.8,10.3 -2021-03-21T19:00,31.2,96,30.2,0,0.22,4.9,9.6 -2021-03-21T20:00,30.6,97,29.8,0,0.22,4.5,8.1 -2021-03-21T21:00,30.7,96,29.8,0,0.331,3.8,7.6 -2021-03-21T22:00,30.4,96,29.4,0,0.413,3.8,6.7 -2021-03-21T23:00,29.8,96,28.7,0,0.22,3.8,7.2 -2021-03-22T00:00,29.6,95,28.2,0,0.165,3,6.3 -2021-03-22T01:00,28.9,95,27.8,0,0.193,3.1,4.7 -2021-03-22T02:00,29.6,94,28.1,0,0.193,2.2,4 -2021-03-22T03:00,29.2,96,28.1,0,0.138,1.1,4 -2021-03-22T04:00,28.6,97,27.9,0,0.083,2.4,2.9 -2021-03-22T05:00,29.9,98,29.5,0.004,0.028,1.8,4.5 -2021-03-22T06:00,28.5,98,28,0,0.055,3,4.5 -2021-03-22T07:00,29.3,97,28.5,0,0.055,3.5,6.9 -2021-03-22T08:00,30.5,94,28.9,0,0.11,0.6,5.4 -2021-03-22T09:00,30.9,94,29.4,0,0.083,4.6,7.2 -2021-03-22T10:00,31.9,89,29.1,0,0.055,4.8,9.2 -2021-03-22T11:00,33.1,85,29,0,0.028,3.3,8.7 -2021-03-22T12:00,33.7,83,29.1,0,0,2.9,6.7 -2021-03-22T13:00,34,84,29.7,0,0,4.3,8.3 -2021-03-22T14:00,34.3,85,30.3,0,0,4.5,8.1 -2021-03-22T15:00,34.3,85,30.3,0,0,4.9,9.2 -2021-03-22T16:00,34,82,29.1,0,0,5.4,9.8 -2021-03-22T17:00,33.9,82,29,0,0,2.4,9.6 -2021-03-22T18:00,31.6,80,26.2,0,0,3.6,4.5 -2021-03-22T19:00,26.2,87,22.9,0,0,6.5,8.1 -2021-03-22T20:00,25.1,89,22.2,0,0,6.6,8.3 -2021-03-22T21:00,24.9,89,22.2,0,0,6.1,8.1 -2021-03-22T22:00,26.6,88,23.5,0,0,5.6,7.4 -2021-03-22T23:00,27.8,86,24.2,0,0,4.8,7.2 -2021-03-23T00:00,28.9,82,24.1,0,0,1.1,5.8 -2021-03-23T01:00,24.8,88,21.7,0,0,3.6,4 -2021-03-23T02:00,17.2,94,15.7,0,0,5.6,7.4 -2021-03-23T03:00,20.2,84,16.1,0,0,4.1,7.4 -2021-03-23T04:00,19.7,74,12.8,0,0,4.5,5.4 -2021-03-23T05:00,23.6,64,13.3,0,0,3.8,6.7 -2021-03-23T06:00,19.9,73,12.5,0,0,3.2,4.5 -2021-03-23T07:00,20.8,80,15.5,0,0,4,7.2 -2021-03-23T08:00,26.9,75,20,0,0,0.8,6.3 -2021-03-23T09:00,31.2,65,20.9,0,0,1.3,4.5 -2021-03-23T10:00,33.7,61,21.6,0,0,0.4,3.8 -2021-03-23T11:00,35.2,66,25.1,0,0,5.5,9.6 -2021-03-23T12:00,35.8,69,26.5,0,0,7.3,13.6 -2021-03-23T13:00,37,66,26.8,0,0,10.4,17.7 -2021-03-23T14:00,37.4,64,26.2,0,0,12.5,22.1 -2021-03-23T15:00,37,65,26.4,0,0,11,22.1 -2021-03-23T16:00,36.3,71,28,0,0.028,10,19.9 -2021-03-23T17:00,35.2,80,29.7,0,0.028,9.1,17.7 -2021-03-23T18:00,32.6,83,28,0,0.028,8.7,15.4 -2021-03-23T19:00,31.4,86,27.6,0,0.055,8.7,16.3 -2021-03-23T20:00,31.4,87,27.9,0,0.055,7.3,17.2 -2021-03-23T21:00,31.4,82,26.5,0,0.055,9.7,15.9 -2021-03-23T22:00,30.6,85,26.6,0,0.028,9.7,17.2 -2021-03-23T23:00,30.2,88,27.1,0,0.138,9.6,16.3 -2021-03-24T00:00,30.1,89,27.3,0,0.193,11.6,18.8 -2021-03-24T01:00,29.8,89,27.1,0,0.22,12,19.7 -2021-03-24T02:00,29.2,90,26.6,0,0.193,11.3,20.4 -2021-03-24T03:00,28.8,90,26.2,0,0.22,9.3,18.6 -2021-03-24T04:00,28.4,90,25.8,0,0.193,9.3,15.4 -2021-03-24T05:00,28.2,87,25,0,0.138,6.2,15.4 -2021-03-24T06:00,27.9,89,25,0,0.028,5,10.3 -2021-03-24T07:00,28.2,90,25.7,0,0.083,4.1,8.3 -2021-03-24T08:00,28.7,89,25.9,0,0.055,4.6,7.8 -2021-03-24T09:00,29,86,25.3,0,0.055,4.7,8.9 -2021-03-24T10:00,29.2,86,25.5,0,0.028,3.6,8.9 -2021-03-24T11:00,29.8,84,25.4,0,0,1.4,7.8 -2021-03-24T12:00,30.7,81,25.5,0,0,1.5,5.1 -2021-03-24T13:00,31.8,76,25.2,0,0,3.9,7.8 -2021-03-24T14:00,32.4,72,24.4,0,0,3.6,8.1 -2021-03-24T15:00,33.3,70,24.4,0,0,4.7,8.9 -2021-03-24T16:00,33.4,75,26.3,0,0,1.6,8.1 -2021-03-24T17:00,33.8,82,28.8,0,0,8.6,5.6 -2021-03-24T18:00,30.9,86,27.2,0,0,4.6,14.3 -2021-03-24T19:00,24.9,88,21.7,0,0,5.1,8.5 -2021-03-24T20:00,26.8,85,22.8,0,0,2.1,6.5 -2021-03-24T21:00,21.6,92,19.5,0,0,4.3,5.1 -2021-03-24T22:00,16.5,96,15.6,0,0,6,7.2 -2021-03-24T23:00,14,92,12.2,0,0,8.1,10.5 -2021-03-25T00:00,13,86,9.7,0,0,7.5,10.7 -2021-03-25T01:00,11.3,86,8,0,0,7.1,10.5 -2021-03-25T02:00,12.1,84,8.2,0,0,6.5,8.9 -2021-03-25T03:00,17.3,77,11.4,0,0,4.5,8.3 -2021-03-25T04:00,17.7,75,11.1,0,0,3.5,5.8 -2021-03-25T05:00,18.5,71,10.7,0,0,2.6,5.8 -2021-03-25T06:00,11.6,79,6.4,0,0,5.7,7.2 -2021-03-25T07:00,14.1,80,9.1,0,0,5.5,9.4 -2021-03-25T08:00,23.6,76,17.1,0,0,4.3,8.1 -2021-03-25T09:00,32.3,67,22.6,0,0,4.6,8.3 -2021-03-25T10:00,37,62,25.3,0,0,5.1,9.2 -2021-03-25T11:00,40.7,56,26.2,0,0,5.4,10.5 -2021-03-25T12:00,42,52,25.4,0,0,5.2,10.7 -2021-03-25T13:00,42.2,52,25.8,0,0,4.1,10.5 -2021-03-25T14:00,42.5,52,26.3,0,0,3.9,8.1 -2021-03-25T15:00,41.7,54,26.2,0,0,4.7,8.5 -2021-03-25T16:00,42.6,46,23.4,0,0,4.8,8.5 -2021-03-25T17:00,43.9,63,32.3,0,0,5.6,7.4 -2021-03-25T18:00,45.3,37,20.3,0,0,1.4,6.9 -2021-03-25T19:00,36.2,68,26.6,0,0,7.6,12.1 -2021-03-25T20:00,34.9,76,28.2,0,0,5.5,14.3 -2021-03-25T21:00,31.6,84,27.2,0,0,5.9,9.4 -2021-03-25T22:00,31,86,27.3,0.004,0,5.4,7.4 -2021-03-25T23:00,29.9,87,26.5,0,0.028,4.2,7.2 -2021-03-26T00:00,33,82,28.1,0.004,0,2.4,5.6 -2021-03-26T01:00,31.1,85,27.1,0,0,1,3.1 -2021-03-26T02:00,27.7,87,24.3,0,0,2.8,4.5 -2021-03-26T03:00,26,87,22.6,0,0,3.6,4.9 -2021-03-26T04:00,24.7,88,21.7,0,0,4.3,6.5 -2021-03-26T05:00,26.5,90,24.1,0,0,3.3,6.3 -2021-03-26T06:00,25.2,88,22.1,0,0.028,4.2,7.6 -2021-03-26T07:00,28.7,88,25.6,0,0.11,4.7,8.5 -2021-03-26T08:00,33.1,89,30.2,0,0.083,2.9,8.7 -2021-03-26T09:00,35.9,82,31,0,0,2.5,7.6 -2021-03-26T10:00,37.6,78,31.2,0,0,2.1,4.9 -2021-03-26T11:00,41.8,60,29.1,0,0,3.4,12.1 -2021-03-26T12:00,43.3,58,29.4,0,0,3.8,12.8 -2021-03-26T13:00,43.8,56,29.3,0,0,6.2,14.8 -2021-03-26T14:00,43.4,59,29.9,0,0,6.8,15.7 -2021-03-26T15:00,43.3,58,29.3,0,0,5.8,15.9 -2021-03-26T16:00,42.4,59,29.1,0.004,0,6.1,13.4 -2021-03-26T17:00,41,73,33.1,0,0,12.1,17 -2021-03-26T18:00,36.7,91,34.3,0.024,0.055,9.6,20.6 -2021-03-26T19:00,34.4,95,33.2,0.012,0.11,2.9,15.4 -2021-03-26T20:00,34.3,93,32.5,0,0,3,5.4 -2021-03-26T21:00,32.5,94,30.8,0,0,2.8,5.4 -2021-03-26T22:00,31.4,93,29.5,0,0,2.2,4.5 -2021-03-26T23:00,29.8,94,28.2,0,0,2.1,4.3 -2021-03-27T00:00,27.3,95,26,0,0,2.8,5.1 -2021-03-27T01:00,25.2,95,23.8,0,0,3.2,5.6 -2021-03-27T02:00,24.5,94,23.1,0,0,4,7.2 -2021-03-27T03:00,24.3,93,22.5,0,0,4,7.4 -2021-03-27T04:00,22.7,92,20.8,0,0,5.2,8.5 -2021-03-27T05:00,25.1,84,20.8,0,0,5.9,10.7 -2021-03-27T06:00,28.2,73,20.6,0,0,7.2,11.4 -2021-03-27T07:00,33.9,61,21.8,0,0,9.7,14.5 -2021-03-27T08:00,38.7,52,22.5,0,0,6.7,14.8 -2021-03-27T09:00,42.4,41,20.2,0,0,4.5,12.5 -2021-03-27T10:00,43.9,40,21.3,0,0,7.9,16.8 -2021-03-27T11:00,44.1,41,21.9,0,0,8.9,18.6 -2021-03-27T12:00,45.6,39,22.3,0,0,5.6,19 -2021-03-27T13:00,46,39,22.3,0,0,2.5,15 -2021-03-27T14:00,47.1,36,21.5,0,0,2.7,11.4 -2021-03-27T15:00,48.2,34,21,0,0,4.1,12.3 -2021-03-27T16:00,47.9,35,21.5,0,0,3.5,12.1 -2021-03-27T17:00,48,37,23.3,0,0,6,10.1 -2021-03-27T18:00,43,58,29.4,0,0,5.4,11.6 -2021-03-27T19:00,37.2,61,25.1,0,0,3.3,6.3 -2021-03-27T20:00,31.5,79,25.6,0,0,4.8,8.7 -2021-03-27T21:00,28.1,88,25.2,0,0,3.8,8.1 -2021-03-27T22:00,28,83,23.5,0,0,3.6,6.3 -2021-03-27T23:00,28.4,78,22.3,0,0,4.5,7.2 -2021-03-28T00:00,28.3,73,20.7,0,0,5.2,8.3 -2021-03-28T01:00,27.2,71,19,0,0,6.7,11 -2021-03-28T02:00,27.1,66,17.4,0,0,6.1,11.2 -2021-03-28T03:00,27.2,64,16.8,0,0,5.2,9.8 -2021-03-28T04:00,27.2,64,16.5,0,0,4.5,8.5 -2021-03-28T05:00,25.3,68,16.1,0,0,7.9,7.2 -2021-03-28T06:00,26.7,64,16,0,0,5.5,13 -2021-03-28T07:00,31.1,59,18.4,0,0,11.5,17.7 -2021-03-28T08:00,38.6,50,21.7,0,0,11,19.9 -2021-03-28T09:00,46.2,41,23.7,0,0,9.2,19 -2021-03-28T10:00,51.4,32,22.8,0,0,6.5,17.7 -2021-03-28T11:00,54.2,30,23.2,0,0,5.1,14.5 -2021-03-28T12:00,57.1,26,22.7,0,0,6.5,15.4 -2021-03-28T13:00,59.3,24,22.8,0,0,5.9,15.4 -2021-03-28T14:00,60.9,23,23.2,0,0,6.9,15.4 -2021-03-28T15:00,61.1,23,22.8,0,0,7.5,15.4 -2021-03-28T16:00,61,24,24.2,0,0,6.8,15.4 -2021-03-28T17:00,59.5,35,31.8,0,0,3.8,13 -2021-03-28T18:00,52.3,42,29.7,0,0,5.7,6.9 -2021-03-28T19:00,43.4,59,30.1,0,0,4.9,8.9 -2021-03-28T20:00,37.9,77,31.3,0,0,4,7.8 -2021-03-28T21:00,33.5,88,30.3,0,0,2.6,6.3 -2021-03-28T22:00,32.3,88,29.1,0,0,4,6.3 -2021-03-28T23:00,31.5,84,27.1,0,0,4.3,6.9 -2021-03-29T00:00,31.2,77,24.9,0,0,4.8,7.6 -2021-03-29T01:00,30.6,73,22.8,0,0,4.6,7.6 -2021-03-29T02:00,30.7,67,20.9,0,0,5.7,8.3 -2021-03-29T03:00,33,55,18.7,0,0,7.1,10.7 -2021-03-29T04:00,33.3,52,17.7,0,0,6.5,11.6 -2021-03-29T05:00,28.4,67,18.8,0,0,4.4,10.1 -2021-03-29T06:00,26.8,74,19.6,0,0,4.8,6.7 -2021-03-29T07:00,33.8,64,23.1,0,0,5.4,9.2 -2021-03-29T08:00,45.7,49,27.8,0,0,3.9,9.2 -2021-03-29T09:00,54.2,33,25.5,0,0,8.2,14.8 -2021-03-29T10:00,60.1,23,21.9,0,0,13.4,23.9 -2021-03-29T11:00,63.2,21,22.1,0,0,11.7,24.6 -2021-03-29T12:00,66.7,19,23.5,0,0,5.2,22.6 -2021-03-29T13:00,70,13,17.4,0,0,9.9,18.1 -2021-03-29T14:00,70.1,12,14.8,0,0,13.6,24.8 -2021-03-29T15:00,69,12,14.8,0,0,12.9,25.7 -2021-03-29T16:00,66.9,16,19.1,0,0,11,23.3 -2021-03-29T17:00,64.6,53,46.9,0,0,1.6,19.2 -2021-03-29T18:00,55,39,30.4,0,0,5.7,6.7 -2021-03-29T19:00,47.8,41,25.5,0,0,8.6,7.6 -2021-03-29T20:00,42.7,47,23.7,0,0,12.1,34.7 -2021-03-29T21:00,39.3,45,19.6,0,0,10.3,20.1 -2021-03-29T22:00,35.7,46,16.9,0,0,11.1,18.6 -2021-03-29T23:00,33.4,48,15.8,0.004,0,9.1,18.1 -2021-03-30T00:00,31.5,57,17.8,0,0.083,8.6,19.9 -2021-03-30T01:00,29.3,66,19.3,0,0.22,6.9,15.2 -2021-03-30T02:00,28.2,68,19,0,0.248,6,12.5 -2021-03-30T03:00,27.4,67,17.9,0,0.22,5.9,11 -2021-03-30T04:00,26.6,69,18,0,0.193,6.4,12.1 -2021-03-30T05:00,26.7,65,16.6,0,0.193,4.9,11.6 -2021-03-30T06:00,26.8,67,17.4,0,0.138,6.7,11.9 -2021-03-30T07:00,27.5,70,19,0,0.11,7.1,13 -2021-03-30T08:00,28.6,68,19.2,0,0.083,7.4,14.3 -2021-03-30T09:00,30.8,63,19.7,0,0.028,7.4,16.1 -2021-03-30T10:00,33.6,54,18.6,0,0.028,11.5,21.7 -2021-03-30T11:00,35.9,47,17.4,0,0,12.5,25.1 -2021-03-30T12:00,37.2,46,18.5,0,0,9.1,24.6 -2021-03-30T13:00,37.9,47,19.6,0,0,7.9,19.9 -2021-03-30T14:00,38.4,48,20.2,0,0.028,6.8,18.3 -2021-03-30T15:00,38.8,46,19.6,0,0.028,4.8,16.3 -2021-03-30T16:00,38.9,45,19.3,0,0.028,3,13 -2021-03-30T17:00,37.4,48,19.5,0,0,5.9,9.8 -2021-03-30T18:00,35.3,65,24.9,0,0,5.2,12.1 -2021-03-30T19:00,31.8,76,25.2,0,0,6.2,9.2 -2021-03-30T20:00,29.1,79,23.5,0,0,3.4,10.1 -2021-03-30T21:00,26.6,80,21.3,0,0,2.9,5.6 -2021-03-30T22:00,23,75,16.3,0,0,3.4,6.3 -2021-03-30T23:00,21.1,66,11.7,0,0,5.9,8.9 -2021-03-31T00:00,20.8,56,7.6,0,0,5.3,10.3 -2021-03-31T01:00,19.6,59,7.5,0,0,3.8,8.7 -2021-03-31T02:00,17.7,63,7.3,0,0,6.8,10.1 -2021-03-31T03:00,15.5,66,6.4,0,0,7.3,11.9 -2021-03-31T04:00,15.6,64,5.5,0,0,7.6,12.1 -2021-03-31T05:00,13.5,75,7,0,0,4.8,12.3 -2021-03-31T06:00,14.9,69,6.4,0,0,5.6,8.7 -2021-03-31T07:00,19.6,58,7.1,0,0,5.1,10.7 -2021-03-31T08:00,26.7,48,9.7,0,0,5.9,13.2 -2021-03-31T09:00,34.3,36,10.4,0,0,6.6,15.4 -2021-03-31T10:00,38.8,31,10.7,0,0,6.6,15.9 -2021-03-31T11:00,42.3,27,11,0,0,6.4,17 -2021-03-31T12:00,44.5,26,11.4,0,0,4,16.1 -2021-03-31T13:00,46.3,25,12.4,0,0,0.9,13.2 -2021-03-31T14:00,47.9,24,12.9,0,0,3.8,12.3 -2021-03-31T15:00,48.6,24,13,0,0,5,13.4 -2021-03-31T16:00,48.6,23,12.7,0,0,4.1,13.2 -2021-03-31T17:00,48.9,26,15.4,0,0,5.7,11 -2021-03-31T18:00,42.6,42,21,0,0,5.3,10.5 -2021-03-31T19:00,37.5,43,17.1,0,0,7.1,8.9 -2021-03-31T20:00,35.2,45,16.2,0,0,5.7,9.6 -2021-03-31T21:00,31,56,17.3,0,0,2.8,6.9 -2021-03-31T22:00,27.2,71,19.2,0,0,1.6,5.4 -2021-03-31T23:00,25.5,76,19,0,0,2.5,3.6 -2021-04-01T00:00,23.1,81,18.1,0,0,3.6,5.6 -2021-04-01T01:00,21.8,80,16.7,0,0,2.6,5.8 -2021-04-01T02:00,21.2,79,15.7,0,0,1.5,4 -2021-04-01T03:00,20.5,80,15.2,0,0,1.7,2.9 -2021-04-01T04:00,20,80,14.8,0,0,2.2,3.1 -2021-04-01T05:00,19,78,13.4,0,0,4,3.4 -2021-04-01T06:00,21,70,12.8,0,0,2.7,4.7 -2021-04-01T07:00,26.2,59,13.9,0,0,3.5,8.3 -2021-04-01T08:00,34.3,48,16.8,0,0,2.8,9.2 -2021-04-01T09:00,42.5,38,18.5,0,0,3.7,11.2 -2021-04-01T10:00,50.3,30,19.8,0,0,4.8,12.8 -2021-04-01T11:00,56.4,20,16,0,0,7.4,16.1 -2021-04-01T12:00,60.1,19,17.2,0,0,8.8,18.8 -2021-04-01T13:00,62.7,18,18,0,0,8.1,18.8 -2021-04-01T14:00,64.2,16,16.7,0,0,6.6,17.4 -2021-04-01T15:00,64.9,15,16.4,0,0,4.6,15 -2021-04-01T16:00,64.9,16,17.3,0,0,4.4,11.6 -2021-04-01T17:00,63,43,40.2,0,0,4,9.6 -2021-04-01T18:00,54.2,42,31.6,0,0,3.8,6.5 -2021-04-01T19:00,41.9,63,30.3,0,0,5.5,7.4 -2021-04-01T20:00,36.7,77,30,0,0,3.7,7.2 -2021-04-01T21:00,35.2,73,27.4,0,0,4.2,6.3 -2021-04-01T22:00,34.9,65,24.4,0,0,4.5,7.6 -2021-04-01T23:00,33.2,66,23,0,0,4.5,7.6 -2021-04-02T00:00,31.5,69,22.4,0,0,4.4,7.4 -2021-04-02T01:00,29.8,71,21.7,0,0,4.2,7.2 -2021-04-02T02:00,28.8,71,20.7,0,0,4.6,6.5 -2021-04-02T03:00,27.8,72,19.9,0,0,5.5,6.9 -2021-04-02T04:00,28.8,68,19.6,0,0,5.6,6.9 -2021-04-02T05:00,29.8,65,19.6,0,0,4.3,7.2 -2021-04-02T06:00,30.6,62,19.2,0,0,5.8,8.7 -2021-04-02T07:00,35.4,57,21.8,0,0,5.9,11 -2021-04-02T08:00,41.9,50,24.5,0,0,4.8,10.1 -2021-04-02T09:00,49.6,42,27.5,0,0,3.3,10.3 -2021-04-02T10:00,57.7,32,28,0,0,1.7,9.4 -2021-04-02T11:00,64.2,22,24.7,0,0,3.3,11 -2021-04-02T12:00,67.1,20,24.7,0,0,4.8,13.2 -2021-04-02T13:00,68.5,20,26.1,0,0,4.5,13.2 -2021-04-02T14:00,69.3,20,26.8,0,0,3.8,12.8 -2021-04-02T15:00,69.4,20,27,0,0,4,11.6 -2021-04-02T16:00,68.9,21,27.1,0,0,4.1,11 -2021-04-02T17:00,67,34,37.9,0,0,3.2,9.8 -2021-04-02T18:00,56.6,53,39.7,0,0,6.7,7.8 -2021-04-02T19:00,49.9,57,35.1,0,0,5.2,8.7 -2021-04-02T20:00,44,61,31.6,0,0,5.4,10.1 -2021-04-02T21:00,39.9,69,30.7,0,0,4.4,8.5 -2021-04-02T22:00,37.7,74,30,0,0,3.5,7.4 -2021-04-02T23:00,36.3,74,28.9,0,0,4.4,6.5 -2021-04-03T00:00,33.9,80,28.3,0,0,4.9,9.8 -2021-04-03T01:00,32.1,84,27.9,0,0,4.4,7.8 -2021-04-03T02:00,30.6,88,27.4,0,0,3.1,7.2 -2021-04-03T03:00,30.4,85,26.3,0,0,4.1,6.9 -2021-04-03T04:00,32.2,74,24.9,0,0,4.2,6.9 -2021-04-03T05:00,33,73,25.4,0,0,4.3,6.9 -2021-04-03T06:00,33.4,70,24.7,0,0,5.4,7.8 -2021-04-03T07:00,40.5,57,26.2,0,0,5.6,9.8 -2021-04-03T08:00,49.4,47,30.1,0,0,4.5,10.5 -2021-04-03T09:00,59,38,33.5,0,0,3.6,10.7 -2021-04-03T10:00,66.2,26,30.6,0,0,2.2,10.3 -2021-04-03T11:00,70.4,18,25.3,0,0,1.5,9.4 -2021-04-03T12:00,72.1,16,22.9,0,0,1.6,8.9 -2021-04-03T13:00,73,14,21.8,0,0,3.2,10.7 -2021-04-03T14:00,73.6,14,21.3,0,0,6.1,14.1 -2021-04-03T15:00,73.4,13,19,0,0,8,16.3 -2021-04-03T16:00,72.1,13,18.1,0,0,8.2,16.3 -2021-04-03T17:00,70.8,39,44.7,0,0,3.4,15.4 -2021-04-03T18:00,60.1,45,38.8,0,0,7,8.5 -2021-04-03T19:00,52.5,46,32.3,0,0,4.9,8.5 -2021-04-03T20:00,46.1,54,30.3,0,0,5.8,10.1 -2021-04-03T21:00,43.4,58,29.8,0,0,6.8,9.4 -2021-04-03T22:00,42.1,56,27.4,0,0,6.5,8.3 -2021-04-03T23:00,39.2,61,26.8,0,0,4.1,7.6 -2021-04-04T00:00,42.4,54,26.9,0,0,3.3,6.5 -2021-04-04T01:00,38.6,64,27.5,0,0,3,4 -2021-04-04T02:00,35.4,73,27.7,0,0,3.5,5.6 -2021-04-04T03:00,35.1,72,27,0,0,4.9,6.5 -2021-04-04T04:00,35.5,68,25.9,0,0,6,7.6 -2021-04-04T05:00,36.1,66,25.9,0,0,5.1,7.6 -2021-04-04T06:00,36.9,65,26.1,0,0,4.3,7.2 -2021-04-04T07:00,42.9,57,28.7,0,0,5.9,9.8 -2021-04-04T08:00,53.2,46,33.1,0,0,5,11 -2021-04-04T09:00,63.9,35,35.5,0,0,3.8,11.2 -2021-04-04T10:00,70.8,25,32.7,0,0,2.8,10.5 -2021-04-04T11:00,73.9,17,27,0,0,0.3,9.8 -2021-04-04T12:00,74.8,15,23.7,0,0,1.2,8.3 -2021-04-04T13:00,75.3,14,23.2,0,0,0.9,8.9 -2021-04-04T14:00,75.5,14,23.4,0,0,2.7,9.4 -2021-04-04T15:00,75.5,15,23.8,0,0,4.6,11.6 -2021-04-04T16:00,74.8,15,23.4,0,0,4.9,11.6 -2021-04-04T17:00,68.8,37,41.5,0,0,2.2,10.7 -2021-04-04T18:00,62.7,44,40.2,0,0,2.9,4.7 -2021-04-04T19:00,56.5,52,39.1,0,0,4.5,8.7 -2021-04-04T20:00,51.5,55,36,0,0,4.6,7.2 -2021-04-04T21:00,46.8,58,32.9,0,0,5.8,8.9 -2021-04-04T22:00,44.6,61,32.2,0,0,5.2,8.9 -2021-04-04T23:00,41.2,71,32.5,0,0,4.2,8.5 -2021-04-05T00:00,41.5,66,31.1,0,0,3.6,5.8 -2021-04-05T01:00,40.7,63,29,0,0,4.1,6.3 -2021-04-05T02:00,40,61,27.7,0,0,4.1,6.7 -2021-04-05T03:00,38.8,63,27.1,0,0,4.2,6.9 -2021-04-05T04:00,37.5,66,27.1,0,0,5.3,6.9 -2021-04-05T05:00,39.7,59,26.7,0,0,4.5,7.2 -2021-04-05T06:00,39.2,60,26.4,0,0,4.5,7.4 -2021-04-05T07:00,46.6,47,27.6,0,0,5.8,9.8 -2021-04-05T08:00,56.9,38,31.5,0,0,5,10.7 -2021-04-05T09:00,67.1,25,30.6,0,0,8.2,15.2 -2021-04-05T10:00,71.4,19,26.9,0,0,13.5,24.4 -2021-04-05T11:00,73.9,15,23.6,0,0,15.7,28.2 -2021-04-05T12:00,74.6,15,23.2,0,0,15.6,29.5 -2021-04-05T13:00,75.2,16,25.3,0,0,11.8,28.4 -2021-04-05T14:00,77,13,23.1,0,0,8.9,22.4 -2021-04-05T15:00,76.1,14,22.7,0,0,6.6,18.3 -2021-04-05T16:00,75.5,14,22.2,0,0,2.1,13.9 -2021-04-05T17:00,71.9,20,28.2,0,0,7.1,6.7 -2021-04-05T18:00,62.9,42,39.2,0,0,6.3,12.3 -2021-04-05T19:00,55.3,50,36.9,0,0,4.6,7.6 -2021-04-05T20:00,51.6,46,31.5,0,0,6.7,11.9 -2021-04-05T21:00,49.1,41,26.2,0,0,5.1,10.5 -2021-04-05T22:00,44.8,49,26.7,0,0,5.1,8.7 -2021-04-05T23:00,42.7,57,28.5,0,0,5.8,7.4 -2021-04-06T00:00,50,37,25,0,0,0.9,9.2 -2021-04-06T01:00,41,54,25.5,0,0,6.2,7.4 -2021-04-06T02:00,42.1,46,23,0,0,6.7,8.7 -2021-04-06T03:00,40.8,50,23.6,0,0,8.1,10.1 -2021-04-06T04:00,40.6,52,24.5,0,0,5.9,9.8 -2021-04-06T05:00,40.9,61,28.3,0,0,5.1,8.3 -2021-04-06T06:00,40.6,62,28.6,0,0,5.9,8.9 -2021-04-06T07:00,44.2,56,29.3,0.004,0,7.2,12.5 -2021-04-06T08:00,45.2,54,29.4,0,0,7.2,15.2 -2021-04-06T09:00,47.7,51,30.3,0,0,6,15.2 -2021-04-06T10:00,50.5,47,31,0,0,7.4,17.4 -2021-04-06T11:00,53.4,43,31.6,0,0,9.4,20.6 -2021-04-06T12:00,56.3,39,31.7,0,0,11.5,23.7 -2021-04-06T13:00,57.7,36,31.1,0,0,10.7,24.2 -2021-04-06T14:00,54.8,42,32.4,0.012,0,13,26.8 -2021-04-06T15:00,54.1,42,31.5,0.008,0,15.6,24.8 -2021-04-06T16:00,44.9,73,36.8,0.071,0,21.7,37.8 -2021-04-06T17:00,35.8,96,34.8,0.067,0,10.2,37.1 -2021-04-06T18:00,38.5,92,36.3,0.039,0,10.8,19.9 -2021-04-06T19:00,39.1,89,36.1,0.024,0,5.9,18.8 -2021-04-06T20:00,38,92,35.8,0.016,0,5.8,10.1 -2021-04-06T21:00,37.4,93,35.7,0.02,0,3.8,11 -2021-04-06T22:00,37.5,90,34.9,0.008,0,3,7.2 -2021-04-06T23:00,36.6,96,35.5,0,0,2.8,6.5 -2021-04-07T00:00,36.1,96,35.2,0,0,3.2,4.9 -2021-04-07T01:00,36,94,34.5,0,0,3.3,4.3 -2021-04-07T02:00,37.2,88,34.1,0,0,4.3,6 -2021-04-07T03:00,37.2,94,35.7,0,0,6,9.2 -2021-04-07T04:00,38,83,33.4,0,0,8.8,13.6 -2021-04-07T05:00,36.8,85,32.8,0,0,4.5,13.4 -2021-04-07T06:00,34.9,92,32.8,0,0,2.4,6.5 -2021-04-07T07:00,37,82,32.1,0,0,2.3,5.6 -2021-04-07T08:00,38.3,76,31.6,0,0,5.1,10.3 -2021-04-07T09:00,41.5,65,30.5,0,0,5,11.9 -2021-04-07T10:00,45.8,53,29.8,0,0,4.5,12.1 -2021-04-07T11:00,49.5,49,31.1,0,0,5.5,13.6 -2021-04-07T12:00,53.3,44,32.1,0,0,6.6,16.3 -2021-04-07T13:00,56.9,37,30.8,0,0,7,16.8 -2021-04-07T14:00,58.8,32,29.2,0,0,9.4,20.4 -2021-04-07T15:00,59,31,28.3,0,0,5.4,20.1 -2021-04-07T16:00,59.7,24,22.9,0,0,10.9,19.9 -2021-04-07T17:00,59,25,23.3,0,0,10.1,21.7 -2021-04-07T18:00,53.8,36,27.4,0,0,4.3,17.2 -2021-04-07T19:00,47.8,41,25.2,0,0,6.6,8.7 -2021-04-07T20:00,45.5,46,25.9,0,0,6.3,9.8 -2021-04-07T21:00,40.8,55,26.1,0,0,5.3,10.7 -2021-04-07T22:00,36.2,68,26.7,0,0,5.1,8.9 -2021-04-07T23:00,34.2,76,27.5,0,0,5.1,6.9 -2021-04-08T00:00,34.7,72,26.7,0,0,3,6.5 -2021-04-08T01:00,34.1,71,25.8,0,0,2.7,4.9 -2021-04-08T02:00,35.3,64,24.3,0,0,3.7,6.3 -2021-04-08T03:00,34.8,61,22.7,0,0,4.4,7.8 -2021-04-08T04:00,32.1,68,22.6,0,0,3.3,7.6 -2021-04-08T05:00,31,73,23.5,0,0,3.2,5.4 -2021-04-08T06:00,30.7,73,23,0,0,3,5.6 -2021-04-08T07:00,37.6,59,24.4,0,0,4.7,9.6 -2021-04-08T08:00,48.4,41,25.5,0,0,2.5,9.6 -2021-04-08T09:00,54.7,30,24.1,0,0,4,11.2 -2021-04-08T10:00,58.6,23,21.1,0,0,1.8,11.4 -2021-04-08T11:00,60.8,22,21.7,0,0,3.7,12.3 -2021-04-08T12:00,64.3,19,21.2,0,0,5.8,13.4 -2021-04-08T13:00,65.8,16,18.9,0,0,13.9,26.2 -2021-04-08T14:00,67.4,13,15.5,0,0,13.4,27.1 -2021-04-08T15:00,68.2,13,15.7,0,0,15.8,28.6 -2021-04-08T16:00,66.3,16,18.5,0,0,12,28.9 -2021-04-08T17:00,64.5,21,24.2,0,0,8.4,21.9 -2021-04-08T18:00,59.2,33,30.3,0,0,4.8,14.8 -2021-04-08T19:00,53.1,42,30.8,0,0,5.2,7.8 -2021-04-08T20:00,46.8,50,28.9,0,0,5.3,8.9 -2021-04-08T21:00,43.6,44,23.4,0,0,5.7,9.2 -2021-04-08T22:00,41.9,44,21.4,0,0,4.5,9.2 -2021-04-08T23:00,42.4,41,20.7,0,0,6.1,8.7 -2021-04-09T00:00,50.1,27,17.4,0,0,16.5,27.7 -2021-04-09T01:00,43.5,35,17.4,0,0,6.3,27.5 -2021-04-09T02:00,42.5,37,17.9,0,0,8.9,15 -2021-04-09T03:00,39.6,41,18.1,0,0,6.5,15.2 -2021-04-09T04:00,39,42,17.6,0,0,9.5,15.4 -2021-04-09T05:00,34.1,62,22.5,0,0,4.8,16.8 -2021-04-09T06:00,33.9,73,26.2,0,0,5.4,11.6 -2021-04-09T07:00,37.4,65,26.8,0,0.055,6.6,11.4 -2021-04-09T08:00,39.3,60,26.6,0,0,10.7,22.4 -2021-04-09T09:00,41.1,47,22.6,0.004,0.331,14.7,27.3 -2021-04-09T10:00,44,35,18.1,0,0,12.8,27.7 -2021-04-09T11:00,45.3,35,19.1,0,0,13.6,26.6 -2021-04-09T12:00,48.4,31,18.9,0,0,10.9,26.4 -2021-04-09T13:00,51,26,17.2,0,0,11.6,24.2 -2021-04-09T14:00,51,27,18.2,0,0,11.2,23.9 -2021-04-09T15:00,51.1,26,17.3,0,0,11,23.3 -2021-04-09T16:00,52.8,21,13.7,0,0,7.9,22.4 -2021-04-09T17:00,49.9,26,16.6,0,0,8,17 -2021-04-09T18:00,46.4,32,18.1,0,0,8.9,16.1 -2021-04-09T19:00,41.7,38,18.2,0,0,5.6,14.5 -2021-04-09T20:00,38.8,43,18.2,0,0,4.1,8.9 -2021-04-09T21:00,36.8,47,18.3,0,0,4.2,6.5 -2021-04-09T22:00,34.4,54,19.4,0,0,4.3,6.5 -2021-04-09T23:00,32.6,62,21,0,0,5.1,7.2 -2021-04-10T00:00,30.4,69,21.6,0,0,5.4,6.5 -2021-04-10T01:00,29,73,21.6,0,0,4.5,6.7 -2021-04-10T02:00,27.6,78,21.7,0,0,3.7,5.8 -2021-04-10T03:00,26.8,80,21.6,0,0,3.3,5.1 -2021-04-10T04:00,26.2,79,20.7,0,0,3.7,6 -2021-04-10T05:00,24.9,84,20.7,0,0,2.6,5.8 -2021-04-10T06:00,25.9,84,21.7,0,0,2.1,3.6 -2021-04-10T07:00,32.1,64,21.1,0,0,2.2,6.7 -2021-04-10T08:00,40.1,43,19.6,0,0,3.2,9.8 -2021-04-10T09:00,49,28,17,0,0,5.1,13.2 -2021-04-10T10:00,55,21,15.5,0,0,4,13.6 -2021-04-10T11:00,58.2,20,16.8,0,0,2.2,12.8 -2021-04-10T12:00,61.2,19,18.5,0,0,3.3,12.3 -2021-04-10T13:00,64,16,17.4,0,0,2.3,13 -2021-04-10T14:00,66.8,10,8.3,0,0,7.4,15.4 -2021-04-10T15:00,66.7,11,10.4,0,0,15.4,28 -2021-04-10T16:00,66,11,9.2,0,0,16.3,28.9 -2021-04-10T17:00,65.8,11,10,0,0,5.2,28.6 -2021-04-10T18:00,57.4,36,30.7,0,0,5.4,9.6 -2021-04-10T19:00,52,34,24.4,0,0,5.2,8.1 -2021-04-10T20:00,46.4,44,25.4,0,0,6.1,10.1 -2021-04-10T21:00,44.9,36,19.3,0,0,6.6,10.7 -2021-04-10T22:00,44.2,31,15.2,0,0,6.3,10.7 -2021-04-10T23:00,43.1,34,16.3,0,0,7.6,12.3 -2021-04-11T00:00,41.6,35,16.1,0,0,6,12.3 -2021-04-11T01:00,39.7,37,15.4,0,0,6.1,9.4 -2021-04-11T02:00,37,42,15.9,0,0,6.4,9.4 -2021-04-11T03:00,35.8,46,16.8,0,0,4.5,8.7 -2021-04-11T04:00,33.6,53,18.5,0,0,5,6.9 -2021-04-11T05:00,33.2,53,18.1,0,0,4.2,8.1 -2021-04-11T06:00,34.2,56,20.2,0,0,3.6,6.9 -2021-04-11T07:00,41.9,44,21.4,0,0,6.2,8.7 -2021-04-11T08:00,42.9,43,21.7,0,0,10.4,22.8 -2021-04-11T09:00,45.1,42,23.1,0,0,7.1,20.4 -2021-04-11T10:00,47.9,38,23.3,0,0,10.2,21.3 -2021-04-11T11:00,50.4,34,22.8,0,0,11.7,23.7 -2021-04-11T12:00,52.1,31,22,0,0,11,24.4 -2021-04-11T13:00,53.4,28,21.1,0,0,11,23.5 -2021-04-11T14:00,54.3,27,21.1,0,0,9.9,23 -2021-04-11T15:00,54.6,27,21.2,0,0,10.1,21.5 -2021-04-11T16:00,53.6,28,21.1,0,0,9.7,20.8 -2021-04-11T17:00,52.7,28,20.5,0,0,8.7,19.5 -2021-04-11T18:00,48.5,29,17.2,0,0,10.7,20.1 -2021-04-11T19:00,46.5,28,15.4,0,0,6.8,17.7 -2021-04-11T20:00,44.5,20,5.6,0,0,10.9,19.9 -2021-04-11T21:00,42.4,23,7.4,0,0,7.6,17.9 -2021-04-11T22:00,40.2,27,9,0,0,7.3,13 -2021-04-11T23:00,37,33,10.6,0,0,4.6,11.9 -2021-04-12T00:00,35,37,11,0,0,5.2,8.7 -2021-04-12T01:00,31.4,45,12.6,0,0,4.9,8.5 -2021-04-12T02:00,30.7,48,13.2,0,0,4.1,6.7 -2021-04-12T03:00,29.4,51,13.6,0,0,4.4,5.8 -2021-04-12T04:00,28.3,57,15,0,0,4.5,5.8 -2021-04-12T05:00,27.5,64,17.1,0,0,3.6,6 -2021-04-12T06:00,28.1,64,17.5,0,0,5.9,8.5 -2021-04-12T07:00,31,55,16.7,0,0,6.5,13 -2021-04-12T08:00,33.4,51,17.1,0,0,5.1,14.1 -2021-04-12T09:00,35.2,48,17.5,0,0,3.5,13.2 -2021-04-12T10:00,37.5,44,17.6,0,0,3.1,12.8 -2021-04-12T11:00,39.4,41,17.7,0,0,3.7,13.2 -2021-04-12T12:00,42.2,37,17.7,0,0,4.5,14.5 -2021-04-12T13:00,43.8,34,17.4,0,0,5.7,15.4 -2021-04-12T14:00,45,33,17.7,0,0,6.2,15.7 -2021-04-12T15:00,45.2,33,17.9,0,0,6.9,16.8 -2021-04-12T16:00,45.3,33,18.1,0,0,9.1,18.3 -2021-04-12T17:00,38.5,43,18,0,0,12.2,22.6 -2021-04-12T18:00,37,48,19.1,0,0,9.7,20.8 -2021-04-12T19:00,36.2,49,19,0,0,6.6,17.7 -2021-04-12T20:00,36.6,49,19.4,0,0,4.7,12.1 -2021-04-12T21:00,36.4,51,20.1,0,0,5.6,10.3 -2021-04-12T22:00,36.1,53,20.5,0,0,3.8,10.1 -2021-04-12T23:00,35.8,54,20.6,0,0,3.1,7.4 -2021-04-13T00:00,35,56,20.8,0,0,2.7,6.5 -2021-04-13T01:00,34,60,21.7,0,0.028,2,5.4 -2021-04-13T02:00,33.1,66,22.8,0,0.055,3.3,6.3 -2021-04-13T03:00,32.3,72,24.2,0,0.055,4.8,8.7 -2021-04-13T04:00,31.7,75,24.7,0,0.055,4.7,8.9 -2021-04-13T05:00,31.2,62,19.7,0,0.055,5.1,9.8 -2021-04-13T06:00,30.7,61,19,0,0.055,5.1,9.4 -2021-04-13T07:00,30.5,59,17.7,0,0.055,5.6,11.2 -2021-04-13T08:00,31,54,16.3,0,0.028,5.6,12.3 -2021-04-13T09:00,32.5,50,16,0,0,7.1,15.4 -2021-04-13T10:00,35,47,16.9,0,0,5.2,16.6 -2021-04-13T11:00,37,46,18.2,0,0,4.4,14.8 -2021-04-13T12:00,39.4,44,19.2,0,0,7.3,17.4 -2021-04-13T13:00,41.7,41,19.8,0,0,11.4,23.5 -2021-04-13T14:00,43.3,40,20.6,0,0,11.1,23.7 -2021-04-13T15:00,42,45,22.1,0,0,11.8,22.6 -2021-04-13T16:00,42.3,45,22.5,0,0,8.3,22.4 -2021-04-13T17:00,39.8,48,21.8,0,0,12.7,18.3 -2021-04-13T18:00,38,51,21.6,0,0,9.4,22.1 -2021-04-13T19:00,36.1,57,22.3,0,0.028,10.3,17.4 -2021-04-13T20:00,35.7,60,23.2,0,0,8.3,17.4 -2021-04-13T21:00,35.5,62,23.6,0,0.055,5.4,13.9 -2021-04-13T22:00,34.8,67,24.9,0,0.083,2.2,11 -2021-04-13T23:00,33.8,72,25.9,0,0.028,0.7,5.6 -2021-04-14T00:00,33.2,75,26.2,0,0,2,2.2 -2021-04-14T01:00,32.8,72,24.6,0,0,5.7,8.7 -2021-04-14T02:00,32.3,69,23.2,0,0,5.2,9.6 -2021-04-14T03:00,32.3,67,22.5,0,0,4.7,9.2 -2021-04-14T04:00,31.4,66,21.5,0,0,6.3,10.5 -2021-04-14T05:00,31,63,19.9,0,0,7.3,11.9 -2021-04-14T06:00,30.9,64,20.2,0,0,8,13.6 -2021-04-14T07:00,31.4,62,19.7,0,0,9.4,16.8 -2021-04-14T08:00,33,56,19.1,0,0,9.1,17.9 -2021-04-14T09:00,33.8,54,18.9,0,0,9.3,18.8 -2021-04-14T10:00,35.2,50,18.4,0,0,8.3,18.8 -2021-04-14T11:00,36.5,49,19,0,0,5.5,17.9 -2021-04-14T12:00,39.9,46,20.8,0,0,4,14.8 -2021-04-14T13:00,43,44,22.4,0,0,8.8,20.6 -2021-04-14T14:00,45.8,41,23.5,0,0,6.9,20.6 -2021-04-14T15:00,47.8,39,24.3,0,0,3.2,17.4 -2021-04-14T16:00,48.7,38,24.4,0,0,4.7,12.3 -2021-04-14T17:00,41.2,46,22.2,0,0,8.3,12.5 -2021-04-14T18:00,40,53,24.3,0.004,0,10.1,24.2 -2021-04-14T19:00,39.1,57,25.1,0,0,7.9,17.7 -2021-04-14T20:00,38.4,60,25.8,0,0,5,13.4 -2021-04-14T21:00,38,64,26.9,0,0,5.4,8.7 -2021-04-14T22:00,37,69,27.7,0,0,3.5,9.2 -2021-04-14T23:00,37,70,28,0,0,2.9,5.4 -2021-04-15T00:00,34.3,79,28.4,0,0,2.7,5.4 -2021-04-15T01:00,35,74,27.7,0,0,3.4,7.4 -2021-04-15T02:00,35.6,74,28,0,0,2.2,5.8 -2021-04-15T03:00,35.9,77,29.3,0,0,1.4,4.3 -2021-04-15T04:00,36.1,74,28.6,0,0,1.9,3.1 -2021-04-15T05:00,32.5,69,23.4,0,0,7.3,4.5 -2021-04-15T06:00,32.6,69,23.7,0,0,6.9,12.1 -2021-04-15T07:00,34.6,65,24.2,0,0,6.5,13.2 -2021-04-15T08:00,36.1,64,25.2,0,0,4.2,13.2 -2021-04-15T09:00,36.4,65,25.7,0,0,6.3,13.2 -2021-04-15T10:00,37.1,65,26.4,0,0,9.1,17.4 -2021-04-15T11:00,38.2,65,27.6,0,0,10.2,20.4 -2021-04-15T12:00,40.4,62,28.5,0,0,10,20.1 -2021-04-15T13:00,40.5,63,28.9,0,0,12.8,23.3 -2021-04-15T14:00,39.9,67,30,0.004,0,15.9,28 -2021-04-15T15:00,37.2,81,32,0.016,0.028,16.9,29.8 -2021-04-15T16:00,36.1,99,35.9,0.028,0.331,13.7,29.1 -2021-04-15T17:00,35,93,33.1,0.031,0.441,12.7,28 -2021-04-15T18:00,34.3,98,33.6,0.008,0.496,10.7,21 -2021-04-15T19:00,33.5,96,32.5,0.008,0.413,9.8,17.4 -2021-04-15T20:00,32.3,96,31.4,0,0.303,8.6,16.1 -2021-04-15T21:00,31.6,97,30.8,0,0.248,9.3,15.4 -2021-04-15T22:00,30.8,96,29.9,0,0.193,8.2,15.9 -2021-04-15T23:00,30.4,96,29.4,0,0.138,7.9,13.6 -2021-04-16T00:00,30.2,97,29.4,0,0.083,7.2,13 -2021-04-16T01:00,30,94,28.5,0,0.165,8.3,13.2 -2021-04-16T02:00,29.7,96,28.6,0,0.165,8.5,13.9 -2021-04-16T03:00,29.3,95,28,0,0.11,8.5,15.2 -2021-04-16T04:00,29.2,94,27.6,0,0.165,8.4,14.3 -2021-04-16T05:00,27.5,92,25.4,0,0.138,11.5,13.6 -2021-04-16T06:00,27.4,91,25.3,0,0.11,11,19 -2021-04-16T07:00,27.5,91,25.3,0,0.083,9.9,17.9 -2021-04-16T08:00,27.8,90,25.2,0,0.055,8.8,16.3 -2021-04-16T09:00,28.4,87,24.9,0,0.028,8.2,15 -2021-04-16T10:00,29.2,84,25.1,0,0.028,7.2,14.5 -2021-04-16T11:00,30.1,80,24.6,0,0,6.8,13 -2021-04-16T12:00,31.1,75,24,0,0,7.3,13.4 -2021-04-16T13:00,32.1,71,23.8,0,0,6.6,13.2 -2021-04-16T14:00,33.5,66,23.3,0,0,4.5,11.6 -2021-04-16T15:00,34.4,66,24.4,0,0,3.2,8.3 -2021-04-16T16:00,34.6,71,26.1,0,0.028,3.5,6.7 -2021-04-16T17:00,31.4,81,26.3,0,0,2.7,6.7 -2021-04-16T18:00,30.8,86,27.1,0,0.055,2.7,4.9 -2021-04-16T19:00,30.4,90,27.7,0,0.083,2.4,4.5 -2021-04-16T20:00,30.3,92,28.3,0,0.083,2.7,4.5 -2021-04-16T21:00,29.9,93,28,0,0.028,3.2,5.1 -2021-04-16T22:00,29.6,92,27.4,0,0.11,3.7,11.2 -2021-04-16T23:00,29.2,91,26.9,0,0.055,5.1,8.3 -2021-04-17T00:00,28.9,89,26.2,0,0.028,4.8,8.3 -2021-04-17T01:00,28.2,87,24.8,0,0,4.5,7.8 -2021-04-17T02:00,26.7,85,22.8,0,0,5,7.8 -2021-04-17T03:00,27.9,83,23.5,0,0,4.9,8.7 -2021-04-17T04:00,27.1,83,22.6,0,0,4.7,8.1 -2021-04-17T05:00,24.9,87,21.6,0,0,6,7.6 -2021-04-17T06:00,24.6,86,20.9,0,0,4.7,7.4 -2021-04-17T07:00,28,84,23.6,0,0,2.6,5.8 -2021-04-17T08:00,30.8,77,24.4,0,0,4.2,6.9 -2021-04-17T09:00,31.9,72,23.9,0,0,4.4,8.5 -2021-04-17T10:00,32.3,73,24.4,0,0,5.2,9.8 -2021-04-17T11:00,32.6,72,24.7,0,0,4.3,10.3 -2021-04-17T12:00,33.6,68,24.3,0,0,3.2,8.7 -2021-04-17T13:00,34.6,64,23.7,0,0,3.9,7.6 -2021-04-17T14:00,35.3,60,22.6,0,0,4.1,8.3 -2021-04-17T15:00,35.8,53,20.5,0,0,4.4,9.2 -2021-04-17T16:00,36,51,19.6,0,0,5.4,10.5 -2021-04-17T17:00,39,52,22.8,0,0,3.4,11.2 -2021-04-17T18:00,31.9,60,19.8,0,0,6.4,8.5 -2021-04-17T19:00,27.1,70,18.4,0,0,7.9,10.1 -2021-04-17T20:00,27.1,73,19.5,0,0,5.6,10.3 -2021-04-17T21:00,25.2,77,19,0,0,5.4,9.2 -2021-04-17T22:00,22.9,80,17.6,0,0,5.7,9.8 -2021-04-17T23:00,21.3,80,16,0,0,6,10.1 -2021-04-18T00:00,20.2,78,14.5,0,0,6.3,10.7 -2021-04-18T01:00,19.2,76,12.9,0,0,5.9,10.7 -2021-04-18T02:00,18.4,75,11.8,0,0,5.8,10.1 -2021-04-18T03:00,18.2,73,10.9,0,0,6.2,10.5 -2021-04-18T04:00,18.1,70,9.9,0,0,5.9,10.7 -2021-04-18T05:00,19.9,68,10.9,0,0,5.9,10.1 -2021-04-18T06:00,20.4,68,11.4,0,0,5.8,11 -2021-04-18T07:00,26.7,66,17,0,0,4.7,9.4 -2021-04-18T08:00,33.8,65,23.5,0,0,3.8,8.3 -2021-04-18T09:00,40.3,58,26.9,0,0,3.5,7.4 -2021-04-18T10:00,42.5,55,27.4,0,0,3.9,7.6 -2021-04-18T11:00,45.1,46,25.7,0,0,4.5,9.2 -2021-04-18T12:00,46.6,44,26,0,0,5,10.7 -2021-04-18T13:00,54.1,26,19.7,0,0,7.5,18.6 -2021-04-18T14:00,54.9,25,20,0,0,7.2,17.2 -2021-04-18T15:00,54.4,27,20.9,0,0,6.5,16.6 -2021-04-18T16:00,54,27,21,0,0,6.1,15.2 -2021-04-18T17:00,52.4,45,31.8,0,0,2.5,13.6 -2021-04-18T18:00,50.2,55,34.8,0,0,1.9,5.1 -2021-04-18T19:00,43.4,50,25.9,0,0,4.8,6.9 -2021-04-18T20:00,38.1,63,26.5,0,0,7.4,11.4 -2021-04-18T21:00,35.2,68,25.9,0,0,7.1,11.4 -2021-04-18T22:00,33.7,71,25.3,0,0,6.7,11.4 -2021-04-18T23:00,32.4,72,24.4,0,0,6.7,10.5 -2021-04-19T00:00,30.2,75,23.2,0,0,5.6,10.5 -2021-04-19T01:00,28.8,74,21.7,0,0,5.7,8.9 -2021-04-19T02:00,29,69,20.2,0,0,5.9,9.4 -2021-04-19T03:00,29.2,67,19.5,0,0,5.6,9.2 -2021-04-19T04:00,29.2,66,19.1,0,0,5.8,8.7 -2021-04-19T05:00,27.5,75,20.5,0,0,5.1,11.4 -2021-04-19T06:00,33.1,64,22.2,0,0,9.9,14.8 -2021-04-19T07:00,34.3,70,25.5,0,0,17.1,28.4 -2021-04-19T08:00,34.2,79,28.2,0,0,13.7,29.1 -2021-04-19T09:00,33.1,82,28.3,0,0,7.3,24.8 -2021-04-19T10:00,33.4,83,28.7,0,0.028,7.8,15.9 -2021-04-19T11:00,33.2,82,28.3,0,0.028,8.2,16.8 -2021-04-19T12:00,34.4,78,28.3,0,0,8.9,17.9 -2021-04-19T13:00,34.5,76,27.6,0,0.028,10.1,19 -2021-04-19T14:00,35.5,71,27,0,0.028,10.7,21 -2021-04-19T15:00,34.3,70,25.7,0,0.028,9.2,20.6 -2021-04-19T16:00,33.6,69,24.6,0,0.11,8.7,17.7 -2021-04-19T17:00,27.9,74,20.8,0,0.138,5.7,16.1 -2021-04-19T18:00,27.2,79,21.6,0,0.22,6.9,13 -2021-04-19T19:00,25.6,88,22.6,0,0.469,5.7,15 -2021-04-19T20:00,25.4,89,22.6,0,0.579,3.7,13 -2021-04-19T21:00,25.1,91,22.8,0.004,0.441,7.5,11.4 -2021-04-19T22:00,23,91,20.8,0,0.496,12.2,21.5 -2021-04-19T23:00,20.5,85,16.8,0,0.193,11.3,20.4 -2021-04-20T00:00,19.7,85,15.9,0,0.055,6.5,18.8 -2021-04-20T01:00,18.2,85,14.4,0,0.028,3.6,10.7 -2021-04-20T02:00,14.5,84,10.6,0,0,5.2,6.5 -2021-04-20T03:00,14.5,80,9.5,0,0,3.5,6.5 -2021-04-20T04:00,9.6,84,5.8,0,0,5.8,6.9 -2021-04-20T05:00,11.8,80,6.9,0,0,6.1,9.4 -2021-04-20T06:00,10.6,79,5.5,0,0,6.3,10.3 -2021-04-20T07:00,12.8,78,7.2,0,0,5.1,9.2 -2021-04-20T08:00,19.7,71,11.7,0,0,3,7.2 -2021-04-20T09:00,23.6,62,12.4,0,0,5.7,9.8 -2021-04-20T10:00,25.8,48,8.9,0,0,4.9,10.1 -2021-04-20T11:00,26.8,40,5.8,0,0,1.8,9.2 -2021-04-20T12:00,27.3,40,6.1,0,0,1.8,6 -2021-04-20T13:00,28.5,41,8,0,0,3.4,8.1 -2021-04-20T14:00,30,43,10.3,0,0,4.6,9.2 -2021-04-20T15:00,30.7,46,12.3,0,0,4.3,9.2 -2021-04-20T16:00,30.3,50,13.8,0,0,3.2,7.8 -2021-04-20T17:00,26.8,65,16.4,0,0,3.9,6.3 -2021-04-20T18:00,22.1,75,15.4,0,0,4.2,6.7 -2021-04-20T19:00,19.7,77,13.7,0,0,5.4,7.2 -2021-04-20T20:00,18.7,78,13,0,0,5.4,7.6 -2021-04-20T21:00,21.6,77,15.4,0,0,1.6,6.9 -2021-04-20T22:00,19.2,81,14.5,0,0,3.2,4.5 -2021-04-20T23:00,21.8,77,15.8,0,0,1.4,4.5 -2021-04-21T00:00,22.1,78,16.3,0,0,1.1,2.5 -2021-04-21T01:00,22,79,16.6,0,0,0.9,1.8 -2021-04-21T02:00,20.9,81,15.9,0,0,1.7,2.7 -2021-04-21T03:00,18.7,84,14.7,0,0,3.2,4.5 -2021-04-21T04:00,19,84,14.9,0,0,2,4.7 -2021-04-21T05:00,22.3,87,19,0,0,0.9,3.4 -2021-04-21T06:00,23.5,86,19.9,0,0.028,2.7,4.3 -2021-04-21T07:00,25.1,87,21.7,0,0.028,5.5,8.7 -2021-04-21T08:00,26,87,22.6,0,0,7.1,12.8 -2021-04-21T09:00,26.6,89,23.8,0,0,7.2,13.6 -2021-04-21T10:00,26.7,92,24.6,0,0,7.2,14.1 -2021-04-21T11:00,27,87,23.7,0,0,7.2,13.9 -2021-04-21T12:00,28.1,84,24,0,0,6.1,14.1 -2021-04-21T13:00,29.3,82,24.4,0,0.028,6.6,12.8 -2021-04-21T14:00,30.4,80,24.9,0,0.028,6.5,13.2 -2021-04-21T15:00,31,80,25.5,0,0.055,5.9,12.3 -2021-04-21T16:00,30.7,83,26.1,0,0.055,6,11.2 -2021-04-21T17:00,29.7,88,26.5,0,0.055,5.4,11.4 -2021-04-21T18:00,28.8,90,26.3,0,0.11,3.1,9.4 -2021-04-21T19:00,28.3,93,26.6,0,0.055,0.7,5.6 -2021-04-21T20:00,27.7,94,26.2,0,0.055,2,3.4 -2021-04-21T21:00,27.4,94,26,0,0,2.6,4.3 -2021-04-21T22:00,26.3,95,25.1,0,0.11,3.8,21 -2021-04-21T23:00,26.7,94,25.3,0,0.055,2.6,18.6 -2021-04-22T00:00,25.3,92,23.3,0,0.083,2.3,12.8 -2021-04-22T01:00,21.3,96,20.2,0,0,4.9,7.6 -2021-04-22T02:00,22.2,97,21.4,0,0,5.8,10.5 -2021-04-22T03:00,21.1,98,20.8,0,0,5.4,9.8 -2021-04-22T04:00,21.7,96,20.7,0,0,3.4,9.2 -2021-04-22T05:00,25.4,89,22.6,0,0,0.5,4.7 -2021-04-22T06:00,23.5,94,22,0,0,2,2 -2021-04-22T07:00,24.9,93,23.3,0,0,3.3,6.5 -2021-04-22T08:00,25.7,95,24.5,0,0,2.5,6.7 -2021-04-22T09:00,26.9,91,24.6,0,0,2.6,7.8 -2021-04-22T10:00,29,88,25.8,0,0,3.8,8.5 -2021-04-22T11:00,31,86,27.4,0,0,6.5,12.3 -2021-04-22T12:00,33.9,77,27.6,0,0.028,3.8,12.3 -2021-04-22T13:00,35.3,76,28.5,0,0.055,2.7,7.6 -2021-04-22T14:00,37.3,76,30.5,0,0,1.9,8.7 -2021-04-22T15:00,40,59,26.9,0,0,1.3,6 -2021-04-22T16:00,41.3,59,27.9,0,0,1.6,5.8 -2021-04-22T17:00,41.1,80,35.2,0.004,0,1.9,3.8 -2021-04-22T18:00,36.1,85,32.1,0,0,3.9,19.2 -2021-04-22T19:00,32.9,89,30,0,0,4.5,7.6 -2021-04-22T20:00,28.5,92,26.5,0,0,6,8.1 -2021-04-22T21:00,29.6,92,27.6,0,0,7,8.7 -2021-04-22T22:00,29.5,92,27.3,0,0,6.4,8.9 -2021-04-22T23:00,28,91,25.9,0,0,6.8,8.7 -2021-04-23T00:00,25.4,92,23.4,0,0,7.5,9.6 -2021-04-23T01:00,23.5,92,21.7,0,0,7.4,9.2 -2021-04-23T02:00,22.6,92,20.5,0,0,7.5,9.8 -2021-04-23T03:00,22.3,91,20,0,0,7.5,9.6 -2021-04-23T04:00,23.4,88,20.4,0,0,7,9.6 -2021-04-23T05:00,30.2,76,23.6,0,0,3.2,8.7 -2021-04-23T06:00,30.9,75,23.8,0,0,2.8,4 -2021-04-23T07:00,30.5,79,24.8,0,0,3.7,6.3 -2021-04-23T08:00,38.1,62,26.4,0,0,1.5,5.8 -2021-04-23T09:00,41.3,51,24.5,0,0,1.4,2.7 -2021-04-23T10:00,41.1,63,29.3,0,0,2.7,4.5 -2021-04-23T11:00,47.9,39,24.4,0,0,5.6,14.8 -2021-04-23T12:00,50.2,37,25,0,0,6.1,15.7 -2021-04-23T13:00,51.4,37,25.9,0,0,2.9,15.7 -2021-04-23T14:00,52.9,35,25.7,0,0,2.1,11.4 -2021-04-23T15:00,54.1,32,24.9,0,0,6.2,13.9 -2021-04-23T16:00,52.3,34,24.5,0,0,11,19.7 -2021-04-23T17:00,50.9,40,27.4,0,0,7.9,19.9 -2021-04-23T18:00,48.2,50,30.6,0,0,4.5,14.3 -2021-04-23T19:00,42.2,55,27,0,0,7.5,11.2 -2021-04-23T20:00,38.8,61,26.7,0,0,4.8,12.8 -2021-04-23T21:00,37.9,66,27.5,0,0,4.7,7.6 -2021-04-23T22:00,36.1,73,28.1,0,0,5.1,7.6 -2021-04-23T23:00,32.5,80,27.1,0,0,2.3,7.4 -2021-04-24T00:00,28.9,88,25.7,0,0,2.7,4.7 -2021-04-24T01:00,27.3,88,24.4,0,0,3,5.4 -2021-04-24T02:00,25.9,89,23.2,0,0,2.3,4.5 -2021-04-24T03:00,25.5,85,21.7,0,0,1.8,3.1 -2021-04-24T04:00,24.9,82,20.1,0,0,2.2,3.8 -2021-04-24T05:00,22.9,87,19.5,0,0,2.6,3.8 -2021-04-24T06:00,27.3,77,20.9,0,0,3.3,6.7 -2021-04-24T07:00,33.4,75,26.2,0,0,1.4,7.6 -2021-04-24T08:00,35.7,80,30.1,0,0,1.8,8.7 -2021-04-24T09:00,39.7,74,32.2,0,0,3,11 -2021-04-24T10:00,45.3,62,33.1,0,0,2.7,11.6 -2021-04-24T11:00,51.9,49,33.4,0,0,3,11.9 -2021-04-24T12:00,57.7,39,33.2,0,0,2.8,12.1 -2021-04-24T13:00,60.9,32,30.5,0,0,3.9,11.9 -2021-04-24T14:00,64.6,21,24.2,0,0,4.8,13 -2021-04-24T15:00,66.2,19,22.2,0,0,5.3,13 -2021-04-24T16:00,66,19,22.4,0,0,6.1,13.2 -2021-04-24T17:00,62.7,38,36.5,0,0,8.8,13 -2021-04-24T18:00,56.8,53,39.9,0,0,7.4,15.9 -2021-04-24T19:00,49.4,60,36.1,0,0,4.7,12.3 -2021-04-24T20:00,46,57,31.5,0,0,4.5,7.2 -2021-04-24T21:00,41.7,66,31.2,0,0,3.4,7.2 -2021-04-24T22:00,39.4,73,31.6,0,0,3.3,6 -2021-04-24T23:00,37.4,81,32.2,0,0,2.1,5.8 -2021-04-25T00:00,35.1,88,31.9,0,0,1.8,4.5 -2021-04-25T01:00,33.1,93,31.2,0,0,2.7,4 -2021-04-25T02:00,32.2,91,29.9,0,0,5.4,6.3 -2021-04-25T03:00,32.1,87,28.7,0,0,5.3,6.7 -2021-04-25T04:00,31.7,86,28,0,0,4.6,6.7 -2021-04-25T05:00,30.9,87,27.4,0,0,4.1,6.5 -2021-04-25T06:00,34.9,77,28.3,0,0,5.1,8.1 -2021-04-25T07:00,44.7,57,30.5,0,0,3.1,8.9 -2021-04-25T08:00,54.6,43,32.5,0,0,3.6,9.6 -2021-04-25T09:00,62.8,34,34.2,0,0,6.5,13.6 -2021-04-25T10:00,67.3,24,29.5,0,0,8.3,17.9 -2021-04-25T11:00,69.4,23,29.8,0,0,6.4,17.4 -2021-04-25T12:00,71,23,30.9,0,0,4.4,15.4 -2021-04-25T13:00,72.3,22,31.6,0,0,3,12.8 -2021-04-25T14:00,73.3,22,31.7,0,0,2.9,11.2 -2021-04-25T15:00,73.8,23,33.7,0,0,6.5,14.3 -2021-04-25T16:00,72.5,27,36.8,0,0,8.6,16.6 -2021-04-25T17:00,73.5,22,32.1,0,0,0.5,16.8 -2021-04-25T18:00,70.8,25,33.6,0,0,1.6,3.4 -2021-04-25T19:00,56,51,38.1,0,0,8.3,8.7 -2021-04-25T20:00,52.8,44,31.5,0,0,8.6,14.1 -2021-04-25T21:00,52.9,32,23.9,0,0,8.9,14.5 -2021-04-25T22:00,49.6,35,22.9,0,0,6.5,14.5 -2021-04-25T23:00,45.6,44,24.8,0,0,5.9,10.1 -2021-04-26T00:00,43.8,48,25.4,0,0,5.9,9.4 -2021-04-26T01:00,44.5,44,23.9,0,0,9.2,14.3 -2021-04-26T02:00,45.9,39,22.6,0,0,10.7,17.7 -2021-04-26T03:00,45.4,39,21.7,0,0,9.9,17.7 -2021-04-26T04:00,41.6,47,22.7,0,0,8.8,16.3 -2021-04-26T05:00,40.9,49,23.4,0,0,8.7,14.5 -2021-04-26T06:00,43,48,24.8,0,0,9.2,14.5 -2021-04-26T07:00,51.6,40,28,0,0,9,15.4 -2021-04-26T08:00,60.4,31,29.5,0,0,8.3,15.9 -2021-04-26T09:00,65.6,24,28,0,0,9.2,17.9 -2021-04-26T10:00,69.2,19,25.4,0,0,10.3,20.6 -2021-04-26T11:00,71.1,16,22.7,0,0,5.7,20.4 -2021-04-26T12:00,72.8,15,22.6,0,0,3.3,14.5 -2021-04-26T13:00,74,13,20.4,0,0,3.4,11.4 -2021-04-26T14:00,74.9,11,17.3,0,0,8.1,16.6 -2021-04-26T15:00,74.5,11,15.6,0,0,14.8,26.2 -2021-04-26T16:00,73.1,12,17.7,0,0,16.5,29.1 -2021-04-26T17:00,70,22,28.9,0,0,5.2,28.6 -2021-04-26T18:00,64.2,51,45.5,0,0,4.9,9.4 -2021-04-26T19:00,64.6,30,32.3,0,0,1.3,6 -2021-04-26T20:00,53.7,43,31.8,0,0,7.1,9.8 -2021-04-26T21:00,58,25,22,0,0,4,9.8 -2021-04-26T22:00,56.5,27,22.8,0,0,1.3,5.4 -2021-04-26T23:00,47.8,46,28.1,0,0,5.5,8.3 -2021-04-27T00:00,44.2,53,28.1,0,0,6.3,10.5 -2021-04-27T01:00,40.2,65,29.2,0,0,5,10.5 -2021-04-27T02:00,42.6,56,28,0,0,2.5,6.5 -2021-04-27T03:00,39.6,67,29.6,0,0,4.5,5.6 -2021-04-27T04:00,41.5,60,28.5,0,0,6,7.2 -2021-04-27T05:00,38.8,66,28.3,0,0,4,7.2 -2021-04-27T06:00,42.7,63,30.9,0,0,5.6,8.3 -2021-04-27T07:00,49.2,49,31,0,0,4.6,8.7 -2021-04-27T08:00,49.6,61,36.5,0,0,13.2,24.2 -2021-04-27T09:00,51.2,62,38.7,0.004,0,8.3,23 -2021-04-27T10:00,51.4,65,39.9,0.004,0,6.9,16.3 -2021-04-27T11:00,52.5,65,41.3,0.016,0,3.5,15 -2021-04-27T12:00,54,66,43,0.02,0,3.8,13 -2021-04-27T13:00,49.1,76,42,0.118,0,5.6,15 -2021-04-27T14:00,49.8,76,42.6,0.024,0,4.7,19.5 -2021-04-27T15:00,54.5,62,41.8,0,0,2.1,14.8 -2021-04-27T16:00,52.8,67,42.2,0.004,0,3.2,11.4 -2021-04-27T17:00,44.1,87,40.6,0.075,0,14.1,15 -2021-04-27T18:00,43.6,91,41.2,0.051,0,15.2,28.2 -2021-04-27T19:00,43.2,91,40.6,0.039,0,11.7,25.9 -2021-04-27T20:00,42.4,91,39.8,0.047,0,12.9,21.9 -2021-04-27T21:00,41.5,93,39.5,0.059,0,13.3,22.8 -2021-04-27T22:00,40.5,95,39.1,0.043,0,12.2,21.9 -2021-04-27T23:00,40.1,94,38.5,0.039,0,13.3,23.3 -2021-04-28T00:00,39.7,95,38.3,0.039,0,11.4,22.4 -2021-04-28T01:00,39.2,96,38,0.035,0,9.4,19.2 -2021-04-28T02:00,38.9,95,37.7,0.031,0,9.8,16.8 -2021-04-28T03:00,38.3,97,37.4,0.051,0,8.2,16.8 -2021-04-28T04:00,37.7,98,37.2,0.087,0,6.8,14.1 -2021-04-28T05:00,39.7,90,37,0.059,0,9.3,14.3 -2021-04-28T06:00,40,93,38.1,0.047,0,6.3,16.3 -2021-04-28T07:00,41.2,92,38.9,0.031,0,4.5,15.4 -2021-04-28T08:00,42.4,90,39.6,0.028,0,4.2,7.8 -2021-04-28T09:00,43.1,88,39.8,0.031,0,6.9,11.4 -2021-04-28T10:00,44.8,79,38.8,0.016,0,8,14.5 -2021-04-28T11:00,46.2,73,38.1,0,0,6.3,15 -2021-04-28T12:00,50.2,57,35.6,0,0,6.8,16.1 -2021-04-28T13:00,54.3,43,32.2,0,0,4.3,15 -2021-04-28T14:00,59.2,29,27.1,0,0,12.1,21.9 -2021-04-28T15:00,58.4,29,26.5,0,0,12.8,25.7 -2021-04-28T16:00,58.1,30,26.7,0,0,11.4,23.7 -2021-04-28T17:00,56.9,36,30.1,0,0,6.7,21.3 -2021-04-28T18:00,54.1,49,35.2,0,0,3,11.6 -2021-04-28T19:00,49.6,51,32.3,0,0,5.6,8.3 -2021-04-28T20:00,45.4,63,33.4,0,0,6.3,11.2 -2021-04-28T21:00,40.2,77,33.4,0,0,5.6,10.1 -2021-04-28T22:00,38.7,78,32.3,0,0,5.7,7.4 -2021-04-28T23:00,37,79,31.1,0,0,6.2,7.4 -2021-04-29T00:00,36.3,78,30.1,0,0,4.6,7.4 -2021-04-29T01:00,34.9,80,29.3,0,0,5.2,6.7 -2021-04-29T02:00,34.3,78,28.1,0,0,5.7,6.9 -2021-04-29T03:00,33.9,76,27.1,0,0,6.2,7.2 -2021-04-29T04:00,34.2,72,26.1,0,0,5.8,7.4 -2021-04-29T05:00,38.4,59,25.4,0,0,3.4,6.7 -2021-04-29T06:00,38.8,61,26.5,0,0,1.8,4 -2021-04-29T07:00,45.1,56,30.2,0,0,1.2,5.8 -2021-04-29T08:00,52.3,45,31.6,0,0,0.3,6.9 -2021-04-29T09:00,56.8,37,30.8,0,0,2.9,10.3 -2021-04-29T10:00,59.8,34,31,0,0,2.4,10.7 -2021-04-29T11:00,62.2,30,30.4,0,0,3.4,11.6 -2021-04-29T12:00,64,28,30,0,0,3.8,12.8 -2021-04-29T13:00,65.1,28,31.1,0,0,4.1,13 -2021-04-29T14:00,65.8,29,32.3,0,0,3.5,13 -2021-04-29T15:00,66.2,29,32.6,0,0,2.2,11.9 -2021-04-29T16:00,66.4,29,33.1,0,0,2.7,9.8 -2021-04-29T17:00,66.2,30,33.5,0,0,1.8,9.2 -2021-04-29T18:00,62.1,62,48.8,0,0,2.9,5.4 -2021-04-29T19:00,60.5,42,37.3,0,0,3.6,5.4 -2021-04-29T20:00,55.4,52,37.9,0,0,3.1,4.3 -2021-04-29T21:00,46.5,75,38.9,0,0,3.5,6 -2021-04-29T22:00,42.8,85,38.5,0,0,1.9,5.1 -2021-04-29T23:00,40.9,88,37.8,0,0,3.1,4.3 -2021-04-30T00:00,40,87,36.4,0,0,4.2,6.7 -2021-04-30T01:00,40.5,76,33.4,0,0,5.1,8.3 -2021-04-30T02:00,40.3,71,31.7,0,0,4.9,8.9 -2021-04-30T03:00,39.6,70,30.6,0,0,4.4,8.1 -2021-04-30T04:00,39,69,29.8,0,0,4.1,6.9 -2021-04-30T05:00,41.4,62,29.1,0,0,4,6.5 -2021-04-30T06:00,44.5,58,30.7,0,0,4.3,6 -2021-04-30T07:00,51.4,55,35.5,0,0,4.1,9.4 -2021-04-30T08:00,60.4,46,39.5,0,0,2.7,9.4 -2021-04-30T09:00,66.7,31,35.3,0,0,2.1,9.2 -2021-04-30T10:00,69.5,25,32.2,0,0,2.5,9.8 -2021-04-30T11:00,71.2,24,32.5,0,0,2.8,10.7 -2021-04-30T12:00,72.8,24,33.6,0,0,3.2,11.2 -2021-04-30T13:00,74.3,23,34.3,0,0,4.3,12.5 -2021-04-30T14:00,75.6,22,34.2,0,0,5.1,13.4 -2021-04-30T15:00,76.4,21,34.1,0,0,4.8,13.2 -2021-04-30T16:00,76.5,22,34.4,0,0,5.1,12.1 -2021-04-30T17:00,75.7,25,37,0,0,6.6,11.4 -2021-04-30T18:00,69.9,53,52,0,0,4.9,11 -2021-04-30T19:00,64,44,41.5,0,0,5.8,7.2 -2021-04-30T20:00,55.1,63,42.7,0,0,4.6,7.8 -2021-04-30T21:00,50.7,73,42.4,0,0,4.3,6.7 -2021-04-30T22:00,49.5,69,39.7,0,0,5,8.5 -2021-04-30T23:00,48.4,64,36.9,0,0,4.6,8.1 -2021-05-01T00:00,47.3,61,34.3,0,0,4.6,7.4 -2021-05-01T01:00,46.9,57,32.4,0,0,4.8,7.6 -2021-05-01T02:00,45.8,58,31.9,0,0,4.8,7.6 -2021-05-01T03:00,45.3,58,31.4,0,0,4.9,7.6 -2021-05-01T04:00,44.3,58,30.5,0,0,6.4,8.1 -2021-05-01T05:00,44.4,60,31.3,0,0,5.9,8.1 -2021-05-01T06:00,50.5,53,33.8,0,0,4.4,7.6 -2021-05-01T07:00,58.8,44,36.7,0,0,4.6,9.4 -2021-05-01T08:00,67.8,38,41,0,0,3.3,9.2 -2021-05-01T09:00,74.7,32,42.9,0,0,2.2,9.2 -2021-05-01T10:00,79,20,34.4,0,0,2.1,8.7 -2021-05-01T11:00,80.8,16,30.5,0,0,5.4,13 -2021-05-01T12:00,81.6,15,29,0,0,7.1,15.7 -2021-05-01T13:00,81.5,14,28.3,0,0,7.9,16.6 -2021-05-01T14:00,81.6,14,28.2,0,0,7.4,16.3 -2021-05-01T15:00,81.3,14,28.2,0,0,6.7,15.7 -2021-05-01T16:00,81,14,27.9,0,0,3.8,14.3 -2021-05-01T17:00,74.5,32,42.5,0,0,8.2,7.8 -2021-05-01T18:00,69.3,41,44.2,0,0,4.7,13.9 -2021-05-01T19:00,62.7,51,44.2,0,0,4.8,7.8 -2021-05-01T20:00,61.1,47,40.8,0,0,4,9.4 -2021-05-01T21:00,59.4,52,41.6,0,0,1.9,6.5 -2021-05-01T22:00,55.1,52,38,0,0,4.7,8.7 -2021-05-01T23:00,53.5,56,38.2,0,0,4.1,7.8 -2021-05-02T00:00,52.7,51,34.9,0,0,4.7,7.8 -2021-05-02T01:00,50.2,55,34.7,0,0,5.9,7.6 -2021-05-02T02:00,48.1,57,33.8,0,0,3.4,7.2 -2021-05-02T03:00,47.1,61,34.4,0,0,4,6 -2021-05-02T04:00,44.1,72,35.8,0,0,5.2,6.3 -2021-05-02T05:00,50.8,64,39.2,0,0,6.1,7.4 -2021-05-02T06:00,53.2,64,41.3,0,0,3.3,7.4 -2021-05-02T07:00,57.7,56,42.1,0,0,4.9,10.5 -2021-05-02T08:00,60.7,52,42.9,0,0,4,11 -2021-05-02T09:00,63.3,47,42.7,0,0,3.5,11.4 -2021-05-02T10:00,65.9,43,43.1,0,0,3.5,12.3 -2021-05-02T11:00,63.4,51,44.8,0.016,0,4,13.2 -2021-05-02T12:00,64,49,44.2,0.004,0,4,16.8 -2021-05-02T13:00,57.1,66,45.9,0.008,0,8.3,17 -2021-05-02T14:00,57.2,68,46.8,0,0,7.1,18.1 -2021-05-02T15:00,60.4,58,45.6,0.004,0,2,14.3 -2021-05-02T16:00,55,74,46.9,0.201,0,9.4,17.4 -2021-05-02T17:00,60.7,44,38.7,0.035,0,14.1,18.8 -2021-05-02T18:00,54.4,65,43,0.004,0,16.3,28.2 -2021-05-02T19:00,51,76,43.5,0.028,0,14.8,29.3 -2021-05-02T20:00,49.8,87,46.1,0.035,0,7.5,24.2 -2021-05-02T21:00,49.4,87,45.8,0.043,0,6.5,20.1 -2021-05-02T22:00,48.8,89,45.6,0.051,0,7.5,17.2 -2021-05-02T23:00,47.3,93,45.3,0.059,0,10.7,17.4 -2021-05-03T00:00,46.5,94,44.9,0.114,0,11.2,18.6 -2021-05-03T01:00,45,93,43.2,0.161,0,16.2,27.1 -2021-05-03T02:00,43.6,95,42.4,0.126,0,12.1,27.5 -2021-05-03T03:00,42.6,96,41.6,0.087,0,12,22.1 -2021-05-03T04:00,41.5,96,40.6,0.079,0,11.5,21.5 -2021-05-03T05:00,41.2,90,38.5,0.083,0,7.3,20.6 -2021-05-03T06:00,41,96,39.8,0.055,0,6.3,15.7 -2021-05-03T07:00,41,95,39.7,0.028,0,6.5,15.4 -2021-05-03T08:00,40.6,94,39.1,0.024,0,7.8,15.7 -2021-05-03T09:00,40.6,96,39.4,0.035,0,6,15.4 -2021-05-03T10:00,40.8,94,39.1,0.039,0,6.3,13 -2021-05-03T11:00,41.4,98,40.8,0.028,0,8.8,16.6 -2021-05-03T12:00,42.5,89,39.7,0.02,0,10.6,20.1 -2021-05-03T13:00,40.8,94,39.1,0.039,0,10.7,20.8 -2021-05-03T14:00,42.6,88,39.2,0.02,0,7.8,19.5 -2021-05-03T15:00,42.9,83,37.9,0.008,0,7.4,18.6 -2021-05-03T16:00,43.8,73,35.9,0.008,0,7.2,17.4 -2021-05-03T17:00,39.9,96,38.8,0.012,0,8.7,15 -2021-05-03T18:00,39.8,97,39.1,0.035,0,5.1,15.4 -2021-05-03T19:00,39.6,91,37.1,0.02,0,5.6,15.9 -2021-05-03T20:00,39.4,91,37,0.016,0,5.6,9.8 -2021-05-03T21:00,36.5,99,36.3,0.055,0,6.5,13.2 -2021-05-03T22:00,36.1,99,35.8,0.035,0,3,11.9 -2021-05-03T23:00,36.6,95,35.2,0.004,0,0.9,7.4 -2021-05-04T00:00,37,93,35.3,0,0,0.5,3.6 -2021-05-04T01:00,36.9,95,35.6,0,0,1.1,2 -2021-05-04T02:00,36.1,98,35.5,0,0,2.4,4.3 -2021-05-04T03:00,36.7,97,35.9,0,0,3.4,6.3 -2021-05-04T04:00,36.7,95,35.3,0,0,2.9,6.3 -2021-05-04T05:00,35.2,97,34.3,0,0,3.2,5.8 -2021-05-04T06:00,37.3,93,35.4,0,0,1.1,4 -2021-05-04T07:00,39.1,86,35.2,0,0,0.6,5.4 -2021-05-04T08:00,42.4,75,35.2,0,0,1.1,7.8 -2021-05-04T09:00,46.2,67,35.8,0,0,0.3,8.5 -2021-05-04T10:00,50.2,60,36.7,0,0,1.3,9.6 -2021-05-04T11:00,53.8,53,37,0,0,2.4,11.2 -2021-05-04T12:00,55.9,48,36.2,0,0,3.5,11.9 -2021-05-04T13:00,58,42,35.1,0,0,3.8,13.4 -2021-05-04T14:00,59,38,33.6,0,0,6.5,14.5 -2021-05-04T15:00,55,55,39.1,0,0,11.2,21 -2021-05-04T16:00,56.5,47,36.5,0,0,5.4,20.8 -2021-05-04T17:00,55.2,57,40.2,0,0,2.9,12.5 -2021-05-04T18:00,52.4,63,40.2,0.004,0,0.7,16.6 -2021-05-04T19:00,48.3,76,41.2,0,0,3,3.8 -2021-05-04T20:00,45,87,41.4,0,0,4.2,6.5 -2021-05-04T21:00,43.1,91,40.6,0,0,3.9,6.9 -2021-05-04T22:00,42.6,90,39.8,0,0,5,7.6 -2021-05-04T23:00,42.1,90,39.4,0,0,4.9,10.3 -2021-05-05T00:00,39.9,95,38.6,0,0,2.8,8.3 -2021-05-05T01:00,37.3,96,36.3,0,0,3,5.8 -2021-05-05T02:00,38.2,96,37,0,0,3,5.8 -2021-05-05T03:00,37.1,93,35.3,0,0,3.2,5.4 -2021-05-05T04:00,35.4,89,32.6,0,0,4,5.8 -2021-05-05T05:00,35.8,94,34.3,0,0,2.2,5.6 -2021-05-05T06:00,38,89,35.2,0,0,3.2,6.7 -2021-05-05T07:00,43.3,77,36.7,0,0,2.8,7.6 -2021-05-05T08:00,47.2,71,38.1,0,0,5.4,12.8 -2021-05-05T09:00,50.8,67,40.4,0,0,7.5,16.6 -2021-05-05T10:00,52.7,63,40.4,0,0,5,18.8 -2021-05-05T11:00,55.1,53,38.1,0,0,4.9,17.2 -2021-05-05T12:00,53.7,56,38.2,0.039,0,4.9,15 -2021-05-05T13:00,56.8,49,37.9,0,0,3.7,13.9 -2021-05-05T14:00,55.3,53,38.3,0.004,0,10.5,18.8 -2021-05-05T15:00,54.4,56,39.2,0,0,10.1,24.8 -2021-05-05T16:00,56.3,49,37.1,0,0,5.5,20.1 -2021-05-05T17:00,55.3,54,39.1,0,0,1.8,13.2 -2021-05-05T18:00,54.6,56,39.1,0,0,0.9,7.4 -2021-05-05T19:00,48.5,72,39.7,0,0,4.1,6.3 -2021-05-05T20:00,45.7,79,39.6,0,0,5.1,8.3 -2021-05-05T21:00,42.5,86,38.8,0,0,4.3,8.3 -2021-05-05T22:00,39.9,91,37.5,0,0,3.9,6.9 -2021-05-05T23:00,37.9,95,36.6,0,0,4,6 -2021-05-06T00:00,36.4,97,35.6,0,0,3.9,5.6 -2021-05-06T01:00,35.4,93,33.5,0,0,2.2,5.1 -2021-05-06T02:00,35.8,84,31.6,0,0,3.5,5.4 -2021-05-06T03:00,36.4,82,31.5,0,0,4.2,6.5 -2021-05-06T04:00,36.1,83,31.6,0,0,4.7,7.4 -2021-05-06T05:00,38.8,75,31.6,0,0,1.4,6 -2021-05-06T06:00,39.6,73,31.7,0,0,2.9,6 -2021-05-06T07:00,43.3,70,34.1,0,0,1,6.3 -2021-05-06T08:00,46.5,68,36.4,0,0,2.5,9.6 -2021-05-06T09:00,50.7,61,37.8,0,0,3.4,11.2 -2021-05-06T10:00,55,55,39,0,0,4.2,13 -2021-05-06T11:00,58.5,50,39.7,0,0,4,13.2 -2021-05-06T12:00,61.7,44,39.6,0,0,5.1,14.1 -2021-05-06T13:00,64.6,39,39.3,0,0,6.5,15.9 -2021-05-06T14:00,66.6,38,39.8,0,0,6.6,16.3 -2021-05-06T15:00,67.8,35,39.4,0,0,6.8,15.7 -2021-05-06T16:00,68,34,38.9,0,0,7.2,15.4 -2021-05-06T17:00,69.1,31,37.5,0,0,6.7,15 -2021-05-06T18:00,64.9,43,41.7,0,0,7.4,13 -2021-05-06T19:00,60.3,46,39.4,0,0,7.9,13.2 -2021-05-06T20:00,56.3,57,41.3,0,0,5.1,13 -2021-05-06T21:00,48.8,80,43,0,0,3.3,8.3 -2021-05-06T22:00,45.4,87,41.7,0,0,3.8,6.3 -2021-05-06T23:00,44.1,87,40.4,0,0,3.7,6.3 -2021-05-07T00:00,41.9,90,39.3,0,0,2.9,5.4 -2021-05-07T01:00,40.4,88,37.2,0,0,3.4,4.7 -2021-05-07T02:00,39.6,83,34.9,0,0,5.3,6.3 -2021-05-07T03:00,39.2,80,33.5,0,0,5,6.5 -2021-05-07T04:00,38.7,78,32.5,0,0,4.8,6 -2021-05-07T05:00,38.5,75,31.3,0,0,5.2,6.5 -2021-05-07T06:00,43.7,63,32.1,0,0,5,7.8 -2021-05-07T07:00,51.4,57,36.6,0,0,3.5,9.2 -2021-05-07T08:00,61.5,48,41.5,0,0,3.6,9.6 -2021-05-07T09:00,70.6,33,40.5,0,0,4.2,11 -2021-05-07T10:00,76.8,21,33.6,0,0,5.7,13 -2021-05-07T11:00,79.3,16,29.3,0,0,6.9,15.2 -2021-05-07T12:00,80.2,16,30.1,0,0,9.1,17.9 -2021-05-07T13:00,79.4,16,29.5,0,0,7,18.3 -2021-05-07T14:00,77.8,17,30.1,0,0,2.6,14.5 -2021-05-07T15:00,79,17,30.6,0,0,7.8,14.1 -2021-05-07T16:00,75.8,23,35.3,0,0,9.3,17.4 -2021-05-07T17:00,75,30,41.7,0,0,7.3,15.7 -2021-05-07T18:00,68.8,51,50.1,0,0,5.7,12.1 -2021-05-07T19:00,63.4,48,43.3,0,0,6.3,9.6 -2021-05-07T20:00,55,70,45.3,0,0,5.7,9.4 -2021-05-07T21:00,52,67,41.5,0,0,4.8,7.8 -2021-05-07T22:00,49.9,63,37.9,0,0,4.3,6.7 -2021-05-07T23:00,49.1,61,36.3,0,0,5.4,8.5 -2021-05-08T00:00,48.3,58,34.1,0,0,5.2,8.7 -2021-05-08T01:00,48.7,51,31.2,0,0,6,9.2 -2021-05-08T02:00,50.2,43,28.7,0,0,8.1,13.2 -2021-05-08T03:00,48.8,45,28.3,0,0,6.8,13.2 -2021-05-08T04:00,49.7,42,27.8,0,0,7.8,12.5 -2021-05-08T05:00,47.4,52,30.8,0,0,6.5,15 -2021-05-08T06:00,51.4,55,35.9,0,0,2.7,11.6 -2021-05-08T07:00,58,43,35.8,0,0,2.4,6.9 -2021-05-08T08:00,62.7,40,38.1,0,0,1.8,7.4 -2021-05-08T09:00,66.8,33,36.8,0,0,5.4,12.8 -2021-05-08T10:00,70.7,27,35.2,0,0,4.3,13.9 -2021-05-08T11:00,72.8,25,34.5,0,0,1.3,15.4 -2021-05-08T12:00,71,34,40.8,0.059,0,11.1,19.7 -2021-05-08T13:00,71.2,22,30.7,0,0,13.8,28.9 -2021-05-08T14:00,70.1,24,31.1,0,0,19.3,33.3 -2021-05-08T15:00,69.2,24,30.8,0,0,17.7,36.7 -2021-05-08T16:00,67.9,23,28.5,0.004,0,8,30.9 -2021-05-08T17:00,61,41,37,0.004,0,3.1,24.4 -2021-05-08T18:00,54.7,67,43.8,0.008,0,11.2,19.9 -2021-05-08T19:00,51,70,41.5,0,0,4.2,18.3 -2021-05-08T20:00,49.3,80,43.3,0.004,0,1.7,7.4 -2021-05-08T21:00,48.5,88,45.1,0.02,0,4.9,11.9 -2021-05-08T22:00,48.5,86,44.3,0.02,0,7.8,12.8 -2021-05-08T23:00,45.7,90,42.8,0.035,0,11.9,18.3 -2021-05-09T00:00,43.8,89,40.7,0.063,0,9.4,22.4 -2021-05-09T01:00,43.3,87,39.6,0.012,0,8.5,15.4 -2021-05-09T02:00,42.6,89,39.5,0.008,0,8.1,15.7 -2021-05-09T03:00,41.9,89,38.9,0.024,0,5.4,13.4 -2021-05-09T04:00,41.4,88,38.1,0.043,0,3.5,9.4 -2021-05-09T05:00,39.8,81,34.5,0.028,0,4.2,7.2 -2021-05-09T06:00,39.5,85,35.4,0.008,0,2.4,7.4 -2021-05-09T07:00,38.8,85,34.6,0.008,0,2.1,5.8 -2021-05-09T08:00,38.6,81,33.3,0.008,0,4.7,10.1 -2021-05-09T09:00,39.4,78,33.2,0.008,0,6.3,13 -2021-05-09T10:00,41.9,71,33.3,0,0,7.4,15.4 -2021-05-09T11:00,46,61,33.3,0.02,0.11,7.2,17.4 -2021-05-09T12:00,48.7,53,32.4,0,0,5.8,16.6 -2021-05-09T13:00,48.8,54,32.8,0.028,0.028,1.7,14.3 -2021-05-09T14:00,49.1,54,33,0.008,0,1.8,8.7 -2021-05-09T15:00,48.9,59,35.1,0.016,0,4.3,10.7 -2021-05-09T16:00,46.6,67,36.2,0.02,0,3.5,11.2 -2021-05-09T17:00,44.9,75,37.5,0.008,0,4.1,9.4 -2021-05-09T18:00,45.1,74,37.2,0.004,0,1.4,8.9 -2021-05-09T19:00,42.2,89,39.2,0,0,3.4,4.5 -2021-05-09T20:00,43,83,38.2,0,0,2.9,4.9 -2021-05-09T21:00,41.3,89,38.2,0,0,4.3,5.4 -2021-05-09T22:00,39.7,93,37.8,0,0,4.7,5.8 -2021-05-09T23:00,39.1,96,38,0,0,4.1,5.8 -2021-05-10T00:00,39.5,98,38.8,0,0,2.8,5.4 -2021-05-10T01:00,40.2,96,39.2,0.004,0,2.8,5.6 -2021-05-10T02:00,40.6,93,38.7,0.008,0,4.5,7.4 -2021-05-10T03:00,40.3,95,38.8,0.008,0,6.6,10.7 -2021-05-10T04:00,39.7,96,38.7,0.008,0,5.2,11.2 -2021-05-10T05:00,39.9,92,37.9,0.004,0,3.7,10.7 -2021-05-10T06:00,40.6,90,37.9,0.008,0,6,10.7 -2021-05-10T07:00,41.5,91,38.9,0.016,0,5.4,12.1 -2021-05-10T08:00,41.7,93,39.7,0.031,0,1.8,10.3 -2021-05-10T09:00,41.6,94,39.9,0.028,0,4.4,9.2 -2021-05-10T10:00,44.5,85,40.2,0.012,0,1.4,12.3 -2021-05-10T11:00,45.9,80,40.2,0.004,0,6.7,15.2 -2021-05-10T12:00,46.9,68,36.8,0.004,0,9,19.5 -2021-05-10T13:00,45.9,71,37.1,0.028,0,8.3,19 -2021-05-10T14:00,48.5,68,38.4,0.008,0,4.3,17 -2021-05-10T15:00,49.1,68,38.8,0.008,0,4.9,11.9 -2021-05-10T16:00,47.1,70,37.8,0.012,0,7.5,14.3 -2021-05-10T17:00,45.7,67,35.5,0.02,0,5.6,14.5 -2021-05-10T18:00,42.8,78,36.3,0.012,0,8.9,12.5 -2021-05-10T19:00,36,99,35.6,0.043,0.055,19.2,31.3 -2021-05-10T20:00,35.1,99,34.8,0.016,0.22,19.6,34.9 -2021-05-10T21:00,35.6,98,35.1,0.024,0.22,13.6,30.4 -2021-05-10T22:00,35.3,99,35.2,0.024,0.193,12,22.1 -2021-05-10T23:00,35.2,99,35,0.02,0.11,9.3,19.5 -2021-05-11T00:00,35.2,99,34.9,0.02,0.055,8.7,15.2 -2021-05-11T01:00,34.7,98,34.2,0.016,0.083,9.9,16.1 -2021-05-11T02:00,34.3,98,33.8,0.008,0.028,10.9,17.7 -2021-05-11T03:00,33.9,97,33.2,0.004,0,10.7,17.9 -2021-05-11T04:00,33.9,96,32.9,0,0,9.7,17.2 -2021-05-11T05:00,33.3,94,31.7,0,0,9.2,15.9 -2021-05-11T06:00,33.8,93,32,0,0.028,8.2,15 -2021-05-11T07:00,35.3,89,32.4,0.004,0,8.4,15.9 -2021-05-11T08:00,37.3,82,32.3,0,0,8.3,16.6 -2021-05-11T09:00,38.2,80,32.5,0,0,8.1,17 -2021-05-11T10:00,40.2,74,32.5,0,0,8.1,17.4 -2021-05-11T11:00,41.5,72,33.1,0,0,7.5,17.4 -2021-05-11T12:00,41,74,33.4,0.004,0,6.7,16.8 -2021-05-11T13:00,40.6,78,34.3,0.016,0,5.9,15 -2021-05-11T14:00,41.9,77,35.2,0.02,0,4.8,14.3 -2021-05-11T15:00,41.3,80,35.5,0.016,0,6.1,13.4 -2021-05-11T16:00,43.3,71,34.6,0.004,0,5.8,15.7 -2021-05-11T17:00,38.4,91,36.1,0,0,8.7,13.6 -2021-05-11T18:00,38.7,88,35.4,0,0,5.2,16.1 -2021-05-11T19:00,37,94,35.4,0,0,2,10.3 -2021-05-11T20:00,34.8,98,34.2,0,0,2.3,2.9 -2021-05-11T21:00,35.6,98,35.2,0,0,1.1,3.4 -2021-05-11T22:00,33.8,98,33.2,0,0,2.4,3.8 -2021-05-11T23:00,32.6,96,31.7,0,0,2.2,4.3 -2021-05-12T00:00,32.6,97,31.9,0,0,2.2,4.5 -2021-05-12T01:00,31.4,97,30.7,0,0,0.9,4.3 -2021-05-12T02:00,30.6,95,29.4,0,0,1.1,2.9 -2021-05-12T03:00,29,95,27.7,0,0,1.1,3.1 -2021-05-12T04:00,27.2,94,25.7,0,0,1.1,3.1 -2021-05-12T05:00,34.4,96,33.5,0,0,2.3,3.4 -2021-05-12T06:00,35,93,33.2,0,0,1.8,6 -2021-05-12T07:00,35.5,97,34.8,0,0,2.1,6.7 -2021-05-12T08:00,36.9,90,34.1,0,0,3,9.6 -2021-05-12T09:00,42.8,77,36.1,0,0,2.1,10.5 -2021-05-12T10:00,48.9,65,37.7,0,0,1.9,10.5 -2021-05-12T11:00,53.4,55,37.7,0,0,2.9,11.9 -2021-05-12T12:00,56.7,43,34.3,0,0,3.8,12.8 -2021-05-12T13:00,58.6,37,32.2,0,0,4.9,13.6 -2021-05-12T14:00,59.7,34,31.6,0,0,4.3,14.1 -2021-05-12T15:00,60.5,33,31.4,0,0,4.4,13 -2021-05-12T16:00,60.7,33,31.5,0,0,6,13.2 -2021-05-12T17:00,60.4,38,34.6,0,0,4.1,14.8 -2021-05-12T18:00,58.2,49,39.1,0,0,3.2,8.7 -2021-05-12T19:00,51.3,58,36.9,0,0,6.5,7.6 -2021-05-12T20:00,51.9,52,34.8,0,0,2.5,7.6 -2021-05-12T21:00,43.7,75,36.1,0,0,2.9,3.1 -2021-05-12T22:00,39.5,88,36.2,0,0,3.3,5.6 -2021-05-12T23:00,37.2,94,35.6,0,0,4.4,6.9 -2021-05-13T00:00,36.2,92,34.2,0,0,3.5,6.9 -2021-05-13T01:00,35.7,90,33.2,0,0,3.6,5.4 -2021-05-13T02:00,34.3,91,31.8,0,0,4,5.6 -2021-05-13T03:00,34.5,85,30.4,0,0,3.2,5.4 -2021-05-13T04:00,34.5,80,28.9,0,0,3.4,4 -2021-05-13T05:00,33,84,28.8,0,0,4.7,4.7 -2021-05-13T06:00,38.7,70,29.7,0,0,4.4,8.1 -2021-05-13T07:00,44.9,63,33,0,0,4.3,9.8 -2021-05-13T08:00,52.9,50,34.7,0,0,4.5,11.4 -2021-05-13T09:00,60.3,39,35.4,0,0,3.5,11.6 -2021-05-13T10:00,64.9,34,35.9,0,0,1.1,10.7 -2021-05-13T11:00,67.6,30,35.4,0,0,0.2,9.2 -2021-05-13T12:00,70.1,26,33.8,0,0,1.3,17 -2021-05-13T13:00,71,25,33.1,0,0,2.5,15.9 -2021-05-13T14:00,72.6,22,31.1,0,0,7,16.3 -2021-05-13T15:00,70.8,26,34,0,0,7.9,20.8 -2021-05-13T16:00,69.9,28,34.9,0,0,8.1,16.1 -2021-05-13T17:00,68.8,37,41.4,0,0,3.4,15.9 -2021-05-13T18:00,60.3,57,45,0,0,12.4,20.1 -2021-05-13T19:00,54.8,68,44.4,0,0,8.3,20.1 -2021-05-13T20:00,50.7,79,44.3,0,0,3.6,13.6 -2021-05-13T21:00,46.4,87,42.9,0,0,2.7,6 -2021-05-13T22:00,45.4,86,41.5,0,0,3.7,5.8 -2021-05-13T23:00,44.4,80,38.7,0,0,4.2,7.6 -2021-05-14T00:00,44.7,76,37.5,0,0,3.5,7.2 -2021-05-14T01:00,41.1,84,36.8,0,0,3.8,4.7 -2021-05-14T02:00,41.9,78,35.5,0,0,3.6,4.9 -2021-05-14T03:00,39.9,82,34.9,0,0,2.8,4.5 -2021-05-14T04:00,38.5,86,34.8,0,0,3.2,4.7 -2021-05-14T05:00,39.7,82,34.6,0,0,3,4.5 -2021-05-14T06:00,44.4,72,36.1,0,0,1.1,4.3 -2021-05-14T07:00,49.6,64,37.9,0,0,0.8,6 -2021-05-14T08:00,53.2,64,41.3,0,0,1.5,8.3 -2021-05-14T09:00,57.5,58,42.8,0,0,2.2,10.1 -2021-05-14T10:00,61.3,52,43.3,0,0,2.5,15.2 -2021-05-14T11:00,63.5,49,44.1,0,0,3,11 -2021-05-14T12:00,67.2,44,44.7,0,0,6,14.5 -2021-05-14T13:00,68.1,41,43.8,0,0,4.6,15.2 -2021-05-14T14:00,68.1,38,41.5,0,0,1.4,13 -2021-05-14T15:00,68.6,37,41.6,0,0,4.5,10.1 -2021-05-14T16:00,65.5,48,45.5,0,0,9.8,20.8 -2021-05-14T17:00,65.1,53,47.4,0,0,3.3,18.1 -2021-05-14T18:00,63.4,67,52.1,0,0,0.4,7.6 -2021-05-14T19:00,59.5,65,47.9,0,0,10.3,14.3 -2021-05-14T20:00,54.1,76,46.7,0,0,14.4,34 -2021-05-14T21:00,51.5,81,46,0,0,3.8,23.3 -2021-05-14T22:00,51.3,80,45.4,0,0,5.7,9.2 -2021-05-14T23:00,51.4,78,44.9,0,0,5.4,9.6 -2021-05-15T00:00,49.2,84,44.7,0,0,4.8,8.9 -2021-05-15T01:00,49.1,86,45.1,0,0,5.2,8.7 -2021-05-15T02:00,50.5,84,45.7,0,0,5.2,10.3 -2021-05-15T03:00,50.1,85,45.9,0,0,4.5,8.3 -2021-05-15T04:00,49.8,86,45.7,0,0,3.5,7.2 -2021-05-15T05:00,49.7,91,47.2,0,0,3.8,6.7 -2021-05-15T06:00,51,84,46.3,0.004,0,5.1,9.2 -2021-05-15T07:00,52.2,84,47.6,0.004,0,3.8,9.6 -2021-05-15T08:00,53.2,84,48.7,0.004,0,1.2,8.3 -2021-05-15T09:00,56.4,74,48.3,0.004,0,0.8,7.6 -2021-05-15T10:00,58.2,68,47.8,0.004,0,0.7,7.6 -2021-05-15T11:00,60.7,62,47.6,0,0,2.8,9.4 -2021-05-15T12:00,64.1,55,47.8,0,0,7.2,17 -2021-05-15T13:00,67.6,52,49.4,0,0,7,17.4 -2021-05-15T14:00,62.6,67,51.6,0.047,0,2.4,18.1 -2021-05-15T15:00,64.5,58,49.5,0,0,8.4,16.8 -2021-05-15T16:00,64.1,59,49.7,0,0,4.2,16.6 -2021-05-15T17:00,57.4,81,51.4,0,0,10.3,10.3 -2021-05-15T18:00,57.5,80,51.3,0,0,5.8,18.1 -2021-05-15T19:00,56.4,82,51.1,0,0,3.2,10.7 -2021-05-15T20:00,52.8,93,50.8,0,0,3.1,5.6 -2021-05-15T21:00,53.1,94,51.4,0,0,3.5,6 -2021-05-15T22:00,50.3,96,49.3,0,0,3.8,6 -2021-05-15T23:00,47.8,97,46.9,0,0,4.8,6.5 -2021-05-16T00:00,48.7,97,48,0,0,0.3,6.3 -2021-05-16T01:00,46,96,45.1,0,0,3.3,5.6 -2021-05-16T02:00,46.9,93,45,0,0,6.2,11 -2021-05-16T03:00,47.6,88,44.3,0,0,3.3,10.1 -2021-05-16T04:00,48.7,81,43.2,0,0,6.5,9.6 -2021-05-16T05:00,50.2,82,44.9,0,0,5.4,11 -2021-05-16T06:00,51.7,85,47.2,0,0,6.7,11.2 -2021-05-16T07:00,53.3,86,49.2,0,0,7.7,12.5 -2021-05-16T08:00,54.6,83,49.6,0,0,11,19 -2021-05-16T09:00,54.1,86,50,0.012,0,11,19.9 -2021-05-16T10:00,56.5,80,50.5,0.016,0,9.2,19.2 -2021-05-16T11:00,59.4,73,50.6,0.012,0,8.4,17.2 -2021-05-16T12:00,62.2,64,49.8,0,0,7.8,17.4 -2021-05-16T13:00,63.6,55,47.3,0.004,0,6.7,16.6 -2021-05-16T14:00,64.5,53,47.1,0.008,0,8.1,16.6 -2021-05-16T15:00,63.9,54,46.9,0.004,0,8.6,16.8 -2021-05-16T16:00,57.1,81,51.2,0.067,0,3.3,16.8 -2021-05-16T17:00,55,85,50.6,0.047,0,4.4,11 -2021-05-16T18:00,56.4,80,50.2,0,0,2.2,10.3 -2021-05-16T19:00,53.3,90,50.5,0.004,0,3.3,5.4 -2021-05-16T20:00,51.9,92,49.6,0,0,4.3,5.6 -2021-05-16T21:00,53.3,88,49.7,0,0,1.8,5.4 -2021-05-16T22:00,50.5,94,49,0,0,3.1,4.7 -2021-05-16T23:00,50.6,95,49.4,0,0,3,6 -2021-05-17T00:00,48.8,96,47.8,0,0,3.4,5.1 -2021-05-17T01:00,48.7,94,47.1,0,0,3.2,4.9 -2021-05-17T02:00,49.3,92,46.9,0.004,0,2.5,4 -2021-05-17T03:00,49.1,91,46.6,0,0,2.2,3.8 -2021-05-17T04:00,48.7,92,46.6,0,0,0.3,2.9 -2021-05-17T05:00,49.6,89,46.4,0,0,2.5,5.6 -2021-05-17T06:00,49.9,89,46.7,0,0,1.9,4.7 -2021-05-17T07:00,52.2,84,47.5,0,0,1.2,5.4 -2021-05-17T08:00,54.2,80,48.2,0,0,2.9,8.1 -2021-05-17T09:00,57,72,48.1,0,0,1.8,9.6 -2021-05-17T10:00,59.5,65,47.8,0,0,2.7,8.7 -2021-05-17T11:00,61,62,47.9,0.004,0,3.4,15 -2021-05-17T12:00,57.5,73,48.8,0.043,0,7.2,16.8 -2021-05-17T13:00,60.9,61,47.5,0,0,3.2,15.4 -2021-05-17T14:00,61.4,57,46,0.012,0,4.1,14.3 -2021-05-17T15:00,60.4,62,47.1,0,0,4.6,15.9 -2021-05-17T16:00,60.4,63,47.8,0,0,1.9,11.6 -2021-05-17T17:00,58.6,66,47.2,0.008,0,3.4,12.1 -2021-05-17T18:00,55,85,50.6,0.154,0,3.6,12.1 -2021-05-17T19:00,52.5,95,51.3,0.181,0,4.6,12.1 -2021-05-17T20:00,52.1,95,50.7,0.039,0,4.6,11.2 -2021-05-17T21:00,52,95,50.5,0.024,0,5.5,10.1 -2021-05-17T22:00,51.5,97,50.6,0.012,0,1.6,8.9 -2021-05-17T23:00,51.1,97,50.2,0,0,2.2,2.9 -2021-05-18T00:00,48.4,98,47.8,0,0,3.5,3.1 -2021-05-18T01:00,47.2,99,47,0,0,4,6.5 -2021-05-18T02:00,47.1,99,46.8,0,0,1.7,5.1 -2021-05-18T03:00,47.4,98,46.9,0.004,0,3.6,5.8 -2021-05-18T04:00,47.2,94,45.5,0,0,3,6.9 -2021-05-18T05:00,47.6,94,46,0,0,7.8,4.9 -2021-05-18T06:00,48.2,93,46.3,0,0,7.5,13 -2021-05-18T07:00,49.3,89,46.2,0,0,7.6,14.1 -2021-05-18T08:00,51.7,80,45.9,0,0,7.5,14.3 -2021-05-18T09:00,54.2,71,45.1,0,0,8.6,17 -2021-05-18T10:00,54.1,71,44.8,0.008,0,6.3,17 -2021-05-18T11:00,54.6,70,45.1,0.012,0,1.9,12.8 -2021-05-18T12:00,54.5,74,46.3,0.008,0,2.5,7.8 -2021-05-18T13:00,54.9,75,47.2,0.012,0,3.2,10.3 -2021-05-18T14:00,54.9,80,48.9,0.024,0,5.3,11.2 -2021-05-18T15:00,55.3,80,49.3,0.008,0,5.2,11.6 -2021-05-18T16:00,56.2,76,48.7,0,0,7.2,13.6 -2021-05-18T17:00,57.5,66,46.4,0,0,4.1,14.5 -2021-05-18T18:00,56.5,75,48.6,0,0,2.9,8.1 -2021-05-18T19:00,51.7,86,47.7,0,0,4.8,6.5 -2021-05-18T20:00,49.8,85,45.6,0,0,4.9,7.6 -2021-05-18T21:00,46.9,91,44.2,0,0,5.8,7.6 -2021-05-18T22:00,44.1,96,43,0,0,4,7.4 -2021-05-18T23:00,42.3,98,41.8,0,0,3.6,5.1 -2021-05-19T00:00,40.8,99,40.6,0,0,3.2,5.1 -2021-05-19T01:00,39.8,99,39.7,0,0,3.9,5.4 -2021-05-19T02:00,39.4,98,38.9,0,0,2.7,5.4 -2021-05-19T03:00,38.7,99,38.3,0,0,1.9,4.7 -2021-05-19T04:00,37.9,99,37.5,0,0,2.8,3.8 -2021-05-19T05:00,38.5,96,37.4,0,0,3.2,4.9 -2021-05-19T06:00,43.5,86,39.5,0,0,2.5,6 -2021-05-19T07:00,49.7,73,41.5,0,0,2.2,7.6 -2021-05-19T08:00,55.2,61,41.9,0,0,1.9,8.5 -2021-05-19T09:00,60.4,54,43.5,0,0,1.4,8.5 -2021-05-19T10:00,64.5,49,44.9,0,0,4.3,12.3 -2021-05-19T11:00,67.1,44,44.4,0,0,4.9,13.4 -2021-05-19T12:00,69.5,40,44.2,0,0,5.3,13.9 -2021-05-19T13:00,69,43,45.5,0.004,0,10.8,22.4 -2021-05-19T14:00,68.5,44,45.6,0,0,7.7,21.9 -2021-05-19T15:00,68.7,42,44.9,0,0,6.2,16.6 -2021-05-19T16:00,68.6,43,45.1,0,0,6.8,14.3 -2021-05-19T17:00,67,45,45.2,0.004,0,0.9,14.3 -2021-05-19T18:00,65.3,57,49.9,0,0,2.7,6 -2021-05-19T19:00,58.6,72,49.6,0,0,4.4,6.5 -2021-05-19T20:00,53.5,84,48.8,0,0,4.7,7.2 -2021-05-19T21:00,51.4,88,48,0,0,4.3,6.9 -2021-05-19T22:00,48.8,92,46.6,0,0,4.3,7.2 -2021-05-19T23:00,46.9,93,44.9,0,0,4.1,6.7 -2021-05-20T00:00,45.7,88,42.4,0,0,3.8,6.7 -2021-05-20T01:00,43.6,87,40.1,0,0,4.8,5.8 -2021-05-20T02:00,44.2,81,38.7,0,0,3.5,5.8 -2021-05-20T03:00,42.4,82,37.4,0,0,3.3,4.3 -2021-05-20T04:00,41.5,80,35.9,0,0,3.1,4.9 -2021-05-20T05:00,41,85,36.8,0,0,2.2,4.7 -2021-05-20T06:00,47.4,73,39.1,0,0,4,8.7 -2021-05-20T07:00,54.3,65,42.7,0,0,2.6,7.6 -2021-05-20T08:00,61.7,54,44.8,0,0,1.6,9.2 -2021-05-20T09:00,67.1,47,46,0,0,0.7,7.8 -2021-05-20T10:00,72.2,40,46.9,0,0,3,10.1 -2021-05-20T11:00,75.5,32,43.7,0,0,4.3,11.9 -2021-05-20T12:00,78.1,22,36.1,0,0,12.3,21.7 -2021-05-20T13:00,78.5,22,36.2,0,0,11.8,25.5 -2021-05-20T14:00,80.8,21,37,0,0,13.1,25.5 -2021-05-20T15:00,78.4,20,34.3,0,0,9.6,24.4 -2021-05-20T16:00,75.9,28,40.4,0,0,3.4,19.9 -2021-05-20T17:00,72.1,36,43.7,0,0,5.8,11.6 -2021-05-20T18:00,69.5,47,48.2,0,0,3.9,13.6 -2021-05-20T19:00,65.1,53,47.8,0,0,4.1,6.5 -2021-05-20T20:00,58,70,48.3,0,0,3.8,5.1 -2021-05-20T21:00,54.2,80,48.3,0,0,4.2,6.3 -2021-05-20T22:00,51.4,81,46,0,0,4.1,6.5 -2021-05-20T23:00,49.6,66,38.9,0,0,5.8,7.8 -2021-05-21T00:00,50.7,51,33.4,0,0,6.6,9.6 -2021-05-21T01:00,54.1,41,30.7,0,0,6.7,11 -2021-05-21T02:00,51.7,48,32.5,0,0,7.4,11.9 -2021-05-21T03:00,50.1,53,33.6,0,0,6.8,12.5 -2021-05-21T04:00,48.3,56,33.4,0,0,6.4,11.4 -2021-05-21T05:00,49.6,52,32.7,0,0,6.5,13 -2021-05-21T06:00,55.5,46,35,0,0,9,14.5 -2021-05-21T07:00,62.3,41,38.5,0,0,9.9,19.5 -2021-05-21T08:00,62.4,46,41.2,0,0,7.8,20.1 -2021-05-21T09:00,70.8,36,42.6,0,0,7.9,15.7 -2021-05-21T10:00,73.9,27,38.1,0,0,17.7,30.4 -2021-05-21T11:00,76.9,25,37.9,0,0,15.1,31.1 -2021-05-21T12:00,79,22,36.3,0,0,13.9,26.8 -2021-05-21T13:00,79,23,37.9,0,0,17.3,30 -2021-05-21T14:00,79.2,23,37.7,0,0,18.5,32 -2021-05-21T15:00,78.2,24,38.4,0,0,15,32 -2021-05-21T16:00,75.3,30,41.5,0,0,15.3,28.4 -2021-05-21T17:00,73.8,35,44.7,0,0,5.1,26.6 -2021-05-21T18:00,71.5,47,50.2,0,0,4.1,9.8 -2021-05-21T19:00,65.8,51,47.1,0,0,8,13.4 -2021-05-21T20:00,65.2,40,40,0,0,11.5,18.6 -2021-05-21T21:00,65,38,38.8,0,0,12.2,22.4 -2021-05-21T22:00,61,46,39.8,0,0,7.8,20.4 -2021-05-21T23:00,55.9,57,41,0,0,5.8,12.8 -2021-05-22T00:00,54.1,61,40.7,0,0,5.3,8.7 -2021-05-22T01:00,53.1,63,40.6,0,0,5.8,9.4 -2021-05-22T02:00,48.6,76,41.5,0,0,4.8,9.8 -2021-05-22T03:00,48.1,79,41.9,0,0,4,6.5 -2021-05-22T04:00,45.8,91,43.4,0,0,3.2,6.9 -2021-05-22T05:00,47.7,89,44.6,0,0,3.6,4.9 -2021-05-22T06:00,49.2,87,45.6,0,0,2.1,5.6 -2021-05-22T07:00,52.8,78,46,0,0,5.9,12.1 -2021-05-22T08:00,56.5,71,47.1,0,0,6.3,15.4 -2021-05-22T09:00,60.4,64,48.1,0,0,7.4,16.6 -2021-05-22T10:00,63.7,58,48.8,0,0,7.8,17.9 -2021-05-22T11:00,66.8,54,49.5,0,0,7.4,18.3 -2021-05-22T12:00,68.6,51,49.6,0,0,6.3,17.7 -2021-05-22T13:00,70.2,48,49.8,0,0,3.7,15.9 -2021-05-22T14:00,65.7,62,52.3,0.051,0,3.3,19.5 -2021-05-22T15:00,68.9,55,51.9,0,0,2.8,26.4 -2021-05-22T16:00,68.9,48,48.3,0.02,0,8.6,20.6 -2021-05-22T17:00,60.2,72,51,0,0,14.5,28.6 -2021-05-22T18:00,55.3,85,50.9,0,0,17.2,30.6 -2021-05-22T19:00,54.5,85,50.1,0,0,11.9,28.9 -2021-05-22T20:00,55,83,50,0,0,5.7,19.7 -2021-05-22T21:00,53.9,86,49.9,0,0,3.8,9.4 -2021-05-22T22:00,55.2,80,49.1,0,0,3.4,5.8 -2021-05-22T23:00,51.8,91,49.2,0,0,2.7,4.3 -2021-05-23T00:00,50.5,96,49.5,0,0,2.2,4.5 -2021-05-23T01:00,51.4,95,50.1,0,0,2.3,4 -2021-05-23T02:00,51.5,95,50.1,0,0,4.3,6.3 -2021-05-23T03:00,52.1,91,49.6,0.008,0,7.2,11.2 -2021-05-23T04:00,52.3,94,50.6,0.024,0,2.8,26.2 -2021-05-23T05:00,52,92,49.8,0,0,4.3,5.1 -2021-05-23T06:00,52.9,90,50.1,0,0,0.9,7.2 -2021-05-23T07:00,54.7,89,51.4,0,0,2.8,8.7 -2021-05-23T08:00,59.2,75,51.3,0,0,3.1,10.1 -2021-05-23T09:00,64.2,63,51.2,0,0,4.8,12.1 -2021-05-23T10:00,70.1,39,44.1,0,0,12.1,27.3 -2021-05-23T11:00,73.5,23,33.2,0,0,16.8,29.5 -2021-05-23T12:00,74.1,22,33.4,0,0,19,33.1 -2021-05-23T13:00,74,22,32.7,0,0,20.2,36.2 -2021-05-23T14:00,72.7,21,30.3,0,0,18.1,36.9 -2021-05-23T15:00,73.3,17,25.3,0,0,15.8,32.2 -2021-05-23T16:00,71.5,17,24,0,0,13.5,28.6 -2021-05-23T17:00,69.1,18,24,0,0,11.1,23.9 -2021-05-23T18:00,66.5,23,27.4,0,0,10.7,18.8 -2021-05-23T19:00,61.6,23,23.8,0,0,9.9,19.7 -2021-05-23T20:00,53.9,40,30.2,0,0,6.4,15.9 -2021-05-23T21:00,50.5,51,33.2,0,0,4,7.8 -2021-05-23T22:00,48.7,58,34.7,0,0,4.7,6.5 -2021-05-23T23:00,46,64,34.5,0,0,3.8,6.7 -2021-05-24T00:00,45.8,56,30.8,0,0,5,8.1 -2021-05-24T01:00,44.5,60,31.5,0,0,4.9,8.3 -2021-05-24T02:00,45.1,57,30.9,0,0,2.9,7.4 -2021-05-24T03:00,41.4,66,30.7,0,0,4,4.9 -2021-05-24T04:00,41.1,61,28.5,0,0,4.4,6.5 -2021-05-24T05:00,39.7,71,31,0,0,4.7,6.5 -2021-05-24T06:00,43.7,59,30.3,0,0,4.9,9.4 -2021-05-24T07:00,49.6,51,32.1,0,0,3.5,9.6 -2021-05-24T08:00,55.9,37,30.2,0,0,3.9,11 -2021-05-24T09:00,60.9,31,30.1,0,0,3.9,11.9 -2021-05-24T10:00,64.8,25,28.1,0,0,1.4,11.9 -2021-05-24T11:00,67.1,21,26.3,0,0,1.9,9.6 -2021-05-24T12:00,69.3,21,27.8,0,0,6.2,14.8 -2021-05-24T13:00,71,21,28.7,0,0,8.8,19.2 -2021-05-24T14:00,72.7,20,29.5,0,0,7.3,19.2 -2021-05-24T15:00,72.5,22,31.2,0,0,10,19.5 -2021-05-24T16:00,71.4,22,31.1,0,0,9.5,21 -2021-05-24T17:00,70.3,23,30.2,0,0,7,18.3 -2021-05-24T18:00,68.2,28,33.6,0,0,6.8,13 -2021-05-24T19:00,62.3,38,36.2,0,0,6.7,11.2 -2021-05-24T20:00,57.7,44,35.7,0,0,4.6,7.8 -2021-05-24T21:00,53.6,54,37.1,0,0,3.4,6 -2021-05-24T22:00,49.1,69,39.3,0,0,2.7,6.7 -2021-05-24T23:00,49,65,37.7,0,0,4.4,6.5 -2021-05-25T00:00,49.6,53,33.1,0,0,4,7.4 -2021-05-25T01:00,48.7,60,35.3,0,0,4.5,6.9 -2021-05-25T02:00,48.1,46,28.4,0,0,6.9,11 -2021-05-25T03:00,46.9,43,25.8,0,0,7.4,12.5 -2021-05-25T04:00,44.7,48,26.3,0,0,4.6,12.1 -2021-05-25T05:00,43.3,71,34.6,0,0,4.1,7.4 -2021-05-25T06:00,49.5,60,36,0,0,6.1,11 -2021-05-25T07:00,55.3,53,38.7,0,0,4.8,11 -2021-05-25T08:00,60.2,43,37.9,0,0,4.9,12.1 -2021-05-25T09:00,64.1,34,35.4,0,0,3.8,12.5 -2021-05-25T10:00,67.3,28,33.4,0,0,1.8,11.6 -2021-05-25T11:00,69.3,25,31.8,0,0,1.1,9.6 -2021-05-25T12:00,70.2,24,32.2,0,0,2.2,9.8 -2021-05-25T13:00,71.9,23,32.1,0,0,2.1,10.5 -2021-05-25T14:00,73.6,22,31.8,0,0,2.2,9.8 -2021-05-25T15:00,74.1,21,31.5,0,0,8.4,16.1 -2021-05-25T16:00,73.5,23,33,0,0,10.3,19.9 -2021-05-25T17:00,70.7,34,40.8,0,0,12.6,19 -2021-05-25T18:00,70.1,39,43.7,0,0,3.5,20.8 -2021-05-25T19:00,63.5,48,43.7,0,0,9.4,14.8 -2021-05-25T20:00,60.6,50,41.6,0,0,5.6,15.4 -2021-05-25T21:00,56.5,57,41.4,0,0,5.7,8.7 -2021-05-25T22:00,54,64,42.3,0,0,4.1,7.8 -2021-05-25T23:00,52.1,68,42,0,0,5.5,8.9 -2021-05-26T00:00,50.1,70,40.8,0,0,4.2,9.2 -2021-05-26T01:00,50.1,70,40.7,0,0,6.2,9.6 -2021-05-26T02:00,51,67,40.5,0,0,7.5,12.3 -2021-05-26T03:00,49.5,68,39.4,0,0,7.3,12.3 -2021-05-26T04:00,47.7,71,38.6,0,0,5.3,12.1 -2021-05-26T05:00,46.5,74,38.7,0,0,3.3,8.7 -2021-05-26T06:00,51.4,62,38.7,0,0,2.4,6 -2021-05-26T07:00,56.7,51,38.8,0,0,0.9,6.5 -2021-05-26T08:00,59.5,49,40.3,0,0,1.7,6.9 -2021-05-26T09:00,63.4,47,42.7,0,0,2.9,9.6 -2021-05-26T10:00,69.7,42,45.8,0,0,2.3,11 -2021-05-26T11:00,75.8,30,41.9,0,0,3.6,10.1 -2021-05-26T12:00,78.9,16,29.3,0,0,9.7,17.9 -2021-05-26T13:00,80.2,15,28.6,0,0,8.2,18.8 -2021-05-26T14:00,78.4,17,29.8,0,0,9.3,19.5 -2021-05-26T15:00,77,33,45.9,0,0,6.3,17.4 -2021-05-26T16:00,73.9,36,45,0,0,9.7,20.6 -2021-05-26T17:00,69.8,35,41.1,0,0,3.5,26.2 -2021-05-26T18:00,67.4,41,43,0,0,6.5,11 -2021-05-26T19:00,63.1,48,43.3,0,0,7.1,12.1 -2021-05-26T20:00,61.2,52,43.2,0,0,7.5,11.9 -2021-05-26T21:00,57.9,47,37.9,0,0,6.7,12.8 -2021-05-26T22:00,53.9,45,32.9,0,0,6.9,11 -2021-05-26T23:00,53,41,29.8,0,0,4.9,15.7 -2021-05-27T00:00,54,45,33.2,0,0,1.4,8.7 -2021-05-27T01:00,49.4,56,34.2,0,0,3,6 -2021-05-27T02:00,51.6,52,34.7,0,0,6.2,7.4 -2021-05-27T03:00,55.4,43,33.1,0,0,2.7,7.6 -2021-05-27T04:00,47.8,60,34.5,0,0,6.5,6.7 -2021-05-27T05:00,48.7,74,40.6,0,0,4.6,8.3 -2021-05-27T06:00,50.8,75,43.3,0,0,2.1,7.4 -2021-05-27T07:00,52.9,75,45.2,0,0,0.9,6 -2021-05-27T08:00,56.3,60,42.7,0,0,1.1,7.8 -2021-05-27T09:00,60.2,51,42.1,0,0,3.2,11.2 -2021-05-27T10:00,63.6,46,42.5,0,0,3.5,12.3 -2021-05-27T11:00,66.7,41,42.2,0,0,3.6,12.3 -2021-05-27T12:00,69.3,37,41.6,0,0,3,12.8 -2021-05-27T13:00,71.4,34,41.5,0,0,5.7,14.5 -2021-05-27T14:00,71.8,32,40.6,0,0,6.4,15.7 -2021-05-27T15:00,71.9,32,40.5,0,0,5.2,15.7 -2021-05-27T16:00,72.1,31,40.2,0,0,3.7,13.2 -2021-05-27T17:00,71.7,31,39.1,0,0,5.3,10.5 -2021-05-27T18:00,70,38,43,0,0,4.1,10.7 -2021-05-27T19:00,66.6,49,46.9,0,0,2.9,6.9 -2021-05-27T20:00,61.9,59,47.6,0,0,4.6,5.6 -2021-05-27T21:00,60.5,62,47.5,0,0,4.4,5.6 -2021-05-27T22:00,58.5,66,47.2,0,0,0.2,5.4 -2021-05-27T23:00,52.7,80,46.8,0,0,5.2,6.9 -2021-05-28T00:00,52.1,79,45.8,0,0,4.4,6.9 -2021-05-28T01:00,49.8,76,42.7,0,0,4.2,7.2 -2021-05-28T02:00,47.9,68,37.9,0,0,4.5,6.5 -2021-05-28T03:00,47.2,62,34.7,0,0,4.5,6.5 -2021-05-28T04:00,47.5,58,33.6,0,0,4.3,7.4 -2021-05-28T05:00,45.4,83,40.6,0,0,0.7,5.4 -2021-05-28T06:00,46,84,41.5,0,0,1.4,5.1 -2021-05-28T07:00,49,78,42.4,0,0,3.7,9.4 -2021-05-28T08:00,55.8,63,43.4,0,0,3.5,13.2 -2021-05-28T09:00,63.6,48,43.3,0,0,2,11.2 -2021-05-28T10:00,70.1,36,42,0,0,4,12.3 -2021-05-28T11:00,75.6,27,38.9,0,0,4.1,12.8 -2021-05-28T12:00,78.4,18,31.3,0,0,4.2,13.4 -2021-05-28T13:00,81,15,29.5,0,0,3.8,12.5 -2021-05-28T14:00,76.5,25,38.1,0,0,10.3,20.6 -2021-05-28T15:00,75.8,21,33.6,0,0,3,20.4 -2021-05-28T16:00,76.5,23,35.8,0,0,6.3,13 -2021-05-28T17:00,75.8,26,38.8,0,0,4.9,15 -2021-05-28T18:00,71.8,36,43.6,0,0,6.8,11.2 -2021-05-28T19:00,65.4,51,47,0,0,3.8,13 -2021-05-28T20:00,61.4,62,48.2,0,0,5.6,9.2 -2021-05-28T21:00,58.8,64,46.7,0,0,4.2,9.2 -2021-05-28T22:00,55.5,66,44.2,0,0,4.2,7.6 -2021-05-28T23:00,54.4,64,42.4,0,0,5.7,9.2 -2021-05-29T00:00,53.6,58,39.2,0,0,6.2,10.5 -2021-05-29T01:00,51.5,58,37.2,0,0,4.6,10.3 -2021-05-29T02:00,50.6,57,35.8,0,0,4.9,9.2 -2021-05-29T03:00,48,64,36.6,0,0,3.5,7.8 -2021-05-29T04:00,46.9,65,35.7,0,0,3.7,5.6 -2021-05-29T05:00,46.6,70,37.4,0,0,4.1,5.6 -2021-05-29T06:00,52,63,39.9,0,0,2.6,7.4 -2021-05-29T07:00,59.7,51,41.5,0,0,0,6 -2021-05-29T08:00,65.1,41,40.9,0,0,2,7.8 -2021-05-29T09:00,69.5,30,37,0,0,5,12.1 -2021-05-29T10:00,71.2,32,39.7,0,0,8.6,18.1 -2021-05-29T11:00,72.1,35,43.1,0,0,9.8,20.4 -2021-05-29T12:00,72.4,38,45.5,0,0,8,20.6 -2021-05-29T13:00,72.1,41,47.2,0,0,2.6,17.7 -2021-05-29T14:00,72.2,39,46,0,0,3.9,11.4 -2021-05-29T15:00,69.8,48,49.1,0.02,0,2.1,11.4 -2021-05-29T16:00,68.8,47,47.8,0,0,9.9,20.1 -2021-05-29T17:00,62.8,68,52.3,0,0,2.6,24.2 -2021-05-29T18:00,62.8,66,51.4,0,0,1.9,7.6 -2021-05-29T19:00,60.7,71,51.1,0,0,8.1,12.3 -2021-05-29T20:00,57.2,76,49.8,0,0,7,15.4 -2021-05-29T21:00,55.6,80,49.6,0,0,6.3,11.2 -2021-05-29T22:00,53.8,91,51.3,0,0,2.1,10.3 -2021-05-29T23:00,53.2,92,50.9,0,0,3.6,6 -2021-05-30T00:00,55,89,51.6,0,0,2.7,8.1 -2021-05-30T01:00,55,89,51.8,0,0,2.5,5.6 -2021-05-30T02:00,54.4,91,51.7,0.004,0,5.2,8.5 -2021-05-30T03:00,51.9,96,50.9,0,0,3.2,8.9 -2021-05-30T04:00,51.9,96,50.7,0,0,3.2,5.4 -2021-05-30T05:00,52.1,97,51.3,0,0,8.8,5.4 -2021-05-30T06:00,52.9,95,51.6,0.098,0,7.1,14.3 -2021-05-30T07:00,52.8,91,50.2,0.031,0,6.4,12.8 -2021-05-30T08:00,53.4,92,51.1,0.138,0,8.4,15.9 -2021-05-30T09:00,54.9,87,51.1,0.047,0,7.9,16.3 -2021-05-30T10:00,53.8,91,51.4,0.024,0,5.4,16.1 -2021-05-30T11:00,55.8,81,50.1,0.028,0,7,14.1 -2021-05-30T12:00,55.9,83,50.7,0.035,0,6.5,15.7 -2021-05-30T13:00,55.9,82,50.6,0.028,0,5.1,15.4 -2021-05-30T14:00,57.1,77,50.1,0.012,0,6.1,13.2 -2021-05-30T15:00,57.5,70,47.8,0.039,0,8.2,15.9 -2021-05-30T16:00,55.9,73,47.3,0.087,0,7.3,16.1 -2021-05-30T17:00,50.1,90,47.4,0.039,0,11.5,14.1 -2021-05-30T18:00,49.7,92,47.5,0.035,0,7.5,21 -2021-05-30T19:00,50.1,89,47,0.004,0,2.9,13.2 -2021-05-30T20:00,49.6,93,47.7,0.008,0,4.4,6.9 -2021-05-30T21:00,49,94,47.3,0.016,0,5.1,8.7 -2021-05-30T22:00,48.3,93,46.5,0.008,0,6.3,10.5 -2021-05-30T23:00,47.7,90,45,0,0,3.4,10.3 -2021-05-31T00:00,46.8,95,45.5,0,0,2,5.6 -2021-05-31T01:00,46.9,94,45.3,0,0,2.5,4.7 -2021-05-31T02:00,45.3,97,44.4,0,0,2.7,4.9 -2021-05-31T03:00,44.9,95,43.6,0,0,2.9,4.5 -2021-05-31T04:00,46.2,93,44.3,0,0,1.9,3.8 -2021-05-31T05:00,47.6,94,46,0,0,2.7,4.3 -2021-05-31T06:00,47.9,96,46.8,0.028,0,1.6,5.4 -2021-05-31T07:00,48.7,94,46.9,0.028,0,1.4,4.7 -2021-05-31T08:00,49.1,94,47.6,0.031,0,3.8,7.6 -2021-05-31T09:00,49.7,94,48.1,0.02,0,5.9,11.6 -2021-05-31T10:00,51.5,87,47.7,0.016,0,4.9,12.3 -2021-05-31T11:00,52.6,82,47.2,0.008,0,4.9,11.9 -2021-05-31T12:00,54.8,80,48.6,0.008,0,4.7,13 -2021-05-31T13:00,56.4,78,49.6,0.004,0,3.8,13 -2021-05-31T14:00,57.5,77,50.2,0.012,0,2.2,11.4 -2021-05-31T15:00,58,73,49.4,0.008,0,3.7,10.3 -2021-05-31T16:00,58.4,68,47.8,0.004,0,5.4,12.3 -2021-05-31T17:00,58.4,68,48,0.004,0,3.1,12.5 -2021-05-31T18:00,55.5,83,50.3,0.106,0,5.6,11.9 -2021-05-31T19:00,53.2,93,51.1,0.004,0,2.7,10.7 -2021-05-31T20:00,53.2,91,50.5,0,0,1.9,3.8 -2021-05-31T21:00,52.1,94,50.5,0,0,1.1,2.2 -2021-05-31T22:00,47.3,99,47,0,0,3.2,3.8 -2021-05-31T23:00,44.6,100,44.5,0,0,3.4,4.9 -2021-06-01T00:00,43.4,100,43.4,0,0,3,4.7 -2021-06-01T01:00,43.2,100,43.1,0,0,2.3,4.7 -2021-06-01T02:00,43.8,99,43.5,0,0,2.2,4.7 -2021-06-01T03:00,43,99,42.8,0,0,1.9,4.5 -2021-06-01T04:00,40.9,99,40.7,0,0,2.9,4.7 -2021-06-01T05:00,39.7,97,38.8,0,0,2.5,4.7 -2021-06-01T06:00,44.2,85,40.1,0,0,3.5,7.8 -2021-06-01T07:00,50.3,74,42.4,0,0,3.3,9.2 -2021-06-01T08:00,56.3,60,42.8,0,0,2,10.3 -2021-06-01T09:00,59.4,55,43.1,0,0,7.1,17.2 -2021-06-01T10:00,62.2,53,45,0,0,2.9,16.1 -2021-06-01T11:00,64.9,47,44.3,0,0,3.1,11.2 -2021-06-01T12:00,64.7,45,42.9,0.004,0,6.8,18.8 -2021-06-01T13:00,65,40,40.2,0,0,1.5,16.8 -2021-06-01T14:00,65.7,43,42.8,0,0,4.6,13 -2021-06-01T15:00,65.8,44,43.6,0,0,1.8,12.8 -2021-06-01T16:00,65.8,42,41.9,0.004,0,5.5,11.9 -2021-06-01T17:00,62.1,52,44.2,0,0,10.8,13 -2021-06-01T18:00,61,60,47.2,0,0,4.3,18.6 -2021-06-01T19:00,58.6,70,48.8,0,0,2.7,7.4 -2021-06-01T20:00,55.3,73,46.8,0,0,5.1,8.9 -2021-06-01T21:00,52.3,83,47.5,0,0,4.7,7.8 -2021-06-01T22:00,48.9,92,46.6,0,0,4.3,6.5 -2021-06-01T23:00,47.8,91,45.2,0,0,3.4,5.8 -2021-06-02T00:00,45.3,93,43.3,0,0,4.5,5.8 -2021-06-02T01:00,44.2,93,42.3,0,0,3.8,5.8 -2021-06-02T02:00,44,87,40.5,0,0,3.5,5.8 -2021-06-02T03:00,43,85,38.7,0,0,5.1,6.3 -2021-06-02T04:00,43.7,78,37.4,0,0,4.6,6.5 -2021-06-02T05:00,44.7,82,39.5,0,0,2.7,5.4 -2021-06-02T06:00,48.8,74,41,0,0,3.9,8.1 -2021-06-02T07:00,54.3,68,44.2,0,0,2.1,8.1 -2021-06-02T08:00,61,55,44.8,0,0,2.4,8.5 -2021-06-02T09:00,65.4,44,42.8,0,0,5.1,13 -2021-06-02T10:00,68.5,39,42.4,0,0,5.3,13.6 -2021-06-02T11:00,70.8,35,41.5,0,0,6,15 -2021-06-02T12:00,71.8,32,40.6,0,0,5.9,15 -2021-06-02T13:00,72.7,32,41.2,0,0,5.4,14.8 -2021-06-02T14:00,73.3,32,41.5,0,0,7.6,16.6 -2021-06-02T15:00,72.6,33,42.1,0,0,6.3,17.7 -2021-06-02T16:00,72.3,34,42.5,0,0,5.4,14.5 -2021-06-02T17:00,69.8,43,46,0,0,4.7,12.5 -2021-06-02T18:00,67.8,47,46.8,0,0,3.4,9.6 -2021-06-02T19:00,63.2,60,49.3,0,0,3.8,6 -2021-06-02T20:00,59.1,71,49.6,0,0,3.4,7.6 -2021-06-02T21:00,54.8,84,50.1,0,0,4.3,5.4 -2021-06-02T22:00,52,92,49.7,0,0,3.5,5.1 -2021-06-02T23:00,50.1,96,49.1,0,0,2.7,4.7 -2021-06-03T00:00,47.8,98,47.4,0,0,2.4,4.7 -2021-06-03T01:00,46.9,97,46.2,0,0,3,4.9 -2021-06-03T02:00,47.1,91,44.7,0,0,3.3,5.1 -2021-06-03T03:00,47.3,85,43.2,0,0,3.4,5.1 -2021-06-03T04:00,46.3,86,42.4,0,0,3.9,5.4 -2021-06-03T05:00,48.1,81,42.4,0,0,2.5,5.4 -2021-06-03T06:00,52.3,70,42.9,0,0,2.2,5.6 -2021-06-03T07:00,58.7,61,45.1,0,0,1.7,6.9 -2021-06-03T08:00,64.4,51,45.9,0,0,1.1,7.4 -2021-06-03T09:00,69.2,45,47,0,0,2.6,9.4 -2021-06-03T10:00,73.2,40,47.2,0,0,4.3,12.3 -2021-06-03T11:00,76,34,45.8,0,0,4.4,12.8 -2021-06-03T12:00,77.8,29,42.8,0,0,5,13.6 -2021-06-03T13:00,78.9,28,43.1,0,0,6.2,15.4 -2021-06-03T14:00,79.3,29,44.4,0,0,6.3,15.9 -2021-06-03T15:00,79.1,29,44.2,0,0,5.7,15 -2021-06-03T16:00,79,29,44.3,0,0,3.6,13.2 -2021-06-03T17:00,79.3,29,44.5,0,0,2.8,9.6 -2021-06-03T18:00,77.8,34,47,0,0,2.2,6.3 -2021-06-03T19:00,74.5,40,48.4,0,0,4.3,4.5 -2021-06-03T20:00,68.7,49,48.9,0,0,5,5.8 -2021-06-03T21:00,61.3,66,49.9,0,0,5.1,6.9 -2021-06-03T22:00,57.6,76,50.1,0,0,3.7,6.7 -2021-06-03T23:00,55.3,82,50,0,0,4.1,5.8 -2021-06-04T00:00,54.1,82,48.8,0,0,3.4,5.8 -2021-06-04T01:00,52.9,82,47.6,0,0,3.3,5.4 -2021-06-04T02:00,51.4,83,46.3,0,0,4.6,5.6 -2021-06-04T03:00,50.5,83,45.4,0,0,4.8,6 -2021-06-04T04:00,49.5,82,44.3,0,0,4.9,6.3 -2021-06-04T05:00,50.2,78,43.5,0,0,3.2,6 -2021-06-04T06:00,55.4,65,43.8,0,0,1.8,5.6 -2021-06-04T07:00,61.3,59,46.9,0,0,1.7,6.7 -2021-06-04T08:00,67.6,47,46.9,0,0,2.3,8.7 -2021-06-04T09:00,73,42,48.7,0,0,1.8,8.9 -2021-06-04T10:00,77.6,36,48.9,0,0,2.1,9.6 -2021-06-04T11:00,80.9,30,46.9,0,0,2.6,10.5 -2021-06-04T12:00,82.9,23,41.5,0,0,3.8,11.6 -2021-06-04T13:00,84.4,19,37.9,0,0,5.1,13.2 -2021-06-04T14:00,85.4,20,39.2,0,0,4.9,13.2 -2021-06-04T15:00,85.6,19,38.8,0,0,4.5,12.8 -2021-06-04T16:00,85,20,39.7,0,0,3.8,11.6 -2021-06-04T17:00,84.9,18,37.2,0,0,4.1,9.8 -2021-06-04T18:00,82.3,28,45.9,0,0,3.3,7.6 -2021-06-04T19:00,77.4,32,45.3,0,0,3.6,5.1 -2021-06-04T20:00,72.3,37,44.8,0,0,1.3,4.5 -2021-06-04T21:00,63.1,57,47.7,0,0,3.8,4.9 -2021-06-04T22:00,60,61,46.6,0,0,3.7,5.6 -2021-06-04T23:00,58.2,61,44.7,0,0,4.3,6.7 -2021-06-05T00:00,55.9,63,43.5,0,0,4,6.7 -2021-06-05T01:00,54.4,65,42.8,0,0,3.7,6 -2021-06-05T02:00,53.1,66,42,0,0,4,5.8 -2021-06-05T03:00,51.6,69,41.8,0,0,5.4,6.5 -2021-06-05T04:00,51.1,69,41.3,0,0,5.8,6.9 -2021-06-05T05:00,54,67,43.1,0,0,4.9,6.7 -2021-06-05T06:00,60.3,51,42.1,0,0,5.1,8.1 -2021-06-05T07:00,67.2,44,44.8,0,0,1.2,8.3 -2021-06-05T08:00,72.5,41,47.6,0,0,4.3,10.7 -2021-06-05T09:00,76.8,37,48.3,0,0,5.1,12.8 -2021-06-05T10:00,81.6,28,45.8,0,0,5.1,14.1 -2021-06-05T11:00,84.7,26,46.2,0,0,0.9,13.2 -2021-06-05T12:00,87.1,24,45.5,0,0,4.4,11.6 -2021-06-05T13:00,86.5,22,42.7,0,0,7.9,21.9 -2021-06-05T14:00,87.6,18,39.6,0,0,5.7,16.6 -2021-06-05T15:00,86.4,22,42.5,0.004,0,7.8,17 -2021-06-05T16:00,85.6,22,42.4,0,0,3.6,16.1 -2021-06-05T17:00,84.7,28,47.7,0,0,5.4,8.9 -2021-06-05T18:00,78.1,40,51.5,0,0,12.6,21.3 -2021-06-05T19:00,74.7,39,47.9,0,0,6.5,20.8 -2021-06-05T20:00,71,48,50.2,0,0,3.1,10.7 -2021-06-05T21:00,70,43,46.3,0,0,6.1,10.7 -2021-06-05T22:00,66.7,45,44.9,0,0,7,11.6 -2021-06-05T23:00,65.3,45,43.6,0,0,7.1,12.5 -2021-06-06T00:00,64.6,45,42.9,0,0,5.3,11.9 -2021-06-06T01:00,62.2,49,43.1,0,0,4.3,8.9 -2021-06-06T02:00,60.3,54,43.5,0,0,4.5,6.5 -2021-06-06T03:00,59.4,60,45.4,0,0,4,6.5 -2021-06-06T04:00,58.1,65,46.2,0,0,4.5,7.8 -2021-06-06T05:00,58.5,70,48.6,0,0,4.9,7.2 -2021-06-06T06:00,64.9,55,48.4,0,0,4.6,6.9 -2021-06-06T07:00,71.2,47,50,0,0,4.8,10.1 -2021-06-06T08:00,77.6,37,49,0,0,2.2,10.7 -2021-06-06T09:00,83,28,46.6,0,0,5.5,12.8 -2021-06-06T10:00,83.5,27,46,0.008,0,4.3,13 -2021-06-06T11:00,84.7,22,41.6,0,0,2.1,11.6 -2021-06-06T12:00,86.6,19,39.8,0,0,4.9,13.9 -2021-06-06T13:00,84.7,22,41.5,0,0,8.8,16.8 -2021-06-06T14:00,83.7,23,41.7,0,0,9.2,23.3 -2021-06-06T15:00,85,20,39.3,0,0,7.2,18.1 -2021-06-06T16:00,81.2,27,44.5,0,0,14.9,25.7 -2021-06-06T17:00,81.9,25,42.4,0,0,0.8,25.5 -2021-06-06T18:00,76.6,38,48.8,0,0,5.1,12.3 -2021-06-06T19:00,72.7,48,52.1,0,0,16.9,24.6 -2021-06-06T20:00,69.6,53,51.7,0,0,15.6,32.7 -2021-06-06T21:00,65.4,64,52.8,0,0,4.7,25.7 -2021-06-06T22:00,64.6,64,52.3,0,0,3.7,6.5 -2021-06-06T23:00,62.2,74,53.9,0,0,3.8,6 -2021-06-07T00:00,59.3,81,53.4,0,0,4.1,5.4 -2021-06-07T01:00,58.1,80,51.9,0,0,4.2,7.4 -2021-06-07T02:00,56.2,80,50,0,0,3.8,7.4 -2021-06-07T03:00,54.4,78,47.8,0,0,3.5,6.3 -2021-06-07T04:00,53.4,71,44.4,0,0,4,6 -2021-06-07T05:00,55.9,70,46.4,0,0,6.4,6.9 -2021-06-07T06:00,62,52,44,0,0,4.5,8.1 -2021-06-07T07:00,66.9,46,45.2,0,0,1.7,7.4 -2021-06-07T08:00,71.6,38,44.9,0,0,3.6,10.1 -2021-06-07T09:00,77.6,31,44.8,0,0,4.1,11.2 -2021-06-07T10:00,82,25,43.1,0,0,3.3,12.1 -2021-06-07T11:00,85.2,22,41.9,0,0,2.3,11 -2021-06-07T12:00,87,19,40.2,0,0,4.3,12.1 -2021-06-07T13:00,86.4,17,37,0,0,6.9,14.5 -2021-06-07T14:00,87.9,13,31.6,0,0,10.3,19.7 -2021-06-07T15:00,89.3,12,30.1,0,0,7.8,20.6 -2021-06-07T16:00,88.3,13,31.6,0,0,4.1,15.7 -2021-06-07T17:00,80.2,29,45.2,0,0,7.2,17.2 -2021-06-07T18:00,79.6,39,52.3,0,0,1.9,13.9 -2021-06-07T19:00,74.3,44,51.1,0,0,4.9,7.6 -2021-06-07T20:00,68.1,52,49.6,0,0,4.3,8.5 -2021-06-07T21:00,66.7,57,50.7,0,0,1.8,6.7 -2021-06-07T22:00,61.3,73,52.7,0,0,2.1,3.6 -2021-06-07T23:00,59.2,79,52.8,0,0,3.6,6 -2021-06-08T00:00,57.6,78,50.8,0,0,3.7,6.5 -2021-06-08T01:00,56.6,73,48,0,0,4.2,6 -2021-06-08T02:00,56.3,67,45.6,0,0,4.3,6.9 -2021-06-08T03:00,53.4,72,44.7,0,0,5.2,6.9 -2021-06-08T04:00,52.8,72,44.1,0,0,3.8,6.3 -2021-06-08T05:00,54.1,71,44.8,0,0,3,4.7 -2021-06-08T06:00,58.5,61,45.1,0,0,2.8,6.7 -2021-06-08T07:00,64.6,52,46.6,0,0,1.6,6.9 -2021-06-08T08:00,70.1,42,45.8,0,0,0.6,7.4 -2021-06-08T09:00,74.9,35,45.6,0,0,1.9,9.4 -2021-06-08T10:00,79.3,29,44.6,0,0,2.2,10.1 -2021-06-08T11:00,84.3,25,45.1,0,0,3,11.2 -2021-06-08T12:00,89.2,19,42.2,0,0,2.3,11.6 -2021-06-08T13:00,92.1,11,29.7,0,0,5,15.2 -2021-06-08T14:00,93.8,9,27.7,0,0,11.2,20.1 -2021-06-08T15:00,93.6,9,26.2,0,0,15,26.2 -2021-06-08T16:00,92.3,10,28,0,0,15.3,28.2 -2021-06-08T17:00,91.3,13,33.8,0,0,12.7,26.4 -2021-06-08T18:00,87.7,19,39.9,0,0,1.4,21.5 -2021-06-08T19:00,76,47,54.3,0,0,6.2,7.2 -2021-06-08T20:00,79.6,35,49.6,0,0,2.3,7.8 -2021-06-08T21:00,71.8,51,52.7,0,0,4.9,5.6 -2021-06-08T22:00,68.4,51,49.7,0,0,5.8,13.2 -2021-06-08T23:00,65.4,33,35.9,0,0,7.3,15.9 -2021-06-09T00:00,65.1,30,33,0,0,2.8,12.3 -2021-06-09T01:00,59.5,50,40.8,0,0,4.3,6.5 -2021-06-09T02:00,58.6,37,32.2,0,0,5.8,9.8 -2021-06-09T03:00,55,38,29.9,0,0,7.2,8.9 -2021-06-09T04:00,53.6,40,30,0,0,6.4,8.5 -2021-06-09T05:00,53,55,37.3,0,0,4.9,7.6 -2021-06-09T06:00,58.7,40,34.7,0,0,3.4,7.4 -2021-06-09T07:00,65.5,35,36.9,0,0,3,8.5 -2021-06-09T08:00,71.5,28,36.6,0,0,3.2,9.8 -2021-06-09T09:00,76.6,27,40,0,0,3.6,11 -2021-06-09T10:00,81.1,19,35.6,0,0,3.1,11.6 -2021-06-09T11:00,84,16,33.7,0,0,3.3,11.6 -2021-06-09T12:00,86.1,15,32.7,0,0,2.4,11.6 -2021-06-09T13:00,87.7,13,31.4,0,0,1.6,10.5 -2021-06-09T14:00,88.8,13,31.5,0,0,1.9,9.4 -2021-06-09T15:00,89.6,14,33.4,0,0,4.2,11 -2021-06-09T16:00,89.7,15,35.2,0,0,7.2,14.5 -2021-06-09T17:00,88.4,17,38.2,0,0,9.9,14.8 -2021-06-09T18:00,86.1,22,42.5,0,0,8.1,16.6 -2021-06-09T19:00,81.1,27,43.9,0,0,8,13.9 -2021-06-09T20:00,77.5,37,48.9,0,0,13.8,22.6 -2021-06-09T21:00,74.6,43,50.4,0,0,13.9,22.6 -2021-06-09T22:00,72.1,47,50.8,0,0,13.4,24.2 -2021-06-09T23:00,69.1,50,49.5,0,0,9.5,22.1 -2021-06-10T00:00,64.8,52,46.9,0,0,5.9,15.4 -2021-06-10T01:00,62.1,55,45.8,0,0,6.2,10.3 -2021-06-10T02:00,59.9,57,44.6,0,0,6,10.3 -2021-06-10T03:00,59,57,44,0,0,5,9.8 -2021-06-10T04:00,57.1,61,43.8,0,0,5.4,8.1 -2021-06-10T05:00,56.6,61,43.2,0,0,3,6.7 -2021-06-10T06:00,60.1,54,43.4,0,0,1.4,4.7 -2021-06-10T07:00,64.9,50,46,0,0,2.2,7.6 -2021-06-10T08:00,71.3,42,46.9,0,0,1.4,9.2 -2021-06-10T09:00,77.5,32,45.7,0,0,1.5,8.3 -2021-06-10T10:00,85,24,44.2,0,0,3.2,10.5 -2021-06-10T11:00,92.2,11,29.7,0,0,7.6,14.8 -2021-06-10T12:00,93.8,9,26.3,0,0,14.2,26.6 -2021-06-10T13:00,94.5,10,28.9,0,0,13.9,26.4 -2021-06-10T14:00,95.5,9,27.5,0,0,14.3,26.2 -2021-06-10T15:00,95.5,9,28,0,0,13.2,27.7 -2021-06-10T16:00,94.4,9,28,0,0,11.1,25.5 -2021-06-10T17:00,91.9,13,33.1,0,0,3.2,19.9 -2021-06-10T18:00,85.9,30,50.5,0,0,2.8,5.8 -2021-06-10T19:00,80,25,41.4,0,0,8.9,15 -2021-06-10T20:00,74.6,24,35.7,0,0,5,14.5 -2021-06-10T21:00,73.9,24,34.4,0,0,11.4,17.4 -2021-06-10T22:00,73.9,13,20.8,0,0,11.7,21 -2021-06-10T23:00,67.7,20,24.6,0,0,9.3,19.5 -2021-06-11T00:00,62.7,25,26.4,0,0,7.8,15.4 -2021-06-11T01:00,63.5,23,24.6,0,0,11.2,17.7 -2021-06-11T02:00,64.9,21,23.5,0,0,13.6,24.8 -2021-06-11T03:00,62.4,24,24.7,0,0,3.5,22.6 -2021-06-11T04:00,55.3,36,28.5,0,0,5.6,8.1 -2021-06-11T05:00,54.6,46,34.3,0,0,6.8,9.6 -2021-06-11T06:00,58.9,29,26.9,0,0,4.2,8.3 -2021-06-11T07:00,60.7,22,21.7,0,0,9.1,16.6 -2021-06-11T08:00,63.1,17,16.9,0,0,7.4,18.3 -2021-06-11T09:00,65.2,17,18.6,0,0,5.4,15.9 -2021-06-11T10:00,68.1,17,21.7,0,0,5.3,14.3 -2021-06-11T11:00,71.2,18,25.3,0,0,6.8,17 -2021-06-11T12:00,73.9,17,26.9,0,0,4.9,17 -2021-06-11T13:00,76.6,17,28.1,0,0,3.1,14.5 -2021-06-11T14:00,78.4,16,28.2,0,0,2.6,12.3 -2021-06-11T15:00,79.5,15,28,0,0,3.6,11.2 -2021-06-11T16:00,80.9,14,28,0,0,6.9,15.2 -2021-06-11T17:00,78,18,31.6,0,0,10.9,15.7 -2021-06-11T18:00,76.4,21,33.2,0,0,11.3,19.7 -2021-06-11T19:00,72.4,25,34.5,0,0,6.3,19 -2021-06-11T20:00,67.7,32,36.5,0,0,4.4,10.5 -2021-06-11T21:00,62.5,45,40.8,0,0,5.2,7.2 -2021-06-11T22:00,59.8,51,41.5,0,0,4.9,6.3 -2021-06-11T23:00,57.4,55,41.5,0,0,4,6 -2021-06-12T00:00,55.1,60,41.6,0,0,3.1,5.6 -2021-06-12T01:00,53,68,42.5,0,0,2,5.4 -2021-06-12T02:00,51.1,74,43.3,0,0,1.6,3.8 -2021-06-12T03:00,49.3,80,43.4,0,0,2.8,3.8 -2021-06-12T04:00,48.7,79,42.5,0,0,2.1,3.8 -2021-06-12T05:00,49.6,71,40.4,0,0,2.1,3.4 -2021-06-12T06:00,54.1,63,41.7,0,0,3.3,7.4 -2021-06-12T07:00,60.2,48,40.5,0,0,1.6,7.8 -2021-06-12T08:00,65.2,38,39.1,0,0,2.1,8.9 -2021-06-12T09:00,70.6,32,39.7,0,0,3.5,11.2 -2021-06-12T10:00,75.6,28,40.5,0,0,4.2,12.8 -2021-06-12T11:00,80.4,24,40.8,0,0,5.3,14.3 -2021-06-12T12:00,84.8,22,41.5,0,0,7.2,16.6 -2021-06-12T13:00,87.9,18,39.3,0,0,9.1,19.5 -2021-06-12T14:00,88.8,16,37.2,0,0,7.6,19.5 -2021-06-12T15:00,88.5,17,38.3,0,0,10.7,20.4 -2021-06-12T16:00,88.2,19,40.3,0,0,12.6,22.8 -2021-06-12T17:00,85.7,22,43,0,0,10.4,23.9 -2021-06-12T18:00,82.7,30,47.9,0,0,4.7,18.1 -2021-06-12T19:00,79.8,35,50,0,0,1.1,7.8 -2021-06-12T20:00,74.8,43,50.6,0,0,4.8,5.6 -2021-06-12T21:00,72.1,45,49.6,0,0,6,6.5 -2021-06-12T22:00,70.5,50,51.2,0,0,7.1,11.4 -2021-06-12T23:00,65.8,59,51.2,0,0,7.2,11.9 -2021-06-13T00:00,62.6,62,49.6,0,0,4.7,11.6 -2021-06-13T01:00,59.1,65,47.4,0,0,3.3,7.6 -2021-06-13T02:00,57.9,54,41.5,0,0,3.9,6 -2021-06-13T03:00,56.2,56,40.6,0,0,5.1,6.5 -2021-06-13T04:00,55.5,59,41.4,0,0,3,6.3 -2021-06-13T05:00,55.8,70,46.3,0,0,1.6,3.8 -2021-06-13T06:00,60.2,62,47,0,0,3,6.3 -2021-06-13T07:00,68.1,46,46.4,0,0,3.1,8.9 -2021-06-13T08:00,72.8,42,48.6,0,0,1.3,8.9 -2021-06-13T09:00,77.5,38,49.9,0,0,1.4,8.3 -2021-06-13T10:00,81.6,38,53.5,0,0,4.3,12.3 -2021-06-13T11:00,85.4,30,50.2,0,0,11.1,22.6 -2021-06-13T12:00,87.4,23,45.2,0,0,3.4,22.6 -2021-06-13T13:00,88.3,24,47.2,0,0,4.5,11.9 -2021-06-13T14:00,89.5,20,43.1,0,0,1.4,13.2 -2021-06-13T15:00,88.9,21,43.3,0,0,8.1,15 -2021-06-13T16:00,88.5,22,44.7,0,0,10.5,19.2 -2021-06-13T17:00,77.9,55,60.6,0,0,5.6,20.8 -2021-06-13T18:00,79.8,47,57.8,0,0,4.7,9.6 -2021-06-13T19:00,79.4,45,56.5,0,0,1.9,9.6 -2021-06-13T20:00,77.1,50,56.9,0,0,2.7,3.1 -2021-06-13T21:00,72.2,62,58.4,0,0,3.4,5.1 -2021-06-13T22:00,67.8,73,58.8,0,0,3.5,5.6 -2021-06-13T23:00,63.9,84,58.8,0,0,3.1,6.3 -2021-06-14T00:00,62.3,90,59.4,0,0,3.3,5.1 -2021-06-14T01:00,59.9,92,57.7,0,0,3,5.6 -2021-06-14T02:00,58.4,91,55.7,0,0,3.2,4.9 -2021-06-14T03:00,58.1,80,51.9,0,0,3.7,5.4 -2021-06-14T04:00,56.8,77,49.6,0,0,4.3,5.8 -2021-06-14T05:00,57.7,66,46.4,0,0,2.7,5.1 -2021-06-14T06:00,63.3,54,46.6,0,0,1.4,4.7 -2021-06-14T07:00,68.4,51,49.6,0,0,0.7,5.6 -2021-06-14T08:00,72.6,51,53.2,0,0,1.5,8.5 -2021-06-14T09:00,77.4,48,56.1,0,0,0.3,8.3 -2021-06-14T10:00,82,42,56.8,0,0,2.2,10.3 -2021-06-14T11:00,86.8,35,55.9,0,0,2.1,10.7 -2021-06-14T12:00,90.7,29,54.2,0,0,1.3,10.3 -2021-06-14T13:00,93.7,23,49.8,0,0,1.7,9.4 -2021-06-14T14:00,95.5,13,37.3,0,0,3.4,11.9 -2021-06-14T15:00,96.1,10,30.9,0,0,3.6,10.5 -2021-06-14T16:00,96.1,10,30.2,0,0,5.1,11.4 -2021-06-14T17:00,93.1,15,38,0,0,7.2,11.4 -2021-06-14T18:00,89.5,24,47.8,0,0,5,13.2 -2021-06-14T19:00,80.7,39,53.5,0,0,4.3,8.5 -2021-06-14T20:00,76.4,37,47.9,0,0,5,8.5 -2021-06-14T21:00,71,42,46.7,0,0,6.2,8.7 -2021-06-14T22:00,68.8,40,43.7,0,0,5.1,9.4 -2021-06-14T23:00,64.9,48,44.9,0,0,4,8.5 -2021-06-15T00:00,64.5,47,43.8,0,0,5.2,8.3 -2021-06-15T01:00,62.3,49,43,0,0,4.4,8.3 -2021-06-15T02:00,60.4,50,41.5,0,0,4.1,7.2 -2021-06-15T03:00,58.2,52,40.7,0,0,3.9,6.5 -2021-06-15T04:00,58.6,50,40.3,0,0,3.7,6 -2021-06-15T05:00,59.1,54,42.6,0,0,4.1,4.5 -2021-06-15T06:00,64.5,45,42.8,0,0,3.7,7.4 -2021-06-15T07:00,71,41,46.3,0,0,1.6,7.2 -2021-06-15T08:00,76.9,32,45,0,0,5,12.1 -2021-06-15T09:00,81.4,27,44.7,0,0,4.3,13 -2021-06-15T10:00,85.9,26,46.7,0,0,3.8,12.3 -2021-06-15T11:00,90,25,49.2,0,0,3.7,12.3 -2021-06-15T12:00,93.5,21,47.3,0,0,4.6,13.2 -2021-06-15T13:00,95.2,16,41.3,0,0,6.8,15 -2021-06-15T14:00,96.8,14,39.1,0,0,6.5,17 -2021-06-15T15:00,96.1,14,39.3,0,0,5.4,14.8 -2021-06-15T16:00,96.5,10,32.1,0,0,5.8,12.8 -2021-06-15T17:00,96,16,42.4,0,0,7.5,13 -2021-06-15T18:00,90.2,33,56.8,0,0,2.5,13 -2021-06-15T19:00,82.9,41,56.6,0,0,4.1,5.4 -2021-06-15T20:00,76.4,44,52.9,0,0,6.3,6.7 -2021-06-15T21:00,75.1,35,45.2,0,0,5.4,8.7 -2021-06-15T22:00,70.7,41,45.7,0,0,4.9,7.8 -2021-06-15T23:00,68.7,45,46.5,0,0,5.2,8.5 -2021-06-16T00:00,67.1,44,44.2,0,0,5.4,8.3 -2021-06-16T01:00,66.6,36,39.1,0,0,6.9,9.2 -2021-06-16T02:00,66,33,36.3,0,0,7,9.4 -2021-06-16T03:00,64,37,37,0,0,8.4,10.3 -2021-06-16T04:00,65.8,34,36.5,0,0,6.6,10.1 -2021-06-16T05:00,64.4,39,39,0,0,7.8,7.8 -2021-06-16T06:00,71.3,31,38.9,0,0,3.1,9.6 -2021-06-16T07:00,78.6,26,40.7,0,0,3.2,7.6 -2021-06-16T08:00,87.2,21,42.8,0,0,3.2,8.7 -2021-06-16T09:00,93,17,42,0,0,5.5,11.9 -2021-06-16T10:00,94.1,14,38,0,0,11.7,22.6 -2021-06-16T11:00,96,10,30.3,0,0,3.8,22.8 -2021-06-16T12:00,97.4,10,30.9,0,0,7.2,14.3 -2021-06-16T13:00,94.2,14,37.2,0,0,16.1,32.2 -2021-06-16T14:00,96.7,11,32.8,0,0,5.9,29.1 -2021-06-16T15:00,95.6,12,34.3,0,0,5,14.3 -2021-06-16T16:00,95.2,12,34.6,0,0,7,13.4 -2021-06-16T17:00,92.7,13,33.8,0,0,16.7,16.3 -2021-06-16T18:00,90.7,16,38.5,0,0,7,27.7 -2021-06-16T19:00,82.7,29,47.1,0,0,4.6,11.4 -2021-06-16T20:00,78.2,29,43.2,0,0,6.3,10.5 -2021-06-16T21:00,72.5,34,42.8,0,0,4.2,10.1 -2021-06-16T22:00,69.6,40,44.2,0,0,4.4,6.9 -2021-06-16T23:00,67.3,43,44.2,0,0,4.7,6.7 -2021-06-17T00:00,67.2,40,42.2,0,0,5.5,8.9 -2021-06-17T01:00,65.8,41,41.5,0,0,4.8,9.2 -2021-06-17T02:00,64.9,41,40.8,0,0,4.9,8.3 -2021-06-17T03:00,63.4,42,39.9,0,0,6.9,8.7 -2021-06-17T04:00,64.6,39,38.9,0,0,6.6,9.4 -2021-06-17T05:00,62.4,51,44,0,0,6.7,8.3 -2021-06-17T06:00,68.7,36,40.6,0,0,5.6,7.8 -2021-06-17T07:00,76,30,42.5,0,0,3.6,9.4 -2021-06-17T08:00,84.6,24,44.2,0,0,2.5,8.9 -2021-06-17T09:00,91.2,16,38.5,0,0,2.5,8.7 -2021-06-17T10:00,94.6,10,29.8,0,0,4.8,12.8 -2021-06-17T11:00,96.1,10,30.2,0,0,4.3,13 -2021-06-17T12:00,97,10,30.5,0,0,3.4,14.5 -2021-06-17T13:00,98.4,10,32.1,0,0,5.6,13 -2021-06-17T14:00,91.9,16,38.9,0,0,19.1,33.8 -2021-06-17T15:00,93.7,12,32.5,0,0,4.3,33.6 -2021-06-17T16:00,95.1,10,30.4,0,0,11.1,22.1 -2021-06-17T17:00,92.3,15,38.5,0,0,11.9,19.7 -2021-06-17T18:00,90.5,17,40.2,0,0,8.4,21.3 -2021-06-17T19:00,85.2,23,43.3,0,0,6.7,14.1 -2021-06-17T20:00,81.9,23,40.5,0,0,9.4,15.2 -2021-06-17T21:00,76,30,42.7,0,0,6.8,15.7 -2021-06-17T22:00,71.5,37,43.8,0,0,4.4,11.2 -2021-06-17T23:00,69.3,39,43.3,0,0,4.3,7.2 -2021-06-18T00:00,67.3,38,41.1,0,0,5,7.6 -2021-06-18T01:00,66.9,36,38.8,0,0,5.2,8.3 -2021-06-18T02:00,65.1,38,38.6,0,0,6,8.3 -2021-06-18T03:00,64.4,39,38.8,0,0,6.9,8.9 -2021-06-18T04:00,65.4,35,37.3,0,0,5,8.1 -2021-06-18T05:00,64.4,42,40.8,0,0,5.2,6 -2021-06-18T06:00,69.8,38,42.8,0,0,3,6.7 -2021-06-18T07:00,74.8,31,42.5,0,0,3.4,7.8 -2021-06-18T08:00,81.3,22,39.4,0,0,5.8,12.3 -2021-06-18T09:00,84.8,17,34.9,0,0,9.2,18.1 -2021-06-18T10:00,87,14,32,0,0,12,23.3 -2021-06-18T11:00,87.4,15,33.5,0,0,14.6,27.5 -2021-06-18T12:00,88.3,17,38.6,0,0,11.6,27.7 -2021-06-18T13:00,87.6,22,43.7,0,0,12.1,24.6 -2021-06-18T14:00,87.6,23,44.9,0,0,4.6,23.9 -2021-06-18T15:00,86.9,21,42.2,0,0,2.4,13.2 -2021-06-18T16:00,88.7,18,39.6,0,0,6.2,14.1 -2021-06-18T17:00,85.8,25,45.9,0,0,11.9,13.2 -2021-06-18T18:00,83.9,27,46,0,0,10.4,20.8 -2021-06-18T19:00,82.8,23,41.7,0,0,12.1,19.5 -2021-06-18T20:00,78.4,26,40.6,0,0,11.6,21 -2021-06-18T21:00,77,28,41.8,0,0,12.2,20.6 -2021-06-18T22:00,75.5,30,41.9,0,0,9.9,20.4 -2021-06-18T23:00,73.1,33,42.5,0,0,8.1,16.6 -2021-06-19T00:00,71.2,37,43.7,0,0,8.1,13.9 -2021-06-19T01:00,68.1,42,44.4,0,0,5.8,13.4 -2021-06-19T02:00,65,46,43.9,0,0,4.9,9.4 -2021-06-19T03:00,61.2,54,44.2,0,0,4.9,7.8 -2021-06-19T04:00,59.8,55,43.6,0,0,4,6 -2021-06-19T05:00,61.3,51,43.1,0,0,4.8,4.9 -2021-06-19T06:00,65.3,46,44.2,0,0,4,7.8 -2021-06-19T07:00,69.8,43,46.2,0,0,1.3,7.4 -2021-06-19T08:00,73.9,37,45.7,0,0,1.8,7.4 -2021-06-19T09:00,76.5,32,44.5,0,0,2.4,8.1 -2021-06-19T10:00,81.4,27,44.4,0,0,4.4,12.1 -2021-06-19T11:00,86.2,24,45.1,0,0,1.3,12.8 -2021-06-19T12:00,89.2,18,39.5,0,0,6.8,15 -2021-06-19T13:00,85.8,25,45.6,0,0,12.9,23.9 -2021-06-19T14:00,83.2,30,48.5,0.008,0,7.4,24.8 -2021-06-19T15:00,84.4,29,48.6,0,0,2.9,19.5 -2021-06-19T16:00,80.8,39,53.9,0.071,0,7,14.1 -2021-06-19T17:00,84.5,23,43.2,0,0,9,15 -2021-06-19T18:00,83.3,24,42.5,0,0,9.2,17 -2021-06-19T19:00,80.1,27,42.7,0,0,6,16.3 -2021-06-19T20:00,75.1,32,43.3,0,0,4.3,10.3 -2021-06-19T21:00,72.1,41,46.9,0,0,6.1,9.8 -2021-06-19T22:00,69.9,44,46.9,0,0,9,14.3 -2021-06-19T23:00,68.6,37,41.5,0,0,10.1,16.3 -2021-06-20T00:00,67.8,36,40.2,0,0,9.1,16.3 -2021-06-20T01:00,66,39,40.2,0,0,5.8,14.8 -2021-06-20T02:00,63.8,42,40.1,0,0,4.9,9.2 -2021-06-20T03:00,62.8,42,39.6,0,0,5.5,8.5 -2021-06-20T04:00,61.9,42,38.5,0,0,5.9,9.6 -2021-06-20T05:00,62.5,44,40.3,0,0,5.9,9.6 -2021-06-20T06:00,65.8,41,41.6,0,0,9.5,15.9 -2021-06-20T07:00,68.7,38,41.9,0,0,11.2,19.9 -2021-06-20T08:00,71.9,31,39.6,0,0,8,20.6 -2021-06-20T09:00,74.3,28,38.8,0,0,6.7,17 -2021-06-20T10:00,76.8,26,39.5,0,0,5.7,16.1 -2021-06-20T11:00,78.7,26,40.6,0,0,6.4,17.2 -2021-06-20T12:00,81.2,25,41.6,0,0,5.7,16.3 -2021-06-20T13:00,83.2,24,42.4,0,0,3.5,15.7 -2021-06-20T14:00,84.7,23,42.9,0,0,7,17 -2021-06-20T15:00,86.3,22,43.5,0,0,8.9,17.7 -2021-06-20T16:00,84.7,23,43.2,0,0,13.8,25.3 -2021-06-20T17:00,79.4,33,47.7,0,0,9.1,25.9 -2021-06-20T18:00,78.4,34,47.6,0.004,0,7.1,18.3 -2021-06-20T19:00,75.1,37,47.4,0,0,6.6,13.9 -2021-06-20T20:00,68.5,52,50,0.004,0,8.1,18.1 -2021-06-20T21:00,65.3,67,54.1,0.028,0,8,14.1 -2021-06-20T22:00,61.2,84,56.2,0.083,0,10.6,18.1 -2021-06-20T23:00,59.1,91,56.6,0.039,0,10,18.8 -2021-06-21T00:00,58.2,92,55.8,0.031,0,7.6,16.8 -2021-06-21T01:00,57.2,91,54.6,0.035,0,7.4,13 -2021-06-21T02:00,55.5,94,53.7,0.067,0,9.6,15 -2021-06-21T03:00,53.9,91,51.4,0.039,0,9.4,17.9 -2021-06-21T04:00,53.6,87,49.7,0.008,0,7.2,15.4 -2021-06-21T05:00,52.5,84,47.9,0,0,3.1,12.3 -2021-06-21T06:00,53,81,47.3,0,0,1.6,6.3 -2021-06-21T07:00,54.1,77,46.9,0,0,2.9,8.1 -2021-06-21T08:00,55.5,72,46.7,0,0,1.4,8.7 -2021-06-21T09:00,58.6,65,46.9,0,0,1.3,8.7 -2021-06-21T10:00,61.5,59,47.2,0,0,1.1,9.8 -2021-06-21T11:00,63.9,55,47.4,0,0,0.7,9.4 -2021-06-21T12:00,66.1,51,47.3,0,0,1.6,9.4 -2021-06-21T13:00,67.4,48,46.9,0,0,3.4,11.6 -2021-06-21T14:00,69.2,45,47.1,0,0,4.2,13 -2021-06-21T15:00,69.9,43,46.2,0,0,7.9,17.2 -2021-06-21T16:00,70.8,40,45.4,0,0,6.3,18.1 -2021-06-21T17:00,68.5,49,48.7,0,0,5.2,14.8 -2021-06-21T18:00,68.8,49,48.9,0,0,3.7,11.9 -2021-06-21T19:00,66.7,54,49.7,0,0,4.2,8.9 -2021-06-21T20:00,63.4,61,49.6,0,0,3.7,7.6 -2021-06-21T21:00,60.9,69,50.8,0,0,4.6,6 -2021-06-21T22:00,60.4,69,50,0,0,4.1,8.3 -2021-06-21T23:00,56.6,82,51,0,0,3.5,6.7 -2021-06-22T00:00,54.9,88,51.3,0,0,4.2,5.6 -2021-06-22T01:00,53.2,91,50.8,0,0,3.8,5.6 -2021-06-22T02:00,52.4,88,48.8,0,0,3.8,5.1 -2021-06-22T03:00,51.2,81,45.4,0,0,3.7,5.1 -2021-06-22T04:00,50.8,73,42.4,0,0,4,5.1 -2021-06-22T05:00,52.6,68,42.2,0,0,3.8,5.4 -2021-06-22T06:00,59.1,51,40.7,0,0,3.5,6.3 -2021-06-22T07:00,66.1,45,43.9,0,0,4.7,10.1 -2021-06-22T08:00,74.2,35,45.1,0,0,3.3,11 -2021-06-22T09:00,80.4,25,41.4,0,0,1.8,9.6 -2021-06-22T10:00,84.5,20,39,0,0,4,11.6 -2021-06-22T11:00,86.6,17,36.6,0,0,2.9,12.5 -2021-06-22T12:00,88.2,17,37.5,0,0,3.6,11 -2021-06-22T13:00,89.9,17,38.8,0,0,5.4,13.6 -2021-06-22T14:00,90.4,17,40,0,0,7.6,17 -2021-06-22T15:00,89.2,17,39.2,0,0,7.2,16.8 -2021-06-22T16:00,90,17,38.8,0,0,5.2,14.8 -2021-06-22T17:00,89.7,18,41,0,0,5.4,11.4 -2021-06-22T18:00,84.9,35,54.6,0,0,2.7,10.5 -2021-06-22T19:00,83.4,29,48,0,0,1.1,4 -2021-06-22T20:00,72.7,47,51.1,0,0,3.6,5.8 -2021-06-22T21:00,68.1,56,51.7,0,0,5.1,7.8 -2021-06-22T22:00,66,55,49.4,0,0,4.7,9.4 -2021-06-22T23:00,67.7,49,48,0,0,1.4,7.6 -2021-06-23T00:00,67,53,49.2,0,0,1.4,2.7 -2021-06-23T01:00,59.7,61,46.3,0,0,5.2,6.9 -2021-06-23T02:00,59.6,53,42.3,0,0,4.8,7.4 -2021-06-23T03:00,58.9,48,39.1,0,0,5,8.3 -2021-06-23T04:00,58,44,36.1,0,0,6.1,7.8 -2021-06-23T05:00,59.5,49,40.3,0,0,6.2,8.9 -2021-06-23T06:00,65.3,37,38,0,0,5.2,7.6 -2021-06-23T07:00,71.8,37,44,0,0,5.6,11 -2021-06-23T08:00,80.8,31,47.6,0,0,6.3,13 -2021-06-23T09:00,88,19,40.7,0,0,3.7,13.2 -2021-06-23T10:00,90.9,16,38.3,0,0,1.1,10.3 -2021-06-23T11:00,92.2,13,33.8,0,0,1.3,7.6 -2021-06-23T12:00,92.8,12,31.9,0,0,2.5,8.5 -2021-06-23T13:00,94.6,11,31.3,0,0,4.5,12.3 -2021-06-23T14:00,94.6,11,32,0,0,3.4,12.5 -2021-06-23T15:00,94.7,11,32.8,0,0,2.3,10.7 -2021-06-23T16:00,92.5,13,34.4,0,0,12.7,19.9 -2021-06-23T17:00,90,14,35.2,0,0,8.4,31.3 -2021-06-23T18:00,87.9,18,39.5,0,0,7.9,15 -2021-06-23T19:00,81.7,23,40.6,0,0,7.1,13.4 -2021-06-23T20:00,77.7,25,39.4,0,0,6,12.1 -2021-06-23T21:00,75.1,31,42.5,0,0,2.7,9.6 -2021-06-23T22:00,72.8,38,45.5,0,0,5.9,6 -2021-06-23T23:00,73.9,32,42,0,0,4.7,6.7 -2021-06-24T00:00,74.8,27,38.9,0,0,14.2,21.9 -2021-06-24T01:00,72,32,40.1,0,0,16.1,27.7 -2021-06-24T02:00,70.5,35,41.3,0,0,9.2,26.6 -2021-06-24T03:00,67.5,45,45.1,0.008,0,2.9,14.8 -2021-06-24T04:00,64.8,58,49.6,0.004,0,4.9,12.5 -2021-06-24T05:00,62.8,69,52.3,0,0,7.9,7.8 -2021-06-24T06:00,65,69,54.5,0,0,7.6,14.3 -2021-06-24T07:00,69.6,58,54.2,0,0,1.1,12.3 -2021-06-24T08:00,73.3,49,53.2,0,0,0.9,6.9 -2021-06-24T09:00,77.8,34,46.9,0,0,1.9,8.7 -2021-06-24T10:00,81.1,27,44.2,0,0,6,13.9 -2021-06-24T11:00,80.4,31,46.8,0,0,8,17.9 -2021-06-24T12:00,79.6,31,46.7,0,0,6.5,21.5 -2021-06-24T13:00,81.1,29,46.1,0,0,1.9,15.9 -2021-06-24T14:00,78.5,36,49.2,0,0,9.4,20.8 -2021-06-24T15:00,78.7,34,47.8,0,0,1.3,19.9 -2021-06-24T16:00,78.4,34,47.6,0,0,4.4,11 -2021-06-24T17:00,74.3,45,51.4,0.016,0,1.2,11.6 -2021-06-24T18:00,72.1,53,54.2,0.012,0,3.3,10.7 -2021-06-24T19:00,70.6,64,57.7,0.004,0,6.8,11.6 -2021-06-24T20:00,69.8,62,56.1,0,0,2.4,11.2 -2021-06-24T21:00,67.2,61,53.2,0,0,3.6,5.6 -2021-06-24T22:00,66.9,55,50.3,0,0,6.3,9.2 -2021-06-24T23:00,65.9,45,44.2,0,0,12.9,20.8 -2021-06-25T00:00,64.5,51,46,0,0,6.5,21.3 -2021-06-25T01:00,61.8,62,48.8,0,0,4,10.7 -2021-06-25T02:00,59.1,67,48,0,0,3,6.7 -2021-06-25T03:00,57,74,48.7,0,0,3.9,4.7 -2021-06-25T04:00,56,75,48.3,0,0,2.7,4.9 -2021-06-25T05:00,57.1,87,53.2,0,0,4.7,5.8 -2021-06-25T06:00,58.8,84,54.1,0,0,1.4,7.8 -2021-06-25T07:00,63.4,69,53.2,0,0,0.5,6 -2021-06-25T08:00,67.6,58,52.2,0,0,1.8,8.7 -2021-06-25T09:00,71.5,49,51.6,0,0,1.7,9.6 -2021-06-25T10:00,72.7,48,51.7,0,0,2.1,11.2 -2021-06-25T11:00,73.9,49,53.3,0.031,0,6.6,15.4 -2021-06-25T12:00,71,55,54.2,0.11,0,4.1,17.2 -2021-06-25T13:00,75.8,40,50,0,0,7.4,16.6 -2021-06-25T14:00,69.2,60,54.6,0.02,0,11.1,20.6 -2021-06-25T15:00,69.9,60,55.6,0.004,0,5.9,23.5 -2021-06-25T16:00,65.3,72,55.9,0.122,0,9.9,19.5 -2021-06-25T17:00,60.9,89,57.6,0.024,0,6.8,19.7 -2021-06-25T18:00,61,87,57.1,0.118,0,7.4,13.2 -2021-06-25T19:00,59.5,89,56.4,0.146,0,7.7,14.3 -2021-06-25T20:00,59.4,90,56.3,0.102,0,7.1,12.5 -2021-06-25T21:00,59.5,85,55,0.035,0,3.6,11.6 -2021-06-25T22:00,59.2,89,56,0.024,0,5.1,9.4 -2021-06-25T23:00,57.8,93,55.7,0.039,0,2.4,9.6 -2021-06-26T00:00,58.2,90,55.2,0.031,0,4,9.2 -2021-06-26T01:00,57.6,92,55.1,0.039,0,4.1,9.2 -2021-06-26T02:00,57.4,91,54.9,0.059,0,4,10.5 -2021-06-26T03:00,57.2,92,55,0.012,0,3.2,9.6 -2021-06-26T04:00,56.4,94,54.7,0.004,0,1.9,5.1 -2021-06-26T05:00,57.8,93,55.7,0.012,0,2.2,5.1 -2021-06-26T06:00,58.2,85,53.8,0.004,0,3,5.4 -2021-06-26T07:00,59.9,77,52.7,0,0,4.3,9.4 -2021-06-26T08:00,62.9,66,51.2,0,0,2.4,16.6 -2021-06-26T09:00,65,62,51.5,0,0,2.7,16.1 -2021-06-26T10:00,67.2,60,52.6,0,0,3.4,17.4 -2021-06-26T11:00,68.2,58,53,0.004,0,4.8,17.9 -2021-06-26T12:00,69.1,54,51.5,0.004,0,6,20.1 -2021-06-26T13:00,70.9,49,50.7,0,0,5.8,19 -2021-06-26T14:00,66.5,63,53.4,0.083,0,12.3,21.3 -2021-06-26T15:00,64.9,62,51.4,0.028,0,5,23.9 -2021-06-26T16:00,64.5,61,50.8,0.02,0,5.4,13.2 -2021-06-26T17:00,64.9,54,47.8,0.004,0,7.5,14.5 -2021-06-26T18:00,64.7,52,46.8,0,0,7.7,16.3 -2021-06-26T19:00,64,54,47.1,0,0,5,14.3 -2021-06-26T20:00,62.2,58,47,0,0,4.1,8.3 -2021-06-26T21:00,58.4,63,46,0,0,4.7,7.6 -2021-06-26T22:00,56.7,66,45.3,0,0,4.8,8.1 -2021-06-26T23:00,58,66,46.6,0,0,8.2,13.9 -2021-06-27T00:00,57.5,69,47.6,0,0,3.6,13.4 -2021-06-27T01:00,57.7,70,48.1,0,0,2.4,6 -2021-06-27T02:00,54.5,80,48.6,0,0,2.2,3.4 -2021-06-27T03:00,53.9,82,48.5,0,0,2.7,4.5 -2021-06-27T04:00,52.3,85,48,0,0,3.3,5.6 -2021-06-27T05:00,56.1,88,52.6,0,0,3.8,6.3 -2021-06-27T06:00,56.9,85,52.6,0,0,5,8.9 -2021-06-27T07:00,60.6,72,51.5,0,0,3.3,9.2 -2021-06-27T08:00,63.6,54,46.8,0,0,2.2,13.9 -2021-06-27T09:00,65.8,46,44.4,0,0,3.2,13.6 -2021-06-27T10:00,67.4,43,44,0,0,5.6,14.5 -2021-06-27T11:00,69,42,45.1,0,0,6.1,15.7 -2021-06-27T12:00,66.7,50,47.2,0.004,0,9.2,20.4 -2021-06-27T13:00,68.4,45,46,0,0,2.6,19.7 -2021-06-27T14:00,70.8,41,45.9,0,0,4.8,14.8 -2021-06-27T15:00,70.8,39,44.7,0,0,7.2,16.1 -2021-06-27T16:00,69.7,40,44.2,0,0,11.5,20.1 -2021-06-27T17:00,63.7,56,47.8,0.004,0,11.8,26.2 -2021-06-27T18:00,63.1,56,47.3,0,0,1.9,19.5 -2021-06-27T19:00,61.6,66,50.1,0,0,4.8,8.3 -2021-06-27T20:00,58.3,81,52.3,0,0,3.8,8.3 -2021-06-27T21:00,57.3,85,52.7,0.004,0,2.1,10.3 -2021-06-27T22:00,56.1,90,53.2,0.004,0,1.6,8.1 -2021-06-27T23:00,56,89,52.9,0,0,3.4,6.3 -2021-06-28T00:00,55,90,52.1,0,0,3,6 -2021-06-28T01:00,55,85,50.6,0,0,3.4,5.4 -2021-06-28T02:00,54.4,82,49,0,0,3.2,6.3 -2021-06-28T03:00,54.2,81,48.7,0,0,3.8,5.4 -2021-06-28T04:00,55.8,74,47.6,0,0,2.5,4.7 -2021-06-28T05:00,53.6,88,50.3,0,0,2.1,3.6 -2021-06-28T06:00,56.8,77,49.7,0,0,4.9,9.4 -2021-06-28T07:00,61.1,63,48.3,0,0,4.6,9.6 -2021-06-28T08:00,62.8,59,48.2,0,0,4.8,15.9 -2021-06-28T09:00,65.1,55,48.7,0,0,5.9,15.9 -2021-06-28T10:00,67.4,52,49.1,0,0,6,16.6 -2021-06-28T11:00,68.7,49,48.9,0,0,6.5,15.9 -2021-06-28T12:00,69.4,47,48.4,0.004,0,7.7,17.4 -2021-06-28T13:00,70.3,43,46.8,0,0,7.2,17.7 -2021-06-28T14:00,71.3,39,45.1,0,0,7.2,17.2 -2021-06-28T15:00,71.6,37,44.2,0,0,6.7,16.6 -2021-06-28T16:00,71.4,37,43.9,0,0,5.7,15.4 -2021-06-28T17:00,68.6,51,49.9,0,0,4.7,13.4 -2021-06-28T18:00,64,66,52.4,0.035,0,1.4,10.5 -2021-06-28T19:00,60.7,82,55.1,0.043,0,4.6,13 -2021-06-28T20:00,59.1,90,56,0.008,0,4.3,8.5 -2021-06-28T21:00,59.1,90,56,0,0,3.2,8.3 -2021-06-28T22:00,56,93,54,0,0,3.8,6.3 -2021-06-28T23:00,55.1,92,53,0,0,3.8,6.7 -2021-06-29T00:00,52.7,95,51.4,0,0,3.6,6.7 -2021-06-29T01:00,51.4,95,50.2,0,0,3.8,5.8 -2021-06-29T02:00,49.5,99,49.2,0,0,2.9,4.9 -2021-06-29T03:00,48.9,99,48.7,0,0,3,4.7 -2021-06-29T04:00,48.7,100,48.6,0,0,2.3,4.7 -2021-06-29T05:00,51.8,87,48,0,0,1.1,4.3 -2021-06-29T06:00,54.8,79,48.3,0,0,1.4,4.9 -2021-06-29T07:00,58.9,67,48.1,0,0,1.9,6.9 -2021-06-29T08:00,63.1,59,48.4,0,0,3.3,10.3 -2021-06-29T09:00,66,54,48.9,0,0,3.5,11.2 -2021-06-29T10:00,69.3,49,49.3,0,0,1.9,11.4 -2021-06-29T11:00,71.5,45,48.8,0,0,0.5,15.9 -2021-06-29T12:00,73.6,40,47.7,0,0,0.6,14.8 -2021-06-29T13:00,75.7,35,46.2,0,0,2.3,12.5 -2021-06-29T14:00,76.7,32,45,0,0,5.2,13.6 -2021-06-29T15:00,77.2,33,45.6,0,0,7.2,15.7 -2021-06-29T16:00,76.3,33,45.3,0,0,6.8,15.4 -2021-06-29T17:00,69.4,65,57.1,0,0,6.6,14.3 -2021-06-29T18:00,68.7,66,57.1,0.004,0,2.1,12.8 -2021-06-29T19:00,67.7,63,54.8,0,0,4.3,7.2 -2021-06-29T20:00,64.6,76,56.8,0,0,2.6,7.2 -2021-06-29T21:00,62.3,84,57.3,0,0,3.2,4.7 -2021-06-29T22:00,60.2,90,57.2,0,0,2.7,4.9 -2021-06-29T23:00,58.3,93,56.1,0,0,2.8,4.7 -2021-06-30T00:00,56.9,94,55.3,0,0,2.4,4.7 -2021-06-30T01:00,55.9,94,54.3,0,0,2.2,3.8 -2021-06-30T02:00,55.2,93,53.3,0,0,2.7,4.3 -2021-06-30T03:00,55.2,88,51.6,0,0,3.2,5.4 -2021-06-30T04:00,53.5,89,50.5,0,0,3,5.4 -2021-06-30T05:00,53.2,82,48,0,0,3.6,4.9 -2021-06-30T06:00,57.6,70,47.8,0,0,2.2,7.2 -2021-06-30T07:00,62.7,61,48.9,0,0,1.9,6.5 -2021-06-30T08:00,65.7,64,53.1,0,0,3.7,11 -2021-06-30T09:00,68.9,61,54.7,0,0,2.7,11.2 -2021-06-30T10:00,72.5,53,54.2,0,0,3.8,12.1 -2021-06-30T11:00,75.3,45,52.4,0,0,4,13.2 -2021-06-30T12:00,77.5,39,50.9,0,0,3.6,13 -2021-06-30T13:00,78.7,37,50.4,0,0,4.1,12.8 -2021-06-30T14:00,79.5,35,49.6,0,0,4.5,13 -2021-06-30T15:00,79.9,34,48.7,0,0,4.1,13 -2021-06-30T16:00,80.1,33,48.1,0,0,6.3,13.4 -2021-06-30T17:00,79.4,36,50,0,0,2.3,13.9 -2021-06-30T18:00,76.3,42,51.4,0,0,2.7,8.7 -2021-06-30T19:00,72.7,62,58.8,0,0,2.7,6.3 -2021-06-30T20:00,69.8,63,56.7,0,0,2.2,4.9 -2021-06-30T21:00,66.2,73,57.4,0,0,4.5,6.5 -2021-06-30T22:00,63,83,57.7,0,0,2.8,7.4 -2021-06-30T23:00,61.3,88,57.7,0,0,2.9,4.7 -2021-07-01T00:00,59.8,92,57.4,0,0,3,4.9 -2021-07-01T01:00,58.3,93,56.1,0,0,2.6,5.1 -2021-07-01T02:00,58,90,55,0,0,2.2,4.5 -2021-07-01T03:00,57.7,86,53.6,0,0,3.4,5.1 -2021-07-01T04:00,58.1,81,52.3,0,0,4,7.4 -2021-07-01T05:00,58.4,90,55.3,0,0,4.7,6.3 -2021-07-01T06:00,60.7,88,57.1,0,0,0.4,7.4 -2021-07-01T07:00,64,78,57.1,0,0,4.3,10.1 -2021-07-01T08:00,67.5,75,59.4,0,0,3.3,11 -2021-07-01T09:00,71.7,63,58.6,0,0,4.2,11.9 -2021-07-01T10:00,73,63,59.5,0.008,0,5.1,13.9 -2021-07-01T11:00,70.8,67,59.2,0.008,0,7,15.4 -2021-07-01T12:00,72.7,59,57.5,0,0,3.1,17.9 -2021-07-01T13:00,74.8,51,55.6,0.031,0,0.9,11.2 -2021-07-01T14:00,74.8,53,56.5,0.02,0,6,13.6 -2021-07-01T15:00,72.3,64,59.6,0.008,0,5.7,17.4 -2021-07-01T16:00,72.1,65,59.5,0.051,0,4.4,14.3 -2021-07-01T17:00,65.1,88,61.3,0.091,0,7.3,13.4 -2021-07-01T18:00,65.2,85,60.4,0.004,0,7.4,16.1 -2021-07-01T19:00,64.9,84,60,0,0,3.7,13.6 -2021-07-01T20:00,61.8,94,60,0,0,3,6 -2021-07-01T21:00,60.9,96,59.8,0,0,3.6,7.6 -2021-07-01T22:00,60.1,97,59.3,0,0,3.6,5.8 -2021-07-01T23:00,59.7,97,58.9,0,0,3.6,6.3 -2021-07-02T00:00,58.9,95,57.5,0,0,3.5,6 -2021-07-02T01:00,58.6,96,57.6,0,0,2.9,4.5 -2021-07-02T02:00,56.2,98,55.7,0,0,1.8,3.8 -2021-07-02T03:00,55.3,98,54.7,0,0,3.5,5.6 -2021-07-02T04:00,56.5,98,56,0,0,5.4,8.9 -2021-07-02T05:00,57.7,94,55.9,0,0,4.3,11 -2021-07-02T06:00,60,87,56.1,0,0,0.4,8.1 -2021-07-02T07:00,62.4,84,57.4,0,0,2.9,7.8 -2021-07-02T08:00,64.3,80,58,0,0,2.3,8.1 -2021-07-02T09:00,67.1,72,57.7,0,0,2.1,8.7 -2021-07-02T10:00,70.4,64,57.8,0,0,4,12.1 -2021-07-02T11:00,73.8,58,57.8,0,0,5.5,15 -2021-07-02T12:00,75.7,52,57,0,0,4.1,15 -2021-07-02T13:00,78.5,46,55.9,0,0,2.2,13.2 -2021-07-02T14:00,80.6,43,56.3,0,0,4,11.6 -2021-07-02T15:00,80.2,42,55.3,0,0,4.5,14.3 -2021-07-02T16:00,80.3,44,56.3,0,0,4.3,12.1 -2021-07-02T17:00,78.9,46,56.2,0,0,6.8,13.4 -2021-07-02T18:00,73.1,61,58.7,0.008,0,8.8,18.6 -2021-07-02T19:00,72.4,68,61.1,0,0,2.7,15 -2021-07-02T20:00,68.5,74,60,0,0,3.2,5.1 -2021-07-02T21:00,65.5,84,60.4,0,0,4.3,6.9 -2021-07-02T22:00,63.3,86,58.9,0,0,4.2,7.2 -2021-07-02T23:00,60.5,90,57.5,0,0,4.1,6.7 -2021-07-03T00:00,59.4,89,56.2,0,0,3.8,5.6 -2021-07-03T01:00,58.9,83,53.6,0,0,3.5,5.6 -2021-07-03T02:00,58.3,78,51.4,0,0,3.8,6 -2021-07-03T03:00,57.4,74,49.3,0,0,4,6.7 -2021-07-03T04:00,56,73,47.4,0,0,4.9,6.7 -2021-07-03T05:00,57.7,70,47.9,0,0,4.5,6.7 -2021-07-03T06:00,63,56,47.1,0,0,2.1,5.1 -2021-07-03T07:00,68.4,51,49.7,0,0,2.8,7.8 -2021-07-03T08:00,74.1,45,51.4,0,0,2.5,8.9 -2021-07-03T09:00,79.4,38,51.9,0,0,2.7,9.4 -2021-07-03T10:00,83.8,31,50.3,0,0,5,12.5 -2021-07-03T11:00,85.9,29,49.6,0,0,4.7,14.3 -2021-07-03T12:00,85.6,28,48.4,0,0,4.8,14.3 -2021-07-03T13:00,85.3,30,50.6,0,0,9.9,20.1 -2021-07-03T14:00,87.4,23,45,0,0,7.6,19.9 -2021-07-03T15:00,83.2,35,52.8,0,0,13.3,27.1 -2021-07-03T16:00,83.8,31,49.7,0,0,7.9,24.2 -2021-07-03T17:00,86,30,50.8,0,0,5.4,16.6 -2021-07-03T18:00,82,39,54.9,0.004,0,5.9,12.1 -2021-07-03T19:00,77.4,60,62.4,0,0,3.8,9.6 -2021-07-03T20:00,72.7,56,55.9,0,0,3.5,5.8 -2021-07-03T21:00,71.4,57,55.3,0,0,6.3,9.8 -2021-07-03T22:00,67.2,66,55.6,0,0,5.6,10.1 -2021-07-03T23:00,65.4,70,55.2,0,0,3.7,6.7 -2021-07-04T00:00,63.4,74,55,0,0,4.4,7.6 -2021-07-04T01:00,61.4,75,53.6,0,0,3.7,7.4 -2021-07-04T02:00,60.2,76,52.4,0,0,5.8,6.5 -2021-07-04T03:00,60.4,68,49.8,0,0,5.9,7.4 -2021-07-04T04:00,61.1,63,48.6,0,0,5.9,8.3 -2021-07-04T05:00,60,71,50.7,0,0,3.8,7.2 -2021-07-04T06:00,63.4,65,51.5,0,0,5.6,9.6 -2021-07-04T07:00,69.4,56,52.9,0,0,2.9,9.8 -2021-07-04T08:00,74.5,47,53.1,0,0,3.2,9.6 -2021-07-04T09:00,78.8,44,55.3,0,0,3.8,11 -2021-07-04T10:00,81.7,41,55.5,0,0,4,13.2 -2021-07-04T11:00,84.2,35,54,0,0,1.6,12.1 -2021-07-04T12:00,82.2,41,56.4,0.024,0,10.2,18.8 -2021-07-04T13:00,75.1,60,60.3,0.039,0,6.8,23.9 -2021-07-04T14:00,80.1,49,59.2,0,0,2.5,15.9 -2021-07-04T15:00,82,44,57.7,0,0,3.6,11.4 -2021-07-04T16:00,80.3,43,56,0,0,2.8,11.9 -2021-07-04T17:00,81.6,39,54,0,0,6.8,9.6 -2021-07-04T18:00,77.5,50,57.4,0,0,11,19.9 -2021-07-04T19:00,74.9,57,58.6,0,0,7.4,19 -2021-07-04T20:00,71.3,68,60.4,0,0,4.8,11.9 -2021-07-04T21:00,68.1,77,60.7,0,0,3.9,8.1 -2021-07-04T22:00,66,81,59.9,0,0,4.3,6.9 -2021-07-04T23:00,63.7,84,58.9,0,0,3.3,6.9 -2021-07-05T00:00,62.5,87,58.5,0,0,3.1,5.4 -2021-07-05T01:00,60.4,93,58.4,0,0,3.6,5.4 -2021-07-05T02:00,59.2,94,57.6,0,0,3.3,5.4 -2021-07-05T03:00,58,93,56,0,0,3.2,5.4 -2021-07-05T04:00,57.7,88,54.1,0,0,2.9,5.4 -2021-07-05T05:00,57.9,86,53.9,0,0,2.9,4.7 -2021-07-05T06:00,63.1,71,53.7,0,0,1.6,4.9 -2021-07-05T07:00,68.5,60,54.1,0,0,0.9,5.8 -2021-07-05T08:00,73.2,52,54.6,0,0,3.4,9.8 -2021-07-05T09:00,77.7,44,54.2,0,0,3.6,11.4 -2021-07-05T10:00,81.4,39,54.1,0,0,2.8,11.4 -2021-07-05T11:00,84,36,54,0,0,2.6,11.2 -2021-07-05T12:00,87.2,31,53.1,0,0,2.7,10.7 -2021-07-05T13:00,88.5,29,52.6,0,0,3.8,13 -2021-07-05T14:00,87.7,29,52,0,0,1.1,12.8 -2021-07-05T15:00,85.8,32,52.7,0,0,7.9,15 -2021-07-05T16:00,77.2,52,58.3,0.02,0,2.2,18.1 -2021-07-05T17:00,76.9,45,54,0,0,7.2,14.1 -2021-07-05T18:00,71.3,67,60,0.028,0,7.1,16.3 -2021-07-05T19:00,71,70,60.7,0,0,7.1,12.8 -2021-07-05T20:00,70.4,65,57.9,0,0,4.5,11.4 -2021-07-05T21:00,68.6,70,58.3,0,0,4.7,7.6 -2021-07-05T22:00,67.4,71,57.8,0,0,5.8,9.6 -2021-07-05T23:00,64.8,80,58.4,0,0,3.9,9.6 -2021-07-06T00:00,65.6,76,57.7,0,0,4.9,7.8 -2021-07-06T01:00,65.9,74,57.6,0,0,4.2,8.3 -2021-07-06T02:00,63.3,82,57.8,0,0,5.1,6.9 -2021-07-06T03:00,66,74,57.5,0,0,3.3,7.8 -2021-07-06T04:00,64.5,78,57.6,0,0,3.9,4.3 -2021-07-06T05:00,63.1,83,57.7,0,0,2.8,8.9 -2021-07-06T06:00,65.7,75,57.6,0,0,3.8,7.6 -2021-07-06T07:00,67.8,70,57.7,0,0,5.2,11.4 -2021-07-06T08:00,69.7,65,57.4,0,0,5.9,13.4 -2021-07-06T09:00,71.7,60,57.1,0,0,5.7,13.6 -2021-07-06T10:00,74.2,55,57.1,0,0,6,14.5 -2021-07-06T11:00,74.7,53,56.4,0.004,0,6,15.2 -2021-07-06T12:00,77.7,48,56.5,0,0,5,15.7 -2021-07-06T13:00,78.5,48,57.1,0,0,4,15 -2021-07-06T14:00,80.2,45,56.8,0.004,0,4.3,13.6 -2021-07-06T15:00,77.6,49,56.8,0.016,0,4.6,13.9 -2021-07-06T16:00,78.5,46,55.8,0,0,0.6,12.3 -2021-07-06T17:00,77.8,48,56.5,0.004,0,4.9,7.8 -2021-07-06T18:00,73.4,62,59.6,0.012,0,9.4,20.4 -2021-07-06T19:00,71.9,64,58.9,0.004,0,3.3,18.8 -2021-07-06T20:00,68.9,75,60.6,0,0,3.2,6.3 -2021-07-06T21:00,67.7,78,60.8,0,0,3.4,5.6 -2021-07-06T22:00,66.3,80,59.8,0,0,3.4,5.4 -2021-07-06T23:00,65.3,82,59.7,0,0,3,4.9 -2021-07-07T00:00,64.5,83,59.1,0,0,2.8,4.3 -2021-07-07T01:00,62,87,58,0,0,2.9,5.1 -2021-07-07T02:00,60.2,89,56.9,0,0,3.6,4.9 -2021-07-07T03:00,59.5,86,55.2,0,0,2.8,4.9 -2021-07-07T04:00,58.3,85,53.8,0,0,3.2,5.4 -2021-07-07T05:00,58.3,86,54.1,0,0,2.7,5.4 -2021-07-07T06:00,61.3,77,54,0,0,1.9,6.3 -2021-07-07T07:00,66.2,67,54.8,0,0,0.8,6 -2021-07-07T08:00,71.2,57,55.1,0,0,1,7.4 -2021-07-07T09:00,75.9,49,55.1,0,0,1.7,8.9 -2021-07-07T10:00,80.1,40,53.3,0,0,3.6,12.1 -2021-07-07T11:00,83,33,50.9,0,0,2.9,12.1 -2021-07-07T12:00,85.6,26,46.8,0,0,3.6,11.9 -2021-07-07T13:00,87.2,22,43.4,0,0,4.5,12.8 -2021-07-07T14:00,88.1,20,42.2,0,0,5.4,13.6 -2021-07-07T15:00,88.7,19,41.3,0,0,5.2,13.9 -2021-07-07T16:00,88.6,19,40.6,0,0,4.8,13 -2021-07-07T17:00,87.6,18,39.1,0,0,6.6,12.5 -2021-07-07T18:00,86.2,21,42.3,0,0,6,12.8 -2021-07-07T19:00,79.1,33,47.8,0,0,5.3,9.8 -2021-07-07T20:00,76.4,34,46.1,0,0,9.7,15.2 -2021-07-07T21:00,73.1,42,48.7,0,0,11,17.9 -2021-07-07T22:00,71.7,46,49.6,0,0,12.4,20.1 -2021-07-07T23:00,70.4,47,49.4,0,0,13.1,21.3 -2021-07-08T00:00,68.9,49,48.9,0,0,12.1,21.5 -2021-07-08T01:00,67.7,49,48,0,0,9.8,20.1 -2021-07-08T02:00,66.1,50,47,0,0,6.8,16.1 -2021-07-08T03:00,64.6,51,46.2,0,0,6.4,11.2 -2021-07-08T04:00,63,53,45.4,0,0,5.4,10.3 -2021-07-08T05:00,62.9,54,46.1,0,0,8,8.3 -2021-07-08T06:00,69.8,41,45.3,0,0,3.1,9.8 -2021-07-08T07:00,75.6,36,46.7,0,0,1.4,6.7 -2021-07-08T08:00,81.8,32,49.2,0,0,3,8.9 -2021-07-08T09:00,88,26,49.2,0,0,2.4,9.4 -2021-07-08T10:00,92.6,21,47.2,0,0,1.1,14.8 -2021-07-08T11:00,95.1,15,40.6,0,0,8.7,17.7 -2021-07-08T12:00,94.2,16,41,0,0,10.6,21.5 -2021-07-08T13:00,94.5,16,41,0,0,5.6,20.8 -2021-07-08T14:00,95.5,15,40.8,0,0,6,14.1 -2021-07-08T15:00,93.3,17,41.6,0,0,11.9,21 -2021-07-08T16:00,93.6,16,40.2,0,0,5.9,22.1 -2021-07-08T17:00,92.5,19,44.1,0,0,5.4,12.3 -2021-07-08T18:00,87.5,26,48.2,0,0,9,14.8 -2021-07-08T19:00,81.3,39,53.8,0,0,4.8,14.8 -2021-07-08T20:00,76,47,54.2,0,0,5.9,7.6 -2021-07-08T21:00,79.2,39,51.8,0,0,1.7,7.8 -2021-07-08T22:00,73.6,45,50.7,0,0,6.7,11.2 -2021-07-08T23:00,69.9,46,48.1,0,0,5.2,11.2 -2021-07-09T00:00,68.3,50,48.7,0,0,5.4,9.2 -2021-07-09T01:00,65.8,51,47,0,0,5.5,8.5 -2021-07-09T02:00,64.7,48,44.8,0,0,6,7.6 -2021-07-09T03:00,69.3,37,42.1,0,0,5,8.3 -2021-07-09T04:00,62.3,50,43.5,0,0,5.9,6 -2021-07-09T05:00,63.9,59,49.1,0,0,5.6,7.6 -2021-07-09T06:00,69.7,48,48.9,0,0,5.4,7.8 -2021-07-09T07:00,75.5,41,49.9,0,0,5.5,11.2 -2021-07-09T08:00,82,33,49.7,0,0,4.5,11.4 -2021-07-09T09:00,87.4,25,47.2,0,0,3.8,11 -2021-07-09T10:00,90.1,21,45.5,0,0,4.6,13.6 -2021-07-09T11:00,92.3,20,45.2,0,0,6.2,14.3 -2021-07-09T12:00,93.6,18,43.5,0,0,2.1,15.4 -2021-07-09T13:00,92.9,18,42.8,0,0,5.3,12.8 -2021-07-09T14:00,96.3,15,41.3,0,0,8.3,17.9 -2021-07-09T15:00,96.4,15,40.5,0,0,5.5,17.4 -2021-07-09T16:00,91.9,18,42.6,0,0,4.4,21.3 -2021-07-09T17:00,85.6,34,53.7,0,0,10,17.9 -2021-07-09T18:00,86.3,35,55.2,0,0,2.2,19.7 -2021-07-09T19:00,80.6,37,52.2,0,0,9.8,19.9 -2021-07-09T20:00,76.6,46,54.1,0,0,8.6,15.7 -2021-07-09T21:00,73.6,56,57,0,0,6.8,13.9 -2021-07-09T22:00,71.2,60,56.8,0,0,4.3,11.9 -2021-07-09T23:00,66.9,64,54.5,0,0,5.9,7.4 -2021-07-10T00:00,70.4,43,46.6,0,0,8.8,12.5 -2021-07-10T01:00,70.4,47,49.5,0,0,10.7,17.9 -2021-07-10T02:00,68.9,62,55.4,0,0,16.4,29.5 -2021-07-10T03:00,66.4,75,58.4,0,0,12.3,27.3 -2021-07-10T04:00,66,75,57.8,0,0,9.6,20.6 -2021-07-10T05:00,66.9,62,53.5,0,0,6.5,17.4 -2021-07-10T06:00,67.2,60,53,0,0,4.1,11.2 -2021-07-10T07:00,68.8,56,52.5,0,0,1.8,8.1 -2021-07-10T08:00,70.9,52,52.6,0,0,2.2,9.4 -2021-07-10T09:00,73.2,48,52.6,0,0,1.3,9.4 -2021-07-10T10:00,76.2,42,51.7,0,0,3.2,11.9 -2021-07-10T11:00,79,36,49.7,0,0,3.7,13.2 -2021-07-10T12:00,81,32,48.5,0,0,4.8,14.1 -2021-07-10T13:00,82.4,31,48.4,0,0,8.2,18.3 -2021-07-10T14:00,83.1,29,47.3,0,0,8.4,19.2 -2021-07-10T15:00,83.8,27,45.9,0,0,7.6,18.8 -2021-07-10T16:00,83.5,26,45.4,0,0,9.4,19 -2021-07-10T17:00,82.2,28,46.3,0,0,7.6,19 -2021-07-10T18:00,80.9,29,45.5,0,0,8.1,15.2 -2021-07-10T19:00,78.2,31,45,0,0,4.5,14.5 -2021-07-10T20:00,75,30,41.7,0,0,6,9.4 -2021-07-10T21:00,71.1,38,44.1,0,0,5.8,9.8 -2021-07-10T22:00,69.3,40,44.2,0,0,3.6,6.7 -2021-07-10T23:00,67.6,42,44,0,0,5.2,6.3 -2021-07-11T00:00,64.9,46,43.8,0,0,6.3,7.6 -2021-07-11T01:00,63.1,52,45.1,0,0,4.9,7.8 -2021-07-11T02:00,60.2,61,46.6,0,0,3.8,6 -2021-07-11T03:00,59,63,46.3,0,0,4.3,6.3 -2021-07-11T04:00,57.8,68,47.5,0,0,4.1,6.3 -2021-07-11T05:00,55.3,80,49.3,0,0,2,6.7 -2021-07-11T06:00,59.5,69,49.4,0,0,1.8,6.5 -2021-07-11T07:00,64.9,57,49.5,0,0,1.6,6.9 -2021-07-11T08:00,69.4,47,48.2,0,0,3.3,10.3 -2021-07-11T09:00,73.5,40,47.6,0,0,3.9,12.3 -2021-07-11T10:00,76.9,34,46.7,0,0,3.6,12.5 -2021-07-11T11:00,79.7,29,44.9,0,0,4.1,13.2 -2021-07-11T12:00,82,25,42.2,0,0,4.8,14.3 -2021-07-11T13:00,83.4,23,42.3,0,0,4.7,14.8 -2021-07-11T14:00,84.7,22,42.3,0,0,3.3,14.3 -2021-07-11T15:00,85.7,21,41.8,0,0,3.9,12.1 -2021-07-11T16:00,86.1,21,41.5,0,0,5.5,13.2 -2021-07-11T17:00,85.5,22,42.1,0,0,6.8,13.6 -2021-07-11T18:00,84.1,23,42.2,0,0,6.3,13.9 -2021-07-11T19:00,78.5,38,50.9,0,0,5,11.4 -2021-07-11T20:00,79.1,27,42.1,0,0,4,6.5 -2021-07-11T21:00,75.3,31,42.4,0,0,2.8,4.7 -2021-07-11T22:00,69.8,41,45.1,0,0,2.7,3.6 -2021-07-11T23:00,64.7,56,48.7,0,0,3.4,5.4 -2021-07-12T00:00,62.7,64,50.3,0,0,3.5,5.4 -2021-07-12T01:00,60.8,67,49.7,0,0,4,6.5 -2021-07-12T02:00,59.9,67,48.7,0,0,3.5,6.7 -2021-07-12T03:00,58.3,68,47.8,0,0,3.2,5.6 -2021-07-12T04:00,57,69,46.9,0,0,4.3,5.1 -2021-07-12T05:00,57,72,48,0,0,4,7.2 -2021-07-12T06:00,61.6,59,47.2,0,0,1,4.9 -2021-07-12T07:00,66.1,53,48.5,0,0,1.6,6.7 -2021-07-12T08:00,71.2,46,49.4,0,0,1.3,8.1 -2021-07-12T09:00,76.6,39,49.8,0,0,1.4,8.9 -2021-07-12T10:00,81.4,33,49.2,0,0,2.8,11.2 -2021-07-12T11:00,85.5,24,44.6,0,0,3.9,12.5 -2021-07-12T12:00,88.4,18,40.1,0,0,5.7,15 -2021-07-12T13:00,90.3,16,37.3,0,0,5.9,15.9 -2021-07-12T14:00,91.2,15,36.3,0,0,6.2,15.4 -2021-07-12T15:00,91.1,15,36.4,0,0,7.7,16.6 -2021-07-12T16:00,90.2,15,36.6,0,0,7.4,16.6 -2021-07-12T17:00,87.7,16,36.4,0,0,1.1,15.4 -2021-07-12T18:00,87.2,17,37.6,0,0,0.4,6.3 -2021-07-12T19:00,82.8,28,46.7,0,0,2.7,3.1 -2021-07-12T20:00,77.2,32,45.2,0,0,3.5,4.7 -2021-07-12T21:00,76.4,31,43.8,0,0,1.3,4.5 -2021-07-12T22:00,69.3,45,47.3,0,0,4.1,4.9 -2021-07-12T23:00,66.8,49,47.2,0,0,3.3,6.5 -2021-07-13T00:00,64,55,47.7,0,0,4.1,6.9 -2021-07-13T01:00,62.6,57,47.2,0,0,4.7,7.6 -2021-07-13T02:00,62.3,56,46.6,0,0,4.4,7.6 -2021-07-13T03:00,62.1,54,45.1,0,0,4.3,7.4 -2021-07-13T04:00,62.2,53,44.6,0,0,3.3,7.4 -2021-07-13T05:00,62.9,58,47.9,0,0,4.3,5.6 -2021-07-13T06:00,66.3,52,48,0,0,3.9,7.4 -2021-07-13T07:00,71.7,43,48.1,0,0,2.2,7.6 -2021-07-13T08:00,77,36,47.8,0,0,3.5,8.3 -2021-07-13T09:00,79.3,31,46.2,0,0,13.5,25.3 -2021-07-13T10:00,82.5,30,47.8,0,0,12,25.3 -2021-07-13T11:00,83.6,28,47,0,0,11.9,23.9 -2021-07-13T12:00,85.5,25,45.1,0,0,6.4,24.2 -2021-07-13T13:00,87.3,25,46.7,0,0,1.6,16.1 -2021-07-13T14:00,87.5,24,46,0,0,6.2,14.1 -2021-07-13T15:00,86.7,23,45,0,0,6.7,17.7 -2021-07-13T16:00,87.5,22,44.1,0,0,5.2,15 -2021-07-13T17:00,82,30,47.3,0,0,6.3,15.2 -2021-07-13T18:00,82.1,31,48.3,0,0,6.2,11.4 -2021-07-13T19:00,77.7,35,48.1,0,0,13.9,22.6 -2021-07-13T20:00,76.3,36,47.2,0,0,10.9,23 -2021-07-13T21:00,75.4,38,48.3,0,0,10.5,18.1 -2021-07-13T22:00,73.7,40,47.6,0,0,5.8,17.4 -2021-07-13T23:00,71.5,43,48,0,0,2.9,9.6 -2021-07-14T00:00,70.8,44,48,0,0,2.9,4.7 -2021-07-14T01:00,68.1,50,49,0,0,4.5,5.4 -2021-07-14T02:00,67,49,47.1,0,0,4.2,6.5 -2021-07-14T03:00,65.1,51,46.5,0,0,5.1,6.9 -2021-07-14T04:00,65.1,50,45.8,0,0,3.4,8.3 -2021-07-14T05:00,61.5,76,54,0,0,3.6,7.4 -2021-07-14T06:00,64.1,71,54.5,0,0,2.7,5.8 -2021-07-14T07:00,66.4,65,54.4,0,0,6.9,13.2 -2021-07-14T08:00,67.9,66,56.3,0,0,6.8,14.3 -2021-07-14T09:00,69.7,64,56.8,0,0,5.7,14.1 -2021-07-14T10:00,70.3,63,57.2,0,0,2.2,13.2 -2021-07-14T11:00,72.9,58,57.1,0,0,1.3,8.5 -2021-07-14T12:00,75.4,53,57,0,0,2.1,9.6 -2021-07-14T13:00,77,49,56.3,0,0,0.8,10.1 -2021-07-14T14:00,79.7,44,55.7,0,0,2,9.4 -2021-07-14T15:00,80,42,54.8,0,0,3.8,10.5 -2021-07-14T16:00,79.2,42,54.1,0.02,0,4.9,11.9 -2021-07-14T17:00,75.2,44,51.6,0.043,0,4.2,15.9 -2021-07-14T18:00,71.3,49,51.4,0.012,0,9,14.8 -2021-07-14T19:00,68.8,61,55,0.004,0,9,16.1 -2021-07-14T20:00,66.9,64,54.5,0,0,3.9,14.8 -2021-07-14T21:00,64.9,69,54.4,0,0,3.1,6.5 -2021-07-14T22:00,62.1,77,54.6,0,0,3.7,5.1 -2021-07-14T23:00,60.4,83,55.3,0,0,2.9,5.1 -2021-07-15T00:00,59.6,81,53.8,0,0,3.5,6 -2021-07-15T01:00,57.5,85,53,0,0,2.8,5.8 -2021-07-15T02:00,56.1,88,52.5,0,0,3.5,4.5 -2021-07-15T03:00,56,86,51.8,0,0,2.8,4.9 -2021-07-15T04:00,55.3,84,50.5,0,0,3.4,4.3 -2021-07-15T05:00,56.2,83,51.2,0,0,2.1,4.3 -2021-07-15T06:00,59,74,50.9,0,0,1.9,5.4 -2021-07-15T07:00,63,65,51.1,0,0,3.7,9.4 -2021-07-15T08:00,66.7,58,51.6,0,0,4.3,12.1 -2021-07-15T09:00,71.4,49,51.4,0,0,2.8,11.9 -2021-07-15T10:00,76.6,41,51.2,0,0,3.7,12.1 -2021-07-15T11:00,81.1,36,51.7,0,0,3.7,14.5 -2021-07-15T12:00,82.1,31,48.7,0.004,0,2.2,14.8 -2021-07-15T13:00,84.6,24,44.1,0,0,1.4,13.9 -2021-07-15T14:00,85.9,22,42.2,0,0,3.3,13 -2021-07-15T15:00,86,23,43.8,0,0,8.9,16.8 -2021-07-15T16:00,81.9,32,48.9,0,0,10.6,24.8 -2021-07-15T17:00,83.6,24,43.3,0,0,2.5,20.8 -2021-07-15T18:00,83.5,23,41.6,0,0,0.9,7.4 -2021-07-15T19:00,79.1,32,46.6,0,0,3.2,4.5 -2021-07-15T20:00,76.7,34,46.6,0,0,5.3,9.8 -2021-07-15T21:00,74.8,40,48.8,0,0,2.4,8.7 -2021-07-15T22:00,68.3,52,49.9,0,0,3,4.9 -2021-07-15T23:00,64.4,62,51.2,0,0,3.5,6.3 -2021-07-16T00:00,63.2,63,50.6,0,0,4.4,7.2 -2021-07-16T01:00,62.7,59,48.1,0,0,4.9,8.1 -2021-07-16T02:00,62.5,53,45.1,0,0,6.2,10.1 -2021-07-16T03:00,62.4,50,43.3,0,0,5.7,10.3 -2021-07-16T04:00,61.6,51,43.1,0,0,5.1,9.4 -2021-07-16T05:00,63.1,49,43.5,0,0,1.7,7.8 -2021-07-16T06:00,64.6,52,46.7,0,0,1.8,3.1 -2021-07-16T07:00,69.1,43,46,0,0,1.5,6.5 -2021-07-16T08:00,75.4,34,45.1,0,0,2,8.3 -2021-07-16T09:00,81.4,25,42.1,0,0,1.3,8.9 -2021-07-16T10:00,85.6,20,39.4,0,0,0.9,8.5 -2021-07-16T11:00,88.2,17,38,0,0,2.5,10.5 -2021-07-16T12:00,89.9,15,36.8,0,0,4.6,13.6 -2021-07-16T13:00,90.7,15,36.4,0,0,4.6,14.3 -2021-07-16T14:00,91.3,15,36.9,0,0,5.2,13.6 -2021-07-16T15:00,90.6,15,36.3,0,0,4,13.9 -2021-07-16T16:00,90.7,15,36.2,0,0,4.2,11.9 -2021-07-16T17:00,88.1,19,40.4,0,0,9.2,15.4 -2021-07-16T18:00,84.9,23,42.9,0,0,13.4,23 -2021-07-16T19:00,80.2,29,44.6,0,0,9.2,23 -2021-07-16T20:00,77.6,32,45.5,0,0,2.3,15.2 -2021-07-16T21:00,73.4,39,46.9,0,0,4.5,6.9 -2021-07-16T22:00,69.6,47,48.7,0,0,3.6,6.9 -2021-07-16T23:00,67.3,55,50.4,0,0,3.5,5.4 -2021-07-17T00:00,66.7,56,50.6,0,0,3.9,6.3 -2021-07-17T01:00,64.7,60,50.6,0,0,4.2,7.4 -2021-07-17T02:00,63.1,60,49.2,0,0,4.3,7.4 -2021-07-17T03:00,61.8,61,48.3,0,0,3.7,7.4 -2021-07-17T04:00,60.7,63,48,0,0,3.4,6.3 -2021-07-17T05:00,63.6,65,51.6,0,0,3.3,6.3 -2021-07-17T06:00,65.8,58,50.6,0,0,4,6.3 -2021-07-17T07:00,69.8,47,48.5,0,0,4.6,11 -2021-07-17T08:00,74.5,39,48.1,0,0,3.3,11 -2021-07-17T09:00,78.8,33,47.7,0,0,2.7,10.7 -2021-07-17T10:00,82.9,28,46.8,0,0,2.7,11.2 -2021-07-17T11:00,86.3,25,46.1,0,0,3.1,11.9 -2021-07-17T12:00,89.2,22,45.4,0,0,5.1,14.5 -2021-07-17T13:00,90.5,21,45.1,0,0,6.1,15.7 -2021-07-17T14:00,91.1,20,44.6,0,0,7.4,16.8 -2021-07-17T15:00,91.6,19,43.2,0,0,8.2,18.8 -2021-07-17T16:00,90.7,19,43.4,0,0,6.9,17.9 -2021-07-17T17:00,80.5,39,53.6,0,0,11.8,14.8 -2021-07-17T18:00,81.8,36,52.4,0,0,6.4,20.8 -2021-07-17T19:00,80.1,40,53.7,0,0,2.6,12.3 -2021-07-17T20:00,76.8,46,54.6,0,0,2.5,5.4 -2021-07-17T21:00,74.3,47,52.9,0,0,2.8,3.4 -2021-07-17T22:00,73,46,51.1,0,0,2.1,3.6 -2021-07-17T23:00,69.5,50,49.9,0,0,3.5,5.1 -2021-07-18T00:00,68.1,47,47.2,0,0,3.7,6.3 -2021-07-18T01:00,65.8,51,47.2,0,0,3.6,6 -2021-07-18T02:00,63.5,58,48.5,0,0,3.8,6 -2021-07-18T03:00,62.1,63,49.2,0,0,3.3,5.4 -2021-07-18T04:00,60.6,68,49.9,0,0,3.4,4.7 -2021-07-18T05:00,61.1,58,46.4,0,0,3.8,4 -2021-07-18T06:00,63.1,57,47.8,0,0,3.6,7.8 -2021-07-18T07:00,68.5,49,48.6,0,0,1.3,7.6 -2021-07-18T08:00,73.4,42,48.9,0,0,2.3,8.7 -2021-07-18T09:00,78.2,36,49.1,0,0,3.5,11.4 -2021-07-18T10:00,82.6,32,49.4,0,0,4,12.8 -2021-07-18T11:00,86.4,27,48.4,0,0,4.3,13.2 -2021-07-18T12:00,89.1,23,46,0,0,6.4,15.9 -2021-07-18T13:00,90.3,20,44.1,0,0,9.8,20.4 -2021-07-18T14:00,91,19,42.4,0,0,9.9,21.5 -2021-07-18T15:00,90.8,19,42.8,0,0,8.5,20.8 -2021-07-18T16:00,90.2,20,43.9,0,0,8.2,18.3 -2021-07-18T17:00,89.9,17,38.9,0,0,8.4,18.1 -2021-07-18T18:00,88.4,18,39.6,0,0,6.6,15.7 -2021-07-18T19:00,82.2,27,44.6,0,0,5,11.4 -2021-07-18T20:00,77.9,31,44.7,0,0,5.5,8.1 -2021-07-18T21:00,76.6,37,48,0,0,5.6,8.3 -2021-07-18T22:00,74.7,44,51.2,0,0,8.2,14.8 -2021-07-18T23:00,69.1,55,52.3,0,0,3.6,13.4 -2021-07-19T00:00,67,62,53.7,0,0,4.7,7.6 -2021-07-19T01:00,64.5,66,52.7,0,0,3,7.8 -2021-07-19T02:00,62.1,66,50.6,0,0,2.2,5.1 -2021-07-19T03:00,61.3,66,49.8,0,0,3.1,4.9 -2021-07-19T04:00,60.4,63,47.7,0,0,3.2,5.1 -2021-07-19T05:00,59.6,69,49.6,0,0,2.2,5.1 -2021-07-19T06:00,63.6,59,49.1,0,0,2.8,6.3 -2021-07-19T07:00,71.2,46,49.2,0,0,2.3,7.6 -2021-07-19T08:00,78,36,48.7,0,0,0.8,7.8 -2021-07-19T09:00,82.7,33,50.7,0,0,0.6,8.1 -2021-07-19T10:00,86.3,26,47.7,0,0,1,8.9 -2021-07-19T11:00,88.8,20,43.1,0,0,1.9,10.5 -2021-07-19T12:00,91,17,39.8,0,0,3.7,12.5 -2021-07-19T13:00,92.5,14,37.2,0,0,6.8,16.3 -2021-07-19T14:00,93,14,36.5,0,0,8.3,18.6 -2021-07-19T15:00,92.9,15,37.7,0,0,9.2,19.2 -2021-07-19T16:00,92.2,15,38.6,0,0,9.6,19.2 -2021-07-19T17:00,90.2,16,37.4,0,0,11.2,19 -2021-07-19T18:00,89.1,16,36.6,0,0,10.1,20.8 -2021-07-19T19:00,84.3,20,38.4,0,0,5.2,17 -2021-07-19T20:00,78.9,26,41.1,0,0,4.9,8.5 -2021-07-19T21:00,76,34,45.3,0,0,4.5,7.2 -2021-07-19T22:00,72.5,41,47.4,0,0,5.8,9.2 -2021-07-19T23:00,70.3,43,46.4,0,0,5.8,10.1 -2021-07-20T00:00,68.3,44,45.5,0,0,4.5,9.6 -2021-07-20T01:00,67.1,45,45.2,0,0,5.1,8.3 -2021-07-20T02:00,65.6,47,44.6,0,0,5,8.7 -2021-07-20T03:00,63.9,49,44.5,0,0,4.4,8.3 -2021-07-20T04:00,62,54,45.1,0,0,3.8,7.4 -2021-07-20T05:00,61.6,58,46.8,0,0,2,5.6 -2021-07-20T06:00,64.1,55,47.6,0,0,3,6 -2021-07-20T07:00,71.2,41,46.5,0,0,1.8,7.2 -2021-07-20T08:00,76.6,34,46.1,0,0,0.6,7.2 -2021-07-20T09:00,81.5,29,46.3,0,0,0.6,7.8 -2021-07-20T10:00,85.6,25,46,0,0,2.8,11 -2021-07-20T11:00,89.4,21,45,0,0,3.8,13 -2021-07-20T12:00,92,19,43.6,0,0,2.8,12.8 -2021-07-20T13:00,94.1,17,42.4,0,0,3,11.9 -2021-07-20T14:00,95.3,16,42.4,0,0,3.2,13 -2021-07-20T15:00,95.8,16,42.3,0,0,4.4,13.2 -2021-07-20T16:00,95,16,41.9,0,0,6.4,13.9 -2021-07-20T17:00,92.4,21,46.3,0,0,5.1,15.9 -2021-07-20T18:00,90.4,22,46.9,0,0,3.9,10.7 -2021-07-20T19:00,86.5,25,46.6,0,0,6.5,10.5 -2021-07-20T20:00,82.3,28,46,0,0,5.1,11.4 -2021-07-20T21:00,79.1,34,48.6,0,0,3.2,8.5 -2021-07-20T22:00,78.5,34,48.1,0,0,6.9,10.7 -2021-07-20T23:00,76.6,34,46.3,0,0,9.2,15 -2021-07-21T00:00,74.9,38,47.3,0,0,8.7,15.4 -2021-07-21T01:00,72.2,42,48.1,0,0,6.1,14.5 -2021-07-21T02:00,70.3,47,48.9,0,0,4.6,10.3 -2021-07-21T03:00,69.3,49,49.5,0,0,3.6,7.6 -2021-07-21T04:00,68.4,52,50,0,0,3.7,5.8 -2021-07-21T05:00,66.8,55,49.9,0,0,3.3,5.8 -2021-07-21T06:00,69.4,50,50,0,0,4.7,7.8 -2021-07-21T07:00,73.8,47,52.2,0,0,1.1,8.5 -2021-07-21T08:00,78.1,43,53.7,0,0,2.2,8.5 -2021-07-21T09:00,82,36,52.5,0,0,3.4,10.5 -2021-07-21T10:00,84.5,32,51,0,0,5.7,14.5 -2021-07-21T11:00,86.8,29,50.5,0,0,5.8,15.4 -2021-07-21T12:00,89.3,26,50.4,0,0,5.8,15.7 -2021-07-21T13:00,89.5,25,49.1,0.004,0,6.3,16.6 -2021-07-21T14:00,89,25,49,0,0,5,16.1 -2021-07-21T15:00,90.3,24,48.7,0,0,5.8,14.3 -2021-07-21T16:00,88.7,25,48.7,0,0,7.8,16.6 -2021-07-21T17:00,84.8,36,55.2,0,0,11.8,16.6 -2021-07-21T18:00,81.9,40,55.1,0,0,5.3,20.6 -2021-07-21T19:00,80.7,41,55.1,0,0,4.7,10.7 -2021-07-21T20:00,79.3,49,58.5,0,0,9,14.5 -2021-07-21T21:00,77,51,57.4,0,0,7.6,14.8 -2021-07-21T22:00,74.8,51,55.3,0,0,7.6,12.5 -2021-07-21T23:00,73.2,53,55.2,0,0,5.2,12.5 -2021-07-22T00:00,71.4,55,54.5,0,0,4.5,8.7 -2021-07-22T01:00,70,56,53.3,0,0,4,7.8 -2021-07-22T02:00,67.7,59,52.8,0,0,3.2,6.5 -2021-07-22T03:00,66,61,52.3,0,0,3.8,4.9 -2021-07-22T04:00,65.8,61,51.7,0,0,3.8,5.1 -2021-07-22T05:00,68.8,50,49.4,0,0,3.4,4.9 -2021-07-22T06:00,70.7,46,48.7,0,0,0.5,6.3 -2021-07-22T07:00,74,42,49.5,0,0,1.6,6 -2021-07-22T08:00,78.3,40,52.2,0,0,3.7,10.5 -2021-07-22T09:00,82.8,35,52.3,0,0,4.6,12.5 -2021-07-22T10:00,87.1,28,50.1,0,0,6.2,15 -2021-07-22T11:00,89.7,27,51.3,0,0,5.9,15.7 -2021-07-22T12:00,92.2,25,51.4,0,0,5.9,15.9 -2021-07-22T13:00,93.3,23,49.5,0,0,8,17.7 -2021-07-22T14:00,92.1,22,48.4,0,0,7.8,18.1 -2021-07-22T15:00,91.9,22,48.1,0,0,2.5,17 -2021-07-22T16:00,91.4,23,47.9,0,0,1.1,10.5 -2021-07-22T17:00,83.1,39,55.9,0,0,9.6,15 -2021-07-22T18:00,84.7,36,55,0,0,9.1,16.8 -2021-07-22T19:00,80.5,46,57.6,0.004,0,10.5,16.1 -2021-07-22T20:00,78.7,49,57.9,0,0,10.5,20.1 -2021-07-22T21:00,77.3,48,56.3,0,0,6.3,16.8 -2021-07-22T22:00,74.8,53,56.4,0,0,4.1,10.3 -2021-07-22T23:00,72.6,58,56.8,0,0,4.2,7.2 -2021-07-23T00:00,72.6,57,56.4,0,0,4.7,7.8 -2021-07-23T01:00,73,53,55,0,0,3.7,8.5 -2021-07-23T02:00,71.5,54,53.8,0,0,3.3,6.3 -2021-07-23T03:00,70.8,50,51.4,0,0,5.1,6.7 -2021-07-23T04:00,70.1,51,51,0,0,6.6,8.1 -2021-07-23T05:00,68.3,57,52.3,0,0,6.2,8.1 -2021-07-23T06:00,73.4,49,53,0,0,4.6,7.8 -2021-07-23T07:00,77.1,45,54.3,0,0,5.5,11 -2021-07-23T08:00,80.3,40,53.9,0,0,6.1,14.3 -2021-07-23T09:00,83.5,34,52.4,0,0,5.9,14.1 -2021-07-23T10:00,86.3,31,51.8,0,0,6,15.4 -2021-07-23T11:00,88.6,28,51.3,0,0,3.9,15.2 -2021-07-23T12:00,90.1,27,51.2,0,0,4.9,14.3 -2021-07-23T13:00,91,26,51.1,0,0,5.9,15 -2021-07-23T14:00,89.2,28,51.8,0,0,10.2,21.5 -2021-07-23T15:00,89.1,28,51.3,0.004,0,3.6,21.5 -2021-07-23T16:00,86.6,30,51.1,0,0,8.4,15.9 -2021-07-23T17:00,79.8,44,55.9,0,0,14.6,18.1 -2021-07-23T18:00,79.6,40,53.4,0,0,10.1,25.9 -2021-07-23T19:00,77.5,45,54.7,0,0,7.5,18.3 -2021-07-23T20:00,72.1,65,59.5,0.024,0,3,16.1 -2021-07-23T21:00,68.7,84,63.7,0.02,0,8,19.2 -2021-07-23T22:00,68.3,78,61.3,0,0,7.5,19.7 -2021-07-23T23:00,68.8,76,60.9,0,0,5.8,14.3 -2021-07-24T00:00,68.2,78,61.1,0,0,6.9,12.3 -2021-07-24T01:00,66.7,81,60.6,0,0,2.6,11.2 -2021-07-24T02:00,65.3,84,60.3,0,0,2.6,4.3 -2021-07-24T03:00,64.3,87,60.3,0,0,2.8,4 -2021-07-24T04:00,64.6,82,59,0,0,2.7,4.9 -2021-07-24T05:00,66.7,65,54.7,0,0,4,4.3 -2021-07-24T06:00,67.7,63,54.5,0,0,1.9,6.5 -2021-07-24T07:00,72.4,54,55,0,0,1.8,6.7 -2021-07-24T08:00,76.8,43,52.7,0,0,5.9,12.1 -2021-07-24T09:00,78.5,41,52.9,0,0,8.4,16.8 -2021-07-24T10:00,80.6,37,52.1,0,0,7.1,17 -2021-07-24T11:00,83.7,30,49.4,0,0,6.8,15.9 -2021-07-24T12:00,84.5,25,45.2,0,0,8.1,17.2 -2021-07-24T13:00,84.7,24,43.9,0,0,5.3,17 -2021-07-24T14:00,88.3,20,42.4,0,0,7.3,16.3 -2021-07-24T15:00,87,21,42.7,0,0,10.1,19.9 -2021-07-24T16:00,86.8,20,40.4,0,0,8.9,20.1 -2021-07-24T17:00,82.1,28,46,0,0,7.2,17.4 -2021-07-24T18:00,80.9,29,46,0,0,5.5,12.8 -2021-07-24T19:00,78.3,35,48.7,0,0,7.4,11.6 -2021-07-24T20:00,75.1,41,49.6,0,0,5.5,13 -2021-07-24T21:00,74.5,43,50.8,0,0,1.9,9.2 -2021-07-24T22:00,71.7,51,52.7,0,0,3.1,3.6 -2021-07-24T23:00,68.6,57,52.9,0,0,3.8,4.9 -2021-07-25T00:00,66.7,61,52.7,0,0,3.4,5.6 -2021-07-25T01:00,65.4,64,53.1,0,0,4.9,8.1 -2021-07-25T02:00,65.1,64,52.8,0,0,4.4,8.5 -2021-07-25T03:00,63.4,69,53,0,0,3.1,7.4 -2021-07-25T04:00,63.1,71,53.4,0,0,2.7,4.7 -2021-07-25T05:00,61.9,73,53.2,0,0,2.9,4.5 -2021-07-25T06:00,65.4,63,52.4,0,0,3.3,6.9 -2021-07-25T07:00,70.1,54,52.4,0,0,2.7,7.4 -2021-07-25T08:00,75.4,43,51.4,0,0,1.5,8.9 -2021-07-25T09:00,79.5,35,49.8,0,0,2.3,9.6 -2021-07-25T10:00,83.7,30,49,0,0,3.2,12.1 -2021-07-25T11:00,86.6,27,48.3,0,0,2.4,14.3 -2021-07-25T12:00,89,24,47.2,0,0,2.7,13 -2021-07-25T13:00,90.3,23,47.3,0,0,4.3,13.9 -2021-07-25T14:00,84.8,38,56.6,0.02,0,14.1,23 -2021-07-25T15:00,85.3,30,50.5,0,0,3.6,31.8 -2021-07-25T16:00,84.2,31,50.2,0,0,3.5,14.8 -2021-07-25T17:00,84.5,33,52.1,0,0,15.7,12.5 -2021-07-25T18:00,81.7,40,54.8,0,0,13.7,26.6 -2021-07-25T19:00,78.5,45,55.6,0,0,8.6,23.7 -2021-07-25T20:00,75.6,52,56.8,0,0,7.9,14.3 -2021-07-25T21:00,73,58,57.5,0,0,5.2,12.8 -2021-07-25T22:00,70.9,63,57.7,0,0,3.5,8.3 -2021-07-25T23:00,70,62,56.5,0,0,2.6,6.3 -2021-07-26T00:00,66.5,69,55.9,0,0,3,4.3 -2021-07-26T01:00,65.5,65,53.6,0,0,3.4,4.5 -2021-07-26T02:00,64.1,65,52.2,0,0,4.2,5.1 -2021-07-26T03:00,64.6,60,50.5,0,0,2.9,5.4 -2021-07-26T04:00,63,62,49.6,0,0,3.9,4.5 -2021-07-26T05:00,61.8,62,48.7,0,0,2.5,4.7 -2021-07-26T06:00,63.7,57,48,0,0,1,3.6 -2021-07-26T07:00,67.9,52,49.6,0,0,1.1,6 -2021-07-26T08:00,72.7,46,50.6,0,0,1.6,8.3 -2021-07-26T09:00,78.5,37,50.1,0,0,1.7,9.6 -2021-07-26T10:00,84.1,30,49.4,0,0,0.7,9.6 -2021-07-26T11:00,87.7,26,48.1,0,0,1.9,10.5 -2021-07-26T12:00,90,20,44,0,0,3.5,12.1 -2021-07-26T13:00,91.5,18,42.4,0,0,5,14.1 -2021-07-26T14:00,91.9,17,40.4,0,0,5.6,15 -2021-07-26T15:00,93,15,39.4,0,0,5.4,15 -2021-07-26T16:00,92.6,15,38.3,0,0,6.1,14.5 -2021-07-26T17:00,92.1,12,32.6,0,0,7.8,14.5 -2021-07-26T18:00,90.3,13,33.4,0,0,7.4,14.8 -2021-07-26T19:00,84.8,18,37,0,0,6.1,12.5 -2021-07-26T20:00,80.8,24,40.9,0,0,6.5,10.1 -2021-07-26T21:00,78.7,30,44.9,0,0,7.6,13 -2021-07-26T22:00,75.9,34,45.6,0,0,7.4,12.5 -2021-07-26T23:00,73.2,40,47.7,0,0,5.7,12.5 -2021-07-27T00:00,68,49,48.1,0,0,3.7,9.4 -2021-07-27T01:00,66.1,54,48.8,0,0,3.8,5.8 -2021-07-27T02:00,64.2,56,48.3,0,0,3.7,6.5 -2021-07-27T03:00,61.2,59,46.7,0,0,4.3,6.3 -2021-07-27T04:00,60.3,59,46,0,0,3,5.1 -2021-07-27T05:00,59.9,61,46.5,0,0,4.1,4.3 -2021-07-27T06:00,63.8,50,44.9,0,0,2.6,5.6 -2021-07-27T07:00,70,40,44.9,0,0,1.9,7.2 -2021-07-27T08:00,75.3,34,45.3,0,0,2.7,9.6 -2021-07-27T09:00,80.2,30,46.3,0,0,2.8,10.5 -2021-07-27T10:00,84.3,27,47,0,0,2.2,11 -2021-07-27T11:00,87.4,25,47.3,0,0,1.6,10.7 -2021-07-27T12:00,90,21,44.9,0,0,1.6,10.5 -2021-07-27T13:00,91.6,19,43.4,0,0,2.5,11.2 -2021-07-27T14:00,93,17,41.8,0,0,3.6,11.9 -2021-07-27T15:00,94,16,40.5,0,0,6.9,15.2 -2021-07-27T16:00,93.5,18,43.3,0,0,9.2,18.1 -2021-07-27T17:00,91.3,23,48.6,0,0,11.1,18.8 -2021-07-27T18:00,88.8,26,49.5,0,0,9.1,20.1 -2021-07-27T19:00,84.3,34,53.1,0,0,4,15.4 -2021-07-27T20:00,79.7,39,52.5,0,0,4.7,6.5 -2021-07-27T21:00,77.7,37,49.1,0,0,4.9,7.8 -2021-07-27T22:00,75.4,38,47.9,0,0,6.9,11.2 -2021-07-27T23:00,73.2,41,48.3,0,0,6.3,11.2 -2021-07-28T00:00,71.3,44,48.6,0,0,6.2,10.7 -2021-07-28T01:00,69.3,48,48.7,0,0,6,10.3 -2021-07-28T02:00,67.5,51,48.8,0,0,6.4,10.7 -2021-07-28T03:00,65.9,53,48.6,0,0,5.4,10.5 -2021-07-28T04:00,64.8,55,48.3,0,0,3.5,8.7 -2021-07-28T05:00,65.3,54,48.4,0,0,4.3,6 -2021-07-28T06:00,70,47,49.1,0,0,2.6,6.7 -2021-07-28T07:00,75,40,49.4,0,0,2.7,6.9 -2021-07-28T08:00,79.1,36,50,0,0,5,12.1 -2021-07-28T09:00,83.6,31,49.6,0,0,5,13.2 -2021-07-28T10:00,88.3,26,49,0,0,6.7,15.9 -2021-07-28T11:00,92.1,22,47.5,0,0,6.9,16.8 -2021-07-28T12:00,94.6,18,45.1,0,0,7,17 -2021-07-28T13:00,96.1,16,42.9,0,0,6.9,17.9 -2021-07-28T14:00,96.2,16,42.1,0,0,5.8,17.7 -2021-07-28T15:00,96.4,15,41.6,0,0,5.3,15.2 -2021-07-28T16:00,96.4,14,38.9,0,0,6.3,14.3 -2021-07-28T17:00,96.4,13,36.6,0,0,8.7,15 -2021-07-28T18:00,94.4,14,37.1,0,0,7.9,16.3 -2021-07-28T19:00,86.8,21,41.8,0,0,5.8,13 -2021-07-28T20:00,84.9,20,39.4,0,0,5.9,9.6 -2021-07-28T21:00,84.4,22,40.9,0,0,3.4,9.6 -2021-07-28T22:00,80.5,27,43.2,0,0,3.4,4.3 -2021-07-28T23:00,79,28,43,0,0,1.1,4 -2021-07-29T00:00,73.5,36,45,0,0,3.2,3.4 -2021-07-29T01:00,70.3,40,44.7,0,0,4.8,6 -2021-07-29T02:00,69.9,38,43.3,0,0,4.3,6.3 -2021-07-29T03:00,68.8,41,44.2,0,0,6.1,7.6 -2021-07-29T04:00,68,43,44.4,0,0,6.1,7.6 -2021-07-29T05:00,69.4,50,49.8,0,0,6.5,7.8 -2021-07-29T06:00,71.5,48,50.6,0,0,7.2,11.9 -2021-07-29T07:00,73.8,44,50.5,0,0,10.4,17.4 -2021-07-29T08:00,76.2,45,53.3,0,0,12.6,23.5 -2021-07-29T09:00,79.1,44,55.3,0,0,11.9,23.7 -2021-07-29T10:00,82,41,55.9,0,0,9.3,23 -2021-07-29T11:00,84.8,37,55.4,0,0,7.2,19.9 -2021-07-29T12:00,87.2,33,55,0,0,5,17.7 -2021-07-29T13:00,88.6,31,53.9,0,0,2.6,14.8 -2021-07-29T14:00,88.9,29,52.6,0,0,2.5,11.9 -2021-07-29T15:00,90,27,52,0,0,4.3,12.3 -2021-07-29T16:00,90.8,26,51,0,0,4.1,12.5 -2021-07-29T17:00,91,24,49.4,0,0,6,13.6 -2021-07-29T18:00,88.7,26,49,0,0,5.2,12.5 -2021-07-29T19:00,85,35,54.1,0,0,1.6,9.2 -2021-07-29T20:00,81.2,39,54.1,0,0,2.3,3.8 -2021-07-29T21:00,76.3,47,54.5,0,0,2.7,4.5 -2021-07-29T22:00,74.7,49,54.5,0,0,6.3,10.1 -2021-07-29T23:00,73.3,46,51.1,0,0,6.7,11.2 -2021-07-30T00:00,71.3,48,50.4,0,0,5.5,11.2 -2021-07-30T01:00,69.7,50,50.5,0,0,5.2,9.2 -2021-07-30T02:00,68.5,52,50.4,0,0,4.7,8.5 -2021-07-30T03:00,66.1,56,50.1,0,0,5,8.3 -2021-07-30T04:00,64.7,58,49.6,0,0,5.1,8.7 -2021-07-30T05:00,64,59,49.6,0,0,5.2,8.5 -2021-07-30T06:00,68.6,59,53.5,0,0,8.5,14.1 -2021-07-30T07:00,72.3,49,52.3,0,0,7.6,14.5 -2021-07-30T08:00,75.7,45,52.5,0,0,9.9,19.2 -2021-07-30T09:00,78.3,42,53,0,0,7.4,19.7 -2021-07-30T10:00,81.3,38,53.2,0,0,4.1,16.6 -2021-07-30T11:00,84.6,34,53.2,0,0,3.3,13.2 -2021-07-30T12:00,87.8,31,53.1,0,0,4.3,15.4 -2021-07-30T13:00,90.3,28,52.9,0,0,5.2,15.7 -2021-07-30T14:00,90.4,28,52.5,0,0,4.9,15.9 -2021-07-30T15:00,91,27,52.9,0,0,6.6,15.2 -2021-07-30T16:00,90.2,27,51.8,0,0,6.9,15.2 -2021-07-30T17:00,82,49,60.8,0.004,0,18.6,24.4 -2021-07-30T18:00,78.4,52,59.2,0,0,15,33.3 -2021-07-30T19:00,78.1,50,57.9,0,0,10.4,25.9 -2021-07-30T20:00,73.5,62,59.7,0.008,0,11.2,17.9 -2021-07-30T21:00,71.3,69,60.6,0.004,0,9.6,19.7 -2021-07-30T22:00,70.1,75,61.8,0.016,0,7,16.1 -2021-07-30T23:00,69.4,79,62.5,0.008,0,3.8,13 -2021-07-31T00:00,68.7,84,63.6,0,0,1.4,6.3 -2021-07-31T01:00,68.1,81,62.1,0,0,2.3,7.8 -2021-07-31T02:00,66.7,89,63.3,0,0,2.1,4 -2021-07-31T03:00,66.3,91,63.7,0,0,3.2,5.8 -2021-07-31T04:00,66.5,90,63.5,0,0,1.6,6 -2021-07-31T05:00,63.8,86,59.5,0.004,0,2.6,5.1 -2021-07-31T06:00,64.7,93,62.5,0.098,0,4.7,7.4 -2021-07-31T07:00,64.5,91,61.7,0.063,0,7.1,15.9 -2021-07-31T08:00,66.5,81,60.4,0.008,0,5.8,14.1 -2021-07-31T09:00,67.9,79,61.2,0.008,0,2.8,14.1 -2021-07-31T10:00,71.3,71,61.3,0.004,0,4.1,14.8 -2021-07-31T11:00,74.8,62,60.9,0.004,0,7.5,18.6 -2021-07-31T12:00,75.7,56,58.9,0.004,0,9.4,20.1 -2021-07-31T13:00,76.5,52,57.7,0,0,9.9,20.4 -2021-07-31T14:00,75.9,53,57.7,0,0,7.5,20.6 -2021-07-31T15:00,75.7,53,57.2,0.02,0,9.1,17.4 -2021-07-31T16:00,73.8,52,54.9,0.035,0,6.3,17.2 -2021-07-31T17:00,65.6,84,60.6,0,0,6.4,13.9 -2021-07-31T18:00,65.8,89,62.5,0.016,0,4.9,12.1 -2021-07-31T19:00,64.1,90,61.2,0.024,0,6.9,11.6 -2021-07-31T20:00,63.7,89,60.3,0.02,0,5.5,11.2 -2021-07-31T21:00,63.5,89,60.1,0.047,0,5.1,10.3 -2021-07-31T22:00,63.2,90,60.2,0.142,0,4.9,9.6 -2021-07-31T23:00,62.9,93,60.9,0.028,0,4.5,9.4 -2021-08-01T00:00,62.9,95,61.4,0.004,0,2.3,7.4 -2021-08-01T01:00,60.7,95,59.3,0,0,3.4,4.9 -2021-08-01T02:00,62.3,88,58.8,0,0,2.5,5.6 -2021-08-01T03:00,61.8,91,59.3,0,0,3,3.6 -2021-08-01T04:00,61.6,97,60.9,0.004,0,2.2,3.8 -2021-08-01T05:00,60.5,99,60.4,0,0,0.5,4 -2021-08-01T06:00,61.2,96,59.9,0,0,3.4,5.6 -2021-08-01T07:00,63.1,84,58.4,0,0,2.6,6.5 -2021-08-01T08:00,64.2,79,57.7,0,0,0.2,5.1 -2021-08-01T09:00,66.5,73,57.7,0,0,1.7,6.7 -2021-08-01T10:00,68.8,65,56.6,0.004,0,3.3,10.1 -2021-08-01T11:00,71.6,53,53.6,0,0,4.1,12.1 -2021-08-01T12:00,73.7,47,52.1,0,0,4.3,12.5 -2021-08-01T13:00,74.4,45,51.5,0,0,4.2,12.8 -2021-08-01T14:00,76.4,40,50.5,0,0,2.6,12.5 -2021-08-01T15:00,77.5,36,48.7,0,0,2.1,10.5 -2021-08-01T16:00,78.2,33,47.1,0,0,1.8,9.2 -2021-08-01T17:00,76.5,32,44.2,0,0,6.9,8.1 -2021-08-01T18:00,74.5,37,46.4,0,0,5.6,13.2 -2021-08-01T19:00,71.2,50,51.8,0,0,2.6,9.2 -2021-08-01T20:00,67.2,63,54.2,0,0,3.4,5.1 -2021-08-01T21:00,67.1,61,53.4,0,0,3.1,5.6 -2021-08-01T22:00,65.3,69,54.9,0,0,3.1,5.6 -2021-08-01T23:00,63.6,73,54.9,0,0,3.8,3.8 -2021-08-02T00:00,62.2,77,54.7,0,0,4.1,6.5 -2021-08-02T01:00,59.1,86,54.8,0,0,3.3,6.5 -2021-08-02T02:00,58.4,88,54.8,0,0,3.2,5.1 -2021-08-02T03:00,57.4,91,54.7,0,0,2.2,5.1 -2021-08-02T04:00,56.8,92,54.5,0,0,2.2,3.8 -2021-08-02T05:00,56.8,82,51.3,0,0,3.5,3.8 -2021-08-02T06:00,58.5,78,51.7,0,0,4.2,7.8 -2021-08-02T07:00,63.6,70,53.7,0,0,3.6,8.9 -2021-08-02T08:00,69.6,56,53.2,0,0,2.7,9.4 -2021-08-02T09:00,73.9,48,52.9,0,0,2.4,8.9 -2021-08-02T10:00,76.8,45,54.1,0,0,3.5,11.4 -2021-08-02T11:00,79.5,41,54,0,0,3,11.4 -2021-08-02T12:00,81.8,37,53.3,0,0,3.4,11.6 -2021-08-02T13:00,83.2,34,51.6,0,0,3.2,11.9 -2021-08-02T14:00,83.7,32,50.7,0,0,2.7,11.2 -2021-08-02T15:00,83.8,31,50.4,0,0,3.4,10.5 -2021-08-02T16:00,83.3,32,50.5,0,0,8.1,15 -2021-08-02T17:00,81.6,37,52.7,0,0,12.3,22.1 -2021-08-02T18:00,78.7,44,54.9,0,0,8.9,21 -2021-08-02T19:00,76.1,47,54.6,0,0,6.4,14.5 -2021-08-02T20:00,74.8,46,52.9,0,0,6.7,11.4 -2021-08-02T21:00,73.1,47,51.7,0,0,5.1,11.2 -2021-08-02T22:00,69.8,60,55.4,0,0,4.3,8.1 -2021-08-02T23:00,68.1,68,57.1,0,0,3.2,4.9 -2021-08-03T00:00,67.3,69,56.7,0,0,1.8,3.8 -2021-08-03T01:00,66.2,69,55.8,0,0,3.1,4.9 -2021-08-03T02:00,65.9,65,53.9,0,0,5.2,8.1 -2021-08-03T03:00,66,59,51.1,0,0,6.5,10.7 -2021-08-03T04:00,67.6,52,49.6,0,0,7.8,13.2 -2021-08-03T05:00,67.8,54,50.4,0.012,0,1.9,12.8 -2021-08-03T06:00,66.9,60,52.6,0,0,1.1,4 -2021-08-03T07:00,70.6,55,53.9,0,0,6.4,11.4 -2021-08-03T08:00,72.7,49,52.3,0,0,9.6,16.6 -2021-08-03T09:00,75.2,46,53,0,0,11.4,21.7 -2021-08-03T10:00,77.6,44,53.7,0,0,11.5,22.6 -2021-08-03T11:00,79,41,53.3,0,0,10.3,22.6 -2021-08-03T12:00,80.2,38,52,0,0,9.4,21.3 -2021-08-03T13:00,81.6,34,50.9,0,0,8.1,20.1 -2021-08-03T14:00,81.3,34,50.6,0,0,9.4,19 -2021-08-03T15:00,78.4,38,51,0,0,6.8,19.5 -2021-08-03T16:00,78.5,38,50.8,0,0,5.6,14.3 -2021-08-03T17:00,77.7,44,53.8,0,0,7,15 -2021-08-03T18:00,70.2,68,59,0.024,0,11.1,19.2 -2021-08-03T19:00,68.5,73,59.6,0,0,3.7,18.1 -2021-08-03T20:00,66.8,82,61.2,0,0,1.9,6.5 -2021-08-03T21:00,66.1,84,61.1,0.004,0,6.6,10.3 -2021-08-03T22:00,64.9,83,59.6,0.012,0,6.3,11.2 -2021-08-03T23:00,64,84,59.3,0.008,0,4.8,10.5 -2021-08-04T00:00,63.3,87,59.3,0.004,0,2.7,9.6 -2021-08-04T01:00,63.1,84,58.3,0.004,0,1.4,4.9 -2021-08-04T02:00,62.3,86,58.2,0,0,1.7,3.1 -2021-08-04T03:00,61.3,94,59.6,0,0,3.1,5.6 -2021-08-04T04:00,60.6,95,59.1,0,0,2.8,5.6 -2021-08-04T05:00,62.4,85,57.7,0,0,2.6,5.1 -2021-08-04T06:00,62.4,91,59.7,0.028,0,1.4,5.6 -2021-08-04T07:00,63,82,57.3,0.008,0,2.2,8.7 -2021-08-04T08:00,64.2,82,58.6,0,0,1.3,6.9 -2021-08-04T09:00,67.7,71,58.1,0,0,3.1,18.6 -2021-08-04T10:00,71.2,61,56.9,0,0,2.7,24.4 -2021-08-04T11:00,74.1,49,53.8,0.004,0,7.3,15.9 -2021-08-04T12:00,75,47,53.2,0,0,9.6,19.9 -2021-08-04T13:00,76.3,43,52.3,0,0,8.8,19.9 -2021-08-04T14:00,78,39,51.2,0,0,5.8,18.6 -2021-08-04T15:00,78.8,38,51,0,0,4,14.5 -2021-08-04T16:00,78.9,37,50.5,0,0,2.9,11.9 -2021-08-04T17:00,80.2,36,51,0,0,6.5,9.8 -2021-08-04T18:00,78.9,35,48.6,0,0,5.9,14.1 -2021-08-04T19:00,74.2,45,51.4,0,0,4.7,10.1 -2021-08-04T20:00,69.2,55,52.5,0,0,4.3,7.8 -2021-08-04T21:00,66.1,62,52.8,0,0,5,6.7 -2021-08-04T22:00,64.8,66,53.1,0,0,4.1,6.5 -2021-08-04T23:00,62.2,71,52.8,0,0,3.8,4.7 -2021-08-05T00:00,61.3,69,51.1,0,0,3.7,5.8 -2021-08-05T01:00,60.1,67,48.9,0,0,4,6.3 -2021-08-05T02:00,59.4,64,47.2,0,0,4.3,6.9 -2021-08-05T03:00,58.3,65,46.4,0,0,4.4,7.4 -2021-08-05T04:00,57.3,65,45.6,0,0,4.4,7.4 -2021-08-05T05:00,55.9,64,44.1,0,0,4,7.4 -2021-08-05T06:00,59.2,58,44.5,0,0,4.4,6.7 -2021-08-05T07:00,64.2,55,47.6,0,0,2.8,8.1 -2021-08-05T08:00,71.1,45,48.8,0,0,2,8.1 -2021-08-05T09:00,77.3,33,45.8,0,0,2.6,9.6 -2021-08-05T10:00,81.9,26,44,0,0,1.3,9.6 -2021-08-05T11:00,84.7,22,41.8,0,0,1.6,9.2 -2021-08-05T12:00,86.5,20,40.6,0,0,2.3,10.1 -2021-08-05T13:00,87.7,18,38.5,0,0,4,12.3 -2021-08-05T14:00,87.5,17,37.9,0,0,2.4,12.3 -2021-08-05T15:00,87.7,18,38.3,0,0,2.7,9.8 -2021-08-05T16:00,87.9,18,39.1,0,0,5.1,11.6 -2021-08-05T17:00,88.3,17,38,0,0,11,13.4 -2021-08-05T18:00,83.6,28,47.3,0,0,7,19.5 -2021-08-05T19:00,76.4,43,52.3,0,0,4.7,11.4 -2021-08-05T20:00,70.3,56,53.6,0,0,5.1,6.9 -2021-08-05T21:00,68,56,51.5,0,0,4.8,6.7 -2021-08-05T22:00,66.7,51,48.1,0,0,7.7,12.8 -2021-08-05T23:00,65.6,48,45.6,0,0,6.7,12.8 -2021-08-06T00:00,65.3,44,42.9,0,0,5.7,11.2 -2021-08-06T01:00,63.7,44,41.5,0,0,5,9.2 -2021-08-06T02:00,60.8,49,41.7,0,0,6.5,8.1 -2021-08-06T03:00,60.1,49,40.6,0,0,5.5,8.1 -2021-08-06T04:00,59.6,48,39.9,0,0,5.2,7.4 -2021-08-06T05:00,57.6,57,42.3,0,0,5.9,7.4 -2021-08-06T06:00,62.1,47,41.4,0,0,3.7,7.8 -2021-08-06T07:00,67.9,41,43.2,0,0,3.5,8.5 -2021-08-06T08:00,75.8,36,47.1,0,0,4,10.1 -2021-08-06T09:00,83.9,25,44.7,0,0,4.1,11.2 -2021-08-06T10:00,88.6,22,44.9,0,0,6.7,13.9 -2021-08-06T11:00,90.7,17,39.3,0,0,4.5,16.1 -2021-08-06T12:00,91.9,15,37.5,0,0,8.5,19.5 -2021-08-06T13:00,90.6,17,39.3,0,0,6.1,18.6 -2021-08-06T14:00,89.9,17,39.1,0,0,9.5,15.9 -2021-08-06T15:00,85.8,27,47.6,0,0,12.3,28.6 -2021-08-06T16:00,87.1,22,43.5,0,0,3.4,21.9 -2021-08-06T17:00,87.6,21,42.4,0,0,6.9,17.4 -2021-08-06T18:00,84.5,29,48.4,0,0,3.7,11.6 -2021-08-06T19:00,76.7,37,48.2,0,0,5.1,6.9 -2021-08-06T20:00,74.2,45,51.3,0,0,10.3,16.6 -2021-08-06T21:00,72.1,48,51.1,0,0,3.9,17.2 -2021-08-06T22:00,68,55,51.4,0,0,4,7.4 -2021-08-06T23:00,65.1,67,53.9,0,0,4.2,6.5 -2021-08-07T00:00,65.8,58,50.4,0,0,4.5,8.5 -2021-08-07T01:00,64,61,50.3,0,0,4.6,7.4 -2021-08-07T02:00,62.9,61,49.4,0,0,3.8,5.6 -2021-08-07T03:00,61,64,48.6,0,0,5.2,6.5 -2021-08-07T04:00,60.4,62,47.3,0,0,4.3,6 -2021-08-07T05:00,59.8,64,47.6,0,0,4.8,5.6 -2021-08-07T06:00,62.4,60,48.6,0,0,4.2,7.6 -2021-08-07T07:00,65.5,56,49.3,0,0,11.5,18.3 -2021-08-07T08:00,70.1,44,47.3,0,0,7.3,21.7 -2021-08-07T09:00,75.4,36,46.5,0,0,9.2,18.3 -2021-08-07T10:00,77.7,28,42.4,0,0,5.1,18.8 -2021-08-07T11:00,78.9,28,42.9,0,0,2.2,13.4 -2021-08-07T12:00,79.8,28,43.7,0,0,5.9,17.4 -2021-08-07T13:00,81.3,26,42.9,0,0,2.7,17.9 -2021-08-07T14:00,83.8,16,32.8,0,0,2.2,13.4 -2021-08-07T15:00,85.6,15,32.5,0,0,12,21.5 -2021-08-07T16:00,82.5,17,33.1,0,0,15.8,28 -2021-08-07T17:00,80.2,21,36.6,0,0,10.7,28 -2021-08-07T18:00,78,23,37.6,0,0,8.6,18.8 -2021-08-07T19:00,72.1,30,38.7,0,0,4.8,14.1 -2021-08-07T20:00,69,37,41.4,0,0,5.1,7.4 -2021-08-07T21:00,67.4,40,42.4,0,0,4.5,6.9 -2021-08-07T22:00,64.5,43,41.7,0,0,5.8,10.7 -2021-08-07T23:00,60.8,53,43.8,0,0,4.8,9.6 -2021-08-08T00:00,59.7,58,45.1,0,0,5.6,6.5 -2021-08-08T01:00,59.5,56,43.5,0,0,4.1,6.7 -2021-08-08T02:00,57.6,56,42.1,0,0,3.8,6.3 -2021-08-08T03:00,56.9,57,41.7,0,0,4.3,6.9 -2021-08-08T04:00,56.3,57,41.4,0,0,4.4,7.4 -2021-08-08T05:00,57.1,51,39.2,0,0,5,7.2 -2021-08-08T06:00,60.8,45,39.5,0,0,5.9,9.2 -2021-08-08T07:00,68.1,38,41.3,0,0,5,10.5 -2021-08-08T08:00,75.7,32,43.4,0,0,3.1,9.8 -2021-08-08T09:00,81,26,43.3,0,0,1.1,9.2 -2021-08-08T10:00,83.9,21,40.1,0,0,1.8,9.6 -2021-08-08T11:00,85.6,20,39.9,0,0,2.6,10.7 -2021-08-08T12:00,87,19,40.4,0,0,4.9,13.6 -2021-08-08T13:00,88.1,19,40.2,0,0,5.4,15.2 -2021-08-08T14:00,89.8,17,39.7,0,0,3.4,14.5 -2021-08-08T15:00,90.4,17,39.7,0,0,3.6,11.6 -2021-08-08T16:00,89.5,18,39.7,0,0,2.2,11 -2021-08-08T17:00,89.2,17,38.4,0,0,1.6,8.3 -2021-08-08T18:00,88.1,20,42.2,0,0,1.3,4.5 -2021-08-08T19:00,84.3,24,43.3,0,0,1.7,2.9 -2021-08-08T20:00,77.3,33,46.1,0,0,3.4,3.4 -2021-08-08T21:00,71.7,45,49,0,0,4.1,7.2 -2021-08-08T22:00,67.5,54,50.3,0,0,3.8,6.3 -2021-08-08T23:00,64.9,58,49.8,0,0,3.5,5.8 -2021-08-09T00:00,63.4,59,49,0,0,3.7,5.6 -2021-08-09T01:00,62.6,58,47.8,0,0,4,6.5 -2021-08-09T02:00,62.2,53,45.1,0,0,4.7,7.8 -2021-08-09T03:00,60.8,50,42.1,0,0,5.2,8.5 -2021-08-09T04:00,60.1,46,39.3,0,0,5.3,8.9 -2021-08-09T05:00,59.7,43,37.4,0,0,5.3,8.7 -2021-08-09T06:00,63,42,39.7,0,0,3.4,8.3 -2021-08-09T07:00,69.6,37,42.5,0,0,5,10.1 -2021-08-09T08:00,76.8,32,44.8,0,0,4.7,11.2 -2021-08-09T09:00,84,23,42.4,0,0,3,11.2 -2021-08-09T10:00,88.6,17,37.5,0,0,0.6,9.8 -2021-08-09T11:00,89.7,15,35.1,0,0,0.7,9.4 -2021-08-09T12:00,90.8,14,35.4,0,0,3.1,11.2 -2021-08-09T13:00,91.8,13,34.8,0,0,3.2,11.9 -2021-08-09T14:00,91.9,13,34.5,0,0,0.8,11.6 -2021-08-09T15:00,91.2,14,35.6,0,0,6.9,13.2 -2021-08-09T16:00,88.8,15,35.7,0,0,11.4,22.8 -2021-08-09T17:00,90.6,12,30.7,0,0,7.6,20.8 -2021-08-09T18:00,86.9,15,32.9,0,0,9.3,18.1 -2021-08-09T19:00,78.9,21,36.1,0,0,5.4,15.2 -2021-08-09T20:00,75.7,28,40.6,0,0,6.3,11.6 -2021-08-09T21:00,69.9,38,43.2,0,0,6.5,10.3 -2021-08-09T22:00,69.4,41,45,0,0,4.8,8.1 -2021-08-09T23:00,67.2,43,44,0,0,5.3,8.3 -2021-08-10T00:00,67.5,36,39.6,0,0,6.2,11.4 -2021-08-10T01:00,64.9,36,37.6,0,0,5.6,10.1 -2021-08-10T02:00,63.8,34,35.2,0,0,4.6,7.8 -2021-08-10T03:00,60.8,39,35.6,0,0,4.2,7.6 -2021-08-10T04:00,58,47,37.8,0,0,5.6,6.9 -2021-08-10T05:00,58.9,46,38.2,0,0,4.3,6.5 -2021-08-10T06:00,61.3,44,39.3,0,0,3.7,7.2 -2021-08-10T07:00,66.3,40,41,0,0,0.9,7.6 -2021-08-10T08:00,73,33,42.2,0,0,1.2,7.2 -2021-08-10T09:00,80.5,24,40.9,0,0,0.7,7.8 -2021-08-10T10:00,86.2,21,41.5,0,0,3.5,11 -2021-08-10T11:00,89.8,15,35.6,0,0,5.4,19.5 -2021-08-10T12:00,91.5,11,30.6,0,0,3.9,16.6 -2021-08-10T13:00,91,12,32,0,0,6.1,15.7 -2021-08-10T14:00,91.3,12,31.1,0,0,5.1,15.2 -2021-08-10T15:00,91.3,11,29.5,0,0,2.6,14.8 -2021-08-10T16:00,91.2,11,29.4,0,0,4,10.5 -2021-08-10T17:00,90.6,11,28.1,0,0,7.4,10.5 -2021-08-10T18:00,87.1,16,35.8,0,0,4.5,13.4 -2021-08-10T19:00,80.7,19,35.1,0,0,5.3,8.1 -2021-08-10T20:00,76,25,37.9,0,0,4.6,8.5 -2021-08-10T21:00,70.7,34,41.2,0,0,6,9.2 -2021-08-10T22:00,68.8,33,38.5,0,0,7.7,13 -2021-08-10T23:00,68.2,31,36.7,0,0,6.9,12.8 -2021-08-11T00:00,67.1,32,36.3,0,0,6.7,11.6 -2021-08-11T01:00,64.9,35,36.5,0,0,6.3,11.2 -2021-08-11T02:00,62.5,38,36.8,0,0,5,10.7 -2021-08-11T03:00,60,43,37.2,0,0,4.1,8.3 -2021-08-11T04:00,60.4,43,37.8,0,0,4,6.5 -2021-08-11T05:00,63.7,33,34.3,0,0,3,4.7 -2021-08-11T06:00,61.6,44,39.2,0,0,2.9,4.3 -2021-08-11T07:00,66.7,37,39.4,0,0,4.2,9.4 -2021-08-11T08:00,73,29,38.8,0,0,3.5,10.3 -2021-08-11T09:00,79.3,23,37.8,0,0,3,10.1 -2021-08-11T10:00,83.6,20,37.8,0,0,3.4,11.2 -2021-08-11T11:00,87.4,17,36.6,0,0,4.9,13.4 -2021-08-11T12:00,90.1,15,35.4,0,0,5.8,15 -2021-08-11T13:00,92.2,13,35,0,0,5.5,15 -2021-08-11T14:00,93.7,12,34.1,0,0,6.2,15 -2021-08-11T15:00,93.8,12,32.6,0,0,8.4,17 -2021-08-11T16:00,92.9,12,32.3,0,0,10.8,19.9 -2021-08-11T17:00,92.9,12,32.1,0,0,6.8,20.1 -2021-08-11T18:00,89.4,15,35.5,0,0,5.4,12.8 -2021-08-11T19:00,81.5,26,43.4,0,0,6.9,10.5 -2021-08-11T20:00,78.1,31,44.7,0,0,6.6,12.8 -2021-08-11T21:00,76.1,30,42.5,0,0,5,11 -2021-08-11T22:00,72.9,34,42.7,0,0,5.6,7.8 -2021-08-11T23:00,70.6,36,42.2,0,0,5.9,7.4 -2021-08-12T00:00,66.4,44,44,0,0,3.9,7.8 -2021-08-12T01:00,64.5,45,42.6,0,0,4.2,7.2 -2021-08-12T02:00,62.7,45,41.3,0,0,5.3,6.9 -2021-08-12T03:00,61,48,40.9,0,0,4.6,6.9 -2021-08-12T04:00,59.2,53,42.2,0,0,5.1,6.3 -2021-08-12T05:00,59.9,47,39.6,0,0,6.2,6.3 -2021-08-12T06:00,63.3,42,39.7,0,0,2.7,8.1 -2021-08-12T07:00,69.6,34,40.3,0,0,3,7.8 -2021-08-12T08:00,75.1,26,37.4,0,0,2.1,7.4 -2021-08-12T09:00,78.3,25,39.8,0,0,12.4,23.3 -2021-08-12T10:00,80.7,26,42.7,0,0,13.5,25.9 -2021-08-12T11:00,82.9,26,44,0,0,13.4,26.2 -2021-08-12T12:00,84.4,25,44.7,0,0,12.4,26.2 -2021-08-12T13:00,85.7,24,45.3,0,0,10.7,24.8 -2021-08-12T14:00,86.7,24,45.7,0,0,9.6,22.4 -2021-08-12T15:00,86.5,24,45.5,0,0,8.5,20.6 -2021-08-12T16:00,86,24,45.4,0,0,8.1,18.6 -2021-08-12T17:00,83.9,32,50.6,0,0,5.2,17.7 -2021-08-12T18:00,82.7,33,51,0,0,4.3,10.5 -2021-08-12T19:00,76.7,46,54.2,0,0,11,18.1 -2021-08-12T20:00,74.6,52,55.9,0,0,3.4,17.9 -2021-08-12T21:00,71.2,60,56.5,0,0,5.6,9.2 -2021-08-12T22:00,69.2,64,56.7,0,0,8,13 -2021-08-12T23:00,69.1,64,56.2,0,0,3.4,14.1 -2021-08-13T00:00,68.9,63,55.9,0,0,3.1,5.6 -2021-08-13T01:00,67.5,62,54.1,0,0,4.8,7.2 -2021-08-13T02:00,65.6,53,47.9,0,0,3.8,7.8 -2021-08-13T03:00,64.4,54,47.4,0,0,4.4,7.6 -2021-08-13T04:00,61.7,64,49.5,0,0,5,7.2 -2021-08-13T05:00,61.3,90,58.4,0,0,1.8,6.5 -2021-08-13T06:00,61.6,90,58.6,0,0,4.8,8.1 -2021-08-13T07:00,66.7,69,56.4,0,0,4.9,10.7 -2021-08-13T08:00,70.5,58,55,0,0,2.5,11.2 -2021-08-13T09:00,73.7,53,55.3,0,0,4.4,12.3 -2021-08-13T10:00,75.9,49,55.4,0,0,4.6,13.9 -2021-08-13T11:00,78,44,54.6,0,0,3.4,13.6 -2021-08-13T12:00,80.1,41,54.3,0,0,2.9,13 -2021-08-13T13:00,81.5,38,53.7,0,0,1.1,13.2 -2021-08-13T14:00,81.2,39,54.1,0,0,2.7,11 -2021-08-13T15:00,77.2,49,56.3,0.012,0,5.7,18.8 -2021-08-13T16:00,79.7,42,54.7,0,0,4.2,13.9 -2021-08-13T17:00,76.1,50,56.1,0,0,9.6,11.2 -2021-08-13T18:00,77.3,47,55.5,0,0,6.3,16.3 -2021-08-13T19:00,73.7,55,56.8,0,0,3,13.9 -2021-08-13T20:00,70.7,63,57.5,0,0,3.4,4.5 -2021-08-13T21:00,70.1,65,57.7,0,0,4.2,6.5 -2021-08-13T22:00,68.4,73,59.5,0,0,4.6,8.5 -2021-08-13T23:00,67.8,76,60,0,0,2.1,7.4 -2021-08-14T00:00,63.6,86,59.3,0,0,1.9,3.1 -2021-08-14T01:00,61.3,87,57.5,0,0,2.3,4.5 -2021-08-14T02:00,59.3,92,56.9,0,0,2.3,4.3 -2021-08-14T03:00,58.5,93,56.4,0,0,2.8,5.4 -2021-08-14T04:00,57.3,91,54.7,0,0,2.7,4.7 -2021-08-14T05:00,57.5,80,51.4,0,0,2.2,4.3 -2021-08-14T06:00,59.4,72,50.5,0,0,2.3,4.9 -2021-08-14T07:00,64.9,60,50.5,0,0,1.9,6.7 -2021-08-14T08:00,69.3,57,53.2,0,0,3.6,10.5 -2021-08-14T09:00,74.3,50,54.6,0,0,2.5,10.7 -2021-08-14T10:00,79.3,42,54.5,0,0,3.1,11.4 -2021-08-14T11:00,83.3,36,53.5,0,0,3.3,12.3 -2021-08-14T12:00,86.5,30,51.4,0,0,1.8,12.1 -2021-08-14T13:00,89.4,23,46.8,0,0,1,10.1 -2021-08-14T14:00,91,18,42,0,0,3.8,11 -2021-08-14T15:00,88.3,22,45.1,0,0,13.9,25.3 -2021-08-14T16:00,88,20,42.4,0,0,7.2,25.5 -2021-08-14T17:00,89.1,24,47.6,0,0,6.4,17.9 -2021-08-14T18:00,83.9,22,41.5,0,0,12.3,19.5 -2021-08-14T19:00,76.6,36,47.8,0,0,4,21.7 -2021-08-14T20:00,74.9,45,52.3,0,0,9.6,17.7 -2021-08-14T21:00,74.4,46,52.4,0,0,6.8,15.4 -2021-08-14T22:00,71.6,48,50.8,0,0,4.6,11.2 -2021-08-14T23:00,66.6,57,50.7,0,0,5.3,7.4 -2021-08-15T00:00,66.1,53,48.4,0,0,4.6,7.8 -2021-08-15T01:00,63,59,48.6,0,0,3.3,7.8 -2021-08-15T02:00,61.2,64,48.8,0,0,4.5,5.6 -2021-08-15T03:00,62.2,57,46.8,0,0,4.9,5.8 -2021-08-15T04:00,66.1,45,44.2,0,0,3.3,5.8 -2021-08-15T05:00,61.8,50,43,0,0,4.4,4.3 -2021-08-15T06:00,64.3,46,42.9,0,0,4,15 -2021-08-15T07:00,71.1,37,43.5,0,0,8.1,13.9 -2021-08-15T08:00,78,32,45.4,0,0,6.4,14.8 -2021-08-15T09:00,81.4,28,44.9,0,0,3.8,13.6 -2021-08-15T10:00,85.3,22,42.5,0,0,2.1,12.5 -2021-08-15T11:00,87.1,21,42,0,0,0.7,10.5 -2021-08-15T12:00,87,21,42.4,0,0,0.9,9.8 -2021-08-15T13:00,88,19,41.1,0,0,9.8,18.6 -2021-08-15T14:00,87.1,19,40.4,0,0,6.9,22.8 -2021-08-15T15:00,87.9,18,39.3,0,0,6.1,16.1 -2021-08-15T16:00,86.9,19,40,0,0,10.5,19.2 -2021-08-15T17:00,84.6,23,42.2,0,0,4.6,20.1 -2021-08-15T18:00,83.1,25,43.6,0,0,2.9,11 -2021-08-15T19:00,76.9,34,46,0,0,4.8,5.4 -2021-08-15T20:00,78.3,29,43.4,0,0,1.6,6 -2021-08-15T21:00,76.5,32,44.4,0,0,1.1,2.7 -2021-08-15T22:00,73.2,37,45.5,0,0,3.8,4.7 -2021-08-15T23:00,67.9,46,46.6,0,0,3.1,4.7 -2021-08-16T00:00,63.8,58,48.7,0,0,4,6.7 -2021-08-16T01:00,61.9,64,49.6,0,0,3.6,6.9 -2021-08-16T02:00,60.9,66,49.4,0,0,3.6,5.6 -2021-08-16T03:00,61,63,48.4,0,0,4.1,6.3 -2021-08-16T04:00,59.6,64,47.4,0,0,4,6.3 -2021-08-16T05:00,59.5,56,44,0,0,4.3,5.8 -2021-08-16T06:00,61.8,53,44.4,0,0,4.4,7.4 -2021-08-16T07:00,67.2,47,46.1,0,0,2.3,7.8 -2021-08-16T08:00,74.7,38,47,0,0,0.4,6.9 -2021-08-16T09:00,80.3,28,44.3,0,0,3.2,10.3 -2021-08-16T10:00,84.1,23,42.4,0,0,4,12.3 -2021-08-16T11:00,86.6,20,41.1,0,0,3.8,12.8 -2021-08-16T12:00,88.3,18,39.6,0,0,3.3,12.5 -2021-08-16T13:00,89.3,16,38,0,0,3.7,13.2 -2021-08-16T14:00,89.9,15,36.8,0,0,4.2,13.2 -2021-08-16T15:00,90,15,35.5,0,0,5.3,13.4 -2021-08-16T16:00,89.5,15,35.3,0,0,6.8,15 -2021-08-16T17:00,88.8,15,34.9,0,0,2.3,14.8 -2021-08-16T18:00,87.2,16,35.8,0,0,0.5,6.3 -2021-08-16T19:00,83.9,20,38.3,0,0,2.1,2.5 -2021-08-16T20:00,80.2,23,38.7,0,0,4.1,4.7 -2021-08-16T21:00,72,35,42.9,0,0,6.9,8.5 -2021-08-16T22:00,72.7,31,40.2,0,0,5.6,8.7 -2021-08-16T23:00,68.7,34,39.5,0,0,7.4,12.1 -2021-08-17T00:00,66.1,40,40.8,0,0,6,12.1 -2021-08-17T01:00,64.9,41,40.4,0,0,6,10.1 -2021-08-17T02:00,64.1,40,39.5,0,0,4.9,10.1 -2021-08-17T03:00,62.2,44,40,0,0,5.6,7.8 -2021-08-17T04:00,60.7,47,40.4,0,0,6.7,8.1 -2021-08-17T05:00,61.3,43,38.8,0,0,5.2,8.1 -2021-08-17T06:00,62.7,42,39.5,0,0,4.2,6.9 -2021-08-17T07:00,68.5,37,40.9,0,0,5.2,10.5 -2021-08-17T08:00,77,30,43.4,0,0,3.9,10.5 -2021-08-17T09:00,83.8,23,41.6,0,0,4,11.2 -2021-08-17T10:00,88.3,17,38.4,0,0,4.1,11.9 -2021-08-17T11:00,90.5,15,36.6,0,0,5,13.9 -2021-08-17T12:00,91.2,14,36,0,0,2.4,13.9 -2021-08-17T13:00,92,14,35.8,0,0,3.2,11 -2021-08-17T14:00,92,13,34.1,0,0,5.4,14.5 -2021-08-17T15:00,91.9,12,32.7,0,0,1.4,13.9 -2021-08-17T16:00,93.2,11,32,0,0,4.1,11.4 -2021-08-17T17:00,73.9,46,52,0,0,18.4,11.2 -2021-08-17T18:00,68.3,80,62,0.11,0,15.1,31.5 -2021-08-17T19:00,69.6,71,59.9,0.016,0,11.5,24.6 -2021-08-17T20:00,69.4,66,57.4,0,0,6.2,18.1 -2021-08-17T21:00,68.8,65,56.6,0,0,5.6,10.1 -2021-08-17T22:00,66.1,66,54.2,0,0,4.5,9.2 -2021-08-17T23:00,65.1,64,52.4,0,0,5.1,7.8 -2021-08-18T00:00,64.9,56,48.7,0,0,5.2,8.1 -2021-08-18T01:00,63.1,53,45.5,0,0,5,8.3 -2021-08-18T02:00,65,47,44.2,0,0,4.9,8.5 -2021-08-18T03:00,67.4,41,42.6,0,0,3,6 -2021-08-18T04:00,65.7,44,43.1,0,0,3.2,3.8 -2021-08-18T05:00,62.9,51,44.4,0,0,4.9,5.4 -2021-08-18T06:00,64.9,49,45.3,0,0,5.1,7.6 -2021-08-18T07:00,70.5,42,46.4,0,0,4.8,10.7 -2021-08-18T08:00,76.9,35,47,0,0,2.4,9.8 -2021-08-18T09:00,82.3,27,44.7,0,0,3,10.3 -2021-08-18T10:00,86.6,22,42.8,0,0,2.7,10.5 -2021-08-18T11:00,89.6,19,42.1,0,0,3,11.6 -2021-08-18T12:00,91.1,16,38.7,0,0,3.3,11.6 -2021-08-18T13:00,92.3,14,37,0,0,3,11.9 -2021-08-18T14:00,92,14,36.7,0,0,6.4,14.5 -2021-08-18T15:00,92.2,15,37.4,0,0,10.2,20.4 -2021-08-18T16:00,93.4,13,35.2,0,0,10.4,20.6 -2021-08-18T17:00,86.9,24,45.6,0,0,9.2,19.9 -2021-08-18T18:00,83.4,32,50.5,0,0,10.6,19 -2021-08-18T19:00,80.6,29,45.4,0,0,14.2,24.4 -2021-08-18T20:00,76.6,37,48.7,0,0,5.2,23.3 -2021-08-18T21:00,75.7,40,49.6,0,0,3.1,8.3 -2021-08-18T22:00,70.6,51,51.7,0,0,3,4.3 -2021-08-18T23:00,68.2,53,50.6,0,0,2.9,5.1 -2021-08-19T00:00,65.7,60,51.3,0,0,3,6.3 -2021-08-19T01:00,65,59,50.4,0,0,3.4,5.6 -2021-08-19T02:00,64.1,61,50.5,0,0,4.2,5.4 -2021-08-19T03:00,64.1,60,50,0,0,3.2,5.4 -2021-08-19T04:00,64.8,60,50.5,0,0,2.9,4.7 -2021-08-19T05:00,64.7,79,58.1,0.016,0,12.8,5.1 -2021-08-19T06:00,65.2,77,57.7,0,0,9.1,21.3 -2021-08-19T07:00,65.9,74,57.5,0,0,7.4,15.7 -2021-08-19T08:00,67.4,70,57.1,0,0,7.5,15.4 -2021-08-19T09:00,70.4,60,55.9,0,0,5.2,15.9 -2021-08-19T10:00,74.9,50,55,0,0,2.8,13.4 -2021-08-19T11:00,76.8,48,55.5,0,0,4.3,13.4 -2021-08-19T12:00,74.3,50,54.5,0,0,0.2,14.5 -2021-08-19T13:00,78.6,41,53,0,0,6,15.7 -2021-08-19T14:00,70.3,66,58.6,0.067,0,9.7,21 -2021-08-19T15:00,74.6,53,56.6,0,0,4.9,20.6 -2021-08-19T16:00,73.9,54,56.5,0,0,5.5,16.8 -2021-08-19T17:00,69.3,66,57.5,0,0,9.5,13.2 -2021-08-19T18:00,70.3,64,57.7,0,0,4.9,17 -2021-08-19T19:00,68,77,60.5,0,0,1.2,9.6 -2021-08-19T20:00,65.6,82,59.9,0,0,2.3,3.4 -2021-08-19T21:00,64.7,85,59.9,0,0,4.3,4.9 -2021-08-19T22:00,63.1,92,60.7,0,0,3.8,5.1 -2021-08-19T23:00,62.1,94,60.3,0,0,3.7,6.3 -2021-08-20T00:00,61.2,92,58.7,0,0,2.5,6.7 -2021-08-20T01:00,60.4,92,58.1,0,0,3.8,5.4 -2021-08-20T02:00,60.3,90,57.4,0,0,2.1,4.7 -2021-08-20T03:00,56.3,75,48.4,0.134,0,17.2,30.4 -2021-08-20T04:00,58.9,69,48.9,0,0,2.2,27.3 -2021-08-20T05:00,57.2,84,52.3,0,0,2.7,4.7 -2021-08-20T06:00,56.1,82,50.8,0,0,4.3,7.8 -2021-08-20T07:00,58.7,61,45.5,0,0,9.3,16.8 -2021-08-20T08:00,60.8,62,47.7,0,0,2.6,16.6 -2021-08-20T09:00,63.4,47,43,0,0,2.1,10.7 -2021-08-20T10:00,67.8,41,43,0,0,3.9,12.5 -2021-08-20T11:00,70.7,34,41,0,0,3.1,12.5 -2021-08-20T12:00,72.7,32,41.4,0,0,3.2,12.1 -2021-08-20T13:00,75.9,28,40.1,0,0,2.1,12.1 -2021-08-20T14:00,78.5,25,40.1,0,0,3,11 -2021-08-20T15:00,78.4,25,39.5,0,0,6.8,15.2 -2021-08-20T16:00,79.1,22,36.5,0,0,6.3,15.7 -2021-08-20T17:00,74.8,27,38.7,0,0,13.1,15.7 -2021-08-20T18:00,73.3,29,39.2,0,0,8.1,22.1 -2021-08-20T19:00,68,35,39.6,0,0,4.6,13.2 -2021-08-20T20:00,69.3,34,39.8,0,0,3.4,6.9 -2021-08-20T21:00,67.7,37,40.8,0,0,1.6,4 -2021-08-20T22:00,60.4,56,44.8,0,0,4.3,5.4 -2021-08-20T23:00,57.7,65,46,0,0,3.8,5.4 -2021-08-21T00:00,58.1,63,45.6,0,0,4.1,6.3 -2021-08-21T01:00,58.6,62,45.5,0,0,5.6,6.7 -2021-08-21T02:00,59.7,59,45.6,0,0,4.8,6.7 -2021-08-21T03:00,59.5,58,44.8,0,0,4,6 -2021-08-21T04:00,61,50,42.2,0,0,3.5,5.4 -2021-08-21T05:00,57.1,58,42.4,0,0,5.1,11.2 -2021-08-21T06:00,56.6,60,43,0,0,6.5,10.5 -2021-08-21T07:00,58.5,55,42.4,0,0,5.9,11.9 -2021-08-21T08:00,60.1,51,41.9,0,0,3.6,12.1 -2021-08-21T09:00,66.3,45,44.1,0,0,5.7,13.4 -2021-08-21T10:00,76,31,43.6,0,0,10.1,18.8 -2021-08-21T11:00,78.5,28,43,0,0,12.8,25.5 -2021-08-21T12:00,80.7,26,42.5,0,0,10.9,25.1 -2021-08-21T13:00,82.7,24,42.1,0,0,12.5,23.9 -2021-08-21T14:00,82.9,25,43.1,0,0,7.9,24.2 -2021-08-21T15:00,78.9,31,45.7,0.004,0,8.6,17 -2021-08-21T16:00,79.3,30,45.6,0,0,15.5,27.1 -2021-08-21T17:00,76.4,37,48.2,0,0,8.6,27.5 -2021-08-21T18:00,75.1,42,50.7,0,0,4.4,14.3 -2021-08-21T19:00,71.2,50,51.5,0,0,4.9,8.1 -2021-08-21T20:00,69.3,51,50.3,0,0,8.2,13.2 -2021-08-21T21:00,67.6,49,47.9,0,0,7,13.6 -2021-08-21T22:00,67.8,49,48.2,0,0,11.7,18.8 -2021-08-21T23:00,66.9,55,50,0,0,12.5,20.6 -2021-08-22T00:00,65.5,59,50.7,0,0,10.6,20.6 -2021-08-22T01:00,63.4,65,51.5,0,0,8.7,17.7 -2021-08-22T02:00,61.3,70,51.4,0,0,6.2,14.3 -2021-08-22T03:00,59.2,72,50.1,0,0,4.7,10.3 -2021-08-22T04:00,59.2,68,48.6,0,0,5.2,7.6 -2021-08-22T05:00,56.8,73,48.3,0,0,4,12.3 -2021-08-22T06:00,57.4,71,48.2,0,0,10.6,16.6 -2021-08-22T07:00,60.5,67,49.5,0,0,6.4,16.6 -2021-08-22T08:00,65.1,56,49,0,0,5.2,12.8 -2021-08-22T09:00,70.2,46,48.7,0,0,4.1,12.8 -2021-08-22T10:00,74.7,42,50,0,0,4.4,12.3 -2021-08-22T11:00,80.2,34,49,0,0,5.3,14.1 -2021-08-22T12:00,82,25,42.6,0,0,5.2,14.5 -2021-08-22T13:00,83.7,23,41.5,0,0,0.8,13.4 -2021-08-22T14:00,85.6,22,41.9,0,0,2.5,9.4 -2021-08-22T15:00,85.8,22,42.4,0,0,2.6,10.3 -2021-08-22T16:00,86.7,20,40.6,0,0,3,8.9 -2021-08-22T17:00,85.4,24,44.2,0,0,7.4,11.4 -2021-08-22T18:00,81.9,31,48.4,0,0,4.8,12.5 -2021-08-22T19:00,77.3,37,48.7,0,0,3.3,7.8 -2021-08-22T20:00,70.6,50,51.3,0,0,3.4,5.8 -2021-08-22T21:00,70.2,52,51.8,0,0,4.7,6.7 -2021-08-22T22:00,67.1,53,49.6,0,0,5.3,7.4 -2021-08-22T23:00,64.7,52,46.5,0,0,4.6,6.9 -2021-08-23T00:00,62,55,45.4,0,0,5.1,6.3 -2021-08-23T01:00,61.2,50,42.2,0,0,4.5,6.5 -2021-08-23T02:00,60.1,52,42.3,0,0,5.2,6.7 -2021-08-23T03:00,59.5,53,42.2,0,0,5,7.2 -2021-08-23T04:00,57,58,42.3,0,0,3.4,6 -2021-08-23T05:00,55.8,64,43.9,0,0,3.6,4.7 -2021-08-23T06:00,56.8,65,45.2,0,0,4.6,6 -2021-08-23T07:00,63.2,54,46.3,0,0,1.7,8.3 -2021-08-23T08:00,69.6,45,47.3,0,0,2.9,8.9 -2021-08-23T09:00,74.8,37,46.9,0,0,0.9,9.4 -2021-08-23T10:00,79.3,30,45.6,0,0,1.8,9.4 -2021-08-23T11:00,83.4,23,42.1,0,0,2,9.4 -2021-08-23T12:00,86.6,20,40.2,0,0,3.4,11.2 -2021-08-23T13:00,87.6,20,41.6,0,0,4.2,12.8 -2021-08-23T14:00,88.9,20,42.1,0,0,4.7,15.4 -2021-08-23T15:00,90.4,16,38.7,0,0,2.9,15.4 -2021-08-23T16:00,90.5,16,38.4,0,0,4.8,12.1 -2021-08-23T17:00,83,29,47.4,0,0,2.8,10.7 -2021-08-23T18:00,80.9,39,53.5,0,0,2.4,6.5 -2021-08-23T19:00,73.1,50,53.2,0,0,5.9,7.2 -2021-08-23T20:00,69.7,56,53.2,0,0,3.8,6.9 -2021-08-23T21:00,66.2,63,53.4,0,0,2.7,4.7 -2021-08-23T22:00,65.1,64,52.4,0,0,3.8,5.6 -2021-08-23T23:00,64.9,55,48.4,0,0,5.1,9.4 -2021-08-24T00:00,63.9,51,45.4,0,0,3.5,8.1 -2021-08-24T01:00,63,45,41,0,0,6,10.1 -2021-08-24T02:00,61.2,44,39.1,0,0,4.3,10.3 -2021-08-24T03:00,59.5,47,39.1,0,0,4.1,7.4 -2021-08-24T04:00,58.3,51,40.2,0,0,4.3,7.2 -2021-08-24T05:00,56.6,53,39.7,0,0,4.8,6.9 -2021-08-24T06:00,58,53,40.8,0,0,3,6.9 -2021-08-24T07:00,64,45,42.2,0,0,3.8,8.7 -2021-08-24T08:00,73,36,44.4,0,0,2.5,9.4 -2021-08-24T09:00,80.4,25,41.4,0,0,1.7,8.5 -2021-08-24T10:00,85.1,19,38.3,0,0,1.4,9.4 -2021-08-24T11:00,87,17,37.6,0,0,4.6,12.3 -2021-08-24T12:00,87.5,17,37.7,0,0,5.2,14.3 -2021-08-24T13:00,89.2,16,36.6,0,0,1.4,13.9 -2021-08-24T14:00,90.7,14,35.2,0,0,4.7,12.8 -2021-08-24T15:00,90.7,14,34.9,0,0,5.7,13.2 -2021-08-24T16:00,89.8,15,35.3,0,0,8.7,17.2 -2021-08-24T17:00,90,14,35.1,0,0,5.2,17 -2021-08-24T18:00,85.1,20,39.3,0,0,4.3,9.8 -2021-08-24T19:00,77.6,22,35.9,0,0,6.9,9.4 -2021-08-24T20:00,82,18,34.4,0,0,5.7,10.3 -2021-08-24T21:00,69.8,33,39.4,0,0,4,6.9 -2021-08-24T22:00,66.3,46,44.8,0,0,4.7,7.6 -2021-08-24T23:00,64.2,48,44.2,0,0,5.4,7.6 -2021-08-25T00:00,63.2,48,43.2,0,0,4.5,6.9 -2021-08-25T01:00,61.2,53,44,0,0,5.1,5.4 -2021-08-25T02:00,62.7,49,43.1,0,0,5,11.6 -2021-08-25T03:00,59.8,51,41.7,0,0,6.5,8.5 -2021-08-25T04:00,61.3,46,40.2,0,0,4.7,8.3 -2021-08-25T05:00,61.3,56,45.5,0,0,6.5,8.9 -2021-08-25T06:00,61.2,60,47.2,0,0,6.7,11.2 -2021-08-25T07:00,64.6,59,49.8,0,0,9,16.1 -2021-08-25T08:00,66.5,60,52.2,0,0,7.2,17.2 -2021-08-25T09:00,69.3,56,52.8,0,0,4.7,15.7 -2021-08-25T10:00,72.9,50,52.9,0,0,3.7,13.4 -2021-08-25T11:00,76.9,43,52.4,0,0,4.5,13.9 -2021-08-25T12:00,80.6,36,51.2,0,0,4.7,14.3 -2021-08-25T13:00,83.4,31,49.4,0,0,3.8,14.3 -2021-08-25T14:00,85.6,28,48.6,0,0,3.8,13.2 -2021-08-25T15:00,87.3,26,48.5,0,0,4.6,13 -2021-08-25T16:00,88,25,48.3,0,0,6.5,14.8 -2021-08-25T17:00,80.1,48,58.7,0,0,5.1,16.3 -2021-08-25T18:00,78.8,50,58.7,0,0,3.4,9.8 -2021-08-25T19:00,72.6,64,59.8,0.008,0,9.3,13.9 -2021-08-25T20:00,70.2,72,60.5,0,0,4.3,15.7 -2021-08-25T21:00,68.8,76,61,0,0,3.2,7.4 -2021-08-25T22:00,68.2,72,59,0,0,4.5,6.9 -2021-08-25T23:00,67,71,57.3,0,0,5.1,8.7 -2021-08-26T00:00,64.9,74,56.4,0,0,3.3,8.3 -2021-08-26T01:00,64.2,74,55.9,0,0,2.4,5.4 -2021-08-26T02:00,61.5,81,55.8,0,0,2.5,3.6 -2021-08-26T03:00,60.4,80,54.1,0,0,3.8,4.7 -2021-08-26T04:00,61.3,73,52.5,0,0,1.5,4.9 -2021-08-26T05:00,62.7,67,51.7,0,0,2.9,3.1 -2021-08-26T06:00,61.6,73,52.9,0,0,1.4,3.8 -2021-08-26T07:00,63.7,75,55.5,0,0,2.7,8.1 -2021-08-26T08:00,67.4,71,57.5,0,0,3,10.1 -2021-08-26T09:00,73.2,54,55.6,0,0,2.7,10.5 -2021-08-26T10:00,79.2,40,53,0,0,2.4,10.7 -2021-08-26T11:00,82.6,34,51.4,0,0,4.6,12.5 -2021-08-26T12:00,80.6,38,52.4,0,0,3.8,14.3 -2021-08-26T13:00,79.3,40,53.2,0,0,3.4,14.1 -2021-08-26T14:00,82.6,30,48.2,0,0,9.7,19.7 -2021-08-26T15:00,85.8,23,43.3,0,0,9.4,20.1 -2021-08-26T16:00,86,23,43.3,0,0,6,19.2 -2021-08-26T17:00,84,21,40.1,0,0,11.4,14.8 -2021-08-26T18:00,81,25,41.6,0,0,7.7,19.7 -2021-08-26T19:00,73.8,33,43.3,0,0,4.6,12.8 -2021-08-26T20:00,68.8,42,45,0,0,4.4,9.8 -2021-08-26T21:00,69.5,48,49.1,0,0,13.5,21.5 -2021-08-26T22:00,66.6,57,50.9,0,0,4.6,22.4 -2021-08-26T23:00,65,60,50.8,0,0,4.3,6.9 -2021-08-27T00:00,63.5,62,50.5,0,0,4.1,7.4 -2021-08-27T01:00,62.1,64,49.8,0,0,5.4,8.5 -2021-08-27T02:00,61.3,67,50.3,0,0,5.5,9.6 -2021-08-27T03:00,59.6,70,49.9,0,0,4.3,8.9 -2021-08-27T04:00,57.7,71,48.3,0,0,4.1,7.2 -2021-08-27T05:00,57.1,66,45.9,0,0,4.4,7.2 -2021-08-27T06:00,58.6,60,44.9,0,0,4.7,7.4 -2021-08-27T07:00,64.7,50,45.6,0,0,5.2,10.5 -2021-08-27T08:00,72.4,41,47.1,0,0,3.6,10.7 -2021-08-27T09:00,79.4,30,45.4,0,0,3.3,10.3 -2021-08-27T10:00,84.5,24,43.4,0,0,3,11.4 -2021-08-27T11:00,87.1,20,40.6,0,0,3.7,11.4 -2021-08-27T12:00,89.3,18,40.5,0,0,6.4,15.9 -2021-08-27T13:00,91.3,17,39.8,0,0,7.5,17 -2021-08-27T14:00,92,16,38.8,0,0,4.2,16.8 -2021-08-27T15:00,91,15,37.8,0,0,2.4,12.3 -2021-08-27T16:00,89.2,17,38,0,0,5.2,10.7 -2021-08-27T17:00,83.8,23,42.1,0,0,5.4,11.6 -2021-08-27T18:00,80.9,37,52,0.004,0,1.3,10.1 -2021-08-27T19:00,75.7,41,50.2,0,0,8.9,14.1 -2021-08-27T20:00,75.6,31,42.6,0,0,6.7,15.4 -2021-08-27T21:00,70,39,44.1,0,0,6.6,11 -2021-08-27T22:00,66.9,45,44.6,0,0,4.7,7.8 -2021-08-27T23:00,64.1,53,46.7,0,0,4.5,6 -2021-08-28T00:00,63.9,51,45.2,0,0,4.5,6.7 -2021-08-28T01:00,64.7,44,42.4,0,0,6.4,10.3 -2021-08-28T02:00,63.6,43,40.6,0,0,5.5,10.5 -2021-08-28T03:00,59.5,52,41.8,0,0,5.8,8.9 -2021-08-28T04:00,57.9,55,41.8,0,0,4,6.9 -2021-08-28T05:00,57.1,55,41.2,0,0,4.7,5.1 -2021-08-28T06:00,58.6,52,41.1,0,0,3.6,6 -2021-08-28T07:00,64.8,43,41.9,0,0,3.5,8.1 -2021-08-28T08:00,70.7,37,43.3,0,0,3.8,10.3 -2021-08-28T09:00,75.3,33,44.2,0,0,4.9,12.8 -2021-08-28T10:00,80,28,44.2,0,0,4.7,14.1 -2021-08-28T11:00,84.6,24,44,0,0,6.2,15.4 -2021-08-28T12:00,88.3,20,42.5,0,0,6.1,16.3 -2021-08-28T13:00,90.1,18,40.6,0,0,4.1,15.7 -2021-08-28T14:00,91,16,38.9,0,0,6.5,14.8 -2021-08-28T15:00,90.1,16,38.3,0,0,9.1,18.6 -2021-08-28T16:00,90.2,14,35.4,0,0,7.2,18.3 -2021-08-28T17:00,87.3,23,45.1,0,0,8.5,18.3 -2021-08-28T18:00,79,42,53.8,0,0,12.6,24.6 -2021-08-28T19:00,75.7,43,51.4,0,0,4.5,21 -2021-08-28T20:00,73.3,48,52.4,0,0,9.2,14.8 -2021-08-28T21:00,70.4,53,52.5,0,0,11.9,24.4 -2021-08-28T22:00,68.7,55,51.8,0,0,6,19.5 -2021-08-28T23:00,68.2,53,50.3,0,0,6.2,10.3 -2021-08-29T00:00,66.8,51,48.3,0,0,10.7,17.7 -2021-08-29T01:00,65.5,50,46.3,0,0,11.3,19.2 -2021-08-29T02:00,64.4,52,46.3,0,0,9.1,18.8 -2021-08-29T03:00,63.3,56,47.4,0,0,6.4,15.4 -2021-08-29T04:00,62.2,61,48.6,0,0,3,10.7 -2021-08-29T05:00,61.6,66,50.3,0,0,2.6,5.4 -2021-08-29T06:00,61,70,51.2,0,0,2.4,4.3 -2021-08-29T07:00,62,68,51.4,0,0,2.6,7.6 -2021-08-29T08:00,64,65,51.9,0,0,2,8.5 -2021-08-29T09:00,67.6,59,52.5,0,0,4.1,12.3 -2021-08-29T10:00,72.2,50,52.5,0,0,6,15.4 -2021-08-29T11:00,75.1,43,51.4,0,0,2.1,15.4 -2021-08-29T12:00,78.6,39,51.4,0,0,2,11 -2021-08-29T13:00,80.8,36,51.7,0,0,1.4,11.2 -2021-08-29T14:00,81.1,36,51.6,0.004,0,1,15.9 -2021-08-29T15:00,81.2,35,50.8,0,0,7.3,15.2 -2021-08-29T16:00,81.9,31,48.3,0,0,4.9,15.7 -2021-08-29T17:00,78.7,41,52.8,0,0,5.3,11.6 -2021-08-29T18:00,77.1,42,52.4,0,0,5.1,10.7 -2021-08-29T19:00,73.7,47,52,0,0,7.8,12.5 -2021-08-29T20:00,71.8,53,53.7,0,0,8.7,14.1 -2021-08-29T21:00,70.3,55,53.3,0,0,4.8,14.3 -2021-08-29T22:00,66.2,64,53.8,0,0,2.9,8.1 -2021-08-29T23:00,63.3,74,54.9,0,0,2.4,4.3 -2021-08-30T00:00,61.5,79,54.9,0,0,2.4,4 -2021-08-30T01:00,59.5,84,54.7,0,0,1.7,4 -2021-08-30T02:00,57.7,85,53.4,0,0,2.2,4 -2021-08-30T03:00,56.1,85,51.8,0,0,2.7,4.7 -2021-08-30T04:00,54.7,88,51.3,0,0,2.6,4.7 -2021-08-30T05:00,55,74,46.8,0,0,4.1,4.5 -2021-08-30T06:00,55.9,62,43.2,0,0,2.2,5.1 -2021-08-30T07:00,61.2,51,42.8,0,0,2.3,6.9 -2021-08-30T08:00,68.9,43,45.3,0,0,1.6,7.6 -2021-08-30T09:00,77.5,28,42.2,0,0,3.3,10.3 -2021-08-30T10:00,85.1,16,34.5,0,0,3.7,11.9 -2021-08-30T11:00,88.9,12,30,0,0,2.9,11.6 -2021-08-30T12:00,90.1,10,27.2,0,0,6,14.8 -2021-08-30T13:00,91,10,26,0,0,9.1,19 -2021-08-30T14:00,91.2,9,25.3,0,0,8.1,20.1 -2021-08-30T15:00,92.1,9,25.3,0,0,6.9,17.4 -2021-08-30T16:00,91.8,9,25.3,0,0,10.6,18.8 -2021-08-30T17:00,88.6,11,28,0,0,6.3,21 -2021-08-30T18:00,82,28,45.9,0,0,6.1,10.5 -2021-08-30T19:00,81.1,17,31.5,0,0,3.6,7.2 -2021-08-30T20:00,72.1,27,36.3,0,0,5.4,7.6 -2021-08-30T21:00,68,32,36.7,0,0,4,6.9 -2021-08-30T22:00,64.2,38,37.9,0,0,5,9.6 -2021-08-30T23:00,63.1,40,38.4,0,0,4.2,8.3 -2021-08-31T00:00,60.7,44,38.6,0,0,3.7,6.7 -2021-08-31T01:00,59.7,43,37.3,0,0,4,5.8 -2021-08-31T02:00,59.2,41,35.2,0,0,4.3,6.5 -2021-08-31T03:00,59.1,38,33.4,0,0,4.4,6.9 -2021-08-31T04:00,58.4,38,33,0,0,4.9,6.9 -2021-08-31T05:00,58.3,37,32.1,0,0,7.3,6.9 -2021-08-31T06:00,59.7,43,37,0,0,5,8.5 -2021-08-31T07:00,65.4,31,34.1,0,0,2.2,6 -2021-08-31T08:00,72,29,38,0,0,3.8,9.6 -2021-08-31T09:00,79.7,20,35.2,0,0,5.2,12.8 -2021-08-31T10:00,85.7,15,32.2,0,0,4.6,13 -2021-08-31T11:00,89.5,12,30.1,0,0,3.9,12.8 -2021-08-31T12:00,91.6,11,28.7,0,0,4.7,13.2 -2021-08-31T13:00,92.6,10,28.7,0,0,6.9,15.9 -2021-08-31T14:00,92.5,10,28.4,0,0,6.5,16.8 -2021-08-31T15:00,92.4,10,28,0,0,4.1,15 -2021-08-31T16:00,92.3,10,28.6,0,0,6.7,12.8 -2021-08-31T17:00,90.1,13,31.8,0,0,4.1,15.7 -2021-08-31T18:00,84.1,27,46.4,0,0,5.4,7.6 -2021-08-31T19:00,84.6,17,35.3,0,0,2.9,6.5 -2021-08-31T20:00,76.2,23,35.2,0,0,5.7,9.2 -2021-08-31T21:00,78.9,18,31.1,0,0,10.8,19.7 -2021-08-31T22:00,71.7,25,33.7,0,0,6.1,17.7 -2021-08-31T23:00,70.6,26,34.4,0,0,5,8.5 -2021-09-01T00:00,71.9,26,34.7,0,0,3.4,8.5 -2021-09-01T01:00,63.9,38,37.7,0,0,5.3,5.6 -2021-09-01T02:00,63,40,38,0,0,5.4,7.4 -2021-09-01T03:00,62.8,41,38.6,0,0,3.7,8.3 -2021-09-01T04:00,58.6,48,39.1,0,0,2.5,4.7 -2021-09-01T05:00,58.6,51,40.7,0,0,2.2,5.8 -2021-09-01T06:00,58.8,54,42.2,0,0,1.5,4.3 -2021-09-01T07:00,65.3,45,43.4,0,0,2.3,6.5 -2021-09-01T08:00,71.5,35,42.4,0,0,5.4,11.4 -2021-09-01T09:00,74.3,35,45.1,0,0,7.7,16.1 -2021-09-01T10:00,79.3,31,45.7,0,0,6.8,17 -2021-09-01T11:00,84,27,46.6,0,0,6.3,16.3 -2021-09-01T12:00,87.8,24,46.6,0,0,7.1,16.8 -2021-09-01T13:00,88.4,23,46,0,0,9.5,19.7 -2021-09-01T14:00,89.3,21,44.3,0,0,10.5,20.6 -2021-09-01T15:00,89,20,42.5,0,0,12.3,24.6 -2021-09-01T16:00,88.3,20,41.5,0,0,8.6,23.3 -2021-09-01T17:00,79.6,31,46.6,0,0,8.4,15.9 -2021-09-01T18:00,77.3,36,47.9,0,0,11.1,18.1 -2021-09-01T19:00,73,45,50.4,0,0,10.1,19.5 -2021-09-01T20:00,69.3,66,57.4,0.024,0,4.7,16.3 -2021-09-01T21:00,67.4,85,62.9,0.055,0,0.7,7.2 -2021-09-01T22:00,66.3,90,63.2,0.016,0,1.4,3.1 -2021-09-01T23:00,65.5,88,62,0,0,2.3,4 -2021-09-02T00:00,64.8,89,61.5,0.004,0,1.8,3.8 -2021-09-02T01:00,62.9,98,62.3,0,0,2.6,4.5 -2021-09-02T02:00,62.4,97,61.7,0,0,2.7,6 -2021-09-02T03:00,61.4,97,60.5,0,0,2.6,4.9 -2021-09-02T04:00,60,98,59.5,0,0,2.4,4.7 -2021-09-02T05:00,59.5,90,56.8,0,0,4.5,4.9 -2021-09-02T06:00,60.2,86,56.1,0,0,4.6,7.4 -2021-09-02T07:00,64.6,75,56.3,0,0,3,9.2 -2021-09-02T08:00,69.1,56,52.9,0,0,1.5,7.8 -2021-09-02T09:00,71.4,53,53.2,0,0,2.4,10.1 -2021-09-02T10:00,73.4,48,52.5,0,0,1.1,10.1 -2021-09-02T11:00,74.6,45,51.7,0,0,2.3,10.1 -2021-09-02T12:00,76.7,38,49.4,0,0,3,11.2 -2021-09-02T13:00,80.2,30,46,0,0,4.2,13.2 -2021-09-02T14:00,81.3,28,45.1,0,0,6.6,15.9 -2021-09-02T15:00,81.5,27,44.3,0,0,6.1,16.1 -2021-09-02T16:00,81.2,26,43.4,0,0,5.3,14.5 -2021-09-02T17:00,78.6,35,49,0,0,7.7,12.3 -2021-09-02T18:00,74.8,46,52.8,0.012,0,8.7,15 -2021-09-02T19:00,72.9,48,52.1,0,0,6.5,14.3 -2021-09-02T20:00,71.4,52,52.8,0,0,4.1,10.7 -2021-09-02T21:00,70,56,53.7,0,0,4.9,7.8 -2021-09-02T22:00,67.2,63,54.2,0,0,7.1,11.4 -2021-09-02T23:00,65.1,69,54.5,0,0,5.8,11.9 -2021-09-03T00:00,64.6,67,53.2,0,0,3.4,9.4 -2021-09-03T01:00,63,70,53,0,0,2.1,5.4 -2021-09-03T02:00,60.7,77,53.4,0,0,3.5,5.4 -2021-09-03T03:00,59.4,81,53.6,0,0,3.9,6.5 -2021-09-03T04:00,58.1,85,53.7,0,0,2.4,6.3 -2021-09-03T05:00,60.5,74,52.3,0,0,3.4,4 -2021-09-03T06:00,59.8,72,50.7,0,0,2.2,5.6 -2021-09-03T07:00,62.3,66,50.7,0,0,1.1,6.3 -2021-09-03T08:00,66.1,59,51.3,0,0,2.1,7.8 -2021-09-03T09:00,70.3,51,51.5,0,0,4.1,11.4 -2021-09-03T10:00,74.5,46,52.6,0,0,5.3,14.1 -2021-09-03T11:00,76.5,47,54.7,0,0,6.1,16.1 -2021-09-03T12:00,78.9,43,54.4,0,0,2.6,18.8 -2021-09-03T13:00,78.3,44,54.9,0.004,0,6.7,16.8 -2021-09-03T14:00,71.7,63,58.6,0.071,0,6.9,17.2 -2021-09-03T15:00,75.2,52,56.4,0,0,7.2,15.9 -2021-09-03T16:00,74.8,50,55.2,0,0,1.9,16.1 -2021-09-03T17:00,73.9,46,51.6,0,0,7,8.3 -2021-09-03T18:00,72.3,54,54.9,0,0,5.7,13.6 -2021-09-03T19:00,69.9,59,55,0,0,7.8,8.9 -2021-09-03T20:00,66.8,64,54.2,0,0,11.7,23.5 -2021-09-03T21:00,64.3,71,54.6,0,0,8.9,19.5 -2021-09-03T22:00,62.8,77,55.3,0,0,7.9,15.4 -2021-09-03T23:00,61.3,81,55.3,0,0,4.1,13.2 -2021-09-04T00:00,60.6,82,55.1,0,0,2,6.9 -2021-09-04T01:00,60.6,81,54.7,0,0,3.1,4.9 -2021-09-04T02:00,58.7,86,54.5,0,0,3.6,5.6 -2021-09-04T03:00,56.9,91,54.3,0,0,3.5,5.8 -2021-09-04T04:00,55.7,91,53,0,0,3.2,5.8 -2021-09-04T05:00,54.7,82,49.2,0,0,3,6.7 -2021-09-04T06:00,54.6,82,49.1,0,0,2.2,5.4 -2021-09-04T07:00,57.7,76,50.2,0,0,0.2,4.9 -2021-09-04T08:00,63,64,50.5,0,0,1.9,8.3 -2021-09-04T09:00,69.7,45,47.5,0,0,2.2,9.8 -2021-09-04T10:00,75.2,33,44.5,0,0,1.3,9.8 -2021-09-04T11:00,78.5,27,42,0,0,2.1,10.7 -2021-09-04T12:00,80.6,24,40.6,0,0,1.2,10.7 -2021-09-04T13:00,82,23,40.4,0,0,1.6,10.5 -2021-09-04T14:00,82.9,22,40.1,0,0,2.3,11.2 -2021-09-04T15:00,83.1,21,39.7,0,0,4.7,12.3 -2021-09-04T16:00,82.3,22,40,0,0,8.1,16.1 -2021-09-04T17:00,81.6,22,39,0,0,6.5,16.8 -2021-09-04T18:00,78,27,41.4,0,0,9.5,15.9 -2021-09-04T19:00,73.9,32,42.6,0,0,4.8,15.7 -2021-09-04T20:00,71.5,47,50,0,0,8,13.6 -2021-09-04T21:00,66.5,62,53.1,0,0,3.8,13.2 -2021-09-04T22:00,63.5,67,52.3,0,0,3.4,6.3 -2021-09-04T23:00,60.9,67,49.8,0,0,3.7,6.5 -2021-09-05T00:00,59.5,60,45.9,0,0,3.8,6.3 -2021-09-05T01:00,58.3,49,39.4,0,0,4,6.9 -2021-09-05T02:00,57.1,41,33.4,0,0,4.2,6.5 -2021-09-05T03:00,55.3,38,30.3,0,0,4.5,7.6 -2021-09-05T04:00,54.1,38,29.3,0,0,5.2,8.7 -2021-09-05T05:00,54.9,36,28.6,0,0,5.2,8.9 -2021-09-05T06:00,54.7,38,29.3,0,0,4.5,8.7 -2021-09-05T07:00,60,36,32.6,0,0,4.9,9.8 -2021-09-05T08:00,69.6,29,36.1,0,0,4,10.5 -2021-09-05T09:00,76.9,18,30.8,0,0,2,10.5 -2021-09-05T10:00,80.4,11,21.1,0,0,2.3,10.1 -2021-09-05T11:00,82.6,9,18.8,0,0,2.9,11.4 -2021-09-05T12:00,84.4,9,18.8,0,0,3.8,12.8 -2021-09-05T13:00,85.8,9,19.6,0,0,5.1,14.3 -2021-09-05T14:00,86.7,9,20.4,0,0,6.8,16.1 -2021-09-05T15:00,86.5,9,20.7,0,0,8.2,17.4 -2021-09-05T16:00,85.2,9,20.9,0,0,7.8,17.7 -2021-09-05T17:00,83.8,10,22.3,0,0,6.4,15.9 -2021-09-05T18:00,77.5,16,28.4,0,0,4.6,11.2 -2021-09-05T19:00,77.4,15,25.8,0,0,4.2,7.6 -2021-09-05T20:00,68.7,22,28.5,0,0,5.8,7.6 -2021-09-05T21:00,65.1,28,31.1,0,0,4.8,7.4 -2021-09-05T22:00,61.9,34,33.4,0,0,4.2,8.1 -2021-09-05T23:00,58.6,41,35.2,0,0,3.3,6.9 -2021-09-06T00:00,57.5,45,36.5,0,0,3.7,5.6 -2021-09-06T01:00,56.3,46,35.6,0,0,3.8,6.3 -2021-09-06T02:00,55.1,45,34.3,0,0,3.6,6.3 -2021-09-06T03:00,54.4,43,32.3,0,0,3.6,5.8 -2021-09-06T04:00,53.7,41,30.4,0,0,4.3,6 -2021-09-06T05:00,54.1,38,28.8,0,0,5.6,7.2 -2021-09-06T06:00,56,36,29.8,0,0,5.1,7.8 -2021-09-06T07:00,63.4,30,31.8,0,0,6.2,11.2 -2021-09-06T08:00,73.9,21,32,0,0,4.1,11.2 -2021-09-06T09:00,82,15,29.8,0,0,2,10.1 -2021-09-06T10:00,86.1,10,23.9,0,0,1.4,8.7 -2021-09-06T11:00,88.3,9,23,0,0,3.7,12.1 -2021-09-06T12:00,89.9,9,24.1,0,0,4.2,13.2 -2021-09-06T13:00,91.1,9,25.1,0,0,5.4,14.5 -2021-09-06T14:00,91.9,9,25.5,0,0,5.8,15 -2021-09-06T15:00,92.1,9,25.4,0,0,6.6,15.2 -2021-09-06T16:00,91.5,9,25.1,0,0,7.4,15.2 -2021-09-06T17:00,90.4,8,20.4,0,0,7.3,15 -2021-09-06T18:00,85,10,21.2,0,0,6.7,13.6 -2021-09-06T19:00,80.3,12,22.2,0,0,12,18.6 -2021-09-06T20:00,78.1,12,20.4,0,0,12.3,22.4 -2021-09-06T21:00,75.2,13,21.7,0,0,10.4,20.4 -2021-09-06T22:00,72.7,15,22.6,0,0,9.2,17.2 -2021-09-06T23:00,69.1,17,22.9,0,0,5.4,15.2 -2021-09-07T00:00,64.1,21,23.5,0,0,6.8,8.7 -2021-09-07T01:00,62.7,23,23.8,0,0,6.5,8.5 -2021-09-07T02:00,62.2,23,23.7,0,0,5.6,9.4 -2021-09-07T03:00,66.6,19,23.3,0,0,4.3,9.4 -2021-09-07T04:00,59.5,28,26.7,0,0,5.2,6.3 -2021-09-07T05:00,58.2,31,27.9,0,0,5.6,6.3 -2021-09-07T06:00,60.4,32,30.7,0,0,3.8,6.7 -2021-09-07T07:00,65.6,27,30.9,0,0,1.6,6 -2021-09-07T08:00,71.7,20,28.7,0,0,2.2,8.9 -2021-09-07T09:00,76.2,17,27.6,0,0,6.8,15.4 -2021-09-07T10:00,78,18,31.3,0,0,7,17 -2021-09-07T11:00,80.3,18,32.4,0,0,6.3,16.8 -2021-09-07T12:00,82.5,16,32.1,0,0,5.3,16.3 -2021-09-07T13:00,84.1,15,32.1,0,0,5,15.2 -2021-09-07T14:00,85.2,15,32.7,0,0,4,14.5 -2021-09-07T15:00,85.6,15,33.2,0,0,3.6,13 -2021-09-07T16:00,85.1,16,33.3,0,0,5,12.5 -2021-09-07T17:00,83.5,15,31,0,0,5,12.5 -2021-09-07T18:00,77.9,23,37,0,0,4.6,9.8 -2021-09-07T19:00,73,26,35.7,0,0,6.2,7.6 -2021-09-07T20:00,70.3,30,37.7,0,0,5.9,8.1 -2021-09-07T21:00,72.9,27,36.8,0,0,2.7,7.2 -2021-09-07T22:00,64.8,36,37.5,0,0,5.4,6.3 -2021-09-07T23:00,62,40,37.2,0,0,3.3,6.7 -2021-09-08T00:00,59.3,46,38.7,0,0,3.2,5.4 -2021-09-08T01:00,58.4,50,39.6,0,0,4,5.8 -2021-09-08T02:00,59.5,46,38.8,0,0,2.7,4.7 -2021-09-08T03:00,56.8,50,38.2,0,0,3.2,3.8 -2021-09-08T04:00,58.1,45,37,0,0,2.4,4 -2021-09-08T05:00,58.3,44,36.7,0,0,2.3,2.9 -2021-09-08T06:00,57.5,48,38,0,0,2.9,4.3 -2021-09-08T07:00,59,49,40,0,0,1.6,5.6 -2021-09-08T08:00,63.6,42,40.2,0,0,1.1,6.9 -2021-09-08T09:00,69.8,33,39.3,0,0,1.1,8.5 -2021-09-08T10:00,75.5,26,38.3,0,0,3.6,11.9 -2021-09-08T11:00,80.1,22,37.5,0,0,5.9,15.4 -2021-09-08T12:00,83.5,18,35.7,0,0,6.7,17 -2021-09-08T13:00,85.7,17,35.2,0,0,7.1,17.4 -2021-09-08T14:00,86.8,16,35.9,0,0,7.5,17.4 -2021-09-08T15:00,86.9,16,36.1,0,0,8,17.9 -2021-09-08T16:00,86.1,17,36.5,0,0,7.9,17.7 -2021-09-08T17:00,84.7,18,36.5,0,0,5.1,16.3 -2021-09-08T18:00,79.2,23,38,0,0,3.8,10.1 -2021-09-08T19:00,73.9,27,37.6,0,0,5,6.7 -2021-09-08T20:00,72.4,30,38.9,0,0,5.3,7.4 -2021-09-08T21:00,73.7,28,38.6,0,0,3.7,6.3 -2021-09-08T22:00,71.8,30,38.8,0,0,0.9,4.5 -2021-09-08T23:00,68.2,35,39.7,0,0,3.4,4.3 -2021-09-09T00:00,62.4,45,40.8,0,0,4.3,4.5 -2021-09-09T01:00,60.7,44,38.9,0,0,4.3,6.9 -2021-09-09T02:00,57.9,40,33.5,0,0,4.5,7.2 -2021-09-09T03:00,55.5,42,33,0,0,4.5,6.3 -2021-09-09T04:00,53.6,53,36.9,0,0,5.2,6.5 -2021-09-09T05:00,53.3,53,36.5,0,0,3.7,6.9 -2021-09-09T06:00,53.8,49,35,0,0,4.2,6.5 -2021-09-09T07:00,60.2,38,34.3,0,0,4.5,9.4 -2021-09-09T08:00,70.8,27,35.6,0,0,2.6,9.2 -2021-09-09T09:00,81.3,18,33.6,0,0,3.1,10.1 -2021-09-09T10:00,88.1,11,25.9,0,0,2.9,11.2 -2021-09-09T11:00,90.9,8,20.6,0,0,1.6,10.7 -2021-09-09T12:00,92.8,6,16.9,0,0,4.9,13.4 -2021-09-09T13:00,94.2,6,18,0,0,6.3,15.4 -2021-09-09T14:00,94.7,7,19.4,0,0,7.4,16.6 -2021-09-09T15:00,94.4,7,20.7,0,0,8.2,17.2 -2021-09-09T16:00,93.2,8,22.2,0,0,8.2,17.2 -2021-09-09T17:00,91.8,9,24.7,0,0,4.7,16.1 -2021-09-09T18:00,82.7,16,31.9,0,0,6.2,7.6 -2021-09-09T19:00,83.9,12,26.4,0,0,3.1,7.4 -2021-09-09T20:00,73.5,19,28.6,0,0,5.2,7.8 -2021-09-09T21:00,68,25,30.4,0,0,4.1,7.6 -2021-09-09T22:00,64.1,30,32.2,0,0,4,6.3 -2021-09-09T23:00,60.7,37,34.6,0,0,3.2,6 -2021-09-10T00:00,58.8,43,36.1,0,0,2.7,4.5 -2021-09-10T01:00,58.5,41,34.9,0,0,3.7,5.6 -2021-09-10T02:00,58.5,36,31.4,0,0,4,6.3 -2021-09-10T03:00,57.7,33,29,0,0,4,6.5 -2021-09-10T04:00,57.3,34,29,0,0,4.4,6.7 -2021-09-10T05:00,56.1,38,30.8,0,0,5.2,6.9 -2021-09-10T06:00,56.8,39,32,0,0,4.8,7.2 -2021-09-10T07:00,64.9,29,32,0,0,4.4,8.5 -2021-09-10T08:00,73.9,24,34.9,0,0,2.7,8.5 -2021-09-10T09:00,83,18,35.2,0,0,3.2,10.3 -2021-09-10T10:00,89.7,12,29.9,0,0,2.6,10.3 -2021-09-10T11:00,93.5,9,25.5,0,0,3.6,11.6 -2021-09-10T12:00,94.8,8,25.5,0,0,4.5,13.2 -2021-09-10T13:00,95.5,8,26.2,0,0,4.6,13.4 -2021-09-10T14:00,95.9,8,26.2,0,0,4.2,13.2 -2021-09-10T15:00,95.7,8,26.1,0,0,4.1,12.3 -2021-09-10T16:00,95.3,8,25.3,0,0,6.5,13 -2021-09-10T17:00,92.6,30,56.6,0,0,1.5,15.2 -2021-09-10T18:00,86.5,13,29.9,0,0,3.9,4.5 -2021-09-10T19:00,78.6,16,28.6,0,0,5,5.8 -2021-09-10T20:00,73.5,20,29.6,0,0,4.5,6.9 -2021-09-10T21:00,70.4,23,31.1,0,0,3.1,6 -2021-09-10T22:00,66.9,27,31.6,0,0,3.8,5.4 -2021-09-10T23:00,65.2,27,30.7,0,0,4.3,6.9 -2021-09-11T00:00,62.5,29,30.1,0,0,4.9,6.9 -2021-09-11T01:00,67.2,24,29,0,0,3.6,7.8 -2021-09-11T02:00,67,25,30,0,0,2.7,6 -2021-09-11T03:00,60.7,31,30,0,0,7,8.3 -2021-09-11T04:00,59.5,32,29.5,0,0,7.6,9.4 -2021-09-11T05:00,58.4,35,30.8,0,0,6.5,8.9 -2021-09-11T06:00,58,40,33.7,0,0,6,8.1 -2021-09-11T07:00,64.8,32,34.3,0,0,4.6,8.7 -2021-09-11T08:00,73.1,26,35.8,0,0,4.8,11 -2021-09-11T09:00,82.5,17,32.8,0,0,5,12.1 -2021-09-11T10:00,89,13,31.2,0,0,6.7,15.9 -2021-09-11T11:00,91.7,12,31,0,0,5.3,15.7 -2021-09-11T12:00,94,10,28.4,0,0,4.7,16.3 -2021-09-11T13:00,94.8,9,27.1,0,0,3.2,15.4 -2021-09-11T14:00,96.4,9,28,0,0,4.6,12.8 -2021-09-11T15:00,89.8,15,36.6,0,0,13.2,25.9 -2021-09-11T16:00,91.7,11,30.5,0,0,8.4,24.2 -2021-09-11T17:00,86.1,22,42.5,0,0,4.3,16.3 -2021-09-11T18:00,81.9,27,44.8,0,0,6.1,12.3 -2021-09-11T19:00,77.8,34,47,0,0,3,10.1 -2021-09-11T20:00,73.6,38,46.6,0,0,3.9,9.8 -2021-09-11T21:00,73.8,35,44.2,0,0,4.5,9.6 -2021-09-11T22:00,72.5,37,45,0,0,4.5,7.8 -2021-09-11T23:00,70.2,42,46.3,0,0,2.7,5.6 -2021-09-12T00:00,67.1,45,45.2,0,0,4.3,4.9 -2021-09-12T01:00,64.9,45,42.8,0,0,5,6.7 -2021-09-12T02:00,63.9,45,42.4,0,0,4.5,6.5 -2021-09-12T03:00,62.6,48,42.8,0,0,4.5,6.5 -2021-09-12T04:00,60.2,54,43.3,0,0,4.4,5.4 -2021-09-12T05:00,58.9,54,42.2,0,0,4.6,6 -2021-09-12T06:00,58.8,53,41.6,0,0,4.4,7.8 -2021-09-12T07:00,63.8,45,42.3,0,0,4,9.4 -2021-09-12T08:00,68.5,40,43.3,0,0,1.4,8.5 -2021-09-12T09:00,75.9,30,41.9,0,0,3.4,10.3 -2021-09-12T10:00,78.5,28,42.9,0,0,6.5,16.1 -2021-09-12T11:00,80.8,27,43.4,0,0,6.7,16.6 -2021-09-12T12:00,84.4,23,42.3,0,0,5.2,16.6 -2021-09-12T13:00,85.3,20,40.2,0,0,4,14.8 -2021-09-12T14:00,86.2,18,38.1,0,0,4.9,13.4 -2021-09-12T15:00,84.2,21,40.6,0,0,9.9,20.8 -2021-09-12T16:00,83,22,40.7,0,0,3,19.5 -2021-09-12T17:00,76.5,37,48.2,0,0,6,9.2 -2021-09-12T18:00,75.1,39,48.4,0,0,3.7,10.3 -2021-09-12T19:00,72.4,44,49.5,0,0,3.9,7.2 -2021-09-12T20:00,69.2,50,49.9,0,0,2.4,6.7 -2021-09-12T21:00,66.6,56,50.3,0,0,4.4,6.7 -2021-09-12T22:00,64.7,60,50.4,0,0,3.9,7.2 -2021-09-12T23:00,63.1,64,50.7,0,0,4.3,6.9 -2021-09-13T00:00,61.5,68,50.7,0,0,4.1,6.9 -2021-09-13T01:00,61,63,48.3,0,0,3.8,7.2 -2021-09-13T02:00,59.9,61,46.2,0,0,3.6,6.3 -2021-09-13T03:00,59,59,44.7,0,0,3.9,6 -2021-09-13T04:00,57.5,57,42.4,0,0,4.1,6.7 -2021-09-13T05:00,57.4,58,42.8,0,0,4.2,7.2 -2021-09-13T06:00,56.8,58,42.3,0,0,4.1,6.3 -2021-09-13T07:00,64,44,41.5,0,0,2.6,6.3 -2021-09-13T08:00,66.3,48,46,0,0,18,30.4 -2021-09-13T09:00,72.3,38,45,0,0,8.5,30.6 -2021-09-13T10:00,74.7,33,43.3,0,0,4.2,18.8 -2021-09-13T11:00,77.8,29,43,0,0,7.1,16.8 -2021-09-13T12:00,80.2,26,42.4,0,0,4.7,17.2 -2021-09-13T13:00,82.4,24,41.9,0,0,2.7,14.3 -2021-09-13T14:00,83.9,22,41,0,0,4.2,12.8 -2021-09-13T15:00,83.8,21,40,0,0,2.9,12.8 -2021-09-13T16:00,84.4,20,38.7,0,0,2.3,10.1 -2021-09-13T17:00,82.6,22,40.5,0,0,3.8,8.3 -2021-09-13T18:00,77.4,28,42,0,0,5.1,10.3 -2021-09-13T19:00,72.1,41,47,0,0,15.1,23.5 -2021-09-13T20:00,68.4,51,49.4,0,0,5.6,24.8 -2021-09-13T21:00,66.5,57,50.5,0,0,4.2,9.4 -2021-09-13T22:00,63.8,64,51.4,0,0,4.3,7.8 -2021-09-13T23:00,63.1,65,51,0,0,2.7,5.4 -2021-09-14T00:00,60.6,75,52.6,0,0,3.7,5.6 -2021-09-14T01:00,59.3,78,52.3,0,0,3.2,4.9 -2021-09-14T02:00,58.1,82,52.7,0,0,3.3,4.9 -2021-09-14T03:00,56.2,86,52.1,0,0,3.8,7.6 -2021-09-14T04:00,55,88,51.5,0,0,2.2,6 -2021-09-14T05:00,55.1,80,48.9,0,0,2.6,4.5 -2021-09-14T06:00,54.2,83,49.1,0,0,6.1,8.5 -2021-09-14T07:00,60.4,63,47.8,0,0,5.9,12.3 -2021-09-14T08:00,67.4,46,45.8,0,0,6.7,13.4 -2021-09-14T09:00,74.5,33,43.6,0,0,10.8,20.8 -2021-09-14T10:00,79.1,26,41.5,0,0,3.8,20.6 -2021-09-14T11:00,81.7,21,38.3,0,0,7.2,15.9 -2021-09-14T12:00,80.8,23,39.8,0,0,11.5,23 -2021-09-14T13:00,81,23,40.1,0,0,6.5,23.7 -2021-09-14T14:00,77.7,27,41.1,0,0,11.5,23.5 -2021-09-14T15:00,78.3,27,41.5,0,0,10.9,22.4 -2021-09-14T16:00,76.2,31,43.4,0,0,9.7,22.6 -2021-09-14T17:00,73.9,39,47.2,0,0,5.3,18.8 -2021-09-14T18:00,70.9,43,47.6,0,0,3.7,10.5 -2021-09-14T19:00,67.5,51,48.8,0,0,5.7,8.9 -2021-09-14T20:00,65,60,50.8,0,0,6.7,12.1 -2021-09-14T21:00,62.2,69,51.9,0,0,3.2,11.6 -2021-09-14T22:00,60.6,72,51.6,0,0,2.2,4.7 -2021-09-14T23:00,58.7,74,50.5,0,0,2.7,5.6 -2021-09-15T00:00,56.5,76,49,0,0,1.4,4.5 -2021-09-15T01:00,54.7,72,45.9,0,0,2.8,5.1 -2021-09-15T02:00,53,68,42.7,0,0,3.9,4.9 -2021-09-15T03:00,52.3,63,39.9,0,0,4.3,5.6 -2021-09-15T04:00,51.9,59,38.2,0,0,3.8,5.6 -2021-09-15T05:00,52,59,38.3,0,0,5.5,5.1 -2021-09-15T06:00,51.6,56,36.5,0,0,3.5,6.7 -2021-09-15T07:00,57.4,46,36.8,0,0,3.7,8.1 -2021-09-15T08:00,66,37,38.8,0,0,2.2,8.1 -2021-09-15T09:00,74.1,27,38.2,0,0,2.7,9.8 -2021-09-15T10:00,81,18,33.4,0,0,4,12.1 -2021-09-15T11:00,84.7,14,30.6,0,0,3,13 -2021-09-15T12:00,86.5,13,30.4,0,0,2.2,11.6 -2021-09-15T13:00,88.1,12,30,0,0,2.7,11.4 -2021-09-15T14:00,89.2,12,29.3,0,0,5.1,13.6 -2021-09-15T15:00,89.3,11,28.5,0,0,5.4,14.3 -2021-09-15T16:00,88.8,11,28.1,0,0,5.3,13.6 -2021-09-15T17:00,86.6,12,27.3,0,0,8.4,12.5 -2021-09-15T18:00,79.7,16,28.8,0,0,5.3,14.1 -2021-09-15T19:00,73.3,22,32.6,0,0,5.6,8.3 -2021-09-15T20:00,75.4,21,32.9,0,0,1.8,6.7 -2021-09-15T21:00,71.9,25,34.2,0,0,2.7,2.7 -2021-09-15T22:00,64.6,35,36,0,0,5,6.5 -2021-09-15T23:00,62.9,36,35.4,0,0,4,6.3 -2021-09-16T00:00,61.3,36,33.9,0,0,4.4,7.2 -2021-09-16T01:00,59.5,37,33.3,0,0,4.3,7.2 -2021-09-16T02:00,58.3,39,33.5,0,0,4.3,6.7 -2021-09-16T03:00,56.8,39,32.1,0,0,4.3,6.7 -2021-09-16T04:00,55,39,30.5,0,0,4.3,6.5 -2021-09-16T05:00,54.1,39,29.5,0,0,6.3,6.3 -2021-09-16T06:00,53.2,40,29.6,0,0,5.1,7.6 -2021-09-16T07:00,59.5,31,28.9,0,0,4.5,8.9 -2021-09-16T08:00,68.4,25,30.8,0,0,3.4,9.4 -2021-09-16T09:00,78.2,16,28.6,0,0,2.9,9.8 -2021-09-16T10:00,85,9,20.3,0,0,4.2,12.1 -2021-09-16T11:00,87.9,8,20,0,0,6.1,15 -2021-09-16T12:00,89.7,9,22.1,0,0,5.9,16.1 -2021-09-16T13:00,91,8,21,0,0,4.1,15.4 -2021-09-16T14:00,91,7,19.9,0,0,0.2,13 -2021-09-16T15:00,90.6,8,20.6,0,0,8.7,15.4 -2021-09-16T16:00,85.6,11,24.7,0,0,18.8,31.5 -2021-09-16T17:00,86.4,11,26,0,0,8.7,31.5 -2021-09-16T18:00,80.4,17,31.3,0,0,7.1,14.8 -2021-09-16T19:00,74,21,31.4,0,0,5.1,11.9 -2021-09-16T20:00,71,25,33.5,0,0,4.3,8.5 -2021-09-16T21:00,69.7,28,34.9,0,0,6.3,9.2 -2021-09-16T22:00,66.6,29,33.1,0,0,5.9,13 -2021-09-16T23:00,69.1,24,30.8,0,0,0.3,7.8 -2021-09-17T00:00,65.9,25,29.3,0,0,10.7,16.1 -2021-09-17T01:00,63.1,38,37.2,0,0,13,23.7 -2021-09-17T02:00,60.8,46,40.1,0,0,13.2,22.6 -2021-09-17T03:00,59.3,51,41.3,0,0,10.5,22.1 -2021-09-17T04:00,57.6,56,42,0,0,11.6,18.8 -2021-09-17T05:00,50.5,65,39.4,0,0,10.3,20.1 -2021-09-17T06:00,49.9,65,38.8,0,0,8.6,17.7 -2021-09-17T07:00,50.3,62,37.9,0,0,6.8,15.4 -2021-09-17T08:00,51.4,58,37.3,0,0,4.6,13.6 -2021-09-17T09:00,53.2,55,37.6,0,0,1.8,11.9 -2021-09-17T10:00,55.8,51,37.9,0,0,2.1,10.7 -2021-09-17T11:00,59.9,45,38.3,0,0,2.7,12.3 -2021-09-17T12:00,63.4,40,38.8,0,0,2,12.5 -2021-09-17T13:00,67,36,39.1,0,0,1.3,11.6 -2021-09-17T14:00,69.9,33,39.4,0,0,1.8,10.5 -2021-09-17T15:00,71.2,32,39.6,0,0,2.2,10.5 -2021-09-17T16:00,71.7,31,39.7,0,0,2.2,10.3 -2021-09-17T17:00,71.3,33,40.8,0,0,4.1,8.9 -2021-09-17T18:00,68.2,38,41.3,0,0,5.8,9.4 -2021-09-17T19:00,65.2,43,41.9,0,0,6.1,11.2 -2021-09-17T20:00,63,47,42.5,0,0,3.9,10.1 -2021-09-17T21:00,60.9,52,43.2,0,0,4.2,6.3 -2021-09-17T22:00,58.9,56,43.3,0,0,4.8,5.6 -2021-09-17T23:00,60.4,53,43.3,0,0,2.8,6.3 -2021-09-18T00:00,57.4,60,43.6,0,0,2.1,3.4 -2021-09-18T01:00,53.4,68,43.1,0,0,2.8,4 -2021-09-18T02:00,51.3,72,42.7,0,0,3.3,4.5 -2021-09-18T03:00,49.2,78,42.5,0,0,3.1,4.5 -2021-09-18T04:00,48,80,42.1,0,0,3.3,4.3 -2021-09-18T05:00,48.3,69,38.7,0,0,4.7,5.6 -2021-09-18T06:00,48,60,34.7,0,0,4.1,6.7 -2021-09-18T07:00,54.9,42,31.9,0,0,3.4,7.4 -2021-09-18T08:00,64,30,32.3,0,0,1.2,7.4 -2021-09-18T09:00,73,22,31.5,0,0,2.5,9.4 -2021-09-18T10:00,80.4,13,26,0,0,3,10.7 -2021-09-18T11:00,84.7,9,20.8,0,0,2.6,11.2 -2021-09-18T12:00,87.4,9,21.7,0,0,3.9,12.8 -2021-09-18T13:00,89.5,10,25.6,0,0,4.3,13 -2021-09-18T14:00,91.3,10,26.3,0,0,3.2,13.2 -2021-09-18T15:00,91.1,10,26.2,0,0,7.7,14.8 -2021-09-18T16:00,89.6,10,26.2,0,0,9.9,19.7 -2021-09-18T17:00,86.3,13,30.1,0,0,17.1,18.3 -2021-09-18T18:00,81.4,16,30.7,0,0,11.3,28.4 -2021-09-18T19:00,78.2,17,29.9,0,0,7.2,18.8 -2021-09-18T20:00,71.1,25,33.2,0,0,5.8,11.9 -2021-09-18T21:00,67.7,30,35,0,0,3.8,7.6 -2021-09-18T22:00,65,36,37.2,0,0,4.5,6.7 -2021-09-18T23:00,62.3,42,39.2,0,0,4.4,8.9 -2021-09-19T00:00,63.2,41,38.9,0,0,4.7,8.3 -2021-09-19T01:00,65.8,37,38.5,0,0,6.4,9.4 -2021-09-19T02:00,65.1,39,39.5,0,0,5.4,12.5 -2021-09-19T03:00,64.9,41,40.3,0,0,6.7,10.3 -2021-09-19T04:00,63.8,44,41.5,0,0,5.4,18.3 -2021-09-19T05:00,61,48,41.4,0,0,3.2,8.7 -2021-09-19T06:00,59.4,53,42.4,0,0,3.8,5.4 -2021-09-19T07:00,63.5,46,42.3,0,0,6.2,11.4 -2021-09-19T08:00,72.5,32,41,0,0,7.6,14.3 -2021-09-19T09:00,78.4,22,36.1,0,0,12.2,22.4 -2021-09-19T10:00,79.4,23,38.1,0,0,8.4,23.9 -2021-09-19T11:00,83.5,18,35,0,0,1.7,18.6 -2021-09-19T12:00,85.7,16,34.3,0,0,5.3,14.3 -2021-09-19T13:00,86,16,34.9,0,0,6.7,17.4 -2021-09-19T14:00,86.4,15,34,0,0,5.4,16.8 -2021-09-19T15:00,87.4,14,33,0,0,8.8,18.8 -2021-09-19T16:00,87.6,14,32.2,0,0,7.6,18.3 -2021-09-19T17:00,82.7,18,34.2,0,0,6.5,23 -2021-09-19T18:00,76.7,21,34.3,0,0,5.1,10.7 -2021-09-19T19:00,74.6,25,36.1,0,0,5.1,11.2 -2021-09-19T20:00,71.9,28,37.1,0,0,2.6,7.8 -2021-09-19T21:00,67,34,37.7,0,0,5.4,8.9 -2021-09-19T22:00,63.1,42,39.7,0,0,3.5,8.7 -2021-09-19T23:00,61.5,47,41.2,0,0,4,6 -2021-09-20T00:00,59.5,51,41.3,0,0,4.6,5.1 -2021-09-20T01:00,59.8,52,42,0,0,14.3,28 -2021-09-20T02:00,58.7,47,38.8,0,0,8.3,23.3 -2021-09-20T03:00,56.2,50,37.6,0,0,3.5,13.9 -2021-09-20T04:00,55.1,51,37.3,0,0,5.7,9.2 -2021-09-20T05:00,51.7,56,36.5,0.004,0,3.4,10.5 -2021-09-20T06:00,51.5,56,36.3,0,0,5.2,6.9 -2021-09-20T07:00,55,47,35.3,0,0,5.2,12.3 -2021-09-20T08:00,59.9,28,26.6,0,0,16.5,28.2 -2021-09-20T09:00,61.2,25,25.2,0,0,12.4,29.8 -2021-09-20T10:00,62.2,26,26.9,0,0,9.3,23.7 -2021-09-20T11:00,64.3,25,27.7,0,0,11.4,23 -2021-09-20T12:00,66.4,21,25.3,0,0,11.4,24.4 -2021-09-20T13:00,68.1,18,23.2,0,0,9.3,23.7 -2021-09-20T14:00,68.9,17,22.5,0,0,9.1,20.6 -2021-09-20T15:00,69,17,22.1,0,0,8.1,19.9 -2021-09-20T16:00,68.6,17,21.7,0,0,7,17.7 -2021-09-20T17:00,64.4,19,21,0,0,8.9,15.2 -2021-09-20T18:00,60.9,22,22.2,0,0,9.1,16.6 -2021-09-20T19:00,60.4,27,26.2,0,0,6.4,15 -2021-09-20T20:00,57.7,41,34.3,0,0,14,22.6 -2021-09-20T21:00,54.6,49,35.8,0,0,9.9,24.6 -2021-09-20T22:00,51.4,62,38.7,0.012,0,10.8,18.8 -2021-09-20T23:00,49.6,72,40.7,0.031,0,7.9,18.3 -2021-09-21T00:00,48.4,72,39.9,0.004,0,4.9,13.6 -2021-09-21T01:00,47.8,74,40,0,0,3.5,8.9 -2021-09-21T02:00,47.3,78,40.9,0,0,4.9,8.9 -2021-09-21T03:00,46.3,84,41.7,0,0,2.1,8.7 -2021-09-21T04:00,45.7,85,41.4,0,0,3.2,4.9 -2021-09-21T05:00,46,73,38,0,0,4.6,8.5 -2021-09-21T06:00,44.7,79,38.5,0,0,2.9,8.3 -2021-09-21T07:00,47.3,72,38.8,0,0,4.8,9.8 -2021-09-21T08:00,51,53,34.5,0,0,4,11.6 -2021-09-21T09:00,53.4,40,29.8,0,0,3.3,11 -2021-09-21T10:00,55.9,34,27.6,0,0,3.4,12.5 -2021-09-21T11:00,58.6,29,26.2,0,0,3.6,13.4 -2021-09-21T12:00,61.7,25,25.2,0,0,5.4,15.4 -2021-09-21T13:00,63.1,23,25.1,0,0,5.4,16.3 -2021-09-21T14:00,64.3,22,24.8,0,0,4.3,15.7 -2021-09-21T15:00,65.2,21,24.2,0,0,4.1,13.6 -2021-09-21T16:00,64.8,20,22.5,0,0,6.7,14.5 -2021-09-21T17:00,63.1,22,24.1,0,0,5.1,15.2 -2021-09-21T18:00,58.6,28,25.3,0,0,4.6,10.1 -2021-09-21T19:00,56.9,28,24.3,0,0,4.3,6 -2021-09-21T20:00,55.8,28,23.5,0,0,4.5,7.2 -2021-09-21T21:00,52.9,31,23.3,0,0,4.9,7.2 -2021-09-21T22:00,51.5,34,24.1,0,0,4,5.8 -2021-09-21T23:00,48.8,41,26.3,0,0,3.8,6 -2021-09-22T00:00,46.2,51,29,0,0,3.3,5.1 -2021-09-22T01:00,45.1,57,30.7,0,0,2.9,4.9 -2021-09-22T02:00,45.7,55,30.5,0,0,0.4,3.6 -2021-09-22T03:00,44.2,58,30.1,0,0,1.4,1.8 -2021-09-22T04:00,41.5,66,31.1,0,0,3.3,4 -2021-09-22T05:00,41.3,69,31.7,0,0,2.8,4.9 -2021-09-22T06:00,40.2,72,31.8,0,0,3.5,5.4 -2021-09-22T07:00,46.4,56,31.7,0,0,3.7,8.1 -2021-09-22T08:00,55.7,41,32.4,0,0,3.5,9.4 -2021-09-22T09:00,64.8,25,27.9,0,0,5.2,13.2 -2021-09-22T10:00,70.2,16,22.4,0,0,4,13.4 -2021-09-22T11:00,73.7,14,21,0,0,4.6,13.6 -2021-09-22T12:00,76.4,12,20.8,0,0,5,14.3 -2021-09-22T13:00,78.3,12,20.8,0,0,5.5,15 -2021-09-22T14:00,79.4,11,20.6,0,0,6.9,16.3 -2021-09-22T15:00,79.5,11,20.8,0,0,7.9,17 -2021-09-22T16:00,78.3,12,20.9,0,0,8.1,17 -2021-09-22T17:00,76.8,12,21.3,0,0,6.4,16.1 -2021-09-22T18:00,67.8,19,23.8,0,0,6.5,9.8 -2021-09-22T19:00,64.4,21,24.1,0,0,6.7,8.5 -2021-09-22T20:00,65.3,20,23.1,0,0,5.3,8.1 -2021-09-22T21:00,58.4,28,25.3,0,0,5.5,7.8 -2021-09-22T22:00,54.4,36,28.3,0,0,3.5,6.9 -2021-09-22T23:00,52.8,40,29.1,0,0,4.4,7.4 -2021-09-23T00:00,51.3,41,28.4,0,0,4,7.4 -2021-09-23T01:00,50.5,38,26.1,0,0,3.7,6.5 -2021-09-23T02:00,49.6,37,24.6,0,0,5,6.7 -2021-09-23T03:00,49,38,24.5,0,0,5.7,7.4 -2021-09-23T04:00,47.9,39,24.3,0,0,6.2,7.6 -2021-09-23T05:00,46.7,39,22.9,0,0,6.2,8.1 -2021-09-23T06:00,47.4,37,22.6,0,0,5.4,7.8 -2021-09-23T07:00,56.1,28,23.5,0,0,4.2,7.2 -2021-09-23T08:00,64.2,21,23.8,0,0,1.3,7.2 -2021-09-23T09:00,70.9,17,23.9,0,0,3.4,10.1 -2021-09-23T10:00,75.9,13,22.4,0,0,4.6,12.8 -2021-09-23T11:00,79.5,11,21.3,0,0,5.6,15 -2021-09-23T12:00,81.6,11,20.9,0,0,5.1,15 -2021-09-23T13:00,82.3,10,20.6,0,0,6.8,15.9 -2021-09-23T14:00,82,11,21.5,0,0,7.2,16.8 -2021-09-23T15:00,81.9,11,21.7,0,0,4.7,16.1 -2021-09-23T16:00,81.3,11,21.6,0,0,4.7,12.5 -2021-09-23T17:00,78,13,23.6,0,0,9.1,15 -2021-09-23T18:00,72.1,18,25.8,0,0,5.4,15.2 -2021-09-23T19:00,70.2,19,25.9,0,0,4.5,8.7 -2021-09-23T20:00,68.1,22,27.7,0,0,4.8,7.2 -2021-09-23T21:00,67.3,23,28.4,0,0,6.1,8.9 -2021-09-23T22:00,64.7,26,28.8,0,0,6.7,11.6 -2021-09-23T23:00,62.1,29,29.6,0,0,4.8,10.5 -2021-09-24T00:00,60.8,32,30.6,0,0,4.6,7.6 -2021-09-24T01:00,60.1,33,31.1,0,0,4.3,5.6 -2021-09-24T02:00,55.7,40,31.5,0,0,2.2,5.1 -2021-09-24T03:00,53.2,44,31.6,0,0,1.8,4 -2021-09-24T04:00,50.1,51,32.8,0,0,2.2,3.8 -2021-09-24T05:00,49.7,55,34.1,0,0,4.4,3.4 -2021-09-24T06:00,51.6,50,33.5,0,0,2.3,5.4 -2021-09-24T07:00,54.4,46,34.2,0,0,4.5,6.9 -2021-09-24T08:00,58.4,41,34.9,0,0,9.5,17.9 -2021-09-24T09:00,60.7,39,35.3,0,0,8.8,20.4 -2021-09-24T10:00,63.5,34,34.9,0,0,6,18.8 -2021-09-24T11:00,66,31,34.5,0,0,4,15.7 -2021-09-24T12:00,68.9,28,34.3,0,0,4.8,14.3 -2021-09-24T13:00,71.1,26,34.2,0,0,4.1,14.5 -2021-09-24T14:00,72.5,24,34,0,0,4.2,13.4 -2021-09-24T15:00,73.1,24,34.2,0,0,5.8,14.3 -2021-09-24T16:00,72.3,25,34.7,0,0,6.7,14.8 -2021-09-24T17:00,71.1,26,34.1,0,0,4.7,14.3 -2021-09-24T18:00,66.2,31,34.9,0,0,4.1,8.7 -2021-09-24T19:00,64.1,35,35.7,0,0,4.3,8.1 -2021-09-24T20:00,64.5,35,36.5,0,0,2.8,6.7 -2021-09-24T21:00,64.1,36,36.4,0,0,1.6,3.4 -2021-09-24T22:00,61.2,40,36.4,0,0,3.3,3.8 -2021-09-24T23:00,55.1,50,36.8,0,0,3.3,5.4 -2021-09-25T00:00,52.3,58,37.8,0,0,2.6,4.9 -2021-09-25T01:00,49.8,65,38.7,0,0,2.8,4.3 -2021-09-25T02:00,49.1,65,37.9,0,0,1.9,3.6 -2021-09-25T03:00,48.6,61,35.7,0,0,3.2,5.1 -2021-09-25T04:00,47.8,60,34.5,0,0,3.3,5.4 -2021-09-25T05:00,48,57,33.4,0,0,3.3,5.4 -2021-09-25T06:00,47.5,58,33.6,0,0,3.9,6.3 -2021-09-25T07:00,52.5,50,34.3,0,0,5.1,9.6 -2021-09-25T08:00,62.2,37,35.2,0,0,3.8,10.1 -2021-09-25T09:00,71.7,24,33.2,0,0,4.2,11.4 -2021-09-25T10:00,77.5,16,28.3,0,0,4.1,12.1 -2021-09-25T11:00,80.6,14,27.2,0,0,3.3,12.8 -2021-09-25T12:00,82.8,13,27.1,0,0,4.1,13 -2021-09-25T13:00,84.4,12,26.7,0,0,4,13.4 -2021-09-25T14:00,85.7,12,26.3,0,0,4.3,13 -2021-09-25T15:00,86.6,11,25.8,0,0,6.1,13.9 -2021-09-25T16:00,85.8,11,25.3,0,0,7.8,15 -2021-09-25T17:00,82.3,13,27.4,0,0,3.1,16.6 -2021-09-25T18:00,79.5,13,24.9,0,0,5.8,6.9 -2021-09-25T19:00,77.5,14,25,0,0,4.3,6.9 -2021-09-25T20:00,66.3,24,28.9,0,0,5.9,8.5 -2021-09-25T21:00,61.4,31,30.6,0,0,3.8,7.6 -2021-09-25T22:00,60.2,29,27.8,0,0,5.8,9.4 -2021-09-25T23:00,59.3,27,25.2,0,0,5.6,9.6 -2021-09-26T00:00,58,28,24.9,0,0,5.1,9.4 -2021-09-26T01:00,56.4,29,24.9,0,0,4.8,8.3 -2021-09-26T02:00,54.6,31,24.5,0,0,4.7,7.8 -2021-09-26T03:00,54.7,33,26.2,0,0,6.2,9.8 -2021-09-26T04:00,53.8,36,27.1,0,0,5.8,10.7 -2021-09-26T05:00,51.7,41,28.9,0,0,6.2,9.4 -2021-09-26T06:00,50.6,42,28.2,0,0,6.5,8.3 -2021-09-26T07:00,58.1,33,29,0,0,6.1,9.4 -2021-09-26T08:00,66.2,27,31.3,0,0,6.4,12.8 -2021-09-26T09:00,75.9,18,28.8,0,0,5.6,14.5 -2021-09-26T10:00,80.2,14,27.1,0,0,1.3,13.2 -2021-09-26T11:00,83,12,25.1,0,0,5,13.6 -2021-09-26T12:00,85.4,11,24.3,0,0,5.9,15 -2021-09-26T13:00,87,10,23.2,0,0,7.4,17 -2021-09-26T14:00,87.4,10,23.5,0,0,7.9,17.7 -2021-09-26T15:00,87.2,10,23.8,0,0,8.1,17.4 -2021-09-26T16:00,85.9,11,24.4,0,0,8.9,16.8 -2021-09-26T17:00,83.3,12,25.8,0,0,4.9,16.3 -2021-09-26T18:00,74.9,16,25.3,0,0,5.7,8.7 -2021-09-26T19:00,75,16,26,0,0,6.1,9.6 -2021-09-26T20:00,71.4,19,26.8,0,0,2.8,7.4 -2021-09-26T21:00,66.1,24,27.8,0,0,4.3,6.7 -2021-09-26T22:00,61,30,29.6,0,0,2.6,6.3 -2021-09-26T23:00,57.5,37,31.6,0,0,2.1,4.5 -2021-09-27T00:00,57.4,40,33.4,0,0,1.7,3.8 -2021-09-27T01:00,59,37,32.9,0,0,2,2.5 -2021-09-27T02:00,54.5,44,33.1,0,0,3.5,3.4 -2021-09-27T03:00,53.7,42,30.9,0,0,3.5,5.1 -2021-09-27T04:00,52.7,40,29.1,0,0,4.2,5.8 -2021-09-27T05:00,55.9,34,28,0,0,4.1,6.9 -2021-09-27T06:00,53.9,38,28.9,0,0,4,4.7 -2021-09-27T07:00,57.3,35,30.2,0,0,3.8,7.2 -2021-09-27T08:00,65.5,28,31.7,0,0,1.6,7.6 -2021-09-27T09:00,73.9,19,29.4,0,0,0.9,7.6 -2021-09-27T10:00,79.3,15,28.3,0,0,2.7,10.1 -2021-09-27T11:00,82.9,14,28.3,0,0,4.5,13.2 -2021-09-27T12:00,85.3,13,28.9,0,0,4.2,13.4 -2021-09-27T13:00,86.6,13,29.1,0,0,4.7,14.8 -2021-09-27T14:00,87.1,11,27.1,0,0,6,15 -2021-09-27T15:00,87.3,11,26.5,0,0,8,16.6 -2021-09-27T16:00,84.9,12,26.9,0,0,10.6,19.5 -2021-09-27T17:00,83.1,13,26.9,0,0,4.5,18.8 -2021-09-27T18:00,77,18,29.6,0,0,3.6,7.4 -2021-09-27T19:00,72.6,19,27.9,0,0,5.4,9.8 -2021-09-27T20:00,69.8,24,31,0,0,4.5,9.2 -2021-09-27T21:00,64.9,31,33.6,0,0,6.3,7.6 -2021-09-27T22:00,65.1,32,34.4,0,0,4.1,7.6 -2021-09-27T23:00,61.9,38,35.9,0,0,3.4,5.4 -2021-09-28T00:00,59.3,43,36.9,0,0,3.1,4.9 -2021-09-28T01:00,56.6,49,37.4,0,0,3.2,5.1 -2021-09-28T02:00,55.9,47,36,0,0,2.6,4.5 -2021-09-28T03:00,55,50,36.4,0,0,3.6,5.4 -2021-09-28T04:00,56.4,44,35,0,0,4.5,8.5 -2021-09-28T05:00,58.4,46,37.6,0,0,5.1,7.8 -2021-09-28T06:00,57.7,48,38,0,0,4.7,10.1 -2021-09-28T07:00,60.8,44,38.8,0,0,6.4,12.1 -2021-09-28T08:00,64.8,40,39.8,0,0,0.9,13.4 -2021-09-28T09:00,71.2,32,40.1,0,0,4.1,11 -2021-09-28T10:00,75,26,37.8,0,0,5.3,14.5 -2021-09-28T11:00,77.3,24,37.3,0,0,4.8,15.7 -2021-09-28T12:00,79,22,36.7,0,0,5.1,16.3 -2021-09-28T13:00,81.2,18,33.4,0,0,6.5,16.6 -2021-09-28T14:00,82.4,16,31.7,0,0,8.1,17.4 -2021-09-28T15:00,74.9,26,37.9,0,0,17.6,32.2 -2021-09-28T16:00,76.7,22,34.5,0,0,7.6,30.6 -2021-09-28T17:00,72.3,28,37.5,0,0,11.3,15 -2021-09-28T18:00,68.9,32,37.5,0,0,8.4,18.8 -2021-09-28T19:00,66.4,36,38.5,0,0,6.8,13.6 -2021-09-28T20:00,64.9,39,39.3,0,0,9,13.9 -2021-09-28T21:00,64.8,38,38.3,0,0,12.1,19.7 -2021-09-28T22:00,63.7,41,39.6,0,0,11.1,20.6 -2021-09-28T23:00,60.6,47,40.5,0,0,5.5,18.6 -2021-09-29T00:00,62.2,45,40.5,0,0,4.4,8.5 -2021-09-29T01:00,57.2,55,41.1,0,0,6.5,7.8 -2021-09-29T02:00,58.4,52,40.6,0,0,4.7,7.8 -2021-09-29T03:00,58.1,51,40.1,0,0,5,8.5 -2021-09-29T04:00,56.9,53,40.1,0,0,6,8.1 -2021-09-29T05:00,58.5,53,41.5,0,0,3.5,7.8 -2021-09-29T06:00,54.5,60,41,0,0,5,5.8 -2021-09-29T07:00,59,52,41.5,0,0,7.5,11.6 -2021-09-29T08:00,62.4,45,41,0,0,7.3,13.2 -2021-09-29T09:00,65.1,40,40.5,0,0,8.4,17.9 -2021-09-29T10:00,66.8,38,40.6,0,0,7.2,17.4 -2021-09-29T11:00,68.7,36,40.6,0,0,5.2,16.8 -2021-09-29T12:00,71.2,33,40.2,0,0,4.3,14.8 -2021-09-29T13:00,72.1,31,39.8,0,0,7.3,16.8 -2021-09-29T14:00,71.4,31,39.4,0,0,9.5,20.6 -2021-09-29T15:00,69.7,33,39.3,0,0,10.1,20.1 -2021-09-29T16:00,60.2,69,50,0.067,0,16.5,27.1 -2021-09-29T17:00,53,80,47,0.071,0,11.2,28.4 -2021-09-29T18:00,51.6,73,43.3,0,0,9.4,19.9 -2021-09-29T19:00,51.4,72,42.7,0,0,9.7,16.6 -2021-09-29T20:00,50.9,70,41.5,0,0,11.4,19.2 -2021-09-29T21:00,48.7,61,36,0,0,10.3,20.1 -2021-09-29T22:00,47.6,63,35.7,0,0,7,17.9 -2021-09-29T23:00,47,65,35.8,0,0,4.3,13 -2021-09-30T00:00,46.8,68,36.8,0.004,0,3.6,9.2 -2021-09-30T01:00,47.2,71,38.4,0,0,4.6,8.9 -2021-09-30T02:00,47.3,74,39.5,0.004,0,3.8,8.9 -2021-09-30T03:00,47.1,78,40.6,0.008,0,6.5,11.4 -2021-09-30T04:00,46.2,79,40,0,0,7.1,12.1 -2021-09-30T05:00,45.2,81,39.7,0,0,5.6,11.4 -2021-09-30T06:00,44.3,84,39.9,0.016,0,2.5,9.6 -2021-09-30T07:00,45.8,78,39.2,0,0,3.6,7.4 -2021-09-30T08:00,47,71,38.2,0,0,6.1,12.8 -2021-09-30T09:00,48.8,65,37.7,0,0,5.6,13 -2021-09-30T10:00,51.1,59,37.3,0,0,5.3,13.4 -2021-09-30T11:00,53.4,54,37.2,0,0,4.1,13.6 -2021-09-30T12:00,55,51,37.4,0,0,2.3,12.3 -2021-09-30T13:00,57.7,47,37.6,0,0,0.7,10.5 -2021-09-30T14:00,59.5,44,37.5,0,0,0.7,8.7 -2021-09-30T15:00,60.6,42,37.4,0,0,0.9,8.3 -2021-09-30T16:00,60.4,42,37.2,0,0,2.9,8.3 -2021-09-30T17:00,53.5,56,38.4,0,0,4.4,10.3 -2021-09-30T18:00,53.6,57,38.7,0,0,3.2,9.2 -2021-09-30T19:00,54,56,38.8,0,0,3,6.7 -2021-09-30T20:00,54.1,56,38.9,0,0,2.9,6.3 -2021-09-30T21:00,54.1,57,39.2,0,0,3.1,6.3 -2021-09-30T22:00,54.1,58,39.6,0,0,3.3,6.3 -2021-09-30T23:00,53.4,60,40,0,0,5.4,8.7 -2021-10-01T00:00,52.9,62,40.1,0,0,4.5,8.9 -2021-10-01T01:00,52.1,64,40.3,0,0,3.5,7.4 -2021-10-01T02:00,51.1,68,40.9,0,0,4.3,7.2 -2021-10-01T03:00,49.4,73,41.2,0,0,4.3,7.2 -2021-10-01T04:00,48.6,77,41.6,0,0,2.9,6.9 -2021-10-01T05:00,48.3,77,41.5,0,0,2,4.7 -2021-10-01T06:00,46.5,83,41.6,0,0,2.6,3.6 -2021-10-01T07:00,49.4,76,42.2,0,0,3.4,7.2 -2021-10-01T08:00,52.6,65,41,0,0,3.6,9.8 -2021-10-01T09:00,56.6,55,40.6,0,0,4,11.6 -2021-10-01T10:00,60.3,48,40.6,0,0,4.7,13.2 -2021-10-01T11:00,64.2,42,40.6,0,0,4.3,13.6 -2021-10-01T12:00,67.1,37,39.9,0,0,4.7,14.8 -2021-10-01T13:00,68.6,35,39.6,0,0,4.2,14.8 -2021-10-01T14:00,69.2,34,39.3,0,0,5.2,13.9 -2021-10-01T15:00,70,32,39,0,0,6.9,15.2 -2021-10-01T16:00,67.6,35,38.8,0,0,4.5,15.2 -2021-10-01T17:00,65.6,38,39.2,0.012,0,6.5,19.9 -2021-10-01T18:00,62.9,45,41.2,0,0,3.9,11.4 -2021-10-01T19:00,60.1,52,42.4,0,0,3.2,6.5 -2021-10-01T20:00,58.7,55,42.5,0,0,3.5,5.8 -2021-10-01T21:00,56.6,59,42.4,0,0,3.4,4.3 -2021-10-01T22:00,55.8,62,42.8,0,0,1.4,4 -2021-10-01T23:00,51.6,73,43.3,0,0,2.3,2.9 -2021-10-02T00:00,50.8,72,42.1,0,0,3,5.1 -2021-10-02T01:00,50.1,69,40.2,0,0,2.8,5.1 -2021-10-02T02:00,49.1,68,39.1,0,0,3.4,4.9 -2021-10-02T03:00,48.6,69,38.8,0,0,3.5,4.7 -2021-10-02T04:00,50.5,67,39.8,0,0,2.8,4 -2021-10-02T05:00,46.8,82,41.5,0,0,4.7,4 -2021-10-02T06:00,46.1,81,40.6,0,0,4.2,6.3 -2021-10-02T07:00,50.2,70,40.7,0,0,2,5.4 -2021-10-02T08:00,56.3,54,40,0,0,1.8,6.7 -2021-10-02T09:00,60.7,44,38.8,0,0,6.3,14.1 -2021-10-02T10:00,63.6,39,37.9,0,0,7.4,16.8 -2021-10-02T11:00,65.8,36,38.2,0,0,6.2,16.8 -2021-10-02T12:00,67.6,34,37.9,0,0,5.6,15.9 -2021-10-02T13:00,69,30,35.9,0,0,5.3,15.2 -2021-10-02T14:00,69.8,26,33.2,0,0,6.3,15.4 -2021-10-02T15:00,69.8,24,31,0,0,6.9,15.4 -2021-10-02T16:00,68.8,23,29.4,0,0,6.2,15.2 -2021-10-02T17:00,67,30,34.4,0,0,6.7,12.8 -2021-10-02T18:00,61.5,51,43.3,0,0,11.9,19.5 -2021-10-02T19:00,58.8,55,42.7,0,0,7.6,19.5 -2021-10-02T20:00,56.3,61,43.2,0,0,3.7,12.3 -2021-10-02T21:00,53,72,44.1,0,0,4.9,5.8 -2021-10-02T22:00,52.7,72,44.1,0,0,2.7,5.8 -2021-10-02T23:00,49.7,82,44.4,0,0,2.8,3.6 -2021-10-03T00:00,48.6,83,43.7,0,0,3.2,4.9 -2021-10-03T01:00,47.3,81,41.7,0,0,3.7,5.4 -2021-10-03T02:00,46.5,81,41,0,0,3.4,5.6 -2021-10-03T03:00,45.8,81,40.4,0,0,3.6,5.8 -2021-10-03T04:00,44.8,82,39.5,0,0,3.5,6 -2021-10-03T05:00,43.9,76,37,0,0,3.7,5.8 -2021-10-03T06:00,43.7,72,35.2,0,0,4.2,6.3 -2021-10-03T07:00,49.6,55,33.9,0,0,5.6,9.4 -2021-10-03T08:00,58,40,34.1,0,0,3,9.4 -2021-10-03T09:00,65.7,30,33.2,0,0,0.5,8.7 -2021-10-03T10:00,70.8,21,29.5,0,0,2.2,9.6 -2021-10-03T11:00,73.2,17,26.1,0,0,3,11.2 -2021-10-03T12:00,74.6,15,23.4,0,0,3.7,12.5 -2021-10-03T13:00,75.2,14,23.1,0,0,3.4,12.5 -2021-10-03T14:00,75.8,14,22.8,0,0,6.2,15.2 -2021-10-03T15:00,76.3,13,22.6,0,0,3.5,15 -2021-10-03T16:00,75.7,14,22.7,0,0,2.6,10.5 -2021-10-03T17:00,72.1,20,29.2,0,0,3,7.8 -2021-10-03T18:00,65,27,30.6,0,0,4.8,7.2 -2021-10-03T19:00,60,35,32.3,0,0,4.7,5.8 -2021-10-03T20:00,57.4,40,33,0,0,5.5,8.9 -2021-10-03T21:00,55,44,33.3,0,0,4.9,9.2 -2021-10-03T22:00,53.2,46,32.9,0,0,4,7.8 -2021-10-03T23:00,53.7,44,32.2,0,0,3.4,6.5 -2021-10-04T00:00,49.8,50,32,0,0,5.4,6.5 -2021-10-04T01:00,50.3,45,29.8,0,0,5.5,6.9 -2021-10-04T02:00,48.6,47,29,0,0,6,7.2 -2021-10-04T03:00,47.3,49,28.9,0,0,6.5,7.8 -2021-10-04T04:00,46.5,50,29,0,0,5.8,7.8 -2021-10-04T05:00,45.4,59,32,0,0,4,7.6 -2021-10-04T06:00,44.2,62,31.9,0,0,4.1,6.5 -2021-10-04T07:00,49,52,32.2,0,0,5.4,9.2 -2021-10-04T08:00,57.4,40,33.3,0,0,3.4,9.6 -2021-10-04T09:00,66.8,28,32.3,0,0,3.5,10.3 -2021-10-04T10:00,72.6,19,28.5,0,0,1.7,10.5 -2021-10-04T11:00,75.5,17,28,0,0,2.2,10.3 -2021-10-04T12:00,77.2,16,27.2,0,0,2.6,11.2 -2021-10-04T13:00,78.1,15,26.1,0,0,1.6,11 -2021-10-04T14:00,78.6,13,24.4,0,0,2.1,9.6 -2021-10-04T15:00,78.8,13,23.4,0,0,2,9.6 -2021-10-04T16:00,78.5,13,23.6,0,0,2.4,8.7 -2021-10-04T17:00,74.8,24,35.8,0,0,4.6,7.2 -2021-10-04T18:00,67.3,21,26.2,0,0,6.7,8.9 -2021-10-04T19:00,66.6,21,25,0,0,6.1,9.4 -2021-10-04T20:00,67.2,19,23.7,0,0,1.4,7.6 -2021-10-04T21:00,64.5,22,25.3,0,0,3.3,3.6 -2021-10-04T22:00,56,35,28.9,0,0,3.8,7.6 -2021-10-04T23:00,52.9,45,32.1,0,0,4.8,8.1 -2021-10-05T00:00,50.3,51,32.7,0,0,4.2,7.8 -2021-10-05T01:00,48.9,54,33,0,0,3.4,6.9 -2021-10-05T02:00,48,57,33.4,0,0,3.5,5.4 -2021-10-05T03:00,46.9,59,33.2,0,0,3.4,5.4 -2021-10-05T04:00,45.7,62,33.4,0,0,3.5,4.9 -2021-10-05T05:00,46.3,61,33.5,0,0,2.9,4.7 -2021-10-05T06:00,45.1,64,33.7,0,0,1.9,3.6 -2021-10-05T07:00,48.5,59,34.7,0,0,1.3,4.5 -2021-10-05T08:00,55.9,42,32.9,0,0,2.4,7.6 -2021-10-05T09:00,61.8,31,30.7,0,0,2.3,9.6 -2021-10-05T10:00,67.6,24,29.8,0,0,2.2,10.1 -2021-10-05T11:00,72.5,21,30.1,0,0,3.3,11.9 -2021-10-05T12:00,76.8,18,30.7,0,0,4.4,13.2 -2021-10-05T13:00,80,17,31.1,0,0,6,15.2 -2021-10-05T14:00,81.5,15,29.5,0,0,4.3,15.4 -2021-10-05T15:00,81.4,14,28.1,0,0,1.6,12.3 -2021-10-05T16:00,80.3,15,28.8,0,0,8.5,14.5 -2021-10-05T17:00,75.3,19,29.8,0,0,10.2,21.9 -2021-10-05T18:00,69.6,24,30.8,0,0,8.1,16.8 -2021-10-05T19:00,67.1,26,31.3,0,0,9.9,15.7 -2021-10-05T20:00,64.9,29,32.1,0,0,12.5,20.6 -2021-10-05T21:00,62.7,33,33.1,0,0,11.8,20.6 -2021-10-05T22:00,61.3,36,34,0,0,12.4,20.6 -2021-10-05T23:00,59.8,38,34.4,0,0,10.1,20.6 -2021-10-06T00:00,57.6,43,35,0,0,6.5,16.8 -2021-10-06T01:00,55.8,47,35.7,0,0,5.1,10.7 -2021-10-06T02:00,54.1,51,36.2,0,0,4.6,8.5 -2021-10-06T03:00,50.8,59,37,0,0,4.8,7.2 -2021-10-06T04:00,49.7,61,36.8,0,0,5.1,6.5 -2021-10-06T05:00,50.6,60,37.1,0,0,1.8,6.3 -2021-10-06T06:00,49,63,37,0,0,2.1,2.9 -2021-10-06T07:00,51.8,58,37.5,0,0,1.9,4.7 -2021-10-06T08:00,59,44,37.1,0,0,2.7,7.6 -2021-10-06T09:00,67.1,33,37.4,0,0,3.7,10.7 -2021-10-06T10:00,75.1,25,37,0,0,5.7,13.4 -2021-10-06T11:00,79.3,21,35.6,0,0,13,23.7 -2021-10-06T12:00,80.5,20,35.4,0,0,16.3,30 -2021-10-06T13:00,80.9,19,35.2,0,0,15.3,30.4 -2021-10-06T14:00,82,17,33.1,0,0,10.7,28.6 -2021-10-06T15:00,76,26,39,0,0,13.1,23 -2021-10-06T16:00,75.7,25,37.5,0,0,7.8,23.7 -2021-10-06T17:00,72.5,33,42,0,0,7.9,15.4 -2021-10-06T18:00,67.3,37,40.4,0,0,5.5,13 -2021-10-06T19:00,64.7,39,39.2,0,0,4,8.7 -2021-10-06T20:00,63.3,34,34.8,0,0,4.9,7.6 -2021-10-06T21:00,62.5,31,31.4,0,0,6.2,8.9 -2021-10-06T22:00,64.7,27,29.8,0,0,1.6,7.6 -2021-10-06T23:00,63.3,32,32.7,0,0,0.8,2.2 -2021-10-07T00:00,56.9,41,33.4,0,0,3.3,3.8 -2021-10-07T01:00,54.7,44,33.2,0,0,3.2,5.4 -2021-10-07T02:00,51.8,49,33,0,0,5.5,8.5 -2021-10-07T03:00,50.4,49,32,0,0,4.5,8.5 -2021-10-07T04:00,48.2,55,33,0,0,6.1,7.4 -2021-10-07T05:00,48.5,65,37.1,0,0,4.9,7.2 -2021-10-07T06:00,45.7,71,37,0,0,3.5,5.6 -2021-10-07T07:00,50,59,36.4,0,0,4.8,8.1 -2021-10-07T08:00,56,46,35.5,0,0,5.2,11 -2021-10-07T09:00,59.7,38,33.8,0,0,5.7,11.4 -2021-10-07T10:00,68.2,25,31.2,0,0,6.2,14.8 -2021-10-07T11:00,71.5,21,29.3,0,0,4.1,14.8 -2021-10-07T12:00,73.9,18,28.4,0,0,2.6,12.8 -2021-10-07T13:00,75.9,17,28.3,0,0,4.3,12.8 -2021-10-07T14:00,76.6,17,28.4,0,0,6,14.5 -2021-10-07T15:00,76,18,28.8,0,0,4.6,14.5 -2021-10-07T16:00,75.6,18,29.1,0,0,4.6,11.6 -2021-10-07T17:00,72.1,23,32.4,0,0,4.2,9.8 -2021-10-07T18:00,68.5,27,33.1,0,0,5.9,9.2 -2021-10-07T19:00,66.9,30,34.3,0,0,4,11.2 -2021-10-07T20:00,61.7,41,37.9,0,0,4.5,7.2 -2021-10-07T21:00,59.1,51,41.2,0,0,5.3,9.4 -2021-10-07T22:00,56.7,57,41.5,0,0,4.3,8.9 -2021-10-07T23:00,55.5,55,39.7,0,0,5.3,8.7 -2021-10-08T00:00,53.5,57,38.6,0,0,4.4,8.9 -2021-10-08T01:00,51.9,59,38,0,0,4.1,7.6 -2021-10-08T02:00,50.5,60,37.2,0,0,3.7,6.7 -2021-10-08T03:00,49,62,36.5,0,0,4.6,6 -2021-10-08T04:00,48.3,62,35.7,0,0,4.1,5.4 -2021-10-08T05:00,47.9,62,35.6,0,0,3.9,5.8 -2021-10-08T06:00,46.7,64,35.1,0,0,4.4,5.8 -2021-10-08T07:00,51.1,55,35.3,0,0,4.4,7.4 -2021-10-08T08:00,57.7,44,36,0,0,2.1,8.7 -2021-10-08T09:00,63.4,35,35.5,0,0,3.3,9.4 -2021-10-08T10:00,70.7,26,34.2,0,0,4.7,12.5 -2021-10-08T11:00,74.2,21,32.1,0,0,5.4,13.9 -2021-10-08T12:00,76.4,17,28.9,0,0,5.4,14.1 -2021-10-08T13:00,77.7,15,27.1,0,0,5.5,13.9 -2021-10-08T14:00,80,16,30.3,0,0,9.4,16.1 -2021-10-08T15:00,73.2,28,37.8,0.008,0,14.1,23.7 -2021-10-08T16:00,68.5,39,42.7,0.008,0,12,26.2 -2021-10-08T17:00,69.5,27,33.7,0,0,9.2,19.7 -2021-10-08T18:00,64.3,38,37.9,0,0,9.1,20.8 -2021-10-08T19:00,62.1,40,37.6,0,0,5.1,14.8 -2021-10-08T20:00,61,41,37,0,0,3.3,8.7 -2021-10-08T21:00,58.2,46,37.7,0,0,3.5,6 -2021-10-08T22:00,54.6,55,38.8,0,0,4.9,6.7 -2021-10-08T23:00,52.8,59,38.8,0,0,4.3,6.7 -2021-10-09T00:00,51.5,61,38.4,0,0,4.2,6.3 -2021-10-09T01:00,50.8,61,38,0,0,5,6.9 -2021-10-09T02:00,53,54,36.8,0,0,5.9,9.4 -2021-10-09T03:00,53.7,52,36.6,0,0,6.9,11.2 -2021-10-09T04:00,54.3,52,37,0,0,8.1,13.2 -2021-10-09T05:00,48.8,72,40.2,0,0,2.8,14.3 -2021-10-09T06:00,51.4,66,40.5,0,0,3.7,3.8 -2021-10-09T07:00,52.5,64,40.6,0,0,4.7,8.1 -2021-10-09T08:00,59.5,48,39.6,0,0,2.9,8.7 -2021-10-09T09:00,65.8,28,31.6,0,0,15.2,25.1 -2021-10-09T10:00,67.8,19,23.5,0,0,22.2,38.7 -2021-10-09T11:00,69.7,16,21.7,0,0,21,39.6 -2021-10-09T12:00,71.8,16,22.9,0,0,13.1,37.6 -2021-10-09T13:00,72.7,15,22.7,0,0,8.1,25.5 -2021-10-09T14:00,73.8,12,17.6,0,0,9.6,19.5 -2021-10-09T15:00,71.8,12,17.1,0,0,12.6,23.7 -2021-10-09T16:00,69.8,14,17.6,0,0,14.1,24.4 -2021-10-09T17:00,63.9,22,23.9,0,0,15,29.1 -2021-10-09T18:00,60.8,24,24.1,0,0,10.9,25.3 -2021-10-09T19:00,58.4,28,25.8,0,0,11.2,18.8 -2021-10-09T20:00,56.7,33,28,0,0,11.4,19.7 -2021-10-09T21:00,54.1,41,30.9,0,0,7.1,19 -2021-10-09T22:00,52.3,45,31.5,0,0,6.7,12.3 -2021-10-09T23:00,51.7,41,29,0,0,6.3,11.2 -2021-10-10T00:00,50,44,28.7,0,0,4.9,10.7 -2021-10-10T01:00,47.3,49,29.2,0,0,5.8,8.1 -2021-10-10T02:00,49.6,45,29.2,0,0,1.4,7.2 -2021-10-10T03:00,44.3,57,29.8,0,0,3.8,4.3 -2021-10-10T04:00,44.1,56,29.6,0,0,4.2,6.3 -2021-10-10T05:00,43.1,63,31.3,0,0,3.6,8.7 -2021-10-10T06:00,43.3,60,30.3,0,0,4.7,7.6 -2021-10-10T07:00,47.3,51,29.9,0,0,4.8,7.4 -2021-10-10T08:00,52.7,42,30,0,0,1.4,7.8 -2021-10-10T09:00,56.6,35,29,0,0,2.9,9.6 -2021-10-10T10:00,59.6,30,28.3,0,0,5.1,13.9 -2021-10-10T11:00,61.8,27,27.3,0,0,1.6,14.1 -2021-10-10T12:00,63.9,25,27,0,0,2.3,10.7 -2021-10-10T13:00,66.1,22,25.6,0,0,4.8,13.4 -2021-10-10T14:00,66.9,19,23.5,0,0,7.3,16.3 -2021-10-10T15:00,67.5,18,23.1,0,0,8.3,17.4 -2021-10-10T16:00,66.2,20,23.4,0,0,8.5,17.4 -2021-10-10T17:00,62.2,25,26.2,0,0,6.6,16.1 -2021-10-10T18:00,58.6,30,27,0,0,12.8,20.1 -2021-10-10T19:00,56,34,27.7,0,0,13.8,23.7 -2021-10-10T20:00,54.7,35,27.9,0,0,13.4,23 -2021-10-10T21:00,53.5,36,27.5,0,0,13,22.4 -2021-10-10T22:00,52.3,37,26.4,0,0,8.4,21.3 -2021-10-10T23:00,48,42,26.2,0,0,6.6,13.9 -2021-10-11T00:00,46.7,44,26.2,0,0,6.2,8.1 -2021-10-11T01:00,44.9,50,27.1,0,0,5.9,7.6 -2021-10-11T02:00,43.9,54,28.4,0,0,4.2,7.2 -2021-10-11T03:00,43.3,56,28.8,0,0,4.8,7.6 -2021-10-11T04:00,42.4,57,28.1,0,0,4.9,8.3 -2021-10-11T05:00,41,59,27.9,0,0,3.7,8.3 -2021-10-11T06:00,39.7,65,29,0,0,4,6.7 -2021-10-11T07:00,42.3,60,29.5,0,0,5.3,9.4 -2021-10-11T08:00,49,46,28.9,0,0,4.4,10.7 -2021-10-11T09:00,57,32,27.8,0,0,5.8,13 -2021-10-11T10:00,62,28,28,0,0,9.6,19.7 -2021-10-11T11:00,65.7,23,26.5,0,0,10.6,21.7 -2021-10-11T12:00,67.9,19,24.5,0,0,10.6,21.9 -2021-10-11T13:00,69.2,19,25,0,0,12.1,23.5 -2021-10-11T14:00,69.5,18,24.8,0,0,12.5,23.9 -2021-10-11T15:00,68.6,18,23.7,0,0,14.2,25.5 -2021-10-11T16:00,67,20,24.6,0,0,17.5,29.3 -2021-10-11T17:00,64.4,22,25,0,0,15.8,30.6 -2021-10-11T18:00,61.9,26,26.2,0,0,14.7,26.6 -2021-10-11T19:00,59.6,29,27.2,0,0,10.5,24.4 -2021-10-11T20:00,57.2,34,28.9,0,0,7.2,17.4 -2021-10-11T21:00,52.6,42,29.9,0,0,4.4,11.9 -2021-10-11T22:00,51.1,44,30,0,0,1.9,6.5 -2021-10-11T23:00,50.7,45,30.4,0,0,3.7,5.8 -2021-10-12T00:00,49.2,50,31.1,0,0,6.2,9.6 -2021-10-12T01:00,48.4,56,33.5,0,0,8.6,14.3 -2021-10-12T02:00,47.5,59,34,0,0,7.7,14.1 -2021-10-12T03:00,46.7,58,32.8,0,0,7.4,13.4 -2021-10-12T04:00,44.4,63,32.5,0,0,4.7,12.1 -2021-10-12T05:00,43.9,67,33.6,0,0,10.1,7.8 -2021-10-12T06:00,43,71,34.1,0,0,8.8,16.1 -2021-10-12T07:00,44,68,34.3,0,0,8.7,15 -2021-10-12T08:00,46,64,34.4,0,0,9.8,17.9 -2021-10-12T09:00,48.7,57,34.3,0,0,8.8,19 -2021-10-12T10:00,52.1,49,33.4,0,0,4.2,17.4 -2021-10-12T11:00,54.3,44,33,0,0,2.1,12.3 -2021-10-12T12:00,56.8,40,32.5,0,0,5.4,14.3 -2021-10-12T13:00,59.2,37,32.6,0,0,1,15.7 -2021-10-12T14:00,54.9,53,38,0.02,0,12,25.3 -2021-10-12T15:00,59,31,28.4,0,0,8.4,21.7 -2021-10-12T16:00,57.7,18,14.7,0,0,13.4,24.6 -2021-10-12T17:00,46.8,65,35.5,0,0,5.4,27.3 -2021-10-12T18:00,44.9,71,36.1,0,0,11.9,19.2 -2021-10-12T19:00,42.2,89,39.2,0.008,0,7.5,22.1 -2021-10-12T20:00,39.6,89,36.5,0,0,15.3,24.6 -2021-10-12T21:00,36.3,91,34,0,0,11.5,24.8 -2021-10-12T22:00,36.4,90,33.6,0,0,4.6,18.6 -2021-10-12T23:00,36,90,33.4,0,0,4.9,8.7 -2021-10-13T00:00,35.3,88,32.3,0,0,4.5,8.3 -2021-10-13T01:00,34.6,91,32.4,0,0,2.9,7.6 -2021-10-13T02:00,33.9,93,32.2,0,0,3.4,5.8 -2021-10-13T03:00,33.8,90,31.1,0,0,5,6.7 -2021-10-13T04:00,34.5,85,30.6,0,0,5.5,8.9 -2021-10-13T05:00,34,83,29.3,0,0,4.5,8.1 -2021-10-13T06:00,33.2,84,28.8,0,0,4.1,9.4 -2021-10-13T07:00,37,74,29.6,0,0,3,5.4 -2021-10-13T08:00,41.4,60,28.7,0,0,3.9,8.7 -2021-10-13T09:00,47.8,38,23.5,0,0,8.9,17.4 -2021-10-13T10:00,51.1,30,20.8,0,0,7.1,18.3 -2021-10-13T11:00,52.6,30,21.8,0,0,5.2,15.9 -2021-10-13T12:00,55,27,21.9,0,0,4.5,13.6 -2021-10-13T13:00,57.3,25,21.3,0,0,6.3,15 -2021-10-13T14:00,58.6,23,20.8,0,0,8.5,17.4 -2021-10-13T15:00,58.3,23,20.3,0,0,8.9,17.7 -2021-10-13T16:00,56.5,24,20.6,0,0,10.9,18.8 -2021-10-13T17:00,53.2,32,23.7,0,0,13.7,21.5 -2021-10-13T18:00,49.6,36,24.1,0,0,6.9,22.1 -2021-10-13T19:00,48.2,40,24.8,0,0,3,11.2 -2021-10-13T20:00,45.7,46,26.2,0,0,2.7,3.4 -2021-10-13T21:00,44.1,50,26.7,0,0,3.8,4.9 -2021-10-13T22:00,44,49,26.2,0,0,3.1,4.5 -2021-10-13T23:00,39.6,59,26.6,0,0,5.5,6.9 -2021-10-14T00:00,39.9,55,25.1,0,0,3.8,6.7 -2021-10-14T01:00,37.9,60,25.3,0,0,4.7,5.8 -2021-10-14T02:00,37.4,60,24.8,0,0,5.2,6.7 -2021-10-14T03:00,37.4,59,24.2,0,0,3.6,6 -2021-10-14T04:00,36.7,61,24.5,0,0,3.2,4.3 -2021-10-14T05:00,32.4,74,24.9,0,0,3.5,4 -2021-10-14T06:00,34.1,68,24.6,0,0,1.7,4.3 -2021-10-14T07:00,36.4,64,25.4,0,0,2.6,4.5 -2021-10-14T08:00,39.6,58,26.2,0,0,3.3,8.1 -2021-10-14T09:00,42.4,50,25.2,0,0,1,8.1 -2021-10-14T10:00,46.8,41,24.2,0,0,3.1,9.8 -2021-10-14T11:00,49.1,35,22.6,0,0,5.9,14.5 -2021-10-14T12:00,49.8,35,23,0.004,0,8.7,17.9 -2021-10-14T13:00,47.8,48,28.9,0.031,0.193,13.1,25.1 -2021-10-14T14:00,44.2,56,29.7,0.004,0,12.4,24.2 -2021-10-14T15:00,47.2,48,28.4,0,0,10.6,21.3 -2021-10-14T16:00,46,48,27.7,0,0,10.3,21.7 -2021-10-14T17:00,40.7,67,30.7,0,0,8.6,17.9 -2021-10-14T18:00,39,73,31.2,0,0,4.9,13.9 -2021-10-14T19:00,36.9,83,32.1,0,0,2.3,8.3 -2021-10-14T20:00,36.8,83,32,0,0,2.5,4.5 -2021-10-14T21:00,35.6,86,31.9,0,0,3.6,6 -2021-10-14T22:00,34.2,92,32,0,0,2.5,6.3 -2021-10-14T23:00,33.4,92,31.3,0,0,2.2,4.5 -2021-10-15T00:00,31.6,95,30.2,0,0,3,4.7 -2021-10-15T01:00,30.9,94,29.3,0,0,2.4,4.9 -2021-10-15T02:00,29.8,85,26,0,0,2.3,4 -2021-10-15T03:00,28.9,76,22.5,0,0,3,4.9 -2021-10-15T04:00,30.7,54,16.1,0,0,6,9.4 -2021-10-15T05:00,33,42,12.3,0,0,9.2,12.1 -2021-10-15T06:00,33.5,40,11.9,0,0,9,15 -2021-10-15T07:00,36.8,34,11,0,0,11.2,18.6 -2021-10-15T08:00,40.9,28,10.3,0,0,9,18.3 -2021-10-15T09:00,43.3,27,11.8,0,0,5.9,16.3 -2021-10-15T10:00,46,25,11.9,0,0,6.2,14.5 -2021-10-15T11:00,48.8,22,11.3,0,0,5.9,15.7 -2021-10-15T12:00,51.5,19,11.1,0,0,5.7,15 -2021-10-15T13:00,53.3,17,9.5,0,0,6.2,15.2 -2021-10-15T14:00,54.1,17,10,0,0,6.3,15.7 -2021-10-15T15:00,54.4,16,9.7,0,0,4.8,15 -2021-10-15T16:00,54.4,16,8.6,0,0,5.7,11.9 -2021-10-15T17:00,50.4,23,14.4,0,0,7.3,11.4 -2021-10-15T18:00,46.7,29,15.7,0,0,6.4,12.1 -2021-10-15T19:00,42.9,36,17.5,0,0,5.4,10.3 -2021-10-15T20:00,39.9,41,17.9,0,0,6,7.8 -2021-10-15T21:00,40.3,41,18.3,0,0,5.3,8.3 -2021-10-15T22:00,38.1,43,17.4,0,0,4.9,8.3 -2021-10-15T23:00,36.6,45,17.1,0,0,7.2,8.7 -2021-10-16T00:00,35.8,46,17.2,0,0,7,8.3 -2021-10-16T01:00,35.5,47,17.4,0,0,6.3,8.3 -2021-10-16T02:00,34.9,50,18.1,0,0,4.9,7.6 -2021-10-16T03:00,34.3,52,18.7,0,0,4,6.7 -2021-10-16T04:00,33.6,55,19,0,0,3.8,6.3 -2021-10-16T05:00,32.9,60,20.6,0,0,3.8,6.3 -2021-10-16T06:00,32.7,60,20.3,0,0,4,6.3 -2021-10-16T07:00,36.9,52,20.8,0,0,4.1,6.5 -2021-10-16T08:00,44.1,42,22.5,0,0,5.6,10.5 -2021-10-16T09:00,52.3,29,21,0,0,5.4,11.9 -2021-10-16T10:00,57.9,23,19.9,0,0,3.8,11.9 -2021-10-16T11:00,61.1,22,21.5,0,0,3.4,11 -2021-10-16T12:00,63.5,21,22.8,0,0,5.3,13.4 -2021-10-16T13:00,65.5,20,22.9,0,0,6.8,15.2 -2021-10-16T14:00,66.6,18,22.3,0,0,6.5,15.4 -2021-10-16T15:00,66.8,17,20.9,0,0,5.6,14.5 -2021-10-16T16:00,65.8,17,19.9,0,0,5.4,12.1 -2021-10-16T17:00,60.3,27,26.4,0,0,5.3,9.8 -2021-10-16T18:00,54.5,39,30,0,0,7,11.2 -2021-10-16T19:00,50.6,47,30.9,0,0,5.2,11.2 -2021-10-16T20:00,48.9,49,30.6,0,0,4,8.5 -2021-10-16T21:00,44.1,60,30.9,0,0,2.7,4.9 -2021-10-16T22:00,41.4,67,31.1,0,0,3.6,5.6 -2021-10-16T23:00,38.7,74,31.2,0,0,3.2,5.6 -2021-10-17T00:00,37.1,78,30.9,0,0,3.4,4.7 -2021-10-17T01:00,36.5,78,30.2,0,0,4,4.7 -2021-10-17T02:00,36.2,74,28.7,0,0,4,5.1 -2021-10-17T03:00,36.6,69,27.5,0,0,3,4.7 -2021-10-17T04:00,34.9,73,27,0,0,2.6,3.4 -2021-10-17T05:00,33.9,72,25.9,0,0,3.4,3.8 -2021-10-17T06:00,32.1,77,25.8,0,0,3.8,4.3 -2021-10-17T07:00,35.5,69,26.5,0,0,4,5.1 -2021-10-17T08:00,44,52,27.7,0,0,3,8.1 -2021-10-17T09:00,52.5,36,26.4,0,0,2.9,8.9 -2021-10-17T10:00,59.4,26,24.7,0,0,2.7,9.4 -2021-10-17T11:00,64.8,20,22.7,0,0,3.5,10.7 -2021-10-17T12:00,68.3,17,21.4,0,0,4.4,11.9 -2021-10-17T13:00,70.3,16,22.2,0,0,5.4,13.2 -2021-10-17T14:00,71.3,17,23.6,0,0,6.3,14.1 -2021-10-17T15:00,70.9,17,24.1,0,0,8.2,15.2 -2021-10-17T16:00,68.4,18,23.2,0,0,8.1,16.1 -2021-10-17T17:00,64.6,20,22.9,0,0,12.4,13.4 -2021-10-17T18:00,58.3,26,23.8,0,0,6.3,19.7 -2021-10-17T19:00,55,35,27.7,0,0,6.2,9.6 -2021-10-17T20:00,49,43,27.5,0,0,4.2,7.4 -2021-10-17T21:00,46.3,49,28.4,0,0,4.3,6.5 -2021-10-17T22:00,45.2,53,28.9,0,0,5.5,6.7 -2021-10-17T23:00,42.8,57,28.6,0,0,5.7,7.6 -2021-10-18T00:00,43.3,55,28,0,0,4.4,6.9 -2021-10-18T01:00,42.2,55,27,0,0,5.2,6.3 -2021-10-18T02:00,41.6,54,26.2,0,0,4.9,6 -2021-10-18T03:00,40.6,54,25.4,0,0,5.1,6.9 -2021-10-18T04:00,38.8,60,26,0,0,6,7.4 -2021-10-18T05:00,40.6,59,27.1,0,0,5.4,7.2 -2021-10-18T06:00,42.6,54,27.3,0,0,4.2,6.5 -2021-10-18T07:00,44.9,52,28.3,0,0,3,5.8 -2021-10-18T08:00,48.7,47,29.2,0,0,3.5,6 -2021-10-18T09:00,56.2,38,30.9,0,0,2.4,7.4 -2021-10-18T10:00,66.2,25,29,0,0,4.3,10.5 -2021-10-18T11:00,71.2,19,27.3,0,0,4.8,12.5 -2021-10-18T12:00,73.9,14,21.2,0,0,2.9,12.1 -2021-10-18T13:00,74.8,12,19.6,0,0,10.7,19.5 -2021-10-18T14:00,73.5,13,18.9,0,0,15,26.2 -2021-10-18T15:00,74.1,12,18.8,0,0,11.7,26.2 -2021-10-18T16:00,73.9,12,18.2,0,0,5.4,20.1 -2021-10-18T17:00,66.3,19,22.5,0,0,5.5,9.2 -2021-10-18T18:00,58.7,27,24.8,0,0,7.2,8.7 -2021-10-18T19:00,58.7,28,25.5,0,0,4.3,9.2 -2021-10-18T20:00,55.4,35,28.4,0,0,6.6,10.5 -2021-10-18T21:00,53.1,40,29.1,0,0,6.2,10.7 -2021-10-18T22:00,50.4,44,29.2,0,0,5.2,9.8 -2021-10-18T23:00,46.1,52,29.3,0,0,6,7.8 -2021-10-19T00:00,43.1,60,30.2,0,0,3,7.4 -2021-10-19T01:00,42.2,64,30.8,0,0,2.8,5.4 -2021-10-19T02:00,39.8,67,29.8,0,0,2.1,4.7 -2021-10-19T03:00,38.3,70,29.4,0,0,3,5.1 -2021-10-19T04:00,37.1,73,29.2,0,0,2.7,5.6 -2021-10-19T05:00,38.7,61,26.3,0,0,6,4.3 -2021-10-19T06:00,40.6,58,26.8,0,0,5.7,9.2 -2021-10-19T07:00,41.8,64,30.5,0,0,4.6,9.2 -2021-10-19T08:00,49.2,43,27.4,0,0,1.3,6.3 -2021-10-19T09:00,54.6,40,30.7,0,0,7.2,13.6 -2021-10-19T10:00,57.9,35,30.7,0,0,6.9,18.3 -2021-10-19T11:00,58.4,37,32.5,0.039,0,7.8,17.7 -2021-10-19T12:00,55.1,45,34.2,0.122,0,12.5,22.1 -2021-10-19T13:00,56.2,30,25.2,0.031,0,10.5,24.6 -2021-10-19T14:00,57.5,25,21.5,0,0,9.3,19.7 -2021-10-19T15:00,53.2,47,33.4,0.008,0,12,23.7 -2021-10-19T16:00,51.7,46,31.8,0,0,10.5,21.3 -2021-10-19T17:00,47.7,68,37.8,0,0,1.1,17.9 -2021-10-19T18:00,46,78,39.5,0,0,5.4,9.6 -2021-10-19T19:00,44.8,79,38.6,0,0,6.5,10.1 -2021-10-19T20:00,44.4,73,36.1,0,0,4.7,11.6 -2021-10-19T21:00,40.6,87,36.9,0,0,4,8.3 -2021-10-19T22:00,38.8,92,36.7,0,0,4.3,6.5 -2021-10-19T23:00,39.4,91,37,0,0,3.2,5.6 -2021-10-20T00:00,36.5,92,34.5,0,0,5.5,6.7 -2021-10-20T01:00,36.7,90,33.9,0,0,3.8,6.5 -2021-10-20T02:00,36.7,87,33.2,0,0,3.9,6.3 -2021-10-20T03:00,36.1,88,32.9,0,0,5.4,10.1 -2021-10-20T04:00,34.9,91,32.5,0,0,3.6,9.4 -2021-10-20T05:00,34.1,98,33.4,0,0,3.6,5.4 -2021-10-20T06:00,33.5,98,33.1,0,0,4.5,7.4 -2021-10-20T07:00,34.3,93,32.5,0,0,5.6,10.1 -2021-10-20T08:00,37.1,80,31.5,0,0,4.8,11 -2021-10-20T09:00,43.3,55,28.1,0,0,4.8,11.9 -2021-10-20T10:00,49.6,38,25,0,0,5.4,13.2 -2021-10-20T11:00,55,28,22.6,0,0,5.3,13.9 -2021-10-20T12:00,58.7,24,21.6,0,0,5.1,13.6 -2021-10-20T13:00,61.1,22,21.4,0,0,5.2,13.4 -2021-10-20T14:00,62.4,21,22.5,0,0,6,13.4 -2021-10-20T15:00,62.3,23,24.1,0,0,7.7,14.8 -2021-10-20T16:00,60.1,26,25.4,0,0,9.3,15.9 -2021-10-20T17:00,53.5,34,25.8,0,0,4.5,15.9 -2021-10-20T18:00,49.7,41,27,0,0,6.5,8.1 -2021-10-20T19:00,50.5,40,27.1,0,0,3.8,7.4 -2021-10-20T20:00,47,46,27.4,0,0,4.5,5.4 -2021-10-20T21:00,48.7,43,27,0,0,2.4,5.4 -2021-10-20T22:00,43.2,54,27.4,0,0,1.4,2.9 -2021-10-20T23:00,39,64,28,0,0,3.5,5.4 -2021-10-21T00:00,37.1,66,26.7,0,0,4.1,5.4 -2021-10-21T01:00,35.8,69,26.5,0,0,3.3,5.6 -2021-10-21T02:00,35.3,71,27,0,0,2.7,4.9 -2021-10-21T03:00,34.3,76,27.6,0,0,3,4.3 -2021-10-21T04:00,33,79,27.2,0,0,4.2,4.9 -2021-10-21T05:00,33.6,70,24.7,0,0,4.6,6.3 -2021-10-21T06:00,33.4,63,22.4,0,0,5.2,6 -2021-10-21T07:00,38.1,52,21.8,0,0,2.7,6.3 -2021-10-21T08:00,43.2,45,23,0,0,4.4,8.3 -2021-10-21T09:00,48.6,36,22.8,0,0,4.3,8.9 -2021-10-21T10:00,53.1,26,19.2,0,0,4.1,9.4 -2021-10-21T11:00,58.2,20,17.8,0,0,3.7,10.1 -2021-10-21T12:00,62.3,17,16.6,0,0,2.9,10.1 -2021-10-21T13:00,64.2,15,16.2,0,0,1.9,9.2 -2021-10-21T14:00,65.2,15,16.3,0,0,1.3,7.6 -2021-10-21T15:00,65.7,14,15.5,0,0,0.9,6.5 -2021-10-21T16:00,64.5,15,16.4,0,0,2.8,5.8 -2021-10-21T17:00,60.4,19,18,0,0,4.7,3.8 -2021-10-21T18:00,59.7,19,17.9,0,0,3.1,5.6 -2021-10-21T19:00,55,24,19.2,0,0,1.8,3.8 -2021-10-21T20:00,48.9,35,22.6,0,0,2.7,3.4 -2021-10-21T21:00,42.5,54,27.1,0,0,3.5,5.8 -2021-10-21T22:00,40,60,27.4,0,0,3.5,5.1 -2021-10-21T23:00,39,58,25.4,0,0,4.2,6 -2021-10-22T00:00,37.7,58,24.1,0,0,4.8,6.3 -2021-10-22T01:00,36.8,60,24.4,0,0,5.4,6.7 -2021-10-22T02:00,36.7,62,24.9,0,0,5.1,6.9 -2021-10-22T03:00,36.7,61,24.4,0,0,4.5,6.9 -2021-10-22T04:00,36.4,60,23.9,0,0,5.1,7.2 -2021-10-22T05:00,35.5,61,23.4,0,0,6.3,7.4 -2021-10-22T06:00,34.2,64,23.2,0,0,6.6,7.4 -2021-10-22T07:00,39,53,23.3,0,0,4.5,7.8 -2021-10-22T08:00,47,41,24.7,0,0,2.9,8.5 -2021-10-22T09:00,55.9,30,24.5,0,0,5.4,11 -2021-10-22T10:00,64,20,21.8,0,0,5.5,13.2 -2021-10-22T11:00,68.4,16,19.9,0,0,3.5,12.5 -2021-10-22T12:00,70.4,13,17.9,0,0,4.7,12.1 -2021-10-22T13:00,71.5,13,17.7,0,0,5.4,13 -2021-10-22T14:00,72,13,18.1,0,0,4.5,13 -2021-10-22T15:00,72.2,13,19,0,0,1.8,11.2 -2021-10-22T16:00,70.6,17,24.4,0,0,2.5,6.7 -2021-10-22T17:00,61.6,20,19.9,0,0,7.1,7.6 -2021-10-22T18:00,58.6,21,18.7,0,0,7.1,8.5 -2021-10-22T19:00,59,20,18.1,0,0,4.8,8.5 -2021-10-22T20:00,51.5,28,19.5,0,0,6,7.4 -2021-10-22T21:00,47.8,33,20.2,0,0,5.8,7.8 -2021-10-22T22:00,45.1,44,24.4,0,0,4.3,6.9 -2021-10-22T23:00,44.5,46,25.1,0,0,4.6,7.6 -2021-10-23T00:00,41.1,51,24.5,0,0,4.7,7.6 -2021-10-23T01:00,40.8,50,23.5,0,0,3.6,5.8 -2021-10-23T02:00,40.6,46,21.6,0,0,3.7,4.7 -2021-10-23T03:00,43.4,39,20,0,0,2.6,4.5 -2021-10-23T04:00,37.7,48,19.5,0,0,4.6,5.4 -2021-10-23T05:00,35.9,54,21,0,0,4.6,6.9 -2021-10-23T06:00,35.1,59,22.3,0,0,5.6,6.5 -2021-10-23T07:00,39.7,52,23.4,0,0,3,6.7 -2021-10-23T08:00,45.4,42,23.6,0,0,4.1,7.8 -2021-10-23T09:00,53,31,22.9,0,0,3.2,8.5 -2021-10-23T10:00,60.2,21,20.1,0,0,4,10.3 -2021-10-23T11:00,65.3,16,18.3,0,0,4.5,10.7 -2021-10-23T12:00,68.4,16,19.9,0,0,5,11.2 -2021-10-23T13:00,68.5,16,20.3,0,0,2.2,10.7 -2021-10-23T14:00,69.8,15,20.4,0,0,5.1,11 -2021-10-23T15:00,67.2,17,20.6,0,0,11.5,18.6 -2021-10-23T16:00,64.1,19,21.5,0,0,9.2,19 -2021-10-23T17:00,60.4,24,23,0,0,12,15 -2021-10-23T18:00,57.3,29,24.9,0,0,7,19.5 -2021-10-23T19:00,55.9,31,25.5,0,0,6.5,11.4 -2021-10-23T20:00,54.1,32,24.9,0,0,9.9,16.1 -2021-10-23T21:00,51.9,34,24.2,0,0,6.1,15.7 -2021-10-23T22:00,48.4,40,25,0,0,4.7,9.6 -2021-10-23T23:00,46.6,46,27.1,0,0,4.9,6.5 -2021-10-24T00:00,50.5,40,27.1,0,0,1.4,6.3 -2021-10-24T01:00,42.9,55,28,0,0,3.8,4.5 -2021-10-24T02:00,40.3,64,28.9,0,0,3.5,5.4 -2021-10-24T03:00,39.4,66,29.1,0,0,3.5,4.9 -2021-10-24T04:00,38.9,68,29.2,0,0,3,4.9 -2021-10-24T05:00,39.9,66,29.3,0,0,3.1,4.9 -2021-10-24T06:00,37.1,73,29.4,0,0,3.1,6 -2021-10-24T07:00,38.2,72,30.1,0,0,1.2,5.4 -2021-10-24T08:00,45.3,57,30.9,0,0,1.1,5.6 -2021-10-24T09:00,50.6,45,29.8,0,0,2.9,8.3 -2021-10-24T10:00,56.1,36,29.8,0,0,4.2,11.4 -2021-10-24T11:00,58.6,33,29.2,0,0,2.5,11.4 -2021-10-24T12:00,60.3,29,28.1,0,0,3.7,11.4 -2021-10-24T13:00,61.8,27,27.4,0,0,2.2,11.6 -2021-10-24T14:00,63.1,25,26.5,0,0,5,12.3 -2021-10-24T15:00,63.4,24,25.8,0,0,5.9,13 -2021-10-24T16:00,62.6,25,25.9,0,0,3.2,12.3 -2021-10-24T17:00,58.4,26,23.4,0,0,4.8,6.5 -2021-10-24T18:00,54.9,29,23.5,0,0,6.1,8.5 -2021-10-24T19:00,53.2,32,24.1,0,0,6.1,8.1 -2021-10-24T20:00,50.2,35,23.4,0,0,5.9,8.3 -2021-10-24T21:00,50.8,33,22.7,0,0,5.4,7.6 -2021-10-24T22:00,46,39,22.6,0,0,6.4,7.8 -2021-10-24T23:00,43.3,46,24,0,0,3.6,7.6 -2021-10-25T00:00,41.8,52,25.3,0,0,4,6.3 -2021-10-25T01:00,41.8,54,26.3,0,0,4.1,8.7 -2021-10-25T02:00,41.4,58,27.6,0,0,5,6.5 -2021-10-25T03:00,43,52,26.6,0,0,1.8,5.8 -2021-10-25T04:00,39.1,58,25.5,0,0,1,2.2 -2021-10-25T05:00,39,61,26.7,0,0,2.8,2.9 -2021-10-25T06:00,39.9,58,26.2,0,0,1.3,4.7 -2021-10-25T07:00,39.8,60,27,0,0,2.3,3.4 -2021-10-25T08:00,42.1,53,26.3,0,0,3.4,7.4 -2021-10-25T09:00,48.7,42,26.8,0,0,5.7,11.9 -2021-10-25T10:00,58,32,28.1,0,0,5,13 -2021-10-25T11:00,68.5,24,30.6,0,0,2.7,12.1 -2021-10-25T12:00,76.8,19,30.8,0,0,5.7,12.8 -2021-10-25T13:00,80.2,16,29.5,0,0,7.8,15.7 -2021-10-25T14:00,82.5,14,28.2,0,0,8.5,16.6 -2021-10-25T15:00,83.3,12,25.6,0,0,4.7,16.3 -2021-10-25T16:00,74.2,22,32.7,0,0,11.4,17.7 -2021-10-25T17:00,60.5,33,31.5,0,0,4.6,24.8 -2021-10-25T18:00,61.3,32,31.5,0,0,1.4,8.1 -2021-10-25T19:00,54.2,42,31.6,0,0,4,6.3 -2021-10-25T20:00,53.4,44,31.9,0,0,1.8,5.8 -2021-10-25T21:00,49.7,49,31.2,0,0,3.6,5.6 -2021-10-25T22:00,50,44,28.9,0,0,7.2,9.8 -2021-10-25T23:00,55.9,30,24.8,0,0,9.9,15.2 -2021-10-26T00:00,54.3,33,26.1,0,0,9.6,16.6 -2021-10-26T01:00,52.1,39,28.1,0,0,7.9,15.4 -2021-10-26T02:00,50.8,42,28.4,0,0,8.1,12.8 -2021-10-26T03:00,50.7,42,28.3,0,0,8.6,14.1 -2021-10-26T04:00,49.9,42,27.9,0,0,8.1,13.6 -2021-10-26T05:00,50.2,40,26.9,0,0,9.1,13.4 -2021-10-26T06:00,50.5,41,27.4,0,0,10.3,16.1 -2021-10-26T07:00,52.7,38,27.7,0,0,11.7,18.6 -2021-10-26T08:00,59.7,30,28.3,0,0,13.3,20.8 -2021-10-26T09:00,66.6,24,28.9,0,0,14.9,24.2 -2021-10-26T10:00,69.5,22,28.5,0,0,15.7,27.5 -2021-10-26T11:00,72.1,18,26.2,0,0,17,28.4 -2021-10-26T12:00,59.8,43,37.3,0.016,0,21.4,38.5 -2021-10-26T13:00,62,32,31.6,0.004,0,9.6,35.6 -2021-10-26T14:00,65.8,20,23.9,0,0,9.3,18.1 -2021-10-26T15:00,61.3,37,34.8,0.039,0,14.1,22.6 -2021-10-26T16:00,56.4,45,35.5,0,0,14.4,26.4 -2021-10-26T17:00,45.8,84,41.4,0.024,0,8.9,26.4 -2021-10-26T18:00,46.4,86,42.4,0.02,0,2.1,14.1 -2021-10-26T19:00,45.1,81,39.7,0.067,0,5.7,12.5 -2021-10-26T20:00,45.6,77,38.8,0.012,0,6.7,12.3 -2021-10-26T21:00,44.2,78,37.9,0,0,3,10.7 -2021-10-26T22:00,42.7,77,35.9,0,0,3.8,5.8 -2021-10-26T23:00,44.9,53,28.9,0,0,10.4,16.3 -2021-10-27T00:00,43.6,48,25.2,0,0,8.6,17 -2021-10-27T01:00,42.3,46,23.1,0,0,5.4,14.3 -2021-10-27T02:00,40.5,52,24.3,0,0,5.1,8.9 -2021-10-27T03:00,42.1,48,23.8,0,0,4.3,7.4 -2021-10-27T04:00,41.3,47,22.7,0,0,4.5,7.2 -2021-10-27T05:00,44,38,20.2,0,0,6.5,7.2 -2021-10-27T06:00,42.5,42,21.2,0,0,3.8,10.7 -2021-10-27T07:00,42.7,44,22.3,0,0,3.1,6.3 -2021-10-27T08:00,45.6,38,21.7,0,0,5.4,8.5 -2021-10-27T09:00,47,36,21.7,0,0,5.4,12.5 -2021-10-27T10:00,48.8,33,20.8,0,0,2.2,11.9 -2021-10-27T11:00,50.3,31,21.1,0,0,3.2,10.7 -2021-10-27T12:00,52.3,29,21.2,0,0,3.6,11.2 -2021-10-27T13:00,54.8,26,20.1,0,0,5.7,13.9 -2021-10-27T14:00,55.1,24,18.5,0,0,7.6,16.3 -2021-10-27T15:00,54.2,24,18.4,0,0,6.6,16.8 -2021-10-27T16:00,52.8,26,19,0,0,6,14.3 -2021-10-27T17:00,49.9,35,23.2,0,0,9.1,11.9 -2021-10-27T18:00,48.9,38,24.6,0,0,7,15 -2021-10-27T19:00,50.2,38,25.8,0,0,7.9,13 -2021-10-27T20:00,49.5,42,27.1,0,0,8.2,14.3 -2021-10-27T21:00,48.7,43,27.4,0,0,7.9,13.2 -2021-10-27T22:00,47.5,42,25.5,0,0,8.8,14.3 -2021-10-27T23:00,47.3,41,24.5,0,0,7.5,14.8 -2021-10-28T00:00,45.6,43,24.6,0,0,5.5,12.1 -2021-10-28T01:00,43.6,48,25.2,0,0,4.3,8.9 -2021-10-28T02:00,43,50,25.4,0,0,5.1,8.1 -2021-10-28T03:00,41.8,53,25.9,0,0,4.3,8.3 -2021-10-28T04:00,39.7,58,26.1,0,0,6.3,7.6 -2021-10-28T05:00,38.2,55,23.5,0,0,5.3,9.8 -2021-10-28T06:00,38.9,54,23.6,0,0,5.6,10.3 -2021-10-28T07:00,39.9,52,23.6,0,0,5,9.4 -2021-10-28T08:00,41.1,49,23.3,0,0,5,9.6 -2021-10-28T09:00,42.8,44,22.6,0,0,3.8,10.3 -2021-10-28T10:00,44.4,42,22.6,0,0,4,10.1 -2021-10-28T11:00,46.8,38,22.7,0,0,5.2,12.5 -2021-10-28T12:00,50.1,37,24.6,0,0,4.5,13.2 -2021-10-28T13:00,53.6,35,26.9,0,0,6.1,14.1 -2021-10-28T14:00,56,33,27.5,0,0,6.2,14.5 -2021-10-28T15:00,58.6,31,28,0,0,2.7,13.9 -2021-10-28T16:00,59.7,29,27.3,0,0,4,8.3 -2021-10-28T17:00,48.7,42,26.6,0,0,5.2,6.9 -2021-10-28T18:00,50.3,39,26,0,0,1.9,5.6 -2021-10-28T19:00,48.1,44,27,0,0,5.6,8.3 -2021-10-28T20:00,49.8,42,27.6,0,0,8.5,13.6 -2021-10-28T21:00,49.1,42,27.1,0,0,9,14.8 -2021-10-28T22:00,48.2,43,26.9,0,0,6.8,14.5 -2021-10-28T23:00,44.8,49,27,0,0,6.4,11.2 -2021-10-29T00:00,43.3,51,26.5,0,0,6.6,8.7 -2021-10-29T01:00,43.1,50,25.9,0,0,5.3,8.5 -2021-10-29T02:00,42.6,51,25.8,0,0,5.8,9.2 -2021-10-29T03:00,41.5,53,25.8,0,0,5.2,9.2 -2021-10-29T04:00,39.9,57,25.8,0,0,4.9,8.3 -2021-10-29T05:00,40.4,56,25.9,0,0,5.1,7.4 -2021-10-29T06:00,38.9,58,25.3,0,0,4.9,8.1 -2021-10-29T07:00,39.6,57,25.5,0,0,4.2,7.6 -2021-10-29T08:00,45.7,46,26.3,0,0,5.4,9.8 -2021-10-29T09:00,53.6,36,27.1,0,0,4,10.3 -2021-10-29T10:00,61,26,25.7,0,0,5.2,11.6 -2021-10-29T11:00,66.9,19,23.3,0,0,7.1,15 -2021-10-29T12:00,69.9,16,21.1,0,0,5.4,15 -2021-10-29T13:00,71.3,14,20.2,0,0,4.8,13 -2021-10-29T14:00,72,14,20.1,0,0,4.2,11.9 -2021-10-29T15:00,72,14,20,0,0,3.8,10.7 -2021-10-29T16:00,69,34,39.3,0,0,3,8.7 -2021-10-29T17:00,61.3,24,24.1,0,0,5.7,5.6 -2021-10-29T18:00,57.3,29,25.2,0,0,7.3,9.2 -2021-10-29T19:00,52.9,33,24.7,0,0,6,8.5 -2021-10-29T20:00,49,38,24.8,0,0,6.1,8.1 -2021-10-29T21:00,45.9,44,25.3,0,0,5.1,7.6 -2021-10-29T22:00,43.3,47,24.5,0,0,5.1,6.7 -2021-10-29T23:00,41.8,47,23,0,0,5.6,6.9 -2021-10-30T00:00,41.5,45,21.7,0,0,4.8,7.2 -2021-10-30T01:00,40.6,46,21.7,0,0,4,6.9 -2021-10-30T02:00,37.5,56,23,0,0,4.3,7.8 -2021-10-30T03:00,38.1,54,23,0,0,6.6,10.5 -2021-10-30T04:00,41.7,44,21.2,0,0,10,15.9 -2021-10-30T05:00,38,54,22.8,0,0,4.9,15.9 -2021-10-30T06:00,37.5,54,22.3,0,0,5.8,10.3 -2021-10-30T07:00,40,53,24.2,0,0,7.1,8.9 -2021-10-30T08:00,52.8,32,23.6,0,0,4.5,8.5 -2021-10-30T09:00,60.7,25,25,0,0,0.3,7.2 -2021-10-30T10:00,65.9,21,25.2,0,0,3.4,8.9 -2021-10-30T11:00,68.7,17,22.2,0,0,6.4,13.9 -2021-10-30T12:00,70.6,14,18.8,0,0,9,17.2 -2021-10-30T13:00,68.7,17,22.6,0,0,14.5,25.3 -2021-10-30T14:00,67.2,21,25.9,0,0,13.3,26.8 -2021-10-30T15:00,64.5,26,29,0,0,14,23.7 -2021-10-30T16:00,62.9,30,31.3,0,0,8.2,23.7 -2021-10-30T17:00,57.7,39,32.8,0,0,6.8,13.2 -2021-10-30T18:00,54.7,45,33.7,0,0,6.5,11 -2021-10-30T19:00,51.3,53,34.8,0,0,7.4,11.6 -2021-10-30T20:00,49.4,58,35.1,0,0,8.1,13 -2021-10-30T21:00,48.4,59,34.8,0,0,5.7,13 -2021-10-30T22:00,46.4,64,34.7,0,0,3.8,9.2 -2021-10-30T23:00,44.5,69,35,0,0,3.8,5.8 -2021-10-31T00:00,41.8,78,35.3,0,0,3.9,5.8 -2021-10-31T01:00,41.3,79,35.2,0,0,5.6,8.3 -2021-10-31T02:00,40.2,77,33.5,0,0,9.4,14.5 -2021-10-31T03:00,38.7,74,31.2,0,0,9,15.2 -2021-10-31T04:00,37.5,77,30.9,0,0,7.4,14.5 -2021-10-31T05:00,36.5,78,30.4,0,0,8.5,12.1 -2021-10-31T06:00,36.5,79,30.5,0,0,8.1,14.1 -2021-10-31T07:00,36.7,79,30.8,0,0,7.4,13.6 -2021-10-31T08:00,37.4,78,31,0,0,7.3,13.6 -2021-10-31T09:00,37.9,76,31.1,0,0,6.4,13.6 -2021-10-31T10:00,39.1,73,31.2,0,0,6,12.8 -2021-10-31T11:00,39.7,72,31.3,0,0,5.2,12.5 -2021-10-31T12:00,41,69,31.5,0,0,4.3,11.6 -2021-10-31T13:00,42.6,65,31.6,0,0,3.3,11 -2021-10-31T14:00,44,62,31.6,0,0,3.8,10.1 -2021-10-31T15:00,43.9,62,31.6,0,0,4.9,11 -2021-10-31T16:00,43.7,62,31.6,0,0,3.7,11 -2021-10-31T17:00,40.4,66,29.8,0,0,3.9,8.5 -2021-10-31T18:00,39.6,68,29.8,0.004,0,2.9,7.6 -2021-10-31T19:00,38.8,71,30.3,0,0,2,5.8 -2021-10-31T20:00,38.8,72,30.7,0,0,3.2,6.9 -2021-10-31T21:00,38.5,74,31,0,0,3.5,8.3 -2021-10-31T22:00,38.1,76,31.2,0,0,2.6,6.3 -2021-10-31T23:00,37.5,76,30.7,0,0,3.2,4.9 -2021-11-01T00:00,35.3,81,30.2,0,0,4.8,7.6 -2021-11-01T01:00,32.5,93,30.7,0,0,3.4,7.6 -2021-11-01T02:00,31.5,97,30.7,0,0,2.4,4.5 -2021-11-01T03:00,30.7,100,30.7,0,0,1.4,3.8 -2021-11-01T04:00,32.6,93,30.9,0,0,1.7,5.1 -2021-11-01T05:00,35.7,87,32.3,0,0,3.5,4.5 -2021-11-01T06:00,35.2,87,31.7,0,0.165,5.6,8.9 -2021-11-01T07:00,34.5,86,30.8,0,0.083,8.4,14.8 -2021-11-01T08:00,34.9,84,30.6,0,0,8.8,15.4 -2021-11-01T09:00,35.4,81,30.2,0,0,8.3,16.3 -2021-11-01T10:00,37.3,74,29.7,0,0,6.7,15.4 -2021-11-01T11:00,39.8,66,29.6,0,0,5.2,13.9 -2021-11-01T12:00,42.3,62,30.1,0,0,3.8,12.8 -2021-11-01T13:00,44,59,30.4,0,0,4.8,12.1 -2021-11-01T14:00,44.8,57,30.4,0,0,5.4,12.3 -2021-11-01T15:00,44.8,57,30.5,0,0,5.1,12.1 -2021-11-01T16:00,43.8,61,31,0.008,0,4.9,10.7 -2021-11-01T17:00,37.4,70,28.5,0.024,0.11,3.4,9.6 -2021-11-01T18:00,36.9,73,29.1,0.004,0,4.2,8.1 -2021-11-01T19:00,36.9,76,30,0.004,0.028,4.9,9.2 -2021-11-01T20:00,36.9,74,29.2,0,0,3.7,8.9 -2021-11-01T21:00,36.4,75,29.2,0,0,0.7,7.2 -2021-11-01T22:00,35.7,78,29.7,0,0,1.2,3.6 -2021-11-01T23:00,35.5,81,30.3,0,0,1.9,4.7 -2021-11-02T00:00,35.4,83,30.7,0,0,2.5,4.5 -2021-11-02T01:00,35.6,83,30.8,0,0,4.3,6.7 -2021-11-02T02:00,35.6,83,30.8,0,0,5.4,8.9 -2021-11-02T03:00,35.2,83,30.4,0,0,6.7,11.4 -2021-11-02T04:00,34.4,84,30.2,0,0,5.8,11.9 -2021-11-02T05:00,33.4,89,30.7,0,0,5,10.3 -2021-11-02T06:00,32.9,91,30.7,0.004,0,2.7,9.2 -2021-11-02T07:00,32.9,92,30.7,0,0,2.1,6 -2021-11-02T08:00,33.7,89,30.9,0.004,0,1.6,5.8 -2021-11-02T09:00,34.7,87,31.3,0.004,0,1.4,5.8 -2021-11-02T10:00,36.3,84,31.8,0.004,0,1.9,7.4 -2021-11-02T11:00,38.5,78,32.3,0.004,0,1.9,8.1 -2021-11-02T12:00,40.6,74,32.8,0,0,2.2,8.5 -2021-11-02T13:00,42.8,69,33.3,0,0,3.4,10.1 -2021-11-02T14:00,42.4,76,35.5,0.028,0.028,3.7,10.3 -2021-11-02T15:00,43.3,72,35,0.008,0,4.5,9.6 -2021-11-02T16:00,43.3,71,34.4,0,0,3.5,9.6 -2021-11-02T17:00,40.8,82,35.8,0,0,3.8,6.9 -2021-11-02T18:00,40.5,84,36,0,0,1.4,4.5 -2021-11-02T19:00,37.3,94,35.9,0,0,2.6,3.4 -2021-11-02T20:00,35.2,96,34.3,0,0,3.8,4.9 -2021-11-02T21:00,35.5,95,34.3,0,0,3.4,5.1 -2021-11-02T22:00,34.1,96,33,0,0,3.5,5.8 -2021-11-02T23:00,32.6,96,31.6,0,0,4.2,5.4 -2021-11-03T00:00,33.5,94,32.1,0,0,2.9,5.1 -2021-11-03T01:00,33.4,93,31.7,0,0,3.5,5.8 -2021-11-03T02:00,32.5,92,30.6,0,0,3.4,5.6 -2021-11-03T03:00,32.5,93,30.7,0,0,3.5,5.8 -2021-11-03T04:00,31.6,95,30.3,0,0,3.3,5.8 -2021-11-03T05:00,31.2,95,30,0,0,5,5.1 -2021-11-03T06:00,31.1,93,29.4,0,0,5.5,6.5 -2021-11-03T07:00,32.2,90,29.7,0,0,4.6,6.9 -2021-11-03T08:00,36.9,79,31.1,0,0,2.9,6.9 -2021-11-03T09:00,42.9,64,31.7,0,0,1.8,7.4 -2021-11-03T10:00,49.5,50,31.8,0,0,2,8.3 -2021-11-03T11:00,54.5,42,31.8,0,0,3,10.1 -2021-11-03T12:00,57,37,31.1,0,0,2.1,10.1 -2021-11-03T13:00,58.5,34,30.4,0,0,1.2,9.2 -2021-11-03T14:00,59.5,32,29.8,0,0,2.5,9.2 -2021-11-03T15:00,59.5,32,29.6,0,0,3.9,9.6 -2021-11-03T16:00,57.1,36,30.4,0,0,6.4,11 -2021-11-03T17:00,51.7,46,31.5,0,0,4.8,10.3 -2021-11-03T18:00,52.9,43,30.9,0,0,0.8,5.4 -2021-11-03T19:00,45.7,57,31.4,0,0,4.2,4.7 -2021-11-03T20:00,41.3,69,31.8,0,0,3.8,6.3 -2021-11-03T21:00,37.3,79,31.6,0,0,1.8,5.4 -2021-11-03T22:00,35.8,80,30.3,0,0,3.2,4.9 -2021-11-03T23:00,35.5,72,27.5,0,0,3.8,6.5 -2021-11-04T00:00,34.3,70,25.4,0,0,5.7,6.5 -2021-11-04T01:00,34.8,66,24.5,0,0,4.8,7.2 -2021-11-04T02:00,32.2,73,24.5,0,0,5.1,6 -2021-11-04T03:00,31.8,76,25.1,0,0,3.8,6 -2021-11-04T04:00,32.4,75,25.3,0,0,4,6.3 -2021-11-04T05:00,32.1,76,25.3,0,0,4,6.5 -2021-11-04T06:00,31.3,76,24.5,0,0,4,6 -2021-11-04T07:00,31.7,72,23.9,0,0,4.8,6.9 -2021-11-04T08:00,38.4,56,24,0,0,6.1,10.7 -2021-11-04T09:00,47.5,42,25.7,0,0,5.9,11.4 -2021-11-04T10:00,56.4,27,22.6,0,0,7.7,14.8 -2021-11-04T11:00,61.6,20,20,0,0,6.3,15.4 -2021-11-04T12:00,64,20,21.8,0,0,3.7,13.6 -2021-11-04T13:00,65.5,20,23.3,0,0,4.8,11.6 -2021-11-04T14:00,66.2,20,24.1,0,0,4.8,12.1 -2021-11-04T15:00,66.1,21,24.5,0,0,3.9,11.2 -2021-11-04T16:00,63.1,28,29,0,0,2.9,8.7 -2021-11-04T17:00,54.1,36,27.8,0,0,6.6,8.5 -2021-11-04T18:00,50.8,40,27.1,0,0,5.4,8.1 -2021-11-04T19:00,48.8,42,26.5,0,0,5.7,8.9 -2021-11-04T20:00,46,47,27,0,0,5.2,8.9 -2021-11-04T21:00,43.8,52,27.2,0,0,4.7,7.8 -2021-11-04T22:00,42.3,54,26.6,0,0,4.6,6.9 -2021-11-04T23:00,41.3,55,26.5,0,0,4.6,6.7 -2021-11-05T00:00,38.8,61,26.6,0,0,6.5,7.4 -2021-11-05T01:00,42.9,51,25.9,0,0,3.4,7.4 -2021-11-05T02:00,38.4,60,25.5,0,0,3.6,5.8 -2021-11-05T03:00,37.9,59,24.7,0,0,4.3,7.4 -2021-11-05T04:00,37.1,60,24.4,0,0,5.1,7.2 -2021-11-05T05:00,36.9,58,23.4,0,0,4.8,6 -2021-11-05T06:00,34,66,23.7,0,0,4.7,5.8 -2021-11-05T07:00,36.8,58,23.5,0,0,4.2,6.5 -2021-11-05T08:00,43,47,24.2,0,0,6.6,11.4 -2021-11-05T09:00,51.8,35,25.3,0,0,5,11.2 -2021-11-05T10:00,60.5,25,24.2,0,0,5.1,11.6 -2021-11-05T11:00,66.9,19,22.8,0,0,6.2,13.4 -2021-11-05T12:00,69.5,16,21.4,0,0,5.7,13.9 -2021-11-05T13:00,70.4,15,20.5,0,0,2.2,13 -2021-11-05T14:00,70.6,14,18.7,0,0,3.2,8.9 -2021-11-05T15:00,69.7,14,18.1,0,0,4.1,9.4 -2021-11-05T16:00,66.1,25,29.2,0,0,3.4,8.7 -2021-11-05T17:00,67.7,15,17.8,0,0,2.7,4.5 -2021-11-05T18:00,65.2,16,17.7,0,0,3.4,3.8 -2021-11-05T19:00,51.8,27,18.9,0,0,4.3,4.7 -2021-11-05T20:00,46.6,34,19.4,0,0,4,7.4 -2021-11-05T21:00,42.4,45,22.5,0,0,2.8,6.3 -2021-11-05T22:00,41.3,47,22.7,0,0,3.3,5.4 -2021-11-05T23:00,39.7,45,20.2,0,0,4.3,5.6 -2021-11-06T00:00,38.6,46,19.6,0,0,5.8,6.9 -2021-11-06T01:00,37.3,50,20.3,0,0,5.3,6.9 -2021-11-06T02:00,36.1,54,21.2,0,0,5.7,6.5 -2021-11-06T03:00,35.1,58,21.6,0,0,6,7.4 -2021-11-06T04:00,34,61,21.8,0,0,6.1,7.6 -2021-11-06T05:00,33.5,61,21.6,0,0,5.1,7.6 -2021-11-06T06:00,32.9,62,21.1,0,0,5.5,6.9 -2021-11-06T07:00,35.7,51,19.1,0,0,3.5,6.9 -2021-11-06T08:00,41.1,39,18.1,0,0,5,8.1 -2021-11-06T09:00,50.1,29,19,0,0,5.3,11.2 -2021-11-06T10:00,60.9,18,17.7,0,0,4.8,11.4 -2021-11-06T11:00,68.5,13,15.3,0,0,5.3,11.6 -2021-11-06T12:00,74.6,8,8.8,0,0,7,14.1 -2021-11-06T13:00,75.7,7,5.8,0,0,6.1,14.3 -2021-11-06T14:00,75.3,7,6.2,0,0,3.2,12.8 -2021-11-06T15:00,73.3,9,10.2,0,0,8.8,15 -2021-11-06T16:00,67.7,12,13.9,0,0,9.5,18.8 -2021-11-06T17:00,57.5,20,17.2,0,0,7.7,15.2 -2021-11-06T18:00,58.3,19,16.3,0,0,3.3,8.7 -2021-11-06T19:00,53.1,22,15.3,0,0,5.2,7.2 -2021-11-06T20:00,47.3,30,17.4,0,0,5.3,6.5 -2021-11-06T21:00,42.9,43,22,0,0,3.5,6.5 -2021-11-06T22:00,41.2,46,21.8,0,0,4.3,6.5 -2021-11-06T23:00,41.2,40,18.4,0,0,4.9,7.2 -2021-11-07T00:00,42.1,37,17.9,0,0,5.9,8.9 -2021-11-07T01:00,43.4,36,18.1,0,0,7.2,11 -2021-11-07T02:00,45.1,34,18.2,0,0,7.9,12.5 -2021-11-07T03:00,44.6,34,18.1,0,0,6.9,12.3 -2021-11-07T04:00,42.2,38,18.2,0,0,6.1,10.7 -2021-11-07T05:00,43.5,35,17.6,0,0,7.7,8.7 -2021-11-07T06:00,41.7,38,17.7,0,0,5.6,12.1 -2021-11-07T07:00,39.7,42,18.6,0,0,6.8,8.7 -2021-11-07T08:00,48.2,32,19.6,0,0,4.4,8.5 -2021-11-07T09:00,56,25,20.9,0,0,1.8,6.7 -2021-11-07T10:00,64.4,19,21.2,0,0,3.5,8.5 -2021-11-07T11:00,71,12,16.3,0,0,7.9,15 -2021-11-07T12:00,72.8,9,10.5,0,0,8.8,17.4 -2021-11-07T13:00,72.6,10,13.1,0,0,7.8,17.2 -2021-11-07T14:00,72.9,10,13.6,0,0,6.5,15.9 -2021-11-07T15:00,73.1,10,12.2,0,0,7.5,13.4 -2021-11-07T16:00,69.5,11,13,0,0,6.7,12.8 -2021-11-07T17:00,60.3,16,13.3,0,0,5.7,11.2 -2021-11-07T18:00,57.5,16,12.1,0,0,5.1,10.5 -2021-11-07T19:00,52.3,22,14.5,0,0,4.7,8.1 -2021-11-07T20:00,48.7,30,18.5,0,0,2.6,6.9 -2021-11-07T21:00,46.6,36,21,0,0,5.1,8.3 -2021-11-07T22:00,44.9,34,18.4,0,0,5.3,8.5 -2021-11-07T23:00,43.6,35,17.7,0,0,5.1,8.1 -2021-11-08T00:00,40.8,38,17.3,0,0,5,8.7 -2021-11-08T01:00,40.6,43,20,0,0,5.3,8.3 -2021-11-08T02:00,39.7,51,23,0,0,6,8.5 -2021-11-08T03:00,38.4,52,22.3,0,0,6.7,9.2 -2021-11-08T04:00,40.8,58,27.1,0,0,7,11.4 -2021-11-08T05:00,36.2,89,33.2,0,0,6.4,11.4 -2021-11-08T06:00,34.3,93,32.5,0,0,4.2,9.8 -2021-11-08T07:00,35.6,92,33.5,0,0,3.2,6 -2021-11-08T08:00,39.2,81,33.9,0,0,4.5,8.9 -2021-11-08T09:00,40.1,78,33.8,0,0,3.8,9.4 -2021-11-08T10:00,41.2,73,33.2,0,0,5,11.2 -2021-11-08T11:00,44,63,32.4,0,0,4.8,12.5 -2021-11-08T12:00,45.5,59,31.9,0,0,5.3,13.2 -2021-11-08T13:00,47.1,55,31.9,0,0,5.5,13.6 -2021-11-08T14:00,48.7,51,31.3,0,0,3.6,13.2 -2021-11-08T15:00,49.2,49,30.8,0,0,1.6,10.3 -2021-11-08T16:00,46.9,53,30.7,0,0,3.4,7.2 -2021-11-08T17:00,39.9,73,31.8,0,0,2.7,7.8 -2021-11-08T18:00,39.2,85,35,0.004,0,2.5,8.9 -2021-11-08T19:00,37.5,93,35.8,0,0,2.7,5.4 -2021-11-08T20:00,36.1,94,34.6,0,0,4.8,6.9 -2021-11-08T21:00,37.1,90,34.4,0,0,4.1,6.9 -2021-11-08T22:00,35.7,91,33.4,0,0,2.7,5.1 -2021-11-08T23:00,35.2,93,33.4,0,0,5.5,8.7 -2021-11-09T00:00,34.6,91,32.3,0,0,5.4,9.6 -2021-11-09T01:00,31.8,93,29.9,0,0,4.8,8.7 -2021-11-09T02:00,34.3,87,30.7,0,0,0.5,6.3 -2021-11-09T03:00,30,94,28.5,0,0,4.5,5.1 -2021-11-09T04:00,29.3,96,28.4,0,0,5.5,6.7 -2021-11-09T05:00,32.3,98,31.7,0,0,2.5,6.7 -2021-11-09T06:00,30.6,95,29.4,0,0,1.7,3.6 -2021-11-09T07:00,30.3,96,29.3,0,0,2.7,4.3 -2021-11-09T08:00,31.8,89,29,0,0,4.8,10.5 -2021-11-09T09:00,34.5,90,31.8,0,0,3.2,10.3 -2021-11-09T10:00,40.6,76,33.5,0,0,2.5,9.4 -2021-11-09T11:00,48.1,51,31,0,0,5.3,12.5 -2021-11-09T12:00,53.1,41,29.8,0,0,7.4,15.4 -2021-11-09T13:00,55.6,38,30.7,0,0,7.2,15.4 -2021-11-09T14:00,56.8,39,32.1,0,0,7.4,14.3 -2021-11-09T15:00,56,40,32.1,0,0,8.4,15.4 -2021-11-09T16:00,53.2,44,31.7,0,0,6.2,15.2 -2021-11-09T17:00,47.8,54,32.1,0,0,3.9,10.5 -2021-11-09T18:00,46.4,58,32.5,0,0,3.8,5.6 -2021-11-09T19:00,44.5,63,32.5,0,0,2.6,4.3 -2021-11-09T20:00,42.2,69,32.7,0,0,3,4 -2021-11-09T21:00,43.2,66,32.5,0,0,1.8,3.6 -2021-11-09T22:00,41.4,71,32.5,0,0,2,2.7 -2021-11-09T23:00,40,71,31.5,0,0,0.4,3.1 -2021-11-10T00:00,38.7,72,30.5,0,0,2.6,3.4 -2021-11-10T01:00,39.1,67,28.9,0,0,2.9,4.5 -2021-11-10T02:00,39.2,65,28.6,0,0,3.8,5.6 -2021-11-10T03:00,38.1,69,28.8,0,0,4,6.5 -2021-11-10T04:00,37.1,69,27.9,0,0,3.1,5.8 -2021-11-10T05:00,43.5,49,25.8,0,0,3.4,4.5 -2021-11-10T06:00,44.6,48,26.2,0,0,6.5,10.1 -2021-11-10T07:00,49,44,27.9,0,0,15.1,23.9 -2021-11-10T08:00,49.2,37,23.7,0,0,15.4,24.8 -2021-11-10T09:00,52.2,29,21,0,0,14.8,25.1 -2021-11-10T10:00,54.4,23,17.6,0,0,15.5,26.6 -2021-11-10T11:00,55.1,22,16.7,0,0,20.2,34 -2021-11-10T12:00,55.9,20,15.3,0,0,21.1,36.5 -2021-11-10T13:00,56.6,17,12.2,0,0,17.2,36.2 -2021-11-10T14:00,55.6,16,10.1,0,0,17.4,31.3 -2021-11-10T15:00,54.2,17,10.4,0,0,15.5,30.4 -2021-11-10T16:00,51.9,20,11.5,0,0,11.7,26.4 -2021-11-10T17:00,48.1,28,16.6,0,0,11.9,19.5 -2021-11-10T18:00,46,35,19.5,0,0,10.5,20.8 -2021-11-10T19:00,45.2,34,18.8,0,0,9,16.8 -2021-11-10T20:00,44.7,35,18.7,0,0,8.4,14.8 -2021-11-10T21:00,41.3,42,20,0,0,4.9,13.4 -2021-11-10T22:00,37.6,51,21,0,0,4.6,7.8 -2021-11-10T23:00,39.2,49,21.5,0,0,4.8,7.8 -2021-11-11T00:00,40.6,46,21.2,0,0,6.1,10.1 -2021-11-11T01:00,42.9,39,19.6,0,0,10.3,16.1 -2021-11-11T02:00,38.7,40,16.5,0,0,6.3,16.8 -2021-11-11T03:00,32.6,56,18.5,0,0,6,10.5 -2021-11-11T04:00,35.2,49,17.9,0,0,5.1,7.6 -2021-11-11T05:00,29.5,68,20.4,0,0,4,7.2 -2021-11-11T06:00,29.3,67,19.7,0,0,4.8,8.1 -2021-11-11T07:00,28,69,19.1,0,0,6.1,8.1 -2021-11-11T08:00,34.4,53,19,0,0,4.8,8.7 -2021-11-11T09:00,42.4,38,18.4,0,0,3.7,9.8 -2021-11-11T10:00,46.9,28,15.5,0,0,4.6,10.7 -2021-11-11T11:00,50.3,22,12.4,0,0,3.6,13.4 -2021-11-11T12:00,53.1,20,13.1,0,0,11.1,20.6 -2021-11-11T13:00,55,19,13.9,0,0,13,24.2 -2021-11-11T14:00,54.4,21,15.5,0,0,12.2,23.7 -2021-11-11T15:00,54.1,23,17.1,0,0,11.5,21.7 -2021-11-11T16:00,52.8,27,19.6,0,0,7.2,20.4 -2021-11-11T17:00,49.2,39,25.1,0,0,5.5,12.5 -2021-11-11T18:00,50.4,37,25.3,0,0,7.1,11.6 -2021-11-11T19:00,49.4,41,26.8,0,0,5.1,11.2 -2021-11-11T20:00,46.7,50,28.9,0,0,4,8.7 -2021-11-11T21:00,46.9,53,30.5,0,0,4.1,7.2 -2021-11-11T22:00,44.9,59,31.6,0.031,0,2.1,7.4 -2021-11-11T23:00,38.4,75,31.3,0,0,13.3,23.3 -2021-11-12T00:00,36.1,74,28.5,0,0,3.3,21 -2021-11-12T01:00,33.9,75,26.9,0,0,4.4,6.5 -2021-11-12T02:00,34.8,71,26.2,0,0,5.9,9.4 -2021-11-12T03:00,33.3,75,26.2,0,0,5.4,9.4 -2021-11-12T04:00,32.9,68,23.6,0,0,7.2,11 -2021-11-12T05:00,32.5,51,16.2,0,0,4.7,10.7 -2021-11-12T06:00,32.6,51,16.6,0,0,3.5,8.5 -2021-11-12T07:00,33,53,17.8,0,0,2.1,6.5 -2021-11-12T08:00,33.5,54,18.8,0,0,1.8,5.1 -2021-11-12T09:00,36,51,19.6,0,0,1.1,6 -2021-11-12T10:00,37.2,49,20,0,0,2.1,7.2 -2021-11-12T11:00,41.3,45,21.3,0,0,1.7,9.2 -2021-11-12T12:00,46.5,39,22.8,0,0,4.8,12.3 -2021-11-12T13:00,50.8,35,23.9,0,0,5.6,13.2 -2021-11-12T14:00,53.5,32,24.5,0,0,5.8,13.2 -2021-11-12T15:00,54.1,32,25,0,0,5.5,12.8 -2021-11-12T16:00,53.1,34,25.4,0,0,3.8,11 -2021-11-12T17:00,51.1,30,20.5,0,0,3.1,5.4 -2021-11-12T18:00,47.5,35,20.9,0,0,3.6,5.1 -2021-11-12T19:00,48.2,32,20,0,0,5.6,9.2 -2021-11-12T20:00,47.1,34,20.3,0,0,5.4,8.9 -2021-11-12T21:00,47.9,34,21,0,0,3.6,8.7 -2021-11-12T22:00,48.6,36,22.7,0,0,3,6 -2021-11-12T23:00,46.5,44,25.9,0,0,3.7,5.6 -2021-11-13T00:00,45.1,52,28.4,0,0,4.5,7.6 -2021-11-13T01:00,45.8,51,28.5,0,0,5.5,8.7 -2021-11-13T02:00,45.4,51,28.5,0,0,5.7,10.5 -2021-11-13T03:00,44.2,54,28.7,0,0,4.2,9.4 -2021-11-13T04:00,43.1,56,28.6,0,0,10,15.2 -2021-11-13T05:00,43,60,29.8,0,0,8,15.2 -2021-11-13T06:00,41.6,62,29.4,0,0,4.5,12.8 -2021-11-13T07:00,40.9,62,29,0,0,8.2,10.3 -2021-11-13T08:00,50.1,42,28,0,0,7.2,10.5 -2021-11-13T09:00,57.1,33,28,0,0,10,16.3 -2021-11-13T10:00,62.2,25,26.2,0,0,7.4,15.7 -2021-11-13T11:00,63.9,23,25.1,0,0,3.8,13.6 -2021-11-13T12:00,65.3,20,23.7,0,0,10,19.2 -2021-11-13T13:00,64.2,23,25.3,0,0,7.8,19.2 -2021-11-13T14:00,62.9,25,26.9,0,0,1.8,15.9 -2021-11-13T15:00,63.3,25,27.1,0,0,5.2,9.8 -2021-11-13T16:00,61.2,34,32.5,0,0,1.7,9.6 -2021-11-13T17:00,58.4,28,25.6,0,0,7.4,3.6 -2021-11-13T18:00,53.7,35,26.5,0,0,4.7,11.9 -2021-11-13T19:00,53.3,37,27.6,0,0,6.6,11.2 -2021-11-13T20:00,50.4,43,28.5,0,0,6.1,11 -2021-11-13T21:00,45.5,50,28,0,0,4.4,7.2 -2021-11-13T22:00,41.7,56,27.3,0,0,4.6,5.6 -2021-11-13T23:00,43.5,55,28.6,0,0,7.9,10.1 -2021-11-14T00:00,39.4,82,34.3,0,0,6,16.6 -2021-11-14T01:00,37,87,33.6,0,0,4,7.2 -2021-11-14T02:00,35,91,32.7,0,0,4.5,5.8 -2021-11-14T03:00,34.3,92,32.2,0,0,4.4,6.3 -2021-11-14T04:00,32.9,92,30.8,0,0,5.2,6.7 -2021-11-14T05:00,31.8,92,29.7,0,0,3.8,6.9 -2021-11-14T06:00,30,91,27.8,0,0,4.1,5.8 -2021-11-14T07:00,32.2,88,29,0,0,1.3,4.7 -2021-11-14T08:00,35.2,78,29.2,0,0,3.1,6.5 -2021-11-14T09:00,43.6,56,29.1,0,0,2.5,7.8 -2021-11-14T10:00,49.7,43,28.1,0,0,5.5,12.8 -2021-11-14T11:00,56.1,30,25.4,0,0,2.2,12.3 -2021-11-14T12:00,62.6,22,23,0,0,2.9,9.6 -2021-11-14T13:00,68.3,19,24.4,0,0,4.3,10.3 -2021-11-14T14:00,68.7,20,26.2,0,0,4,11.2 -2021-11-14T15:00,67.7,21,26.9,0,0,2.8,9.4 -2021-11-14T16:00,62.4,32,32.5,0,0,4.1,6.5 -2021-11-14T17:00,56.1,33,27.6,0,0,8.8,7.2 -2021-11-14T18:00,56.5,34,28.2,0,0,7.3,11.6 -2021-11-14T19:00,52.7,38,28,0,0,5.5,9.2 -2021-11-14T20:00,53.2,36,26.9,0,0,9.2,13.4 -2021-11-14T21:00,51.4,39,27.5,0,0,12.8,21.3 -2021-11-14T22:00,49.8,42,27.8,0,0,10,19.7 -2021-11-14T23:00,48.6,44,27.9,0,0,6.6,15.7 -2021-11-15T00:00,47.7,46,28.1,0,0,6.4,11.4 -2021-11-15T01:00,48.2,46,28.2,0,0,8.4,12.3 -2021-11-15T02:00,47.8,46,27.9,0,0,12.5,20.4 -2021-11-15T03:00,48.1,44,27.4,0,0,8.5,19.5 -2021-11-15T04:00,49.2,42,26.9,0,0,8.7,14.5 -2021-11-15T05:00,45.9,48,27.3,0,0,7.8,13.9 -2021-11-15T06:00,45.1,49,26.8,0,0,7.4,10.7 -2021-11-15T07:00,46.7,45,26.3,0,0,6.6,10.7 -2021-11-15T08:00,52,37,26.6,0,0,5.4,10.3 -2021-11-15T09:00,59.5,29,27.4,0,0,2.3,8.5 -2021-11-15T10:00,65.5,23,26.8,0,0,6,11.2 -2021-11-15T11:00,69.6,15,20.6,0,0,6.7,13.9 -2021-11-15T12:00,71.4,13,18.7,0,0,4.2,13.4 -2021-11-15T13:00,71.7,12,17,0,0,3,10.3 -2021-11-15T14:00,71.8,11,15,0,0,3.2,7.8 -2021-11-15T15:00,70.5,29,36.3,0,0,1.4,7.2 -2021-11-15T16:00,66.1,20,23.4,0,0,4.1,4.5 -2021-11-15T17:00,60,21,19.5,0,0,4.5,4.5 -2021-11-15T18:00,53.1,26,18.9,0,0,5.8,7.8 -2021-11-15T19:00,50.8,28,19,0,0,5.4,8.5 -2021-11-15T20:00,47.8,32,19.1,0,0,5.6,8.7 -2021-11-15T21:00,47.2,32,19.1,0,0,5.9,7.4 -2021-11-15T22:00,49.4,28,17.7,0,0,5.4,8.1 -2021-11-15T23:00,49.6,27,16.7,0,0,6.8,10.3 -2021-11-16T00:00,50.2,28,18.6,0,0,5.9,11.6 -2021-11-16T01:00,48,33,20.5,0,0,7.1,9.4 -2021-11-16T02:00,48.1,34,20.9,0,0,6.7,9.2 -2021-11-16T03:00,52.8,28,20.7,0,0,8.5,13.2 -2021-11-16T04:00,53,28,21.1,0,0,10.3,15.9 -2021-11-16T05:00,50,33,21.8,0,0,6.6,19.7 -2021-11-16T06:00,48.6,35,22.1,0,0,6.6,10.3 -2021-11-16T07:00,45.1,40,22.2,0,0,6.4,10.1 -2021-11-16T08:00,51.1,32,21.9,0,0,6.9,10.3 -2021-11-16T09:00,59.4,24,22.1,0,0,10.5,15.7 -2021-11-16T10:00,66.4,17,20,0,0,12.1,20.6 -2021-11-16T11:00,69.5,13,16.6,0,0,11.2,22.4 -2021-11-16T12:00,70.7,12,15.1,0,0,10.2,20.1 -2021-11-16T13:00,70.1,12,15.8,0,0,12.5,23.7 -2021-11-16T14:00,69.1,14,17.5,0,0,10.4,22.6 -2021-11-16T15:00,66.4,17,19.9,0,0,12.1,21 -2021-11-16T16:00,63.1,20,20.9,0,0,7.8,21.3 -2021-11-16T17:00,56.2,25,20.4,0,0,4.3,14.3 -2021-11-16T18:00,56.7,25,20.8,0,0,1.1,7.4 -2021-11-16T19:00,49.4,33,21.1,0,0,7.1,8.9 -2021-11-16T20:00,48,35,21.7,0,0,6.3,8.7 -2021-11-16T21:00,44.1,43,22.8,0,0,4.2,8.3 -2021-11-16T22:00,42.1,47,23.5,0,0,6.6,6.7 -2021-11-16T23:00,44.5,51,27.7,0,0,11.7,19 -2021-11-17T00:00,41.1,30,11.9,0,0,7.1,18.8 -2021-11-17T01:00,39.1,31,10.8,0,0,5.3,13.4 -2021-11-17T02:00,36.3,36,12.1,0,0,6.3,10.3 -2021-11-17T03:00,34.8,43,14.6,0,0,9.3,15 -2021-11-17T04:00,31.9,50,15.3,0,0,10.7,17.4 -2021-11-17T05:00,28.6,49,11.8,0,0,5.7,17.9 -2021-11-17T06:00,27.8,53,12.8,0,0,4.4,8.9 -2021-11-17T07:00,28.2,53,13.4,0,0,5.2,8.9 -2021-11-17T08:00,29.6,53,14.5,0,0,6.5,12.1 -2021-11-17T09:00,31.1,48,13.9,0,0,5,12.1 -2021-11-17T10:00,33,43,12.7,0,0,5.2,12.5 -2021-11-17T11:00,34.3,37,10.7,0,0,5.6,13.6 -2021-11-17T12:00,35.6,34,9.8,0,0,4.8,13.9 -2021-11-17T13:00,36.7,31,9,0,0,4,13 -2021-11-17T14:00,37.7,29,8.1,0,0,2.9,11.6 -2021-11-17T15:00,37.8,27,7.1,0,0,4.1,10.1 -2021-11-17T16:00,36.9,28,7.1,0,0,4.3,10.1 -2021-11-17T17:00,31,43,11.3,0,0,4.2,8.1 -2021-11-17T18:00,31.6,43,11.5,0,0,1.8,5.4 -2021-11-17T19:00,30.7,45,11.9,0,0,0.4,2.5 -2021-11-17T20:00,29.5,50,13.3,0,0,1,2 -2021-11-17T21:00,26.6,56,12.8,0,0,4.3,4.7 -2021-11-17T22:00,24.4,62,13,0,0,5.4,6.5 -2021-11-17T23:00,23.2,69,14.5,0,0,5.4,6.7 -2021-11-18T00:00,22.7,76,16.2,0,0,4.7,6.5 -2021-11-18T01:00,22,81,17.1,0,0,3.9,6 -2021-11-18T02:00,21.5,83,17,0,0,3.5,5.4 -2021-11-18T03:00,21.2,82,16.7,0,0,3.4,5.4 -2021-11-18T04:00,20.8,82,16.2,0,0,3.4,5.4 -2021-11-18T05:00,19.5,82,14.8,0,0,4.3,5.1 -2021-11-18T06:00,19.1,77,13.2,0,0,4.7,6 -2021-11-18T07:00,18.9,70,10.9,0,0,4.8,6.3 -2021-11-18T08:00,24.7,48,8,0,0,4.1,7.6 -2021-11-18T09:00,30.7,31,3.6,0,0,2.6,8.1 -2021-11-18T10:00,37.2,19,-1.3,0,0,1.4,8.3 -2021-11-18T11:00,42.9,13,-4.7,0,0,2.5,8.7 -2021-11-18T12:00,46.8,11,-5.4,0,0,1.9,9.2 -2021-11-18T13:00,48.7,11,-3.8,0,0,3.4,9.4 -2021-11-18T14:00,49.4,12,-1.1,0,0,3.8,9.6 -2021-11-18T15:00,47,19,6.9,0,0,2.7,8.9 -2021-11-18T16:00,37.5,32,10.2,0,0,6.7,7.8 -2021-11-18T17:00,46.6,15,1.2,0,0,2,8.7 -2021-11-18T18:00,42.4,20,4.1,0,0,3.1,3.6 -2021-11-18T19:00,37.5,29,8.2,0,0,2.7,4 -2021-11-18T20:00,35.8,33,9.2,0,0,2.7,3.6 -2021-11-18T21:00,36.3,30,8.1,0,0,0.7,3.6 -2021-11-18T22:00,30.3,37,7.3,0,0,3.7,4 -2021-11-18T23:00,28.2,38,5.9,0,0,4,5.6 -2021-11-19T00:00,28.5,36,4.7,0,0,5.4,6.3 -2021-11-19T01:00,29.1,31,2,0,0,5.2,7.4 -2021-11-19T02:00,31.5,25,-0.3,0,0,4.5,6.7 -2021-11-19T03:00,30.1,28,0.9,0,0,5.4,6.7 -2021-11-19T04:00,28.9,31,1.9,0,0,2.8,6.3 -2021-11-19T05:00,37.3,21,0.7,0,0,0.5,5.1 -2021-11-19T06:00,30.7,29,2.4,0,0,5.1,6.5 -2021-11-19T07:00,32.9,29,3.8,0,0,4.3,6.7 -2021-11-19T08:00,37.3,28,7.1,0,0,4.3,6.5 -2021-11-19T09:00,42.7,24,8.2,0,0,9,13.9 -2021-11-19T10:00,50.1,19,10,0,0,4.3,14.1 -2021-11-19T11:00,55.5,17,10.7,0,0,4.7,9.8 -2021-11-19T12:00,57.7,16,11.4,0,0,4.9,13 -2021-11-19T13:00,60.5,14,10.8,0,0,3.3,11.4 -2021-11-19T14:00,61.6,14,12.6,0,0,2.1,9.4 -2021-11-19T15:00,61.5,15,13.6,0,0,1.1,7.6 -2021-11-19T16:00,60.3,16,14.1,0,0,2.5,4 -2021-11-19T17:00,54.8,28,22.6,0,0,16.8,8.9 -2021-11-19T18:00,53.6,29,21.9,0,0,13.5,28 -2021-11-19T19:00,47.6,37,22.6,0,0,4.5,21.3 -2021-11-19T20:00,43.1,45,22.9,0,0,4.8,7.2 -2021-11-19T21:00,42.7,36,17.9,0,0,7.3,14.1 -2021-11-19T22:00,39.9,39,17.1,0,0,6.5,11.4 -2021-11-19T23:00,37.9,45,18.3,0,0,5.5,8.3 -2021-11-20T00:00,35.9,54,20.7,0,0,3.7,7.2 -2021-11-20T01:00,36.8,52,20.9,0,0,3.2,5.8 -2021-11-20T02:00,32.6,62,21,0,0,3.8,6 -2021-11-20T03:00,33.2,59,20.6,0,0,5.1,8.3 -2021-11-20T04:00,31.4,64,20.8,0,0,4.2,8.3 -2021-11-20T05:00,31.9,64,20.9,0,0,3.1,6.3 -2021-11-20T06:00,29.4,71,21.3,0,0,4.3,6.5 -2021-11-20T07:00,28.8,74,21.4,0,0,6.4,7.6 -2021-11-20T08:00,35.2,57,21.5,0,0,4.6,7.6 -2021-11-20T09:00,41.9,45,22,0,0,2.1,7.2 -2021-11-20T10:00,49.1,33,21.3,0,0,4.4,10.1 -2021-11-20T11:00,52.8,30,22.3,0,0,6.5,13.4 -2021-11-20T12:00,53.8,30,22.8,0,0,8.4,15.9 -2021-11-20T13:00,53.4,31,23.6,0,0,11.4,20.6 -2021-11-20T14:00,51.9,36,26,0,0,9.8,21 -2021-11-20T15:00,51.1,38,26.2,0,0,7.7,17.9 -2021-11-20T16:00,48.3,46,28.2,0.004,0,7.3,13.6 -2021-11-20T17:00,43.8,63,32,0,0,6.2,11.6 -2021-11-20T18:00,39.1,85,34.9,0.024,0.028,3.6,9.8 -2021-11-20T19:00,39.3,86,35.4,0.016,0.055,1.1,5.4 -2021-11-20T20:00,37.2,97,36.3,0.016,0.248,4.3,4.9 -2021-11-20T21:00,36.2,95,35.1,0,0,2.6,7.4 -2021-11-20T22:00,34.9,95,33.6,0,0,3.3,5.4 -2021-11-20T23:00,32.6,96,31.6,0,0,4.2,6.5 -2021-11-21T00:00,31.8,93,29.9,0,0,5,8.3 -2021-11-21T01:00,29.3,88,26.1,0,0,5.3,8.3 -2021-11-21T02:00,28.3,79,22.6,0,0,6.5,8.9 -2021-11-21T03:00,31,68,21.6,0,0,6.5,10.1 -2021-11-21T04:00,31.2,66,21,0,0,6.7,10.5 -2021-11-21T05:00,32.2,65,21.8,0,0,6.3,10.7 -2021-11-21T06:00,29.8,69,20.8,0,0,6.9,9.6 -2021-11-21T07:00,35,53,19.6,0,0,4,10.3 -2021-11-21T08:00,33.4,58,20.1,0,0,2.9,4.7 -2021-11-21T09:00,36.9,67,26.8,0,0,6,11 -2021-11-21T10:00,41.5,46,22.1,0,0,9.1,16.6 -2021-11-21T11:00,46.1,31,17.2,0,0,9.2,17.4 -2021-11-21T12:00,50.5,23,14.2,0,0,7.9,17.4 -2021-11-21T13:00,53.4,16,8.6,0,0,5.9,15.9 -2021-11-21T14:00,55,13,5.6,0,0,4.3,13 -2021-11-21T15:00,55.2,13,5,0,0,2.2,10.1 -2021-11-21T16:00,48.9,24,13.6,0,0,5.1,5.6 -2021-11-21T17:00,43.3,25,9.9,0,0,6.3,6 -2021-11-21T18:00,43.8,24,9.1,0,0,4.7,7.6 -2021-11-21T19:00,44.3,21,6.9,0,0,2,5.8 -2021-11-21T20:00,41.7,23,6.4,0,0,2.5,3.1 -2021-11-21T21:00,32.7,36,8.5,0,0,4.3,6.5 -2021-11-21T22:00,30.2,41,9.2,0,0,4.7,7.2 -2021-11-21T23:00,30.1,37,7,0,0,6.7,9.6 -2021-11-22T00:00,30.1,33,4.3,0,0,6.8,11.4 -2021-11-22T01:00,30,32,3.6,0,0,5.1,10.7 -2021-11-22T02:00,30.9,32,4.3,0,0,6.7,10.3 -2021-11-22T03:00,30.9,32,4.4,0,0,6.5,11.2 -2021-11-22T04:00,30.7,32,4.5,0,0,6,10.1 -2021-11-22T05:00,29.5,38,7.2,0,0,5,11 -2021-11-22T06:00,29.4,39,7.6,0,0,4.7,7.6 -2021-11-22T07:00,30.6,38,8.2,0,0,5.2,8.3 -2021-11-22T08:00,35.4,32,8.5,0,0,6.6,9.6 -2021-11-22T09:00,43,23,8,0,0,7.6,12.5 -2021-11-22T10:00,51.8,17,8.7,0,0,7.3,13.2 -2021-11-22T11:00,59.7,13,8.1,0,0,4.4,12.5 -2021-11-22T12:00,62.8,11,8,0,0,3.7,10.3 -2021-11-22T13:00,65.1,11,8.8,0,0,3.4,9.8 -2021-11-22T14:00,66.4,11,9.2,0,0,3.7,9.2 -2021-11-22T15:00,65.9,11,10,0,0,4.5,8.5 -2021-11-22T16:00,58.2,19,15.5,0,0,6.3,7.4 -2021-11-22T17:00,54.4,19,12.4,0,0,5,8.7 -2021-11-22T18:00,51.5,22,13.8,0,0,8.2,13 -2021-11-22T19:00,45.4,29,15.2,0,0,5.3,13 -2021-11-22T20:00,42.4,37,18.1,0,0,4.6,7.8 -2021-11-22T21:00,39.6,39,16.3,0,0,5.2,7.4 -2021-11-22T22:00,37.1,40,15.3,0,0,5.3,7.2 -2021-11-22T23:00,36,40,13.7,0,0,6,7.4 -2021-11-23T00:00,34.1,41,13,0,0,7.1,8.5 -2021-11-23T01:00,33.5,41,12.6,0,0,6.5,8.5 -2021-11-23T02:00,31.8,44,12.6,0,0,6.5,7.6 -2021-11-23T03:00,30.4,47,12.5,0,0,6.2,7.6 -2021-11-23T04:00,30.7,47,12.6,0,0,6,7.4 -2021-11-23T05:00,31,43,11.2,0,0,5.7,7.2 -2021-11-23T06:00,30.1,44,10.6,0,0,5.4,6.7 -2021-11-23T07:00,29.2,45,10.5,0,0,5.3,6.7 -2021-11-23T08:00,34.9,39,12.6,0,0,2.3,6.3 -2021-11-23T09:00,43.5,29,13.1,0,0,3,6.3 -2021-11-23T10:00,52.2,21,13,0,0,3.7,8.7 -2021-11-23T11:00,60.2,13,8.4,0,0,7.7,15.9 -2021-11-23T12:00,64.9,9,4.2,0,0,0.2,14.3 -2021-11-23T13:00,67.4,8,5.2,0,0,4.2,10.1 -2021-11-23T14:00,67.1,10,9.5,0,0,1.4,10.1 -2021-11-23T15:00,64.9,14,14.5,0,0,3.5,5.6 -2021-11-23T16:00,60.2,18,15.9,0,0,5.9,9.2 -2021-11-23T17:00,56.2,19,14.1,0,0,5.5,8.9 -2021-11-23T18:00,56.3,20,15.4,0,0,10.1,16.6 -2021-11-23T19:00,54.9,23,17.5,0,0,7.2,16.1 -2021-11-23T20:00,51.9,28,19.5,0,0,5.4,11.6 -2021-11-23T21:00,46.6,36,20.9,0,0,5.4,8.5 -2021-11-23T22:00,45.1,39,21.8,0,0,5.8,8.3 -2021-11-23T23:00,41.2,48,22.8,0,0,6.5,8.9 -2021-11-24T00:00,39.3,52,23.3,0,0,4.2,8.1 -2021-11-24T01:00,37.9,55,23.3,0,0,3.6,5.4 -2021-11-24T02:00,36.9,58,23.4,0,0,2.2,4.7 -2021-11-24T03:00,31.9,72,23.8,0,0,2.6,2.9 -2021-11-24T04:00,31.2,75,24.2,0,0,5,6.9 -2021-11-24T05:00,36,59,22.9,0,0,6.7,7.8 -2021-11-24T06:00,36.1,51,19.7,0,0,5.9,11.9 -2021-11-24T07:00,35.2,51,18.7,0,0,4,6.7 -2021-11-24T08:00,37.2,47,18.7,0,0.028,1.6,4.7 -2021-11-24T09:00,37.9,41,16.4,0,0,1.4,5.4 -2021-11-24T10:00,39.6,40,17.1,0,0,4.1,8.5 -2021-11-24T11:00,39.4,43,18.8,0,0,7.5,13.6 -2021-11-24T12:00,39,45,19.4,0,0,6.3,15.7 -2021-11-24T13:00,41.5,38,17.7,0,0,3.4,12.3 -2021-11-24T14:00,43.3,33,16.3,0,0,2.2,11 -2021-11-24T15:00,43.3,25,9.5,0,0,9.3,13.9 -2021-11-24T16:00,39.1,44,19.2,0,0,11.4,24.4 -2021-11-24T17:00,35.5,64,24.7,0,0,6.9,18.1 -2021-11-24T18:00,33.7,54,19,0,0.083,10.5,17 -2021-11-24T19:00,31.8,58,18.6,0,0.028,6.6,17 -2021-11-24T20:00,29.6,64,18.8,0,0,2.5,11.2 -2021-11-24T21:00,27.6,69,18.9,0,0,2.7,4.5 -2021-11-24T22:00,25.2,77,19,0,0,4.7,6 -2021-11-24T23:00,24.9,78,18.9,0,0,4.6,6.7 -2021-11-25T00:00,24.9,77,18.6,0,0,5.1,8.7 -2021-11-25T01:00,22.6,83,18.3,0,0,6.1,8.1 -2021-11-25T02:00,22.8,83,18.4,0,0,3.8,7.4 -2021-11-25T03:00,22.5,80,17.2,0,0,4,5.8 -2021-11-25T04:00,23.5,69,14.6,0,0,4.2,7.4 -2021-11-25T05:00,24.3,49,7.8,0,0,6,7.4 -2021-11-25T06:00,24.3,44,5.6,0,0,5.9,7.4 -2021-11-25T07:00,23.7,43,4.6,0,0,4.9,7.8 -2021-11-25T08:00,29.4,33,3.7,0,0,5.9,9.2 -2021-11-25T09:00,36.7,23,2.6,0,0,6.3,11.4 -2021-11-25T10:00,44.7,14,-1,0,0,6.6,13.2 -2021-11-25T11:00,50.6,10,-4.4,0,0,6.4,13.2 -2021-11-25T12:00,54.4,9,-3.3,0,0,5.2,13.2 -2021-11-25T13:00,56,10,-0.9,0,0,9.4,16.1 -2021-11-25T14:00,54.8,11,1.9,0,0,12.8,21.7 -2021-11-25T15:00,53,13,2.9,0,0,12.8,21.7 -2021-11-25T16:00,49.3,15,3.6,0,0,13.5,21.7 -2021-11-25T17:00,46.9,17,4.4,0,0,19.7,26.8 -2021-11-25T18:00,46.4,18,5.3,0,0,20.9,33.3 -2021-11-25T19:00,46.1,19,6.1,0,0,20.6,33.6 -2021-11-25T20:00,46.1,20,6.7,0,0,18.6,32.9 -2021-11-25T21:00,46,20,7,0,0,17.2,29.8 -2021-11-25T22:00,45.8,20,7.3,0,0,15.7,28 -2021-11-25T23:00,44.9,22,7.8,0,0,12.4,25.1 -2021-11-26T00:00,44.5,22,8.2,0,0,9.8,20.1 -2021-11-26T01:00,43.3,24,9.2,0,0,7.1,15.9 -2021-11-26T02:00,40.6,29,10.9,0,0,5.9,11.2 -2021-11-26T03:00,38.6,34,12.5,0,0,5.4,8.7 -2021-11-26T04:00,36.3,39,13.7,0,0,4.9,8.1 -2021-11-26T05:00,34.6,44,15.1,0,0,7.4,7.4 -2021-11-26T06:00,34.8,43,14.6,0,0,9.1,10.7 -2021-11-26T07:00,36.4,41,15,0,0,7.2,10.7 -2021-11-26T08:00,39.8,42,18.7,0,0,5.6,8.3 -2021-11-26T09:00,49.7,28,17.8,0,0,2.9,6.7 -2021-11-26T10:00,56.5,22,18.2,0,0,4.1,9.8 -2021-11-26T11:00,61.5,18,17.8,0,0,0.5,9.6 -2021-11-26T12:00,65.3,14,15.6,0,0,7.3,14.3 -2021-11-26T13:00,66.4,14,15.6,0,0,7.1,15.9 -2021-11-26T14:00,66.5,14,16.4,0,0,6.6,14.3 -2021-11-26T15:00,65.1,16,17.7,0,0,6.8,12.8 -2021-11-26T16:00,60.3,21,19.9,0,0,7.1,11.9 -2021-11-26T17:00,54.2,27,20.8,0,0,6.5,17.4 -2021-11-26T18:00,54.7,26,20.1,0,0,7.7,12.3 -2021-11-26T19:00,53.2,25,17.9,0,0,7.8,14.8 -2021-11-26T20:00,49.1,28,17.7,0,0,7.9,12.5 -2021-11-26T21:00,46.3,32,18.1,0,0,4.4,9.8 -2021-11-26T22:00,45.7,35,19.9,0,0,5.2,8.7 -2021-11-26T23:00,43.2,40,20.5,0,0,7.7,11.9 -2021-11-27T00:00,38,49,20.8,0,0,5.1,11.9 -2021-11-27T01:00,37.2,51,20.6,0,0,4.5,6.9 -2021-11-27T02:00,35.9,52,20.1,0,0,6,7.6 -2021-11-27T03:00,35.6,52,19.8,0,0,4.7,7.6 -2021-11-27T04:00,32.6,58,19.7,0,0,6.9,7.8 -2021-11-27T05:00,36,54,20.8,0,0,3.1,8.3 -2021-11-27T06:00,30.8,66,20.7,0,0,5,6.5 -2021-11-27T07:00,29.8,68,20.5,0,0,4.6,6.5 -2021-11-27T08:00,35.7,53,20.4,0,0,4.1,6.3 -2021-11-27T09:00,43.4,38,19.3,0,0,6,10.5 -2021-11-27T10:00,47.6,26,14.3,0,0,5.7,12.3 -2021-11-27T11:00,50,25,15.9,0,0,5,12.3 -2021-11-27T12:00,51.8,26,17.9,0,0,5.5,12.8 -2021-11-27T13:00,52.9,26,18.9,0,0,6.5,13.9 -2021-11-27T14:00,53.2,26,19,0,0,7,14.3 -2021-11-27T15:00,52.3,27,19,0,0,6.8,13.9 -2021-11-27T16:00,49.8,30,19.6,0,0,4,12.1 -2021-11-27T17:00,43.8,40,20.9,0,0,6.3,6 -2021-11-27T18:00,43.8,40,20.8,0,0,4.6,7.4 -2021-11-27T19:00,43.1,41,21.2,0,0,4.1,7.6 -2021-11-27T20:00,43.1,42,21.3,0,0,0.2,4.7 -2021-11-27T21:00,43,42,21.4,0,0,1.8,2.2 -2021-11-27T22:00,40.8,46,21.7,0,0,1.3,2.7 -2021-11-27T23:00,35.2,58,21.9,0,0,2.8,3.4 -2021-11-28T00:00,31.3,68,22,0,0,1.4,4 -2021-11-28T01:00,29.7,74,22.5,0,0,4.2,5.6 -2021-11-28T02:00,32.7,66,22.5,0,0,2.3,4.9 -2021-11-28T03:00,27.6,80,22.1,0,0,4.2,4.5 -2021-11-28T04:00,26.6,81,21.5,0,0,3.3,5.6 -2021-11-28T05:00,28.1,73,20.8,0,0,5.4,7.2 -2021-11-28T06:00,28.7,68,19.5,0,0,8.7,13.2 -2021-11-28T07:00,29.7,65,19.4,0,0,6.2,13.4 -2021-11-28T08:00,33.4,58,20,0,0,8.3,11.9 -2021-11-28T09:00,41.1,44,20.8,0,0,7.5,13.2 -2021-11-28T10:00,49.7,33,21.7,0,0,6.2,12.8 -2021-11-28T11:00,56.2,26,21.7,0,0,6.3,12.1 -2021-11-28T12:00,60.9,22,21.7,0,0,8.1,15 -2021-11-28T13:00,64.9,20,22.6,0,0,3.5,15 -2021-11-28T14:00,66.3,20,24.2,0,0,2.2,8.9 -2021-11-28T15:00,65.6,22,25.7,0,0,4.2,8.3 -2021-11-28T16:00,58.5,30,26.9,0,0,5.3,7.4 -2021-11-28T17:00,53.4,35,26.2,0,0,7.7,9.8 -2021-11-28T18:00,55.9,31,26,0,0,12.2,18.6 -2021-11-28T19:00,56,31,26,0,0,17,27.1 -2021-11-28T20:00,56.5,30,25.3,0,0,17.9,28.9 -2021-11-28T21:00,56.6,29,24.9,0,0,15,28.9 -2021-11-28T22:00,55.6,30,24.6,0,0,10.2,24.4 -2021-11-28T23:00,47.5,41,24.8,0,0,9.4,16.8 -2021-11-29T00:00,44.1,46,24.4,0,0,6,11.2 -2021-11-29T01:00,42.5,48,24.2,0,0,5.1,7.8 -2021-11-29T02:00,40.8,51,24.1,0,0,5.9,7.8 -2021-11-29T03:00,40.4,51,23.8,0,0,5.2,7.6 -2021-11-29T04:00,41.5,49,23.8,0,0,5.7,8.9 -2021-11-29T05:00,39.7,52,23.5,0,0,8,10.3 -2021-11-29T06:00,36.5,61,24.2,0,0,7.3,12.3 -2021-11-29T07:00,35.5,64,24.5,0,0,7.3,8.9 -2021-11-29T08:00,42,51,25.1,0,0,5,8.7 -2021-11-29T09:00,52.3,36,26,0,0,6.1,10.1 -2021-11-29T10:00,61.8,26,26.8,0,0,5.7,11 -2021-11-29T11:00,68,20,25.9,0,0,3.5,11.4 -2021-11-29T12:00,70.3,19,26.3,0,0,3.4,8.9 -2021-11-29T13:00,71.2,18,25.2,0,0,5.6,11.9 -2021-11-29T14:00,70.6,17,23.7,0,0,7.5,13.6 -2021-11-29T15:00,69.2,18,23.5,0,0,7.3,13.9 -2021-11-29T16:00,63.1,23,24.8,0,0,4.8,12.1 -2021-11-29T17:00,55.4,32,26.3,0,0,8.1,10.3 -2021-11-29T18:00,59.3,27,25.3,0,0,2.3,9.2 -2021-11-29T19:00,48.7,44,28,0,0,3.8,5.4 -2021-11-29T20:00,45,54,29.3,0,0,3.8,5.1 -2021-11-29T21:00,43.3,56,28.6,0,0,5,6.9 -2021-11-29T22:00,40.6,62,28.6,0,0,5.8,7.2 -2021-11-29T23:00,41.4,59,28,0,0,4.9,7.6 -2021-11-30T00:00,41,58,27.1,0,0,5.4,8.5 -2021-11-30T01:00,39.7,59,26.7,0,0,6.7,9.4 -2021-11-30T02:00,42,53,26.2,0,0,4,8.1 -2021-11-30T03:00,36.9,64,25.7,0,0,5.1,8.1 -2021-11-30T04:00,36.7,62,25.1,0,0,6.7,11.2 -2021-11-30T05:00,36,57,22.4,0,0,7.1,17.4 -2021-11-30T06:00,34.9,59,21.8,0,0,6.4,9.4 -2021-11-30T07:00,31.9,65,21.6,0,0,7.6,8.3 -2021-11-30T08:00,36.6,60,24.1,0,0,3.8,9.6 -2021-11-30T09:00,40.8,56,26.3,0,0,2.1,5.8 -2021-11-30T10:00,43.5,55,28.4,0,0,3.7,9.8 -2021-11-30T11:00,46.8,48,27.9,0,0,4.5,11.2 -2021-11-30T12:00,51.1,36,24.8,0,0,6,13.6 -2021-11-30T13:00,54.6,26,20.4,0,0,6.7,14.3 -2021-11-30T14:00,58,20,16.6,0,0,7.2,14.5 -2021-11-30T15:00,60.4,15,12.1,0,0,6.1,13.6 -2021-11-30T16:00,54.1,21,14.6,0,0,6.3,10.1 -2021-11-30T17:00,52.3,19,11.5,0,0,4.9,7.8 -2021-11-30T18:00,45.1,26,11.8,0,0,7.1,8.9 -2021-11-30T19:00,48.2,22,10.7,0,0,3.4,8.5 -2021-11-30T20:00,46.1,22,9.5,0,0,6.7,10.5 -2021-11-30T21:00,44,28,12.7,0,0,5.5,10.3 -2021-11-30T22:00,41.6,40,19.2,0,0,4.7,8.1 -2021-11-30T23:00,40.4,39,17.3,0,0,1.7,7.4 -2021-12-01T00:00,37.8,37,14,0,0,2.2,3.6 -2021-12-01T01:00,37,37,13.1,0,0,4.3,6.5 -2021-12-01T02:00,37.4,33,10.7,0,0,8.1,11.6 -2021-12-01T03:00,36,34,10.1,0,0,10.6,16.3 -2021-12-01T04:00,35.6,35,10.4,0,0,9.8,17 -2021-12-01T05:00,36.3,39,13.6,0,0,7.6,15 -2021-12-01T06:00,37,39,14.5,0,0,6,12.3 -2021-12-01T07:00,37.9,41,16.4,0,0,5.3,10.5 -2021-12-01T08:00,41.5,39,18.4,0,0,6.1,9.8 -2021-12-01T09:00,48.8,32,20.1,0,0,9.4,14.8 -2021-12-01T10:00,57.6,26,22.6,0,0,8.6,15 -2021-12-01T11:00,63.4,22,24.1,0,0,7.7,15.2 -2021-12-01T12:00,67.4,20,25.1,0,0,2.9,14.3 -2021-12-01T13:00,70.8,18,24.7,0,0,7.3,13.9 -2021-12-01T14:00,71.2,17,24,0,0,10.8,18.6 -2021-12-01T15:00,68.5,20,25.8,0,0,12.8,21.5 -2021-12-01T16:00,64.2,23,25.6,0,0,12.8,21.9 -2021-12-01T17:00,60.3,25,24.5,0,0,13.5,20.8 -2021-12-01T18:00,59.8,26,24.4,0,0,17,27.5 -2021-12-01T19:00,58.7,26,23.8,0,0,15.7,27.5 -2021-12-01T20:00,58.1,26,23.1,0,0,15.2,25.3 -2021-12-01T21:00,57.5,26,22.8,0,0,12.3,24.6 -2021-12-01T22:00,53.5,30,22.8,0,0,6.1,20.4 -2021-12-01T23:00,50.6,33,22.8,0,0,4.8,11.2 -2021-12-02T00:00,44.6,42,22.9,0,0,6.1,7.8 -2021-12-02T01:00,42.7,44,22.6,0,0,7.9,8.9 -2021-12-02T02:00,41.8,44,21.7,0,0,8.1,9.4 -2021-12-02T03:00,40.9,45,21,0,0,6.9,9.6 -2021-12-02T04:00,41.6,43,20.8,0,0,5.4,8.7 -2021-12-02T05:00,40.8,43,19.9,0,0,5.6,8.5 -2021-12-02T06:00,39.6,44,19.3,0,0,5.2,8.5 -2021-12-02T07:00,36.2,49,19,0,0,7.6,8.9 -2021-12-02T08:00,42,43,21.1,0,0,4,8.9 -2021-12-02T09:00,48.9,30,18.8,0,0,3.7,6.9 -2021-12-02T10:00,56.3,23,19,0,0,4.9,10.3 -2021-12-02T11:00,64,17,18.1,0,0,4.9,11.2 -2021-12-02T12:00,68.5,14,17,0,0,2.7,11 -2021-12-02T13:00,65.8,17,20.3,0,0,11.4,20.4 -2021-12-02T14:00,65.8,17,20.1,0,0,7.7,21 -2021-12-02T15:00,66.1,19,22.1,0,0,6,14.5 -2021-12-02T16:00,58.5,31,27.7,0,0,5.1,10.3 -2021-12-02T17:00,60.4,23,22.2,0,0,1.1,6.7 -2021-12-02T18:00,59.9,23,22.5,0,0,1.5,2.2 -2021-12-02T19:00,50.3,33,22.4,0,0,6.2,7.2 -2021-12-02T20:00,48.2,35,21.9,0,0,6.2,8.9 -2021-12-02T21:00,48.2,35,21.5,0,0,6,8.9 -2021-12-02T22:00,48.7,34,21.3,0,0,6.7,9.6 -2021-12-02T23:00,49.5,32,21,0,0,6.9,10.5 -2021-12-03T00:00,44.2,39,20.6,0,0,9.1,10.5 -2021-12-03T01:00,42.3,41,20.1,0,0,6.9,10.7 -2021-12-03T02:00,41.5,42,19.9,0,0,6.4,8.3 -2021-12-03T03:00,41.3,42,19.8,0,0,6.1,7.6 -2021-12-03T04:00,40.8,42,19.4,0,0,5.6,7.4 -2021-12-03T05:00,35.9,51,19.4,0,0,7.7,6.5 -2021-12-03T06:00,36.1,53,20.8,0,0,6.8,11.4 -2021-12-03T07:00,32,69,22.9,0,0,7.7,11 -2021-12-03T08:00,35.6,63,24.1,0,0,3.7,8.9 -2021-12-03T09:00,40.9,49,23,0,0,4.5,8.9 -2021-12-03T10:00,46.5,39,22.7,0,0,4.4,10.3 -2021-12-03T11:00,50.9,37,25.4,0,0,4.4,11 -2021-12-03T12:00,54.6,36,28,0,0,4.7,11.6 -2021-12-03T13:00,57.7,31,27.1,0,0,4.6,11.6 -2021-12-03T14:00,60,27,25.5,0,0,3.5,11.2 -2021-12-03T15:00,60.6,26,25.3,0,0,4,8.9 -2021-12-03T16:00,56.3,34,28.2,0,0,9.2,14.5 -2021-12-03T17:00,51.1,44,29.9,0,0,11.8,15.2 -2021-12-03T18:00,48,51,30.7,0,0,12.4,19.9 -2021-12-03T19:00,45.8,57,31.3,0,0,9.4,19.7 -2021-12-03T20:00,43.3,62,31.3,0,0,4.8,15 -2021-12-03T21:00,41.2,67,31.2,0,0,4.6,7.6 -2021-12-03T22:00,38.9,72,30.7,0,0,3.1,5.6 -2021-12-03T23:00,36.9,79,30.8,0,0,5,6.3 -2021-12-04T00:00,37.9,74,30.3,0,0,2.9,6 -2021-12-04T01:00,36.8,77,30.1,0,0,1.8,3.4 -2021-12-04T02:00,36.3,78,30.1,0,0,1.3,2.2 -2021-12-04T03:00,31.8,85,27.8,0,0,2.6,3.1 -2021-12-04T04:00,29.8,84,25.6,0,0,3.4,3.8 -2021-12-04T05:00,27.5,85,23.5,0,0,5.1,5.8 -2021-12-04T06:00,27.6,81,22.6,0,0,5.1,6.7 -2021-12-04T07:00,27.6,80,22.3,0,0,5.9,7.2 -2021-12-04T08:00,33.2,64,22.2,0,0,3.4,7.4 -2021-12-04T09:00,41.3,46,22.3,0,0,5.1,9.6 -2021-12-04T10:00,50.5,34,23,0,0,6.3,11.4 -2021-12-04T11:00,58.3,23,20.5,0,0,4.4,11.9 -2021-12-04T12:00,61.3,20,19.5,0,0,3.7,9.8 -2021-12-04T13:00,62.8,19,20.1,0,0,4.5,10.3 -2021-12-04T14:00,63.7,19,20.5,0,0,5.1,10.7 -2021-12-04T15:00,63.7,19,21.2,0,0,4.1,10.3 -2021-12-04T16:00,56.6,28,23.5,0,0,4.5,6.9 -2021-12-04T17:00,58.6,21,18.3,0,0,2.3,6 -2021-12-04T18:00,56,22,17.4,0,0,1.6,3.1 -2021-12-04T19:00,44.2,33,17,0,0,3.7,4.9 -2021-12-04T20:00,41.4,36,16.6,0,0,2.6,4.9 -2021-12-04T21:00,38.1,43,17.5,0,0,1.6,4.5 -2021-12-04T22:00,37.3,45,17.7,0,0,4.1,5.4 -2021-12-04T23:00,36.9,47,18.7,0,0,5.1,6.5 -2021-12-05T00:00,37.3,48,19.2,0,0,5.9,7.8 -2021-12-05T01:00,39.3,43,18.7,0,0,4.6,7.2 -2021-12-05T02:00,39.1,42,17.9,0,0,3.7,5.6 -2021-12-05T03:00,40.2,38,16.8,0,0,6.3,9.2 -2021-12-05T04:00,45,29,14.5,0,0,11.1,17.4 -2021-12-05T05:00,49.4,22,12.3,0,0,11.8,18.6 -2021-12-05T06:00,49.6,21,10.9,0,0,12.6,19.7 -2021-12-05T07:00,48.2,23,12.3,0,0,12.2,20.6 -2021-12-05T08:00,49.1,22,12.3,0,0,11.5,19.7 -2021-12-05T09:00,52.7,20,12.9,0,0,10.3,18.3 -2021-12-05T10:00,57.7,17,12.7,0,0,12.2,19.2 -2021-12-05T11:00,61.9,12,9.4,0,0,9.4,21.9 -2021-12-05T12:00,63.2,11,8.1,0,0,2.5,17.4 -2021-12-05T13:00,63.9,11,7.8,0,0,12.1,20.8 -2021-12-05T14:00,63.8,10,5.4,0,0,9.9,21 -2021-12-05T15:00,61.5,13,9.8,0,0,11,19.9 -2021-12-05T16:00,44,31,15.4,0,0,28.5,42.3 -2021-12-05T17:00,29.9,56,16.3,0,0,9.8,43.6 -2021-12-05T18:00,27.4,47,9.7,0,0,11.4,19.7 -2021-12-05T19:00,25.6,43,6.2,0,0,10.9,20.1 -2021-12-05T20:00,25.1,44,6.4,0,0,7.4,18.8 -2021-12-05T21:00,25.3,44,6.5,0,0,4.2,13 -2021-12-05T22:00,25.9,46,8.1,0,0,6.3,10.5 -2021-12-05T23:00,25,43,5.7,0,0,7.6,12.5 -2021-12-06T00:00,23,43,4,0,0,8.6,14.1 -2021-12-06T01:00,21.4,46,3.9,0,0,6.3,13.6 -2021-12-06T02:00,20.6,48,3.7,0,0,4.2,9.8 -2021-12-06T03:00,19.4,51,4.3,0,0,3.8,6.5 -2021-12-06T04:00,19.1,54,5,0,0,4.2,5.6 -2021-12-06T05:00,18.4,51,3.5,0,0,2.5,5.1 -2021-12-06T06:00,17.8,52,3.2,0,0,2.6,4.3 -2021-12-06T07:00,17.7,53,3.6,0,0,3.5,5.4 -2021-12-06T08:00,18.7,50,3.3,0,0,5.3,10.1 -2021-12-06T09:00,21.2,49,5.1,0,0,4,10.1 -2021-12-06T10:00,23.6,45,5.5,0,0,3.5,10.5 -2021-12-06T11:00,27.4,37,4.4,0,0,4.8,12.3 -2021-12-06T12:00,31.3,30,3.4,0,0,3.5,12.3 -2021-12-06T13:00,33.4,27,2.8,0,0,2.7,10.7 -2021-12-06T14:00,34.9,26,3.2,0,0,2.2,9.2 -2021-12-06T15:00,35.4,25,3.4,0,0,0.7,7.6 -2021-12-06T16:00,32.2,33,6.5,0,0,3,4 -2021-12-06T17:00,27.1,37,3.9,0,0,3.8,3.4 -2021-12-06T18:00,28.1,36,4.7,0,0,3.4,8.3 -2021-12-06T19:00,25.7,40,4.9,0,0,4.6,8.9 -2021-12-06T20:00,26.1,40,5.1,0,0,3.2,7.6 -2021-12-06T21:00,25.2,45,6.8,0,0,3.6,5.6 -2021-12-06T22:00,27.1,40,6.1,0,0,3.5,5.4 -2021-12-06T23:00,28,44,8.7,0,0,5.2,8.5 -2021-12-07T00:00,29,47,11.2,0,0,6.7,9.6 -2021-12-07T01:00,30.8,52,15.3,0,0,7.6,12.3 -2021-12-07T02:00,32.4,55,17.8,0,0,6.3,12.1 -2021-12-07T03:00,30.4,61,18.5,0,0,4.1,9.6 -2021-12-07T04:00,30,63,19,0,0,4.2,6.5 -2021-12-07T05:00,35.6,51,19.3,0,0,3.8,7.6 -2021-12-07T06:00,31.6,60,19.5,0,0,4.5,7.2 -2021-12-07T07:00,31.5,55,17.1,0,0,8.8,15.4 -2021-12-07T08:00,31.6,49,14.5,0,0,5.9,14.1 -2021-12-07T09:00,33.6,43,13.6,0,0,6,12.8 -2021-12-07T10:00,37.3,39,14.8,0,0,4.5,11 -2021-12-07T11:00,40.6,36,15.8,0,0,1.9,10.7 -2021-12-07T12:00,44.3,32,16.5,0,0,6,13.4 -2021-12-07T13:00,47.6,29,17,0,0,4.6,13.4 -2021-12-07T14:00,49.6,27,16.6,0,0,3.9,11.2 -2021-12-07T15:00,50.5,25,16.3,0,0,3.4,9.8 -2021-12-07T16:00,45.9,36,20.6,0,0,4.7,7.6 -2021-12-07T17:00,43.2,33,15.9,0,0,8.4,6.7 -2021-12-07T18:00,48.8,26,15.4,0,0,5.8,10.1 -2021-12-07T19:00,37.1,40,15.1,0,0,5.2,7.4 -2021-12-07T20:00,35.2,44,15.6,0,0,6.1,9.2 -2021-12-07T21:00,31.4,52,15.9,0,0,4.9,8.9 -2021-12-07T22:00,31.6,53,16.5,0,0,6,7.8 -2021-12-07T23:00,31.7,54,17.2,0,0,5.5,8.1 -2021-12-08T00:00,30.9,56,16.9,0,0,5.6,8.3 -2021-12-08T01:00,32,52,16.5,0,0,6.5,10.1 -2021-12-08T02:00,32.7,50,15.9,0,0,5.8,10.1 -2021-12-08T03:00,31.6,50,14.9,0,0,6.6,8.9 -2021-12-08T04:00,32.6,47,14.8,0,0,5.4,8.7 -2021-12-08T05:00,31.3,49,14.5,0,0,5,9.2 -2021-12-08T06:00,30.9,49,14.2,0,0,6.2,10.5 -2021-12-08T07:00,29.4,52,13.8,0,0,6.2,9.8 -2021-12-08T08:00,31,47,13.3,0,0,4.6,10.3 -2021-12-08T09:00,37,37,13,0,0,4.6,8.9 -2021-12-08T10:00,43.3,28,12.7,0,0,6.2,12.1 -2021-12-08T11:00,47.4,24,12.1,0,0,3,12.3 -2021-12-08T12:00,51.2,19,10,0,0,1.3,7.8 -2021-12-08T13:00,51.7,17,8.7,0,0,3,6.3 -2021-12-08T14:00,46.9,30,17.1,0,0,4.3,6.5 -2021-12-08T15:00,46.9,27,14.8,0,0,4.1,5.4 -2021-12-08T16:00,47.3,23,11.4,0,0,3.6,4.9 -2021-12-08T17:00,46.2,24,11.6,0,0,5.7,4.3 -2021-12-08T18:00,47.6,33,20,0,0,13.1,19.9 -2021-12-08T19:00,46.6,38,22.6,0,0,12.4,24.4 -2021-12-08T20:00,44.8,43,23.5,0,0,6.1,20.4 -2021-12-08T21:00,45,43,23.6,0,0,2.8,9.6 -2021-12-08T22:00,39,52,22.7,0,0,5.4,7.4 -2021-12-08T23:00,41.7,45,21.8,0,0,1.3,6.3 -2021-12-09T00:00,41.1,46,21.9,0,0,4.5,5.6 -2021-12-09T01:00,33.4,63,22.1,0,0,4.9,7.4 -2021-12-09T02:00,33.5,61,21.6,0,0,5.1,7.4 -2021-12-09T03:00,31.3,65,20.8,0,0,4.2,7.8 -2021-12-09T04:00,30.3,67,20.7,0,0,5.1,7.4 -2021-12-09T05:00,31.4,63,20.1,0,0,5.2,9.4 -2021-12-09T06:00,30.3,64,19.6,0,0,6.5,8.9 -2021-12-09T07:00,30.7,62,19.3,0,0,6.2,7.8 -2021-12-09T08:00,33.4,58,20.1,0,0,3.8,7.2 -2021-12-09T09:00,40.1,45,20.6,0,0,2.2,7.8 -2021-12-09T10:00,46.3,36,21,0,0,3.5,7.8 -2021-12-09T11:00,50.1,33,21.7,0,0,7.8,14.8 -2021-12-09T12:00,52.4,29,21.2,0,0,9.3,17.7 -2021-12-09T13:00,51,29,20.1,0,0,10.4,17.7 -2021-12-09T14:00,52.1,28,20.3,0,0,10.5,17.2 -2021-12-09T15:00,48.7,34,21.7,0,0,13,22.6 -2021-12-09T16:00,46.1,40,23.1,0,0,10.8,22.6 -2021-12-09T17:00,41.5,51,24.6,0,0,4.8,17.9 -2021-12-09T18:00,39.9,56,25.4,0,0,4.6,8.3 -2021-12-09T19:00,38.8,58,25.4,0,0,5.9,9.6 -2021-12-09T20:00,36.4,65,25.6,0,0,4.9,9.8 -2021-12-09T21:00,34.2,72,26,0,0,5.1,6.9 -2021-12-09T22:00,35.2,68,25.6,0,0,3.8,6.7 -2021-12-09T23:00,33.5,70,24.6,0,0,4.1,8.1 -2021-12-10T00:00,33,70,24.4,0,0,2.9,6.3 -2021-12-10T01:00,31.7,74,24.4,0,0,3.8,4.9 -2021-12-10T02:00,29.3,81,24.2,0,0,4,6.5 -2021-12-10T03:00,27.8,84,23.6,0,0,4.1,6.3 -2021-12-10T04:00,29.4,85,25.3,0,0,13,19.9 -2021-12-10T05:00,29.3,81,24.3,0,0.028,6.6,20.8 -2021-12-10T06:00,29.5,83,24.9,0,0.083,6.7,11.9 -2021-12-10T07:00,29.4,85,25.3,0,0.138,5.6,11 -2021-12-10T08:00,29.5,85,25.5,0,0.138,6.1,10.5 -2021-12-10T09:00,29.5,81,24.4,0,0.11,5,10.7 -2021-12-10T10:00,30,75,23,0,0.028,6.5,11.6 -2021-12-10T11:00,31.6,64,20.8,0,0,8.8,17 -2021-12-10T12:00,33.6,61,21.5,0,0,9.5,17.9 -2021-12-10T13:00,36.1,39,13.8,0,0.028,11.9,21.3 -2021-12-10T14:00,35.2,23,0.6,0,0,16.5,29.1 -2021-12-10T15:00,32.9,20,-4.2,0,0,17.3,29.8 -2021-12-10T16:00,29.7,24,-2.7,0,0,18.9,31.8 -2021-12-10T17:00,26.9,28,-1.7,0,0,15.8,32.9 -2021-12-10T18:00,26,30,-1,0,0,15.8,27.5 -2021-12-10T19:00,25.3,32,-0.6,0,0,13,26.2 -2021-12-10T20:00,25.1,33,-0.1,0,0,10.5,21.7 -2021-12-10T21:00,24.1,35,0.1,0,0,5,17.4 -2021-12-10T22:00,23.6,35,0.1,0,0,4.1,8.1 -2021-12-10T23:00,25.8,31,-0.8,0,0,2.1,4.9 -2021-12-11T00:00,20.1,41,0.2,0,0,4.1,5.1 -2021-12-11T01:00,21,36,-1.7,0,0,7.6,10.7 -2021-12-11T02:00,19,38,-2.6,0,0,4.2,11.2 -2021-12-11T03:00,18.2,36,-4.2,0,0,5.5,7.2 -2021-12-11T04:00,19,33,-5.6,0,0,4.2,7.2 -2021-12-11T05:00,18.9,34,-4.8,0,0,5.6,10.3 -2021-12-11T06:00,18.3,35,-4.5,0,0,6.1,7.4 -2021-12-11T07:00,19.6,34,-4.3,0,0,5,7.6 -2021-12-11T08:00,22.6,30,-4,0,0,3,6.9 -2021-12-11T09:00,27.4,24,-4.9,0,0,4,8.9 -2021-12-11T10:00,34,16,-7.1,0,0,5.4,11 -2021-12-11T11:00,37.7,12,-10.5,0,0,6.6,13.6 -2021-12-11T12:00,40.7,10,-10.9,0,0,5.2,14.1 -2021-12-11T13:00,44.2,10,-9.3,0,0,5.2,11.9 -2021-12-11T14:00,46.4,10,-7.5,0,0,4,11.6 -2021-12-11T15:00,43.2,12,-5.8,0,0,4,8.5 -2021-12-11T16:00,36.5,16,-5.7,0,0,5.9,7.2 -2021-12-11T17:00,36.1,25,3.5,0,0,2.2,6.9 -2021-12-11T18:00,31,30,3.3,0,0,5.3,7.6 -2021-12-11T19:00,31.6,31,4.4,0,0,5.1,7.6 -2021-12-11T20:00,31,33,5.5,0,0,4.9,10.1 -2021-12-11T21:00,28.4,40,7.2,0,0,4.9,7.6 -2021-12-11T22:00,28.9,41,8,0,0,3.7,6.3 -2021-12-11T23:00,31.9,36,8.2,0,0,2.9,5.1 -2021-12-12T00:00,34.8,33,8.4,0,0,1.7,4 -2021-12-12T01:00,36.1,31,8.7,0,0,2.6,3.1 -2021-12-12T02:00,37,31,9.1,0,0,2.6,3.8 -2021-12-12T03:00,32.7,38,9.7,0,0,3.6,3.6 -2021-12-12T04:00,32.9,38,10,0,0,5.5,8.9 -2021-12-12T05:00,29.7,51,13.6,0,0,5.6,9.4 -2021-12-12T06:00,28,57,14.6,0,0,4.8,8.9 -2021-12-12T07:00,29.6,53,14.6,0,0,4.5,6.5 -2021-12-12T08:00,33,47,14.7,0,0,3.5,6.3 -2021-12-12T09:00,40.9,33,14.1,0,0,4.5,6.9 -2021-12-12T10:00,48.7,24,13.3,0,0,4.1,8.3 -2021-12-12T11:00,54.4,14,6.8,0,0,6.7,12.5 -2021-12-12T12:00,57.3,12,5,0,0,2.6,12.3 -2021-12-12T13:00,58.6,11,4,0,0,2,7.8 -2021-12-12T14:00,58.8,11,4.1,0,0,5.5,11 -2021-12-12T15:00,58,12,5.5,0,0,5.6,11.6 -2021-12-12T16:00,55.6,14,6.9,0,0,3.9,8.7 -2021-12-12T17:00,54,16,8.4,0,0,6,4.7 -2021-12-12T18:00,44.4,23,8.6,0,0,5.9,6.9 -2021-12-12T19:00,39.6,29,10.1,0,0,6,8.7 -2021-12-12T20:00,35.2,38,11.8,0,0,5.6,8.7 -2021-12-12T21:00,33.2,41,12.1,0,0,5,7.8 -2021-12-12T22:00,31.1,44,11.7,0,0,4.8,7.4 -2021-12-12T23:00,29.9,43,10.3,0,0,4.1,6.5 -2021-12-13T00:00,28.7,45,9.9,0,0,4.6,5.8 -2021-12-13T01:00,29.5,44,10.3,0,0,3.8,5.6 -2021-12-13T02:00,31.1,43,11.1,0,0,4.7,5.6 -2021-12-13T03:00,33.5,40,12,0,0,4.6,6 -2021-12-13T04:00,35.2,38,11.9,0,0,3.3,5.6 -2021-12-13T05:00,27.7,50,11.4,0,0,4.6,3.8 -2021-12-13T06:00,27.6,50,11.2,0,0,3.9,5.6 -2021-12-13T07:00,24.9,55,11,0,0,5,6.7 -2021-12-13T08:00,27.6,49,11.1,0,0,2.6,6.3 -2021-12-13T09:00,33.8,38,11.1,0,0,4,8.3 -2021-12-13T10:00,40.7,27,9.7,0,0,1.6,8.3 -2021-12-13T11:00,46.4,22,9.2,0,0,4.6,10.3 -2021-12-13T12:00,48.7,19,8.5,0,0,6.5,13.4 -2021-12-13T13:00,50,18,8.1,0,0,7,14.1 -2021-12-13T14:00,51.3,17,8.2,0,0,5.6,13.9 -2021-12-13T15:00,51.5,19,10,0,0,5,11.6 -2021-12-13T16:00,48.8,23,12.4,0,0,3.8,8.9 -2021-12-13T17:00,39,31,10.9,0,0,7.3,4.7 -2021-12-13T18:00,45.4,24,10.4,0,0,2.6,8.7 -2021-12-13T19:00,39.2,31,10.9,0,0,4.8,5.4 -2021-12-13T20:00,33.8,38,10.8,0,0,5.5,7.6 -2021-12-13T21:00,30.3,44,11.1,0,0,3.8,7.2 -2021-12-13T22:00,28.7,48,11.2,0,0,3.9,6.5 -2021-12-13T23:00,27.8,48,10.8,0,0,4.5,6 -2021-12-14T00:00,27.8,46,9.9,0,0,5.3,6.5 -2021-12-14T01:00,29.3,41,8.7,0,0,4.2,6.5 -2021-12-14T02:00,29.5,41,8.7,0,0,4.4,6.3 -2021-12-14T03:00,29.8,40,8.7,0,0,4.5,6.3 -2021-12-14T04:00,29.6,41,8.9,0,0,4.7,6.5 -2021-12-14T05:00,30.2,40,8.7,0,0,5,6.7 -2021-12-14T06:00,29.7,42,9.2,0,0,5.9,7.2 -2021-12-14T07:00,29.3,46,10.9,0,0,5.6,7.6 -2021-12-14T08:00,33.4,42,12.6,0,0,4.4,7.4 -2021-12-14T09:00,41.9,31,13.5,0,0,5.9,8.7 -2021-12-14T10:00,49,23,13,0,0,8.2,12.8 -2021-12-14T11:00,55.2,19,13.1,0,0,7.4,12.1 -2021-12-14T12:00,60.1,16,14,0,0,8.7,15.9 -2021-12-14T13:00,62.7,15,14.7,0,0,8.5,15.2 -2021-12-14T14:00,63.3,16,15.7,0,0,8.3,15 -2021-12-14T15:00,61.8,19,18.6,0,0,6.6,14.5 -2021-12-14T16:00,55.6,25,20.8,0,0,6.3,10.5 -2021-12-14T17:00,46.6,24,12,0,0,6.8,11.6 -2021-12-14T18:00,45.1,27,13,0,0,5.1,10.7 -2021-12-14T19:00,47.8,23,12,0,0,2.6,6 -2021-12-14T20:00,40.2,38,16.3,0,0,7.3,9.8 -2021-12-14T21:00,44.7,40,22,0,0,14.1,21.7 -2021-12-14T22:00,44.7,41,22.5,0,0,15.6,25.5 -2021-12-14T23:00,42.4,43,21.5,0,0,13.5,25.1 -2021-12-15T00:00,42.9,42,21.5,0,0,11.1,21.9 -2021-12-15T01:00,44,46,24.6,0,0,10.3,18.1 -2021-12-15T02:00,45.6,47,26.4,0,0,15.1,24.4 -2021-12-15T03:00,44.5,50,27,0,0,13.5,24.8 -2021-12-15T04:00,42.4,55,27.3,0,0,9.3,21.9 -2021-12-15T05:00,39.6,55,24.7,0,0,8.1,15.4 -2021-12-15T06:00,37.8,59,24.9,0,0,7.4,13.2 -2021-12-15T07:00,38.9,59,25.6,0,0,7.9,13.2 -2021-12-15T08:00,41.2,59,28,0.008,0,14.5,20.4 -2021-12-15T09:00,42.2,76,35.2,0.016,0,1.5,23.9 -2021-12-15T10:00,44.2,45,24.3,0,0,18.1,21 -2021-12-15T11:00,43.9,19,4.6,0,0,32.3,53.9 -2021-12-15T12:00,43.5,20,5.5,0,0,45.3,77.6 -2021-12-15T13:00,44.2,20,5.9,0,0,45.9,74.5 -2021-12-15T14:00,43.4,22,7.1,0,0,38.6,74 -2021-12-15T15:00,43.3,22,6.4,0,0,10.6,63.3 -2021-12-15T16:00,41.5,26,9.3,0,0,5.8,21.7 -2021-12-15T17:00,38.5,23,4.2,0,0,6.4,10.1 -2021-12-15T18:00,35.8,28,6.2,0,0,7.3,8.9 -2021-12-15T19:00,36.1,28,6.2,0,0,7.3,15.9 -2021-12-15T20:00,30.2,35,5.6,0,0,5.5,11.4 -2021-12-15T21:00,29.7,37,6.4,0,0,6.5,9.2 -2021-12-15T22:00,26.8,42,6.5,0,0,7.2,13.4 -2021-12-15T23:00,28.4,39,6.5,0,0,3.8,10.5 -2021-12-16T00:00,24.5,47,7.1,0,0,3.6,6.3 -2021-12-16T01:00,22.9,51,7.4,0,0,3.2,6 -2021-12-16T02:00,25.3,46,7.3,0,0,2.1,6 -2021-12-16T03:00,22.7,51,7.3,0,0,4.1,6.5 -2021-12-16T04:00,24.4,43,5.1,0,0,9,13.4 -2021-12-16T05:00,22,48,5.4,0,0,5.4,13.6 -2021-12-16T06:00,24,43,4.9,0,0,5.5,7.2 -2021-12-16T07:00,27.6,36,4.3,0,0,4.3,6.5 -2021-12-16T08:00,27.9,35,3.7,0,0,4,5.1 -2021-12-16T09:00,34.7,25,2.8,0,0,4.3,8.1 -2021-12-16T10:00,40,20,1.8,0,0,4,9.6 -2021-12-16T11:00,44.6,16,1.2,0,0,2.7,9.4 -2021-12-16T12:00,47.6,15,2.1,0,0,2.2,8.5 -2021-12-16T13:00,49.3,14,2.3,0,0,4.3,10.3 -2021-12-16T14:00,49.6,14,2.7,0,0,7.1,13.2 -2021-12-16T15:00,48,15,3.1,0,0,9.8,16.8 -2021-12-16T16:00,42.1,21,4.6,0,0,8.8,16.1 -2021-12-16T17:00,34.9,34,9.3,0,0,5.7,14.3 -2021-12-16T18:00,33.9,35,9.1,0,0,6.2,10.5 -2021-12-16T19:00,31.7,39,9.4,0,0,6,9.8 -2021-12-16T20:00,30.7,39,9,0,0,3.4,7.2 -2021-12-16T21:00,26,48,8.8,0,0,3.5,5.1 -2021-12-16T22:00,27.1,46,9.1,0,0,1.3,4.5 -2021-12-16T23:00,27.7,46,9.4,0,0,1.5,2 -2021-12-17T00:00,25,51,9.5,0,0,3.4,4 -2021-12-17T01:00,23,55,9.1,0,0,3.9,5.1 -2021-12-17T02:00,22.3,55,8.6,0,0,4.7,6 -2021-12-17T03:00,22.6,53,7.8,0,0,5.4,7.2 -2021-12-17T04:00,22.6,50,6.9,0,0,4.7,6.9 -2021-12-17T05:00,24.6,46,6.8,0,0,3.2,6.5 -2021-12-17T06:00,25.5,45,7.1,0,0,2.3,4 -2021-12-17T07:00,25,47,7.5,0,0,2.7,3.6 -2021-12-17T08:00,24.9,47,7.3,0,0,0.3,3.4 -2021-12-17T09:00,28.8,40,7.3,0,0,1.6,5.1 -2021-12-17T10:00,35,33,8.8,0,0,2.8,8.7 -2021-12-17T11:00,39.2,25,6.7,0,0,4.8,11.4 -2021-12-17T12:00,40.6,24,6.8,0,0,0.9,11.9 -2021-12-17T13:00,40.6,24,6.6,0,0,5.6,11.9 -2021-12-17T14:00,41,22,5.4,0,0,6,12.8 -2021-12-17T15:00,39.1,22,3.7,0,0,14.3,22.8 -2021-12-17T16:00,35.2,30,6.5,0,0,15,25.1 -2021-12-17T17:00,32.4,34,7.3,0,0,8.7,24.6 -2021-12-17T18:00,30.2,37,7.2,0,0,8.5,14.3 -2021-12-17T19:00,28.2,38,5.6,0,0,6.6,14.1 -2021-12-17T20:00,24.3,44,5.3,0,0,5.6,10.7 -2021-12-17T21:00,23.4,47,5.9,0,0,6.5,8.7 -2021-12-17T22:00,25.5,43,6,0,0,6,9.2 -2021-12-17T23:00,23,52,8.1,0,0,7.4,11.4 -2021-12-18T00:00,20,69,11.4,0,0,3.9,12.1 -2021-12-18T01:00,20.1,69,11.7,0,0,1.2,5.8 -2021-12-18T02:00,19.9,70,11.7,0,0,1.9,2.5 -2021-12-18T03:00,18,75,11.4,0,0,4.7,5.1 -2021-12-18T04:00,18.6,72,11.1,0,0,3.9,6 -2021-12-18T05:00,17.4,79,12.1,0,0,4.7,6 -2021-12-18T06:00,15.6,82,11.2,0,0,4.2,7.2 -2021-12-18T07:00,15.2,75,8.8,0,0,4.6,5.6 -2021-12-18T08:00,18.4,52,3.6,0,0,4.4,5.6 -2021-12-18T09:00,24.7,30,-2.6,0,0,5,9.6 -2021-12-18T10:00,31.6,17,-8,0,0,5.9,12.1 -2021-12-18T11:00,36.6,12,-10.6,0,0,4.4,12.1 -2021-12-18T12:00,39.9,10,-11.5,0,0,4,10.7 -2021-12-18T13:00,41.8,10,-11.9,0,0,5,11.2 -2021-12-18T14:00,42.7,9,-13,0,0,4.8,11 -2021-12-18T15:00,41.4,9,-12.4,0,0,3.5,9.6 -2021-12-18T16:00,33.4,15,-9.8,0,0,5.8,6.9 -2021-12-18T17:00,34.1,17,-6.8,0,0,4.7,6.7 -2021-12-18T18:00,34.8,17,-5.7,0,0,1.4,5.8 -2021-12-18T19:00,28.2,22,-6,0,0,3.7,4 -2021-12-18T20:00,25.2,22,-8.2,0,0,4,6.5 -2021-12-18T21:00,23.3,25,-7.7,0,0,5.8,8.7 -2021-12-18T22:00,24.4,26,-6,0,0,5.2,9.2 -2021-12-18T23:00,26.4,24,-5.3,0,0,5,8.1 -2021-12-19T00:00,27,24,-4.9,0,0,4.8,8.1 -2021-12-19T01:00,26.6,25,-4.2,0,0,7.2,8.5 -2021-12-19T02:00,27.1,26,-3,0,0,7.6,9.2 -2021-12-19T03:00,27.6,28,-1.7,0,0,6.9,9.2 -2021-12-19T04:00,26.9,30,-0.4,0,0,7.2,8.7 -2021-12-19T05:00,27.4,32,1.3,0,0,5.5,8.5 -2021-12-19T06:00,27,33,1.7,0,0,6.3,10.3 -2021-12-19T07:00,26.5,35,2.2,0,0,6,10.5 -2021-12-19T08:00,27.5,34,3,0,0,4.3,9.6 -2021-12-19T09:00,33.4,27,3.4,0,0,2.7,6.3 -2021-12-19T10:00,42.4,20,4.1,0,0,4.9,10.3 -2021-12-19T11:00,47.4,16,4,0,0,4.1,10.1 -2021-12-19T12:00,53.8,12,2.7,0,0,8.1,15.7 -2021-12-19T13:00,57.3,10,0.8,0,0,4,14.8 -2021-12-19T14:00,56.9,10,0.1,0,0,1.1,8.7 -2021-12-19T15:00,51.1,12,0.9,0,0,4,5.8 -2021-12-19T16:00,45.6,16,1.5,0,0,6.3,8.9 -2021-12-19T17:00,38.2,24,4.7,0,0,7.7,8.1 -2021-12-19T18:00,38.7,25,5.7,0,0,1.1,11.9 -2021-12-19T19:00,29,35,5,0,0,7.9,9.2 -2021-12-19T20:00,28.6,35,4.5,0,0,5.1,9.4 -2021-12-19T21:00,27.1,39,5.2,0,0,3.7,6.7 -2021-12-19T22:00,25.1,43,5.8,0,0,6.2,7.4 -2021-12-19T23:00,26.7,39,5.1,0,0,7.4,9.6 -2021-12-20T00:00,26.2,40,4.9,0,0,6.7,8.9 -2021-12-20T01:00,25.4,41,4.8,0,0,5.6,8.1 -2021-12-20T02:00,25.3,40,4.4,0,0,5.9,7.2 -2021-12-20T03:00,24.1,42,4.3,0,0,6.2,7.2 -2021-12-20T04:00,24.5,42,4.5,0,0,5.1,7.4 -2021-12-20T05:00,23.2,50,7.3,0,0,4,6 -2021-12-20T06:00,24.2,48,7.1,0,0,2.6,5.1 -2021-12-20T07:00,24.7,46,6.8,0,0,2.9,4.5 -2021-12-20T08:00,28.4,40,7,0,0,3.4,5.4 -2021-12-20T09:00,36.1,28,6.4,0,0,4.1,7.8 -2021-12-20T10:00,43.3,21,5.5,0,0,3.5,8.1 -2021-12-20T11:00,51,15,4.3,0,0,3.3,8.5 -2021-12-20T12:00,55.9,12,3.9,0,0,5.9,11 -2021-12-20T13:00,58.6,13,7.1,0,0,7.4,13.2 -2021-12-20T14:00,59.2,14,9.5,0,0,7.6,13.2 -2021-12-20T15:00,56.4,16,10.9,0,0,6.4,12.5 -2021-12-20T16:00,47.5,23,11.2,0,0,7.7,10.7 -2021-12-20T17:00,41.5,31,13.5,0,0,9.2,11.4 -2021-12-20T18:00,43.3,27,11.3,0,0,6,10.7 -2021-12-20T19:00,45.5,24,10.9,0,0,1.8,6.9 -2021-12-20T20:00,34.3,41,12.8,0,0,3.3,3.8 -2021-12-20T21:00,28,56,14.3,0,0,4.8,6 -2021-12-20T22:00,26,60,14,0,0,5.1,6.5 -2021-12-20T23:00,26.2,56,12.4,0,0,6.5,7.8 -2021-12-21T00:00,29.9,41,9.1,0,0,6.2,9.2 -2021-12-21T01:00,33.6,32,6.9,0,0,8.1,13.2 -2021-12-21T02:00,33.6,31,5.9,0,0,8,13 -2021-12-21T03:00,32,32,5.3,0,0,5.9,12.5 -2021-12-21T04:00,29.7,35,5.3,0,0,8.3,9.8 -2021-12-21T05:00,29.8,37,6.6,0,0,5.6,9.6 -2021-12-21T06:00,29.5,37,6.2,0,0,5,8.1 -2021-12-21T07:00,29.3,37,6.4,0,0,5.5,8.3 -2021-12-21T08:00,31.6,33,5.8,0,0,5.9,9.4 -2021-12-21T09:00,38,27,6.9,0,0,4.2,9.6 -2021-12-21T10:00,46.8,20,8.1,0,0,2.6,7.8 -2021-12-21T11:00,52.6,16,7.3,0,0,4.3,9.6 -2021-12-21T12:00,55.9,11,2.9,0,0,8.2,15 -2021-12-21T13:00,57.1,10,1.3,0,0,6.5,16.6 -2021-12-21T14:00,57.5,10,1.7,0,0,3.5,13 -2021-12-21T15:00,56.5,38,31,0,0,0.8,8.1 -2021-12-21T16:00,55.3,12,2.9,0,0,2.3,2.9 -2021-12-21T17:00,44.4,18,4,0,0,6.6,8.5 -2021-12-21T18:00,39.2,23,4.6,0,0,7.3,9.8 -2021-12-21T19:00,39.8,21,3.4,0,0,7.9,13.4 -2021-12-21T20:00,35.4,25,3.2,0,0,5.9,12.5 -2021-12-21T21:00,32.4,28,3.2,0,0,6.3,9.4 -2021-12-21T22:00,28.6,32,2.7,0,0,7.8,8.7 -2021-12-21T23:00,28.4,31,1.9,0,0,7.1,9.2 -2021-12-22T00:00,29,30,1.3,0,0,7.4,9.4 -2021-12-22T01:00,29.9,27,-0.4,0,0,6.6,9.8 -2021-12-22T02:00,30.8,24,-2.1,0,0,6.4,9.6 -2021-12-22T03:00,30.2,24,-2.4,0,0,6,9.8 -2021-12-22T04:00,28.7,25,-2.4,0,0,7.6,9.6 -2021-12-22T05:00,28.1,27,-1.7,0,0,5.1,9.8 -2021-12-22T06:00,26,30,-1.2,0,0,8.6,10.3 -2021-12-22T07:00,25.7,30,-1.6,0,0,7.2,10.1 -2021-12-22T08:00,29.6,26,-1.3,0,0,5.9,8.7 -2021-12-22T09:00,37.1,20,-0.7,0,0,7.3,11.4 -2021-12-22T10:00,45.8,16,2.7,0,0,6.7,11.4 -2021-12-22T11:00,52.5,13,3.7,0,0,7.7,13.2 -2021-12-22T12:00,57.2,11,2.4,0,0,6.6,13 -2021-12-22T13:00,59.7,7,-3.2,0,0,7.8,13 -2021-12-22T14:00,60.6,7,-3,0,0,9.1,14.8 -2021-12-22T15:00,59.1,8,-1.5,0,0,7.7,15.2 -2021-12-22T16:00,50,16,5.5,0,0,8.6,12.1 -2021-12-22T17:00,46,18,5.3,0,0,6.3,9.6 -2021-12-22T18:00,42.7,20,4.5,0,0,5.9,9.8 -2021-12-22T19:00,39.9,22,4.3,0,0,5.1,7.6 -2021-12-22T20:00,40.8,23,5.5,0,0,6.5,10.3 -2021-12-22T21:00,38.1,27,6.8,0,0,6.5,10.7 -2021-12-22T22:00,36.2,29,7.3,0,0,6.3,10.5 -2021-12-22T23:00,33.2,34,7.8,0,0,4.8,9.8 -2021-12-23T00:00,30.8,38,8.4,0,0,4,7.6 -2021-12-23T01:00,29.1,44,9.7,0,0,4,6.5 -2021-12-23T02:00,27.9,50,11.7,0,0,4.6,6.3 -2021-12-23T03:00,28.4,51,12.7,0,0,5.2,7.2 -2021-12-23T04:00,28.4,52,13.1,0,0,5.2,7.2 -2021-12-23T05:00,28.4,56,14.7,0,0,5.3,7.6 -2021-12-23T06:00,28.9,55,14.9,0,0,6.6,8.3 -2021-12-23T07:00,30.7,52,15.2,0,0,5.8,8.5 -2021-12-23T08:00,33.9,47,15.7,0,0,5.7,9.4 -2021-12-23T09:00,40.1,39,17,0,0,5.4,9.4 -2021-12-23T10:00,46.7,32,18.2,0,0,1.6,8.7 -2021-12-23T11:00,51.3,26,17.2,0,0,1.5,6.3 -2021-12-23T12:00,55.4,22,16.9,0,0,1.8,6.7 -2021-12-23T13:00,58.9,20,17.5,0,0,5.2,11 -2021-12-23T14:00,60.9,19,18.8,0,0,3,10.5 -2021-12-23T15:00,59.8,21,19.4,0,0,8.1,12.8 -2021-12-23T16:00,54,27,20.6,0,0,3.8,13.9 -2021-12-23T17:00,49,31,19.9,0,0,4.1,10.7 -2021-12-23T18:00,46.5,36,20.8,0,0,3.1,6.9 -2021-12-23T19:00,44.2,46,24.7,0,0,3.2,6 -2021-12-23T20:00,44.2,56,29.3,0,0,6.5,9.4 -2021-12-23T21:00,45.1,66,34.3,0.004,0,8.9,14.1 -2021-12-23T22:00,46.8,64,35.1,0,0,8.9,15 -2021-12-23T23:00,47.8,58,33.7,0,0,10.2,16.3 -2021-12-24T00:00,47.4,57,33,0,0,8.3,17 -2021-12-24T01:00,46.1,58,32.4,0,0,5.6,13.2 -2021-12-24T02:00,47.8,54,31.8,0.004,0,7.7,11.9 -2021-12-24T03:00,46.6,57,32.2,0.004,0,6.8,12.1 -2021-12-24T04:00,45.4,62,33.1,0,0,5.4,10.5 -2021-12-24T05:00,43.5,69,34.1,0,0,5.6,8.5 -2021-12-24T06:00,45.7,61,33.2,0,0,3.6,8.9 -2021-12-24T07:00,37.7,92,35.4,0,0,15.8,25.5 -2021-12-24T08:00,37.5,88,34.3,0.004,0,2.2,24.6 -2021-12-24T09:00,39.9,83,35.2,0.004,0,1.9,5.4 -2021-12-24T10:00,41,71,32.3,0.004,0,3.9,8.5 -2021-12-24T11:00,42.3,64,30.8,0.004,0,4,9.6 -2021-12-24T12:00,43.9,57,29.5,0,0,4.2,10.7 -2021-12-24T13:00,43.5,61,31.1,0,0,7.6,16.3 -2021-12-24T14:00,46.2,58,32.3,0.012,0,7.8,15.9 -2021-12-24T15:00,42.3,84,37.7,0.02,0,3.4,15.2 -2021-12-24T16:00,40.6,91,38.2,0.004,0,11.1,18.3 -2021-12-24T17:00,36.5,93,34.6,0,0,5.8,18.6 -2021-12-24T18:00,34.8,95,33.5,0,0,5.4,8.9 -2021-12-24T19:00,32.5,94,30.9,0,0,5.4,8.7 -2021-12-24T20:00,30.9,95,29.8,0,0,4.3,7.4 -2021-12-24T21:00,29.1,92,27.1,0,0,5.4,8.5 -2021-12-24T22:00,28.4,88,25.3,0,0,5.6,9.4 -2021-12-24T23:00,29.8,84,25.4,0,0,7,10.7 -2021-12-25T00:00,33.7,74,26.4,0,0,9.6,15.7 -2021-12-25T01:00,31.8,77,25.3,0,0,6,15.2 -2021-12-25T02:00,30.9,75,24.1,0,0,6,9.4 -2021-12-25T03:00,29.7,76,22.9,0,0,5.7,9.2 -2021-12-25T04:00,29.5,75,22.6,0,0,5.7,9.2 -2021-12-25T05:00,30.7,64,19.8,0,0,8.4,9.8 -2021-12-25T06:00,29.6,64,19,0,0,6.6,13.4 -2021-12-25T07:00,28.9,66,19.1,0,0,6.8,11 -2021-12-25T08:00,30,64,19.3,0,0,6.4,11 -2021-12-25T09:00,37.3,47,19,0,0,8.2,13.2 -2021-12-25T10:00,45,33,17.9,0,0,7.3,13.4 -2021-12-25T11:00,50.3,22,12.6,0,0,8.7,15.9 -2021-12-25T12:00,51.9,18,9.6,0,0,8.1,15.9 -2021-12-25T13:00,53,17,8.7,0,0,6,15.2 -2021-12-25T14:00,53.2,15,6.4,0,0,3.1,12.1 -2021-12-25T15:00,52.1,17,9,0,0,2,7.4 -2021-12-25T16:00,51.9,16,7.3,0,0,0.5,4 -2021-12-25T17:00,38,54,22.7,0,0,5.6,3.4 -2021-12-25T18:00,32.6,65,22.2,0,0,5.7,8.7 -2021-12-25T19:00,29.7,64,19,0,0,5.3,7.6 -2021-12-25T20:00,28.5,60,16.5,0,0,4.5,6.9 -2021-12-25T21:00,27.5,57,14.5,0,0,4.4,7.8 -2021-12-25T22:00,25.5,59,13.3,0,0,3.8,6.9 -2021-12-25T23:00,23.3,60,11.6,0,0,4,6 -2021-12-26T00:00,23.2,59,10.9,0,0,5.2,6.7 -2021-12-26T01:00,25,54,10.7,0,0,5.3,7.8 -2021-12-26T02:00,28.9,49,11.9,0,0,7.8,12.1 -2021-12-26T03:00,32.7,45,13.6,0,0,12.4,19.2 -2021-12-26T04:00,33.5,47,15.5,0,0,11.7,20.6 -2021-12-26T05:00,34.3,43,14.1,0,0,14.6,19 -2021-12-26T06:00,33.9,47,15.6,0,0,14.3,23.9 -2021-12-26T07:00,33.6,49,16.5,0,0,13,23 -2021-12-26T08:00,36.9,45,17.4,0,0,11.9,20.8 -2021-12-26T09:00,43.2,35,17.6,0,0,13,20.8 -2021-12-26T10:00,47.7,29,17,0,0,10.4,21 -2021-12-26T11:00,51.5,19,10.5,0,0,15.9,26.6 -2021-12-26T12:00,50.9,20,11.3,0,0,12.9,27.5 -2021-12-26T13:00,50.6,19,10.2,0,0,11.7,22.6 -2021-12-26T14:00,51,17,7.4,0,0,12.9,21.7 -2021-12-26T15:00,49.6,19,8.8,0,0,11.8,24.6 -2021-12-26T16:00,43.8,26,10.9,0,0,4.6,19.2 -2021-12-26T17:00,38.6,39,15.9,0,0,5,10.1 -2021-12-26T18:00,36.5,51,20.3,0,0,10.2,16.6 -2021-12-26T19:00,34.4,44,14.8,0,0,7.8,16.6 -2021-12-26T20:00,29.6,50,13.1,0,0,4.2,12.8 -2021-12-26T21:00,26.3,55,12.2,0,0,3.5,6.9 -2021-12-26T22:00,26.1,55,12.1,0,0,3.1,5.6 -2021-12-26T23:00,27.1,54,12.7,0,0,5.5,6.7 -2021-12-27T00:00,26.6,59,14.1,0,0,6.3,7.4 -2021-12-27T01:00,30.2,53,15,0,0,2.7,7.6 -2021-12-27T02:00,27.9,55,13.9,0,0,3,4.9 -2021-12-27T03:00,23.4,65,13.5,0,0,5.6,6.7 -2021-12-27T04:00,23.3,65,13.4,0,0,5,6.9 -2021-12-27T05:00,24,58,11.4,0,0,2.4,6.5 -2021-12-27T06:00,23.5,60,11.5,0,0,2.4,3.1 -2021-12-27T07:00,22.5,62,11.5,0,0,2.3,4.5 -2021-12-27T08:00,21.5,64,11.1,0,0,2.9,3.4 -2021-12-27T09:00,27.9,45,9.3,0,0,3.4,8.3 -2021-12-27T10:00,34.6,32,7.6,0,0,2.3,8.3 -2021-12-27T11:00,42.5,23,7.3,0,0,6.8,13.6 -2021-12-27T12:00,47.5,20,8.2,0,0,15.1,24.4 -2021-12-27T13:00,48,21,9.4,0,0,15.9,29.8 -2021-12-27T14:00,47.6,21,9.8,0,0,14.1,27.3 -2021-12-27T15:00,46.5,23,10.7,0,0,8.1,23.7 -2021-12-27T16:00,36.2,38,12.8,0,0,5.2,13.4 -2021-12-27T17:00,29.7,42,9.6,0,0,8.2,13.2 -2021-12-27T18:00,29.1,45,10.2,0,0,5.8,13 -2021-12-27T19:00,28.2,48,11,0,0,5.1,8.5 -2021-12-27T20:00,28.1,51,12.5,0,0,4.5,9.2 -2021-12-27T21:00,27.6,54,13.3,0,0,2.7,6.9 -2021-12-27T22:00,25.1,61,13.6,0,0,4.5,4.7 -2021-12-27T23:00,27.1,55,12.9,0,0,3.3,6.5 -2021-12-28T00:00,24.9,59,12.5,0,0,4.2,5.8 -2021-12-28T01:00,23.8,69,15.2,0,0,1.4,7.8 -2021-12-28T02:00,23,69,14.2,0,0,4.3,7.2 -2021-12-28T03:00,22.6,71,14.7,0,0,4.3,7.2 -2021-12-28T04:00,23.4,66,13.6,0,0,5.1,6 -2021-12-28T05:00,24.9,61,13.5,0,0,8.4,6.3 -2021-12-28T06:00,22.1,70,13.8,0,0,8,15.2 -2021-12-28T07:00,20.9,69,12.2,0,0,3.2,13 -2021-12-28T08:00,22.6,64,12.4,0,0,2.6,5.4 -2021-12-28T09:00,25.5,45,7.3,0,0,4.1,8.9 -2021-12-28T10:00,28.2,35,3.9,0,0,4.3,10.3 -2021-12-28T11:00,30.9,30,2.8,0,0,7.5,15.2 -2021-12-28T12:00,33.5,26,1.9,0,0,9.4,18.1 -2021-12-28T13:00,35.2,24,1.9,0,0,9.6,18.8 -2021-12-28T14:00,35.9,23,1.9,0,0,7.8,18.3 -2021-12-28T15:00,35.2,24,1.9,0,0,9.2,15.7 -2021-12-28T16:00,31.9,28,2.1,0,0,9.4,17 -2021-12-28T17:00,28.2,31,1.5,0,0,4,14.5 -2021-12-28T18:00,22.8,41,2.4,0,0,5.3,6 -2021-12-28T19:00,26.6,34,1.7,0,0,4,6 -2021-12-28T20:00,26.1,34,1.6,0,0,2.1,4.7 -2021-12-28T21:00,23.5,40,2.6,0,0,3,2.9 -2021-12-28T22:00,21.4,46,3.7,0,0,4.9,7.6 -2021-12-28T23:00,19.8,49,3.6,0,0,6.7,11.4 -2021-12-29T00:00,18.7,50,3.3,0,0,3.4,11.2 -2021-12-29T01:00,19.3,49,3.3,0,0,1.5,5.6 -2021-12-29T02:00,17.4,53,3.2,0,0,2.5,3.4 -2021-12-29T03:00,17.2,53,2.8,0,0,2.2,3.4 -2021-12-29T04:00,17.1,53,2.8,0,0,2.3,3.4 -2021-12-29T05:00,16,55,2.6,0,0,0.4,3.4 -2021-12-29T06:00,15.1,59,3.2,0,0,3.4,6 -2021-12-29T07:00,14.9,59,3.1,0,0,2.9,6.5 -2021-12-29T08:00,16.6,53,2.6,0,0,2.5,4.3 -2021-12-29T09:00,18.9,48,2.2,0,0,3.8,9.2 -2021-12-29T10:00,22.9,40,2.2,0,0,3.2,9.6 -2021-12-29T11:00,26.7,35,2.5,0,0,2.9,9.8 -2021-12-29T12:00,29.3,32,3.1,0,0,4.3,11.6 -2021-12-29T13:00,31.8,30,4.2,0,0,4.6,11.9 -2021-12-29T14:00,33.1,29,4.5,0,0,4,11.6 -2021-12-29T15:00,33.4,29,4.7,0,0,5.1,10.7 -2021-12-29T16:00,29.9,35,5.4,0,0,3.3,10.3 -2021-12-29T17:00,22.5,47,5.1,0,0,7.6,8.7 -2021-12-29T18:00,23.3,45,4.8,0,0,5.9,8.7 -2021-12-29T19:00,22.6,46,4.7,0,0,3.8,6.7 -2021-12-29T20:00,21.9,47,4.9,0,0,2.9,4.7 -2021-12-29T21:00,19.2,54,5.3,0,0,4.6,6 -2021-12-29T22:00,19.2,54,5.4,0,0,3.6,6 -2021-12-29T23:00,20.6,49,4.5,0,0,5.5,9.2 -2021-12-30T00:00,22.6,45,4.2,0,0,4.8,9.4 -2021-12-30T01:00,25.1,41,4.5,0,0,6.9,11.2 -2021-12-30T02:00,25.2,41,4.8,0,0,6.5,12.1 -2021-12-30T03:00,25.5,40,4.7,0,0,5.4,10.3 -2021-12-30T04:00,24.6,43,5.2,0,0,5.2,8.7 -2021-12-30T05:00,25.3,45,6.7,0,0,6.8,8.9 -2021-12-30T06:00,28,42,7.6,0,0,8.3,14.1 -2021-12-30T07:00,26.6,46,8.5,0,0,6.7,13.2 -2021-12-30T08:00,29.4,41,8.8,0,0,11.2,16.8 -2021-12-30T09:00,36.8,30,8.3,0,0,11.9,22.1 -2021-12-30T10:00,42.4,21,5.6,0,0,9.1,19.7 -2021-12-30T11:00,43.6,21,6.1,0,0,7.2,16.8 -2021-12-30T12:00,44.8,19,5.3,0,0,9.3,16.1 -2021-12-30T13:00,45.1,20,5.9,0,0,10.1,17.4 -2021-12-30T14:00,45.4,20,6.3,0,0,11.5,19 -2021-12-30T15:00,44.5,21,6.4,0,0,8.8,19 -2021-12-30T16:00,41.9,25,8.2,0,0,18.4,29.5 -2021-12-30T17:00,40,25,7,0,0,3.7,40.7 -2021-12-30T18:00,39.7,25,7.2,0,0,1.1,4.5 -2021-12-30T19:00,38.6,28,7.9,0,0,4.3,6.3 -2021-12-30T20:00,33,37,9.8,0,0,5.7,8.7 -2021-12-30T21:00,32.5,40,10.9,0,0,6.7,11.9 -2021-12-30T22:00,32.3,42,11.6,0,0,8.2,12.8 -2021-12-30T23:00,32,41,11.1,0,0,8.2,15.7 -2021-12-31T00:00,27.6,48,10.3,0,0,6.2,12.8 -2021-12-31T01:00,25.8,51,10.3,0,0,5.2,8.5 -2021-12-31T02:00,25.4,55,11.4,0,0,5.8,8.1 -2021-12-31T03:00,28.1,54,13.7,0,0,5.5,8.5 -2021-12-31T04:00,31.4,51,15.4,0,0,7.6,11.9 -2021-12-31T05:00,30.7,57,17.1,0,0,6,14.5 -2021-12-31T06:00,31.5,57,17.9,0,0,4.2,10.7 -2021-12-31T07:00,26.3,54,11.9,0,0,14.4,22.8 -2021-12-31T08:00,26.4,50,10.4,0,0,4.9,22.6 -2021-12-31T09:00,29.4,49,12.4,0,0,0.5,9.2 -2021-12-31T10:00,31.1,48,13.6,0,0.055,3.8,9.2 -2021-12-31T11:00,33.4,44,13.6,0,0,4,10.3 -2021-12-31T12:00,34.2,41,13,0,0,3.8,10.5 -2021-12-31T13:00,35,40,12.8,0,0,5,11.2 -2021-12-31T14:00,34.7,42,14.1,0,0,6.4,12.8 -2021-12-31T15:00,32.7,53,17.4,0,0,8.8,15.9 -2021-12-31T16:00,29.1,66,19.2,0,0.028,11.3,19 -2021-12-31T17:00,26.3,84,22.2,0,0.055,10.2,19 -2021-12-31T18:00,24.4,85,20.4,0,0.22,14.5,23.3 -2021-12-31T19:00,21.4,82,16.7,0,0.386,10.6,23.9 -2021-12-31T20:00,20.3,79,14.9,0,0.386,8.2,17.9 -2021-12-31T21:00,18.3,80,13.2,0,0.358,7.5,14.3 -2021-12-31T22:00,16.9,83,12.7,0,0.22,5.2,13.2 -2021-12-31T23:00,16.1,84,12.2,0,0.083,5.5,9.4 -2022-01-01T00:00,15.8,83,11.7,0,0.055,7.7,12.8 -2022-01-01T01:00,15,83,10.9,0,0.083,7,13 -2022-01-01T02:00,13.8,84,9.9,0,0.083,6.8,11.9 -2022-01-01T03:00,12.8,84,9,0,0.083,6.9,11.9 -2022-01-01T04:00,11.9,83,7.9,0,0.055,6.6,11.9 -2022-01-01T05:00,8.5,76,2.5,0,0.028,6.5,11.2 -2022-01-01T06:00,8.1,75,1.7,0,0,6.2,11.6 -2022-01-01T07:00,7,79,1.8,0,0.055,6.5,13.6 -2022-01-01T08:00,6.9,78,1.4,0,0.11,5.2,11 -2022-01-01T09:00,7,78,1.5,0,0.11,3.6,8.7 -2022-01-01T10:00,7.2,77,1.5,0,0.083,4.7,8.9 -2022-01-01T11:00,7.8,74,1.2,0,0.055,2.3,8.7 -2022-01-01T12:00,8.5,73,1.6,0,0.028,2.3,6 -2022-01-01T13:00,9.3,72,2,0,0,2.7,6.5 -2022-01-01T14:00,10.5,69,2.3,0,0,1.9,6.3 -2022-01-01T15:00,9.9,75,3.4,0,0,2.3,4.9 -2022-01-01T16:00,11.8,64,1.9,0,0,2.7,5.1 -2022-01-01T17:00,9.8,69,1.5,0,0,0.3,4.3 -2022-01-01T18:00,8.7,71,1.2,0,0,5,5.8 -2022-01-01T19:00,-3.8,86,-6.9,0,0,8.1,10.7 -2022-01-01T20:00,-6.6,86,-9.8,0,0,8.6,11 -2022-01-01T21:00,-3.6,64,-12.7,0,0,8.5,11.6 -2022-01-01T22:00,2.1,47,-13.6,0,0,10.7,12.5 -2022-01-01T23:00,-2.6,53,-15.5,0,0,13.3,16.6 -2022-01-02T00:00,2.5,47,-13.1,0,0,12.2,16.6 -2022-01-02T01:00,6.8,43,-11.2,0,0,11.4,14.8 -2022-01-02T02:00,8.4,42,-10.2,0,0,10.4,13.6 -2022-01-02T03:00,7.1,44,-10.1,0,0,11.3,13.4 -2022-01-02T04:00,11.8,40,-7.7,0,0,11,14.1 -2022-01-02T05:00,11.2,51,-3.5,0,0,11.7,13.2 -2022-01-02T06:00,17.1,43,-1.7,0,0,10.4,13.9 -2022-01-02T07:00,22.3,39,1.3,0,0,6.7,12.5 -2022-01-02T08:00,22.1,41,1.8,0,0,4.6,7.8 -2022-01-02T09:00,25.1,37,2.6,0,0,4.9,6.3 -2022-01-02T10:00,30.4,33,4.6,0,0,5.4,7.8 -2022-01-02T11:00,33.4,36,9.2,0,0,5,7.6 -2022-01-02T12:00,35.5,43,15.1,0,0,4.5,7.4 -2022-01-02T13:00,40.5,33,13.6,0,0,3.6,6.9 -2022-01-02T14:00,43.8,26,10.9,0,0,3.2,5.8 -2022-01-02T15:00,43.3,28,12.1,0,0,3.3,4.9 -2022-01-02T16:00,36.3,40,14.3,0,0,6.1,6.7 -2022-01-02T17:00,33.1,50,16.5,0,0,5.1,8.5 -2022-01-02T18:00,25.5,67,16,0,0,5.4,6.5 -2022-01-02T19:00,17.7,82,13.2,0,0,5.1,6.5 -2022-01-02T20:00,14.8,78,9.2,0,0,6.3,8.3 -2022-01-02T21:00,15,74,8.2,0,0,5.7,8.1 -2022-01-02T22:00,13.1,72,5.8,0,0,6.3,7.8 -2022-01-02T23:00,15.5,61,4.6,0,0,5.9,7.8 -2022-01-03T00:00,14.3,60,3,0,0,6.3,8.3 -2022-01-03T01:00,17.6,55,4,0,0,5.3,8.1 -2022-01-03T02:00,19,52,4.4,0,0,4.4,6.5 -2022-01-03T03:00,16.4,56,3.6,0,0,4.3,6.3 -2022-01-03T04:00,15.1,60,3.6,0,0,2.4,5.8 -2022-01-03T05:00,9.5,73,2.7,0,0,5.5,5.8 -2022-01-03T06:00,5.3,73,-1.5,0,0,7.8,10.3 -2022-01-03T07:00,11.2,66,2.1,0,0,6.4,10.5 -2022-01-03T08:00,14.1,67,5.2,0,0,6,8.5 -2022-01-03T09:00,17.8,67,8.8,0,0,6.5,8.9 -2022-01-03T10:00,29.8,46,11.7,0,0,4.8,8.9 -2022-01-03T11:00,36.2,41,14.6,0,0,4,6.9 -2022-01-03T12:00,36.5,55,21.7,0,0,5.1,8.3 -2022-01-03T13:00,37.9,54,22.6,0,0,5.9,8.7 -2022-01-03T14:00,40.6,45,20.9,0,0,5,8.7 -2022-01-03T15:00,45.6,28,14.2,0,0,3.1,7.2 -2022-01-03T16:00,43.1,31,14.2,0,0,1.2,3.6 -2022-01-03T17:00,43.1,30,13.8,0,0,2.5,3.4 -2022-01-03T18:00,24.2,62,12.9,0,0,7.1,8.3 -2022-01-03T19:00,18.2,81,13.3,0,0,8.1,9.6 -2022-01-03T20:00,17.7,74,10.9,0,0,10.2,12.3 -2022-01-03T21:00,23.7,60,11.9,0,0,7.4,12.3 -2022-01-03T22:00,23.7,58,11.1,0,0,7.3,9.6 -2022-01-03T23:00,23.7,57,10.9,0,0,6.4,8.5 -2022-01-04T00:00,17.8,68,9,0,0,5.7,7.6 -2022-01-04T01:00,12.7,78,7.1,0,0,7.2,9.8 -2022-01-04T02:00,13.5,74,6.7,0,0,9.9,12.3 -2022-01-04T03:00,19.2,58,6.7,0,0,9.4,12.8 -2022-01-04T04:00,27.2,42,7.1,0,0,7.8,11.6 -2022-01-04T05:00,20.4,62,9.5,0,0,8.1,9.6 -2022-01-04T06:00,12.7,71,4.9,0,0,7.6,12.8 -2022-01-04T07:00,17.4,61,6.4,0,0,7.9,11 -2022-01-04T08:00,16.4,61,5.2,0,0,8.7,12.5 -2022-01-04T09:00,22.6,61,10.9,0,0,6.4,12.1 -2022-01-04T10:00,35.2,45,16.1,0,0,7.5,13.6 -2022-01-04T11:00,40.9,42,19.7,0,0,7.3,13.4 -2022-01-04T12:00,43.4,32,15.2,0,0,17.4,29.5 -2022-01-04T13:00,43.2,33,16.1,0,0,15.8,29.5 -2022-01-04T14:00,43.2,33,15.8,0,0,12.7,26.6 -2022-01-04T15:00,42.4,34,16,0,0,13.5,23 -2022-01-04T16:00,42.6,27,10.8,0,0,13.9,24.8 -2022-01-04T17:00,29,60,16.7,0,0,7.6,21.9 -2022-01-04T18:00,31.1,62,19.6,0,0,9.8,15.9 -2022-01-04T19:00,29.2,68,19.9,0,0,6.2,15.4 -2022-01-04T20:00,28.1,70,19.7,0,0,6.3,9.4 -2022-01-04T21:00,28.1,66,18.2,0,0,6.7,10.5 -2022-01-04T22:00,22.6,72,15.1,0,0,6.6,11.9 -2022-01-04T23:00,20.4,78,14.6,0,0,6.3,11.2 -2022-01-05T00:00,20.8,73,13.4,0,0,6.6,10.7 -2022-01-05T01:00,22.3,71,14.3,0,0,5.5,7.8 -2022-01-05T02:00,24.5,64,13.9,0,0,4.4,6.7 -2022-01-05T03:00,23.2,64,12.8,0,0,5.4,6 -2022-01-05T04:00,21.1,71,13.1,0,0,3.8,6.3 -2022-01-05T05:00,19.7,65,9.8,0,0,1.1,5.6 -2022-01-05T06:00,19.2,69,10.9,0,0,5.8,8.5 -2022-01-05T07:00,13.3,79,8.1,0,0,7,8.5 -2022-01-05T08:00,14.5,79,9.1,0,0,6.3,10.5 -2022-01-05T09:00,22.7,66,13.2,0,0,1.5,8.7 -2022-01-05T10:00,25.8,65,15.7,0,0,0.7,2.5 -2022-01-05T11:00,30.3,58,17.2,0,0,4.9,8.3 -2022-01-05T12:00,35.2,56,21.1,0,0,10.8,17.2 -2022-01-05T13:00,28.1,67,18.6,0,0,17.7,29.5 -2022-01-05T14:00,22.4,83,18.1,0,0.028,19.7,33.1 -2022-01-05T15:00,23.2,80,17.9,0,0.11,14.7,32.2 -2022-01-05T16:00,20.3,83,15.9,0,0.303,14.9,25.9 -2022-01-05T17:00,10.5,78,5.1,0,0.276,13.5,24.4 -2022-01-05T18:00,7.3,79,2.2,0,0.358,10.8,21.7 -2022-01-05T19:00,5.1,83,1,0,0.496,8,18.1 -2022-01-05T20:00,3.9,81,-0.7,0,0.276,8.4,13.4 -2022-01-05T21:00,3.2,78,-2.2,0,0.22,9.1,14.5 -2022-01-05T22:00,2.5,77,-3,0,0.165,7.9,14.5 -2022-01-05T23:00,2.6,77,-2.9,0,0.11,7.2,12.5 -2022-01-06T00:00,2.8,78,-2.4,0,0.083,3.9,10.7 -2022-01-06T01:00,2.8,78,-2.5,0,0.083,1.8,6.3 -2022-01-06T02:00,3.3,79,-1.8,0,0.083,2.7,4 -2022-01-06T03:00,3.4,78,-1.8,0,0.083,2.7,4.9 -2022-01-06T04:00,4.3,77,-1.2,0,0.083,4.2,6.3 -2022-01-06T05:00,2.6,73,-4,0,0.11,4,6.7 -2022-01-06T06:00,2.4,73,-4.2,0,0.055,4.7,7.6 -2022-01-06T07:00,1.9,75,-4.3,0,0.083,6.1,10.7 -2022-01-06T08:00,1.4,77,-4.1,0,0.083,7.8,11.6 -2022-01-06T09:00,2.6,76,-3.4,0,0.028,6.9,12.1 -2022-01-06T10:00,5.3,76,-0.6,0,0,8.4,12.8 -2022-01-06T11:00,8,75,1.7,0,0,4.4,13.4 -2022-01-06T12:00,11,65,1.7,0,0,1.6,8.1 -2022-01-06T13:00,10.8,71,3.1,0,0,5.4,9.8 -2022-01-06T14:00,11.3,73,4.5,0,0,4.8,10.3 -2022-01-06T15:00,9.6,82,5.3,0,0,3.6,8.7 -2022-01-06T16:00,7,91,4.9,0,0,5.1,8.7 -2022-01-06T17:00,10.1,82,5.8,0,0,3.3,8.3 -2022-01-06T18:00,7.1,84,3.3,0,0,3,4 -2022-01-06T19:00,8.4,82,4.1,0,0,5.3,6.5 -2022-01-06T20:00,10,81,5.5,0,0,5.4,8.9 -2022-01-06T21:00,10.1,82,5.6,0,0,5,6.3 -2022-01-06T22:00,16,73,8.9,0,0,3.5,6.7 -2022-01-06T23:00,15.3,81,10.5,0,0,3.3,6.3 -2022-01-07T00:00,15.8,82,11.2,0,0,4.7,7.4 -2022-01-07T01:00,15.7,84,11.8,0,0,7.7,8.5 -2022-01-07T02:00,14.1,86,10.6,0,0,7.4,8.9 -2022-01-07T03:00,15.7,81,10.9,0,0,9.6,11 -2022-01-07T04:00,18.1,76,11.9,0,0,10.5,12.1 -2022-01-07T05:00,22.9,80,17.8,0,0,6.7,12.5 -2022-01-07T06:00,28.4,70,19.9,0,0,3.9,11.4 -2022-01-07T07:00,28.3,65,18.1,0,0,0.2,4.5 -2022-01-07T08:00,20.8,79,15.3,0,0,8,10.1 -2022-01-07T09:00,22.7,81,17.8,0,0,8.9,10.5 -2022-01-07T10:00,32.5,65,22,0,0,7.8,10.5 -2022-01-07T11:00,36.2,64,25.3,0,0,8.5,9.6 -2022-01-07T12:00,39.9,60,27.2,0,0,8.4,11.9 -2022-01-07T13:00,40,61,27.5,0,0,9.3,11.6 -2022-01-07T14:00,42.5,56,27.9,0,0,7.7,11.4 -2022-01-07T15:00,43.1,54,27.6,0,0,8.7,12.5 -2022-01-07T16:00,42,58,28.1,0,0,9.8,16.3 -2022-01-07T17:00,38.8,59,25.6,0,0,2.2,16.1 -2022-01-07T18:00,33.2,72,25.3,0,0,7.7,11 -2022-01-07T19:00,36.3,67,26.3,0,0,9.2,15.9 -2022-01-07T20:00,34.1,70,25.2,0,0,7.9,13.9 -2022-01-07T21:00,31.7,73,24,0,0,7,12.1 -2022-01-07T22:00,27.7,79,22,0,0,6.4,10.5 -2022-01-07T23:00,25,82,20.3,0,0,6,9.2 -2022-01-08T00:00,23.5,87,20.2,0,0,4.5,6.9 -2022-01-08T01:00,18.8,92,16.9,0,0,7.1,8.7 -2022-01-08T02:00,19.6,90,17.2,0,0,5.3,8.5 -2022-01-08T03:00,18.1,89,15.5,0,0,5,6.3 -2022-01-08T04:00,14.8,86,11.5,0,0,8.6,9.8 -2022-01-08T05:00,21.8,73,14.5,0,0,7.1,10.1 -2022-01-08T06:00,22.7,73,15.3,0,0,6.1,8.3 -2022-01-08T07:00,21,77,14.8,0,0,7.3,9.4 -2022-01-08T08:00,22.3,74,15.3,0,0,6.4,8.5 -2022-01-08T09:00,30,61,18.3,0,0,4.9,7.4 -2022-01-08T10:00,28,70,19.5,0,0,6.3,9.6 -2022-01-08T11:00,31.1,73,23.5,0,0,0.8,10.1 -2022-01-08T12:00,33.8,69,24.8,0,0,7.8,14.1 -2022-01-08T13:00,34.7,73,26.8,0,0,3.4,11.9 -2022-01-08T14:00,37.7,62,25.9,0,0,4.3,4.9 -2022-01-08T15:00,40.9,51,24.4,0,0,2.6,5.4 -2022-01-08T16:00,39.5,54,24,0,0,9.7,14.8 -2022-01-08T17:00,34.3,73,26.6,0,0,6.3,15.7 -2022-01-08T18:00,32.2,71,24,0,0,5.2,9.4 -2022-01-08T19:00,34.5,69,25.4,0,0.028,5.1,7.8 -2022-01-08T20:00,31.9,83,27.3,0,0.028,3.9,6 -2022-01-08T21:00,27.1,85,23.4,0,0,6.3,7.4 -2022-01-08T22:00,20.1,88,17.1,0,0,5.6,7.4 -2022-01-08T23:00,19.5,84,15.5,0,0,4.3,7.2 -2022-01-09T00:00,12.7,86,9.4,0,0,4.8,6.9 -2022-01-09T01:00,14.6,82,10.2,0,0,3.8,6 -2022-01-09T02:00,8.7,86,5.3,0,0,4.6,6 -2022-01-09T03:00,6.5,76,0.5,0,0,2.7,5.8 -2022-01-09T04:00,6.3,66,-2.6,0,0,2,3.8 -2022-01-09T05:00,5.2,68,-3,0,0,1.6,2.9 -2022-01-09T06:00,0.6,71,-6.5,0,0,3.3,4.3 -2022-01-09T07:00,2.6,69,-5.3,0,0,3.7,4.5 -2022-01-09T08:00,1.8,70,-5.8,0,0,7,8.5 -2022-01-09T09:00,12.3,50,-2.8,0,0,1.1,8.1 -2022-01-09T10:00,12.7,64,2.8,0,0,2.7,4.5 -2022-01-09T11:00,13.1,77,7.3,0,0,3.7,7.6 -2022-01-09T12:00,15.4,81,10.7,0,0,3,7.4 -2022-01-09T13:00,18.5,83,14.1,0,0,2.8,7.4 -2022-01-09T14:00,20.1,84,16,0,0,3.3,6.7 -2022-01-09T15:00,20.9,84,16.8,0,0,2.9,6.9 -2022-01-09T16:00,19.9,84,15.8,0,0,3,5.4 -2022-01-09T17:00,21.1,82,16.6,0,0,1.8,4.9 -2022-01-09T18:00,17.2,87,13.9,0,0,5.6,5.6 -2022-01-09T19:00,16.3,92,14.4,0,0,6,7.4 -2022-01-09T20:00,17.1,88,14,0,0,5.2,6.9 -2022-01-09T21:00,14.5,80,9.3,0,0,6.8,7.6 -2022-01-09T22:00,12.6,74,5.7,0,0,8.2,10.1 -2022-01-09T23:00,11.6,69,3.3,0,0,8.9,10.5 -2022-01-10T00:00,11.1,67,2.4,0,0,8.6,10.7 -2022-01-10T01:00,12.7,65,3.1,0,0,7.4,10.1 -2022-01-10T02:00,14.8,62,4.1,0,0,6.3,8.7 -2022-01-10T03:00,19.3,56,6.1,0,0,4.7,7.2 -2022-01-10T04:00,12.7,65,3.3,0,0,5.6,6.9 -2022-01-10T05:00,11.9,68,3.4,0,0,7.5,6.5 -2022-01-10T06:00,8.3,72,1.1,0,0,9.3,11.4 -2022-01-10T07:00,7.3,73,0.5,0,0,9.2,11.4 -2022-01-10T08:00,8.4,74,1.9,0,0,8.6,11 -2022-01-10T09:00,14.3,72,6.9,0,0,7.1,10.1 -2022-01-10T10:00,22.2,70,13.7,0,0,6.8,8.5 -2022-01-10T11:00,31.8,57,18.4,0,0,5.9,7.8 -2022-01-10T12:00,35.9,62,24.2,0,0,6.8,8.1 -2022-01-10T13:00,38.9,59,25.8,0,0,7.1,9.2 -2022-01-10T14:00,45.9,27,13.7,0,0,4.2,8.5 -2022-01-10T15:00,39.7,44,19.6,0,0,2.9,5.1 -2022-01-10T16:00,31.6,59,19.1,0,0,4.4,5.1 -2022-01-10T17:00,31.9,51,16,0,0,5.9,7.4 -2022-01-10T18:00,36.7,45,17.3,0,0,2.1,6.9 -2022-01-10T19:00,20.4,82,15.9,0,0,6.3,7.2 -2022-01-10T20:00,17.2,84,13.3,0,0,8.6,9.6 -2022-01-10T21:00,18.6,75,12,0,0,9,10.5 -2022-01-10T22:00,15.6,72,8.2,0,0,10.1,11.9 -2022-01-10T23:00,15.2,67,6.1,0,0,10.1,12.5 -2022-01-11T00:00,14,65,4.5,0,0,10.5,12.3 -2022-01-11T01:00,13.1,64,3.2,0,0,10.3,12.3 -2022-01-11T02:00,15.2,58,3.1,0,0,8.1,12.1 -2022-01-11T03:00,14.9,57,2.3,0,0,7.8,9.4 -2022-01-11T04:00,15.1,56,2.3,0,0,8.7,10.3 -2022-01-11T05:00,14.5,63,4.1,0,0,9.7,10.5 -2022-01-11T06:00,14.9,63,4.5,0,0,10.9,12.3 -2022-01-11T07:00,22.6,49,6.4,0,0,6.9,12.8 -2022-01-11T08:00,22.7,48,6.1,0,0,7.8,8.7 -2022-01-11T09:00,27,48,9.7,0,0,7.2,9.6 -2022-01-11T10:00,29.6,59,17.2,0,0,4.9,8.3 -2022-01-11T11:00,36.1,62,24.3,0,0,2.6,6 -2022-01-11T12:00,40.3,58,26.6,0,0,3.4,6.3 -2022-01-11T13:00,39.2,61,26.7,0,0,5.4,6.9 -2022-01-11T14:00,39.2,55,24.4,0,0,6.2,8.1 -2022-01-11T15:00,43,29,13.2,0,0,5.8,8.1 -2022-01-11T16:00,36.4,41,15,0,0,4,6.5 -2022-01-11T17:00,30.9,52,15.5,0,0,8.7,8.3 -2022-01-11T18:00,37.6,36,13,0,0,2.9,10.7 -2022-01-11T19:00,27,57,13.7,0,0,2.9,4 -2022-01-11T20:00,23.4,64,12.8,0,0,3.6,4.9 -2022-01-11T21:00,20.9,66,11.3,0,0,6.5,8.5 -2022-01-11T22:00,17.1,71,9.4,0,0,8.8,10.7 -2022-01-11T23:00,15.6,70,7.4,0,0,9.2,11 -2022-01-12T00:00,17.7,66,8.2,0,0,6.3,10.5 -2022-01-12T01:00,19,67,9.7,0,0,6.7,10.7 -2022-01-12T02:00,20.4,66,10.9,0,0,8.4,12.8 -2022-01-12T03:00,20.9,66,11.5,0,0,7.2,13.4 -2022-01-12T04:00,20.8,67,11.5,0,0,5.5,11 -2022-01-12T05:00,23.9,72,16.3,0,0,5.4,13.2 -2022-01-12T06:00,26.2,66,16.3,0,0,4.6,8.7 -2022-01-12T07:00,22.8,70,14.4,0,0,5.9,5.8 -2022-01-12T08:00,23.6,74,16.4,0,0,5.9,9.2 -2022-01-12T09:00,26.4,78,20.4,0,0,4.8,7.4 -2022-01-12T10:00,37,55,22.3,0,0,2.4,6.5 -2022-01-12T11:00,39,60,26.3,0,0,5,5.4 -2022-01-12T12:00,42.7,54,27.1,0,0,5.1,7.8 -2022-01-12T13:00,43.3,55,28,0,0,5.2,7.8 -2022-01-12T14:00,43.2,55,28.2,0,0,5.4,7.6 -2022-01-12T15:00,48.2,40,24.7,0,0,3.3,7.6 -2022-01-12T16:00,50.7,32,21.8,0,0,2.7,4.5 -2022-01-12T17:00,49.4,31,20.3,0,0,3.4,5.6 -2022-01-12T18:00,46.4,36,20.8,0,0,2.5,4.5 -2022-01-12T19:00,37,54,21.7,0,0,3.4,4.3 -2022-01-12T20:00,30.5,68,21,0,0,4.9,5.6 -2022-01-12T21:00,29,70,20.3,0,0,4.8,7.2 -2022-01-12T22:00,28.4,68,19.3,0,0,4.9,5.8 -2022-01-12T23:00,27.1,70,18.5,0,0,5.7,7.2 -2022-01-13T00:00,28.2,66,18.2,0,0,5.6,6.9 -2022-01-13T01:00,35.9,51,19.7,0,0,4.6,6.7 -2022-01-13T02:00,35.7,51,19.1,0,0,3.5,5.4 -2022-01-13T03:00,37.6,47,19.4,0,0,3.4,4.5 -2022-01-13T04:00,36.4,48,18.5,0,0,4.1,4.7 -2022-01-13T05:00,35.5,48,17.6,0,0,9.8,4.9 -2022-01-13T06:00,39.4,42,18,0,0,4.7,11.9 -2022-01-13T07:00,29.6,56,15.6,0,0,9.1,10.3 -2022-01-13T08:00,30.6,57,17.2,0,0,7.4,10.5 -2022-01-13T09:00,30.9,69,21.9,0,0,7.4,10.1 -2022-01-13T10:00,37.2,71,28.9,0,0,6.7,9.4 -2022-01-13T11:00,47.8,42,25.7,0,0,2.5,8.1 -2022-01-13T12:00,50.7,39,26.8,0,0,4.7,5.8 -2022-01-13T13:00,55.6,30,24.6,0,0,3.6,6.3 -2022-01-13T14:00,57.7,28,25,0,0,2.4,4.7 -2022-01-13T15:00,57.5,29,25.4,0,0,1.4,2.7 -2022-01-13T16:00,41,65,30.1,0,0,6.1,8.5 -2022-01-13T17:00,53.9,32,24.7,0,0,2.6,9.6 -2022-01-13T18:00,47.6,41,25.2,0,0,2.4,3.4 -2022-01-13T19:00,41.5,51,24.9,0,0,3,4 -2022-01-13T20:00,39.6,57,25.6,0,0,2.8,4 -2022-01-13T21:00,30.9,77,24.5,0,0,5.9,6.9 -2022-01-13T22:00,34.1,74,26.7,0,0,3,6.9 -2022-01-13T23:00,33.3,77,26.7,0,0,0.5,3.6 -2022-01-14T00:00,26.2,86,22.6,0,0,4.3,6 -2022-01-14T01:00,24.6,85,20.7,0,0,6,7.6 -2022-01-14T02:00,25.2,86,21.6,0,0,5.1,8.1 -2022-01-14T03:00,26.9,86,23.2,0,0,2.1,6.3 -2022-01-14T04:00,27.4,82,22.6,0,0,2.3,4.7 -2022-01-14T05:00,31.6,63,20.5,0,0,2.7,9.2 -2022-01-14T06:00,29.1,66,19.1,0,0,6.7,7.2 -2022-01-14T07:00,28.9,62,17.5,0,0,6.1,11.2 -2022-01-14T08:00,25.5,65,15.4,0,0,7.7,10.7 -2022-01-14T09:00,33.6,62,22.1,0,0,6.2,10.7 -2022-01-14T10:00,36,69,26.8,0,0,5.8,11 -2022-01-14T11:00,35.4,75,28.4,0.004,0.028,5.9,9.8 -2022-01-14T12:00,35.2,79,29.4,0,0.028,6.4,11.9 -2022-01-14T13:00,36,78,29.7,0,0.028,5.4,10.7 -2022-01-14T14:00,34.9,76,28,0.004,0.11,8.6,14.3 -2022-01-14T15:00,33.7,77,27.1,0,0.083,5.1,14.3 -2022-01-14T16:00,33.4,74,25.9,0,0.055,4.3,8.5 -2022-01-14T17:00,32,77,25.5,0,0,4.3,16.8 -2022-01-14T18:00,31,68,21.8,0,0,12.5,19.7 -2022-01-14T19:00,27.4,71,19.2,0,0,12.5,21.9 -2022-01-14T20:00,25.5,73,18.1,0,0,9.7,20.4 -2022-01-14T21:00,22.5,78,16.5,0,0,5,16.1 -2022-01-14T22:00,15.6,83,11.5,0,0,6.9,9.4 -2022-01-14T23:00,15.9,83,11.6,0,0,5.6,9.4 -2022-01-15T00:00,19.9,77,13.9,0,0,4.8,7.4 -2022-01-15T01:00,19.9,73,12.7,0,0,3.5,6.5 -2022-01-15T02:00,20.1,71,12.3,0,0,1.6,4.9 -2022-01-15T03:00,20.6,69,12.1,0,0,4.1,4.7 -2022-01-15T04:00,13.4,78,7.7,0,0,5.8,7.6 -2022-01-15T05:00,10.6,84,6.6,0,0,6.2,7.4 -2022-01-15T06:00,5.3,81,0.8,0,0,8.6,10.5 -2022-01-15T07:00,6.4,73,-0.4,0,0,8.4,11 -2022-01-15T08:00,10.2,64,0.5,0,0,6.9,10.3 -2022-01-15T09:00,15.3,63,5,0,0,7.9,10.5 -2022-01-15T10:00,26.3,54,12.1,0,0,5.1,10.3 -2022-01-15T11:00,33.4,44,13.8,0,0,5.8,10.1 -2022-01-15T12:00,37.5,41,15.8,0,0,5.4,10.5 -2022-01-15T13:00,40.5,42,19,0,0,4.6,10.1 -2022-01-15T14:00,40.9,46,21.9,0,0,5.7,8.1 -2022-01-15T15:00,45.1,30,15.8,0,0,5,8.7 -2022-01-15T16:00,42.9,31,14.5,0,0,6.9,7.4 -2022-01-15T17:00,32.2,49,15.3,0,0,11,13.2 -2022-01-15T18:00,30,49,12.9,0,0,10.7,13.6 -2022-01-15T19:00,31.5,43,11.5,0,0,4.6,12.8 -2022-01-15T20:00,20.2,68,11.3,0,0,7.6,8.9 -2022-01-15T21:00,22.6,65,12.7,0,0,6.6,10.5 -2022-01-15T22:00,23.7,61,12.2,0,0,6.9,11.6 -2022-01-15T23:00,22.7,65,12.6,0,0,8.7,14.1 -2022-01-16T00:00,21.4,69,12.8,0,0,7.1,14.1 -2022-01-16T01:00,19.7,75,13.1,0,0,4.4,11.2 -2022-01-16T02:00,25.5,61,14.1,0,0,5.1,8.1 -2022-01-16T03:00,30.6,58,17.6,0,0,6.2,10.5 -2022-01-16T04:00,27,63,15.9,0,0,6.5,9.6 -2022-01-16T05:00,26.2,54,11.8,0,0,7.1,7.8 -2022-01-16T06:00,28.5,46,10.3,0,0,4.1,8.9 -2022-01-16T07:00,27.2,56,13.5,0,0,6.6,7.2 -2022-01-16T08:00,21.7,65,11.7,0,0,7.4,8.5 -2022-01-16T09:00,27.5,65,17.2,0,0,6.1,10.1 -2022-01-16T10:00,35.3,68,25.7,0,0,4,8.1 -2022-01-16T11:00,39.7,55,24.7,0,0,4.5,7.6 -2022-01-16T12:00,48,22,11.2,0,0,0.5,6.3 -2022-01-16T13:00,48,26,14.9,0,0,3.8,5.8 -2022-01-16T14:00,42.4,50,24.8,0,0,5.7,8.9 -2022-01-16T15:00,42.3,51,25.5,0,0,5.5,9.4 -2022-01-16T16:00,36.9,61,24.5,0,0,7.2,9.8 -2022-01-16T17:00,32.4,66,22.1,0,0,7.9,10.1 -2022-01-16T18:00,38.2,43,17.9,0,0,2.5,9.4 -2022-01-16T19:00,36.6,45,17.4,0,0,1.7,2.9 -2022-01-16T20:00,33,50,16.4,0,0,3.7,4 -2022-01-16T21:00,23.5,66,13.7,0,0,5.1,6.3 -2022-01-16T22:00,19.1,75,12.5,0,0,6.2,7.8 -2022-01-16T23:00,16.1,80,10.9,0,0,5.2,7.8 -2022-01-17T00:00,12.5,83,8.2,0,0,7.8,9.8 -2022-01-17T01:00,13.2,76,7.1,0,0,7.7,10.5 -2022-01-17T02:00,15.6,69,7.2,0,0,7.2,10.3 -2022-01-17T03:00,16.4,68,7.7,0,0,7.3,10.3 -2022-01-17T04:00,16.1,70,7.9,0,0,7.8,10.5 -2022-01-17T05:00,19,72,11.4,0,0,7.1,10.7 -2022-01-17T06:00,15.8,73,8.7,0,0,8.8,11.2 -2022-01-17T07:00,17.2,70,9.1,0,0,8.5,11.4 -2022-01-17T08:00,19,69,10.4,0,0,7.1,11.6 -2022-01-17T09:00,28.2,59,15.8,0,0,6.1,10.5 -2022-01-17T10:00,36.2,56,22.1,0,0,3.9,11 -2022-01-17T11:00,40.3,57,26.3,0,0,6,8.7 -2022-01-17T12:00,46.7,38,22.6,0,0,4.9,8.9 -2022-01-17T13:00,51.9,26,17.8,0,0,4.3,7.4 -2022-01-17T14:00,55.9,20,14.9,0,0,2.6,6.7 -2022-01-17T15:00,52.9,51,35.2,0,0,2.7,5.1 -2022-01-17T16:00,51.9,27,19,0,0,2.2,3.4 -2022-01-17T17:00,41,42,19.5,0,0,7.4,3.1 -2022-01-17T18:00,46.2,34,19,0,0,2.6,9.2 -2022-01-17T19:00,36.4,56,22.2,0,0,6.1,8.5 -2022-01-17T20:00,34.3,64,23.3,0,0,6.5,7.8 -2022-01-17T21:00,32.7,63,21.7,0,0,7.1,8.9 -2022-01-17T22:00,29.8,71,21.6,0,0,5.8,8.7 -2022-01-17T23:00,29.3,71,21.2,0,0,4.9,7.4 -2022-01-18T00:00,28.1,69,19.4,0,0,5.1,8.1 -2022-01-18T01:00,27.3,69,18.5,0,0,4.8,7.6 -2022-01-18T02:00,26.7,69,17.8,0,0,4.8,6.7 -2022-01-18T03:00,25.9,70,17.3,0,0,4.2,6.5 -2022-01-18T04:00,25.8,68,16.5,0,0,4.3,6.3 -2022-01-18T05:00,27.4,68,18.2,0,0,4.5,6.5 -2022-01-18T06:00,27.5,68,18.2,0,0,3,5.1 -2022-01-18T07:00,26.6,70,18.1,0,0,2.7,3.6 -2022-01-18T08:00,28,65,17.9,0,0,4.6,6.3 -2022-01-18T09:00,32.7,57,19.2,0,0,4.8,8.5 -2022-01-18T10:00,39.3,47,20.6,0,0,4.1,8.9 -2022-01-18T11:00,44.8,35,19,0,0,3.9,8.9 -2022-01-18T12:00,49.8,26,15.9,0,0,4.6,10.3 -2022-01-18T13:00,53.3,20,13.2,0,0,3,10.5 -2022-01-18T14:00,54.4,19,12.4,0,0,2.7,8.5 -2022-01-18T15:00,53.2,20,13.3,0,0,6.5,10.7 -2022-01-18T16:00,48.7,25,14,0,0,7.3,11.4 -2022-01-18T17:00,41.4,32,13.5,0,0,7.2,11.2 -2022-01-18T18:00,38.8,34,12.6,0,0,5,11.4 -2022-01-18T19:00,35.7,38,12.6,0,0,3.2,8.3 -2022-01-18T20:00,34.5,40,12.5,0,0,2.9,4.3 -2022-01-18T21:00,38.4,33,11.5,0,0,3.1,3.8 -2022-01-18T22:00,29.1,50,12.8,0,0,5.1,6 -2022-01-18T23:00,27,60,15,0,0,5.4,6.9 -2022-01-19T00:00,27.2,57,14.2,0,0,5,6.9 -2022-01-19T01:00,26,61,14.3,0,0,5.4,8.9 -2022-01-19T02:00,26.2,65,16.2,0,0,9.7,15 -2022-01-19T03:00,24.3,82,19.7,0,0,9.8,17 -2022-01-19T04:00,24.3,87,21,0,0,5.8,15.7 -2022-01-19T05:00,23.9,90,21.5,0,0,4.5,8.9 -2022-01-19T06:00,25.1,89,22.2,0,0,4.3,9.2 -2022-01-19T07:00,25.3,87,21.9,0,0.028,4.4,8.1 -2022-01-19T08:00,25.5,83,21.1,0,0.028,5.1,9.2 -2022-01-19T09:00,26,78,19.9,0,0.028,5.5,10.3 -2022-01-19T10:00,26.2,74,19,0,0.028,5.1,10.7 -2022-01-19T11:00,26.7,73,19.3,0,0.028,4.6,10.3 -2022-01-19T12:00,27,72,19.1,0,0,6.2,12.5 -2022-01-19T13:00,26.8,70,18.4,0,0,7.5,14.1 -2022-01-19T14:00,26.9,68,17.7,0,0,8.1,15.2 -2022-01-19T15:00,26.2,67,16.6,0,0,6.9,15.2 -2022-01-19T16:00,25.7,64,15.4,0,0,6.1,12.8 -2022-01-19T17:00,20.2,68,11.5,0,0,5.9,11.2 -2022-01-19T18:00,19.8,66,10.2,0,0,5.4,10.5 -2022-01-19T19:00,19.4,65,9.4,0,0,5.2,9.6 -2022-01-19T20:00,19.2,64,8.9,0,0,4.8,9.4 -2022-01-19T21:00,19,64,8.8,0,0,4.1,8.7 -2022-01-19T22:00,18.6,66,9.1,0,0,4.2,7.6 -2022-01-19T23:00,16.5,73,9.4,0,0,4.8,7.2 -2022-01-20T00:00,16,75,9.6,0,0,4.1,7.6 -2022-01-20T01:00,15.5,76,9.4,0,0,2.4,6.7 -2022-01-20T02:00,14.9,77,9.1,0,0,1.3,4.3 -2022-01-20T03:00,14.6,77,8.7,0,0,1.1,2.5 -2022-01-20T04:00,14.1,79,8.7,0,0,0.7,2 -2022-01-20T05:00,10,90,7.5,0,0,4.7,2 -2022-01-20T06:00,12.2,89,9.7,0,0,2.7,7.2 -2022-01-20T07:00,12.1,84,8.2,0,0,0.5,6.9 -2022-01-20T08:00,12.7,81,8.1,0,0,4.4,8.7 -2022-01-20T09:00,17.2,73,10,0,0,5.8,11.9 -2022-01-20T10:00,25.6,47,8.2,0,0,5.9,13 -2022-01-20T11:00,33.4,32,6.6,0,0,5.2,13 -2022-01-20T12:00,37.3,27,6.3,0,0,4.7,12.3 -2022-01-20T13:00,39,26,6.9,0,0,5.9,13 -2022-01-20T14:00,40.1,25,6.8,0,0,7,13.6 -2022-01-20T15:00,39.8,25,7.3,0,0,7.3,13.6 -2022-01-20T16:00,37.3,29,7.9,0,0,3.9,12.5 -2022-01-20T17:00,24.1,77,17.9,0,0,4.8,7.4 -2022-01-20T18:00,25.1,71,17.2,0,0,2.7,6 -2022-01-20T19:00,28.8,60,16.7,0,0,0.8,3.8 -2022-01-20T20:00,22.4,72,14.7,0,0,3.5,4 -2022-01-20T21:00,21.1,70,12.9,0,0,4.2,5.8 -2022-01-20T22:00,21.5,64,11,0,0,5.8,8.5 -2022-01-20T23:00,21.7,56,8.3,0,0,6.3,9.4 -2022-01-21T00:00,23.3,51,7.7,0,0,5.2,9.4 -2022-01-21T01:00,25.3,48,8.1,0,0,6.3,9.8 -2022-01-21T02:00,25.6,49,9.1,0,0,8.5,13.2 -2022-01-21T03:00,26.8,52,11.4,0,0,8.6,13.9 -2022-01-21T04:00,28,54,13.6,0,0,6.4,12.8 -2022-01-21T05:00,27.6,65,17.3,0,0,4,9.4 -2022-01-21T06:00,29.8,61,18.1,0,0,3.1,4.9 -2022-01-21T07:00,28,63,17.2,0,0,5,6.7 -2022-01-21T08:00,25,61,13.6,0,0,7.2,11.2 -2022-01-21T09:00,27.2,58,14.5,0,0,5.5,12.5 -2022-01-21T10:00,30.9,52,15.5,0,0,5,10.5 -2022-01-21T11:00,32.8,50,16.3,0,0,3.6,10.3 -2022-01-21T12:00,36.8,44,16.9,0,0,0.5,9.2 -2022-01-21T13:00,36.7,50,19.8,0,0.028,0.9,6 -2022-01-21T14:00,35.2,59,22.4,0,0.028,2.9,6 -2022-01-21T15:00,34.5,66,24.4,0,0.028,3.6,6.5 -2022-01-21T16:00,33.3,76,26.6,0,0.055,2.7,5.8 -2022-01-21T17:00,31.2,91,28.8,0,0.028,3.8,4.9 -2022-01-21T18:00,30.5,91,28.1,0,0.028,4.1,6.9 -2022-01-21T19:00,30.2,90,27.7,0,0.028,4.5,7.2 -2022-01-21T20:00,30,91,27.6,0,0.028,4.8,7.8 -2022-01-21T21:00,29.4,90,26.8,0,0,4.4,7.8 -2022-01-21T22:00,28.2,88,25.3,0,0,3.8,6.9 -2022-01-21T23:00,26.5,88,23.5,0,0,4.3,6 -2022-01-22T00:00,27.1,85,23.3,0,0,2.7,5.4 -2022-01-22T01:00,28.9,78,23,0,0,0.7,3.4 -2022-01-22T02:00,28,81,23,0,0,3.1,3.1 -2022-01-22T03:00,25.9,89,23.1,0,0,4.9,6.3 -2022-01-22T04:00,22.7,92,20.8,0,0,4.4,7.6 -2022-01-22T05:00,20.1,89,17.4,0,0,5.2,7.4 -2022-01-22T06:00,20.2,86,16.7,0,0,4.7,8.9 -2022-01-22T07:00,19.7,85,15.9,0,0,5.9,8.7 -2022-01-22T08:00,20,74,13.2,0,0,7,10.3 -2022-01-22T09:00,25.1,53,10.2,0,0,5.4,10.7 -2022-01-22T10:00,29.2,48,12.1,0,0,5.9,12.8 -2022-01-22T11:00,32,52,16.3,0,0,3.5,13 -2022-01-22T12:00,35.6,46,16.9,0,0,4,11 -2022-01-22T13:00,37.9,42,16.5,0,0,4.7,12.5 -2022-01-22T14:00,39.7,36,15,0,0,5.6,12.3 -2022-01-22T15:00,39.6,35,14.5,0,0,5.2,12.5 -2022-01-22T16:00,37.4,40,15.3,0,0,4.3,10.5 -2022-01-22T17:00,27.9,73,20.5,0,0,6.3,6.5 -2022-01-22T18:00,30.4,63,19.4,0,0,2.5,7.4 -2022-01-22T19:00,32.4,56,18.4,0,0,1,3.4 -2022-01-22T20:00,25.2,72,17.3,0,0,3.5,5.1 -2022-01-22T21:00,23.4,74,16.2,0,0,5.2,7.8 -2022-01-22T22:00,22.9,71,15,0,0,6,9.2 -2022-01-22T23:00,24.7,64,14.2,0,0,6.4,9.8 -2022-01-23T00:00,25.2,60,13.1,0,0,5.2,9.8 -2022-01-23T01:00,23.4,62,12.2,0,0,4.9,7.8 -2022-01-23T02:00,23.3,60,11.6,0,0,4,6.3 -2022-01-23T03:00,23.3,58,10.7,0,0,4.8,7.2 -2022-01-23T04:00,23.3,55,9.6,0,0,5.5,8.9 -2022-01-23T05:00,19.6,65,9.8,0,0,5.1,8.7 -2022-01-23T06:00,22.4,57,9.3,0,0,4.9,7.6 -2022-01-23T07:00,21.3,58,8.9,0,0,2.9,8.1 -2022-01-23T08:00,23.5,51,7.9,0,0,3.8,5.8 -2022-01-23T09:00,27.9,42,7.8,0,0,4.5,9.6 -2022-01-23T10:00,35.8,32,8.7,0,0,5.4,11.6 -2022-01-23T11:00,43.4,23,8.5,0,0,6.7,13.2 -2022-01-23T12:00,47.8,22,10.9,0,0,9,17 -2022-01-23T13:00,50.5,20,10.9,0,0,7.1,17 -2022-01-23T14:00,51.8,19,11.1,0,0,5.1,14.1 -2022-01-23T15:00,51.4,20,11.3,0,0,1.5,10.7 -2022-01-23T16:00,48.6,25,14.6,0,0,2.7,4 -2022-01-23T17:00,37.5,46,18.7,0,0,6.3,6.3 -2022-01-23T18:00,32.7,58,19.4,0,0,6.3,9.6 -2022-01-23T19:00,31.2,59,18.7,0,0,5.7,8.9 -2022-01-23T20:00,28.2,67,18.7,0,0,2.8,7.2 -2022-01-23T21:00,26.1,74,18.8,0,0,3.7,6.7 -2022-01-23T22:00,25.5,74,18.4,0,0,4.7,7.4 -2022-01-23T23:00,27.2,65,17.2,0,0,5.4,7.8 -2022-01-24T00:00,28,59,15.6,0,0,9.1,10.7 -2022-01-24T01:00,34.4,44,14.7,0,0,6.2,11.4 -2022-01-24T02:00,28.8,54,14,0,0,2.1,7.6 -2022-01-24T03:00,25.6,59,13.2,0,0,2.8,3.1 -2022-01-24T04:00,24.6,60,12.7,0,0,4,4.9 -2022-01-24T05:00,23.6,68,14.5,0,0,6.1,5.1 -2022-01-24T06:00,26.7,57,13.4,0,0,7.8,9.6 -2022-01-24T07:00,31.8,45,12.9,0,0,2.9,9.2 -2022-01-24T08:00,27.9,53,12.9,0,0,3,4.3 -2022-01-24T09:00,33.4,42,13,0,0,4.1,8.1 -2022-01-24T10:00,39.5,32,12.2,0,0,10.9,18.1 -2022-01-24T11:00,42.5,29,12.3,0,0,13.1,23.5 -2022-01-24T12:00,43.9,27,12.2,0,0,9.9,22.8 -2022-01-24T13:00,45.1,26,12.3,0,0,7.8,18.3 -2022-01-24T14:00,45.7,26,12.4,0,0,7,15.4 -2022-01-24T15:00,45.5,26,12.3,0,0,7.4,13.9 -2022-01-24T16:00,44.1,28,13.4,0,0,6.4,13.2 -2022-01-24T17:00,35.1,40,13.4,0,0,6.4,9.8 -2022-01-24T18:00,32.4,47,14.2,0,0,7,8.3 -2022-01-24T19:00,35.8,40,13.8,0,0,3.6,9.2 -2022-01-24T20:00,29.8,52,14.2,0,0,2.1,4.3 -2022-01-24T21:00,27.4,57,14.1,0,0,4.3,3.6 -2022-01-24T22:00,28.1,58,15.1,0,0,6.9,11 -2022-01-24T23:00,26.2,62,14.8,0,0,5.8,10.7 -2022-01-25T00:00,25.3,61,13.9,0,0,5.7,9.2 -2022-01-25T01:00,26.6,58,13.8,0,0,5,9.4 -2022-01-25T02:00,26.3,58,13.6,0,0,4.7,8.1 -2022-01-25T03:00,27.3,58,14.4,0,0,6.7,10.7 -2022-01-25T04:00,27.1,66,17.2,0,0,8.7,14.1 -2022-01-25T05:00,25.8,79,20,0,0.028,11.3,16.3 -2022-01-25T06:00,26,85,22.2,0,0.083,10.7,18.3 -2022-01-25T07:00,26.6,88,23.5,0,0.22,10.6,18.1 -2022-01-25T08:00,27.2,90,24.6,0,0.331,11.6,18.3 -2022-01-25T09:00,27.2,91,25.1,0,0.469,10.6,19.7 -2022-01-25T10:00,27.1,92,25.1,0,0.358,9.4,19.9 -2022-01-25T11:00,27.6,87,24.2,0,0.165,9.2,18.3 -2022-01-25T12:00,28.2,82,23.4,0,0.138,9.7,17.4 -2022-01-25T13:00,28,84,23.9,0,0.276,11,18.1 -2022-01-25T14:00,28.6,76,21.8,0,0.055,9.4,18.6 -2022-01-25T15:00,28.8,74,21.6,0,0.028,7.8,16.1 -2022-01-25T16:00,27.4,79,21.8,0,0.083,6.9,13.2 -2022-01-25T17:00,24.7,85,20.8,0,0.028,3.5,11.9 -2022-01-25T18:00,25.7,76,19.1,0,0.028,1,4 -2022-01-25T19:00,20.8,85,16.9,0,0,4.1,5.4 -2022-01-25T20:00,16.6,90,14.2,0,0,5.6,6.9 -2022-01-25T21:00,15.4,89,12.7,0,0,5.8,7.8 -2022-01-25T22:00,14.4,88,11.5,0,0,5.7,7.6 -2022-01-25T23:00,9.1,89,6.4,0,0,6.5,8.7 -2022-01-26T00:00,8,84,4.2,0,0,6,8.7 -2022-01-26T01:00,4.7,79,-0.2,0,0,6,8.1 -2022-01-26T02:00,1,75,-5.3,0,0,8.4,11 -2022-01-26T03:00,1.3,68,-6.8,0,0,7.6,11.2 -2022-01-26T04:00,6.7,60,-4.4,0,0,5.7,10.3 -2022-01-26T05:00,8.5,57,-3.5,0,0,4.6,7.6 -2022-01-26T06:00,4.7,62,-5.5,0,0,5.6,6.9 -2022-01-26T07:00,-0.8,68,-8.9,0,0,8.8,11.6 -2022-01-26T08:00,2.5,62,-7.6,0,0,7.9,11.9 -2022-01-26T09:00,11.9,53,-1.9,0,0,5.9,11 -2022-01-26T10:00,21.9,51,6.6,0,0,3.7,8.3 -2022-01-26T11:00,30.2,50,13.7,0,0,3.4,7.4 -2022-01-26T12:00,33.5,46,15.1,0,0,3.2,6.5 -2022-01-26T13:00,35.6,54,20.8,0,0,3.2,5.4 -2022-01-26T14:00,36.8,48,18.7,0,0,3.2,6 -2022-01-26T15:00,35.7,48,18,0,0,3.7,6.5 -2022-01-26T16:00,36.1,32,9.1,0,0,3.9,7.2 -2022-01-26T17:00,25.7,51,10.2,0,0,7.9,5.1 -2022-01-26T18:00,31.2,29,2.3,0,0,3.8,8.9 -2022-01-26T19:00,17.9,52,3.3,0,0,8.1,9.4 -2022-01-26T20:00,17.2,60,5.6,0,0,7.8,10.7 -2022-01-26T21:00,18.3,65,8.6,0,0,6.7,9.6 -2022-01-26T22:00,18.1,69,9.5,0,0,7,9.2 -2022-01-26T23:00,20.7,61,9.2,0,0,5.1,8.9 -2022-01-27T00:00,20.1,71,12.1,0,0.028,4.8,7.6 -2022-01-27T01:00,20.5,73,13.2,0,0.028,4.2,7.2 -2022-01-27T02:00,23.3,64,12.8,0,0,3.7,5.4 -2022-01-27T03:00,21.3,69,12.8,0,0,0.9,4.7 -2022-01-27T04:00,22.5,65,12.5,0,0,4.1,4.9 -2022-01-27T05:00,19,65,9.1,0,0,6,7.6 -2022-01-27T06:00,13.4,67,4.6,0,0,6.5,10.1 -2022-01-27T07:00,17.7,63,7.3,0,0,1,8.3 -2022-01-27T08:00,21.2,57,8.3,0,0,4.6,5.4 -2022-01-27T09:00,21.8,78,16.2,0,0.11,3.3,6.5 -2022-01-27T10:00,22.8,83,18.4,0,0.22,7.9,13 -2022-01-27T11:00,23.6,84,19.6,0,0.22,8.9,14.8 -2022-01-27T12:00,24.6,85,20.7,0,0.165,9.1,15.2 -2022-01-27T13:00,25.8,82,21,0,0.083,8.6,15.9 -2022-01-27T14:00,26.8,78,20.8,0,0.028,6.9,14.3 -2022-01-27T15:00,26.6,79,21.1,0,0.028,6.7,12.3 -2022-01-27T16:00,26.1,82,21.3,0,0.028,2.7,11.2 -2022-01-27T17:00,18.9,81,13.9,0,0,6.4,8.3 -2022-01-27T18:00,13.8,85,10,0,0,7.3,9.2 -2022-01-27T19:00,9.8,85,6.3,0,0,7.6,9.4 -2022-01-27T20:00,5.4,84,1.6,0,0,7,9.6 -2022-01-27T21:00,2,79,-3,0,0,6.1,9.2 -2022-01-27T22:00,0.8,74,-5.4,0,0,5.7,8.3 -2022-01-27T23:00,0.2,73,-6.3,0,0,8.5,10.5 -2022-01-28T00:00,3.3,64,-6.2,0,0,8.3,11.4 -2022-01-28T01:00,9.9,52,-4.4,0,0,7,10.3 -2022-01-28T02:00,16.1,41,-3.4,0,0,4.5,8.5 -2022-01-28T03:00,6.2,55,-6.6,0,0,6,7.6 -2022-01-28T04:00,2.9,62,-7.1,0,0,7.8,10.1 -2022-01-28T05:00,18.4,41,-1.4,0,0,3.8,10.1 -2022-01-28T06:00,20.2,37,-2.1,0,0,2.5,4.7 -2022-01-28T07:00,21.4,34,-2.6,0,0,4.9,5.4 -2022-01-28T08:00,23.7,32,-1.6,0,0,7.3,8.5 -2022-01-28T09:00,24,39,2.5,0,0,8.2,9.8 -2022-01-28T10:00,28,50,11.6,0,0,7.3,10.1 -2022-01-28T11:00,34.8,55,20.2,0,0,4.9,8.9 -2022-01-28T12:00,39.5,41,17.8,0,0,4,6.7 -2022-01-28T13:00,39.2,53,23.3,0,0,5.2,6.9 -2022-01-28T14:00,39.8,50,22.5,0,0,5.6,7.8 -2022-01-28T15:00,39.5,49,21.7,0,0,6.4,8.7 -2022-01-28T16:00,34.9,50,18.3,0,0,8.2,9.8 -2022-01-28T17:00,30,52,14.4,0,0,9.9,11.9 -2022-01-28T18:00,30,49,13,0,0,7.9,12.5 -2022-01-28T19:00,28.1,50,11.7,0,0,7.8,12.5 -2022-01-28T20:00,22.7,52,7.7,0,0,10.6,13 -2022-01-28T21:00,19.4,52,4.6,0,0,12.8,15.2 -2022-01-28T22:00,19.8,50,4.2,0,0,12.4,15.4 -2022-01-28T23:00,18.8,50,3,0,0,12.4,15.4 -2022-01-29T00:00,19.9,47,2.8,0,0,11.4,14.5 -2022-01-29T01:00,30,34,4.9,0,0,8,13.4 -2022-01-29T02:00,23.1,43,3.7,0,0,6,9.2 -2022-01-29T03:00,13.9,58,1.9,0,0,8.1,10.3 -2022-01-29T04:00,13.6,59,2.1,0,0,8.3,10.3 -2022-01-29T05:00,21.2,46,3.5,0,0,8.3,11.2 -2022-01-29T06:00,22.8,42,3.4,0,0,7.6,9.6 -2022-01-29T07:00,22.6,43,3.6,0,0,7.2,8.7 -2022-01-29T08:00,20.9,46,3.6,0,0,6.8,8.5 -2022-01-29T09:00,23,51,7.6,0,0,6.2,8.7 -2022-01-29T10:00,30.8,56,17.1,0,0,5.4,9.2 -2022-01-29T11:00,36.7,55,22,0,0,5.4,8.1 -2022-01-29T12:00,40.6,57,26.4,0,0,5.8,8.3 -2022-01-29T13:00,51.7,22,13.6,0,0,3.7,8.3 -2022-01-29T14:00,42.2,49,24.4,0,0,6.2,8.1 -2022-01-29T15:00,40.7,52,24.5,0,0,6.5,8.7 -2022-01-29T16:00,41.4,41,19.3,0,0,4.9,8.7 -2022-01-29T17:00,34.3,57,20.5,0,0,6.7,6 -2022-01-29T18:00,25.3,67,15.8,0,0,8.9,10.3 -2022-01-29T19:00,33.1,47,14.8,0,0,3.4,10.7 -2022-01-29T20:00,20,67,10.9,0,0,7.7,8.9 -2022-01-29T21:00,15.8,78,10,0,0,8.8,11.6 -2022-01-29T22:00,13,74,6.2,0,0,9.8,12.3 -2022-01-29T23:00,12.1,67,3.3,0,0,9.2,12.3 -2022-01-30T00:00,12.4,63,2.2,0,0,8.8,11.4 -2022-01-30T01:00,18.3,53,4.1,0,0,6.7,10.7 -2022-01-30T02:00,15.7,56,2.8,0,0,5.8,7.6 -2022-01-30T03:00,11.9,60,0.9,0,0,6.1,7.6 -2022-01-30T04:00,8.6,63,-1.4,0,0,6.9,8.5 -2022-01-30T05:00,9.7,61,-1,0,0,7.2,9.8 -2022-01-30T06:00,9.9,57,-2.5,0,0,7.4,9.2 -2022-01-30T07:00,9.1,58,-2.6,0,0,7.6,9.8 -2022-01-30T08:00,9.1,59,-2.2,0,0,7.1,9.4 -2022-01-30T09:00,16.1,55,2.8,0,0,6.9,9.2 -2022-01-30T10:00,27.3,50,11.3,0,0,5.8,8.9 -2022-01-30T11:00,41.5,21,4.6,0,0,3.1,7.6 -2022-01-30T12:00,41.8,40,19,0,0,4.8,6.3 -2022-01-30T13:00,45.7,28,14.6,0,0,4.6,6.9 -2022-01-30T14:00,41.6,44,21.4,0,0,5.6,8.5 -2022-01-30T15:00,43.4,35,17.3,0,0,4.7,8.5 -2022-01-30T16:00,45.9,23,10.5,0,0,3.6,6.5 -2022-01-30T17:00,33.6,62,21.9,0,0,6.3,6.7 -2022-01-30T18:00,39,38,15.7,0,0,4.1,9.8 -2022-01-30T19:00,37.6,41,16,0,0,2.8,4.5 -2022-01-30T20:00,19.2,71,11.2,0,0,4.8,5.8 -2022-01-30T21:00,13.8,78,8.3,0,0,8.8,10.7 -2022-01-30T22:00,17.2,70,9.1,0,0,8.8,11 -2022-01-30T23:00,14,70,5.9,0,0,9.2,11.4 -2022-01-31T00:00,11.1,70,3.2,0,0,9.3,12.3 -2022-01-31T01:00,9.8,67,1,0,0,9.6,12.3 -2022-01-31T02:00,9.9,62,-0.5,0,0,9.3,12.5 -2022-01-31T03:00,12.1,55,-0.8,0,0,8.3,11.6 -2022-01-31T04:00,8.1,58,-3.5,0,0,8.2,10.5 -2022-01-31T05:00,12.1,58,0.1,0,0,6.7,11 -2022-01-31T06:00,9.1,60,-2.2,0,0,7.7,9.6 -2022-01-31T07:00,16.3,50,1.1,0,0,6.4,10.3 -2022-01-31T08:00,20.8,44,2.4,0,0,5.6,7.6 -2022-01-31T09:00,27.5,37,4.4,0,0,2.4,6.7 -2022-01-31T10:00,29.6,53,14.4,0,0,5,9.2 -2022-01-31T11:00,37.4,45,18.2,0,0,5.7,10.7 -2022-01-31T12:00,47.8,24,12.3,0,0,3.3,11 -2022-01-31T13:00,42.2,51,25.2,0,0,7.3,9.6 -2022-01-31T14:00,51.9,20,12.1,0,0,3.8,10.7 -2022-01-31T15:00,43.7,44,23.5,0,0,5.5,9.6 -2022-01-31T16:00,41.4,47,22.5,0,0,6.9,10.5 -2022-01-31T17:00,41,38,17.5,0,0,10.5,11.9 -2022-01-31T18:00,30.5,47,12.6,0,0,6.7,16.3 -2022-01-31T19:00,35,40,13,0,0,7.3,11 -2022-01-31T20:00,25.2,53,10.2,0,0,8,9.8 -2022-01-31T21:00,24.7,51,9.2,0,0,7.1,9.4 -2022-01-31T22:00,31.6,40,10,0,0,4.9,8.5 -2022-01-31T23:00,32.3,37,8.9,0,0,3,6.5 -2022-02-01T00:00,31.9,37,8.7,0,0,4.9,5.1 -2022-02-01T01:00,19.4,59,7.4,0,0,8.3,13.6 -2022-02-01T02:00,20.9,62,9.8,0,0,7.2,12.3 -2022-02-01T03:00,17.7,68,8.8,0,0,8.7,11.4 -2022-02-01T04:00,16.9,67,7.7,0,0,8.8,12.3 -2022-02-01T05:00,18.8,72,11.2,0,0,7.1,11 -2022-02-01T06:00,17.5,68,8.7,0,0,7.6,9.6 -2022-02-01T07:00,23.2,58,10.7,0,0,5.4,9.2 -2022-02-01T08:00,23.4,57,10.5,0,0,4.5,6.7 -2022-02-01T09:00,26.2,47,9,0,0,1.2,6.3 -2022-02-01T10:00,27.5,55,13.3,0,0,3.2,5.6 -2022-02-01T11:00,29.2,53,14.2,0,0,5.2,8.9 -2022-02-01T12:00,30.5,51,14.3,0,0,3.4,8.9 -2022-02-01T13:00,30.9,53,16,0,0,4.2,8.1 -2022-02-01T14:00,29.1,58,16.2,0,0,9.9,16.6 -2022-02-01T15:00,27.3,65,17.2,0,0.028,11.6,19.5 -2022-02-01T16:00,26.1,70,17.7,0,0.083,10.9,20.4 -2022-02-01T17:00,23.4,84,19.3,0,0.083,7.4,17.9 -2022-02-01T18:00,22.6,86,19.2,0,0.22,6.8,12.1 -2022-02-01T19:00,22.1,86,18.6,0,0.22,7.3,12.3 -2022-02-01T20:00,21.7,87,18.6,0,0.165,6.8,12.3 -2022-02-01T21:00,21.6,88,18.7,0,0.193,6.1,11.2 -2022-02-01T22:00,21.1,89,18.5,0,0.165,8.1,12.5 -2022-02-01T23:00,20.2,89,17.4,0,0.11,8.6,14.1 -2022-02-02T00:00,19,84,14.9,0,0.11,10.2,15.9 -2022-02-02T01:00,17.5,82,12.9,0,0.055,9.7,16.3 -2022-02-02T02:00,16.4,85,12.7,0,0.083,10.8,17.2 -2022-02-02T03:00,14.7,88,11.8,0,0.138,12.5,19.9 -2022-02-02T04:00,13.5,88,10.7,0,0.193,13.2,21.3 -2022-02-02T05:00,11.8,88,8.8,0,0.165,12.2,21.3 -2022-02-02T06:00,11.4,87,8.2,0,0.083,10.2,19.2 -2022-02-02T07:00,11,86,7.6,0,0.055,8.8,16.6 -2022-02-02T08:00,10.8,85,7.3,0,0.055,9.6,15.2 -2022-02-02T09:00,10.8,85,7.2,0,0.028,11.4,18.3 -2022-02-02T10:00,11,85,7.3,0,0.028,10.4,18.6 -2022-02-02T11:00,12,85,8.4,0,0.028,8.2,17.2 -2022-02-02T12:00,12.7,85,9.1,0,0.055,7.7,14.3 -2022-02-02T13:00,13.5,84,9.5,0,0.028,8.7,15 -2022-02-02T14:00,14.4,82,10,0,0.028,8,15 -2022-02-02T15:00,15,81,10.2,0,0.028,8.6,14.3 -2022-02-02T16:00,15,82,10.6,0,0.028,7.7,14.3 -2022-02-02T17:00,10.4,82,6.1,0,0.055,7.1,12.5 -2022-02-02T18:00,9.2,81,4.5,0,0.028,8.2,13.2 -2022-02-02T19:00,7.6,79,2.6,0,0.028,6.6,13.2 -2022-02-02T20:00,5.7,82,1.4,0,0,5.4,10.5 -2022-02-02T21:00,-0.3,83,-4.2,0,0,5.5,7.8 -2022-02-02T22:00,-1.8,83,-5.6,0,0,5,6.7 -2022-02-02T23:00,0.3,85,-3.2,0,0,3.1,5.8 -2022-02-03T00:00,-1.5,91,-3.4,0,0,2.6,3.6 -2022-02-03T01:00,-2.5,88,-5.2,0,0,3.3,3.8 -2022-02-03T02:00,-7.4,87,-10.2,0,0,3,4.3 -2022-02-03T03:00,-9.1,79,-13.9,0,0,2,4 -2022-02-03T04:00,-10.3,76,-15.8,0,0,1.1,2.7 -2022-02-03T05:00,-10.7,84,-14.3,0,0,2.8,2.9 -2022-02-03T06:00,-15.7,89,-18,0,0,4.6,5.4 -2022-02-03T07:00,-15.7,84,-19,0,0,2.8,5.4 -2022-02-03T08:00,-18.3,76,-23.6,0,0,3.2,3.6 -2022-02-03T09:00,-13.2,67,-21.1,0,0,2.9,5.1 -2022-02-03T10:00,-5.1,62,-14.9,0,0,5.1,7.6 -2022-02-03T11:00,2.7,61,-7.6,0,0,5.1,9.4 -2022-02-03T12:00,8.8,62,-1.7,0,0,1.4,7.8 -2022-02-03T13:00,11.8,65,2.4,0,0,4.7,8.1 -2022-02-03T14:00,12.5,67,3.6,0,0,6.3,10.1 -2022-02-03T15:00,10.9,68,2.5,0,0,7.9,11.9 -2022-02-03T16:00,7,64,-2.6,0,0,4.8,12.8 -2022-02-03T17:00,5.4,59,-5.8,0,0,3.7,7.4 -2022-02-03T18:00,2.9,66,-6,0,0,3,4.3 -2022-02-03T19:00,5.6,65,-3.5,0,0,1.7,4 -2022-02-03T20:00,-0.5,73,-7.1,0,0,5.1,5.4 -2022-02-03T21:00,-6.2,81,-10.6,0,0,6.3,7.4 -2022-02-03T22:00,-8.3,75,-14.2,0,0,8.4,9.6 -2022-02-03T23:00,-4.7,63,-14,0,0,7.5,9.6 -2022-02-04T00:00,-4.3,63,-13.7,0,0,8.2,9.6 -2022-02-04T01:00,-2.1,62,-11.8,0,0,7.9,9.6 -2022-02-04T02:00,-0.2,61,-10.5,0,0,6.8,8.9 -2022-02-04T03:00,-2,64,-11.2,0,0,7.9,8.9 -2022-02-04T04:00,-1.3,63,-10.7,0,0,7.5,9.2 -2022-02-04T05:00,-2.8,64,-11.9,0,0,7.2,8.7 -2022-02-04T06:00,-3.1,64,-12.4,0,0,8.1,9.2 -2022-02-04T07:00,-1.1,63,-10.8,0,0,7.6,9.6 -2022-02-04T08:00,-1.4,66,-10,0,0,8.7,10.1 -2022-02-04T09:00,6.7,64,-2.9,0,0,5.6,10.3 -2022-02-04T10:00,15.4,62,4.7,0,0,5,7.8 -2022-02-04T11:00,21.9,63,11.2,0,0,8.4,13 -2022-02-04T12:00,28,58,15.1,0,0,8.2,13.6 -2022-02-04T13:00,31.5,56,17.4,0,0,7.2,12.5 -2022-02-04T14:00,33.5,54,18.6,0,0,6.9,11.9 -2022-02-04T15:00,33.7,56,19.6,0,0,6,11 -2022-02-04T16:00,30,60,17.8,0,0,7.9,9.2 -2022-02-04T17:00,26.7,58,13.7,0,0,8.1,10.7 -2022-02-04T18:00,19.3,67,10,0,0,7.6,9.6 -2022-02-04T19:00,14.4,75,7.9,0,0,7.5,8.9 -2022-02-04T20:00,11.7,77,5.8,0,0,8.1,9.8 -2022-02-04T21:00,8.5,79,3.5,0,0,9.3,10.7 -2022-02-04T22:00,8.5,77,2.7,0,0,9.3,11.2 -2022-02-04T23:00,8.1,74,1.4,0,0,9,10.7 -2022-02-05T00:00,8.9,70,1.2,0,0,8.5,10.7 -2022-02-05T01:00,9,68,0.6,0,0,7.4,10.3 -2022-02-05T02:00,8.8,69,0.6,0,0,6.7,9.6 -2022-02-05T03:00,10,69,1.9,0,0,6.4,9.8 -2022-02-05T04:00,9.6,71,2.1,0,0,6.1,10.3 -2022-02-05T05:00,18.1,52,3.4,0,0,1.8,10.3 -2022-02-05T06:00,21,47,4,0,0,3.2,5.6 -2022-02-05T07:00,9.4,71,1.9,0,0,5.7,5.6 -2022-02-05T08:00,10.3,77,4.6,0,0,5.6,9.6 -2022-02-05T09:00,16.2,74,9.2,0,0,5.1,8.1 -2022-02-05T10:00,26.2,55,12.2,0,0,4.4,7.2 -2022-02-05T11:00,32.3,61,20.5,0,0,3.8,5.8 -2022-02-05T12:00,33.6,68,24.3,0,0,10.2,15.9 -2022-02-05T13:00,36.2,69,26.9,0,0,4.3,15.9 -2022-02-05T14:00,36.8,67,27,0,0,3.8,6.7 -2022-02-05T15:00,37.6,53,21.8,0,0,9.7,13.2 -2022-02-05T16:00,37,48,18.9,0,0,15.4,24.4 -2022-02-05T17:00,34.3,51,18,0,0,12.4,24.4 -2022-02-05T18:00,31.6,50,14.9,0,0,7.5,19.2 -2022-02-05T19:00,23.7,66,14.2,0,0,6.9,11.6 -2022-02-05T20:00,20.5,67,11.4,0,0,7.9,9.4 -2022-02-05T21:00,27.3,55,13.1,0,0,2.6,9.2 -2022-02-05T22:00,13.6,80,8.5,0,0,5,8.9 -2022-02-05T23:00,12.9,84,8.9,0,0,3.7,7.8 -2022-02-06T00:00,17.6,73,10.3,0,0,7.6,9.4 -2022-02-06T01:00,25.9,62,14.5,0,0,6.8,11 -2022-02-06T02:00,24.1,73,16.5,0,0,4.3,10.7 -2022-02-06T03:00,23.4,76,16.8,0,0.028,4.7,6.9 -2022-02-06T04:00,23,75,16.3,0,0,2.4,5.4 -2022-02-06T05:00,19.2,83,15,0,0,5.4,3.1 -2022-02-06T06:00,21.8,85,18.1,0,0,5.7,8.5 -2022-02-06T07:00,22.2,82,17.6,0,0,3.4,7.6 -2022-02-06T08:00,18.7,82,14.1,0,0,2.5,4.5 -2022-02-06T09:00,22.6,75,15.8,0,0,2.8,4 -2022-02-06T10:00,27.4,67,17.9,0,0,1.3,3.4 -2022-02-06T11:00,29.7,62,18.1,0,0,1.8,3.1 -2022-02-06T12:00,30.7,66,20.7,0,0,1.9,5.1 -2022-02-06T13:00,31.8,61,19.9,0,0,3.9,7.6 -2022-02-06T14:00,32.5,59,19.8,0,0,4.4,7.8 -2022-02-06T15:00,31.8,62,20.4,0,0,3.4,7.4 -2022-02-06T16:00,28,67,18.5,0,0,6.8,7.2 -2022-02-06T17:00,26.2,63,15.3,0,0,6.4,7.8 -2022-02-06T18:00,20,74,13,0,0,7.2,9.6 -2022-02-06T19:00,15.3,80,10.1,0,0,6.7,9.2 -2022-02-06T20:00,13.1,79,7.9,0,0,6.3,8.7 -2022-02-06T21:00,12.5,71,4.8,0,0,10.3,12.3 -2022-02-06T22:00,13.3,65,3.7,0,0,11.2,13.2 -2022-02-06T23:00,13.3,62,2.7,0,0,10.8,13.2 -2022-02-07T00:00,13.4,60,2,0,0,10.4,13 -2022-02-07T01:00,13.9,58,1.9,0,0,9.5,12.1 -2022-02-07T02:00,12.8,60,1.5,0,0,10.3,12.1 -2022-02-07T03:00,16.4,55,3.1,0,0,8.6,12.1 -2022-02-07T04:00,16.2,56,3,0,0,6.4,9.8 -2022-02-07T05:00,13.8,62,3.2,0,0,10.1,8.1 -2022-02-07T06:00,14.8,61,3.9,0,0,9.5,11.9 -2022-02-07T07:00,13.7,64,3.7,0,0,9.1,11 -2022-02-07T08:00,13.6,68,5.1,0,0,10,12.1 -2022-02-07T09:00,20.9,68,11.9,0,0,6.5,11.6 -2022-02-07T10:00,28.9,65,18.7,0,0,4.3,8.5 -2022-02-07T11:00,32.9,70,24.3,0,0,4.4,6.9 -2022-02-07T12:00,37.2,67,27.1,0,0,4,7.8 -2022-02-07T13:00,39.5,64,28.1,0,0,4.7,7.2 -2022-02-07T14:00,40,64,28.9,0,0,4.4,7.2 -2022-02-07T15:00,39.6,64,28.5,0,0,5.8,6.5 -2022-02-07T16:00,45.6,36,20,0,0,4,6.3 -2022-02-07T17:00,43.4,33,15.9,0,0,3,8.1 -2022-02-07T18:00,28,63,16.9,0,0,6.8,8.1 -2022-02-07T19:00,24.7,73,17.4,0,0,8.1,9.4 -2022-02-07T20:00,23.5,63,12.8,0,0,11.6,13.6 -2022-02-07T21:00,22.6,58,10.2,0,0,12.5,15 -2022-02-07T22:00,25.2,52,10,0,0,10.1,14.8 -2022-02-07T23:00,23,57,10.1,0,0,7,12.3 -2022-02-08T00:00,21.8,63,11.1,0,0,6.8,10.5 -2022-02-08T01:00,24.4,62,13.1,0,0,8.5,15 -2022-02-08T02:00,24.9,59,12.7,0,0,8.6,14.1 -2022-02-08T03:00,23.4,68,14.3,0,0,10.8,18.3 -2022-02-08T04:00,19.9,72,12.3,0,0,6.2,16.1 -2022-02-08T05:00,19.5,71,11.6,0,0,7.8,9.6 -2022-02-08T06:00,19.7,73,12.3,0,0,6.5,9.6 -2022-02-08T07:00,19.3,68,10.3,0,0,8.5,11.9 -2022-02-08T08:00,19,69,10.6,0,0,5.6,9.6 -2022-02-08T09:00,24,69,15.4,0,0,9,13 -2022-02-08T10:00,31.2,66,21,0,0,3.6,13.9 -2022-02-08T11:00,35.4,60,22.9,0,0,5.8,9.4 -2022-02-08T12:00,37.3,60,24.9,0,0,4,10.1 -2022-02-08T13:00,38.2,62,26.2,0,0,4.3,6.7 -2022-02-08T14:00,39.5,54,24.3,0,0,4.7,6.5 -2022-02-08T15:00,45.1,28,13.7,0,0,0.2,5.8 -2022-02-08T16:00,45.5,26,12.3,0,0,2.7,4.3 -2022-02-08T17:00,30.9,64,20.3,0,0,9.7,7.4 -2022-02-08T18:00,26.7,70,18.1,0,0,8.3,11.6 -2022-02-08T19:00,22.4,78,16.4,0,0,7.9,9.8 -2022-02-08T20:00,21.3,79,15.8,0,0,6.5,10.1 -2022-02-08T21:00,22.6,75,15.8,0,0,7.3,12.5 -2022-02-08T22:00,19.3,68,10.6,0,0,6.9,11.9 -2022-02-08T23:00,20.8,64,10.4,0,0,6.3,9.4 -2022-02-09T00:00,24.1,62,12.9,0,0,8.6,13.6 -2022-02-09T01:00,25,60,13.1,0,0,7.3,13.9 -2022-02-09T02:00,19.9,66,10.4,0,0,6.1,11.2 -2022-02-09T03:00,18.4,74,11.5,0,0,7,8.3 -2022-02-09T04:00,25.6,58,12.7,0,0,5.4,9.4 -2022-02-09T05:00,20.6,66,11.1,0,0,5.4,6.3 -2022-02-09T06:00,21.5,63,10.8,0,0,5.5,8.1 -2022-02-09T07:00,16.8,73,9.7,0,0,8,8.9 -2022-02-09T08:00,18.3,74,11.6,0,0,7.4,10.5 -2022-02-09T09:00,24.7,73,17.3,0,0,5.9,9.4 -2022-02-09T10:00,33.1,60,20.8,0,0,7.1,9.2 -2022-02-09T11:00,37.9,59,24.8,0,0,5,10.5 -2022-02-09T12:00,40.9,58,27.4,0,0,5.3,7.6 -2022-02-09T13:00,41.8,53,25.9,0,0,5.7,7.4 -2022-02-09T14:00,47.4,30,17.5,0,0,3.6,7.6 -2022-02-09T15:00,47,31,17.8,0,0,3.7,4.7 -2022-02-09T16:00,40.3,53,24.4,0,0,6.6,8.5 -2022-02-09T17:00,40.7,52,24.6,0,0,6.2,9.2 -2022-02-09T18:00,34.1,59,21.2,0,0,9.2,12.3 -2022-02-09T19:00,34.2,62,22.5,0,0,7.5,11.9 -2022-02-09T20:00,32.7,67,22.8,0,0,6.8,12.8 -2022-02-09T21:00,31.1,67,21.4,0,0,6.9,11.2 -2022-02-09T22:00,28,70,19.6,0,0,9.8,11.9 -2022-02-09T23:00,27.1,72,19.3,0,0,6.7,12.5 -2022-02-10T00:00,24.6,76,18.1,0,0,7.4,10.3 -2022-02-10T01:00,22.9,79,17.3,0,0,6.5,9.4 -2022-02-10T02:00,19.4,80,14.3,0,0,7.8,10.5 -2022-02-10T03:00,19,80,13.9,0,0,6.9,10.3 -2022-02-10T04:00,21.2,75,14.5,0,0,6.7,9.2 -2022-02-10T05:00,22.1,79,16.7,0,0,5.2,9.4 -2022-02-10T06:00,25.4,73,17.9,0,0,6.1,10.1 -2022-02-10T07:00,25.6,69,17,0,0,5.4,10.1 -2022-02-10T08:00,29.8,65,19.6,0,0,5.4,8.7 -2022-02-10T09:00,36.6,64,25.5,0,0,4.9,8.7 -2022-02-10T10:00,44.3,41,22.1,0,0,6,9.2 -2022-02-10T11:00,41.9,61,29.6,0,0,6,9.4 -2022-02-10T12:00,45.2,53,29.3,0,0,7.4,11.9 -2022-02-10T13:00,47.4,52,30.6,0,0,10.1,17 -2022-02-10T14:00,48,52,31,0,0,8.7,17.7 -2022-02-10T15:00,45.8,55,30.4,0,0,6.9,14.8 -2022-02-10T16:00,51.5,40,28.1,0,0,9.1,13.6 -2022-02-10T17:00,45.7,52,28.9,0,0,7.4,18.8 -2022-02-10T18:00,41.5,51,24.9,0,0,8.3,14.8 -2022-02-10T19:00,42.4,48,24,0,0,9,15 -2022-02-10T20:00,42.1,46,22.9,0,0,4,11.2 -2022-02-10T21:00,38.7,52,22.6,0,0,1.8,5.4 -2022-02-10T22:00,31.6,65,21.3,0,0,5.6,5.1 -2022-02-10T23:00,33.5,64,22.8,0,0,9,13.4 -2022-02-11T00:00,31.2,70,22.6,0,0,6.8,20.1 -2022-02-11T01:00,25.8,79,20,0,0,6.1,11 -2022-02-11T02:00,25.8,75,19,0,0,6.3,9.8 -2022-02-11T03:00,24.8,73,17.4,0,0,7,9.8 -2022-02-11T04:00,21.5,78,15.8,0,0,6.5,11 -2022-02-11T05:00,25.8,63,15,0,0,8.7,10.5 -2022-02-11T06:00,28.9,77,22.6,0,0,11.1,21.5 -2022-02-11T07:00,25.5,84,21.5,0,0,4.2,17.2 -2022-02-11T08:00,29.5,75,22.6,0,0,8.2,12.5 -2022-02-11T09:00,32.4,68,22.8,0,0,7.1,14.1 -2022-02-11T10:00,35.2,57,21.6,0,0,2.1,13.6 -2022-02-11T11:00,36.7,52,20.7,0,0,9.1,16.8 -2022-02-11T12:00,36.2,50,19.1,0,0,11.1,19.9 -2022-02-11T13:00,33.3,59,20.7,0,0.028,9.2,20.1 -2022-02-11T14:00,33,59,20.4,0,0.028,7.9,16.3 -2022-02-11T15:00,32.7,60,20.3,0,0.028,7.7,15.2 -2022-02-11T16:00,30.4,68,20.9,0,0.028,6.5,14.8 -2022-02-11T17:00,26.1,87,22.7,0,0.138,8.8,12.3 -2022-02-11T18:00,26.2,84,22.1,0,0.165,7.4,14.3 -2022-02-11T19:00,26.2,85,22.2,0,0.138,5,12.8 -2022-02-11T20:00,25.4,87,22.1,0,0.138,3.5,8.7 -2022-02-11T21:00,24.9,90,22.3,0,0.193,5,8.7 -2022-02-11T22:00,24,91,21.8,0,0.165,2.6,8.3 -2022-02-11T23:00,23.5,91,21.1,0,0.083,3.6,6 -2022-02-12T00:00,23.2,89,20.5,0,0.028,3.9,7.2 -2022-02-12T01:00,22.1,86,18.7,0,0,3.4,6.5 -2022-02-12T02:00,15.3,86,11.8,0,0,6.6,8.1 -2022-02-12T03:00,10.3,86,7,0,0,7.1,9.2 -2022-02-12T04:00,8.2,86,4.8,0,0,5.1,9.2 -2022-02-12T05:00,6.4,81,1.9,0,0,5.3,8.5 -2022-02-12T06:00,0.3,79,-4.6,0,0,7.2,9.2 -2022-02-12T07:00,1.3,72,-5.6,0,0,8.1,10.5 -2022-02-12T08:00,5.3,67,-3.3,0,0,8.4,11 -2022-02-12T09:00,16.1,60,4.6,0,0,5.1,11 -2022-02-12T10:00,25.3,54,10.9,0,0,5.6,10.1 -2022-02-12T11:00,31.9,47,14.1,0,0,6,10.3 -2022-02-12T12:00,35.5,40,13.4,0,0,5.4,10.3 -2022-02-12T13:00,37,40,14.6,0,0,5.1,9.8 -2022-02-12T14:00,38.2,41,16.4,0,0,4.4,9.2 -2022-02-12T15:00,37.6,50,20.8,0,0,4.6,8.1 -2022-02-12T16:00,39.8,31,11.7,0,0,4.6,6.7 -2022-02-12T17:00,39.2,26,7.3,0,0,3.1,5.4 -2022-02-12T18:00,36.9,29,7.5,0,0,2.6,4 -2022-02-12T19:00,34.3,33,8,0,0,1.6,3.8 -2022-02-12T20:00,29.6,43,9.8,0,0,1.8,2.7 -2022-02-12T21:00,25.6,54,11.2,0,0,3.9,4.5 -2022-02-12T22:00,17.2,65,7.3,0,0,6.3,8.1 -2022-02-12T23:00,13.4,70,5.4,0,0,6.5,8.3 -2022-02-13T00:00,9.3,74,2.7,0,0,8,10.1 -2022-02-13T01:00,10,70,2.2,0,0,8.1,11 -2022-02-13T02:00,10.8,69,2.5,0,0,8.1,11 -2022-02-13T03:00,10.6,70,2.6,0,0,7.9,11 -2022-02-13T04:00,10.8,71,3.3,0,0,7.3,10.7 -2022-02-13T05:00,14.1,72,6.8,0,0,6.5,10.5 -2022-02-13T06:00,11.4,74,4.6,0,0,7.5,11.6 -2022-02-13T07:00,12.7,73,5.6,0,0,6.4,10.3 -2022-02-13T08:00,17.3,69,8.9,0,0,5.4,9.8 -2022-02-13T09:00,25.7,60,13.8,0,0,5.4,9.2 -2022-02-13T10:00,34.5,56,20.3,0,0,5.2,9.6 -2022-02-13T11:00,39.5,51,23,0,0,4.8,8.3 -2022-02-13T12:00,42.8,46,23.5,0,0,4.8,8.3 -2022-02-13T13:00,44,44,23.3,0,0,5.5,8.7 -2022-02-13T14:00,43.8,47,24.6,0,0,6.8,9.4 -2022-02-13T15:00,45.8,38,21.7,0,0,6.4,9.6 -2022-02-13T16:00,44.8,41,22.3,0,0,6.5,8.5 -2022-02-13T17:00,38.3,54,23,0,0,10.1,8.3 -2022-02-13T18:00,44.2,30,14.7,0,0,6.4,12.1 -2022-02-13T19:00,37.6,37,13.5,0,0,4.2,7.8 -2022-02-13T20:00,25.9,57,12.9,0,0,5.8,6.7 -2022-02-13T21:00,22.6,72,14.8,0,0,6.5,10.5 -2022-02-13T22:00,20.1,77,14.1,0,0,6.7,10.1 -2022-02-13T23:00,15.7,79,10.4,0,0,9,11.2 -2022-02-14T00:00,16.3,77,10.4,0,0,8.1,11.4 -2022-02-14T01:00,14.7,77,9,0,0,8.3,10.5 -2022-02-14T02:00,18.1,71,10.1,0,0,7.1,10.5 -2022-02-14T03:00,13.9,78,8.4,0,0,6.6,8.7 -2022-02-14T04:00,8.2,84,4.4,0,0,7.5,9.8 -2022-02-14T05:00,16.4,72,9,0,0,6.4,11 -2022-02-14T06:00,13.6,70,5.7,0,0,7.2,11.9 -2022-02-14T07:00,14.6,70,6.5,0,0,6.3,10.5 -2022-02-14T08:00,17.2,69,8.8,0,0,6.5,9.8 -2022-02-14T09:00,27.3,55,13.4,0,0,3.2,9.8 -2022-02-14T10:00,36.4,43,16.2,0,0,1.2,4.9 -2022-02-14T11:00,40.2,54,25.1,0,0,3.5,6.9 -2022-02-14T12:00,42.4,54,27,0,0,5.1,8.5 -2022-02-14T13:00,52.3,23,16.1,0,0,0.9,10.5 -2022-02-14T14:00,52.9,26,18.8,0,0,2.2,8.5 -2022-02-14T15:00,53.3,27,20.4,0,0,0.7,8.5 -2022-02-14T16:00,52.5,29,21,0,0,0.5,5.8 -2022-02-14T17:00,39.5,52,23.3,0,0,6.2,3.1 -2022-02-14T18:00,39.2,43,18.6,0,0,3.7,7.2 -2022-02-14T19:00,35.6,56,21.4,0,0,5.9,6.7 -2022-02-14T20:00,32.4,66,22.1,0,0,3.7,7.8 -2022-02-14T21:00,28.6,79,22.9,0,0,3.8,6 -2022-02-14T22:00,26.2,82,21.5,0,0,4.8,7.2 -2022-02-14T23:00,24.9,78,19,0,0,5,7.6 -2022-02-15T00:00,23.8,74,16.6,0,0,4.4,7.6 -2022-02-15T01:00,23.4,69,14.7,0,0,4.1,6.7 -2022-02-15T02:00,22.7,68,13.8,0,0,4.2,6.3 -2022-02-15T03:00,23,65,13,0,0,3.7,5.6 -2022-02-15T04:00,23.3,62,12,0,0,5.3,7.8 -2022-02-15T05:00,18.5,75,11.9,0,0,5.7,8.1 -2022-02-15T06:00,22.6,63,11.8,0,0,4.4,7.6 -2022-02-15T07:00,22.3,62,11.3,0,0,3.8,6.7 -2022-02-15T08:00,26.3,53,11.3,0,0,4.3,8.1 -2022-02-15T09:00,34,41,12.7,0,0,3.3,8.9 -2022-02-15T10:00,42.3,35,16.3,0,0,3.4,9.2 -2022-02-15T11:00,48.1,29,17.7,0,0,3.5,10.1 -2022-02-15T12:00,50.7,29,19.3,0,0,4.4,11 -2022-02-15T13:00,50.2,32,21.1,0,0,8.1,16.3 -2022-02-15T14:00,50.3,25,15.4,0,0,7,16.6 -2022-02-15T15:00,51.2,21,12.5,0,0,3.9,14.5 -2022-02-15T16:00,50.7,22,12.7,0,0,3,10.1 -2022-02-15T17:00,44.4,31,15.6,0,0,4.3,6.7 -2022-02-15T18:00,35.4,42,14.7,0,0,5.9,7.8 -2022-02-15T19:00,34.5,45,15.4,0,0,3.8,7.6 -2022-02-15T20:00,29.8,69,20.8,0,0,3.8,6 -2022-02-15T21:00,26.4,83,21.9,0,0,2.9,6 -2022-02-15T22:00,24.4,87,21.2,0,0,3.3,4.9 -2022-02-15T23:00,23.7,86,20.2,0,0,4.7,5.6 -2022-02-16T00:00,25.3,76,18.8,0,0,2.6,5.8 -2022-02-16T01:00,30,51,14.2,0,0,6.1,12.1 -2022-02-16T02:00,27.7,64,17.2,0,0,6.3,10.5 -2022-02-16T03:00,29.9,59,17.2,0,0,1.6,7.4 -2022-02-16T04:00,26.9,65,16.6,0,0,2.8,2.9 -2022-02-16T05:00,20.5,80,15.3,0,0,5.4,6.3 -2022-02-16T06:00,21.9,75,15.4,0,0,3.5,6.5 -2022-02-16T07:00,22.1,71,14.2,0,0,2.3,4.7 -2022-02-16T08:00,24.9,64,14.3,0,0,1.4,4.9 -2022-02-16T09:00,28.6,58,15.5,0,0,2.1,7.8 -2022-02-16T10:00,31.8,62,20.1,0,0,4.1,11 -2022-02-16T11:00,36.1,56,21.9,0,0,6.3,14.3 -2022-02-16T12:00,37.2,56,22.8,0,0,8,16.8 -2022-02-16T13:00,37,56,22.9,0,0,9.2,18.6 -2022-02-16T14:00,36.4,58,23.1,0,0,11.2,20.8 -2022-02-16T15:00,32.8,68,23.5,0,0,12.3,21.9 -2022-02-16T16:00,32,71,23.6,0,0.055,11.7,21.9 -2022-02-16T17:00,26.8,84,22.6,0,0.138,10.1,20.4 -2022-02-16T18:00,26.8,88,23.6,0,0.358,9.9,17 -2022-02-16T19:00,26.6,84,22.6,0,0.248,9.9,16.3 -2022-02-16T20:00,24.5,85,20.8,0,0.165,12.8,20.1 -2022-02-16T21:00,22.2,84,18.1,0,0.165,12.9,23.5 -2022-02-16T22:00,21.2,84,17.1,0,0.165,11,21 -2022-02-16T23:00,20.6,85,16.7,0,0.11,10.4,18.1 -2022-02-17T00:00,20.1,85,16.4,0,0.083,9.2,17.2 -2022-02-17T01:00,19.9,85,16.2,0,0.055,5.8,15.2 -2022-02-17T02:00,19.6,86,16,0,0.028,4.8,9.6 -2022-02-17T03:00,19.3,83,15,0,0.028,5.4,10.1 -2022-02-17T04:00,17.5,85,13.7,0,0,3.1,9.6 -2022-02-17T05:00,16.4,87,13.2,0,0,2.1,6.9 -2022-02-17T06:00,17.1,83,12.9,0,0,1.5,4.7 -2022-02-17T07:00,14.9,86,11.6,0,0,2.4,3.8 -2022-02-17T08:00,17.1,82,12.5,0,0,2.1,4 -2022-02-17T09:00,18.1,74,11.4,0,0,3.1,6.3 -2022-02-17T10:00,20.3,69,11.8,0,0,4,7.4 -2022-02-17T11:00,24.1,58,11.5,0,0,4.9,9.4 -2022-02-17T12:00,28,50,11.6,0,0,4.4,9.2 -2022-02-17T13:00,31.3,45,12.3,0,0,4.3,8.5 -2022-02-17T14:00,32.9,45,14,0,0,3.5,7.8 -2022-02-17T15:00,33.2,48,15.5,0,0,3.2,6.7 -2022-02-17T16:00,31.1,52,15.4,0,0,4.6,7.2 -2022-02-17T17:00,26,61,14.2,0,0,5.5,8.9 -2022-02-17T18:00,17.5,66,8,0,0,8.7,11.2 -2022-02-17T19:00,14.7,71,7,0,0,7.6,11.2 -2022-02-17T20:00,13.5,77,7.7,0,0,5.5,10.5 -2022-02-17T21:00,11.6,78,6,0,0,5,9.2 -2022-02-17T22:00,11.8,71,4.2,0,0,4.8,8.7 -2022-02-17T23:00,11.8,68,3.3,0,0,5.8,9.2 -2022-02-18T00:00,15.1,67,6.2,0,0,5.9,9.8 -2022-02-18T01:00,16.3,69,7.9,0,0,6.2,10.3 -2022-02-18T02:00,14.5,71,6.8,0,0,5.1,9.8 -2022-02-18T03:00,14.2,70,6.1,0,0,6.1,9.8 -2022-02-18T04:00,14.1,71,6.4,0,0,7.4,11.6 -2022-02-18T05:00,17.4,69,9.1,0,0,8.2,13 -2022-02-18T06:00,17,68,8.2,0,0,7.4,13.4 -2022-02-18T07:00,19.2,64,9,0,0,7.4,14.5 -2022-02-18T08:00,20.6,63,9.9,0,0,7.9,12.1 -2022-02-18T09:00,33.9,38,11,0,0,2.3,10.7 -2022-02-18T10:00,33.8,60,21.3,0,0,3.5,5.8 -2022-02-18T11:00,37.9,55,23.1,0,0,2.7,6.5 -2022-02-18T12:00,39.7,48,21.7,0,0,3.3,6.5 -2022-02-18T13:00,39.9,49,22.1,0,0,3.6,8.3 -2022-02-18T14:00,39.7,53,23.8,0,0,3.5,6.9 -2022-02-18T15:00,39.8,45,20.3,0,0,4.7,9.4 -2022-02-18T16:00,37.3,55,22.6,0,0,5.4,9.4 -2022-02-18T17:00,39.9,43,19,0,0,1.9,8.7 -2022-02-18T18:00,26.5,70,18.1,0,0,6.4,8.7 -2022-02-18T19:00,23.6,77,17.3,0,0,7.6,10.1 -2022-02-18T20:00,20.7,76,14.3,0,0,8.1,11 -2022-02-18T21:00,17.4,80,12.3,0,0,8.1,11.4 -2022-02-18T22:00,18.4,78,12.7,0,0,6.3,11 -2022-02-18T23:00,18.1,76,11.7,0,0,6.4,9.8 -2022-02-19T00:00,16.3,75,10,0,0,6.9,10.1 -2022-02-19T01:00,14.7,77,8.7,0,0,7.3,10.3 -2022-02-19T02:00,14.1,76,8.1,0,0,6.8,10.5 -2022-02-19T03:00,13.6,75,7.2,0,0,6.4,10.1 -2022-02-19T04:00,11.8,75,5.4,0,0,7.4,9.8 -2022-02-19T05:00,17.5,72,10,0,0,5,10.3 -2022-02-19T06:00,11.4,74,4.8,0,0,7.8,11.2 -2022-02-19T07:00,10,75,3.7,0,0,7.4,10.5 -2022-02-19T08:00,15.2,71,7.3,0,0,6.5,9.8 -2022-02-19T09:00,26.4,60,14.3,0,0,5.3,9.8 -2022-02-19T10:00,35.8,53,20.2,0,0,6,10.7 -2022-02-19T11:00,40.7,47,22.3,0,0,5.6,11.2 -2022-02-19T12:00,48.2,29,17.1,0,0,9,10.7 -2022-02-19T13:00,50.7,25,16.5,0,0,8.9,17.4 -2022-02-19T14:00,52.9,22,15.3,0,0,7.8,16.8 -2022-02-19T15:00,54.2,21,14.8,0,0,5.9,15 -2022-02-19T16:00,53.4,24,17.6,0,0,3.4,11.6 -2022-02-19T17:00,42.5,51,25.7,0,0,5.2,6.5 -2022-02-19T18:00,42.3,48,24.1,0,0,1.9,7.4 -2022-02-19T19:00,38.8,54,23.7,0,0,2.7,2.9 -2022-02-19T20:00,29.2,76,22.5,0,0,5.2,7.4 -2022-02-19T21:00,27.8,63,17,0,0,6.9,8.1 -2022-02-19T22:00,26.7,62,15.3,0,0,7.3,8.9 -2022-02-19T23:00,26.6,59,14.4,0,0,7.4,9.2 -2022-02-20T00:00,31,47,12.9,0,0,4.5,8.5 -2022-02-20T01:00,30.2,47,12.3,0,0,3,5.4 -2022-02-20T02:00,29.5,47,11.6,0,0,3.2,4.3 -2022-02-20T03:00,27.1,49,10.3,0,0,6.9,7.6 -2022-02-20T04:00,26,50,10,0,0,6.2,10.3 -2022-02-20T05:00,22.8,58,10.4,0,0,7.8,10.7 -2022-02-20T06:00,21.3,66,11.8,0,0,4.5,9.8 -2022-02-20T07:00,22.1,67,12.7,0,0,2.7,5.6 -2022-02-20T08:00,27.1,59,14.7,0,0,4.2,7.8 -2022-02-20T09:00,34.1,50,17.2,0,0,3.7,8.7 -2022-02-20T10:00,42.9,41,21,0,0,3.6,8.9 -2022-02-20T11:00,48.9,35,22.2,0,0,7.7,13.9 -2022-02-20T12:00,52.4,27,19.5,0,0,12.4,21 -2022-02-20T13:00,54.6,24,18.4,0,0,13.6,23.5 -2022-02-20T14:00,55.8,22,17.4,0,0,13.9,24.2 -2022-02-20T15:00,55.8,21,16.8,0,0,13,23.7 -2022-02-20T16:00,54.9,23,18,0,0,9,21.7 -2022-02-20T17:00,46.8,36,21.2,0,0,7.8,14.3 -2022-02-20T18:00,40.5,41,18.5,0,0,5.1,13.4 -2022-02-20T19:00,34.3,55,19.9,0,0,4.1,7.6 -2022-02-20T20:00,31.4,68,22.1,0,0,4.5,6.7 -2022-02-20T21:00,28.9,70,20.4,0,0,6.5,10.3 -2022-02-20T22:00,25.6,76,19,0,0,4,9.8 -2022-02-20T23:00,26.5,68,17.2,0,0,5.2,7.8 -2022-02-21T00:00,27.3,60,15.2,0,0,7,10.7 -2022-02-21T01:00,27,57,13.7,0,0,7.2,11.2 -2022-02-21T02:00,28.9,49,12.3,0,0,8.3,12.8 -2022-02-21T03:00,31,45,12.1,0,0,10.3,15.9 -2022-02-21T04:00,30.7,46,12.2,0,0,10.5,17 -2022-02-21T05:00,26.5,57,13.5,0,0,6.4,16.6 -2022-02-21T06:00,27.6,56,13.8,0,0,5.4,8.7 -2022-02-21T07:00,28.9,51,13.3,0,0,6.3,9.4 -2022-02-21T08:00,33.4,46,15,0,0,8.7,13 -2022-02-21T09:00,40.3,42,19.1,0,0,4.8,13.2 -2022-02-21T10:00,47.6,32,19.5,0,0,4.9,10.7 -2022-02-21T11:00,51.5,25,16.6,0,0,8.7,15.9 -2022-02-21T12:00,53.2,21,14.4,0,0,6.8,21.7 -2022-02-21T13:00,42.7,46,23.5,0,0,20.4,35.1 -2022-02-21T14:00,42,40,19.5,0,0,17.2,34.7 -2022-02-21T15:00,37.7,39,14.6,0,0,14.3,30.2 -2022-02-21T16:00,35.9,39,13.1,0,0,12.6,25.1 -2022-02-21T17:00,23.2,54,9,0,0,13.2,21.9 -2022-02-21T18:00,16.8,55,3.6,0,0,9.9,26.2 -2022-02-21T19:00,15.6,58,3.3,0,0.028,9,17.4 -2022-02-21T20:00,14.8,60,3.3,0,0.028,8.4,16.1 -2022-02-21T21:00,13.5,62,2.8,0,0.028,8.8,15.7 -2022-02-21T22:00,11.6,64,1.8,0,0.055,9.3,17.2 -2022-02-21T23:00,9.8,65,0.2,0,0.055,7.4,16.8 -2022-02-22T00:00,8.2,63,-1.7,0,0.028,6.5,13.9 -2022-02-22T01:00,7.6,63,-2.5,0,0.028,6.6,12.5 -2022-02-22T02:00,6.3,66,-2.6,0,0.028,8.3,15 -2022-02-22T03:00,4.8,67,-3.8,0,0.028,7.7,16.6 -2022-02-22T04:00,4,67,-4.4,0,0.028,5,14.5 -2022-02-22T05:00,0.3,66,-8.5,0,0.028,11.3,11.6 -2022-02-22T06:00,-0.7,65,-9.8,0,0.028,10.1,20.6 -2022-02-22T07:00,-1.1,62,-11.1,0,0.028,7.3,17.9 -2022-02-22T08:00,-1.1,56,-13,0,0.028,8,15.4 -2022-02-22T09:00,-0.6,53,-13.8,0,0.028,7.6,16.6 -2022-02-22T10:00,0.8,49,-13.8,0,0.055,6.8,16.3 -2022-02-22T11:00,1.9,47,-13.5,0,0.028,6.8,16.1 -2022-02-22T12:00,3.2,46,-13.1,0,0.028,5.2,16.3 -2022-02-22T13:00,4.4,47,-11.5,0,0.028,4.2,14.5 -2022-02-22T14:00,4.3,51,-9.8,0,0.083,4.2,13 -2022-02-22T15:00,3.8,61,-6.6,0,0.083,5.4,13.4 -2022-02-22T16:00,3.8,62,-6.2,0,0.083,5.4,11 -2022-02-22T17:00,2.8,57,-8.9,0,0.11,4.2,10.5 -2022-02-22T18:00,-0.3,64,-9.7,0,0.028,3.7,7.6 -2022-02-22T19:00,2.3,63,-7.4,0,0.028,4.3,8.1 -2022-02-22T20:00,2.2,67,-6.2,0,0.083,3.8,8.1 -2022-02-22T21:00,2.4,69,-5.4,0,0.138,4.5,7.8 -2022-02-22T22:00,2.4,70,-5.2,0,0.055,5.4,9.2 -2022-02-22T23:00,2,71,-5.3,0,0.055,4.4,9.4 -2022-02-23T00:00,2.1,69,-5.6,0,0.028,3.2,7.2 -2022-02-23T01:00,2.6,63,-7.1,0,0.028,4.1,6.9 -2022-02-23T02:00,1.7,64,-7.8,0,0.028,4.3,7.6 -2022-02-23T03:00,0.3,67,-8,0,0.028,4.9,7.2 -2022-02-23T04:00,2.9,60,-7.8,0,0.028,2.6,6.7 -2022-02-23T05:00,1.7,68,-6.5,0,0.028,2.7,6.5 -2022-02-23T06:00,1.8,61,-8.5,0,0.028,1.6,6.3 -2022-02-23T07:00,1.1,63,-8.5,0,0.055,1.4,3.6 -2022-02-23T08:00,0.6,69,-7.1,0,0.055,3.2,6 -2022-02-23T09:00,1.1,69,-6.7,0,0.028,0.7,6.3 -2022-02-23T10:00,1.9,68,-6.1,0,0,3.1,7.6 -2022-02-23T11:00,2.4,69,-5.4,0,0,5.2,11.4 -2022-02-23T12:00,2.7,70,-4.9,0,0,5.7,12.5 -2022-02-23T13:00,4.1,64,-5.3,0,0,4.8,12.3 -2022-02-23T14:00,7.3,57,-4.6,0,0,3.4,11 -2022-02-23T15:00,9.3,60,-1.8,0,0,6.3,11.6 -2022-02-23T16:00,10,62,-0.5,0,0,6,13.6 -2022-02-23T17:00,4.1,75,-2.1,0,0,6.1,10.7 -2022-02-23T18:00,2.5,73,-4.2,0,0.028,6.9,12.1 -2022-02-23T19:00,2.1,71,-5.2,0,0.028,4.9,11.9 -2022-02-23T20:00,0,74,-6.3,0,0,4.5,8.3 -2022-02-23T21:00,0.1,73,-6.6,0,0,3.6,8.1 -2022-02-23T22:00,0.8,69,-7.1,0,0.028,2.7,6.7 -2022-02-23T23:00,0.7,73,-6.1,0,0.11,1.8,5.1 -2022-02-24T00:00,-0.7,74,-7.1,0,0.028,2.5,3.8 -2022-02-24T01:00,-0.7,76,-6.3,0,0.028,1.6,3.4 -2022-02-24T02:00,-2.6,78,-7.6,0,0,3.2,4.3 -2022-02-24T03:00,-1.4,77,-6.9,0,0,3.4,6.3 -2022-02-24T04:00,-4.2,77,-9.7,0,0,4,7.2 -2022-02-24T05:00,1,76,-4.6,0,0,3,6.9 -2022-02-24T06:00,0.6,75,-5.4,0,0,2.8,5.1 -2022-02-24T07:00,1.4,74,-5.1,0,0,1.3,4.5 -2022-02-24T08:00,1.3,69,-6.5,0,0,2.7,7.2 -2022-02-24T09:00,2.7,72,-4.4,0,0,2.7,5.6 -2022-02-24T10:00,4.7,69,-3.3,0,0,0.5,8.3 -2022-02-24T11:00,6.8,70,-1,0,0,2.4,6.9 -2022-02-24T12:00,11.6,65,1.9,0,0,2.4,7.6 -2022-02-24T13:00,15.8,62,4.9,0,0,3.4,8.1 -2022-02-24T14:00,18.3,61,7.1,0,0,3.5,8.7 -2022-02-24T15:00,20.1,61,8.9,0,0,4.2,8.1 -2022-02-24T16:00,19.6,64,9.5,0,0,5.7,9.6 -2022-02-24T17:00,13.2,73,6.1,0,0,4.2,11 -2022-02-24T18:00,9,71,1.5,0,0,5.8,7.6 -2022-02-24T19:00,14.2,62,3.4,0,0,4.3,7.6 -2022-02-24T20:00,13.3,61,2.4,0,0,2.9,5.4 -2022-02-24T21:00,12.3,63,2.2,0,0,2.1,3.4 -2022-02-24T22:00,10.9,65,1.5,0,0,2.2,2.9 -2022-02-24T23:00,9.1,67,0.5,0,0,2.7,3.8 -2022-02-25T00:00,8.4,66,-0.7,0,0,2.9,3.8 -2022-02-25T01:00,8.3,64,-1.3,0,0,1.9,3.8 -2022-02-25T02:00,5.9,69,-2.2,0,0,1.2,2.5 -2022-02-25T03:00,2.5,75,-3.6,0,0,3.7,4.7 -2022-02-25T04:00,0.9,80,-3.9,0,0,2.8,4.9 -2022-02-25T05:00,0.9,85,-2.5,0,0,1.9,3.6 -2022-02-25T06:00,1,85,-2.5,0,0,3,4 -2022-02-25T07:00,0.9,83,-3.1,0,0,2.8,4 -2022-02-25T08:00,0.3,73,-6.2,0,0,4.8,6.5 -2022-02-25T09:00,8.2,63,-1.7,0,0,3,6.9 -2022-02-25T10:00,14.5,63,4,0,0,4.5,8.7 -2022-02-25T11:00,18.1,62,7.3,0,0,6,11.2 -2022-02-25T12:00,20.8,61,9.4,0,0,7,12.5 -2022-02-25T13:00,22.9,58,10.4,0,0,8.1,14.1 -2022-02-25T14:00,23.3,59,10.9,0,0,8.9,15.2 -2022-02-25T15:00,22.5,62,11.5,0,0,9.7,16.3 -2022-02-25T16:00,20.9,66,11.4,0,0,7.1,16.1 -2022-02-25T17:00,18.7,77,12.7,0,0,5,12.1 -2022-02-25T18:00,13.2,81,8.3,0,0,6.5,8.3 -2022-02-25T19:00,17.9,73,10.6,0,0,4.7,8.5 -2022-02-25T20:00,18.4,72,10.9,0,0.028,2.5,5.8 -2022-02-25T21:00,10.5,83,6.3,0,0,5.3,6.9 -2022-02-25T22:00,12.9,82,8.5,0,0,5.1,8.3 -2022-02-25T23:00,14.5,82,10,0,0,3.5,6.7 -2022-02-26T00:00,12.1,82,7.7,0,0,4.2,5.4 -2022-02-26T01:00,2.1,82,-2.2,0,0,6.3,8.5 -2022-02-26T02:00,-1.8,77,-7.4,0,0,5.6,8.7 -2022-02-26T03:00,-1.2,69,-8.9,0,0,5.7,7.8 -2022-02-26T04:00,4.2,61,-6.3,0,0,4.1,7.6 -2022-02-26T05:00,-1.2,71,-8.2,0,0,4.9,8.7 -2022-02-26T06:00,-4.3,73,-10.8,0,0,6.8,11.4 -2022-02-26T07:00,-3.6,66,-12.1,0,0,8.2,11.4 -2022-02-26T08:00,4.3,56,-8,0,0,6.3,11.4 -2022-02-26T09:00,17.4,44,-0.6,0,0,3.5,8.7 -2022-02-26T10:00,26.2,54,11.9,0,0,1.4,5.6 -2022-02-26T11:00,29.8,35,5.7,0,0,2.7,5.1 -2022-02-26T12:00,31.4,37,8.2,0,0,3.8,7.4 -2022-02-26T13:00,32,39,9.6,0,0,3.7,8.3 -2022-02-26T14:00,33.4,35,8.6,0,0,3.4,8.1 -2022-02-26T15:00,33.4,43,13.1,0,0,2.1,6.7 -2022-02-26T16:00,34.1,22,-1.1,0,0,2.2,4.7 -2022-02-26T17:00,26.9,51,11,0,0,5.8,3.8 -2022-02-26T18:00,15.7,56,2.8,0,0,6.8,9.8 -2022-02-26T19:00,14.5,59,2.7,0,0,3.8,8.9 -2022-02-26T20:00,7.2,75,0.9,0,0,5.4,7.4 -2022-02-26T21:00,4.6,78,-0.7,0,0,8.3,10.7 -2022-02-26T22:00,5.3,72,-1.7,0,0,8.9,12.1 -2022-02-26T23:00,6.4,66,-2.6,0,0,8.1,12.1 -2022-02-27T00:00,5.2,65,-4.1,0,0,8.7,11.6 -2022-02-27T01:00,5.5,64,-4.1,0,0,9.1,12.1 -2022-02-27T02:00,6.2,62,-4.2,0,0,8.1,11.9 -2022-02-27T03:00,11.8,53,-2.1,0,0,6.7,10.7 -2022-02-27T04:00,13.6,50,-1.7,0,0,6.1,8.5 -2022-02-27T05:00,11.6,61,0.6,0,0,7.8,10.5 -2022-02-27T06:00,5.8,61,-4.8,0,0,9.2,11.9 -2022-02-27T07:00,6.8,59,-4.4,0,0,9.3,12.3 -2022-02-27T08:00,14.8,55,1.7,0,0,7.2,12.1 -2022-02-27T09:00,26.4,52,11.3,0,0,5.4,10.5 -2022-02-27T10:00,37.5,46,18.4,0,0,3.7,8.7 -2022-02-27T11:00,41.3,48,23,0,0,4.7,8.5 -2022-02-27T12:00,44.2,40,21.6,0,0,5,8.1 -2022-02-27T13:00,45,41,22.4,0,0,5.7,9.2 -2022-02-27T14:00,56.9,7,-7.4,0,0,6.8,13.9 -2022-02-27T15:00,56.9,7,-6.4,0,0,8.1,14.3 -2022-02-27T16:00,54.2,18,11.1,0,0,4,14.1 -2022-02-27T17:00,42,46,22.8,0,0,6.9,7.8 -2022-02-27T18:00,35.2,50,18.6,0,0,7.7,10.5 -2022-02-27T19:00,38,43,17.4,0,0,1.7,8.9 -2022-02-27T20:00,28.4,64,17.7,0,0,1.3,3.8 -2022-02-27T21:00,26.1,72,18.2,0,0,6.8,8.5 -2022-02-27T22:00,28.9,45,10.2,0,0,8.1,10.7 -2022-02-27T23:00,30.2,41,9.1,0,0,3.7,10.5 -2022-02-28T00:00,25.3,60,13.2,0,0,4.8,6.7 -2022-02-28T01:00,24.3,57,11.1,0,0,5.5,8.1 -2022-02-28T02:00,25.3,56,11.8,0,0,5.1,6.9 -2022-02-28T03:00,25.8,56,12.2,0,0,4.9,9.8 -2022-02-28T04:00,25.8,56,12.4,0,0,4.2,7.2 -2022-02-28T05:00,26.8,55,12.6,0,0,8.4,6.7 -2022-02-28T06:00,30.9,47,12.9,0,0,5.1,10.5 -2022-02-28T07:00,30.9,48,13.4,0,0,6.8,10.3 -2022-02-28T08:00,35.6,40,13.9,0,0,7.9,11.6 -2022-02-28T09:00,42.8,34,16.2,0,0,3.6,12.1 -2022-02-28T10:00,47.9,29,17,0,0,1.4,8.5 -2022-02-28T11:00,52.7,25,18.1,0,0,2.8,8.7 -2022-02-28T12:00,58.3,18,14.8,0,0,6.9,14.5 -2022-02-28T13:00,60.8,15,12.4,0,0,7.5,15.9 -2022-02-28T14:00,62.1,13,10.5,0,0,3.5,15.4 -2022-02-28T15:00,61.9,14,12,0,0,3.8,9.8 -2022-02-28T16:00,59.8,17,15,0,0,4.3,10.1 -2022-02-28T17:00,53,38,28.3,0,0,5.4,7.8 -2022-02-28T18:00,44.8,39,21.2,0,0,7.9,8.5 -2022-02-28T19:00,42,39,19,0,0,9.6,14.8 -2022-02-28T20:00,33.9,57,20.3,0,0,7.6,15.2 -2022-02-28T21:00,30.4,70,21.7,0,0,4,9.4 -2022-02-28T22:00,28.1,76,21.6,0,0,3.3,6.3 -2022-02-28T23:00,28.9,70,20.4,0,0,6.5,9.8 -2022-03-01T00:00,31.9,55,17.6,0,0,6.3,11 -2022-03-01T01:00,31.1,56,17.1,0,0,8.3,9.8 -2022-03-01T02:00,30.5,56,16.7,0,0,8.6,10.5 -2022-03-01T03:00,29.6,56,15.8,0,0,5.7,10.3 -2022-03-01T04:00,30.1,52,14.8,0,0,4.5,7.2 -2022-03-01T05:00,33.3,53,17.9,0,0,8.6,8.3 -2022-03-01T06:00,40.4,40,18.1,0,0,4.5,10.1 -2022-03-01T07:00,31.7,57,18.2,0,0,4.1,6.5 -2022-03-01T08:00,39.5,46,20.6,0,0,5.7,8.9 -2022-03-01T09:00,47.2,40,24.4,0,0,7.1,12.8 -2022-03-01T10:00,54.7,32,25.7,0,0,4.6,13.4 -2022-03-01T11:00,59.1,30,27.3,0,0,2.1,10.7 -2022-03-01T12:00,62.1,27,27.6,0,0,1.9,8.7 -2022-03-01T13:00,64.4,23,26.2,0,0,1.7,8.5 -2022-03-01T14:00,65.6,20,23.9,0,0,2.6,8.7 -2022-03-01T15:00,65.8,19,22.6,0,0,3.2,8.7 -2022-03-01T16:00,64.8,22,24.8,0,0,4.9,9.2 -2022-03-01T17:00,57.4,39,32.7,0,0,6.7,8.7 -2022-03-01T18:00,49.6,43,27.9,0,0,7.5,11.6 -2022-03-01T19:00,46.4,41,23.7,0,0,7.4,12.5 -2022-03-01T20:00,43.6,46,24.4,0,0,8.5,12.3 -2022-03-01T21:00,37.4,60,24.8,0,0,8.1,10.3 -2022-03-01T22:00,36,65,25.2,0,0,7.1,9.8 -2022-03-01T23:00,33.6,72,25.5,0,0,8.1,10.3 -2022-03-02T00:00,33.2,71,24.8,0,0,7,10.1 -2022-03-02T01:00,30.8,77,24.4,0,0,7.8,8.7 -2022-03-02T02:00,30.9,76,24.3,0,0,7,9.2 -2022-03-02T03:00,30.8,75,23.9,0,0,6.2,8.9 -2022-03-02T04:00,30.4,74,23.1,0,0,6.5,8.5 -2022-03-02T05:00,31.2,70,22.5,0,0,7.4,8.3 -2022-03-02T06:00,32.6,65,22.2,0,0,5.5,8.9 -2022-03-02T07:00,34.1,61,22,0,0,5.8,8.7 -2022-03-02T08:00,40.4,52,24,0,0,7.2,11.2 -2022-03-02T09:00,48.7,45,28,0,0,4,11.2 -2022-03-02T10:00,56.2,38,30.7,0,0,2.9,8.9 -2022-03-02T11:00,58.1,38,32.4,0,0,7.5,15.2 -2022-03-02T12:00,59.4,35,32,0,0,6.5,16.3 -2022-03-02T13:00,62.3,31,31.1,0,0,5.6,14.8 -2022-03-02T14:00,63.5,28,29.8,0,0,5.9,13.2 -2022-03-02T15:00,64,26,28.4,0,0,4.2,12.8 -2022-03-02T16:00,64.1,25,28,0,0,3,9.4 -2022-03-02T17:00,55.9,37,30,0,0,5.4,6 -2022-03-02T18:00,46.1,48,27.4,0,0,7.2,9.2 -2022-03-02T19:00,41.5,59,28.1,0,0,6,9.2 -2022-03-02T20:00,39,65,28.3,0,0,6.7,8.7 -2022-03-02T21:00,36.1,72,28,0,0,7.6,9.8 -2022-03-02T22:00,33.7,77,27.4,0,0,8.2,9.6 -2022-03-02T23:00,33.2,76,26.4,0,0,8.1,9.6 -2022-03-03T00:00,31.6,78,25.3,0,0,7.5,9.6 -2022-03-03T01:00,30.7,78,24.8,0,0,7.2,8.9 -2022-03-03T02:00,35.9,63,24.4,0,0,4,8.5 -2022-03-03T03:00,31.9,71,23.5,0,0,3.4,4.5 -2022-03-03T04:00,27.5,82,22.7,0,0,5.2,6 -2022-03-03T05:00,27.4,81,22.5,0,0,6.2,6.5 -2022-03-03T06:00,28.4,76,21.9,0,0,5.6,7.4 -2022-03-03T07:00,29.1,74,21.8,0,0,4.9,6.7 -2022-03-03T08:00,37.4,55,22.6,0,0,4.1,7.6 -2022-03-03T09:00,46,47,26.6,0,0,3,8.3 -2022-03-03T10:00,53.3,36,26.8,0,0,3,8.7 -2022-03-03T11:00,58.7,29,26.2,0,0,3.6,10.1 -2022-03-03T12:00,62.2,26,26.7,0,0,4.9,12.1 -2022-03-03T13:00,64.7,23,26.4,0,0,5.1,12.3 -2022-03-03T14:00,66,22,26.5,0,0,5.1,12.3 -2022-03-03T15:00,65.4,29,32.1,0,0,6.7,13.4 -2022-03-03T16:00,61.4,36,34.1,0,0,9,15.9 -2022-03-03T17:00,59.1,46,38.5,0,0,5.7,15.7 -2022-03-03T18:00,52.4,48,33.5,0,0,7.4,11.4 -2022-03-03T19:00,45.7,53,29.3,0,0,7.5,11.9 -2022-03-03T20:00,42.2,61,29.7,0,0,6.5,8.9 -2022-03-03T21:00,39.7,66,29.1,0,0,5.9,7.6 -2022-03-03T22:00,37.8,71,29.1,0,0,3.5,7.2 -2022-03-03T23:00,32.6,86,28.9,0,0,4.1,6 -2022-03-04T00:00,35.5,73,27.8,0,0,4.5,6.3 -2022-03-04T01:00,38.8,60,26.3,0,0,1.5,5.6 -2022-03-04T02:00,29.5,80,24.1,0,0,4.2,4.9 -2022-03-04T03:00,27.8,80,22.6,0,0,5.3,6 -2022-03-04T04:00,28.1,75,21.2,0,0,5.7,6.9 -2022-03-04T05:00,27.6,73,20.2,0,0,6.1,6.9 -2022-03-04T06:00,28,69,19,0,0,6.3,7.6 -2022-03-04T07:00,30.2,64,19.6,0,0,5.1,7.8 -2022-03-04T08:00,37.8,51,21.1,0,0,4.3,7.4 -2022-03-04T09:00,47.1,43,25.5,0,0,3.8,8.7 -2022-03-04T10:00,53.5,39,29,0,0,2.9,8.5 -2022-03-04T11:00,57.7,32,28,0,0,5.9,10.7 -2022-03-04T12:00,61,27,26.6,0,0,6.5,12.5 -2022-03-04T13:00,61.8,24,24.8,0,0,4.7,12.3 -2022-03-04T14:00,63,21,21.9,0,0,5.9,11.2 -2022-03-04T15:00,63.2,20,21.9,0,0,10.4,18.6 -2022-03-04T16:00,62.4,18,19,0,0,11.2,19.7 -2022-03-04T17:00,57.2,33,28.2,0,0,4.6,19 -2022-03-04T18:00,47.8,40,24.4,0,0,7.4,8.9 -2022-03-04T19:00,46.5,43,25.2,0,0,4.8,9.8 -2022-03-04T20:00,43.5,49,25.7,0,0,3.6,6 -2022-03-04T21:00,41.1,58,27.4,0,0,3.6,6.5 -2022-03-04T22:00,41.6,64,30.5,0,0,15.8,28.2 -2022-03-04T23:00,43.9,56,29.3,0,0,10.2,25.5 -2022-03-05T00:00,40.6,68,31,0,0,7.7,16.1 -2022-03-05T01:00,38.8,76,31.7,0,0,8.7,14.5 -2022-03-05T02:00,35.2,88,32.1,0,0,7.2,14.1 -2022-03-05T03:00,34.8,88,31.6,0,0,4.7,11.4 -2022-03-05T04:00,35.1,83,30.6,0,0,5.3,9.2 -2022-03-05T05:00,34.7,88,31.5,0,0,1.8,8.3 -2022-03-05T06:00,34.3,90,31.7,0.004,0.055,1.4,3.1 -2022-03-05T07:00,33.2,92,31,0,0,6.9,9.8 -2022-03-05T08:00,34,82,29,0,0,9.5,16.3 -2022-03-05T09:00,33.4,80,27.9,0,0.028,10,17.7 -2022-03-05T10:00,33.3,77,27,0,0.028,9.7,17.7 -2022-03-05T11:00,34.1,68,24.7,0,0,10.7,19.5 -2022-03-05T12:00,35,63,23.5,0,0,10.4,20.1 -2022-03-05T13:00,35.9,59,23.1,0,0,10,19.9 -2022-03-05T14:00,35.2,60,22.6,0,0.028,11.3,20.4 -2022-03-05T15:00,33.5,57,19.8,0.004,0,11.3,21.7 -2022-03-05T16:00,32.9,55,18.7,0,0,9.1,20.6 -2022-03-05T17:00,30.4,59,17.6,0,0,6,16.8 -2022-03-05T18:00,29.3,60,17,0,0,5.7,11.2 -2022-03-05T19:00,28.5,61,16.7,0,0.055,3.2,10.3 -2022-03-05T20:00,27.7,64,17.2,0,0.386,1.3,6.3 -2022-03-05T21:00,26.6,71,18.5,0,0.469,3.5,6.3 -2022-03-05T22:00,25.9,73,18.4,0,0.165,5.8,9.8 -2022-03-05T23:00,25,71,17.1,0,0.055,5.3,10.1 -2022-03-06T00:00,24.3,73,16.7,0,0,3.4,8.7 -2022-03-06T01:00,24,71,16.1,0,0,3.9,6.5 -2022-03-06T02:00,23.9,71,15.9,0,0,3.1,7.2 -2022-03-06T03:00,23.5,72,15.7,0,0,3,6.5 -2022-03-06T04:00,23.4,70,15.1,0,0,4.1,7.6 -2022-03-06T05:00,21.2,70,13,0,0,5.5,9.2 -2022-03-06T06:00,21,71,13,0,0,5,10.3 -2022-03-06T07:00,21,71,13.1,0,0.028,5.3,10.1 -2022-03-06T08:00,21.5,71,13.5,0,0.028,5.7,11.2 -2022-03-06T09:00,22.2,69,13.6,0,0.055,6.5,12.8 -2022-03-06T10:00,23,66,13.3,0,0.055,6.5,13.4 -2022-03-06T11:00,22.9,65,12.8,0,0.055,7.2,13.9 -2022-03-06T12:00,24.2,63,13.6,0,0.11,6.7,14.5 -2022-03-06T13:00,25.1,62,13.7,0,0.165,7.9,15.7 -2022-03-06T14:00,25.7,60,13.6,0,0.083,8.6,16.6 -2022-03-06T15:00,25.3,60,13.4,0,0.11,9.3,17.2 -2022-03-06T16:00,24.5,61,13.1,0,0.055,11,19 -2022-03-06T17:00,21.7,72,14.2,0,0.083,11.9,20.4 -2022-03-06T18:00,21.5,72,13.9,0,0.11,10.7,19.9 -2022-03-06T19:00,20.5,70,12.4,0,0.055,9,17.9 -2022-03-06T20:00,19.9,71,12,0,0.028,8.3,15.2 -2022-03-06T21:00,19.5,68,10.7,0,0.028,7.9,14.3 -2022-03-06T22:00,18.7,63,8.2,0,0,7,13.9 -2022-03-06T23:00,17.4,64,7.4,0,0,4.7,12.1 -2022-03-07T00:00,16.9,63,6.6,0,0,2.4,7.6 -2022-03-07T01:00,16.5,66,7.3,0,0,4.3,7.6 -2022-03-07T02:00,16.3,67,7.3,0,0,4,7.8 -2022-03-07T03:00,15.9,66,6.5,0,0,2.9,7.2 -2022-03-07T04:00,15.4,66,5.9,0,0,1.6,5.6 -2022-03-07T05:00,15.3,68,6.5,0,0,1.3,4.5 -2022-03-07T06:00,15.4,68,6.5,0,0,2.5,5.4 -2022-03-07T07:00,16,67,6.8,0,0,4.7,8.9 -2022-03-07T08:00,17.4,58,5.3,0,0,5.7,11.9 -2022-03-07T09:00,19.5,51,4.5,0,0,4.7,12.8 -2022-03-07T10:00,22.6,43,3.6,0,0,3,12.3 -2022-03-07T11:00,25.4,37,2.8,0,0,2.3,11.4 -2022-03-07T12:00,27.5,34,2.9,0,0,2.8,11.6 -2022-03-07T13:00,29.1,32,3.2,0,0,2.7,11.9 -2022-03-07T14:00,30.5,31,3.5,0,0,2.6,11.4 -2022-03-07T15:00,31,31,3.7,0,0,4.3,11.9 -2022-03-07T16:00,30.1,33,4.2,0,0,4.5,12.1 -2022-03-07T17:00,27,47,9.4,0,0,1.6,11 -2022-03-07T18:00,26.3,50,10.2,0,0.028,0.8,3.8 -2022-03-07T19:00,21.9,64,11.5,0,0,2.8,4.7 -2022-03-07T20:00,19.4,74,12.4,0,0,3.4,5.6 -2022-03-07T21:00,17.7,77,11.8,0,0,4,6 -2022-03-07T22:00,15.6,75,9.1,0,0,5.2,8.1 -2022-03-07T23:00,14.5,71,6.8,0,0,5.7,9.2 -2022-03-08T00:00,15.3,65,5.5,0,0,5.6,9.2 -2022-03-08T01:00,15.6,59,3.9,0,0,5.3,8.7 -2022-03-08T02:00,15.1,55,1.9,0,0,5.6,8.3 -2022-03-08T03:00,15.8,49,-0.1,0,0,8.4,12.5 -2022-03-08T04:00,18.1,43,-0.8,0,0,6.8,13 -2022-03-08T05:00,16.2,48,-0.2,0,0,7.7,10.1 -2022-03-08T06:00,17.4,43,-1.2,0,0,6.5,9.6 -2022-03-08T07:00,19.9,38,-1.7,0,0,3.1,8.1 -2022-03-08T08:00,24.4,31,-1.9,0,0,1.9,7.8 -2022-03-08T09:00,28.9,26,-1.7,0,0,4.3,10.7 -2022-03-08T10:00,31.8,23,-1.6,0,0,5.6,13.9 -2022-03-08T11:00,34.2,20,-2.9,0,0,3.6,13.9 -2022-03-08T12:00,35.8,19,-2.5,0,0,2.1,12.1 -2022-03-08T13:00,36.8,19,-1.9,0,0,0.8,10.3 -2022-03-08T14:00,37.6,20,-0.4,0,0,1,8.7 -2022-03-08T15:00,38,19,-0.2,0,0,5.6,12.8 -2022-03-08T16:00,37.4,19,-1.2,0,0,8.1,15.2 -2022-03-08T17:00,34.7,27,4.1,0,0,3.8,15.2 -2022-03-08T18:00,29.8,33,4.5,0,0,4.9,6.3 -2022-03-08T19:00,27.4,40,6.1,0,0,3.6,6 -2022-03-08T20:00,21.8,55,8.2,0,0,4.1,5.6 -2022-03-08T21:00,22,57,9.2,0,0,1.8,6.3 -2022-03-08T22:00,21,59,8.9,0,0,6.7,12.1 -2022-03-08T23:00,20.6,62,9.5,0,0,2.4,10.5 -2022-03-09T00:00,19,65,9.3,0,0,3,4.5 -2022-03-09T01:00,17.2,71,9.5,0,0,2.6,4 -2022-03-09T02:00,17.3,68,8.5,0,0,4.6,7.2 -2022-03-09T03:00,17.1,66,7.7,0,0,4.5,8.3 -2022-03-09T04:00,16.1,74,9.1,0,0,8.1,12.5 -2022-03-09T05:00,17.6,72,10.2,0,0,9.6,16.1 -2022-03-09T06:00,17.7,72,10.2,0,0,9.3,17 -2022-03-09T07:00,17.2,69,8.6,0,0.028,9.4,16.6 -2022-03-09T08:00,17.2,65,7.5,0,0.028,10.1,17.9 -2022-03-09T09:00,17.1,65,7.4,0,0.028,11.5,20.6 -2022-03-09T10:00,18.1,62,7.3,0,0.028,12.4,22.6 -2022-03-09T11:00,19,60,7.4,0,0,13.3,24.2 -2022-03-09T12:00,20.5,56,7.4,0,0,13.5,25.5 -2022-03-09T13:00,21,57,8,0,0,12.6,25.3 -2022-03-09T14:00,20.8,58,8.3,0,0,13,24.8 -2022-03-09T15:00,20.8,56,7.8,0.004,0,11.7,24.4 -2022-03-09T16:00,19.5,60,7.8,0,0.028,10.6,21.9 -2022-03-09T17:00,11.3,68,2.7,0,0.028,7.6,20.4 -2022-03-09T18:00,10.9,66,1.8,0,0.055,7.8,14.1 -2022-03-09T19:00,10.1,69,1.9,0,0.083,8.7,15.7 -2022-03-09T20:00,9.8,69,1.7,0,0.11,6,15.7 -2022-03-09T21:00,8.8,74,2.1,0,0.083,3,11.6 -2022-03-09T22:00,8,74,1.4,0,0.083,4.2,7.6 -2022-03-09T23:00,6.4,74,0,0,0,3.9,7.6 -2022-03-10T00:00,3.9,76,-1.8,0,0,3.3,7.2 -2022-03-10T01:00,3.4,74,-3,0,0,4.1,6.7 -2022-03-10T02:00,1.6,77,-4.1,0,0,4.9,6.9 -2022-03-10T03:00,-0.8,80,-5.4,0,0,6,8.3 -2022-03-10T04:00,0.5,80,-4.1,0,0,5.9,8.3 -2022-03-10T05:00,3.8,72,-3.1,0,0,6.1,9.2 -2022-03-10T06:00,0.6,75,-5.5,0,0,4.6,10.1 -2022-03-10T07:00,-1.2,76,-6.9,0,0,5.2,8.9 -2022-03-10T08:00,3.8,71,-3.4,0,0,3.3,7.4 -2022-03-10T09:00,6.2,67,-2.5,0,0,4.7,8.3 -2022-03-10T10:00,9.1,61,-1.7,0,0,4.8,9.6 -2022-03-10T11:00,11,60,-0.2,0,0,7.2,13.2 -2022-03-10T12:00,12.8,59,1,0,0,7.3,13.6 -2022-03-10T13:00,14.1,58,1.9,0,0,6.9,13.4 -2022-03-10T14:00,15.7,57,3.1,0,0,5.8,13 -2022-03-10T15:00,16.9,55,3.5,0,0,4.3,11 -2022-03-10T16:00,17.3,57,4.7,0,0,3.4,8.1 -2022-03-10T17:00,16.5,59,4.6,0,0,4.7,6.5 -2022-03-10T18:00,13.6,58,1.4,0,0,4.3,8.5 -2022-03-10T19:00,13,60,1.9,0,0,3.2,5.6 -2022-03-10T20:00,11.9,65,2.4,0,0,4.1,6.9 -2022-03-10T21:00,8.7,70,1,0,0,5.6,8.1 -2022-03-10T22:00,6.5,70,-1.1,0,0,5.5,7.8 -2022-03-10T23:00,2.1,59,-8.9,0,0,6.2,8.7 -2022-03-11T00:00,3,47,-12.6,0,0,6.2,8.5 -2022-03-11T01:00,-0.2,48,-15.1,0,0,6.7,8.9 -2022-03-11T02:00,-1.8,51,-15.7,0,0,6.8,9.4 -2022-03-11T03:00,1.7,46,-14.3,0,0,5.4,9.2 -2022-03-11T04:00,-7.7,58,-18.5,0,0,7.4,9.6 -2022-03-11T05:00,-4.5,65,-13.2,0,0,5.6,11.9 -2022-03-11T06:00,-7.7,61,-17.7,0,0,5.7,8.9 -2022-03-11T07:00,-5.6,56,-17.4,0,0,5.1,8.3 -2022-03-11T08:00,6.4,38,-13.9,0,0,5.5,8.1 -2022-03-11T09:00,11.7,46,-5.1,0,0,4.8,8.3 -2022-03-11T10:00,24.9,20,-10.9,0,0,1.7,7.6 -2022-03-11T11:00,27.6,35,3.5,0,0,1.5,4.5 -2022-03-11T12:00,29.8,33,4.1,0,0,2.9,5.6 -2022-03-11T13:00,31.5,34,6.3,0,0,3.6,7.4 -2022-03-11T14:00,32.3,35,7.6,0,0,3.6,7.8 -2022-03-11T15:00,32.3,39,10,0,0,3.3,8.1 -2022-03-11T16:00,29.8,52,14.2,0,0,4.4,6.9 -2022-03-11T17:00,29.6,44,10.4,0,0,5.4,6.9 -2022-03-11T18:00,19.9,57,7.2,0,0,6.5,10.7 -2022-03-11T19:00,22.2,48,5.3,0,0,4.7,11 -2022-03-11T20:00,10.9,64,1,0,0,8.2,11.2 -2022-03-11T21:00,15.4,57,2.9,0,0,7.4,12.1 -2022-03-11T22:00,15.4,59,3.7,0,0,7.7,12.8 -2022-03-11T23:00,13.5,64,3.7,0,0,8.9,13.6 -2022-03-12T00:00,16,62,5.2,0,0,11,17.4 -2022-03-12T01:00,18.2,60,6.8,0,0,10,17.9 -2022-03-12T02:00,17.9,64,7.6,0,0,9.9,16.1 -2022-03-12T03:00,17.7,66,8.2,0,0,10,15.9 -2022-03-12T04:00,17.6,68,8.8,0,0,10.9,16.8 -2022-03-12T05:00,19.9,68,11,0,0,10.1,17.7 -2022-03-12T06:00,20.1,67,10.9,0,0,10,16.6 -2022-03-12T07:00,21.1,67,11.8,0,0,7.3,16.1 -2022-03-12T08:00,27.5,58,14.8,0,0,5.4,11.6 -2022-03-12T09:00,35.2,58,21.7,0,0,4.6,9.6 -2022-03-12T10:00,40.4,47,21.8,0,0,4.2,8.5 -2022-03-12T11:00,49.5,26,15.7,0,0,10.5,19.7 -2022-03-12T12:00,52.2,24,16.5,0,0,9.4,20.1 -2022-03-12T13:00,54.6,22,16.9,0,0,3.5,18.1 -2022-03-12T14:00,55.9,22,17.6,0,0,5.8,12.3 -2022-03-12T15:00,56.6,21,17.2,0,0,8.2,15.2 -2022-03-12T16:00,55.8,23,18.7,0,0,7.5,15.7 -2022-03-12T17:00,50.5,32,21.9,0,0,9,12.8 -2022-03-12T18:00,44.9,38,20.7,0,0,7.5,15.9 -2022-03-12T19:00,37.7,51,21,0,0,5.5,11.6 -2022-03-12T20:00,33.4,60,21,0,0,7.2,9.4 -2022-03-12T21:00,35.7,53,20,0,0,3.7,8.7 -2022-03-12T22:00,28.6,69,19.8,0,0,3.6,5.1 -2022-03-12T23:00,28,71,19.9,0,0,5.9,8.7 -2022-03-13T00:00,27,76,20.5,0,0,4.3,8.7 -2022-03-13T01:00,25.6,80,20.2,0,0,4.7,6.7 -2022-03-13T02:00,24.3,82,19.6,0,0,3.5,5.6 -2022-03-13T03:00,24.7,77,18.6,0,0,3.4,5.4 -2022-03-13T04:00,24.4,75,17.5,0,0,3.5,5.8 -2022-03-13T05:00,21,82,16.3,0,0,6.7,5.8 -2022-03-13T06:00,22.9,77,16.7,0,0,2.6,7.8 -2022-03-13T07:00,24.4,72,16.8,0,0,4.7,7.8 -2022-03-13T08:00,31.8,59,19.1,0,0,2.9,8.1 -2022-03-13T09:00,40.9,45,20.9,0,0,1.9,8.1 -2022-03-13T10:00,48.6,35,21.9,0,0,2.2,8.3 -2022-03-13T11:00,53.9,28,21.2,0,0,4.3,11.6 -2022-03-13T12:00,57.1,24,20.4,0,0,3.9,11.9 -2022-03-13T13:00,58.8,23,21.3,0,0,4.9,12.5 -2022-03-13T14:00,59.3,24,22.8,0,0,9,17.2 -2022-03-13T15:00,58.2,25,22.8,0,0,11.7,21.3 -2022-03-13T16:00,56.1,27,22.4,0,0,10.7,21.3 -2022-03-13T17:00,51.1,45,30.5,0,0,4.4,18.3 -2022-03-13T18:00,45,60,31.8,0,0,4.5,10.7 -2022-03-13T19:00,39.9,74,32.2,0,0,3.9,7.4 -2022-03-13T20:00,37.9,72,29.6,0,0,5.1,6.7 -2022-03-13T21:00,38.9,66,28.5,0,0,3.3,6.7 -2022-03-13T22:00,36.7,83,32,0.004,0,3.2,5.6 -2022-03-13T23:00,34.4,93,32.6,0,0,3.5,5.6 -2022-03-14T00:00,32.6,97,31.9,0,0,4.3,6.3 -2022-03-14T01:00,31.2,91,28.9,0,0,4.4,6.3 -2022-03-14T02:00,34.2,60,21.7,0,0,8,11.2 -2022-03-14T03:00,35.3,51,18.9,0,0,10.7,19.9 -2022-03-14T04:00,31.7,56,17.8,0,0,6.8,17.2 -2022-03-14T05:00,26.5,74,19.4,0,0,7,10.7 -2022-03-14T06:00,31.9,60,19.8,0,0,3.4,8.5 -2022-03-14T07:00,32.6,64,21.7,0,0,1.7,4.5 -2022-03-14T08:00,33.5,63,22.3,0,0,4.1,11.2 -2022-03-14T09:00,37.3,55,22.6,0,0,0.5,8.9 -2022-03-14T10:00,41.7,47,22.8,0,0,2.7,9.2 -2022-03-14T11:00,45.9,39,22.1,0,0,4.3,12.5 -2022-03-14T12:00,48.4,31,19.1,0,0,4.3,12.5 -2022-03-14T13:00,49.8,28,17.8,0,0,5.6,14.1 -2022-03-14T14:00,50.9,26,17.6,0,0,5,14.1 -2022-03-14T15:00,51.4,26,17.9,0,0,4,13 -2022-03-14T16:00,50.9,26,17.1,0,0,3.6,11 -2022-03-14T17:00,50.5,43,28.9,0,0,2,9.2 -2022-03-14T18:00,48.7,31,19.7,0,0,2.8,3.1 -2022-03-14T19:00,43.1,40,20.4,0,0,3.8,4.9 -2022-03-14T20:00,35,55,20.6,0,0,4.7,6 -2022-03-14T21:00,30,70,21.6,0,0,3.7,6.3 -2022-03-14T22:00,28.9,72,20.9,0,0,5.3,8.1 -2022-03-14T23:00,28.3,70,19.8,0,0,5.5,8.7 -2022-03-15T00:00,27.3,69,18.6,0,0,5.2,9.2 -2022-03-15T01:00,26.2,68,17.2,0,0,4.4,8.1 -2022-03-15T02:00,26,64,15.6,0,0,5,8.1 -2022-03-15T03:00,25.3,61,13.9,0,0,4.6,8.1 -2022-03-15T04:00,25.1,59,12.7,0,0,4.3,6.9 -2022-03-15T05:00,23.8,61,12.3,0,0,5.2,6.9 -2022-03-15T06:00,24.5,58,11.8,0,0,3.9,6.3 -2022-03-15T07:00,27.8,52,12.5,0,0,5.1,7.2 -2022-03-15T08:00,34.7,47,16.4,0,0,4.2,9.6 -2022-03-15T09:00,43.3,36,18.4,0,0,2.4,9.2 -2022-03-15T10:00,51,28,19.3,0,0,3.5,10.1 -2022-03-15T11:00,57.3,19,15.7,0,0,4.5,11.6 -2022-03-15T12:00,61.4,15,13.1,0,0,5.6,13.2 -2022-03-15T13:00,64.2,13,12.7,0,0,5.3,13.2 -2022-03-15T14:00,66,12,11.8,0,0,5.5,13.2 -2022-03-15T15:00,66.5,12,12.7,0,0,4.5,12.8 -2022-03-15T16:00,65.8,13,13.6,0,0,3.6,10.5 -2022-03-15T17:00,61.1,26,26.2,0,0,5.6,7.8 -2022-03-15T18:00,50.1,46,30.2,0,0,7.4,9.2 -2022-03-15T19:00,44.4,50,27.1,0,0,6.5,8.7 -2022-03-15T20:00,41.5,48,23.5,0,0,5.1,8.5 -2022-03-15T21:00,36.5,58,23.3,0,0,5.4,7.8 -2022-03-15T22:00,35.8,61,23.5,0,0,5.2,7.6 -2022-03-15T23:00,34.3,64,23.3,0,0,6.6,7.6 -2022-03-16T00:00,35.1,60,22.6,0,0,6.7,8.1 -2022-03-16T01:00,34.5,61,22.6,0,0,6.3,8.1 -2022-03-16T02:00,34.7,60,22.4,0,0,5,8.1 -2022-03-16T03:00,36,58,22.6,0,0,4.6,7.6 -2022-03-16T04:00,33.2,65,22.7,0,0,4,6.9 -2022-03-16T05:00,32.7,71,24.4,0,0,4.2,5.6 -2022-03-16T06:00,31.1,75,24,0,0,4.1,7.2 -2022-03-16T07:00,32.7,70,23.9,0,0,4.8,6.3 -2022-03-16T08:00,38.4,58,24.7,0,0,2.3,7.6 -2022-03-16T09:00,43.6,47,24.9,0,0,3,7.6 -2022-03-16T10:00,48.5,39,24.7,0,0,1.1,8.7 -2022-03-16T11:00,51,37,25.3,0,0,6.9,12.5 -2022-03-16T12:00,50.1,42,28.1,0,0,10,17.9 -2022-03-16T13:00,50.5,45,30.1,0,0,10.6,20.1 -2022-03-16T14:00,50.9,48,31.7,0,0,9.9,20.6 -2022-03-16T15:00,47.5,56,32.5,0.004,0,10.8,19.9 -2022-03-16T16:00,45.6,62,33.2,0.004,0,9.9,19.5 -2022-03-16T17:00,47.1,57,32.5,0.016,0,4.3,17.4 -2022-03-16T18:00,43.7,71,35.1,0.004,0,8.5,12.8 -2022-03-16T19:00,41.3,85,37,0.012,0,10.1,15.9 -2022-03-16T20:00,37.8,93,35.9,0.039,0,10.3,17.2 -2022-03-16T21:00,35.1,100,35,0.039,0.193,8.7,16.8 -2022-03-16T22:00,34.5,100,34.5,0.024,0.606,9.7,16.3 -2022-03-16T23:00,34.4,100,34.3,0.02,0.606,8,15.9 -2022-03-17T00:00,34.4,100,34.3,0.02,0.331,7.2,13 -2022-03-17T01:00,34.2,99,34,0.012,0.193,7.6,11.6 -2022-03-17T02:00,34,98,33.5,0.012,0.028,9.4,15 -2022-03-17T03:00,33.8,95,32.5,0.008,0.028,9.8,15.7 -2022-03-17T04:00,33.3,91,30.9,0,0.11,12,18.8 -2022-03-17T05:00,31.7,96,30.8,0,0.358,13.3,22.8 -2022-03-17T06:00,31,96,30,0,0.386,13.4,22.4 -2022-03-17T07:00,30.8,95,29.5,0,0.331,12.8,21.9 -2022-03-17T08:00,31,93,29.2,0,0.22,12.2,20.8 -2022-03-17T09:00,31.4,92,29.4,0,0.165,11.5,20.6 -2022-03-17T10:00,31.9,90,29.4,0,0.193,10.9,18.8 -2022-03-17T11:00,32.6,87,29.2,0,0.138,11.9,20.1 -2022-03-17T12:00,33.4,81,28.1,0,0.083,10.8,19.2 -2022-03-17T13:00,34.6,74,27.1,0,0.083,9.5,17.9 -2022-03-17T14:00,35.2,70,26.5,0,0.028,7.4,15.9 -2022-03-17T15:00,35.2,69,26.1,0,0.028,5.1,12.8 -2022-03-17T16:00,34.9,71,26.5,0,0,2.9,9.2 -2022-03-17T17:00,31.4,88,28.2,0,0,2.7,5.6 -2022-03-17T18:00,27.4,88,24.4,0,0,4.1,7.6 -2022-03-17T19:00,26.9,87,23.6,0,0,4.3,6.7 -2022-03-17T20:00,26.2,89,23.5,0,0,4.2,6.7 -2022-03-17T21:00,27.2,89,24.5,0,0.028,3.8,6.5 -2022-03-17T22:00,26.1,90,23.6,0,0.028,4.5,6 -2022-03-17T23:00,24.6,89,21.7,0,0.028,4.3,5.8 -2022-03-18T00:00,20.6,92,18.5,0,0,4.5,5.6 -2022-03-18T01:00,13.3,95,12,0,0,6.2,7.8 -2022-03-18T02:00,10.3,90,7.9,0,0,6.6,8.3 -2022-03-18T03:00,6.3,87,3.3,0,0,5.9,8.5 -2022-03-18T04:00,3.7,84,0,0,0,5.9,7.8 -2022-03-18T05:00,6.7,79,1.6,0,0,5.8,8.9 -2022-03-18T06:00,7.6,73,0.8,0,0,7.6,10.7 -2022-03-18T07:00,9.7,70,1.9,0,0,7.7,11 -2022-03-18T08:00,16.5,69,8.2,0,0,6,9.8 -2022-03-18T09:00,26.3,63,15.6,0,0,3.2,8.1 -2022-03-18T10:00,32,67,22.4,0,0,6.3,10.3 -2022-03-18T11:00,35.7,66,25.6,0,0,6.4,11.2 -2022-03-18T12:00,39,55,24.3,0,0,4.8,10.1 -2022-03-18T13:00,40.4,49,22.6,0,0,3.8,8.5 -2022-03-18T14:00,40.2,53,24.4,0,0,4.8,7.2 -2022-03-18T15:00,40.7,49,23,0,0,4.7,7.2 -2022-03-18T16:00,40,50,22.9,0,0,5.8,8.5 -2022-03-18T17:00,45.2,36,19.9,0,0,1.6,10.3 -2022-03-18T18:00,33.8,54,19,0,0,8.3,12.1 -2022-03-18T19:00,29.1,56,15.2,0,0,9.2,11.6 -2022-03-18T20:00,28.7,52,13.3,0,0,6.5,11.2 -2022-03-18T21:00,22.1,67,12.7,0,0,6.1,8.1 -2022-03-18T22:00,20.6,79,15.1,0,0,5.6,8.7 -2022-03-18T23:00,19.1,80,14.1,0,0,6.5,11 -2022-03-19T00:00,17.2,76,11.1,0,0,5.4,10.7 -2022-03-19T01:00,14.8,77,8.8,0,0,6.5,9.6 -2022-03-19T02:00,13.2,75,6.7,0,0,7.7,10.1 -2022-03-19T03:00,14.5,68,6,0,0,7.1,10.5 -2022-03-19T04:00,13.2,69,4.9,0,0,8.1,11 -2022-03-19T05:00,18.3,70,10.1,0,0,8,11.2 -2022-03-19T06:00,17.4,72,9.9,0,0,7.2,12.8 -2022-03-19T07:00,19.2,71,11.5,0,0,6.1,12.1 -2022-03-19T08:00,24.4,73,16.8,0,0,4.3,10.1 -2022-03-19T09:00,32.6,66,22.6,0,0,3.8,7.6 -2022-03-19T10:00,37.3,62,25.5,0,0,4.5,8.5 -2022-03-19T11:00,41.2,58,27.6,0,0,3.9,8.5 -2022-03-19T12:00,43.9,53,27.7,0,0,4.3,8.3 -2022-03-19T13:00,45.6,47,26.7,0,0,4.8,8.9 -2022-03-19T14:00,55,22,16.9,0,0,8.4,16.1 -2022-03-19T15:00,53.8,29,22.5,0,0,10.4,18.6 -2022-03-19T16:00,50.7,43,29,0,0,9.9,18.6 -2022-03-19T17:00,46.1,68,36.3,0,0,4.9,16.3 -2022-03-19T18:00,43,63,31.2,0,0,5.5,7.4 -2022-03-19T19:00,36.5,71,28,0,0,5,6.9 -2022-03-19T20:00,33.4,75,26.2,0,0,4.3,6.3 -2022-03-19T21:00,29.7,82,24.9,0,0,6,8.7 -2022-03-19T22:00,29.2,79,23.4,0,0,7.4,11 -2022-03-19T23:00,30,71,21.8,0,0,6.9,11.4 -2022-03-20T00:00,30.3,68,20.8,0,0,5.6,10.7 -2022-03-20T01:00,29.2,70,20.8,0,0,4.6,8.5 -2022-03-20T02:00,26,78,19.9,0,0,3.2,6.7 -2022-03-20T03:00,24.8,78,19,0,0,2.7,4.9 -2022-03-20T04:00,24.1,78,18.2,0,0,2.7,4.5 -2022-03-20T05:00,21.6,80,16.4,0,0,6.8,5.1 -2022-03-20T06:00,25.8,71,17.6,0,0,3.9,8.1 -2022-03-20T07:00,29.3,64,18.7,0,0,6.5,9.6 -2022-03-20T08:00,36.1,58,22.9,0,0,6,11.2 -2022-03-20T09:00,45.4,50,27.7,0,0,5,11.4 -2022-03-20T10:00,52.2,36,26,0,0,6.8,14.1 -2022-03-20T11:00,56.2,27,23,0,0,10.3,18.6 -2022-03-20T12:00,57.7,26,23.3,0,0,13.5,23.5 -2022-03-20T13:00,59.1,23,21.7,0,0,14,24.8 -2022-03-20T14:00,60.4,21,20,0,0,12.6,24.8 -2022-03-20T15:00,60.7,20,19.6,0,0,11,22.1 -2022-03-20T16:00,59.7,22,20.9,0,0,6.9,19 -2022-03-20T17:00,56.3,30,25.2,0,0,6.1,11.9 -2022-03-20T18:00,50.9,30,20.5,0,0,8.5,15 -2022-03-20T19:00,45.6,40,22.8,0,0,7.2,13.4 -2022-03-20T20:00,44.8,45,24.6,0,0,8.1,13 -2022-03-20T21:00,42.2,52,25.7,0,0,7.6,13.2 -2022-03-20T22:00,38,64,26.8,0,0,6.8,12.1 -2022-03-20T23:00,38.1,63,26.6,0,0,6,7.8 -2022-03-21T00:00,38.3,63,26.7,0,0,4.1,7.2 -2022-03-21T01:00,36.9,68,27.4,0,0,1.6,6.7 -2022-03-21T02:00,32.5,79,26.7,0,0,5.7,6.5 -2022-03-21T03:00,33.9,71,25.3,0,0,5.9,7.6 -2022-03-21T04:00,35.7,71,27.2,0,0,6.9,10.1 -2022-03-21T05:00,33.1,78,26.9,0,0,4.4,13.9 -2022-03-21T06:00,33.6,72,25.5,0,0,7.3,12.1 -2022-03-21T07:00,32.6,71,24.4,0,0,5.9,11.9 -2022-03-21T08:00,32,70,23.5,0,0.028,5.9,10.3 -2022-03-21T09:00,31.3,74,23.8,0,0.138,4.2,10.5 -2022-03-21T10:00,32.1,70,23.5,0,0.11,5.1,10.1 -2022-03-21T11:00,32.9,66,22.8,0,0.083,6.7,14.1 -2022-03-21T12:00,34.5,66,24.2,0,0.083,5.6,13.2 -2022-03-21T13:00,34.7,65,24,0,0.083,2.7,12.3 -2022-03-21T14:00,36.1,61,24.1,0,0.055,4.5,11 -2022-03-21T15:00,38,56,23.9,0,0,5.4,13.9 -2022-03-21T16:00,38.7,54,23.4,0,0,6.8,13.6 -2022-03-21T17:00,39,56,24.7,0,0,7.3,13.6 -2022-03-21T18:00,37.8,44,17.9,0,0,10.1,15.7 -2022-03-21T19:00,36.2,45,16.7,0,0,13.8,21.5 -2022-03-21T20:00,34.5,48,17,0,0,13.6,22.8 -2022-03-21T21:00,33.4,48,16.1,0,0,13.1,21.7 -2022-03-21T22:00,31.6,50,14.9,0,0,11.9,21 -2022-03-21T23:00,28.7,54,14,0,0,9.8,19.2 -2022-03-22T00:00,27.9,55,13.7,0,0,9.7,15.9 -2022-03-22T01:00,27.8,53,13,0,0,9.1,15.7 -2022-03-22T02:00,27,53,12,0,0,7.4,15 -2022-03-22T03:00,26.7,52,11.3,0,0,6.6,11.9 -2022-03-22T04:00,25.9,53,11.1,0,0,4.8,10.7 -2022-03-22T05:00,24.4,59,11.9,0,0,4.5,7.8 -2022-03-22T06:00,23.7,61,12.3,0,0,5,8.3 -2022-03-22T07:00,27.8,53,13,0,0,8.6,13.2 -2022-03-22T08:00,34.8,44,15,0,0,9,14.3 -2022-03-22T09:00,38.4,35,12.8,0,0,18.6,29.1 -2022-03-22T10:00,40.6,34,14.2,0,0,23.2,38.5 -2022-03-22T11:00,40,36,15.4,0,0.028,22.9,39.1 -2022-03-22T12:00,41.5,34,14.9,0,0.028,20.9,38 -2022-03-22T13:00,42.6,30,13.6,0,0.028,20.8,35.8 -2022-03-22T14:00,42.3,31,13.6,0,0,22.2,37.4 -2022-03-22T15:00,41.7,37,17.5,0,0,21.9,38 -2022-03-22T16:00,41.5,33,14.3,0,0,20.1,37.8 -2022-03-22T17:00,40.9,31,12.2,0,0,15.5,33.3 -2022-03-22T18:00,37,45,17.4,0,0,12.1,25.9 -2022-03-22T19:00,33.5,63,22.3,0,0,10.9,21.7 -2022-03-22T20:00,31.6,70,22.7,0,0,4.9,17.4 -2022-03-22T21:00,26.5,76,20.1,0,0,2.9,8.5 -2022-03-22T22:00,25.6,73,18.1,0,0,3.2,5.6 -2022-03-22T23:00,24.8,69,16.2,0,0,4.4,5.6 -2022-03-23T00:00,25.2,61,13.6,0,0,4.5,6.5 -2022-03-23T01:00,25.8,56,12.2,0,0,5,7.6 -2022-03-23T02:00,24.6,59,12.2,0,0,5.4,7.8 -2022-03-23T03:00,25,57,11.8,0,0,5,7.8 -2022-03-23T04:00,24.5,57,11.6,0,0,5.2,7.8 -2022-03-23T05:00,23.1,60,11.3,0,0,7.4,8.5 -2022-03-23T06:00,24.5,55,10.8,0,0,6.8,9.4 -2022-03-23T07:00,30.7,45,11.7,0,0,4.9,8.9 -2022-03-23T08:00,36.8,39,13.9,0,0,5.5,11.4 -2022-03-23T09:00,41.7,32,13.9,0,0,8.4,16.3 -2022-03-23T10:00,46.8,28,15.3,0,0,14.8,23.5 -2022-03-23T11:00,48.4,21,10,0,0,25.3,42.7 -2022-03-23T12:00,49.6,20,10.3,0,0,23.5,43 -2022-03-23T13:00,51.1,20,10.9,0,0,21.3,40 -2022-03-23T14:00,52,19,10.5,0,0,20.1,36.5 -2022-03-23T15:00,52.6,17,9.5,0,0,18.4,34.4 -2022-03-23T16:00,52.2,16,7.3,0,0,17.7,31.5 -2022-03-23T17:00,51.2,22,13.5,0,0,8.2,29.5 -2022-03-23T18:00,42.7,35,17.2,0,0,5.1,13.4 -2022-03-23T19:00,39.2,38,15.9,0,0,6.6,10.3 -2022-03-23T20:00,35.5,42,14.6,0,0,5.6,11.2 -2022-03-23T21:00,35.2,44,15.4,0,0,6.9,10.3 -2022-03-23T22:00,35.4,43,15.4,0,0,6.5,11.2 -2022-03-23T23:00,33.3,49,16.1,0,0,8.3,9.8 -2022-03-24T00:00,32.8,51,16.7,0,0,8.6,11.2 -2022-03-24T01:00,33.1,54,18.4,0,0,8.3,10.5 -2022-03-24T02:00,37,50,20.3,0,0,7.3,10.1 -2022-03-24T03:00,36.5,55,21.7,0,0,7.3,9.2 -2022-03-24T04:00,40.5,47,22,0,0,6.3,8.9 -2022-03-24T05:00,30.9,59,18.4,0,0,6.1,7.8 -2022-03-24T06:00,33.3,59,20.5,0,0,8.3,9.8 -2022-03-24T07:00,37.9,67,27.9,0,0,7.4,10.7 -2022-03-24T08:00,46.3,46,26.5,0,0,2.6,9.2 -2022-03-24T09:00,52,42,29.3,0,0,3.9,10.3 -2022-03-24T10:00,56.2,37,30.5,0,0,2.6,10.5 -2022-03-24T11:00,60.9,26,26.1,0,0,8.9,17.2 -2022-03-24T12:00,63,22,23.1,0,0,13.6,24.8 -2022-03-24T13:00,63.9,20,22.2,0,0,13.7,25.7 -2022-03-24T14:00,64.1,20,21.9,0,0,10.8,25.1 -2022-03-24T15:00,64.5,19,21.4,0,0,11.4,20.6 -2022-03-24T16:00,63.7,20,21.7,0,0,11.4,21.5 -2022-03-24T17:00,60.5,26,25.7,0,0,11.9,20.1 -2022-03-24T18:00,54.3,30,23.9,0,0,8,19.9 -2022-03-24T19:00,49.6,35,22.9,0,0,8.1,13.2 -2022-03-24T20:00,43.7,47,24.5,0,0,8.4,13 -2022-03-24T21:00,44.8,43,23.8,0,0,2.5,10.7 -2022-03-24T22:00,38.1,59,25,0,0,5.3,8.1 -2022-03-24T23:00,37.4,60,24.8,0,0,6.8,11.2 -2022-03-25T00:00,35.7,65,25.2,0,0,4.7,11 -2022-03-25T01:00,35.2,70,26.4,0,0,7.1,10.3 -2022-03-25T02:00,34.5,73,26.8,0,0,5.3,11.4 -2022-03-25T03:00,32.5,77,26.2,0,0,5.2,11.2 -2022-03-25T04:00,33.4,77,27.1,0,0,5,7.6 -2022-03-25T05:00,35.2,75,28.1,0,0,6.3,8.5 -2022-03-25T06:00,32.2,85,28,0,0,4.8,10.1 -2022-03-25T07:00,35.7,77,29.3,0,0,5,8.1 -2022-03-25T08:00,39.3,67,29.1,0,0,5.6,10.7 -2022-03-25T09:00,42.4,59,28.9,0,0,4.5,12.5 -2022-03-25T10:00,45.2,55,29.8,0,0,4.6,12.8 -2022-03-25T11:00,48.8,50,31.2,0,0,3.8,12.8 -2022-03-25T12:00,52.6,45,32.1,0,0,4.1,12.8 -2022-03-25T13:00,56,41,32.7,0,0,4,12.8 -2022-03-25T14:00,58.3,39,33.2,0,0,3.9,12.3 -2022-03-25T15:00,59.2,39,34,0,0,4.5,12.1 -2022-03-25T16:00,59.1,39,34.1,0,0,4.5,12.1 -2022-03-25T17:00,58.4,37,32.2,0,0,1.7,10.5 -2022-03-25T18:00,57.1,36,30.7,0,0,1.5,2.9 -2022-03-25T19:00,47.8,57,33.1,0,0,4.1,4.7 -2022-03-25T20:00,43,66,32.3,0,0,5.2,7.8 -2022-03-25T21:00,39.1,72,31,0,0,4,7.8 -2022-03-25T22:00,36.5,76,29.6,0,0,4.2,6.9 -2022-03-25T23:00,34.8,75,27.6,0,0,3.3,6.9 -2022-03-26T00:00,34,73,26.3,0,0,4.9,6 -2022-03-26T01:00,33.3,73,25.5,0,0,6.1,7.2 -2022-03-26T02:00,32.7,74,25.3,0,0,6.4,7.6 -2022-03-26T03:00,32.5,75,25.3,0,0,5.7,7.6 -2022-03-26T04:00,31.5,78,25.3,0,0,6.1,6.9 -2022-03-26T05:00,32.3,74,24.8,0,0,5.9,7.2 -2022-03-26T06:00,33.7,70,25,0,0,5.9,7.6 -2022-03-26T07:00,41.1,58,27.5,0,0,3.4,7.8 -2022-03-26T08:00,49.9,47,30.5,0,0,3.5,7.4 -2022-03-26T09:00,60.1,37,33.9,0,0,6.1,11.9 -2022-03-26T10:00,67.1,24,29.6,0,0,10.1,18.3 -2022-03-26T11:00,69.4,20,26.2,0,0,12.4,22.8 -2022-03-26T12:00,70.3,19,26,0,0,11.8,22.8 -2022-03-26T13:00,72.1,18,26.2,0,0,9,21.9 -2022-03-26T14:00,73.3,17,25.3,0,0,3.4,17.7 -2022-03-26T15:00,73.9,16,24.6,0,0,9.9,18.6 -2022-03-26T16:00,73.4,15,23.4,0,0,9.8,19.9 -2022-03-26T17:00,67.9,26,32.2,0,0,6,17.9 -2022-03-26T18:00,60.8,38,35,0,0,6.6,9.8 -2022-03-26T19:00,53.2,50,35,0,0,6.4,9.6 -2022-03-26T20:00,48.9,61,36.1,0,0,4.9,8.3 -2022-03-26T21:00,45.1,67,34.8,0,0,2.1,5.8 -2022-03-26T22:00,41.1,73,33.2,0,0,3.5,4.5 -2022-03-26T23:00,44.2,62,32.1,0,0,0.3,4.5 -2022-03-27T00:00,39.4,71,30.9,0,0,2.3,3.8 -2022-03-27T01:00,37.9,74,30.3,0,0,2.5,3.6 -2022-03-27T02:00,34.9,81,29.7,0,0,1.4,3.4 -2022-03-27T03:00,33.4,84,29.2,0,0,0.6,2.7 -2022-03-27T04:00,34.2,81,29,0,0,0.5,1.3 -2022-03-27T05:00,37.1,80,31.6,0,0,2,2.5 -2022-03-27T06:00,32.4,94,30.9,0,0,4.3,4.9 -2022-03-27T07:00,34.9,93,33.1,0,0,3.7,7.8 -2022-03-27T08:00,37.8,82,32.8,0,0,4,9.4 -2022-03-27T09:00,44.7,58,31,0,0,4.7,11.4 -2022-03-27T10:00,52.3,43,30.4,0,0,5.8,13.4 -2022-03-27T11:00,59,37,32.5,0,0,6.5,14.1 -2022-03-27T12:00,62,39,36.7,0,0,9.9,19 -2022-03-27T13:00,62.6,40,38,0,0,11.2,21.3 -2022-03-27T14:00,65.1,38,38.6,0,0,6.5,21.3 -2022-03-27T15:00,68.5,36,40.8,0,0,5.7,14.1 -2022-03-27T16:00,68.5,38,41.7,0,0,6.3,13.4 -2022-03-27T17:00,65.5,43,42.4,0,0,8.5,13 -2022-03-27T18:00,59.7,47,39.7,0,0,7.4,14.1 -2022-03-27T19:00,55.9,53,39.1,0,0,6.7,12.3 -2022-03-27T20:00,49.6,67,39.3,0,0,4.1,11 -2022-03-27T21:00,45.5,73,37.2,0,0,4.3,6.5 -2022-03-27T22:00,42.6,78,36.3,0,0,4.8,6.9 -2022-03-27T23:00,39.7,81,34.3,0,0,3,6.3 -2022-03-28T00:00,37.5,82,32.6,0,0,3.7,5.4 -2022-03-28T01:00,36.5,75,29.4,0,0,5.2,6.5 -2022-03-28T02:00,36.2,68,26.8,0,0,5.1,6.7 -2022-03-28T03:00,36,65,25.2,0,0,5.5,6.5 -2022-03-28T04:00,35.2,65,24.5,0,0,5.6,6.7 -2022-03-28T05:00,36.1,61,24,0,0,5.7,6.9 -2022-03-28T06:00,36.2,59,23.5,0,0,5.3,7.4 -2022-03-28T07:00,42.2,50,24.9,0,0,5.1,7.6 -2022-03-28T08:00,50.2,45,29.6,0,0,3.3,8.9 -2022-03-28T09:00,59,39,33.8,0,0,1.9,7.6 -2022-03-28T10:00,66.5,30,33.9,0,0,3.7,9.6 -2022-03-28T11:00,71.4,13,18.9,0,0,7.4,15 -2022-03-28T12:00,72.8,12,18,0,0,9.8,19 -2022-03-28T13:00,73.2,12,18.3,0,0,9.9,19.9 -2022-03-28T14:00,73.2,12,18,0,0,9,19.2 -2022-03-28T15:00,73.2,12,18,0,0,9.2,17.4 -2022-03-28T16:00,72.9,12,17.2,0,0,8.3,17.2 -2022-03-28T17:00,70.1,21,28.2,0,0,3.6,14.8 -2022-03-28T18:00,63.5,23,24.8,0,0,6.4,9.2 -2022-03-28T19:00,58.8,28,25.7,0,0,6.8,10.5 -2022-03-28T20:00,56.5,34,28.2,0,0,4.9,8.1 -2022-03-28T21:00,51,44,29.9,0,0,4.6,6 -2022-03-28T22:00,47.4,47,28,0,0,4.3,6.9 -2022-03-28T23:00,42.1,58,28.4,0,0,4.6,7.2 -2022-03-29T00:00,43.1,60,30.1,0,0,3.4,5.8 -2022-03-29T01:00,42.2,62,29.9,0,0,5.8,6.7 -2022-03-29T02:00,48.2,43,26.8,0,0,3.5,8.1 -2022-03-29T03:00,44.8,48,26.2,0,0,3.9,6 -2022-03-29T04:00,43.3,52,27.1,0,0,4.2,6 -2022-03-29T05:00,45,56,30.2,0,0,5.5,10.3 -2022-03-29T06:00,48.9,50,30.9,0,0,2.2,7.2 -2022-03-29T07:00,46.8,64,35.1,0,0,3.4,4.7 -2022-03-29T08:00,48.1,65,37,0.008,0,5.1,7.4 -2022-03-29T09:00,47,86,43.2,0.02,0,8.2,12.5 -2022-03-29T10:00,47,86,43.1,0.024,0,9.8,16.3 -2022-03-29T11:00,48.9,75,41.2,0.004,0,7.1,16.3 -2022-03-29T12:00,51.4,61,38.5,0,0,2.8,13.6 -2022-03-29T13:00,48.7,68,38.4,0.012,0,9.8,19.5 -2022-03-29T14:00,49.6,67,39,0.016,0,1.9,20.8 -2022-03-29T15:00,48.5,71,39.6,0.016,0,8.3,19.9 -2022-03-29T16:00,45.2,81,39.7,0.075,0,11.6,23 -2022-03-29T17:00,41.5,81,36.1,0.004,0,20.2,30 -2022-03-29T18:00,40.1,74,32.6,0.004,0,20.9,34.2 -2022-03-29T19:00,37.3,90,34.5,0.024,0,15,33.8 -2022-03-29T20:00,36.8,90,34,0.02,0,11.1,24.6 -2022-03-29T21:00,36.9,82,32,0.012,0,7.7,18.1 -2022-03-29T22:00,37.1,80,31.5,0,0,1.8,12.5 -2022-03-29T23:00,36.3,85,32.2,0,0,2.2,3.8 -2022-03-30T00:00,32.7,76,26.1,0,0,3.7,7.2 -2022-03-30T01:00,32,74,24.8,0,0,2.1,5.8 -2022-03-30T02:00,31,75,24.1,0,0,3.8,5.8 -2022-03-30T03:00,30.8,65,20.4,0,0,5,8.9 -2022-03-30T04:00,30.7,63,19.6,0,0,5,8.3 -2022-03-30T05:00,29,65,18.9,0,0,3.7,8.3 -2022-03-30T06:00,28.9,62,17.4,0,0,2.8,6.7 -2022-03-30T07:00,28.9,61,17.2,0,0.028,1.9,5.8 -2022-03-30T08:00,29.5,63,18.4,0,0.028,2.7,7.4 -2022-03-30T09:00,32.7,58,19.8,0,0,3.5,10.1 -2022-03-30T10:00,36.4,55,21.6,0,0,5.4,13.9 -2022-03-30T11:00,40,50,22.9,0,0,4.8,14.5 -2022-03-30T12:00,41.5,48,23,0,0,4.5,14.5 -2022-03-30T13:00,45.4,41,23,0,0,6.5,19.9 -2022-03-30T14:00,46.9,28,15.8,0,0,13.6,25.3 -2022-03-30T15:00,49.7,16,4.9,0,0,19.4,32.4 -2022-03-30T16:00,48.7,19,8.2,0,0,16.4,34 -2022-03-30T17:00,44.1,36,18.9,0,0,3.5,28.2 -2022-03-30T18:00,43.4,47,24.4,0,0,1.6,6.5 -2022-03-30T19:00,41,48,22.6,0,0,8.1,12.1 -2022-03-30T20:00,39.2,51,22.6,0,0,5.8,14.1 -2022-03-30T21:00,39.4,49,21.6,0,0,3,8.9 -2022-03-30T22:00,36.1,57,22.6,0,0,4.8,6 -2022-03-30T23:00,30.3,70,21.8,0,0,5.4,6.7 -2022-03-31T00:00,29,71,20.9,0,0,5.4,6.9 -2022-03-31T01:00,30.1,63,19,0,0,4.5,6.3 -2022-03-31T02:00,30.1,55,15.8,0,0,6.3,7.4 -2022-03-31T03:00,29.5,51,13.6,0,0,8,9.4 -2022-03-31T04:00,31.1,48,13.6,0,0,7.7,9.6 -2022-03-31T05:00,35.6,43,15.4,0,0,4.2,9.2 -2022-03-31T06:00,29.1,59,16.6,0,0,5.9,6.5 -2022-03-31T07:00,36.7,49,19.1,0,0,5,7.4 -2022-03-31T08:00,44.8,42,22.8,0,0,4.5,9.8 -2022-03-31T09:00,51.7,33,23.5,0,0,2.6,9.8 -2022-03-31T10:00,55.1,22,17.2,0,0,1.1,8.7 -2022-03-31T11:00,56.8,19,15.1,0,0,3.2,10.5 -2022-03-31T12:00,58.2,18,14.9,0,0,4.8,13 -2022-03-31T13:00,59.7,17,15.1,0,0,4.8,13.6 -2022-03-31T14:00,60.5,17,15.1,0,0,3.8,13 -2022-03-31T15:00,60.9,18,16.5,0,0,5.4,12.3 -2022-03-31T16:00,60.7,16,14.9,0,0,7.8,15 -2022-03-31T17:00,58.9,23,20.9,0,0,4.4,16.1 -2022-03-31T18:00,53.4,31,23.8,0,0,7,12.1 -2022-03-31T19:00,45.7,42,23.9,0,0,5.7,11.6 -2022-03-31T20:00,42.9,48,24.6,0,0,5.4,8.9 -2022-03-31T21:00,41.4,49,23.8,0,0,5.3,8.3 -2022-03-31T22:00,38.8,56,24.5,0,0,4.3,8.3 -2022-03-31T23:00,35.5,68,26.1,0,0,3.7,6.7 -2022-04-01T00:00,39.1,57,25.2,0,0,1.1,4.5 -2022-04-01T01:00,36.9,64,25.8,0.008,0,3.1,3.4 -2022-04-01T02:00,38,64,26.9,0.008,0,2.7,4.5 -2022-04-01T03:00,36,81,30.6,0,0,2.6,5.1 -2022-04-01T04:00,32.9,92,30.8,0,0,2,4.7 -2022-04-01T05:00,36.5,90,34,0,0,2.7,5.4 -2022-04-01T06:00,35,93,33.3,0,0,3.6,6 -2022-04-01T07:00,37.5,90,34.9,0,0,3,6.7 -2022-04-01T08:00,43.2,72,34.6,0,0,3,7.2 -2022-04-01T09:00,46.9,52,30,0,0,7.9,15.4 -2022-04-01T10:00,48.3,45,28,0,0,8,17.7 -2022-04-01T11:00,50.1,41,27.4,0,0,8.1,17.7 -2022-04-01T12:00,52.1,35,25.3,0,0,5.4,17.7 -2022-04-01T13:00,55,28,22.5,0,0,4.2,14.5 -2022-04-01T14:00,56.5,25,21,0,0,7,15.7 -2022-04-01T15:00,57.1,24,20.5,0,0,7.3,16.1 -2022-04-01T16:00,57,23,19.5,0,0,6,15.9 -2022-04-01T17:00,54.7,27,21.7,0,0,6.3,13 -2022-04-01T18:00,50.2,35,23.4,0,0,5.7,10.7 -2022-04-01T19:00,43.3,47,24.5,0,0,6.9,8.7 -2022-04-01T20:00,42.8,47,24.2,0,0,6,8.7 -2022-04-01T21:00,39.9,54,24.6,0,0,4.9,7.2 -2022-04-01T22:00,36.4,62,24.8,0,0,3,6 -2022-04-01T23:00,33,73,25.4,0,0,2.9,4.3 -2022-04-02T00:00,32.2,76,25.3,0,0,2.9,4.9 -2022-04-02T01:00,29.9,81,24.7,0,0,2.6,4.7 -2022-04-02T02:00,28.4,82,23.5,0,0,3.6,4.3 -2022-04-02T03:00,29,75,22.2,0,0,2.4,4.7 -2022-04-02T04:00,28,76,21.4,0,0,2.4,2.9 -2022-04-02T05:00,28.9,68,19.7,0,0,1.8,2.9 -2022-04-02T06:00,29.3,67,19.7,0,0,2.8,3.8 -2022-04-02T07:00,31.1,66,21.2,0,0,3.3,6.7 -2022-04-02T08:00,36.6,57,22.7,0,0,3.2,9.2 -2022-04-02T09:00,43.2,49,25.5,0,0,3.5,10.3 -2022-04-02T10:00,49.2,40,26.1,0,0,3.4,11.6 -2022-04-02T11:00,53.6,34,26.2,0,0,3.7,12.3 -2022-04-02T12:00,57.9,30,26.8,0,0,4.8,12.8 -2022-04-02T13:00,62.2,26,26.9,0,0,6,14.5 -2022-04-02T14:00,65.2,22,24.9,0,0,5.1,14.3 -2022-04-02T15:00,66.4,19,22.7,0,0,4.3,12.8 -2022-04-02T16:00,66.7,18,21.3,0,0,4,11 -2022-04-02T17:00,63.5,26,28,0,0,4.3,9.2 -2022-04-02T18:00,56.8,41,33.5,0,0,4.1,7.2 -2022-04-02T19:00,51,47,31.6,0,0,5.4,8.5 -2022-04-02T20:00,46,56,31,0,0,4.3,8.3 -2022-04-02T21:00,42.4,64,30.9,0,0,3.3,6 -2022-04-02T22:00,39.7,72,31.3,0,0,4.8,6 -2022-04-02T23:00,38.6,71,29.9,0,0,4.2,6 -2022-04-03T00:00,37.7,69,28.6,0,0,3.8,5.8 -2022-04-03T01:00,37,69,27.6,0,0,4.1,7.4 -2022-04-03T02:00,38.4,65,27.7,0,0,3.6,6.5 -2022-04-03T03:00,35.8,72,27.7,0,0,2.7,4.5 -2022-04-03T04:00,33.4,75,26.5,0,0,5.2,6.5 -2022-04-03T05:00,35.5,72,27.4,0,0,6.2,8.3 -2022-04-03T06:00,38,71,29.5,0,0,4.3,7.4 -2022-04-03T07:00,41.5,58,28,0,0,4.4,7.4 -2022-04-03T08:00,44,53,27.8,0,0,3.6,8.3 -2022-04-03T09:00,44.5,44,24.2,0,0,6.7,11.2 -2022-04-03T10:00,45.2,43,24.3,0,0,7.7,14.5 -2022-04-03T11:00,45.1,45,25,0,0,7.3,14.3 -2022-04-03T12:00,46.9,44,26,0,0,6.3,14.1 -2022-04-03T13:00,48.4,43,26.8,0,0,5.6,13 -2022-04-03T14:00,49,43,27.3,0,0,6.8,13 -2022-04-03T15:00,50.6,41,27.7,0,0,6,14.3 -2022-04-03T16:00,51.5,40,28,0,0,4.8,12.8 -2022-04-03T17:00,51.8,36,25.4,0,0,5,10.7 -2022-04-03T18:00,48.1,51,31,0,0,4.2,8.1 -2022-04-03T19:00,48.6,39,25,0,0,3.8,5.6 -2022-04-03T20:00,47.7,42,25.6,0,0,2.7,4.3 -2022-04-03T21:00,43.3,53,27.4,0,0,2.7,3.4 -2022-04-03T22:00,38.8,66,28.6,0,0,3.2,4.9 -2022-04-03T23:00,36.6,76,29.8,0,0,3.6,4.9 -2022-04-04T00:00,35.3,77,28.9,0,0,3.8,4.5 -2022-04-04T01:00,35.2,73,27.6,0,0,4,5.4 -2022-04-04T02:00,35.4,71,27,0,0,1.6,4.7 -2022-04-04T03:00,34.4,78,28.4,0,0,3.2,4.7 -2022-04-04T04:00,33.7,83,29.1,0,0,2.9,5.1 -2022-04-04T05:00,32.1,87,28.8,0,0,5.2,5.1 -2022-04-04T06:00,31,86,27.2,0,0,4.3,6.3 -2022-04-04T07:00,36.8,69,27.6,0,0,5.5,9.8 -2022-04-04T08:00,44.5,56,29.8,0,0,2.4,10.1 -2022-04-04T09:00,50.3,45,29.9,0,0,1.6,8.1 -2022-04-04T10:00,55.1,33,26.2,0,0,2.9,10.1 -2022-04-04T11:00,59.2,20,18.6,0,0,3.4,11.2 -2022-04-04T12:00,62.1,17,16.6,0,0,5.4,13.6 -2022-04-04T13:00,64.4,15,15.9,0,0,7,15.9 -2022-04-04T14:00,67.1,12,11.9,0,0,6.2,15.9 -2022-04-04T15:00,68.5,9,7.5,0,0,10.5,17.9 -2022-04-04T16:00,66.3,10,7.8,0,0,11.9,25.5 -2022-04-04T17:00,63,19,20.4,0,0,3.4,20.6 -2022-04-04T18:00,56.8,36,30.2,0,0,5.5,8.3 -2022-04-04T19:00,53.2,35,26.4,0,0,4.4,8.3 -2022-04-04T20:00,55,29,23.4,0,0,2.6,6.7 -2022-04-04T21:00,47.9,39,24.2,0,0,7.1,7.4 -2022-04-04T22:00,49.7,32,21.4,0,0,11.4,15.4 -2022-04-04T23:00,49.9,33,21.7,0,0,12.4,20.8 -2022-04-05T00:00,48.6,36,22.6,0,0,12.9,18.6 -2022-04-05T01:00,46.9,39,23.2,0,0,10.1,19.2 -2022-04-05T02:00,44.8,43,23.5,0,0,7.8,15.2 -2022-04-05T03:00,45.5,41,23.2,0,0,6.3,12.1 -2022-04-05T04:00,42.4,48,23.9,0,0,4.4,9.8 -2022-04-05T05:00,49.4,37,24,0,0,7.3,7.2 -2022-04-05T06:00,47.8,43,26.4,0,0,5.7,11.9 -2022-04-05T07:00,51.6,45,30.9,0,0,8,13 -2022-04-05T08:00,56.7,41,33.4,0,0,4,12.5 -2022-04-05T09:00,48.9,64,37.2,0,0,19.6,33.1 -2022-04-05T10:00,47.6,58,33.4,0.02,0.11,11.3,32.9 -2022-04-05T11:00,47.3,58,33.3,0.004,0,7.5,20.8 -2022-04-05T12:00,47.1,58,32.9,0,0,5.2,16.3 -2022-04-05T13:00,49.4,57,34.6,0.004,0,6.1,14.8 -2022-04-05T14:00,51.9,41,28.9,0.004,0,14.6,25.5 -2022-04-05T15:00,49.3,32,20.8,0,0,25.1,41.4 -2022-04-05T16:00,48.4,28,16.4,0,0,26.9,45.4 -2022-04-05T17:00,45.3,24,10.3,0,0,31.5,45.2 -2022-04-05T18:00,43.6,22,6.8,0,0,28.1,51.2 -2022-04-05T19:00,40.9,22,5.4,0,0,31.9,53.5 -2022-04-05T20:00,39.2,27,8.2,0,0,21,52.3 -2022-04-05T21:00,37.1,30,8.2,0,0,14.9,34.4 -2022-04-05T22:00,35.2,30,7,0,0,12.8,24.4 -2022-04-05T23:00,34.4,27,3.9,0,0,15.4,24.6 -2022-04-06T00:00,33.9,25,2.1,0,0,16.7,27.7 -2022-04-06T01:00,33.2,26,2.2,0,0,13.2,27.3 -2022-04-06T02:00,31.8,28,2.8,0,0,6.5,21.3 -2022-04-06T03:00,29.1,33,3.7,0,0,5.3,10.7 -2022-04-06T04:00,27.8,37,4.6,0,0,5.7,8.1 -2022-04-06T05:00,28.3,37,5.5,0,0,6,7.8 -2022-04-06T06:00,29.7,37,6.3,0,0,5.2,8.5 -2022-04-06T07:00,33.4,32,6.5,0,0,9.7,17 -2022-04-06T08:00,35.9,29,7,0,0,10.4,19 -2022-04-06T09:00,39.7,18,0,0,0,18.9,32.7 -2022-04-06T10:00,42.1,18,1.9,0,0,19.2,33.8 -2022-04-06T11:00,43.5,17,1.9,0,0,20.1,36.2 -2022-04-06T12:00,45.6,15,0.3,0,0,18.1,35.6 -2022-04-06T13:00,46.1,15,1.7,0,0,17.9,32.9 -2022-04-06T14:00,46.9,16,3.2,0,0,16.4,32.7 -2022-04-06T15:00,47.4,16,2.8,0,0,16,30 -2022-04-06T16:00,45.5,17,2.8,0,0,16.2,29.1 -2022-04-06T17:00,44.6,16,1,0,0,15,28.6 -2022-04-06T18:00,42.4,18,1.6,0,0,10,25.5 -2022-04-06T19:00,37.8,25,4.6,0,0,5.2,16.6 -2022-04-06T20:00,35.1,32,8.2,0,0,5.9,9.2 -2022-04-06T21:00,34.1,37,10.7,0,0,7.2,12.1 -2022-04-06T22:00,34,39,11.7,0,0,7.2,12.3 -2022-04-06T23:00,32.7,43,12.9,0,0,7.4,12.3 -2022-04-07T00:00,30.3,50,13.6,0,0,6.3,12.1 -2022-04-07T01:00,28.5,52,13.1,0,0,5.6,10.3 -2022-04-07T02:00,27.6,51,11.7,0,0,4.6,9.2 -2022-04-07T03:00,26.1,53,11.1,0,0,6,7.8 -2022-04-07T04:00,26.5,47,9.1,0,0,5.6,7.8 -2022-04-07T05:00,26.4,49,10,0,0,5.6,9.2 -2022-04-07T06:00,28.2,45,9.4,0,0,4.7,8.1 -2022-04-07T07:00,34.2,45,14.9,0,0,4.2,8.3 -2022-04-07T08:00,37.9,32,10.5,0,0,6,13 -2022-04-07T09:00,40.3,29,10.4,0,0,6.5,14.8 -2022-04-07T10:00,42.3,26,10.1,0,0,6,15.9 -2022-04-07T11:00,44.7,26,11.7,0,0,6,15.4 -2022-04-07T12:00,48.4,24,12.8,0,0,8.4,18.3 -2022-04-07T13:00,52.4,18,10.4,0,0,12.5,23.7 -2022-04-07T14:00,54.9,14,5.8,0,0,12.6,25.9 -2022-04-07T15:00,54.8,14,5.9,0,0,14.6,26.8 -2022-04-07T16:00,55,12,3.5,0,0,13.3,26.6 -2022-04-07T17:00,51.2,18,8.5,0,0,13.2,26.4 -2022-04-07T18:00,48.5,21,10.2,0,0,11.3,21 -2022-04-07T19:00,40.6,33,13.6,0,0,7.3,18.3 -2022-04-07T20:00,43.2,25,9.4,0,0,4.2,8.9 -2022-04-07T21:00,36.4,35,11.5,0,0,6.3,7.4 -2022-04-07T22:00,36,37,12.2,0,0,5.6,8.5 -2022-04-07T23:00,32.5,44,13.2,0,0,4,8.7 -2022-04-08T00:00,30,52,14.6,0,0,3.2,6.3 -2022-04-08T01:00,29,55,15,0,0,4,6.3 -2022-04-08T02:00,27.9,57,14.5,0,0,4.8,6.5 -2022-04-08T03:00,26,62,14.7,0,0,6.2,7.4 -2022-04-08T04:00,25,66,15.2,0,0,6.3,7.4 -2022-04-08T05:00,24.5,64,14.2,0,0,5.8,7.6 -2022-04-08T06:00,25.2,65,15.2,0,0,3.9,7.4 -2022-04-08T07:00,31.4,57,17.8,0,0,5.4,9.6 -2022-04-08T08:00,41.2,41,19.5,0,0,5,10.7 -2022-04-08T09:00,49.6,26,16.3,0,0,6.2,13.9 -2022-04-08T10:00,54.1,23,16.9,0,0,4.1,13.9 -2022-04-08T11:00,57.3,22,18.7,0,0,4,12.1 -2022-04-08T12:00,60.4,21,19.8,0,0,4.9,13.2 -2022-04-08T13:00,62.7,19,19.8,0,0,4.5,13.4 -2022-04-08T14:00,64.2,18,20.1,0,0,4.3,13 -2022-04-08T15:00,65.3,18,20,0,0,4,12.3 -2022-04-08T16:00,65.8,16,18.6,0,0,2.4,11.2 -2022-04-08T17:00,64.4,17,18,0,0,4.5,8.7 -2022-04-08T18:00,58.8,31,28.5,0,0,5.7,6.7 -2022-04-08T19:00,60.4,18,17.2,0,0,3.4,6.7 -2022-04-08T20:00,47,37,22.4,0,0,5.1,7.8 -2022-04-08T21:00,44.2,44,23.9,0,0,5,8.5 -2022-04-08T22:00,40,54,24.9,0,0,4.7,8.1 -2022-04-08T23:00,38.8,57,24.9,0,0,4.5,6.7 -2022-04-09T00:00,37.1,58,23.7,0,0,4.3,6.7 -2022-04-09T01:00,37.3,55,22.6,0,0,5,7.4 -2022-04-09T02:00,38.2,51,21.7,0,0,5.4,8.5 -2022-04-09T03:00,38.6,50,21.7,0,0,5.5,8.5 -2022-04-09T04:00,39.4,49,21.6,0,0,5.7,8.7 -2022-04-09T05:00,40,45,20.4,0,0,7,9.4 -2022-04-09T06:00,40.4,46,21.3,0,0,5,11.2 -2022-04-09T07:00,46.5,41,24,0,0,4.7,7.2 -2022-04-09T08:00,53.9,36,27.2,0,0,4.3,8.9 -2022-04-09T09:00,63.1,28,29.2,0,0,4.9,10.1 -2022-04-09T10:00,69.9,14,19.3,0,0,12,20.8 -2022-04-09T11:00,71.2,14,19.7,0,0,13,24.6 -2022-04-09T12:00,72.4,14,20.4,0,0,9.1,23.7 -2022-04-09T13:00,73,13,19.6,0,0,6.6,18.3 -2022-04-09T14:00,74.1,12,18,0,0,7.1,15.7 -2022-04-09T15:00,74.3,11,15.9,0,0,7.9,16.3 -2022-04-09T16:00,74,10,13.6,0,0,7.4,16.3 -2022-04-09T17:00,69.9,21,28.3,0,0,4,14.5 -2022-04-09T18:00,65.6,21,24.1,0,0,7,9.8 -2022-04-09T19:00,61.2,17,15.4,0,0,7.8,15.9 -2022-04-09T20:00,54.9,26,20.2,0,0,4.4,12.5 -2022-04-09T21:00,53.1,34,25.3,0,0,20.6,29.5 -2022-04-09T22:00,49.3,51,32,0,0,7.1,34.2 -2022-04-09T23:00,46.9,56,32.1,0,0,6.1,11.6 -2022-04-10T00:00,46.3,59,32.8,0,0,11.6,19.2 -2022-04-10T01:00,45.3,65,34.4,0,0,6.1,18.8 -2022-04-10T02:00,42.3,76,35.2,0,0,10.8,16.6 -2022-04-10T03:00,39.2,85,35.1,0.004,0,10.7,21.9 -2022-04-10T04:00,38.2,85,34.2,0,0,2.1,16.8 -2022-04-10T05:00,37.3,87,33.7,0,0,1.6,3.8 -2022-04-10T06:00,38.3,82,33.4,0,0,3.6,6.7 -2022-04-10T07:00,39.3,79,33.2,0,0,4.9,9.4 -2022-04-10T08:00,41.2,71,32.5,0,0,5.6,12.3 -2022-04-10T09:00,44.2,58,30.6,0,0,6.7,14.1 -2022-04-10T10:00,44.2,54,28.8,0,0,9.8,18.8 -2022-04-10T11:00,49.6,37,24.4,0,0,8.6,22.1 -2022-04-10T12:00,54.2,23,17,0.004,0,6.5,18.1 -2022-04-10T13:00,55.3,8,-5.7,0,0,14,26.6 -2022-04-10T14:00,54.8,8,-5.8,0,0,13.7,27.3 -2022-04-10T15:00,53.1,9,-4,0,0,15.6,29.1 -2022-04-10T16:00,51.9,10,-3.7,0,0,15.8,28.4 -2022-04-10T17:00,52.3,10,-2.1,0,0,16.1,28 -2022-04-10T18:00,49.1,14,1.7,0,0,10.8,26.8 -2022-04-10T19:00,45,17,2.7,0,0,10.8,18.1 -2022-04-10T20:00,40.9,24,6.5,0,0,5.1,17.7 -2022-04-10T21:00,39.7,27,8.4,0,0,8.6,11.2 -2022-04-10T22:00,40.6,19,1.8,0,0,8.2,16.8 -2022-04-10T23:00,37.4,26,5.3,0,0,4.3,13 -2022-04-11T00:00,35,28,5.1,0,0,6.3,8.7 -2022-04-11T01:00,35.1,26,3.8,0,0,6.5,8.5 -2022-04-11T02:00,35.5,28,5.6,0,0,3.2,8.1 -2022-04-11T03:00,33.9,34,8.5,0,0,4.7,8.1 -2022-04-11T04:00,30.7,43,10.7,0,0,3.4,7.6 -2022-04-11T05:00,28.7,52,13.2,0,0,2.3,5.8 -2022-04-11T06:00,29.2,54,14.8,0,0,1.4,3.4 -2022-04-11T07:00,32.7,47,14.6,0,0,4.9,10.1 -2022-04-11T08:00,36.7,38,13.3,0,0,3.6,10.5 -2022-04-11T09:00,43.2,34,16.4,0,0,3.2,10.3 -2022-04-11T10:00,52.5,27,19.1,0,0,5.1,13.4 -2022-04-11T11:00,59.2,17,13.8,0,0,8.3,17 -2022-04-11T12:00,61.5,15,13.8,0,0,15.7,28.2 -2022-04-11T13:00,64,14,14.4,0,0,17,30.4 -2022-04-11T14:00,64.7,12,11.7,0,0,16.8,30.4 -2022-04-11T15:00,65.4,13,12.8,0,0,17.7,32 -2022-04-11T16:00,65.6,14,14.3,0,0,17.6,32.2 -2022-04-11T17:00,65.1,18,20.8,0,0,3,29.5 -2022-04-11T18:00,59.4,28,26.1,0,0,5.7,10.1 -2022-04-11T19:00,55.3,35,28,0,0,3.3,9.6 -2022-04-11T20:00,49.5,45,29.2,0,0,5,5.6 -2022-04-11T21:00,48.7,45,28.1,0,0,1.3,5.6 -2022-04-11T22:00,43.5,57,29.5,0,0,3.3,4.9 -2022-04-11T23:00,45.8,46,26.2,0,0,5.9,8.5 -2022-04-12T00:00,51.4,32,22.3,0,0,12,19.2 -2022-04-12T01:00,51.8,33,23.3,0,0,13.5,21.9 -2022-04-12T02:00,51.7,35,24.6,0,0,13.9,22.6 -2022-04-12T03:00,52.7,33,24.7,0,0,16.2,26.2 -2022-04-12T04:00,53.5,31,23.9,0,0,18.4,29.5 -2022-04-12T05:00,43,52,26.4,0,0,7.4,30.4 -2022-04-12T06:00,45.8,54,30,0,0,5.1,10.1 -2022-04-12T07:00,46.3,45,25.9,0,0,13.9,21.5 -2022-04-12T08:00,47.2,36,21.3,0.008,0.083,13.7,25.9 -2022-04-12T09:00,46.9,31,17.6,0.004,0,9,23.9 -2022-04-12T10:00,48.9,27,16.4,0,0,6.3,16.1 -2022-04-12T11:00,52.3,24,16.7,0,0,4.6,14.1 -2022-04-12T12:00,52.3,25,17.9,0,0,6.7,13 -2022-04-12T13:00,57.7,15,10.5,0.004,0,7.8,17 -2022-04-12T14:00,55.6,19,13.4,0,0,10.9,21.5 -2022-04-12T15:00,54.7,17,10,0,0,11.1,22.4 -2022-04-12T16:00,47.3,23,11.7,0,0,19.6,33.8 -2022-04-12T17:00,51.8,14,4.3,0,0,5.4,36.5 -2022-04-12T18:00,42.7,22,6.5,0,0,8.6,14.5 -2022-04-12T19:00,38.6,24,5,0,0.028,8.5,15.9 -2022-04-12T20:00,36.6,25,4.2,0,0,9.4,15.7 -2022-04-12T21:00,35,27,4.5,0,0,9.4,15.9 -2022-04-12T22:00,33.1,31,5.4,0,0,11.6,19 -2022-04-12T23:00,31,35,6.3,0,0,10.1,19 -2022-04-13T00:00,29.7,39,7.4,0,0,7,16.3 -2022-04-13T01:00,28,44,8.7,0,0,4.1,11.4 -2022-04-13T02:00,26.1,50,10,0,0,3.8,6.7 -2022-04-13T03:00,25.3,52,10,0,0,4.1,5.8 -2022-04-13T04:00,26.5,49,9.9,0,0,1.5,6.5 -2022-04-13T05:00,21.7,62,10.8,0,0,4.2,6.3 -2022-04-13T06:00,19.8,66,10.3,0,0,5.8,10.1 -2022-04-13T07:00,20.8,64,10.6,0,0,3.9,11.6 -2022-04-13T08:00,26.3,54,11.8,0,0,1.1,10.1 -2022-04-13T09:00,33.8,40,11.9,0,0,3,12.5 -2022-04-13T10:00,38.2,13,-8,0,0,11.9,22.4 -2022-04-13T11:00,39.3,12,-8.9,0,0,15.9,28.9 -2022-04-13T12:00,40.6,10,-10.9,0,0,18.2,32.4 -2022-04-13T13:00,39.7,12,-8.4,0,0,20.4,35.6 -2022-04-13T14:00,41.6,11,-8.3,0,0,19.5,35.8 -2022-04-13T15:00,42.1,9,-12.7,0,0,19,34.7 -2022-04-13T16:00,42.2,11,-9.3,0,0,15.4,33.8 -2022-04-13T17:00,38.4,18,-1.3,0,0,9.3,27.3 -2022-04-13T18:00,37.3,19,-0.8,0,0,6.5,17.4 -2022-04-13T19:00,34.2,27,3.6,0,0,3.5,11.4 -2022-04-13T20:00,33.8,30,5.3,0,0,6,9.6 -2022-04-13T21:00,32.1,35,7.4,0,0,7.8,13 -2022-04-13T22:00,30.2,40,8.8,0,0,6.8,13 -2022-04-13T23:00,29.4,43,9.6,0,0,7,11.9 -2022-04-14T00:00,29.6,40,8,0,0,8,13.2 -2022-04-14T01:00,26.7,47,9.1,0,0,4.2,13.2 -2022-04-14T02:00,24,61,12.6,0,0,3.8,6.7 -2022-04-14T03:00,23.5,60,11.6,0,0,5.7,8.9 -2022-04-14T04:00,24,54,9.6,0,0,4.9,8.7 -2022-04-14T05:00,24.4,52,9.2,0,0,3.6,8.7 -2022-04-14T06:00,26,50,10,0,0,2.8,5.4 -2022-04-14T07:00,33.1,38,10.5,0,0,4.3,8.7 -2022-04-14T08:00,40.2,28,9.4,0,0,2.5,8.9 -2022-04-14T09:00,46.2,20,7.6,0,0,6.8,14.1 -2022-04-14T10:00,49.9,18,8.2,0,0,12.5,23 -2022-04-14T11:00,52.6,18,10.2,0,0,13.2,25.9 -2022-04-14T12:00,55.2,16,9.4,0,0,13.6,25.1 -2022-04-14T13:00,57.1,13,7.1,0,0,17.3,30.6 -2022-04-14T14:00,58.2,13,8,0,0,18.6,33.6 -2022-04-14T15:00,58.2,11,3.9,0,0,16.8,33.1 -2022-04-14T16:00,57.2,11,3.6,0,0,13.8,29.5 -2022-04-14T17:00,55.2,13,5.1,0,0,11.9,24.6 -2022-04-14T18:00,52.3,17,8.5,0,0,5.4,20.1 -2022-04-14T19:00,50.5,18,8.2,0,0,2.1,8.9 -2022-04-14T20:00,39.7,35,13.9,0,0,6.9,8.1 -2022-04-14T21:00,38.5,37,14.5,0,0,4.9,8.5 -2022-04-14T22:00,36.6,41,15.1,0,0,4.3,6.9 -2022-04-14T23:00,34.1,46,15.5,0,0,4.4,6.9 -2022-04-15T00:00,32.7,50,16,0,0,4.7,6.5 -2022-04-15T01:00,35,43,14.9,0,0,4.7,7.4 -2022-04-15T02:00,37.3,36,13,0,0,5.1,8.3 -2022-04-15T03:00,39.6,31,11.4,0,0,7.4,11.6 -2022-04-15T04:00,40,31,12,0,0,7.9,12.5 -2022-04-15T05:00,39.9,35,14.5,0,0,6.9,12.5 -2022-04-15T06:00,40.6,41,18.5,0,0,8.7,13.9 -2022-04-15T07:00,46.4,40,23.5,0,0,4.8,13.9 -2022-04-15T08:00,50.6,36,24.6,0,0,7.1,12.5 -2022-04-15T09:00,46.9,31,18,0,0,15.7,27.5 -2022-04-15T10:00,50.1,31,20.6,0,0,10.6,27.7 -2022-04-15T11:00,54.9,30,23.6,0,0,8.1,20.8 -2022-04-15T12:00,58.2,27,24,0,0,8.3,17.7 -2022-04-15T13:00,61.3,23,22.9,0.004,0,4.9,18.3 -2022-04-15T14:00,61.8,23,24,0.004,0,8.1,17.2 -2022-04-15T15:00,61.7,21,21.3,0,0,8.8,18.1 -2022-04-15T16:00,61.6,21,21,0,0,11.3,20.1 -2022-04-15T17:00,59.6,22,20.8,0,0,7.5,20.4 -2022-04-15T18:00,53.4,43,31.4,0.02,0,6.5,13 -2022-04-15T19:00,48.8,37,23.8,0,0,4.9,9.8 -2022-04-15T20:00,44.7,37,19.8,0,0,5.4,7.8 -2022-04-15T21:00,41.2,42,20,0,0,7.5,13 -2022-04-15T22:00,38.8,46,19.9,0,0,6.3,11.9 -2022-04-15T23:00,34.9,56,20.9,0,0,5,10.3 -2022-04-16T00:00,34.7,56,20.5,0,0,4.2,6.5 -2022-04-16T01:00,37,47,18.9,0,0,2.6,4.7 -2022-04-16T02:00,34.4,53,19.1,0,0,3.4,3.8 -2022-04-16T03:00,34.5,52,18.7,0,0,1.6,4.3 -2022-04-16T04:00,29.1,68,19.9,0,0,5.5,6 -2022-04-16T05:00,28,70,19.5,0,0,6.5,7.2 -2022-04-16T06:00,26.8,75,19.9,0,0,6.8,11.2 -2022-04-16T07:00,28.9,69,20,0,0,5.7,11.9 -2022-04-16T08:00,32.7,59,19.9,0,0,6.2,14.3 -2022-04-16T09:00,36.3,52,20.3,0,0,5.5,14.3 -2022-04-16T10:00,39.6,47,21,0,0,4.8,14.3 -2022-04-16T11:00,42.2,44,21.8,0,0,4.6,13.9 -2022-04-16T12:00,47.5,39,23.5,0,0,4.8,14.1 -2022-04-16T13:00,51.5,35,24.6,0,0,5.6,15 -2022-04-16T14:00,54.8,31,24.9,0,0,5.8,15.4 -2022-04-16T15:00,56,30,24.7,0,0,6.3,14.8 -2022-04-16T16:00,55.1,31,25.3,0,0,10.2,17.9 -2022-04-16T17:00,57.7,27,23.7,0,0,4.6,19.7 -2022-04-16T18:00,55.9,39,31.3,0.004,0,2.6,10.5 -2022-04-16T19:00,47.9,46,28.1,0,0,4.8,5.8 -2022-04-16T20:00,45.7,53,29.8,0,0,3.7,6.9 -2022-04-16T21:00,43.2,58,29.5,0,0,3.6,8.1 -2022-04-16T22:00,43.5,57,29.5,0,0,5.6,7.4 -2022-04-16T23:00,41.7,57,27.4,0,0,1.4,11.2 -2022-04-17T00:00,43.3,57,28.9,0,0,3.6,8.5 -2022-04-17T01:00,38.6,70,29.7,0,0,4.8,5.4 -2022-04-17T02:00,37.1,67,27.3,0,0,3.2,6.3 -2022-04-17T03:00,36.6,71,28,0,0,3.5,5.1 -2022-04-17T04:00,34.6,76,27.8,0,0,6.3,9.6 -2022-04-17T05:00,32.5,87,28.9,0,0,2.2,9.8 -2022-04-17T06:00,32.6,87,29.2,0,0,3.2,4.5 -2022-04-17T07:00,38.8,71,30,0,0,3.5,7.4 -2022-04-17T08:00,48.4,48,29.5,0,0,5.7,12.5 -2022-04-17T09:00,56.4,31,26.2,0,0,6.6,13.9 -2022-04-17T10:00,60.1,29,27.7,0,0,3.4,15 -2022-04-17T11:00,64.3,20,22,0,0,7.4,16.1 -2022-04-17T12:00,66.6,16,18.3,0,0,12.7,24.2 -2022-04-17T13:00,66.8,16,19.4,0,0,14.1,27.5 -2022-04-17T14:00,66.7,17,20,0,0,14.8,27.3 -2022-04-17T15:00,65.7,18,21.5,0,0,15.1,28 -2022-04-17T16:00,64.3,20,22,0,0,13.2,27.3 -2022-04-17T17:00,62.1,24,24.5,0,0,10.3,23.7 -2022-04-17T18:00,58.9,29,26.9,0,0,6.4,17.4 -2022-04-17T19:00,53.2,41,29.8,0,0,12.8,19.9 -2022-04-17T20:00,51.5,42,29.3,0,0,13,22.8 -2022-04-17T21:00,49.6,43,28,0,0,9.5,20.8 -2022-04-17T22:00,46,40,23,0,0,8.1,15 -2022-04-17T23:00,45.1,40,22.4,0,0,7.1,12.8 -2022-04-18T00:00,43.6,44,23.3,0,0,10.5,17.4 -2022-04-18T01:00,40.7,43,20.2,0,0,6.5,17 -2022-04-18T02:00,37.5,49,20,0,0,7.2,11.4 -2022-04-18T03:00,34.8,55,20.2,0,0,5.6,11.6 -2022-04-18T04:00,32.4,61,20.6,0,0,3.8,8.9 -2022-04-18T05:00,30,62,18.4,0,0,3.6,6 -2022-04-18T06:00,30.8,58,17.6,0,0,5.3,6.5 -2022-04-18T07:00,32.7,54,17.7,0,0,6.5,13 -2022-04-18T08:00,34.9,49,17.9,0,0,4.8,13.6 -2022-04-18T09:00,37.6,47,19.2,0,0,2.7,12.5 -2022-04-18T10:00,41.8,46,22.5,0,0,3.2,11.9 -2022-04-18T11:00,46.7,42,24.7,0,0,4.3,13.4 -2022-04-18T12:00,50.9,38,26,0,0,5.4,15.2 -2022-04-18T13:00,54.9,34,27,0,0,6.6,16.3 -2022-04-18T14:00,57.6,31,27.3,0,0,8.3,18.3 -2022-04-18T15:00,58.9,29,26.8,0,0,9.2,19.5 -2022-04-18T16:00,59.5,28,26.6,0,0,6.8,19.2 -2022-04-18T17:00,55.1,34,27,0,0,4,14.8 -2022-04-18T18:00,53,36,27,0,0,3.5,9.4 -2022-04-18T19:00,49.2,47,29.6,0,0,3.2,6 -2022-04-18T20:00,47.5,51,30.1,0,0,4.6,5.1 -2022-04-18T21:00,46.1,49,27.9,0,0,5.1,8.9 -2022-04-18T22:00,42.9,57,28.9,0,0,5.4,7.8 -2022-04-18T23:00,41,64,29.8,0,0,4.2,6.9 -2022-04-19T00:00,38.9,72,30.7,0,0,2.8,6.5 -2022-04-19T01:00,37,76,30,0,0,3.7,5.6 -2022-04-19T02:00,36.5,72,28.5,0,0,4.7,6.3 -2022-04-19T03:00,37.4,67,27.5,0,0,0.9,6.3 -2022-04-19T04:00,36.3,70,27.6,0,0,3.1,3.4 -2022-04-19T05:00,33.8,79,28,0,0,3.5,5.6 -2022-04-19T06:00,34.6,76,28,0,0,5.1,7.2 -2022-04-19T07:00,42.4,56,27.9,0,0,3.4,8.9 -2022-04-19T08:00,53.4,41,30.1,0,0,2,7.6 -2022-04-19T09:00,64.5,29,31.6,0,0,2.5,8.1 -2022-04-19T10:00,72.2,11,15.6,0,0,7.9,16.8 -2022-04-19T11:00,73.3,12,17.4,0,0,5.3,16.6 -2022-04-19T12:00,75.6,12,19.2,0,0,5.4,14.1 -2022-04-19T13:00,77.9,10,17.9,0,0,3.2,14.1 -2022-04-19T14:00,78,11,18.3,0,0,6.3,12.8 -2022-04-19T15:00,78.8,11,20,0,0,12.6,22.8 -2022-04-19T16:00,78,10,16.2,0,0,10.9,23.3 -2022-04-19T17:00,77.1,13,22,0,0,4.5,19.7 -2022-04-19T18:00,73.1,16,24.6,0,0,3.4,7.8 -2022-04-19T19:00,67,21,25.3,0,0,3,4.5 -2022-04-19T20:00,58.7,29,26.5,0,0,2.3,3.4 -2022-04-19T21:00,52.1,35,25.4,0,0,2.8,5.1 -2022-04-19T22:00,50.3,37,25.2,0,0,5.9,8.3 -2022-04-19T23:00,47.5,40,24.3,0,0,5.7,10.7 -2022-04-20T00:00,50.5,39,26.7,0,0,18.8,28 -2022-04-20T01:00,51.2,40,27.9,0,0,12.5,31.8 -2022-04-20T02:00,47.3,48,28.7,0,0,4.8,20.4 -2022-04-20T03:00,45,54,29.1,0,0,4.4,7.6 -2022-04-20T04:00,41.5,64,30.1,0,0,4.3,7.4 -2022-04-20T05:00,42.7,54,27.1,0,0,5.2,6.3 -2022-04-20T06:00,43.1,58,29.1,0,0,3.8,8.3 -2022-04-20T07:00,48.1,45,27.8,0,0,8.3,14.1 -2022-04-20T08:00,52.4,37,26.9,0,0,6.8,15.9 -2022-04-20T09:00,56.6,32,27.1,0,0,6.6,15.2 -2022-04-20T10:00,59.7,29,27.7,0,0,4.8,15 -2022-04-20T11:00,63.1,26,28,0,0,7.2,16.3 -2022-04-20T12:00,65.8,24,28,0,0,8.1,17.7 -2022-04-20T13:00,68.4,22,28.3,0,0,8.3,18.3 -2022-04-20T14:00,70.3,22,29.2,0,0,9.4,18.8 -2022-04-20T15:00,69.7,22,29.7,0,0,13.2,23.9 -2022-04-20T16:00,67.8,22,27.8,0,0,13.9,26.4 -2022-04-20T17:00,70,17,23.6,0,0,12.1,23.9 -2022-04-20T18:00,65.5,20,23,0,0,10.7,21.3 -2022-04-20T19:00,58.1,26,23.3,0,0,6.7,16.3 -2022-04-20T20:00,57.1,26,22.3,0,0,7.2,11.6 -2022-04-20T21:00,52.1,35,25.3,0,0,4.1,11 -2022-04-20T22:00,54.4,32,25.3,0,0,3.8,7.4 -2022-04-20T23:00,49.4,42,27.3,0,0,3.7,4.5 -2022-04-21T00:00,48.2,44,27.5,0,0,9.3,13.4 -2022-04-21T01:00,46,46,26.2,0,0,4.7,15.7 -2022-04-21T02:00,48.5,41,25.6,0,0,3.1,8.3 -2022-04-21T03:00,42,56,27.2,0,0,3.7,4.9 -2022-04-21T04:00,39.6,61,27.3,0,0,4.5,5.4 -2022-04-21T05:00,39.7,63,28.1,0,0,2,5.6 -2022-04-21T06:00,41.5,63,29.8,0,0,0.9,3.4 -2022-04-21T07:00,47.7,52,30.9,0,0,0.5,5.1 -2022-04-21T08:00,53.5,45,32.6,0,0,3.3,9.6 -2022-04-21T09:00,58.6,39,33.4,0,0,1.6,9.6 -2022-04-21T10:00,63.4,34,34.3,0,0,5,13.2 -2022-04-21T11:00,68.3,30,35.3,0,0,6.1,15.7 -2022-04-21T12:00,72.1,27,36.5,0,0,7.9,18.1 -2022-04-21T13:00,75.6,25,37.2,0,0,5.6,18.8 -2022-04-21T14:00,80.3,14,27.2,0,0,2.3,16.8 -2022-04-21T15:00,82,10,20.9,0,0,13.7,22.8 -2022-04-21T16:00,80.1,10,18.1,0,0,18.4,31.3 -2022-04-21T17:00,77.4,21,34,0,0,9.6,32.2 -2022-04-21T18:00,71.9,35,42.8,0,0,2.9,15.4 -2022-04-21T19:00,65.5,28,31.9,0,0,5.6,8.5 -2022-04-21T20:00,61.6,31,30.8,0,0,7.4,11.9 -2022-04-21T21:00,60.1,34,31.4,0,0,8.7,13.2 -2022-04-21T22:00,58.7,32,29.3,0,0,10.4,17 -2022-04-21T23:00,56.2,33,27.8,0,0,9.5,17 -2022-04-22T00:00,53.8,34,26.2,0,0,9.7,15.9 -2022-04-22T01:00,51.3,36,25,0,0,8.3,15.7 -2022-04-22T02:00,49.5,35,23.1,0,0,8,13.2 -2022-04-22T03:00,48.3,37,23.1,0,0,7.3,13.2 -2022-04-22T04:00,48.9,36,22.8,0,0,7.8,12.5 -2022-04-22T05:00,51.6,30,20.8,0,0,9.2,13.4 -2022-04-22T06:00,51.6,33,23.1,0,0,9.4,15 -2022-04-22T07:00,58.1,30,26.6,0,0,9.7,15.2 -2022-04-22T08:00,67.9,21,26.3,0,0,10.8,18.1 -2022-04-22T09:00,72.4,14,21.3,0,0,14.1,25.1 -2022-04-22T10:00,76,12,19.3,0,0,15.4,27.5 -2022-04-22T11:00,78.4,11,19.3,0,0,15.6,29.5 -2022-04-22T12:00,79.9,10,18,0,0,17,30 -2022-04-22T13:00,81.2,10,19.1,0,0,14.4,31.5 -2022-04-22T14:00,83.3,9,19.8,0,0,14.4,26.4 -2022-04-22T15:00,81.8,7,10.7,0,0,23.2,39.8 -2022-04-22T16:00,79.3,8,13.6,0,0,22.2,39.8 -2022-04-22T17:00,76.9,7,8.7,0,0,21.5,44.7 -2022-04-22T18:00,70.6,12,15.8,0,0,18.4,35.3 -2022-04-22T19:00,63.8,20,21.7,0,0,12.3,30.4 -2022-04-22T20:00,55.2,35,27.7,0,0,17.9,33.1 -2022-04-22T21:00,55,26,20.9,0,0,6.8,29.1 -2022-04-22T22:00,54.5,27,21.5,0,0,4.6,11.2 -2022-04-22T23:00,52,32,22.8,0,0,2.7,7.4 -2022-04-23T00:00,51,33,22.8,0,0,0.5,5.1 -2022-04-23T01:00,48.4,41,25.6,0,0,2.1,2.9 -2022-04-23T02:00,47.4,40,24.4,0,0,2.7,5.6 -2022-04-23T03:00,47.7,37,22.6,0,0,3.2,5.4 -2022-04-23T04:00,45,36,19.6,0,0,9,11.9 -2022-04-23T05:00,45.5,42,23.5,0,0,8.1,25.9 -2022-04-23T06:00,46.6,39,23,0,0,7.8,12.8 -2022-04-23T07:00,50.4,36,24.6,0,0,7.3,13 -2022-04-23T08:00,52.2,31,22.1,0,0,3.9,12.3 -2022-04-23T09:00,54.5,25,19.6,0,0,12.2,23.3 -2022-04-23T10:00,54.7,26,20.2,0,0,7.6,27.1 -2022-04-23T11:00,56.8,22,18.2,0,0,8.8,17.9 -2022-04-23T12:00,57.4,20,16.6,0,0,16.8,30.9 -2022-04-23T13:00,58.5,18,15.5,0,0,15.5,31.5 -2022-04-23T14:00,58.4,20,16.9,0,0,11.5,31.1 -2022-04-23T15:00,59,17,13.9,0,0,13,25.1 -2022-04-23T16:00,57.3,18,14.3,0,0,10.3,25.1 -2022-04-23T17:00,54.7,21,15.4,0,0,6.4,19.9 -2022-04-23T18:00,53.3,22,15.7,0,0,4.9,12.3 -2022-04-23T19:00,49.6,28,17.7,0,0,5.3,9.2 -2022-04-23T20:00,47.6,31,18.1,0,0,11.3,18.8 -2022-04-23T21:00,45.7,34,19.2,0,0,6.3,18.3 -2022-04-23T22:00,43.1,40,20.6,0,0,5.5,10.3 -2022-04-23T23:00,46.3,36,20.5,0,0,4,7.6 -2022-04-24T00:00,45.6,37,20.8,0,0,1.1,5.1 -2022-04-24T01:00,41.5,46,22.4,0,0,3.8,5.6 -2022-04-24T02:00,40,49,22.6,0,0,4.3,6.3 -2022-04-24T03:00,39.4,51,22.6,0,0,4.6,6.7 -2022-04-24T04:00,38.4,53,22.6,0,0,5,7.4 -2022-04-24T05:00,39.1,57,25.3,0,0,3.4,7.4 -2022-04-24T06:00,39,55,24.4,0,0,5.8,8.1 -2022-04-24T07:00,41.5,48,23.5,0,0,1.8,9.2 -2022-04-24T08:00,43.5,46,24.1,0,0,2.2,7.6 -2022-04-24T09:00,44.3,47,25.3,0,0,5.2,11.9 -2022-04-24T10:00,48.2,42,25.9,0,0,4.5,14.1 -2022-04-24T11:00,49.5,39,25.3,0,0,3.4,13.6 -2022-04-24T12:00,51.4,31,21.6,0,0,3.5,12.5 -2022-04-24T13:00,54.9,27,21.6,0,0,8.6,18.1 -2022-04-24T14:00,53.9,28,21.3,0,0,11.5,22.6 -2022-04-24T15:00,53.3,27,20.6,0,0,9.7,22.6 -2022-04-24T16:00,53.4,26,19.3,0,0,10.4,19 -2022-04-24T17:00,49.9,31,20.6,0,0,11.2,21 -2022-04-24T18:00,46.6,45,26.2,0,0,13,22.1 -2022-04-24T19:00,42.8,64,31.5,0.004,0,10,22.6 -2022-04-24T20:00,42.2,66,31.6,0.008,0,5.3,17 -2022-04-24T21:00,41.3,62,29.3,0.008,0,2.1,9.4 -2022-04-24T22:00,40.6,69,31.2,0,0,3.7,6.7 -2022-04-24T23:00,39.3,83,34.5,0,0,3.2,7.2 -2022-04-25T00:00,35.3,94,33.9,0.004,0,3.3,5.6 -2022-04-25T01:00,34.1,97,33.4,0.004,0,3.3,4.9 -2022-04-25T02:00,33.9,93,32,0.008,0,2.8,4.7 -2022-04-25T03:00,34.7,73,27.1,0,0.028,6.1,9.4 -2022-04-25T04:00,35.2,63,24,0,0,5.9,10.5 -2022-04-25T05:00,35.5,32,8.6,0,0.028,6,8.7 -2022-04-25T06:00,35.9,38,12.5,0,0.028,5.6,10.1 -2022-04-25T07:00,37.9,40,15.4,0,0,4.7,10.3 -2022-04-25T08:00,40.8,37,16.3,0,0,4.2,11.4 -2022-04-25T09:00,43.8,33,16.3,0,0,3.8,12.1 -2022-04-25T10:00,47.1,30,16.9,0,0,4.1,13 -2022-04-25T11:00,50.5,26,17.2,0,0,5.5,14.8 -2022-04-25T12:00,53.1,24,17.4,0,0,7.3,17.7 -2022-04-25T13:00,54.8,23,17.7,0,0,8.3,18.6 -2022-04-25T14:00,55.3,23,17.8,0,0,8,18.8 -2022-04-25T15:00,55.8,22,17.5,0,0,7.5,17.9 -2022-04-25T16:00,55.5,22,16.9,0,0,7,16.6 -2022-04-25T17:00,53.4,26,19.3,0,0,2.7,15.2 -2022-04-25T18:00,52.3,27,19.4,0,0,3.4,8.3 -2022-04-25T19:00,47.7,38,23.5,0,0,4.7,6.7 -2022-04-25T20:00,47.9,38,23.5,0,0,2.7,5.6 -2022-04-25T21:00,45.9,42,24,0,0,2.9,3.4 -2022-04-25T22:00,41.6,53,25.8,0,0,3.4,5.8 -2022-04-25T23:00,38.9,61,26.8,0,0,3.5,6.3 -2022-04-26T00:00,36.2,69,27.1,0,0,3.1,5.8 -2022-04-26T01:00,35.6,68,26.2,0,0,4.4,7.4 -2022-04-26T02:00,34.6,65,23.9,0,0,6,9.4 -2022-04-26T03:00,33.6,60,21.4,0,0,5.9,10.1 -2022-04-26T04:00,32.1,61,20.3,0,0,4.6,9.4 -2022-04-26T05:00,32.3,62,20.7,0,0,3.2,7.2 -2022-04-26T06:00,34.7,54,19.6,0,0,4,6.7 -2022-04-26T07:00,41,45,21.5,0,0,1.6,7.6 -2022-04-26T08:00,48.6,36,22.8,0,0,1,6.9 -2022-04-26T09:00,55.8,27,22,0,0,2.9,9.6 -2022-04-26T10:00,61.6,19,19,0,0,6.5,14.8 -2022-04-26T11:00,66.4,14,16.2,0,0,8.1,17.4 -2022-04-26T12:00,69.5,11,13.5,0,0,8.5,17.9 -2022-04-26T13:00,70.5,10,11.6,0,0,9.6,18.8 -2022-04-26T14:00,72,11,15.5,0,0,9.2,19.5 -2022-04-26T15:00,73.4,12,17.1,0,0,7,18.6 -2022-04-26T16:00,73.9,12,18.3,0,0,3.5,15.2 -2022-04-26T17:00,69.4,11,12.4,0,0,14.4,9.4 -2022-04-26T18:00,66.1,14,16.3,0,0,6,23.9 -2022-04-26T19:00,60.4,21,20,0,0,5.4,9.2 -2022-04-26T20:00,53.3,30,22.6,0,0,3.9,9.2 -2022-04-26T21:00,50.4,37,24.8,0,0,4.1,6.7 -2022-04-26T22:00,47.5,42,25.6,0,0,4.8,7.6 -2022-04-26T23:00,47,41,24.8,0,0,5.5,8.7 -2022-04-27T00:00,44.5,46,25.1,0,0,4.2,8.7 -2022-04-27T01:00,42.6,49,24.8,0,0,4.3,7.8 -2022-04-27T02:00,41.5,51,24.5,0,0,3.7,6.9 -2022-04-27T03:00,41.9,48,23.8,0,0,4.3,6.7 -2022-04-27T04:00,41.6,49,24,0,0,4.4,6.9 -2022-04-27T05:00,41.2,49,23.3,0,0,4.1,6.9 -2022-04-27T06:00,43.7,51,26.6,0,0,2,6.3 -2022-04-27T07:00,47.1,48,28.5,0,0,2.1,7.6 -2022-04-27T08:00,52.7,39,28.4,0,0,0.9,6.5 -2022-04-27T09:00,57.6,30,26.5,0,0,0.5,6.3 -2022-04-27T10:00,64,23,25.3,0,0,5.2,12.8 -2022-04-27T11:00,68.5,18,23.8,0,0,7,16.6 -2022-04-27T12:00,70.8,17,24.2,0,0,8,17.4 -2022-04-27T13:00,73.4,16,24.6,0,0,9.1,19.2 -2022-04-27T14:00,76.6,14,23.7,0,0,8.8,19.2 -2022-04-27T15:00,65.2,43,42.1,0,0,11.1,19.5 -2022-04-27T16:00,65.7,38,39.4,0,0,4,19.5 -2022-04-27T17:00,68.1,31,36.1,0,0,7.2,10.3 -2022-04-27T18:00,67.1,29,34.1,0,0,6.5,12.5 -2022-04-27T19:00,61.7,35,33.9,0,0,6.8,13.4 -2022-04-27T20:00,55.8,45,34.8,0,0,4.8,10.7 -2022-04-27T21:00,53.7,54,37.7,0,0,4,11.2 -2022-04-27T22:00,50.5,61,37.4,0,0,5.5,8.7 -2022-04-27T23:00,48.4,57,33.9,0,0,5.8,9.4 -2022-04-28T00:00,47,50,29.4,0,0,5.2,9.4 -2022-04-28T01:00,47,46,27.1,0,0,5.9,9.4 -2022-04-28T02:00,45.3,50,28,0,0,6.5,9.2 -2022-04-28T03:00,41.9,63,30.4,0,0,4,11.9 -2022-04-28T04:00,40.8,63,29.3,0,0,5.4,6.7 -2022-04-28T05:00,42.8,53,27,0,0,5.4,6.7 -2022-04-28T06:00,44.9,51,27.7,0,0,4.5,7.4 -2022-04-28T07:00,52,43,30.4,0,0,4.2,9.6 -2022-04-28T08:00,61,31,29.8,0,0,1.8,8.9 -2022-04-28T09:00,64.9,23,25.9,0,0,2.1,8.3 -2022-04-28T10:00,67.4,21,26.2,0,0,6.3,14.8 -2022-04-28T11:00,69.4,21,27.3,0,0,5.2,15.7 -2022-04-28T12:00,71.3,19,27.1,0,0,3.3,14.1 -2022-04-28T13:00,72.7,17,25.5,0,0,4.2,12.3 -2022-04-28T14:00,74.6,16,24.7,0,0,4.8,13.4 -2022-04-28T15:00,75.7,14,22.3,0,0,5,13.6 -2022-04-28T16:00,75.7,11,18.1,0,0,5.2,12.1 -2022-04-28T17:00,70.9,21,28.8,0,0,14.1,10.3 -2022-04-28T18:00,68.4,24,30.2,0,0,8.5,23 -2022-04-28T19:00,63.6,33,33.6,0,0,10.3,17.7 -2022-04-28T20:00,61.3,31,30.1,0,0,7,16.3 -2022-04-28T21:00,57.9,34,29.8,0,0,5.1,11.2 -2022-04-28T22:00,55.4,37,29.4,0,0,4.7,8.5 -2022-04-28T23:00,52.4,43,30.6,0,0,3.4,9.6 -2022-04-29T00:00,49.7,45,29.5,0,0,4.5,8.1 -2022-04-29T01:00,46.9,52,30.4,0,0,4.8,7.4 -2022-04-29T02:00,45.2,55,30,0,0,4.1,9.6 -2022-04-29T03:00,45.1,54,29.2,0,0,2.8,6.5 -2022-04-29T04:00,41.8,60,28.9,0,0,3.6,6.3 -2022-04-29T05:00,41.1,50,24,0,0,4.4,7.4 -2022-04-29T06:00,44.7,42,22.8,0,0,5.3,8.3 -2022-04-29T07:00,52.4,36,26.2,0,0,3.1,8.9 -2022-04-29T08:00,61.4,28,27.9,0,0,0.8,7.8 -2022-04-29T09:00,65.6,12,12.4,0.004,0,5.7,12.3 -2022-04-29T10:00,63.5,17,18.4,0,0,17.4,30.4 -2022-04-29T11:00,63,17,17,0,0,19.5,34.4 -2022-04-29T12:00,57.5,23,20,0,0,24.2,41.8 -2022-04-29T13:00,58,17,13,0,0,21.1,41.4 -2022-04-29T14:00,59.4,16,13.6,0,0,18.2,37.1 -2022-04-29T15:00,59.4,13,7.9,0,0,16.9,32.9 -2022-04-29T16:00,58.9,13,8.5,0,0,13.7,30.6 -2022-04-29T17:00,54.4,19,12.7,0,0,20.7,25.1 -2022-04-29T18:00,51.7,24,15.9,0,0,19.2,34.7 -2022-04-29T19:00,49.1,29,17.8,0,0,17.8,31.5 -2022-04-29T20:00,48.3,30,18,0,0,14.3,29.1 -2022-04-29T21:00,47.3,31,18.3,0,0,8.2,23.5 -2022-04-29T22:00,44.4,38,20.3,0,0,4.5,13.4 -2022-04-29T23:00,46.5,36,21.1,0,0,3.8,7.8 -2022-04-30T00:00,41.1,46,21.8,0,0,2.6,4.9 -2022-04-30T01:00,40.6,47,21.8,0,0,3.8,6.3 -2022-04-30T02:00,41.2,45,21.2,0,0,6,9.4 -2022-04-30T03:00,41.9,42,20.4,0,0,7.8,12.8 -2022-04-30T04:00,42.4,41,20.6,0,0,8.1,13.6 -2022-04-30T05:00,40.7,45,21,0,0,5.2,13 -2022-04-30T06:00,42.6,52,26.2,0,0,2.7,8.1 -2022-04-30T07:00,46.9,41,24.3,0,0,3.2,7.8 -2022-04-30T08:00,49.6,36,24,0,0,5.1,12.5 -2022-04-30T09:00,51.5,33,23.6,0,0,3.6,12.5 -2022-04-30T10:00,53.2,32,24,0,0,3.5,12.3 -2022-04-30T11:00,54.9,30,24,0,0,3.8,13.2 -2022-04-30T12:00,57.4,27,23.5,0,0,3.2,13.2 -2022-04-30T13:00,60.4,23,22.9,0,0,4.3,13.6 -2022-04-30T14:00,62.6,21,22.4,0,0,4.8,14.1 -2022-04-30T15:00,64.2,20,22.1,0,0,5.1,13.9 -2022-04-30T16:00,64.4,19,21.7,0,0,7,15 -2022-04-30T17:00,63.6,18,19.1,0,0,6,16.6 -2022-04-30T18:00,62.1,19,18.9,0,0,6.7,11.6 -2022-04-30T19:00,56.7,23,19.3,0,0,8.9,14.3 -2022-04-30T20:00,53.2,26,18.8,0,0,5.7,14.3 -2022-04-30T21:00,50.7,30,20.3,0,0,6.1,8.7 -2022-04-30T22:00,48.2,31,19.2,0,0,5,8.7 -2022-04-30T23:00,44.3,41,21.9,0,0,6.2,8.3 -2022-05-01T00:00,42.6,44,22.4,0,0,3.6,7.4 -2022-05-01T01:00,42.1,46,22.7,0,0,3.6,5.4 -2022-05-01T02:00,40.4,51,23.6,0,0,4.5,5.8 -2022-05-01T03:00,39.5,54,24,0,0,5.1,6.3 -2022-05-01T04:00,40.6,51,23.8,0,0,3.4,5.8 -2022-05-01T05:00,37.6,58,24.3,0,0,2.4,3.8 -2022-05-01T06:00,38.8,58,25.3,0,0,3.1,5.6 -2022-05-01T07:00,43.2,46,24,0,0,2.6,7.8 -2022-05-01T08:00,46.5,41,24,0,0,1.5,8.3 -2022-05-01T09:00,49.2,37,24.3,0,0,2.1,9.8 -2022-05-01T10:00,52.5,34,25.2,0,0,4.8,13.2 -2022-05-01T11:00,56.5,31,26.2,0,0,6.9,16.8 -2022-05-01T12:00,58.9,29,26.8,0,0,9.4,20.1 -2022-05-01T13:00,61.3,27,27.3,0,0,11.7,23.3 -2022-05-01T14:00,63.7,26,28.6,0,0,14.6,27.1 -2022-05-01T15:00,63.4,27,28.7,0,0,16.8,30.2 -2022-05-01T16:00,61.9,27,28,0,0,14.2,30.2 -2022-05-01T17:00,60.2,31,29.1,0,0,16.3,25.3 -2022-05-01T18:00,57.7,35,30.2,0,0,13.4,27.7 -2022-05-01T19:00,54.3,43,32.4,0,0,11.9,21.9 -2022-05-01T20:00,53.2,48,34,0,0,11.5,19.7 -2022-05-01T21:00,49.5,69,39.7,0,0,11,18.6 -2022-05-01T22:00,46.2,70,37.1,0,0,8.7,18.6 -2022-05-01T23:00,45.2,79,39.2,0.063,0,8.3,14.1 -2022-05-02T00:00,43.3,89,40.2,0.02,0,9.1,15.2 -2022-05-02T01:00,41.5,91,39,0.016,0,8.6,15.2 -2022-05-02T02:00,40.5,88,37.2,0.004,0,9.1,15.7 -2022-05-02T03:00,37.5,99,37.3,0.043,0.028,10.9,17.9 -2022-05-02T04:00,37.9,95,36.6,0.008,0,7.7,19 -2022-05-02T05:00,36.8,97,36,0.016,0,9.9,15.2 -2022-05-02T06:00,35.2,100,35.2,0.024,0,10.4,18.8 -2022-05-02T07:00,34.8,99,34.6,0.02,0.028,11.8,19.7 -2022-05-02T08:00,35.2,93,33.4,0.008,0,12.2,21.3 -2022-05-02T09:00,35.9,90,33.3,0.008,0,11.6,21 -2022-05-02T10:00,39.2,77,32.7,0.004,0,11.9,21.5 -2022-05-02T11:00,41.5,70,32.3,0.004,0,11.7,21.5 -2022-05-02T12:00,43.2,64,31.8,0,0,10.7,21.5 -2022-05-02T13:00,44.4,61,31.6,0,0,9.4,20.4 -2022-05-02T14:00,44.1,62,31.9,0,0,8.5,18.8 -2022-05-02T15:00,44.1,62,31.7,0,0,6.6,17.2 -2022-05-02T16:00,44.6,60,31.6,0,0,5.9,14.3 -2022-05-02T17:00,43.2,62,31,0,0,4.5,13 -2022-05-02T18:00,42.6,63,30.8,0,0,1,10.1 -2022-05-02T19:00,41.5,66,31,0,0,2.5,6.3 -2022-05-02T20:00,40.9,68,31.3,0,0,0.5,5.6 -2022-05-02T21:00,39.7,73,31.7,0,0,2.8,3.8 -2022-05-02T22:00,37.4,80,31.9,0,0,2.9,4.3 -2022-05-02T23:00,35.7,86,31.8,0,0,3.1,4.7 -2022-05-03T00:00,34.7,88,31.6,0,0,2.2,4.9 -2022-05-03T01:00,33.1,93,31.3,0,0,3.4,3.8 -2022-05-03T02:00,33.2,92,31.2,0,0,2.9,4.7 -2022-05-03T03:00,33.5,91,31.2,0,0,1.4,3.4 -2022-05-03T04:00,32.2,95,30.8,0,0,1.8,2 -2022-05-03T05:00,33.4,96,32.5,0,0,3.3,4.5 -2022-05-03T06:00,33.7,98,33.3,0,0,1.6,7.2 -2022-05-03T07:00,35,97,34.2,0,0,1.8,6.9 -2022-05-03T08:00,38.4,83,33.8,0,0,2.5,8.5 -2022-05-03T09:00,41.4,76,34.4,0,0,4,11.2 -2022-05-03T10:00,46,62,33.8,0,0,5.2,14.1 -2022-05-03T11:00,49.6,57,35,0,0,5.5,14.8 -2022-05-03T12:00,53.5,51,35.8,0,0,6.7,16.3 -2022-05-03T13:00,56.7,47,36.7,0,0,7.1,16.8 -2022-05-03T14:00,58.7,45,37.2,0,0,9.4,19.5 -2022-05-03T15:00,59.1,44,37.1,0,0,11.2,21.9 -2022-05-03T16:00,58.6,46,37.8,0,0,10,21.7 -2022-05-03T17:00,53.4,56,38,0,0,7.6,19 -2022-05-03T18:00,52.7,58,38.3,0,0,4.5,14.1 -2022-05-03T19:00,49.7,70,40.2,0.016,0,3.2,9.6 -2022-05-03T20:00,47.7,79,41.6,0.012,0,5.8,9.4 -2022-05-03T21:00,46.8,83,41.8,0.004,0,4.7,9.2 -2022-05-03T22:00,46.2,86,42.3,0.004,0,5.7,10.1 -2022-05-03T23:00,45.6,86,41.7,0,0,7.5,11.9 -2022-05-04T00:00,44.8,87,41.1,0,0,10,15.4 -2022-05-04T01:00,43,94,41.4,0,0,7.4,15.9 -2022-05-04T02:00,43.3,93,41.4,0,0,9.2,14.5 -2022-05-04T03:00,43,93,41.1,0,0,8.2,15.2 -2022-05-04T04:00,42.7,93,40.7,0,0,7,13.9 -2022-05-04T05:00,40.8,95,39.5,0.008,0,7.2,11.9 -2022-05-04T06:00,40.3,98,39.8,0.091,0.248,7.6,12.5 -2022-05-04T07:00,39.1,97,38.4,0.091,0,12.7,21.3 -2022-05-04T08:00,40.1,96,38.9,0.079,0,11.3,21.5 -2022-05-04T09:00,38.9,96,37.9,0.071,0,9,19.7 -2022-05-04T10:00,41.1,90,38.3,0.051,0,9,16.6 -2022-05-04T11:00,43.3,82,38.2,0.035,0.028,7.8,16.1 -2022-05-04T12:00,45.9,76,38.8,0.008,0,8.1,15.9 -2022-05-04T13:00,47.9,69,38.1,0.004,0,7.2,16.1 -2022-05-04T14:00,50.5,61,37.3,0.004,0,7,15.4 -2022-05-04T15:00,51.6,58,37.1,0,0,7.2,14.8 -2022-05-04T16:00,50.6,58,36.4,0,0,7.8,15 -2022-05-04T17:00,45.7,82,40.6,0,0,2.1,14.8 -2022-05-04T18:00,46,82,41,0.012,0,4.7,13.2 -2022-05-04T19:00,44.3,90,41.5,0.031,0,3,12.1 -2022-05-04T20:00,43.5,90,40.7,0.008,0,4.7,7.6 -2022-05-04T21:00,41.5,95,40.3,0.102,0,2.4,11.2 -2022-05-04T22:00,41.1,91,38.8,0.083,0.055,0.3,5.8 -2022-05-04T23:00,40.8,96,39.7,0.004,0,4.4,7.2 -2022-05-05T00:00,40.6,95,39.3,0.008,0,3.6,8.3 -2022-05-05T01:00,40,94,38.4,0,0,2.9,6.3 -2022-05-05T02:00,35.3,98,34.7,0,0,3.4,6 -2022-05-05T03:00,35.2,98,34.5,0,0,2.2,4.5 -2022-05-05T04:00,34.7,97,34,0,0,4,6.7 -2022-05-05T05:00,35.5,93,33.7,0,0,2.9,6.9 -2022-05-05T06:00,37.9,93,36.1,0,0,5,8.1 -2022-05-05T07:00,43.6,88,40.2,0,0,4.5,9.4 -2022-05-05T08:00,49.7,64,38.2,0,0,5.1,11.9 -2022-05-05T09:00,54.1,53,37.6,0,0,1.6,11.9 -2022-05-05T10:00,58.2,44,36.3,0,0,4.7,12.1 -2022-05-05T11:00,61.3,39,35.8,0,0,8.5,18.3 -2022-05-05T12:00,64,34,35.1,0,0,7.6,18.3 -2022-05-05T13:00,65.4,33,35.5,0,0,10.5,20.8 -2022-05-05T14:00,65.3,33,35.8,0,0,9.7,21.5 -2022-05-05T15:00,66.4,30,33.9,0,0,7.4,19.2 -2022-05-05T16:00,66.7,28,33,0,0,7.1,15.4 -2022-05-05T17:00,66.3,32,35.4,0,0,7.5,13.9 -2022-05-05T18:00,62.5,43,39.5,0,0,5.9,13.9 -2022-05-05T19:00,61.3,39,36.2,0,0,3.7,9.2 -2022-05-05T20:00,53.7,54,37.4,0,0,4.3,6.5 -2022-05-05T21:00,49.4,60,36.2,0,0,5.1,8.3 -2022-05-05T22:00,47,61,34.3,0,0,4,8.1 -2022-05-05T23:00,44.8,64,33.2,0,0,4,6.3 -2022-05-06T00:00,42.6,67,32.5,0,0,4,6.5 -2022-05-06T01:00,41.2,72,32.8,0,0,4.9,6.5 -2022-05-06T02:00,40.8,69,31.3,0,0,4.4,5.8 -2022-05-06T03:00,40.3,70,31.1,0,0,5.2,6.3 -2022-05-06T04:00,41.8,64,30.7,0,0,3.1,6.5 -2022-05-06T05:00,43.4,59,30,0,0,4,6 -2022-05-06T06:00,46.4,56,31.4,0,0,4.5,7.6 -2022-05-06T07:00,52.8,50,34.6,0,0,3.2,7.8 -2022-05-06T08:00,61.2,42,37.7,0,0,4.3,9.8 -2022-05-06T09:00,68.2,32,37.2,0,0,5.5,12.3 -2022-05-06T10:00,72.4,28,37,0,0,0.8,12.3 -2022-05-06T11:00,74.4,20,31.2,0,0,1.3,7.6 -2022-05-06T12:00,76.5,20,32.1,0,0,7.7,15.2 -2022-05-06T13:00,77.1,19,32.1,0,0,12.5,22.6 -2022-05-06T14:00,78.3,18,30.9,0,0,10.5,22.8 -2022-05-06T15:00,80.2,16,29.4,0,0,9.9,19.7 -2022-05-06T16:00,78.2,18,30.6,0,0,11,21 -2022-05-06T17:00,78.4,23,37.4,0,0,7.3,19.2 -2022-05-06T18:00,71.8,38,44.7,0,0,4.3,12.1 -2022-05-06T19:00,62.9,45,41.2,0,0,7.3,8.3 -2022-05-06T20:00,61.4,42,38,0,0,4.8,8.7 -2022-05-06T21:00,56.6,48,37.2,0,0,4.7,5.8 -2022-05-06T22:00,54.8,51,37,0,0,3.4,5.6 -2022-05-06T23:00,51.8,52,34.5,0,0,4,6.3 -2022-05-07T00:00,49.1,53,32.5,0,0,4.3,7.4 -2022-05-07T01:00,46.1,60,33,0,0,6.2,7.6 -2022-05-07T02:00,47.3,55,31.8,0,0,4.6,7.4 -2022-05-07T03:00,45.7,57,31.1,0,0,5.6,7.4 -2022-05-07T04:00,46.9,49,28.6,0,0,5.5,8.1 -2022-05-07T05:00,43.3,65,32.5,0,0,4.8,12.3 -2022-05-07T06:00,48,57,33.4,0,0,5.5,7.2 -2022-05-07T07:00,56.8,49,37.9,0,0,4.3,9.8 -2022-05-07T08:00,67.6,39,42,0,0,4.3,9.4 -2022-05-07T09:00,76.6,21,34,0,0,10.3,17.7 -2022-05-07T10:00,79.6,17,30.8,0,0,13.9,25.1 -2022-05-07T11:00,82.1,17,32.4,0,0,8.8,24.8 -2022-05-07T12:00,83.3,16,32.5,0,0,10.2,20.8 -2022-05-07T13:00,84.6,15,31.7,0,0,11.9,22.4 -2022-05-07T14:00,83.5,15,30.9,0,0,13.8,24.4 -2022-05-07T15:00,83.3,14,29.7,0,0,12.7,25.1 -2022-05-07T16:00,83.4,13,28.3,0,0,10.5,23 -2022-05-07T17:00,80.4,19,34.3,0,0,6.7,18.1 -2022-05-07T18:00,72.5,26,35.2,0,0,20,25.7 -2022-05-07T19:00,62.2,36,35.2,0,0,10.4,37.4 -2022-05-07T20:00,59,42,35.9,0,0,4,16.6 -2022-05-07T21:00,56.3,45,35.1,0,0,4,5.6 -2022-05-07T22:00,54.5,47,34.4,0,0,5.5,8.5 -2022-05-07T23:00,53.4,48,34.4,0,0,7.9,12.8 -2022-05-08T00:00,51,54,34.8,0,0,4.6,12.8 -2022-05-08T01:00,51.9,52,34.6,0,0,4,7.6 -2022-05-08T02:00,49.1,58,34.8,0,0,8.8,13.4 -2022-05-08T03:00,47.4,64,35.7,0,0,7.6,14.1 -2022-05-08T04:00,46.9,64,35.3,0,0,6.7,12.1 -2022-05-08T05:00,46.7,64,35.2,0,0,4.7,11.9 -2022-05-08T06:00,48.7,63,36.5,0,0,4,7.4 -2022-05-08T07:00,52,57,37,0,0,2.2,6.9 -2022-05-08T08:00,57.2,42,34.5,0,0,9.9,17.7 -2022-05-08T09:00,60.9,38,35.1,0,0,10.7,20.8 -2022-05-08T10:00,64.9,34,36,0,0,5.3,20.1 -2022-05-08T11:00,65.8,34,36.7,0,0,3.7,13.6 -2022-05-08T12:00,71.3,25,33.7,0,0,8.4,17.7 -2022-05-08T13:00,75.2,18,29.2,0,0,1.8,17.9 -2022-05-08T14:00,74.6,22,33.6,0,0,10.4,19 -2022-05-08T15:00,75.7,26,37.9,0,0,7.3,23.5 -2022-05-08T16:00,78.2,14,25.4,0,0,7.3,16.1 -2022-05-08T17:00,69.1,39,43,0,0,5.2,25.3 -2022-05-08T18:00,66.5,45,44.2,0,0,10.6,17.4 -2022-05-08T19:00,59.1,53,41.8,0,0,9.6,19.5 -2022-05-08T20:00,55.3,61,42.2,0,0,2.4,14.8 -2022-05-08T21:00,50.9,73,42.7,0,0,6.5,6.9 -2022-05-08T22:00,52,67,41.3,0,0,11.9,17.2 -2022-05-08T23:00,50.4,78,43.9,0,0,4.7,18.6 -2022-05-09T00:00,49.6,80,43.8,0,0,8,12.1 -2022-05-09T01:00,48.2,81,42.7,0,0,8.4,15.9 -2022-05-09T02:00,45.9,87,42.4,0,0,7,13.6 -2022-05-09T03:00,44.5,90,41.7,0,0,5.6,11.4 -2022-05-09T04:00,43.2,91,40.6,0,0,3.8,9.2 -2022-05-09T05:00,42.5,85,38.3,0,0,3.9,6.3 -2022-05-09T06:00,45.6,75,38.2,0,0,3.7,6.3 -2022-05-09T07:00,48.1,69,38.4,0,0,4.7,13.4 -2022-05-09T08:00,52.2,62,39.5,0,0,1.7,10.5 -2022-05-09T09:00,55,60,41.5,0,0,6.5,14.8 -2022-05-09T10:00,59,52,41.5,0,0,10,19.7 -2022-05-09T11:00,63.1,45,41.4,0,0,11.9,22.8 -2022-05-09T12:00,67.7,38,41.4,0,0,12.3,24.8 -2022-05-09T13:00,73,26,35.7,0,0,6.2,24.2 -2022-05-09T14:00,76.3,13,22.5,0,0,12.8,22.8 -2022-05-09T15:00,76.6,12,20,0,0,21,34.7 -2022-05-09T16:00,77.4,12,20.3,0,0,15,35.6 -2022-05-09T17:00,69,32,38.1,0,0,9.2,26.8 -2022-05-09T18:00,67.6,36,39.5,0,0,9.6,14.5 -2022-05-09T19:00,60.5,42,37.1,0,0,12,21.7 -2022-05-09T20:00,57,51,39,0,0,4.9,18.6 -2022-05-09T21:00,54.4,42,31.8,0,0,14,20.8 -2022-05-09T22:00,50.6,35,24.3,0,0,9.7,23.3 -2022-05-09T23:00,49.9,38,25.3,0,0,7.8,15 -2022-05-10T00:00,47.2,44,26.6,0,0,3.8,11.6 -2022-05-10T01:00,44.2,54,28.6,0,0,6,6.9 -2022-05-10T02:00,45.5,48,26.8,0,0,3.9,6.7 -2022-05-10T03:00,45.2,47,26.3,0,0,3,4.7 -2022-05-10T04:00,42,56,27.6,0,0,5.2,5.8 -2022-05-10T05:00,38.8,70,29.8,0,0,4.2,6.3 -2022-05-10T06:00,42.5,62,30.5,0,0,2,5.1 -2022-05-10T07:00,47.2,45,27.1,0,0,2.3,7.2 -2022-05-10T08:00,50.3,37,24.9,0,0,4.7,11.4 -2022-05-10T09:00,52.7,32,23.9,0,0,5.6,13.9 -2022-05-10T10:00,55.1,29,23.7,0,0,5.9,14.8 -2022-05-10T11:00,59.1,27,25.3,0,0,6.6,16.1 -2022-05-10T12:00,63.4,25,27.3,0,0,6.7,16.6 -2022-05-10T13:00,67.8,24,29.4,0,0,9.7,20.4 -2022-05-10T14:00,68.8,24,30.3,0,0,15,27.3 -2022-05-10T15:00,68.4,26,31.8,0,0,14.5,29.1 -2022-05-10T16:00,69.6,25,32.7,0,0,11,26.6 -2022-05-10T17:00,62.2,28,28.8,0,0,13.2,20.6 -2022-05-10T18:00,62.3,29,29.8,0,0,8.1,22.1 -2022-05-10T19:00,56.8,37,30.9,0,0,4.5,13 -2022-05-10T20:00,53.8,45,32.9,0,0,5.2,7.4 -2022-05-10T21:00,51.4,48,32.3,0,0,3.9,6.3 -2022-05-10T22:00,49.8,53,33.3,0,0,4.2,6.3 -2022-05-10T23:00,46.2,68,36.3,0,0,2.6,6 -2022-05-11T00:00,44.9,73,36.8,0,0,3,4.3 -2022-05-11T01:00,43.5,76,36.4,0,0,4.3,5.8 -2022-05-11T02:00,44.8,66,34.2,0,0,4.4,7.6 -2022-05-11T03:00,41.8,74,34.1,0,0,2.7,7.4 -2022-05-11T04:00,40.6,78,34.3,0,0,3.7,5.4 -2022-05-11T05:00,39.5,80,33.9,0,0,3.5,5.4 -2022-05-11T06:00,44.2,70,35.2,0,0,4.1,7.6 -2022-05-11T07:00,53.2,53,36.7,0,0,2.8,7.6 -2022-05-11T08:00,65.7,32,34.8,0,0,5.2,11.2 -2022-05-11T09:00,76.2,13,22.1,0,0,10.5,18.3 -2022-05-11T10:00,78,14,24.2,0,0,16,28.9 -2022-05-11T11:00,81,11,21.9,0,0,12.3,28 -2022-05-11T12:00,83,10,21.3,0,0,13.5,24.8 -2022-05-11T13:00,84.1,10,22.6,0,0,13.2,25.1 -2022-05-11T14:00,84.8,10,22.2,0,0,15,26.6 -2022-05-11T15:00,85.5,9,20.5,0,0,16.4,29.1 -2022-05-11T16:00,86.5,8,16.9,0,0,15.8,28 -2022-05-11T17:00,84.7,8,17.4,0,0,14.4,28.9 -2022-05-11T18:00,80.6,11,21.9,0,0,8.6,25.9 -2022-05-11T19:00,69.5,15,19.6,0,0,7.4,13.9 -2022-05-11T20:00,67.6,14,16.6,0,0,7,11.2 -2022-05-11T21:00,68.6,14,16.8,0,0,4.1,11.2 -2022-05-11T22:00,59.7,52,42,0,0,9.7,16.3 -2022-05-11T23:00,57.4,60,43.8,0,0,5.9,15.4 -2022-05-12T00:00,55.2,65,43.5,0,0,5.5,8.9 -2022-05-12T01:00,59.3,55,43.2,0,0,2,8.3 -2022-05-12T02:00,54.1,65,42.5,0,0,2.2,2.9 -2022-05-12T03:00,49.5,70,40,0,0,2.5,3.1 -2022-05-12T04:00,48,72,39.3,0,0,4.1,5.6 -2022-05-12T05:00,46.5,86,42.5,0,0,6,5.8 -2022-05-12T06:00,50.5,91,47.9,0,0,1.4,6.5 -2022-05-12T07:00,50.6,96,49.5,0,0,4.9,9.8 -2022-05-12T08:00,53.1,83,48.1,0,0,5.2,12.1 -2022-05-12T09:00,61.3,58,46.6,0,0,9.5,17.4 -2022-05-12T10:00,64.5,40,39.9,0,0,4.3,25.1 -2022-05-12T11:00,68.1,9,7,0,0,14.8,25.9 -2022-05-12T12:00,69,9,8.7,0,0,13.7,29.1 -2022-05-12T13:00,69.8,9,8,0,0,15.7,28.6 -2022-05-12T14:00,69,10,10.8,0,0,15.7,30 -2022-05-12T15:00,69.3,10,10.7,0,0,14.4,28.9 -2022-05-12T16:00,69.7,10,10.9,0,0,10,26.6 -2022-05-12T17:00,69.3,9,9,0,0,13.4,19.5 -2022-05-12T18:00,66.9,11,10.4,0,0,9.2,23 -2022-05-12T19:00,61.2,13,10.6,0,0,6.9,15.4 -2022-05-12T20:00,54.9,21,15.2,0,0,5.3,11.4 -2022-05-12T21:00,51,29,20.1,0,0,5.7,8.1 -2022-05-12T22:00,47.9,34,20.9,0,0,6,7.8 -2022-05-12T23:00,51.2,28,18.9,0,0,4.1,8.5 -2022-05-13T00:00,44.7,42,23.3,0,0,4.8,5.6 -2022-05-13T01:00,43.7,47,24.6,0,0,3.2,6.7 -2022-05-13T02:00,41.4,52,24.9,0,0,4,5.6 -2022-05-13T03:00,39.7,55,24.9,0,0,3.7,5.8 -2022-05-13T04:00,38.6,57,24.6,0,0,4.8,6 -2022-05-13T05:00,38.4,55,23.5,0,0,4,6.5 -2022-05-13T06:00,43.9,46,24.3,0,0,3.5,6.9 -2022-05-13T07:00,51.8,37,26.2,0,0,4.5,10.3 -2022-05-13T08:00,58.6,23,20.8,0,0,3.2,10.1 -2022-05-13T09:00,64,16,17.6,0,0,4.5,12.3 -2022-05-13T10:00,66.6,16,18.5,0,0,2.8,12.3 -2022-05-13T11:00,68.9,14,18.1,0,0,4.2,13 -2022-05-13T12:00,71.2,12,16.8,0,0,6.5,15.9 -2022-05-13T13:00,73.4,11,15.6,0,0,6.3,16.1 -2022-05-13T14:00,75.4,8,10.3,0,0,8.7,17.9 -2022-05-13T15:00,75.3,8,8.8,0,0,12.9,24.2 -2022-05-13T16:00,75,7,7.2,0,0,12,24.2 -2022-05-13T17:00,74.7,7,7.2,0,0,9.1,21.7 -2022-05-13T18:00,71.1,9,10.4,0,0,9.1,19.2 -2022-05-13T19:00,65.8,11,10.1,0,0,6.1,15.4 -2022-05-13T20:00,63.8,12,10.8,0,0,5.9,10.5 -2022-05-13T21:00,60.1,16,14,0,0,6.7,11 -2022-05-13T22:00,56.3,22,17.7,0,0,5.4,10.7 -2022-05-13T23:00,52.5,28,20.6,0,0,6.8,8.5 -2022-05-14T00:00,52.2,28,19.9,0,0,4.8,8.5 -2022-05-14T01:00,51.9,32,22.7,0,0,0.7,8.3 -2022-05-14T02:00,45.5,40,22.4,0,0,4.5,6.7 -2022-05-14T03:00,43.3,44,22.7,0,0,4.1,6.5 -2022-05-14T04:00,43.4,40,20.5,0,0,5,8.1 -2022-05-14T05:00,42.7,43,22,0,0,4.7,8.3 -2022-05-14T06:00,48.3,39,24.5,0,0,4.6,7.2 -2022-05-14T07:00,55,35,27.8,0,0,0.9,7.8 -2022-05-14T08:00,62.8,22,22.8,0,0,6.3,12.8 -2022-05-14T09:00,68.9,14,18.4,0,0,7.5,16.1 -2022-05-14T10:00,71.3,14,19.9,0,0,5.7,15.9 -2022-05-14T11:00,73.6,13,20.6,0,0,6.9,15.9 -2022-05-14T12:00,77.5,12,21.7,0,0,5.6,16.1 -2022-05-14T13:00,79.6,12,22.6,0,0,10.2,19.9 -2022-05-14T14:00,79.2,12,23,0,0,9.4,21.9 -2022-05-14T15:00,79.9,12,23.1,0,0,6.7,19.2 -2022-05-14T16:00,79.6,12,22.3,0,0,4.3,15 -2022-05-14T17:00,76.7,15,25.4,0,0,12.7,11 -2022-05-14T18:00,74.8,16,25.7,0,0,9.1,21.9 -2022-05-14T19:00,67.9,22,27.7,0,0,5.1,14.1 -2022-05-14T20:00,67,25,29.6,0,0,4.1,8.5 -2022-05-14T21:00,61.3,30,29.9,0,0,4.7,8.1 -2022-05-14T22:00,56.8,38,31.6,0,0,4,7.4 -2022-05-14T23:00,54.9,46,34.5,0,0,4.2,6 -2022-05-15T00:00,53.6,48,34.5,0,0,5.4,6.3 -2022-05-15T01:00,52,49,33.4,0,0,6.4,8.1 -2022-05-15T02:00,51.2,50,33.4,0,0,6.4,7.6 -2022-05-15T03:00,49.7,52,32.8,0,0,6.2,8.7 -2022-05-15T04:00,48,54,32.1,0,0,4.5,7.8 -2022-05-15T05:00,46.8,55,31.3,0,0,4.2,7.6 -2022-05-15T06:00,52.8,45,32,0,0,6.5,9.6 -2022-05-15T07:00,60.3,38,34.7,0,0,2.4,10.5 -2022-05-15T08:00,63.5,35,35.4,0,0,10.7,18.6 -2022-05-15T09:00,65.3,34,36.1,0,0,10.6,22.6 -2022-05-15T10:00,68.2,30,35.9,0,0,8.4,20.4 -2022-05-15T11:00,70.6,28,36,0,0,8,17.9 -2022-05-15T12:00,72.9,26,36,0,0,8.4,18.3 -2022-05-15T13:00,74.5,25,36.1,0,0,8.4,18.6 -2022-05-15T14:00,76,23,36.1,0,0,7.9,18.3 -2022-05-15T15:00,77,22,35.2,0,0,7.1,17 -2022-05-15T16:00,77.5,21,34.8,0,0,7.6,16.3 -2022-05-15T17:00,71.1,35,41.9,0,0,4,15.7 -2022-05-15T18:00,71.9,31,39.6,0,0,2,8.5 -2022-05-15T19:00,67.7,42,43.7,0,0,2.7,5.4 -2022-05-15T20:00,65.4,43,42.4,0,0,4.3,4.9 -2022-05-15T21:00,60.4,48,40.7,0,0,4.6,5.4 -2022-05-15T22:00,63,37,36.3,0,0,3.2,5.6 -2022-05-15T23:00,55.8,52,38.4,0,0,4.8,7.2 -2022-05-16T00:00,52.6,60,39.3,0,0,4.8,7.2 -2022-05-16T01:00,49.9,70,40.4,0,0,0.8,6 -2022-05-16T02:00,47.7,80,41.8,0,0,2.3,3.4 -2022-05-16T03:00,47,79,41,0,0,2.1,3.8 -2022-05-16T04:00,47.2,70,37.9,0,0,5.1,8.3 -2022-05-16T05:00,46,71,37.1,0,0,3,8.1 -2022-05-16T06:00,50.6,60,37,0,0,3.9,6.9 -2022-05-16T07:00,56,53,39.1,0,0,3.7,8.9 -2022-05-16T08:00,61.1,45,39.5,0,0,4.6,11 -2022-05-16T09:00,67.5,33,37.5,0,0,3.5,11.2 -2022-05-16T10:00,75.4,23,34.8,0,0,4.3,11.4 -2022-05-16T11:00,78.8,18,31.5,0,0,5.5,13 -2022-05-16T12:00,83.5,13,27.6,0,0,0.7,13.6 -2022-05-16T13:00,84.1,10,21.4,0,0,6.9,13.6 -2022-05-16T14:00,82.2,12,24.3,0,0,7.3,17.4 -2022-05-16T15:00,82.6,12,25,0,0,7.4,15 -2022-05-16T16:00,82.9,13,28,0,0,7,15 -2022-05-16T17:00,75.5,25,37.2,0,0,9.2,14.1 -2022-05-16T18:00,74.9,21,32.5,0,0,8.1,16.8 -2022-05-16T19:00,70,24,31.6,0,0,5.5,13.2 -2022-05-16T20:00,67.8,26,31.5,0,0,5.4,8.7 -2022-05-16T21:00,63.9,34,34.6,0,0,6.3,9.8 -2022-05-16T22:00,60.6,41,37,0,0,6.6,10.7 -2022-05-16T23:00,58.4,40,34,0,0,6.3,10.7 -2022-05-17T00:00,56.7,39,31.8,0,0,5.1,10.3 -2022-05-17T01:00,55.9,40,31.8,0,0,4,8.3 -2022-05-17T02:00,52.8,44,31.6,0,0,3.8,7.8 -2022-05-17T03:00,52.4,49,33.9,0,0,5.4,9.2 -2022-05-17T04:00,51,50,32.9,0,0,5.3,8.9 -2022-05-17T05:00,51.8,43,30,0,0,4.2,7.6 -2022-05-17T06:00,54.4,41,31.2,0,0,3.8,6.7 -2022-05-17T07:00,60.4,38,34.7,0,0,2.1,6.5 -2022-05-17T08:00,67.6,29,34.3,0,0,2.3,8.3 -2022-05-17T09:00,73.2,21,31,0,0,4.6,12.1 -2022-05-17T10:00,78.5,18,31.4,0,0,5.5,13.4 -2022-05-17T11:00,81.1,15,29.1,0,0,7.6,15.9 -2022-05-17T12:00,82.8,12,25.9,0,0,8.8,18.8 -2022-05-17T13:00,82.9,12,24.6,0,0,8.5,18.6 -2022-05-17T14:00,83.7,12,25,0,0,9.3,19 -2022-05-17T15:00,83,12,25.3,0,0,7.8,19 -2022-05-17T16:00,81,15,29.7,0,0,15.1,25.9 -2022-05-17T17:00,70.5,34,41.1,0,0,10.4,26.6 -2022-05-17T18:00,70.8,34,40.9,0.004,0,4.7,17 -2022-05-17T19:00,67.2,42,43.3,0,0,3.5,8.7 -2022-05-17T20:00,64.9,49,45.1,0,0,4,6.9 -2022-05-17T21:00,60.5,59,46.2,0,0,4.6,6.7 -2022-05-17T22:00,60.3,57,45.1,0,0,4.2,6 -2022-05-17T23:00,57.7,60,43.7,0,0,5.6,6.9 -2022-05-18T00:00,58.4,48,38.7,0,0,5.2,8.3 -2022-05-18T01:00,58.7,43,36.1,0,0,3.2,8.5 -2022-05-18T02:00,55,51,37.3,0,0,3,3.6 -2022-05-18T03:00,52.3,54,36.1,0,0,4,6.7 -2022-05-18T04:00,50.1,58,35.7,0,0,3.4,6.5 -2022-05-18T05:00,53.3,60,39.9,0,0,4.1,5.6 -2022-05-18T06:00,56.7,52,39.3,0,0,3.9,6.9 -2022-05-18T07:00,60.2,47,39.8,0,0,2.9,7.2 -2022-05-18T08:00,65.6,38,39.1,0,0,2.6,9.2 -2022-05-18T09:00,70.3,30,37.9,0,0,2.9,10.1 -2022-05-18T10:00,73.3,27,37,0,0,4.1,12.1 -2022-05-18T11:00,75.5,24,36.6,0,0,2.7,13.4 -2022-05-18T12:00,76.4,24,36.9,0,0,0.3,11.6 -2022-05-18T13:00,77.5,23,37,0,0,4.3,12.3 -2022-05-18T14:00,79.3,21,36,0,0,4.6,14.8 -2022-05-18T15:00,79.3,20,34.3,0,0,3.5,12.8 -2022-05-18T16:00,78.7,19,32.4,0,0,4.5,13.4 -2022-05-18T17:00,78.4,21,35.3,0,0,6.1,11.2 -2022-05-18T18:00,76,24,36.9,0,0,5.1,13 -2022-05-18T19:00,70.9,30,37.9,0,0,4.4,8.9 -2022-05-18T20:00,65.8,37,38.8,0,0,4.8,6.9 -2022-05-18T21:00,61.3,47,41,0,0,5.2,6.7 -2022-05-18T22:00,59.9,47,39.8,0,0,4.5,7.2 -2022-05-18T23:00,57.6,51,39.6,0,0,4.3,7.4 -2022-05-19T00:00,55.4,55,39.4,0,0,4,6.9 -2022-05-19T01:00,54.2,52,37.2,0,0,4,6.5 -2022-05-19T02:00,53.3,50,35.2,0,0,4.9,7.6 -2022-05-19T03:00,54.2,41,30.8,0,0,5.8,9.2 -2022-05-19T04:00,55,37,28.9,0,0,6.4,10.3 -2022-05-19T05:00,55.3,36,28.5,0,0,6.5,9.8 -2022-05-19T06:00,58.3,36,31.5,0,0,3.8,10.5 -2022-05-19T07:00,65.9,28,31.7,0,0,6.2,10.7 -2022-05-19T08:00,73.5,18,27.1,0,0,10.1,17.7 -2022-05-19T09:00,77.5,13,23,0,0,16.6,29.8 -2022-05-19T10:00,79.7,14,26.2,0,0,8.3,28.6 -2022-05-19T11:00,83.1,12,24.4,0,0,5.2,17.4 -2022-05-19T12:00,84.7,11,24.4,0,0,10,19.9 -2022-05-19T13:00,87.2,10,24.3,0,0,14.7,24.6 -2022-05-19T14:00,87.1,9,22.4,0,0,11.9,28 -2022-05-19T15:00,85.9,10,22.6,0,0,16.1,30 -2022-05-19T16:00,86.9,9,22.3,0,0,15.4,28.4 -2022-05-19T17:00,84.1,9,18.5,0,0,14.3,26.4 -2022-05-19T18:00,81.7,10,20.3,0,0,9.3,23.7 -2022-05-19T19:00,73,16,24.8,0,0,6.2,15.4 -2022-05-19T20:00,49.5,60,36,0,0,17.1,40 -2022-05-19T21:00,49.4,56,34.3,0,0,8.1,27.3 -2022-05-19T22:00,47.6,54,31.7,0,0,8.4,15.7 -2022-05-19T23:00,46.3,55,31,0,0,4.6,13.4 -2022-05-20T00:00,45,57,30.7,0,0,6.9,10.7 -2022-05-20T01:00,44.1,58,30.3,0,0,6.9,12.1 -2022-05-20T02:00,43.2,59,29.8,0,0,5.5,11.4 -2022-05-20T03:00,43.1,58,29.2,0,0,5.2,10.1 -2022-05-20T04:00,43.1,57,28.7,0,0,5.2,10.1 -2022-05-20T05:00,38.8,71,30.2,0,0,8.2,11.2 -2022-05-20T06:00,39.1,71,30.4,0.004,0.028,6.1,14.1 -2022-05-20T07:00,37.9,81,32.6,0.02,0.028,6.7,12.8 -2022-05-20T08:00,38.6,83,34,0.016,0,7.3,13.6 -2022-05-20T09:00,38.4,90,35.8,0.024,0,7.5,14.1 -2022-05-20T10:00,38.4,92,36.1,0.039,0,8.5,15.7 -2022-05-20T11:00,38.8,92,36.6,0.043,0,8.8,15.9 -2022-05-20T12:00,37.9,94,36.4,0.047,0.028,10.1,17.4 -2022-05-20T13:00,36.9,97,36.1,0.039,0.165,12.4,20.6 -2022-05-20T14:00,36.5,96,35.4,0.031,0.22,11.6,20.6 -2022-05-20T15:00,36.3,94,34.9,0.016,0.083,11.1,20.6 -2022-05-20T16:00,36.2,94,34.7,0.012,0.138,9.3,19.2 -2022-05-20T17:00,35.2,87,31.7,0.016,0.193,7.9,16.6 -2022-05-20T18:00,34.3,88,31.2,0,0.413,7.1,14.3 -2022-05-20T19:00,32.4,92,30.2,0,0.413,2.3,12.8 -2022-05-20T20:00,32.6,92,30.5,0,0.358,4.4,8.7 -2022-05-20T21:00,32.5,92,30.5,0,0.386,2.6,8.3 -2022-05-20T22:00,32.2,93,30.3,0,0.358,2.5,5.1 -2022-05-20T23:00,31.1,91,28.8,0,0.303,3.1,4.9 -2022-05-21T00:00,30.9,93,29.2,0,0.276,3,4.7 -2022-05-21T01:00,30.8,95,29.5,0,0.276,2.8,4.7 -2022-05-21T02:00,31.3,96,30.4,0,0.276,1.9,3.8 -2022-05-21T03:00,31.7,94,30.1,0,0.165,0,2.5 -2022-05-21T04:00,31.7,93,30,0,0.138,0.2,1.1 -2022-05-21T05:00,28.9,94,27.5,0,0.138,4,1.1 -2022-05-21T06:00,30.6,93,28.7,0,0.083,2.2,5.4 -2022-05-21T07:00,31.6,89,28.6,0,0.055,4.9,7.8 -2022-05-21T08:00,32.5,84,28.2,0,0,3.4,8.3 -2022-05-21T09:00,33.5,79,27.7,0,0,2.4,5.8 -2022-05-21T10:00,34.4,74,27.1,0,0,1.9,4 -2022-05-21T11:00,35.5,71,27.1,0,0,2.3,4.9 -2022-05-21T12:00,36.8,68,27.3,0,0,2,4.5 -2022-05-21T13:00,38.2,61,26.1,0,0,3.1,6 -2022-05-21T14:00,39.6,55,24.6,0,0,4.2,8.3 -2022-05-21T15:00,40.3,52,24.3,0,0,4.4,8.7 -2022-05-21T16:00,39.9,56,25.5,0,0,3.8,8.7 -2022-05-21T17:00,44.2,51,27.3,0,0,5.4,9.8 -2022-05-21T18:00,37.7,62,25.9,0,0,5.3,9.2 -2022-05-21T19:00,36.9,67,27.1,0,0,5.4,8.7 -2022-05-21T20:00,35.9,72,27.9,0,0,5.4,8.7 -2022-05-21T21:00,34.5,78,28.5,0,0,5.5,8.5 -2022-05-21T22:00,33.5,82,28.7,0,0,5.2,8.3 -2022-05-21T23:00,34.4,84,30.2,0,0,4.5,8.1 -2022-05-22T00:00,29.3,89,26.4,0,0,6.3,9.2 -2022-05-22T01:00,27.8,90,25.3,0,0,6,9.4 -2022-05-22T02:00,31,85,27,0,0,5.1,9.4 -2022-05-22T03:00,33,81,27.9,0,0,5.2,8.5 -2022-05-22T04:00,32.7,80,27.3,0,0,5.4,8.9 -2022-05-22T05:00,31.5,87,28,0,0,4.5,10.5 -2022-05-22T06:00,34.3,84,30,0,0,3.8,7.4 -2022-05-22T07:00,36.9,79,31,0,0,3.7,7.6 -2022-05-22T08:00,40.4,68,30.7,0,0,6.5,12.1 -2022-05-22T09:00,42.4,66,31.7,0,0,5.5,13.2 -2022-05-22T10:00,49.1,50,31.3,0,0,3.8,16.3 -2022-05-22T11:00,50.7,48,31.8,0,0,3,12.1 -2022-05-22T12:00,52.3,46,32.2,0,0,2.9,11.6 -2022-05-22T13:00,53.6,45,32.7,0,0,4.4,13.2 -2022-05-22T14:00,54.9,44,33.6,0,0,4.2,13.4 -2022-05-22T15:00,54.7,45,34,0,0,6,14.3 -2022-05-22T16:00,54.5,47,34.4,0,0,3.8,14.3 -2022-05-22T17:00,54.7,48,35.3,0,0,3.8,10.7 -2022-05-22T18:00,54.4,48,35.2,0,0,4.5,8.7 -2022-05-22T19:00,49.4,56,34.2,0,0,7.8,12.8 -2022-05-22T20:00,45.3,64,33.7,0,0,6.6,13.6 -2022-05-22T21:00,42.1,78,35.9,0,0,2.5,10.5 -2022-05-22T22:00,41.4,76,34.5,0,0,2.9,4.7 -2022-05-22T23:00,39.1,84,34.7,0,0,4.3,6.9 -2022-05-23T00:00,38.9,87,35.4,0,0,1.4,7.6 -2022-05-23T01:00,41,80,35.2,0,0,2.7,4 -2022-05-23T02:00,39.8,85,35.6,0,0,5.3,8.7 -2022-05-23T03:00,39,89,36,0,0,5.2,8.7 -2022-05-23T04:00,37.9,92,35.9,0,0,4,8.5 -2022-05-23T05:00,38.3,83,33.7,0,0,6.3,6 -2022-05-23T06:00,41.3,75,34.1,0,0,8.1,13.2 -2022-05-23T07:00,45.2,67,34.9,0,0,1.9,13.4 -2022-05-23T08:00,46,72,37.5,0.004,0,9.1,16.6 -2022-05-23T09:00,49.2,64,37.5,0.004,0,11.8,23.7 -2022-05-23T10:00,53,55,37.1,0,0,8.6,22.1 -2022-05-23T11:00,54.2,50,35.9,0,0,6.3,18.1 -2022-05-23T12:00,56.8,46,36.4,0,0,3.8,14.3 -2022-05-23T13:00,57.9,45,36.6,0,0,3.6,12.1 -2022-05-23T14:00,59.4,36,32.6,0,0,4.3,13 -2022-05-23T15:00,59.9,32,30.1,0,0,5.4,13 -2022-05-23T16:00,59.8,32,29.9,0,0,8.4,16.3 -2022-05-23T17:00,59.2,32,29.7,0,0,8.2,17.4 -2022-05-23T18:00,53.9,52,36.6,0.02,0,5.8,15.9 -2022-05-23T19:00,50.7,68,40.6,0.02,0,1.8,10.3 -2022-05-23T20:00,48.7,78,42.2,0.004,0,5,8.1 -2022-05-23T21:00,48.2,83,43.4,0,0,5.7,9.2 -2022-05-23T22:00,47.7,78,41.1,0,0,6.6,10.5 -2022-05-23T23:00,46.3,78,39.8,0,0,5.8,10.7 -2022-05-24T00:00,43.3,86,39.3,0,0,3.4,9.4 -2022-05-24T01:00,42.6,89,39.7,0,0,3.2,5.4 -2022-05-24T02:00,43.3,88,40.1,0,0,2.1,4.7 -2022-05-24T03:00,43.9,86,39.9,0.004,0,1.4,4.3 -2022-05-24T04:00,43.3,89,40.5,0.008,0,1.6,3.1 -2022-05-24T05:00,43.4,93,41.5,0.008,0,3.6,4 -2022-05-24T06:00,44.2,90,41.5,0.004,0,4.3,7.8 -2022-05-24T07:00,44.8,83,40,0.004,0,7,12.5 -2022-05-24T08:00,44.8,86,40.7,0.012,0,6.2,13.6 -2022-05-24T09:00,46.9,77,40,0.004,0,6.2,13.2 -2022-05-24T10:00,48.6,67,38.2,0,0,7.6,15 -2022-05-24T11:00,49.7,61,36.7,0,0,7.6,15.2 -2022-05-24T12:00,50.8,58,36.7,0.004,0,8.1,15.9 -2022-05-24T13:00,51.7,56,36.6,0,0,7.9,16.8 -2022-05-24T14:00,52.8,52,35.8,0.004,0,7,16.3 -2022-05-24T15:00,53.6,50,35.3,0,0,5.8,15.9 -2022-05-24T16:00,53.9,48,34.8,0,0,5.2,14.1 -2022-05-24T17:00,51.3,56,36.1,0,0,6.1,12.5 -2022-05-24T18:00,50.7,56,35.5,0,0,6.4,12.1 -2022-05-24T19:00,48.8,60,35.6,0,0,5.4,11.9 -2022-05-24T20:00,47.4,70,38.2,0.008,0,7.1,12.1 -2022-05-24T21:00,45,79,38.9,0.004,0,4.6,12.1 -2022-05-24T22:00,43.3,83,38.3,0,0,4.1,7.6 -2022-05-24T23:00,41.4,85,37.1,0,0,5,8.3 -2022-05-25T00:00,39,90,36.4,0,0,4.1,8.3 -2022-05-25T01:00,39.6,88,36.3,0,0,1.8,5.8 -2022-05-25T02:00,36.3,96,35.2,0,0,2.3,4.3 -2022-05-25T03:00,35.8,96,34.9,0,0,3.1,4.9 -2022-05-25T04:00,35.2,94,33.8,0,0,4.3,5.8 -2022-05-25T05:00,36.9,92,34.8,0,0,4.1,5.6 -2022-05-25T06:00,41.8,84,37.3,0,0,1.4,5.4 -2022-05-25T07:00,47,71,38.1,0,0,2.5,7.4 -2022-05-25T08:00,51,58,36.9,0,0,3.9,11 -2022-05-25T09:00,54,51,36.2,0,0,2.3,10.7 -2022-05-25T10:00,57.2,43,34.6,0,0,4.1,12.1 -2022-05-25T11:00,60,38,34.1,0,0,7.3,16.6 -2022-05-25T12:00,62.5,34,33.8,0,0,8.4,18.8 -2022-05-25T13:00,64.7,29,32,0,0,8.1,18.3 -2022-05-25T14:00,66.4,25,29.5,0,0,6.2,17.7 -2022-05-25T15:00,67.1,23,28.2,0,0,5.2,14.5 -2022-05-25T16:00,67.1,23,27.8,0,0,3.3,12.8 -2022-05-25T17:00,65.8,27,31.2,0,0,2.7,9.2 -2022-05-25T18:00,64.2,31,33.1,0,0,4,6.5 -2022-05-25T19:00,59,41,35.5,0,0,5.6,9.8 -2022-05-25T20:00,54.8,53,38.1,0,0,5.4,9.2 -2022-05-25T21:00,55.5,43,33.3,0,0,10.5,15.9 -2022-05-25T22:00,54.5,40,30.7,0,0,6,17.2 -2022-05-25T23:00,55.6,38,30.7,0,0,3.3,9.6 -2022-05-26T00:00,54.2,41,31.1,0,0,2.9,4.5 -2022-05-26T01:00,46.1,57,31.7,0,0,5.1,6.9 -2022-05-26T02:00,43.4,66,32.8,0,0,6,7.4 -2022-05-26T03:00,43,66,32.4,0,0,4.3,7.2 -2022-05-26T04:00,42.3,67,32.1,0,0,4.6,7.4 -2022-05-26T05:00,41,76,33.9,0,0,4.1,7.2 -2022-05-26T06:00,46.8,63,35,0,0,5.5,9.4 -2022-05-26T07:00,54.9,57,39.8,0,0,5.5,11 -2022-05-26T08:00,64.1,40,39.2,0,0,5.1,11.6 -2022-05-26T09:00,69.7,31,37.6,0,0,0.7,11.4 -2022-05-26T10:00,72.7,25,35,0,0,5,12.3 -2022-05-26T11:00,74.4,23,34,0,0,6.3,14.5 -2022-05-26T12:00,75.6,22,34.3,0,0,7.1,15.9 -2022-05-26T13:00,76.2,22,34.3,0,0,7.5,16.6 -2022-05-26T14:00,77.1,20,32.8,0,0,7.2,16.6 -2022-05-26T15:00,78.1,18,31.1,0,0,4.5,15.7 -2022-05-26T16:00,79,17,30,0,0,3.4,11.2 -2022-05-26T17:00,79.4,19,33.7,0,0,4.5,10.5 -2022-05-26T18:00,75.6,29,40.9,0,0,4.8,8.3 -2022-05-26T19:00,66.5,40,41.5,0,0,7.9,8.3 -2022-05-26T20:00,68.5,30,35.6,0,0,5.2,9.2 -2022-05-26T21:00,59.9,42,36.7,0,0,7,8.7 -2022-05-26T22:00,56,52,38.5,0,0,4.5,8.5 -2022-05-26T23:00,53.8,55,37.9,0,0,5.6,8.5 -2022-05-27T00:00,50.8,59,37.1,0,0,3.8,10.1 -2022-05-27T01:00,49,62,36.5,0,0,4.5,6.3 -2022-05-27T02:00,47.9,63,36.1,0,0,3.6,6 -2022-05-27T03:00,47.6,60,34.5,0,0,5,5.8 -2022-05-27T04:00,47.2,60,33.9,0,0,4.6,5.8 -2022-05-27T05:00,47.8,60,34.7,0,0,4.3,6.7 -2022-05-27T06:00,52.9,52,35.6,0,0,4.9,8.1 -2022-05-27T07:00,60.4,50,41.7,0,0,4,8.7 -2022-05-27T08:00,70.8,40,45.1,0,0,4.3,9.8 -2022-05-27T09:00,79.8,27,43.3,0,0,4.6,10.7 -2022-05-27T10:00,82.6,14,29.1,0,0,3.6,11.6 -2022-05-27T11:00,85.6,13,28.9,0,0,6.7,17.2 -2022-05-27T12:00,86.5,12,28.8,0,0,6.5,16.6 -2022-05-27T13:00,86.1,14,31.6,0,0,10.3,18.8 -2022-05-27T14:00,80.2,20,35.8,0.004,0,9.5,20.1 -2022-05-27T15:00,84.7,16,33,0,0,5.9,17.9 -2022-05-27T16:00,86.3,12,28.3,0,0,4.7,15.4 -2022-05-27T17:00,81.8,20,36.5,0,0,4.1,18.3 -2022-05-27T18:00,78.2,56,61.3,0,0,0.4,8.1 -2022-05-27T19:00,72.3,33,41.6,0,0,5.3,8.1 -2022-05-27T20:00,65.4,42,41.7,0,0,4.3,8.3 -2022-05-27T21:00,59.8,54,43.1,0,0,4.5,7.2 -2022-05-27T22:00,57.4,54,41.1,0,0,4.8,7.4 -2022-05-27T23:00,54.2,54,38,0,0,4.3,7.4 -2022-05-28T00:00,51.4,56,36,0,0,4.6,6.3 -2022-05-28T01:00,51.4,52,34.3,0,0,2.9,6 -2022-05-28T02:00,50.2,52,33.1,0,0,4,4.7 -2022-05-28T03:00,49.1,54,33,0,0,5.6,6.7 -2022-05-28T04:00,49.6,50,31.9,0,0,4.8,6.7 -2022-05-28T05:00,48.5,64,37,0,0,4.6,6.5 -2022-05-28T06:00,54.1,51,36.3,0,0,2,5.4 -2022-05-28T07:00,59.4,49,40.1,0,0,0.6,4.9 -2022-05-28T08:00,67,41,42.8,0,0,2.7,7.2 -2022-05-28T09:00,75.3,31,42.7,0,0,4.2,9.2 -2022-05-28T10:00,81.7,14,27.8,0,0,11.2,19.2 -2022-05-28T11:00,82.9,14,28.5,0,0,9.2,20.4 -2022-05-28T12:00,83,14,29.2,0,0,9.1,17.9 -2022-05-28T13:00,84.2,13,27.8,0,0,10.5,19.9 -2022-05-28T14:00,85,11,24.5,0,0,9.8,21 -2022-05-28T15:00,85.7,9,21.3,0,0,10.7,18.3 -2022-05-28T16:00,85.6,9,19.3,0,0,14.4,25.1 -2022-05-28T17:00,74.8,25,37,0,0,5.9,25.1 -2022-05-28T18:00,73.1,34,43.3,0,0,3.8,10.3 -2022-05-28T19:00,69.9,34,40.1,0,0,5.3,7.2 -2022-05-28T20:00,68.5,23,28.8,0,0,5.6,9.2 -2022-05-28T21:00,60.2,33,31.2,0,0,5.3,9.2 -2022-05-28T22:00,61.3,31,30.5,0,0,2.4,6.9 -2022-05-28T23:00,57,40,32.8,0,0,6.5,9.4 -2022-05-29T00:00,56.8,33,27.7,0,0,8.8,14.8 -2022-05-29T01:00,58.6,30,27.2,0,0,2.8,14.3 -2022-05-29T02:00,52.2,44,30.7,0,0,3.9,5.1 -2022-05-29T03:00,48.9,52,31.9,0,0,4.4,9.8 -2022-05-29T04:00,47.5,58,33.4,0,0,4.2,6.5 -2022-05-29T05:00,48.8,59,35.1,0,0,3.4,8.1 -2022-05-29T06:00,53.2,54,36.9,0,0,3.9,6.7 -2022-05-29T07:00,58.9,47,38.7,0,0,4.7,9.4 -2022-05-29T08:00,63.6,40,38.8,0,0,5.6,13 -2022-05-29T09:00,67.8,35,38.8,0,0,7.1,15.2 -2022-05-29T10:00,72.3,29,38.3,0,0,11.1,22.6 -2022-05-29T11:00,72.4,30,38.9,0.016,0,14.8,25.1 -2022-05-29T12:00,73.8,25,35.9,0,0,10,30 -2022-05-29T13:00,71,33,40.2,0.028,0,12.6,25.9 -2022-05-29T14:00,71.5,36,42.9,0.031,0,1.6,23.5 -2022-05-29T15:00,73.8,27,37.7,0,0,11.6,18.3 -2022-05-29T16:00,65.3,45,43.5,0,0,11.1,36.5 -2022-05-29T17:00,62.8,54,46.1,0,0,15.7,20.4 -2022-05-29T18:00,58.5,69,48.3,0.055,0,10,30 -2022-05-29T19:00,56.1,78,49.4,0.016,0,9.6,17 -2022-05-29T20:00,55.3,81,49.6,0.031,0,3.3,15.2 -2022-05-29T21:00,53.2,92,50.9,0,0,2.5,5.6 -2022-05-29T22:00,51.6,96,50.6,0,0,3.1,6 -2022-05-29T23:00,50.3,93,48.4,0,0,10.4,15 -2022-05-30T00:00,48.5,81,43,0.008,0,3.1,21 -2022-05-30T01:00,48.7,85,44.5,0,0,2.8,4.9 -2022-05-30T02:00,47.7,95,46.2,0,0,3.4,5.8 -2022-05-30T03:00,46.3,92,44.2,0.016,0,8.1,15 -2022-05-30T04:00,45.9,94,44.2,0,0,5.7,13.2 -2022-05-30T05:00,46.9,85,42.5,0,0,3.4,9.8 -2022-05-30T06:00,48.7,80,42.7,0,0,3.6,7.2 -2022-05-30T07:00,51.9,52,34.9,0,0,5,10.7 -2022-05-30T08:00,54.7,40,30.8,0,0,7.6,15.9 -2022-05-30T09:00,55.2,40,31.5,0.02,0,1.6,17.4 -2022-05-30T10:00,59.5,26,24.5,0,0,5.4,15 -2022-05-30T11:00,62.8,20,21.4,0,0,8.5,19.2 -2022-05-30T12:00,65.4,17,19.2,0,0,11.8,23 -2022-05-30T13:00,66.7,15,16.9,0,0,13.4,25.5 -2022-05-30T14:00,66.2,15,17.1,0.004,0,12.9,25.3 -2022-05-30T15:00,65.8,16,17.9,0,0,12.4,23.7 -2022-05-30T16:00,65.2,17,19.8,0,0,14.1,25.9 -2022-05-30T17:00,60.9,21,21.2,0,0,15.9,25.1 -2022-05-30T18:00,59.7,25,23.4,0,0,13.9,28.4 -2022-05-30T19:00,56.8,30,25.7,0,0,9.3,23 -2022-05-30T20:00,54.8,30,23.9,0,0,6.4,15 -2022-05-30T21:00,50.7,40,27.3,0,0,5.2,10.7 -2022-05-30T22:00,53,34,25.5,0,0,0.5,6.7 -2022-05-30T23:00,46.5,47,27.6,0,0,5.4,7.8 -2022-05-31T00:00,45.3,46,25.9,0,0,8.4,13.6 -2022-05-31T01:00,45.1,44,24.5,0,0,5.8,13.6 -2022-05-31T02:00,45.4,49,27.5,0,0,2.6,9.4 -2022-05-31T03:00,45.9,55,30.5,0,0,1.7,3.8 -2022-05-31T04:00,45.8,54,30.3,0,0,2.6,3.8 -2022-05-31T05:00,45.9,56,31,0,0,4.8,9.8 -2022-05-31T06:00,48.7,52,32,0,0,4.3,8.9 -2022-05-31T07:00,50.3,49,31.7,0,0,2.9,8.1 -2022-05-31T08:00,52.7,48,33.7,0,0,3.7,9.8 -2022-05-31T09:00,55.3,46,34.8,0,0,6,14.3 -2022-05-31T10:00,57.9,42,35.1,0,0,6.3,16.3 -2022-05-31T11:00,59.9,40,35.7,0,0,6.9,16.1 -2022-05-31T12:00,60.9,38,35.2,0,0,6.3,17 -2022-05-31T13:00,63.1,35,34.8,0,0,7.3,16.6 -2022-05-31T14:00,64,34,35.3,0,0,8.7,17.9 -2022-05-31T15:00,61.9,45,40.3,0.126,0,9.7,18.8 -2022-05-31T16:00,54.1,58,39.7,0.075,0,15.9,27.3 -2022-05-31T17:00,45.1,84,40.4,0.008,0,14.7,27.1 -2022-05-31T18:00,46.4,85,42,0.102,0,9.6,24.4 -2022-05-31T19:00,45.8,87,42.1,0.11,0,7.6,16.6 -2022-05-31T20:00,45.1,87,41.4,0.106,0,6.4,12.5 -2022-05-31T21:00,44.9,87,41.4,0.075,0,6,10.7 -2022-05-31T22:00,44.1,88,40.8,0.055,0,6.2,11 -2022-05-31T23:00,43.4,88,40.2,0.028,0,4.8,11 -2022-06-01T00:00,43.2,88,39.7,0.02,0,3.7,8.5 -2022-06-01T01:00,42.5,87,39,0.008,0,3.4,6.9 -2022-06-01T02:00,42.3,88,39,0.004,0,3.8,6.9 -2022-06-01T03:00,42.2,89,39,0,0,4.2,7.6 -2022-06-01T04:00,41.3,92,39.2,0,0,4.9,8.7 -2022-06-01T05:00,41.1,94,39.4,0,0,4,10.1 -2022-06-01T06:00,40.8,95,39.4,0.059,0,4.3,11.9 -2022-06-01T07:00,41.5,92,39.3,0.024,0,3.1,11 -2022-06-01T08:00,42.5,89,39.4,0.02,0,3.4,8.1 -2022-06-01T09:00,44.2,81,38.9,0.008,0,2.7,8.9 -2022-06-01T10:00,46.9,73,38.6,0,0,3.9,11.4 -2022-06-01T11:00,49.9,67,39.4,0,0,4.2,12.3 -2022-06-01T12:00,52.9,64,41.1,0,0,1.1,12.3 -2022-06-01T13:00,56.8,58,42.4,0,0,4.3,12.1 -2022-06-01T14:00,59.2,55,43.2,0,0,9.3,19.2 -2022-06-01T15:00,59.1,53,42.1,0,0,12.2,23 -2022-06-01T16:00,59.5,51,41.5,0,0,10.3,23 -2022-06-01T17:00,54.1,69,44,0,0,8.1,20.1 -2022-06-01T18:00,54.4,68,44.2,0,0,6.5,14.1 -2022-06-01T19:00,53.5,70,43.9,0,0,6.8,12.8 -2022-06-01T20:00,50.7,78,44.1,0,0,4.1,11.9 -2022-06-01T21:00,49.3,85,45.1,0,0,2.2,6.5 -2022-06-01T22:00,48.8,86,45,0,0,3.8,5.8 -2022-06-01T23:00,48.1,89,45.1,0,0,3.6,6 -2022-06-02T00:00,46.7,92,44.5,0,0,4.3,6 -2022-06-02T01:00,45.3,94,43.6,0,0,4.8,6.5 -2022-06-02T02:00,43.5,95,42.3,0,0,5.3,6.7 -2022-06-02T03:00,42.2,96,41.1,0,0,4.5,6.5 -2022-06-02T04:00,40.6,97,39.7,0,0,3,5.8 -2022-06-02T05:00,41.4,97,40.6,0,0,3,4.3 -2022-06-02T06:00,45.7,93,43.7,0,0,5,9.2 -2022-06-02T07:00,47.6,95,46.2,0,0,5.7,12.3 -2022-06-02T08:00,50.4,87,46.6,0,0,5.2,12.3 -2022-06-02T09:00,53.6,78,46.8,0,0,4,11.9 -2022-06-02T10:00,57.9,63,45.5,0,0,3.2,11.4 -2022-06-02T11:00,61.5,55,45.2,0,0,3.4,11.4 -2022-06-02T12:00,64.3,50,45.1,0,0,5.2,13.9 -2022-06-02T13:00,66.3,45,44.5,0,0,6.3,15.4 -2022-06-02T14:00,67.7,43,44.5,0,0,7,15.7 -2022-06-02T15:00,69,41,44.2,0,0,7.3,17 -2022-06-02T16:00,69.1,39,43.2,0,0,7.2,16.6 -2022-06-02T17:00,65.8,49,46,0,0,7.3,15 -2022-06-02T18:00,64.6,52,46.7,0.004,0,2.7,14.1 -2022-06-02T19:00,59.5,75,51.4,0.035,0,6.6,10.5 -2022-06-02T20:00,56.7,82,51.4,0,0,5.1,10.1 -2022-06-02T21:00,55,88,51.6,0,0,3.4,8.5 -2022-06-02T22:00,51.5,95,50.3,0,0,4,5.8 -2022-06-02T23:00,50.4,97,49.6,0,0,3.6,5.8 -2022-06-03T00:00,48,99,47.7,0,0,4,5.8 -2022-06-03T01:00,46.6,100,46.5,0,0,2.9,5.4 -2022-06-03T02:00,45.8,99,45.5,0,0,2.9,4.9 -2022-06-03T03:00,45.2,97,44.4,0,0,3.4,5.6 -2022-06-03T04:00,45.7,93,43.7,0,0,4.9,7.6 -2022-06-03T05:00,46.2,81,40.6,0,0,3.9,8.1 -2022-06-03T06:00,49.6,72,41.1,0,0,2.9,7.4 -2022-06-03T07:00,54.9,68,44.4,0,0,1,6.7 -2022-06-03T08:00,59.3,66,47.8,0,0,3.4,10.1 -2022-06-03T09:00,63.7,58,48.8,0,0,3.9,11.2 -2022-06-03T10:00,67.5,52,49,0,0,4.7,12.5 -2022-06-03T11:00,69.3,49,49.5,0,0,6,14.5 -2022-06-03T12:00,70.8,46,49.2,0,0,4.9,14.8 -2022-06-03T13:00,70.5,40,44.9,0,0,5.7,13.9 -2022-06-03T14:00,74.2,37,46.3,0,0,5.9,15.2 -2022-06-03T15:00,71.8,42,47.6,0,0,2.9,13.6 -2022-06-03T16:00,72.2,42,47.7,0,0,2.7,8.9 -2022-06-03T17:00,66.9,59,52,0,0,11.2,12.5 -2022-06-03T18:00,66.5,54,49.4,0,0,8.5,23.5 -2022-06-03T19:00,62.9,64,50.6,0,0,3.6,13.4 -2022-06-03T20:00,60.4,70,50.6,0,0,5.8,9.8 -2022-06-03T21:00,57.5,74,49.2,0,0,5.9,10.1 -2022-06-03T22:00,53.6,80,47.5,0,0,5.2,9.6 -2022-06-03T23:00,52,82,46.8,0,0,4.5,6.3 -2022-06-04T00:00,52.5,76,45.3,0,0,4.1,6.7 -2022-06-04T01:00,51.4,74,43.4,0,0,4,6.7 -2022-06-04T02:00,48.6,83,43.7,0,0,4,6.3 -2022-06-04T03:00,46.9,79,40.7,0,0,5,5.8 -2022-06-04T04:00,46.1,78,39.7,0,0,3.8,6.3 -2022-06-04T05:00,47.5,69,37.7,0,0,3.1,6.3 -2022-06-04T06:00,52,62,39.2,0,0,3.8,7.4 -2022-06-04T07:00,58.9,56,43.2,0,0,2.4,7.4 -2022-06-04T08:00,65.5,41,41,0,0,3.5,9.6 -2022-06-04T09:00,71.2,35,42.2,0,0,3,9.8 -2022-06-04T10:00,75.8,29,41,0,0,2.2,9.6 -2022-06-04T11:00,79.3,19,33.2,0,0,2.6,11.4 -2022-06-04T12:00,80.3,19,34.1,0,0,7.1,15 -2022-06-04T13:00,81.9,16,32,0,0,5.2,15.9 -2022-06-04T14:00,81.7,16,30.7,0,0,0.2,13.2 -2022-06-04T15:00,81.1,18,33.8,0,0,8.2,15.2 -2022-06-04T16:00,79,23,37.7,0,0,12.6,23.3 -2022-06-04T17:00,75.2,34,45.1,0,0,15.5,21.7 -2022-06-04T18:00,69.7,54,52.3,0.016,0,11.1,24.6 -2022-06-04T19:00,66.7,64,54.2,0,0,3.2,18.3 -2022-06-04T20:00,62.2,73,53.2,0,0,5.5,8.9 -2022-06-04T21:00,58.9,73,50.3,0,0,5.6,10.1 -2022-06-04T22:00,57.1,73,48.6,0,0,4.3,8.7 -2022-06-04T23:00,57.7,68,47.2,0,0,4.5,7.6 -2022-06-05T00:00,57.8,65,46.3,0,0,4.6,8.7 -2022-06-05T01:00,55.4,71,46.3,0,0,4.2,7.6 -2022-06-05T02:00,52.7,77,45.6,0,0,5.2,6.7 -2022-06-05T03:00,52.7,66,41.6,0,0,3.9,6.7 -2022-06-05T04:00,53.2,57,38.3,0,0,4.6,7.2 -2022-06-05T05:00,55.9,60,42.4,0,0,9.3,7.8 -2022-06-05T06:00,58.7,54,42.4,0,0,5.8,14.8 -2022-06-05T07:00,65.3,45,43.4,0,0,4.1,9.4 -2022-06-05T08:00,70,37,42.3,0,0,4.5,11.2 -2022-06-05T09:00,73,31,40.6,0,0,4,11.4 -2022-06-05T10:00,74.5,28,38.9,0,0,1.4,11.2 -2022-06-05T11:00,76.4,25,37.5,0,0,4.7,12.1 -2022-06-05T12:00,77.7,23,37.1,0,0,1.4,12.5 -2022-06-05T13:00,78.6,23,37.5,0,0,3.3,11.4 -2022-06-05T14:00,79.4,22,37.8,0,0,0.2,11 -2022-06-05T15:00,81,21,37.3,0,0,1.2,8.1 -2022-06-05T16:00,79.5,23,38.4,0,0,7,13.9 -2022-06-05T17:00,72.2,40,46.7,0,0,6.5,15 -2022-06-05T18:00,70.4,49,50.5,0,0,12.1,22.4 -2022-06-05T19:00,68,57,52.3,0,0,5.4,19.7 -2022-06-05T20:00,63.5,68,52.7,0,0,2.9,9.4 -2022-06-05T21:00,60.7,78,53.9,0,0,2.8,6 -2022-06-05T22:00,58.6,81,52.8,0,0,3.4,5.1 -2022-06-05T23:00,56.7,81,50.8,0,0,3.4,5.8 -2022-06-06T00:00,55.5,81,49.8,0,0,4.3,6.3 -2022-06-06T01:00,54.7,72,45.9,0,0,5.9,9.6 -2022-06-06T02:00,53.6,69,43.7,0,0,5.3,9.8 -2022-06-06T03:00,52.3,70,42.8,0,0,3.6,8.7 -2022-06-06T04:00,51.7,71,42.7,0,0,3.8,6 -2022-06-06T05:00,52.2,72,43.3,0,0,2.9,6.3 -2022-06-06T06:00,56.2,62,43.3,0,0,1.8,4.7 -2022-06-06T07:00,59.2,64,47,0,0,5.2,11 -2022-06-06T08:00,64.3,54,47.5,0,0,5.1,12.1 -2022-06-06T09:00,68.8,46,47.2,0,0,6.1,14.1 -2022-06-06T10:00,72.1,39,46,0,0,4.9,14.3 -2022-06-06T11:00,74.7,34,44.8,0,0,2.9,12.8 -2022-06-06T12:00,76.8,31,43.5,0.004,0,2.2,11.6 -2022-06-06T13:00,77.1,29,42.6,0,0,1.1,10.5 -2022-06-06T14:00,78.9,29,43.7,0,0,4.2,11.6 -2022-06-06T15:00,78.4,29,43.4,0,0,5.9,12.1 -2022-06-06T16:00,76.5,32,44.1,0.004,0,1.4,17.2 -2022-06-06T17:00,70.5,41,46,0.008,0,5.7,11.2 -2022-06-06T18:00,69.6,39,43.9,0,0,5.3,11.6 -2022-06-06T19:00,67.6,45,45.4,0,0,2.8,9.2 -2022-06-06T20:00,65.6,55,48.9,0,0,4.5,6.3 -2022-06-06T21:00,64.2,66,52.8,0,0,7.5,12.5 -2022-06-06T22:00,61.3,73,52.5,0,0,5.9,11.9 -2022-06-06T23:00,59.5,73,50.6,0,0,6,10.1 -2022-06-07T00:00,56.9,71,47.6,0,0,5.3,9.6 -2022-06-07T01:00,54.6,66,43.4,0,0,4.2,8.9 -2022-06-07T02:00,54.3,59,40.5,0,0,10.6,16.3 -2022-06-07T03:00,54.6,67,44,0,0,9.3,18.3 -2022-06-07T04:00,53.4,74,45.4,0,0,4.7,15.4 -2022-06-07T05:00,51.7,84,46.9,0,0,3.1,7.6 -2022-06-07T06:00,55.4,71,46.3,0,0,2.4,6.3 -2022-06-07T07:00,57.5,68,46.9,0,0,1.1,7.2 -2022-06-07T08:00,59.5,66,48.2,0,0,2.5,8.7 -2022-06-07T09:00,62.1,61,48.7,0,0,4.1,11.6 -2022-06-07T10:00,65.5,56,49.4,0,0,4,12.3 -2022-06-07T11:00,68.7,51,49.6,0,0,5,13.9 -2022-06-07T12:00,71.6,47,50.5,0,0,2.9,13.6 -2022-06-07T13:00,74.4,44,50.9,0,0,2.2,11.4 -2022-06-07T14:00,75.7,43,51.7,0,0,1.1,10.1 -2022-06-07T15:00,73.9,44,50.6,0,0,2.8,11.2 -2022-06-07T16:00,76.3,35,46.3,0,0,3.9,11.9 -2022-06-07T17:00,76.1,36,47.1,0,0,7.1,10.7 -2022-06-07T18:00,74.7,43,50.5,0,0,3.3,14.5 -2022-06-07T19:00,68.5,58,53.2,0.004,0,3.8,6.7 -2022-06-07T20:00,65.1,64,52.4,0,0,9,9.4 -2022-06-07T21:00,60.4,72,51.3,0.02,0,12.1,24.6 -2022-06-07T22:00,58.9,72,49.8,0,0,7.2,19.5 -2022-06-07T23:00,58.6,69,48.5,0,0,5.2,11.6 -2022-06-08T00:00,57.9,69,47.8,0,0,3.5,7.8 -2022-06-08T01:00,56.9,73,48.2,0,0,2.9,4.9 -2022-06-08T02:00,54.8,83,49.6,0,0,2.9,4.7 -2022-06-08T03:00,54.6,82,49.1,0,0,4,6.7 -2022-06-08T04:00,52.9,82,47.5,0,0,2.8,6.5 -2022-06-08T05:00,51.4,79,45.1,0,0,2.9,4.5 -2022-06-08T06:00,54.2,64,42.3,0,0,4,7.6 -2022-06-08T07:00,57,59,42.8,0,0,3.9,9.6 -2022-06-08T08:00,60.6,48,40.8,0,0,5.4,12.5 -2022-06-08T09:00,64.5,42,40.8,0,0,6.9,15.4 -2022-06-08T10:00,68.3,37,41.3,0,0,5.7,15.7 -2022-06-08T11:00,72,34,41.9,0,0,5.6,14.5 -2022-06-08T12:00,74.9,30,41,0,0,6.2,15.2 -2022-06-08T13:00,77.3,27,41,0,0,4.6,15.2 -2022-06-08T14:00,79.5,26,41.4,0,0,4.7,13 -2022-06-08T15:00,80.3,25,41.1,0,0,5.6,13.4 -2022-06-08T16:00,80.8,24,40.5,0,0,5.6,13.4 -2022-06-08T17:00,78.8,25,39.7,0,0,8.8,13 -2022-06-08T18:00,76,29,41.5,0,0,11.2,18.8 -2022-06-08T19:00,70,37,42.3,0,0,11.2,20.8 -2022-06-08T20:00,65.2,45,43.4,0,0,5,18.3 -2022-06-08T21:00,62,53,44.7,0,0,4.5,6 -2022-06-08T22:00,60.1,58,45.1,0,0,4.2,6.9 -2022-06-08T23:00,58.7,60,45,0,0,5.7,8.3 -2022-06-09T00:00,59.7,59,45.2,0,0,8.5,13.4 -2022-06-09T01:00,58.5,64,46.4,0,0,7.6,14.5 -2022-06-09T02:00,55.7,68,45.3,0,0,4.9,12.1 -2022-06-09T03:00,53.1,67,42.4,0,0,3.4,7.6 -2022-06-09T04:00,54.5,59,40.5,0,0,5,8.1 -2022-06-09T05:00,53.4,68,43.1,0,0,3.3,7.8 -2022-06-09T06:00,57.8,55,41.6,0,0,1.7,5.1 -2022-06-09T07:00,61,51,42.7,0,0,1,4.9 -2022-06-09T08:00,66.5,47,45.4,0,0,4.6,10.3 -2022-06-09T09:00,72.7,39,46.5,0,0,5.4,11.9 -2022-06-09T10:00,78.7,31,45.9,0,0,3.6,11.4 -2022-06-09T11:00,83.8,21,39.5,0,0,5.4,13.2 -2022-06-09T12:00,86.4,17,36.9,0,0,3.4,12.8 -2022-06-09T13:00,85.4,21,41.5,0.004,0,13.3,22.4 -2022-06-09T14:00,85.9,21,41.9,0,0,6.6,27.7 -2022-06-09T15:00,87,17,36.4,0,0,15.3,27.5 -2022-06-09T16:00,84.5,19,37.9,0,0,17.5,29.1 -2022-06-09T17:00,81.2,28,45.4,0,0,13.3,28.9 -2022-06-09T18:00,79.6,35,49.9,0,0,4.1,21.5 -2022-06-09T19:00,73.6,53,55.6,0,0,3.4,6.9 -2022-06-09T20:00,68.4,57,52.3,0,0,5.1,6.9 -2022-06-09T21:00,68.7,52,50.6,0,0,8.4,12.8 -2022-06-09T22:00,64.7,55,47.9,0,0,4.6,13.4 -2022-06-09T23:00,61.4,52,43.7,0,0,4,7.2 -2022-06-10T00:00,62,48,41.8,0,0,8.4,13.4 -2022-06-10T01:00,61.1,51,42.9,0,0,5.6,14.1 -2022-06-10T02:00,57.3,59,43.2,0,0,6.1,8.7 -2022-06-10T03:00,55.9,58,41.2,0,0,4.6,7.2 -2022-06-10T04:00,53.9,59,39.7,0,0,3.7,6 -2022-06-10T05:00,54.3,74,46.3,0,0,3.3,4.9 -2022-06-10T06:00,58.9,63,46.5,0,0,3.8,7.4 -2022-06-10T07:00,65,55,48.7,0,0,4.3,9.4 -2022-06-10T08:00,70.8,46,49.1,0,0,4.1,11 -2022-06-10T09:00,76.6,36,47.9,0,0,2.9,10.5 -2022-06-10T10:00,81.9,28,45.2,0,0,2.7,9.8 -2022-06-10T11:00,85.4,22,42.7,0,0,3.7,11.2 -2022-06-10T12:00,88,19,40.8,0,0,3.5,12.3 -2022-06-10T13:00,89.4,19,41.4,0,0,3.5,11.2 -2022-06-10T14:00,92.8,16,40,0,0,8.5,18.1 -2022-06-10T15:00,93.1,13,35.9,0,0,14.5,24.6 -2022-06-10T16:00,92.6,14,35.7,0,0,16.6,30.2 -2022-06-10T17:00,89.3,19,41.3,0,0,8.3,28.2 -2022-06-10T18:00,86.1,39,58,0,0,1.9,13.6 -2022-06-10T19:00,79.4,37,50.7,0,0,4.5,6.9 -2022-06-10T20:00,73.9,41,48.7,0,0,6.8,8.1 -2022-06-10T21:00,69.5,45,47,0,0,5.8,8.3 -2022-06-10T22:00,67.2,47,46,0,0,4,7.2 -2022-06-10T23:00,64.8,52,46.5,0,0,4.7,7.4 -2022-06-11T00:00,63.3,51,44.9,0,0,4.1,8.1 -2022-06-11T01:00,62.1,48,42,0,0,4.3,7.6 -2022-06-11T02:00,59.2,51,41.2,0,0,4.2,6.9 -2022-06-11T03:00,57.7,53,40.8,0,0,2.9,6 -2022-06-11T04:00,56.8,53,39.6,0,0,4.2,5.6 -2022-06-11T05:00,58.2,52,40.6,0,0,4.3,6.3 -2022-06-11T06:00,63.6,45,42.1,0,0,6.4,10.1 -2022-06-11T07:00,71.8,43,48.1,0,0,5.2,10.7 -2022-06-11T08:00,82,31,48.5,0,0,5.7,11.4 -2022-06-11T09:00,88.1,20,42.4,0,0,8.1,15.7 -2022-06-11T10:00,91.1,15,37.1,0,0,3.4,15.9 -2022-06-11T11:00,92.8,14,37.1,0,0,3.7,11.4 -2022-06-11T12:00,95.2,13,36,0,0,8.1,17 -2022-06-11T13:00,96.1,13,36.5,0,0,5.4,17 -2022-06-11T14:00,96,13,37,0,0,6.7,14.1 -2022-06-11T15:00,94.7,13,36.5,0,0,10.1,18.1 -2022-06-11T16:00,95,12,34.4,0,0,8.4,19 -2022-06-11T17:00,93.3,16,40.5,0,0,8.2,15.4 -2022-06-11T18:00,86.2,23,44.2,0,0,5.4,14.5 -2022-06-11T19:00,80.2,29,45.4,0,0,4.7,11.6 -2022-06-11T20:00,74.1,32,42.3,0,0,4.9,7.4 -2022-06-11T21:00,71.8,35,42.7,0,0,5.4,8.7 -2022-06-11T22:00,69.2,42,44.9,0,0,5.1,8.7 -2022-06-11T23:00,66.2,48,46.1,0,0,4.4,8.7 -2022-06-12T00:00,64.5,49,45,0,0,4.4,7.2 -2022-06-12T01:00,63.3,47,42.5,0,0,5.1,8.1 -2022-06-12T02:00,62.9,44,40.6,0,0,6.2,9.8 -2022-06-12T03:00,60.7,45,39.4,0,0,5.6,9.8 -2022-06-12T04:00,58.5,51,40.2,0,0,5.7,8.1 -2022-06-12T05:00,62.2,46,41.1,0,0,3.8,6.9 -2022-06-12T06:00,66.2,43,42.9,0,0,7.3,10.3 -2022-06-12T07:00,71.7,40,46,0,0,4.9,12.3 -2022-06-12T08:00,74.8,37,46.8,0,0,3.6,11.4 -2022-06-12T09:00,78.3,33,47.1,0,0,1.9,10.1 -2022-06-12T10:00,82,29,46.7,0,0,2.1,9.2 -2022-06-12T11:00,86.7,24,45.2,0,0,4,11.9 -2022-06-12T12:00,88.8,22,44.5,0,0,13.9,23.9 -2022-06-12T13:00,90.6,16,38.8,0,0,7.6,25.5 -2022-06-12T14:00,90.5,16,37.9,0,0,8.1,17 -2022-06-12T15:00,93.1,13,35.2,0,0,6.3,17 -2022-06-12T16:00,91,15,36.8,0,0,6.9,15.2 -2022-06-12T17:00,86.8,22,43.1,0,0,8.7,13.9 -2022-06-12T18:00,86.2,24,45.1,0,0,7,14.1 -2022-06-12T19:00,81.4,26,43.7,0,0,7.2,12.5 -2022-06-12T20:00,76.6,29,42.1,0,0,8.2,13 -2022-06-12T21:00,74.3,29,40.4,0,0,8.2,14.1 -2022-06-12T22:00,69.9,32,38.9,0,0,7.4,13.2 -2022-06-12T23:00,68.1,32,37,0,0,7.3,12.5 -2022-06-13T00:00,66.7,31,35.2,0,0,7.3,11.6 -2022-06-13T01:00,67.2,29,33.5,0,0,9.1,14.8 -2022-06-13T02:00,66.2,29,33.1,0,0,8.4,14.8 -2022-06-13T03:00,65.2,29,32.4,0,0,8.8,14.1 -2022-06-13T04:00,64.3,29,31.6,0,0,8.6,14.5 -2022-06-13T05:00,64,30,31.9,0,0,6.7,14.3 -2022-06-13T06:00,67.5,30,34.5,0,0,7.8,12.5 -2022-06-13T07:00,73.6,30,39.8,0,0,6,12.8 -2022-06-13T08:00,81.1,21,37.9,0,0,6.3,12.3 -2022-06-13T09:00,86.3,12,28.1,0,0,7.6,15.7 -2022-06-13T10:00,88.8,12,29.4,0,0,5.8,15.4 -2022-06-13T11:00,90.7,11,29.6,0,0,4.4,13.6 -2022-06-13T12:00,92,11,30.7,0,0,4.1,12.3 -2022-06-13T13:00,93.7,10,30,0,0,6.3,14.5 -2022-06-13T14:00,95.9,8,26.1,0,0,3.5,15.7 -2022-06-13T15:00,96.3,7,22.5,0,0,11.5,19 -2022-06-13T16:00,94.5,7,20.6,0,0,19.3,32.9 -2022-06-13T17:00,95.3,6,19,0,0,12.8,32.2 -2022-06-13T18:00,91.5,13,33.8,0,0,4.1,20.8 -2022-06-13T19:00,81.5,29,46,0,0,5.8,7.2 -2022-06-13T20:00,77.8,25,39,0,0,5.8,8.3 -2022-06-13T21:00,74,26,37,0,0,5.9,7.2 -2022-06-13T22:00,72.4,25,34.6,0,0,14.7,22.4 -2022-06-13T23:00,66,29,32.5,0,0,4.8,22.8 -2022-06-14T00:00,63.5,32,33.4,0,0,4.1,7.8 -2022-06-14T01:00,60.7,39,35.3,0,0,3.3,6.7 -2022-06-14T02:00,59.1,43,36.4,0,0,4.5,6.3 -2022-06-14T03:00,59.3,42,36.1,0,0,7.9,12.1 -2022-06-14T04:00,57.4,45,36,0,0,4.5,12.8 -2022-06-14T05:00,58,48,38.6,0,0,3.7,6.9 -2022-06-14T06:00,59.6,47,39.1,0,0,3.7,7.4 -2022-06-14T07:00,62.5,43,39.8,0,0,2.4,8.3 -2022-06-14T08:00,65.9,39,40.6,0,0,6.6,13.9 -2022-06-14T09:00,69.4,32,38.6,0,0,8.7,18.1 -2022-06-14T10:00,71.6,28,36.4,0,0,10.5,20.6 -2022-06-14T11:00,75.1,25,37,0,0,8.9,21.5 -2022-06-14T12:00,75.8,24,36.6,0,0,7.4,18.8 -2022-06-14T13:00,77.5,22,35.2,0,0,14.7,26.4 -2022-06-14T14:00,78.2,20,33.6,0,0,17.1,30.9 -2022-06-14T15:00,81,17,32.6,0,0,11.5,30 -2022-06-14T16:00,81.9,16,32,0,0,10.5,21.5 -2022-06-14T17:00,80.2,19,34.2,0,0,8.4,20.4 -2022-06-14T18:00,77.8,22,35.5,0,0,8.8,17 -2022-06-14T19:00,74.2,27,38.1,0,0,4.3,14.5 -2022-06-14T20:00,68.1,38,41.3,0,0,5.4,6.9 -2022-06-14T21:00,67.1,38,40.4,0,0,6.5,8.3 -2022-06-14T22:00,61.5,52,43.6,0,0,10.9,19.7 -2022-06-14T23:00,59.4,57,44.2,0,0,4,16.8 -2022-06-15T00:00,58.6,60,44.6,0,0,4.5,6.5 -2022-06-15T01:00,57.7,63,45,0,0,6,9.6 -2022-06-15T02:00,56,68,45.8,0,0,4.5,9.4 -2022-06-15T03:00,54.6,76,47,0,0,4,9.2 -2022-06-15T04:00,54.1,79,47.8,0,0,1.8,6.3 -2022-06-15T05:00,52,75,44.2,0,0,9.3,7.4 -2022-06-15T06:00,55.7,66,44.3,0,0,9.6,16.3 -2022-06-15T07:00,61.1,48,41.3,0,0,9.6,17.2 -2022-06-15T08:00,66.7,33,36.5,0,0,12.7,23 -2022-06-15T09:00,71.6,21,29.8,0,0,6.4,22.6 -2022-06-15T10:00,75.7,18,29.8,0,0,1.8,15 -2022-06-15T11:00,79.8,13,24.8,0,0,5.9,15 -2022-06-15T12:00,82.6,10,20.6,0,0,6.6,15.9 -2022-06-15T13:00,84.7,9,19.5,0,0,7.4,17 -2022-06-15T14:00,86.4,8,18.1,0,0,6.8,17 -2022-06-15T15:00,88,6,13.4,0,0,5.7,15.9 -2022-06-15T16:00,89.1,5,10.9,0,0,6.1,14.1 -2022-06-15T17:00,86,8,17.3,0,0,3.6,14.3 -2022-06-15T18:00,85.1,10,21.7,0,0,2.3,8.1 -2022-06-15T19:00,76.6,26,38.7,0,0,5.8,6.3 -2022-06-15T20:00,71.1,17,24.7,0,0,6.2,8.5 -2022-06-15T21:00,68.9,21,27,0,0,5.6,8.5 -2022-06-15T22:00,68.1,33,37.9,0,0,5.7,8.5 -2022-06-15T23:00,64.5,37,37.9,0,0,5.6,8.3 -2022-06-16T00:00,61.9,38,36.2,0,0,4.7,7.4 -2022-06-16T01:00,60.3,38,34.5,0,0,4.6,5.8 -2022-06-16T02:00,59.1,34,30.6,0,0,4.7,7.6 -2022-06-16T03:00,57.6,32,28.2,0,0,4.6,7.6 -2022-06-16T04:00,56,34,27.9,0,0,4.8,7.4 -2022-06-16T05:00,55.1,46,34.9,0,0,4.4,7.6 -2022-06-16T06:00,60.4,39,35.3,0,0,2.2,5.6 -2022-06-16T07:00,65.9,30,33.6,0,0,2.1,6.5 -2022-06-16T08:00,69.3,26,32.7,0,0,3.2,9.8 -2022-06-16T09:00,73.1,26,35.8,0,0,3.5,11.2 -2022-06-16T10:00,77.5,24,37.9,0,0,5.2,13.6 -2022-06-16T11:00,81.6,22,38.6,0,0,5.7,14.8 -2022-06-16T12:00,84.9,19,38.6,0,0,7.4,16.6 -2022-06-16T13:00,87.5,17,36.8,0,0,7,17.9 -2022-06-16T14:00,89.3,16,37,0,0,4.5,16.3 -2022-06-16T15:00,91.2,15,37.8,0,0,6.1,14.5 -2022-06-16T16:00,90.8,17,39.3,0,0,9,14.5 -2022-06-16T17:00,88.7,22,44.9,0,0,13.3,34.9 -2022-06-16T18:00,85.9,24,45,0,0,17.2,30 -2022-06-16T19:00,84.2,24,43.1,0,0,7.8,28 -2022-06-16T20:00,77.3,34,46.9,0,0,5.8,12.8 -2022-06-16T21:00,76.7,34,46.6,0,0,1.4,9.6 -2022-06-16T22:00,70.6,42,46.7,0,0,4.7,6.9 -2022-06-16T23:00,68.9,47,47.8,0,0,4.9,8.3 -2022-06-17T00:00,67.8,50,48.5,0,0,6.1,9.2 -2022-06-17T01:00,65.8,53,48,0,0,4.7,10.1 -2022-06-17T02:00,63.2,56,47.1,0,0,5.9,7.4 -2022-06-17T03:00,61.9,57,46.6,0,0,4,7.4 -2022-06-17T04:00,59.6,62,46.4,0,0,2.9,5.8 -2022-06-17T05:00,65.4,84,60.5,0,0,4.7,4.9 -2022-06-17T06:00,66.6,73,57.5,0,0,3,8.1 -2022-06-17T07:00,68.2,69,57.6,0,0,4.5,10.3 -2022-06-17T08:00,71.3,64,58.5,0,0,3.6,11.4 -2022-06-17T09:00,75.7,54,58,0,0,3.8,11.4 -2022-06-17T10:00,82.1,46,59.3,0,0,5.7,14.5 -2022-06-17T11:00,89.9,26,50.7,0,0,1.3,14.3 -2022-06-17T12:00,93.5,15,38.4,0,0,4.8,13.2 -2022-06-17T13:00,95.9,13,36.7,0,0,8.8,17.7 -2022-06-17T14:00,95.5,12,35.7,0,0,12.1,21.7 -2022-06-17T15:00,95.5,13,36.2,0,0,10.4,22.8 -2022-06-17T16:00,83.1,25,43.7,0.004,0,17.2,41.8 -2022-06-17T17:00,89.4,18,40.2,0,0,14.6,28.6 -2022-06-17T18:00,88,20,42.1,0,0,7.1,24.6 -2022-06-17T19:00,82.6,34,51.6,0,0,3,11.6 -2022-06-17T20:00,77.4,37,48.7,0,0,3.9,9.4 -2022-06-17T21:00,75.2,40,49.2,0,0,5.1,8.5 -2022-06-17T22:00,72.4,43,48.7,0,0,5.4,8.7 -2022-06-17T23:00,71,41,46.2,0,0,5.4,8.5 -2022-06-18T00:00,70.1,42,45.7,0,0,7.1,11.2 -2022-06-18T01:00,69.5,43,46.1,0,0,10.1,15.7 -2022-06-18T02:00,69.5,43,46,0,0,9.8,17 -2022-06-18T03:00,68.2,45,46.1,0,0,7.7,15.4 -2022-06-18T04:00,66.8,48,46.3,0,0,6.3,12.3 -2022-06-18T05:00,65.6,48,45.5,0,0,4.9,10.3 -2022-06-18T06:00,70,44,47.2,0,0,5.1,8.1 -2022-06-18T07:00,76,38,48.3,0,0,5.4,10.7 -2022-06-18T08:00,81.4,30,46.6,0,0,6.4,13.6 -2022-06-18T09:00,83.8,24,43.1,0,0,5.9,13.6 -2022-06-18T10:00,81.7,26,43.3,0,0,8.7,17 -2022-06-18T11:00,85.1,22,41.6,0,0,4.4,17.4 -2022-06-18T12:00,87.9,19,40.5,0,0,4.1,12.5 -2022-06-18T13:00,90.9,17,39.8,0,0,7.5,16.8 -2022-06-18T14:00,92.3,16,39,0,0,6,17 -2022-06-18T15:00,91,17,40.2,0,0,14.8,24.6 -2022-06-18T16:00,78.9,34,48.3,0.012,0,14.7,37.1 -2022-06-18T17:00,81.4,37,52.8,0.004,0,7.4,26.6 -2022-06-18T18:00,81.4,34,50.2,0,0,12.6,20.4 -2022-06-18T19:00,79.8,28,44.2,0,0,9.7,23.5 -2022-06-18T20:00,76.6,33,45.5,0,0,9.1,15.9 -2022-06-18T21:00,74.4,36,45.9,0,0,9.3,14.8 -2022-06-18T22:00,74.1,36,45.1,0,0,8.3,15.9 -2022-06-18T23:00,72.3,38,45.2,0,0,7.4,13.4 -2022-06-19T00:00,71.9,39,45.7,0,0,7.7,12.5 -2022-06-19T01:00,71.1,41,45.9,0,0,7.7,12.8 -2022-06-19T02:00,70.1,42,46.2,0,0,6.9,12.5 -2022-06-19T03:00,69.8,42,45.9,0,0,7.4,12.1 -2022-06-19T04:00,69.2,43,45.9,0,0,6.5,11.9 -2022-06-19T05:00,69.1,48,48.5,0,0,9.8,12.8 -2022-06-19T06:00,71.2,45,48.7,0,0,11.4,19 -2022-06-19T07:00,73.7,41,48.7,0,0,10.9,19.2 -2022-06-19T08:00,75.3,39,48.7,0,0,9.4,18.8 -2022-06-19T09:00,79.2,33,47.9,0,0,7.7,17.9 -2022-06-19T10:00,82.1,29,46.3,0,0,5.2,16.6 -2022-06-19T11:00,84.8,25,45.1,0,0,3.6,13.6 -2022-06-19T12:00,87.9,19,40.8,0,0,8.1,17.7 -2022-06-19T13:00,87.1,18,38.9,0,0,13.9,25.5 -2022-06-19T14:00,90.2,16,37.4,0,0,13.2,26.6 -2022-06-19T15:00,88.8,17,37.9,0,0,16,27.7 -2022-06-19T16:00,87.7,18,38.3,0,0,14.1,30 -2022-06-19T17:00,85.7,22,42.7,0,0,7.2,25.3 -2022-06-19T18:00,83.1,21,39.7,0,0,13.2,21.5 -2022-06-19T19:00,81.1,23,39.8,0,0,11.2,22.1 -2022-06-19T20:00,77.8,25,39.4,0,0,11.5,18.6 -2022-06-19T21:00,76.2,26,39,0,0,10.8,18.6 -2022-06-19T22:00,73.8,29,39.2,0,0,7.9,17.7 -2022-06-19T23:00,71.6,32,40.5,0,0,10.2,15.9 -2022-06-20T00:00,70,36,42,0,0,11.8,19.2 -2022-06-20T01:00,68.5,39,42.7,0,0,11.7,19.2 -2022-06-20T02:00,67.9,41,43.1,0,0,11.1,19 -2022-06-20T03:00,65.6,45,43.7,0,0,9.4,17.9 -2022-06-20T04:00,62.6,51,44,0,0,8.1,15.2 -2022-06-20T05:00,61.5,52,43.7,0,0,4.3,14.8 -2022-06-20T06:00,64.3,48,44.2,0,0,4.5,8.7 -2022-06-20T07:00,69.4,42,45.4,0,0,2.7,8.3 -2022-06-20T08:00,75.5,34,44.9,0,0,7.9,15.2 -2022-06-20T09:00,79.2,24,39.4,0,0,12.7,23.9 -2022-06-20T10:00,81.9,18,33.7,0,0,8.8,23.7 -2022-06-20T11:00,84.7,14,30.8,0,0,12.7,23.7 -2022-06-20T12:00,86.9,10,23.8,0,0,14,26.6 -2022-06-20T13:00,88,9,22.3,0,0,14.2,27.1 -2022-06-20T14:00,88.8,9,22.2,0,0,11.2,26.6 -2022-06-20T15:00,89,9,22.6,0,0,6.1,22.1 -2022-06-20T16:00,89.4,8,21.5,0,0,4.3,14.5 -2022-06-20T17:00,84,10,21.9,0,0,18.1,20.6 -2022-06-20T18:00,84.3,8,16.3,0,0,14.3,29.8 -2022-06-20T19:00,79.3,7,10.3,0,0,12.5,23.7 -2022-06-20T20:00,72.4,12,16.1,0,0,6,20.6 -2022-06-20T21:00,70,16,21,0,0,8.6,15 -2022-06-20T22:00,67.8,15,19,0,0,6.3,13.4 -2022-06-20T23:00,67,14,15.7,0,0,7.4,12.8 -2022-06-21T00:00,63.1,21,22.9,0,0,4.3,12.1 -2022-06-21T01:00,59.1,28,26.4,0,0,3.1,5.8 -2022-06-21T02:00,55.6,37,29.7,0,0,2.8,6.7 -2022-06-21T03:00,53.8,42,31.5,0,0,3.7,5.1 -2022-06-21T04:00,54.7,38,29.8,0,0,6.4,7.8 -2022-06-21T05:00,57,32,27.5,0,0,7.6,8.1 -2022-06-21T06:00,60.2,31,29.8,0,0,7.8,13.6 -2022-06-21T07:00,64.7,26,28.9,0,0,10.7,18.1 -2022-06-21T08:00,69,22,28.4,0,0,13.8,24.2 -2022-06-21T09:00,73.4,19,28,0,0,14.7,26.4 -2022-06-21T10:00,76.6,19,31.1,0,0,15.5,28 -2022-06-21T11:00,78.3,18,31.1,0,0,15.8,29.1 -2022-06-21T12:00,79.1,17,30.3,0,0,15.2,28.9 -2022-06-21T13:00,80.7,16,30,0,0,13.6,28.2 -2022-06-21T14:00,81,16,29.9,0,0,13.6,25.7 -2022-06-21T15:00,81.1,15,29,0,0,13.7,25.1 -2022-06-21T16:00,79.5,16,29,0,0,13.6,24.8 -2022-06-21T17:00,77,17,28.5,0,0,11.5,24.6 -2022-06-21T18:00,75.4,17,27.6,0,0,10.6,20.1 -2022-06-21T19:00,72,19,28,0,0,8.3,17.9 -2022-06-21T20:00,68.2,22,28.2,0,0,6.5,12.8 -2022-06-21T21:00,64.9,28,30.6,0,0,4.4,10.3 -2022-06-21T22:00,63.6,32,32.9,0,0,3.6,6.9 -2022-06-21T23:00,61.4,37,35.2,0,0,3.6,6.3 -2022-06-22T00:00,60.7,38,34.7,0,0,1.1,4 -2022-06-22T01:00,55.8,50,37.3,0,0,2.7,2.9 -2022-06-22T02:00,53.3,58,38.8,0,0,2.6,4.3 -2022-06-22T03:00,53.2,61,40.1,0,0,2.1,4 -2022-06-22T04:00,51.2,66,40.4,0,0,1.6,2.7 -2022-06-22T05:00,50.7,69,40.8,0,0,3.2,3.4 -2022-06-22T06:00,55.1,62,42.3,0,0,1.6,5.4 -2022-06-22T07:00,61.6,45,40.2,0,0,2.9,8.3 -2022-06-22T08:00,67.1,31,35.7,0,0,3.1,9.6 -2022-06-22T09:00,71.4,25,34.3,0,0,4.4,12.1 -2022-06-22T10:00,75.2,23,34.6,0,0,5,13.2 -2022-06-22T11:00,78.4,21,35.2,0,0,5,14.1 -2022-06-22T12:00,80.4,20,35.2,0,0,4.6,13.4 -2022-06-22T13:00,81.7,18,34.6,0,0,4.2,12.5 -2022-06-22T14:00,82.9,17,34.3,0,0,4.7,11.4 -2022-06-22T15:00,83.4,17,34.1,0,0,6.1,12.8 -2022-06-22T16:00,83.2,17,34,0,0,11.2,19.7 -2022-06-22T17:00,81.9,17,32.6,0,0,6,21.7 -2022-06-22T18:00,81.7,16,31.6,0,0,7.8,12.8 -2022-06-22T19:00,76.7,19,31.9,0,0,6.6,14.5 -2022-06-22T20:00,71.2,25,33.6,0,0,5.2,10.3 -2022-06-22T21:00,70.2,28,36,0,0,8.1,13.6 -2022-06-22T22:00,67.6,32,37,0,0,6,12.8 -2022-06-22T23:00,65.4,35,37,0,0,4.9,9.8 -2022-06-23T00:00,62.7,39,37.1,0,0,4.8,7.6 -2022-06-23T01:00,60.6,42,37.6,0,0,4.5,6.9 -2022-06-23T02:00,59.4,44,37.6,0,0,4.3,6.7 -2022-06-23T03:00,57.2,47,37.4,0,0,5.5,6.5 -2022-06-23T04:00,56.5,47,36.5,0,0,5.8,6.9 -2022-06-23T05:00,58.8,43,36.5,0,0,4.7,8.3 -2022-06-23T06:00,63.8,34,35.2,0,0,0.5,5.6 -2022-06-23T07:00,68.5,31,36.4,0,0,4.1,9.2 -2022-06-23T08:00,72.5,29,38.2,0,0,4.8,11.9 -2022-06-23T09:00,77.9,23,36.7,0,0,2.5,12.1 -2022-06-23T10:00,82.9,18,34.5,0,0,3.6,11.4 -2022-06-23T11:00,86.5,13,30,0,0,7.9,17.7 -2022-06-23T12:00,88.4,11,27.8,0,0,6.3,17.7 -2022-06-23T13:00,89.5,11,27.8,0,0,4.8,15.9 -2022-06-23T14:00,90.6,11,28.6,0,0,5,13.9 -2022-06-23T15:00,91.5,11,28.5,0,0,7.1,16.1 -2022-06-23T16:00,90.4,10,27.1,0,0,8.1,17.4 -2022-06-23T17:00,88.4,10,24.2,0,0,1.6,17 -2022-06-23T18:00,87,11,25.3,0,0,5.4,8.1 -2022-06-23T19:00,78.4,21,35.8,0,0,20.7,34.4 -2022-06-23T20:00,76.6,26,38.9,0,0,18.3,33.6 -2022-06-23T21:00,74.3,32,42.5,0,0,16,30 -2022-06-23T22:00,74.5,29,40.6,0,0,14.1,26.2 -2022-06-23T23:00,74.1,29,40.2,0,0,9,22.8 -2022-06-24T00:00,68.4,37,41,0,0,4.6,14.5 -2022-06-24T01:00,64.4,45,42.4,0,0,5.9,7.4 -2022-06-24T02:00,62.2,49,42.8,0,0,5.9,7.2 -2022-06-24T03:00,63.4,46,42,0,0,4.4,7.6 -2022-06-24T04:00,61.7,48,42,0,0,3.8,5.1 -2022-06-24T05:00,62.4,48,42.7,0,0,4.4,6.7 -2022-06-24T06:00,66.2,43,43,0,0,5.3,8.9 -2022-06-24T07:00,72.3,34,42.7,0,0,6.4,12.3 -2022-06-24T08:00,77.5,27,41.2,0,0,3.7,12.8 -2022-06-24T09:00,81.1,24,41,0,0,2.9,10.1 -2022-06-24T10:00,84,19,37.7,0,0,4.3,13.2 -2022-06-24T11:00,86.2,17,36.3,0,0,5.4,14.5 -2022-06-24T12:00,88,16,36,0,0,4.4,14.5 -2022-06-24T13:00,88,16,36.7,0,0,1.3,13.2 -2022-06-24T14:00,89.9,15,36.6,0,0,3.6,11.4 -2022-06-24T15:00,84,25,44.9,0.024,0,14.5,26.4 -2022-06-24T16:00,82.7,22,39.7,0,0,4.5,27.5 -2022-06-24T17:00,69.1,51,50.4,0,0,3.2,11 -2022-06-24T18:00,75.3,39,48.9,0,0,4.7,11.4 -2022-06-24T19:00,75.5,36,46.9,0,0,1.4,10.1 -2022-06-24T20:00,69.8,49,50,0,0,7.7,12.5 -2022-06-24T21:00,66.7,59,52.2,0,0,5.1,12.5 -2022-06-24T22:00,65,62,51.8,0,0,3,8.3 -2022-06-24T23:00,63.4,64,51,0,0,3.6,5.6 -2022-06-25T00:00,62.2,60,48.1,0,0,5.8,9.4 -2022-06-25T01:00,61.2,55,45,0,0,5.8,9.4 -2022-06-25T02:00,60.9,48,41.1,0,0,4.6,9.6 -2022-06-25T03:00,59,46,38.3,0,0,4.8,7.2 -2022-06-25T04:00,59.8,43,37,0,0,3.7,7.6 -2022-06-25T05:00,59.3,68,48.7,0,0,12,22.8 -2022-06-25T06:00,58.7,68,48.4,0,0,15.4,25.3 -2022-06-25T07:00,57.8,62,45,0,0,12.5,25.7 -2022-06-25T08:00,57.1,58,42.4,0,0,9.4,21.7 -2022-06-25T09:00,57.6,55,41.4,0,0,4.8,17 -2022-06-25T10:00,60.1,51,42,0,0,3.3,11.6 -2022-06-25T11:00,62.9,49,43.3,0,0,2.7,11 -2022-06-25T12:00,68.8,41,44,0,0,3.5,12.3 -2022-06-25T13:00,70.4,38,43.8,0,0,7.6,17.4 -2022-06-25T14:00,72.1,36,43.7,0,0,7.9,19.2 -2022-06-25T15:00,73,35,43.5,0,0,3.2,17.9 -2022-06-25T16:00,75.5,32,43.3,0,0,4.2,11.4 -2022-06-25T17:00,72.6,37,44.9,0,0,2.2,11.6 -2022-06-25T18:00,72.6,37,44.9,0,0,4.5,9.6 -2022-06-25T19:00,70,42,46.1,0,0,5.2,9.8 -2022-06-25T20:00,65.1,64,52.5,0.012,0,4,11 -2022-06-25T21:00,62.2,76,54.5,0.012,0,5.5,9.4 -2022-06-25T22:00,62.3,74,53.8,0.004,0,1.9,9.6 -2022-06-25T23:00,61.3,77,54.1,0,0,3.7,5.6 -2022-06-26T00:00,61.9,75,53.8,0,0,5.7,9.8 -2022-06-26T01:00,60,83,54.7,0,0,5.6,9.6 -2022-06-26T02:00,59.6,82,54.1,0,0,7.4,12.1 -2022-06-26T03:00,59.6,75,51.6,0.004,0,8,13.9 -2022-06-26T04:00,59.1,59,44.9,0,0,8.8,14.5 -2022-06-26T05:00,56.7,65,44.9,0,0,7,15.4 -2022-06-26T06:00,57.7,53,40.9,0,0,6,12.5 -2022-06-26T07:00,59,44,37.1,0,0,5.3,11.2 -2022-06-26T08:00,60.3,42,37.1,0,0,4,10.7 -2022-06-26T09:00,63.2,40,38.7,0,0,3.4,11.4 -2022-06-26T10:00,64.8,40,40,0,0,1.9,11.4 -2022-06-26T11:00,68.4,40,42.8,0,0,2.7,11.2 -2022-06-26T12:00,73,38,45.8,0,0,3.6,12.1 -2022-06-26T13:00,73.5,40,47.6,0,0,4.3,12.5 -2022-06-26T14:00,73.4,40,47.6,0.004,0,2.5,12.3 -2022-06-26T15:00,73.8,40,47.8,0,0,5.2,12.8 -2022-06-26T16:00,70.1,49,50.2,0.008,0,9.8,17.7 -2022-06-26T17:00,68.2,46,46.7,0,0,4.5,18.6 -2022-06-26T18:00,67.5,46,46,0.008,0,9.8,17 -2022-06-26T19:00,66.5,52,48.3,0,0,7.6,17 -2022-06-26T20:00,65.8,55,49,0,0,6.6,12.5 -2022-06-26T21:00,64.1,61,50.4,0,0,2,10.3 -2022-06-26T22:00,62.3,67,51.3,0,0,2.9,3.8 -2022-06-26T23:00,61.9,66,50.5,0,0,2.3,4 -2022-06-27T00:00,61.5,65,49.8,0,0,3.1,4.7 -2022-06-27T01:00,60.7,67,49.6,0,0,3,6.7 -2022-06-27T02:00,61.2,64,48.9,0,0,2.5,4.9 -2022-06-27T03:00,60,66,48.7,0,0,1.6,3.1 -2022-06-27T04:00,56.7,74,48.5,0,0,2.1,3.4 -2022-06-27T05:00,55.1,85,50.8,0,0,3.7,4.3 -2022-06-27T06:00,58.3,75,50.4,0,0,3.4,7.2 -2022-06-27T07:00,63.7,61,49.9,0,0,4.5,9.8 -2022-06-27T08:00,68.2,49,48.2,0,0,4.1,11.9 -2022-06-27T09:00,72.4,41,47.2,0,0,3.2,11.4 -2022-06-27T10:00,76.1,35,46.6,0,0,3.8,12.3 -2022-06-27T11:00,79.6,30,45.5,0,0,4.3,13.2 -2022-06-27T12:00,82.8,22,40,0,0,6.2,15.9 -2022-06-27T13:00,81.9,20,36.6,0,0,13.8,26.8 -2022-06-27T14:00,83.8,18,35.2,0,0,8.8,26.4 -2022-06-27T15:00,84.1,18,36.1,0,0,10.2,21 -2022-06-27T16:00,83.5,18,35.2,0,0,7.8,20.8 -2022-06-27T17:00,83.6,18,35.4,0,0,11.1,16.8 -2022-06-27T18:00,82.2,18,34.8,0,0,10,20.1 -2022-06-27T19:00,78.1,24,38.7,0,0,2.8,17.7 -2022-06-27T20:00,74.8,27,38.5,0,0,5.9,9.6 -2022-06-27T21:00,69.9,37,42.6,0,0,3.5,9.6 -2022-06-27T22:00,66.9,41,42.2,0,0,7.1,10.7 -2022-06-27T23:00,64.1,43,41.4,0,0,5.9,11.9 -2022-06-28T00:00,61.5,48,41.9,0,0,4.3,9.8 -2022-06-28T01:00,59.5,53,42.4,0,0,3.4,7.4 -2022-06-28T02:00,57.6,56,42,0,0,3.3,5.8 -2022-06-28T03:00,56.5,58,41.8,0,0,4.1,6.7 -2022-06-28T04:00,55.1,58,40.8,0,0,4.1,6.9 -2022-06-28T05:00,56.8,53,39.7,0,0,3.8,6.7 -2022-06-28T06:00,60.8,46,39.8,0,0,4,7.4 -2022-06-28T07:00,67.7,38,40.9,0,0,2.8,8.5 -2022-06-28T08:00,75.2,28,39.6,0,0,3.1,8.7 -2022-06-28T09:00,81.4,19,35.1,0,0,4,11.6 -2022-06-28T10:00,85.4,16,33.9,0,0,4.1,12.1 -2022-06-28T11:00,87.7,12,29.6,0,0,6.7,15.9 -2022-06-28T12:00,89.5,11,28.2,0,0,8.9,19 -2022-06-28T13:00,90.1,11,28.8,0,0,8.1,19.2 -2022-06-28T14:00,90.6,11,28.9,0,0,6.5,18.1 -2022-06-28T15:00,91.2,11,28.9,0,0,5,15.9 -2022-06-28T16:00,90.3,11,28.3,0,0,4.3,13.2 -2022-06-28T17:00,90.6,10,26,0,0,3.5,12.3 -2022-06-28T18:00,83.2,20,37.6,0,0,10.5,21.3 -2022-06-28T19:00,79.9,23,39.3,0,0,7.8,17.4 -2022-06-28T20:00,76,29,41.9,0,0,8.1,14.1 -2022-06-28T21:00,73.4,30,40,0,0,6.5,13 -2022-06-28T22:00,68.9,36,40.9,0,0,4.3,10.5 -2022-06-28T23:00,67.2,40,42.1,0,0,6.7,10.5 -2022-06-29T00:00,66.5,40,41.1,0,0,8.9,14.3 -2022-06-29T01:00,66,38,39.4,0,0,8.8,15.2 -2022-06-29T02:00,64.8,37,38.2,0,0,6.7,14.3 -2022-06-29T03:00,62.6,40,37.8,0,0,4.9,10.7 -2022-06-29T04:00,60.8,42,37.3,0,0,5.6,7.4 -2022-06-29T05:00,62.5,42,39.1,0,0,4.6,7.6 -2022-06-29T06:00,66.8,36,39.1,0,0,5.1,8.3 -2022-06-29T07:00,73.1,31,41.1,0,0,2.9,8.5 -2022-06-29T08:00,81.7,24,41.9,0,0,3,8.7 -2022-06-29T09:00,88.1,16,36.1,0,0,3.5,11.4 -2022-06-29T10:00,91,13,34.2,0,0,0.5,13.9 -2022-06-29T11:00,92.8,13,35.2,0,0,3.2,10.7 -2022-06-29T12:00,88.3,20,42.8,0.016,0,5.4,14.3 -2022-06-29T13:00,88,15,35.2,0.012,0,5.6,14.5 -2022-06-29T14:00,89.7,18,40.6,0,0,14.5,24.6 -2022-06-29T15:00,84.7,25,44.6,0,0,16.1,34 -2022-06-29T16:00,86,22,43.2,0,0,9.7,28.6 -2022-06-29T17:00,82.5,30,48.1,0,0,10.6,25.3 -2022-06-29T18:00,81.7,28,45.1,0,0,6.9,23.9 -2022-06-29T19:00,79.9,33,48.1,0,0,2.8,11.4 -2022-06-29T20:00,74.5,36,45.9,0,0,21.3,34 -2022-06-29T21:00,67,62,53.8,0.008,0,17.9,35.8 -2022-06-29T22:00,64.9,81,58.7,0.047,0,9.2,28 -2022-06-29T23:00,63.4,79,56.8,0,0,7.9,14.8 -2022-06-30T00:00,61.1,89,57.9,0,0,5.7,12.8 -2022-06-30T01:00,59.5,87,55.7,0,0,5.6,9.4 -2022-06-30T02:00,59.2,81,53.2,0,0,4.7,9.2 -2022-06-30T03:00,57.9,82,52.5,0,0,4.4,7.6 -2022-06-30T04:00,57.9,81,52,0,0,5.2,6 -2022-06-30T05:00,66.6,57,50.9,0,0,9.3,6.5 -2022-06-30T06:00,67.8,56,51.6,0,0,9.3,15.9 -2022-06-30T07:00,70.9,52,52.6,0,0,4.7,15 -2022-06-30T08:00,79.7,34,48.8,0,0,5.4,11.4 -2022-06-30T09:00,85.1,25,45.2,0,0,7.4,16.3 -2022-06-30T10:00,84.2,26,46,0,0,9,18.6 -2022-06-30T11:00,76.6,45,53.4,0.035,0,7.5,19.9 -2022-06-30T12:00,77.8,45,54.5,0.035,0,3.6,18.8 -2022-06-30T13:00,81.1,32,48.7,0.004,0,5.9,15.2 -2022-06-30T14:00,83.2,28,46.3,0,0,6,16.3 -2022-06-30T15:00,83.7,25,44.3,0,0,2.1,14.5 -2022-06-30T16:00,72,57,55.8,0.028,0,14.3,21.7 -2022-06-30T17:00,73.7,41,48.8,0.031,0,17.8,27.3 -2022-06-30T18:00,73.8,39,47,0,0,14.2,29.5 -2022-06-30T19:00,71.8,42,47.8,0,0,12,23.7 -2022-06-30T20:00,71.8,42,47.2,0,0,5.3,19.2 -2022-06-30T21:00,68.8,52,50.3,0,0,12.8,30.4 -2022-06-30T22:00,66.7,56,50.3,0,0,7.4,20.1 -2022-06-30T23:00,65.2,60,51.2,0,0,3.5,12.1 -2022-07-01T00:00,62.5,66,50.9,0,0,2.2,4.5 -2022-07-01T01:00,61,71,51.4,0,0,3.2,5.1 -2022-07-01T02:00,59.5,76,52.1,0,0,3.8,5.1 -2022-07-01T03:00,59.5,76,52.1,0,0,2.3,4.9 -2022-07-01T04:00,57.5,80,51.4,0,0,2.7,3.8 -2022-07-01T05:00,58.6,85,54.1,0,0,3.9,5.4 -2022-07-01T06:00,60,80,53.8,0,0,3.8,7.8 -2022-07-01T07:00,62.2,73,53.3,0,0,2.5,8.3 -2022-07-01T08:00,65.2,64,52.6,0,0,2.6,9.4 -2022-07-01T09:00,68.4,55,51.5,0,0,3.9,11.6 -2022-07-01T10:00,71.1,50,51.7,0,0,4.9,13.6 -2022-07-01T11:00,74.1,44,50.9,0,0,3.4,13.9 -2022-07-01T12:00,76.3,39,49.5,0,0,4.8,13.6 -2022-07-01T13:00,79.2,32,46.7,0,0,6.2,15.7 -2022-07-01T14:00,78.9,32,46.5,0,0,4.7,16.8 -2022-07-01T15:00,81.8,26,44,0,0,5,13.4 -2022-07-01T16:00,80.8,27,43.5,0,0,6.9,14.5 -2022-07-01T17:00,79.2,37,50.4,0,0,0.5,17.9 -2022-07-01T18:00,79.3,35,49.4,0,0,4.5,9.4 -2022-07-01T19:00,73,49,52.4,0,0,12.1,20.1 -2022-07-01T20:00,70.3,56,54,0,0,3.8,20.4 -2022-07-01T21:00,68.5,62,55,0,0,4.3,6.5 -2022-07-01T22:00,66.8,67,55.4,0,0,6.6,10.7 -2022-07-01T23:00,64.9,69,54.4,0,0,4.4,10.7 -2022-07-02T00:00,64.6,62,51.2,0,0,5.5,9.4 -2022-07-02T01:00,65.7,51,46.9,0,0,4.4,10.1 -2022-07-02T02:00,66.2,49,46.3,0,0,0.9,7.4 -2022-07-02T03:00,65.1,52,47.1,0,0,0.9,1.6 -2022-07-02T04:00,59.8,62,46.7,0,0,4.5,5.6 -2022-07-02T05:00,57.2,71,47.8,0,0,2.6,5.8 -2022-07-02T06:00,59.8,65,48.2,0,0,0.9,5.6 -2022-07-02T07:00,64.9,57,49.2,0,0,1.8,7.4 -2022-07-02T08:00,70.3,47,49,0,0,1.1,7.4 -2022-07-02T09:00,75,39,48.7,0,0,3.6,11 -2022-07-02T10:00,78.8,36,49.3,0,0,4.3,12.8 -2022-07-02T11:00,81.8,29,46.9,0,0,5.7,14.8 -2022-07-02T12:00,84.1,24,44,0,0,6.1,15.7 -2022-07-02T13:00,85.6,22,42.2,0,0,5.7,15.9 -2022-07-02T14:00,86,20,40.5,0,0,5.1,15 -2022-07-02T15:00,87.1,19,39.7,0,0,4.9,14.1 -2022-07-02T16:00,86.9,18,38.8,0,0,3.8,13.2 -2022-07-02T17:00,78,39,51.4,0,0,12.3,11 -2022-07-02T18:00,77.6,41,52,0.024,0,3.9,21.5 -2022-07-02T19:00,76.6,42,51.4,0,0,4.8,8.9 -2022-07-02T20:00,72,55,54.7,0,0,3.6,8.3 -2022-07-02T21:00,69.3,60,54.8,0,0,3.3,5.4 -2022-07-02T22:00,67.3,61,53.2,0,0,3.9,6.3 -2022-07-02T23:00,66.3,58,51.3,0,0,4.6,7.6 -2022-07-03T00:00,68.1,53,50.5,0,0,5.9,9.4 -2022-07-03T01:00,69,52,50.6,0,0,7,11.2 -2022-07-03T02:00,68.1,53,50.5,0,0,8.1,12.5 -2022-07-03T03:00,67,55,50.1,0,0,9.2,14.8 -2022-07-03T04:00,66.1,56,50.2,0,0,8.7,15.2 -2022-07-03T05:00,65.8,57,50.1,0,0,6.5,14.1 -2022-07-03T06:00,68,54,50.8,0,0,3.6,10.1 -2022-07-03T07:00,70.3,44,47.5,0,0,4.9,11 -2022-07-03T08:00,74.3,36,45.9,0,0,2.2,10.7 -2022-07-03T09:00,78.4,32,45.9,0,0,2.1,9.4 -2022-07-03T10:00,83.1,28,46.2,0,0,0.4,9.4 -2022-07-03T11:00,86.6,25,46.9,0,0,2.9,10.7 -2022-07-03T12:00,87.8,21,42.5,0,0,2.9,14.8 -2022-07-03T13:00,91.4,16,38.7,0,0,6.2,14.8 -2022-07-03T14:00,89.2,20,42.9,0,0,13.7,22.8 -2022-07-03T15:00,85.8,24,44.7,0,0,13.6,34.7 -2022-07-03T16:00,85.6,25,45.2,0,0,11.1,24.2 -2022-07-03T17:00,76.3,52,57.2,0,0,7.4,24.4 -2022-07-03T18:00,76.8,48,55.5,0,0,6.9,11.6 -2022-07-03T19:00,74.2,53,55.9,0.004,0,9.7,18.1 -2022-07-03T20:00,71.9,62,58.1,0.004,0,9.9,15.7 -2022-07-03T21:00,70.1,67,58.5,0,0,9.4,16.3 -2022-07-03T22:00,69.4,66,57.4,0,0,7.9,15 -2022-07-03T23:00,67.9,63,54.9,0,0,5.1,12.8 -2022-07-04T00:00,67.8,56,51.5,0,0,5,8.1 -2022-07-04T01:00,66.7,55,50,0,0,4.3,8.1 -2022-07-04T02:00,65.4,55,48.9,0,0,4.8,7.4 -2022-07-04T03:00,63.9,56,48,0,0,4,7.6 -2022-07-04T04:00,62.7,57,47.4,0,0,4.2,6.3 -2022-07-04T05:00,62.6,58,47.7,0,0,4.6,7.6 -2022-07-04T06:00,65.7,50,46.5,0,0,5.9,9.6 -2022-07-04T07:00,71.8,43,48.4,0,0,3.8,9.6 -2022-07-04T08:00,78.8,34,47.9,0,0,1.6,9.2 -2022-07-04T09:00,83.7,27,45.9,0,0,3.1,10.1 -2022-07-04T10:00,87.2,21,42.4,0,0,3.2,11.2 -2022-07-04T11:00,89,18,39.4,0,0,4.6,12.8 -2022-07-04T12:00,90.3,17,39.7,0,0,6.4,15.7 -2022-07-04T13:00,91,17,39.9,0,0,5.4,15.7 -2022-07-04T14:00,91.8,16,39.7,0,0,4.8,14.3 -2022-07-04T15:00,92.1,16,39.4,0,0,4.3,13.4 -2022-07-04T16:00,92.1,16,39.8,0,0,4.1,12.5 -2022-07-04T17:00,85.6,25,46.2,0,0,15.5,11.2 -2022-07-04T18:00,81.8,32,48.9,0,0,12.5,30.6 -2022-07-04T19:00,81.1,31,47.5,0,0,8.7,20.6 -2022-07-04T20:00,76,36,47.5,0,0,3,14.5 -2022-07-04T21:00,73.9,40,48.2,0,0,3.3,5.1 -2022-07-04T22:00,73.2,41,48.2,0,0,6.3,10.3 -2022-07-04T23:00,70.4,45,48.1,0,0,5.6,10.3 -2022-07-05T00:00,67.9,50,48.6,0,0,3.6,8.9 -2022-07-05T01:00,66.7,52,48.4,0,0,3.8,5.8 -2022-07-05T02:00,64.9,56,49.1,0,0,3.6,6.3 -2022-07-05T03:00,64.2,59,49.4,0,0,3.8,6.5 -2022-07-05T04:00,63.7,60,49.7,0,0,3.7,6 -2022-07-05T05:00,62.1,64,49.7,0,0,4.2,4.7 -2022-07-05T06:00,65.5,54,48.3,0,0,1.4,4.7 -2022-07-05T07:00,70.2,49,50.1,0,0,1.1,5.8 -2022-07-05T08:00,77.2,36,48,0,0,0.9,6.7 -2022-07-05T09:00,82.9,27,45.1,0,0,4.8,11.9 -2022-07-05T10:00,86.7,22,43.3,0,0,0.5,13 -2022-07-05T11:00,87.6,21,42.4,0,0,4.7,13 -2022-07-05T12:00,90.2,17,39.7,0,0,3.2,13.4 -2022-07-05T13:00,90.5,17,39.2,0,0,3.6,12.1 -2022-07-05T14:00,91.9,16,39.3,0,0,3.3,12.3 -2022-07-05T15:00,92.8,16,39.6,0,0,4.5,12.3 -2022-07-05T16:00,85.3,25,45.4,0,0,19.6,31.3 -2022-07-05T17:00,80.6,33,48.6,0.008,0,11.2,35.6 -2022-07-05T18:00,79.9,33,48,0,0,9.2,19.7 -2022-07-05T19:00,77.4,36,48.5,0,0,7.6,16.8 -2022-07-05T20:00,74.5,40,48.3,0,0,6.3,12.3 -2022-07-05T21:00,73.4,40,47.8,0,0,4.6,10.5 -2022-07-05T22:00,72.6,41,47.7,0,0,2.9,7.8 -2022-07-05T23:00,69.8,45,47.6,0,0,3.1,5.6 -2022-07-06T00:00,69.4,47,48.3,0,0,2.8,4.7 -2022-07-06T01:00,69.1,46,47.7,0,0,4.7,8.1 -2022-07-06T02:00,67.2,51,48.2,0,0,6.4,10.3 -2022-07-06T03:00,68.2,50,49.1,0,0,5.7,12.5 -2022-07-06T04:00,65.4,64,53,0,0,3.4,9.8 -2022-07-06T05:00,64.3,73,55.5,0,0,3.1,6 -2022-07-06T06:00,64.5,74,55.9,0,0,5,9.2 -2022-07-06T07:00,65.8,70,55.7,0.004,0,4.2,9.2 -2022-07-06T08:00,68.5,65,56.2,0,0,8.7,17.2 -2022-07-06T09:00,71.2,60,56.8,0,0,7,18.1 -2022-07-06T10:00,74.9,53,56.5,0,0,5.2,16.1 -2022-07-06T11:00,76.8,49,55.9,0,0,5.1,14.8 -2022-07-06T12:00,77.6,46,55.4,0,0,3.6,14.8 -2022-07-06T13:00,80.7,40,54.2,0,0,5.4,14.5 -2022-07-06T14:00,79.6,43,55.4,0,0,7,15.9 -2022-07-06T15:00,73.9,56,57,0.098,0,3.8,19.7 -2022-07-06T16:00,76.9,48,55.9,0,0,6,13.2 -2022-07-06T17:00,67.4,81,61.3,0,0,7.5,15.7 -2022-07-06T18:00,69.6,73,60.5,0.008,0,6.4,13.6 -2022-07-06T19:00,69.4,71,59.5,0,0,5.9,13 -2022-07-06T20:00,68.3,75,60,0,0,2.9,10.7 -2022-07-06T21:00,67,80,60.7,0,0,2,4.7 -2022-07-06T22:00,65.7,85,61.1,0,0,2.9,4.7 -2022-07-06T23:00,64.3,89,61.1,0,0,3.7,6 -2022-07-07T00:00,63.2,90,60.3,0,0,3.7,6 -2022-07-07T01:00,61.3,88,57.7,0,0,4.6,7.6 -2022-07-07T02:00,60.1,78,53.3,0,0,5.4,8.9 -2022-07-07T03:00,59.7,65,48.1,0,0,4.6,8.9 -2022-07-07T04:00,59.5,61,46.1,0,0,4.2,7.4 -2022-07-07T05:00,58.8,66,47.5,0,0,2.3,6.5 -2022-07-07T06:00,62,56,46,0,0,5.4,9.2 -2022-07-07T07:00,68.3,52,49.7,0,0,6.8,13 -2022-07-07T08:00,76.6,34,46,0,0,5.1,13.9 -2022-07-07T09:00,82.1,26,44,0,0,2,12.1 -2022-07-07T10:00,85.8,21,41.9,0,0,4.8,15.2 -2022-07-07T11:00,87.4,20,41.4,0,0,4.7,15.4 -2022-07-07T12:00,88.4,19,41.4,0,0,3.4,13.9 -2022-07-07T13:00,89.7,18,41,0,0,6.4,15 -2022-07-07T14:00,87.4,21,42.9,0,0,13.3,24.6 -2022-07-07T15:00,85.4,22,41.9,0.004,0,9.8,26.2 -2022-07-07T16:00,85.4,22,42.4,0,0,11.6,20.6 -2022-07-07T17:00,78.5,37,50.5,0,0,6.7,25.7 -2022-07-07T18:00,77.3,40,51.3,0.004,0,4.6,13.6 -2022-07-07T19:00,77.5,38,49.7,0,0,5.6,10.7 -2022-07-07T20:00,73.2,49,52.8,0,0,7.5,12.8 -2022-07-07T21:00,69.5,58,53.9,0,0,4.5,12.1 -2022-07-07T22:00,67,66,55.1,0,0,4.9,8.3 -2022-07-07T23:00,64.9,71,55.4,0,0,5.3,8.9 -2022-07-08T00:00,63.1,75,55,0,0,4.3,8.7 -2022-07-08T01:00,62.1,79,55.4,0,0,3.4,6.9 -2022-07-08T02:00,60.8,78,53.9,0,0,4.2,6.7 -2022-07-08T03:00,59.1,77,51.8,0,0,3.2,6.9 -2022-07-08T04:00,58.2,76,50.6,0,0,2.7,4 -2022-07-08T05:00,60.3,78,53.5,0,0,2.4,3.8 -2022-07-08T06:00,62.1,70,52.1,0,0,4.5,8.5 -2022-07-08T07:00,66.4,60,52.2,0,0,3.6,9.4 -2022-07-08T08:00,72.2,46,50.5,0,0,4.2,11 -2022-07-08T09:00,78.7,33,47.5,0,0,3.7,11.4 -2022-07-08T10:00,85,25,44.9,0,0,2.7,11.4 -2022-07-08T11:00,88.8,19,40.8,0,0,3.8,12.8 -2022-07-08T12:00,90.6,15,36.1,0,0,6.3,14.5 -2022-07-08T13:00,91,15,36.3,0,0,7.5,17.7 -2022-07-08T14:00,92.1,14,36.3,0,0,9.2,19 -2022-07-08T15:00,92.1,14,36.1,0,0,5.8,19.9 -2022-07-08T16:00,92.7,14,36.4,0,0,4.2,14.1 -2022-07-08T17:00,90.3,19,42.7,0,0,8.3,25.3 -2022-07-08T18:00,82,34,50.5,0,0,9.9,21.9 -2022-07-08T19:00,79.6,38,51.5,0,0,7,17 -2022-07-08T20:00,76.7,45,53.6,0,0,9.2,15.4 -2022-07-08T21:00,73,51,53.9,0,0,7.4,14.8 -2022-07-08T22:00,70.8,54,53.2,0,0,9.4,14.5 -2022-07-08T23:00,69.4,54,52.3,0,0,9.9,15.7 -2022-07-09T00:00,68,55,51.3,0,0,9.3,15.7 -2022-07-09T01:00,66.3,55,49.8,0,0,7.8,14.8 -2022-07-09T02:00,64.8,55,48.2,0,0,6.5,12.5 -2022-07-09T03:00,64.2,54,47.3,0,0,5.6,10.5 -2022-07-09T04:00,61.7,59,47.1,0,0,4.4,8.9 -2022-07-09T05:00,62.4,59,47.8,0,0,3.4,5.6 -2022-07-09T06:00,66.5,49,46.8,0,0,4.3,8.1 -2022-07-09T07:00,73.1,41,48,0,0,2.1,8.1 -2022-07-09T08:00,80.1,32,47.8,0,0,1.8,7.4 -2022-07-09T09:00,85.9,25,45.8,0,0,3.4,10.5 -2022-07-09T10:00,91.1,17,41,0,0,5.6,13.6 -2022-07-09T11:00,94.6,12,33.5,0,0,5.6,14.8 -2022-07-09T12:00,95.6,11,32.3,0,0,4.6,14.3 -2022-07-09T13:00,96.4,11,33.4,0,0,4,13.4 -2022-07-09T14:00,96.5,11,33.6,0,0,3.5,12.5 -2022-07-09T15:00,96.7,11,33,0,0,3,11.6 -2022-07-09T16:00,97.2,10,32,0,0,3.2,10.7 -2022-07-09T17:00,98.6,10,32.6,0,0,11.1,10.1 -2022-07-09T18:00,94.8,11,32.5,0,0,8.7,18.6 -2022-07-09T19:00,89.5,17,38.3,0,0,7.8,17.9 -2022-07-09T20:00,86,19,39.5,0,0,12.8,19.7 -2022-07-09T21:00,82.2,25,42.9,0,0,9.2,20.8 -2022-07-09T22:00,78.2,28,42.6,0,0,5.8,15 -2022-07-09T23:00,74.8,31,42.5,0,0,4.7,9.4 -2022-07-10T00:00,73,34,43,0,0,5.5,8.7 -2022-07-10T01:00,71,37,43.5,0,0,6,9.8 -2022-07-10T02:00,69.7,38,42.9,0,0,5.9,10.1 -2022-07-10T03:00,68.5,38,42.2,0,0,5.7,9.6 -2022-07-10T04:00,66.7,39,41.3,0,0,5,9.2 -2022-07-10T05:00,65.7,40,40.6,0,0,3.8,8.7 -2022-07-10T06:00,69.4,36,41.6,0,0,5.8,9.6 -2022-07-10T07:00,76.7,33,45.8,0,0,3.7,9.8 -2022-07-10T08:00,86.6,26,47.2,0,0,3.3,9.6 -2022-07-10T09:00,94,17,42.4,0,0,5.1,11.9 -2022-07-10T10:00,95.9,11,34.1,0,0,4.1,13.9 -2022-07-10T11:00,97,11,33.9,0,0,1.2,11.4 -2022-07-10T12:00,97.8,12,35.6,0,0,2,9.2 -2022-07-10T13:00,97.9,11,35.6,0,0,4.6,13.9 -2022-07-10T14:00,97.5,12,36.4,0,0,5.8,15.7 -2022-07-10T15:00,92.1,19,44.6,0,0,15.9,26.8 -2022-07-10T16:00,93.1,16,40.8,0,0,5.1,29.3 -2022-07-10T17:00,83.2,30,48.2,0,0,21.7,25.3 -2022-07-10T18:00,69.7,77,62.2,0.055,0,12.4,35.1 -2022-07-10T19:00,70.4,75,62.1,0.043,0,6.9,22.6 -2022-07-10T20:00,71,82,65.1,0,0,6.8,11 -2022-07-10T21:00,71.1,67,59.4,0,0,7.4,13.2 -2022-07-10T22:00,70.3,58,54.8,0,0,8.4,13.4 -2022-07-10T23:00,70.3,56,54,0,0,8,13.6 -2022-07-11T00:00,68.4,61,54.5,0,0,5.5,12.5 -2022-07-11T01:00,68.2,58,52.6,0,0,4.6,8.7 -2022-07-11T02:00,67.8,51,49.2,0,0,4.8,7.8 -2022-07-11T03:00,64.9,55,48.1,0,0,5.3,7.4 -2022-07-11T04:00,63.8,59,49.1,0,0,4.9,6.5 -2022-07-11T05:00,67.2,47,46.1,0,0,8.6,20.1 -2022-07-11T06:00,64.9,60,50.9,0,0,12.2,20.1 -2022-07-11T07:00,64.2,64,52,0,0,14.9,25.5 -2022-07-11T08:00,63.1,66,51.7,0,0,10.8,25.9 -2022-07-11T09:00,65,61,51.4,0,0,8.4,19.7 -2022-07-11T10:00,67.4,55,50.8,0,0,5.8,16.6 -2022-07-11T11:00,69.4,51,50.5,0,0,4,14.3 -2022-07-11T12:00,72.2,46,50.2,0,0,3.8,13.2 -2022-07-11T13:00,75.4,40,49.6,0,0,4.9,14.5 -2022-07-11T14:00,77.5,35,47.8,0,0,4.3,15 -2022-07-11T15:00,80.4,32,47.9,0,0,3.3,13.6 -2022-07-11T16:00,80.4,33,48.3,0,0,4.9,12.5 -2022-07-11T17:00,80.1,36,50.5,0,0,1.7,13 -2022-07-11T18:00,79.4,36,50.3,0,0,3.5,8.5 -2022-07-11T19:00,78.7,37,50.3,0,0,0.7,8.3 -2022-07-11T20:00,75.2,46,53.1,0,0,1.8,3.4 -2022-07-11T21:00,74.3,46,52.1,0,0,2.2,2.7 -2022-07-11T22:00,70.6,53,52.7,0,0,2.7,4.7 -2022-07-11T23:00,68,59,53.1,0,0,4,6.5 -2022-07-12T00:00,65.3,65,53.4,0,0,2.2,6.7 -2022-07-12T01:00,63.6,71,53.9,0,0,2.1,4 -2022-07-12T02:00,62.7,72,53.5,0,0,2.1,3.6 -2022-07-12T03:00,61.7,72,52.5,0,0,3.1,5.1 -2022-07-12T04:00,61.2,69,50.9,0,0,3.6,5.8 -2022-07-12T05:00,60.6,72,51.4,0,0,2.7,5.8 -2022-07-12T06:00,63,64,50.5,0,0,1.1,4.9 -2022-07-12T07:00,67.7,55,51.1,0,0,2.2,6.9 -2022-07-12T08:00,71.6,48,50.6,0,0,2.8,9.8 -2022-07-12T09:00,75.5,42,51,0,0,1.6,9.8 -2022-07-12T10:00,80.4,35,50.5,0,0,3,11.4 -2022-07-12T11:00,85.7,27,47.9,0,0,2.4,11.4 -2022-07-12T12:00,87.4,26,48,0.016,0,4.4,12.5 -2022-07-12T13:00,88.5,18,39.9,0,0,3.6,14.8 -2022-07-12T14:00,90.2,14,34.2,0,0,5.6,13.6 -2022-07-12T15:00,90.5,15,36,0,0,5.9,16.3 -2022-07-12T16:00,90.7,14,35.2,0,0,6.5,14.5 -2022-07-12T17:00,90.3,16,38.8,0,0,10.8,14.3 -2022-07-12T18:00,83.2,27,45.8,0,0,15.9,29.3 -2022-07-12T19:00,81.4,29,46.2,0,0,10.2,26.2 -2022-07-12T20:00,76.8,34,46.5,0,0,5.1,16.3 -2022-07-12T21:00,74.3,39,47.8,0,0,5.4,9.2 -2022-07-12T22:00,71,46,49.3,0,0,3.4,8.9 -2022-07-12T23:00,68.6,51,49.9,0,0,5.7,8.3 -2022-07-13T00:00,67.3,53,49.7,0,0,6.2,10.7 -2022-07-13T01:00,66.5,52,48.2,0,0,7.7,12.1 -2022-07-13T02:00,65.1,50,46,0,0,6.1,13 -2022-07-13T03:00,65.3,49,45.4,0,0,4.3,9.6 -2022-07-13T04:00,62.9,51,44.2,0,0,5.4,7.2 -2022-07-13T05:00,61.9,50,43.3,0,0,4.4,6.9 -2022-07-13T06:00,66.8,42,43.2,0,0,4.3,7.2 -2022-07-13T07:00,72.9,36,44.1,0,0,4.8,9.8 -2022-07-13T08:00,80.8,25,41.6,0,0,5.2,11.6 -2022-07-13T09:00,85.4,21,40.5,0,0,7.1,15.2 -2022-07-13T10:00,89,20,43.3,0,0,5.6,15.7 -2022-07-13T11:00,89.7,22,46.1,0,0,2.9,13.9 -2022-07-13T12:00,91.2,18,41.7,0,0,7,15.2 -2022-07-13T13:00,93.3,14,36.1,0,0,8.1,19.7 -2022-07-13T14:00,93.7,13,35.5,0,0,4.2,17.7 -2022-07-13T15:00,90.3,20,44.4,0,0,17.5,29.8 -2022-07-13T16:00,90.3,16,38.7,0,0,11.9,32.9 -2022-07-13T17:00,82.1,35,51.9,0,0,16.7,21 -2022-07-13T18:00,83.3,27,46.1,0,0,9.7,28.9 -2022-07-13T19:00,82.4,29,46.9,0,0,6.3,16.1 -2022-07-13T20:00,78.4,37,49.6,0,0,6.3,10.7 -2022-07-13T21:00,75.5,42,50.5,0,0,5.3,10.1 -2022-07-13T22:00,73.2,43,49.2,0,0,4.2,8.5 -2022-07-13T23:00,71.7,42,47.4,0,0,5.3,8.9 -2022-07-14T00:00,69.3,44,46.2,0,0,3.8,8.7 -2022-07-14T01:00,66.8,50,47.8,0,0,5.4,8.9 -2022-07-14T02:00,65.5,53,48,0,0,4.9,8.9 -2022-07-14T03:00,64.2,53,46.5,0,0,3.8,8.1 -2022-07-14T04:00,63,53,45.4,0,0,3.4,6.3 -2022-07-14T05:00,69.6,43,46.1,0,0,7.5,6.3 -2022-07-14T06:00,71.2,41,46.5,0,0,4.6,12.5 -2022-07-14T07:00,73.9,39,47.4,0,0,2.8,13.4 -2022-07-14T08:00,80,32,47.1,0,0,2.8,9.4 -2022-07-14T09:00,85.7,25,46,0,0,1.3,9.4 -2022-07-14T10:00,88.5,22,45.2,0,0,1.4,9.8 -2022-07-14T11:00,91.9,19,43.9,0,0,2.3,11.4 -2022-07-14T12:00,93.7,17,42.3,0,0,2.9,11.2 -2022-07-14T13:00,95.3,15,40.5,0,0,4,13.2 -2022-07-14T14:00,93.4,17,41.7,0,0,15.5,24.6 -2022-07-14T15:00,84.6,32,51.4,0,0,14,36 -2022-07-14T16:00,84.5,33,51.9,0,0,7.3,24.6 -2022-07-14T17:00,82.8,32,49.9,0,0,5.3,13.9 -2022-07-14T18:00,82.3,34,51.3,0.004,0,5.7,11 -2022-07-14T19:00,80.2,38,52.6,0,0,9,15.4 -2022-07-14T20:00,76.6,48,55.6,0,0,7.2,14.3 -2022-07-14T21:00,75,54,57.3,0,0,5.8,11.6 -2022-07-14T22:00,73.5,54,55.9,0,0,3.8,9.6 -2022-07-14T23:00,71.2,58,55.4,0,0,3.2,6.3 -2022-07-15T00:00,69.4,59,54.6,0,0,3.1,5.6 -2022-07-15T01:00,68.3,61,54.1,0,0,3.5,6 -2022-07-15T02:00,67.3,61,53.2,0,0,3.7,6 -2022-07-15T03:00,66,60,51.5,0,0,3.6,6.5 -2022-07-15T04:00,64.9,60,50.7,0,0,3.5,6.3 -2022-07-15T05:00,67.9,56,51.8,0,0,7.2,5.8 -2022-07-15T06:00,70.4,48,49.6,0,0,1.6,12.1 -2022-07-15T07:00,74.9,41,49.7,0,0,3.6,9.4 -2022-07-15T08:00,79.3,34,48.5,0,0,0.8,8.9 -2022-07-15T09:00,83.3,30,48.9,0,0,2.1,9.2 -2022-07-15T10:00,87.1,26,48.3,0,0,4,12.1 -2022-07-15T11:00,90.2,23,47.4,0,0,3,12.5 -2022-07-15T12:00,92.4,21,46.9,0,0,3.8,12.3 -2022-07-15T13:00,94.5,19,45.9,0,0,5.2,13.9 -2022-07-15T14:00,96.6,18,45.5,0,0,7.4,13.9 -2022-07-15T15:00,75.3,59,60.2,0.11,0,2.4,38 -2022-07-15T16:00,78.8,51,59.3,0,0,3.4,11.4 -2022-07-15T17:00,79.2,47,57.1,0,0,12.3,11 -2022-07-15T18:00,82.3,41,56.4,0.004,0,1.4,19.5 -2022-07-15T19:00,81.6,42,56.5,0,0,5.6,10.3 -2022-07-15T20:00,78.9,47,57.1,0,0,4,9.2 -2022-07-15T21:00,78.4,49,57.6,0,0,4.5,9.8 -2022-07-15T22:00,76.5,53,58.1,0,0,2.2,7.4 -2022-07-15T23:00,75.1,54,57.5,0,0,9.9,19.5 -2022-07-16T00:00,72.1,60,57.4,0,0,3,15.4 -2022-07-16T01:00,70.9,64,57.9,0,0,2.4,5.4 -2022-07-16T02:00,70.2,66,58.3,0,0,3.4,4.3 -2022-07-16T03:00,70.3,64,57.6,0,0,2.9,4.7 -2022-07-16T04:00,68.8,67,57.4,0,0,2.5,5.1 -2022-07-16T05:00,68.2,62,54.7,0,0,5.8,4.5 -2022-07-16T06:00,69.2,63,55.9,0,0,4.7,9.2 -2022-07-16T07:00,74.7,53,56.6,0,0,5.8,12.1 -2022-07-16T08:00,81.1,39,53.9,0,0,3.4,12.3 -2022-07-16T09:00,85.7,30,50.8,0,0,1.3,10.3 -2022-07-16T10:00,89.6,26,49.8,0,0,6.4,16.1 -2022-07-16T11:00,90.1,24,49,0,0,12.6,23.5 -2022-07-16T12:00,87.6,28,50.5,0.016,0,7.2,25.5 -2022-07-16T13:00,83.8,36,53.7,0,0,9.9,23.9 -2022-07-16T14:00,87.2,29,51,0.008,0,8.4,19.7 -2022-07-16T15:00,86.1,29,50.3,0.004,0,6.7,19.7 -2022-07-16T16:00,86.9,27,48.5,0,0,6.8,15.9 -2022-07-16T17:00,86.8,28,49.5,0,0,4.3,15.4 -2022-07-16T18:00,87.3,25,47.7,0,0,1.3,12.5 -2022-07-16T19:00,84.2,33,51.8,0,0,2.3,7.6 -2022-07-16T20:00,79.2,37,50.8,0,0,3.7,6 -2022-07-16T21:00,75.4,45,52.8,0,0,4.3,7.4 -2022-07-16T22:00,72.2,51,53,0,0,4.7,8.1 -2022-07-16T23:00,70.6,52,52.3,0,0,6,10.1 -2022-07-17T00:00,69.3,53,51.3,0,0,5,10.3 -2022-07-17T01:00,67.5,56,51.1,0,0,3.8,8.3 -2022-07-17T02:00,66.3,57,50.5,0,0,2.9,6.3 -2022-07-17T03:00,64.4,56,48.6,0,0,3.2,4.5 -2022-07-17T04:00,63.7,53,46.4,0,0,2.9,4.5 -2022-07-17T05:00,63.6,71,54.1,0,0,4.6,4.7 -2022-07-17T06:00,66.1,65,54.1,0,0,4.8,8.9 -2022-07-17T07:00,72.1,54,54.7,0,0,1.9,8.5 -2022-07-17T08:00,79,41,53.3,0,0,2.5,8.7 -2022-07-17T09:00,84.7,31,50.4,0,0,3.2,10.5 -2022-07-17T10:00,89.3,24,47.4,0,0,2.5,10.5 -2022-07-17T11:00,92.1,17,41.5,0,0,1.4,10.3 -2022-07-17T12:00,93.7,16,40.2,0,0,1.7,10.1 -2022-07-17T13:00,95.2,15,39.8,0,0,3.2,11.6 -2022-07-17T14:00,96.5,14,40.2,0,0,4,12.8 -2022-07-17T15:00,97.5,14,41.2,0,0,5.9,14.3 -2022-07-17T16:00,96.9,15,40.9,0,0,8,16.6 -2022-07-17T17:00,96.1,17,43.5,0,0,8.4,16.6 -2022-07-17T18:00,94.5,16,42,0,0,8.9,15.4 -2022-07-17T19:00,89.3,21,44.3,0,0,16.2,25.3 -2022-07-17T20:00,86.4,24,44.8,0,0,14,26.6 -2022-07-17T21:00,83.3,26,45.2,0,0,11.3,22.6 -2022-07-17T22:00,80.2,29,45.2,0,0,9.3,18.1 -2022-07-17T23:00,78.8,31,45.7,0,0,9.6,15.4 -2022-07-18T00:00,77.1,33,46,0,0,8.1,15.2 -2022-07-18T01:00,75.2,36,46.1,0,0,6.3,13.2 -2022-07-18T02:00,73.7,38,46.3,0,0,6.9,11.4 -2022-07-18T03:00,73,39,46.5,0,0,7.4,12.3 -2022-07-18T04:00,71.8,40,46.5,0,0,6.3,12.1 -2022-07-18T05:00,70.8,44,47.9,0,0,3.3,11 -2022-07-18T06:00,72.7,42,48.4,0,0,5.1,8.3 -2022-07-18T07:00,77.3,37,49.2,0,0,3.3,8.7 -2022-07-18T08:00,84.5,28,48.2,0,0,5.6,11.6 -2022-07-18T09:00,90,22,46.4,0,0,2.2,13.2 -2022-07-18T10:00,92.8,20,45.3,0,0,3.6,12.1 -2022-07-18T11:00,94.6,19,45.5,0,0,9.2,18.8 -2022-07-18T12:00,95.4,15,41,0,0,2.7,19.9 -2022-07-18T13:00,97.7,14,40.9,0,0,8.8,17.7 -2022-07-18T14:00,98.2,14,40.3,0,0,7.1,18.6 -2022-07-18T15:00,94.6,17,43.3,0,0,15.6,25.9 -2022-07-18T16:00,90.9,21,45.2,0,0,12.8,33.3 -2022-07-18T17:00,89.6,24,47.9,0,0,14.9,22.8 -2022-07-18T18:00,91.9,18,42.1,0,0,11.1,23.7 -2022-07-18T19:00,88.5,23,46,0,0,7.5,18.6 -2022-07-18T20:00,83.8,25,44.7,0,0,6.7,12.8 -2022-07-18T21:00,79.9,31,46.6,0,0,10,15.9 -2022-07-18T22:00,76.4,37,48,0,0,10.5,17.4 -2022-07-18T23:00,74.6,38,47,0,0,9.9,17.2 -2022-07-19T00:00,73.9,36,45.3,0,0,7.8,15.9 -2022-07-19T01:00,72.5,38,45.4,0,0,4.4,12.5 -2022-07-19T02:00,69.9,45,47.4,0,0,4.2,7.2 -2022-07-19T03:00,69.9,45,47.8,0,0,5.4,6.5 -2022-07-19T04:00,69.4,45,47.4,0,0,6.1,7.6 -2022-07-19T05:00,70.8,43,47.3,0,0,6.6,7.6 -2022-07-19T06:00,73.9,40,47.8,0,0,7,11.2 -2022-07-19T07:00,78.9,36,49.4,0,0,2.5,11 -2022-07-19T08:00,86.1,27,48.1,0,0,3.7,9.8 -2022-07-19T09:00,89,23,46.6,0,0,2.6,10.5 -2022-07-19T10:00,91.3,22,47,0,0,3.2,14.1 -2022-07-19T11:00,92.8,20,45.9,0,0,6.4,15.2 -2022-07-19T12:00,92.2,19,43.5,0,0,9.1,24.6 -2022-07-19T13:00,94.6,18,43.9,0,0,3.4,19.5 -2022-07-19T14:00,93.9,18,43.7,0,0,8.7,17.4 -2022-07-19T15:00,89.1,25,49.1,0,0,18.1,32.2 -2022-07-19T16:00,90.8,20,44.7,0,0,5,31.8 -2022-07-19T17:00,85.7,30,50.5,0,0,5.9,11.6 -2022-07-19T18:00,87.3,28,50.6,0,0,7.2,12.3 -2022-07-19T19:00,83.4,35,52.6,0,0,8.2,15.9 -2022-07-19T20:00,80.5,42,55.4,0,0,7.5,13.4 -2022-07-19T21:00,77.6,49,57,0,0,7.7,12.8 -2022-07-19T22:00,75.9,50,55.9,0,0,7.9,13.6 -2022-07-19T23:00,75.2,45,52.2,0,0,3.8,12.8 -2022-07-20T00:00,73.7,41,48.8,0,0,4.4,6.5 -2022-07-20T01:00,72.9,39,46.1,0,0,4.2,8.9 -2022-07-20T02:00,72.2,39,45.9,0,0,6.1,9.8 -2022-07-20T03:00,71.9,39,45.8,0,0,8.2,13.6 -2022-07-20T04:00,70.9,39,44.9,0,0,8,13.9 -2022-07-20T05:00,67.6,53,49.6,0,0,4,13.2 -2022-07-20T06:00,69,50,49.7,0,0,3.4,6.9 -2022-07-20T07:00,73.3,42,49,0,0,0.5,6.9 -2022-07-20T08:00,77,34,46.7,0,0,3.5,10.1 -2022-07-20T09:00,81.3,28,45.2,0,0,4.9,13 -2022-07-20T10:00,86.5,24,45.3,0,0,5.7,14.8 -2022-07-20T11:00,88.5,23,46,0,0,3.6,15 -2022-07-20T12:00,89.7,23,46.8,0,0,5.5,17.4 -2022-07-20T13:00,91.8,19,43.3,0,0,4.8,16.3 -2022-07-20T14:00,86.7,28,49.4,0.004,0,16.4,29.5 -2022-07-20T15:00,87.1,24,46.1,0,0,2.6,31.3 -2022-07-20T16:00,78.8,46,56.4,0.039,0,10.7,18.8 -2022-07-20T17:00,76.5,46,54.1,0,0,10.8,21.3 -2022-07-20T18:00,77.6,47,56,0.004,0,14.1,24.4 -2022-07-20T19:00,78.4,44,54.6,0,0,12.1,24.2 -2022-07-20T20:00,77,44,53.7,0,0,10.6,19.9 -2022-07-20T21:00,74.9,48,53.7,0,0,7.9,16.8 -2022-07-20T22:00,73.3,52,54.5,0,0,5.4,12.5 -2022-07-20T23:00,71.3,50,51.7,0,0,5.5,9.2 -2022-07-21T00:00,68.5,51,49.8,0,0,4.4,9.2 -2022-07-21T01:00,66.6,53,48.7,0,0,3.6,7.4 -2022-07-21T02:00,65.4,52,47.5,0,0,4,6 -2022-07-21T03:00,64.6,48,44.6,0,0,4.8,6.5 -2022-07-21T04:00,64.3,48,44.2,0,0,3.9,6.9 -2022-07-21T05:00,62.7,44,40.5,0,0,3.4,5.8 -2022-07-21T06:00,65,40,40.3,0,0,3.7,6.9 -2022-07-21T07:00,71.7,34,42.2,0,0,2.7,8.1 -2022-07-21T08:00,79.4,25,40.7,0,0,3.8,10.3 -2022-07-21T09:00,86.8,18,38.3,0,0,3.8,11.2 -2022-07-21T10:00,90.9,12,31.7,0,0,2.3,11.6 -2022-07-21T11:00,91.8,13,34.4,0,0,10.1,20.8 -2022-07-21T12:00,94,12,32.9,0,0,7.5,21.3 -2022-07-21T13:00,94.9,11,33,0,0,3.3,17.9 -2022-07-21T14:00,94.9,12,33.4,0,0,4.8,13.2 -2022-07-21T15:00,95.8,12,34.7,0,0,7.3,16.6 -2022-07-21T16:00,92.5,16,39.9,0,0,13.5,23.9 -2022-07-21T17:00,91.9,15,38.2,0,0,2.4,26.4 -2022-07-21T18:00,91,16,37.9,0,0,9,13.4 -2022-07-21T19:00,84.5,23,42.4,0,0,9,20.8 -2022-07-21T20:00,79.1,28,42.9,0,0,2.5,13.6 -2022-07-21T21:00,78,30,43.8,0,0,8.2,13.4 -2022-07-21T22:00,75.4,35,46,0,0,6.8,13 -2022-07-21T23:00,73,37,45.1,0,0,9.2,15 -2022-07-22T00:00,72.3,31,40.4,0,0,9.4,15.7 -2022-07-22T01:00,71.4,29,37.4,0,0,8.2,15.2 -2022-07-22T02:00,69.6,29,35.7,0,0,5.5,13.6 -2022-07-22T03:00,66.1,33,36,0,0,3.8,11 -2022-07-22T04:00,64.7,34,35.4,0,0,3.7,6.3 -2022-07-22T05:00,66.8,32,36.3,0,0,2.9,6 -2022-07-22T06:00,67.1,33,37.3,0,0,4.5,6.5 -2022-07-22T07:00,73.9,27,37.9,0,0,4.9,10.5 -2022-07-22T08:00,80.2,24,40.2,0,0,1.2,10.5 -2022-07-22T09:00,84,23,42.5,0,0,1.3,8.5 -2022-07-22T10:00,87.9,19,40.3,0,0,2.5,10.5 -2022-07-22T11:00,91.6,15,37.8,0,0,2.1,10.7 -2022-07-22T12:00,93.9,12,34.3,0,0,1.6,10.5 -2022-07-22T13:00,96.3,11,33.6,0,0,1.1,10.3 -2022-07-22T14:00,96.7,11,33.4,0,0,0.7,10.3 -2022-07-22T15:00,97.8,11,34.3,0,0,2.2,10.5 -2022-07-22T16:00,97.3,11,34.3,0,0,5.5,13.2 -2022-07-22T17:00,89.6,19,41.8,0,0,5.9,14.3 -2022-07-22T18:00,90.1,18,41.5,0,0,11.7,17 -2022-07-22T19:00,83.1,26,44.9,0,0,7.3,27.7 -2022-07-22T20:00,80.4,30,46.5,0,0,7.9,12.1 -2022-07-22T21:00,77.3,37,48.7,0,0,6.6,13.2 -2022-07-22T22:00,75.6,40,49.5,0,0,6.8,11.2 -2022-07-22T23:00,74.6,40,48.9,0,0,5.9,11.2 -2022-07-23T00:00,73.7,38,46.2,0,0,7.1,11.2 -2022-07-23T01:00,72.1,38,45.2,0,0,6.8,11.9 -2022-07-23T02:00,71.9,37,44.5,0,0,5.6,11 -2022-07-23T03:00,70.3,38,43.8,0,0,6.8,8.9 -2022-07-23T04:00,72.8,34,42.9,0,0,4.3,8.3 -2022-07-23T05:00,68.7,44,46.2,0,0,5.2,5.1 -2022-07-23T06:00,73.6,37,45.7,0,0,6.3,10.1 -2022-07-23T07:00,78.9,31,45.4,0,0,2.8,9.8 -2022-07-23T08:00,83.7,26,45.1,0,0,3.7,10.3 -2022-07-23T09:00,89.8,19,42.7,0,0,3.4,10.5 -2022-07-23T10:00,94,15,39.4,0,0,6.7,15.4 -2022-07-23T11:00,95.1,14,39,0,0,8,17.7 -2022-07-23T12:00,98.3,13,38.1,0,0,6.6,18.1 -2022-07-23T13:00,89.2,24,48,0,0,18.4,32.7 -2022-07-23T14:00,93,16,40.3,0,0,7.1,32.7 -2022-07-23T15:00,94.8,16,41.1,0,0,13.4,19.7 -2022-07-23T16:00,83.8,30,49.4,0,0,6,32.4 -2022-07-23T17:00,75.8,52,56.8,0,0,8.6,23.7 -2022-07-23T18:00,76.9,45,53.8,0.004,0,4.3,18.6 -2022-07-23T19:00,76.2,45,53.1,0,0,9.8,16.3 -2022-07-23T20:00,73.7,56,56.8,0,0,4.5,18.8 -2022-07-23T21:00,72,61,57.7,0,0,8.5,15 -2022-07-23T22:00,69.7,65,57.6,0,0,4.3,14.8 -2022-07-23T23:00,69.3,65,57.1,0,0,5.8,9.4 -2022-07-24T00:00,68.5,69,57.8,0,0,5,9.6 -2022-07-24T01:00,67.4,73,58.6,0,0,5.4,8.7 -2022-07-24T02:00,66.7,74,58.3,0,0,3.6,8.7 -2022-07-24T03:00,65.7,77,58.2,0,0,3.6,5.6 -2022-07-24T04:00,65.2,76,57.5,0,0,2.1,4.7 -2022-07-24T05:00,63.8,73,55.1,0,0,2.8,3.4 -2022-07-24T06:00,66.1,72,56.9,0,0,7.7,11.9 -2022-07-24T07:00,68.5,71,58.6,0,0,10.8,19.2 -2022-07-24T08:00,72,61,57.9,0,0,8.8,19.5 -2022-07-24T09:00,75.1,54,57.5,0,0,7.8,18.3 -2022-07-24T10:00,78.5,47,56.5,0,0,6.1,17.2 -2022-07-24T11:00,82.3,39,54.8,0,0,6.7,16.3 -2022-07-24T12:00,83,37,54,0.004,0,8.2,18.3 -2022-07-24T13:00,86.1,33,53.4,0,0,10.7,21.9 -2022-07-24T14:00,80.6,43,56.3,0.043,0,9.2,22.4 -2022-07-24T15:00,82.6,37,53.8,0.012,0,2.1,18.8 -2022-07-24T16:00,78.4,46,56.1,0.008,0,4.4,12.3 -2022-07-24T17:00,71,65,58.7,0,0,8,11.9 -2022-07-24T18:00,71,62,57.5,0.012,0,8.1,14.5 -2022-07-24T19:00,68.6,69,57.9,0.016,0,3.5,15 -2022-07-24T20:00,68.3,68,57.1,0,0,3.3,7.6 -2022-07-24T21:00,67.8,67,56.7,0,0,1.3,6.5 -2022-07-24T22:00,66.1,75,57.8,0,0,1.8,3.6 -2022-07-24T23:00,65.7,80,59.4,0,0,2.8,4.3 -2022-07-25T00:00,64.4,86,60.1,0,0,4.9,7.6 -2022-07-25T01:00,63.9,87,60,0,0,3,8.1 -2022-07-25T02:00,63.6,89,60.4,0,0,1,4.9 -2022-07-25T03:00,62.2,94,60.4,0,0,2.2,3.4 -2022-07-25T04:00,61.6,95,60.2,0,0,2.6,6.3 -2022-07-25T05:00,62.1,84,57.1,0,0,5,5.8 -2022-07-25T06:00,64.5,71,54.9,0,0,4.5,8.7 -2022-07-25T07:00,68.9,60,54.3,0,0,2.8,8.7 -2022-07-25T08:00,72.1,57,55.9,0,0,4.5,11.6 -2022-07-25T09:00,75.7,51,56.4,0,0,3.7,11.6 -2022-07-25T10:00,80.2,40,53.9,0,0,4.7,13 -2022-07-25T11:00,83.2,31,49.1,0,0,3.6,13.2 -2022-07-25T12:00,85.7,24,45.2,0,0,4.2,12.3 -2022-07-25T13:00,87.9,22,44.7,0,0,6.9,16.1 -2022-07-25T14:00,88.4,21,44.1,0,0,7.9,17 -2022-07-25T15:00,88,22,43.9,0,0,9.7,18.8 -2022-07-25T16:00,88.3,21,43.5,0,0,9.3,19.2 -2022-07-25T17:00,89.7,20,42.7,0,0,7.5,18.3 -2022-07-25T18:00,80.6,44,56.8,0,0,17.7,30.4 -2022-07-25T19:00,78.5,41,53.1,0,0,11.6,29.1 -2022-07-25T20:00,75.7,46,53.8,0,0,10.4,18.8 -2022-07-25T21:00,74.6,48,53.8,0,0,11.2,18.1 -2022-07-25T22:00,71.9,54,54.2,0,0,10.1,17.7 -2022-07-25T23:00,70.3,56,53.8,0,0,7.9,16.3 -2022-07-26T00:00,68.5,57,52.6,0,0,5.4,12.8 -2022-07-26T01:00,67.2,59,52.3,0,0,5.4,8.7 -2022-07-26T02:00,66.4,58,51.3,0,0,5.2,8.5 -2022-07-26T03:00,65.5,53,48.1,0,0,3.6,8.3 -2022-07-26T04:00,64.9,44,42.3,0,0,3.8,6 -2022-07-26T05:00,66.1,54,48.9,0,0,2.6,6.3 -2022-07-26T06:00,67.1,45,45.3,0,0,5.2,7.2 -2022-07-26T07:00,72.3,36,44.2,0,0,2.2,8.7 -2022-07-26T08:00,74.8,42,50.1,0,0,9.6,18.1 -2022-07-26T09:00,77.6,44,53.7,0,0,9.7,19.5 -2022-07-26T10:00,80.9,38,52.6,0,0,9.5,19.7 -2022-07-26T11:00,83.5,33,51.6,0,0,8.7,20.1 -2022-07-26T12:00,85.3,32,52.3,0.008,0,9.6,20.6 -2022-07-26T13:00,85.6,32,52.3,0.008,0,7.3,21 -2022-07-26T14:00,84.8,32,51.9,0,0,9.4,22.4 -2022-07-26T15:00,82.9,35,52.6,0,0,4.9,19.7 -2022-07-26T16:00,80.6,41,55,0,0,6.9,14.8 -2022-07-26T17:00,72,72,62.6,0,0,8.3,15.9 -2022-07-26T18:00,70.5,77,62.9,0.094,0,10.6,17.7 -2022-07-26T19:00,69.8,77,62.4,0,0,8.5,19.9 -2022-07-26T20:00,69.5,76,61.5,0,0,1.5,14.3 -2022-07-26T21:00,68.2,78,61.2,0,0,4.9,9.6 -2022-07-26T22:00,66.7,82,61.1,0,0,1.7,7.8 -2022-07-26T23:00,65.4,88,61.6,0,0,1.6,3.4 -2022-07-27T00:00,64,92,61.7,0,0,1.7,3.6 -2022-07-27T01:00,63.1,94,61.3,0,0,2.6,5.1 -2022-07-27T02:00,62,95,60.6,0,0,1.7,4.5 -2022-07-27T03:00,61.1,95,59.6,0,0,2.8,5.4 -2022-07-27T04:00,59.9,97,59.1,0,0,2.3,4.7 -2022-07-27T05:00,60.5,77,53.2,0,0,3.9,4 -2022-07-27T06:00,63.4,66,51.8,0,0,3,5.6 -2022-07-27T07:00,66.3,61,52.3,0,0,2,8.3 -2022-07-27T08:00,71.4,51,52.5,0,0,1.7,7.8 -2022-07-27T09:00,76.6,43,52.3,0,0,2.2,9.6 -2022-07-27T10:00,82.1,36,52.3,0,0,4.2,12.3 -2022-07-27T11:00,85.6,37,56.5,0,0,10.8,21.5 -2022-07-27T12:00,87.7,35,56.4,0,0,9.1,23 -2022-07-27T13:00,87.9,32,54.1,0.024,0,9.5,20.1 -2022-07-27T14:00,87.8,26,49,0,0,2.7,20.4 -2022-07-27T15:00,88.8,23,46.3,0,0,5.3,12.5 -2022-07-27T16:00,89.1,22,45.4,0,0,7.5,16.8 -2022-07-27T17:00,84.3,36,54.7,0,0,9.9,16.3 -2022-07-27T18:00,80.4,44,56.8,0,0,14,24.2 -2022-07-27T19:00,76.8,52,58,0,0,7.2,23.9 -2022-07-27T20:00,74.6,58,58.9,0,0,3.9,11.6 -2022-07-27T21:00,68.4,76,60.5,0.087,0,12.7,19.5 -2022-07-27T22:00,67.8,74,59.2,0,0,8.9,20.6 -2022-07-27T23:00,68.2,71,58.5,0,0,6.7,14.5 -2022-07-28T00:00,68.4,70,58.1,0,0,9,13 -2022-07-28T01:00,67.3,71,57.7,0,0,7.1,16.8 -2022-07-28T02:00,65.2,78,58,0,0,3.9,11.2 -2022-07-28T03:00,64,86,59.8,0,0,6.9,11 -2022-07-28T04:00,63.1,89,59.9,0,0,4.8,11 -2022-07-28T05:00,62.7,93,60.5,0,0,5.7,9.8 -2022-07-28T06:00,63,94,61.2,0.209,0,4.5,9.6 -2022-07-28T07:00,61.9,94,60.2,0.091,0,7.6,13 -2022-07-28T08:00,62.6,76,54.8,0.02,0,5,12.8 -2022-07-28T09:00,66.3,62,53,0,0,3.3,10.7 -2022-07-28T10:00,68.4,60,53.8,0,0,4.7,12.3 -2022-07-28T11:00,71.3,57,55.3,0,0,3.4,12.5 -2022-07-28T12:00,73.1,52,54.7,0,0,2.8,11.6 -2022-07-28T13:00,74.8,49,54.6,0,0,2.5,10.5 -2022-07-28T14:00,75.8,49,55.1,0,0,3.6,10.5 -2022-07-28T15:00,75.8,49,55.2,0,0,4.8,13 -2022-07-28T16:00,76.5,48,55.1,0,0,4.8,11.9 -2022-07-28T17:00,69.3,70,59,0,0,6.3,11.2 -2022-07-28T18:00,68.7,70,58.6,0,0,5.7,19.5 -2022-07-28T19:00,70,65,57.6,0,0,5.9,11.9 -2022-07-28T20:00,69.2,69,58.5,0,0,6.1,12.8 -2022-07-28T21:00,67.3,79,60.6,0,0,6,12.5 -2022-07-28T22:00,66.7,82,61,0,0,1.6,9.8 -2022-07-28T23:00,65.8,85,61.3,0,0,2.9,4.3 -2022-07-29T00:00,64.6,89,61.2,0,0,2.9,6 -2022-07-29T01:00,63.1,91,60.4,0,0,4,4.9 -2022-07-29T02:00,64,83,58.7,0,0,3,4.9 -2022-07-29T03:00,63.5,80,57.3,0,0,3.2,5.1 -2022-07-29T04:00,61.8,85,57.1,0,0,4.3,5.6 -2022-07-29T05:00,60.1,92,57.8,0,0,3.6,5.6 -2022-07-29T06:00,62.8,81,56.8,0,0,3.8,8.1 -2022-07-29T07:00,65,77,57.6,0,0,2.6,8.3 -2022-07-29T08:00,67.7,69,57.2,0,0,0.9,7.6 -2022-07-29T09:00,71.1,59,56.2,0,0,2.4,9.6 -2022-07-29T10:00,74.6,51,55.2,0,0,3.7,14.3 -2022-07-29T11:00,77.5,46,54.9,0,0,4.6,14.8 -2022-07-29T12:00,79.9,40,53.4,0,0,5.4,15.2 -2022-07-29T13:00,82.2,36,53,0,0,5.8,15.4 -2022-07-29T14:00,83.2,35,52.9,0,0,3.4,15.4 -2022-07-29T15:00,84.5,32,51.4,0,0,7,15.7 -2022-07-29T16:00,82.9,33,50.5,0,0,5.2,16.8 -2022-07-29T17:00,75.3,49,54.8,0.024,0,12.3,17 -2022-07-29T18:00,74.9,51,55.8,0,0,7.7,20.6 -2022-07-29T19:00,73.5,54,55.9,0,0,5.3,14.1 -2022-07-29T20:00,71.1,60,56.7,0,0,5.2,8.5 -2022-07-29T21:00,68.3,66,56.3,0,0,4.3,8.1 -2022-07-29T22:00,65.3,72,56.1,0,0,3.9,6.9 -2022-07-29T23:00,63.3,77,55.9,0,0,3.5,6 -2022-07-30T00:00,61.8,79,55.1,0,0,4,6.5 -2022-07-30T01:00,60.2,79,53.8,0,0,3.4,6.5 -2022-07-30T02:00,59.8,76,52.3,0,0,3.2,5.4 -2022-07-30T03:00,59.4,73,50.5,0,0,3,5.4 -2022-07-30T04:00,58.1,71,48.8,0,0,2.7,4.9 -2022-07-30T05:00,58.5,68,48,0,0,2.4,4.5 -2022-07-30T06:00,60.3,66,48.8,0,0,1.8,4 -2022-07-30T07:00,66.1,53,48.6,0,0,0.5,5.6 -2022-07-30T08:00,71.6,45,49.2,0,0,2.8,8.9 -2022-07-30T09:00,77.4,38,50,0,0,3.7,11.2 -2022-07-30T10:00,82.4,29,46.9,0,0,3.4,11.6 -2022-07-30T11:00,86.3,21,41.5,0,0,4.1,12.3 -2022-07-30T12:00,88.9,16,36.5,0,0,4.9,13.6 -2022-07-30T13:00,90.3,14,35.2,0,0,6.7,16.1 -2022-07-30T14:00,91,14,35.7,0,0,7.7,17.2 -2022-07-30T15:00,91,15,36.3,0,0,8.5,18.1 -2022-07-30T16:00,90.1,15,36.6,0,0,6.1,17.9 -2022-07-30T17:00,91.3,13,34,0,0,2.9,13.9 -2022-07-30T18:00,89.5,15,35,0,0,4,7.4 -2022-07-30T19:00,85.2,19,38.5,0,0,4.9,8.3 -2022-07-30T20:00,81.3,24,40.7,0,0,3.6,7.6 -2022-07-30T21:00,77.9,32,46,0,0,8.6,14.1 -2022-07-30T22:00,74.3,38,47.4,0,0,7.7,14.1 -2022-07-30T23:00,70.5,45,47.9,0,0,6.6,12.3 -2022-07-31T00:00,67.7,49,48,0,0,4.4,10.3 -2022-07-31T01:00,66.5,50,47.5,0,0,4.1,7.2 -2022-07-31T02:00,65.3,51,46.8,0,0,3.3,6.7 -2022-07-31T03:00,64.3,52,46.2,0,0,3.8,5.6 -2022-07-31T04:00,63.8,51,45.5,0,0,4.2,6 -2022-07-31T05:00,64.6,54,47.5,0,0,5.8,6.3 -2022-07-31T06:00,69.4,46,47.8,0,0,3.6,6.7 -2022-07-31T07:00,74.7,40,48.7,0,0,1.3,6.7 -2022-07-31T08:00,79.9,34,48.9,0,0,3.5,9.6 -2022-07-31T09:00,83.7,27,46.3,0,0,3.5,10.7 -2022-07-31T10:00,86.7,22,43.3,0,0,4.9,14.3 -2022-07-31T11:00,88.3,20,42.1,0,0,5.1,14.3 -2022-07-31T12:00,90.7,18,41.5,0,0,4.8,14.1 -2022-07-31T13:00,91.8,18,42.9,0,0,5.6,14.5 -2022-07-31T14:00,91.9,19,43.5,0,0,7.3,16.6 -2022-07-31T15:00,82.6,40,55.9,0.094,0,7.3,16.6 -2022-07-31T16:00,80.1,31,46.3,0.004,0,10.6,22.1 -2022-07-31T17:00,81.3,34,50.3,0,0,8.7,19 -2022-07-31T18:00,82.9,30,48.1,0,0,7.7,16.3 -2022-07-31T19:00,79.4,34,48.5,0,0,6,13.4 -2022-07-31T20:00,75.8,39,49.1,0,0,6.3,10.7 -2022-07-31T21:00,72.3,45,49.9,0,0,5.2,10.1 -2022-07-31T22:00,69.3,53,51.3,0,0,4.7,8.7 -2022-07-31T23:00,67,60,52.6,0,0,5.8,9.4 -2022-08-01T00:00,65.8,62,52.3,0,0,5.8,10.1 -2022-08-01T01:00,64.9,59,50.5,0,0,4.4,9.4 -2022-08-01T02:00,64.1,57,48.7,0,0,4.7,7.4 -2022-08-01T03:00,63.4,55,47.1,0,0,4,7.6 -2022-08-01T04:00,62.2,56,46.2,0,0,5.5,6.5 -2022-08-01T05:00,62,57,46.4,0,0,4.4,6.5 -2022-08-01T06:00,65.5,51,47.1,0,0,4.5,5.6 -2022-08-01T07:00,71.6,44,48.8,0,0,4.4,9.4 -2022-08-01T08:00,79.3,33,47.6,0,0,2.4,9.8 -2022-08-01T09:00,85.2,26,46.6,0,0,1.4,8.3 -2022-08-01T10:00,89.3,21,43.7,0,0,2,9.6 -2022-08-01T11:00,91,18,41.1,0,0,2.7,10.1 -2022-08-01T12:00,92.1,17,40.4,0,0,3.7,11.9 -2022-08-01T13:00,92.7,16,40,0,0,4.9,13.4 -2022-08-01T14:00,92.9,16,39.6,0,0,6,15 -2022-08-01T15:00,93,16,39.5,0,0,5.4,15 -2022-08-01T16:00,92.7,16,39.6,0,0,5.9,14.1 -2022-08-01T17:00,87.6,24,45.9,0,0,16.3,13.9 -2022-08-01T18:00,84.3,28,47.3,0,0,13.6,26.6 -2022-08-01T19:00,81.2,36,52.1,0,0,11.9,22.6 -2022-08-01T20:00,79.7,37,51.4,0,0,11.9,20.6 -2022-08-01T21:00,79.6,36,50.3,0,0,10.9,19 -2022-08-01T22:00,77.9,37,49.8,0,0,8.5,17.9 -2022-08-01T23:00,75.6,41,50,0,0,5.4,13.6 -2022-08-02T00:00,73.9,44,50.4,0,0,4.6,8.5 -2022-08-02T01:00,73,45,50.2,0,0,4.6,6.7 -2022-08-02T02:00,72.4,45,49.6,0,0,5.5,7.2 -2022-08-02T03:00,73.5,45,50.6,0,0,4.7,7.6 -2022-08-02T04:00,67.7,58,52.5,0,0,4.7,7.8 -2022-08-02T05:00,67.5,54,50.3,0,0,4.3,6 -2022-08-02T06:00,71.5,49,51.4,0,0,4.1,6.3 -2022-08-02T07:00,77.9,41,52,0,0,6.2,11.2 -2022-08-02T08:00,84.3,32,51.4,0,0,6.2,13.4 -2022-08-02T09:00,88.8,23,45.9,0,0,5.1,14.8 -2022-08-02T10:00,90.9,21,45.1,0,0,3.1,13.2 -2022-08-02T11:00,92.4,19,44.8,0,0,2.6,13.6 -2022-08-02T12:00,92.1,22,47.6,0,0,8.6,19 -2022-08-02T13:00,93.9,20,47.1,0,0,6.5,19 -2022-08-02T14:00,91.8,21,46.6,0,0,15.7,28.4 -2022-08-02T15:00,89.7,23,47.5,0,0,6.4,29.1 -2022-08-02T16:00,89.2,24,47.8,0,0,7.4,17.4 -2022-08-02T17:00,88.4,30,53.2,0,0,12.8,16.1 -2022-08-02T18:00,80.1,47,57.7,0,0,13,25.7 -2022-08-02T19:00,78.4,46,56.1,0,0,7.3,21.5 -2022-08-02T20:00,74.3,52,55.8,0,0,4.7,15.2 -2022-08-02T21:00,72.8,57,56.5,0,0,6.2,8.9 -2022-08-02T22:00,71.7,60,56.9,0,0,6.2,10.3 -2022-08-02T23:00,71,61,56.8,0,0,6.2,10.3 -2022-08-03T00:00,68.6,65,56.5,0,0,7,11.2 -2022-08-03T01:00,67.8,60,53.5,0,0,7.2,11.9 -2022-08-03T02:00,68.4,52,49.9,0,0,8.4,13.6 -2022-08-03T03:00,67.9,51,49.1,0,0,7,13.9 -2022-08-03T04:00,66.4,54,49.1,0,0,3.6,11.4 -2022-08-03T05:00,67.3,59,52.4,0,0,3.8,6.3 -2022-08-03T06:00,69.9,54,52.6,0,0,5.4,7.8 -2022-08-03T07:00,74.5,46,52.4,0,0,1.3,8.7 -2022-08-03T08:00,77.7,44,53.9,0,0,4.3,10.7 -2022-08-03T09:00,80.9,35,50.6,0,0,3.4,11.9 -2022-08-03T10:00,82.8,29,47.6,0,0,4.8,12.8 -2022-08-03T11:00,84.7,27,47.1,0,0,4.4,13.9 -2022-08-03T12:00,86,26,47,0,0,3.8,13.4 -2022-08-03T13:00,86.9,25,46.8,0,0,4.6,13.9 -2022-08-03T14:00,87.8,24,46.5,0,0,4.4,13.9 -2022-08-03T15:00,88.1,24,46.5,0,0,2.7,13.2 -2022-08-03T16:00,87.9,24,46.2,0,0,5.6,13 -2022-08-03T17:00,85.7,25,46,0,0,6.2,15.2 -2022-08-03T18:00,77.2,47,55.1,0,0,8.7,23.7 -2022-08-03T19:00,74.8,56,57.9,0,0,7.6,16.1 -2022-08-03T20:00,72.8,63,59.4,0,0,9.3,15.7 -2022-08-03T21:00,71.3,67,60,0,0,7.1,14.3 -2022-08-03T22:00,70,68,59,0,0,7.5,12.1 -2022-08-03T23:00,68.6,72,59.3,0,0,8,13 -2022-08-04T00:00,67.6,73,58.6,0,0,6.6,13 -2022-08-04T01:00,66.2,71,56.5,0,0,5.8,10.7 -2022-08-04T02:00,65.3,67,54.1,0,0,4.9,9.4 -2022-08-04T03:00,64.3,66,52.7,0,0,4.8,8.1 -2022-08-04T04:00,63.1,67,52.1,0,0,4.3,7.8 -2022-08-04T05:00,63.7,62,50.4,0,0,3.4,6.9 -2022-08-04T06:00,65.4,57,49.6,0,0,2.8,5.8 -2022-08-04T07:00,70.7,49,50.7,0,0,2.8,7.4 -2022-08-04T08:00,77.5,40,51.5,0,0,4.1,10.7 -2022-08-04T09:00,83.9,30,49.4,0,0,1.9,10.7 -2022-08-04T10:00,88.3,24,46.6,0,0,2.7,10.3 -2022-08-04T11:00,91.2,19,43.3,0,0,5.4,14.1 -2022-08-04T12:00,93,17,41.2,0,0,5.2,14.8 -2022-08-04T13:00,94.3,15,39.7,0,0,5,14.3 -2022-08-04T14:00,95.3,14,38.7,0,0,5.8,14.8 -2022-08-04T15:00,96.1,13,38.2,0,0,6.5,15.4 -2022-08-04T16:00,95.6,13,37.8,0,0,7.9,16.1 -2022-08-04T17:00,90.4,22,46.3,0,0,16.2,17 -2022-08-04T18:00,88,28,51.1,0,0,13.4,27.3 -2022-08-04T19:00,84.6,32,51.3,0,0,3.6,21.9 -2022-08-04T20:00,80.6,36,51.3,0,0,6.3,9.2 -2022-08-04T21:00,78.5,40,52.2,0,0,8.7,14.1 -2022-08-04T22:00,76.6,42,51.9,0,0,6.4,13.6 -2022-08-04T23:00,74.8,46,52.5,0,0,7.2,11.4 -2022-08-05T00:00,72.3,49,51.9,0,0,5.2,11.4 -2022-08-05T01:00,70.8,49,50.8,0,0,5.8,8.9 -2022-08-05T02:00,70,47,49.1,0,0,5.3,9.6 -2022-08-05T03:00,67.9,46,46.5,0,0,3.7,8.3 -2022-08-05T04:00,66.6,47,45.8,0,0,4.8,6.3 -2022-08-05T05:00,68.5,51,49.6,0,0,4.3,5.6 -2022-08-05T06:00,72.1,47,50.7,0,0,4,6.9 -2022-08-05T07:00,76.6,41,51.2,0,0,2.1,7.8 -2022-08-05T08:00,81.7,35,51.3,0,0,4.4,10.1 -2022-08-05T09:00,84.9,29,48.9,0,0,6.5,14.8 -2022-08-05T10:00,89.8,23,47.2,0,0,6.5,15.4 -2022-08-05T11:00,93.7,20,46,0,0,7.2,16.8 -2022-08-05T12:00,95.8,18,45.1,0,0,5.7,16.6 -2022-08-05T13:00,97.6,17,45.5,0,0,6,15 -2022-08-05T14:00,97.2,18,46,0,0,4.3,15.4 -2022-08-05T15:00,97.3,17,45.7,0,0,5.5,13.2 -2022-08-05T16:00,92,22,48.1,0,0,9.6,27.3 -2022-08-05T17:00,86.6,30,51.6,0.024,0,12.3,28.2 -2022-08-05T18:00,85.2,34,53.6,0,0,10.4,21.7 -2022-08-05T19:00,79.2,45,55.8,0.012,0,8.9,17.2 -2022-08-05T20:00,73.9,61,59.6,0.016,0,10.6,17 -2022-08-05T21:00,75.2,52,56.5,0,0,7.5,17.4 -2022-08-05T22:00,75,53,56.7,0,0,3.3,11.6 -2022-08-05T23:00,74.4,54,56.8,0,0,5.2,8.1 -2022-08-06T00:00,71.3,61,57.1,0,0,3.5,8.1 -2022-08-06T01:00,69.9,63,56.7,0,0,2.6,4.7 -2022-08-06T02:00,68.5,66,56.5,0,0,3.4,5.4 -2022-08-06T03:00,67.1,67,55.9,0,0,2.9,5.6 -2022-08-06T04:00,65.9,68,55,0,0,2.7,4.7 -2022-08-06T05:00,67.9,67,56.7,0,0,5,5.4 -2022-08-06T06:00,69,66,57.2,0,0,4.8,8.1 -2022-08-06T07:00,71.8,60,57.2,0,0,5,11 -2022-08-06T08:00,74.3,55,56.8,0,0,4,11.4 -2022-08-06T09:00,77.9,48,56.7,0,0,2.4,11 -2022-08-06T10:00,82,41,55.9,0,0,2.6,11 -2022-08-06T11:00,85.6,35,54.9,0,0,4.9,13.6 -2022-08-06T12:00,89.2,29,52.7,0,0,6.3,15.9 -2022-08-06T13:00,91,26,50.9,0,0,5.2,15.9 -2022-08-06T14:00,92.3,25,51.2,0,0,7.3,16.3 -2022-08-06T15:00,82.5,46,59.7,0,0,16.1,27.1 -2022-08-06T16:00,86,36,55.9,0,0,3.1,30.2 -2022-08-06T17:00,72.7,79,65.8,0.094,0,5.5,14.3 -2022-08-06T18:00,75.7,64,62.8,0,0,5.1,13.9 -2022-08-06T19:00,75.7,63,62.4,0,0,4.2,9.8 -2022-08-06T20:00,73.9,73,64.8,0,0,6.5,10.7 -2022-08-06T21:00,72.9,78,65.7,0,0,8.9,13.6 -2022-08-06T22:00,72.9,76,64.9,0,0,9.7,15.7 -2022-08-06T23:00,72.2,73,63.2,0,0,8.5,15.7 -2022-08-07T00:00,70.6,74,62.1,0,0,7.9,13.9 -2022-08-07T01:00,68.9,74,60.2,0,0,5.5,12.5 -2022-08-07T02:00,66.8,73,58,0,0,3.2,8.9 -2022-08-07T03:00,65.4,72,55.9,0,0,3.5,5.4 -2022-08-07T04:00,65.6,78,58.4,0,0,6.8,14.1 -2022-08-07T05:00,67.9,65,55.9,0,0,9.4,11 -2022-08-07T06:00,69.4,61,55.6,0,0,10.3,16.1 -2022-08-07T07:00,71.1,63,57.7,0,0,10.3,19.7 -2022-08-07T08:00,73.7,64,60.5,0,0,6.5,18.3 -2022-08-07T09:00,76.7,60,61.6,0,0,4.8,14.1 -2022-08-07T10:00,80.5,51,61,0,0,5,13.9 -2022-08-07T11:00,82.6,44,58.7,0,0,5.9,16.1 -2022-08-07T12:00,82.1,43,57.3,0,0,9.5,19.7 -2022-08-07T13:00,82.9,41,56.7,0,0,5.3,20.1 -2022-08-07T14:00,72,70,61.8,0.169,0,10.8,21.3 -2022-08-07T15:00,73.8,61,59.5,0.028,0,5.5,23.7 -2022-08-07T16:00,73,67,61.2,0.146,0,4,14.5 -2022-08-07T17:00,71.5,67,60.2,0,0,5.1,13.2 -2022-08-07T18:00,72.7,63,59.4,0,0,3.9,9.2 -2022-08-07T19:00,71.1,67,59.5,0,0,3.2,8.3 -2022-08-07T20:00,69.4,73,60.3,0,0,1.8,5.6 -2022-08-07T21:00,68.3,79,61.3,0,0,2.2,4.5 -2022-08-07T22:00,67.2,83,61.7,0,0,2.2,3.8 -2022-08-07T23:00,65.7,87,61.8,0,0,2.5,4 -2022-08-08T00:00,65.4,87,61.4,0,0,4,6.3 -2022-08-08T01:00,64.1,89,60.9,0,0,3.3,6.5 -2022-08-08T02:00,63,91,60.4,0,0,2.7,5.1 -2022-08-08T03:00,61.7,92,59.4,0,0,2.1,4.7 -2022-08-08T04:00,60.7,93,58.6,0,0,1.9,3.4 -2022-08-08T05:00,60.7,92,58.4,0,0,2.5,4.3 -2022-08-08T06:00,62.1,86,57.9,0,0,2.7,4.3 -2022-08-08T07:00,64.6,83,59.2,0,0,1.4,6.5 -2022-08-08T08:00,68,74,59.5,0,0,1.3,7.2 -2022-08-08T09:00,72.3,63,58.9,0,0,2.7,10.1 -2022-08-08T10:00,76.7,52,57.7,0,0,3.7,11.9 -2022-08-08T11:00,80.3,46,57.4,0,0,4,12.5 -2022-08-08T12:00,83.1,39,55.5,0,0,5.3,14.1 -2022-08-08T13:00,84.6,35,53.6,0,0,5.1,15.7 -2022-08-08T14:00,85.1,32,52,0,0,4.7,14.1 -2022-08-08T15:00,83.5,34,52.2,0,0,5.2,18.3 -2022-08-08T16:00,84.4,31,50.5,0,0,5,13 -2022-08-08T17:00,87,28,50.1,0,0,5.5,13.2 -2022-08-08T18:00,81.3,40,54.7,0.004,0,8.1,15 -2022-08-08T19:00,78.3,44,54.9,0,0,3.6,13.6 -2022-08-08T20:00,75.1,51,55.9,0,0,4.5,7.6 -2022-08-08T21:00,72.1,59,57,0,0,4.2,7.6 -2022-08-08T22:00,69,66,57,0,0,2.8,6.7 -2022-08-08T23:00,67.6,68,56.8,0,0,3.8,6 -2022-08-09T00:00,66.5,67,55,0,0,4,6.7 -2022-08-09T01:00,64.9,65,52.6,0,0,3.8,6.5 -2022-08-09T02:00,63.2,65,51.3,0,0,2.8,6.3 -2022-08-09T03:00,62.7,64,50.2,0,0,3.6,4.9 -2022-08-09T04:00,63.6,60,49.6,0,0,4.3,6.3 -2022-08-09T05:00,64.2,62,51.1,0,0,4.7,5.1 -2022-08-09T06:00,66,54,49,0,0,2.7,5.6 -2022-08-09T07:00,70,50,50.7,0,0,1.4,5.1 -2022-08-09T08:00,73.9,51,54.8,0,0,3.3,9.8 -2022-08-09T09:00,78.1,49,57.7,0,0,2.5,9.8 -2022-08-09T10:00,82.3,43,57.5,0,0,3.3,10.7 -2022-08-09T11:00,86.5,34,55,0,0,5.2,13.6 -2022-08-09T12:00,89.1,25,49,0,0,5.4,14.8 -2022-08-09T13:00,90.6,20,43.5,0,0,6,14.5 -2022-08-09T14:00,91.5,19,42.8,0,0,7.6,16.3 -2022-08-09T15:00,91.2,17,41,0,0,8.2,16.8 -2022-08-09T16:00,91.1,16,39,0,0,8.5,17 -2022-08-09T17:00,91.8,15,37.1,0,0,5.1,16.8 -2022-08-09T18:00,89.6,17,39.6,0,0,7.3,11.9 -2022-08-09T19:00,84.1,23,42,0,0,9,13.4 -2022-08-09T20:00,81.5,27,44.4,0,0,11.3,17.7 -2022-08-09T21:00,78.9,31,45.3,0,0,13.8,22.4 -2022-08-09T22:00,75.5,35,45.9,0,0,8.8,22.1 -2022-08-09T23:00,72.6,40,46.6,0,0,6.1,13.9 -2022-08-10T00:00,71.5,41,46.6,0,0,8.5,14.1 -2022-08-10T01:00,69.3,44,46.7,0,0,6.8,13.9 -2022-08-10T02:00,67.3,49,47.2,0,0,6.9,11.6 -2022-08-10T03:00,64.5,55,47.8,0,0,5.5,11.2 -2022-08-10T04:00,62.5,59,47.9,0,0,3.8,8.7 -2022-08-10T05:00,61.9,64,49.6,0,0,3.1,6.3 -2022-08-10T06:00,64.1,60,49.9,0,0,1.7,4.3 -2022-08-10T07:00,69.4,52,50.8,0,0,0.5,4.7 -2022-08-10T08:00,74.4,42,49.9,0,0,1.8,7.4 -2022-08-10T09:00,78.7,38,51.1,0,0,3.4,10.7 -2022-08-10T10:00,83.2,33,51.2,0,0,3.3,11.6 -2022-08-10T11:00,87.1,25,46.8,0,0,1.7,11.4 -2022-08-10T12:00,89.5,20,42.9,0,0,1.1,9.8 -2022-08-10T13:00,91.5,18,41.6,0,0,2.5,11 -2022-08-10T14:00,92.8,16,40.6,0,0,3.5,11.9 -2022-08-10T15:00,93.7,15,39.7,0,0,5.3,13.6 -2022-08-10T16:00,94.1,15,39.4,0,0,5.5,14.5 -2022-08-10T17:00,93,16,40.7,0,0,7.9,13.2 -2022-08-10T18:00,89.7,20,43.8,0,0,11.6,18.6 -2022-08-10T19:00,85.2,25,45,0,0,12.1,19.9 -2022-08-10T20:00,81.6,28,45.7,0,0,12,20.6 -2022-08-10T21:00,78.7,32,46.6,0,0,11.2,19.2 -2022-08-10T22:00,76.9,36,48,0,0,13.5,21.3 -2022-08-10T23:00,75.7,42,50.9,0,0,14.8,24.4 -2022-08-11T00:00,74.4,45,51.6,0,0,13.2,24.2 -2022-08-11T01:00,72.9,48,51.8,0,0,10.6,21.3 -2022-08-11T02:00,71,51,51.8,0,0,7.8,17.2 -2022-08-11T03:00,68.6,53,50.8,0,0,5.7,12.8 -2022-08-11T04:00,65.8,55,49.2,0,0,3.5,8.9 -2022-08-11T05:00,64.6,55,47.9,0,0,4.6,5.4 -2022-08-11T06:00,66.9,49,47.3,0,0,2.1,5.4 -2022-08-11T07:00,70.4,44,47.8,0,0,1.4,5.6 -2022-08-11T08:00,74.2,43,50.5,0,0,2.7,9.4 -2022-08-11T09:00,78.9,38,51,0,0,3.4,10.7 -2022-08-11T10:00,83.8,31,50.2,0,0,4.9,13.2 -2022-08-11T11:00,88,27,49.6,0,0,5.6,15 -2022-08-11T12:00,90.9,23,48.2,0,0,4.6,14.8 -2022-08-11T13:00,92.8,20,45.5,0,0,4.9,14.1 -2022-08-11T14:00,94.4,17,43.3,0,0,5.6,14.8 -2022-08-11T15:00,94.9,17,42.5,0,0,3.8,15 -2022-08-11T16:00,94.9,15,39.8,0,0,3.8,12.1 -2022-08-11T17:00,94.7,15,40.7,0,0,6.4,13.2 -2022-08-11T18:00,92.8,17,41.7,0,0,3.6,11.6 -2022-08-11T19:00,87.9,21,42.5,0,0,10.2,15.2 -2022-08-11T20:00,84.2,21,39.7,0,0,14.5,23.3 -2022-08-11T21:00,81.2,21,37.9,0,0,12.8,23.9 -2022-08-11T22:00,78.2,24,38.8,0,0,10.9,20.6 -2022-08-11T23:00,75.4,29,40.6,0,0,8.6,17.2 -2022-08-12T00:00,73.7,32,41.7,0,0,7.2,13.9 -2022-08-12T01:00,71.8,35,42.4,0,0,6.6,12.1 -2022-08-12T02:00,70.1,38,43,0,0,5.5,10.5 -2022-08-12T03:00,67.4,43,44.1,0,0,4.3,8.7 -2022-08-12T04:00,65.4,50,46.3,0,0,4.9,6.3 -2022-08-12T05:00,69.7,48,48.9,0,0,3,6 -2022-08-12T06:00,68.5,50,49.1,0,0,3.6,5.8 -2022-08-12T07:00,73,41,48,0,0,3.3,8.3 -2022-08-12T08:00,77,38,49.5,0,0,5.7,12.5 -2022-08-12T09:00,80.2,37,51.6,0,0,7.9,16.8 -2022-08-12T10:00,83.8,32,50.8,0,0,9.2,19.2 -2022-08-12T11:00,86.6,28,49.5,0,0,8.5,19.5 -2022-08-12T12:00,89.1,25,49,0,0,7.4,18.8 -2022-08-12T13:00,90.9,23,48.3,0,0,6.5,17.4 -2022-08-12T14:00,92.1,22,47.5,0,0,5.2,16.1 -2022-08-12T15:00,93.7,21,47.3,0,0,5.6,14.8 -2022-08-12T16:00,92.5,21,46.4,0,0,5.5,14.3 -2022-08-12T17:00,92.6,18,42.9,0,0,3.6,13.2 -2022-08-12T18:00,91,19,43.1,0,0,4.7,9.6 -2022-08-12T19:00,84.3,26,45.4,0,0,5.6,7.8 -2022-08-12T20:00,82.2,28,45.4,0,0,4.8,7.4 -2022-08-12T21:00,79.1,32,46.6,0,0,3.2,5.6 -2022-08-12T22:00,80.2,31,46.7,0,0,2.1,4.3 -2022-08-12T23:00,76,36,47.2,0,0,2.1,3.4 -2022-08-13T00:00,71.3,43,47.9,0,0,3.9,5.6 -2022-08-13T01:00,68.4,50,48.9,0,0,2.4,5.6 -2022-08-13T02:00,66.2,56,50,0,0,2.9,4 -2022-08-13T03:00,65.2,58,50.3,0,0,2.8,4.5 -2022-08-13T04:00,64.2,60,50,0,0,2.6,5.1 -2022-08-13T05:00,63.6,77,56.1,0,0,7.2,4.5 -2022-08-13T06:00,64.5,75,56.4,0,0,6.9,11.9 -2022-08-13T07:00,68.2,65,55.8,0,0,4.5,11.9 -2022-08-13T08:00,70.6,59,55.5,0,0,0,10.3 -2022-08-13T09:00,73.9,51,54.8,0,0,2.5,9.8 -2022-08-13T10:00,77.8,44,53.9,0,0,3.5,11.9 -2022-08-13T11:00,82,38,53.6,0,0,4,12.8 -2022-08-13T12:00,85.5,34,53.5,0,0,4,13.2 -2022-08-13T13:00,87.9,29,51.8,0,0,2.9,13 -2022-08-13T14:00,90.6,25,49.6,0,0,8,17.4 -2022-08-13T15:00,88.6,25,48.2,0,0,7.9,19 -2022-08-13T16:00,90,23,46.7,0,0,6.5,17.2 -2022-08-13T17:00,83,36,53.1,0,0,8.8,14.8 -2022-08-13T18:00,81.3,40,54.5,0,0,5.9,17.4 -2022-08-13T19:00,79.3,38,51.3,0,0,11.5,18.6 -2022-08-13T20:00,76,43,52.1,0,0,2.1,18.3 -2022-08-13T21:00,75.7,45,52.7,0,0,4.6,7.2 -2022-08-13T22:00,73.3,54,55.8,0,0,2.9,8.1 -2022-08-13T23:00,71.2,58,55.6,0,0,2.7,5.1 -2022-08-14T00:00,69.1,62,55.7,0,0,3,4.9 -2022-08-14T01:00,66.9,67,55.8,0,0,2.7,5.4 -2022-08-14T02:00,65.5,71,55.7,0,0,3.5,5.6 -2022-08-14T03:00,64.6,72,55.2,0,0,2.8,5.8 -2022-08-14T04:00,63.8,72,54.6,0,0,2.4,4.7 -2022-08-14T05:00,62.7,77,55.5,0,0,2.4,4.3 -2022-08-14T06:00,64.5,65,52.4,0,0,3.6,6.3 -2022-08-14T07:00,69,54,51.4,0,0,3.8,9.2 -2022-08-14T08:00,72.9,48,52.3,0,0,1.7,9.2 -2022-08-14T09:00,76.9,43,52.7,0,0,2.2,9.2 -2022-08-14T10:00,81.3,38,53,0,0,2.8,10.5 -2022-08-14T11:00,85.4,33,52.7,0,0,4,12.3 -2022-08-14T12:00,88.5,27,50.2,0,0,4.3,13.9 -2022-08-14T13:00,92.9,21,47.3,0,0,4.3,13.4 -2022-08-14T14:00,88.8,24,47.2,0,0,11.4,22.1 -2022-08-14T15:00,88.3,25,48.5,0,0,10.8,26.4 -2022-08-14T16:00,82.4,32,49.3,0.004,0,9,22.8 -2022-08-14T17:00,86.1,27,48.6,0.043,0,12.6,21.5 -2022-08-14T18:00,80,40,53.3,0.004,0,13.7,21.5 -2022-08-14T19:00,70,70,59.9,0.031,0,6.3,23 -2022-08-14T20:00,68.5,75,60.3,0,0,7.8,13.4 -2022-08-14T21:00,67.9,76,60.1,0,0,3.7,13.4 -2022-08-14T22:00,66.5,79,59.9,0,0,2.6,6 -2022-08-14T23:00,65.1,82,59.5,0,0,4.1,6.9 -2022-08-15T00:00,64.2,82,58.6,0,0,3.7,6.7 -2022-08-15T01:00,63.3,85,58.6,0,0,2.1,6 -2022-08-15T02:00,62.7,85,58,0,0,2.6,4.5 -2022-08-15T03:00,61.7,82,56.3,0,0,2.3,4.5 -2022-08-15T04:00,60.6,85,56.1,0,0,1.9,4.3 -2022-08-15T05:00,64,74,55.5,0,0,1.3,3.8 -2022-08-15T06:00,64.4,73,55.7,0,0,2.9,5.1 -2022-08-15T07:00,68.3,65,56,0,0,0.4,5.8 -2022-08-15T08:00,72.7,56,56.2,0,0,3.4,9.8 -2022-08-15T09:00,76.8,48,55.8,0,0,5,13.2 -2022-08-15T10:00,80.2,42,55.1,0,0,5.9,15 -2022-08-15T11:00,83.3,38,55.3,0,0,7.2,16.8 -2022-08-15T12:00,76.4,55,59.1,0.059,0,11,21.9 -2022-08-15T13:00,77.3,50,57.4,0,0,3.6,21.9 -2022-08-15T14:00,71.6,70,61.2,0.185,0,7.5,13.4 -2022-08-15T15:00,73.4,67,61.6,0.016,0,3.6,16.3 -2022-08-15T16:00,70.5,71,60.7,0.087,0,2.2,10.3 -2022-08-15T17:00,67.1,89,63.6,0,0,4.6,13.4 -2022-08-15T18:00,65.6,88,61.9,0.283,0,3.4,10.7 -2022-08-15T19:00,65.2,90,62.3,0.138,0,7.2,12.1 -2022-08-15T20:00,65.2,91,62.4,0.142,0,3.1,12.3 -2022-08-15T21:00,65.6,90,62.7,0.059,0,1.2,5.8 -2022-08-15T22:00,65.3,93,63.2,0.012,0,1.8,3.8 -2022-08-15T23:00,64.9,96,63.6,0.008,0,5.1,8.3 -2022-08-16T00:00,64.8,92,62.3,0.016,0,2.3,8.3 -2022-08-16T01:00,64.5,89,61.1,0.012,0,0.9,3.6 -2022-08-16T02:00,64,91,61.3,0.008,0,1.4,3.6 -2022-08-16T03:00,63.7,94,61.9,0,0,0.8,2.9 -2022-08-16T04:00,63.9,89,60.6,0,0,0.5,1.8 -2022-08-16T05:00,63,93,61,0.004,0,5.1,3.1 -2022-08-16T06:00,63,95,61.4,0.138,0,1,10.3 -2022-08-16T07:00,63.3,91,60.6,0.051,0,7.2,11 -2022-08-16T08:00,63.3,90,60.4,0.028,0,10,19 -2022-08-16T09:00,61.4,94,59.7,0.071,0,10.5,18.8 -2022-08-16T10:00,62,93,59.9,0.146,0,5.4,17.9 -2022-08-16T11:00,63.5,85,59,0.031,0,5.3,12.5 -2022-08-16T12:00,67.5,76,59.8,0.004,0,2.9,13 -2022-08-16T13:00,69.3,69,58.6,0,0,0.9,9.8 -2022-08-16T14:00,69.5,68,58.5,0,0,3.7,8.9 -2022-08-16T15:00,68.4,73,59.4,0.008,0,6.5,12.5 -2022-08-16T16:00,68.4,72,59,0.008,0,5.3,13.4 -2022-08-16T17:00,69,70,58.9,0.008,0,3.7,10.5 -2022-08-16T18:00,67.2,78,60.2,0,0,2.1,6.7 -2022-08-16T19:00,65.7,76,57.7,0,0,3.7,5.6 -2022-08-16T20:00,63.9,77,56.4,0,0,6.8,10.7 -2022-08-16T21:00,63.1,79,56.5,0,0,6,11 -2022-08-16T22:00,62.6,79,56.1,0,0,3.5,9.6 -2022-08-16T23:00,60.7,86,56.4,0,0,2.4,5.6 -2022-08-17T00:00,59.6,87,55.9,0,0,3.5,5.6 -2022-08-17T01:00,57.7,89,54.6,0,0,2.9,5.8 -2022-08-17T02:00,56.6,91,54,0,0,2.4,4.5 -2022-08-17T03:00,56.7,89,53.4,0,0,2.8,4 -2022-08-17T04:00,56.3,85,51.7,0,0,5.2,6.5 -2022-08-17T05:00,57,90,54.2,0,0,4.3,6.7 -2022-08-17T06:00,58.6,87,54.7,0,0,3.7,6 -2022-08-17T07:00,62.4,80,56,0,0,2.2,6.7 -2022-08-17T08:00,65.6,78,58.5,0,0,1.6,7.8 -2022-08-17T09:00,68.9,71,59,0,0,1.7,8.3 -2022-08-17T10:00,72.4,62,58.5,0,0,3.3,11.6 -2022-08-17T11:00,74.4,54,56.6,0.004,0,2.9,11.9 -2022-08-17T12:00,76.4,47,54.5,0,0,1.6,10.7 -2022-08-17T13:00,78.4,40,52.1,0,0,1.9,9.6 -2022-08-17T14:00,79.8,35,49.4,0,0,2.6,9.6 -2022-08-17T15:00,80.1,32,47.5,0,0,1.5,9.8 -2022-08-17T16:00,81,30,46.3,0,0,1.7,8.1 -2022-08-17T17:00,81.2,25,41.8,0,0,5.4,8.1 -2022-08-17T18:00,78.1,38,50.3,0,0,2.3,9.8 -2022-08-17T19:00,70.4,47,49,0,0,5.3,6.3 -2022-08-17T20:00,67.1,52,48.9,0,0,4.2,6.9 -2022-08-17T21:00,63.9,58,48.9,0,0,3.9,6.7 -2022-08-17T22:00,61.5,62,48.4,0,0,4.3,7.2 -2022-08-17T23:00,59.1,68,48.4,0,0,3.5,6.9 -2022-08-18T00:00,58.4,65,46.5,0,0,4.1,7.2 -2022-08-18T01:00,56.9,65,45.4,0,0,3.4,6.9 -2022-08-18T02:00,56.3,66,45,0,0,3.7,6 -2022-08-18T03:00,55.6,64,43.6,0,0,3.8,6.3 -2022-08-18T04:00,54.9,64,42.7,0,0,3.7,6 -2022-08-18T05:00,55,65,43.3,0,0,3.9,6 -2022-08-18T06:00,56.6,61,43.1,0,0,4.2,6.3 -2022-08-18T07:00,62.2,56,46.3,0,0,3.8,8.3 -2022-08-18T08:00,70.8,49,50.6,0,0,2.6,8.3 -2022-08-18T09:00,76.1,41,50.5,0,0,7.1,13.4 -2022-08-18T10:00,78.3,32,45.7,0,0,9.9,20.1 -2022-08-18T11:00,82.3,27,45.1,0,0,10.1,19.9 -2022-08-18T12:00,84.7,23,42.4,0,0,10.2,21 -2022-08-18T13:00,85.6,21,41.2,0,0,7.8,20.4 -2022-08-18T14:00,86.3,20,40.9,0,0,6.7,17 -2022-08-18T15:00,86.5,20,40.6,0,0,5.9,15.2 -2022-08-18T16:00,85.8,20,40.3,0,0,4.8,13.2 -2022-08-18T17:00,84.5,22,41.8,0,0,5.3,10.7 -2022-08-18T18:00,80.8,48,59.4,0,0,2.1,9.2 -2022-08-18T19:00,79.1,29,44.1,0,0,3.8,4.3 -2022-08-18T20:00,72.6,39,46,0,0,2.9,4.9 -2022-08-18T21:00,67.3,52,49.2,0,0,5.3,8.5 -2022-08-18T22:00,62.7,65,50.8,0,0,4.9,9.6 -2022-08-18T23:00,60.2,73,51.6,0,0,3.2,8.1 -2022-08-19T00:00,58.6,79,52.1,0,0,2.6,5.1 -2022-08-19T01:00,57.9,80,51.7,0,0,3.6,6 -2022-08-19T02:00,57.1,80,51,0,0,3.4,6 -2022-08-19T03:00,56.8,79,50.3,0,0,3.2,6.3 -2022-08-19T04:00,57.7,75,49.6,0,0,1.6,4.9 -2022-08-19T05:00,56.1,73,47.6,0,0,3,2.7 -2022-08-19T06:00,57.9,69,47.8,0,0,1.5,4.5 -2022-08-19T07:00,63.1,59,48.5,0,0,3.7,8.1 -2022-08-19T08:00,68.6,49,48.9,0,0,5.3,11.2 -2022-08-19T09:00,73.4,38,46,0,0,10.3,19.5 -2022-08-19T10:00,75.7,34,45.1,0,0,11,21.5 -2022-08-19T11:00,78.1,31,44.9,0,0,10.1,21.5 -2022-08-19T12:00,80.2,29,45.4,0,0,7,20.1 -2022-08-19T13:00,79.6,30,45.4,0,0,4.7,16.1 -2022-08-19T14:00,80.4,30,46.2,0,0,2.8,12.1 -2022-08-19T15:00,80.9,30,46.1,0,0,4.1,11 -2022-08-19T16:00,80.5,29,45.8,0,0,3.1,11 -2022-08-19T17:00,77.4,35,47.6,0,0,3.3,10.7 -2022-08-19T18:00,71.9,50,52.3,0.004,0,12.8,17.4 -2022-08-19T19:00,64.1,74,55.5,0,0,11.5,29.8 -2022-08-19T20:00,64.2,72,55,0,0,9.9,17.7 -2022-08-19T21:00,65.1,61,51.2,0,0,7.1,17.2 -2022-08-19T22:00,64.8,63,52.1,0,0,4.2,11.4 -2022-08-19T23:00,63.3,67,52.3,0,0,2.4,4.9 -2022-08-20T00:00,62.2,75,54.1,0,0,3.6,5.6 -2022-08-20T01:00,61.6,75,53.7,0,0,1.7,4.3 -2022-08-20T02:00,61.9,74,53.4,0,0,0.9,2.7 -2022-08-20T03:00,61.5,75,53.7,0,0,1.8,2.5 -2022-08-20T04:00,59,83,54,0,0,3.3,5.1 -2022-08-20T05:00,60,90,57.1,0,0,2.9,7.6 -2022-08-20T06:00,60.7,86,56.6,0,0,2.7,6 -2022-08-20T07:00,62,83,56.7,0,0,2.7,6.9 -2022-08-20T08:00,64,75,56,0.004,0,3.2,9.2 -2022-08-20T09:00,64.5,76,56.8,0.02,0,4,9.4 -2022-08-20T10:00,63.7,83,58.6,0.028,0,3.4,10.1 -2022-08-20T11:00,65.8,80,59.4,0.012,0,2.8,8.5 -2022-08-20T12:00,72.2,60,57.6,0,0,3.5,13 -2022-08-20T13:00,72.1,61,57.9,0,0,6.9,14.5 -2022-08-20T14:00,73.2,55,56.1,0,0,7,18.3 -2022-08-20T15:00,70.8,61,56.7,0,0,1.6,15.2 -2022-08-20T16:00,71.4,54,53.7,0.004,0,5.2,11.9 -2022-08-20T17:00,67.7,76,59.8,0,0,1.5,11.6 -2022-08-20T18:00,64.8,80,58.6,0.024,0,9.4,15 -2022-08-20T19:00,63,87,59.1,0.012,0,6.9,16.8 -2022-08-20T20:00,62.5,93,60.4,0.031,0,2,11 -2022-08-20T21:00,61.6,95,60.3,0,0,3.3,6.3 -2022-08-20T22:00,61.5,97,60.5,0,0,1.6,6.5 -2022-08-20T23:00,59.9,99,59.6,0,0,2.1,5.6 -2022-08-21T00:00,60.4,100,60.4,0,0,1.6,3.6 -2022-08-21T01:00,57.3,100,57.3,0,0,2.9,2.7 -2022-08-21T02:00,59.1,98,58.6,0,0,4.8,8.3 -2022-08-21T03:00,58.7,97,57.7,0,0,2.9,8.1 -2022-08-21T04:00,60.3,90,57.4,0,0,1.8,5.8 -2022-08-21T05:00,56.8,95,55.4,0,0,2.3,4.3 -2022-08-21T06:00,57.6,91,55,0,0,4.5,8.1 -2022-08-21T07:00,59.9,87,56.1,0,0,1.7,7.6 -2022-08-21T08:00,63.8,74,55.5,0,0,2.4,8.3 -2022-08-21T09:00,68.4,60,54.1,0,0,1.8,8.5 -2022-08-21T10:00,74.1,46,52.2,0,0,3.4,11 -2022-08-21T11:00,75.8,42,50.9,0.004,0,2.4,11.2 -2022-08-21T12:00,77.3,40,51.2,0,0,3.4,11.2 -2022-08-21T13:00,76.2,41,50.9,0,0,7.9,16.3 -2022-08-21T14:00,77.5,40,51,0,0,6.7,19 -2022-08-21T15:00,74.2,49,53.9,0.02,0,1.1,14.8 -2022-08-21T16:00,75,45,52.1,0,0,5.2,11 -2022-08-21T17:00,70.8,57,54.7,0.055,0,9.8,12.3 -2022-08-21T18:00,66.1,66,54.4,0,0,8.1,20.4 -2022-08-21T19:00,64.9,81,58.9,0,0,11,17.4 -2022-08-21T20:00,64.1,82,58.6,0,0,8.3,17.2 -2022-08-21T21:00,63.7,80,57.4,0,0,6.3,13.4 -2022-08-21T22:00,62.8,81,57,0,0,5.2,10.1 -2022-08-21T23:00,60.8,86,56.5,0,0,5,8.5 -2022-08-22T00:00,59.4,88,55.7,0,0,4.3,8.7 -2022-08-22T01:00,60.2,82,54.6,0,0,4.6,8.3 -2022-08-22T02:00,60,79,53.6,0,0,4.5,7.6 -2022-08-22T03:00,59.8,77,52.7,0,0,2.4,7.4 -2022-08-22T04:00,60.3,74,52,0,0,1.6,4.3 -2022-08-22T05:00,58.6,81,52.7,0,0,2.9,3.1 -2022-08-22T06:00,59,80,52.9,0,0,3,4 -2022-08-22T07:00,62.8,72,53.8,0,0,2.3,6.9 -2022-08-22T08:00,67.2,59,52.3,0,0,0.9,6.7 -2022-08-22T09:00,71.2,52,52.5,0,0,3.1,10.3 -2022-08-22T10:00,75.5,44,52,0,0,3.7,11.4 -2022-08-22T11:00,78.7,39,51.4,0,0,4.6,12.8 -2022-08-22T12:00,79.8,35,49.6,0,0,3.2,12.8 -2022-08-22T13:00,81,32,48.3,0,0,2.5,11.2 -2022-08-22T14:00,81.9,31,48.4,0,0,2.3,11 -2022-08-22T15:00,82,30,47.2,0,0,7,13.2 -2022-08-22T16:00,75.6,41,50.2,0,0,15.4,27.3 -2022-08-22T17:00,80.3,31,46.9,0,0,4.8,25.9 -2022-08-22T18:00,76.7,39,49.6,0,0,3.4,9.8 -2022-08-22T19:00,71.9,51,53,0,0,3.3,5.8 -2022-08-22T20:00,68.4,59,53.5,0,0,5,8.1 -2022-08-22T21:00,65.2,67,54.1,0,0,4.7,8.1 -2022-08-22T22:00,63.5,72,54.3,0,0,4.8,8.3 -2022-08-22T23:00,61.7,74,53.5,0,0,4.8,8.1 -2022-08-23T00:00,60.5,74,52.3,0,0,4.7,7.8 -2022-08-23T01:00,59.4,73,50.5,0,0,5,8.5 -2022-08-23T02:00,58.1,73,49.4,0,0,3.6,8.1 -2022-08-23T03:00,57.3,73,48.6,0,0,2.9,6 -2022-08-23T04:00,56.5,73,48.1,0,0,2.8,4.5 -2022-08-23T05:00,56,75,48.1,0,0,3.5,4.7 -2022-08-23T06:00,58.6,68,48.2,0,0,1.9,4.5 -2022-08-23T07:00,63.7,58,48.7,0,0,0.7,4.9 -2022-08-23T08:00,68.7,51,49.7,0,0,2.8,8.3 -2022-08-23T09:00,73.1,45,50.8,0,0,3.8,10.7 -2022-08-23T10:00,77.5,37,49.6,0,0,3.8,11.6 -2022-08-23T11:00,80.3,30,46,0,0,2.7,11.6 -2022-08-23T12:00,81.9,27,45.1,0,0,1.3,10.5 -2022-08-23T13:00,83.5,25,44,0,0,1.6,9.6 -2022-08-23T14:00,83.8,24,43.3,0,0,1.5,9.6 -2022-08-23T15:00,85.1,22,42,0,0,5.4,13.2 -2022-08-23T16:00,83.9,22,40.8,0,0,4.4,13.4 -2022-08-23T17:00,82.7,23,40.6,0,0,6.4,12.8 -2022-08-23T18:00,79.6,29,44.2,0,0,7.4,11.6 -2022-08-23T19:00,74.5,37,46.3,0,0,8.1,14.3 -2022-08-23T20:00,72,43,48.1,0,0,4.6,12.8 -2022-08-23T21:00,66.6,53,49.1,0,0,3.2,5.4 -2022-08-23T22:00,64.5,57,49.1,0,0,4.7,7.4 -2022-08-23T23:00,62.7,61,49.1,0,0,4.6,8.3 -2022-08-24T00:00,60.8,66,49.6,0,0,4.2,7.6 -2022-08-24T01:00,59.8,69,49.6,0,0,3.7,6.7 -2022-08-24T02:00,59,69,48.8,0,0,3.7,6.5 -2022-08-24T03:00,57.4,71,48,0,0,2.5,6 -2022-08-24T04:00,56.5,71,47.1,0,0,2.7,4.3 -2022-08-24T05:00,60,60,46.2,0,0,3,4.5 -2022-08-24T06:00,58,66,46.9,0,0,1.8,4.5 -2022-08-24T07:00,63.4,57,48.1,0,0,2.7,6.9 -2022-08-24T08:00,69.4,44,46.7,0,0,1.8,7.6 -2022-08-24T09:00,73.5,38,46.4,0,0,1.3,7.6 -2022-08-24T10:00,76.9,34,46.6,0,0,4.3,12.1 -2022-08-24T11:00,80,30,46.1,0,0,5.1,13.9 -2022-08-24T12:00,82.1,28,46,0,0,4,13.9 -2022-08-24T13:00,83.8,26,45.5,0,0,3.4,12.5 -2022-08-24T14:00,84.7,25,45,0,0,2,11.6 -2022-08-24T15:00,84.7,24,43.9,0,0,1.3,9.8 -2022-08-24T16:00,85,24,44.1,0,0,2.2,8.5 -2022-08-24T17:00,84.4,22,41.4,0,0,5.4,8.5 -2022-08-24T18:00,81.6,26,43.5,0,0,4,10.1 -2022-08-24T19:00,78.6,26,41,0,0,4.3,7.6 -2022-08-24T20:00,72.1,41,47.1,0,0,6.2,8.9 -2022-08-24T21:00,66.7,57,50.9,0,0,2.7,11.6 -2022-08-24T22:00,64.7,59,50.2,0,0,3.4,4.7 -2022-08-24T23:00,62.6,63,49.6,0,0,2.6,4.9 -2022-08-25T00:00,61.1,63,48.6,0,0,4.5,6.9 -2022-08-25T01:00,59.7,65,47.8,0,0,4.2,7.6 -2022-08-25T02:00,58,69,48,0,0,2.8,6.5 -2022-08-25T03:00,57.1,71,47.8,0,0,2.7,4.7 -2022-08-25T04:00,56.1,71,47,0,0,3,4.3 -2022-08-25T05:00,57.2,72,48.4,0,0,3.8,4.5 -2022-08-25T06:00,57.7,68,47.3,0,0,2.6,5.1 -2022-08-25T07:00,63.5,59,48.7,0,0,1.8,6.3 -2022-08-25T08:00,69.2,45,47,0,0,3.1,8.9 -2022-08-25T09:00,74.1,35,44.9,0,0,3.5,10.7 -2022-08-25T10:00,78.6,30,44.3,0,0,3.6,11.2 -2022-08-25T11:00,82.9,26,44.2,0,0,2.7,11.2 -2022-08-25T12:00,85.9,22,42.7,0,0,2.5,10.5 -2022-08-25T13:00,87.4,20,41,0,0,3.1,10.5 -2022-08-25T14:00,86.4,23,44.1,0,0,14.7,24.8 -2022-08-25T15:00,82.9,27,45.7,0,0,12.1,32.4 -2022-08-25T16:00,79.7,32,46.9,0,0,14.7,25.3 -2022-08-25T17:00,73.8,46,51.5,0,0,11.6,25.5 -2022-08-25T18:00,71.2,60,56.7,0.024,0,5.3,19.2 -2022-08-25T19:00,69.3,67,57.9,0,0,6.2,9.6 -2022-08-25T20:00,68.2,68,57,0,0,4.6,9.8 -2022-08-25T21:00,66.1,72,56.9,0,0,7.2,11 -2022-08-25T22:00,65.6,65,53.4,0,0,7.6,14.3 -2022-08-25T23:00,65.8,64,53.3,0,0,6.3,12.3 -2022-08-26T00:00,65.8,60,51.3,0,0,5.2,11.6 -2022-08-26T01:00,63.3,65,51.5,0,0,4,8.5 -2022-08-26T02:00,60.2,74,51.9,0,0,3,6.5 -2022-08-26T03:00,59.7,72,50.8,0,0,3.8,5.8 -2022-08-26T04:00,59.6,70,49.8,0,0,5.3,8.7 -2022-08-26T05:00,61,62,47.7,0,0,4.6,8.7 -2022-08-26T06:00,61.1,58,46.2,0,0,4.1,7.6 -2022-08-26T07:00,66.3,50,47.2,0,0,4,8.3 -2022-08-26T08:00,73.2,39,46.8,0,0,1.3,8.7 -2022-08-26T09:00,77.5,31,44.7,0,0,2.1,8.3 -2022-08-26T10:00,78.3,32,45.9,0.004,0,4.3,11 -2022-08-26T11:00,77.4,35,47.6,0,0,3.2,12.3 -2022-08-26T12:00,80.3,32,47.5,0.008,0,4,10.7 -2022-08-26T13:00,83.2,27,45.4,0,0,5.8,15.7 -2022-08-26T14:00,84.1,25,44.2,0,0,6.2,15.4 -2022-08-26T15:00,84.1,24,43.5,0,0,5.8,15 -2022-08-26T16:00,83.8,23,42,0,0,11.1,19.5 -2022-08-26T17:00,76.9,38,49.2,0,0,10.9,19.7 -2022-08-26T18:00,74.3,40,48.6,0,0,11.6,25.5 -2022-08-26T19:00,70.6,50,50.9,0,0,10.3,18.3 -2022-08-26T20:00,68.4,55,51.7,0,0,6.8,17.9 -2022-08-26T21:00,67.2,57,51.4,0,0,5,11 -2022-08-26T22:00,66.6,57,51,0,0,6.4,10.5 -2022-08-26T23:00,65.3,63,52.5,0,0,5,10.5 -2022-08-27T00:00,64.5,68,53.5,0,0,5.4,8.9 -2022-08-27T01:00,62.2,68,51.5,0,0,4.3,9.2 -2022-08-27T02:00,60.9,63,48.1,0,0,4.4,6.7 -2022-08-27T03:00,61,58,46,0,0,5.9,7.4 -2022-08-27T04:00,61,54,44.2,0,0,7.1,8.5 -2022-08-27T05:00,61.7,55,45.3,0,0,4.3,8.9 -2022-08-27T06:00,63.4,51,44.8,0,0,5.2,6.5 -2022-08-27T07:00,68.3,43,45.1,0,0,1.6,6.3 -2022-08-27T08:00,73.5,37,45.7,0,0,5.1,10.5 -2022-08-27T09:00,77.6,30,43.9,0,0,4,11.4 -2022-08-27T10:00,79.8,30,45.2,0,0,0.4,10.5 -2022-08-27T11:00,83.9,20,38.2,0,0,5.9,13.2 -2022-08-27T12:00,85.6,15,31.9,0,0,9.8,19.2 -2022-08-27T13:00,85.8,16,34,0,0,9.9,21 -2022-08-27T14:00,85.6,17,35.3,0,0,6,19.7 -2022-08-27T15:00,86.3,16,35,0,0,3.2,14.3 -2022-08-27T16:00,84.3,19,37.4,0,0,9.2,17.7 -2022-08-27T17:00,81.9,22,39,0,0,9.8,17.7 -2022-08-27T18:00,78.3,27,41.1,0,0,11.4,19.7 -2022-08-27T19:00,74.5,29,39.9,0,0,8.4,18.6 -2022-08-27T20:00,70.3,36,41.8,0,0,5.8,13.6 -2022-08-27T21:00,66.8,43,43.9,0,0,6.7,11.2 -2022-08-27T22:00,64.6,47,43.7,0,0,6,11 -2022-08-27T23:00,62.9,49,43.2,0,0,5.4,9.8 -2022-08-28T00:00,62.4,47,42.1,0,0,5.5,8.7 -2022-08-28T01:00,62.6,45,41.1,0,0,5.6,8.9 -2022-08-28T02:00,62.2,44,40.1,0,0,6,9.6 -2022-08-28T03:00,62,44,39.8,0,0,6.3,10.1 -2022-08-28T04:00,61.7,44,39.8,0,0,6.2,10.5 -2022-08-28T05:00,58.1,56,42.4,0,0,5.9,9.8 -2022-08-28T06:00,60.1,54,43.4,0,0,3.8,7.2 -2022-08-28T07:00,66.7,46,45.1,0,0,5.3,9.8 -2022-08-28T08:00,73.9,35,44.9,0,0,5.2,11 -2022-08-28T09:00,81.2,25,41.8,0,0,8,16.3 -2022-08-28T10:00,84.5,22,41.4,0,0,2.7,15.7 -2022-08-28T11:00,86.5,16,35.7,0,0,3.6,14.3 -2022-08-28T12:00,88.3,16,37,0,0,3.8,12.1 -2022-08-28T13:00,86.7,17,36.6,0,0,7.6,16.6 -2022-08-28T14:00,86.2,17,36.8,0,0,8.8,19.2 -2022-08-28T15:00,85.6,17,35.2,0,0,11.3,19.7 -2022-08-28T16:00,80,25,41.2,0,0,14.9,29.1 -2022-08-28T17:00,77.2,34,46.7,0,0,8.7,24.6 -2022-08-28T18:00,77.4,31,44.2,0,0,4.7,14.5 -2022-08-28T19:00,72.8,41,47.9,0,0,5.8,9.4 -2022-08-28T20:00,70.9,48,50.3,0,0,6,10.1 -2022-08-28T21:00,66.9,57,51.2,0,0,7.1,11.4 -2022-08-28T22:00,65.6,56,49.6,0,0,5.6,11.4 -2022-08-28T23:00,66.5,45,44.3,0,0,6,10.3 -2022-08-29T00:00,63.1,47,42.4,0,0,7.6,9.4 -2022-08-29T01:00,67.7,37,40.4,0,0,2.3,8.9 -2022-08-29T02:00,66.1,42,42.4,0,0,1.5,3.6 -2022-08-29T03:00,64,47,43.3,0,0,2.1,2.5 -2022-08-29T04:00,58.8,55,42.7,0,0,4.8,6.7 -2022-08-29T05:00,57.9,49,38.7,0,0,4.1,6.9 -2022-08-29T06:00,59,51,40.6,0,0,3.5,6.7 -2022-08-29T07:00,62.6,45,41.2,0,0,2,5.6 -2022-08-29T08:00,67.2,41,42.5,0,0,3.1,9.4 -2022-08-29T09:00,71.9,37,44.3,0,0,3.9,11 -2022-08-29T10:00,76.6,33,45.2,0,0,4.3,12.3 -2022-08-29T11:00,80.2,29,45.1,0,0,4.2,12.8 -2022-08-29T12:00,82.9,25,43.6,0,0,3.5,12.5 -2022-08-29T13:00,84.8,23,42.8,0,0,2.6,11.9 -2022-08-29T14:00,85.7,21,41.5,0,0,2.6,10.3 -2022-08-29T15:00,86.3,20,40.5,0,0,3.5,10.5 -2022-08-29T16:00,86.3,19,39.8,0,0,3.7,10.7 -2022-08-29T17:00,84.5,22,41.1,0,0,7,11.4 -2022-08-29T18:00,81.6,25,42.8,0,0,6.3,13 -2022-08-29T19:00,76,32,44.2,0,0,5.3,10.1 -2022-08-29T20:00,70.9,45,48.5,0,0,5.1,8.3 -2022-08-29T21:00,68.6,50,49.3,0,0,2.6,6 -2022-08-29T22:00,67.2,52,48.9,0,0,3.2,5.1 -2022-08-29T23:00,66.7,50,47.6,0,0,4.5,6.7 -2022-08-30T00:00,67.5,47,46.8,0,0,7.8,12.1 -2022-08-30T01:00,65.2,52,47.1,0,0,5.4,13 -2022-08-30T02:00,62.3,59,47.7,0,0,3.7,8.5 -2022-08-30T03:00,61.8,60,47.7,0,0,4.1,6 -2022-08-30T04:00,60.8,61,47.1,0,0,4.5,6.3 -2022-08-30T05:00,61.8,59,47.5,0,0,4.1,6.3 -2022-08-30T06:00,59.8,66,48.5,0,0,4.2,5.8 -2022-08-30T07:00,65.3,50,46,0,0,2.1,6.7 -2022-08-30T08:00,69.4,44,46.7,0,0,1.4,6.7 -2022-08-30T09:00,73.6,40,47.8,0,0,3.2,10.3 -2022-08-30T10:00,78,35,48.5,0,0,4.5,12.8 -2022-08-30T11:00,82,31,48.7,0,0,3.3,13 -2022-08-30T12:00,85.4,28,48.3,0,0,2.3,11.6 -2022-08-30T13:00,88.1,22,44.6,0,0,3,11 -2022-08-30T14:00,90.1,17,40,0,0,3.8,11.4 -2022-08-30T15:00,90.1,17,38.9,0,0,6.6,14.3 -2022-08-30T16:00,89.6,17,39.2,0,0,6.5,14.8 -2022-08-30T17:00,88.6,18,40,0,0,6.8,13.4 -2022-08-30T18:00,83.9,29,48.6,0,0,3.2,12.8 -2022-08-30T19:00,77.5,34,47.1,0,0,4.8,4.9 -2022-08-30T20:00,75.7,35,46.3,0,0,7.5,11.6 -2022-08-30T21:00,72.6,41,47.4,0,0,7.2,11.9 -2022-08-30T22:00,70.2,45,47.9,0,0,8,12.3 -2022-08-30T23:00,68.9,46,47.1,0,0,8.5,13.9 -2022-08-31T00:00,68.8,43,45.7,0,0,8.7,14.5 -2022-08-31T01:00,67.9,44,45.2,0,0,7.7,14.3 -2022-08-31T02:00,65.5,48,45.1,0,0,5.7,12.3 -2022-08-31T03:00,63.5,51,45.2,0,0,4.6,8.9 -2022-08-31T04:00,61.2,56,45.3,0,0,3.8,7.2 -2022-08-31T05:00,61.3,54,44.3,0,0,3.5,5.6 -2022-08-31T06:00,61.8,52,44.1,0,0,2,5.4 -2022-08-31T07:00,66.6,41,42,0,0,3.1,7.4 -2022-08-31T08:00,71.9,35,42.4,0,0,2.7,8.5 -2022-08-31T09:00,77.5,28,42.1,0,0,5.1,12.3 -2022-08-31T10:00,81.9,27,44.2,0,0,7.9,16.8 -2022-08-31T11:00,84.8,22,41.4,0,0,9.1,19.5 -2022-08-31T12:00,87.3,17,37.3,0,0,6.1,19.5 -2022-08-31T13:00,89.2,14,33.9,0,0,5.2,15.4 -2022-08-31T14:00,90,12,30,0,0,8.1,17.9 -2022-08-31T15:00,90.6,12,30,0,0,8.8,17.7 -2022-08-31T16:00,90.5,12,29.9,0,0,9.5,18.8 -2022-08-31T17:00,81.7,23,40.1,0,0,8.1,29.8 -2022-08-31T18:00,79.5,26,41.7,0,0,6,13.6 -2022-08-31T19:00,74.8,32,43.1,0,0,4.6,10.1 -2022-08-31T20:00,73,35,43.5,0,0,5,8.1 -2022-08-31T21:00,70.3,36,42.3,0,0,4.2,8.3 -2022-08-31T22:00,67.9,39,42.4,0,0,5.6,8.9 -2022-08-31T23:00,65.2,45,43.2,0,0,4.3,9.2 -2022-09-01T00:00,63.1,49,43.6,0,0,4.2,6.7 -2022-09-01T01:00,61.9,51,43.7,0,0,3.7,5.6 -2022-09-01T02:00,60.5,53,43.3,0,0,4.6,5.8 -2022-09-01T03:00,58.9,55,42.8,0,0,4.6,6 -2022-09-01T04:00,58.1,57,43.1,0,0,4.4,5.8 -2022-09-01T05:00,56.5,56,41.2,0,0,3.7,5.1 -2022-09-01T06:00,57.3,54,40.6,0,0,2.9,5.6 -2022-09-01T07:00,63.1,44,40.9,0,0,1.8,6.5 -2022-09-01T08:00,70.4,37,42.6,0,0,2,7.6 -2022-09-01T09:00,77.2,27,40.5,0,0,3,9.8 -2022-09-01T10:00,82.8,20,37.1,0,0,2.9,10.5 -2022-09-01T11:00,86.9,16,34.6,0,0,3,11.4 -2022-09-01T12:00,89.2,13,31.6,0,0,3.3,11.4 -2022-09-01T13:00,90.8,12,30.5,0,0,6.3,14.8 -2022-09-01T14:00,91,12,30.4,0,0,9.4,19.2 -2022-09-01T15:00,90.6,12,30.5,0,0,10.5,20.6 -2022-09-01T16:00,89.6,12,29.8,0,0,8.5,20.4 -2022-09-01T17:00,90.3,12,30,0,0,4.9,16.6 -2022-09-01T18:00,85.6,15,33.2,0,0,5,8.7 -2022-09-01T19:00,79.3,20,34.6,0,0,9.1,14.1 -2022-09-01T20:00,76.2,23,36,0,0,7.8,14.5 -2022-09-01T21:00,73.9,26,37,0,0,6.8,13 -2022-09-01T22:00,69.5,32,38.3,0,0,4.3,11 -2022-09-01T23:00,65.8,39,40,0,0,5.8,6.7 -2022-09-02T00:00,64.3,40,39.5,0,0,4.7,6.9 -2022-09-02T01:00,64.4,38,38.2,0,0,5.4,8.9 -2022-09-02T02:00,61.5,41,37.5,0,0,3.7,8.7 -2022-09-02T03:00,59.5,43,37.1,0,0,4.6,5.8 -2022-09-02T04:00,59.7,41,35.8,0,0,3.8,5.8 -2022-09-02T05:00,65.1,33,35.4,0,0,1.6,6.3 -2022-09-02T06:00,60.7,44,38.9,0,0,4.5,5.8 -2022-09-02T07:00,68.6,34,39.5,0,0,6.1,10.3 -2022-09-02T08:00,76.7,26,39.3,0,0,4.6,10.3 -2022-09-02T09:00,82.9,18,35.3,0,0,6.1,13.2 -2022-09-02T10:00,85.3,16,33.4,0,0,11.7,21.7 -2022-09-02T11:00,88,15,33.8,0,0,11.6,23.3 -2022-09-02T12:00,90.2,13,33.5,0,0,10.9,22.8 -2022-09-02T13:00,91.4,13,33,0,0,9.8,21.9 -2022-09-02T14:00,91.9,12,32.4,0,0,9.3,20.4 -2022-09-02T15:00,92.2,12,32,0,0,7.7,18.8 -2022-09-02T16:00,91.4,12,31.8,0,0,7.9,16.1 -2022-09-02T17:00,86.2,20,40.1,0,0,10.9,16.6 -2022-09-02T18:00,83.1,20,38.5,0,0,9.7,19 -2022-09-02T19:00,77.8,23,37.5,0,0,6.9,15.7 -2022-09-02T20:00,77.5,23,36.4,0,0,2.4,8.7 -2022-09-02T21:00,71.1,35,42,0,0,5.1,6.7 -2022-09-02T22:00,69.2,39,43.3,0,0,4.2,6.5 -2022-09-02T23:00,70.6,35,41.3,0,0,2.1,5.1 -2022-09-03T00:00,65.1,40,40.5,0,0,4.8,4.9 -2022-09-03T01:00,64.1,37,37.4,0,0,5.6,7.2 -2022-09-03T02:00,62.3,40,37.5,0,0,3.5,6.7 -2022-09-03T03:00,59.5,49,40.3,0,0,3.2,4.9 -2022-09-03T04:00,57.7,57,42.5,0,0,2.4,4.9 -2022-09-03T05:00,62,53,44.6,0,0,6.6,5.1 -2022-09-03T06:00,60.6,60,46.7,0,0,4,8.1 -2022-09-03T07:00,63,53,45.8,0,0,11,17.9 -2022-09-03T08:00,66.5,51,47.9,0,0,7.1,19.5 -2022-09-03T09:00,70.7,44,48,0,0,2.6,14.8 -2022-09-03T10:00,74.7,38,47.7,0,0,0.9,9.8 -2022-09-03T11:00,79.1,33,47.1,0,0,1.5,9.6 -2022-09-03T12:00,83.6,27,45.8,0,0,2.7,11.4 -2022-09-03T13:00,87.8,21,42.5,0,0,4,14.5 -2022-09-03T14:00,90.3,16,38.2,0,0,3.6,14.1 -2022-09-03T15:00,90.7,14,35.3,0,0,5,12.5 -2022-09-03T16:00,90.7,14,34.1,0,0,7.4,15.2 -2022-09-03T17:00,86.1,20,39.7,0,0,9.3,15.7 -2022-09-03T18:00,83.8,22,41,0,0,9.6,17.9 -2022-09-03T19:00,78.1,28,42.2,0,0,5,15.4 -2022-09-03T20:00,75.7,30,42.3,0,0,9.2,14.5 -2022-09-03T21:00,72.2,36,43.6,0,0,7.7,14.5 -2022-09-03T22:00,69.4,41,44.5,0,0,5.9,12.3 -2022-09-03T23:00,67.7,43,44.6,0,0,6.7,10.5 -2022-09-04T00:00,66.6,45,44.4,0,0,7,11.2 -2022-09-04T01:00,64.7,47,44.2,0,0,5.8,11.2 -2022-09-04T02:00,62.2,51,44.1,0,0,3.1,9.4 -2022-09-04T03:00,60.4,55,44,0,0,4.2,5.4 -2022-09-04T04:00,58.9,57,43.8,0,0,3.3,5.1 -2022-09-04T05:00,57.7,57,42.6,0,0,2.8,4.3 -2022-09-04T06:00,57.4,57,42.3,0,0,1.8,3.8 -2022-09-04T07:00,62.8,47,42.2,0,0,2.2,6.3 -2022-09-04T08:00,68.6,42,44.7,0,0,4.3,10.3 -2022-09-04T09:00,75.5,31,42.4,0,0,4.1,11.9 -2022-09-04T10:00,82,23,40.2,0,0,3.6,11.6 -2022-09-04T11:00,87.1,19,39.9,0,0,3.6,12.1 -2022-09-04T12:00,90.5,14,35.1,0,0,5.1,13.4 -2022-09-04T13:00,92.7,12,32.3,0,0,7.8,17.2 -2022-09-04T14:00,93.3,11,30.6,0,0,6.4,17.2 -2022-09-04T15:00,93.6,10,29.7,0,0,4.5,15 -2022-09-04T16:00,93.1,10,29.4,0,0,4,12.1 -2022-09-04T17:00,92,11,29.7,0,0,3,10.3 -2022-09-04T18:00,86.6,15,33.9,0,0,3.9,7.2 -2022-09-04T19:00,77.8,23,36.5,0,0,5,6.5 -2022-09-04T20:00,73.9,28,38.9,0,0,3.9,6.3 -2022-09-04T21:00,70.3,35,41.2,0,0,2.7,4.9 -2022-09-04T22:00,66.8,44,44,0,0,4.8,7.4 -2022-09-04T23:00,66.2,42,42.6,0,0,4.8,8.3 -2022-09-05T00:00,64.3,42,40.6,0,0,3.4,7.8 -2022-09-05T01:00,62.8,42,39.6,0,0,3.7,5.4 -2022-09-05T02:00,62.8,37,36.3,0,0,3.6,5.6 -2022-09-05T03:00,61,37,34.5,0,0,4.3,5.8 -2022-09-05T04:00,60.7,38,34.8,0,0,4.6,6 -2022-09-05T05:00,69.5,26,32.7,0,0,3.5,4.9 -2022-09-05T06:00,69.5,26,32.7,0,0,2.1,4.5 -2022-09-05T07:00,71.6,26,34.4,0,0,2,3.4 -2022-09-05T08:00,78.4,21,35.2,0,0,1.7,5.8 -2022-09-05T09:00,83.1,18,34.8,0,0,5.2,12.1 -2022-09-05T10:00,87,16,35,0,0,6.8,15.2 -2022-09-05T11:00,90.7,14,35.7,0,0,6.7,15.9 -2022-09-05T12:00,93.3,13,34.8,0,0,6.3,15.9 -2022-09-05T13:00,94.7,12,34.3,0,0,7.4,17.2 -2022-09-05T14:00,95.7,11,32.5,0,0,11,21.5 -2022-09-05T15:00,95.8,10,31.5,0,0,8.9,21.5 -2022-09-05T16:00,95.5,10,31.2,0,0,5.4,17.9 -2022-09-05T17:00,94.4,11,32.5,0,0,4,12.5 -2022-09-05T18:00,88,16,36.4,0,0,4.6,8.5 -2022-09-05T19:00,81.3,21,37.9,0,0,5.9,8.5 -2022-09-05T20:00,78.4,23,37.6,0,0,7.8,11 -2022-09-05T21:00,74.2,28,38.9,0,0,5.8,13.2 -2022-09-05T22:00,70.9,34,40.9,0,0,4.2,9.2 -2022-09-05T23:00,69.4,35,40.7,0,0,4.2,7.2 -2022-09-06T00:00,67.3,38,40.6,0,0,3.5,6.9 -2022-09-06T01:00,65.5,40,40.5,0,0,3.4,5.8 -2022-09-06T02:00,64,42,40.3,0,0,3.7,5.4 -2022-09-06T03:00,62.7,43,39.9,0,0,4,5.4 -2022-09-06T04:00,61.6,44,39.6,0,0,4.7,5.8 -2022-09-06T05:00,61.5,44,39.2,0,0,4.6,5.8 -2022-09-06T06:00,62.1,41,38.1,0,0,4,6.3 -2022-09-06T07:00,68.9,31,37.2,0,0,3.5,7.4 -2022-09-06T08:00,76.9,25,38.5,0,0,0.9,7.4 -2022-09-06T09:00,83.5,19,36.9,0,0,3.7,10.3 -2022-09-06T10:00,88.6,15,35.6,0,0,5,13 -2022-09-06T11:00,91.9,12,32.9,0,0,6.8,16.1 -2022-09-06T12:00,94.3,11,32.1,0,0,5,16.1 -2022-09-06T13:00,95.8,10,31.3,0,0,2.7,13.9 -2022-09-06T14:00,96.6,9,29,0,0,2.1,10.7 -2022-09-06T15:00,97,9,27.6,0,0,2.1,9.8 -2022-09-06T16:00,97.3,8,27.5,0,0,6.3,13.2 -2022-09-06T17:00,95.4,8,26.1,0,0,8.6,13.9 -2022-09-06T18:00,90.2,11,28,0,0,7.8,15.4 -2022-09-06T19:00,83.1,15,30.6,0,0,5,12.1 -2022-09-06T20:00,79.1,21,36.1,0,0,6.1,8.7 -2022-09-06T21:00,75.3,24,36.3,0,0,4,7.2 -2022-09-06T22:00,71.6,30,38.8,0,0,4.7,7.8 -2022-09-06T23:00,69,35,39.9,0,0,3.6,7.6 -2022-09-07T00:00,68.9,33,38.8,0,0,4.9,7.2 -2022-09-07T01:00,69.1,32,37.9,0,0,3.5,8.7 -2022-09-07T02:00,65.1,39,39.4,0,0,3.5,5.8 -2022-09-07T03:00,63.1,44,40.8,0,0,3.8,6.5 -2022-09-07T04:00,61.2,48,41.5,0,0,3.5,6.5 -2022-09-07T05:00,59.7,53,42.6,0,0,4.9,5.8 -2022-09-07T06:00,60.6,50,42.1,0,0,4.8,7.4 -2022-09-07T07:00,67.9,38,41.3,0,0,4.5,8.9 -2022-09-07T08:00,76.8,28,41.3,0,0,2.7,8.3 -2022-09-07T09:00,85.6,17,36.1,0,0,4.4,11.2 -2022-09-07T10:00,90.1,14,34.9,0,0,4.5,12.1 -2022-09-07T11:00,92.8,13,34.5,0,0,4.5,12.8 -2022-09-07T12:00,94.7,12,34,0,0,3.7,13 -2022-09-07T13:00,96.1,11,32.4,0,0,3,12.3 -2022-09-07T14:00,97.3,10,30.6,0,0,4.1,12.1 -2022-09-07T15:00,97.3,9,29.7,0,0,6.1,14.3 -2022-09-07T16:00,96.9,9,28.7,0,0,7.1,14.8 -2022-09-07T17:00,94.5,11,32.3,0,0,6.2,14.8 -2022-09-07T18:00,88.9,15,35.4,0,0,4.9,11.9 -2022-09-07T19:00,84.6,12,26.7,0,0,12,19 -2022-09-07T20:00,81.4,14,28.2,0,0,12.6,20.4 -2022-09-07T21:00,79.1,16,29.3,0,0,11.5,20.6 -2022-09-07T22:00,76.3,19,30.9,0,0,8.6,18.3 -2022-09-07T23:00,73.4,21,31.3,0,0,7.2,13.9 -2022-09-08T00:00,73.1,21,30.7,0,0,9.1,14.3 -2022-09-08T01:00,71.9,22,31,0,0,7.8,14.5 -2022-09-08T02:00,68.9,25,32.1,0,0,5.7,12.5 -2022-09-08T03:00,66.2,28,32.5,0,0,4.7,8.9 -2022-09-08T04:00,64.7,30,32.3,0,0,4.5,6.9 -2022-09-08T05:00,62.8,33,33.5,0,0,5.9,7.8 -2022-09-08T06:00,62,37,35.1,0,0,5.7,7.8 -2022-09-08T07:00,69.9,27,34.2,0,0,4.5,8.3 -2022-09-08T08:00,79,21,35.2,0,0,4.1,9.4 -2022-09-08T09:00,88.1,14,32.9,0,0,2.2,10.3 -2022-09-08T10:00,93.7,10,29.3,0,0,4.1,10.7 -2022-09-08T11:00,95.5,8,24.9,0,0,6.8,15.7 -2022-09-08T12:00,96.3,8,25.2,0,0,6.9,16.3 -2022-09-08T13:00,96.4,8,25.1,0,0,4.8,15.9 -2022-09-08T14:00,97.5,8,25.2,0,0,5.5,13.9 -2022-09-08T15:00,96.9,8,25.1,0,0,2.9,13.9 -2022-09-08T16:00,95.5,8,26,0,0,6.4,11.2 -2022-09-08T17:00,88.8,15,35.2,0,0,13.1,31.3 -2022-09-08T18:00,85.1,19,38.4,0,0,5.5,21.3 -2022-09-08T19:00,81.1,22,38.5,0,0,9.5,15.7 -2022-09-08T20:00,77.3,27,40.9,0,0,2.5,15.4 -2022-09-08T21:00,71.9,36,43.2,0,0,3.3,5.1 -2022-09-08T22:00,70.7,40,45.3,0,0,4.3,10.5 -2022-09-08T23:00,69.8,41,44.9,0,0,2.3,6.5 -2022-09-09T00:00,69.7,34,40.5,0,0,13.4,19.9 -2022-09-09T01:00,67.1,44,44.6,0,0,7.3,22.6 -2022-09-09T02:00,64.5,49,45,0,0,3.2,11.6 -2022-09-09T03:00,63,53,45.7,0,0,3.5,5.4 -2022-09-09T04:00,62.5,53,45.1,0,0,13,19.9 -2022-09-09T05:00,56.6,59,42.5,0,0,8.7,21.9 -2022-09-09T06:00,55.9,63,43.4,0,0,7.7,13.9 -2022-09-09T07:00,56.8,62,44.1,0,0,9.6,17.4 -2022-09-09T08:00,57.5,59,43.2,0,0,6.2,17.4 -2022-09-09T09:00,57.9,57,42.8,0,0,2.7,13.2 -2022-09-09T10:00,60.1,53,42.8,0,0,3.5,11 -2022-09-09T11:00,63.4,46,42.5,0,0,4.3,13 -2022-09-09T12:00,65.8,42,42.1,0,0,5.6,14.8 -2022-09-09T13:00,69.3,37,41.9,0,0,6.9,16.8 -2022-09-09T14:00,72.2,34,42,0,0,6.9,17.2 -2022-09-09T15:00,74.9,31,42.1,0,0,5.7,17 -2022-09-09T16:00,75.7,30,41.9,0,0,5,14.3 -2022-09-09T17:00,57.9,55,41.6,0,0,9.8,14.3 -2022-09-09T18:00,57.1,57,41.8,0,0,9.2,19 -2022-09-09T19:00,54.9,70,45.4,0.067,0,8.9,16.8 -2022-09-09T20:00,53.4,78,46.9,0.031,0,10.6,17.9 -2022-09-09T21:00,53.3,79,47,0.016,0,9,17.7 -2022-09-09T22:00,53.2,79,46.9,0.008,0,8.4,15.4 -2022-09-09T23:00,52.9,81,47.1,0.008,0,7.9,14.3 -2022-09-10T00:00,52.6,82,47.2,0.012,0,8.4,13.6 -2022-09-10T01:00,52.1,88,48.7,0.02,0,6.5,13.9 -2022-09-10T02:00,52,89,48.8,0.016,0,6.1,11.2 -2022-09-10T03:00,51.9,90,49.1,0.024,0,7.4,12.8 -2022-09-10T04:00,52.1,90,49.1,0.016,0,5.6,12.5 -2022-09-10T05:00,48.7,92,46.6,0.02,0,8.9,9.8 -2022-09-10T06:00,48.1,88,44.9,0.012,0,8.5,15.4 -2022-09-10T07:00,48.2,86,44.3,0,0,7.4,14.5 -2022-09-10T08:00,49.1,81,43.4,0,0,5.6,13 -2022-09-10T09:00,50.2,76,43,0,0,4.2,11 -2022-09-10T10:00,51.4,72,42.8,0,0,3.7,9.8 -2022-09-10T11:00,52.7,69,42.9,0,0,3.8,10.3 -2022-09-10T12:00,52.8,69,42.9,0,0,4.4,11 -2022-09-10T13:00,54.4,66,43.2,0,0,4.5,11.9 -2022-09-10T14:00,55,64,43,0.004,0,5.4,12.3 -2022-09-10T15:00,54.2,66,43,0.004,0,6.1,12.8 -2022-09-10T16:00,54.6,64,42.8,0.004,0,4.7,12.5 -2022-09-10T17:00,50.9,79,44.5,0,0,4.3,10.5 -2022-09-10T18:00,50.9,79,44.6,0,0,3.5,8.9 -2022-09-10T19:00,50.7,80,44.7,0,0,2.2,7.6 -2022-09-10T20:00,50.7,79,44.3,0,0,4.3,8.3 -2022-09-10T21:00,49.4,82,44.2,0,0,1.6,8.5 -2022-09-10T22:00,48.7,86,44.6,0,0,2,3.1 -2022-09-10T23:00,46.4,94,44.8,0,0,3.6,4.7 -2022-09-11T00:00,45.9,94,44.3,0,0,3.6,4.9 -2022-09-11T01:00,45.5,95,44.2,0,0,3.1,4.9 -2022-09-11T02:00,44.7,97,44,0,0,3.4,4.9 -2022-09-11T03:00,43.7,99,43.5,0,0,3.4,5.1 -2022-09-11T04:00,43.9,100,43.9,0,0,1.2,4.3 -2022-09-11T05:00,45,96,43.9,0,0,1.1,2 -2022-09-11T06:00,44.8,98,44.2,0,0,2.4,6 -2022-09-11T07:00,45.6,95,44.2,0,0,3.4,8.3 -2022-09-11T08:00,48.9,82,43.7,0,0,2.3,9.2 -2022-09-11T09:00,54.3,67,43.5,0,0,2.6,10.1 -2022-09-11T10:00,61,47,40.6,0,0,4,12.5 -2022-09-11T11:00,66.7,35,38.1,0,0,4.5,13.4 -2022-09-11T12:00,71.2,29,37.4,0,0,4.9,13.9 -2022-09-11T13:00,74.2,25,36.6,0,0,4,13.9 -2022-09-11T14:00,76.1,23,35.9,0,0,3.7,12.8 -2022-09-11T15:00,76.7,21,34,0,0,3.3,11.6 -2022-09-11T16:00,76.5,20,32.5,0,0,2.7,10.5 -2022-09-11T17:00,73.7,24,34.9,0,0,2.7,8.7 -2022-09-11T18:00,67.5,34,38.3,0,0,4.1,6.5 -2022-09-11T19:00,61.9,43,39.4,0,0,4,6.9 -2022-09-11T20:00,57.3,56,41.8,0,0,3,6.5 -2022-09-11T21:00,54.1,67,43.3,0,0,3.4,5.6 -2022-09-11T22:00,51.7,75,44.2,0,0,3.2,5.1 -2022-09-11T23:00,50,82,44.7,0,0,3.2,5.1 -2022-09-12T00:00,48.7,84,44,0,0,3.2,4.9 -2022-09-12T01:00,47.4,81,41.8,0,0,3.5,4.9 -2022-09-12T02:00,46.9,73,38.5,0,0,4.3,5.6 -2022-09-12T03:00,46.7,62,34.4,0,0,4.8,6.3 -2022-09-12T04:00,46.1,55,30.7,0,0,5.6,6.9 -2022-09-12T05:00,45.5,47,26.4,0,0,4.8,7.2 -2022-09-12T06:00,45.5,46,25.7,0,0,4.9,7.2 -2022-09-12T07:00,53.1,37,27.5,0,0,5.1,8.7 -2022-09-12T08:00,62.7,36,35.1,0,0,2.8,8.7 -2022-09-12T09:00,72,27,36,0,0,2.9,9.4 -2022-09-12T10:00,78.3,17,30.3,0,0,2,9.2 -2022-09-12T11:00,82,13,26.1,0,0,3.6,11.2 -2022-09-12T12:00,83.8,9,18.6,0,0,3.8,11.6 -2022-09-12T13:00,85.3,8,16.3,0,0,4.1,12.1 -2022-09-12T14:00,86.2,7,16.1,0,0,4.7,12.1 -2022-09-12T15:00,86.1,7,15.7,0,0,6.8,14.1 -2022-09-12T16:00,85.2,8,16.3,0,0,6.7,14.3 -2022-09-12T17:00,82.8,12,25.7,0,0,3.9,12.8 -2022-09-12T18:00,75.4,20,31.8,0,0,4.3,6.5 -2022-09-12T19:00,73.7,20,30.1,0,0,2.8,5.4 -2022-09-12T20:00,65.2,29,32.5,0,0,4,4 -2022-09-12T21:00,59.9,38,34.2,0,0,4.8,7.6 -2022-09-12T22:00,54.4,51,36.7,0,0,2.7,7.6 -2022-09-12T23:00,51.9,60,38.6,0,0,3.4,4.5 -2022-09-13T00:00,50.4,66,39.6,0,0,1.4,4.3 -2022-09-13T01:00,49.4,71,40.2,0,0,1.9,2.9 -2022-09-13T02:00,49,69,39.2,0,0,2.4,3.8 -2022-09-13T03:00,48.1,68,38,0,0,2.4,4.3 -2022-09-13T04:00,46.7,70,37.5,0,0,2.1,4 -2022-09-13T05:00,45,77,38.2,0,0,3.7,6.5 -2022-09-13T06:00,44.5,76,37.4,0,0,4.8,6.7 -2022-09-13T07:00,52.1,60,38.5,0,0,4.3,8.9 -2022-09-13T08:00,63.1,43,40,0,0,3,8.7 -2022-09-13T09:00,70.2,24,31.8,0,0,2.1,8.9 -2022-09-13T10:00,74.5,18,28.9,0,0,2.9,9.8 -2022-09-13T11:00,79.1,17,30.4,0,0,3.1,10.7 -2022-09-13T12:00,83,15,31.3,0,0,4.9,12.3 -2022-09-13T13:00,87.4,11,26.6,0,0,7.2,16.1 -2022-09-13T14:00,90.1,8,20.1,0,0,6.3,15.7 -2022-09-13T15:00,88.3,9,22.5,0,0,13.6,23.7 -2022-09-13T16:00,87.3,9,22.7,0,0,13.7,23.7 -2022-09-13T17:00,83.4,13,27.3,0,0,13.2,25.1 -2022-09-13T18:00,79.4,16,29.9,0,0,11.4,21.7 -2022-09-13T19:00,75.5,19,30.1,0,0,9.9,18.1 -2022-09-13T20:00,70.3,24,31.5,0,0,7.6,15.9 -2022-09-13T21:00,67.6,29,34.3,0,0,5,12.3 -2022-09-13T22:00,64.6,35,36.3,0,0,4.5,7.8 -2022-09-13T23:00,64,40,38.9,0,0,5,8.1 -2022-09-14T00:00,63.3,43,40.6,0,0,4.7,8.1 -2022-09-14T01:00,64.1,42,40.8,0,0,3.7,7.8 -2022-09-14T02:00,63.6,44,41.2,0,0,3.8,5.8 -2022-09-14T03:00,63.4,46,42.4,0,0,4.3,7.2 -2022-09-14T04:00,62.5,47,42.2,0,0,2.8,6.3 -2022-09-14T05:00,61.8,49,42.2,0,0,3.5,5.6 -2022-09-14T06:00,58.8,52,41.5,0,0,4.3,6.7 -2022-09-14T07:00,63.4,45,41.5,0,0,5.7,9.8 -2022-09-14T08:00,69.6,39,43.4,0,0,3.1,9.6 -2022-09-14T09:00,74.8,31,41.8,0,0,2.2,8.5 -2022-09-14T10:00,75.1,27,38.9,0,0,5.9,12.3 -2022-09-14T11:00,75,27,38.8,0,0,4.3,12.8 -2022-09-14T12:00,78.6,24,39,0,0,3.4,11 -2022-09-14T13:00,81.1,23,39.7,0,0,3.7,11.9 -2022-09-14T14:00,80.6,25,41.5,0,0,8.5,16.6 -2022-09-14T15:00,74.8,36,45.8,0.016,0,14.9,25.7 -2022-09-14T16:00,68.4,57,52.5,0.035,0,12.3,26.8 -2022-09-14T17:00,62.8,87,58.7,0.012,0,7.2,20.8 -2022-09-14T18:00,63.1,94,61.2,0.047,0,5.3,13.9 -2022-09-14T19:00,62.7,91,59.9,0.008,0,2.9,9.4 -2022-09-14T20:00,61.3,90,58.2,0,0,3.3,5.4 -2022-09-14T21:00,60.4,85,55.9,0,0,4,6.9 -2022-09-14T22:00,57.7,85,53.3,0,0,4,6.9 -2022-09-14T23:00,55.9,82,50.5,0,0,3.7,6.7 -2022-09-15T00:00,55.9,74,47.8,0,0,4.1,6.3 -2022-09-15T01:00,55.2,71,46,0,0,4.5,6.7 -2022-09-15T02:00,55.3,69,45.1,0,0,4.8,6.7 -2022-09-15T03:00,54.3,71,45,0,0,5.9,6.9 -2022-09-15T04:00,54.5,69,44.4,0,0,4.7,6.9 -2022-09-15T05:00,56.2,74,48,0,0,0.8,5.8 -2022-09-15T06:00,53.2,81,47.4,0,0,2.9,3.1 -2022-09-15T07:00,58,69,47.8,0,0,3.8,7.6 -2022-09-15T08:00,61.9,58,47,0,0,1.1,7.6 -2022-09-15T09:00,65,57,49.5,0,0,2.1,8.1 -2022-09-15T10:00,69.2,51,50.4,0,0,3.2,10.7 -2022-09-15T11:00,72.4,45,50.1,0,0,4.1,13.2 -2022-09-15T12:00,73.8,43,49.9,0.004,0,5.1,14.1 -2022-09-15T13:00,71.1,49,50.7,0.043,0,4.5,14.1 -2022-09-15T14:00,68.4,55,51.5,0.071,0,1.8,16.6 -2022-09-15T15:00,66,61,52.2,0,0,6.8,18.3 -2022-09-15T16:00,65.8,60,51.4,0,0,6.4,14.3 -2022-09-15T17:00,71.5,37,43.8,0,0,4.4,13.6 -2022-09-15T18:00,66,52,47.9,0,0,4,10.3 -2022-09-15T19:00,63.5,59,49,0,0,4.6,8.3 -2022-09-15T20:00,60.6,68,50.1,0,0,4.3,7.4 -2022-09-15T21:00,58.6,74,50.3,0,0,5.1,9.2 -2022-09-15T22:00,56.1,80,50.1,0,0,3.4,7.8 -2022-09-15T23:00,56.7,72,47.7,0,0,4.4,6.7 -2022-09-16T00:00,54.6,70,45,0,0,4.3,8.3 -2022-09-16T01:00,52.4,73,44.1,0,0,1.7,6 -2022-09-16T02:00,51.4,77,44.3,0,0,2.7,4.5 -2022-09-16T03:00,50.2,86,46,0,0,3.2,4.9 -2022-09-16T04:00,49.7,87,46.1,0,0,3,5.1 -2022-09-16T05:00,49.3,93,47.3,0,0,2.7,5.1 -2022-09-16T06:00,48.9,93,46.9,0,0,2.5,4.5 -2022-09-16T07:00,53.7,79,47.2,0,0,4.3,8.3 -2022-09-16T08:00,60.3,63,47.5,0,0,3.6,9.6 -2022-09-16T09:00,67,48,46.4,0,0,2.5,9.8 -2022-09-16T10:00,72.6,35,43.7,0,0,2.4,9.6 -2022-09-16T11:00,77,24,37.2,0,0,1.9,10.3 -2022-09-16T12:00,78.7,19,32.8,0,0,2.7,10.1 -2022-09-16T13:00,79.8,18,33.1,0,0,4.3,11.4 -2022-09-16T14:00,81.7,17,32.9,0,0,2.9,12.5 -2022-09-16T15:00,79.2,22,37.3,0,0,10.3,19.7 -2022-09-16T16:00,79.6,20,34.8,0,0,8.2,19.2 -2022-09-16T17:00,73,29,39.2,0,0,9.2,16.1 -2022-09-16T18:00,65.2,52,46.9,0,0,8,18.6 -2022-09-16T19:00,61.8,68,51.2,0,0,3.9,12.5 -2022-09-16T20:00,60.7,64,48.3,0,0,5.4,9.4 -2022-09-16T21:00,58.2,68,47.8,0,0,3.5,8.7 -2022-09-16T22:00,56.2,75,48.3,0,0,3.1,5.8 -2022-09-16T23:00,55,74,47,0,0,2.8,4.3 -2022-09-17T00:00,55.1,72,46.1,0,0,1.5,4 -2022-09-17T01:00,53.2,76,45.7,0,0,3.7,5.1 -2022-09-17T02:00,51.5,77,44.5,0,0,3.6,5.8 -2022-09-17T03:00,49.5,82,44.1,0,0,3.3,5.8 -2022-09-17T04:00,48,87,44.4,0,0,4.5,6.7 -2022-09-17T05:00,49,85,44.8,0,0,2.9,6.9 -2022-09-17T06:00,51.4,76,44,0,0,4.6,9.2 -2022-09-17T07:00,55.9,69,45.7,0,0,3.9,7.8 -2022-09-17T08:00,62.7,54,46,0,0,2.2,8.1 -2022-09-17T09:00,69.4,37,42.2,0,0,6.8,14.1 -2022-09-17T10:00,73.2,32,41.7,0,0,7.8,16.6 -2022-09-17T11:00,76.1,29,41.5,0,0,8.4,17.7 -2022-09-17T12:00,78.8,26,41.4,0,0,6,18.3 -2022-09-17T13:00,82.9,22,40.4,0,0,4.7,16.3 -2022-09-17T14:00,77.5,27,40.4,0.004,0,4.1,13.9 -2022-09-17T15:00,78.8,26,40.9,0,0,7.3,15.7 -2022-09-17T16:00,76.9,28,41.7,0,0,8.3,15.9 -2022-09-17T17:00,76.2,31,43.6,0,0,3.3,20.4 -2022-09-17T18:00,70.8,42,46.3,0,0,7.4,13.2 -2022-09-17T19:00,66.2,48,46.1,0,0,6.3,13.9 -2022-09-17T20:00,63.9,55,47.6,0,0,8.5,15 -2022-09-17T21:00,61.3,60,47.3,0,0,4.9,13.6 -2022-09-17T22:00,59.6,61,46.3,0,0,3.8,8.1 -2022-09-17T23:00,57.8,65,46.2,0,0,4.2,6.5 -2022-09-18T00:00,56,68,45.5,0,0,4.1,6.5 -2022-09-18T01:00,53.4,76,46.1,0,0,1.8,6 -2022-09-18T02:00,51.5,84,46.9,0,0,2.2,4.3 -2022-09-18T03:00,50.5,87,46.9,0,0,3.2,5.1 -2022-09-18T04:00,49,89,45.9,0,0,1.6,5.1 -2022-09-18T05:00,49.9,73,41.7,0,0,2.9,3.6 -2022-09-18T06:00,49.4,70,40.1,0,0,3,5.1 -2022-09-18T07:00,54.1,61,41,0,0,3.8,8.3 -2022-09-18T08:00,60.2,49,40.7,0,0,1.6,8.1 -2022-09-18T09:00,64,47,43.5,0,0,2.9,9.8 -2022-09-18T10:00,68.8,41,43.9,0,0,3.4,11.4 -2022-09-18T11:00,74,32,42.3,0,0,3,11.4 -2022-09-18T12:00,78.8,25,39.9,0,0,4,12.1 -2022-09-18T13:00,82.9,17,33.6,0,0,6.1,14.3 -2022-09-18T14:00,86.6,13,29.4,0,0,9.1,17.9 -2022-09-18T15:00,88.6,11,27.9,0,0,7.4,17.9 -2022-09-18T16:00,88.3,12,28.3,0,0,5.6,15 -2022-09-18T17:00,82,22,40,0,0,15,11 -2022-09-18T18:00,77.3,25,38.8,0,0,11.1,26.4 -2022-09-18T19:00,71.4,36,43,0,0,8.3,17 -2022-09-18T20:00,68.3,43,45,0,0,5.9,14.1 -2022-09-18T21:00,66.5,44,43.6,0,0,6.5,10.7 -2022-09-18T22:00,62.6,50,43.5,0,0,5.8,11 -2022-09-18T23:00,60.4,53,43.3,0,0,4.3,7.4 -2022-09-19T00:00,58.6,57,43.5,0,0,4.8,7.4 -2022-09-19T01:00,57.5,58,43,0,0,5.1,8.7 -2022-09-19T02:00,55.4,61,42.4,0,0,4.3,8.3 -2022-09-19T03:00,56.4,58,42,0,0,3,6.3 -2022-09-19T04:00,53.1,61,39.9,0,0,3.4,4.5 -2022-09-19T05:00,51.4,67,40.8,0,0,3.8,4.9 -2022-09-19T06:00,51.4,67,40.8,0,0,3.8,6.5 -2022-09-19T07:00,57.5,52,39.9,0,0,5.3,9.2 -2022-09-19T08:00,66.2,40,41.3,0,0,3,9.4 -2022-09-19T09:00,77,28,41.6,0,0,1.3,8.5 -2022-09-19T10:00,83.4,15,31.6,0,0,1.3,8.1 -2022-09-19T11:00,85.3,15,32.1,0,0,2.3,9.8 -2022-09-19T12:00,87.2,14,31.9,0,0,5,13.2 -2022-09-19T13:00,87.8,13,31.6,0,0,5.4,13.6 -2022-09-19T14:00,87.7,13,31,0,0,3.6,13.6 -2022-09-19T15:00,88.3,12,29.8,0,0,1.1,11.2 -2022-09-19T16:00,87.8,12,28.9,0,0,1.5,7.2 -2022-09-19T17:00,83.8,16,32.9,0,0,9.4,6 -2022-09-19T18:00,77.9,19,32.8,0,0,5,14.8 -2022-09-19T19:00,74.1,24,35,0,0,5.3,7.4 -2022-09-19T20:00,72,27,35.7,0,0,3.7,6.5 -2022-09-19T21:00,66.6,36,38.5,0,0,6.4,9.6 -2022-09-19T22:00,63.7,41,39.5,0,0,6.1,10.3 -2022-09-19T23:00,61.3,42,37.9,0,0,4.2,9.8 -2022-09-20T00:00,59,45,37.4,0,0,4.8,6.3 -2022-09-20T01:00,58,46,37.1,0,0,3.8,6.3 -2022-09-20T02:00,56.1,49,37,0,0,4.7,6 -2022-09-20T03:00,54.5,51,36.8,0,0,5.2,6.5 -2022-09-20T04:00,54.3,49,35.6,0,0,4.2,6.5 -2022-09-20T05:00,53.7,51,36.1,0,0,5.8,6.3 -2022-09-20T06:00,53.6,50,35.6,0,0,4.9,7.4 -2022-09-20T07:00,59.2,42,36.2,0,0,5.1,8.9 -2022-09-20T08:00,67.4,36,39.2,0,0,2.5,8.7 -2022-09-20T09:00,76.8,26,38.9,0,0,2.4,8.5 -2022-09-20T10:00,83.5,15,31,0,0,4,11 -2022-09-20T11:00,86.9,11,26.5,0,0,5.6,13.6 -2022-09-20T12:00,88.7,10,26.1,0,0,5.7,14.3 -2022-09-20T13:00,90.1,10,25.3,0,0,6.2,14.8 -2022-09-20T14:00,91.1,9,24.7,0,0,6.8,15.9 -2022-09-20T15:00,92.8,8,23.9,0,0,6,15.2 -2022-09-20T16:00,85.4,14,30.5,0,0,19.6,30.6 -2022-09-20T17:00,86.4,13,28.9,0,0,6,31.1 -2022-09-20T18:00,79.6,18,32.1,0,0,11.7,18.3 -2022-09-20T19:00,77.7,19,32.1,0,0,14.2,21.9 -2022-09-20T20:00,76.4,23,35.8,0,0,10.4,23.5 -2022-09-20T21:00,74.6,24,35.2,0,0,10,17.2 -2022-09-20T22:00,72.7,25,35.2,0,0,9.8,16.6 -2022-09-20T23:00,71,29,37.2,0,0,9.5,16.3 -2022-09-21T00:00,67.8,37,40.7,0,0,7.4,15.9 -2022-09-21T01:00,67.7,40,42.5,0,0,8,14.1 -2022-09-21T02:00,65.3,45,43.5,0,0,8.6,14.1 -2022-09-21T03:00,65.9,46,44.4,0,0,9.2,15.4 -2022-09-21T04:00,64.7,49,45.1,0,0,7.3,14.8 -2022-09-21T05:00,61.6,59,47,0,0,8.7,11.9 -2022-09-21T06:00,60.3,65,48.4,0,0,8.3,14.5 -2022-09-21T07:00,61.4,62,48.2,0,0,7.9,14.8 -2022-09-21T08:00,61.6,62,48.3,0,0,8.4,15.2 -2022-09-21T09:00,61.3,64,48.9,0.004,0,7.8,15.4 -2022-09-21T10:00,60.6,67,49.7,0.008,0,6.9,14.3 -2022-09-21T11:00,60.6,70,50.7,0.016,0,7.6,15.2 -2022-09-21T12:00,59.9,70,50.2,0.004,0,6.7,15.2 -2022-09-21T13:00,61.3,65,49.4,0,0,6.5,14.3 -2022-09-21T14:00,61.5,64,49.4,0,0,6.3,13.6 -2022-09-21T15:00,61.1,65,49.1,0,0,7.7,14.8 -2022-09-21T16:00,59.7,69,49.4,0.012,0,7.3,14.8 -2022-09-21T17:00,53.8,90,50.9,0.012,0,5.6,14.3 -2022-09-21T18:00,53,92,50.8,0.039,0,7.4,13.2 -2022-09-21T19:00,52.8,88,49.3,0.008,0,7.3,13 -2022-09-21T20:00,52.2,87,48.5,0.004,0,7.9,13.4 -2022-09-21T21:00,51.6,87,47.8,0.004,0,5.5,13.6 -2022-09-21T22:00,51.4,87,47.8,0.02,0,4.1,9.4 -2022-09-21T23:00,50.9,92,48.7,0.016,0,4.6,8.5 -2022-09-22T00:00,50.9,91,48.5,0.012,0,4.4,8.3 -2022-09-22T01:00,51.1,91,48.5,0.012,0,3.6,7.8 -2022-09-22T02:00,51.4,91,48.7,0.012,0,3.6,6.5 -2022-09-22T03:00,51.3,91,48.7,0.008,0,2.4,6.3 -2022-09-22T04:00,51.1,90,48.1,0.004,0,4.1,7.4 -2022-09-22T05:00,49.3,91,46.7,0.004,0,1.3,7.2 -2022-09-22T06:00,49.6,91,47.2,0,0,3.3,6.3 -2022-09-22T07:00,50.5,89,47.3,0,0,4.6,8.7 -2022-09-22T08:00,51.3,87,47.4,0,0,2.5,8.9 -2022-09-22T09:00,51.6,82,46.4,0.004,0,1.3,6.9 -2022-09-22T10:00,52.2,81,46.5,0.004,0,1,6.3 -2022-09-22T11:00,52.9,80,46.8,0.008,0,0.3,6.3 -2022-09-22T12:00,54.9,77,47.8,0.016,0,0.9,6.9 -2022-09-22T13:00,56.4,77,49.2,0.008,0,4.9,9.8 -2022-09-22T14:00,62.9,65,50.8,0,0,4.3,15 -2022-09-22T15:00,65.5,60,51.4,0,0,5.9,12.5 -2022-09-22T16:00,66.3,59,51.4,0,0,9.4,17 -2022-09-22T17:00,63.1,65,50.9,0,0,7,18.8 -2022-09-22T18:00,59.1,73,50.5,0,0,4.7,11.4 -2022-09-22T19:00,56.5,80,50.5,0,0,5,8.5 -2022-09-22T20:00,53.8,89,50.5,0,0,3.6,8.1 -2022-09-22T21:00,52.9,91,50.4,0,0,3.3,6.3 -2022-09-22T22:00,51.9,93,49.8,0,0,3.5,5.6 -2022-09-22T23:00,50.9,94,49.4,0,0,2.9,5.4 -2022-09-23T00:00,49.7,98,49.1,0,0,2.4,3.6 -2022-09-23T01:00,50.2,98,49.7,0,0,3.6,6.5 -2022-09-23T02:00,51.1,95,49.8,0,0,3.4,7.6 -2022-09-23T03:00,48.7,99,48.5,0,0,3.6,6.3 -2022-09-23T04:00,47.5,96,46.5,0,0,2.5,6 -2022-09-23T05:00,49.7,72,41.2,0,0,4.9,4.7 -2022-09-23T06:00,50.2,69,40.5,0,0,5.4,8.3 -2022-09-23T07:00,56.1,59,41.9,0,0,6.7,10.1 -2022-09-23T08:00,63.1,51,44.5,0,0,2.8,11 -2022-09-23T09:00,69,40,43.6,0,0,5.4,12.3 -2022-09-23T10:00,72.1,31,40,0,0,3.5,12.3 -2022-09-23T11:00,75.3,24,35.8,0,0,4.9,13 -2022-09-23T12:00,77.5,20,33.5,0,0,4.8,13.2 -2022-09-23T13:00,79.3,18,32,0,0,6.4,14.5 -2022-09-23T14:00,80.3,16,29.7,0,0,7,15.7 -2022-09-23T15:00,80.3,16,29.4,0,0,4.7,15 -2022-09-23T16:00,80.1,16,29.1,0,0,5.9,11.2 -2022-09-23T17:00,76.1,23,35.8,0,0,4.6,11.6 -2022-09-23T18:00,67.1,30,34.6,0,0,6.4,8.5 -2022-09-23T19:00,62.4,33,32.9,0,0,6.6,8.7 -2022-09-23T20:00,64.9,28,31.1,0,0,2.1,9.4 -2022-09-23T21:00,58.3,40,34.1,0,0,3.6,4.3 -2022-09-23T22:00,53.5,52,36.2,0,0,4.8,6.9 -2022-09-23T23:00,50.5,59,36.7,0,0,3.3,8.3 -2022-09-24T00:00,48.9,63,36.9,0,0,3.7,5.6 -2022-09-24T01:00,47.3,64,35.6,0,0,4,5.4 -2022-09-24T02:00,46.6,62,34.3,0,0,4.1,5.8 -2022-09-24T03:00,46.4,65,35.2,0,0,4.1,6 -2022-09-24T04:00,45.9,65,34.8,0,0,5.1,6.9 -2022-09-24T05:00,46.4,61,33.6,0,0,6,7.4 -2022-09-24T06:00,46.2,61,33.4,0,0,5,8.3 -2022-09-24T07:00,52.3,50,34.2,0,0,6.9,11.2 -2022-09-24T08:00,59.6,44,37.9,0,0,2.9,10.7 -2022-09-24T09:00,66.8,33,37,0,0,4.9,11.6 -2022-09-24T10:00,72.7,20,29.1,0,0,3.5,12.1 -2022-09-24T11:00,74.8,19,30.1,0,0,1.8,10.5 -2022-09-24T12:00,76.6,19,31.6,0,0,1.1,9.6 -2022-09-24T13:00,78.3,17,30.5,0,0,1.4,8.9 -2022-09-24T14:00,79.6,16,29.7,0,0,4.5,11.6 -2022-09-24T15:00,79.9,16,29.2,0,0,5.3,12.3 -2022-09-24T16:00,79.3,15,27.6,0,0,8.2,14.5 -2022-09-24T17:00,76.1,18,29.6,0,0,6.4,16.3 -2022-09-24T18:00,67.1,29,33.7,0,0,5.1,10.1 -2022-09-24T19:00,63,41,38.8,0,0,6.2,7.6 -2022-09-24T20:00,59.5,48,39.7,0,0,3.8,7.6 -2022-09-24T21:00,56,53,39.2,0,0,4.5,5.8 -2022-09-24T22:00,54.9,53,38.1,0,0,4,5.6 -2022-09-24T23:00,55.7,47,36,0,0,8.1,10.1 -2022-09-25T00:00,56.1,48,36.8,0,0,11.5,19.7 -2022-09-25T01:00,53.8,52,36.3,0,0,4.9,18.8 -2022-09-25T02:00,50.1,61,37.2,0,0,5.2,7.6 -2022-09-25T03:00,48.2,67,37.7,0,0,2.2,6.3 -2022-09-25T04:00,47.1,70,37.9,0,0,2.1,3.6 -2022-09-25T05:00,46.7,73,38.4,0,0,4.1,4.7 -2022-09-25T06:00,44.8,78,38.5,0,0,4.7,6 -2022-09-25T07:00,49.6,67,38.9,0,0,3.6,7.2 -2022-09-25T08:00,55.7,53,38.8,0,0,2.2,7.6 -2022-09-25T09:00,61.7,39,36.3,0,0,2.7,9.4 -2022-09-25T10:00,66,32,35.2,0,0,3.2,10.5 -2022-09-25T11:00,69.4,28,34.7,0,0,3.8,11.9 -2022-09-25T12:00,72.3,25,34.8,0,0,6.4,15.2 -2022-09-25T13:00,73.9,25,35.3,0,0,8,17.4 -2022-09-25T14:00,74.7,24,35.3,0,0,8.8,18.3 -2022-09-25T15:00,74.1,24,34.5,0,0,9.6,19 -2022-09-25T16:00,73.5,24,34.3,0,0,8.3,18.8 -2022-09-25T17:00,72.1,24,32.8,0,0,6.4,15.7 -2022-09-25T18:00,64.7,34,35.7,0,0,4.4,10.5 -2022-09-25T19:00,61.4,43,38.7,0,0,4.2,6.7 -2022-09-25T20:00,62.2,42,39.1,0,0,3.3,6.9 -2022-09-25T21:00,61.7,44,39.3,0,0,0.5,4 -2022-09-25T22:00,57.8,50,39.2,0,0,2.3,2.7 -2022-09-25T23:00,54.5,56,38.9,0,0,3,4.9 -2022-09-26T00:00,51.8,64,40.2,0,0,2.7,5.1 -2022-09-26T01:00,49.1,73,40.9,0,0,2.2,4.5 -2022-09-26T02:00,48,76,40.9,0,0,2.1,3.4 -2022-09-26T03:00,47.6,75,40.1,0,0,3.8,6.3 -2022-09-26T04:00,46.7,74,38.9,0,0,4.8,6 -2022-09-26T05:00,46.3,71,37.6,0,0,4.6,5.8 -2022-09-26T06:00,45.3,70,36.1,0,0,4.3,5.8 -2022-09-26T07:00,50.6,59,36.9,0,0,3.9,7.4 -2022-09-26T08:00,59.3,48,39.7,0,0,2.8,8.1 -2022-09-26T09:00,68.9,34,39.2,0,0,2.6,9.2 -2022-09-26T10:00,75.1,21,32.8,0,0,3,9.4 -2022-09-26T11:00,77.5,19,31.8,0,0,6.1,14.5 -2022-09-26T12:00,78.7,18,32.1,0,0,7.1,16.1 -2022-09-26T13:00,79.3,18,31.8,0,0,6.5,16.3 -2022-09-26T14:00,79.5,18,31.9,0,0,5.3,15.2 -2022-09-26T15:00,79.3,18,32.2,0,0,4.3,13.6 -2022-09-26T16:00,79.1,18,32.5,0,0,4.8,11.6 -2022-09-26T17:00,77.5,21,34.6,0,0,2.3,10.7 -2022-09-26T18:00,71.2,26,34.8,0,0,3.4,5.1 -2022-09-26T19:00,63.7,38,37.6,0,0,4.4,6.3 -2022-09-26T20:00,62.6,41,38.8,0,0,1.3,5.8 -2022-09-26T21:00,63.1,40,38.2,0,0,2.8,4.9 -2022-09-26T22:00,57.7,49,38.7,0,0,3.8,5.4 -2022-09-26T23:00,55.8,54,39.5,0,0,4,6.7 -2022-09-27T00:00,53.1,61,40.1,0,0,3.7,6.9 -2022-09-27T01:00,53.3,61,40.1,0,0,4.5,5.8 -2022-09-27T02:00,50.8,67,40.1,0,0,2.8,5.4 -2022-09-27T03:00,49.2,71,40,0,0,2.1,4.3 -2022-09-27T04:00,48.3,72,39.7,0,0,1.9,3.6 -2022-09-27T05:00,50,70,40.5,0,0,1.1,3.8 -2022-09-27T06:00,49.1,70,39.9,0,0,2.1,3.6 -2022-09-27T07:00,51.9,65,40.4,0,0,3.6,6.9 -2022-09-27T08:00,60.3,47,40.1,0,0,2.5,7.6 -2022-09-27T09:00,66.1,36,38.5,0,0,3.8,10.3 -2022-09-27T10:00,70.6,29,37,0,0,3.6,11.6 -2022-09-27T11:00,74,26,36.5,0,0,5.3,13.4 -2022-09-27T12:00,76.1,23,35.9,0,0,3.7,14.1 -2022-09-27T13:00,77.7,22,35.8,0,0,1.6,11.9 -2022-09-27T14:00,77.6,22,36.3,0,0,2,9.6 -2022-09-27T15:00,77.1,25,39,0,0,6.1,13.4 -2022-09-27T16:00,76.6,25,38,0,0,3.7,13.6 -2022-09-27T17:00,72.2,32,40.7,0,0,4.4,11 -2022-09-27T18:00,68.1,45,45.7,0,0,3.4,8.1 -2022-09-27T19:00,64,54,47.3,0,0,4.2,6.5 -2022-09-27T20:00,60.4,66,48.7,0,0,3.5,6.3 -2022-09-27T21:00,59.4,66,48,0,0,4.5,7.2 -2022-09-27T22:00,57.5,66,46.1,0,0,4.7,8.5 -2022-09-27T23:00,54.9,70,45.3,0,0,3.6,7.8 -2022-09-28T00:00,53.5,74,45.6,0,0,3.9,6 -2022-09-28T01:00,52.3,76,44.8,0,0,3.8,6.5 -2022-09-28T02:00,50.5,75,43.1,0,0,3.3,6.5 -2022-09-28T03:00,48.7,78,42.1,0,0,3.4,5.4 -2022-09-28T04:00,48,78,41.5,0,0,3.4,4.5 -2022-09-28T05:00,48.7,79,42.5,0,0,3.7,4.5 -2022-09-28T06:00,47.5,78,41.1,0,0,2.7,4.7 -2022-09-28T07:00,52.3,65,41,0,0,2.4,5.6 -2022-09-28T08:00,58.1,56,42.3,0,0,3.2,8.5 -2022-09-28T09:00,64.7,42,41,0,0,4.1,11.2 -2022-09-28T10:00,72.7,27,37.2,0,0,3.2,11.4 -2022-09-28T11:00,78.9,20,34,0,0,3,11 -2022-09-28T12:00,82.9,12,24.8,0,0,4.3,12.3 -2022-09-28T13:00,83.2,11,23.2,0,0,5.9,14.5 -2022-09-28T14:00,83.2,11,24.1,0,0,4.7,14.8 -2022-09-28T15:00,82.3,12,24.8,0,0,1.9,12.5 -2022-09-28T16:00,82.9,12,24.5,0,0,1.1,7.6 -2022-09-28T17:00,80.2,17,31.4,0,0,1.7,5.8 -2022-09-28T18:00,73.3,23,33.8,0,0,6.6,8.7 -2022-09-28T19:00,68.9,33,38.8,0,0,6.8,15.9 -2022-09-28T20:00,62.3,44,40.1,0,0,4.7,10.7 -2022-09-28T21:00,59.9,49,40.8,0,0,4.6,6 -2022-09-28T22:00,59.4,51,41,0,0,4,6 -2022-09-28T23:00,58.4,51,40.2,0,0,4.7,7.2 -2022-09-29T00:00,57.4,50,39.1,0,0,4.7,7.6 -2022-09-29T01:00,56.4,48,36.8,0,0,4.6,7.4 -2022-09-29T02:00,55.7,45,34.7,0,0,4.8,7.2 -2022-09-29T03:00,53.9,47,34,0,0,6.3,7.6 -2022-09-29T04:00,53.2,50,35.2,0,0,5.6,7.8 -2022-09-29T05:00,55.5,49,36.6,0,0,5.2,6.5 -2022-09-29T06:00,54.1,52,36.7,0,0,6.4,7.8 -2022-09-29T07:00,59.5,43,37.2,0,0,5,7.4 -2022-09-29T08:00,65.8,36,37.8,0,0,1.1,8.1 -2022-09-29T09:00,74.3,26,37,0,0,1.4,7.6 -2022-09-29T10:00,78.7,21,35.3,0,0,2,9.2 -2022-09-29T11:00,81.2,17,32.7,0,0,3.8,14.1 -2022-09-29T12:00,82.5,15,30.5,0,0,3.8,13 -2022-09-29T13:00,83.8,14,29.2,0,0,4.3,13.6 -2022-09-29T14:00,83.1,14,28.5,0,0,2.7,13.2 -2022-09-29T15:00,82.4,14,28,0,0,3.4,10.5 -2022-09-29T16:00,80.4,17,31.4,0,0,12.4,20.1 -2022-09-29T17:00,69.7,40,44.5,0,0,8.9,26.4 -2022-09-29T18:00,66.7,54,49.6,0.008,0,5.7,14.5 -2022-09-29T19:00,64,58,48.7,0,0,2.3,10.1 -2022-09-29T20:00,61.1,64,49,0,0,3.2,4.7 -2022-09-29T21:00,59.5,65,47.8,0,0,5.4,9.8 -2022-09-29T22:00,56.6,68,46.3,0,0,4,8.7 -2022-09-29T23:00,54.6,74,46.5,0,0,3.8,6 -2022-09-30T00:00,53.3,76,45.9,0,0,3.5,5.8 -2022-09-30T01:00,51.7,78,45,0,0,4.3,5.6 -2022-09-30T02:00,51.4,76,43.9,0,0,4,5.8 -2022-09-30T03:00,50.8,74,42.9,0,0,3.5,5.6 -2022-09-30T04:00,50.5,71,41.4,0,0,4,6.3 -2022-09-30T05:00,50.5,70,41.1,0,0,3.8,6 -2022-09-30T06:00,49.5,69,39.8,0,0,4.1,6 -2022-09-30T07:00,54,57,39.3,0,0,4.3,8.1 -2022-09-30T08:00,61.1,45,39.7,0,0,1.3,7.8 -2022-09-30T09:00,69.4,32,38.2,0,0,2.1,8.5 -2022-09-30T10:00,75.5,23,34.9,0,0,2.7,10.1 -2022-09-30T11:00,78.7,18,31.7,0,0,3.3,12.1 -2022-09-30T12:00,80.6,16,30.5,0,0,3.7,12.1 -2022-09-30T13:00,82.3,15,29.8,0,0,4.6,13.6 -2022-09-30T14:00,82.5,16,31.6,0,0,5.4,14.1 -2022-09-30T15:00,71.8,45,49.6,0.024,0,16.6,27.5 -2022-09-30T16:00,74.8,27,38.5,0,0,6.7,29.3 -2022-09-30T17:00,62.2,71,52.6,0.035,0,5.9,13.6 -2022-09-30T18:00,61.6,79,55.1,0.016,0,8.2,12.8 -2022-09-30T19:00,58.2,88,54.5,0,0,1.1,13.4 -2022-09-30T20:00,58.5,85,54,0.004,0,6.4,10.7 -2022-09-30T21:00,57.6,87,53.8,0,0,9,15 -2022-09-30T22:00,56.1,89,52.9,0,0,6.3,15 -2022-09-30T23:00,53.7,95,52.2,0,0,2.8,10.3 -2022-10-01T00:00,54.8,92,52.6,0,0,1.4,4.3 -2022-10-01T01:00,51.5,98,51,0,0,3.3,4.9 -2022-10-01T02:00,52.1,98,51.4,0,0,2.6,4.9 -2022-10-01T03:00,52.9,95,51.5,0,0,1.1,4.7 -2022-10-01T04:00,50.9,98,50.4,0,0,3,3.8 -2022-10-01T05:00,53.1,97,52.2,0,0,2.8,4.3 -2022-10-01T06:00,52.9,95,51.6,0,0,1.1,3.4 -2022-10-01T07:00,52.4,95,51,0,0,2.2,5.1 -2022-10-01T08:00,55,89,51.6,0,0,1.7,7.4 -2022-10-01T09:00,60.5,68,49.7,0,0,0.8,7.8 -2022-10-01T10:00,66.8,48,46.5,0,0,5,12.5 -2022-10-01T11:00,70.4,39,44.2,0,0,4.1,16.3 -2022-10-01T12:00,72.7,35,43.3,0,0,1.8,13.9 -2022-10-01T13:00,72.9,32,41.2,0,0,4.3,13.6 -2022-10-01T14:00,68.5,41,43.9,0.004,0,3.8,13.9 -2022-10-01T15:00,68.5,42,44.8,0,0,2.5,11.4 -2022-10-01T16:00,65.3,50,46.3,0,0,6.6,12.1 -2022-10-01T17:00,63.1,61,49.5,0,0,5.3,16.1 -2022-10-01T18:00,60.3,70,50.5,0,0,5,11.6 -2022-10-01T19:00,58.8,75,50.8,0,0,1.9,7.4 -2022-10-01T20:00,57,83,51.8,0,0,3.8,6.5 -2022-10-01T21:00,54.9,92,52.7,0,0,2.5,6.5 -2022-10-01T22:00,53.6,95,52.3,0,0,2.8,4.7 -2022-10-01T23:00,51.4,96,50.4,0,0,2.3,4.3 -2022-10-02T00:00,50.3,98,49.6,0,0,3.1,4.5 -2022-10-02T01:00,49.6,97,48.7,0,0,2.2,4.3 -2022-10-02T02:00,48.7,93,46.8,0,0,2.1,4.3 -2022-10-02T03:00,46.9,93,45,0,0,0.5,4 -2022-10-02T04:00,45.9,94,44.2,0,0,0.6,2 -2022-10-02T05:00,46.9,85,42.5,0,0,2.5,2 -2022-10-02T06:00,46.6,83,41.7,0,0,1.6,4.5 -2022-10-02T07:00,50.7,72,42.2,0,0,3.7,6.7 -2022-10-02T08:00,52.9,71,43.6,0.008,0,1.6,6.9 -2022-10-02T09:00,54.1,76,46.9,0.012,0,2.1,5.4 -2022-10-02T10:00,59.9,62,46.8,0,0,3.2,9.8 -2022-10-02T11:00,67.6,38,41.1,0,0,1,9.8 -2022-10-02T12:00,71.7,32,40,0,0,5,12.8 -2022-10-02T13:00,73.8,30,40,0,0,1.9,13 -2022-10-02T14:00,75.4,26,38.4,0,0,0.3,10.1 -2022-10-02T15:00,75.9,25,37.4,0,0,2.9,9.2 -2022-10-02T16:00,74.5,26,37.2,0,0,10.1,16.1 -2022-10-02T17:00,67.4,45,45.4,0.039,0,5.3,28.4 -2022-10-02T18:00,60.9,62,47.9,0,0,7.1,11.6 -2022-10-02T19:00,57.6,78,50.8,0,0,4.1,11.6 -2022-10-02T20:00,57.4,77,50.4,0,0,3.8,9.4 -2022-10-02T21:00,55.2,83,50.2,0,0,3.1,5.1 -2022-10-02T22:00,54.7,83,49.6,0,0,4,6.3 -2022-10-02T23:00,53.8,82,48.4,0,0,4.2,7.2 -2022-10-03T00:00,54.3,77,47.1,0,0,4,6.9 -2022-10-03T01:00,54.3,73,45.7,0,0,3.7,6.7 -2022-10-03T02:00,51.4,77,44.5,0.004,0,4.3,6.5 -2022-10-03T03:00,50.3,75,42.7,0,0,5.5,6.9 -2022-10-03T04:00,49.9,73,41.7,0,0,4.7,6.5 -2022-10-03T05:00,49.1,85,44.7,0,0,3.5,6.7 -2022-10-03T06:00,48.2,81,42.7,0,0,5.7,8.7 -2022-10-03T07:00,51.1,68,40.8,0,0,7.1,11.2 -2022-10-03T08:00,58.6,53,41.6,0,0,3.2,11.2 -2022-10-03T09:00,64.3,41,40.1,0,0,2.4,8.1 -2022-10-03T10:00,67.5,35,38.9,0,0,2.9,9.8 -2022-10-03T11:00,70.3,30,37.8,0,0,3.6,11.4 -2022-10-03T12:00,71.9,28,37.3,0,0,4.5,12.3 -2022-10-03T13:00,72.5,27,36.6,0,0,5.1,13.2 -2022-10-03T14:00,73.2,26,36.4,0,0,5.2,13.2 -2022-10-03T15:00,72.4,27,36.7,0,0,2.8,13 -2022-10-03T16:00,70.4,29,37,0,0,2.5,9.8 -2022-10-03T17:00,57.7,77,50.6,0.004,0,9.3,17.4 -2022-10-03T18:00,56.6,89,53.2,0.213,0,3.6,13.6 -2022-10-03T19:00,55.5,87,51.5,0.087,0,3.2,8.9 -2022-10-03T20:00,54.5,84,49.7,0.051,0,2.6,7.4 -2022-10-03T21:00,54,91,51.4,0,0,3.8,6 -2022-10-03T22:00,51.3,96,50.3,0,0,3,7.2 -2022-10-03T23:00,52.3,94,50.5,0,0,0.3,4.5 -2022-10-04T00:00,49.5,98,49,0,0,3.3,5.6 -2022-10-04T01:00,47.6,98,47.1,0,0,3.3,5.6 -2022-10-04T02:00,46.9,96,45.9,0,0,3.1,5.8 -2022-10-04T03:00,45.8,95,44.3,0,0,2.8,5.8 -2022-10-04T04:00,45.5,93,43.6,0,0,3.5,6.3 -2022-10-04T05:00,46.2,77,39.4,0,0,3.8,6.3 -2022-10-04T06:00,45.1,78,38.8,0,0,3.7,4.7 -2022-10-04T07:00,47.7,76,40.5,0,0,2.7,5.8 -2022-10-04T08:00,50.9,79,44.6,0,0,3.5,9.2 -2022-10-04T09:00,53.7,76,46.2,0,0,4.9,12.3 -2022-10-04T10:00,57.8,63,45.5,0,0,3.6,12.5 -2022-10-04T11:00,61.7,52,43.9,0,0,3.6,12.1 -2022-10-04T12:00,65.4,45,43.6,0,0,4.9,13.4 -2022-10-04T13:00,66,42,42.4,0.004,0,3,13.6 -2022-10-04T14:00,67.3,37,39.8,0.004,0,5,12.3 -2022-10-04T15:00,68.4,33,38.4,0,0,7.6,15.4 -2022-10-04T16:00,66.9,35,38.5,0,0,8.3,17.2 -2022-10-04T17:00,63.2,48,43.3,0,0,6.9,15.4 -2022-10-04T18:00,59,58,44.2,0,0,4.7,11.4 -2022-10-04T19:00,57.3,62,44.2,0.004,0,9.7,14.8 -2022-10-04T20:00,56.4,62,43.3,0,0,2.2,17.2 -2022-10-04T21:00,53.9,81,48.3,0.02,0,4.9,7.2 -2022-10-04T22:00,52.5,85,48,0,0,5.3,10.1 -2022-10-04T23:00,50.6,90,47.7,0,0,4.3,8.5 -2022-10-05T00:00,48.1,94,46.4,0,0,4,7.2 -2022-10-05T01:00,46.4,95,45.1,0,0,3.8,5.8 -2022-10-05T02:00,46.7,89,43.7,0,0,4,5.1 -2022-10-05T03:00,46.4,89,43.3,0,0,3.8,5.4 -2022-10-05T04:00,44.7,91,42.3,0,0,2.8,4.7 -2022-10-05T05:00,46,93,44.2,0,0,2,4.5 -2022-10-05T06:00,44.7,93,42.7,0,0,2,3.4 -2022-10-05T07:00,48.7,81,43.2,0,0,1.8,4.9 -2022-10-05T08:00,53.7,69,43.9,0,0,1.3,6 -2022-10-05T09:00,57.6,56,41.9,0,0,4,11 -2022-10-05T10:00,61,47,40.6,0,0,4.7,12.8 -2022-10-05T11:00,63.7,45,41.7,0,0,4.3,13 -2022-10-05T12:00,65.7,40,40.9,0,0,4.2,13 -2022-10-05T13:00,67.3,36,39.4,0,0,4,12.8 -2022-10-05T14:00,68.4,33,37.9,0,0,4.6,12.3 -2022-10-05T15:00,68.5,31,36.3,0,0,5.7,13 -2022-10-05T16:00,67.2,32,36.3,0,0,6.9,13.4 -2022-10-05T17:00,65,34,36,0,0,3.4,13.4 -2022-10-05T18:00,59.2,44,37.3,0,0,5.4,6.5 -2022-10-05T19:00,57.4,49,38.1,0,0,5.5,6.7 -2022-10-05T20:00,58.6,44,37,0,0,2.9,6.3 -2022-10-05T21:00,52,58,37.9,0,0,4.6,5.8 -2022-10-05T22:00,49.8,72,41,0,0,3.3,6 -2022-10-05T23:00,47.2,84,42.5,0,0,2.6,5.6 -2022-10-06T00:00,45.6,90,42.7,0,0,3,4.5 -2022-10-06T01:00,45.6,85,41.5,0,0,4.1,6.7 -2022-10-06T02:00,44.7,84,40.2,0,0,4,7.2 -2022-10-06T03:00,43.3,85,39,0,0,3.4,6.3 -2022-10-06T04:00,42.2,86,38.3,0,0,4,5.1 -2022-10-06T05:00,42.4,83,37.5,0,0,4.1,5.4 -2022-10-06T06:00,41.7,84,37.2,0,0,4.3,5.4 -2022-10-06T07:00,46,73,37.7,0,0,3.9,7.4 -2022-10-06T08:00,52.9,59,39,0,0,1.6,7.4 -2022-10-06T09:00,59.4,46,38.8,0,0,2.1,8.5 -2022-10-06T10:00,64.1,39,38.9,0,0,2.9,10.1 -2022-10-06T11:00,67.3,33,36.9,0,0,4,12.1 -2022-10-06T12:00,69.4,29,35.5,0,0,3.8,12.1 -2022-10-06T13:00,71.1,26,34.4,0,0,4,12.3 -2022-10-06T14:00,71.8,24,33.5,0,0,3.4,12.1 -2022-10-06T15:00,72.1,24,32.9,0,0,4.6,11.4 -2022-10-06T16:00,70.9,25,32.9,0,0,5.4,11.4 -2022-10-06T17:00,68.2,28,34.1,0,0,2.9,11 -2022-10-06T18:00,62.4,34,33.7,0,0,4.7,6.3 -2022-10-06T19:00,59.8,39,34.6,0,0,6.5,9.6 -2022-10-06T20:00,57.4,50,39,0,0,10.3,16.1 -2022-10-06T21:00,55.4,57,40.3,0,0,7.6,16.3 -2022-10-06T22:00,54.2,63,41.7,0,0,5.5,12.3 -2022-10-06T23:00,53.6,66,42.4,0,0,5.6,9.2 -2022-10-07T00:00,51.8,68,41.5,0,0,10.4,15 -2022-10-07T01:00,49.6,79,43.3,0,0,14.6,24.6 -2022-10-07T02:00,46.9,88,43.6,0,0,11.5,23.7 -2022-10-07T03:00,46,86,42,0,0,9.2,18.3 -2022-10-07T04:00,45.9,82,40.6,0,0,8.1,15.4 -2022-10-07T05:00,44.2,85,40.1,0,0,5.1,13.9 -2022-10-07T06:00,44,85,39.8,0,0,5.5,10.1 -2022-10-07T07:00,43.7,84,39.3,0,0,6.3,11.6 -2022-10-07T08:00,44.2,81,38.6,0,0,5.8,11.9 -2022-10-07T09:00,45.1,77,38.2,0,0,5.6,12.1 -2022-10-07T10:00,46.5,72,38,0,0,4.9,12.3 -2022-10-07T11:00,48.7,67,38.1,0,0,4.3,12.1 -2022-10-07T12:00,51.4,60,38,0,0,4.6,12.8 -2022-10-07T13:00,52.7,57,37.8,0,0,4.3,12.8 -2022-10-07T14:00,55.3,50,37.1,0,0,2.6,12.1 -2022-10-07T15:00,56.4,48,36.9,0,0,4.2,11.4 -2022-10-07T16:00,56.1,48,36.8,0,0,4.5,11.9 -2022-10-07T17:00,49.5,65,38.2,0,0,5.7,12.8 -2022-10-07T18:00,48.1,70,38.8,0,0,4.5,11.9 -2022-10-07T19:00,47.2,74,39.4,0,0,2.5,8.1 -2022-10-07T20:00,46.5,78,40,0,0,2.1,4.5 -2022-10-07T21:00,45.3,83,40.5,0,0,2.9,3.6 -2022-10-07T22:00,44.6,85,40.3,0,0,3.1,3.8 -2022-10-07T23:00,43.6,89,40.5,0,0,2.7,4 -2022-10-08T00:00,42.1,94,40.6,0,0,3.8,4.9 -2022-10-08T01:00,41.4,97,40.5,0,0,4,5.1 -2022-10-08T02:00,40.6,98,40,0,0,3.7,5.1 -2022-10-08T03:00,40.7,98,40.3,0,0,3,4.7 -2022-10-08T04:00,40.7,100,40.6,0,0,2.6,5.6 -2022-10-08T05:00,44,88,40.7,0,0,4.9,4 -2022-10-08T06:00,43.6,90,40.8,0,0,2.5,7.8 -2022-10-08T07:00,44.1,88,40.8,0,0,2,5.1 -2022-10-08T08:00,45.9,82,40.8,0,0,2.3,6.7 -2022-10-08T09:00,48.6,74,40.6,0,0,3,9.4 -2022-10-08T10:00,52.9,62,40.2,0,0,3.3,11.2 -2022-10-08T11:00,56,55,39.9,0,0,4,12.8 -2022-10-08T12:00,59,49,40.1,0,0,3.5,12.5 -2022-10-08T13:00,61.5,46,40.4,0,0,4,12.5 -2022-10-08T14:00,63,42,39.3,0,0,3.6,12.5 -2022-10-08T15:00,63.7,37,37,0,0,4.2,11.6 -2022-10-08T16:00,63.1,33,33.6,0,0,6.3,13 -2022-10-08T17:00,61.6,32,31.6,0,0,3.4,12.8 -2022-10-08T18:00,56.2,43,34,0,0,5.1,6.9 -2022-10-08T19:00,56.1,44,34.5,0,0,1.2,6.9 -2022-10-08T20:00,50.6,57,36.1,0,0,3.3,4.5 -2022-10-08T21:00,48.2,69,38.4,0,0,1.9,4.5 -2022-10-08T22:00,45.6,80,39.9,0,0,2.5,4 -2022-10-08T23:00,43.5,89,40.5,0,0,3,5.1 -2022-10-09T00:00,42.2,90,39.5,0,0,2.7,5.1 -2022-10-09T01:00,41.4,89,38.3,0,0,2.7,4.5 -2022-10-09T02:00,40.2,88,36.9,0,0,3.2,4.5 -2022-10-09T03:00,39.5,87,36.1,0,0,2.2,4.5 -2022-10-09T04:00,38.5,87,35.1,0,0,2.9,3.8 -2022-10-09T05:00,39.3,75,32,0,0,3.9,4.7 -2022-10-09T06:00,38.3,73,30.6,0,0,3.5,4.7 -2022-10-09T07:00,41.8,63,30.3,0,0,2.9,5.8 -2022-10-09T08:00,48.6,51,31.2,0,0,1.4,6.3 -2022-10-09T09:00,55.6,39,31,0,0,2.9,9.4 -2022-10-09T10:00,61.3,35,33.5,0,0,2.5,9.8 -2022-10-09T11:00,65.8,31,34.5,0,0,3.7,11.6 -2022-10-09T12:00,69.2,27,33.6,0,0,4.2,12.8 -2022-10-09T13:00,71.1,20,28.5,0,0,4.2,12.8 -2022-10-09T14:00,72.2,17,24.9,0,0,5,12.8 -2022-10-09T15:00,72.1,15,21.7,0,0,6.4,13.9 -2022-10-09T16:00,70.7,14,19.6,0,0,7.3,14.1 -2022-10-09T17:00,66.1,20,23.5,0,0,3.9,13.4 -2022-10-09T18:00,58.5,29,26,0,0,5.4,7.4 -2022-10-09T19:00,55.4,35,28.1,0,0,5.2,6.9 -2022-10-09T20:00,55.6,35,28.7,0,0,3.3,6.3 -2022-10-09T21:00,49.7,46,29.7,0,0,4.1,6.3 -2022-10-09T22:00,46.9,53,30.8,0,0,3.8,5.4 -2022-10-09T23:00,46,55,30.6,0,0,4.1,6.3 -2022-10-10T00:00,44.5,57,30.1,0,0,3.8,6.3 -2022-10-10T01:00,43.4,57,29,0,0,3.8,6 -2022-10-10T02:00,42.4,56,27.8,0,0,3.8,5.8 -2022-10-10T03:00,40.9,57,26.7,0,0,4.2,5.8 -2022-10-10T04:00,40.1,57,26.1,0,0,5,6.3 -2022-10-10T05:00,40,57,25.8,0,0,5.4,6.5 -2022-10-10T06:00,40.5,55,25.4,0,0,5.6,7.6 -2022-10-10T07:00,45.7,46,25.9,0,0,3.2,6.7 -2022-10-10T08:00,53.3,37,27.8,0,0,2.7,7.6 -2022-10-10T09:00,62.4,27,28.1,0,0,2.6,8.7 -2022-10-10T10:00,69.2,20,25.8,0,0,1.7,8.7 -2022-10-10T11:00,72.4,15,21.5,0,0,3.5,11.4 -2022-10-10T12:00,74.1,13,20.9,0,0,3.1,11.6 -2022-10-10T13:00,74.9,13,21.4,0,0,4,11.9 -2022-10-10T14:00,75,13,20.3,0,0,4.2,13 -2022-10-10T15:00,75.5,11,17.2,0,0,0.8,11.9 -2022-10-10T16:00,75,10,15.7,0,0,6.5,11.6 -2022-10-10T17:00,69.1,18,23.4,0,0,4.3,16.3 -2022-10-10T18:00,69.5,17,23.1,0,0,1.3,5.8 -2022-10-10T19:00,60,29,28,0,0,6.3,9.2 -2022-10-10T20:00,55.1,40,31.1,0,0,4.8,11.4 -2022-10-10T21:00,52.2,45,31.3,0,0,5.1,8.9 -2022-10-10T22:00,49.8,50,31.7,0,0,3.8,8.3 -2022-10-10T23:00,49,51,31.6,0,0,4.6,7.2 -2022-10-11T00:00,48,53,31.6,0,0,4.6,6.9 -2022-10-11T01:00,48,54,32.3,0,0,4.6,7.4 -2022-10-11T02:00,46.9,55,31.7,0,0,4.5,7.2 -2022-10-11T03:00,46.9,53,30.7,0,0,5.4,8.7 -2022-10-11T04:00,47,50,29.5,0,0,5.9,9.4 -2022-10-11T05:00,43.3,56,28.6,0,0,7.2,11.2 -2022-10-11T06:00,43.4,55,28.1,0,0,7.8,8.9 -2022-10-11T07:00,51,40,27.3,0,0,6.3,9.4 -2022-10-11T08:00,59,30,27.8,0,0,8.3,13.4 -2022-10-11T09:00,66.6,19,22.7,0,0,10,17.9 -2022-10-11T10:00,69.3,17,22.2,0,0,3,17.9 -2022-10-11T11:00,72.3,15,21.8,0,0,1.8,10.3 -2022-10-11T12:00,75.3,11,17.6,0,0,5.5,14.3 -2022-10-11T13:00,76.6,9,14.2,0,0,7,15.9 -2022-10-11T14:00,75.5,11,17.5,0,0,9.9,19 -2022-10-11T15:00,72.3,14,20.5,0,0,12.3,22.6 -2022-10-11T16:00,73.5,12,17.4,0,0,8.3,21.5 -2022-10-11T17:00,69,16,21.5,0,0,6.3,16.3 -2022-10-11T18:00,56.7,42,33.8,0,0,15.3,27.3 -2022-10-11T19:00,53.5,51,35.6,0,0,6.5,22.8 -2022-10-11T20:00,51.7,55,36.2,0,0,7,11.6 -2022-10-11T21:00,51.7,56,36.6,0,0,2.5,11.4 -2022-10-11T22:00,49.8,63,37.6,0,0,2.7,4.7 -2022-10-11T23:00,50.1,61,37,0,0,0.3,3.8 -2022-10-12T00:00,45.4,73,37.1,0,0,2.7,4.3 -2022-10-12T01:00,43.4,81,37.9,0,0,4.1,5.4 -2022-10-12T02:00,42.2,85,37.9,0,0,3.4,5.6 -2022-10-12T03:00,41.2,82,36.1,0,0,4.3,6.9 -2022-10-12T04:00,40.6,76,33.6,0,0,4.2,6.9 -2022-10-12T05:00,39,76,32,0,0,4.5,7.2 -2022-10-12T06:00,38.4,71,29.8,0,0,4.4,7.2 -2022-10-12T07:00,41.6,59,28.4,0,0,5.7,8.3 -2022-10-12T08:00,51.4,40,28,0,0,4.5,9.6 -2022-10-12T09:00,60,26,25.3,0,0,4.8,11.2 -2022-10-12T10:00,65.8,18,20.7,0,0,5,13.4 -2022-10-12T11:00,68.5,19,24.5,0,0,3.2,12.8 -2022-10-12T12:00,71.6,18,25.4,0,0,5,13.4 -2022-10-12T13:00,72.9,18,27,0,0,8.8,18.3 -2022-10-12T14:00,72.5,19,28,0,0,9.9,19.2 -2022-10-12T15:00,69.9,20,26.8,0,0,10.8,21.9 -2022-10-12T16:00,65.5,24,27.9,0,0,12.7,21.3 -2022-10-12T17:00,55.6,38,30.7,0,0,10.6,23.3 -2022-10-12T18:00,53.2,43,31.1,0,0,5,16.3 -2022-10-12T19:00,50.9,47,31.2,0,0,3,7.6 -2022-10-12T20:00,49.4,50,31.4,0,0,3.6,5.1 -2022-10-12T21:00,47.8,52,31.3,0,0,4.2,7.2 -2022-10-12T22:00,45.2,58,31.5,0,0,4.1,6.5 -2022-10-12T23:00,43.1,66,32.4,0,0,4,5.6 -2022-10-13T00:00,42.4,72,34.1,0,0,3.8,5.8 -2022-10-13T01:00,40.8,79,34.7,0,0,3.4,6.3 -2022-10-13T02:00,41.5,76,34.6,0,0,2.2,5.4 -2022-10-13T03:00,41.2,75,33.9,0,0,1.3,2.9 -2022-10-13T04:00,39.3,77,32.7,0,0,4.9,7.8 -2022-10-13T05:00,37.4,84,33.1,0,0,3,7.8 -2022-10-13T06:00,37.4,83,32.7,0,0,3.7,6 -2022-10-13T07:00,39.8,73,31.9,0,0,4.9,7.8 -2022-10-13T08:00,47.4,53,31,0,0,4.7,10.1 -2022-10-13T09:00,55,37,28.9,0,0,7,14.3 -2022-10-13T10:00,59.5,31,28.8,0,0,6.4,14.8 -2022-10-13T11:00,61.5,29,28.6,0,0,5,14.8 -2022-10-13T12:00,63.4,27,28.7,0,0,4.6,13.6 -2022-10-13T13:00,64.7,26,29,0,0,7.1,16.3 -2022-10-13T14:00,65.7,25,29.2,0,0,5.6,16.6 -2022-10-13T15:00,65.8,25,29.4,0,0,4.6,13.9 -2022-10-13T16:00,65.3,26,29.3,0,0,3.1,11.6 -2022-10-13T17:00,61.3,27,27.3,0,0,3,8.1 -2022-10-13T18:00,56.1,35,29,0,0,5.8,9.6 -2022-10-13T19:00,52.3,44,31.3,0,0,5.1,9.6 -2022-10-13T20:00,50,52,32.9,0,0,4.8,8.3 -2022-10-13T21:00,47.5,58,33.3,0,0,4.3,7.8 -2022-10-13T22:00,47.9,49,29.8,0,0,4.8,7.6 -2022-10-13T23:00,47.7,44,26.8,0,0,5.1,7.6 -2022-10-14T00:00,47.4,45,27.2,0,0,5.9,9.2 -2022-10-14T01:00,45.2,50,27.7,0,0,5.1,9.2 -2022-10-14T02:00,43.1,52,26.5,0,0,4.5,8.1 -2022-10-14T03:00,41.5,52,25.3,0,0,5.7,7.2 -2022-10-14T04:00,41.1,54,25.9,0,0,4.6,7.2 -2022-10-14T05:00,41.6,53,25.8,0,0,4.4,6.9 -2022-10-14T06:00,40.9,52,24.5,0,0,6.2,9.8 -2022-10-14T07:00,43.6,45,23.5,0,0,6.7,9.8 -2022-10-14T08:00,51.2,33,22.7,0,0,6.2,11.9 -2022-10-14T09:00,61.6,19,19,0,0,6.7,13.2 -2022-10-14T10:00,67.6,13,15,0,0,4.9,14.1 -2022-10-14T11:00,71.7,12,16.3,0,0,2.2,12.3 -2022-10-14T12:00,75.5,9,13,0,0,7.2,15.7 -2022-10-14T13:00,77,7,9.3,0,0,10.7,20.8 -2022-10-14T14:00,77,9,13.6,0,0,14.1,25.5 -2022-10-14T15:00,76.6,8,11,0,0,13.6,26.2 -2022-10-14T16:00,75.1,8,10.9,0,0,11.7,24.2 -2022-10-14T17:00,69.1,12,15.1,0,0,4.8,20.1 -2022-10-14T18:00,67,14,16.3,0,0,5.9,9.6 -2022-10-14T19:00,59.6,20,18.1,0,0,5.4,8.1 -2022-10-14T20:00,56.3,21,16.9,0,0,6,9.2 -2022-10-14T21:00,51.5,27,18.6,0,0,5.4,7.2 -2022-10-14T22:00,50.2,31,20.5,0,0,5.1,7.6 -2022-10-14T23:00,48.1,32,19.9,0,0,4.9,7.4 -2022-10-15T00:00,46,38,21.6,0,0,4.7,7.4 -2022-10-15T01:00,45.4,39,21.8,0,0,4.1,7.4 -2022-10-15T02:00,46,35,20,0,0,3.6,4.7 -2022-10-15T03:00,41.9,41,19.8,0,0,6.3,7.6 -2022-10-15T04:00,43.1,40,20.2,0,0,4.3,8.1 -2022-10-15T05:00,48.3,33,20.8,0,0,3.8,5.1 -2022-10-15T06:00,46.8,35,20.3,0,0,2.8,4.7 -2022-10-15T07:00,47.3,35,21.2,0,0,2.5,3.8 -2022-10-15T08:00,52.6,30,22,0,0,0.3,4.5 -2022-10-15T09:00,56.3,29,24.3,0,0,2.8,8.9 -2022-10-15T10:00,58.6,30,27.6,0,0,3.6,11.2 -2022-10-15T11:00,60.9,28,27.3,0,0,4.9,13.2 -2022-10-15T12:00,62.1,27,27.9,0,0,6.9,15.4 -2022-10-15T13:00,62.6,27,28.6,0,0,7.8,16.8 -2022-10-15T14:00,62.6,28,28.9,0,0,7.8,16.8 -2022-10-15T15:00,62.4,28,29.1,0,0,6.2,16.1 -2022-10-15T16:00,62.6,28,29.2,0,0,4.2,13.2 -2022-10-15T17:00,58.8,37,32.5,0,0,3.9,9.6 -2022-10-15T18:00,54.9,44,33.3,0,0,4.4,6.7 -2022-10-15T19:00,55.3,44,33.7,0,0,6.5,10.3 -2022-10-15T20:00,55.1,46,35,0,0,6.8,11.6 -2022-10-15T21:00,53.6,54,37.3,0,0,5.4,10.7 -2022-10-15T22:00,52.9,57,38,0,0,3.6,8.5 -2022-10-15T23:00,52.4,58,38.2,0,0,2.9,5.6 -2022-10-16T00:00,50.1,66,39.1,0,0,2.8,4.9 -2022-10-16T01:00,50.8,65,39.6,0,0,4,6.5 -2022-10-16T02:00,50.3,64,38.5,0,0,5.1,8.3 -2022-10-16T03:00,49.6,62,37.2,0,0,5.8,9.8 -2022-10-16T04:00,49.2,62,36.8,0,0,4.7,9.6 -2022-10-16T05:00,48.3,62,36,0,0,3.5,8.1 -2022-10-16T06:00,47.4,65,36.2,0,0,4.8,7.4 -2022-10-16T07:00,47.2,65,36,0,0,5.2,8.3 -2022-10-16T08:00,48.7,59,35.2,0,0,5.4,10.1 -2022-10-16T09:00,49,57,34.5,0,0,6.2,11.4 -2022-10-16T10:00,49.5,55,33.9,0,0,4.9,12.3 -2022-10-16T11:00,50.7,51,33.4,0,0,0.7,10.1 -2022-10-16T12:00,52.8,47,33.4,0,0,1.7,8.5 -2022-10-16T13:00,53.6,46,33.3,0,0,1.9,8.5 -2022-10-16T14:00,57.1,39,32.5,0,0,2.1,10.3 -2022-10-16T15:00,56.9,38,31.6,0,0,0.5,9.4 -2022-10-16T16:00,56.5,38,31,0,0,1.9,7.2 -2022-10-16T17:00,54.7,42,32.2,0,0,1.7,6.9 -2022-10-16T18:00,50.7,50,32.9,0,0,3.3,5.4 -2022-10-16T19:00,47.8,57,33.4,0,0,4.8,5.6 -2022-10-16T20:00,46.6,61,33.9,0,0,2.1,5.8 -2022-10-16T21:00,43.6,73,35.4,0,0,2.6,4.3 -2022-10-16T22:00,43.3,75,35.9,0,0,1.6,3.8 -2022-10-16T23:00,42.4,79,36.2,0,0,4.2,6.7 -2022-10-17T00:00,41.8,76,34.8,0,0,4.7,7.8 -2022-10-17T01:00,39.7,76,32.7,0,0,4.6,7.8 -2022-10-17T02:00,39.7,71,31.1,0,0,3.5,6.3 -2022-10-17T03:00,40.9,66,30.4,0,0,0.9,4.5 -2022-10-17T04:00,39.2,69,30,0,0,0.4,1.6 -2022-10-17T05:00,35.8,87,32.3,0,0,2.1,2.2 -2022-10-17T06:00,33.8,91,31.6,0,0,3,3.8 -2022-10-17T07:00,36.3,84,31.8,0,0,3.2,5.4 -2022-10-17T08:00,43.9,63,32.2,0,0,2,6.7 -2022-10-17T09:00,49.8,46,30,0,0,1.7,8.3 -2022-10-17T10:00,54.1,38,29.2,0,0,1.8,9.2 -2022-10-17T11:00,57.7,33,29,0,0,2,9.8 -2022-10-17T12:00,60.5,29,28,0,0,3.6,11.9 -2022-10-17T13:00,62.2,25,26.3,0,0,5.8,14.5 -2022-10-17T14:00,62.8,24,25.3,0,0,6.9,15.7 -2022-10-17T15:00,62.4,24,25.3,0,0,6.9,15.7 -2022-10-17T16:00,61.2,26,25.6,0,0,5.7,14.8 -2022-10-17T17:00,57.9,29,26.2,0,0,2.9,11.4 -2022-10-17T18:00,53.5,35,26.8,0,0,4.8,6.7 -2022-10-17T19:00,50.2,40,27.1,0,0,6.1,7.2 -2022-10-17T20:00,52.8,36,26.6,0,0,2.7,7.4 -2022-10-17T21:00,51.2,38,26.6,0,0,1.4,3.1 -2022-10-17T22:00,49.1,42,27.2,0,0,1.6,2 -2022-10-17T23:00,42.9,57,28.9,0,0,3.1,3.6 -2022-10-18T00:00,39.1,72,31,0,0,2.6,4.3 -2022-10-18T01:00,38.1,77,31.6,0,0,3.8,4.3 -2022-10-18T02:00,38.1,76,31.2,0,0,3.8,5.8 -2022-10-18T03:00,36.6,79,30.8,0,0,1.6,4.9 -2022-10-18T04:00,34.7,86,30.8,0,0,3,3.8 -2022-10-18T05:00,33.9,89,31,0,0,3.2,4.3 -2022-10-18T06:00,32.1,92,30,0,0,4.6,5.1 -2022-10-18T07:00,36.8,75,29.5,0,0,4.2,5.8 -2022-10-18T08:00,45.1,52,28.5,0,0,2.9,7.8 -2022-10-18T09:00,54.1,34,26.3,0,0,2.6,8.7 -2022-10-18T10:00,60.3,25,24.5,0,0,2,8.9 -2022-10-18T11:00,63.1,22,23.9,0,0,5,13 -2022-10-18T12:00,64.8,22,24.6,0,0,6.5,15.4 -2022-10-18T13:00,66,19,23,0,0,6.1,15.4 -2022-10-18T14:00,66.6,17,20.5,0,0,5.4,15 -2022-10-18T15:00,66.3,17,20.6,0,0,4.3,13.2 -2022-10-18T16:00,65,19,21.8,0,0,3.9,11.2 -2022-10-18T17:00,59.9,24,23.5,0,0,4.3,8.5 -2022-10-18T18:00,54.6,30,24.1,0,0,5.5,6.7 -2022-10-18T19:00,51,37,25.6,0,0,5.1,6.7 -2022-10-18T20:00,48,45,27.9,0,0,4.3,6.3 -2022-10-18T21:00,45.1,55,29.7,0,0,3.8,5.8 -2022-10-18T22:00,43.6,57,29.4,0,0,4.3,6 -2022-10-18T23:00,42.5,56,28,0,0,4.8,6.3 -2022-10-19T00:00,41.4,55,26.2,0,0,5.6,6.9 -2022-10-19T01:00,41.1,53,25.3,0,0,4.8,6.5 -2022-10-19T02:00,39.4,54,24,0,0,5.5,6.7 -2022-10-19T03:00,38.7,52,22.6,0,0,5.5,6.9 -2022-10-19T04:00,38.3,51,21.7,0,0,5.5,7.4 -2022-10-19T05:00,39,43,18.5,0,0,6.6,7.4 -2022-10-19T06:00,38.7,41,16.7,0,0,7.6,9.4 -2022-10-19T07:00,44,32,15.6,0,0,4.9,9.4 -2022-10-19T08:00,53.6,22,15.8,0,0,6.5,11.2 -2022-10-19T09:00,63.4,16,16.5,0,0,1.4,11 -2022-10-19T10:00,68.6,14,17,0,0,5.1,11.9 -2022-10-19T11:00,72,10,11.8,0,0,6,14.5 -2022-10-19T12:00,74.2,8,8.4,0,0,6.4,14.8 -2022-10-19T13:00,75.6,9,13.2,0,0,8.1,16.8 -2022-10-19T14:00,75.7,11,17.1,0,0,10.7,19.9 -2022-10-19T15:00,74.8,10,15.5,0,0,9.6,21 -2022-10-19T16:00,74.9,8,9.9,0,0,5.2,17.4 -2022-10-19T17:00,68.6,13,16.3,0,0,5.8,8.9 -2022-10-19T18:00,62.6,15,14.4,0,0,5.9,10.1 -2022-10-19T19:00,61.5,18,17,0,0,5.7,9.4 -2022-10-19T20:00,61.3,18,17.5,0,0,1.9,7.2 -2022-10-19T21:00,58.4,20,17.6,0,0,2.5,3.1 -2022-10-19T22:00,53.4,24,17.2,0,0,4.3,5.1 -2022-10-19T23:00,47,34,19.8,0,0,3.4,6.7 -2022-10-20T00:00,42.9,44,22.6,0,0,4.5,7.2 -2022-10-20T01:00,40.8,50,23.5,0,0,4,7.2 -2022-10-20T02:00,40.8,49,23.3,0,0,4.5,6.9 -2022-10-20T03:00,40.1,50,22.7,0,0,4.5,7.2 -2022-10-20T04:00,39.3,50,22.2,0,0,4.6,6.9 -2022-10-20T05:00,41,48,22.9,0,0,6,7.6 -2022-10-20T06:00,39.9,49,22.4,0,0,8.2,9.6 -2022-10-20T07:00,44,40,21.4,0,0,6.6,10.1 -2022-10-20T08:00,55.3,25,19.9,0,0,3.8,7.8 -2022-10-20T09:00,63.4,18,18.9,0,0,2.8,8.3 -2022-10-20T10:00,70,13,17.6,0,0,2.6,9.4 -2022-10-20T11:00,74.6,7,6.2,0,0,3.2,10.3 -2022-10-20T12:00,76.6,6,3.1,0,0,5.9,13.6 -2022-10-20T13:00,77.7,6,3.8,0,0,6.5,15 -2022-10-20T14:00,78.9,5,3.9,0,0,5.2,14.8 -2022-10-20T15:00,79.3,5,2,0,0,2.5,12.5 -2022-10-20T16:00,77.8,5,2.9,0,0,3,7.8 -2022-10-20T17:00,67.6,12,12.3,0,0,7,8.1 -2022-10-20T18:00,62.6,16,15.7,0,0,6,9.4 -2022-10-20T19:00,58.7,20,17.9,0,0,4.6,8.9 -2022-10-20T20:00,52.6,25,18.1,0,0,5.2,7.2 -2022-10-20T21:00,50.1,29,19.3,0,0,5.1,6.9 -2022-10-20T22:00,47.7,33,19.8,0,0,4.7,6.7 -2022-10-20T23:00,45.5,38,21.5,0,0,5.2,6.7 -2022-10-21T00:00,45.1,39,21.6,0,0,4.6,7.2 -2022-10-21T01:00,44.2,40,21.3,0,0,4.6,7.2 -2022-10-21T02:00,45.2,38,20.8,0,0,5.3,8.1 -2022-10-21T03:00,45.7,36,20,0,0,5.6,8.5 -2022-10-21T04:00,44.5,36,19.3,0,0,5.7,8.5 -2022-10-21T05:00,47.9,32,19.6,0,0,5.2,7.8 -2022-10-21T06:00,46.3,33,18.9,0,0,5.8,6.9 -2022-10-21T07:00,47.2,31,17.9,0,0,4.7,8.5 -2022-10-21T08:00,55.5,22,17,0,0,8.8,14.1 -2022-10-21T09:00,64.8,15,16.2,0,0,11.1,18.8 -2022-10-21T10:00,69.7,13,16.2,0,0,7.4,20.1 -2022-10-21T11:00,73.2,11,15.4,0,0,3.4,15.4 -2022-10-21T12:00,75.8,8,11.3,0,0,8.6,17.7 -2022-10-21T13:00,76.4,8,11.2,0,0,10.1,19.9 -2022-10-21T14:00,76.6,8,10.9,0,0,9,19.9 -2022-10-21T15:00,76,8,11.7,0,0,8.3,18.1 -2022-10-21T16:00,73.8,9,11.8,0,0,9,16.1 -2022-10-21T17:00,66,12,12.2,0,0,5.3,15.2 -2022-10-21T18:00,62.5,15,14.1,0,0,8.6,13.4 -2022-10-21T19:00,60,18,16,0,0,8.5,15.4 -2022-10-21T20:00,55.7,22,17.7,0,0,6,13.9 -2022-10-21T21:00,53,27,19.5,0,0,6.4,9.8 -2022-10-21T22:00,52.3,28,20.1,0,0,6.5,10.7 -2022-10-21T23:00,52.5,28,20,0,0,9.6,14.5 -2022-10-22T00:00,53.3,25,18.6,0,0,12.6,20.1 -2022-10-22T01:00,52.4,27,19.2,0,0,9.3,19.9 -2022-10-22T02:00,50,30,20,0,0,8.6,14.8 -2022-10-22T03:00,48.6,33,20.5,0,0,9.7,15 -2022-10-22T04:00,47.9,34,20.8,0,0,9.4,15.4 -2022-10-22T05:00,49.3,32,20.6,0,0,10.1,15 -2022-10-22T06:00,48.7,33,20.8,0,0,8.1,15.7 -2022-10-22T07:00,50.4,32,21.4,0,0,5.9,12.5 -2022-10-22T08:00,58,25,22,0,0,7.2,12.1 -2022-10-22T09:00,64.7,20,22.3,0,0,8.3,15.4 -2022-10-22T10:00,67.9,16,20.1,0,0,7.7,16.6 -2022-10-22T11:00,69.9,14,18.4,0,0,7.2,16.3 -2022-10-22T12:00,70.9,15,20.2,0,0,6.1,16.1 -2022-10-22T13:00,72.6,14,19.9,0,0,6.8,15.2 -2022-10-22T14:00,74.2,12,18.8,0,0,9.2,18.1 -2022-10-22T15:00,75.1,11,17.5,0,0,9.2,18.3 -2022-10-22T16:00,74.4,10,15.2,0,0,6.7,17 -2022-10-22T17:00,65.7,12,11.7,0,0,6.2,11.6 -2022-10-22T18:00,64.4,13,11.7,0,0,2.8,6.9 -2022-10-22T19:00,56.8,19,14.6,0,0,5.8,8.1 -2022-10-22T20:00,56.8,21,17.2,0,0,7.9,12.3 -2022-10-22T21:00,60.7,19,18.1,0,0,11.5,17.9 -2022-10-22T22:00,56.6,24,19.9,0,0,9.2,18.8 -2022-10-22T23:00,52.8,26,18.8,0,0,7.8,14.5 -2022-10-23T00:00,52.8,30,22.2,0,0,8.1,12.5 -2022-10-23T01:00,53.3,31,23.8,0,0,9.5,15.7 -2022-10-23T02:00,50.9,35,24.3,0,0,9.7,15.4 -2022-10-23T03:00,49.4,38,24.7,0,0,10.3,16.3 -2022-10-23T04:00,48.9,38,24.7,0,0,11.2,18.1 -2022-10-23T05:00,49.2,40,25.7,0,0,9.1,17.7 -2022-10-23T06:00,50.6,39,26.7,0,0,11.8,17.9 -2022-10-23T07:00,53.2,38,28.2,0,0,12.6,20.1 -2022-10-23T08:00,58.6,35,30.7,0,0,9.2,19.7 -2022-10-23T09:00,62.1,33,32.9,0,0,7.3,15 -2022-10-23T10:00,66.7,20,24.1,0,0,9.4,17 -2022-10-23T11:00,68.6,17,22.5,0,0,13.1,25.9 -2022-10-23T12:00,68,18,23.4,0,0,10,24.8 -2022-10-23T13:00,65.4,22,25.6,0,0,19.4,33.6 -2022-10-23T14:00,61.6,28,28.2,0,0,12.4,34.4 -2022-10-23T15:00,57.5,45,36.2,0,0,11.9,24.4 -2022-10-23T16:00,55.9,49,37.1,0,0,10.7,21.9 -2022-10-23T17:00,53.2,26,18.9,0.063,0.055,11,38 -2022-10-23T18:00,41.1,96,39.9,0.02,0,15.1,28.2 -2022-10-23T19:00,43,80,37.1,0,0,8.9,24.6 -2022-10-23T20:00,40,81,34.5,0.051,0.248,6.8,18.6 -2022-10-23T21:00,38,88,34.8,0.043,0.358,5,11.6 -2022-10-23T22:00,38.1,83,33.5,0.004,0,4.5,9.6 -2022-10-23T23:00,38.1,82,33.2,0,0,4.3,7.4 -2022-10-24T00:00,36.5,92,34.3,0,0,4.1,7.4 -2022-10-24T01:00,34.9,94,33.4,0,0,4.5,6.9 -2022-10-24T02:00,35.6,61,23.6,0,0,4.9,8.1 -2022-10-24T03:00,36.4,38,13.3,0,0,9.3,14.3 -2022-10-24T04:00,35.6,38,12.7,0,0,9.8,16.6 -2022-10-24T05:00,36.8,33,10.1,0,0,11.2,15.9 -2022-10-24T06:00,35.2,35,10,0,0,7.9,18.6 -2022-10-24T07:00,35.4,34,9.6,0,0,6.3,12.8 -2022-10-24T08:00,39.1,27,8.2,0,0,5.3,11.6 -2022-10-24T09:00,42.6,23,7.4,0,0,7.6,15 -2022-10-24T10:00,45.1,21,7.4,0,0,7.7,18.1 -2022-10-24T11:00,46.9,20,8.3,0,0,5.9,16.8 -2022-10-24T12:00,49.2,17,5.7,0,0,5.2,14.8 -2022-10-24T13:00,50.5,15,4.8,0,0,5.3,14.8 -2022-10-24T14:00,51.5,14,4.4,0,0,9.3,18.3 -2022-10-24T15:00,49.6,19,8.5,0,0,16.1,27.5 -2022-10-24T16:00,47,23,10.7,0,0,18.2,30.9 -2022-10-24T17:00,43.4,29,13.3,0,0,17.8,30.4 -2022-10-24T18:00,42,31,13.3,0,0,18.4,29.8 -2022-10-24T19:00,41.4,31,13.1,0,0,17.1,29.8 -2022-10-24T20:00,40.3,31,12.2,0,0,18,29.3 -2022-10-24T21:00,39.6,31,11.6,0,0,18.4,29.8 -2022-10-24T22:00,39.6,30,10.3,0,0,16.2,29.3 -2022-10-24T23:00,39.7,29,9.7,0,0,11.4,25.7 -2022-10-25T00:00,39.4,29,9.7,0,0,7.6,18.3 -2022-10-25T01:00,38.8,30,10,0,0,5.9,12.5 -2022-10-25T02:00,41,28,10.7,0,0,4.5,9.6 -2022-10-25T03:00,35,37,11.2,0,0,4.3,5.6 -2022-10-25T04:00,36,35,10.7,0,0,4.1,6.9 -2022-10-25T05:00,35.5,38,12.4,0,0,5.1,7.8 -2022-10-25T06:00,35.2,41,14,0,0,4.6,8.3 -2022-10-25T07:00,36.1,43,15.9,0,0,3.7,7.2 -2022-10-25T08:00,43.4,36,18.1,0,0,5.3,9.4 -2022-10-25T09:00,50.4,28,18.6,0,0,7.4,14.1 -2022-10-25T10:00,53.7,25,19,0,0,3.2,14.1 -2022-10-25T11:00,56.1,24,20.1,0,0,4.6,12.3 -2022-10-25T12:00,58.5,22,20.1,0,0,3.4,12.3 -2022-10-25T13:00,60.8,21,20.3,0,0,5,12.3 -2022-10-25T14:00,61.5,20,20.1,0,0,5.8,13 -2022-10-25T15:00,61.5,20,19.9,0,0,6,13.4 -2022-10-25T16:00,58.8,22,20,0,0,9.5,15.4 -2022-10-25T17:00,52.5,33,23.9,0,0,4.2,21.5 -2022-10-25T18:00,48.7,38,24.2,0,0,4,6.7 -2022-10-25T19:00,48.5,39,24.6,0,0,3.7,7.2 -2022-10-25T20:00,48,42,25.9,0,0,4.4,7.4 -2022-10-25T21:00,47.1,47,28,0.004,0,3,7.2 -2022-10-25T22:00,45.5,48,27.1,0,0,4,4.3 -2022-10-25T23:00,45.7,43,24.4,0,0,6.1,8.7 -2022-10-26T00:00,40.8,50,23.5,0,0,4.6,9.4 -2022-10-26T01:00,41.8,50,24.4,0,0,4.9,7.6 -2022-10-26T02:00,41.3,52,24.9,0,0,6.2,9.8 -2022-10-26T03:00,41,52,24.8,0,0,6.4,10.5 -2022-10-26T04:00,41,53,25.2,0,0,6.4,10.5 -2022-10-26T05:00,42.3,48,24.1,0,0,4.6,10.3 -2022-10-26T06:00,42,50,24.6,0,0,4.7,8.9 -2022-10-26T07:00,42.6,49,24.8,0,0,2.6,7.6 -2022-10-26T08:00,44.8,44,24.4,0,0,2.1,5.8 -2022-10-26T09:00,46.4,42,24.7,0,0,6.5,13.2 -2022-10-26T10:00,48.1,41,25.3,0,0,7.6,16.6 -2022-10-26T11:00,50,39,26,0,0,4,16.6 -2022-10-26T12:00,52.7,36,26.6,0,0,2.7,12.1 -2022-10-26T13:00,55.2,33,26.3,0,0,7.9,17.2 -2022-10-26T14:00,57.2,30,26,0,0,6.6,17.4 -2022-10-26T15:00,57.1,29,25.3,0,0,6.9,15 -2022-10-26T16:00,55.9,30,24.8,0,0,6.8,14.3 -2022-10-26T17:00,51.6,38,26.6,0,0,5.2,12.5 -2022-10-26T18:00,48.4,50,30.5,0,0,6.1,10.3 -2022-10-26T19:00,46.4,58,32.4,0,0,5.1,10.1 -2022-10-26T20:00,43.2,65,32,0,0,3.6,8.9 -2022-10-26T21:00,41.6,70,32.5,0,0,5.5,8.9 -2022-10-26T22:00,39.7,75,32.5,0,0,2.9,9.6 -2022-10-26T23:00,39.8,77,33.4,0,0,2.7,5.6 -2022-10-27T00:00,39.3,81,33.9,0,0,5.2,8.9 -2022-10-27T01:00,38.2,90,35.4,0.008,0,2.9,8.9 -2022-10-27T02:00,37.3,96,36.3,0.063,0.413,6.9,11.9 -2022-10-27T03:00,38,87,34.5,0.004,0,3.7,11.2 -2022-10-27T04:00,36.7,87,33.3,0.008,0.028,3.4,6.3 -2022-10-27T05:00,36.1,94,34.7,0,0,7.7,6.7 -2022-10-27T06:00,36.6,89,33.6,0.004,0,5,11.6 -2022-10-27T07:00,36.1,89,33.3,0.008,0,8.3,12.3 -2022-10-27T08:00,35.5,91,33.3,0.008,0.11,9.9,17.2 -2022-10-27T09:00,35.5,94,33.9,0.012,0.11,7.4,17 -2022-10-27T10:00,36,93,34.1,0.016,0.055,5,13 -2022-10-27T11:00,36.6,90,33.8,0.016,0.083,4.5,9.8 -2022-10-27T12:00,37.8,83,33.1,0.016,0,7.8,13 -2022-10-27T13:00,41.7,68,31.8,0,0,6.4,15.2 -2022-10-27T14:00,47.1,41,24.5,0,0,6.1,13.6 -2022-10-27T15:00,51.2,27,18.5,0,0,9,15.9 -2022-10-27T16:00,49.1,28,17.6,0,0,11.9,21.5 -2022-10-27T17:00,42.3,44,21.9,0,0,3.6,18.8 -2022-10-27T18:00,38.2,56,23.7,0,0,6.3,10.1 -2022-10-27T19:00,35,65,24.4,0,0,6.3,10.3 -2022-10-27T20:00,33.3,68,23.7,0,0,6.5,10.5 -2022-10-27T21:00,32,70,23.3,0,0,4.1,10.3 -2022-10-27T22:00,30.8,71,22.5,0,0,4,6.7 -2022-10-27T23:00,29.4,70,20.9,0,0,3.8,6.3 -2022-10-28T00:00,27.4,70,19,0,0,4.3,6.9 -2022-10-28T01:00,25.9,70,17.3,0,0,5,7.8 -2022-10-28T02:00,25.1,69,16.3,0,0,5.1,8.5 -2022-10-28T03:00,25,68,15.8,0,0,4.2,8.5 -2022-10-28T04:00,24.6,69,15.9,0,0,3.5,6.7 -2022-10-28T05:00,24.1,72,16.3,0,0,3.4,5.6 -2022-10-28T06:00,24.2,71,16.1,0,0,3.4,5.6 -2022-10-28T07:00,25.7,65,15.5,0,0,4.6,6.7 -2022-10-28T08:00,31.7,52,16,0,0,3.7,8.9 -2022-10-28T09:00,39.8,38,16.3,0,0,2.1,8.5 -2022-10-28T10:00,46.9,26,13.5,0,0,2.9,9.6 -2022-10-28T11:00,52.4,20,12.7,0,0,2.7,10.5 -2022-10-28T12:00,56.3,16,11,0,0,1.7,10.1 -2022-10-28T13:00,58.5,14,9,0,0,0.4,9.2 -2022-10-28T14:00,59.4,13,9.1,0,0,3.5,10.1 -2022-10-28T15:00,58.9,14,10.1,0,0,6.2,12.5 -2022-10-28T16:00,56,17,12,0,0,8.2,14.1 -2022-10-28T17:00,47.8,32,19.4,0,0,4.3,13 -2022-10-28T18:00,50.1,29,19.1,0,0,0.4,5.1 -2022-10-28T19:00,41,43,20.1,0,0,5.1,6 -2022-10-28T20:00,36.8,55,22.1,0,0,2.4,6 -2022-10-28T21:00,34.1,62,22.5,0,0,3.3,5.1 -2022-10-28T22:00,32.1,62,20.7,0,0,3.7,6 -2022-10-28T23:00,30.7,63,19.5,0,0,3.7,6.5 -2022-10-29T00:00,29.2,64,18.5,0,0,4.8,5.8 -2022-10-29T01:00,28.7,62,17.2,0,0,5.5,6.7 -2022-10-29T02:00,28.9,59,16.3,0,0,4.6,6.5 -2022-10-29T03:00,27.4,61,15.8,0,0,6,6.7 -2022-10-29T04:00,27.7,59,15.1,0,0,6.2,7.4 -2022-10-29T05:00,27.9,60,15.8,0,0,7.1,8.1 -2022-10-29T06:00,27.8,60,15.7,0,0,6.8,8.3 -2022-10-29T07:00,30.5,55,16.2,0,0,4,8.1 -2022-10-29T08:00,36.4,45,17,0,0,4,8.5 -2022-10-29T09:00,45.4,34,18.5,0,0,3.2,8.9 -2022-10-29T10:00,52.5,21,14.2,0,0,2.7,9.2 -2022-10-29T11:00,55.9,16,10.5,0,0,3.6,11 -2022-10-29T12:00,58.2,14,8.7,0,0,4.9,12.5 -2022-10-29T13:00,59.1,12,6.4,0,0,6.3,14.1 -2022-10-29T14:00,58.7,12,6.4,0,0,6.2,14.3 -2022-10-29T15:00,57.7,13,7.7,0,0,6.2,13.6 -2022-10-29T16:00,55.7,16,9.9,0,0,4.9,12.3 -2022-10-29T17:00,50.9,22,13.4,0,0,4,7.4 -2022-10-29T18:00,51.9,21,13.2,0,0,2.7,5.1 -2022-10-29T19:00,42,34,15.4,0,0,4.8,5.4 -2022-10-29T20:00,38.1,48,20,0,0,4,6.7 -2022-10-29T21:00,34.5,61,22.3,0,0,3.9,6.9 -2022-10-29T22:00,33.9,60,21.5,0,0,3.4,6.7 -2022-10-29T23:00,32.3,63,21.2,0,0,3.6,5.1 -2022-10-30T00:00,30.2,68,21,0,0,3.2,5.8 -2022-10-30T01:00,29.5,71,21.4,0,0,4.7,5.6 -2022-10-30T02:00,31.9,62,20.4,0,0,3.4,5.8 -2022-10-30T03:00,28.4,71,20.1,0,0,3.4,4.5 -2022-10-30T04:00,27.2,74,19.9,0,0,2.7,4.5 -2022-10-30T05:00,28.6,75,21.6,0,0,2.1,4.3 -2022-10-30T06:00,28.7,75,21.7,0,0,1.4,3.6 -2022-10-30T07:00,29.5,73,21.9,0,0,2.8,4.9 -2022-10-30T08:00,35.3,60,22.9,0,0,3.2,7.2 -2022-10-30T09:00,45,36,19.9,0,0,1.4,7.8 -2022-10-30T10:00,50.6,26,16.9,0,0,1.7,7.8 -2022-10-30T11:00,54.1,22,15.8,0,0,3,10.3 -2022-10-30T12:00,56.4,19,14.4,0,0,3,10.5 -2022-10-30T13:00,57.2,19,15.4,0,0,2.9,10.5 -2022-10-30T14:00,57,18,14,0,0,3,9.8 -2022-10-30T15:00,56.8,19,14.7,0,0,2.7,8.9 -2022-10-30T16:00,55.2,22,16.6,0,0,4.8,8.1 -2022-10-30T17:00,53,23,16.2,0,0,3.8,8.7 -2022-10-30T18:00,49.2,32,20.4,0,0,3.6,6.3 -2022-10-30T19:00,43.4,41,21.2,0,0,3.9,6.5 -2022-10-30T20:00,39.6,53,23.7,0,0,5.3,8.3 -2022-10-30T21:00,38,54,22.8,0,0,7.9,12.8 -2022-10-30T22:00,39,49,21.5,0,0,5.9,12.8 -2022-10-30T23:00,37.9,49,20.6,0,0,4.9,9.6 -2022-10-31T00:00,36.2,51,19.7,0,0,5.9,7.6 -2022-10-31T01:00,35.2,51,18.8,0,0,5.8,8.1 -2022-10-31T02:00,34.9,50,18.1,0,0,4.8,7.6 -2022-10-31T03:00,34,51,17.7,0,0,5.3,8.1 -2022-10-31T04:00,33.4,51,17.2,0,0,5.3,8.3 -2022-10-31T05:00,32.2,55,17.7,0,0,5.3,8.3 -2022-10-31T06:00,31.4,55,16.9,0,0,6.7,8.3 -2022-10-31T07:00,34.2,48,16.5,0,0,4.8,8.3 -2022-10-31T08:00,42.7,36,17.4,0,0,5.1,9.4 -2022-10-31T09:00,50.4,27,17.6,0,0,5.7,11.9 -2022-10-31T10:00,56.7,20,16,0,0,4.4,12.1 -2022-10-31T11:00,60.7,16,14.9,0,0,3,11.4 -2022-10-31T12:00,63.3,14,13,0,0,1.7,10.1 -2022-10-31T13:00,64.7,14,13.6,0,0,1.8,8.7 -2022-10-31T14:00,65.2,15,16.3,0,0,5.8,13 -2022-10-31T15:00,64.5,16,16.6,0,0,8.1,15.4 -2022-10-31T16:00,62.3,17,16.3,0,0,7,15.4 -2022-10-31T17:00,54.2,24,18.3,0,0,6.7,11 -2022-10-31T18:00,53.4,28,21.3,0,0,7.8,10.7 -2022-10-31T19:00,51.7,31,22,0,0,9.4,16.6 -2022-10-31T20:00,49.7,33,22,0,0,8.9,15.4 -2022-10-31T21:00,47,37,22.3,0,0,6.3,14.1 -2022-10-31T22:00,44.2,41,22.2,0,0,5.7,10.1 -2022-10-31T23:00,41.7,47,22.7,0,0,5.2,9.2 -2022-11-01T00:00,39.3,53,23.5,0,0,4.3,8.5 -2022-11-01T01:00,37.3,58,23.9,0,0,5.1,6.7 -2022-11-01T02:00,36.4,61,24.1,0,0,4.4,6.7 -2022-11-01T03:00,34.5,65,24.1,0,0,5.5,6.7 -2022-11-01T04:00,33.4,68,24.2,0,0,5.6,6.9 -2022-11-01T05:00,33.9,65,23.3,0,0,4.7,6.7 -2022-11-01T06:00,33.1,66,22.9,0,0,4.5,6.5 -2022-11-01T07:00,34.7,60,22.4,0,0,3.7,6.5 -2022-11-01T08:00,41.3,47,22.4,0,0,4.5,8.7 -2022-11-01T09:00,50.5,33,22.5,0,0,4.8,10.5 -2022-11-01T10:00,59.1,23,21.5,0,0,5.4,12.5 -2022-11-01T11:00,64.9,17,18.6,0,0,5.9,13.2 -2022-11-01T12:00,67.7,15,18.2,0,0,4.6,13.4 -2022-11-01T13:00,69.7,14,18.5,0,0,2.4,12.1 -2022-11-01T14:00,70.4,13,17.8,0,0,0.3,9.2 -2022-11-01T15:00,70.5,13,17.1,0,0,2.2,6.9 -2022-11-01T16:00,67.5,16,20.1,0,0,7.7,12.3 -2022-11-01T17:00,57.5,29,25.1,0,0,8.2,13.2 -2022-11-01T18:00,61.7,24,25,0,0,4.1,9.6 -2022-11-01T19:00,54.1,34,26.4,0,0,4.1,4.9 -2022-11-01T20:00,47.8,46,28,0,0,3.7,7.2 -2022-11-01T21:00,44.4,54,28.9,0,0,3.6,6 -2022-11-01T22:00,44.1,54,28.6,0,0,4,6 -2022-11-01T23:00,43.6,49,25.6,0,0,5.6,8.5 -2022-11-02T00:00,44.5,42,22.6,0,0,7.1,11.2 -2022-11-02T01:00,45.8,37,20.8,0,0,7.4,12.1 -2022-11-02T02:00,47.8,33,19.9,0,0,8.4,13.4 -2022-11-02T03:00,46.6,34,19.9,0,0,7.8,13.4 -2022-11-02T04:00,42.9,39,19.7,0,0,6.4,12.3 -2022-11-02T05:00,42.8,41,20.5,0,0,9.3,10.3 -2022-11-02T06:00,43.3,39,20.2,0,0,7.6,15.2 -2022-11-02T07:00,40.6,45,20.8,0,0,3.7,12.3 -2022-11-02T08:00,46.9,38,22.6,0,0,4.3,7.8 -2022-11-02T09:00,55.5,27,21.7,0,0,3.4,7.8 -2022-11-02T10:00,60.9,21,20.5,0,0,3.9,9.8 -2022-11-02T11:00,64.3,17,17.9,0,0,3.7,10.7 -2022-11-02T12:00,66.5,15,16.9,0,0,5.2,12.5 -2022-11-02T13:00,68,13,15.2,0,0,5.2,13.4 -2022-11-02T14:00,68.5,11,12.2,0,0,4.7,12.8 -2022-11-02T15:00,69,11,12.5,0,0,6.6,12.8 -2022-11-02T16:00,66.9,12,13.5,0,0,2.7,12.5 -2022-11-02T17:00,58.6,22,19.7,0,0,5.7,10.1 -2022-11-02T18:00,53.1,28,20.6,0,0,5.4,9.4 -2022-11-02T19:00,47.1,38,22.6,0,0,5.3,8.9 -2022-11-02T20:00,47.1,36,21.8,0,0,5.6,8.5 -2022-11-02T21:00,47.5,32,18.8,0,0,8.9,13.6 -2022-11-02T22:00,44.7,35,18.6,0,0,10,16.6 -2022-11-02T23:00,42.6,37,18,0,0,8.9,15.9 -2022-11-03T00:00,42.3,37,18,0,0,8.8,14.1 -2022-11-03T01:00,41.9,38,18.4,0,0,8.1,15 -2022-11-03T02:00,40,44,19.8,0,0,6.5,13.2 -2022-11-03T03:00,39.2,47,20.8,0,0,6.5,11 -2022-11-03T04:00,37.9,51,21.4,0,0,6.2,10.7 -2022-11-03T05:00,36.3,57,22.7,0,0,13,10.3 -2022-11-03T06:00,35.8,57,21.9,0,0,6.1,20.4 -2022-11-03T07:00,35.2,62,23.4,0,0,8.5,13.4 -2022-11-03T08:00,37.1,62,25.2,0,0,7.9,14.5 -2022-11-03T09:00,39.4,55,24.6,0,0,6.5,15 -2022-11-03T10:00,40.4,52,24,0,0,6,14.3 -2022-11-03T11:00,40.3,51,23.4,0,0,7.7,15.9 -2022-11-03T12:00,42.5,45,22.6,0,0,7.2,16.6 -2022-11-03T13:00,41.6,46,22.5,0,0,7.7,15.9 -2022-11-03T14:00,42.6,44,22.4,0,0,8.8,17.4 -2022-11-03T15:00,40.7,47,22.1,0,0,9,17 -2022-11-03T16:00,39.8,47,21.5,0,0,6.9,16.3 -2022-11-03T17:00,33.1,80,27.6,0,0.028,9.4,14.8 -2022-11-03T18:00,32.2,83,27.5,0,0.11,10,17.9 -2022-11-03T19:00,31.8,77,25.3,0,0.138,9.1,17.2 -2022-11-03T20:00,30.8,76,24.1,0,0.083,7.1,15.7 -2022-11-03T21:00,30.6,76,23.8,0,0.055,6.1,13 -2022-11-03T22:00,30,76,23.5,0,0,5.1,11 -2022-11-03T23:00,29.6,78,23.5,0,0,4.2,9.6 -2022-11-04T00:00,28.4,83,23.8,0,0.028,3.5,8.5 -2022-11-04T01:00,28.6,81,23.5,0,0,4,7.6 -2022-11-04T02:00,28.7,80,23.2,0,0,4.2,8.3 -2022-11-04T03:00,28.7,79,23,0,0.028,3.9,8.7 -2022-11-04T04:00,28.5,76,22,0,0,3.4,7.6 -2022-11-04T05:00,28,78,22,0,0,1.9,7.2 -2022-11-04T06:00,27.9,77,21.6,0,0,1.1,4.5 -2022-11-04T07:00,27.5,79,21.8,0,0,3.5,7.2 -2022-11-04T08:00,28.5,75,21.7,0,0,2.9,7.8 -2022-11-04T09:00,31.7,65,21.2,0,0,3.3,9.6 -2022-11-04T10:00,36.1,51,19.8,0,0,4.7,12.3 -2022-11-04T11:00,39.7,39,16.9,0,0,4.4,13.2 -2022-11-04T12:00,42.6,34,16.4,0,0,4.1,13 -2022-11-04T13:00,45.4,24,10.5,0,0,3.8,12.3 -2022-11-04T14:00,46.5,14,-0.9,0,0,12.8,23 -2022-11-04T15:00,45.2,17,2.3,0,0,10.5,24.2 -2022-11-04T16:00,43.8,19,4.1,0,0,5.7,19 -2022-11-04T17:00,37.5,28,7.4,0,0,6.7,10.1 -2022-11-04T18:00,36.1,32,9.1,0,0,11,17.4 -2022-11-04T19:00,35.8,34,10.4,0,0,9.3,17.7 -2022-11-04T20:00,38.1,33,11.2,0,0,4.1,14.5 -2022-11-04T21:00,34.6,38,11.8,0,0,6.4,10.5 -2022-11-04T22:00,34.2,39,11.8,0,0,7.7,13 -2022-11-04T23:00,32.5,42,12.2,0,0,11.2,15.9 -2022-11-05T00:00,31.2,46,13,0,0,10.6,17.9 -2022-11-05T01:00,31.8,47,14.1,0,0,10.5,15.4 -2022-11-05T02:00,31.1,50,14.8,0,0,9.7,15.2 -2022-11-05T03:00,31.6,52,16,0,0,5.8,14.1 -2022-11-05T04:00,35.2,48,17.5,0,0,4.5,9.2 -2022-11-05T05:00,38.2,46,19,0,0,4.6,6.5 -2022-11-05T06:00,39.2,48,21,0,0,3.5,6.3 -2022-11-05T07:00,36.5,55,21.8,0,0,4,5.1 -2022-11-05T08:00,40.6,46,21.6,0,0,4.2,8.1 -2022-11-05T09:00,45.1,39,21.8,0,0,1.7,7.2 -2022-11-05T10:00,50.3,32,21.8,0,0,8.4,13.4 -2022-11-05T11:00,55,26,20.5,0,0,14.1,22.8 -2022-11-05T12:00,56.9,25,21,0,0,13.3,24.6 -2022-11-05T13:00,57.4,24,21.2,0,0,3.4,22.8 -2022-11-05T14:00,58,24,21.2,0,0,6.8,14.3 -2022-11-05T15:00,58.3,24,21.2,0,0,12,20.8 -2022-11-05T16:00,56.5,26,22.1,0,0,14.1,24.6 -2022-11-05T17:00,49,33,21.5,0,0,7.7,22.6 -2022-11-05T18:00,49.9,35,23.5,0,0,3.8,9.2 -2022-11-05T19:00,48.4,40,24.9,0,0,3.2,6 -2022-11-05T20:00,45.7,46,25.9,0,0,3.5,5.6 -2022-11-05T21:00,43,54,27.3,0,0,4,6.9 -2022-11-05T22:00,40.7,61,28.1,0,0,2.7,6.7 -2022-11-05T23:00,38.2,67,28.1,0,0,3.5,4.5 -2022-11-06T00:00,37.5,69,28.4,0,0,2.6,4.7 -2022-11-06T01:00,36.7,72,28.4,0,0,2.4,4.5 -2022-11-06T02:00,37.1,70,28.4,0,0,1.9,3.4 -2022-11-06T03:00,37.9,66,27.7,0,0,0.8,5.6 -2022-11-06T04:00,33.4,78,27.2,0,0,6,6.9 -2022-11-06T05:00,36.4,69,27.1,0,0,4.2,6.9 -2022-11-06T06:00,37.8,64,26.8,0,0,2.9,4.9 -2022-11-06T07:00,37.3,65,26.7,0,0,3.4,4.9 -2022-11-06T08:00,39.7,58,26.3,0,0,3.9,6.9 -2022-11-06T09:00,41,53,25.2,0,0,5.1,9.4 -2022-11-06T10:00,42.5,42,21,0,0,6.5,11.9 -2022-11-06T11:00,46,28,15,0,0,8.9,16.6 -2022-11-06T12:00,46.7,27,14.5,0,0,11.6,20.8 -2022-11-06T13:00,46.2,27,14.1,0,0,9.6,20.8 -2022-11-06T14:00,46.9,25,13.2,0,0,12,20.4 -2022-11-06T15:00,45.1,26,12.6,0,0,13.9,23 -2022-11-06T16:00,43.3,29,13.2,0,0,10.8,22.8 -2022-11-06T17:00,44,38,19.8,0,0,5.1,17.7 -2022-11-06T18:00,43.1,37,18.5,0,0,4.3,8.9 -2022-11-06T19:00,37.6,46,18.4,0,0,4.5,6.5 -2022-11-06T20:00,36.3,54,21.3,0,0,3.6,5.8 -2022-11-06T21:00,37.9,51,21.2,0,0,2.7,5.8 -2022-11-06T22:00,38.8,46,19.6,0,0,0.8,4.9 -2022-11-06T23:00,34.2,58,20.8,0,0,6,7.2 -2022-11-07T00:00,34.4,59,21.6,0,0,5.1,8.7 -2022-11-07T01:00,34.7,60,22.4,0,0,6.3,10.1 -2022-11-07T02:00,33.8,65,23.2,0,0,6.3,10.5 -2022-11-07T03:00,32.3,71,23.8,0,0,5.1,10.3 -2022-11-07T04:00,30.4,77,24.1,0,0,4.1,8.3 -2022-11-07T05:00,26.8,78,20.9,0,0,3.8,6.5 -2022-11-07T06:00,27.1,72,19.3,0,0,5.5,8.9 -2022-11-07T07:00,26.2,75,19.4,0,0,6.4,9.4 -2022-11-07T08:00,29.3,67,19.9,0,0,4.5,11.2 -2022-11-07T09:00,33.4,61,21.2,0,0,3.4,9.8 -2022-11-07T10:00,39,51,22.5,0,0,2.5,9.8 -2022-11-07T11:00,46.9,42,24.8,0,0,0.8,9.6 -2022-11-07T12:00,54.2,37,28.8,0,0,5,12.1 -2022-11-07T13:00,58,32,28.6,0,0,8.5,16.3 -2022-11-07T14:00,60.4,29,28,0,0,13,22.6 -2022-11-07T15:00,60.3,29,27.5,0,0,15.5,26.2 -2022-11-07T16:00,57.4,31,27.3,0,0,13.3,26.2 -2022-11-07T17:00,44.9,49,26.7,0,0,4.8,22.4 -2022-11-07T18:00,43.3,52,27,0,0,4,7.4 -2022-11-07T19:00,43.1,53,27,0,0,3.4,4.9 -2022-11-07T20:00,42.2,54,26.8,0,0,1.6,4.3 -2022-11-07T21:00,37.8,66,27.5,0,0,2.3,3.8 -2022-11-07T22:00,38.1,66,27.9,0,0,2.6,3.8 -2022-11-07T23:00,37,67,27.2,0,0,3.7,5.6 -2022-11-08T00:00,37.4,58,24,0,0,6,9.4 -2022-11-08T01:00,40.6,47,22.1,0,0,9.5,14.3 -2022-11-08T02:00,43.3,44,22.8,0,0,12.1,19.2 -2022-11-08T03:00,43.3,45,23.6,0,0,13.1,20.8 -2022-11-08T04:00,41.9,50,24.4,0,0,13.5,21.5 -2022-11-08T05:00,41.3,48,22.9,0,0,10.7,21.7 -2022-11-08T06:00,41.5,47,22.8,0,0,10.8,17.4 -2022-11-08T07:00,41.5,46,22.4,0,0,11.6,18.1 -2022-11-08T08:00,46.8,38,22.6,0,0,13.3,20.6 -2022-11-08T09:00,55.9,28,23.5,0,0,13.2,23.7 -2022-11-08T10:00,62,22,22.9,0,0,15.4,25.7 -2022-11-08T11:00,65.4,19,21.9,0,0,16.8,28.9 -2022-11-08T12:00,67.2,18,22.5,0,0,17.6,30.6 -2022-11-08T13:00,69.2,16,20.8,0,0,16,30.2 -2022-11-08T14:00,69.7,15,19.3,0,0,13.4,27.7 -2022-11-08T15:00,69.4,15,19.3,0,0,11.7,23.5 -2022-11-08T16:00,66.3,16,18.8,0,0,13.2,20.6 -2022-11-08T17:00,63.9,18,19,0,0,2.5,23.3 -2022-11-08T18:00,52.9,28,20.9,0,0,4.5,5.6 -2022-11-08T19:00,47.5,38,23.4,0,0,6.7,7.8 -2022-11-08T20:00,48.7,33,21.1,0,0,7.4,11.2 -2022-11-08T21:00,48.2,31,18.7,0,0,8.6,13.9 -2022-11-08T22:00,44.8,36,19.4,0,0,6.8,13.9 -2022-11-08T23:00,43.3,38,19.6,0,0,7,11.9 -2022-11-09T00:00,40.4,43,19.8,0,0,5.5,11.4 -2022-11-09T01:00,38.1,48,20.4,0,0,5,8.7 -2022-11-09T02:00,36.8,52,20.7,0,0,4.9,9.2 -2022-11-09T03:00,33,62,21.3,0,0,3.6,7.6 -2022-11-09T04:00,32.9,65,22.4,0,0,6,9.4 -2022-11-09T05:00,30,86,26.4,0,0,5,9.4 -2022-11-09T06:00,28.2,95,26.9,0,0,5.3,6.3 -2022-11-09T07:00,29.2,97,28.6,0,0,3,6 -2022-11-09T08:00,29.8,92,27.8,0,0,3.8,9.2 -2022-11-09T09:00,30.7,89,27.8,0,0,6.4,13.4 -2022-11-09T10:00,37.9,65,27,0,0,7.2,15 -2022-11-09T11:00,45.9,47,26.6,0,0,8.7,17.4 -2022-11-09T12:00,52.1,37,26.5,0,0,10.9,20.8 -2022-11-09T13:00,59.8,29,27.3,0,0,5.4,20.6 -2022-11-09T14:00,67.3,11,10.9,0,0,11.6,19.5 -2022-11-09T15:00,68,8,4.2,0,0,19.5,30.9 -2022-11-09T16:00,65.7,10,8.4,0,0,17,32.4 -2022-11-09T17:00,42.3,52,26,0,0,6.8,28.9 -2022-11-09T18:00,39.8,58,26.4,0,0,11.7,18.3 -2022-11-09T19:00,38.3,65,27.5,0,0,9.6,20.8 -2022-11-09T20:00,39.3,67,29.1,0,0,5.9,15 -2022-11-09T21:00,38.9,73,30.9,0,0,7.1,10.5 -2022-11-09T22:00,39.4,76,32.4,0,0,7.5,17 -2022-11-09T23:00,39.7,75,32.4,0.004,0,5.7,11.6 -2022-11-10T00:00,37.2,84,32.7,0,0,9.1,15.4 -2022-11-10T01:00,36.8,85,32.6,0,0,4.1,14.1 -2022-11-10T02:00,35.9,86,32.1,0,0,1.4,6.3 -2022-11-10T03:00,35,82,30.1,0,0,4.2,6.3 -2022-11-10T04:00,32.6,48,15.1,0,0,6.5,11.6 -2022-11-10T05:00,29.7,51,13.9,0,0,4.9,10.7 -2022-11-10T06:00,25.2,64,14.5,0,0,4.9,7.6 -2022-11-10T07:00,27.2,59,14.7,0,0,2.9,6.7 -2022-11-10T08:00,31.2,51,15.3,0,0,4,6.9 -2022-11-10T09:00,39.2,29,9.2,0,0,7.8,13.9 -2022-11-10T10:00,42.7,20,4.7,0,0,5.6,15.9 -2022-11-10T11:00,44.9,19,5.2,0,0,5.4,13.2 -2022-11-10T12:00,46.7,17,4.6,0,0,5.8,14.8 -2022-11-10T13:00,48.1,16,4.2,0,0,2.5,14.1 -2022-11-10T14:00,48.6,16,4.6,0,0,6,13.4 -2022-11-10T15:00,48,18,6,0,0,9.8,17.7 -2022-11-10T16:00,44.9,22,8.4,0,0,18.6,29.5 -2022-11-10T17:00,40.9,28,10.2,0,0,15.4,33.1 -2022-11-10T18:00,34.6,46,15.9,0,0,16.4,28.4 -2022-11-10T19:00,31.5,57,18.1,0,0,7.8,26.4 -2022-11-10T20:00,30.4,60,18.1,0,0,4.3,13.4 -2022-11-10T21:00,30.6,60,18.3,0,0,1,7.4 -2022-11-10T22:00,30.3,61,18.5,0,0,2.1,5.1 -2022-11-10T23:00,28.4,67,18.7,0,0,2.1,4.9 -2022-11-11T00:00,28.2,68,19.1,0,0,3,4.7 -2022-11-11T01:00,27.7,70,19.1,0,0,3.1,5.1 -2022-11-11T02:00,26.6,73,19.1,0,0,3.2,5.1 -2022-11-11T03:00,25.8,74,18.7,0,0,3.8,6.5 -2022-11-11T04:00,23.5,79,18,0,0,3.4,6 -2022-11-11T05:00,23.9,77,17.8,0,0,2.5,8.9 -2022-11-11T06:00,23.5,74,16.4,0,0,3.8,6.3 -2022-11-11T07:00,24.2,68,15.2,0,0,4.1,8.7 -2022-11-11T08:00,25.3,65,15.2,0,0,3.6,8.5 -2022-11-11T09:00,27.1,60,15,0,0,3,8.5 -2022-11-11T10:00,29.8,51,13.8,0,0,3.7,10.7 -2022-11-11T11:00,31.9,43,12.1,0,0,2.3,11 -2022-11-11T12:00,34.3,37,10.6,0,0,1.1,9.8 -2022-11-11T13:00,36.3,32,9.1,0,0,2.9,10.5 -2022-11-11T14:00,37.8,28,7.5,0,0,5,12.3 -2022-11-11T15:00,37.9,27,7.1,0,0,6.3,13.4 -2022-11-11T16:00,36.5,29,7.4,0,0,5.7,13.2 -2022-11-11T17:00,32.2,44,12.6,0,0,3.6,10.3 -2022-11-11T18:00,29.6,51,13.5,0,0,4.7,6 -2022-11-11T19:00,31.8,44,12.4,0,0,2.3,5.6 -2022-11-11T20:00,28.6,51,12.7,0,0,3.1,3.8 -2022-11-11T21:00,24.8,65,14.7,0,0,4.6,5.8 -2022-11-11T22:00,23.4,76,16.8,0,0,4.2,5.8 -2022-11-11T23:00,21.9,82,17.3,0,0,4.1,5.8 -2022-11-12T00:00,21.4,83,17,0,0,3.5,5.4 -2022-11-12T01:00,21.1,81,16.2,0,0,3.1,4.9 -2022-11-12T02:00,20.9,79,15.4,0,0,3.5,5.6 -2022-11-12T03:00,21.3,75,14.5,0,0,3.7,5.6 -2022-11-12T04:00,22,67,12.8,0,0,4,6.3 -2022-11-12T05:00,21.3,69,12.8,0,0,3.9,6.3 -2022-11-12T06:00,23.6,61,12.1,0,0,2.1,4 -2022-11-12T07:00,22,66,12.3,0,0,3.5,4.5 -2022-11-12T08:00,23.5,65,13.4,0,0,2.5,6.5 -2022-11-12T09:00,27.2,55,13,0,0,2.7,8.7 -2022-11-12T10:00,32,39,10,0,0,2.6,9.6 -2022-11-12T11:00,37,28,6.4,0,0,2.7,9.8 -2022-11-12T12:00,40.7,21,4,0,0,3.8,11 -2022-11-12T13:00,43.5,19,3.5,0,0,4.1,11.2 -2022-11-12T14:00,44.9,18,4.1,0,0,4.6,11 -2022-11-12T15:00,44.1,20,5.4,0,0,6.3,11.2 -2022-11-12T16:00,38.2,28,7.6,0,0,6.8,11.4 -2022-11-12T17:00,36.5,36,12.2,0,0,7.4,10.7 -2022-11-12T18:00,34,42,13.4,0,0,4.8,12.1 -2022-11-12T19:00,35,41,13.7,0,0,4.6,8.3 -2022-11-12T20:00,29.9,50,13.7,0,0,4.9,5.6 -2022-11-12T21:00,28,55,14,0,0,5.8,7.4 -2022-11-12T22:00,31.6,47,13.5,0,0,3,7.2 -2022-11-12T23:00,29.6,49,12.9,0,0,2.2,3.8 -2022-11-13T00:00,25.1,57,11.9,0,0,1.6,2.9 -2022-11-13T01:00,23.4,56,10,0,0,2.5,3.4 -2022-11-13T02:00,23.5,52,8.4,0,0,2.1,3.4 -2022-11-13T03:00,25.9,46,7.7,0,0,1.6,2.7 -2022-11-13T04:00,24.8,47,7.5,0,0,1.8,2 -2022-11-13T05:00,21.7,58,9.1,0,0,4.5,3.8 -2022-11-13T06:00,21.7,59,9.7,0,0,4.1,5.8 -2022-11-13T07:00,22.5,56,9.1,0,0,3.4,5.8 -2022-11-13T08:00,29.9,38,7.3,0,0,4.6,8.5 -2022-11-13T09:00,37,24,3.6,0,0,5,10.5 -2022-11-13T10:00,42.9,17,0.9,0,0,6.2,12.8 -2022-11-13T11:00,46.8,14,-0.1,0,0,5.5,13 -2022-11-13T12:00,49.5,14,2.3,0,0,7.1,13.6 -2022-11-13T13:00,49.2,16,5.2,0,0,10.6,18.1 -2022-11-13T14:00,45.8,20,7.3,0,0,12.9,22.1 -2022-11-13T15:00,44.7,21,7.6,0,0,8.9,21.9 -2022-11-13T16:00,42.4,26,9.5,0,0,4.9,15 -2022-11-13T17:00,37.8,33,11.1,0,0,9.2,13.4 -2022-11-13T18:00,35.7,30,7,0,0,10,16.8 -2022-11-13T19:00,33,33,7.1,0,0,9.6,16.3 -2022-11-13T20:00,32.4,34,7,0,0,9.3,15.9 -2022-11-13T21:00,30.2,40,8.6,0,0,8.8,15.4 -2022-11-13T22:00,27.2,51,11.5,0,0,5.7,14.3 -2022-11-13T23:00,27.1,56,13.4,0,0,4.5,9.2 -2022-11-14T00:00,26.9,61,15.3,0,0,5.3,9.4 -2022-11-14T01:00,26.4,65,16.3,0,0,3.6,8.3 -2022-11-14T02:00,26.3,66,16.3,0,0,2.2,5.8 -2022-11-14T03:00,23.9,74,16.7,0,0,3.4,4.7 -2022-11-14T04:00,24.1,73,16.5,0,0,1.8,4.3 -2022-11-14T05:00,21.2,69,12.6,0,0,4.3,3.1 -2022-11-14T06:00,22.9,65,12.8,0,0,2.5,4.9 -2022-11-14T07:00,20.9,70,12.7,0,0,3.1,3.4 -2022-11-14T08:00,24.5,59,12.3,0,0,2.7,6.5 -2022-11-14T09:00,27.6,52,12.1,0,0,3.1,8.7 -2022-11-14T10:00,30.4,44,10.9,0,0,4.2,11 -2022-11-14T11:00,33.2,37,9.6,0,0,2.4,11.4 -2022-11-14T12:00,34.2,32,7.6,0,0,2.1,9.6 -2022-11-14T13:00,35.2,30,7.2,0,0,4.3,11.6 -2022-11-14T14:00,35.4,29,6.6,0,0,5,12.5 -2022-11-14T15:00,35.3,29,6.2,0,0,4.6,12.1 -2022-11-14T16:00,34.3,28,4.6,0,0,4.5,10.7 -2022-11-14T17:00,32.5,36,8.2,0,0,2.1,7.4 -2022-11-14T18:00,31.2,39,8.9,0,0,1.2,2.7 -2022-11-14T19:00,28.2,49,11.7,0,0,1.8,2.5 -2022-11-14T20:00,28.3,58,15.5,0,0.083,0.9,3.1 -2022-11-14T21:00,27.8,63,17,0,0.083,2.1,4.3 -2022-11-14T22:00,27.1,67,17.6,0,0.055,3.5,6 -2022-11-14T23:00,26.9,70,18.2,0,0.055,2,6.3 -2022-11-15T00:00,26,73,18.4,0,0,3,4.3 -2022-11-15T01:00,23.7,81,18.8,0,0,3.7,5.4 -2022-11-15T02:00,23.5,83,19.1,0,0,2.7,6 -2022-11-15T03:00,23.5,82,18.9,0,0.138,2.2,3.8 -2022-11-15T04:00,24.1,83,19.6,0,0.083,1.8,3.8 -2022-11-15T05:00,25.3,79,19.8,0,0.11,4.7,4.5 -2022-11-15T06:00,24.2,81,19.3,0,0.055,3.2,7.6 -2022-11-15T07:00,24.7,77,18.4,0,0.055,3.7,6.7 -2022-11-15T08:00,25.9,71,17.9,0,0.028,3.9,8.1 -2022-11-15T09:00,28,64,17.3,0,0,2.7,9.2 -2022-11-15T10:00,29.8,50,13.4,0,0,0.2,8.7 -2022-11-15T11:00,31,44,11.5,0,0,1.8,8.7 -2022-11-15T12:00,33.4,38,10.7,0,0,5.1,13 -2022-11-15T13:00,35,30,6.7,0,0,5.2,13.2 -2022-11-15T14:00,34.6,29,5.5,0,0,7.9,16.1 -2022-11-15T15:00,33.9,32,6.8,0,0,7.1,16.1 -2022-11-15T16:00,32.8,30,4.7,0,0,4,14.1 -2022-11-15T17:00,27.3,42,7.3,0,0,3,6.9 -2022-11-15T18:00,26.5,49,9.9,0,0,4.2,6.7 -2022-11-15T19:00,24.6,51,8.9,0,0,5.5,8.5 -2022-11-15T20:00,25.2,38,3.3,0,0,8.5,13 -2022-11-15T21:00,25.4,36,2,0,0,9.5,15.2 -2022-11-15T22:00,24.9,37,2.3,0,0,7.2,15.2 -2022-11-15T23:00,21.7,43,2.5,0,0,7.2,11.4 -2022-11-16T00:00,21.6,42,2.2,0,0,7.1,8.5 -2022-11-16T01:00,22.6,39,1.3,0,0,5.9,8.7 -2022-11-16T02:00,21.6,38,0.1,0,0,6.1,8.3 -2022-11-16T03:00,23,36,-0.2,0,0,5.1,8.1 -2022-11-16T04:00,24.4,35,0.8,0,0,5.4,8.5 -2022-11-16T05:00,24.3,37,1.7,0,0,5.8,8.3 -2022-11-16T06:00,24.9,38,2.6,0,0,5,8.3 -2022-11-16T07:00,23.6,41,3.4,0,0,6.9,8.3 -2022-11-16T08:00,29.5,33,3.9,0,0,2.7,8.3 -2022-11-16T09:00,33.3,28,3.4,0,0,2.6,7.4 -2022-11-16T10:00,36.1,24,2.7,0,0,4.8,11.2 -2022-11-16T11:00,37.9,22,2.5,0,0,5.2,12.8 -2022-11-16T12:00,38.8,22,3.2,0,0,6.5,14.3 -2022-11-16T13:00,39,23,4.1,0,0,8.4,16.3 -2022-11-16T14:00,38.7,24,4.9,0,0,9.2,17.4 -2022-11-16T15:00,38.3,25,5.7,0,0,7.8,17 -2022-11-16T16:00,35.1,35,10.4,0,0,4.1,13.9 -2022-11-16T17:00,31.4,41,10.3,0,0,4.5,5.1 -2022-11-16T18:00,28.4,46,10.2,0,0,6.1,7.4 -2022-11-16T19:00,25.2,54,10.7,0,0,6.1,8.1 -2022-11-16T20:00,23.4,59,11.3,0,0,4.7,7.6 -2022-11-16T21:00,22.8,62,11.8,0,0,3.6,6 -2022-11-16T22:00,22.6,63,12,0,0,3.6,5.1 -2022-11-16T23:00,21.9,65,12.1,0,0,3.4,4.7 -2022-11-17T00:00,21.9,64,11.7,0,0,3,4.5 -2022-11-17T01:00,23.4,59,11,0,0,3.2,4.7 -2022-11-17T02:00,24.6,55,10.9,0,0,2.2,4.3 -2022-11-17T03:00,24.4,55,10.3,0,0,3,4 -2022-11-17T04:00,23.5,55,9.7,0,0,2,4 -2022-11-17T05:00,23.6,52,8.7,0,0,4.3,3.8 -2022-11-17T06:00,22.6,53,7.9,0,0,4.5,6.3 -2022-11-17T07:00,25.1,73,17.8,0,0,8,17 -2022-11-17T08:00,26.2,75,19.5,0,0.11,12.1,19.5 -2022-11-17T09:00,24.3,65,14.1,0,0.055,10.4,20.1 -2022-11-17T10:00,25.2,61,13.6,0,0.028,7.8,17.7 -2022-11-17T11:00,27.1,55,13.3,0,0,7,15.2 -2022-11-17T12:00,27.3,55,13.1,0,0,7.3,15 -2022-11-17T13:00,27.4,54,12.8,0,0,8.1,15.9 -2022-11-17T14:00,27,55,12.7,0,0,8.4,16.1 -2022-11-17T15:00,26.4,56,12.7,0,0,7.9,15.9 -2022-11-17T16:00,24.6,59,12.5,0,0,7.8,14.5 -2022-11-17T17:00,20.7,67,11.6,0,0,6.2,13.2 -2022-11-17T18:00,19.6,72,12.1,0,0.028,7.5,13 -2022-11-17T19:00,18.4,75,11.9,0,0.028,7.9,13.2 -2022-11-17T20:00,18.1,76,11.8,0,0.028,7.6,13.6 -2022-11-17T21:00,17.9,78,12.2,0,0.055,7.1,13.2 -2022-11-17T22:00,17.9,78,12.1,0,0.055,6.5,12.5 -2022-11-17T23:00,17.9,76,11.6,0,0.055,6.7,12.1 -2022-11-18T00:00,17.6,73,10.4,0,0.055,7.7,13.4 -2022-11-18T01:00,17.1,72,9.5,0,0.055,7.8,14.1 -2022-11-18T02:00,16.5,73,9.2,0,0.083,6.5,13.9 -2022-11-18T03:00,16,73,8.8,0,0.083,4.5,11.9 -2022-11-18T04:00,15.5,72,8,0,0.055,4.5,9.2 -2022-11-18T05:00,12.7,69,4.4,0,0.028,5.6,10.5 -2022-11-18T06:00,12.7,68,4.2,0,0.028,5.9,11 -2022-11-18T07:00,12.7,67,3.9,0,0.028,3.8,11 -2022-11-18T08:00,13.5,64,3.6,0,0.028,2.4,7.8 -2022-11-18T09:00,14.8,58,2.8,0,0,1.8,8.3 -2022-11-18T10:00,16.8,52,2.4,0,0,0.8,8.3 -2022-11-18T11:00,19.3,46,2,0,0,1.6,8.9 -2022-11-18T12:00,20.7,44,1.9,0,0,4.8,12.8 -2022-11-18T13:00,21.7,42,2,0,0,7.2,16.1 -2022-11-18T14:00,21.7,42,2,0,0,5.9,16.1 -2022-11-18T15:00,21.6,42,1.8,0,0,3.9,13.6 -2022-11-18T16:00,20.4,44,1.9,0,0,4.5,9.8 -2022-11-18T17:00,14.7,60,3.2,0,0,4.5,8.3 -2022-11-18T18:00,15.8,59,3.8,0,0,2.6,5.4 -2022-11-18T19:00,14.7,61,3.8,0,0,2.5,4 -2022-11-18T20:00,14.4,63,4,0,0,0.3,3.1 -2022-11-18T21:00,14,64,4.1,0,0,1.1,1.8 -2022-11-18T22:00,13.9,63,3.7,0,0,3,4 -2022-11-18T23:00,14,62,3.4,0,0,5,7.2 -2022-11-19T00:00,14.6,59,2.8,0,0,5.2,8.1 -2022-11-19T01:00,15.8,53,1.7,0,0,4.9,8.1 -2022-11-19T02:00,17.1,47,0.3,0,0,4.4,7.6 -2022-11-19T03:00,16.7,46,-0.7,0,0,3.9,6.9 -2022-11-19T04:00,16.5,45,-1.3,0,0,3.9,5.6 -2022-11-19T05:00,11.8,55,-1.4,0,0,7.2,5.4 -2022-11-19T06:00,16.3,45,-1.4,0,0,4.5,8.7 -2022-11-19T07:00,16.9,44,-1.2,0,0,4.4,7.6 -2022-11-19T08:00,20.8,38,-0.9,0,0,4.8,8.7 -2022-11-19T09:00,26.2,30,-1,0,0,3.8,9.4 -2022-11-19T10:00,32.7,23,-0.8,0,0,4,10.3 -2022-11-19T11:00,37.1,19,-1.6,0,0,3.7,10.7 -2022-11-19T12:00,40.1,16,-2,0,0,2.5,10.5 -2022-11-19T13:00,41.8,15,-2,0,0,0.9,9.2 -2022-11-19T14:00,42.2,16,-1.5,0,0,1.4,6.9 -2022-11-19T15:00,41.8,16,-0.8,0,0,3.2,6.5 -2022-11-19T16:00,37.9,20,0.3,0,0,5,5.6 -2022-11-19T17:00,24.4,45,6.3,0,0,5,5.8 -2022-11-19T18:00,22.9,52,7.7,0,0,3.2,6.3 -2022-11-19T19:00,20.3,59,8.4,0,0,3.7,4.9 -2022-11-19T20:00,21.1,55,7.3,0,0,4.8,7.2 -2022-11-19T21:00,20.8,50,4.9,0,0,4.5,7.8 -2022-11-19T22:00,19.4,52,4.7,0,0,3.5,6.7 -2022-11-19T23:00,19.3,51,4.3,0,0,5.1,7.6 -2022-11-20T00:00,18.8,51,3.6,0,0,5.6,8.1 -2022-11-20T01:00,18.8,45,1,0,0,6.3,9.6 -2022-11-20T02:00,20.2,39,-1,0,0,4.7,9.4 -2022-11-20T03:00,20.6,38,-0.8,0,0,3.6,7.8 -2022-11-20T04:00,20.2,39,-0.9,0,0,5,6 -2022-11-20T05:00,22.2,37,-0.3,0,0,6.1,6 -2022-11-20T06:00,25.6,32,-0.1,0,0,5.8,7.6 -2022-11-20T07:00,23.6,35,0.1,0,0,5.6,6.5 -2022-11-20T08:00,29.2,28,0.3,0,0,3.6,6.7 -2022-11-20T09:00,37,21,0.2,0,0,2.1,6.3 -2022-11-20T10:00,43.1,16,-0.2,0,0,3.8,9.4 -2022-11-20T11:00,46.6,14,-0.6,0,0,4.1,10.3 -2022-11-20T12:00,48.5,13,-0.3,0,0,5.2,11.6 -2022-11-20T13:00,49.2,13,-0.1,0,0,6.1,12.5 -2022-11-20T14:00,48.9,13,-0.4,0,0,6.2,12.5 -2022-11-20T15:00,46.5,13,-1.1,0,0,4.6,11.6 -2022-11-20T16:00,44.1,15,-1.2,0,0,2.8,6.3 -2022-11-20T17:00,41.7,24,7.1,0,0,2.3,5.4 -2022-11-20T18:00,32.8,35,8.4,0,0,4.8,5.4 -2022-11-20T19:00,27.5,45,9.1,0,0,6.3,9.4 -2022-11-20T20:00,25.2,48,8.2,0,0,6.5,8.5 -2022-11-20T21:00,24,53,9.2,0,0,6.1,8.3 -2022-11-20T22:00,23.3,56,9.9,0,0,6.5,7.6 -2022-11-20T23:00,23.4,54,9.3,0,0,5.9,7.8 -2022-11-21T00:00,23.5,52,8.3,0,0,5,6.9 -2022-11-21T01:00,22.8,51,7.4,0,0,4.9,5.8 -2022-11-21T02:00,22.5,49,6.4,0,0,5.5,6.7 -2022-11-21T03:00,23.1,46,5.5,0,0,5,6.7 -2022-11-21T04:00,22.3,46,4.8,0,0,5.2,6.7 -2022-11-21T05:00,19,54,5.1,0,0,6.4,6.7 -2022-11-21T06:00,19.4,54,5.6,0,0,5,7.4 -2022-11-21T07:00,18.7,57,6.1,0,0,4.3,6 -2022-11-21T08:00,23.7,46,5.9,0,0,4.3,7.8 -2022-11-21T09:00,31,32,4.4,0,0,4.9,9.8 -2022-11-21T10:00,38.9,19,-0.2,0,0,3.5,10.5 -2022-11-21T11:00,45.3,13,-3.1,0,0,2,9.4 -2022-11-21T12:00,49,12,-1.8,0,0,6.2,12.5 -2022-11-21T13:00,47.7,18,5.8,0,0,9.3,17 -2022-11-21T14:00,44.9,23,9.6,0,0,9.6,17.7 -2022-11-21T15:00,42.8,24,8.9,0,0,7.9,17 -2022-11-21T16:00,36.2,28,6,0,0,4.8,12.3 -2022-11-21T17:00,30.2,44,10.7,0,0,7.2,9.2 -2022-11-21T18:00,30.1,41,9.1,0,0,8.1,9.4 -2022-11-21T19:00,38.8,27,7.4,0,0,4.5,10.3 -2022-11-21T20:00,29.8,39,8,0,0,2.5,5.1 -2022-11-21T21:00,25.1,53,10.3,0,0,2.9,5.1 -2022-11-21T22:00,22.8,61,11.5,0,0,3.1,4.7 -2022-11-21T23:00,22.6,61,11.1,0,0,3.8,5.4 -2022-11-22T00:00,22.4,60,10.6,0,0,4,5.4 -2022-11-22T01:00,22.5,58,9.8,0,0,4.9,5.8 -2022-11-22T02:00,24.7,51,9.1,0,0,3.6,6 -2022-11-22T03:00,23,52,8.2,0,0,4.1,4.5 -2022-11-22T04:00,23.4,49,6.9,0,0,4.1,6 -2022-11-22T05:00,21.4,52,6.6,0,0,6,8.5 -2022-11-22T06:00,21.4,52,6.6,0,0,4.5,6.9 -2022-11-22T07:00,21.7,49,5.5,0,0,4.4,6.5 -2022-11-22T08:00,26.2,39,4.7,0,0,7.2,11.2 -2022-11-22T09:00,34.3,27,3.9,0,0,5,11.2 -2022-11-22T10:00,42.4,17,0.7,0,0,4.8,10.5 -2022-11-22T11:00,48.4,11,-3,0,0,5.7,12.1 -2022-11-22T12:00,51.7,10,-2.6,0,0,7.3,13.9 -2022-11-22T13:00,52,11,-0.8,0,0,8,15 -2022-11-22T14:00,51.1,13,2.3,0,0,7,14.8 -2022-11-22T15:00,48.3,18,7.3,0,0,4.2,12.5 -2022-11-22T16:00,41.4,27,10,0,0,5.4,7.4 -2022-11-22T17:00,43.2,27,11.5,0,0,2.1,6.3 -2022-11-22T18:00,37.1,34,11.4,0,0,2.7,3.6 -2022-11-22T19:00,28.6,49,11.9,0,0,4.9,5.6 -2022-11-22T20:00,25.6,58,13,0,0,3.7,6.5 -2022-11-22T21:00,25.1,59,12.7,0,0,4.7,6.9 -2022-11-22T22:00,25.2,56,11.7,0,0,4,7.2 -2022-11-22T23:00,24.8,55,10.9,0,0,4.3,6 -2022-11-23T00:00,24.6,54,10.1,0,0,3.8,5.8 -2022-11-23T01:00,23.6,54,9.2,0,0,4.6,6.5 -2022-11-23T02:00,23.8,51,8.2,0,0,4.9,6.7 -2022-11-23T03:00,23.2,51,7.5,0,0,5.5,6.9 -2022-11-23T04:00,22.3,51,6.9,0,0,6.3,7.4 -2022-11-23T05:00,22.3,52,7.2,0,0,5.3,7.4 -2022-11-23T06:00,22.6,49,6.4,0,0,4.9,6.3 -2022-11-23T07:00,25.9,41,5.6,0,0,2.9,5.6 -2022-11-23T08:00,28.4,36,4.9,0,0,3.2,3.8 -2022-11-23T09:00,35.2,27,4.2,0,0,5.1,9.8 -2022-11-23T10:00,44.8,17,3,0,0,0.5,10.1 -2022-11-23T11:00,46.1,18,5.4,0,0,9.2,16.8 -2022-11-23T12:00,48.7,16,4.6,0,0,7.2,17.2 -2022-11-23T13:00,48.8,14,1.7,0,0,7.3,14.3 -2022-11-23T14:00,47.9,16,3.7,0,0,5.7,14.1 -2022-11-23T15:00,45.7,20,7.3,0,0,6.5,10.5 -2022-11-23T16:00,40.2,29,10.8,0,0,6.1,11 -2022-11-23T17:00,38.8,39,16.2,0,0,5.9,13.4 -2022-11-23T18:00,36.3,45,16.9,0,0,5,9.2 -2022-11-23T19:00,31.9,57,18.2,0,0,4.8,8.3 -2022-11-23T20:00,29.7,62,18.2,0,0,6,8.1 -2022-11-23T21:00,30.3,65,19.9,0,0,4.9,7.4 -2022-11-23T22:00,28.6,74,21.4,0,0,5.1,8.9 -2022-11-23T23:00,32.6,62,21.2,0,0,5.9,9.4 -2022-11-24T00:00,28.9,71,20.5,0,0,4.7,9.6 -2022-11-24T01:00,29.2,68,20.1,0,0,5.5,8.9 -2022-11-24T02:00,27.1,75,20.1,0,0,4.1,8.7 -2022-11-24T03:00,28,71,19.9,0,0,3.3,5.4 -2022-11-24T04:00,27.1,73,19.7,0,0,1.3,4.5 -2022-11-24T05:00,28.3,71,20.2,0,0,1.6,2.9 -2022-11-24T06:00,29.7,62,18.2,0,0,3.1,5.4 -2022-11-24T07:00,29.4,56,15.4,0,0,3.6,6.3 -2022-11-24T08:00,30.6,51,14.5,0,0,3.7,6.7 -2022-11-24T09:00,33.4,51,17.2,0,0,4.3,9.2 -2022-11-24T10:00,35,53,19.5,0,0,4.2,10.3 -2022-11-24T11:00,37.4,48,19.7,0,0,5.6,13 -2022-11-24T12:00,39.6,43,18.8,0,0,7.2,15.2 -2022-11-24T13:00,41.2,40,18.6,0,0,9,17.4 -2022-11-24T14:00,42.1,38,18.1,0,0,7.9,17.7 -2022-11-24T15:00,42.2,36,17.2,0,0,4.7,15.4 -2022-11-24T16:00,39.6,43,19.1,0,0,2.7,9.8 -2022-11-24T17:00,34.5,53,19.3,0,0,3.5,6.5 -2022-11-24T18:00,30.4,63,19.2,0,0,4.1,5.8 -2022-11-24T19:00,27.6,68,18.3,0,0,3.9,6 -2022-11-24T20:00,23.7,74,16.8,0,0,4.7,7.6 -2022-11-24T21:00,24.2,66,14.5,0,0,5,7.8 -2022-11-24T22:00,24,61,12.6,0,0,5,8.1 -2022-11-24T23:00,23.9,59,11.8,0,0,4.6,7.8 -2022-11-25T00:00,23.5,59,11.5,0,0,3.7,7.4 -2022-11-25T01:00,23.3,59,11,0,0,3.9,5.6 -2022-11-25T02:00,23.6,56,10,0,0,3.6,5.4 -2022-11-25T03:00,23.2,55,9.3,0,0,4.1,5.4 -2022-11-25T04:00,23.4,53,8.6,0,0,4.7,5.8 -2022-11-25T05:00,22.3,56,9.1,0,0,5.9,6 -2022-11-25T06:00,23.7,52,8.8,0,0,5,6.7 -2022-11-25T07:00,24.2,51,8.5,0,0,5.4,6.3 -2022-11-25T08:00,30.5,39,8.7,0,0,5.4,7.8 -2022-11-25T09:00,38,30,9.5,0,0,4.1,8.9 -2022-11-25T10:00,45.9,22,9.4,0,0,4.1,9.4 -2022-11-25T11:00,51,20,11,0,0,4.2,10.3 -2022-11-25T12:00,53.6,20,13.1,0,0,2.7,10.1 -2022-11-25T13:00,54.9,20,14.6,0,0,2.2,8.3 -2022-11-25T14:00,55.5,21,16,0,0,2.9,7.4 -2022-11-25T15:00,54.6,24,18.1,0,0,3.4,7.2 -2022-11-25T16:00,48.9,34,21.9,0,0,3.8,5.4 -2022-11-25T17:00,50,32,21.1,0,0,2.7,4.5 -2022-11-25T18:00,38.6,50,21.6,0,0,5.9,7.6 -2022-11-25T19:00,33.7,66,23.5,0,0,3.3,7.4 -2022-11-25T20:00,30.1,79,24.3,0,0,4.5,6.9 -2022-11-25T21:00,28.8,81,23.7,0,0,4.1,6.9 -2022-11-25T22:00,28.2,79,22.6,0,0,3.9,6.5 -2022-11-25T23:00,28,75,21.1,0,0,5.1,6.3 -2022-11-26T00:00,28,72,20.2,0,0,5.7,7.2 -2022-11-26T01:00,27.5,72,19.7,0,0,5.7,7.2 -2022-11-26T02:00,27.7,68,18.5,0,0,6.3,7.6 -2022-11-26T03:00,27.7,67,18.2,0,0,6.5,7.8 -2022-11-26T04:00,28.6,63,17.7,0,0,7.4,8.7 -2022-11-26T05:00,35.2,48,17.3,0,0,4.7,8.5 -2022-11-26T06:00,34.7,49,17.3,0,0,1,5.8 -2022-11-26T07:00,30.1,59,17.3,0,0,4,4.5 -2022-11-26T08:00,36.8,44,16.7,0,0,3.2,5.4 -2022-11-26T09:00,43.2,35,17.5,0,0,2.2,5.8 -2022-11-26T10:00,49.7,28,18.3,0,0,3.4,7.6 -2022-11-26T11:00,52.3,27,19,0,0,9,16.1 -2022-11-26T12:00,53.6,24,17.8,0,0,5.6,16.8 -2022-11-26T13:00,55.1,23,17.8,0,0,7.3,13.4 -2022-11-26T14:00,53.3,26,19,0,0,10.7,19.5 -2022-11-26T15:00,52.4,27,19.4,0,0,9,18.8 -2022-11-26T16:00,48.1,33,20.2,0,0,6.9,14.8 -2022-11-26T17:00,43.9,39,20.5,0,0,5.5,11.2 -2022-11-26T18:00,42.1,43,21,0,0,6.9,11 -2022-11-26T19:00,42.4,42,21,0,0,8.6,13.6 -2022-11-26T20:00,41.1,46,21.7,0,0,8.1,13.6 -2022-11-26T21:00,40.2,51,23.4,0,0,7.6,13.4 -2022-11-26T22:00,38.7,56,24.4,0,0,5.4,12.1 -2022-11-26T23:00,37.6,61,25.2,0,0,4.9,8.5 -2022-11-27T00:00,36.3,67,26.2,0,0,4.5,7.8 -2022-11-27T01:00,34.2,74,26.7,0,0,2.9,7.2 -2022-11-27T02:00,29.2,88,26.1,0,0,5,6.3 -2022-11-27T03:00,31.7,81,26.6,0,0,2.7,6 -2022-11-27T04:00,30.7,83,26.2,0,0,2.2,2.9 -2022-11-27T05:00,31.5,80,26.2,0,0,1.8,2.9 -2022-11-27T06:00,29.9,88,26.7,0,0,2.1,3.6 -2022-11-27T07:00,29.1,90,26.6,0,0,1.3,4.5 -2022-11-27T08:00,28.7,92,26.7,0,0,3,4.9 -2022-11-27T09:00,33.7,76,27,0,0,3.4,8.3 -2022-11-27T10:00,39.4,57,25.6,0,0,4.3,10.5 -2022-11-27T11:00,43.9,43,22.8,0,0,5.3,12.3 -2022-11-27T12:00,46.9,35,20.6,0,0,2.7,12.5 -2022-11-27T13:00,49.4,23,13.2,0,0,7.9,15.7 -2022-11-27T14:00,49.2,23,12.9,0,0,8.3,17.9 -2022-11-27T15:00,48.6,24,13,0,0,3.5,16.1 -2022-11-27T16:00,45.1,30,15.5,0,0,4.1,7.8 -2022-11-27T17:00,39.9,36,15.2,0,0,5,10.7 -2022-11-27T18:00,35.3,40,13.5,0,0,4.7,7.8 -2022-11-27T19:00,32.5,44,13.2,0,0,5.7,6.9 -2022-11-27T20:00,30.9,42,10.7,0,0,6.5,8.5 -2022-11-27T21:00,30.6,40,9.1,0,0,6.9,9.6 -2022-11-27T22:00,29,46,10.9,0,0,5.6,8.9 -2022-11-27T23:00,27.6,51,11.7,0,0,4.8,9.2 -2022-11-28T00:00,28,49,11.5,0,0,5.8,8.3 -2022-11-28T01:00,25.4,55,11.6,0,0,7.2,8.7 -2022-11-28T02:00,24.8,57,11.7,0,0,5.1,8.7 -2022-11-28T03:00,24.7,57,11.7,0,0,4.3,6.5 -2022-11-28T04:00,24.2,57,11.1,0,0,3.8,6 -2022-11-28T05:00,30.8,44,11.5,0,0,1.3,5.4 -2022-11-28T06:00,26,54,11.6,0,0,3.2,4.9 -2022-11-28T07:00,25.2,58,12.4,0,0,3.4,5.4 -2022-11-28T08:00,29.8,48,12.7,0,0,5.6,8.3 -2022-11-28T09:00,37.9,35,12.9,0,0,4.9,10.1 -2022-11-28T10:00,46.3,25,12.5,0,0,3.8,9.4 -2022-11-28T11:00,50.3,20,10.7,0,0,2.4,8.9 -2022-11-28T12:00,51.1,21,12.9,0,0,7.7,14.8 -2022-11-28T13:00,50.2,23,14,0,0,13.7,23.5 -2022-11-28T14:00,50.1,22,12.7,0,0,13.1,24.2 -2022-11-28T15:00,49.3,22,12.4,0,0,9,22.4 -2022-11-28T16:00,45.1,30,15.4,0,0,4.1,15.4 -2022-11-28T17:00,40.7,35,15,0,0,3.8,6.7 -2022-11-28T18:00,36.7,41,14.9,0,0,5.1,6.3 -2022-11-28T19:00,33.6,47,15.6,0,0,3.6,6.7 -2022-11-28T20:00,32.1,56,18.2,0,0,11.2,22.1 -2022-11-28T21:00,31.5,64,20.6,0,0,10.8,18.1 -2022-11-28T22:00,28.9,74,21.7,0,0.028,11.5,18.6 -2022-11-28T23:00,27.1,79,21.5,0,0.028,9.2,19 -2022-11-29T00:00,26.2,81,21.2,0,0.028,9,15.4 -2022-11-29T01:00,24.8,81,19.7,0,0.138,9.5,16.1 -2022-11-29T02:00,24,81,19,0,0.083,9.7,16.3 -2022-11-29T03:00,23,84,18.9,0,0.055,12.3,19.7 -2022-11-29T04:00,21.8,84,17.9,0,0.331,13.7,27.1 -2022-11-29T05:00,19.9,81,15,0,0.165,7.6,22.6 -2022-11-29T06:00,19.7,81,14.7,0,0.055,9.8,16.6 -2022-11-29T07:00,19.2,79,13.6,0,0.055,9.1,16.6 -2022-11-29T08:00,18.9,75,12.2,0,0.083,9.5,16.6 -2022-11-29T09:00,19.2,69,10.8,0,0.083,7.3,16.3 -2022-11-29T10:00,19.9,65,10,0,0.083,5,13.9 -2022-11-29T11:00,20.8,61,9.5,0,0.055,2.6,11.4 -2022-11-29T12:00,22.5,52,7.4,0,0.028,1.9,9.8 -2022-11-29T13:00,22.8,50,6.9,0,0,0.9,8.9 -2022-11-29T14:00,23.1,50,7.1,0,0,1.9,7.8 -2022-11-29T15:00,23.3,50,7.5,0,0,3.8,9.2 -2022-11-29T16:00,22.3,53,7.7,0,0,3.7,9.4 -2022-11-29T17:00,16.9,67,7.7,0,0,5.2,6.3 -2022-11-29T18:00,18.3,64,8.2,0,0,4.6,6.5 -2022-11-29T19:00,19,63,8.4,0,0,2.4,5.8 -2022-11-29T20:00,16.5,68,7.7,0,0,3.8,5.4 -2022-11-29T21:00,15,68,6.2,0,0,3,5.8 -2022-11-29T22:00,15.1,58,2.9,0,0,5.2,8.7 -2022-11-29T23:00,16.6,51,1.7,0,0,2.6,7.8 -2022-11-30T00:00,18.6,46,1.4,0,0,2.3,4.7 -2022-11-30T01:00,17.5,46,0.2,0,0,2.7,4.3 -2022-11-30T02:00,17.5,41,-2.1,0,0,3.3,5.4 -2022-11-30T03:00,17.3,39,-3.4,0,0,3.8,6.3 -2022-11-30T04:00,16.7,38,-4.7,0,0,3.9,6.7 -2022-11-30T05:00,13.2,51,-1.4,0,0,2.8,6.5 -2022-11-30T06:00,11.1,57,-1.2,0,0,2.3,5.4 -2022-11-30T07:00,9.6,63,-0.4,0,0,2.2,6.3 -2022-11-30T08:00,11.1,59,-0.6,0,0,2.2,6.9 -2022-11-30T09:00,15.4,49,-0.4,0,0,1.1,6.9 -2022-11-30T10:00,20.3,42,1,0,0,4.1,11.4 -2022-11-30T11:00,26.1,36,2.8,0,0,4.8,12.5 -2022-11-30T12:00,29.5,35,5.2,0,0,6.5,14.5 -2022-11-30T13:00,30.1,39,8,0,0,7.7,16.3 -2022-11-30T14:00,30.9,40,9.3,0,0,6.5,16.1 -2022-11-30T15:00,30.9,41,10,0,0,6,13.9 -2022-11-30T16:00,27.2,49,10.5,0,0,3.7,11.6 -2022-11-30T17:00,16,85,12.2,0,0,2.9,6.3 -2022-11-30T18:00,16.5,82,12.1,0,0,3.5,6 -2022-11-30T19:00,17.9,79,12.4,0,0,2.2,4.9 -2022-11-30T20:00,17.4,81,12.5,0,0,2.8,4.3 -2022-11-30T21:00,16.8,82,12.4,0,0,2.3,4.3 -2022-11-30T22:00,17.2,79,11.8,0,0,0.5,5.6 -2022-11-30T23:00,18.8,70,10.7,0,0,2.4,3.4 -2022-12-01T00:00,21.4,59,9.4,0,0,4.6,5.8 -2022-12-01T01:00,25.6,49,9.1,0,0,3.7,5.6 -2022-12-01T02:00,25.4,50,9.1,0,0,3.7,4.5 -2022-12-01T03:00,26.2,48,9.1,0,0,1.8,4.3 -2022-12-01T04:00,22,58,9.6,0,0,3.9,5.4 -2022-12-01T05:00,19,72,11.6,0,0,6.9,6.7 -2022-12-01T06:00,21.3,67,11.9,0,0,6,8.3 -2022-12-01T07:00,24.5,57,11.5,0,0,4.6,7.2 -2022-12-01T08:00,27.4,51,11.6,0,0,3.7,6.3 -2022-12-01T09:00,36.8,38,13.4,0,0,7,11.4 -2022-12-01T10:00,46.1,28,15.1,0,0,7.4,13 -2022-12-01T11:00,52.2,22,14.2,0,0,9.9,16.3 -2022-12-01T12:00,55.5,18,12,0,0,14.6,23.7 -2022-12-01T13:00,57.2,15,10.3,0,0,14.5,24.6 -2022-12-01T14:00,57.4,15,10,0,0,12.1,23.3 -2022-12-01T15:00,54.1,17,10.3,0,0,7.3,18.8 -2022-12-01T16:00,42.3,28,11.8,0,0,9.1,11.4 -2022-12-01T17:00,35.1,50,18.2,0,0,3.6,11.6 -2022-12-01T18:00,33.5,57,19.9,0,0,7.3,11 -2022-12-01T19:00,35.1,48,17.2,0,0,11.7,18.6 -2022-12-01T20:00,37.9,38,14.4,0,0,12.4,19.5 -2022-12-01T21:00,40.2,36,15.4,0,0,6.9,19.7 -2022-12-01T22:00,42.4,34,16.2,0,0,8.8,13.4 -2022-12-01T23:00,44.2,34,17.7,0,0,10.2,16.6 -2022-12-02T00:00,46.6,33,18.9,0,0,18.1,28.6 -2022-12-02T01:00,46.6,33,19.1,0,0,19.4,31.3 -2022-12-02T02:00,46.8,32,18.6,0,0,16.8,31.1 -2022-12-02T03:00,46.7,33,18.8,0,0,15.2,27.3 -2022-12-02T04:00,45,34,18.6,0,0,9.6,24.6 -2022-12-02T05:00,40.2,40,18.1,0,0,8.5,15.7 -2022-12-02T06:00,46.1,32,17.7,0,0,11.7,19 -2022-12-02T07:00,44.6,36,19.6,0,0,10.2,19.5 -2022-12-02T08:00,44.8,42,22.9,0,0,11.1,17.2 -2022-12-02T09:00,48,40,25.1,0,0,16.1,24.8 -2022-12-02T10:00,51.4,37,25.9,0,0,15.3,26.4 -2022-12-02T11:00,54.1,31,24.4,0,0,15.9,27.1 -2022-12-02T12:00,50.8,44,29.5,0.024,0.028,16.5,26.2 -2022-12-02T13:00,46,36,20.2,0,0,17.6,33.8 -2022-12-02T14:00,44.5,28,13.3,0,0,18.9,32 -2022-12-02T15:00,41.5,31,13.2,0,0,20.7,34.9 -2022-12-02T16:00,37.3,36,13,0,0,16.6,33.6 -2022-12-02T17:00,33.3,45,14.1,0,0,10.8,26.2 -2022-12-02T18:00,30.3,52,14.6,0,0,5.1,17 -2022-12-02T19:00,28,57,14.9,0,0,9,13 -2022-12-02T20:00,25,46,7.3,0,0,10.4,18.3 -2022-12-02T21:00,23.8,43,4.6,0,0,9.2,16.3 -2022-12-02T22:00,22.6,39,1.2,0,0,8.3,14.3 -2022-12-02T23:00,21.7,38,-0.1,0,0,5.5,12.8 -2022-12-03T00:00,21.2,38,-0.5,0,0,4.2,8.5 -2022-12-03T01:00,21.6,40,0.7,0,0,1.1,6 -2022-12-03T02:00,20.8,44,2.3,0,0,0.2,1.8 -2022-12-03T03:00,19.8,48,3.1,0,0,3.1,4.7 -2022-12-03T04:00,19.4,47,2.5,0,0,4.6,8.1 -2022-12-03T05:00,19,53,4.8,0,0,3,7.4 -2022-12-03T06:00,21.5,48,4.8,0,0,0.7,3.6 -2022-12-03T07:00,20.1,51,4.8,0,0,2.7,3.8 -2022-12-03T08:00,23.5,45,5.2,0,0,2.9,4.9 -2022-12-03T09:00,30.7,34,5.8,0,0,2.8,7.4 -2022-12-03T10:00,37.4,27,6.4,0,0,2,8.5 -2022-12-03T11:00,42.6,21,5.8,0,0,3.4,8.7 -2022-12-03T12:00,48.1,17,5.4,0,0,4,10.1 -2022-12-03T13:00,50.8,15,5.1,0,0,6.3,11.9 -2022-12-03T14:00,49.6,17,6.9,0,0,8.6,15 -2022-12-03T15:00,46.6,23,10.6,0,0,7.1,15 -2022-12-03T16:00,38.8,35,13.5,0,0,6.5,10.7 -2022-12-03T17:00,33.4,44,14,0,0,7.1,7.4 -2022-12-03T18:00,35.9,39,13.5,0,0,1.9,8.1 -2022-12-03T19:00,31.7,54,16.9,0,0,3.8,4.7 -2022-12-03T20:00,32.5,58,19.3,0,0,5.4,6 -2022-12-03T21:00,32.4,60,20.2,0,0,4.2,6.7 -2022-12-03T22:00,31.4,62,20,0,0,4.1,4.9 -2022-12-03T23:00,30.7,57,17.3,0,0,4.7,6.3 -2022-12-04T00:00,32.9,52,17.1,0,0,0.4,5.6 -2022-12-04T01:00,32.5,52,16.8,0,0,0.6,1.1 -2022-12-04T02:00,33.6,49,16.7,0,0,2,2.2 -2022-12-04T03:00,27.4,70,18.8,0,0,5,6.5 -2022-12-04T04:00,26.7,80,21.5,0,0,3.5,6.5 -2022-12-04T05:00,25.7,89,22.8,0,0,4.4,5.6 -2022-12-04T06:00,25.5,88,22.5,0,0,4.7,5.8 -2022-12-04T07:00,25.9,85,22.1,0,0,2.9,5.8 -2022-12-04T08:00,28.7,78,22.6,0,0,3.7,5.4 -2022-12-04T09:00,34.5,63,23.3,0,0,2.6,7.4 -2022-12-04T10:00,40.6,50,23.6,0,0,2.6,7.8 -2022-12-04T11:00,46.4,43,25.1,0,0,2.8,8.3 -2022-12-04T12:00,50.6,36,24.4,0,0,3.5,9.8 -2022-12-04T13:00,54.3,31,24.4,0,0,0.9,9.2 -2022-12-04T14:00,55.2,32,25.5,0,0,3.2,7.8 -2022-12-04T15:00,51.7,40,28.4,0,0,8.5,13.4 -2022-12-04T16:00,43.3,57,28.9,0,0,9,15.4 -2022-12-04T17:00,45.6,49,27.6,0,0,2.2,13.9 -2022-12-04T18:00,37.1,66,27,0,0,3.5,5.4 -2022-12-04T19:00,34.3,72,26.1,0,0,3.5,4.9 -2022-12-04T20:00,31.3,78,25.3,0,0,3.7,6.3 -2022-12-04T21:00,30.3,79,24.6,0,0,5.1,8.1 -2022-12-04T22:00,32.4,72,24.3,0,0,6.3,9.2 -2022-12-04T23:00,34.3,65,23.7,0,0,7.3,11.2 -2022-12-05T00:00,34.4,66,24.1,0,0,7.4,11.9 -2022-12-05T01:00,33.8,68,24.4,0,0,6.7,11.6 -2022-12-05T02:00,32.2,73,24.4,0,0,5.8,10.1 -2022-12-05T03:00,32.3,72,24.2,0,0,6.3,9.2 -2022-12-05T04:00,31.9,72,23.9,0,0,6.5,10.5 -2022-12-05T05:00,29.8,77,23.5,0,0,5.1,10.3 -2022-12-05T06:00,28.2,82,23.4,0,0,5.9,7.2 -2022-12-05T07:00,28.5,82,23.7,0,0,5.2,6.9 -2022-12-05T08:00,33,70,24.4,0,0,2.4,6.5 -2022-12-05T09:00,39.2,60,26.5,0,0,2.6,6.7 -2022-12-05T10:00,46.5,47,27.3,0,0,2,6.5 -2022-12-05T11:00,47.8,45,27.3,0,0,9.1,16.3 -2022-12-05T12:00,47.8,40,24.7,0,0,9.2,19.2 -2022-12-05T13:00,51.4,33,23.5,0,0,8.6,17.4 -2022-12-05T14:00,51.7,35,24.7,0,0,8.2,16.6 -2022-12-05T15:00,50.8,37,25.5,0,0,7.6,15 -2022-12-05T16:00,46.8,45,26.7,0,0,6.3,13 -2022-12-05T17:00,39.6,58,26.1,0,0,6.1,11.9 -2022-12-05T18:00,37,63,25.6,0,0,7.1,8.5 -2022-12-05T19:00,39.9,55,25.2,0,0,4.2,8.9 -2022-12-05T20:00,36.1,64,25.3,0,0,4.5,5.1 -2022-12-05T21:00,37.1,62,25.3,0,0,1.1,5.1 -2022-12-05T22:00,30.7,76,24.1,0,0,5.4,6 -2022-12-05T23:00,28.9,79,23.4,0,0,6.2,8.5 -2022-12-06T00:00,29.9,77,23.6,0,0,5.4,8.3 -2022-12-06T01:00,29.6,80,24.1,0,0,9.9,16.1 -2022-12-06T02:00,28.5,82,23.7,0,0,8.1,16.3 -2022-12-06T03:00,27.3,84,23.2,0,0,5.2,13.2 -2022-12-06T04:00,28.9,78,23,0,0,3.4,8.1 -2022-12-06T05:00,26.6,89,23.8,0,0,6.1,4.5 -2022-12-06T06:00,26.2,87,22.8,0,0,6.3,10.1 -2022-12-06T07:00,25.8,85,22,0,0,6.3,10.1 -2022-12-06T08:00,29.5,73,21.7,0,0,6.5,10.1 -2022-12-06T09:00,36.9,55,22,0,0,5.2,11 -2022-12-06T10:00,43.7,40,21.2,0,0,2.5,9.6 -2022-12-06T11:00,47.7,32,19.6,0,0,2.6,8.1 -2022-12-06T12:00,50.2,29,19.2,0,0,3.6,9.4 -2022-12-06T13:00,51.9,27,19.2,0,0,6.1,12.5 -2022-12-06T14:00,52.7,25,17.4,0,0,4,12.8 -2022-12-06T15:00,51.8,22,14.6,0,0,0.7,9.4 -2022-12-06T16:00,44.3,38,20.5,0,0,5.9,6 -2022-12-06T17:00,41.8,33,14.7,0,0,6.8,8.5 -2022-12-06T18:00,37.2,42,16.3,0,0,5.2,11.2 -2022-12-06T19:00,32.7,53,17.3,0,0,4.5,7.8 -2022-12-06T20:00,29.8,61,18,0,0,5.4,7.4 -2022-12-06T21:00,32.2,54,17.5,0,0,0.8,6.5 -2022-12-06T22:00,30.9,57,17.5,0,0,0.9,2 -2022-12-06T23:00,27,64,16.5,0,0,3.6,4.5 -2022-12-07T00:00,27.1,63,16.2,0,0,3.2,4.9 -2022-12-07T01:00,23.8,74,16.7,0,0,3.8,4.3 -2022-12-07T02:00,23.5,74,16.5,0,0,5,6 -2022-12-07T03:00,27,62,15.5,0,0,2.8,6 -2022-12-07T04:00,25.1,64,14.6,0,0,3.8,4 -2022-12-07T05:00,24.3,57,11.2,0,0,5.2,4.5 -2022-12-07T06:00,24.4,57,11.4,0,0,4.5,7.2 -2022-12-07T07:00,23.5,61,12.1,0,0,3.3,6.3 -2022-12-07T08:00,26.3,56,12.7,0,0,4.4,6.5 -2022-12-07T09:00,31.7,47,13.6,0,0,0.9,6.9 -2022-12-07T10:00,37.9,38,14.6,0,0,0.7,5.8 -2022-12-07T11:00,42.9,33,15.7,0,0,0.3,6 -2022-12-07T12:00,46.1,30,16.3,0,0,2.9,8.5 -2022-12-07T13:00,48.3,29,17.6,0,0,6.6,13.4 -2022-12-07T14:00,47.7,32,18.9,0,0,11.2,19.2 -2022-12-07T15:00,45,32,17.1,0,0,12.7,21.7 -2022-12-07T16:00,40.2,38,16.6,0,0,10.5,21.5 -2022-12-07T17:00,39.5,53,23.8,0,0,7.5,16.6 -2022-12-07T18:00,38.8,52,22.5,0,0,4.5,11.9 -2022-12-07T19:00,39,49,21.5,0,0,2.2,5.1 -2022-12-07T20:00,32,64,21.3,0,0,3.5,4 -2022-12-07T21:00,30.7,74,23.4,0,0,1.3,4.9 -2022-12-07T22:00,31.9,68,22.6,0,0,1.2,2.2 -2022-12-07T23:00,26.9,83,22.5,0,0,2.9,4 -2022-12-08T00:00,26.1,83,21.7,0,0,0.3,3.8 -2022-12-08T01:00,24.1,87,20.8,0,0,0.9,1.8 -2022-12-08T02:00,22.6,91,20.3,0,0,0.6,1.8 -2022-12-08T03:00,22.4,91,20.1,0,0,1.3,2.7 -2022-12-08T04:00,21.7,92,19.7,0,0,1.8,2.9 -2022-12-08T05:00,22.1,88,19,0,0,2.3,6.3 -2022-12-08T06:00,23,81,18.1,0,0,1.9,4.3 -2022-12-08T07:00,25.7,81,20.8,0,0,4.3,6.3 -2022-12-08T08:00,31,61,19,0,0,2.6,6.5 -2022-12-08T09:00,39.9,30,10.6,0,0,9,14.5 -2022-12-08T10:00,43,22,6.5,0,0,3.5,13.9 -2022-12-08T11:00,42.5,24,8.4,0,0,5.7,12.5 -2022-12-08T12:00,42.8,24,8.9,0,0,6.8,13.9 -2022-12-08T13:00,44.2,22,7.5,0,0,8.3,15.7 -2022-12-08T14:00,44.3,22,7.7,0,0,9.4,17.2 -2022-12-08T15:00,43.3,23,7.9,0,0,8.2,17.2 -2022-12-08T16:00,38.2,31,10.5,0,0,4.5,14.3 -2022-12-08T17:00,37.6,29,8.5,0,0,13.1,10.1 -2022-12-08T18:00,34.1,34,8.9,0,0,7.1,21 -2022-12-08T19:00,28.5,45,9.8,0,0,4.6,11.4 -2022-12-08T20:00,28.7,47,10.9,0,0,6.2,9.8 -2022-12-08T21:00,26.1,48,9,0,0,6,9.6 -2022-12-08T22:00,24.6,50,8.6,0,0,4.4,7.4 -2022-12-08T23:00,23.7,46,5.9,0,0,5.1,8.5 -2022-12-09T00:00,21.8,46,4.3,0,0,4.9,8.1 -2022-12-09T01:00,20.6,50,4.9,0,0,4.7,6.5 -2022-12-09T02:00,21.8,46,4.4,0,0,3.9,6.3 -2022-12-09T03:00,24,40,3.1,0,0,2.8,4.7 -2022-12-09T04:00,22.1,41,1.8,0,0,3.7,4 -2022-12-09T05:00,20.3,39,-0.5,0,0,5.4,6.3 -2022-12-09T06:00,19.7,37,-2.3,0,0,5.9,6.9 -2022-12-09T07:00,20.5,35,-3,0,0,4.2,6.9 -2022-12-09T08:00,23.9,30,-3.4,0,0,1.4,4.9 -2022-12-09T09:00,28.6,23,-4.2,0,0,1.4,5.6 -2022-12-09T10:00,35,17,-5.4,0,0,2.9,8.3 -2022-12-09T11:00,40.6,12,-8,0,0,2.9,9.2 -2022-12-09T12:00,44.5,10,-9.4,0,0,3.2,9.4 -2022-12-09T13:00,46.4,8,-11,0,0,7.1,13.4 -2022-12-09T14:00,45.2,9,-10.6,0,0,10.3,17.7 -2022-12-09T15:00,42.7,12,-6.2,0,0,7.5,17.7 -2022-12-09T16:00,33.4,25,1.6,0,0,7.2,11.4 -2022-12-09T17:00,37.8,26,6.3,0,0,2.9,8.5 -2022-12-09T18:00,29.2,36,5.5,0,0,5.7,7.8 -2022-12-09T19:00,26.3,42,6.3,0,0,6.3,7.8 -2022-12-09T20:00,27.8,42,7.6,0,0,1.5,8.5 -2022-12-09T21:00,25.7,49,9.3,0,0,2.8,2.7 -2022-12-09T22:00,24,60,12,0,0,4.3,6.5 -2022-12-09T23:00,25.7,47,8.4,0,0,4.9,6.9 -2022-12-10T00:00,29,40,7.4,0,0,2.8,8.3 -2022-12-10T01:00,24.3,56,10.9,0,0,6,8.7 -2022-12-10T02:00,23.8,58,11.3,0,0,5.8,12.5 -2022-12-10T03:00,22.3,60,10.6,0,0,4.1,9.2 -2022-12-10T04:00,20.7,64,10.3,0,0,4.9,6.3 -2022-12-10T05:00,27.5,48,10.2,0,0,3.6,6.5 -2022-12-10T06:00,24.6,51,9.1,0,0,3,4.3 -2022-12-10T07:00,27.1,43,7.6,0,0,0.3,4 -2022-12-10T08:00,25.3,46,7.6,0,0,1.3,2 -2022-12-10T09:00,28.7,40,7.6,0,0,1.1,5.4 -2022-12-10T10:00,35.2,30,6.5,0,0,2.7,8.1 -2022-12-10T11:00,40.6,21,3.7,0,0,4.4,10.5 -2022-12-10T12:00,44.1,16,0.2,0,0,3.6,11 -2022-12-10T13:00,46.2,15,1.4,0,0,2.1,9.8 -2022-12-10T14:00,46.2,17,3.1,0,0,5.6,10.1 -2022-12-10T15:00,42.8,22,6.6,0,0,5.2,10.5 -2022-12-10T16:00,35.1,35,10.4,0,0,6.8,8.3 -2022-12-10T17:00,31.6,48,14.1,0,0,6.7,7.8 -2022-12-10T18:00,39.4,34,13.6,0,0,0.5,7.8 -2022-12-10T19:00,27.9,52,12.5,0,0,4.3,5.6 -2022-12-10T20:00,26.1,60,14,0,0,4,5.8 -2022-12-10T21:00,26.2,58,13.6,0,0,4.8,7.2 -2022-12-10T22:00,27.1,52,11.6,0,0,5.4,7.2 -2022-12-10T23:00,26.4,49,9.7,0,0,6.7,8.1 -2022-12-11T00:00,31.6,37,8.5,0,0,2.8,8.1 -2022-12-11T01:00,31.6,37,8.3,0,0,1.4,3.1 -2022-12-11T02:00,26.4,47,8.8,0,0,3.4,4.3 -2022-12-11T03:00,25.3,50,9.4,0,0,4,5.1 -2022-12-11T04:00,24.9,53,10.3,0,0,4.1,5.4 -2022-12-11T05:00,25.9,51,10,0,0,4.9,6 -2022-12-11T06:00,25.6,48,8.7,0,0,6,7.4 -2022-12-11T07:00,25.8,46,7.8,0,0,5.2,7.4 -2022-12-11T08:00,29.8,39,7.5,0,0,4,6.9 -2022-12-11T09:00,37.9,28,7.6,0,0,5.2,9.2 -2022-12-11T10:00,46.9,20,7.8,0,0,4.9,9.8 -2022-12-11T11:00,54.2,15,7.8,0,0,7.2,13 -2022-12-11T12:00,57.5,12,5.4,0,0,10.4,17.9 -2022-12-11T13:00,58.3,12,6.3,0,0,12.5,20.8 -2022-12-11T14:00,57.7,13,6.4,0,0,13.2,21.7 -2022-12-11T15:00,55.4,15,8.4,0,0,11.3,21.7 -2022-12-11T16:00,50.2,18,8.7,0,0,10.5,18.3 -2022-12-11T17:00,47.9,20,9,0,0,11.2,18.8 -2022-12-11T18:00,43.7,24,9,0,0,8.1,17.9 -2022-12-11T19:00,40.6,27,9.5,0,0,8.3,13.4 -2022-12-11T20:00,37.3,33,10.8,0,0,7.5,13.2 -2022-12-11T21:00,35.4,36,11.4,0,0,7.1,11.9 -2022-12-11T22:00,36.1,36,11.5,0,0,8.4,13.4 -2022-12-11T23:00,35.9,36,11.7,0,0,8.8,14.5 -2022-12-12T00:00,33.2,40,11.5,0,0,8,14.5 -2022-12-12T01:00,31.2,43,11.2,0,0,7.1,13.4 -2022-12-12T02:00,31.4,42,11,0,0,6.3,11.6 -2022-12-12T03:00,33,41,11.9,0,0,7.2,11.4 -2022-12-12T04:00,34.3,41,13.2,0,0,8.8,14.1 -2022-12-12T05:00,33.9,43,13.6,0,0,8.8,15.2 -2022-12-12T06:00,33.2,45,14.1,0,0,6.9,13.9 -2022-12-12T07:00,32.4,47,14.5,0,0,5.8,11 -2022-12-12T08:00,34.4,44,14.9,0,0,5.9,9.4 -2022-12-12T09:00,39.5,38,15.7,0,0,6.1,9.6 -2022-12-12T10:00,45.3,31,16.5,0,0,4.5,9.4 -2022-12-12T11:00,50.7,26,17.1,0,0,4.2,9.8 -2022-12-12T12:00,52.6,24,17.1,0,0,6.9,13 -2022-12-12T13:00,53.1,23,15.9,0,0,9.4,16.8 -2022-12-12T14:00,53.6,21,14.9,0,0,8.1,17.2 -2022-12-12T15:00,53.2,21,14.3,0,0,5.1,14.8 -2022-12-12T16:00,45.7,40,22.7,0.012,0.028,10.2,13.9 -2022-12-12T17:00,39.3,40,17.2,0.004,0,12.3,20.4 -2022-12-12T18:00,34.2,56,20,0,0,11.6,23.7 -2022-12-12T19:00,32.6,59,19.8,0,0,12.5,21 -2022-12-12T20:00,29.8,64,19,0,0,12.5,20.4 -2022-12-12T21:00,27.3,68,18.2,0,0,10.5,20.1 -2022-12-12T22:00,25.9,71,17.8,0,0,9.1,21.3 -2022-12-12T23:00,25.9,69,17.1,0,0,11.9,19.2 -2022-12-13T00:00,25.5,65,15.5,0,0,11,20.6 -2022-12-13T01:00,25.9,62,14.6,0,0.028,10.5,18.3 -2022-12-13T02:00,25.5,64,15.2,0,0.055,7.4,17.2 -2022-12-13T03:00,25.1,66,15.2,0,0.055,5.4,13 -2022-12-13T04:00,24.5,67,15.2,0,0.028,3.1,9.4 -2022-12-13T05:00,24.2,67,14.9,0,0.028,3.7,6 -2022-12-13T06:00,23.7,69,15,0,0,3.4,7.4 -2022-12-13T07:00,23.8,68,14.6,0,0.028,2.1,5.8 -2022-12-13T08:00,23.2,70,14.8,0,0.055,2,6.7 -2022-12-13T09:00,23.5,70,15.3,0,0.055,2,6 -2022-12-13T10:00,23.8,68,14.7,0,0.055,4.1,9.4 -2022-12-13T11:00,24.8,65,14.8,0,0.055,3.1,10.1 -2022-12-13T12:00,25.3,64,14.9,0,0.028,2.5,8.9 -2022-12-13T13:00,26.1,63,15.1,0,0.028,7.2,13.4 -2022-12-13T14:00,26.2,64,15.6,0,0.028,8.8,15.9 -2022-12-13T15:00,24.9,63,14.1,0,0.028,9.2,18.1 -2022-12-13T16:00,24.6,62,13.5,0,0,5.3,16.1 -2022-12-13T17:00,21.9,73,14.6,0,0,3.2,9.4 -2022-12-13T18:00,22.5,71,14.6,0,0,6.9,9.8 -2022-12-13T19:00,21.8,73,14.4,0,0,5.4,10.1 -2022-12-13T20:00,22.6,66,12.9,0,0,6.7,9.8 -2022-12-13T21:00,23.3,63,12.5,0,0.028,5.8,10.1 -2022-12-13T22:00,23.5,63,12.7,0,0,3.9,8.3 -2022-12-13T23:00,23.1,65,12.9,0,0,2.9,6.3 -2022-12-14T00:00,22.6,65,12.7,0,0,4.4,5.4 -2022-12-14T01:00,22.7,62,11.7,0,0,4.5,6.9 -2022-12-14T02:00,22.6,60,10.6,0,0,5.8,8.3 -2022-12-14T03:00,22.3,57,9.4,0,0,6.6,9.6 -2022-12-14T04:00,22.4,54,8.4,0,0,4.8,9.4 -2022-12-14T05:00,21.9,59,9.6,0,0,3,6.5 -2022-12-14T06:00,19.6,64,9.3,0,0,2.8,4.7 -2022-12-14T07:00,20.5,60,8.8,0,0,3.6,5.6 -2022-12-14T08:00,21.4,55,7.7,0,0,6.5,9.6 -2022-12-14T09:00,27.2,44,8.4,0,0,7.1,12.1 -2022-12-14T10:00,32,35,7.6,0,0,7.2,13.2 -2022-12-14T11:00,34.6,31,7.1,0,0,7.8,15.9 -2022-12-14T12:00,36.3,28,6.4,0,0,5.4,15.4 -2022-12-14T13:00,36.3,26,4.6,0,0,8.3,15.7 -2022-12-14T14:00,36.1,26,4.6,0,0,10.7,19.7 -2022-12-14T15:00,35.2,27,4.3,0,0,8.6,19.5 -2022-12-14T16:00,32.4,30,4.4,0,0,6.3,15 -2022-12-14T17:00,29.4,39,7.3,0,0,7.5,10.3 -2022-12-14T18:00,31.4,34,6.4,0,0,4.2,12.3 -2022-12-14T19:00,31.5,34,6.1,0,0,3.6,5.6 -2022-12-14T20:00,26.1,41,5.4,0,0,4.1,5.1 -2022-12-14T21:00,26.5,39,4.7,0,0,1.4,5.4 -2022-12-14T22:00,23,42,3.5,0,0,3.6,4.9 -2022-12-14T23:00,21.7,44,3.3,0,0,5.7,7.2 -2022-12-15T00:00,22.9,40,2.4,0,0,4.9,7.4 -2022-12-15T01:00,21.8,44,3.1,0,0,5.3,8.1 -2022-12-15T02:00,21.9,51,6.6,0,0,4.2,7.6 -2022-12-15T03:00,23.1,50,7.2,0,0,0.5,6.7 -2022-12-15T04:00,20.7,51,5.5,0,0,3.4,4 -2022-12-15T05:00,20.5,39,-0.4,0,0,8.5,4.5 -2022-12-15T06:00,22.5,40,1.8,0,0,5.4,10.3 -2022-12-15T07:00,24.1,38,1.9,0,0,3.6,6.5 -2022-12-15T08:00,23,38,1.4,0,0,4.2,5.4 -2022-12-15T09:00,25.5,33,0.2,0,0,4.3,8.9 -2022-12-15T10:00,27.8,32,1.5,0,0,6.2,12.1 -2022-12-15T11:00,30.9,31,3.6,0,0,7.4,15 -2022-12-15T12:00,32.1,28,2.8,0,0,6.8,15 -2022-12-15T13:00,32.5,29,3.8,0,0,8.1,15.7 -2022-12-15T14:00,30.6,35,6.2,0,0,10.2,17.9 -2022-12-15T15:00,28.6,40,7.3,0,0,11,19.2 -2022-12-15T16:00,26.1,44,7.3,0,0,6.4,18.1 -2022-12-15T17:00,25.3,32,-0.7,0,0,11.1,9.4 -2022-12-15T18:00,25,32,-0.8,0,0,12.3,22.6 -2022-12-15T19:00,22.2,35,-1.6,0,0,7.3,20.1 -2022-12-15T20:00,20.3,37,-2,0,0,6.7,12.1 -2022-12-15T21:00,19.2,36,-3.3,0,0,4.4,10.7 -2022-12-15T22:00,17.7,39,-3.4,0,0,3.8,7.2 -2022-12-15T23:00,17.1,39,-3.9,0,0,4.3,6 -2022-12-16T00:00,18.2,33,-6.3,0,0,4,6.3 -2022-12-16T01:00,17.2,33,-7.2,0,0,4.3,6.3 -2022-12-16T02:00,16.7,34,-6.9,0,0,4.7,6.5 -2022-12-16T03:00,16.6,34,-6.8,0,0,4.3,6.5 -2022-12-16T04:00,16.5,34,-7.1,0,0,4.4,6.3 -2022-12-16T05:00,17.7,34,-5.8,0,0,5.5,6.5 -2022-12-16T06:00,18.9,31,-7.1,0,0,7,11 -2022-12-16T07:00,19.1,29,-7.8,0,0,9.8,15.7 -2022-12-16T08:00,20.5,28,-7.7,0,0,10.4,16.8 -2022-12-16T09:00,23.3,24,-8.2,0,0,6.5,16.6 -2022-12-16T10:00,25.9,21,-8.5,0,0,3.6,12.5 -2022-12-16T11:00,28.5,19,-8.7,0,0,4.1,10.7 -2022-12-16T12:00,30.9,17,-8.7,0,0,6.6,14.1 -2022-12-16T13:00,32.3,15,-9.8,0,0,7.1,15.2 -2022-12-16T14:00,32.5,15,-10.7,0,0,9,16.8 -2022-12-16T15:00,29.8,20,-6.9,0,0,12.2,21 -2022-12-16T16:00,26.6,23,-5.9,0,0,8.6,20.6 -2022-12-16T17:00,22.5,29,-5.3,0,0,14.3,14.8 -2022-12-16T18:00,22.1,29,-5.5,0,0,15.7,25.9 -2022-12-16T19:00,21.9,29,-5.5,0,0,12.6,24.8 -2022-12-16T20:00,22.1,28,-5.9,0,0,10.1,19.9 -2022-12-16T21:00,22.5,28,-6,0,0,9.4,16.3 -2022-12-16T22:00,22.7,27,-6.4,0,0,7.8,15 -2022-12-16T23:00,22.6,27,-6.7,0,0,6.5,12.3 -2022-12-17T00:00,23,26,-7.1,0,0,7.4,11.4 -2022-12-17T01:00,23.2,26,-7.1,0,0,8,13 -2022-12-17T02:00,21,28,-7.3,0,0,5.1,12.5 -2022-12-17T03:00,20.1,28,-7.9,0,0,4.5,6.9 -2022-12-17T04:00,20.9,27,-7.9,0,0,4.2,6.7 -2022-12-17T05:00,21,32,-4.5,0,0,4.1,11.2 -2022-12-17T06:00,22.3,31,-4.1,0,0,5,8.9 -2022-12-17T07:00,18.6,37,-3.3,0,0,4.3,8.1 -2022-12-17T08:00,20.5,34,-3.2,0,0,4.2,5.8 -2022-12-17T09:00,25.3,27,-4.3,0,0,5.2,9.6 -2022-12-17T10:00,29.6,21,-5.9,0,0,4.6,11 -2022-12-17T11:00,32.5,19,-5.3,0,0,4.9,12.1 -2022-12-17T12:00,35.2,17,-4.9,0,0,4.4,11.9 -2022-12-17T13:00,37,17,-4.1,0,0,4.7,11.4 -2022-12-17T14:00,37.7,17,-3.6,0,0,4.8,11.4 -2022-12-17T15:00,36.9,17,-3.5,0,0,4.5,10.5 -2022-12-17T16:00,30.9,22,-3.2,0,0,5.2,8.1 -2022-12-17T17:00,21.7,41,1.7,0,0,8.2,8.9 -2022-12-17T18:00,22.2,39,1.1,0,0,6.5,9.4 -2022-12-17T19:00,22.7,37,0.5,0,0,4.4,7.6 -2022-12-17T20:00,20.6,41,0.5,0,0,3,6 -2022-12-17T21:00,19.3,44,1,0,0,5,7.6 -2022-12-17T22:00,19,45,1,0,0,5.3,8.9 -2022-12-17T23:00,19,43,0.1,0,0,3.9,8.3 -2022-12-18T00:00,18.8,41,-0.9,0,0,3.5,6.3 -2022-12-18T01:00,18.9,39,-2,0,0,3.2,5.6 -2022-12-18T02:00,19.4,36,-3,0,0,3.6,5.1 -2022-12-18T03:00,19.8,35,-3.4,0,0,3.2,5.1 -2022-12-18T04:00,19.2,37,-3,0,0,3.5,5.4 -2022-12-18T05:00,17.1,43,-1.7,0,0,5.6,5.4 -2022-12-18T06:00,20.4,36,-2.5,0,0,3.5,6.7 -2022-12-18T07:00,22.5,31,-3.4,0,0,3.6,4.3 -2022-12-18T08:00,22.4,30,-4.1,0,0,3.8,5.1 -2022-12-18T09:00,27.5,24,-4.4,0,0,1.3,5.1 -2022-12-18T10:00,32.2,20,-4.5,0,0,3.5,8.3 -2022-12-18T11:00,36.4,16,-5.4,0,0,4,10.3 -2022-12-18T12:00,38.7,15,-5.4,0,0,4.1,10.3 -2022-12-18T13:00,39.3,15,-4,0,0,4.1,10.7 -2022-12-18T14:00,38.5,18,-1.7,0,0,4.4,10.5 -2022-12-18T15:00,36.7,20,-0.8,0,0,5.5,10.3 -2022-12-18T16:00,29.8,27,0.1,0,0,5.3,9.6 -2022-12-18T17:00,23.5,41,3.2,0,0,4.7,6.3 -2022-12-18T18:00,25.2,37,2.6,0,0,4,6 -2022-12-18T19:00,29.5,30,1.7,0,0,3.5,4.9 -2022-12-18T20:00,26.5,34,1.6,0,0,1.8,3.8 -2022-12-18T21:00,20.9,45,2.9,0,0,3.1,4 -2022-12-18T22:00,19.9,50,4.3,0,0,3.1,4.5 -2022-12-18T23:00,19.3,52,4.6,0,0,2.9,4 -2022-12-19T00:00,20.8,48,4.3,0,0,1.1,4 -2022-12-19T01:00,22.7,43,3.4,0,0,1.8,2.2 -2022-12-19T02:00,22.3,41,2.3,0,0,2.9,3.4 -2022-12-19T03:00,19.3,43,0.5,0,0,3.2,4 -2022-12-19T04:00,19.6,40,-0.7,0,0,2.2,3.8 -2022-12-19T05:00,14.5,52,0,0,0,3.2,3.8 -2022-12-19T06:00,16.3,47,-0.3,0,0,2.7,4.5 -2022-12-19T07:00,16.5,47,-0.4,0,0,2,4.5 -2022-12-19T08:00,18.3,42,-1.2,0,0,5.7,8.7 -2022-12-19T09:00,24.8,30,-2,0,0,5.2,10.3 -2022-12-19T10:00,31.9,22,-3,0,0,6.2,11.2 -2022-12-19T11:00,38.6,16,-3.7,0,0,10.5,18.3 -2022-12-19T12:00,44.1,13,-4.1,0,0,6.6,18.3 -2022-12-19T13:00,46,12,-3.8,0,0,1.8,13.6 -2022-12-19T14:00,46.1,12,-3.6,0,0,3.4,7.6 -2022-12-19T15:00,43.7,14,-3,0,0,6.1,10.1 -2022-12-19T16:00,36.5,20,-0.7,0,0,10.9,15.9 -2022-12-19T17:00,39.2,17,-2.4,0,0,4.6,16.8 -2022-12-19T18:00,28.5,29,0.2,0,0,5.9,8.7 -2022-12-19T19:00,25.3,39,3.7,0,0,5.9,12.1 -2022-12-19T20:00,22.6,41,2.1,0,0,5.7,8.7 -2022-12-19T21:00,22.3,40,1.6,0,0,5.8,7.6 -2022-12-19T22:00,22.9,38,1,0,0,3.8,7.6 -2022-12-19T23:00,23.2,37,1,0,0,3.8,5.8 -2022-12-20T00:00,22.1,39,1,0,0,2.7,5.8 -2022-12-20T01:00,21.3,41,1.3,0,0,3,3.4 -2022-12-20T02:00,23.2,37,0.5,0,0,3,4.5 -2022-12-20T03:00,23.2,36,0.1,0,0,3.7,5.8 -2022-12-20T04:00,23.4,35,-0.1,0,0,4.1,6.3 -2022-12-20T05:00,22.9,38,1.2,0,0,3.9,6.3 -2022-12-20T06:00,23.7,37,1,0,0,2.6,5.8 -2022-12-20T07:00,20.9,41,1,0,0,4.6,5.8 -2022-12-20T08:00,22.6,39,1.2,0,0,3,5.6 -2022-12-20T09:00,28.8,30,1.1,0,0,4.3,9.2 -2022-12-20T10:00,35.8,22,0.6,0,0,4.2,9.6 -2022-12-20T11:00,40.8,17,-1.1,0,0,4.7,10.7 -2022-12-20T12:00,44.4,14,-2.2,0,0,5.5,11.9 -2022-12-20T13:00,46.2,14,-0.6,0,0,4.8,11.9 -2022-12-20T14:00,46.9,15,1.9,0,0,4.1,10.1 -2022-12-20T15:00,42.6,19,3.5,0,0,4.5,7.6 -2022-12-20T16:00,38.5,23,3.7,0,0,5.1,6.7 -2022-12-20T17:00,38.5,25,5.5,0,0,1.1,5.8 -2022-12-20T18:00,34.5,31,6.9,0,0,3.6,3.8 -2022-12-20T19:00,30.1,45,11.1,0,0,5.3,7.8 -2022-12-20T20:00,27.3,56,13.7,0,0,4.9,8.3 -2022-12-20T21:00,28.6,53,13.6,0,0,2.1,5.6 -2022-12-20T22:00,25.5,57,12.6,0,0,2.8,4.5 -2022-12-20T23:00,24.6,59,12.4,0,0,2.4,3.6 -2022-12-21T00:00,25.3,57,12.4,0,0,1.4,2.7 -2022-12-21T01:00,21.9,67,12.5,0,0,2.8,3.1 -2022-12-21T02:00,21.7,66,12.1,0,0,3.8,5.1 -2022-12-21T03:00,21.7,65,11.6,0,0,3.6,5.8 -2022-12-21T04:00,26.1,53,11.4,0,0,2.2,4.9 -2022-12-21T05:00,28.1,49,11.2,0,0,5.3,6 -2022-12-21T06:00,25.9,54,11.6,0,0,6,8.5 -2022-12-21T07:00,25.3,55,11.3,0,0,5.4,8.3 -2022-12-21T08:00,25.5,53,10.9,0,0,4.1,8.5 -2022-12-21T09:00,32.6,40,10.9,0,0,7.8,12.1 -2022-12-21T10:00,41.5,27,9.7,0,0,3.7,13 -2022-12-21T11:00,46.8,19,6.9,0,0,7.8,14.1 -2022-12-21T12:00,47,22,9.7,0,0,12.9,23 -2022-12-21T13:00,49.1,19,8.1,0,0,11.2,22.4 -2022-12-21T14:00,48.4,19,8.5,0,0,12.1,20.8 -2022-12-21T15:00,46.8,22,10.2,0,0,6.8,20.6 -2022-12-21T16:00,41.4,27,9.6,0,0,6,13.9 -2022-12-21T17:00,11.2,54,-2.2,0,0,28.9,12.1 -2022-12-21T18:00,3.5,51,-10.5,0,0,10.8,44.3 -2022-12-21T19:00,2,50,-12.3,0,0.055,10.1,20.6 -2022-12-21T20:00,-0.8,51,-14.4,0,0.083,9.1,18.1 -2022-12-21T21:00,-1.9,52,-15.2,0,0.028,8.9,17.2 -2022-12-21T22:00,-2.8,56,-14.6,0,0.055,9.8,17.9 -2022-12-21T23:00,-3.5,59,-14.2,0,0.331,6.6,18.1 -2022-12-22T00:00,-5.4,69,-13,0,0.276,6.9,13.4 -2022-12-22T01:00,-6.1,70,-13.2,0,0.138,7.9,13.2 -2022-12-22T02:00,-6.8,70,-13.9,0,0.055,7.1,14.1 -2022-12-22T03:00,-6.9,70,-14.2,0,0.083,6.1,13.2 -2022-12-22T04:00,-7.8,70,-14.9,0,0.11,7.2,12.8 -2022-12-22T05:00,-9.8,71,-16.8,0,0.083,5.4,12.8 -2022-12-22T06:00,-11.5,69,-18.8,0,0.055,2.2,9.2 -2022-12-22T07:00,-12.7,71,-19.6,0,0.028,0.7,4.5 -2022-12-22T08:00,-11.9,71,-18.8,0,0.028,0.8,2.7 -2022-12-22T09:00,-10.8,64,-19.7,0,0.028,0.2,2.5 -2022-12-22T10:00,-9.4,61,-19.1,0,0,2.4,5.4 -2022-12-22T11:00,-8.4,59,-18.8,0,0,4.1,9.2 -2022-12-22T12:00,-7.2,56,-18.8,0,0,3.1,8.5 -2022-12-22T13:00,-5.4,51,-18.8,0,0,2.5,7.4 -2022-12-22T14:00,-3.5,51,-17.2,0,0,2.5,6.9 -2022-12-22T15:00,-4.3,48,-19,0,0,4.1,8.1 -2022-12-22T16:00,-5.8,52,-19,0,0,8.4,14.1 -2022-12-22T17:00,-9,60,-19,0,0,8.7,16.8 -2022-12-22T18:00,-11.4,61,-21.2,0,0,5.4,14.8 -2022-12-22T19:00,-14.7,62,-24.1,0,0,7.7,11.2 -2022-12-22T20:00,-7.5,48,-22,0,0,3.8,10.7 -2022-12-22T21:00,-4.8,41,-22.6,0,0,4.1,5.4 -2022-12-22T22:00,-11.7,50,-25.3,0,0,6.8,9.4 -2022-12-22T23:00,-14.3,54,-26.1,0,0,8.2,11 -2022-12-23T00:00,-16.1,55,-27.6,0,0,9.5,12.8 -2022-12-23T01:00,-15.6,53,-27.8,0,0,8.9,12.8 -2022-12-23T02:00,-15.7,53,-27.7,0,0,9.2,12.3 -2022-12-23T03:00,-15.7,55,-27.2,0,0,8.7,12.5 -2022-12-23T04:00,-12.9,51,-26,0,0,7.9,11.9 -2022-12-23T05:00,-11.5,59,-21.9,0,0,8.3,11 -2022-12-23T06:00,-3.6,44,-20.1,0,0,4.4,10.7 -2022-12-23T07:00,-5.4,45,-21.5,0,0,5.4,7.2 -2022-12-23T08:00,-11.1,53,-23.4,0,0,7.2,10.3 -2022-12-23T09:00,-5,50,-18.9,0,0,4.6,10.3 -2022-12-23T10:00,-0.3,52,-13.9,0,0,2.5,7.8 -2022-12-23T11:00,2,46,-14.2,0,0,2.9,5.8 -2022-12-23T12:00,4.5,48,-11,0,0,4.6,8.5 -2022-12-23T13:00,6.1,47,-9.8,0,0,3.5,8.5 -2022-12-23T14:00,7.6,49,-7.5,0,0,4.8,8.9 -2022-12-23T15:00,7.4,53,-6.2,0,0,3.9,9.2 -2022-12-23T16:00,4.4,59,-6.8,0,0,3.9,7.8 -2022-12-23T17:00,1.2,66,-7.5,0,0,3.5,8.9 -2022-12-23T18:00,-2.4,74,-8.7,0,0,3.5,7.4 -2022-12-23T19:00,-3.8,79,-8.6,0,0,3.3,6.5 -2022-12-23T20:00,-3.8,84,-7.4,0,0,1.1,4.7 -2022-12-23T21:00,-4.8,88,-7.5,0,0,1,2.7 -2022-12-23T22:00,-3.6,83,-7.4,0,0,2.6,5.6 -2022-12-23T23:00,-2.6,81,-7,0,0,1.7,6.3 -2022-12-24T00:00,-1.4,79,-6.3,0,0,3.8,7.8 -2022-12-24T01:00,0.1,73,-6.5,0,0,4.5,7.8 -2022-12-24T02:00,5.9,69,-2.2,0,0,6.1,8.1 -2022-12-24T03:00,8.8,68,0.4,0,0,6.1,8.5 -2022-12-24T04:00,15.6,52,1,0,0,1.2,7.8 -2022-12-24T05:00,18.5,67,9.5,0,0,3.2,7.4 -2022-12-24T06:00,16.8,79,11.4,0,0,5.3,7.8 -2022-12-24T07:00,23.1,77,16.9,0,0,5,7.8 -2022-12-24T08:00,24.8,75,18.1,0,0,6.5,10.3 -2022-12-24T09:00,29.1,70,20.4,0,0,6,11.2 -2022-12-24T10:00,33.1,70,24.4,0,0,4.9,10.3 -2022-12-24T11:00,41.6,46,22.5,0,0,3.2,7.4 -2022-12-24T12:00,38.8,62,26.8,0,0,4.5,7.8 -2022-12-24T13:00,39.3,58,25.7,0,0,4.2,7.6 -2022-12-24T14:00,39.7,57,25.9,0,0,4.3,8.5 -2022-12-24T15:00,38.3,61,25.9,0,0,4.3,8.5 -2022-12-24T16:00,38.8,49,21.3,0,0,2.1,7.4 -2022-12-24T17:00,38.8,48,20.7,0,0,7.2,4.5 -2022-12-24T18:00,40.6,45,21,0,0,4.8,8.7 -2022-12-24T19:00,32.2,62,20.7,0,0,5.5,6.5 -2022-12-24T20:00,31.3,63,20.2,0,0,6.8,7.8 -2022-12-24T21:00,32.4,61,20.4,0,0,6.8,8.5 -2022-12-24T22:00,31.4,62,19.9,0,0,4.7,8.1 -2022-12-24T23:00,28,63,17,0,0,4,6.3 -2022-12-25T00:00,27.9,59,15.4,0,0,4.9,7.6 -2022-12-25T01:00,27.7,60,15.6,0,0,5.8,9.2 -2022-12-25T02:00,28.3,61,16.6,0,0,5.4,9.2 -2022-12-25T03:00,28.6,63,17.5,0,0,7.8,10.1 -2022-12-25T04:00,32.5,54,17.6,0,0,3.7,9.2 -2022-12-25T05:00,28.1,64,17.5,0,0,6.9,6 -2022-12-25T06:00,27.2,69,18.4,0,0,11.9,17.4 -2022-12-25T07:00,29.1,67,19.5,0,0,11.4,19.2 -2022-12-25T08:00,32.5,64,21.6,0,0,9.5,17 -2022-12-25T09:00,39.8,50,22.6,0,0,3.8,15.4 -2022-12-25T10:00,46.9,40,23.8,0,0,1.2,8.3 -2022-12-25T11:00,52.2,36,26.2,0,0,17.2,27.3 -2022-12-25T12:00,52.8,36,26.2,0,0,8.6,29.5 -2022-12-25T13:00,49.6,40,26.2,0,0,8.8,14.8 -2022-12-25T14:00,49.9,39,26.2,0,0,12.3,18.8 -2022-12-25T15:00,47.3,44,26.4,0,0,11.2,19 -2022-12-25T16:00,42.6,52,26.1,0,0,8.3,17.4 -2022-12-25T17:00,37.2,62,25.5,0,0,6,13.4 -2022-12-25T18:00,34.3,69,25.3,0,0,6.1,9.8 -2022-12-25T19:00,37.3,60,24.7,0,0,10.3,15.2 -2022-12-25T20:00,39.8,55,24.8,0,0,10,18.3 -2022-12-25T21:00,40.9,52,24.4,0,0,8.1,15.9 -2022-12-25T22:00,35.2,63,23.9,0,0,5.3,12.8 -2022-12-25T23:00,32.8,73,25.1,0,0,5.1,8.7 -2022-12-26T00:00,29.3,83,24.7,0,0,3.8,8.9 -2022-12-26T01:00,28.8,78,22.7,0,0,4.8,6 -2022-12-26T02:00,28.7,72,20.8,0,0,4.5,6.5 -2022-12-26T03:00,27.9,72,20,0,0,4.3,6.7 -2022-12-26T04:00,27,75,19.9,0,0,4.6,5.8 -2022-12-26T05:00,26.4,87,23,0,0,5.8,7.2 -2022-12-26T06:00,26.5,88,23.5,0,0,8.4,13.2 -2022-12-26T07:00,29,81,23.8,0,0,7.4,14.1 -2022-12-26T08:00,30.1,72,22,0,0,5.4,11 -2022-12-26T09:00,33,62,21.4,0,0,4.1,7.8 -2022-12-26T10:00,37.6,53,22.1,0,0,5.9,11.2 -2022-12-26T11:00,43,43,21.8,0,0,6.6,12.8 -2022-12-26T12:00,48.7,34,21.2,0,0,7.2,13.4 -2022-12-26T13:00,51.4,30,20.9,0,0,6.3,13.6 -2022-12-26T14:00,51.8,30,21.1,0,0,7.4,12.5 -2022-12-26T15:00,49.3,34,22.3,0,0,4.8,12.1 -2022-12-26T16:00,40.6,49,22.9,0,0,8.5,9.6 -2022-12-26T17:00,34.1,66,24,0,0,6.6,10.1 -2022-12-26T18:00,32.5,71,24.3,0,0,4.6,8.3 -2022-12-26T19:00,31.3,76,24.5,0,0,5.2,8.5 -2022-12-26T20:00,31,78,24.9,0,0,6.7,8.1 -2022-12-26T21:00,32.2,73,24.6,0,0,6.6,9.2 -2022-12-26T22:00,36.1,62,24.4,0,0,7.6,11.2 -2022-12-26T23:00,38.3,55,23.6,0,0,9.7,15.2 -2022-12-27T00:00,37.2,56,23,0,0,8.7,15.2 -2022-12-27T01:00,36.5,57,22.9,0,0,10,16.3 -2022-12-27T02:00,34.2,63,22.7,0,0,8.2,15.9 -2022-12-27T03:00,33.5,64,22.6,0,0,9,13.6 -2022-12-27T04:00,33.3,64,22.3,0,0,8.7,14.3 -2022-12-27T05:00,31.5,67,21.9,0,0,6.5,13.6 -2022-12-27T06:00,32.7,62,21.2,0,0,6.1,8.9 -2022-12-27T07:00,31.1,66,21,0,0,7.2,8.9 -2022-12-27T08:00,32.9,62,21.4,0,0,5.6,9.4 -2022-12-27T09:00,41.7,46,22.3,0,0,6.7,9.2 -2022-12-27T10:00,50.3,32,21.7,0,0,10,15.4 -2022-12-27T11:00,55.7,27,22.4,0,0,5.6,15.7 -2022-12-27T12:00,59.2,24,22.5,0,0,8.2,14.3 -2022-12-27T13:00,61.3,22,21.8,0,0,7.6,14.8 -2022-12-27T14:00,61.2,22,22.3,0,0,8.3,14.5 -2022-12-27T15:00,59.3,25,23.6,0,0,10.4,16.3 -2022-12-27T16:00,54.1,30,23.6,0,0,9.4,17.7 -2022-12-27T17:00,50.8,32,21.8,0,0,4.5,15.2 -2022-12-27T18:00,47.1,38,22.6,0,0,5.7,6.9 -2022-12-27T19:00,48.4,36,22.5,0,0,4.2,7.2 -2022-12-27T20:00,38.6,59,25.3,0,0,4.7,6.9 -2022-12-27T21:00,36.3,65,25.5,0,0,6.6,11.6 -2022-12-27T22:00,37.4,62,25.5,0,0,5.6,10.5 -2022-12-27T23:00,38.5,60,25.9,0,0,5.7,7.2 -2022-12-28T00:00,38,61,25.8,0,0,5.2,6.9 -2022-12-28T01:00,38.5,62,26.6,0,0,4.7,6 -2022-12-28T02:00,37.3,64,26.4,0,0,5.7,6.5 -2022-12-28T03:00,40.4,58,26.8,0,0,3.9,7.2 -2022-12-28T04:00,39.6,59,26.6,0,0,3.4,4.7 -2022-12-28T05:00,29.3,85,25.3,0,0,3,5.4 -2022-12-28T06:00,28,88,24.9,0,0,4.4,5.6 -2022-12-28T07:00,28.8,88,25.5,0,0,4.6,5.6 -2022-12-28T08:00,30.6,83,26,0,0,2.9,5.4 -2022-12-28T09:00,37.2,66,27,0,0,0.8,4.5 -2022-12-28T10:00,44,54,28.5,0,0,3.7,7.8 -2022-12-28T11:00,48.7,43,26.9,0,0,6,12.1 -2022-12-28T12:00,52.8,33,24.8,0,0,5.6,12.3 -2022-12-28T13:00,50.5,41,27.4,0,0,9.5,15.4 -2022-12-28T14:00,46.2,52,29.7,0,0,9.2,16.3 -2022-12-28T15:00,44.4,59,30.9,0,0,3.1,15 -2022-12-28T16:00,41.2,77,34.4,0.016,0,2,5.4 -2022-12-28T17:00,38,86,34.1,0.039,0.028,5.6,3.4 -2022-12-28T18:00,37.6,90,34.9,0.008,0,4.6,7.2 -2022-12-28T19:00,34.7,99,34.4,0.035,0.083,7.7,12.5 -2022-12-28T20:00,33.4,99,33.3,0.02,0.689,5.8,11.9 -2022-12-28T21:00,32.8,99,32.6,0.008,1.102,8.3,13.4 -2022-12-28T22:00,32.5,97,31.6,0,1.378,5.3,13.4 -2022-12-28T23:00,32.3,97,31.6,0,1.102,2.2,8.1 -2022-12-29T00:00,31.2,97,30.4,0,0.689,2.8,4.9 -2022-12-29T01:00,31.1,94,29.5,0,0.661,1.4,2.9 -2022-12-29T02:00,30.2,97,29.6,0,0.358,1.8,2.7 -2022-12-29T03:00,28.8,97,28,0,0.083,3.7,4.5 -2022-12-29T04:00,28.8,96,27.8,0,0.055,3.6,5.4 -2022-12-29T05:00,26.8,96,25.7,0,0.028,2.7,5.6 -2022-12-29T06:00,26.1,95,24.8,0,0,3.2,4.9 -2022-12-29T07:00,22.6,87,19.4,0,0,4.7,7.8 -2022-12-29T08:00,19.6,85,15.8,0,0,4.4,8.3 -2022-12-29T09:00,18.9,86,15.4,0,0,3.7,7.2 -2022-12-29T10:00,22.5,81,17.6,0,0,3.5,6.5 -2022-12-29T11:00,26.4,74,19.4,0,0,1.6,5.8 -2022-12-29T12:00,27.2,75,20.2,0,0,3.5,4 -2022-12-29T13:00,28.4,68,19.1,0,0,4,4.9 -2022-12-29T14:00,27.3,65,17,0,0,6.1,6.5 -2022-12-29T15:00,24.4,61,12.9,0,0,8.1,8.9 -2022-12-29T16:00,20.6,62,9.6,0,0,8.2,9.6 -2022-12-29T17:00,29.3,50,12.8,0,0,2.1,9.8 -2022-12-29T18:00,17.2,73,10,0,0,5.1,6.7 -2022-12-29T19:00,11.7,81,7.1,0,0,5.1,6.3 -2022-12-29T20:00,6.9,86,3.6,0,0,7,8.1 -2022-12-29T21:00,6.6,82,2.3,0,0,6.5,8.3 -2022-12-29T22:00,3.9,78,-1.4,0,0,9,10.3 -2022-12-29T23:00,4.1,76,-1.7,0,0,9.3,11.6 -2022-12-30T00:00,10.4,68,2,0,0,5.4,11.4 -2022-12-30T01:00,8.6,67,-0.1,0,0,6.9,7.6 -2022-12-30T02:00,6.9,67,-1.7,0,0,6.8,8.3 -2022-12-30T03:00,10.9,63,0.9,0,0,4.7,8.1 -2022-12-30T04:00,5.4,72,-1.6,0,0,5.3,5.8 -2022-12-30T05:00,7.6,76,1.5,0,0,5.6,7.2 -2022-12-30T06:00,7.9,78,2.4,0,0,6.5,8.3 -2022-12-30T07:00,12.1,75,5.6,0,0,5.3,8.1 -2022-12-30T08:00,14.4,75,8,0,0,4.9,7.8 -2022-12-30T09:00,15.6,77,9.6,0,0,6.2,7.6 -2022-12-30T10:00,21.2,72,13.6,0,0,3.9,7.2 -2022-12-30T11:00,24.6,66,14.8,0,0,4.3,6.5 -2022-12-30T12:00,27.8,69,19,0,0,3.7,5.1 -2022-12-30T13:00,31,61,19,0,0,3.2,4.9 -2022-12-30T14:00,32,60,19.8,0,0,3.5,3.8 -2022-12-30T15:00,33.7,53,18.6,0,0,3.3,4.7 -2022-12-30T16:00,33.1,54,18.3,0,0,1.2,3.8 -2022-12-30T17:00,27.9,63,17,0,0,2.6,2.2 -2022-12-30T18:00,28,63,17,0,0,1.6,3.6 -2022-12-30T19:00,19.3,80,14.3,0,0,5.6,7.2 -2022-12-30T20:00,15.3,81,10.5,0,0,6.8,8.1 -2022-12-30T21:00,16.6,76,10.5,0,0,7.6,9.6 -2022-12-30T22:00,13.7,79,8.4,0,0,7.3,8.7 -2022-12-30T23:00,14.9,79,9.7,0,0,8.2,10.3 -2022-12-31T00:00,16.5,78,10.8,0,0,8.3,10.3 -2022-12-31T01:00,16.3,79,10.9,0,0,9.1,11 -2022-12-31T02:00,20.4,74,13.4,0,0,6.8,11 -2022-12-31T03:00,21.1,75,14.5,0,0,6.2,7.8 -2022-12-31T04:00,27.1,69,18.2,0,0,3.4,7.4 -2022-12-31T05:00,20.8,84,16.8,0,0,4.3,5.6 -2022-12-31T06:00,18.6,87,15.3,0,0,6.2,7.4 -2022-12-31T07:00,23.6,79,18.1,0,0,4.7,7.8 -2022-12-31T08:00,22.8,84,18.6,0,0,6.6,8.5 -2022-12-31T09:00,29.1,77,22.7,0,0,4.1,7.8 -2022-12-31T10:00,32.4,78,26.2,0,0,5.2,8.1 -2022-12-31T11:00,37.6,70,28.6,0,0,6,8.7 -2022-12-31T12:00,40.8,63,29.1,0,0,8.8,13.6 -2022-12-31T13:00,39.7,70,30.6,0,0,6.8,13.6 -2022-12-31T14:00,39.9,69,30.7,0,0,7.9,9.6 -2022-12-31T15:00,44.7,52,28.3,0,0,2.7,8.9 -2022-12-31T16:00,37.7,71,29.2,0,0,6.1,8.5 -2022-12-31T17:00,30.3,90,27.8,0,0,7.5,14.5 -2022-12-31T18:00,28.1,90,25.5,0,0,4.5,8.9 -2022-12-31T19:00,24.8,94,23.3,0,0,4.8,6.9 -2022-12-31T20:00,22.5,94,21,0,0,6.3,6.9 -2022-12-31T21:00,21.8,92,19.9,0,0,7.7,9.4 -2022-12-31T22:00,22.5,89,19.8,0,0,6.9,10.3 -2022-12-31T23:00,19.9,90,17.4,0,0,9,10.5 -2023-01-01T00:00,19,89,16.4,0,0,9.1,11 -2023-01-01T01:00,20,87,16.8,0,0,7.4,11 -2023-01-01T02:00,22,84,18,0,0,5.5,8.7 -2023-01-01T03:00,24.7,78,18.9,0,0,3,6.7 -2023-01-01T04:00,22.9,79,17.3,0,0,5.4,6.3 -2023-01-01T05:00,20,84,16,0,0,5.6,6.3 -2023-01-01T06:00,17.4,87,14.3,0,0,5.1,6.7 -2023-01-01T07:00,16.4,88,13.5,0,0,5.4,6.7 -2023-01-01T08:00,15.9,87,12.7,0,0,5.2,7.6 -2023-01-01T09:00,19.9,82,15.4,0,0,3.7,6.5 -2023-01-01T10:00,24.8,73,17.5,0,0,2.1,4.7 -2023-01-01T11:00,28,76,21.6,0,0,0.7,2.7 -2023-01-01T12:00,30.6,74,23.4,0,0,3.7,6 -2023-01-01T13:00,31,84,26.7,0,0,6.2,9.8 -2023-01-01T14:00,32.2,86,28.6,0,0,6.3,10.1 -2023-01-01T15:00,32.1,85,28,0,0,5.9,10.7 -2023-01-01T16:00,30.7,86,27.1,0,0,4.7,10.1 -2023-01-01T17:00,22.6,94,21.2,0,0,6.6,7.4 -2023-01-01T18:00,27.5,90,25.1,0,0,2.4,7.8 -2023-01-01T19:00,26,93,24.3,0,0,2.5,4.3 -2023-01-01T20:00,26.5,94,25.1,0,0,2.7,4.9 -2023-01-01T21:00,26.2,95,24.9,0,0.028,2.1,4.5 -2023-01-01T22:00,26,96,24.9,0,0.028,1.9,2.7 -2023-01-01T23:00,25.9,96,24.9,0,0.028,1.6,2.7 \ No newline at end of file diff --git a/viz_scripts/docker/Dockerfile.dev b/viz_scripts/docker/Dockerfile.dev deleted file mode 100644 index f6c10b1..0000000 --- a/viz_scripts/docker/Dockerfile.dev +++ /dev/null @@ -1,24 +0,0 @@ -# python 3 -FROM emission/e-mission-server.dev.server-only:4.0.0 -ARG SERVER_REPO=https://github.com/aGuttman/e-mission-server.git -ARG SERVER_BRANCH=dashboard-dependencies - -VOLUME /plots - -ADD docker/environment36.dashboard.additions.yml / - -RUN /bin/bash -c "/clone_server.sh" - -WORKDIR /usr/src/app - -RUN /bin/bash -c "cd e-mission-server && source setup/activate.sh && conda env update --name emission --file setup/environment36.notebook.additions.yml" -RUN /bin/bash -c "cd e-mission-server && source setup/activate.sh && conda env update --name emission --file /environment36.dashboard.additions.yml" - -ADD docker/start_notebook.sh /usr/src/app/.docker/start_notebook.sh -RUN chmod u+x /usr/src/app/.docker/start_notebook.sh - -ADD docker/crontab /usr/src/app/crontab - -EXPOSE 8888 - -CMD ["/bin/bash", "/usr/src/app/.docker/start_notebook.sh"] diff --git a/viz_scripts/docker/crontab b/viz_scripts/docker/crontab deleted file mode 100644 index d02d3d5..0000000 --- a/viz_scripts/docker/crontab +++ /dev/null @@ -1,8 +0,0 @@ -0 7 * * * python bin/update_mappings.py mapping_dictionaries.ipynb >> /var/log/intake.stdinout 2>&1 -0 8 * * * python bin/generate_plots.py generic_metrics.ipynb default >> /var/log/intake.stdinout 2>&1 -0 8 * * * python bin/generate_plots.py generic_timeseries.ipynb default >> /var/log/intake.stdinout 2>&1 -0 8 * * * python bin/generate_plots.py mode_specific_metrics.ipynb default >> /var/log/intake.stdinout 2>&1 -0 8 * * * python bin/generate_plots.py mode_specific_timeseries.ipynb default >> /var/log/intake.stdinout 2>&1 -0 8 * * * python bin/generate_plots.py energy_calculations.ipynb default >> /var/log/intake.stdinout 2>&1 -# For testing only -# */5 * * * * python bin/generate_plots.py mode_purpose_share.ipynb default >> /var/log/intake.stdinout 2>&1 diff --git a/viz_scripts/docker/environment36.dashboard.additions.yml b/viz_scripts/docker/environment36.dashboard.additions.yml deleted file mode 100644 index 76d37e7..0000000 --- a/viz_scripts/docker/environment36.dashboard.additions.yml +++ /dev/null @@ -1,9 +0,0 @@ -name: emission -channels: -- conda-forge -- defaults -dependencies: -- seaborn=0.11.1 -- pip: - - nbparameterise - - devcron diff --git a/viz_scripts/docker/generate_plots.sh b/viz_scripts/docker/generate_plots.sh deleted file mode 100755 index 6674f4a..0000000 --- a/viz_scripts/docker/generate_plots.sh +++ /dev/null @@ -1,5 +0,0 @@ -cd e-mission-server -source setup/activate.sh -cd ../saved-notebooks - -PYTHONPATH=/usr/src/app/e-mission-server python bin/generate_plots.py $* diff --git a/viz_scripts/docker/load_mongodump.sh b/viz_scripts/docker/load_mongodump.sh deleted file mode 100644 index fb17cd7..0000000 --- a/viz_scripts/docker/load_mongodump.sh +++ /dev/null @@ -1,9 +0,0 @@ -MONGODUMP_FILE=$1 - -echo "Copying file to docker container" -docker cp $MONGODUMP_FILE em-public-dashboard_db_1:/tmp - -FILE_NAME=`basename $MONGODUMP_FILE` - -echo "Restoring the dump from $FILE_NAME" -docker exec -e MONGODUMP_FILE=$FILE_NAME em-public-dashboard_db_1 bash -c 'cd /tmp && tar xvf $MONGODUMP_FILE && mongorestore' diff --git a/viz_scripts/docker/start_notebook.sh b/viz_scripts/docker/start_notebook.sh deleted file mode 100755 index d08a5e9..0000000 --- a/viz_scripts/docker/start_notebook.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env bash -#Configure web server - -pushd /usr/src/app/e-mission-server - -#set database URL using environment variable -echo "DB host = "${DB_HOST} -if [ -z ${DB_HOST} ] ; then - local_host=`hostname -i` - sed "s_localhost_${local_host}_" conf/storage/db.conf.sample > conf/storage/db.conf -else - sed "s_localhost_${DB_HOST}_" conf/storage/db.conf.sample > conf/storage/db.conf -fi -popd - -### configure the saved-notebooks directory for persistent notebooks - -# Ensure that the database config is available so that we can connect to it -mkdir -p saved-notebooks/conf/storage -cp e-mission-server/conf/storage/db.conf saved-notebooks/conf/storage/db.conf -cat saved-notebooks/conf/storage/db.conf - -#set Web Server host using environment variable -echo "Web host = "${WEB_SERVER_HOST} - -# change python environment -pushd e-mission-server -pwd -source setup/activate.sh -conda env list -popd - -cd saved-notebooks - -# launch the notebook server -# tail -f /dev/null -if [ -z ${CRON_MODE} ] ; then - echo "Running notebook in docker, change host:port to localhost:47962 in the URL below" - PYTHONPATH=/usr/src/app/e-mission-server jupyter notebook --no-browser --ip=${WEB_SERVER_HOST} --allow-root -else - echo "Running crontab without user interaction, setting python path" - export PYTHONPATH=/usr/src/app/e-mission-server - # tail -f /dev/null - devcron ../crontab >> /var/log/cron.console.stdinout 2>&1 -fi diff --git a/viz_scripts/docker/update_mappings.sh b/viz_scripts/docker/update_mappings.sh deleted file mode 100755 index 866bfb7..0000000 --- a/viz_scripts/docker/update_mappings.sh +++ /dev/null @@ -1,5 +0,0 @@ -cd e-mission-server -source setup/activate.sh -cd ../saved-notebooks - -PYTHONPATH=/usr/src/app/e-mission-server python bin/update_mappings.py $* diff --git a/viz_scripts/energy_calculations.ipynb b/viz_scripts/energy_calculations.ipynb deleted file mode 100644 index a8efd6b..0000000 --- a/viz_scripts/energy_calculations.ipynb +++ /dev/null @@ -1,260 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "united-feeding", - "metadata": {}, - "source": [ - "## Generate Static Graphs" - ] - }, - { - "cell_type": "markdown", - "id": "outdoor-celebrity", - "metadata": {}, - "source": [ - "These are the input parameters for the notebook. They will be automatically changed when the scripts to generate monthly statistics are run. You can modify them manually to generate multiple plots locally as well.\n", - "\n", - "Pass in `None` to remove the filters and plot all data. This is not recommended for production settings, but might be useful for reports based on data snapshots." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "determined-matrix", - "metadata": {}, - "outputs": [], - "source": [ - "year = 2020\n", - "month = 11\n", - "program = \"default\"\n", - "study_type = \"program\"\n", - "mode_of_interest = \"e-bike\"\n", - "include_test_users = False" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "pharmaceutical-survival", - "metadata": {}, - "outputs": [], - "source": [ - "from collections import defaultdict\n", - "\n", - "import numpy as np\n", - "import pandas as pd\n", - "\n", - "from plots import *\n", - "import scaffolding\n", - "\n", - "sns.set_style(\"whitegrid\")\n", - "sns.set()\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "furnished-silicon", - "metadata": {}, - "outputs": [], - "source": [ - "# Do not run this notebook at all unless it is for a program; nbclient will run up through this cell\n", - "if study_type != \"program\":\n", - " ipython = get_ipython()\n", - " ipython._showtraceback = scaffolding.no_traceback_handler\n", - " raise Exception(\"The plots in this notebook are only relevant to programs\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "nearby-fruit", - "metadata": {}, - "outputs": [], - "source": [ - "# Loading mapping dictionaries from mapping_dictionaries notebook\n", - "%store -r df_ei\n", - "%store -r dic_re\n", - "%store -r dic_pur\n", - "%store -r dic_fuel\n", - "\n", - "# convert a dictionary to a defaultdict\n", - "dic_re = defaultdict(lambda: 'Other',dic_re)\n", - "dic_pur = defaultdict(lambda: 'Other',dic_pur)\n", - "dic_fuel = defaultdict(lambda: 'Other',dic_fuel)" - ] - }, - { - "cell_type": "markdown", - "id": "parallel-patch", - "metadata": {}, - "source": [ - "## Collect Data From Database" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "sufficient-kingston", - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "expanded_ct, file_suffix, quality_text, debug_df = scaffolding.load_viz_notebook_data(year,\n", - " month,\n", - " program,\n", - " study_type,\n", - " dic_re,\n", - " dic_pur=dic_pur,\n", - " include_test_users=include_test_users)\n", - "# CASE 1 of https://github.com/e-mission/em-public-dashboard/issues/69#issuecomment-1256835867 \n", - "expanded_ct = scaffolding.add_energy_impact(expanded_ct, df_ei, dic_fuel) if len(expanded_ct) > 0 else expanded_ct" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "625872b0", - "metadata": {}, - "outputs": [], - "source": [ - "if 'mode_confirm' in expanded_ct.columns:\n", - " mode_of_interest_df = expanded_ct.query(f\"mode_confirm == '{mode_of_interest}'\")\n", - " debug_df.loc[f\"{mode_of_interest}_trips\"] = len(mode_of_interest_df)\n", - " debug_df.loc[f\"{mode_of_interest}_trips_with_replaced_mode\"] = scaffolding.trip_label_count(\"Replaced_mode\", mode_of_interest_df)" - ] - }, - { - "cell_type": "markdown", - "id": "caring-aruba", - "metadata": {}, - "source": [ - "## Energy Impacts Relative to Specific Mode" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "blessed-leader", - "metadata": {}, - "outputs": [], - "source": [ - "# CASE 2 of https://github.com/e-mission/em-public-dashboard/issues/69#issuecomment-1256835867\n", - "data_eb = expanded_ct.query(f\"mode_confirm == '{mode_of_interest}'\") if \"mode_confirm\" in expanded_ct.columns else expanded_ct" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "seeing-court", - "metadata": {}, - "outputs": [], - "source": [ - "quality_text_mode = scaffolding.get_quality_text(expanded_ct, data_eb, mode_of_interest)" - ] - }, - { - "cell_type": "markdown", - "id": "advanced-complexity", - "metadata": {}, - "source": [ - "### Sketch of energy impact by trips for specified mode" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "dense-programmer", - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "# ebei : ebike energy impact\n", - "plot_title_no_quality=f\"Sketch of Energy Impact of {mode_of_interest} trips\"\n", - "file_name =f'sketch_energy_impact_{mode_of_interest}%s' % file_suffix\n", - " \n", - "try:\n", - " ebei=data_eb.groupby('Replaced_mode').agg({'Energy_Impact(kWH)': ['sum', 'mean']},)\n", - " ebei.columns = ['Sketch of Total Energy_Impact(kWH)', 'Sketch of Average Energy_Impact(kWH)']\n", - " ebei= ebei.reset_index()\n", - " ebei = ebei.sort_values(by=['Sketch of Total Energy_Impact(kWH)'], ascending=False)\n", - " ebei['boolean'] = ebei['Sketch of Total Energy_Impact(kWH)'] > 0\n", - " net_energy_saved = round(sum(ebei['Sketch of Total Energy_Impact(kWH)']), 2)\n", - "\n", - " x = ebei['Sketch of Total Energy_Impact(kWH)']\n", - " y = ebei['Replaced_mode']\n", - " color =ebei['boolean']\n", - "\n", - " plot_title= plot_title_no_quality+f\"\\n Contribution by replaced mode towards a total of {net_energy_saved}(kWH)\\n\"+quality_text\n", - " energy_impact(x,y,color,plot_title,file_name)\n", - " alt_text = store_alt_text_bar(pd.DataFrame(x.values,y), file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)" - ] - }, - { - "cell_type": "markdown", - "id": "strategic-sheet", - "metadata": {}, - "source": [ - "### Sketch of CO2 emissions impact by trips of specified mode" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "animated-place", - "metadata": {}, - "outputs": [], - "source": [ - "plot_title_no_quality=f\"Sketch of Total Pounds of CO2 Emissions of {mode_of_interest} trips\"\n", - "file_name =f'sketch_CO2impact_{mode_of_interest}%s' % file_suffix\n", - "\n", - "try:\n", - " ebco2=data_eb.groupby('Replaced_mode').agg({'CO2_Impact(lb)': ['sum', 'mean']},)\n", - " ebco2.columns = ['total_lb_CO2_emissions', 'average_lb_CO2_emission']\n", - " ebco2 = ebco2.reset_index()\n", - " ebco2 = ebco2.sort_values(by=['total_lb_CO2_emissions'], ascending=False)\n", - " ebco2['boolean'] = ebco2['total_lb_CO2_emissions'] > 0\n", - " net_CO2_emissions = round(sum(ebco2['total_lb_CO2_emissions']), 2)\n", - "\n", - " x = ebco2['total_lb_CO2_emissions']\n", - " y = ebco2['Replaced_mode']\n", - " color = ebco2['boolean']\n", - "\n", - " plot_title= plot_title_no_quality+f\"\\n Contribution by replaced mode towards a total of {net_CO2_emissions}(lb CO2 Emissions )\\n\"+quality_text\n", - " CO2_impact(x,y,color,plot_title,file_name)\n", - " alt_text = store_alt_text_bar(pd.DataFrame(x.values,y), file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/viz_scripts/generic_metrics.ipynb b/viz_scripts/generic_metrics.ipynb deleted file mode 100644 index b59a6e4..0000000 --- a/viz_scripts/generic_metrics.ipynb +++ /dev/null @@ -1,400 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "academic-context", - "metadata": {}, - "source": [ - "## Generate Static Graphs" - ] - }, - { - "cell_type": "markdown", - "id": "medium-siemens", - "metadata": {}, - "source": [ - "These are the input parameters for the notebook. They will be automatically changed when the scripts to generate monthly statistics are run. You can modify them manually to generate multiple plots locally as well.\n", - "\n", - "Pass in `None` to remove the filters and plot all data. This is not recommended for production settings, but might be useful for reports based on data snapshots." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "narrative-hunter", - "metadata": {}, - "outputs": [], - "source": [ - "year = 2020\n", - "month = 11\n", - "program = \"default\"\n", - "study_type = \"study\"\n", - "mode_of_interest = None\n", - "include_test_users = False" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "activated-portugal", - "metadata": {}, - "outputs": [], - "source": [ - "from collections import defaultdict\n", - "\n", - "import numpy as np\n", - "import pandas as pd\n", - "\n", - "from plots import *\n", - "import scaffolding\n", - "\n", - "sns.set_style(\"whitegrid\")\n", - "sns.set()\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "alternative-voltage", - "metadata": {}, - "outputs": [], - "source": [ - "# Loading mapping dictionaries from mapping_dictionaries notebook\n", - "%store -r dic_re\n", - "%store -r dic_pur\n", - "\n", - "# convert a dictionary to a defaultdict\n", - "dic_re = defaultdict(lambda: 'Other',dic_re)\n", - "dic_pur = defaultdict(lambda: 'Other',dic_pur)" - ] - }, - { - "cell_type": "markdown", - "id": "intellectual-columbus", - "metadata": {}, - "source": [ - "## Collect Data From Database" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "organic-pitch", - "metadata": {}, - "outputs": [], - "source": [ - "expanded_ct, file_suffix, quality_text, debug_df = scaffolding.load_viz_notebook_data(year,\n", - " month,\n", - " program,\n", - " study_type,\n", - " dic_re,\n", - " dic_pur=dic_pur,\n", - " include_test_users=include_test_users)" - ] - }, - { - "cell_type": "markdown", - "id": "modified-skiing", - "metadata": {}, - "source": [ - "## Generic Metrics" - ] - }, - { - "cell_type": "markdown", - "id": "distributed-peace", - "metadata": {}, - "source": [ - "### Distribution of Mode_confirm attribute" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "tracked-serbia", - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "file_name='ntrips_mode_confirm%s' % file_suffix\n", - "plot_title_no_quality= \"Number of trips for each mode (selected by users)\"\n", - "try:\n", - " labels_mc = expanded_ct['Mode_confirm'].value_counts(dropna=True).keys().tolist()\n", - " values_mc = expanded_ct['Mode_confirm'].value_counts(dropna=True).tolist() \n", - " plot_title = plot_title_no_quality+\"\\n\"+quality_text\n", - " pie_chart_mode(plot_title,labels_mc,values_mc,file_name)\n", - " alt_text = store_alt_text_pie(pd.DataFrame(values_mc, labels_mc), file_name, plot_title)\n", - " print(expanded_ct['Mode_confirm'].value_counts(dropna=True))\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "about-seafood", - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "plot_title_no_quality= \"Number of commute trips for each mode (selected by users)\"\n", - "file_name= 'ntrips_commute_mode_confirm%s' % file_suffix\n", - "\n", - "try:\n", - " labels_mc = expanded_ct.query(\"Trip_purpose == 'Work'\").Mode_confirm.value_counts(dropna=True).keys().tolist()\n", - " values_mc = expanded_ct.query(\"Trip_purpose == 'Work'\").Mode_confirm.value_counts(dropna=True).tolist()\n", - " commute_quality_text = scaffolding.get_quality_text(expanded_ct, expanded_ct.query(\"Trip_purpose == 'Work'\"), \"commute\", include_test_users)\n", - " plot_title= plot_title_no_quality+\"\\n\"+commute_quality_text\n", - " pie_chart_mode(plot_title,labels_mc,values_mc,file_name)\n", - " alt_text = store_alt_text_pie(pd.DataFrame(values_mc, labels_mc), file_name, plot_title)\n", - " print(expanded_ct.query(\"Trip_purpose == 'Work'\").Mode_confirm.value_counts(dropna=True))\n", - "except:\n", - " debug_df.loc[\"Commute_trips\"] = len(expanded_ct.query(\"Trip_purpose == 'Work'\")) if \"Trip_purpose\" in expanded_ct.columns else 0\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)" - ] - }, - { - "cell_type": "markdown", - "id": "careful-spencer", - "metadata": {}, - "source": [ - "### Distribution of Trip_purpose attribute" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "conservative-september", - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "plot_title_no_quality=\"Number of trips for each purposes (selected by users)\"\n", - "file_name= 'ntrips_purpose%s' % file_suffix\n", - "\n", - "try:\n", - " labels_tp = expanded_ct['Trip_purpose'].value_counts(dropna=True).keys().tolist()\n", - " values_tp = expanded_ct['Trip_purpose'].value_counts(dropna=True).tolist()\n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - " pie_chart_purpose(plot_title,labels_tp,values_tp,file_name)\n", - " alt_text = store_alt_text_pie(pd.DataFrame(values_tp, labels_tp), file_name, plot_title)\n", - " print(expanded_ct['Trip_purpose'].value_counts(dropna=True))\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)" - ] - }, - { - "cell_type": "markdown", - "id": "crucial-keyboard", - "metadata": {}, - "source": [ - "### Mode choice for trips under 10 miles" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "identified-replica", - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "plot_title_no_quality=\"Mode confirmations for trips under 10 Miles\"\n", - "file_name ='ntrips_under10miles_mode_confirm%s' % file_suffix\n", - "try:\n", - " labels_d10 = expanded_ct.loc[(expanded_ct['distance_miles'] <= 10)].Mode_confirm.value_counts(dropna=True).keys().tolist()\n", - " values_d10 = expanded_ct.loc[(expanded_ct['distance_miles'] <= 10)].Mode_confirm.value_counts(dropna=True).tolist()\n", - " d10_quality_text = scaffolding.get_quality_text(expanded_ct, expanded_ct[expanded_ct['distance_miles'] <= 10], \"< 10 mile\", include_test_users)\n", - " plot_title= plot_title_no_quality+\"\\n\"+d10_quality_text\n", - " pie_chart_mode(plot_title,labels_d10,values_d10,file_name)\n", - " alt_text = store_alt_text_pie(pd.DataFrame(values_d10, labels_d10), file_name, plot_title)\n", - " print(expanded_ct.loc[(expanded_ct['distance_miles'] <= 10)].Mode_confirm.value_counts(dropna=True))\n", - "except:\n", - " d10_df = expanded_ct.query(\"distance_miles <= 10\") if \"distance_miles\" in expanded_ct.columns else expanded_ct\n", - " debug_df.loc[\"Trips_less_than_10_miles\"] = scaffolding.trip_label_count(\"Mode_confirm\", d10_df)\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)" - ] - }, - { - "cell_type": "markdown", - "id": "dominant-company", - "metadata": {}, - "source": [ - "### Miles per chosen transport mode" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "satisfied-sharing", - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "plot_title_no_quality=\"Miles for each mode (selected by users)\"\n", - "file_name ='miles_mode_confirm%s' % file_suffix\n", - "\n", - "try:\n", - " miles = expanded_ct.groupby('Mode_confirm').agg({'distance_miles': ['sum', 'count' , 'mean']})\n", - " miles.columns = ['Total (miles)', 'Count', 'Average (miles)']\n", - " miles = miles.reset_index()\n", - " miles =miles.sort_values(by=['Total (miles)'], ascending=False)\n", - "\n", - " #data\n", - " miles_dict = dict(zip(miles['Mode_confirm'], miles['Total (miles)']))\n", - "\n", - " labels_m = []\n", - " values_m = []\n", - "\n", - " for x, y in miles_dict.items():\n", - " labels_m.append(x)\n", - " values_m.append(y)\n", - " \n", - " plot_title=\"Miles for each mode (selected by users)\\n%s\" % quality_text\n", - "\n", - " pie_chart_mode(plot_title,labels_m,values_m,file_name)\n", - " alt_text = store_alt_text_pie(pd.DataFrame(values_m, labels_m), file_name, plot_title)\n", - " print(miles)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality) " - ] - }, - { - "cell_type": "markdown", - "id": "demanding-franklin", - "metadata": {}, - "source": [ - "### Average miles per transport mode selected (Mode_confirm)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "patent-cliff", - "metadata": {}, - "outputs": [], - "source": [ - "plot_title_no_quality=\" Average Miles for each mode with > 3 entries\"\n", - "file_name ='average_miles_mode_confirm%s' % file_suffix\n", - "\n", - "try:\n", - " data = miles.drop((miles.query(\"Count < 3\").index)).sort_values(by=['Average (miles)'], ascending=False)\n", - " x='Mode_confirm'\n", - " y='Average (miles)'\n", - " \n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - "\n", - " barplot_mode(data,x,y,plot_title,file_name)\n", - " alt_text = store_alt_text_bar(pd.DataFrame(data['Average (miles)'].values, data['Mode_confirm']), file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality) " - ] - }, - { - "cell_type": "markdown", - "id": "sound-bradley", - "metadata": {}, - "source": [ - "### Number of trips by day¶" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "alleged-subsection", - "metadata": {}, - "outputs": [], - "source": [ - "plot_title_no_quality=\"Number of trips by day\"\n", - "file_name ='ntrips_per_day%s' % file_suffix\n", - "\n", - "try:\n", - " fq_days = expanded_ct.groupby(['start_local_dt_day']).agg({'start_local_dt_day': ['sum', 'count']})\n", - " fq_days = fq_days.reset_index()\n", - " fq_days.columns = ['Day of the Month', 'Total', 'Number of Trips']\n", - "\n", - " data = fq_days\n", - " x = 'Day of the Month'\n", - " y = 'Number of Trips'\n", - " \n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - "\n", - " barplot_day(data,x,y,plot_title,file_name)\n", - " alt_text = store_alt_text_bar(pd.DataFrame(data['Number of Trips'].values, data['Day of the Month']), file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality) " - ] - }, - { - "cell_type": "markdown", - "id": "challenging-julian", - "metadata": {}, - "source": [ - "### Number of trips by day of week¶" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "hollywood-optimization", - "metadata": {}, - "outputs": [], - "source": [ - "plot_title_no_quality=\"Number of trips by weekday\"\n", - "file_name ='ntrips_per_weekday%s' % file_suffix\n", - "try:\n", - " fq_weekdays = expanded_ct.groupby(['start_local_dt_weekday']).agg({'start_local_dt_weekday': ['sum', 'count']})\n", - " fq_weekdays = fq_weekdays.reset_index()\n", - " fq_weekdays.columns = ['Weekday', 'Total', 'Number of Trips']\n", - " weekday_labels = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"]\n", - " fq_weekdays[\"Weekday\"] = fq_weekdays.Weekday.apply(lambda x: weekday_labels[x])\n", - "\n", - " data = fq_weekdays\n", - " x = 'Weekday'\n", - " y = 'Number of Trips'\n", - "\n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - " \n", - " barplot_day(data,x,y,plot_title,file_name)\n", - " alt_text = store_alt_text_bar(pd.DataFrame(data['Number of Trips'].values, data['Weekday']), file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality) " - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/viz_scripts/generic_timeseries.ipynb b/viz_scripts/generic_timeseries.ipynb deleted file mode 100644 index ca012da..0000000 --- a/viz_scripts/generic_timeseries.ipynb +++ /dev/null @@ -1,372 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Generate Static Graphs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "These are the input parameters for the notebook. They will be automatically changed when the scripts to generate monthly statistics are run. You can modify them manually to generate multiple plots locally as well.\n", - "\n", - "Pass in `None` to remove the filters and plot all data. This is not recommended for production settings, but might be useful for reports based on data snapshots." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "year = 2020\n", - "month = 11\n", - "program = \"default\"\n", - "study_type = \"study\"\n", - "mode_of_interest = None\n", - "include_test_users = False" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from collections import defaultdict\n", - "import datetime\n", - "\n", - "import numpy as np\n", - "import pandas as pd\n", - "\n", - "from plots import *\n", - "import scaffolding\n", - "\n", - "sns.set_style(\"whitegrid\")\n", - "sns.set()\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Loading mapping dictionaries from mapping_dictionaries notebook\n", - "%store -r df_ei\n", - "%store -r dic_re\n", - "%store -r dic_fuel\n", - "\n", - "# convert a dictionary to a defaultdict\n", - "dic_re = defaultdict(lambda: 'Other',dic_re)\n", - "dic_fuel = defaultdict(lambda: 'Other',dic_fuel)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Collect Data From Database" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "expanded_ct, file_suffix, quality_text, debug_df = scaffolding.load_viz_notebook_data(year,\n", - " month,\n", - " program,\n", - " study_type,\n", - " dic_re,\n", - " include_test_users=include_test_users)\n", - "expanded_ct = scaffolding.add_energy_labels(expanded_ct, df_ei, dic_fuel) if \"mode_confirm\" in expanded_ct.columns else expanded_ct" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Data Preprocessing" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Get timestamp from known year/month/day aggregated to days\n", - "sel_cols_no_label_dep = ['user_id','start_local_dt_year','start_local_dt_month','start_local_dt_day','distance_miles']\n", - "sel_cols_with_label_dep = sel_cols_no_label_dep + ['Mode_confirm','Mode_confirm_EI(kWH)','Mode_confirm_lb_CO2']\n", - "if len(expanded_ct) == 0:\n", - " data = expanded_ct.copy()\n", - "elif \"Mode_confirm\" not in expanded_ct.columns:\n", - " data = expanded_ct[sel_cols_no_label_dep].copy()\n", - "else:\n", - " data = expanded_ct[sel_cols_with_label_dep].copy()\n", - " \n", - "if len(expanded_ct) > 0:\n", - " data.rename(columns={'start_local_dt_year':'year','start_local_dt_month':'month','start_local_dt_day':'day'}, inplace=True)\n", - " data['date_time'] = pd.to_datetime(data[['year','month','day']])\n", - " data = data.drop(columns=['year','month','day'])\n", - "\n", - " # Categorical type will include all days/modes in groupby even if there is no data for a particular tabulation\n", - " data.user_id = pd.Categorical(data.user_id)\n", - " data.date_time = pd.Categorical(data.date_time)\n", - " \n", - " if \"Mode_confirm\" in expanded_ct.columns:\n", - " data.Mode_confirm = pd.Categorical(data.Mode_confirm, ordered=True, categories=np.unique(list(dic_re.values())))\n", - "\n", - "data.head()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "if len(expanded_ct) > 0:\n", - " # Get the count of unique users that were active on each given date\n", - " active_users = pd.DataFrame(data.groupby(['date_time'], as_index=False)['user_id'].nunique())\n", - " active_users.rename(columns={'user_id':'active_users'}, inplace=True)\n", - "\n", - " if \"Mode_confirm\" in expanded_ct.columns:\n", - " # Count the number of trips for each confirmed mode\n", - " mode_counts = data.groupby(['user_id','date_time','Mode_confirm'], as_index=False).size()\n", - " mode_counts.rename(columns={'size':'trip_count'}, inplace=True)\n", - "\n", - " # Sum daily distance traveled for each mode\n", - " mode_distance = data.groupby(['user_id','date_time','Mode_confirm'], as_index=False)[['distance_miles']].sum()\n", - " mode_distance.rename(columns={'sum':'distance_miles'}, inplace=True)\n", - " mode_distance['distance_miles'] = mode_distance['distance_miles'].fillna(0)\n", - "\n", - " # Sum daily emissions for each user\n", - " emissions = data.groupby(['user_id','date_time'], as_index=False)[['Mode_confirm_lb_CO2', 'distance_miles']].sum()\n", - " emissions['Mode_confirm_lb_CO2'] = emissions['Mode_confirm_lb_CO2'].fillna(0)\n", - " emissions['distance_miles'] = emissions['Mode_confirm_lb_CO2'].fillna(0)\n", - "\n", - " # Sum daily energy for each user\n", - " energy = data.groupby(['user_id','date_time'], as_index=False)[['Mode_confirm_EI(kWH)', 'distance_miles']].sum()\n", - " energy['Mode_confirm_EI(kWH)'] = energy['Mode_confirm_EI(kWH)'].fillna(0)\n", - " energy['distance_miles'] = energy['Mode_confirm_EI(kWH)'].fillna(0)\n", - "\n", - " # Add 7-day rolling avg smoothing to better see trends\n", - " mode_counts['trip_count_smooth'] = mode_counts.groupby(['user_id','Mode_confirm'])['trip_count'].apply(lambda x: x.rolling(7,1).mean())\n", - " mode_distance['distance_miles_smooth'] = mode_distance.groupby(['user_id','Mode_confirm'])['distance_miles'].apply(lambda x: x.rolling(7,1).mean())\n", - " emissions['distance_miles_smooth'] = emissions.groupby(['user_id'])['distance_miles'].apply(lambda x: x.rolling(7,1).mean())\n", - " energy['distance_miles_smooth'] = energy.groupby(['user_id'])['distance_miles'].apply(lambda x: x.rolling(7,1).mean())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Generate Timeseries Plots" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Emissions per week" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_title_no_quality = 'Net Daily Emissions (All Users, excluding air)'\n", - "file_name = \"ts_emissions_user%s\"%file_suffix\n", - "\n", - "try:\n", - " # Emissions per week across all users (net impact)\n", - " plot_data = emissions.groupby(['date_time'], as_index=False)['Mode_confirm_lb_CO2'].agg(['sum'])\n", - " plot_data = plot_data.merge(active_users, on='date_time')\n", - " plot_data['sum'] = plot_data['sum'] / plot_data['active_users']\n", - "\n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - " ylab = 'Emissions (lb CO2/day/user)'\n", - " timeseries_plot(plot_data['date_time'], plot_data['sum'], plot_title, ylab, file_name)\n", - " alt_text = store_alt_text_timeseries(plot_data, file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Energy per week" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_title_no_quality = 'Net Daily Energy (All Users, excluding air)'\n", - "file_name = \"ts_energy_user%s\"%file_suffix\n", - "\n", - "try:\n", - " # Energy per week across all users (net impact)\n", - " plot_data = energy.groupby(['date_time'], as_index=False)['Mode_confirm_EI(kWH)'].agg(['sum'])\n", - " plot_data = plot_data.merge(active_users, on='date_time')\n", - " plot_data['sum'] = plot_data['sum'] / plot_data['active_users']\n", - "\n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - " ylab = 'Energy (kWH/day/user)'\n", - " timeseries_plot(plot_data['date_time'], plot_data['sum'], plot_title, ylab, file_name)\n", - " alt_text = store_alt_text_timeseries(plot_data, file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Emissions per mile per day" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_title_no_quality = 'Average Daily Emission Rate (All Users, excluding air)'\n", - "file_name = \"ts_emissions_vmt%s\"%file_suffix\n", - "\n", - "try:\n", - " # Emissions per mile per day across all users (travel efficiency)\n", - " # Note that the energy plot will be identical to this one since scale factor is divided out\n", - " emissions['CO2_per_mile'] = emissions['Mode_confirm_lb_CO2'] / emissions['distance_miles_smooth']\n", - " emissions['CO2_per_mile'] = emissions['CO2_per_mile'].fillna(0)\n", - " plot_data = emissions.groupby(['date_time'])['CO2_per_mile'].agg(['mean']).reset_index()\n", - "\n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - " ylab = 'Emissions (lb CO2/mile/day)'\n", - " timeseries_plot(plot_data['date_time'], plot_data['mean'], plot_title, ylab, file_name)\n", - " alt_text = store_alt_text_timeseries(plot_data, file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality) " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Number of active users" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_title_no_quality = 'Number of Active Users'\n", - "file_name = \"ts_users%s\"%file_suffix\n", - "\n", - "try:\n", - " # Plot of active users\n", - " plot_data = active_users\n", - "\n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - " ylab = 'Unique IDs'\n", - " timeseries_plot(plot_data['date_time'], plot_data['active_users'], plot_title, ylab, file_name)\n", - " alt_text = store_alt_text_timeseries(plot_data, file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality) " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Daily Mode share" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_title_no_quality = 'Daily Aggregate Mode Share (excluding \"Other\" and \"Not a trip\"'\n", - "file_name = \"ts_all_modes%s\"%file_suffix\n", - "\n", - "try:\n", - " # Plot of mode share proportions across all users\n", - " # Consolidate modes\n", - " plot_data = mode_counts.replace('Bikeshare', 'Shared Micromobility')\n", - " plot_data = plot_data.replace('Scooter share', 'Shared Micromobility')\n", - " plot_data = plot_data.replace('Regular Bike', 'Personal Micromobility')\n", - " plot_data = plot_data.replace('Skate board', 'Personal Micromobility')\n", - " plot_data = plot_data.replace('Train', 'Transit')\n", - " plot_data = plot_data.replace('Free Shuttle', 'Transit')\n", - " plot_data = plot_data.replace('Bus', 'Transit')\n", - " plot_data = plot_data.replace('Walk', 'Walk')\n", - " plot_data = plot_data.replace('Taxi/Uber/Lyft', 'Ridehail')\n", - " plot_data = plot_data.replace('Pilot ebike', 'E-Bike')\n", - "\n", - " plot_data = plot_data.groupby(['date_time','Mode_confirm'], as_index=False)['trip_count_smooth'].sum()\n", - " total_trips = plot_data.groupby(['date_time'], as_index=False).sum()\n", - " plot_data = plot_data.merge(total_trips, on='date_time')\n", - " plot_data['trip_proportion'] = plot_data['trip_count_smooth_x'] / plot_data['trip_count_smooth_y']\n", - "\n", - " # Re-establish categorical variable to not include Other and Non-trips\n", - " plot_data = plot_data[~plot_data['Mode_confirm'].isin(['Not a Trip','Other'])]\n", - " plot_data.Mode_confirm = pd.Categorical(plot_data.Mode_confirm, ordered=True, categories=np.unique(list(dic_re.values())))\n", - "\n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - " ylab = 'Proportion of All Trips'\n", - " legend_title = 'Confirmed Mode'\n", - " timeseries_multi_plot(plot_data, 'date_time','trip_proportion','Mode_confirm', plot_title, ylab, legend_title, file_name)\n", - " alt_text = store_alt_text_generic('multivariate timeseries', file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality) " - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.12" - } - }, - "nbformat": 4, - "nbformat_minor": 1 -} diff --git a/viz_scripts/mapping_dictionaries.ipynb b/viz_scripts/mapping_dictionaries.ipynb deleted file mode 100644 index 1252544..0000000 --- a/viz_scripts/mapping_dictionaries.ipynb +++ /dev/null @@ -1,89 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 4, - "id": "available-fusion", - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import pickle" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "obvious-chapter", - "metadata": {}, - "outputs": [], - "source": [ - "df_pur = pd.read_csv(r'auxiliary_files/purpose_labels.csv')\n", - "df_re = pd.read_csv(r'auxiliary_files/mode_labels.csv')\n", - "df_ei = pd.read_csv(r'auxiliary_files/energy_intensity.csv')\n", - "\n", - "#dictionaries:\n", - "dic_pur = dict(zip(df_pur['purpose_confirm'],df_pur['bin_purpose'])) # bin purpose\n", - "dic_re = dict(zip(df_re['replaced_mode'],df_re['mode_clean'])) # bin modes\n", - "dic_fuel = dict(zip(df_ei['mode'],df_ei['fuel']))" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "younger-indication", - "metadata": {}, - "outputs": [], - "source": [ - "# %store df_ei\n", - "# %store dic_re\n", - "# %store dic_pur\n", - "# %store dic_fuel\n", - "\n", - "with open('auxiliary_files/df_ei.pkl', 'wb') as f:\n", - " f.write(pickle.dumps(df_ei))\n", - "\n", - "with open('auxiliary_files/dic_re.pkl', 'wb') as f:\n", - " f.write(pickle.dumps(dic_re))\n", - "\n", - "with open('auxiliary_files/dic_pur.pkl', 'wb') as f:\n", - " f.write(pickle.dumps(dic_pur))\n", - "\n", - "with open('auxiliary_files/dic_fuel.pkl', 'wb') as f:\n", - " f.write(pickle.dumps(dic_fuel))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8e389b3d", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "interpreter": { - "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" - }, - "kernelspec": { - "display_name": "Python 3.9.16 ('emission')", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.16" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/viz_scripts/mode_specific_metrics.ipynb b/viz_scripts/mode_specific_metrics.ipynb deleted file mode 100644 index 4e9da95..0000000 --- a/viz_scripts/mode_specific_metrics.ipynb +++ /dev/null @@ -1,373 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "worldwide-portuguese", - "metadata": {}, - "source": [ - "## Generate Static Graphs" - ] - }, - { - "cell_type": "markdown", - "id": "alive-integration", - "metadata": {}, - "source": [ - "These are the input parameters for the notebook. They will be automatically changed when the scripts to generate monthly statistics are run. You can modify them manually to generate multiple plots locally as well.\n", - "\n", - "Pass in `None` to remove the filters and plot all data. This is not recommended for production settings, but might be useful for reports based on data snapshots." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "former-luther", - "metadata": {}, - "outputs": [], - "source": [ - "year = 2020\n", - "month = 11\n", - "program = \"default\"\n", - "study_type = \"program\"\n", - "mode_of_interest = \"e-bike\"\n", - "include_test_users = False" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "dated-compromise", - "metadata": {}, - "outputs": [], - "source": [ - "from collections import defaultdict\n", - "\n", - "import numpy as np\n", - "import pandas as pd\n", - "\n", - "from plots import *\n", - "import scaffolding\n", - "\n", - "sns.set_style(\"whitegrid\")\n", - "sns.set()\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "assisted-mathematics", - "metadata": {}, - "outputs": [], - "source": [ - "# Do not run this notebook at all unless it is for a program; nbclient will run up through this cell\n", - "if study_type != \"program\":\n", - " ipython = get_ipython()\n", - " ipython._showtraceback = scaffolding.no_traceback_handler\n", - " raise Exception(\"The plots in this notebook are only relevant to programs\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "cathedral-scanning", - "metadata": {}, - "outputs": [], - "source": [ - "# Loading mapping dictionaries from mapping_dictionaries notebook\n", - "%store -r dic_re\n", - "%store -r dic_pur\n", - "\n", - "# convert a dictionary to a defaultdict\n", - "dic_re = defaultdict(lambda: 'Other',dic_re)\n", - "dic_pur = defaultdict(lambda: 'Other',dic_pur)" - ] - }, - { - "cell_type": "markdown", - "id": "built-occupation", - "metadata": {}, - "source": [ - "## Collect Data From Database" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "empty-intensity", - "metadata": {}, - "outputs": [], - "source": [ - "expanded_ct, file_suffix, quality_text, debug_df = scaffolding.load_viz_notebook_data(year,\n", - " month,\n", - " program,\n", - " study_type,\n", - " dic_re,\n", - " dic_pur=dic_pur,\n", - " include_test_users=include_test_users)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "77eedae6", - "metadata": {}, - "outputs": [], - "source": [ - "if 'mode_confirm' in expanded_ct.columns:\n", - " mode_of_interest_df = expanded_ct.query(f\"mode_confirm == '{mode_of_interest}'\")\n", - " debug_df.loc[f\"{mode_of_interest}_trips\"] = len(mode_of_interest_df)\n", - " debug_df.loc[f\"{mode_of_interest}_trips_with_replaced_mode\"] = scaffolding.trip_label_count(\"Replaced_mode\", mode_of_interest_df)" - ] - }, - { - "cell_type": "markdown", - "id": "surgical-continuity", - "metadata": {}, - "source": [ - "## Metrics for Specific Mode" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "romance-green", - "metadata": {}, - "outputs": [], - "source": [ - "data_eb = expanded_ct.query(f\"mode_confirm == '{mode_of_interest}'\") if \"mode_confirm\" in expanded_ct.columns else expanded_ct" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "seeing-court", - "metadata": {}, - "outputs": [], - "source": [ - "quality_text = scaffolding.get_quality_text(expanded_ct, data_eb, mode_of_interest, include_test_users)" - ] - }, - { - "cell_type": "markdown", - "id": "loaded-expert", - "metadata": {}, - "source": [ - "### Trips by purpose for specified mode" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "respiratory-breach", - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "plot_title_no_quality=f\"Number of trips for each purpose for {mode_of_interest} only\"\n", - "file_name= f'ntrips_{mode_of_interest}_purpose%s' % file_suffix\n", - "\n", - "try:\n", - " labels_tp = data_eb['Trip_purpose'].value_counts(dropna=True).keys().tolist()\n", - " values_tp = data_eb['Trip_purpose'].value_counts(dropna=True).tolist()\n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - " pie_chart_purpose(plot_title,labels_tp,values_tp,file_name)\n", - " alt_text = store_alt_text_pie(pd.DataFrame(values_tp, labels_tp), file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "thermal-midnight", - "metadata": {}, - "outputs": [], - "source": [ - "plot_title_no_quality=f\"Number of trips for each replaced transport mode for {mode_of_interest} only\"\n", - "file_name =f'ntrips_{mode_of_interest}_replaced_mode%s' % file_suffix\n", - "\n", - "try:\n", - " labels_eb = data_eb.Replaced_mode.value_counts(dropna=True).keys().tolist()\n", - " values_eb = data_eb.Replaced_mode.value_counts(dropna=True).tolist()\n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - " pie_chart_mode(plot_title,labels_eb,values_eb,file_name)\n", - " alt_text = store_alt_text_pie(pd.DataFrame(values_eb, labels_eb), file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)" - ] - }, - { - "cell_type": "markdown", - "id": "dependent-reservoir", - "metadata": {}, - "source": [ - "### Miles for each mode replaced by the specified mode" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "pointed-velvet", - "metadata": {}, - "outputs": [], - "source": [ - "plot_title_no_quality=f\"Distribution of Miles Replaced by {mode_of_interest}\"\n", - "file_name =f'miles_{mode_of_interest}_replaced_mode%s' % file_suffix\n", - "\n", - "try:\n", - " dg=data_eb.groupby('Replaced_mode').agg({'distance_miles': ['sum', 'count' , 'mean']},)\n", - " dg.columns = ['Total (miles)', 'Count' ,'Average (miles)']\n", - " dg = dg.reset_index()\n", - " dg = dg.sort_values(by=['Total (miles)'], ascending=False)\n", - "\n", - " dg_dict = dict(zip(dg['Replaced_mode'], dg['Total (miles)']))\n", - " labels_m = []\n", - " values_m = []\n", - "\n", - " for x, y in dg_dict.items():\n", - " labels_m.append(x)\n", - " values_m.append(y)\n", - "\n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - " pie_chart_mode(plot_title,labels_m,values_m,file_name)\n", - " alt_text = store_alt_text_pie(pd.DataFrame(values_m, labels_m), file_name, plot_title)\n", - " print(dg)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)" - ] - }, - { - "cell_type": "markdown", - "id": "honest-dylan", - "metadata": {}, - "source": [ - "### Average miles per trip for specified mode" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "binary-program", - "metadata": {}, - "outputs": [], - "source": [ - "plot_title_no_quality=\"Average Miles for each replaced mode with > 3 entries\\n'Other' represents trips with a non-standard or missing replacement\"\n", - "file_name ='average_miles_replaced_mode%s' % file_suffix\n", - "\n", - "try:\n", - " data = dg.drop((dg.query(\"Count < 3\").index)).sort_values(by=['Average (miles)'], ascending=False)\n", - " x='Replaced_mode'\n", - " y='Average (miles)'\n", - " y2 = \"Count\"\n", - "\n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - " barplot_mode(data,x,y,plot_title,file_name)\n", - " alt_text = store_alt_text_bar(pd.DataFrame(data['Average (miles)'].values, data.Replaced_mode), file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)" - ] - }, - { - "cell_type": "markdown", - "id": "committed-favorite", - "metadata": {}, - "source": [ - "### Number of trips by day for specified mode" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "limiting-handling", - "metadata": {}, - "outputs": [], - "source": [ - "plot_title_no_quality=f\"Number of {mode_of_interest} trips by day\"\n", - "file_name =f'ntrips_{mode_of_interest}_per_day%s' % file_suffix\n", - "\n", - "\n", - "try:\n", - " fq_days = data_eb.groupby(['start_local_dt_day']).agg({'start_local_dt_day': ['sum', 'count']})\n", - " fq_days = fq_days.reset_index()\n", - " fq_days.columns = ['Day of the Month', 'Total', 'Number of Trips']\n", - "\n", - " data = fq_days\n", - " x = 'Day of the Month'\n", - " y = 'Number of Trips'\n", - "\n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - " barplot_day(data,x,y,plot_title,file_name)\n", - " alt_text = store_alt_text_bar(pd.DataFrame(data['Number of Trips'].values, data['Day of the Month'].values), file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)" - ] - }, - { - "cell_type": "markdown", - "id": "pediatric-cowboy", - "metadata": {}, - "source": [ - "### Number of trips by day of week¶" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "metropolitan-musical", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "plot_title_no_quality=f\"Number of {mode_of_interest} trips by weekday\"\n", - "file_name =f'ntrips_{mode_of_interest}_per_weekday%s' % file_suffix\n", - "\n", - "try:\n", - " fq_weekdays = data_eb.groupby(['start_local_dt_weekday']).agg({'start_local_dt_weekday': ['sum', 'count']})\n", - " fq_weekdays = fq_weekdays.reset_index()\n", - " fq_weekdays.columns = ['Weekday', 'Total', 'Number of Trips']\n", - " weekday_labels = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"]\n", - " fq_weekdays[\"Weekday\"] = fq_weekdays.Weekday.apply(lambda x: weekday_labels[x])\n", - "\n", - " data = fq_weekdays\n", - " x = 'Weekday'\n", - " y = 'Number of Trips'\n", - "\n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - " barplot_day(data,x,y,plot_title,file_name)\n", - " alt_text = store_alt_text_bar(pd.DataFrame(data['Number of Trips'].values, data['Weekday'].values), file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/viz_scripts/mode_specific_timeseries.ipynb b/viz_scripts/mode_specific_timeseries.ipynb deleted file mode 100644 index a157bcc..0000000 --- a/viz_scripts/mode_specific_timeseries.ipynb +++ /dev/null @@ -1,491 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Generate Static Graphs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "These are the input parameters for the notebook. They will be automatically changed when the scripts to generate monthly statistics are run. You can modify them manually to generate multiple plots locally as well.\n", - "\n", - "Pass in `None` to remove the filters and plot all data. This is not recommended for production settings, but might be useful for reports based on data snapshots." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "year = 2020\n", - "month = 11\n", - "program = \"default\"\n", - "study_type = \"program\"\n", - "mode_of_interest = \"e-bike\"\n", - "include_test_users = False" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from collections import defaultdict\n", - "import datetime\n", - "\n", - "import numpy as np\n", - "import pandas as pd\n", - "\n", - "from plots import *\n", - "import scaffolding\n", - "\n", - "sns.set_style(\"whitegrid\")\n", - "sns.set()\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Do not run this notebook at all unless it is for a program; nbclient will run up through this cell\n", - "if study_type != \"program\":\n", - " ipython = get_ipython()\n", - " ipython._showtraceback = scaffolding.no_traceback_handler\n", - " raise Exception(\"The plots in this notebook are only relevant to programs\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Loading mapping dictionaries from mapping_dictionaries notebook\n", - "%store -r dic_re\n", - "%store -r dic_pur\n", - "\n", - "# convert a dictionary to a defaultdict\n", - "dic_re = defaultdict(lambda: 'Other',dic_re)\n", - "dic_pur = defaultdict(lambda: 'Other',dic_pur)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Collect Data From Database" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "expanded_ct, file_suffix, quality_text, debug_df = scaffolding.load_viz_notebook_data(year,\n", - " month,\n", - " program,\n", - " study_type,\n", - " dic_re,\n", - " dic_pur=dic_pur,\n", - " include_test_users=include_test_users)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "if 'mode_confirm' in expanded_ct.columns:\n", - " mode_of_interest_df = expanded_ct.query(f\"mode_confirm == '{mode_of_interest}'\")\n", - " debug_df.loc[f\"{mode_of_interest}_trips\"] = len(mode_of_interest_df)\n", - " debug_df.loc[f\"{mode_of_interest}_trips_with_replaced_mode\"] = scaffolding.trip_label_count(\"Replaced_mode\", mode_of_interest_df)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Data Preprocessing" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Get timestamp from known year/month/day aggregated to days\n", - "sel_cols_no_label_dep = ['user_id','start_local_dt_year','start_local_dt_month','start_local_dt_day','distance_miles']\n", - "sel_cols_with_label_dep = sel_cols_no_label_dep + ['mode_confirm']\n", - "if len(expanded_ct) == 0:\n", - " data = expanded_ct.copy()\n", - "elif \"mode_confirm\" not in expanded_ct.columns:\n", - " data = expanded_ct[sel_cols_no_label_dep].copy()\n", - "else:\n", - " data = expanded_ct[sel_cols_with_label_dep].copy()\n", - " \n", - "if len(expanded_ct) > 0:\n", - " data.rename(columns={'start_local_dt_year':'year','start_local_dt_month':'month','start_local_dt_day':'day'}, inplace=True)\n", - " data['date_time'] = pd.to_datetime(data[['year','month','day']])\n", - " data = data.drop(columns=['year','month','day'])\n", - "\n", - " # Categorical type will include all days/modes in groupby even if there is no data for a particular tabulation\n", - " data.user_id = pd.Categorical(data.user_id)\n", - " data.date_time = pd.Categorical(data.date_time)\n", - " \n", - "data.head()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "if len(expanded_ct) > 0:\n", - " # Get the count of unique users that were active on each given date\n", - " active_users = pd.DataFrame(data.groupby(['date_time'], as_index=False)['user_id'].nunique())\n", - " active_users.rename(columns={'user_id':'active_users'}, inplace=True)\n", - "\n", - " if \"mode_confirm\" in expanded_ct.columns:\n", - " # Count the number of trips for each confirmed mode\n", - " mode_counts = data.groupby(['user_id','date_time','mode_confirm'], as_index=False).size()\n", - " mode_counts.rename(columns={'size':'trip_count'}, inplace=True)\n", - "\n", - " # Sum daily distance traveled for each mode\n", - " mode_distance = data.groupby(['user_id','date_time','mode_confirm'], as_index=False)[['distance_miles']].sum()\n", - " mode_distance.rename(columns={'sum':'distance_miles'}, inplace=True)\n", - " mode_distance['distance_miles'] = mode_distance['distance_miles'].fillna(0)\n", - "\n", - " # Add 7-day rolling avg smoothing to better see trends\n", - " mode_counts['trip_count_smooth'] = mode_counts.groupby(['user_id','mode_confirm'])['trip_count'].apply(lambda x: x.rolling(7,1).mean())\n", - " mode_distance['distance_miles_smooth'] = mode_distance.groupby(['user_id','mode_confirm'])['distance_miles'].apply(lambda x: x.rolling(7,1).mean())\n", - " \n", - " # This is the mode specific part\n", - " mode_counts_interest = mode_counts[mode_counts['mode_confirm']==mode_of_interest].copy()\n", - " mode_distance_interest = mode_distance[mode_distance['mode_confirm']==mode_of_interest].copy()\n", - " \n", - " # Mapping new mode labels with dictionaries\n", - " mode_counts['Mode_confirm'] = mode_counts['mode_confirm'].map(dic_re)\n", - " mode_counts_interest['Mode_confirm'] = mode_counts_interest['mode_confirm'].map(dic_re)\n", - " mode_distance_interest['Mode_confirm'] = mode_distance_interest['mode_confirm'].map(dic_re)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "quality_text = scaffolding.get_quality_text(expanded_ct, mode_counts_interest, mode_of_interest, include_test_users)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Generate Timeseries Plots" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Daily trips for mode of interest" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Plot of total ebikeshare trips across all users\n", - "plot_title_no_quality = f'Daily {mode_of_interest} Trips'\n", - "file_name = f\"ts_{mode_of_interest}_share%s\"%file_suffix\n", - "\n", - "try:\n", - " if len(mode_counts_interest) == 0:\n", - " # force error generation so that we will go into the \"missing\" data code path\n", - " raise RuntimeError(f\"No {mode_of_interest} trips found\")\n", - " plot_data = mode_counts_interest.groupby(['date_time'])['trip_count_smooth'].agg(['sum']).reset_index()\n", - " \n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - " ylab = 'Trip Count'\n", - "\n", - " timeseries_plot(plot_data['date_time'], plot_data['sum'], plot_title, ylab, file_name)\n", - " alt_text = store_alt_text_timeseries(plot_data, file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Daily mileage for mode of interest" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Plot of total ebikeshare mileage across all users\n", - "plot_title_no_quality = f'Daily {mode_of_interest} Mileage'\n", - "file_name = f\"ts_{mode_of_interest}_miles%s\"%file_suffix\n", - "\n", - "try:\n", - " if len(mode_counts_interest) == 0:\n", - " # force error generation so that we will go into the \"missing\" data code path\n", - " raise RuntimeError(f\"No {mode_of_interest} trips found\")\n", - "\n", - " plot_data = mode_distance_interest.groupby(['date_time'])['distance_miles'].agg(['sum']).reset_index()\n", - "\n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - " ylab = 'Miles'\n", - "\n", - " timeseries_plot(plot_data['date_time'], plot_data['sum'], plot_title, ylab, file_name)\n", - " alt_text = store_alt_text_timeseries(plot_data, file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Daily mileage per user for mode of interest" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Plot of total ebikeshare mileage normalized by number of users\n", - "plot_title_no_quality = f'Daily {mode_of_interest} Mileage per Active User'\n", - "file_name = f\"ts_{mode_of_interest}_miles_user%s\"%file_suffix\n", - "\n", - "try:\n", - " if len(mode_counts_interest) == 0:\n", - " # force error generation so that we will go into the \"missing\" data code path\n", - " raise RuntimeError(f\"No {mode_of_interest} trips found\")\n", - "\n", - " plot_data = mode_distance_interest.groupby(['date_time'])['distance_miles'].agg(['sum']).reset_index()\n", - " plot_data = plot_data.merge(active_users, on='date_time')\n", - " plot_data['mileage_per_user'] = plot_data['sum'] / plot_data['active_users']\n", - "\n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - " ylab = 'miles/user'\n", - "\n", - " timeseries_plot(plot_data['date_time'], plot_data['mileage_per_user'], plot_title, ylab, file_name)\n", - " alt_text = store_alt_text_timeseries(plot_data, file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Proportion of total daily mileage for mode of interest" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Plot of ebike mileage share proportion across all users\n", - "plot_title_no_quality = f'Daily {mode_of_interest} Mileage Proportion (All Users, excluding air)'\n", - "file_name = f\"ts_{mode_of_interest}_miles_proportion%s\"%file_suffix\n", - "\n", - "try:\n", - " if len(mode_counts_interest) == 0:\n", - " # force error generation so that we will go into the \"missing\" data code path\n", - " raise RuntimeError(f\"No {mode_of_interest} trips found\")\n", - "\n", - " plot_data = mode_distance_interest.groupby(['date_time'], as_index=False)['distance_miles_smooth'].sum()\n", - " total_miles = mode_distance.groupby(['date_time'], as_index=False)['distance_miles_smooth'].sum()\n", - " plot_data = plot_data.merge(total_miles, on=['date_time'])\n", - " plot_data['miles_proportion'] = plot_data['distance_miles_smooth_x'] / plot_data['distance_miles_smooth_y']\n", - "\n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - " ylab = 'Proportion of Daily Miles'\n", - "\n", - " timeseries_plot(plot_data['date_time'], plot_data['miles_proportion'], plot_title, ylab, file_name)\n", - " alt_text = store_alt_text_timeseries(plot_data, file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Proportion of total daily trips for mode of interest" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Plot of ebike trip share proportion across all users\n", - "plot_title_no_quality = f'Daily {mode_of_interest} Trip Proportion (All Users, excluding air)'\n", - "file_name = f\"ts_{mode_of_interest}_trips_proportion%s\"%file_suffix\n", - "\n", - "try:\n", - " if len(mode_counts_interest) == 0:\n", - " # force error generation so that we will go into the \"missing\" data code path\n", - " raise RuntimeError(f\"No {mode_of_interest} trips found\")\n", - "\n", - " plot_data = mode_counts.groupby(['date_time','mode_confirm'], as_index=False)['trip_count_smooth'].sum()\n", - " total_trips = plot_data.groupby(['date_time'], as_index=False).sum()\n", - " plot_data = plot_data.merge(total_trips, on='date_time')\n", - " plot_data['trip_proportion'] = plot_data['trip_count_smooth_x'] / plot_data['trip_count_smooth_y']\n", - " plot_data = plot_data[plot_data['mode_confirm']==mode_of_interest]\n", - "\n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - " ylab = 'Proportion of Daily Trips'\n", - "\n", - " timeseries_plot(plot_data['date_time'], plot_data['trip_proportion'], plot_title, ylab, file_name)\n", - " alt_text = store_alt_text_timeseries(plot_data.drop(columns=['mode_confirm','trip_count_smooth_x','trip_count_smooth_y']), file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Daily trip proportion for mode of interest with error bounds" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Plots the number of trips per user with error bars\n", - "# from the seaborn documentation:\n", - "# By default, the plot aggregates over multiple y values at each value of x and \n", - "# shows an estimate of the central tendency and a confidence interval for that estimate.\n", - "# In our case, we have multiple trip proportions (one per user) for each day\n", - "# so the band represents the variation of the number of trips and the thick line represents the mean/median (unsure which)\n", - "# but this still doesn't tell us which users have dropped their ridership\n", - "\n", - "plot_title_no_quality = f'Daily {mode_of_interest} Trip Proportion for Individual users (Running average and variation)'\n", - "file_name = f\"ts_{mode_of_interest}_trip_individual_variation%s\"%file_suffix\n", - "\n", - "try:\n", - " if len(mode_counts_interest) == 0:\n", - " # force error generation so that we will go into the \"missing\" data code path\n", - " raise RuntimeError(f\"No {mode_of_interest} trips found\")\n", - "\n", - " plot_data_mode = mode_counts_interest.groupby(['date_time', 'user_id'], as_index=False)[\"trip_count_smooth\"].sum()\n", - " plot_data = mode_counts.groupby(['date_time','user_id'], as_index=False)['trip_count_smooth'].sum()\n", - " plot_data = plot_data.merge(plot_data_mode, on=['date_time', 'user_id'])\n", - " plot_data['mode_trip_proportion'] = plot_data['trip_count_smooth_y'] / plot_data['trip_count_smooth_x']\n", - "\n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - " ylab = 'Proportion of Daily Trips'\n", - "\n", - " timeseries_plot(plot_data['date_time'], plot_data['mode_trip_proportion'], plot_title, ylab, file_name)\n", - " alt_text = store_alt_text_timeseries(plot_data.drop(columns=['user_id','trip_count_smooth_x','trip_count_smooth_y']), file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Daily mileage proportion for mode of interest with error bounds" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Plots the number of trips per user with error bars\n", - "# from the seaborn documentation:\n", - "# By default, the plot aggregates over multiple y values at each value of x and \n", - "# shows an estimate of the central tendency and a confidence interval for that estimate.\n", - "# In our case, we have multiple trip proportions (one per user) for each day\n", - "# so the band represents the variation of the number of trips and the thick line represents the mean/median (unsure which)\n", - "# but this still doesn't tell us which users have dropped their ridership\n", - "\n", - "plot_title = f'Daily {mode_of_interest} Mileage Proportion for Individual users (Running average and variation)'\n", - "file_name = f\"ts_{mode_of_interest}_mile_individual_variation%s\"%file_suffix\n", - "\n", - "try:\n", - " if len(mode_distance_interest) == 0:\n", - " # force error generation so that we will go into the \"missing\" data code path\n", - " raise RuntimeError(f\"No {mode_of_interest} trips found\")\n", - "\n", - " plot_data_mode = mode_distance_interest.groupby(['date_time', 'user_id'], as_index=False)[\"distance_miles_smooth\"].sum()\n", - " plot_data = mode_distance.groupby(['date_time','user_id'], as_index=False)['distance_miles_smooth'].sum()\n", - " plot_data = plot_data.merge(plot_data_mode, on=['date_time', 'user_id'])\n", - " plot_data['mode_miles_proportion'] = plot_data['distance_miles_smooth_y'] / plot_data['distance_miles_smooth_x']\n", - "\n", - " plot_title= plot_title_no_quality+\"\\n\"+quality_text\n", - " ylab = 'Proportion of Daily Miles'\n", - "\n", - " timeseries_plot(plot_data['date_time'], plot_data['mode_miles_proportion'], plot_title, ylab, file_name)\n", - " alt_text = store_alt_text_timeseries(plot_data.drop(columns=['user_id','distance_miles_smooth_x','distance_miles_smooth_y']), file_name, plot_title)\n", - "except:\n", - " generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n", - " alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.12" - } - }, - "nbformat": 4, - "nbformat_minor": 1 -} diff --git a/viz_scripts/plots.py b/viz_scripts/plots.py deleted file mode 100644 index fa88b9b..0000000 --- a/viz_scripts/plots.py +++ /dev/null @@ -1,437 +0,0 @@ -import pandas as pd -import numpy as np -import arrow -import itertools -import matplotlib.pyplot as plt -import seaborn as sns -from matplotlib.patches import Patch - -sns.set_style("whitegrid") -sns.set() -get_ipython().run_line_magic('matplotlib', 'inline') - -# Module for pretty-printing outputs (e.g. head) to help users -# understand what is going on -# However, this means that this module can only be used in an ipython notebook - -import IPython.display as disp - - -SAVE_DIR="/plots/" - - -def merge_small_entries(labels, values): - v2l_df = pd.DataFrame({"vals": values}, index=labels) - - # Calculate % for all the values - vs = v2l_df.vals.sum() - v2l_df["pct"] = v2l_df.vals.apply(lambda x: (x/vs) * 100) - disp.display(v2l_df) - - # Find small chunks to combine - small_chunk = v2l_df.where(lambda x: x.pct <= 2).dropna() - misc_count = small_chunk.sum() - - v2l_df = v2l_df.drop(small_chunk.index) - disp.display(v2l_df) - - # This part if a bit tricky - # We could have already had a non-zero other, and it could be small or large - if "Other" not in v2l_df.index: - # zero other will end up with misc_count - v2l_df.loc["Other"] = misc_count - elif "Other" in small_chunk.index: - # non-zero small other will already be in misc_count - v2l_df.loc["Other"] = misc_count - else: - # non-zero large other, will not already be in misc_count - v2l_df.loc["Other"] = v2l_df.loc["Other"] + misc_count - disp.display(v2l_df) - - return (v2l_df.index.to_list(),v2l_df.vals.to_list()) - -def pie_chart_mode(plot_title,labels,values,file_name): - all_labels= ['Gas Car, drove alone', - 'Bus', - 'Train', - 'Free Shuttle', - 'Taxi/Uber/Lyft', - 'Gas Car, with others', - 'Bikeshare', - 'Scooter share', - 'E-bike', - 'Walk', - 'Skate board', - 'Regular Bike', - 'Not a Trip', - 'No Travel', - 'Same Mode', - 'E-car, drove alone', - 'E-car, with others', - 'Air', - 'Other'] - - val2labeldf = pd.DataFrame({"labels": labels, "values": values}) - - colours = dict(zip(all_labels, plt.cm.tab20.colors[:len(all_labels)])) - fig, ax = plt.subplots(figsize=(10, 10), subplot_kw=dict(aspect="equal")) - - m_labels, m_values = merge_small_entries(labels, values) - - def func(pct, values): - total = sum(values) - absolute = int(round(pct*total/100.0)) - return "{:.1f}%\n({:d})".format(pct, absolute) if pct > 4 else'' - - wedges, texts, autotexts = ax.pie(m_values, - labels = m_labels, - colors=[colours[key] for key in labels], - pctdistance=0.75, - autopct= lambda pct: func(pct, values), - textprops={'size': 23}) - - ax.set_title(plot_title, size=25) - plt.text(-1.3,-1.3,f"Last updated {arrow.get()}", fontsize=10) - plt.setp(autotexts, **{'color':'white', 'weight':'bold', 'fontsize':20}) - plt.savefig(SAVE_DIR+file_name+".png", bbox_inches='tight') - plt.show() - -def pie_chart_purpose(plot_title,labels,values,file_name): - labels_trip= ['Work', - 'Home', - 'Meal', - 'Shopping', - 'Personal/Medical', - 'Recreation/Exercise', - 'Transit transfer', - 'Pick-up/Drop off', - 'Entertainment/Social', - 'Other', - 'School', - 'Religious', - 'No travel', - 'not_a_trip'] - - colours = dict(zip(labels_trip, plt.cm.tab20.colors[:len(labels_trip)])) - fig, ax = plt.subplots(figsize=(10, 10), subplot_kw=dict(aspect="equal")) - - m_labels, m_values = merge_small_entries(labels, values) - - def func(pct, values): - total = sum(values) - absolute = int(round(pct*total/100.0)) - return "{:.1f}%\n({:d})".format(pct, absolute) if pct > 3 else'' - - wedges, texts, autotexts = ax.pie(m_values, - labels = m_labels, - colors=[colours[key] for key in labels], - pctdistance=0.85, - autopct=lambda pct: func(pct, values), - textprops={'size': 23}) - - ax.set_title(plot_title, size=25) - plt.text(-1.3,-1.3,f"Last updated {arrow.get()}", fontsize=10) - plt.setp(autotexts, **{'color':'white', 'weight':'bold', 'fontsize':20}) - plt.savefig(SAVE_DIR+file_name+".png", bbox_inches='tight') - plt.show() - -def energy_impact(x,y,color,plot_title,file_name): - color = color.map({True: 'green', False: 'red'}) - objects = ('Energy Savings', 'Energy Loss') - - y_labels = y - plt.figure(figsize=(15, 8)) - width = 0.8 - ax = x.plot(kind='barh',width=width, color=color) - ax.set_title(plot_title, fontsize=18) - ax.set_xlabel('Energy_Impact(kWH)', fontsize=18) - ax.set_ylabel('Replaced Mode',fontsize=18) - ax.set_yticklabels(y_labels) - ax.xaxis.set_tick_params(labelsize=15) - ax.yaxis.set_tick_params(labelsize=15) - ax.relim() - ax.autoscale_view() - - rects = ax.patches - for rect in rects: - x_value = rect.get_width() - y_value = rect.get_y() + rect.get_height() / 2 - space = 5 - ha = 'left' - - if x_value < 0: - space *= -1 - ha = 'right' - - label = "{:.1f}".format(x_value) - - # Create annotation - plt.annotate( - label, - (x_value, y_value), - xytext=(space, 0), - textcoords="offset points", - va='center', - ha=ha, fontsize=12, color='black', fontweight='bold') - - # map names to colors - cmap = {True: 'green', False: 'red'} - patches = [Patch(color=v, label=k) for k, v in cmap.items()] - plt.text(0,-1.5,f"Last updated {arrow.get()}", fontsize=10) - plt.legend(labels=objects, handles=patches, loc='upper right', borderaxespad=0, fontsize=15, frameon=True) - plt.savefig(SAVE_DIR+file_name+".png", bbox_inches='tight') - -def barplot_mode(data,x,y,plot_title,file_name): - all_labels= ['Gas Car, drove alone', - 'Bus', - 'Train', - 'Free Shuttle', - 'Taxi/Uber/Lyft', - 'Gas Car, with others', - 'Bikeshare', - 'Scooter share', - 'E-bike', - 'Walk', - 'Skate board', - 'Regular Bike', - 'Not a Trip', - 'No Travel', - 'Same Mode', - 'E-car, drove alone', - 'E-car, with others', - 'Air', - 'Other'] - - colours = dict(zip(all_labels, plt.cm.tab20.colors[:len(all_labels)])) - sns.set(font_scale=1.5) - f = plt.subplots(figsize=(15, 6)) - sns.set(style='whitegrid') - ax = sns.barplot(x=x, y=y, palette=colours,data=data, ci=None) - plt.xlabel(x, fontsize=23) - plt.ylabel(y, fontsize=23) - plt.title(plot_title, fontsize=25) - # y should be based on the max range + the biggest label ("Gas Car, with others") - plt.text(0,-(data[y].max()/8 + 3.3),f"Last updated {arrow.get()}", fontsize=10) - plt.setp(plt.gca().get_xticklabels(), rotation=45, horizontalalignment='right') - plt.savefig(SAVE_DIR+file_name+".png", bbox_inches='tight') - -def barplot_mode2(data,x,y,y2,plot_title,file_name): - all_labels= ['Gas Car, drove alone', - 'Bus', - 'Train', - 'Free Shuttle', - 'Taxi/Uber/Lyft', - 'Gas Car, with others', - 'Bikeshare', - 'Scooter share', - 'E-bike', - 'Walk', - 'Skate board', - 'Regular Bike', - 'Not a Trip', - 'No Travel', - 'Same Mode', - 'E-car, drove alone', - 'E-car, with others', - 'Air', - 'Other'] - - colours = dict(zip(all_labels, plt.cm.tab20.colors[:len(all_labels)])) - sns.set(font_scale=1.5) - - fig, ax1 = plt.subplots(figsize=(15,6)) - #bar plot creation - ax1.set_title(plot_title, fontsize=16) - plt.text(0,-2,f"Last updated {arrow.get()}", fontsize=10) - ax1.set_xlabel(x, fontsize=16) - ax1.set_ylabel(y, fontsize=16) - ax1 = sns.barplot(x=x, y=y, data = data, palette=colours, ci=None) - ax1.grid(False) - - #specify we want to share the same x-axis - ax2 = ax1.twinx() - color = 'tab:red' - #line plot creation - ax2.set_ylabel('Count', fontsize=16) - ax2 = sns.pointplot(x=x, y=y2, data = data, sort=False, color=color) - ax2.grid(False) - plt.setp(ax2.get_xticklabels(), rotation=45, ha='right') - plt.setp(ax1.get_xticklabels(), rotation=45, ha='right') - plt.savefig(SAVE_DIR+file_name+".png", bbox_inches='tight') - -def barplot_day(data,x,y,plot_title,file_name): - sns.set(font_scale=1.5) - f = plt.subplots(figsize=(15, 6)) - sns.set(style='whitegrid') - ax = sns.barplot(x=x, y=y,data=data, ci=None, color='blue') - plt.xlabel(x, fontsize=16) - plt.ylabel(y, fontsize=16) - plt.title(plot_title, fontsize=16) - # heuristic where we take the max value and divide it by 8 to get the scale - # the 8 is heuristic based on experimentation with the CanBikeCO data - plt.text(0,-(data[y].max())/8,f"Last updated {arrow.get()}", fontsize=10) - plt.savefig(SAVE_DIR+file_name+".png", bbox_inches='tight') - -def CO2_impact(x,y,color,plot_title,file_name): - color = color.map({True: 'green', False: 'red'}) - objects = ('CO2 Reduction', 'CO2 Increase') - - y_labels = y - plt.figure(figsize=(15, 8)) - width = 0.8 - ax = x.plot(kind='barh',width=width, color=color) - ax.set_title(plot_title, fontsize=18) - ax.set_xlabel('CO2 Emissions (lb)', fontsize=18) - ax.set_ylabel('Replaced Mode',fontsize=18) - ax.set_yticklabels(y_labels) - ax.xaxis.set_tick_params(labelsize=15) - ax.yaxis.set_tick_params(labelsize=15) - ax.relim() - ax.autoscale_view() - - rects = ax.patches - for rect in rects: - x_value = rect.get_width() - y_value = rect.get_y() + rect.get_height() / 2 - space = 5 - ha = 'left' - - if x_value < 0: - space *= -1 - ha = 'right' - - label = "{:.1f}".format(x_value) - - # Create annotation - plt.annotate( - label, - (x_value, y_value), - xytext=(space, 0), - textcoords="offset points", - va='center', - ha=ha, fontsize=12, color='black', fontweight='bold') - - # map names to colors - cmap = {True: 'green', False: 'red'} - patches = [Patch(color=v, label=k) for k, v in cmap.items()] - plt.text(0,-1.5,f"Last updated {arrow.get()}", fontsize=10) - plt.legend(labels=objects, handles=patches, loc='upper right', borderaxespad=0, fontsize=15, frameon=True) - plt.savefig(SAVE_DIR+file_name+".png", bbox_inches='tight') - -def timeseries_plot(x,y,plot_title,ylab,file_name): - fig, ax = plt.subplots(figsize=(16,4)) - sns.lineplot(ax=ax, x=x, y=y).set(title=plot_title, xlabel='Date', ylabel=ylab) - plt.xticks(rotation=45) - plt.subplots_adjust(bottom=0.25) - ax.figure.savefig(SAVE_DIR+file_name+".png", bbox_inches='tight') - -def timeseries_multi_plot(data,x,y,hue,plot_title,ylab,legend_title,file_name): - fig, ax = plt.subplots(figsize=(16,4)) - sns.lineplot(ax=ax, data=data, x=x, y=y, hue=hue).set(title=plot_title, xlabel='Date', ylabel=ylab) - plt.xticks(rotation=45) - plt.subplots_adjust(bottom=0.25) - plt.legend(bbox_to_anchor=(1.02, 1), loc='best', borderaxespad=0, title=legend_title) - ax.figure.savefig(SAVE_DIR+file_name+".png", bbox_inches='tight') - -def access_alt_text(alt_text, chart_name): - """ Inputs: - alt_text = the text describing the chart - chart_name = the alt text file to save or update - """ - f = open(SAVE_DIR+chart_name+".txt",'w') - f.write(alt_text) - f.close() - return alt_text - -def store_alt_text_generic(chart_description, chart_name, var_name): - """ Inputs: - chart_description = what type of chart is it - chart_name = what to label chart by in the dictionary - var_name = the variable being analyzed across the chart - """ - # Fill out the alt text based on components of the chart and passed data - alt_text = f"{chart_description} chart of {var_name}." - alt_text = access_alt_text(alt_text, chart_name) - return alt_text - -def store_alt_text_bar(df, chart_name, var_name): - """ Inputs: - df = dataframe with index of item names, first column is counts - chart_name = what to label chart by in the dictionary - var_name = the variable being analyzed across pie slices - """ - # Fill out the alt text based on components of the chart and passed data - alt_text = f"Bar chart of {var_name}." - for i in range(0,len(df)): - alt_text += f" {df.index[i]} is {np.round(df.iloc[i,0], 1)}." - alt_text = access_alt_text(alt_text, chart_name) - return alt_text - -def store_alt_text_pie(df, chart_name, var_name): - """ Inputs: - df = dataframe with index of item names, first column is counts - chart_name = what to label chart by in the dictionary - var_name = the variable being analyzed across pie slices - """ - # Fill out the alt text based on components of the chart and passed data - alt_text = f"Pie chart of {var_name}." - for i in range(0,len(df)): - alt_text += f" {df.index[i]} is {np.round(df.iloc[i,0] / np.sum(df.iloc[:,0]) * 100, 1)}%." - alt_text = access_alt_text(alt_text, chart_name) - return alt_text - -def store_alt_text_timeseries(df, chart_name, var_name): - """ Inputs: - df = dataframe with first col of dates, second column is values - chart_name = what to label chart by in the dictionary - var_name = the variable being analyzed across pie slices - """ - # Fill out the alt text based on components of the chart and passed data - alt_text = f"Scatter chart of {var_name}." - arg_min = np.argmin(df.iloc[:,1]) - arg_max = np.argmax(df.iloc[:,1]) - alt_text += f" First minimum is {np.round(df.iloc[arg_min,1], 1)} on {df.iloc[arg_min,0]}. First maximum is {np.round(df.iloc[arg_max,1], 1)} on {df.iloc[arg_max,0]}." - alt_text = access_alt_text(alt_text, chart_name) - return alt_text - -def generate_missing_plot(plot_title,debug_df,file_name): - f, ax = plt.subplots(figsize=(10,10)) - - plt.title("Unable to generate plot\n"+plot_title+"\n Reason:", fontsize=25, color="red") - # Must keep the patch visible; otherwise the entire figure becomes transparent - # f.patch.set_visible(False) - ax.axis('off') - ax.axis('tight') - # ax = sns.barplot(x=debug_df['count'],y=debug_df.index, palette=sns.color_palette("Reds",n_colors=10)) - # ax.set_xlim(0, None) - # for i in ax.containers: - # ax.bar_label(i,) - the_table = plt.table(cellText=debug_df.values, - rowLabels=debug_df.index, - colLabels=debug_df.columns, - loc="center") - the_table.auto_set_font_size(False) - the_table.set_fontsize(20) - the_table.scale(1, 4) - cellDict = the_table.get_celld() - for i in range(1,len(debug_df)+1): - currCellTextStr = cellDict[(i,0)].get_text().get_text() - currCellTextFloat = float(currCellTextStr) - if np.isnan(currCellTextFloat): - cellDict[(i,0)].get_text().set_text("None") - if np.isnan(currCellTextFloat) or currCellTextFloat == 0: - cellDict[(i, 0)].get_text().set_color("red") - plt.savefig(SAVE_DIR+file_name+".png", bbox_inches='tight') - -def store_alt_text_missing(df, chart_name, var_name): - """ Inputs: - df = dataframe with index of debug information, first column is counts - chart_name = what to label chart by in the dictionary - var_name = the variable being analyzed across pie slices - """ - # Fill out the alt text based on components of the chart and passed data - alt_text = f"Unable to generate\nBar chart of {var_name}.\nReason:" - for i in range(0,len(df)): - alt_text += f" {df.index[i]} is {np.round(df.iloc[i,0], 1)}." - alt_text = access_alt_text(alt_text, chart_name) - return alt_text diff --git a/viz_scripts/replacement_model_data_processing.ipynb b/viz_scripts/replacement_model_data_processing.ipynb deleted file mode 100644 index 19684a3..0000000 --- a/viz_scripts/replacement_model_data_processing.ipynb +++ /dev/null @@ -1,580 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "year = None\n", - "month = None\n", - "program = \"prepilot\"\n", - "study_type = \"program\"\n", - "mode_of_interest = \"pilot_ebike\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "SAVE_DIR = '/plots/'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from collections import defaultdict\n", - "\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import pandas as pd\n", - "import seaborn as sns\n", - "from sklearn import linear_model\n", - "\n", - "from plots import *\n", - "import scaffolding\n", - "\n", - "sns.set_style(\"whitegrid\")\n", - "sns.set()\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Settings and imports specific to this notebook\n", - "\n", - "include_replaced_modes_as_valid = True # Flip this when we want to get results versus generate the replaced_mode correction graphs\n", - "model_with_sensed = False\n", - "input_dataset = \"ONLY_LABELED\" # \"ONLY_LABELED\", \"ONLY_SENSED\" or \"BEST_AVAILABLE\" for sensitivity analysis\n", - "LABEL_ASSIST_THRESHOLD = 0.3\n", - "\n", - "# For reloading modules from Jupyter\n", - "# import importlib\n", - "# importlib.reload(replacement_models)\n", - "\n", - "import datetime\n", - "import pickle\n", - "import sklearn.metrics\n", - "from sklearn.ensemble import RandomForestClassifier\n", - "from sklearn.model_selection import KFold\n", - "from sklearn.model_selection import train_test_split\n", - "import emission.core.get_database as edb\n", - "import emission.core.wrapper.entry as ecwe\n", - "import emission.storage.decorations.analysis_timeseries_queries as esda\n", - "import emission.storage.decorations.trip_queries as esdt\n", - "import emission.storage.decorations.timeline as esdl\n", - "import emission.storage.timeseries.abstract_timeseries as esta\n", - "import emission.storage.timeseries.timequery as estt\n", - "from uuid import UUID" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Do not run this notebook at all unless it is for a program; nbclient will run up through this cell\n", - "if study_type != \"program\":\n", - " raise Exception(\"The plots in this notebook are only relevant to programs\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Loading mapping dictionaries from mapping_dictionaries notebook\n", - "%store -r dic_re\n", - "%store -r dic_pur\n", - "\n", - "# convert a dictionary to a defaultdict\n", - "dic_re = defaultdict(lambda: 'Other',dic_re)\n", - "dic_pur = defaultdict(lambda: 'Other',dic_pur)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Get UUIDs by Program" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Split UUIDs by program\n", - "program_uuid_map = {}\n", - "for ue in edb.get_uuid_db().find():\n", - " program = ue['user_email'].split(\"_\")[0]\n", - " if program in program_uuid_map.keys():\n", - " program_uuid_map[program].append(str(ue['uuid']))\n", - " else:\n", - " print(f\"Found new program {program}, creating new list\")\n", - " program_uuid_map[program] = []\n", - " program_uuid_map[program].append(str(ue['uuid']))\n", - "\n", - "uuid_program_list = []\n", - "for ue in edb.get_uuid_db().find():\n", - " program = ue['user_email'].split(\"_\")[0]\n", - " uuid_program_list.append({\"program\": program, \"opcode\": ue[\"user_email\"], \"user_id_str\": str(ue['uuid'])})" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "uuid_program_df = pd.DataFrame.from_dict(uuid_program_list)\n", - "uuid_program_df.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Collect Data From Database" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "expanded_ct, file_suffix, quality_text, debug_df = scaffolding.load_viz_notebook_data(year,\n", - " month,\n", - " program,\n", - " study_type,\n", - " dic_re,\n", - " dic_pur=dic_pur)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Join to the program df to get each user's program\n", - "expanded_ct['user_id_str'] = expanded_ct['user_id'].astype(str)\n", - "expanded_ct = expanded_ct.merge(uuid_program_df, on='user_id_str')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Add non-label category\n", - "expanded_ct['replaced_mode'] = expanded_ct['replaced_mode'].fillna('Unlabeled')\n", - "expanded_ct.loc[expanded_ct['replaced_mode'] == 'Unlabeled', 'Replaced_mode'] = \"Unlabeled\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Join the expanded database data to socioeconomic data\n", - "socio_data = pd.read_csv('./Can Do Colorado eBike Program - en.csv')\n", - "socio_data.rename(columns={'Unique User ID (auto-filled, do not edit)':'user_id',\n", - " 'Please identify which category represents your total household income, before taxes, for last year.':'HHINC',\n", - " 'How many motor vehicles are owned, leased, or available for regular use by the people who currently live in your household?':'VEH',\n", - " 'In which year were you born?':'AGE',\n", - " 'Including yourself, how many people live in your home?':'HHSIZE',\n", - " 'How many children under age 18 live in your home?':'CHILDREN',\n", - " 'What is your gender?':'GENDER',\n", - " 'If you were unable to use your household vehicle(s), which of the following options would be available to you to get you from place to place?':'available_modes',\n", - " 'Are you a student?':'STUDENT',\n", - " \"Including yourself, how many people have a driver's license in your household?\":'DRIVERS'}, inplace=True)\n", - "socio_data = socio_data[~socio_data.user_id.isnull()]\n", - "\n", - "# Deal with people who have multiple responses by using most recent\n", - "socio_data = socio_data.sort_values(by=['user_id', 'Timestamp'])\n", - "socio_data.drop_duplicates(subset=['user_id'], keep='last', inplace=True)\n", - "socio_data['user_id_socio'] = socio_data.user_id\n", - "socio_data = socio_data.drop(labels='user_id', axis=1)\n", - "\n", - "# Lose some trips due to people with no survey responses\n", - "expanded_ct['user_id_socio'] = expanded_ct.user_id.astype(str)\n", - "expanded_ct.user_id_socio = [i.replace('-','') for i in expanded_ct.user_id_socio] # remove all dashes from strings\n", - "expanded_ct = expanded_ct.merge(socio_data, on='user_id_socio')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Data Preprocessing" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "## Filter database to variables of modeling interest\n", - "data = expanded_ct[['Mode_confirm','Replaced_mode','replaced_mode','Trip_purpose','duration','distance_miles','start_local_dt_weekday','available_modes','AGE','HHINC','VEH','HHSIZE','CHILDREN','GENDER','STUDENT','DRIVERS','user_id','_id','start_local_dt_year','start_local_dt_month','start_local_dt_day','cleaned_trip','start_fmt_time','start_loc','end_loc']].copy()\n", - "\n", - "\n", - "## Pre-filter round of variable creation\n", - "# Make copy of user_id to be categorized since both versions are needed\n", - "data['user_id_int'] = data['user_id']\n", - "\n", - "# Get timestamp from known year/month/day aggregated to days\n", - "data.rename(columns={'start_local_dt_year':'year','start_local_dt_month':'month','start_local_dt_day':'day'}, inplace=True)\n", - "data['date_time'] = pd.to_datetime(data[['year','month','day']])\n", - "data = data.drop(columns=['year','day'])\n", - "\n", - "# Get time of day\n", - "data['hour'] = [int(x[1][:2]) for x in expanded_ct.start_fmt_time.str.split('T')]\n", - "\n", - "# Fix age\n", - "data['AGE'] = 2022 - data['AGE']\n", - "\n", - "# Number of workers\n", - "data['WORKERS'] = (data['HHSIZE'] - data['CHILDREN']).astype(int)\n", - "\n", - "# Vehicles per driver\n", - "data['VEH'] = data['VEH'].replace('4+', '4')\n", - "\n", - "# Recoded Cyclical Time of Day\n", - "hours_in_day = 24\n", - "months_in_year = 12\n", - "data['sin_time'] = np.sin(2*np.pi*data.hour/hours_in_day)\n", - "data['cos_time'] = np.cos(2*np.pi*data.hour/hours_in_day)\n", - "data['sin_month'] = np.sin(2*np.pi*data.month/months_in_year)\n", - "data['cos_month'] = np.cos(2*np.pi*data.month/months_in_year)\n", - "\n", - "# Duration in minutes\n", - "data['duration'] = data['duration'] / 60\n", - "\n", - "# Add coordinates to the data\n", - "z = pd.json_normalize(data.start_loc)['coordinates']\n", - "olon = [str(x[0]) for x in z]\n", - "olat = [str(x[1]) for x in z]\n", - "data['olat'] = olat\n", - "data['olon'] = olon\n", - "z = pd.json_normalize(data.end_loc)['coordinates']\n", - "dlon = [str(x[0]) for x in z]\n", - "dlat = [str(x[1]) for x in z]\n", - "data['dlat'] = dlat\n", - "data['dlon'] = dlon\n", - "\n", - "# Recode variables\n", - "data.Mode_confirm = data.Mode_confirm.replace(\n", - " ['Gas Car, drove alone',\n", - " 'Gas Car, with others',\n", - " 'Bikeshare',\n", - " 'Scooter share',\n", - " 'Regular Bike',\n", - " 'Skate board',\n", - " 'Train',\n", - " 'Free Shuttle',\n", - " 'Bus',\n", - " 'Walk',\n", - " 'Taxi/Uber/Lyft',\n", - " 'E-bike'],\n", - " ['car',\n", - " 's_car',\n", - " 's_micro',\n", - " 's_micro',\n", - " 'p_micro',\n", - " 'p_micro',\n", - " 'transit',\n", - " 'transit',\n", - " 'transit',\n", - " 'walk',\n", - " 'ridehail',\n", - " 'ebike']\n", - ")\n", - "data.Replaced_mode = data.Replaced_mode.replace(\n", - " ['Gas Car, drove alone',\n", - " 'Gas Car, with others',\n", - " 'Bikeshare',\n", - " 'Scooter share',\n", - " 'Regular Bike',\n", - " 'Skate board',\n", - " 'Train',\n", - " 'Free Shuttle',\n", - " 'Bus',\n", - " 'Walk',\n", - " 'Taxi/Uber/Lyft',\n", - " 'E-bike',\n", - " 'No Travel'],\n", - " ['car',\n", - " 's_car',\n", - " 's_micro',\n", - " 's_micro',\n", - " 'p_micro',\n", - " 'p_micro',\n", - " 'transit',\n", - " 'transit',\n", - " 'transit',\n", - " 'walk',\n", - " 'ridehail',\n", - " 'ebike',\n", - " 'no_travel']\n", - ")\n", - "data.Trip_purpose = data.Trip_purpose.replace(\n", - " ['Work',\n", - " 'School',\n", - " 'Recreation/Exercise',\n", - " 'Transit transfer',\n", - " 'Meal',\n", - " 'Entertainment/Social',\n", - " 'Shopping',\n", - " 'Personal/Medical',\n", - " 'Religious',\n", - " 'Pick-up/Drop off'],\n", - " ['commute',\n", - " 'commute',\n", - " 'recreation',\n", - " 'transit_transfer',\n", - " 'discretionary',\n", - " 'discretionary',\n", - " 'discretionary',\n", - " 'discretionary',\n", - " 'discretionary',\n", - " 'pudo']\n", - ")\n", - "data['is_weekend'] = 0\n", - "data.loc[data['start_local_dt_weekday'].isin(['0','6']), 'is_weekend'] = 1\n", - "data['is_male'] = 0\n", - "data.loc[data['GENDER'].isin(['Man']), 'is_male'] = 1\n", - "\n", - "## Filter data\n", - "# Filter out responses to data that are not workable\n", - "data = data[~data['Mode_confirm'].isin(['Not a Trip','Other'])]\n", - "data = data[~data['Replaced_mode'].isin(['Not a Trip','Other','Unlabeled'])]\n", - "data = data[~data['available_modes'].isin(['None', 'Prefer not to say'])]\n", - "data = data[~data['Trip_purpose'].isin(['not_a_trip','Other'])]\n", - "data = data[~data['HHINC'].isin(['Prefer not to say','$100,000 -$149,999','$150,000','$150,000-$199,999','$200,000 or more'])] # Side note why is 150k (n=7) its own bin?\n", - "data = data[~data['VEH'].isin(['Prefer not to say / Prefiero no decir.'])]\n", - "data = data[data['distance_miles']<50]\n", - "data = data[data['AGE']<100]\n", - "data = data[data['HHSIZE']<10]\n", - "data = data[data['HHSIZE']>data['CHILDREN']]\n", - "\n", - "\n", - "## Post-filter round of variable creation\n", - "# OHE any categorical, non-ordinal variables\n", - "ohe_vars = ['Trip_purpose','HHINC','STUDENT']\n", - "ohe_prefixes = ['purp','hhinc','student']\n", - "data = pd.get_dummies(data, columns=ohe_vars, prefix=ohe_prefixes)\n", - "\n", - "# Calculate travel times for each trip, across every mode\n", - "def add_all_mode_tt(data, mode_col, duration_col, dist_col):\n", - " wait_times_init = {'car':0.00,\n", - " 's_car':0.00,\n", - " 'ridehail':5.00,\n", - " 's_micro':5.00,\n", - " 'p_micro':0.00,\n", - " 'transit':7.00,\n", - " 'walk':5.00,\n", - " 'ebike':0.00}\n", - " mode_travel_times = {}\n", - " for mode in pd.unique(data[mode_col]):\n", - "\n", - " # Linear model for duration based on distance for trips belonging to each mode\n", - " mode_data = data[data[mode_col]==mode]\n", - " regr = linear_model.LinearRegression()\n", - " regr.fit(np.log(mode_data[dist_col].values.reshape(-1,1)), np.log(mode_data[duration_col].values.reshape(-1,1)))\n", - " \n", - " # Make prediction for ALL trips, reverse the log transform to get mins\n", - " mode_duration_pred = regr.predict(np.log(data[dist_col].values.reshape(-1,1)))\n", - " mode_travel_times['tt_'+mode] = np.exp(mode_duration_pred) + wait_times_init[mode]\n", - "\n", - " # Apply for each mode existing in the dataframe\n", - " for mode in mode_travel_times:\n", - " data[mode] = mode_travel_times[mode]\n", - "\n", - " return regr, data\n", - "\n", - "# Calculate all mode travel times and add to dataframe\n", - "regr, data = add_all_mode_tt(data,'Mode_confirm','duration','distance_miles')\n", - "\n", - "# Calculate vehicle costs\n", - "cost_factors_init = {'car':0.00,\n", - " 's_car':0.00,\n", - " 'ridehail':5.00,\n", - " 's_micro':1.00,\n", - " 'p_micro':0.00,\n", - " 'transit':3.50,\n", - " 'ebike':0.00,\n", - " 'walk':0.00}\n", - "cost_factors = {'car':0.62,\n", - " 's_car':0.31,\n", - " 'ridehail':0.80,\n", - " 's_micro':0.90,\n", - " 'p_micro':0.00,\n", - " 'transit':0.00,\n", - " 'ebike':0.11,\n", - " 'walk':0.00}\n", - "\n", - "def add_all_mode_cost(data, cost_factors, dist_col):\n", - " for factor in cost_factors:\n", - " data['cost_'+factor] = cost_factors_init[factor] + (cost_factors[factor] * data[dist_col])\n", - " return data\n", - "\n", - "# Calculate all mode travel costs and add to dataframe\n", - "add_all_mode_cost(data, cost_factors, 'distance_miles')\n", - "\n", - "# Labels for modes in the availability survey\n", - "availability_codes = {'Public transportation (bus, subway, light rail, etc.)':'transit',\n", - " 'Get a ride from a friend or family member':'s_car',\n", - " 'Rental car (including Zipcar/ Car2Go)':'car',\n", - " 'Taxi (regular taxi, Uber, Lyft, etc)':'ridehail',\n", - " 'Bicycle':'p_micro',\n", - " 'Shared bicycle or scooter':'s_micro',\n", - " 'Walk/roll':'walk',\n", - " 'Skateboard':'p_micro',\n", - " 'ebike':'ebike',\n", - " 'None':'none'}\n", - "\n", - "def add_mode_availability(data, availability_codes, availability_col, choice_col, replaced_col, is_sp):\n", - " mode_list = np.unique(list(availability_codes.values())[:-1])\n", - " choice_list = data[choice_col].values\n", - " replaced_list = data[replaced_col].values\n", - " for mode in mode_list:\n", - " mode_avail = []\n", - " for i, available in enumerate(data[availability_col].values):\n", - " available_modes = [availability_codes[x] for x in available.split(';')]\n", - " # For SP: Replacement/stated available should be 1, chosen should be 0\n", - " if is_sp:\n", - " if mode==choice_list[i]:\n", - " mode_check = False\n", - " else:\n", - " mode_check = mode==replaced_list[i] or mode in available_modes\n", - " # For RP: Chosen/replacement/stated available should be 1\n", - " else:\n", - " mode_check = mode==choice_list[i] or mode==replaced_list[i] or mode in available_modes\n", - " # Keep binary list of which trips the mode was available for\n", - " if mode_check:\n", - " mode_avail.append(1)\n", - " else:\n", - " mode_avail.append(0)\n", - " # For each mode add a column with binary availability\n", - " data['av_'+mode] = mode_avail\n", - " return data\n", - "\n", - "# Add mode availability according to survey responses\n", - "data = add_mode_availability(data, availability_codes, 'available_modes', 'Mode_confirm', 'Replaced_mode', is_sp=False)\n", - "\n", - "# # Add mode availability as all available\n", - "mode_list = ['car','s_car','ridehail','transit','p_micro','s_micro','walk','ebike','no_travel']\n", - "# for mode in mode_list:\n", - "# data[f\"av_{mode}\"] = 1\n", - "\n", - "# Handle all variables that are ordinal; otherwise they may not end up in correct order\n", - "# Make sure that all mode variables align after being converted to numeric variables\n", - "data.Mode_confirm = pd.Categorical(data.Mode_confirm, ordered=True, categories=mode_list)\n", - "data.Replaced_mode = pd.Categorical(data.Replaced_mode, ordered=True, categories=mode_list)\n", - "data['Mode_confirm_num'] = data.Mode_confirm.cat.codes\n", - "data['Replaced_mode_num'] = data.Replaced_mode.cat.codes\n", - "data = data[data['Mode_confirm_num']!=data['Replaced_mode_num']]\n", - "\n", - "## Save cleaned data to be used in modeling\n", - "data.to_csv(\"processed_replacement_modeling_data.csv\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Data Checks" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Data stats before cleaning\n", - "print(f\"Trips: {len(expanded_ct)}\")\n", - "print(f\"Users: {len(np.unique(expanded_ct.user_id))}\")\n", - "print(f\"Trips per user: {len(expanded_ct) / len(pd.unique(expanded_ct.user_id))}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Data stats after cleaning + columns available\n", - "print(f\"Trips: {len(data)}\")\n", - "print(f\"Users: {len(np.unique(data.user_id))}\")\n", - "print(f\"Trips per user: {len(data) / len(pd.unique(data.user_id))}\\n\")\n", - "print(f\"Columns: \\n{data.columns.values}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "# Check for NAs\n", - "data.isna().sum()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Check # obs for each class\n", - "print(f\"Mode_confirm:\\n{pd.value_counts(data.Mode_confirm)}\\n\")\n", - "print(f\"Replaced_mode:\\n{pd.value_counts(data.Replaced_mode)}\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.12" - } - }, - "nbformat": 4, - "nbformat_minor": 1 -} diff --git a/viz_scripts/replacement_models.py b/viz_scripts/replacement_models.py deleted file mode 100644 index 5e303dc..0000000 --- a/viz_scripts/replacement_models.py +++ /dev/null @@ -1,122 +0,0 @@ -import numpy as np -import pandas as pd -import sklearn.metrics -from sklearn.preprocessing import MinMaxScaler -from sklearn.neighbors import KNeighborsClassifier -from sklearn.ensemble import RandomForestClassifier -from sklearn.ensemble import GradientBoostingClassifier -from sklearn.svm import SVC - -def gbdt(data, choice_col, feature_list, kf): - # Save metrics from each run - accuracy = [] - f1 = [] - confusion = [] -# # Scale numeric variables -# scaler = MinMaxScaler() -# data_scaled = scaler.fit_transform(data[feature_list]) - data_scaled = data[feature_list].values - - for train_indices, test_indices in kf.split(data.values): - X_train, X_test = data_scaled[train_indices], data_scaled[test_indices] - y_train, y_test = data[choice_col].values[train_indices], data[choice_col].values[test_indices] - - # Train random forest on training set - model = GradientBoostingClassifier(n_estimators=50) - model.fit(X_train, y_train) - - # Predict for test set - y_pred = model.predict(X_test) - - # Track metrics - accuracy.append(sklearn.metrics.accuracy_score(y_test, y_pred)) - f1.append(sklearn.metrics.f1_score(y_test, y_pred, average='weighted')) - confusion.append(sklearn.metrics.confusion_matrix(y_test, y_pred, labels=[0,1,2,3,4,5,6,7], normalize='pred')) - - # Collect all model scores for comparison at the end - return model, accuracy, f1, confusion - -def rf(data, choice_col, feature_list, kf): - # Save metrics from each run - accuracy = [] - f1 = [] - confusion = [] -# # Scale numeric variables -# scaler = MinMaxScaler() -# data_scaled = scaler.fit_transform(data[feature_list]) - data_scaled = data[feature_list].values - - for train_indices, test_indices in kf.split(data.values): - X_train, X_test = data_scaled[train_indices], data_scaled[test_indices] - y_train, y_test = data[choice_col].values[train_indices], data[choice_col].values[test_indices] - - # Train random forest on training set - model = RandomForestClassifier(n_estimators=50) - model.fit(X_train, y_train) - - # Predict for test set - y_pred = model.predict(X_test) - - # Track metrics - accuracy.append(sklearn.metrics.accuracy_score(y_test, y_pred)) - f1.append(sklearn.metrics.f1_score(y_test, y_pred, average='weighted')) - confusion.append(sklearn.metrics.confusion_matrix(y_test, y_pred, labels=[0,1,2,3,4,5,6,7], normalize='pred')) - - # Collect all model scores for comparison at the end - return model, accuracy, f1, confusion - -def svm(data, choice_col, feature_list, kf): - # Save metrics from each run - accuracy = [] - f1 = [] - confusion = [] - # Scale numeric variables - scaler = MinMaxScaler() - data_scaled = scaler.fit_transform(data[feature_list]) - - for train_indices, test_indices in kf.split(data.values): - X_train, X_test = data_scaled[train_indices], data_scaled[test_indices] - y_train, y_test = data[choice_col].values[train_indices], data[choice_col].values[test_indices] - - # Train random forest on training set - model = SVC() - model.fit(X_train, y_train) - - # Predict for test set - y_pred = model.predict(X_test) - - # Track metrics - accuracy.append(sklearn.metrics.accuracy_score(y_test, y_pred)) - f1.append(sklearn.metrics.f1_score(y_test, y_pred, average='weighted')) - confusion.append(sklearn.metrics.confusion_matrix(y_test, y_pred, labels=[0,1,2,3,4,5,6,7], normalize='pred')) - - # Collect all model scores for comparison at the end - return model, accuracy, f1, confusion - -def knn(data, choice_col, feature_list, kf): - # Save metrics from each run - accuracy = [] - f1 = [] - confusion = [] - # Scale numeric variables - scaler = MinMaxScaler() - data_scaled = scaler.fit_transform(data[feature_list]) - - for train_indices, test_indices in kf.split(data.values): - X_train, X_test = data_scaled[train_indices], data_scaled[test_indices] - y_train, y_test = data[choice_col].values[train_indices], data[choice_col].values[test_indices] - - # Train random forest on training set - model = KNeighborsClassifier(n_neighbors=len(pd.unique(y_train))) - model.fit(X_train, y_train) - - # Predict for test set - y_pred = model.predict(X_test) - - # Track metrics - accuracy.append(sklearn.metrics.accuracy_score(y_test, y_pred)) - f1.append(sklearn.metrics.f1_score(y_test, y_pred, average='weighted')) - confusion.append(sklearn.metrics.confusion_matrix(y_test, y_pred, labels=[0,1,2,3,4,5,6,7], normalize='pred')) - - # Collect all model scores for comparison at the end - return model, accuracy, f1, confusion \ No newline at end of file diff --git a/viz_scripts/rm_src/LSTM.ipynb b/viz_scripts/rm_src/LSTM.ipynb deleted file mode 100644 index fcaca73..0000000 --- a/viz_scripts/rm_src/LSTM.ipynb +++ /dev/null @@ -1,2774 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "5f2cdb77", - "metadata": {}, - "outputs": [], - "source": [ - "import seaborn as sns\n", - "from abc import ABC, abstractmethod\n", - "from typing import List\n", - "import ast" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "0ebc3879", - "metadata": {}, - "outputs": [], - "source": [ - "import torch\n", - "import random\n", - "import torch.nn as nn\n", - "import torch.nn.functional as F\n", - "import torch.optim as optim\n", - "import numpy as np\n", - "import pandas as pd\n", - "from torch.utils.data import Dataset, DataLoader\n", - "from enum import Enum\n", - "import matplotlib.pyplot as plt\n", - "from torch.nn.utils.rnn import pad_sequence\n", - "from torch.nn.utils.rnn import pack_padded_sequence, pad_packed_sequence\n", - "\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.linear_model import LinearRegression\n", - "from sklearn.metrics import r2_score\n", - "\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "a2ace37f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Global experiment flags and variables.\n", - "SEED = 19348\n", - "TARGETS = ['p_micro', 'no_trip', 's_car', 'transit', 'car', 's_micro', 'ridehail', 'walk', 'unknown']\n", - "\n", - "# Set the Numpy seed too.\n", - "random.seed(SEED)\n", - "np.random.seed(SEED)\n", - "torch.manual_seed(SEED)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "9addd580", - "metadata": {}, - "outputs": [], - "source": [ - "# lstm = nn.LSTM(12, 64, batch_first=True, bidirectional=True, bias=False, num_layers=3)\n", - "# inp = torch.FloatTensor(8, 3, 12).fill_(0.)\n", - "# out, _ = lstm(inp)\n", - "\n", - "# print(out.size())" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "889bd770", - "metadata": {}, - "outputs": [], - "source": [ - "class SPLIT_TYPE(Enum):\n", - " INTRA_USER = 0\n", - " INTER_USER = 1\n", - " TARGET = 2\n", - " MIXED = 3\n", - " \n", - "\n", - "class SPLIT(Enum):\n", - " TRAIN = 0\n", - " TEST = 1\n", - "\n", - "\n", - "def get_train_test_splits(data: pd.DataFrame, how=SPLIT_TYPE, test_ratio=0.2, shuffle=True):\n", - "\n", - " n_users = list(data.user_id.unique())\n", - " n = data.shape[0]\n", - " \n", - " if shuffle:\n", - " data = data.sample(data.shape[0], random_state=SEED).reset_index(drop=True, inplace=False)\n", - " \n", - " # There are certain users with only one observation. What do we do with those?\n", - " # As per the mobilitynet modeling pipeline, we randomly assign them to either the\n", - " # training or test set.\n", - "\n", - " value_counts = data.user_id.value_counts()\n", - " single_count_ids = value_counts[value_counts == 1].index\n", - "\n", - " data_filtered = data.loc[~data.user_id.isin(single_count_ids), :].reset_index(drop=True)\n", - " data_single_counts = data.loc[data.user_id.isin(single_count_ids), :].reset_index(drop=True)\n", - "\n", - " X_tr, X_te = train_test_split(\n", - " data_filtered, test_size=test_ratio, shuffle=shuffle, stratify=data_filtered.user_id,\n", - " random_state=SEED\n", - " )\n", - "\n", - " data_single_counts['assigned'] = np.random.choice(['train', 'test'], len(data_single_counts))\n", - " X_tr_merged = pd.concat(\n", - " [X_tr, data_single_counts.loc[data_single_counts.assigned == 'train', :].drop(\n", - " columns=['assigned'], inplace=False\n", - " )],\n", - " ignore_index=True, axis=0\n", - " )\n", - "\n", - " X_te_merged = pd.concat(\n", - " [X_te, data_single_counts.loc[data_single_counts.assigned == 'test', :].drop(\n", - " columns=['assigned'], inplace=False\n", - " )],\n", - " ignore_index=True, axis=0\n", - " )\n", - "\n", - " return X_tr_merged, X_te_merged" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "6cfa847a", - "metadata": {}, - "outputs": [], - "source": [ - "# RM_weather contains more samples because data is not processed.\n", - "# _Fix contains lesser samples, but is cleaned using heuristics.\n", - "\n", - "data = pd.read_csv('../data/FULL_preprocessed_data_RM_weather.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "8fa73ebc", - "metadata": {}, - "outputs": [], - "source": [ - "class DataPipeline(ABC):\n", - " \n", - " def __init__(self, df: pd.DataFrame):\n", - " self.df = df\n", - " \n", - " # Establish hooks.\n", - " @abstractmethod\n", - " def remove_negative_sections(self):\n", - " raise NotImplementedError()\n", - " \n", - " @abstractmethod\n", - " def get_mode_outliers(self):\n", - " raise NotImplementedError()\n", - " \n", - " @abstractmethod\n", - " def drop_outliers(self, outliers: List):\n", - " raise NotImplementedError()\n", - " \n", - " @abstractmethod\n", - " def compute_mph_feature(self):\n", - " raise NotImplementedError()\n", - " \n", - " def run_pipeline(self):\n", - " self.remove_negative_sections()\n", - " outlier_ix = self.get_mode_outliers()\n", - " self.drop_outliers(list(outlier_ix))\n", - " return self.compute_mph_feature()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "d8e129c8", - "metadata": {}, - "outputs": [], - "source": [ - "class SectionDataPipeline(DataPipeline):\n", - " def __init__(self, df: pd.DataFrame):\n", - " super().__init__(df)\n", - " \n", - " def remove_negative_sections(self):\n", - " f_rows = list()\n", - " for _, row in self.df[['section_durations', 'section_distances', 'section_modes']].iterrows():\n", - "\n", - " dist = np.array(ast.literal_eval(row['section_distances']))\n", - " dur = np.array(ast.literal_eval(row['section_durations']))\n", - " modes = np.array(ast.literal_eval(row['section_modes']))\n", - "\n", - " assert len(dist) == len(dur) == len(modes)\n", - "\n", - " mask = np.logical_and(dist > 0, dur > 0)\n", - "\n", - " f_dist, f_dur, f_modes = dist[mask], dur[mask], modes[mask]\n", - "\n", - " assert len(f_dist) == len(f_dur) == len(f_modes)\n", - "\n", - " f_rows.append({\n", - " # scale to miles.\n", - " 'distances': f_dist * 0.00062,\n", - " # Scale to hours.\n", - " 'durations': f_dur / 3600.,\n", - " 'modes': f_modes\n", - " })\n", - "\n", - " parsed = pd.DataFrame(f_rows, index=data.index)\n", - "\n", - " self.df.drop(columns=['section_durations', 'section_distances', 'section_modes'], inplace=True)\n", - " self.df = pd.concat([self.df, parsed], axis=1)\n", - " \n", - " def get_mode_outliers(self):\n", - " \n", - " def compute_outliers(mode: str):\n", - " x = self.df[self.df.modes.str.contains(mode, regex=False)]\n", - " outlier_ix = []\n", - " dist, dur = np.array([]), np.array([])\n", - "\n", - " # First, iterate to compute the 99th percentile for the mode.\n", - " for row_ix, row in x.iterrows():\n", - " ix = np.where(row['modes'] == mode)[0]\n", - " dist = np.append(dist, row['distances'][ix])\n", - " dur = np.append(dur, row['durations'][ix])\n", - "\n", - " dist_99p = np.percentile(dist, 99)\n", - " dur_99p = np.percentile(dur, 99)\n", - "\n", - " print(f\"99th Percentile for {mode}:\\n\\tdistance = {dist_99p}\\n\\tduration = {dur_99p}\")\n", - "\n", - " # Iterate again.\n", - " for row_ix, row in x.iterrows():\n", - " ix = np.where(row['modes'] == mode)[0]\n", - " row_distances = row['distances'][ix]\n", - " row_durations = row['durations'][ix]\n", - "\n", - " if np.any(np.logical_or(row_distances > dist_99p, row_durations > dur_99p)):\n", - " outlier_ix.append(row_ix)\n", - "\n", - " print(\"Number of candidate rows for deletion: \", len(outlier_ix))\n", - "\n", - " return outlier_ix\n", - " \n", - " all_bad_ix = set()\n", - " for mode in ['walking', 'bicycling', 'train', 'bus', 'car']:\n", - " bad_mode_ix = compute_outliers(mode)\n", - " all_bad_ix = all_bad_ix.union(set(bad_mode_ix))\n", - " print(50*'=')\n", - " \n", - " print(f\"After analysis, {len(all_bad_ix)} total unique rows will be dropped.\")\n", - " \n", - " return all_bad_ix\n", - " \n", - " def drop_outliers(self, outliers: List):\n", - " self.df.drop(index=outliers, inplace=True)\n", - " \n", - " def compute_mph_feature(self):\n", - " self.df['mph'] = self.df['distances']/self.df['durations']\n", - " return self.df" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "38af3aad", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "99th Percentile for walking:\n", - "\tdistance = 4.305297486707881\n", - "\tduration = 2.9548623706234824\n", - "Number of candidate rows for deletion: 765\n", - "==================================================\n", - "99th Percentile for bicycling:\n", - "\tdistance = 8.82048257219703\n", - "\tduration = 0.9153121545202207\n", - "Number of candidate rows for deletion: 228\n", - "==================================================\n", - "99th Percentile for train:\n", - "\tdistance = 16.629460194644828\n", - "\tduration = 0.7250753228180938\n", - "Number of candidate rows for deletion: 2\n", - "==================================================\n", - "99th Percentile for bus:\n", - "\tdistance = 7.551944729816364\n", - "\tduration = 0.7316025587360053\n", - "Number of candidate rows for deletion: 12\n", - "==================================================\n", - "99th Percentile for car:\n", - "\tdistance = 40.548478579524726\n", - "\tduration = 1.2145738347887987\n", - "Number of candidate rows for deletion: 721\n", - "==================================================\n", - "After analysis, 1718 total unique rows will be dropped.\n" - ] - } - ], - "source": [ - "pipeline = SectionDataPipeline(data)\n", - "cleaned = pipeline.run_pipeline()" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "81151c12", - "metadata": {}, - "outputs": [], - "source": [ - "def preprocess(df: pd.DataFrame):\n", - " \n", - " # Offset by -1 for torch.\n", - " df.chosen -= 1\n", - " \n", - "# df['start_fmt_time'] = pd.to_datetime(df['start_fmt_time'], utc=True)\n", - "# df['start_fmt_time'] = df['start_fmt_time'].dt.tz_convert('America/Denver')\n", - " \n", - " df.rename(\n", - " columns={'start_local_dt_weekday': 'start:DOW', 'end_local_dt_weekday': 'end:DOW'},\n", - " inplace=True\n", - " )\n", - "\n", - " df.n_working_residents = df.n_working_residents.apply(lambda x: 0 if x < 0 else x)\n", - "\n", - " # Fix some age preprocessing issues.\n", - " df.age = df.age.apply(lambda x: x if x < 100 else 2024-x)\n", - " \n", - " return df" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "0d4d6b76", - "metadata": {}, - "outputs": [], - "source": [ - "def get_duration_estimate(df: pd.DataFrame, dset: SPLIT, model_dict: dict):\n", - " \n", - " X_features = ['section_distance_argmax', 'age']\n", - " \n", - " if 'mph' in df.columns:\n", - " X_features += ['mph']\n", - " \n", - " if dset == SPLIT.TRAIN and model_dict is None:\n", - " model_dict = dict()\n", - " \n", - " if dset == SPLIT.TEST and model_dict is None:\n", - " raise AttributeError(\"Expected model dict for testing.\")\n", - " \n", - " if dset == SPLIT.TRAIN:\n", - " for section_mode in df.section_mode_argmax.unique():\n", - " section_data = df.loc[df.section_mode_argmax == section_mode, :]\n", - " if section_mode not in model_dict:\n", - " model_dict[section_mode] = dict()\n", - "\n", - " model = LinearRegression(fit_intercept=True)\n", - "\n", - " X = section_data[\n", - " X_features\n", - " ]\n", - " Y = section_data[['section_duration_argmax']]\n", - "\n", - " model.fit(X, Y.values.ravel())\n", - "\n", - " r2 = r2_score(y_pred=model.predict(X), y_true=Y.values.ravel())\n", - " print(f\"Train R2 for {section_mode}: {r2}\")\n", - "\n", - " model_dict[section_mode]['model'] = model\n", - " \n", - " elif dset == SPLIT.TEST:\n", - " for section_mode in df.section_mode_argmax.unique():\n", - " section_data = df.loc[df.section_mode_argmax == section_mode, :]\n", - " X = section_data[\n", - " X_features\n", - " ]\n", - " \n", - " Y = section_data[['section_duration_argmax']]\n", - " \n", - " y_pred = model_dict[section_mode]['model'].predict(X)\n", - " r2 = r2_score(y_pred=y_pred, y_true=Y.values.ravel())\n", - " print(f\"Test R2 for {section_mode}: {r2}\")\n", - " \n", - " # Create the new columns for the duration.\n", - " df[TARGETS] = 0\n", - " df['temp'] = 0\n", - " \n", - " for section in df.section_mode_argmax.unique():\n", - " X_section = df.loc[df.section_mode_argmax == section, X_features]\n", - " \n", - " # broadcast to all columns.\n", - " df.loc[df.section_mode_argmax == section, 'temp'] = model_dict[section]['model'].predict(X_section)\n", - " \n", - " for c in TARGETS:\n", - " df[c] = df['av_' + c] * df['temp']\n", - " \n", - " df.drop(columns=['temp'], inplace=True)\n", - " \n", - " df.rename(columns=dict([(x, 'tt_'+x) for x in TARGETS]), inplace=True)\n", - " \n", - " # return model_dict, result_df\n", - " return model_dict, df" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "7b34ced0", - "metadata": {}, - "outputs": [], - "source": [ - "def drop_columns(df: pd.DataFrame):\n", - " u_time_features = [\n", - " 'start:year', 'start:month', 'start:day',\n", - " 'start:hour', 'end_fmt_time', 'end:year',\n", - " 'end:month', 'end:day', 'end:hour', 'end:n_days_in_month', \n", - " 'start:sin_DOM', 'start:sin_MOY', 'start:cos_MOY', 'start:cos_DOM',\n", - " 'end:sin_DOM', 'end:sin_MOY', 'end:cos_DOM', 'end:cos_MOY', 'start:n_days_in_month',\n", - " 'start_local_dt_weekday', 'end_local_dt_weekday', 'start_fmt_time'\n", - " ]\n", - "\n", - " u_user_features = [\n", - " '_id', 'original_user_id', 'gender', 'birth_year', 'user_id'\n", - " ]\n", - "\n", - " u_trip_features = [\n", - " 'cleaned_trip', 'Mode_confirm', 'available_modes', 'duration', 'start_loc',\n", - " 'end_loc', 'section_locations_argmax', 'section_coordinates_argmax',\n", - " 'start_lat', 'start_lng', 'end_lat', 'end_lng', 'section_duration_argmax',\n", - " 'section_distance_argmax', 'section_mode_argmax'\n", - " ]\n", - "\n", - " # Drop section_mode_argmax and available_modes.\n", - " return df.drop(\n", - " columns=u_time_features + u_user_features + u_trip_features, \n", - " inplace=False\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "904fa4dc", - "metadata": {}, - "outputs": [], - "source": [ - "train_df, test_df = get_train_test_splits(data=cleaned, how=SPLIT_TYPE.INTRA_USER, shuffle=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "da30bcdc", - "metadata": {}, - "outputs": [], - "source": [ - "train_df, test_df = preprocess(drop_columns(train_df)), preprocess(drop_columns(test_df))" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "78683828", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(train_df.columns == test_df.columns).all()" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "cbb81799", - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.preprocessing import StandardScaler\n", - "\n", - "def normalize_data(\n", - " df: pd.DataFrame, split: SPLIT, section_scalers: dict = None, scaler: StandardScaler = None\n", - "):\n", - " # We start by normalizing the temporal features first. This has to be done carefully.\n", - " \n", - " if split == SPLIT.TRAIN:\n", - " \n", - " mode_dict = dict()\n", - "\n", - " for _, row in df[['modes', 'durations', 'distances', 'mph']].iterrows():\n", - "\n", - " for (mode, duration, distance, mph) in zip(\n", - " row['modes'], row['durations'], row['distances'], row['mph']\n", - " ):\n", - " if mode not in mode_dict:\n", - " mode_dict[mode] = {\n", - " 'duration': np.array([duration]), \n", - " 'distance': np.array([distance]),\n", - " 'mph': np.array([mph])\n", - " }\n", - " else:\n", - " mode_dict[mode] = {\n", - " 'duration': np.append(mode_dict[mode]['duration'], duration),\n", - " 'distance': np.append(mode_dict[mode]['distance'], distance),\n", - " 'mph': np.append(mode_dict[mode]['mph'], mph)\n", - " }\n", - "\n", - " section_scalers = dict()\n", - "\n", - " for mode in mode_dict.keys():\n", - " # Fit, but don't transform. Instead, get the mean and scale.\n", - " section_scalers[mode] = {'duration': dict(), 'distance': dict(), 'mph': dict()}\n", - " \n", - " section_scalers[mode]['duration']['mean'] = mode_dict[mode]['duration'].mean()\n", - " section_scalers[mode]['duration']['std'] = mode_dict[mode]['duration'].std()\n", - " \n", - " section_scalers[mode]['distance']['mean'] = mode_dict[mode]['distance'].mean()\n", - " section_scalers[mode]['distance']['std'] = mode_dict[mode]['distance'].std()\n", - " \n", - " section_scalers[mode]['mph']['mean'] = mode_dict[mode]['mph'].mean()\n", - " section_scalers[mode]['mph']['std'] = mode_dict[mode]['mph'].std()\n", - " \n", - " # Normalize the temporal features.\n", - " rows = []\n", - " for _, row in df.iterrows():\n", - " row_dict = row.to_dict()\n", - " for ix, mode in enumerate(row_dict['modes']):\n", - " row_dict['durations'][ix] = (\n", - " row_dict['durations'][ix] - section_scalers[mode]['duration']['mean']\n", - " )/section_scalers[mode]['duration']['std']\n", - " \n", - " row_dict['distances'][ix] = (\n", - " row_dict['distances'][ix] - section_scalers[mode]['distance']['mean']\n", - " )/section_scalers[mode]['distance']['std']\n", - " \n", - " row_dict['mph'][ix] = (\n", - " row_dict['mph'][ix] - section_scalers[mode]['mph']['mean']\n", - " )/section_scalers[mode]['mph']['std']\n", - " \n", - " rows.append(row_dict)\n", - " \n", - " df = pd.DataFrame(rows)\n", - " \n", - " # -----------------------------------------\n", - " # Now, we start with the regular features.\n", - " # -----------------------------------------\n", - " \n", - " required_features = [\n", - " 'income_category', 'n_motor_vehicles', 'n_residence_members', 'n_residents_u18',\n", - " 'n_residents_with_license', 'distance_miles', 'age', 'n_working_residents', \n", - " 'start:sin_HOD', 'start:cos_HOD', 'end:sin_HOD', 'end:cos_HOD', \n", - " 'temperature_2m (°F)', 'relative_humidity_2m (%)', 'dew_point_2m (°F)', \n", - " 'rain (inch)', 'snowfall (inch)', 'cloud_cover (%)', 'wind_speed_10m (mp/h)',\n", - " 'wind_gusts_10m (mp/h)', 'cost_p_micro', 'cost_no_trip', 'cost_s_car', \n", - " 'cost_transit', 'cost_car', 'cost_s_micro', 'cost_ridehail', 'cost_walk', 'cost_unknown',\n", - " ]\n", - " \n", - " if split == SPLIT.TRAIN:\n", - " scaler = StandardScaler()\n", - " \n", - " t_df = pd.DataFrame(\n", - " scaler.fit_transform(df[required_features]),\n", - " columns=required_features,\n", - " index=df.index\n", - " )\n", - " else:\n", - " t_df = pd.DataFrame(\n", - " scaler.transform(df[required_features]),\n", - " columns=required_features,\n", - " index=df.index\n", - " )\n", - " \n", - " df.drop(columns=required_features, inplace=True)\n", - " \n", - " return pd.concat([df, t_df], axis=1), section_scalers, scaler" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "9b2ab162", - "metadata": {}, - "outputs": [], - "source": [ - "train_df, section_scaler, scaler = normalize_data(train_df, SPLIT.TRAIN)\n", - "test_df, _, _ = normalize_data(test_df, SPLIT.TEST, section_scaler, scaler)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "df774dd9", - "metadata": {}, - "outputs": [], - "source": [ - "train_df.reset_index(drop=True, inplace=True)\n", - "test_df.reset_index(drop=True, inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "5ce6bafe", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Final features for training:\n", - "['is_student', 'is_overnight_trip', 'is_male', 'mph', 'chosen', 'av_no_trip', 'av_s_car', 'av_p_micro', 'av_walk', 'av_s_micro', 'av_transit', 'av_ridehail', 'av_car', 'av_unknown', 'distances', 'durations', 'modes', 'income_category', 'n_motor_vehicles', 'n_residence_members', 'n_residents_u18', 'n_residents_with_license', 'distance_miles', 'age', 'n_working_residents', 'start:sin_HOD', 'start:cos_HOD', 'end:sin_HOD', 'end:cos_HOD', 'temperature_2m (°F)', 'relative_humidity_2m (%)', 'dew_point_2m (°F)', 'rain (inch)', 'snowfall (inch)', 'cloud_cover (%)', 'wind_speed_10m (mp/h)', 'wind_gusts_10m (mp/h)', 'cost_p_micro', 'cost_no_trip', 'cost_s_car', 'cost_transit', 'cost_car', 'cost_s_micro', 'cost_ridehail', 'cost_walk', 'cost_unknown']\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
is_studentis_overnight_tripis_malemphchosenav_no_tripav_s_carav_p_microav_walkav_s_micro...wind_gusts_10m (mp/h)cost_p_microcost_no_tripcost_s_carcost_transitcost_carcost_s_microcost_ridehailcost_walkcost_unknown
000.01[-0.6226942218711282]800010...-1.1181550.00.0-0.614415-0.286713-0.550431-0.431234-0.5924650.00.0
100.01[-0.32572174462565845]801100...-0.5987570.00.00.102862-0.5290270.167956-0.4312340.1285160.00.0
200.01[1.2722796444295434]101110...0.0465550.00.0-0.409306-0.304397-0.550431-0.431234-0.3862960.00.0
300.01[1.785796573896156]200100...1.3057020.00.0-0.614415-0.529027-0.550431-0.431234-0.5924650.00.0
410.00[-0.12709085963426053, -0.8967034453081592]101110...-0.4571040.00.0-0.177887-0.529027-0.113227-0.431234-0.1536820.00.0
\n", - "

5 rows × 46 columns

\n", - "
" - ], - "text/plain": [ - " is_student is_overnight_trip is_male \\\n", - "0 0 0.0 1 \n", - "1 0 0.0 1 \n", - "2 0 0.0 1 \n", - "3 0 0.0 1 \n", - "4 1 0.0 0 \n", - "\n", - " mph chosen av_no_trip av_s_car \\\n", - "0 [-0.6226942218711282] 8 0 0 \n", - "1 [-0.32572174462565845] 8 0 1 \n", - "2 [1.2722796444295434] 1 0 1 \n", - "3 [1.785796573896156] 2 0 0 \n", - "4 [-0.12709085963426053, -0.8967034453081592] 1 0 1 \n", - "\n", - " av_p_micro av_walk av_s_micro ... wind_gusts_10m (mp/h) cost_p_micro \\\n", - "0 0 1 0 ... -1.118155 0.0 \n", - "1 1 0 0 ... -0.598757 0.0 \n", - "2 1 1 0 ... 0.046555 0.0 \n", - "3 1 0 0 ... 1.305702 0.0 \n", - "4 1 1 0 ... -0.457104 0.0 \n", - "\n", - " cost_no_trip cost_s_car cost_transit cost_car cost_s_micro \\\n", - "0 0.0 -0.614415 -0.286713 -0.550431 -0.431234 \n", - "1 0.0 0.102862 -0.529027 0.167956 -0.431234 \n", - "2 0.0 -0.409306 -0.304397 -0.550431 -0.431234 \n", - "3 0.0 -0.614415 -0.529027 -0.550431 -0.431234 \n", - "4 0.0 -0.177887 -0.529027 -0.113227 -0.431234 \n", - "\n", - " cost_ridehail cost_walk cost_unknown \n", - "0 -0.592465 0.0 0.0 \n", - "1 0.128516 0.0 0.0 \n", - "2 -0.386296 0.0 0.0 \n", - "3 -0.592465 0.0 0.0 \n", - "4 -0.153682 0.0 0.0 \n", - "\n", - "[5 rows x 46 columns]" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "print(f\"Final features for training:\\n{list(train_df.columns)}\")\n", - "display(train_df.head())" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "97a8d6b2", - "metadata": {}, - "outputs": [], - "source": [ - "class CustomDataset(Dataset):\n", - " def __init__(self, df: pd.DataFrame):\n", - " self.seq_df = df[['modes', 'durations', 'distances', 'mph']]\n", - " self.chosen = df['chosen']\n", - " self.features = df.drop(columns=[\n", - " 'modes', 'durations', 'distances', 'mph', 'chosen', 'distance_miles'\n", - " ])\n", - " \n", - " # Start from 1 so that 0 becomes padding.\n", - " self.modes_dict = {\n", - " m: ix+1 for (ix, m) in enumerate(['walking', 'car', 'train', 'bus', 'bicycling', 'no_sensed'])\n", - " }\n", - " \n", - " def __len__(self):\n", - " return self.seq_df.shape[0]\n", - " \n", - " def __getitem__(self, ix):\n", - " \n", - " t_modes = list()\n", - " t_metrics = list()\n", - " \n", - " chosen = self.chosen[ix]\n", - " seq = self.seq_df.loc[ix, :]\n", - " \n", - " # OHE the target.\n", - " y = F.one_hot(torch.tensor(chosen), num_classes=9)\n", - " \n", - " # Parse the sequence.\n", - " for seq_ix in range(len(seq['modes'])):\n", - " mode_ix = self.modes_dict[seq['modes'][seq_ix]]\n", - " \n", - " t_modes.append(torch.tensor(mode_ix))\n", - " \n", - " # distances, durations.\n", - " seq_vector = torch.cat(\n", - " [\n", - " torch.tensor([seq['durations'][seq_ix]]), \n", - " torch.tensor([seq['distances'][seq_ix]]), \n", - " torch.tensor([seq['mph'][seq_ix]])\n", - " ], dim=-1\n", - " )\n", - " \n", - " t_metrics.append(seq_vector)\n", - " \n", - " # Flat feature vector.\n", - " features = torch.tensor(self.features.loc[ix, :].values)\n", - " \n", - " return [torch.stack(t_modes).long(), torch.stack(t_metrics), features], y" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "02b78758", - "metadata": {}, - "outputs": [], - "source": [ - "train_dset = CustomDataset(train_df)\n", - "test_dset = CustomDataset(test_df)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "627b6fa4", - "metadata": {}, - "outputs": [], - "source": [ - "def collate(batch):\n", - " X, y = zip(*batch)\n", - " \n", - " seq_modes = [x[0] for x in X]\n", - " seq_metrics = [x[1] for x in X]\n", - " features = [x[-1] for x in X]\n", - "\n", - " padded_seq = pad_sequence([s for s in seq_modes], batch_first=True)\n", - " padded_metrics = pad_sequence([m for m in seq_metrics], batch_first=True)\n", - " lengths = [len(seq) for seq in seq_modes]\n", - " stacked_features = torch.stack(features)\n", - "\n", - " return (padded_seq, padded_metrics, stacked_features), torch.stack(y), lengths" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "5ca34681", - "metadata": {}, - "outputs": [], - "source": [ - "train_loader = DataLoader(train_dset, batch_size=16, collate_fn=collate, shuffle=True, drop_last=False)\n", - "test_loader = DataLoader(test_dset, batch_size=8, collate_fn=collate, shuffle=False, drop_last=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "31ca5ab1", - "metadata": {}, - "outputs": [], - "source": [ - "(modes, metrics, features), sY1, lX = next(iter(train_loader))" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "9eb5a93a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(torch.Size([16, 6, 3]), torch.Size([16, 6]))" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "metrics.size(), modes.size()" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "a0abf380", - "metadata": {}, - "outputs": [], - "source": [ - "# Set to 0 for no dropout.\n", - "DROPOUT = 0." - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "48871ea4", - "metadata": {}, - "outputs": [], - "source": [ - "import math\n", - "\n", - "def new_gelu(x):\n", - " \"\"\"\n", - " Taken from OpenAI GPT-2 implementation.\n", - " \"\"\"\n", - " return 0.5 * x * (1.0 + torch.tanh(math.sqrt(2.0 / math.pi) * (x + 0.044715 * torch.pow(x, 3.0))))\n", - "\n", - "\n", - "class DilatedBlock(nn.Module):\n", - " def __init__(self, n_c):\n", - " super(DilatedBlock, self).__init__()\n", - " \n", - " self.block = nn.Sequential(\n", - " nn.Linear(n_c, 4*n_c, bias=False),\n", - " nn.ELU(),\n", - " nn.Linear(4*n_c, n_c, bias=False),\n", - " nn.Dropout(DROPOUT)\n", - " )\n", - " \n", - " def forward(self, x):\n", - " return self.block(x)\n", - "\n", - " \n", - "class SelfAttention(nn.Module):\n", - " def __init__(self, n_features, head_size):\n", - " super(SelfAttention, self).__init__()\n", - " # in: (B, F, 64)\n", - " self.k = nn.Linear(n_features, head_size, bias=False)\n", - " self.q = nn.Linear(n_features, head_size, bias=False)\n", - " self.v = nn.Linear(n_features, head_size, bias=False)\n", - " self.dpt = nn.Dropout(DROPOUT)\n", - " self.sqrt_d = torch.sqrt(torch.tensor(head_size))\n", - " \n", - " def forward(self, x):\n", - " k = self.k(x)\n", - " q = self.q(x)\n", - " v = self.v(x)\n", - " \n", - " # Q.K.t\n", - " dot = torch.bmm(q, k.permute(0, 2, 1))\n", - " \n", - " # normalize dot product.\n", - " dot /= self.sqrt_d\n", - " \n", - " # softmax over -1 dim.\n", - " softmax = self.dpt(torch.softmax(dot, dim=-1))\n", - " \n", - " # dot with values. (B, F, F) * (B, F, x) = (B, F, x)\n", - " return torch.bmm(softmax, v)\n", - " \n", - "\n", - "class MultiHeadAttention(nn.Module):\n", - " def __init__(self, n_heads, n_dim):\n", - " super(MultiHeadAttention, self).__init__()\n", - " \n", - " # 64 dims, 4 heads => 16 dims per head.\n", - " head_size = n_dim//n_heads\n", - " self.heads = nn.ModuleList([SelfAttention(n_dim, head_size) for _ in range(n_heads)])\n", - " self.proj = nn.Linear(n_dim, n_dim, bias=False)\n", - " \n", - " def forward(self, x):\n", - " # x is (B, seq, n_dim)\n", - " cat = torch.cat([head(x) for head in self.heads], dim=-1)\n", - " return self.proj(cat)\n", - "\n", - "\n", - "class Block(nn.Module):\n", - " def __init__(self, n_c):\n", - " super(Block, self).__init__()\n", - " \n", - " self.sa = MultiHeadAttention(n_heads=4, n_dim=n_c)\n", - " self.dilated = DilatedBlock(n_c)\n", - " self.ln1 = nn.LayerNorm(n_c)\n", - " self.ln2 = nn.LayerNorm(n_c)\n", - " \n", - " \n", - " def forward(self, x):\n", - " x = x + self.sa(self.ln1(x))\n", - " x = x + self.dilated(self.ln2(x))\n", - " return x\n", - " \n", - "\n", - "class LSTMLayer(nn.Module):\n", - " def __init__(\n", - " self, input_size: int, hidden_size: int, \n", - " output_size: int, n_lstm_layers: int = 1\n", - " ):\n", - " super(LSTMLayer, self).__init__()\n", - " \n", - " self.hidden_size = hidden_size\n", - " self.embedding = nn.Embedding(7, 4, padding_idx=0)\n", - " self.dpt = nn.Dropout(DROPOUT)\n", - " \n", - " self.lstm = nn.LSTM(\n", - " input_size=input_size + 4,\n", - " hidden_size=hidden_size,\n", - " bias=False,\n", - " bidirectional=True,\n", - " batch_first=True,\n", - " num_layers=n_lstm_layers\n", - " )\n", - " \n", - " def forward(self, modes, x, lengths):\n", - " mode_emb = self.embedding(modes)\n", - " x = torch.cat([x, mode_emb], dim=-1)\n", - " \n", - " packed = pack_padded_sequence(x, lengths, batch_first=True, enforce_sorted=False)\n", - " out, _ = self.lstm(packed)\n", - " unpacked, _ = pad_packed_sequence(out, batch_first=True)\n", - " \n", - " return self.dpt(unpacked)\n", - "\n", - "\n", - "class Model(nn.Module):\n", - " def __init__(\n", - " self, input_size: int, hidden_size: int, output_size: int, \n", - " n_features: int, n_lstm_layers: int = 1, **kwargs\n", - " ):\n", - " super(Model, self).__init__()\n", - " \n", - " block1_ip_dim = hidden_size*2\n", - " block2_ip_dim = (hidden_size*2) + n_features\n", - " \n", - " self.lstm = LSTMLayer(\n", - " input_size, hidden_size, \n", - " output_size, n_lstm_layers\n", - " )\n", - " \n", - " self.block_l1 = nn.ModuleList([Block(block1_ip_dim) for _ in range(kwargs['l1_blocks'])])\n", - " self.block_l2 = nn.ModuleList([Block(block2_ip_dim) for _ in range(kwargs['l2_blocks'])])\n", - " self.final_proj = nn.Linear(block2_ip_dim, output_size, bias=True)\n", - " \n", - " def forward(self, modes, x, features, lengths):\n", - " \n", - " b = x.size(0)\n", - " \n", - " # Out = (B, seq, hidden*2)\n", - " lstm_out = self.lstm(modes, x, lengths)\n", - " \n", - " # Pass the raw output through the blocks.\n", - " for module in self.block_l1:\n", - " lstm_out = module(lstm_out)\n", - " \n", - " features_rshp = features.unsqueeze(1).expand(b, lstm_out.size(1), -1)\n", - " \n", - " # Out = (B, seq, n+40)\n", - " cat = torch.cat([lstm_out, features_rshp], dim=-1)\n", - " \n", - " for module in self.block_l2:\n", - " cat = module(cat)\n", - " \n", - " # (8, 3, 104) -> (B, 104)\n", - " # flattened = cat.view(b, -1)\n", - " \n", - " # proj = self.runtime_ffw(flattened.size(-1), 64)(flattened)\n", - " proj = cat.mean(dim=1)\n", - " \n", - " return self.final_proj(proj)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "70b4d4ea", - "metadata": {}, - "outputs": [], - "source": [ - "import torch.nn.init as init\n", - "\n", - "def init_weights(module):\n", - " if isinstance(module, nn.Embedding):\n", - " module.weight.data.normal_(mean=0.0, std=1.0)\n", - " if module.padding_idx is not None:\n", - " module.weight.data[module.padding_idx].zero_()\n", - " elif isinstance(module, nn.LayerNorm):\n", - " module.bias.data.zero_()\n", - " module.weight.data.fill_(1.0)\n", - " elif isinstance(module, nn.BatchNorm1d):\n", - " init.normal_(m.weight.data, mean=1, std=0.02)\n", - " init.constant_(m.bias.data, 0)\n", - " elif isinstance(module, nn.Linear):\n", - " init.xavier_normal_(module.weight.data)\n", - " if module.bias is not None:\n", - " init.normal_(module.bias.data)\n", - " elif isinstance(module, nn.LSTM):\n", - " for param in module.parameters():\n", - " if len(param.shape) >= 2:\n", - " init.orthogonal_(param.data)\n", - " else:\n", - " init.normal_(param.data)" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "282ecd1a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model(\n", - " (lstm): LSTMLayer(\n", - " (embedding): Embedding(7, 4, padding_idx=0)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " (lstm): LSTM(7, 16, bias=False, batch_first=True, bidirectional=True)\n", - " )\n", - " (block_l1): ModuleList(\n", - " (0): Block(\n", - " (sa): MultiHeadAttention(\n", - " (heads): ModuleList(\n", - " (0): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (1): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (2): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (3): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (proj): Linear(in_features=32, out_features=32, bias=False)\n", - " )\n", - " (dilated): DilatedBlock(\n", - " (block): Sequential(\n", - " (0): Linear(in_features=32, out_features=128, bias=False)\n", - " (1): ELU(alpha=1.0)\n", - " (2): Linear(in_features=128, out_features=32, bias=False)\n", - " (3): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (ln1): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", - " (ln2): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", - " )\n", - " (1): Block(\n", - " (sa): MultiHeadAttention(\n", - " (heads): ModuleList(\n", - " (0): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (1): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (2): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (3): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (proj): Linear(in_features=32, out_features=32, bias=False)\n", - " )\n", - " (dilated): DilatedBlock(\n", - " (block): Sequential(\n", - " (0): Linear(in_features=32, out_features=128, bias=False)\n", - " (1): ELU(alpha=1.0)\n", - " (2): Linear(in_features=128, out_features=32, bias=False)\n", - " (3): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (ln1): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", - " (ln2): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", - " )\n", - " (2): Block(\n", - " (sa): MultiHeadAttention(\n", - " (heads): ModuleList(\n", - " (0): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (1): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (2): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (3): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (proj): Linear(in_features=32, out_features=32, bias=False)\n", - " )\n", - " (dilated): DilatedBlock(\n", - " (block): Sequential(\n", - " (0): Linear(in_features=32, out_features=128, bias=False)\n", - " (1): ELU(alpha=1.0)\n", - " (2): Linear(in_features=128, out_features=32, bias=False)\n", - " (3): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (ln1): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", - " (ln2): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", - " )\n", - " (3): Block(\n", - " (sa): MultiHeadAttention(\n", - " (heads): ModuleList(\n", - " (0): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (1): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (2): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (3): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (proj): Linear(in_features=32, out_features=32, bias=False)\n", - " )\n", - " (dilated): DilatedBlock(\n", - " (block): Sequential(\n", - " (0): Linear(in_features=32, out_features=128, bias=False)\n", - " (1): ELU(alpha=1.0)\n", - " (2): Linear(in_features=128, out_features=32, bias=False)\n", - " (3): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (ln1): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", - " (ln2): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", - " )\n", - " (4): Block(\n", - " (sa): MultiHeadAttention(\n", - " (heads): ModuleList(\n", - " (0): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (1): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (2): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (3): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (proj): Linear(in_features=32, out_features=32, bias=False)\n", - " )\n", - " (dilated): DilatedBlock(\n", - " (block): Sequential(\n", - " (0): Linear(in_features=32, out_features=128, bias=False)\n", - " (1): ELU(alpha=1.0)\n", - " (2): Linear(in_features=128, out_features=32, bias=False)\n", - " (3): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (ln1): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", - " (ln2): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", - " )\n", - " (5): Block(\n", - " (sa): MultiHeadAttention(\n", - " (heads): ModuleList(\n", - " (0): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (1): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (2): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (3): SelfAttention(\n", - " (k): Linear(in_features=32, out_features=8, bias=False)\n", - " (q): Linear(in_features=32, out_features=8, bias=False)\n", - " (v): Linear(in_features=32, out_features=8, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (proj): Linear(in_features=32, out_features=32, bias=False)\n", - " )\n", - " (dilated): DilatedBlock(\n", - " (block): Sequential(\n", - " (0): Linear(in_features=32, out_features=128, bias=False)\n", - " (1): ELU(alpha=1.0)\n", - " (2): Linear(in_features=128, out_features=32, bias=False)\n", - " (3): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (ln1): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", - " (ln2): LayerNorm((32,), eps=1e-05, elementwise_affine=True)\n", - " )\n", - " )\n", - " (block_l2): ModuleList(\n", - " (0): Block(\n", - " (sa): MultiHeadAttention(\n", - " (heads): ModuleList(\n", - " (0): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (1): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (2): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (3): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (proj): Linear(in_features=72, out_features=72, bias=False)\n", - " )\n", - " (dilated): DilatedBlock(\n", - " (block): Sequential(\n", - " (0): Linear(in_features=72, out_features=288, bias=False)\n", - " (1): ELU(alpha=1.0)\n", - " (2): Linear(in_features=288, out_features=72, bias=False)\n", - " (3): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (ln1): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", - " (ln2): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", - " )\n", - " (1): Block(\n", - " (sa): MultiHeadAttention(\n", - " (heads): ModuleList(\n", - " (0): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (1): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (2): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (3): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (proj): Linear(in_features=72, out_features=72, bias=False)\n", - " )\n", - " (dilated): DilatedBlock(\n", - " (block): Sequential(\n", - " (0): Linear(in_features=72, out_features=288, bias=False)\n", - " (1): ELU(alpha=1.0)\n", - " (2): Linear(in_features=288, out_features=72, bias=False)\n", - " (3): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (ln1): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", - " (ln2): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", - " )\n", - " (2): Block(\n", - " (sa): MultiHeadAttention(\n", - " (heads): ModuleList(\n", - " (0): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (1): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (2): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (3): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (proj): Linear(in_features=72, out_features=72, bias=False)\n", - " )\n", - " (dilated): DilatedBlock(\n", - " (block): Sequential(\n", - " (0): Linear(in_features=72, out_features=288, bias=False)\n", - " (1): ELU(alpha=1.0)\n", - " (2): Linear(in_features=288, out_features=72, bias=False)\n", - " (3): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (ln1): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", - " (ln2): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", - " )\n", - " (3): Block(\n", - " (sa): MultiHeadAttention(\n", - " (heads): ModuleList(\n", - " (0): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (1): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (2): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (3): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (proj): Linear(in_features=72, out_features=72, bias=False)\n", - " )\n", - " (dilated): DilatedBlock(\n", - " (block): Sequential(\n", - " (0): Linear(in_features=72, out_features=288, bias=False)\n", - " (1): ELU(alpha=1.0)\n", - " (2): Linear(in_features=288, out_features=72, bias=False)\n", - " (3): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (ln1): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", - " (ln2): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", - " )\n", - " (4): Block(\n", - " (sa): MultiHeadAttention(\n", - " (heads): ModuleList(\n", - " (0): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (1): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (2): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (3): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (proj): Linear(in_features=72, out_features=72, bias=False)\n", - " )\n", - " (dilated): DilatedBlock(\n", - " (block): Sequential(\n", - " (0): Linear(in_features=72, out_features=288, bias=False)\n", - " (1): ELU(alpha=1.0)\n", - " (2): Linear(in_features=288, out_features=72, bias=False)\n", - " (3): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (ln1): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", - " (ln2): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", - " )\n", - " (5): Block(\n", - " (sa): MultiHeadAttention(\n", - " (heads): ModuleList(\n", - " (0): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (1): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (2): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " (3): SelfAttention(\n", - " (k): Linear(in_features=72, out_features=18, bias=False)\n", - " (q): Linear(in_features=72, out_features=18, bias=False)\n", - " (v): Linear(in_features=72, out_features=18, bias=False)\n", - " (dpt): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (proj): Linear(in_features=72, out_features=72, bias=False)\n", - " )\n", - " (dilated): DilatedBlock(\n", - " (block): Sequential(\n", - " (0): Linear(in_features=72, out_features=288, bias=False)\n", - " (1): ELU(alpha=1.0)\n", - " (2): Linear(in_features=288, out_features=72, bias=False)\n", - " (3): Dropout(p=0.0, inplace=False)\n", - " )\n", - " )\n", - " (ln1): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", - " (ln2): LayerNorm((72,), eps=1e-05, elementwise_affine=True)\n", - " )\n", - " )\n", - " (final_proj): Linear(in_features=72, out_features=9, bias=True)\n", - ")\n" - ] - } - ], - "source": [ - "model = Model(\n", - " n_lstm_layers=1,\n", - " input_size=3,\n", - " hidden_size=16, \n", - " output_size=9,\n", - " n_features=40,\n", - " l1_blocks=6,\n", - " l2_blocks=6\n", - ")\n", - "\n", - "model = model.apply(init_weights)\n", - "\n", - "print(model)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "20fec22b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "453101\n" - ] - } - ], - "source": [ - "print(sum(p.numel() for p in model.parameters()))" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "1ca4b65a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ 1.31637209 0.45785206 0.97595891 2.59617829 0.35062587 72.2209596\n", - " 4.71122642 1.08826104 1.53996715]\n" - ] - } - ], - "source": [ - "weights = train_df.shape[0]/(np.bincount(train_df.chosen.values) * len(np.unique(train_df.chosen)))\n", - "\n", - "print(weights)" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "e7a2017b", - "metadata": {}, - "outputs": [], - "source": [ - "INIT_LR = 7e-4\n", - "optimizer = optim.Adam(model.parameters(), lr=INIT_LR)\n", - "criterion = nn.CrossEntropyLoss(weight=torch.Tensor(weights))" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "c6f1f235", - "metadata": {}, - "outputs": [], - "source": [ - "# sX, sY, sL = next(iter(train_loader))\n", - "\n", - "# print(sX.size())" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "e53e4fd1", - "metadata": {}, - "outputs": [], - "source": [ - "def train(epoch, model, loader, opt, criterion):\n", - " \n", - " print(\"\\tBeginning training.\")\n", - " \n", - " model.train()\n", - " \n", - " print_every = len(loader)//5\n", - " \n", - " losses = []\n", - " \n", - " for ix, (X, y, lengths) in enumerate(loader):\n", - " \n", - " modes, metrics, features = X\n", - " y = y.float()\n", - "\n", - " opt.zero_grad()\n", - "\n", - " y_pred = model(modes, metrics.float(), features.float(), lengths)\n", - "\n", - " loss = criterion(y_pred.view(-1, 9), y.view(-1, 9))\n", - "\n", - " losses.append(loss.item())\n", - " \n", - " if ix and ix % print_every == 0:\n", - " print(f\"\\t-> Average loss: {np.nanmean(losses)}\")\n", - "\n", - " loss.backward()\n", - "\n", - " optimizer.step()\n", - "\n", - " print(50*'-')" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "3a33fefa", - "metadata": {}, - "outputs": [], - "source": [ - "def evaluate(epoch, model, loader, criterion):\n", - " \n", - " print(\"\\tBeginning evaluation.\")\n", - " \n", - " model.eval()\n", - " \n", - " print_every = len(loader)//5\n", - " \n", - " losses = []\n", - " \n", - " for ix, (X, y, lengths) in enumerate(loader):\n", - " \n", - " modes, metrics, features = X\n", - "\n", - " y_pred = model(modes, metrics.float(), features.float(), lengths)\n", - " y = y.float()\n", - " \n", - " loss = criterion(y_pred.view(-1, 9), y.view(-1, 9))\n", - "\n", - " losses.append(loss.item())\n", - " \n", - " if ix and ix % print_every == 0:\n", - " print(f\"\\t -> Average loss: {np.nanmean(losses)}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "650a5240", - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.metrics import f1_score\n", - "\n", - "\n", - "def evaluate_f1(model, tr_loader, te_loader):\n", - " tr_preds, te_preds = np.array([]), np.array([])\n", - " tr_gt, te_gt = np.array([]), np.array([])\n", - " \n", - " model.eval()\n", - " print(\"\\tEvaluating F1...\")\n", - " \n", - " with torch.no_grad():\n", - " for ix, (X, y, lengths) in enumerate(tr_loader):\n", - " \n", - " modes, metrics, features = X\n", - "\n", - " y_pred = model(modes, metrics.float(), features.float(), lengths).view(-1, 9)\n", - " y = y.float().view(-1, 9)\n", - "\n", - " preds = torch.argmax(F.softmax(y_pred, dim=-1), dim=-1).numpy().ravel()\n", - " true = torch.argmax(y.long(), dim=-1).numpy().ravel()\n", - "\n", - " tr_preds = np.append(tr_preds, preds)\n", - " tr_gt = np.append(tr_gt, true)\n", - " \n", - " tr_f1 = f1_score(y_true=tr_gt, y_pred=tr_preds, average='weighted')\n", - " print(f\"\\t -> Train F1: {tr_f1}\")\n", - " \n", - " for ix, (X, y, lengths) in enumerate(te_loader):\n", - " \n", - " modes, metrics, features = X\n", - "\n", - " y_pred = model(modes, metrics.float(), features.float(), lengths).view(-1, 9)\n", - " y = y.float().view(-1, 9)\n", - " \n", - " preds = torch.argmax(F.softmax(y_pred, dim=-1), dim=-1).numpy().ravel()\n", - " true = torch.argmax(y.long(), dim=-1).numpy().ravel()\n", - "\n", - " te_preds = np.append(te_preds, preds)\n", - " te_gt = np.append(te_gt, true)\n", - " \n", - " te_f1 = f1_score(y_true=te_gt, y_pred=te_preds, average='weighted')\n", - " print(f\"\\t -> Test F1: {te_f1}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "7191e78b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 - 5 :: 0.00070\n", - "5 - 10 :: 0.00067\n", - "10 - 15 :: 0.00063\n", - "15 - 20 :: 0.00060\n", - "20 - 25 :: 0.00057\n", - "25 - 30 :: 0.00054\n" - ] - } - ], - "source": [ - "# Other training hyperparameters.\n", - "num_epochs = 30\n", - "num_decays = 6\n", - "decay_at = num_epochs // num_decays\n", - "decay = 0.95\n", - "\n", - "# Just checking what LRs should be after decaying.\n", - "for power in range(num_decays):\n", - " print(f\"{decay_at * power} - {decay_at * (power + 1)} :: {INIT_LR * decay**power:.5f}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "fc4b72de", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 1:\n", - "\tBeginning training.\n", - "\t-> Average loss: 3.4292205003553264\n", - "\t-> Average loss: 3.0203611136815667\n", - "\t-> Average loss: 2.9269992429190226\n", - "\t-> Average loss: 2.7440315224998524\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.9845308899546468\n", - "\t -> Average loss: 2.0912061837169675\n", - "\t -> Average loss: 2.0278757847845554\n", - "\t -> Average loss: 2.079901454872481\n", - "\t -> Average loss: 2.119112247215273\n", - "\tEvaluating F1...\n", - "\t -> Train F1: 0.17357571210719355\n", - "\t -> Test F1: 0.16929205554584628\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 2:\n", - "\tBeginning training.\n", - "\t-> Average loss: 2.2447872489024805\n", - "\t-> Average loss: 2.179984362536923\n", - "\t-> Average loss: 2.184303961117914\n", - "\t-> Average loss: 2.1579395363231675\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.8604771541483576\n", - "\t -> Average loss: 1.96936972224629\n", - "\t -> Average loss: 1.9072258116594\n", - "\t -> Average loss: 1.9617513231750632\n", - "\t -> Average loss: 1.9915817378616547\n", - "\tEvaluating F1...\n", - "\t -> Train F1: 0.2375672788266048\n", - "\t -> Test F1: 0.23161577435832603\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 3:\n", - "\tBeginning training.\n", - "\t-> Average loss: 2.009245126523785\n", - "\t-> Average loss: 1.9820919889074202\n", - "\t-> Average loss: 2.020936541432881\n", - "\t-> Average loss: 1.9902592548037359\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.948894374363915\n", - "\t -> Average loss: 2.0106319545865894\n", - "\t -> Average loss: 1.9851899344418475\n", - "\t -> Average loss: 2.007645890627648\n", - "\t -> Average loss: 1.9973548486545132\n", - "\tEvaluating F1...\n", - "\t -> Train F1: 0.178078853483658\n", - "\t -> Test F1: 0.17889559699341365\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 4:\n", - "\tBeginning training.\n", - "\t-> Average loss: 1.9483501227707836\n", - "\t-> Average loss: 1.954028883528493\n", - "\t-> Average loss: 1.9755866212591542\n", - "\t-> Average loss: 1.923766012835111\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.8338173299861353\n", - "\t -> Average loss: 1.917397732834716\n", - "\t -> Average loss: 1.8882776866875477\n", - "\t -> Average loss: 1.9411674299967547\n", - "\t -> Average loss: 1.9390272717393124\n", - "\tEvaluating F1...\n", - "\t -> Train F1: 0.2937676034584698\n", - "\t -> Test F1: 0.2797533840531726\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 5:\n", - "\tBeginning training.\n", - "\t-> Average loss: 1.912619205160514\n", - "\t-> Average loss: 1.9341210979918848\n", - "\t-> Average loss: 1.8943603618724927\n", - "\t-> Average loss: 1.8774088714056938\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.690006344844509\n", - "\t -> Average loss: 1.7453476386470395\n", - "\t -> Average loss: 1.7205723014229268\n", - "\t -> Average loss: 1.749604014185778\n", - "\t -> Average loss: 1.742094624483038\n", - "\tEvaluating F1...\n", - "\t -> Train F1: 0.19402127381450823\n", - "\t -> Test F1: 0.1897796133960193\n", - "Learning rate is now: 0.00067\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 6:\n", - "\tBeginning training.\n", - "\t-> Average loss: 1.6016220477040253\n", - "\t-> Average loss: 1.7033424217912552\n", - "\t-> Average loss: 1.6674059770536112\n", - "\t-> Average loss: 1.6761879756166485\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.5424185771515915\n", - "\t -> Average loss: 1.579921578193878\n", - "\t -> Average loss: 1.5411476174842065\n", - "\t -> Average loss: 1.5840133090508075\n", - "\t -> Average loss: 1.5650895305837256\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 7:\n", - "\tBeginning training.\n", - "\t-> Average loss: 1.6066383687810526\n", - "\t-> Average loss: 1.5486349471376795\n", - "\t-> Average loss: 1.5466778286405511\n", - "\t-> Average loss: 1.5999376366539295\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.6492426906551063\n", - "\t -> Average loss: 1.664988368999708\n", - "\t -> Average loss: 1.6178990316980366\n", - "\t -> Average loss: 1.6296465851319595\n", - "\t -> Average loss: 1.640547810166173\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 8:\n", - "\tBeginning training.\n", - "\t-> Average loss: 1.4707723498011434\n", - "\t-> Average loss: 1.5709665634680428\n", - "\t-> Average loss: 1.554789892461182\n", - "\t-> Average loss: 1.5148731287814903\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.3899180381324705\n", - "\t -> Average loss: 1.4627432638531799\n", - "\t -> Average loss: 1.4123834414101804\n", - "\t -> Average loss: 1.4201137627063722\n", - "\t -> Average loss: 1.4303626401260212\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 9:\n", - "\tBeginning training.\n", - "\t-> Average loss: 1.5543432552471508\n", - "\t-> Average loss: 1.4533692163074874\n", - "\t-> Average loss: 1.3998552637881245\n", - "\t-> Average loss: 1.4387366909199102\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.3969969056005584\n", - "\t -> Average loss: 1.4605997060562348\n", - "\t -> Average loss: 1.4105439760458114\n", - "\t -> Average loss: 1.4442899707441483\n", - "\t -> Average loss: 1.4501932569907734\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 10:\n", - "\tBeginning training.\n", - "\t-> Average loss: 1.4883403652789873\n", - "\t-> Average loss: 1.4671129221103143\n", - "\t-> Average loss: 1.4545180360540984\n", - "\t-> Average loss: 1.4436850206850294\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.508042848642978\n", - "\t -> Average loss: 1.502184015554148\n", - "\t -> Average loss: 1.44931043248012\n", - "\t -> Average loss: 1.4784588873428093\n", - "\t -> Average loss: 1.4841084074967386\n", - "\tEvaluating F1...\n", - "\t -> Train F1: 0.48333374111246125\n", - "\t -> Test F1: 0.4722792652308931\n", - "Learning rate is now: 0.00063\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 11:\n", - "\tBeginning training.\n", - "\t-> Average loss: 1.4074798150185766\n", - "\t-> Average loss: 1.3590504143056463\n", - "\t-> Average loss: 1.3730208680991913\n", - "\t-> Average loss: 1.4093443684042937\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.65324043395133\n", - "\t -> Average loss: 1.6848366409748585\n", - "\t -> Average loss: 1.639395641301995\n", - "\t -> Average loss: 1.626926458699458\n", - "\t -> Average loss: 1.6171495253501786\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 12:\n", - "\tBeginning training.\n", - "\t-> Average loss: 1.31716444697127\n", - "\t-> Average loss: 1.2871220497340277\n", - "\t-> Average loss: 1.2746168654707137\n", - "\t-> Average loss: 1.2706415657187125\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.2732290915270756\n", - "\t -> Average loss: 1.3285720576564748\n", - "\t -> Average loss: 1.2918836618982144\n", - "\t -> Average loss: 1.2952009379613474\n", - "\t -> Average loss: 1.2965014228495078\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 13:\n", - "\tBeginning training.\n", - "\t-> Average loss: 1.2921466177235768\n", - "\t-> Average loss: 1.2243878973021864\n", - "\t-> Average loss: 1.2450620088472837\n", - "\t-> Average loss: 1.251400762683901\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.206730307313983\n", - "\t -> Average loss: 1.2312866071721056\n", - "\t -> Average loss: 1.208183620277959\n", - "\t -> Average loss: 1.2216688226973618\n", - "\t -> Average loss: 1.2299620342197903\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 14:\n", - "\tBeginning training.\n", - "\t-> Average loss: 1.1780336717736788\n", - "\t-> Average loss: 1.2387724560844906\n", - "\t-> Average loss: 1.2171782795114152\n", - "\t-> Average loss: 1.2286130927401546\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.1736671675683399\n", - "\t -> Average loss: 1.214920432480065\n", - "\t -> Average loss: 1.1988129002083816\n", - "\t -> Average loss: 1.1989111086031705\n", - "\t -> Average loss: 1.2194756852068667\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 15:\n", - "\tBeginning training.\n", - "\t-> Average loss: 1.2168475217576133\n", - "\t-> Average loss: 1.1433030896716647\n", - "\t-> Average loss: 1.1906079676311259\n", - "\t-> Average loss: 1.2125332475604398\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.4089278240776595\n", - "\t -> Average loss: 1.445234133480312\n", - "\t -> Average loss: 1.4113176648240926\n", - "\t -> Average loss: 1.4362174157624148\n", - "\t -> Average loss: 1.435766333294876\n", - "\tEvaluating F1...\n", - "\t -> Train F1: 0.5093168030147552\n", - "\t -> Test F1: 0.5026682286547539\n", - "Learning rate is now: 0.00060\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 16:\n", - "\tBeginning training.\n", - "\t-> Average loss: 1.1724162185824782\n", - "\t-> Average loss: 1.1224480470021565\n", - "\t-> Average loss: 1.1285216524044377\n", - "\t-> Average loss: 1.1660368838476076\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.210316137894572\n", - "\t -> Average loss: 1.246378187157891\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\t -> Average loss: 1.2420701925267479\n", - "\t -> Average loss: 1.2695545183091919\n", - "\t -> Average loss: 1.273952293582052\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 17:\n", - "\tBeginning training.\n", - "\t-> Average loss: 1.0339172488734043\n", - "\t-> Average loss: 1.0751683378473684\n", - "\t-> Average loss: 1.1208586298338965\n", - "\t-> Average loss: 1.1269230102115642\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.248624034475681\n", - "\t -> Average loss: 1.2845101706423125\n", - "\t -> Average loss: 1.2307171229161877\n", - "\t -> Average loss: 1.2223140466163174\n", - "\t -> Average loss: 1.2198367260838676\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 18:\n", - "\tBeginning training.\n", - "\t-> Average loss: 1.0498548433933843\n", - "\t-> Average loss: 1.0665208559345316\n", - "\t-> Average loss: 1.0762758616007386\n", - "\t-> Average loss: 1.099983853102772\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.3901189185221101\n", - "\t -> Average loss: 1.4441073030024976\n", - "\t -> Average loss: 1.373450560356254\n", - "\t -> Average loss: 1.3496260701087575\n", - "\t -> Average loss: 1.3835973867276747\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 19:\n", - "\tBeginning training.\n", - "\t-> Average loss: 1.146373841807496\n", - "\t-> Average loss: 1.085291807392025\n", - "\t-> Average loss: 1.079380213429688\n", - "\t-> Average loss: 1.1145779568127758\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.263674235169115\n", - "\t -> Average loss: 1.2977842691269788\n", - "\t -> Average loss: 1.243837918641407\n", - "\t -> Average loss: 1.2629515259071111\n", - "\t -> Average loss: 1.2418897094670163\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 20:\n", - "\tBeginning training.\n", - "\t-> Average loss: 0.9654322663665483\n", - "\t-> Average loss: 1.0184031338499278\n", - "\t-> Average loss: 1.0715286856706412\n", - "\t-> Average loss: 1.0910986138052643\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.1675123429165206\n", - "\t -> Average loss: 1.2705587090520591\n", - "\t -> Average loss: 1.200293446571302\n", - "\t -> Average loss: 1.2205115221362584\n", - "\t -> Average loss: 1.2177007432530602\n", - "\tEvaluating F1...\n", - "\t -> Train F1: 0.6190054946992625\n", - "\t -> Test F1: 0.6097765604266691\n", - "Learning rate is now: 0.00057\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 21:\n", - "\tBeginning training.\n", - "\t-> Average loss: 1.0445893098855152\n", - "\t-> Average loss: 1.1112236296230893\n", - "\t-> Average loss: 1.0962648112726123\n", - "\t-> Average loss: 1.089011266353621\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.0674441020165741\n", - "\t -> Average loss: 1.1406326175361245\n", - "\t -> Average loss: 1.1207181137305364\n", - "\t -> Average loss: 1.1347275835346557\n", - "\t -> Average loss: 1.1342128750775322\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 22:\n", - "\tBeginning training.\n", - "\t-> Average loss: 1.0676555513877775\n", - "\t-> Average loss: 1.0773798781600055\n", - "\t-> Average loss: 1.0710756811421827\n", - "\t-> Average loss: 1.0416493509739522\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.1352787101068975\n", - "\t -> Average loss: 1.2286776423037469\n", - "\t -> Average loss: 1.1571767105262225\n", - "\t -> Average loss: 1.1650525711899125\n", - "\t -> Average loss: 1.1702847076456864\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 23:\n", - "\tBeginning training.\n", - "\t-> Average loss: 0.9855309208053783\n", - "\t-> Average loss: 1.0090662437060927\n", - "\t-> Average loss: 1.0291784378419606\n", - "\t-> Average loss: 1.0479850026693265\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.190445274031362\n", - "\t -> Average loss: 1.2569891696834898\n", - "\t -> Average loss: 1.1954538017761573\n", - "\t -> Average loss: 1.2319692372545819\n", - "\t -> Average loss: 1.2384895061925971\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 24:\n", - "\tBeginning training.\n", - "\t-> Average loss: 1.035038524541442\n", - "\t-> Average loss: 1.007654058233497\n", - "\t-> Average loss: 1.0265389064957022\n", - "\t-> Average loss: 1.0250597899920955\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.27851615721287\n", - "\t -> Average loss: 1.3390878153847647\n", - "\t -> Average loss: 1.315815781799159\n", - "\t -> Average loss: 1.2937761211286816\n", - "\t -> Average loss: 1.2826113693858314\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 25:\n", - "\tBeginning training.\n", - "\t-> Average loss: 0.993596878173298\n", - "\t-> Average loss: 1.0079565033431157\n", - "\t-> Average loss: 1.0364318410870301\n", - "\t-> Average loss: 1.032162597538999\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.2048218791378278\n", - "\t -> Average loss: 1.2166278918723126\n", - "\t -> Average loss: 1.1783969860607342\n", - "\t -> Average loss: 1.1786176204535408\n", - "\t -> Average loss: 1.1798632480913287\n", - "\tEvaluating F1...\n", - "\t -> Train F1: 0.6030226790226174\n", - "\t -> Test F1: 0.5861836286317499\n", - "Learning rate is now: 0.00054\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 26:\n", - "\tBeginning training.\n", - "\t-> Average loss: 0.9192066853189601\n", - "\t-> Average loss: 1.0098440380341351\n", - "\t-> Average loss: 1.006183010403619\n", - "\t-> Average loss: 1.0023870221366835\n", - "--------------------------------------------------\n", - "\tBeginning evaluation.\n", - "\t -> Average loss: 1.1226611448316601\n", - "\t -> Average loss: 1.1899717054792218\n", - "\t -> Average loss: 1.124479945067928\n", - "\t -> Average loss: 1.1427228787120112\n", - "\t -> Average loss: 1.1324994321057338\n", - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - "Epoch 27:\n", - "\tBeginning training.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "ERROR:root:Internal Python error in the inspect module.\n", - "Below is the traceback from this internal error.\n", - "\n", - "ERROR:root:Internal Python error in the inspect module.\n", - "Below is the traceback from this internal error.\n", - "\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Traceback (most recent call last):\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 3553, in run_code\n", - " exec(code_obj, self.user_global_ns, self.user_ns)\n", - " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/654011310.py\", line 5, in \n", - " train(epoch_ix, model, train_loader, optimizer, criterion)\n", - " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/2806942638.py\", line 18, in train\n", - " y_pred = model(modes, metrics.float(), features.float(), lengths)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", - " return forward_call(*input, **kwargs)\n", - " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 143, in forward\n", - " lstm_out = module(lstm_out)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", - " return forward_call(*input, **kwargs)\n", - " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 79, in forward\n", - " x = x + self.sa(self.ln1(x))\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", - " return forward_call(*input, **kwargs)\n", - " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 64, in forward\n", - " cat = torch.cat([head(x) for head in self.heads], dim=-1)\n", - " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 64, in \n", - " cat = torch.cat([head(x) for head in self.heads], dim=-1)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", - " return forward_call(*input, **kwargs)\n", - " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 37, in forward\n", - " q = self.q(x)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", - " return forward_call(*input, **kwargs)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/linear.py\", line 114, in forward\n", - " return F.linear(input, self.weight, self.bias)\n", - "KeyboardInterrupt\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 2099, in showtraceback\n", - " stb = value._render_traceback_()\n", - "AttributeError: 'KeyboardInterrupt' object has no attribute '_render_traceback_'\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1101, in get_records\n", - " return _fixed_getinnerframes(etb, number_of_lines_of_context, tb_offset)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 248, in wrapped\n", - " return f(*args, **kwargs)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 281, in _fixed_getinnerframes\n", - " records = fix_frame_records_filenames(inspect.getinnerframes(etb, context))\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 1502, in getinnerframes\n", - " frameinfo = (tb.tb_frame,) + getframeinfo(tb, context)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 1460, in getframeinfo\n", - " filename = getsourcefile(frame) or getfile(frame)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 696, in getsourcefile\n", - " if getattr(getmodule(object, filename), '__loader__', None) is not None:\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 742, in getmodule\n", - " os.path.realpath(f)] = module.__name__\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 395, in realpath\n", - " path, ok = _joinrealpath(filename[:0], filename, {})\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 428, in _joinrealpath\n", - " newpath = join(path, name)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 81, in join\n", - " sep = _get_sep(a)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 42, in _get_sep\n", - " if isinstance(path, bytes):\n", - "KeyboardInterrupt\n", - "Traceback (most recent call last):\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 3553, in run_code\n", - " exec(code_obj, self.user_global_ns, self.user_ns)\n", - " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/654011310.py\", line 5, in \n", - " train(epoch_ix, model, train_loader, optimizer, criterion)\n", - " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/2806942638.py\", line 18, in train\n", - " y_pred = model(modes, metrics.float(), features.float(), lengths)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", - " return forward_call(*input, **kwargs)\n", - " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 143, in forward\n", - " lstm_out = module(lstm_out)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", - " return forward_call(*input, **kwargs)\n", - " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 79, in forward\n", - " x = x + self.sa(self.ln1(x))\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", - " return forward_call(*input, **kwargs)\n", - " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 64, in forward\n", - " cat = torch.cat([head(x) for head in self.heads], dim=-1)\n", - " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 64, in \n", - " cat = torch.cat([head(x) for head in self.heads], dim=-1)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", - " return forward_call(*input, **kwargs)\n", - " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 37, in forward\n", - " q = self.q(x)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", - " return forward_call(*input, **kwargs)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/linear.py\", line 114, in forward\n", - " return F.linear(input, self.weight, self.bias)\n", - "KeyboardInterrupt\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 2099, in showtraceback\n", - " stb = value._render_traceback_()\n", - "AttributeError: 'KeyboardInterrupt' object has no attribute '_render_traceback_'\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 3473, in run_ast_nodes\n", - " if (await self.run_code(code, result, async_=asy)):\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 3575, in run_code\n", - " self.showtraceback(running_compiled_code=True)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 2102, in showtraceback\n", - " value, tb, tb_offset=tb_offset)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1368, in structured_traceback\n", - " self, etype, value, tb, tb_offset, number_of_lines_of_context)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1268, in structured_traceback\n", - " self, etype, value, tb, tb_offset, number_of_lines_of_context\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1125, in structured_traceback\n", - " tb_offset)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1082, in format_exception_as_a_whole\n", - " last_unique, recursion_repeat = find_recursion(orig_etype, evalue, records)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 382, in find_recursion\n", - " return len(records), 0\n", - "TypeError: object of type 'NoneType' has no len()\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 2099, in showtraceback\n", - " stb = value._render_traceback_()\n", - "AttributeError: 'TypeError' object has no attribute '_render_traceback_'\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1101, in get_records\n", - " return _fixed_getinnerframes(etb, number_of_lines_of_context, tb_offset)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 248, in wrapped\n", - " return f(*args, **kwargs)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 281, in _fixed_getinnerframes\n", - " records = fix_frame_records_filenames(inspect.getinnerframes(etb, context))\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 1502, in getinnerframes\n", - " frameinfo = (tb.tb_frame,) + getframeinfo(tb, context)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 1460, in getframeinfo\n", - " filename = getsourcefile(frame) or getfile(frame)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 696, in getsourcefile\n", - " if getattr(getmodule(object, filename), '__loader__', None) is not None:\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 742, in getmodule\n", - " os.path.realpath(f)] = module.__name__\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 395, in realpath\n", - " path, ok = _joinrealpath(filename[:0], filename, {})\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 429, in _joinrealpath\n", - " if not islink(newpath):\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 171, in islink\n", - " st = os.lstat(path)\n", - "KeyboardInterrupt\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "ERROR:root:Internal Python error in the inspect module.\n", - "Below is the traceback from this internal error.\n", - "\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Traceback (most recent call last):\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 3553, in run_code\n", - " exec(code_obj, self.user_global_ns, self.user_ns)\n", - " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/654011310.py\", line 5, in \n", - " train(epoch_ix, model, train_loader, optimizer, criterion)\n", - " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/2806942638.py\", line 18, in train\n", - " y_pred = model(modes, metrics.float(), features.float(), lengths)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", - " return forward_call(*input, **kwargs)\n", - " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 143, in forward\n", - " lstm_out = module(lstm_out)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", - " return forward_call(*input, **kwargs)\n", - " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 79, in forward\n", - " x = x + self.sa(self.ln1(x))\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", - " return forward_call(*input, **kwargs)\n", - " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 64, in forward\n", - " cat = torch.cat([head(x) for head in self.heads], dim=-1)\n", - " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 64, in \n", - " cat = torch.cat([head(x) for head in self.heads], dim=-1)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", - " return forward_call(*input, **kwargs)\n", - " File \"/var/folders/4x/l9lw50rn7qvf79m01f21x70mlpd6gh/T/ipykernel_13888/515180498.py\", line 37, in forward\n", - " q = self.q(x)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py\", line 1194, in _call_impl\n", - " return forward_call(*input, **kwargs)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/linear.py\", line 114, in forward\n", - " return F.linear(input, self.weight, self.bias)\n", - "KeyboardInterrupt\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 2099, in showtraceback\n", - " stb = value._render_traceback_()\n", - "AttributeError: 'KeyboardInterrupt' object has no attribute '_render_traceback_'\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 3473, in run_ast_nodes\n", - " if (await self.run_code(code, result, async_=asy)):\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 3575, in run_code\n", - " self.showtraceback(running_compiled_code=True)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 2102, in showtraceback\n", - " value, tb, tb_offset=tb_offset)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1368, in structured_traceback\n", - " self, etype, value, tb, tb_offset, number_of_lines_of_context)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1268, in structured_traceback\n", - " self, etype, value, tb, tb_offset, number_of_lines_of_context\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1125, in structured_traceback\n", - " tb_offset)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1082, in format_exception_as_a_whole\n", - " last_unique, recursion_repeat = find_recursion(orig_etype, evalue, records)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 382, in find_recursion\n", - " return len(records), 0\n", - "TypeError: object of type 'NoneType' has no len()\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 2099, in showtraceback\n", - " stb = value._render_traceback_()\n", - "AttributeError: 'TypeError' object has no attribute '_render_traceback_'\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 3030, in _run_cell\n", - " return runner(coro)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/async_helpers.py\", line 78, in _pseudo_sync_runner\n", - " coro.send(None)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 3258, in run_cell_async\n", - " interactivity=interactivity, compiler=compiler, result=result)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 3492, in run_ast_nodes\n", - " self.showtraceback()\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 2102, in showtraceback\n", - " value, tb, tb_offset=tb_offset)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1368, in structured_traceback\n", - " self, etype, value, tb, tb_offset, number_of_lines_of_context)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1268, in structured_traceback\n", - " self, etype, value, tb, tb_offset, number_of_lines_of_context\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1143, in structured_traceback\n", - " chained_exceptions_tb_offset)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1082, in format_exception_as_a_whole\n", - " last_unique, recursion_repeat = find_recursion(orig_etype, evalue, records)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 382, in find_recursion\n", - " return len(records), 0\n", - "TypeError: object of type 'NoneType' has no len()\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/interactiveshell.py\", line 2099, in showtraceback\n", - " stb = value._render_traceback_()\n", - "AttributeError: 'TypeError' object has no attribute '_render_traceback_'\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 1101, in get_records\n", - " return _fixed_getinnerframes(etb, number_of_lines_of_context, tb_offset)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 248, in wrapped\n", - " return f(*args, **kwargs)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/ultratb.py\", line 281, in _fixed_getinnerframes\n", - " records = fix_frame_records_filenames(inspect.getinnerframes(etb, context))\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 1502, in getinnerframes\n", - " frameinfo = (tb.tb_frame,) + getframeinfo(tb, context)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 1460, in getframeinfo\n", - " filename = getsourcefile(frame) or getfile(frame)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 696, in getsourcefile\n", - " if getattr(getmodule(object, filename), '__loader__', None) is not None:\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/inspect.py\", line 742, in getmodule\n", - " os.path.realpath(f)] = module.__name__\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 395, in realpath\n", - " path, ok = _joinrealpath(filename[:0], filename, {})\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 428, in _joinrealpath\n", - " newpath = join(path, name)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 81, in join\n", - " sep = _get_sep(a)\n", - " File \"/Users/rkulhall/miniconda3/envs/pytorch/lib/python3.7/posixpath.py\", line 42, in _get_sep\n", - " if isinstance(path, bytes):\n", - "KeyboardInterrupt\n" - ] - } - ], - "source": [ - "# We'd like to start at a loss of at most -ln(1/9) ~ 2.19\n", - "\n", - "for epoch_ix in range(1, num_epochs+1):\n", - " print(f\"Epoch {epoch_ix}:\")\n", - " train(epoch_ix, model, train_loader, optimizer, criterion)\n", - " evaluate(epoch_ix, model, test_loader, criterion)\n", - " \n", - " if epoch_ix < 5 or epoch_ix % 5 == 0:\n", - " # Evaluate every 5 epochs.\n", - " evaluate_f1(model, train_loader, test_loader)\n", - " \n", - " if epoch_ix % decay_at == 0:\n", - " optimizer.param_groups[0]['lr'] *= decay\n", - " print(f\"Learning rate is now: {optimizer.param_groups[0]['lr']:.5f}\")\n", - " \n", - " print(40*'~')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8bcc396c", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "a7d53498", - "metadata": {}, - "source": [ - "## Benchmarking\n", - "\n", - "```\n", - "\n", - "model = Model(\n", - " n_lstm_layers=1,\n", - " input_size=3,\n", - " hidden_size=16, \n", - " output_size=9,\n", - " n_features=40,\n", - " l1_blocks=3,\n", - " l2_blocks=3\n", - ")\n", - "\n", - "emb_dim = 16\n", - "\n", - "Best stats:\n", - "-> Train F1: 0.6327794050521978\n", - "-> Test F1: 0.6208816430930885\n", - "```\n", - "\n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "46a8dc7d", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "pytorch", - "language": "python", - "name": "pytorch" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.16" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/viz_scripts/rm_src/baseline_modeling0.ipynb b/viz_scripts/rm_src/baseline_modeling0.ipynb deleted file mode 100644 index 043572e..0000000 --- a/viz_scripts/rm_src/baseline_modeling0.ipynb +++ /dev/null @@ -1,1136 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### All experiments are logged in Notion [here](https://www.notion.so/Replacement-mode-modeling-257c2f460377498d921e6b167f465945)" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from enum import Enum\n", - "import random\n", - "\n", - "# Math and graphing.\n", - "import pandas as pd\n", - "import numpy as np\n", - "import seaborn as sns\n", - "import matplotlib.pyplot as plt\n", - "\n", - "# sklearn imports.\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.preprocessing import StandardScaler\n", - "from sklearn.linear_model import LinearRegression\n", - "from sklearn.metrics import f1_score, r2_score, ConfusionMatrixDisplay\n", - "\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# Global experiment flags and variables.\n", - "SEED = 19348\n", - "TARGETS = ['p_micro', 'no_trip', 's_car', 'transit', 'car', 's_micro', 'ridehail', 'walk', 'unknown']\n", - "\n", - "# Set the Numpy seed too.\n", - "random.seed(SEED)\n", - "np.random.seed(SEED)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "class SPLIT_TYPE(Enum):\n", - " # 5 trips for user1, 4 trips in train, 1 in test\n", - " INTRA_USER = 0\n", - " # 5 users, 4 users in train, 1 user in test\n", - " INTER_USER = 1\n", - " # stratifying using target (chosen)\n", - " # [5000 samples (c=1), 8000 samples (c=2)]\n", - " # [4000 samples c=1, 3200 samples c=2 in train]\n", - " TARGET = 2\n", - " \n", - " MIXED = 3\n", - " \n", - "\n", - "class SPLIT(Enum):\n", - " TRAIN = 0\n", - " TEST = 1\n", - "\n", - "def get_splits(count_df: pd.DataFrame, n:int, test_size=0.2):\n", - " maxsize = int(n * test_size)\n", - "\n", - " max_threshold = int(maxsize * 1.05)\n", - " min_threshold = int(maxsize * 0.95)\n", - "\n", - " print(f\"{min_threshold}, {max_threshold}\")\n", - " \n", - " # Allow a 10% tolerance\n", - " def _dp(ix, curr_size, ids, cache):\n", - " \n", - " if ix >= count_df.shape[0]:\n", - " return []\n", - "\n", - " key = ix\n", - "\n", - " if key in cache:\n", - " return cache[key]\n", - "\n", - " if curr_size > max_threshold:\n", - " return []\n", - "\n", - " if min_threshold <= curr_size <= max_threshold:\n", - " return ids\n", - "\n", - " # two options - either pick the current id or skip it.\n", - " branch_a = _dp(ix, curr_size+count_df.loc[ix, 'count'], ids+[count_df.loc[ix, 'index']], cache)\n", - " branch_b = _dp(ix+1, curr_size, ids, cache)\n", - " \n", - " curr_max = []\n", - " if branch_a and len(branch_a) > 0:\n", - " curr_max = branch_a\n", - " \n", - " if branch_b and len(branch_b) > len(branch_a):\n", - " curr_max = branch_b\n", - " \n", - " cache[key] = curr_max\n", - " return cache[key]\n", - " \n", - " return _dp(0, 0, ids=list(), cache=dict())\n", - "\n", - "\n", - "def get_train_test_splits(data: pd.DataFrame, how=SPLIT_TYPE, test_ratio=0.2, shuffle=True):\n", - "\n", - " n_users = list(data.user_id.unique())\n", - " n = data.shape[0]\n", - " \n", - " if shuffle:\n", - " data = data.sample(data.shape[0], random_state=SEED).reset_index(drop=True, inplace=False)\n", - "\n", - " if how == SPLIT_TYPE.INTER_USER:\n", - " # Make the split, ensuring that a user in one fold is not leaked into the other fold.\n", - " # Basic idea: we want to start with the users with the highest instances and place \n", - " # alternating users in each set.\n", - " counts = data.user_id.value_counts().reset_index(drop=False, inplace=False, name='count')\n", - "\n", - " # Now, start with the user_id at the top, and keep adding to either split.\n", - " # This can be achieved using a simple DP program.\n", - " test_ids = get_splits(counts, data.shape[0])\n", - " test_data = data.loc[data.user_id.isin(test_ids), :]\n", - " train_index = data.index.difference(test_data.index)\n", - " train_data = data.loc[data.user_id.isin(train_index), :]\n", - " \n", - " return train_data, test_data\n", - " \n", - " elif how == SPLIT_TYPE.INTRA_USER:\n", - " \n", - " # There are certain users with only one observation. What do we do with those?\n", - " # As per the mobilitynet modeling pipeline, we randomly assign them to either the\n", - " # training or test set.\n", - " \n", - " value_counts = data.user_id.value_counts()\n", - " single_count_ids = value_counts[value_counts == 1].index\n", - " \n", - " data_filtered = data.loc[~data.user_id.isin(single_count_ids), :].reset_index(drop=True)\n", - " data_single_counts = data.loc[data.user_id.isin(single_count_ids), :].reset_index(drop=True)\n", - " \n", - " X_tr, X_te = train_test_split(\n", - " data_filtered, test_size=test_ratio, shuffle=shuffle, stratify=data_filtered.user_id,\n", - " random_state=SEED\n", - " )\n", - " \n", - " data_single_counts['assigned'] = np.random.choice(['train', 'test'], len(data_single_counts))\n", - " X_tr_merged = pd.concat(\n", - " [X_tr, data_single_counts.loc[data_single_counts.assigned == 'train', :].drop(\n", - " columns=['assigned'], inplace=False\n", - " )],\n", - " ignore_index=True, axis=0\n", - " )\n", - " \n", - " X_te_merged = pd.concat(\n", - " [X_te, data_single_counts.loc[data_single_counts.assigned == 'test', :].drop(\n", - " columns=['assigned'], inplace=False\n", - " )],\n", - " ignore_index=True, axis=0\n", - " )\n", - " \n", - " return X_tr_merged, X_te_merged\n", - " \n", - " elif how == SPLIT_TYPE.TARGET:\n", - " \n", - " X_tr, X_te = train_test_split(\n", - " data, test_size=test_ratio, shuffle=shuffle, stratify=data.chosen,\n", - " random_state=SEED\n", - " )\n", - " \n", - " return X_tr, X_te\n", - " \n", - " raise NotImplementedError(\"Unknown split type\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Modeling" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "# Read the data.\n", - "# data = pd.read_csv('../data/FULL_preprocessed_data_RM_weather.csv')\n", - "# data = pd.read_csv('../data/ReplacedMode_Fix.csv')\n", - "data = pd.read_csv('../data/ReplacedMode_Fix_02072024.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "data.drop_duplicates(inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "def plot_hist(df, features=None):\n", - " if not features:\n", - " # All features.\n", - " features = df.columns.tolist()\n", - " \n", - " n_features = len(features)\n", - " \n", - " ncols = 6\n", - " nrows = n_features//ncols if n_features%ncols == 0 else (n_features//ncols) + 1\n", - " \n", - " fig, axes = plt.subplots(nrows=nrows, ncols=ncols, figsize=(10, 10))\n", - " for ix, ax in enumerate(axes.flatten()):\n", - " \n", - " if ix > n_features:\n", - " break\n", - " \n", - " df[features[ix]].hist(ax=ax)\n", - " ax.set(title=features[ix])\n", - " \n", - " plt.tight_layout()\n", - " plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "# First, we map the user IDs to ints.\n", - "\n", - "USERS = list(data.user_id.unique())\n", - "\n", - "USER_MAP = {\n", - " u: i+1 for (i, u) in enumerate(USERS)\n", - "}\n", - "\n", - "data['user_id'] = data['user_id'].apply(lambda x: USER_MAP[x])\n", - "\n", - "# data.rename(\n", - "# columns={'start_local_dt_weekday': 'start:DOW', 'end_local_dt_weekday': 'end:DOW'},\n", - "# inplace=True\n", - "# )\n", - "\n", - "# Drop the samples with chosen == no trip or chosen == unknown\n", - "# data.drop(index=data.loc[data.chosen.isin([2, 9])].index, inplace=True)\n", - "\n", - "# data.n_working_residents = data.n_working_residents.apply(lambda x: 0 if x < 0 else x)\n", - "\n", - "# Fix some age preprocessing issues.\n", - "# data.age = data.age.apply(lambda x: x if x < 100 else 2024-x)\n", - "\n", - "# Collapse 'train' and 'bus' into 'transit'\n", - "# data.loc[\n", - "# data.section_mode_argmax.isin(['train', 'bus']), 'section_mode_argmax'\n", - "# ] = 'transit'" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "# display(data.section_mode_argmax.value_counts())" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "# transit = data.loc[data.section_mode_argmax == 'transit', :].copy()\n", - "# transit['section_duration_argmax'] /= 60.\n", - "\n", - "# transit['mph'] = transit['section_distance_argmax']/transit['section_duration_argmax']\n", - "\n", - "# display(transit[['section_duration_argmax', 'section_distance_argmax', 'mph']].describe())" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "# import plotly.express as px\n", - "\n", - "# sp = data.loc[data.section_mode_argmax.isin(['car', 'transit', 'walking']), :]\n", - "# fig = px.line(sp, y='section_distance_argmax', color='section_mode_argmax')\n", - "# fig.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "# Close the figure above.\n", - "# plt.close()" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "def get_duration_estimate(df: pd.DataFrame, dset: SPLIT, model_dict: dict):\n", - " \n", - " X_features = ['section_distance_argmax', 'age']\n", - " \n", - " if 'mph' in df.columns:\n", - " X_features += ['mph']\n", - " \n", - " if dset == SPLIT.TRAIN and model_dict is None:\n", - " model_dict = dict()\n", - " \n", - " if dset == SPLIT.TEST and model_dict is None:\n", - " raise AttributeError(\"Expected model dict for testing.\")\n", - " \n", - " if dset == SPLIT.TRAIN:\n", - " for section_mode in df.section_mode_argmax.unique():\n", - " section_data = df.loc[df.section_mode_argmax == section_mode, :]\n", - " if section_mode not in model_dict:\n", - " model_dict[section_mode] = dict()\n", - "\n", - " model = LinearRegression(fit_intercept=True)\n", - "\n", - " X = section_data[\n", - " X_features\n", - " ]\n", - " Y = section_data[['section_duration_argmax']]\n", - "\n", - " model.fit(X, Y.values.ravel())\n", - "\n", - " r2 = r2_score(y_pred=model.predict(X), y_true=Y.values.ravel())\n", - " print(f\"Train R2 for {section_mode}: {r2}\")\n", - "\n", - " model_dict[section_mode]['model'] = model\n", - " \n", - " elif dset == SPLIT.TEST:\n", - " for section_mode in df.section_mode_argmax.unique():\n", - " section_data = df.loc[df.section_mode_argmax == section_mode, :]\n", - " X = section_data[\n", - " X_features\n", - " ]\n", - " Y = section_data[['section_duration_argmax']]\n", - " \n", - " y_pred = model_dict[section_mode]['model'].predict(X)\n", - " r2 = r2_score(y_pred=y_pred, y_true=Y.values.ravel())\n", - " print(f\"Test R2 for {section_mode}: {r2}\")\n", - " \n", - " # Create the new columns for the duration.\n", - " new_columns = ['p_micro','no_trip','s_car','transit','car','s_micro','ridehail','walk','unknown']\n", - " df[new_columns] = 0\n", - " df['temp'] = 0\n", - " \n", - " for section in df.section_mode_argmax.unique():\n", - " X_section = df.loc[df.section_mode_argmax == section, X_features]\n", - " \n", - " # broadcast to all columns.\n", - " df.loc[df.section_mode_argmax == section, 'temp'] = model_dict[section]['model'].predict(X_section)\n", - " \n", - " for c in new_columns:\n", - " df[c] = df['av_' + c] * df['temp']\n", - " \n", - " df.drop(columns=['temp'], inplace=True)\n", - " \n", - " df.rename(columns=dict([(x, 'tt_'+x) for x in new_columns]), inplace=True)\n", - " \n", - " # return model_dict, result_df\n", - " return model_dict, df" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "# Now, we split the data (either inter-user or intra-user split)\n", - "\n", - "# train_data, test_data = get_train_test_splits(data=data, how=SPLIT_TYPE.INTER_USER, shuffle=True)\n", - "\n", - "train_data, test_data = get_train_test_splits(data=data, how=SPLIT_TYPE.INTRA_USER, shuffle=True)\n", - "\n", - "# train_data, test_data = get_train_test_splits(data=data, how=SPLIT_TYPE.TARGET, shuffle=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Index(['user_id', '_id', 'original_user_id', 'cleaned_trip', 'Mode_confirm',\n", - " 'start_fmt_time', 'start:year', 'start:month', 'start:day',\n", - " 'start:hour', 'start:DOW', 'end_fmt_time', 'end:year', 'end:month',\n", - " 'end:day', 'end:hour', 'end:DOW', 'available_modes', 'birth_year',\n", - " 'income_category', 'n_motor_vehicles', 'n_residence_members',\n", - " 'n_residents_u18', 'gender', 'is_student', 'n_residents_with_license',\n", - " 'duration', 'distance_miles', 'start_loc', 'end_loc', 'section_modes',\n", - " 'section_distances', 'start:n_days_in_month', 'end:n_days_in_month',\n", - " 'age', 'is_overnight_trip', 'n_working_residents', 'is_male',\n", - " 'start_lat', 'start_lng', 'end_lat', 'end_lng', 'start:sin_HOD',\n", - " 'start:sin_DOM', 'start:sin_MOY', 'start:cos_HOD', 'start:cos_DOM',\n", - " 'start:cos_MOY', 'end:sin_HOD', 'end:sin_DOM', 'end:sin_MOY',\n", - " 'end:cos_HOD', 'end:cos_DOM', 'end:cos_MOY', 'section_durations',\n", - " 'section_locations_argmax', 'temperature_2m (°F)',\n", - " 'relative_humidity_2m (%)', 'dew_point_2m (°F)', 'rain (inch)',\n", - " 'snowfall (inch)', 'cloud_cover (%)', 'wind_speed_10m (mp/h)',\n", - " 'wind_gusts_10m (mp/h)', 'section_distance_argmax',\n", - " 'section_duration_argmax', 'section_mode_argmax',\n", - " 'section_coordinates_argmax', 'mph', 'chosen', 'av_car', 'av_s_car',\n", - " 'av_no_trip', 'av_walk', 'av_transit', 'av_s_micro', 'av_p_micro',\n", - " 'av_ridehail', 'av_unknown', 'cost_p_micro', 'cost_no_trip',\n", - " 'cost_s_car', 'cost_transit', 'cost_car', 'cost_s_micro',\n", - " 'cost_ridehail', 'cost_walk', 'cost_unknown'],\n", - " dtype='object')\n" - ] - } - ], - "source": [ - "print(train_data.columns)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Train R2 for car: 0.9107819633844028\n", - "Train R2 for bicycling: 0.9381499933467025\n", - "Train R2 for walking: 0.7840120837242898\n", - "Train R2 for no_sensed: 0.838164213315293\n", - "Train R2 for transit: 0.9167190695089265\n", - "----------\n", - "Test R2 for car: 0.9115083509175145\n", - "Test R2 for walking: 0.7836715824022498\n", - "Test R2 for no_sensed: 0.8457638150514823\n", - "Test R2 for bicycling: 0.94215202813422\n", - "Test R2 for transit: 0.9130004787209818\n" - ] - } - ], - "source": [ - "params, train_data = get_duration_estimate(train_data, SPLIT.TRAIN, None)\n", - "print(10 * \"-\")\n", - "_, test_data = get_duration_estimate(test_data, SPLIT.TEST, params)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "((34064, 97), (8517, 97))" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "train_data.shape, test_data.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "# Some helper functions that will help ease redundancy in the code.\n", - "\n", - "def drop_columns(df: pd.DataFrame):\n", - " u_time_features = [\n", - " 'start_fmt_time', 'start:year', 'start:month', 'start:day',\n", - " 'start:hour', 'end_fmt_time', 'end:year',\n", - " 'end:month', 'end:day', 'end:hour', 'end:n_days_in_month', \n", - " 'start:sin_DOM', 'start:sin_MOY', 'start:cos_MOY', 'start:cos_DOM',\n", - " 'end:sin_DOM', 'end:sin_MOY', 'end:cos_DOM', 'end:cos_MOY', 'start:n_days_in_month'\n", - " ]\n", - "\n", - " u_user_features = [\n", - " '_id', 'original_user_id', 'gender', 'birth_year',\n", - "# 'user_id', \n", - " ]\n", - " \n", - " u_trip_features = [\n", - " 'cleaned_trip', 'Mode_confirm', 'available_modes', 'duration', 'start_loc',\n", - " 'end_loc', 'section_modes', 'section_distances', 'section_durations',\n", - " 'section_locations_argmax', 'section_mode_argmax', 'section_coordinates_argmax',\n", - "# 'start_lat', 'start_lng', 'end_lat', 'end_lng'\n", - " ]\n", - " \n", - " # Drop section_mode_argmax and available_modes.\n", - " return df.drop(\n", - " columns=u_time_features + u_user_features + u_trip_features, \n", - " inplace=False\n", - " )\n", - "\n", - "\n", - "def scale_values(df: pd.DataFrame, split: SPLIT, scalers=None):\n", - " # Scale costs using StandardScaler.\n", - " costs = df[[c for c in df.columns if 'cost_' in c]].copy()\n", - " times = df[[c for c in df.columns if 'tt_' in c or 'duration' in c]].copy()\n", - " distances = df[[c for c in df.columns if 'distance' in c]]\n", - " \n", - " print(\n", - " \"Cost columns to be scaled: \", costs.columns,\"\\nTime columns to be scaled: \", times.columns, \\\n", - " \"\\nDistance columns to be scaled: \", distances.columns\n", - " )\n", - " \n", - " if split == SPLIT.TRAIN and scalers is None:\n", - " cost_scaler = StandardScaler()\n", - " tt_scaler = StandardScaler()\n", - " dist_scaler = StandardScaler()\n", - " \n", - " cost_scaled = pd.DataFrame(\n", - " cost_scaler.fit_transform(costs), \n", - " columns=costs.columns, \n", - " index=costs.index\n", - " )\n", - " \n", - " tt_scaled = pd.DataFrame(\n", - " tt_scaler.fit_transform(times),\n", - " columns=times.columns,\n", - " index=times.index\n", - " )\n", - " \n", - " dist_scaled = pd.DataFrame(\n", - " dist_scaler.fit_transform(distances),\n", - " columns=distances.columns,\n", - " index=distances.index\n", - " )\n", - " \n", - " elif split == SPLIT.TEST and scalers is not None:\n", - " \n", - " cost_scaler, tt_scaler, dist_scaler = scalers\n", - " \n", - " cost_scaled = pd.DataFrame(\n", - " cost_scaler.transform(costs), \n", - " columns=costs.columns, \n", - " index=costs.index\n", - " )\n", - " \n", - " tt_scaled = pd.DataFrame(\n", - " tt_scaler.transform(times), \n", - " columns=times.columns, \n", - " index=times.index\n", - " )\n", - " \n", - " dist_scaled = pd.DataFrame(\n", - " dist_scaler.transform(distances),\n", - " columns=distances.columns,\n", - " index=distances.index\n", - " )\n", - " \n", - " else:\n", - " raise NotImplementedError(\"Unknown split\")\n", - " \n", - " # Drop the original columns.\n", - " df.drop(\n", - " columns=costs.columns.tolist() + times.columns.tolist() + distances.columns.tolist(), \n", - " inplace=True\n", - " )\n", - " \n", - " df = df.merge(right=cost_scaled, left_index=True, right_index=True)\n", - " df = df.merge(right=tt_scaled, left_index=True, right_index=True)\n", - " df = df.merge(right=dist_scaled, left_index=True, right_index=True)\n", - " \n", - " return df, (cost_scaler, tt_scaler, dist_scaler)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "# First, drop columns.\n", - "\n", - "train_data = drop_columns(train_data)\n", - "\n", - "# Scale cost.\n", - "# train_data, scalers = scale_values(train_data, SPLIT.TRAIN, None)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "test_data = drop_columns(test_data)\n", - "\n", - "# Scale cost.\n", - "# test_data, _ = scale_values(test_data, SPLIT.TEST, scalers)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Index(['user_id', 'start:DOW', 'end:DOW', 'income_category',\n", - " 'n_motor_vehicles', 'n_residence_members', 'n_residents_u18',\n", - " 'is_student', 'n_residents_with_license', 'distance_miles', 'age',\n", - " 'is_overnight_trip', 'n_working_residents', 'is_male', 'start_lat',\n", - " 'start_lng', 'end_lat', 'end_lng', 'start:sin_HOD', 'start:cos_HOD',\n", - " 'end:sin_HOD', 'end:cos_HOD', 'temperature_2m (°F)',\n", - " 'relative_humidity_2m (%)', 'dew_point_2m (°F)', 'rain (inch)',\n", - " 'snowfall (inch)', 'cloud_cover (%)', 'wind_speed_10m (mp/h)',\n", - " 'wind_gusts_10m (mp/h)', 'section_distance_argmax',\n", - " 'section_duration_argmax', 'mph', 'chosen', 'av_car', 'av_s_car',\n", - " 'av_no_trip', 'av_walk', 'av_transit', 'av_s_micro', 'av_p_micro',\n", - " 'av_ridehail', 'av_unknown', 'cost_p_micro', 'cost_no_trip',\n", - " 'cost_s_car', 'cost_transit', 'cost_car', 'cost_s_micro',\n", - " 'cost_ridehail', 'cost_walk', 'cost_unknown', 'tt_p_micro',\n", - " 'tt_no_trip', 'tt_s_car', 'tt_transit', 'tt_car', 'tt_s_micro',\n", - " 'tt_ridehail', 'tt_walk', 'tt_unknown'],\n", - " dtype='object')" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "train_data.columns" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "9" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(train_data.chosen.unique())" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.metrics import classification_report\n", - "from sklearn.model_selection import GridSearchCV, StratifiedKFold\n", - "from pprint import pprint\n", - "from sklearn.inspection import permutation_importance\n", - "from time import perf_counter" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Random Forest classifier" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "CV = True" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fitting 3 folds for each of 12 candidates, totalling 36 fits\n" - ] - } - ], - "source": [ - "from sklearn.ensemble import RandomForestClassifier\n", - "\n", - "# exp question - compute sample weights using user_id.\n", - "\n", - "rf_train = train_data.drop(columns=['chosen', 'start_lat', 'start_lng', 'end_lat', 'end_lng', 'user_id'])\n", - "rf_test = test_data.drop(columns=['chosen', 'start_lat', 'start_lng', 'end_lat', 'end_lng', 'user_id'])\n", - "\n", - "if CV:\n", - "\n", - " model = RandomForestClassifier(random_state=SEED)\n", - "\n", - " # We want to build bootstrapped trees that would not always use all the features.\n", - "\n", - " param_set2 = {\n", - " 'n_estimators': [150, 200, 250],\n", - " 'min_samples_split': [2, 3],\n", - " 'class_weight': ['balanced_subsample'],\n", - " 'max_features': [None, 'sqrt'],\n", - " 'bootstrap': [True]\n", - " }\n", - "\n", - " cv_set2 = StratifiedKFold(n_splits=3, shuffle=True, random_state=SEED)\n", - "\n", - " clf_set2 = GridSearchCV(model, param_set2, cv=cv_set2, n_jobs=-1, scoring='f1_weighted', verbose=1)\n", - "\n", - " start = perf_counter()\n", - "\n", - " clf_set2.fit(\n", - " rf_train,\n", - " train_data.chosen.values.ravel()\n", - " )\n", - "\n", - " time_req = (perf_counter() - start)/60.\n", - "\n", - " best_model = clf_set2.best_estimator_\n", - "else:\n", - " best_model = RandomForestClassifier(\n", - " n_estimators=200,\n", - " max_depth=None,\n", - " min_samples_split=3,\n", - " bootstrap=True,\n", - " class_weight='balanced_subsample',\n", - " random_state=SEED,\n", - " n_jobs=-1\n", - " ).fit(rf_train, train_data.chosen.values.ravel())" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "# tr_f1_set1 = f1_score(\n", - "# y_true=train_data.chosen.values,\n", - "# y_pred=model_set1.predict(rf_train),\n", - "# average='weighted'\n", - "# )\n", - "\n", - "tr_f1_set2 = f1_score(\n", - " y_true=train_data.chosen.values,\n", - " y_pred=best_model.predict(rf_train),\n", - " average='weighted'\n", - ")\n", - "\n", - "# print(tr_f1)" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "# te_f1_set1 = f1_score(\n", - "# y_true=test_data.chosen.values,s\n", - "# y_pred=model_set1.predict(rf_test),\n", - "# average='weighted'\n", - "# )\n", - "\n", - "te_f1_set2 = f1_score(\n", - " y_true=test_data.chosen.values,\n", - " y_pred=best_model.predict(rf_test),\n", - " average='weighted'\n", - ")\n", - "\n", - "# print(te_f1)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[BOOTSTRAPPED] | Train F1: 1.0, Test F1: 0.7344136324607913\n" - ] - } - ], - "source": [ - "# print(f\"[NON BOOTSTRAPPED] | Train F1: {tr_f1_set1}, Test F1: {te_f1_set1}\")\n", - "print(f\"[BOOTSTRAPPED] | Train F1: {tr_f1_set2}, Test F1: {te_f1_set2}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[('age', 0.13052971325233453),\n", - " ('income_category', 0.05563529282438796),\n", - " ('n_motor_vehicles', 0.05117069898186447),\n", - " ('mph', 0.04901096852140811),\n", - " ('dew_point_2m (°F)', 0.046445523590839706),\n", - " ('temperature_2m (°F)', 0.04332851959366878),\n", - " ('n_residents_u18', 0.04079428459138862),\n", - " ('cost_transit', 0.03599739479849181),\n", - " ('distance_miles', 0.03410054518532979),\n", - " ('wind_gusts_10m (mp/h)', 0.02664916084517161),\n", - " ('relative_humidity_2m (%)', 0.026557460924608728),\n", - " ('wind_speed_10m (mp/h)', 0.02621237413168378),\n", - " ('n_residence_members', 0.024503799663918274),\n", - " ('section_duration_argmax', 0.024244750804804545),\n", - " ('n_working_residents', 0.023773443113737733),\n", - " ('n_residents_with_license', 0.023628029234229537),\n", - " ('cloud_cover (%)', 0.02246590194480327),\n", - " ('cost_s_micro', 0.022458268111427003),\n", - " ('tt_p_micro', 0.02038772534963909),\n", - " ('start:cos_HOD', 0.019229222189042564),\n", - " ('is_male', 0.01922412856640586),\n", - " ('end:cos_HOD', 0.019203897735717918),\n", - " ('section_distance_argmax', 0.015253896310661041),\n", - " ('end:sin_HOD', 0.015124047093651035),\n", - " ('tt_walk', 0.015027814935913562),\n", - " ('start:DOW', 0.014649650753683777),\n", - " ('start:sin_HOD', 0.014574215098017478),\n", - " ('cost_s_car', 0.013824194676480045),\n", - " ('end:DOW', 0.013763191399800697),\n", - " ('cost_car', 0.013558725784127607),\n", - " ('cost_ridehail', 0.013029878623553506),\n", - " ('tt_transit', 0.012674148135131848),\n", - " ('is_student', 0.010245832739145545),\n", - " ('tt_s_car', 0.009950842169405066),\n", - " ('tt_car', 0.00979054895155533),\n", - " ('tt_s_micro', 0.008712803885105263),\n", - " ('tt_ridehail', 0.008579952310351583),\n", - " ('av_p_micro', 0.005419336568222103),\n", - " ('av_walk', 0.003300488646146801),\n", - " ('av_transit', 0.0028638611907256797),\n", - " ('rain (inch)', 0.0026761074332931224),\n", - " ('av_car', 0.002642247634705974),\n", - " ('av_s_car', 0.0018072513622939949),\n", - " ('snowfall (inch)', 0.0016959335576669646),\n", - " ('tt_unknown', 0.001566922069109617),\n", - " ('av_ridehail', 0.0014388235245583704),\n", - " ('av_s_micro', 0.0009841196788956074),\n", - " ('tt_no_trip', 0.0007220255139425819),\n", - " ('av_unknown', 0.0004000980804160885),\n", - " ('av_no_trip', 0.00017193791853587658),\n", - " ('is_overnight_trip', 0.0),\n", - " ('cost_p_micro', 0.0),\n", - " ('cost_no_trip', 0.0),\n", - " ('cost_walk', 0.0),\n", - " ('cost_unknown', 0.0)]\n" - ] - } - ], - "source": [ - "# Feature importances - gini entropy\n", - "\n", - "pprint(\n", - " sorted(\n", - " zip(\n", - " best_model.feature_names_in_, \n", - " best_model.feature_importances_\n", - " ), \n", - " key=lambda x: x[-1], reverse=True\n", - " )\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'permutation_importance' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[15], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m importance \u001b[38;5;241m=\u001b[39m \u001b[43mpermutation_importance\u001b[49m(\n\u001b[1;32m 2\u001b[0m best_model,\n\u001b[1;32m 3\u001b[0m rf_test,\n\u001b[1;32m 4\u001b[0m test_data\u001b[38;5;241m.\u001b[39mchosen\u001b[38;5;241m.\u001b[39mvalues,\n\u001b[1;32m 5\u001b[0m n_repeats\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m5\u001b[39m,\n\u001b[1;32m 6\u001b[0m random_state\u001b[38;5;241m=\u001b[39mSEED,\n\u001b[1;32m 7\u001b[0m n_jobs\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m,\n\u001b[1;32m 8\u001b[0m scoring\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mf1_weighted\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 9\u001b[0m )\n", - "\u001b[0;31mNameError\u001b[0m: name 'permutation_importance' is not defined" - ] - } - ], - "source": [ - "importance = permutation_importance(\n", - " best_model,\n", - " rf_test,\n", - " test_data.chosen.values,\n", - " n_repeats=5,\n", - " random_state=SEED,\n", - " n_jobs=-1,\n", - " scoring='f1_weighted'\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "pd.DataFrame(\n", - " {\n", - " 'feature names': test_data.columns.delete(\n", - " test_data.columns.isin(['chosen'])\n", - " ),\n", - " 'imp_mean': importance.importances_mean, \n", - " 'imp_std': importance.importances_std\n", - " }\n", - ").sort_values(by=['imp_mean'], axis='rows', ascending=False).head(20)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# fig, ax = plt.subplots(nrows=1, ncols=2)\n", - "y_pred = best_model.predict(rf_test)\n", - "pred_df = pd.DataFrame(\n", - " {\n", - " 'y_pred': y_pred.ravel(),\n", - " 'y_true': test_data.chosen.values.ravel()\n", - " }\n", - ")\n", - "\n", - "# pred_df.y_pred.hist(ax=ax[0])\n", - "# pred_df.y_true.hist(ax=ax[1])\n", - "\n", - "# ax[0].set(\n", - "# xlabel=\"Label\",\n", - "# ylabel=\"Count\",\n", - "# title=\"Prediction\"\n", - "# )\n", - "\n", - "# ax[1].set(\n", - "# xlabel=\"Label\",\n", - "# ylabel=\"Count\",\n", - "# title=\"GT\"\n", - "# )\n", - "\n", - "# plt.tight_layout()\n", - "# plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fig, ax = plt.subplots(figsize=(7, 7))\n", - "cm = ConfusionMatrixDisplay.from_estimator(\n", - " best_model,\n", - " X=rf_test,\n", - " y=test_data[['chosen']],\n", - " ax=ax\n", - ")\n", - "# ax.set_xticklabels(TARGETS, rotation=45)\n", - "# ax.set_yticklabels(TARGETS)\n", - "fig.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(classification_report(y_true=pred_df.y_true, y_pred=pred_df.y_pred))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## XGBoost" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# from sklearn.utils.class_weight import compute_sample_weight\n", - "\n", - "# sample_weights = compute_sample_weight(class_weight='balanced', y=train_data.user_id.values.ravel())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from xgboost import XGBClassifier\n", - "\n", - "y_train = train_data.chosen.values.ravel() - 1\n", - "y_test = test_data.chosen.values.ravel()\n", - "\n", - "# weights = compute_class_weight(class_weight='balanced', classes=np.unique(y_pred), y_pred)\n", - "\n", - "xgm = XGBClassifier(\n", - " n_estimators=250,\n", - " max_depth=None,\n", - " tree_method='hist',\n", - " objective='multi:softmax',\n", - " num_class=9\n", - ").fit(rf_train, y_train)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "preds = xgm.predict(rf_test) + 1\n", - "\n", - "print(classification_report(y_true=y_test, y_pred=preds))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# import pickle\n", - "\n", - "# # RF_RM.pkl = 0.8625 on test.\n", - "# # RF_RM_1.pkl = 0.77 on test.\n", - "# with open('../models/RF_RM_1.pkl', 'wb') as f:\n", - "# f.write(pickle.dumps(model))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## TODO:\n", - "\n", - "\n", - "- Explain why location might not be a good feature to add (plot start and end on map and explain how model might just overfit to the raw coordinates)\n", - "- Merge `unknown` and `no_trip` into one category and validate against models trained on (a) separate labels (b) dropped labels\n", - "- Explore more of the abnormal `walking` trips" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "interpreter": { - "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" - }, - "kernelspec": { - "display_name": "emission", - "language": "python", - "name": "emission" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.16" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/viz_scripts/rm_src/biogeme_modeling.ipynb b/viz_scripts/rm_src/biogeme_modeling.ipynb deleted file mode 100644 index 035d597..0000000 --- a/viz_scripts/rm_src/biogeme_modeling.ipynb +++ /dev/null @@ -1,526 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import biogeme.biogeme as bio\n", - "import biogeme.database as db\n", - "from biogeme import models\n", - "from biogeme.expressions import Beta, DefineVariable\n", - "from biogeme.expressions import Variable\n", - "import numpy as np\n", - "\n", - "from sklearn.preprocessing import MinMaxScaler" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data = pd.read_csv('../data/preprocessed_data.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "USER_MAP = {\n", - " u: i+1 for (i, u) in enumerate(data.user_id.unique())\n", - "}\n", - "\n", - "# Drop section_mode_argmax and available_modes.\n", - "data.drop(columns=[\n", - " 'section_mode_argmax', 'available_modes', 'section_duration_argmax', 'section_distance_argmax'\n", - " ], inplace=True)\n", - "\n", - "data['user_id'] = data['user_id'].apply(lambda x: USER_MAP[x])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Convert from min -> hrs\n", - "data[[c for c in data.columns if 'tt_' in c]] /= 60.\n", - "\n", - "# Scale costs using StandardScaler.\n", - "costs = data[[c for c in data.columns if 'cost_' in c]].copy()\n", - "\n", - "scaler = MinMaxScaler()\n", - "cost_scaled = pd.DataFrame(scaler.fit_transform(costs), columns=['scaled_' + c for c in costs.columns], index=costs.index)\n", - "data = data.merge(right=cost_scaled, left_index=True, right_index=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data.head()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# display(data[[c for c in data.columns if 'tt_' in c]].describe())\n", - "# display(data[[c for c in data.columns if 'cost_' in c]].describe())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "for c in data.columns:\n", - " if 'av_' in c:\n", - " print(f\"Feature {c} availability: {data.loc[:, c].sum()}/{data.shape[0]}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# data.drop(columns=['tt_unknown','av_unknown'], inplace=True)\n", - "# data.drop(index=data.loc[(data.chosen == 9)].index, inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "database = db.Database('emission', data)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Variable definitions.\n", - "\n", - "# ID.\n", - "USER_ID = Variable('user_id')\n", - "\n", - "# Availability.\n", - "AV_P_MICRO = Variable('av_p_micro')\n", - "AV_NO_TRIP = Variable('av_no_trip')\n", - "AV_S_CAR = Variable('av_s_car')\n", - "AV_TRANSIT = Variable('av_transit')\n", - "AV_CAR = Variable('av_car')\n", - "AV_S_MICRO = Variable('av_s_micro')\n", - "AV_RIDEHAIL = Variable('av_ridehail')\n", - "AV_WALK = Variable('av_walk')\n", - "AV_UNKNOWN = Variable('av_unknown')\n", - "\n", - "# Time.\n", - "TT_P_MICRO = Variable('tt_p_micro')\n", - "TT_NO_TRIP = Variable('tt_no_trip')\n", - "TT_S_CAR = Variable('tt_s_car')\n", - "TT_TRANSIT = Variable('tt_transit')\n", - "TT_CAR = Variable('tt_car')\n", - "TT_S_MICRO = Variable('tt_s_micro')\n", - "TT_RIDEHAIL = Variable('tt_ridehail')\n", - "TT_WALK = Variable('tt_walk')\n", - "TT_UNKNOWN = Variable('tt_unknown')\n", - "\n", - "# Cost.\n", - "CO_P_MICRO = Variable('scaled_cost_p_micro')\n", - "CO_NO_TRIP = Variable('scaled_cost_no_trip')\n", - "CO_S_CAR = Variable('scaled_cost_s_car')\n", - "CO_TRANSIT = Variable('scaled_cost_transit')\n", - "CO_CAR = Variable('scaled_cost_car')\n", - "CO_S_MICRO = Variable('scaled_cost_s_micro')\n", - "CO_RIDEHAIL = Variable('scaled_cost_ridehail')\n", - "CO_WALK = Variable('scaled_cost_walk')\n", - "CO_UNKNOWN = Variable('scaled_cost_unknown')\n", - "\n", - "# Choice.\n", - "CHOICE = Variable('chosen')\n", - "\n", - "# Exclusion. Choice must not be equal to or either 2 or 9.\n", - "EXCLUDE = (CHOICE == 2) + (CHOICE == 9) > 0\n", - "\n", - "database.remove(EXCLUDE)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Parameters\n", - "\n", - "# Create a coefficient from time and set the initial value to 0. There is no lower bound for this coefficient,\n", - "# but we would like to constrain the ceil to 0 since we want these coefficients to denote the utiltiy function.\n", - "# Finally, we want this parameter to be updated by the optimization algorithm.\n", - "B_TIME = Beta('B_TIME', 0, None, 0, 0)\n", - "B_COST = Beta('B_COST', 0, None, None, 0)\n", - "\n", - "# Alternative-Specific Constants.\n", - "ASC_P_MICRO = Beta('ASC_P_MICRO', 0, None, None, 0)\n", - "ASC_NO_TRIP = Beta('ASC_NO_TRIP', 0, None, None, 0)\n", - "ASC_S_CAR = Beta('ASC_S_CAR', 0, None, None, 0)\n", - "ASC_TRANSIT = Beta('ASC_TRANSIT', 0, None, None, 0)\n", - "ASC_CAR = Beta('ASC_CAR', 0, None, None, 0)\n", - "ASC_S_MICRO = Beta('ASC_S_MICRO', 0, None, None, 0)\n", - "ASC_RIDEHAIL = Beta('ASC_RIDEHAIL', 0, None, None, 0)\n", - "ASC_WALK = Beta('ASC_WALK', 0, None, None, 0)\n", - "ASC_UNKNOWN = Beta('ASC_UNKNOWN', 0, None, None, 0)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Define the utility functions.\n", - "# number of alternatives = number of UFs.\n", - "\n", - "# Not multiplying by cost.\n", - "V_P_MICRO = (\n", - " ASC_P_MICRO +\n", - " B_TIME * TT_P_MICRO\n", - " + B_COST * CO_P_MICRO\n", - ")\n", - "\n", - "V_NO_TRIP = (\n", - " ASC_NO_TRIP +\n", - " B_TIME * TT_NO_TRIP +\n", - " B_COST * CO_NO_TRIP\n", - ")\n", - "\n", - "V_S_CAR = (\n", - " ASC_S_CAR +\n", - " B_TIME * TT_S_CAR +\n", - " B_COST * CO_S_CAR\n", - ")\n", - "\n", - "V_TRANSIT = (\n", - " ASC_TRANSIT +\n", - " B_TIME * TT_TRANSIT +\n", - " B_COST * CO_TRANSIT\n", - ")\n", - "\n", - "V_CAR = (\n", - " ASC_CAR +\n", - " B_TIME * TT_CAR +\n", - " B_COST * CO_CAR\n", - ")\n", - "\n", - "V_S_MICRO = (\n", - " ASC_S_MICRO +\n", - " B_TIME * TT_S_MICRO +\n", - " B_COST * CO_S_MICRO\n", - ")\n", - "\n", - "V_RIDEHAIL = (\n", - " ASC_RIDEHAIL +\n", - " B_TIME * TT_RIDEHAIL +\n", - " B_COST * CO_RIDEHAIL\n", - ")\n", - "\n", - "# Cost is 0, so no point multiplying.\n", - "V_WALK = (\n", - " ASC_WALK +\n", - " B_TIME * TT_WALK\n", - " + B_COST * CO_WALK\n", - ")\n", - "\n", - "V_UNKNOWN = (\n", - " ASC_UNKNOWN +\n", - " B_TIME * TT_UNKNOWN +\n", - " B_COST * CO_UNKNOWN\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Map alterative to utility functions.\n", - "V = {\n", - " 1: V_P_MICRO, \n", - " 2: V_NO_TRIP,\n", - " 3: V_S_CAR, \n", - " 4: V_TRANSIT,\n", - " 5: V_CAR, \n", - " 6: V_S_MICRO,\n", - " 7: V_RIDEHAIL, \n", - " 8: V_WALK, \n", - " 9: V_UNKNOWN\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Availability.\n", - "# We have already masked-off costs and times for the instances where a particular mode is not available to the user.\n", - "# So here, we can specify the availability as 1 for every mode, saying that every other mode should be included when computing\n", - "# the logprob for a certain mode.\n", - "\n", - "av = {\n", - " 1: AV_P_MICRO,\n", - " 2: AV_NO_TRIP,\n", - " 3: AV_S_CAR,\n", - " 4: AV_TRANSIT,\n", - " 5: AV_CAR,\n", - " 6: AV_S_MICRO,\n", - " 7: AV_RIDEHAIL,\n", - " 8: AV_WALK,\n", - " 9: AV_UNKNOWN\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "logprob = models.loglogit(V, av, CHOICE)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "model = bio.BIOGEME(database, logprob)\n", - "model.modelName = 'linearModelCostsModel'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "results = model.estimate()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(results.short_summary())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "results.getEstimatedParameters()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def generate_metrics(model: bio.BIOGEME, database: db.Database, V: dict):\n", - " \"\"\"\n", - " Given a test dataframe and the trained model, generate precision, recall, F1.\n", - " \"\"\"\n", - "\n", - " predictions = list()\n", - "\n", - " for row_ix in range(data.shape[0]):\n", - " preds = dict()\n", - " for alt_id, utility in V.items():\n", - " preds[alt_id] = utility.getValue_c(database)\n", - " \n", - " predictions.append(preds)\n", - " return pd.DataFrame(predictions)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "results.getBetaValues()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def get_utility_df(results, data):\n", - "\n", - " ''' \n", - " 1: V_P_MICRO, \n", - " 2: V_NO_TRIP,\n", - " 3: V_S_CAR, \n", - " 4: V_TRANSIT,\n", - " 5: V_CAR, \n", - " 6: V_S_MICRO,\n", - " 7: V_RIDEHAIL, \n", - " 8: V_WALK, \n", - " # 9: V_UNKNOWN\n", - " # '''\n", - "\n", - " def compute_utilities(betas, row: pd.Series):\n", - " data = row.to_dict()\n", - "\n", - " utility_p_micro = betas['ASC_P_MICRO'] + (betas['B_TIME'] * data['tt_p_micro'])\n", - " utility_no_trip = betas['ASC_NO_TRIP'] + (betas['B_TIME'] * data['tt_no_trip']) + (betas['B_COST'] * data['scaled_cost_no_trip'])\n", - " utility_s_car = betas['ASC_S_CAR'] + (betas['B_COST'] * data['scaled_cost_s_car']) + (betas['B_TIME'] * data['tt_s_car'])\n", - " utility_transit = betas['ASC_TRANSIT'] + (betas['B_COST'] * data['scaled_cost_transit']) + (betas['B_TIME'] * data['tt_transit'])\n", - " utility_car = betas['ASC_CAR'] + (betas['B_COST'] * data['scaled_cost_car'] + (betas['B_TIME'] * data['tt_car']))\n", - " utility_s_micro = betas['ASC_S_MICRO'] + (betas['B_COST'] * data['scaled_cost_s_micro']) + (betas['B_TIME'] * data['tt_s_micro'])\n", - " utility_ridehail = betas['ASC_RIDEHAIL'] + (betas['B_COST'] * data['scaled_cost_ridehail']) + (betas['B_TIME'] * data['tt_ridehail'])\n", - " utility_walk = betas['ASC_WALK'] + (betas['B_TIME'] * data['tt_walk'])\n", - " utility_unknown = betas['ASC_UNKNOWN'] + (betas['B_TIME'] * data['tt_unknown']) + (betas['B_COST'] * data['scaled_cost_unknown'])\n", - "\n", - " return {\n", - " 'utility_p_micro': utility_p_micro, 'utility_no_trip': utility_no_trip,\n", - " 'utility_s_car': utility_s_car, 'utility_transit': utility_transit,\n", - " 'utility_car': utility_car, 'utility_s_micro': utility_s_micro,\n", - " 'utility_ridehail': utility_ridehail, 'utility_walk': utility_walk, \n", - " 'utility_unknown': utility_unknown, \n", - " }\n", - " \n", - " betas = results.getBetaValues()\n", - "\n", - " u_data = data.apply(lambda x: compute_utilities(betas, x), axis=1).tolist()\n", - " return pd.DataFrame(u_data)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "u_df = get_utility_df(results, database.fullData)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "u_np = u_df.values\n", - "choice_df = np.exp(u_np)/np.sum(np.exp(u_np), axis=1, keepdims=True)\n", - "\n", - "choice_df = pd.DataFrame(choice_df, columns=u_df.columns)\n", - "display(choice_df.head())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.metrics import f1_score\n", - "\n", - "y_pred = np.argmax(choice_df.values, axis=1) + 1\n", - "\n", - "print(np.unique(y_pred))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "pd.Series(y_pred).hist()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# labels are 1-9\n", - "y_true = data.chosen\n", - "\n", - "pd.Series(y_true).hist()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "score = f1_score(y_true, y_pred, average='weighted')\n", - "print(score)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "interpreter": { - "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" - }, - "kernelspec": { - "display_name": "Python 3.9.16 ('emission')", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.16" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/viz_scripts/rm_src/biogeme_modeling_train_test.ipynb b/viz_scripts/rm_src/biogeme_modeling_train_test.ipynb deleted file mode 100644 index 00ed265..0000000 --- a/viz_scripts/rm_src/biogeme_modeling_train_test.ipynb +++ /dev/null @@ -1,1099 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "from enum import Enum\n", - "from sklearn.model_selection import train_test_split" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "class SPLIT_TYPE(Enum):\n", - " INTRA_USER = 0\n", - " INTER_USER = 1\n", - " \n", - "\n", - "class SPLIT(Enum):\n", - " TRAIN = 0\n", - " TEST = 1\n", - "\n", - "\n", - "def get_splits(count_df: pd.DataFrame, n:int, test_size=0.2):\n", - " maxsize = int(n * test_size)\n", - "\n", - " max_threshold = int(maxsize * 1.05)\n", - " min_threshold = int(maxsize * 0.95)\n", - "\n", - " print(f\"{min_threshold=}, {max_threshold=}\")\n", - " \n", - " # Allow a 10% tolerance\n", - " def _dp(ix, curr_size, ids, cache):\n", - " \n", - " if ix >= count_df.shape[0]:\n", - " return []\n", - "\n", - " key = ix\n", - "\n", - " if key in cache:\n", - " return cache[key]\n", - "\n", - " if curr_size > max_threshold:\n", - " return []\n", - "\n", - " if min_threshold <= curr_size <= max_threshold:\n", - " return ids\n", - "\n", - " # two options - either pick the current id or skip it.\n", - " branch_a = _dp(ix, curr_size+count_df.loc[ix, 'count'], ids+[count_df.loc[ix, 'index']], cache)\n", - " branch_b = _dp(ix+1, curr_size, ids, cache)\n", - " \n", - " curr_max = []\n", - " if branch_a and len(branch_a) > 0:\n", - " curr_max = branch_a\n", - " \n", - " if branch_b and len(branch_b) > len(branch_a):\n", - " curr_max = branch_b\n", - " \n", - " cache[key] = curr_max\n", - " return cache[key]\n", - " \n", - " return _dp(0, 0, ids=list(), cache=dict())\n", - "\n", - "\n", - "def get_train_test_splits(data: pd.DataFrame, how=SPLIT_TYPE, test_ratio=0.2, shuffle=True):\n", - "\n", - " n_users = list(data.user_id.unique())\n", - " n = data.shape[0]\n", - " \n", - " if shuffle:\n", - " data = data.sample(data.shape[0]).reset_index(drop=True, inplace=False)\n", - "\n", - " if how == SPLIT_TYPE.INTER_USER:\n", - " # Make the split, ensuring that a user in one fold is not leaked into the other fold.\n", - " # Basic idea: we want to start with the users with the highest instances and place alternating users in each set.\n", - " counts = data.user_id.value_counts().reset_index(drop=False, inplace=False, name='count')\n", - "\n", - " # Now, start with the user_id at the top, and keep adding to either split.\n", - " # This can be achieved using a simple DP program.\n", - " test_ids = get_splits(counts, data.shape[0])\n", - " test_data = data.loc[data.user_id.isin(test_ids), :]\n", - " train_index = data.index.difference(test_data.index)\n", - " train_data = data.loc[data.user_id.isin(train_index), :]\n", - " \n", - " return train_data, test_data\n", - " \n", - " elif how == SPLIT_TYPE.INTRA_USER:\n", - " \n", - " # There are certain users with only one observation. What do we do with those?\n", - " # As per the mobilitynet modeling pipeline, we randomly assign them to either the\n", - " # training or test set.\n", - " \n", - " value_counts = data.user_id.value_counts()\n", - " single_count_ids = value_counts[value_counts == 1].index\n", - " \n", - " data_filtered = data.loc[~data.user_id.isin(single_count_ids), :].reset_index(drop=True)\n", - " data_single_counts = data.loc[data.user_id.isin(single_count_ids), :].reset_index(drop=True)\n", - " \n", - " X_tr, X_te = train_test_split(\n", - " data_filtered, test_size=test_ratio, shuffle=shuffle, stratify=data_filtered.user_id\n", - " )\n", - " \n", - " data_single_counts['assigned'] = np.random.choice(['train', 'test'], len(data_single_counts))\n", - " X_tr_merged = pd.concat(\n", - " [X_tr, data_single_counts.loc[data_single_counts.assigned == 'train', :].drop(\n", - " columns=['assigned'], inplace=False\n", - " )],\n", - " ignore_index=True, axis=0\n", - " )\n", - " \n", - " X_te_merged = pd.concat(\n", - " [X_te, data_single_counts.loc[data_single_counts.assigned == 'test', :].drop(\n", - " columns=['assigned'], inplace=False\n", - " )],\n", - " ignore_index=True, axis=0\n", - " )\n", - " \n", - " return X_tr_merged, X_te_merged\n", - " \n", - " raise NotImplementedError(\"Unknown split type\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Modeling" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import biogeme.biogeme as bio\n", - "import biogeme.database as db\n", - "from biogeme import models\n", - "from biogeme.expressions import Beta, DefineVariable\n", - "from biogeme.expressions import Variable\n", - "import numpy as np\n", - "\n", - "from sklearn.preprocessing import MinMaxScaler" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "# Read the data.\n", - "data = pd.read_csv('../data/preprocessed_data.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "# First, we map the user IDs to ints.\n", - "\n", - "USER_MAP = {\n", - " u: i+1 for (i, u) in enumerate(data.user_id.unique())\n", - "}\n", - "\n", - "data['user_id'] = data['user_id'].apply(lambda x: USER_MAP[x])" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "# Now, we split the data (either inter-user or intra-user split)\n", - "\n", - "# 0.98 with this approach.????\n", - "# train_data, test_data = get_train_test_splits(data=data, how=SPLIT_TYPE.INTER_USER, shuffle=True)\n", - "\n", - "# 0.965 with this approach.???\n", - "train_data, test_data = get_train_test_splits(data=data, how=SPLIT_TYPE.INTRA_USER, shuffle=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "# Some helper functions that will help ease redundancy in the code.\n", - "\n", - "def drop_columns(df: pd.DataFrame):\n", - " # Drop section_mode_argmax and available_modes.\n", - " return df.drop(columns=[\n", - " 'section_mode_argmax', 'available_modes', 'section_duration_argmax', 'section_distance_argmax'\n", - " ], inplace=False)\n", - "\n", - "\n", - "def scale_time(df: pd.DataFrame):\n", - " # Convert from min -> hrs\n", - " df[[c for c in df.columns if 'tt_' in c]] /= 60.\n", - " return df\n", - "\n", - "\n", - "def scale_cost(df: pd.DataFrame, split: SPLIT, scaler=None):\n", - " # Scale costs using MinMaxScaler.\n", - " costs = df[[c for c in df.columns if 'cost_' in c]].copy()\n", - " \n", - " if split == SPLIT.TRAIN and scaler is None:\n", - " scaler = MinMaxScaler()\n", - " cost_scaled = pd.DataFrame(\n", - " scaler.fit_transform(costs), \n", - " columns=['scaled_' + c for c in costs.columns], \n", - " index=costs.index\n", - " )\n", - " \n", - " elif split == SPLIT.TEST and scaler is not None:\n", - " cost_scaled = pd.DataFrame(\n", - " scaler.transform(costs), \n", - " columns=['scaled_' + c for c in costs.columns], \n", - " index=costs.index\n", - " )\n", - " \n", - " else:\n", - " raise NotImplementedError(\"Unknown split\")\n", - " \n", - " df = df.merge(right=cost_scaled, left_index=True, right_index=True)\n", - " \n", - " return df, scaler\n", - "\n", - "\n", - "def get_database(df: pd.DataFrame, split: SPLIT):\n", - " return db.Database(split.name + '_db', df)\n", - "\n", - "\n", - "def get_variables():\n", - " USER_ID = Variable('user_id')\n", - "\n", - " # Availability.\n", - " AV_P_MICRO = Variable('av_p_micro')\n", - " AV_NO_TRIP = Variable('av_no_trip')\n", - " AV_S_CAR = Variable('av_s_car')\n", - " AV_TRANSIT = Variable('av_transit')\n", - " AV_CAR = Variable('av_car')\n", - " AV_S_MICRO = Variable('av_s_micro')\n", - " AV_RIDEHAIL = Variable('av_ridehail')\n", - " AV_WALK = Variable('av_walk')\n", - " AV_UNKNOWN = Variable('av_unknown')\n", - "\n", - " # Time.\n", - " TT_P_MICRO = Variable('tt_p_micro')\n", - " TT_NO_TRIP = Variable('tt_no_trip')\n", - " TT_S_CAR = Variable('tt_s_car')\n", - " TT_TRANSIT = Variable('tt_transit')\n", - " TT_CAR = Variable('tt_car')\n", - " TT_S_MICRO = Variable('tt_s_micro')\n", - " TT_RIDEHAIL = Variable('tt_ridehail')\n", - " TT_WALK = Variable('tt_walk')\n", - " TT_UNKNOWN = Variable('tt_unknown')\n", - "\n", - " # Cost.\n", - " CO_P_MICRO = Variable('scaled_cost_p_micro')\n", - " CO_NO_TRIP = Variable('scaled_cost_no_trip')\n", - " CO_S_CAR = Variable('scaled_cost_s_car')\n", - " CO_TRANSIT = Variable('scaled_cost_transit')\n", - " CO_CAR = Variable('scaled_cost_car')\n", - " CO_S_MICRO = Variable('scaled_cost_s_micro')\n", - " CO_RIDEHAIL = Variable('scaled_cost_ridehail')\n", - " CO_WALK = Variable('scaled_cost_walk')\n", - " CO_UNKNOWN = Variable('scaled_cost_unknown')\n", - "\n", - " # Choice.\n", - " CHOICE = Variable('chosen')\n", - " \n", - " # return the filtered locals() dictionary.\n", - " return {k:v for k,v in locals().items() if not k.startswith('_')}\n", - "\n", - "\n", - "def exclude_from_db(v_dict: dict, db: db.Database):\n", - " EXCLUDE = (v_dict['CHOICE'] == 2) + (v_dict['CHOICE'] == 9) > 0\n", - " db.remove(EXCLUDE)\n", - "\n", - "\n", - "def get_params():\n", - " B_TIME = Beta('B_TIME', 0, None, 0, 0)\n", - " B_COST = Beta('B_COST', 0, None, None, 0)\n", - "\n", - " # Alternative-Specific Constants.\n", - " ASC_P_MICRO = Beta('ASC_P_MICRO', 0, None, None, 0)\n", - " ASC_NO_TRIP = Beta('ASC_NO_TRIP', 0, None, None, 0)\n", - " ASC_S_CAR = Beta('ASC_S_CAR', 0, None, None, 0)\n", - " ASC_TRANSIT = Beta('ASC_TRANSIT', 0, None, None, 0)\n", - " ASC_CAR = Beta('ASC_CAR', 0, None, None, 0)\n", - " ASC_S_MICRO = Beta('ASC_S_MICRO', 0, None, None, 0)\n", - " ASC_RIDEHAIL = Beta('ASC_RIDEHAIL', 0, None, None, 0)\n", - " ASC_WALK = Beta('ASC_WALK', 0, None, None, 0)\n", - " ASC_UNKNOWN = Beta('ASC_UNKNOWN', 0, None, None, 0)\n", - " \n", - " # Return filtered locals dict.\n", - " return {k:v for k,v in locals().items() if not k.startswith('_')}\n", - "\n", - "\n", - "def get_utility_functions(v: dict):\n", - " V_P_MICRO = (\n", - " v['ASC_P_MICRO'] +\n", - " v['B_TIME'] * v['TT_P_MICRO']\n", - " + v['B_COST'] * v['CO_P_MICRO']\n", - " )\n", - "\n", - " V_NO_TRIP = (\n", - " v['ASC_NO_TRIP'] +\n", - " v['B_TIME'] * v['TT_NO_TRIP'] +\n", - " v['B_COST'] * v['CO_NO_TRIP']\n", - " )\n", - "\n", - " V_S_CAR = (\n", - " v['ASC_S_CAR'] +\n", - " v['B_TIME'] * v['TT_S_CAR'] +\n", - " v['B_COST'] * v['CO_S_CAR']\n", - " )\n", - "\n", - " V_TRANSIT = (\n", - " v['ASC_TRANSIT'] +\n", - " v['B_TIME'] * v['TT_TRANSIT'] +\n", - " v['B_COST'] * v['CO_TRANSIT']\n", - " )\n", - "\n", - " V_CAR = (\n", - " v['ASC_CAR'] +\n", - " v['B_TIME'] * v['TT_CAR'] +\n", - " v['B_COST'] * v['CO_CAR']\n", - " )\n", - "\n", - " V_S_MICRO = (\n", - " v['ASC_S_MICRO'] +\n", - " v['B_TIME'] * v['TT_S_MICRO'] +\n", - " v['B_COST'] * v['CO_S_MICRO']\n", - " )\n", - "\n", - " V_RIDEHAIL = (\n", - " v['ASC_RIDEHAIL'] +\n", - " v['B_TIME'] * v['TT_RIDEHAIL'] +\n", - " v['B_COST'] * v['CO_RIDEHAIL']\n", - " )\n", - "\n", - " V_WALK = (\n", - " v['ASC_WALK'] +\n", - " v['B_TIME'] * v['TT_WALK']\n", - " + v['B_COST'] * v['CO_WALK']\n", - " )\n", - "\n", - " V_UNKNOWN = (\n", - " v['ASC_UNKNOWN'] +\n", - " v['B_TIME'] * v['TT_UNKNOWN'] +\n", - " v['B_COST'] * v['CO_UNKNOWN']\n", - " )\n", - " \n", - " # Remember to exclude the input argument.\n", - " return {k:v for k,v in locals().items() if not k.startswith('_') and k != 'v'}\n", - "\n", - "\n", - "def get_utility_mapping(var: dict):\n", - " # Map alterative to utility functions.\n", - " return {\n", - " 1: var['V_P_MICRO'], \n", - " 2: var['V_NO_TRIP'],\n", - " 3: var['V_S_CAR'], \n", - " 4: var['V_TRANSIT'],\n", - " 5: var['V_CAR'], \n", - " 6: var['V_S_MICRO'],\n", - " 7: var['V_RIDEHAIL'], \n", - " 8: var['V_WALK'], \n", - " 9: var['V_UNKNOWN']\n", - " }\n", - "\n", - "\n", - "def get_availability_mapping(var: dict):\n", - " return {\n", - " 1: var['AV_P_MICRO'],\n", - " 2: var['AV_NO_TRIP'],\n", - " 3: var['AV_S_CAR'],\n", - " 4: var['AV_TRANSIT'],\n", - " 5: var['AV_CAR'],\n", - " 6: var['AV_S_MICRO'],\n", - " 7: var['AV_RIDEHAIL'],\n", - " 8: var['AV_WALK'],\n", - " 9: var['AV_UNKNOWN']\n", - " }" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "# First, drop columns.\n", - "\n", - "train_data = drop_columns(train_data)\n", - "\n", - "# Next, scale time.\n", - "train_data = scale_time(train_data)\n", - "\n", - "# Scale cost.\n", - "train_data, scaler = scale_cost(train_data, SPLIT.TRAIN, None)\n", - "\n", - "# get dbs.\n", - "train_db = get_database(train_data, SPLIT.TRAIN)\n", - "\n", - "# get vars.\n", - "train_vars = get_variables()\n", - "\n", - "# exclude wrong points.\n", - "exclude_from_db(train_vars, train_db)\n", - "\n", - "train_params = get_params()\n", - "train_vars.update(train_params)\n", - "\n", - "train_V = get_utility_functions(train_vars)\n", - "train_vars.update(train_V)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "V = get_utility_mapping(train_vars)\n", - "av = get_availability_mapping(train_vars)\n", - "train_logprob = models.loglogit(V, av, train_vars['CHOICE'])\n", - "\n", - "model = bio.BIOGEME(train_db, train_logprob)\n", - "model.modelName = 'linearModelCostsModel-intraUser'" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/rkulhall/miniconda3/envs/emission/lib/python3.9/site-packages/biogeme_optimization/simple_bounds.py:213: RuntimeWarning: invalid value encountered in scalar divide\n", - " rho = num / denom\n" - ] - } - ], - "source": [ - "train_results = model.estimate()" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Results for model linearModelCostsModel-intraUser\n", - "Nbr of parameters:\t\t11\n", - "Sample size:\t\t\t57579\n", - "Excluded data:\t\t\t2118\n", - "Final log likelihood:\t\t-3.102707e-05\n", - "Akaike Information Criterion:\t22.00006\n", - "Bayesian Information Criterion:\t120.5701\n", - "\n" - ] - } - ], - "source": [ - "print(train_results.short_summary())" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
ValueRob. Std errRob. t-testRob. p-value
ASC_CAR42.6844941.797693e+3082.374404e-3071.0
ASC_NO_TRIP-260.4133749.457320e+00-2.753564e+010.0
ASC_P_MICRO33.0861801.797693e+3081.840480e-3071.0
ASC_RIDEHAIL34.0023201.797693e+3081.891442e-3071.0
ASC_S_CAR40.6975321.797693e+3082.263875e-3071.0
ASC_S_MICRO18.9711891.797693e+3081.055307e-3071.0
ASC_TRANSIT35.8428131.797693e+3081.993823e-3071.0
ASC_UNKNOWN0.0000001.845808e-130.000000e+001.0
ASC_WALK55.1288451.797693e+3083.066644e-3071.0
B_COST-2272.7710031.214323e+02-1.871636e+010.0
B_TIME-145.5888655.280683e-01-2.757008e+020.0
\n", - "
" - ], - "text/plain": [ - " Value Rob. Std err Rob. t-test Rob. p-value\n", - "ASC_CAR 42.684494 1.797693e+308 2.374404e-307 1.0\n", - "ASC_NO_TRIP -260.413374 9.457320e+00 -2.753564e+01 0.0\n", - "ASC_P_MICRO 33.086180 1.797693e+308 1.840480e-307 1.0\n", - "ASC_RIDEHAIL 34.002320 1.797693e+308 1.891442e-307 1.0\n", - "ASC_S_CAR 40.697532 1.797693e+308 2.263875e-307 1.0\n", - "ASC_S_MICRO 18.971189 1.797693e+308 1.055307e-307 1.0\n", - "ASC_TRANSIT 35.842813 1.797693e+308 1.993823e-307 1.0\n", - "ASC_UNKNOWN 0.000000 1.845808e-13 0.000000e+00 1.0\n", - "ASC_WALK 55.128845 1.797693e+308 3.066644e-307 1.0\n", - "B_COST -2272.771003 1.214323e+02 -1.871636e+01 0.0\n", - "B_TIME -145.588865 5.280683e-01 -2.757008e+02 0.0" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "display(train_results.getEstimatedParameters())" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "def get_utility_df(results, data):\n", - "\n", - " def compute_utilities(betas, row: pd.Series):\n", - " data = row.to_dict()\n", - "\n", - " utility_p_micro = betas['ASC_P_MICRO'] + (betas['B_TIME'] * data['tt_p_micro'])\n", - " utility_no_trip = betas['ASC_NO_TRIP'] + (betas['B_TIME'] * data['tt_no_trip']) + (betas['B_COST'] * data['scaled_cost_no_trip'])\n", - " utility_s_car = betas['ASC_S_CAR'] + (betas['B_COST'] * data['scaled_cost_s_car']) + (betas['B_TIME'] * data['tt_s_car'])\n", - " utility_transit = betas['ASC_TRANSIT'] + (betas['B_COST'] * data['scaled_cost_transit']) + (betas['B_TIME'] * data['tt_transit'])\n", - " utility_car = betas['ASC_CAR'] + (betas['B_COST'] * data['scaled_cost_car'] + (betas['B_TIME'] * data['tt_car']))\n", - " utility_s_micro = betas['ASC_S_MICRO'] + (betas['B_COST'] * data['scaled_cost_s_micro']) + (betas['B_TIME'] * data['tt_s_micro'])\n", - " utility_ridehail = betas['ASC_RIDEHAIL'] + (betas['B_COST'] * data['scaled_cost_ridehail']) + (betas['B_TIME'] * data['tt_ridehail'])\n", - " utility_walk = betas['ASC_WALK'] + (betas['B_TIME'] * data['tt_walk'])\n", - " utility_unknown = betas['ASC_UNKNOWN'] + (betas['B_TIME'] * data['tt_unknown']) + (betas['B_COST'] * data['scaled_cost_unknown'])\n", - "\n", - " return {\n", - " 'utility_p_micro': utility_p_micro, 'utility_no_trip': utility_no_trip,\n", - " 'utility_s_car': utility_s_car, 'utility_transit': utility_transit,\n", - " 'utility_car': utility_car, 'utility_s_micro': utility_s_micro,\n", - " 'utility_ridehail': utility_ridehail, 'utility_walk': utility_walk, \n", - " 'utility_unknown': utility_unknown, \n", - " }\n", - " \n", - " betas = results.getBetaValues()\n", - "\n", - " u_data = data.apply(lambda x: compute_utilities(betas, x), axis=1).tolist()\n", - " return pd.DataFrame(u_data)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "test_data = drop_columns(test_data)\n", - "\n", - "# Next, scale time.\n", - "test_data = scale_time(test_data)\n", - "\n", - "# Scale cost.\n", - "test_data, _ = scale_cost(test_data, SPLIT.TEST, scaler)\n", - "\n", - "# get dbs.\n", - "test_db = get_database(test_data, SPLIT.TEST)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "test_utilities = get_utility_df(train_results, test_data)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
utility_p_microutility_no_triputility_s_carutility_transitutility_carutility_s_microutility_ridehailutility_walkutility_unknown
0-18.241189-260.41337417.827530-13.045518-6.745978-45.912237-15.428152-157.474693-47.457612
115.548732-260.41337411.62647013.06722113.613432-0.5584744.93125853.723791-26.574742
214.974088-260.413374-31.381507-42.094303-29.394545-96.365456-38.076719-325.992645-70.688496
3-21.417490-260.41337415.997066-15.500152-8.659791-50.175555-17.341965-171.714529-49.420631
4-54.925702-260.413374-3.313322-41.395187-28.849463-95.151201-37.531637-321.936932-70.129400
\n", - "
" - ], - "text/plain": [ - " utility_p_micro utility_no_trip utility_s_car utility_transit \\\n", - "0 -18.241189 -260.413374 17.827530 -13.045518 \n", - "1 15.548732 -260.413374 11.626470 13.067221 \n", - "2 14.974088 -260.413374 -31.381507 -42.094303 \n", - "3 -21.417490 -260.413374 15.997066 -15.500152 \n", - "4 -54.925702 -260.413374 -3.313322 -41.395187 \n", - "\n", - " utility_car utility_s_micro utility_ridehail utility_walk \\\n", - "0 -6.745978 -45.912237 -15.428152 -157.474693 \n", - "1 13.613432 -0.558474 4.931258 53.723791 \n", - "2 -29.394545 -96.365456 -38.076719 -325.992645 \n", - "3 -8.659791 -50.175555 -17.341965 -171.714529 \n", - "4 -28.849463 -95.151201 -37.531637 -321.936932 \n", - "\n", - " utility_unknown \n", - "0 -47.457612 \n", - "1 -26.574742 \n", - "2 -70.688496 \n", - "3 -49.420631 \n", - "4 -70.129400 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "display(test_utilities.head())" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
utility_p_microutility_no_triputility_s_carutility_transitutility_carutility_s_microutility_ridehailutility_walkutility_unknown
02.165480e-161.450476e-1211.000000e+003.908458e-142.127458e-112.080515e-283.607785e-157.365664e-774.436322e-29
12.635013e-173.732181e-1375.216339e-192.203312e-183.804454e-182.663865e-246.451670e-221.000000e+001.339030e-35
21.000000e+002.516197e-1207.379397e-211.642527e-255.382046e-204.424358e-499.126982e-248.318201e-1496.269204e-38
35.637221e-179.046302e-1211.000000e+002.093784e-141.957325e-111.826401e-293.319272e-153.005315e-823.885574e-29
43.846168e-232.202248e-1121.000000e+002.892386e-178.124469e-121.304116e-401.377764e-154.202665e-1399.597242e-30
\n", - "
" - ], - "text/plain": [ - " utility_p_micro utility_no_trip utility_s_car utility_transit \\\n", - "0 2.165480e-16 1.450476e-121 1.000000e+00 3.908458e-14 \n", - "1 2.635013e-17 3.732181e-137 5.216339e-19 2.203312e-18 \n", - "2 1.000000e+00 2.516197e-120 7.379397e-21 1.642527e-25 \n", - "3 5.637221e-17 9.046302e-121 1.000000e+00 2.093784e-14 \n", - "4 3.846168e-23 2.202248e-112 1.000000e+00 2.892386e-17 \n", - "\n", - " utility_car utility_s_micro utility_ridehail utility_walk \\\n", - "0 2.127458e-11 2.080515e-28 3.607785e-15 7.365664e-77 \n", - "1 3.804454e-18 2.663865e-24 6.451670e-22 1.000000e+00 \n", - "2 5.382046e-20 4.424358e-49 9.126982e-24 8.318201e-149 \n", - "3 1.957325e-11 1.826401e-29 3.319272e-15 3.005315e-82 \n", - "4 8.124469e-12 1.304116e-40 1.377764e-15 4.202665e-139 \n", - "\n", - " utility_unknown \n", - "0 4.436322e-29 \n", - "1 1.339030e-35 \n", - "2 6.269204e-38 \n", - "3 3.885574e-29 \n", - "4 9.597242e-30 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "u_np = test_utilities.values\n", - "choice_df = np.exp(u_np)/np.sum(np.exp(u_np), axis=1, keepdims=True)\n", - "\n", - "choice_df = pd.DataFrame(choice_df, columns=test_utilities.columns)\n", - "display(choice_df.head())" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1 2 3 4 5 8 9]\n" - ] - } - ], - "source": [ - "from sklearn.metrics import f1_score\n", - "\n", - "y_pred = np.argmax(choice_df.values, axis=1) + 1\n", - "\n", - "print(np.unique(y_pred))" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.9692918926841162\n" - ] - } - ], - "source": [ - "y_true = test_data.chosen\n", - "score = f1_score(y_true, y_pred, average='weighted')\n", - "\n", - "print(score)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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ovDuu+9iwIABOHv2rPK6RqMxKC8iRsue9WyZzMq/aD02NjZKt7v+QUREBY892URE5s/kSYW1tTWqVq2Kxo0bY9asWahXrx6++OILuLq6AoBRb8KtW7eU3gtXV1ekpqYiPj7+uWVu3rxptN3bt28b9YIQEZH5YE82EVHhYfKk4lkigpSUFHh4eMDV1RU7duxQXktNTcXevXvh6+sLAGjUqBGsrKwMyty4cQMxMTFKGR8fH+h0Ohw+fFgpc+jQIeh0OqUMERGZH/ZkExEVHpam3PhHH32ETp06wd3dHYmJidi4cSN+/fVXREZGQqPRICQkBDNnzoSnpyc8PT0xc+ZM2NnZoV+/fgAArVaLwYMHY+zYsXBycoKjoyPGjRuHOnXqoF27dgCAmjVromPHjggKCsLSpUsBAEOHDoW/vz+qV69usn0nIqLn0/dkA0Djxo1x5MgRfPHFF5gwYQKApz0N5cqVU8pn1ZOdsbfi1q1bSoMSe7KJiPKOSXsqbt68icDAQFSvXh1t27bFoUOHEBkZCT8/PwDA+PHjERISghEjRqBx48b4559/sH37dtjb2yvrmDdvHl5//XX06tULzZs3h52dHbZu3QoLCwulzLp161CnTh20b98e7du3R926dbF27doC318iIso99mQTEZkvk/ZUrFix4rmvazQahIaGIjQ0NMsytra2CAsLQ1hYWJZlHB0dER4enttqEhFRAWNPNhFR4WLSpIKIiCgz+p7sGzduQKvVom7dukY92cnJyRgxYgTi4+Ph7e2daU+2paUlevXqheTkZLRt2xarV6826skODg5WZokKCAjAwoULC3ZniYheAkwqiIjI7LAnm4iocDG72Z+IiIiIiKhwYVJBRERERESqMKkgIiIiIiJVmFQQEREREZEqTCqIiIiIiEgVJhVERERERKQKkwoiIiIiIlKFSQUREREREanCpIKIiIiIiFRhUkFERERERKowqSAiIiIiIlWYVBARERERkSpMKoiIiIiISBUmFUREREREpAqTCiIiIiIiUoVJBRERERERqcKkgoiIiIiIVGFSQUREREREqjCpICIiIiIiVZhUEBERERGRKkwqiIiIiIhIFSYVRERERESkCpMKIiIiIiJShUkFERERERGpwqSCiIiIiIhUsTR1BV52t2/fhk6ny/H7tFotypYtmw81IiIiIiLKW0wq8tHt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+LF88803ythQUzt06JCMGDFC+XyuX78uI0eOFB8fH5k/f748efJErl69Kl26dJGuXbvm6XhZ/bouX74sFy9elNjYWOW1U6dOGQWNe/fuybJly+Svv/7K9bZEsg4cH374oVSuXFkmT54sN2/ezO1u5bkxY8aIp6en3L9/X0REfv/9d+nXr594eXnJ9u3bDcqa2/heMsYYUfRiBOND7hRUjCjM8UGk4GIEkwoT+u6772TMmDHy4YcfKstSUlKkZ8+e0qBBA+nWrZt8+umn8tprr4mXl5fqMXkZT77nz5+XFStWiEajkY8++khZrg8a1tbW4unpKcOGDZP69esrB5naE8KJEydk2rRpIiKyfft2cXZ2li+//FKuX78utWrVEicnJ4mMjMyy3nntu+++Ezs7O/nPf/5j1EXZt29fsbe3l02bNsmDBw9UbSclJUXu3r0ro0ePljt37sjVq1elWrVqMnToUDl37py0aNFCSpYsaXYX0m7atEnq1asnnp6eygwzIk9bM8aOHStOTk5K61zDhg2V4yQvWtD0x9oPP/wg9evXFw8PD6ldu7Z88sknShl9a5Sbm5syhjmnx2hW5aOiojINHO+99554eXmZdPiBvs4ZT/41atQwGLP8+++/S9++faV+/fry008/FXgdST3GiKIRIxgfcqcgYkRhjA8iposRTCoKkP5LTktLk6SkJKldu7ZoNBrp1q2bQbmUlBT54osvpEePHtKuXTsZPHiwcmDkxclzwoQJMmDAALl69aqsXr1arKysDILW8ePHlZNlxpO3moCl7y4XEeXH1qNHDxk7dqyIPN2v119/Xdzc3KRly5a53k5OnDp1SipUqCArVqwwWK6fRUVEpH///qLRaAwuzMqpHTt2SEhIiPz9999Kt+iYMWOkR48eytR3Q4cOlbJly8orr7wi9+/fN9kUdM+e7Pft2ycBAQFiY2Nj9DklJibK1atXJTw8XLZt26Ycm3l5QdpPP/0kJUqUkLCwMDl9+rR89tlnotFoDIY8xMTESKdOnaRq1aqSnJycq4Dx22+/yYwZM+S9996TXbt2Kd9LxsCR8Ri4detWHu1h7m3fvl0+/vhjOXTokIiI7N69W2rXri1fffWVUiYqKkr8/f3F19dXHj58aJZTG9K/GCOeKkoxgvFBnfyMEYU5PoiYJkYwqSggGX+M+m6x+Ph46dSpk1Sq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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(8, 5))\n", - "\n", - "sns.histplot(y_pred, ax=ax[0])\n", - "sns.histplot(y_true, ax=ax[1])\n", - "\n", - "labels = [\n", - " 'p_micro', \n", - " 'no_trip',\n", - " 's_car', \n", - " 'transit',\n", - " 'car', \n", - " 's_micro',\n", - " 'ridehail', \n", - " 'walk', \n", - " 'unknown'\n", - "]\n", - "\n", - "ax[0].set(\n", - " title='predicted label distribution',\n", - " xlabel='Labels',\n", - " xticks=range(1, 10),\n", - " xticklabels=labels\n", - ")\n", - "\n", - "ax[1].set(\n", - " title='true label distribution',\n", - " xlabel='Labels',\n", - " xticks=range(1, 10),\n", - " xticklabels=labels\n", - ")\n", - "\n", - "ax[0].set_xticklabels(ax[0].get_xticklabels(), rotation=45)\n", - "ax[1].set_xticklabels(ax[0].get_xticklabels(), rotation=45)\n", - "\n", - "plt.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "interpreter": { - "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" - }, - "kernelspec": { - "display_name": "emission", - "language": "python", - "name": "emission" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.16" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/viz_scripts/rm_src/cost_time_avl_preprocessing.ipynb b/viz_scripts/rm_src/cost_time_avl_preprocessing.ipynb deleted file mode 100644 index 9f2bb05..0000000 --- a/viz_scripts/rm_src/cost_time_avl_preprocessing.ipynb +++ /dev/null @@ -1,1789 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "import ast\n", - "from traceback import print_exception\n", - "\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# Data loading. Refer to the mnl_exploration.ipynb file for details on how user-level features are generated.\n", - "\n", - "df = pd.read_csv('../data/final_modeling_data.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Shape: (74631, 57)\n" - ] - } - ], - "source": [ - "print(\"Shape: \", df.shape)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "df.drop_duplicates(inplace=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Add weather info" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "# Downloaded using OpenMeteo API.\n", - "weather_df = pd.read_csv('../data/denver_weather_data.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "weather_df.time = pd.to_datetime(weather_df.time, utc=True).dt.tz_convert('America/Denver')" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
temperature_2m (°F)relative_humidity_2m (%)dew_point_2m (°F)rain (inch)snowfall (inch)cloud_cover (%)wind_speed_10m (mp/h)wind_gusts_10m (mp/h)
count64728.00000064728.00000064728.00000064728.00000064728.00000064728.00000064728.00000064728.000000
mean49.36332552.40535829.1052540.0011580.00495829.3645415.53808411.855783
std21.50211223.37017915.5786720.0086320.03559033.1812153.1671995.973471
min-22.4000005.000000-27.8000000.0000000.0000000.0000000.0000001.100000
25%32.50000033.00000018.0000000.0000000.0000000.0000003.5000007.600000
50%49.20000053.00000028.9000000.0000000.00000018.0000004.90000010.500000
75%65.60000071.00000041.5000000.0000000.00000046.0000006.80000015.000000
max100.900000100.00000068.8000000.4490001.378000100.00000045.90000077.600000
\n", - "
" - ], - "text/plain": [ - " temperature_2m (°F) relative_humidity_2m (%) dew_point_2m (°F) \\\n", - "count 64728.000000 64728.000000 64728.000000 \n", - "mean 49.363325 52.405358 29.105254 \n", - "std 21.502112 23.370179 15.578672 \n", - "min -22.400000 5.000000 -27.800000 \n", - "25% 32.500000 33.000000 18.000000 \n", - "50% 49.200000 53.000000 28.900000 \n", - "75% 65.600000 71.000000 41.500000 \n", - "max 100.900000 100.000000 68.800000 \n", - "\n", - " rain (inch) snowfall (inch) cloud_cover (%) wind_speed_10m (mp/h) \\\n", - "count 64728.000000 64728.000000 64728.000000 64728.000000 \n", - "mean 0.001158 0.004958 29.364541 5.538084 \n", - "std 0.008632 0.035590 33.181215 3.167199 \n", - "min 0.000000 0.000000 0.000000 0.000000 \n", - "25% 0.000000 0.000000 0.000000 3.500000 \n", - "50% 0.000000 0.000000 18.000000 4.900000 \n", - "75% 0.000000 0.000000 46.000000 6.800000 \n", - "max 0.449000 1.378000 100.000000 45.900000 \n", - "\n", - " wind_gusts_10m (mp/h) \n", - "count 64728.000000 \n", - "mean 11.855783 \n", - "std 5.973471 \n", - "min 1.100000 \n", - "25% 7.600000 \n", - "50% 10.500000 \n", - "75% 15.000000 \n", - "max 77.600000 " - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "weather_df.describe()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "# First, convert to UTC. Then, parse to America/Denver.\n", - "df['start_fmt_time'] = pd.to_datetime(\n", - " df['start_fmt_time'], utc=True\n", - ").dt.tz_convert('America/Denver')\n", - "\n", - "original_shape = df.shape[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "# Round start time to nearest hour.\n", - "df['start_time_rounded'] = df.start_fmt_time.dt.round(\n", - " 'H', ambiguous='infer', nonexistent='shift_backward'\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "# True intersection\n", - "df = df.merge(right=weather_df, left_on='start_time_rounded', right_on='time', how='inner')" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Old shape: 74631. new shape: 74622\n" - ] - } - ], - "source": [ - "print(f\"Old shape: {original_shape}. new shape: {df.shape[0]}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "df.drop(columns=['start_time_rounded', 'time'], inplace=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Creating the dummy variables for the available modes" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "# We want this to be ordinal because 2 > 1 implies that it has higher associated value.\n", - "\n", - "income_ordinal_mapping = {\n", - " np.nan: 0,\n", - " 'Prefer not to say': 0,\n", - " 'Less than $24,999': 1,\n", - " '$25,000-$49,999': 2,\n", - " '$50,000-$99,999': 3,\n", - " '$100,000 -$149,999': 4,\n", - " '$150,000-$199,999': 5\n", - "}\n", - "\n", - "df.income_category = df.income_category.apply(lambda x: income_ordinal_mapping[x])" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "# | [d1, d2, d3] | [t1, t2, t3] | [m1, m2, m3] |\n", - "\n", - "\n", - "def compute_argmax(df: pd.DataFrame):\n", - " # Create the two columns.\n", - " df[['section_distance_argmax', 'section_duration_argmax', 'section_mode_argmax', 'section_coordinates_argmax']] = None\n", - " rows = list()\n", - "\n", - " for ix, row in df.iterrows():\n", - " row_dict = row.to_dict()\n", - " \n", - " try:\n", - " parsed_distances = ast.literal_eval(row_dict['section_distances'])\n", - " parsed_durations = ast.literal_eval(row_dict['section_durations'])\n", - " parsed_modes = ast.literal_eval(row_dict['section_modes'])\n", - "\n", - " argmax_ix = np.argmax(parsed_distances)\n", - " \n", - " # Pick the argmax and scale to miles. (meters -> miles)\n", - " row_dict['section_distance_argmax'] = parsed_distances[argmax_ix] * 0.0006213712\n", - " \n", - " # Pick the argmax and scale to minutes.\n", - " row_dict['section_duration_argmax'] = parsed_durations[argmax_ix] / 60\n", - " \n", - " # Pick the argmax mode.\n", - " row_dict['section_mode_argmax'] = parsed_modes[argmax_ix]\n", - " \n", - " row_dict['mark'] = False\n", - "\n", - " except Exception as e:\n", - " row_dict['mark'] = True\n", - "\n", - " rows.append(row_dict)\n", - "\n", - " return pd.DataFrame(rows)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "# Let's plot the mode-wise durations as a function of distance.\n", - "df = compute_argmax(df)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "df = df.loc[~df.mark, :].reset_index(drop=True, inplace=False).drop(columns=['mark'], inplace=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "# Drop instances where duration/distance is unusable.\n", - "df.drop(\n", - " index=df.loc[(df.section_distance_argmax <= 0) | (df.section_duration_argmax <= 0), :].index,\n", - " inplace=False\n", - ").reset_index(drop=True, inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "# bus, train, bicycling, walking, car\n", - "# split-apply-combine\n", - "def drop_outliers(df: pd.DataFrame) -> pd.DataFrame:\n", - " def filter_by_percentiles(group):\n", - " distance_low = group['section_distance_argmax'].quantile(0.1)\n", - " distance_high = group['section_distance_argmax'].quantile(0.9)\n", - " duration_low = group['section_duration_argmax'].quantile(0.1)\n", - " duration_high = group['section_duration_argmax'].quantile(0.9)\n", - " \n", - " l1_filter = group[\n", - " (group['section_distance_argmax'] >= distance_low) &\n", - " (group['section_distance_argmax'] <= distance_high)\n", - " ].reset_index(drop=True)\n", - " \n", - " l2_filter = l1_filter[\n", - " (l1_filter['section_duration_argmax'] >= duration_low) &\n", - " (l1_filter['section_duration_argmax'] <= duration_high)\n", - " ].reset_index(drop=True)\n", - " \n", - " return l2_filter\n", - " \n", - " return df.groupby('section_mode_argmax').apply(filter_by_percentiles).reset_index(drop=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "filtered_df = drop_outliers(df)\n", - "\n", - "# Ideal speed. distance/time.\n", - "filtered_df['mph'] = (\n", - " (filtered_df['section_distance_argmax'] * 60.)/filtered_df['section_duration_argmax']\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "def filter_mph(df: pd.DataFrame) -> pd.DataFrame:\n", - " \n", - " MPH_THRESHOLDS = {\n", - " # https://www.sciencedirect.com/science/article/pii/S2210670718304682\n", - " 'bicycling': 15.,\n", - " # https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7806575/\n", - " 'walking': 2.93\n", - " }\n", - " \n", - " def custom_filter(group):\n", - " # Drop data specified in the dict manually.\n", - " if group.name in MPH_THRESHOLDS.keys():\n", - " f_df = group[group['mph'] <= MPH_THRESHOLDS[group.name]]\n", - " else:\n", - " mph_low = group['mph'].quantile(0.1)\n", - " mph_high = group['mph'].quantile(0.9)\n", - "\n", - " f_df = group[(group['mph'] >= mph_low) & (group['mph'] <= mph_high)]\n", - " \n", - " return f_df\n", - " \n", - " return df.groupby('section_mode_argmax').apply(custom_filter).reset_index(drop=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "filtered_df = filter_mph(filtered_df)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
section_distance_argmaxsection_duration_argmax
countmeanstdmin25%50%75%maxcountmeanstdmin25%50%75%max
section_mode_argmax
bicycling6894.02.1394110.8631500.8163011.5082451.9541512.5704084.8630866894.013.6059434.9737915.8833339.91527912.60526816.44149428.536488
bus262.01.4152400.5975870.3728750.9224741.4553521.9141972.790900262.08.8709383.4957832.9631776.5598038.24097410.53729019.882077
car22816.03.9718982.4654580.9025742.1413053.3318985.10122914.18317622816.013.6251996.4578265.6133498.62463511.84566416.99331134.438154
no_sensed1537.02.5943222.2860700.1759341.0195841.9249043.36957913.1542171537.015.28034811.2996531.0450787.12964912.03516720.78817652.847837
train40.011.0875402.2841916.35232510.18673010.38422312.41472215.74303740.026.4695555.94026318.18095321.97713524.72284429.04570040.568931
walking11032.00.4786250.3742180.1195070.2202220.3473970.5986982.25137111032.020.02442913.3724015.2842339.43475615.74349526.81028561.655195
\n", - "
" - ], - "text/plain": [ - " section_distance_argmax \\\n", - " count mean std min \n", - "section_mode_argmax \n", - "bicycling 6894.0 2.139411 0.863150 0.816301 \n", - "bus 262.0 1.415240 0.597587 0.372875 \n", - "car 22816.0 3.971898 2.465458 0.902574 \n", - "no_sensed 1537.0 2.594322 2.286070 0.175934 \n", - "train 40.0 11.087540 2.284191 6.352325 \n", - "walking 11032.0 0.478625 0.374218 0.119507 \n", - "\n", - " \\\n", - " 25% 50% 75% max \n", - "section_mode_argmax \n", - "bicycling 1.508245 1.954151 2.570408 4.863086 \n", - "bus 0.922474 1.455352 1.914197 2.790900 \n", - "car 2.141305 3.331898 5.101229 14.183176 \n", - "no_sensed 1.019584 1.924904 3.369579 13.154217 \n", - "train 10.186730 10.384223 12.414722 15.743037 \n", - "walking 0.220222 0.347397 0.598698 2.251371 \n", - "\n", - " section_duration_argmax \\\n", - " count mean std min \n", - "section_mode_argmax \n", - "bicycling 6894.0 13.605943 4.973791 5.883333 \n", - "bus 262.0 8.870938 3.495783 2.963177 \n", - "car 22816.0 13.625199 6.457826 5.613349 \n", - "no_sensed 1537.0 15.280348 11.299653 1.045078 \n", - "train 40.0 26.469555 5.940263 18.180953 \n", - "walking 11032.0 20.024429 13.372401 5.284233 \n", - "\n", - " \n", - " 25% 50% 75% max \n", - "section_mode_argmax \n", - "bicycling 9.915279 12.605268 16.441494 28.536488 \n", - "bus 6.559803 8.240974 10.537290 19.882077 \n", - "car 8.624635 11.845664 16.993311 34.438154 \n", - "no_sensed 7.129649 12.035167 20.788176 52.847837 \n", - "train 21.977135 24.722844 29.045700 40.568931 \n", - "walking 9.434756 15.743495 26.810285 61.655195 " - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "filtered_df.groupby('section_mode_argmax')[['section_distance_argmax', 'section_duration_argmax']].describe()" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
mph
countmeanstdmin25%50%75%max
section_mode_argmax
bicycling6894.09.6205812.3537762.8175807.9284989.65686611.28416714.998472
bus262.09.8418723.1534654.2331957.2158559.81802412.48795315.579753
car22816.017.1542125.4561968.51005512.61861016.42148521.20360829.536059
no_sensed1537.010.3879264.5759564.6081776.5969609.28998013.20603122.796647
train40.025.4152283.46861117.51393823.23404825.79593427.93265730.865389
walking11032.01.6053260.7474900.1315920.9830491.5913852.2474522.929953
\n", - "
" - ], - "text/plain": [ - " mph \\\n", - " count mean std min 25% \n", - "section_mode_argmax \n", - "bicycling 6894.0 9.620581 2.353776 2.817580 7.928498 \n", - "bus 262.0 9.841872 3.153465 4.233195 7.215855 \n", - "car 22816.0 17.154212 5.456196 8.510055 12.618610 \n", - "no_sensed 1537.0 10.387926 4.575956 4.608177 6.596960 \n", - "train 40.0 25.415228 3.468611 17.513938 23.234048 \n", - "walking 11032.0 1.605326 0.747490 0.131592 0.983049 \n", - "\n", - " \n", - " 50% 75% max \n", - "section_mode_argmax \n", - "bicycling 9.656866 11.284167 14.998472 \n", - "bus 9.818024 12.487953 15.579753 \n", - "car 16.421485 21.203608 29.536059 \n", - "no_sensed 9.289980 13.206031 22.796647 \n", - "train 25.795934 27.932657 30.865389 \n", - "walking 1.591385 2.247452 2.929953 " - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "filtered_df.groupby('section_mode_argmax')[['mph']].describe()" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Dropped 32041 rows.\n" - ] - } - ], - "source": [ - "print(f\"Dropped {df.shape[0] - filtered_df.shape[0]} rows.\")" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'p_micro': 1, 'no_trip': 2, 's_car': 3, 'transit': 4, 'car': 5, 's_micro': 6, 'ridehail': 7, 'walk': 8, 'unknown': 9}\n" - ] - } - ], - "source": [ - "## Define the mapping strategy\n", - "\n", - "\"\"\"\n", - "p_micro: Personal micromobility\n", - "s_micro: Shared micromobility\n", - "s_car: Shared car\n", - "car: Car/rental car\n", - "transit: train + bus\n", - "no_trip: No vehicle / None\n", - "ridehail: Uber/Lyft\n", - "\"\"\"\n", - "\n", - "available = {\n", - " 'Bicycle': 'p_micro',\n", - " 'Do not have vehicle': 'no_trip',\n", - " 'Get a ride from a friend or family member': 's_car',\n", - " 'None': 'no_trip',\n", - " 'Public transportation (bus, subway, light rail, etc.)': 'transit',\n", - " 'Rental car (including Zipcar/ Car2Go)': 'car',\n", - " 'Shared bicycle or scooter': 's_micro',\n", - " 'Skateboard': 'p_micro',\n", - " 'Taxi (regular taxi, Uber, Lyft, etc)': 'ridehail',\n", - " 'Walk/roll': 'walk'\n", - "}\n", - "\n", - "# Map each sensed mode to the binary indicators.\n", - "section_mode_mapping = {\n", - " 'bicycling': ['p_micro', 's_micro'],\n", - " 'bus': ['transit'],\n", - " 'car': ['s_car', 'car', 'ridehail'],\n", - " 'no_sensed': ['unknown'],\n", - " 'train': ['transit'],\n", - " 'walking': ['walk']\n", - "}\n", - "\n", - "# For target - mode_confirm\n", - "# target_mapping = {\n", - "# 'Regular Bike': 'p_micro',\n", - "# 'Walk': 'walk',\n", - "# 'Gas Car, with others': 's_car',\n", - "# 'Gas Car, drove alone': 'car',\n", - "# 'Bikeshare': 's_micro',\n", - "# 'Other': 'unknown',\n", - "# 'Bus': 'transit',\n", - "# 'Not a Trip': 'no_trip',\n", - "# 'E-bike': 'p_micro',\n", - "# 'Train': 'transit',\n", - "# 'Taxi/Uber/Lyft': 'ridehail',\n", - "# 'Free Shuttle': 'transit',\n", - "# 'Scooter share': 's_micro',\n", - "# 'Skate board': 'p_micro'\n", - "# }\n", - "\n", - "# For target - replaced_mode\n", - "target_mapping = {\n", - " 'Regular Bike': 'p_micro', \n", - " 'Walk': 'walk', \n", - " 'No Travel': 'no_trip', \n", - " 'Other': 'unknown',\n", - " 'Gas Car, with others': 's_car',\n", - " 'Gas Car, drove alone': 'car',\n", - " 'Train': 'transit',\n", - " 'Scooter share': 's_micro', \n", - " 'Taxi/Uber/Lyft': 'ridehail', \n", - " 'Free Shuttle': 'transit', \n", - " 'Skate board': 'p_micro',\n", - " 'Bikeshare': 's_micro',\n", - " 'Bus': 'transit',\n", - " 'Not a Trip': 'no_trip',\n", - " 'E-bike': 'p_micro'\n", - "}\n", - "\n", - "# # These values were obtained using a simple linear regression model. Specifics can be found in time_distance_estimation.ipynb\n", - "# duration_dict = {\n", - "# 'walk': {\n", - "# 'intercept': 14.09698152519682,\n", - "# 'coef': 19.153802211061134\n", - "# },\n", - "# 'p_micro': {\n", - "# 'intercept': 4.753590860550791,\n", - "# 'coef': 4.2723965916811935\n", - "# },\n", - "# 's_micro': {\n", - "# 'intercept': 4.753590860550791,\n", - "# 'coef': 4.2723965916811935\n", - "# },\n", - "# 's_car': {\n", - "# 'intercept': 10.515751350707365, \n", - "# 'coef': 1.112111276629702\n", - "# },\n", - "# 'car': {\n", - "# 'intercept': 10.515751350707365, \n", - "# 'coef': 1.112111276629702\n", - "# },\n", - "# 'ridehail': {\n", - "# 'intercept': 10.515751350707365, \n", - "# 'coef': 1.112111276629702\n", - "# },\n", - "# 'transit': {\n", - "# 'intercept': 7.5000351741492395,\n", - "# 'coef': 1.839562017986485\n", - "# },\n", - "# 'unknown': {\n", - "# 'intercept': 9.423026094931313,\n", - "# 'coef': 2.640429444466706\n", - "# },\n", - "# 'no_trip': {\n", - "# 'intercept': 0.,\n", - "# 'coef': 0.\n", - "# }\n", - "# }\n", - "\n", - "ordinal_mapping = {'p_micro': 1, 'no_trip': 2, 's_car': 3, 'transit': 4, 'car': 5, 's_micro': 6, 'ridehail': 7, 'walk': 8, 'unknown': 9}\n", - "reverse_ordinal_mapping = {v:k for k,v in ordinal_mapping.items()}\n", - "\n", - "print(ordinal_mapping)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], - "source": [ - "def generate_available_features(\n", - " df: pd.DataFrame, av: dict, sm: dict, target_mapper: dict\n", - "):\n", - " \"\"\"\n", - " This method generates the wide-form dummy features for available modes.\n", - " The current implementation uses (section_mode_argmax OR available_modes) to indicate mode availability.\n", - " \"\"\"\n", - "\n", - " # Reset indices.\n", - " df = df.reset_index(drop=True, inplace=False)\n", - "\n", - " columns = list(set(av.values())) + ['unknown']\n", - "\n", - " # Create the columns along with the 'chosen' column.\n", - " df[columns] = 0\n", - "\n", - " row_dicts = list()\n", - "\n", - " for i, row in df.iterrows():\n", - " row_dict = row.to_dict()\n", - "\n", - " # Access the available modes. Split on ; and strip all the elements.\n", - " available_modes = [x.strip() for x in str(row_dict['available_modes']).split(';')]\n", - " \n", - " # Set all the available modes associated with the chosen modes too.\n", - " # Toggle this flag off if you don't want the target to be considered as an available mode.\n", - " # row_dict[row_dict['chosen']] = 1\n", - " \n", - " row_dict['chosen'] = target_mapper[row_dict['chosen']]\n", - " \n", - " # Update the available modes.\n", - " for available_mode in available_modes:\n", - " row_dict[av[available_mode]] = 1\n", - " \n", - " # Now, look at the section_mode_argmax as a proxy for the confirmed mode.\n", - " chosen_modes = sm[row_dict['section_mode_argmax']]\n", - "\n", - " # Determine the length of the mapping.\n", - " n = len(chosen_modes)\n", - "\n", - " # # Go ahead and modify the current dict with the first value.\n", - " # row_dict['chosen'] = ordinal_mapper[chosen_modes[0]]\n", - " # row_dict['primary_mode'] = 1\n", - "\n", - " # Also update the available modes.\n", - " for chosen_mode in chosen_modes:\n", - " row_dict[chosen_mode] = 1\n", - "\n", - " # # Append the first row to the list.\n", - " row_dicts.append(row_dict)\n", - " \n", - " constructed = pd.DataFrame(row_dicts)\n", - " constructed.rename(columns=dict([(c, 'av_'+c) for c in target_mapper.keys()]), inplace=True)\n", - "\n", - " return constructed" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "```language=python\n", - "{'p_micro': 1, 'no_trip': 2, 's_car': 3, 'transit': 4, 'car': 5, 's_micro': 6, 'ridehail': 7, 'walk': 8, 'unknown': 9}\n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "def generate_target_variable(df: pd.DataFrame, mapper: dict):\n", - " df['chosen'] = df['Replaced_mode'].apply(lambda x: mapper[x])\n", - " df.drop(columns=['Replaced_mode'], inplace=True)\n", - " return df\n", - "\n", - "filtered_df = generate_target_variable(filtered_df, target_mapping)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [], - "source": [ - "# Generate wide-format availability indicators..\n", - "av_df = generate_available_features(filtered_df, available, section_mode_mapping, ordinal_mapping)\n", - "\n", - "# Collapse train and bus into 'transit'.\n", - "av_df.loc[av_df.section_mode_argmax.isin(['bus', 'train']), 'section_mode_argmax'] = 'transit'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "av_df.section_mode_argmax.unique()" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
user_id_idoriginal_user_idcleaned_tripMode_confirmstart_fmt_timestart:yearstart:monthstart:daystart:hour...chosenav_s_carav_walkav_carav_ridehailav_p_microav_no_tripav_s_microav_transitav_unknown
06373dfb8cb9b47e88e8f76adcfadde20611fdd7cbc8ce4a9e3911adb6373dfb8-cb9b-47e8-8e8f-76adcfadde206082e48127dcf1f393b70ea8Regular Bike2021-04-22 18:48:48.365291-06:002021.04.022.018.0...1000010100
16373dfb8cb9b47e88e8f76adcfadde20611fdd7cbc8ce4a9e3911add6373dfb8-cb9b-47e8-8e8f-76adcfadde2060830ead2b9762e085f774f2Regular Bike2021-04-23 10:45:48.219950-06:002021.04.023.010.0...1000010100
26373dfb8cb9b47e88e8f76adcfadde20611fdd7ebc8ce4a9e3911af46373dfb8-cb9b-47e8-8e8f-76adcfadde20608b21db654c4a5ab2fa4364Other2021-04-29 14:05:50.979267-06:002021.04.029.014.0...9000010100
36373dfb8cb9b47e88e8f76adcfadde20611fdd7fbc8ce4a9e3911af96373dfb8-cb9b-47e8-8e8f-76adcfadde20608c1f002f548f5db71d16f9Other2021-04-30 08:34:49.162054-06:002021.04.030.08.0...9000010100
46373dfb8cb9b47e88e8f76adcfadde20611fdd7fbc8ce4a9e3911afb6373dfb8-cb9b-47e8-8e8f-76adcfadde20608c8f7fb2d3b88f6947766bRegular Bike2021-04-30 11:58:07.194775-06:002021.04.030.011.0...1000010100
\n", - "

5 rows × 79 columns

\n", - "
" - ], - "text/plain": [ - " user_id _id \\\n", - "0 6373dfb8cb9b47e88e8f76adcfadde20 611fdd7cbc8ce4a9e3911adb \n", - "1 6373dfb8cb9b47e88e8f76adcfadde20 611fdd7cbc8ce4a9e3911add \n", - "2 6373dfb8cb9b47e88e8f76adcfadde20 611fdd7ebc8ce4a9e3911af4 \n", - "3 6373dfb8cb9b47e88e8f76adcfadde20 611fdd7fbc8ce4a9e3911af9 \n", - "4 6373dfb8cb9b47e88e8f76adcfadde20 611fdd7fbc8ce4a9e3911afb \n", - "\n", - " original_user_id cleaned_trip \\\n", - "0 6373dfb8-cb9b-47e8-8e8f-76adcfadde20 6082e48127dcf1f393b70ea8 \n", - "1 6373dfb8-cb9b-47e8-8e8f-76adcfadde20 60830ead2b9762e085f774f2 \n", - "2 6373dfb8-cb9b-47e8-8e8f-76adcfadde20 608b21db654c4a5ab2fa4364 \n", - "3 6373dfb8-cb9b-47e8-8e8f-76adcfadde20 608c1f002f548f5db71d16f9 \n", - "4 6373dfb8-cb9b-47e8-8e8f-76adcfadde20 608c8f7fb2d3b88f6947766b \n", - "\n", - " Mode_confirm start_fmt_time start:year start:month \\\n", - "0 Regular Bike 2021-04-22 18:48:48.365291-06:00 2021.0 4.0 \n", - "1 Regular Bike 2021-04-23 10:45:48.219950-06:00 2021.0 4.0 \n", - "2 Other 2021-04-29 14:05:50.979267-06:00 2021.0 4.0 \n", - "3 Other 2021-04-30 08:34:49.162054-06:00 2021.0 4.0 \n", - "4 Regular Bike 2021-04-30 11:58:07.194775-06:00 2021.0 4.0 \n", - "\n", - " start:day start:hour ... chosen av_s_car av_walk av_car av_ridehail \\\n", - "0 22.0 18.0 ... 1 0 0 0 0 \n", - "1 23.0 10.0 ... 1 0 0 0 0 \n", - "2 29.0 14.0 ... 9 0 0 0 0 \n", - "3 30.0 8.0 ... 9 0 0 0 0 \n", - "4 30.0 11.0 ... 1 0 0 0 0 \n", - "\n", - " av_p_micro av_no_trip av_s_micro av_transit av_unknown \n", - "0 1 0 1 0 0 \n", - "1 1 0 1 0 0 \n", - "2 1 0 1 0 0 \n", - "3 1 0 1 0 0 \n", - "4 1 0 1 0 0 \n", - "\n", - "[5 rows x 79 columns]" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "display(av_df.head())" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [], - "source": [ - "# def compute_alt_durations(df: pd.DataFrame, reverse_mapper: dict, duration_mapper: dict):\n", - "# '''\n", - "# We re-iterate over the generated available mode df and populate the modes.\n", - "# We are only concerned with the rows that have primary_mode = 0, which indicates that they are alternate mode rows.\n", - "# '''\n", - "\n", - "# column_names = list(reverse_mapper.values())\n", - "\n", - "# # Start with a 0 cost for everyone.\n", - "# df[column_names] = 0\n", - "\n", - "# rows = list()\n", - "# for ix, row in df.iterrows():\n", - " \n", - "# # Convert to a dict\n", - "# row_dict = row.to_dict()\n", - "\n", - "# for mode in column_names:\n", - "# if mode == reverse_mapper[row['chosen']]:\n", - "# row_dict[mode] = row_dict['section_distance_argmax']\n", - "# continue\n", - " \n", - "# mode_params = duration_mapper[mode]\n", - "# # use availability as a mask.\n", - "# row_dict[mode] = mode_params['intercept'] + (mode_params['coef'] * row_dict['section_distance_argmax'])\n", - " \n", - "# rows.append(row_dict)\n", - " \n", - "# return pd.DataFrame(rows).rename(columns=dict([(c, 'tt_'+c) for c in column_names]), inplace=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [], - "source": [ - "# av_time_df = compute_alt_durations(av_df, reverse_ordinal_mapping, duration_dict)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Cost estimation\n", - "\n", - "```\n", - "{'p_micro': 1, 'no_trip': 2, 's_car': 3, 'transit': 4, 'car': 5, 's_micro': 6, 'ridehail': 7, 'walk': 8, 'unknown': 9}\n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [], - "source": [ - "# All values are taken from VTPI.\n", - "# https://www.vtpi.org/tca/tca0501.pdf\n", - "mode_cost_per_mile = {\n", - " # bicycle/skateboard\n", - " 'p_micro': 0.,\n", - " 'no_trip': 0.,\n", - " # Shared car is half the cost of regular car, which is $0.6/mile.\n", - " 's_car': 0.3,\n", - " # Rental car.\n", - " 'car': 0.6,\n", - " # Average of bus and train taken.\n", - " 'transit': 0.6,\n", - " # Shared bicyle or scooter - values taken from https://nacto.org/shared-micromobility-2020-2021/ and \n", - " # https://www.mckinsey.com/industries/automotive-and-assembly/our-insights/how-sharing-the-road-is-likely-to-transform-american-mobility\n", - " 's_micro': 0.3,\n", - " # uber/taxi/lyft\n", - " 'ridehail': 2.,\n", - " 'walk': 0.,\n", - " 'unknown': 0.\n", - "}\n", - "\n", - "# All 0 for now.\n", - "mode_init_cost = {\n", - " 'p_micro': 0.,\n", - " 'no_trip': 0.,\n", - " # Shared car is half the cost of regular car, which is $0.6/mile.\n", - " 's_car': 0.,\n", - " # Rental car.\n", - " 'car': 0.,\n", - " # Average of bus and train taken.\n", - " 'transit': 0.,\n", - " # $1 unlocking cost.\n", - " 's_micro': 1.,\n", - " # uber/taxi/lyft\n", - " 'ridehail': 0.,\n", - " 'walk': 0.,\n", - " 'unknown': 0.\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "def compute_cost_estimates(df: pd.DataFrame, cost_mapper: dict, init_cost_mapper: dict, ordinal_mapper: dict):\n", - " \n", - " # Create some extra colums.\n", - " columns = list(ordinal_mapper.keys())\n", - "\n", - " # Initialize the columns to 0.\n", - " df[columns] = 0.\n", - "\n", - " rows = list()\n", - "\n", - " # Iterate over every row.\n", - " for _, row in df.iterrows():\n", - " # Check which flags are active.\n", - " row_dict = row.to_dict()\n", - "\n", - " # Access the section_distance_argmax attribute for the distance. Note that this is now in miles.\n", - " distance = row_dict['section_distance_argmax']\n", - " \n", - " # Mask using availability.\n", - " for lookup in columns:\n", - " row_dict[lookup] = row_dict['av_' + lookup] * (init_cost_mapper[lookup] + (cost_mapper[lookup] * distance))\n", - "\n", - " rows.append(row_dict)\n", - "\n", - " new_df = pd.DataFrame(rows)\n", - " new_df.rename(columns=dict([(c, 'cost_'+c) for c in ordinal_mapper.keys()]), inplace=True)\n", - "\n", - " return new_df" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "cost_df = compute_cost_estimates(\n", - " av_df, cost_mapper=mode_cost_per_mile, \n", - " init_cost_mapper=mode_init_cost, \n", - " ordinal_mapper=ordinal_mapping\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cost_p_microcost_no_tripcost_s_carcost_transitcost_carcost_s_microcost_ridehailcost_walkcost_unknown
count42581.042581.042581.00000042581.00000042581.00000042581.00000042581.00000042581.042581.0
mean0.00.00.7306771.0990121.2922300.4135214.6961480.00.0
std0.00.00.7667831.4103881.6028410.7745875.1796420.00.0
min0.00.00.0000000.0000000.0000000.0000000.0000000.00.0
25%0.00.00.0640500.0000000.0000000.0000000.0000000.00.0
50%0.00.00.5569000.6609250.8623170.0000003.5109220.00.0
75%0.00.01.0790301.6329992.1067100.0000007.1414600.00.0
max0.00.04.2549539.4458228.5099055.25376428.3663510.00.0
\n", - "
" - ], - "text/plain": [ - " cost_p_micro cost_no_trip cost_s_car cost_transit cost_car \\\n", - "count 42581.0 42581.0 42581.000000 42581.000000 42581.000000 \n", - "mean 0.0 0.0 0.730677 1.099012 1.292230 \n", - "std 0.0 0.0 0.766783 1.410388 1.602841 \n", - "min 0.0 0.0 0.000000 0.000000 0.000000 \n", - "25% 0.0 0.0 0.064050 0.000000 0.000000 \n", - "50% 0.0 0.0 0.556900 0.660925 0.862317 \n", - "75% 0.0 0.0 1.079030 1.632999 2.106710 \n", - "max 0.0 0.0 4.254953 9.445822 8.509905 \n", - "\n", - " cost_s_micro cost_ridehail cost_walk cost_unknown \n", - "count 42581.000000 42581.000000 42581.0 42581.0 \n", - "mean 0.413521 4.696148 0.0 0.0 \n", - "std 0.774587 5.179642 0.0 0.0 \n", - "min 0.000000 0.000000 0.0 0.0 \n", - "25% 0.000000 0.000000 0.0 0.0 \n", - "50% 0.000000 3.510922 0.0 0.0 \n", - "75% 0.000000 7.141460 0.0 0.0 \n", - "max 5.253764 28.366351 0.0 0.0 " - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cost_df[[c for c in cost_df.columns if 'cost_' in c]].describe()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cost_df.is_male = cost_df.apply(lambda x: 1 if x.gender == 'Man' else 0, axis=1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "student_status = {\n", - " 'Not a student': 0,\n", - " 'Yes - Full Time College/University': 1,\n", - " 'Yes - Vocation/Technical/Trade School': 1,\n", - " 'Yes - Part-Time College/University': 1,\n", - " 'Fire Fighter 2 Training': 0,\n", - " 'Taking prerequisites missing for grad program ': 1,\n", - " 'Work': 0,\n", - " 'Graduate': 1,\n", - " 'Work at csu': 0,\n", - " 'Custodian': 0, \n", - " 'taking classes toward early childhood licensure': 1,\n", - " 'Prefer not to say': 0\n", - "}\n", - "\n", - "\n", - "cost_df['is_student'] = cost_df['is_student'].apply(lambda x: student_status[x])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cost_df['age'] = cost_df['age'].apply(lambda x: x if x < 100 else 2024 - x)\n", - "cost_df['n_working_residents'] = cost_df['n_working_residents'].apply(lambda x: 0 if x < 0 else x)\n", - "cost_df.rename(\n", - " columns={'start_local_dt_weekday': 'start:DOW', 'end_local_dt_weekday': 'end:DOW'},\n", - " inplace=True\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# cost_df.to_csv('../data/FULL_preprocessed_data_RM_weather.csv', index=False)\n", - "cost_df.to_csv('../data/ReplacedMode_Fix_02072024.csv', index=False)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "interpreter": { - "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" - }, - "kernelspec": { - "display_name": "emission", - "language": "python", - "name": "emission" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.16" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/viz_scripts/rm_src/mnl_exploration.ipynb b/viz_scripts/rm_src/mnl_exploration.ipynb deleted file mode 100644 index 9ca40bb..0000000 --- a/viz_scripts/rm_src/mnl_exploration.ipynb +++ /dev/null @@ -1,935 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import sys\n", - "import pickle\n", - "import importlib\n", - "\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import pandas as pd\n", - "import seaborn as sns\n", - "\n", - "from pathlib import Path\n", - "from uuid import UUID\n", - "from collections import defaultdict\n", - "\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "emission_path = Path(os.getcwd()).parent.parent / 'my_emission_server' / 'e-mission-server'\n", - "sys.path.append(str(emission_path))\n", - "\n", - "# Also add the home (viz_scripts) to the path\n", - "sys.path.append('../viz_scripts')" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "import scaffolding\n", - "import emission.core.get_database as edb" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "importlib.reload(scaffolding)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "def r(df: pd.DataFrame) -> pd.DataFrame:\n", - " return df.reset_index(drop=True, inplace=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "with open('../viz_scripts/auxiliary_files/dic_re.pkl', 'rb') as f:\n", - " dic_re = pickle.loads(f.read())\n", - "\n", - "with open('../viz_scripts/auxiliary_files/dic_pur.pkl', 'rb') as f:\n", - " dic_pur = pickle.loads(f.read())\n", - "\n", - "# convert a dictionary to a defaultdict\n", - "dic_re = defaultdict(lambda: 'Other', dic_re)\n", - "dic_pur = defaultdict(lambda: 'Other', dic_pur)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Found new program stage, creating new list\n", - "Found new program 4c, creating new list\n", - "Found new program cc, creating new list\n", - "Found new program fc, creating new list\n", - "Found new program pc, creating new list\n", - "Found new program sc, creating new list\n", - "Found new program vail, creating new list\n", - "Found new program prepilot, creating new list\n" - ] - } - ], - "source": [ - "# Split UUIDs by program\n", - "program_uuid_map = {}\n", - "for ue in edb.get_uuid_db().find():\n", - " uuid = str(ue['uuid'])\n", - " # uuid = str(ue['uuid'])\n", - " program = ue['user_email'].split(\"_\")[0]\n", - " if program in program_uuid_map.keys():\n", - " program_uuid_map[program].append(uuid)\n", - " else:\n", - " print(f\"Found new program {program}, creating new list\")\n", - " program_uuid_map[program] = []\n", - " program_uuid_map[program].append(uuid)\n", - "\n", - "uuid_program_list = []\n", - "for ue in edb.get_uuid_db().find():\n", - " # uuid = str(ue['uuid'].as_uuid(3))\n", - " uuid = str(ue['uuid'])\n", - " program = ue['user_email'].split(\"_\")[0]\n", - " uuid_program_list.append({\"program\": program, \"opcode\": ue[\"user_email\"], \"user_id\": uuid})" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "uuid_program_df = pd.DataFrame(uuid_program_list)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loaded all confirmed trips of length 241123\n", - "After filtering, found 241123 participant trips \n", - "After filtering, found 92446 labeled trips\n", - "Found Index(['mode_confirm', 'purpose_confirm', 'replaced_mode'], dtype='object') columns of length 3\n", - "After expanding, columns went from 41 -> 44\n", - "_prepilot\n", - "Based on 92395 confirmed trips from 235 users\n", - "of 241123 total trips from 261 users (38.32%)\n" - ] - } - ], - "source": [ - "# %%capture\n", - "\n", - "# for program in uuid_program_df.program.unique():\n", - "expanded_ct, file_suffix, quality_text, debug_df = scaffolding.load_viz_notebook_data(None,\n", - " None,\n", - " 'prepilot',\n", - " 'program',\n", - " dic_re,\n", - " dic_pur=dic_pur)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "# Join to the program df to get each user's program\n", - "expanded_ct['original_user_id'] = expanded_ct['user_id'].copy()\n", - "expanded_ct['user_id'] = expanded_ct['user_id'].apply(lambda x: str(x))\n", - "expanded_ct = expanded_ct.merge(uuid_program_df, on='user_id')\n", - "expanded_ct['user_id'] = expanded_ct['user_id'].apply(lambda x: str(x).replace(\"-\", \"\"))" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Index(['source', 'end_ts', 'end_fmt_time', 'end_loc', 'raw_trip', 'start_ts',\n", - " 'start_fmt_time', 'start_loc', 'duration', 'distance', 'start_place',\n", - " 'end_place', 'cleaned_trip', 'inferred_labels', 'inferred_trip',\n", - " 'expectation', 'confidence_threshold', 'expected_trip', 'user_input',\n", - " 'section_modes', 'section_distances', 'start_local_dt_year',\n", - " 'start_local_dt_month', 'start_local_dt_day', 'start_local_dt_hour',\n", - " 'start_local_dt_minute', 'start_local_dt_second',\n", - " 'start_local_dt_weekday', 'start_local_dt_timezone',\n", - " 'end_local_dt_year', 'end_local_dt_month', 'end_local_dt_day',\n", - " 'end_local_dt_hour', 'end_local_dt_minute', 'end_local_dt_second',\n", - " 'end_local_dt_weekday', 'end_local_dt_timezone', '_id', 'user_id',\n", - " 'metadata_write_ts', 'additions', 'mode_confirm', 'purpose_confirm',\n", - " 'replaced_mode', 'distance_miles', 'Mode_confirm', 'Replaced_mode',\n", - " 'Trip_purpose', 'original_user_id', 'program', 'opcode'],\n", - " dtype='object')" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "expanded_ct.columns" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "# Rename the target column.\n", - "expanded_ct.drop(columns=['replaced_mode'], axis='rows', inplace=True)\n", - "expanded_ct['Replaced_mode'] = expanded_ct['Replaced_mode'].fillna('Unlabeled')" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "# We only wish to focus on Denver data for now.\n", - "\n", - "denver_data = r(expanded_ct.loc[\n", - " (expanded_ct.start_local_dt_timezone == \"America/Denver\") & (expanded_ct.end_local_dt_timezone == \"America/Denver\"), \n", - " :])" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "denver_data['start_fmt_time'] = pd.to_datetime(\n", - " denver_data['start_fmt_time'], utc=True\n", - ").dt.tz_convert('America/Denver')" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2020-09-22 17:13:55.883513-06:00 2022-12-30 23:33:27.147785-07:00\n" - ] - } - ], - "source": [ - "print(denver_data.start_fmt_time.min(), denver_data.start_fmt_time.max())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Parse the datetime to Denver time.\n", - "# denver_data['start_fmt_time'] = pd.to_datetime(denver_data['start_fmt_time'], utc=True).dt.tz_convert('America/Denver')\n", - "\n", - "# Re-compute all the start variables.\n", - "denver_data['start_local_dt_year'] = denver_data['start_fmt_time'].dt.year\n", - "denver_data['start_local_dt_month'] = denver_data['start_fmt_time'].dt.month\n", - "denver_data['start_local_dt_day'] = denver_data['start_fmt_time'].dt.day\n", - "denver_data['start_local_dt_hour'] = denver_data['start_fmt_time'].dt.hour\n", - "denver_data['start_local_dt_weekday'] = denver_data['start_fmt_time'].dt.weekday\n", - "\n", - "## Do the same with the end time.\n", - "denver_data['end_fmt_time'] = pd.to_datetime(denver_data['end_fmt_time'], utc=True).dt.tz_convert('America/Denver')\n", - "\n", - "# Re-compute all the end variables.\n", - "denver_data['end_local_dt_year'] = denver_data['end_fmt_time'].dt.year\n", - "denver_data['end_local_dt_month'] = denver_data['end_fmt_time'].dt.month\n", - "denver_data['end_local_dt_day'] = denver_data['end_fmt_time'].dt.day\n", - "denver_data['end_local_dt_hour'] = denver_data['end_fmt_time'].dt.hour\n", - "denver_data['end_local_dt_weekday'] = denver_data['end_fmt_time'].dt.weekday" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Read the Demographic data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Read the Denver dedmographic info\n", - "survey_data = pd.read_csv('../viz_scripts/Can Do Colorado eBike Program - en.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# column renaming here!\n", - "\n", - "survey_data.rename(\n", - " {\n", - " \"Unique User ID (auto-filled, do not edit)\": \"user_id\",\n", - " \"In which year were you born?\": \"birth_year\",\n", - " \"What is your gender?\": \"gender\",\n", - " \"Do you have a valid driver's license?\": \"has_drivers_license\",\n", - " \"Are you a student?\": \"is_student\",\n", - " \"What is the highest grade or degree that you have completed?\": \"highest_education\",\n", - " \"Do you work for either pay or profit?\": \"is_paid\",\n", - " \"Do you have more than one job?\": \"has_multiple_jobs\",\n", - " \"Do you work full-time or part-time at your primary job?\": \"primary_job_type\",\n", - " \"Which best describes your primary job?\": \"primary_job_description\",\n", - " \"How did you usually get to your primary job last week? \": \"primary_job_commute_mode\",\n", - " \"Thinking about your daily commute to work last week, how many minutes did it usually take to get from home to the primary job/work place?\": \"primary_job_commute_time\",\n", - " \"At your primary job, do you have the ability to set or change your own start time?\": \"is_primary_job_flexible\",\n", - " \"Do you have the option of working from home or an alternate location instead of going into your primary work place?\": \"primary_job_can_wfh\",\n", - " \"How many days per week do you usually work from home or an alternate location?\": \"wfh_days\",\n", - " \"Do you own or rent your place of residence?\": \"residence_ownership_type\",\n", - " \"What is your home type?\": \"residence_type\",\n", - " \"Please identify which category represents your total household income, before taxes, for last year.\": \"income_category\",\n", - " \"Including yourself, how many people live in your home?\": \"n_residence_members\",\n", - " \"How many children under age 18 live in your home?\": \"n_residents_u18\",\n", - " \"Including yourself, how many people have a driver's license in your household?\": \"n_residents_with_license\",\n", - " \"How many motor vehicles are owned, leased, or available for regular use by the people who currently live in your household?\": \"n_motor_vehicles\",\n", - " \"If you were unable to use your household vehicle(s), which of the following options would be available to you to get you from place to place?\": \"available_modes\",\n", - " \"Do you have a medical condition that makes it difficult to travel outside of the home?\": \"has_medical_condition\",\n", - " \"How long have you had this condition?\": \"medical_condition_duration\"\n", - " },\n", - " axis='columns',\n", - " inplace=True\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Now, if we have duplicate users, we'd like to retain the last chronological entry.\n", - "survey_data = survey_data.loc[~((survey_data.user_id.isna())|(survey_data.user_id == \"\")), :]\n", - "\n", - "# timezonoe-aware parsing:\n", - "survey_data['Timestamp'] = survey_data['Timestamp'].str.replace('PDT|PST', '', regex=True)\n", - "survey_data['Timestamp'] = pd.to_datetime(survey_data['Timestamp']).dt.tz_localize('America/Denver')\n", - "\n", - "# Sort by user_id and time, then drop everything but the last entry.\n", - "survey_data.sort_values(by=['user_id', 'Timestamp'], ascending=True, inplace=True, axis='rows')\n", - "survey_data.drop_duplicates(['user_id'], keep='last', inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Merge the trip data with the survey data.\n", - "\n", - "merged_data = denver_data.merge(\n", - " survey_data, left_on='user_id', right_on='user_id'\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Let's start choosing features for modeling.\n", - "\n", - "base_time_features = ['fmt_time', 'local_dt_year', 'local_dt_month', 'local_dt_day', 'local_dt_hour', 'local_dt_weekday']\n", - "time_features = ['start_' + x for x in base_time_features] + ['end_' + x for x in base_time_features]\n", - "\n", - "demographic_features = ['available_modes',\n", - " 'birth_year', 'income_category', 'n_motor_vehicles', 'n_residence_members', 'n_residents_u18', 'gender', \n", - " 'is_student', 'n_residents_with_license']\n", - "\n", - "sensed_features = ['duration', 'distance_miles', 'cleaned_trip', 'start_loc', 'end_loc', 'section_modes', 'section_distances']\n", - "\n", - "modeling_data = merged_data[['user_id', '_id', 'original_user_id', 'cleaned_trip', 'Replaced_mode', 'Mode_confirm'] + time_features + demographic_features + sensed_features].copy()\n", - "\n", - "# Rename columns in-place.\n", - "modeling_data.rename(columns={\n", - " 'start_local_dt_year': 'start:year', 'start_local_dt_month': 'start:month', 'start_local_dt_day': 'start:day', 'start_local_dt_hour': 'start:hour',\n", - " 'end_local_dt_year': 'end:year', 'end_local_dt_month': 'end:month', 'end_local_dt_day': 'end:day', 'end_local_dt_hour': 'end:hour'\n", - " }, inplace=True)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "modeling_data.columns" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from calendar import monthrange\n", - "\n", - "# Find day of month: use monthrange with (mm, yyyy) args and find how many days that month had (leap years are supported).\n", - "def get_num_days_in_month(yyyy, mm):\n", - " return monthrange(yyyy, mm)[1]\n", - "\n", - "def is_overnight_trip(start_date, end_date):\n", - " return int((end_date - start_date).days > 0)\n", - "\n", - "# get the number of days for the start and end times.\n", - "modeling_data['start:n_days_in_month'] = modeling_data.apply(lambda x: get_num_days_in_month(x['start:year'], x['start:month']), axis=1)\n", - "modeling_data['end:n_days_in_month'] = modeling_data.apply(lambda x: get_num_days_in_month(x['end:year'], x['end:month']), axis=1)\n", - "\n", - "# age = current year - year of birth\n", - "modeling_data['age'] = 2023 - modeling_data['birth_year']\n", - "\n", - "# overnight trips may be more likely taken by car.\n", - "modeling_data['is_overnight_trip'] = modeling_data.apply(lambda x: is_overnight_trip(x.start_fmt_time, x.end_fmt_time), axis=1)\n", - "\n", - "# Number of working individuals in the household = number of individuals in the house - number of children.\n", - "modeling_data['n_working_residents'] = (modeling_data['n_residence_members'] - modeling_data['n_residents_u18']).astype(int)\n", - "\n", - "# Create a binary indicator.\n", - "modeling_data['is_male'] = modeling_data.gender.apply(lambda x: 1 if x==\"Male\" else 0)\n", - "\n", - "# Bin the number of vehicles owned.\n", - "# Drop the observations with (Prefer not to say)\n", - "modeling_data = modeling_data.loc[~modeling_data['n_motor_vehicles'].isin(['Prefer not to say / Prefiero no decir.']), :]\n", - "modeling_data.loc[modeling_data['n_motor_vehicles'].isin(['4+']), 'n_motor_vehicles'] = 4\n", - "modeling_data['n_motor_vehicles'] = modeling_data['n_motor_vehicles'].astype(int)\n", - "\n", - "# Convert the total duration of the trip into minutes.\n", - "modeling_data[['duration']] = modeling_data[['duration']]/60\n", - "\n", - "# Extract start and end latitudes and longitudes.\n", - "modeling_data['start_lat'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][1])\n", - "modeling_data['start_lng'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][0])\n", - "\n", - "modeling_data['end_lat'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][1])\n", - "modeling_data['end_lng'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][0])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from calendar import monthrange\n", - "\n", - "# Find day of month: use monthrange with (mm, yyyy) args and find how many days that month had (leap years are supported).\n", - "def get_num_days_in_month(yyyy, mm):\n", - " return monthrange(yyyy, mm)[1]\n", - "\n", - "def is_overnight_trip(start_date, end_date):\n", - " return int((end_date - start_date).days > 0)\n", - "\n", - "# get the number of days for the start and end times.\n", - "modeling_data['start:n_days_in_month'] = modeling_data.apply(lambda x: get_num_days_in_month(x['start:year'], x['start:month']), axis=1)\n", - "modeling_data['end:n_days_in_month'] = modeling_data.apply(lambda x: get_num_days_in_month(x['end:year'], x['end:month']), axis=1)\n", - "\n", - "# age = current year - year of birth\n", - "modeling_data['age'] = 2023 - modeling_data['birth_year']\n", - "\n", - "# overnight trips may be more likely taken by car.\n", - "modeling_data['is_overnight_trip'] = modeling_data.apply(lambda x: is_overnight_trip(x.start_fmt_time, x.end_fmt_time), axis=1)\n", - "\n", - "# Number of working individuals in the household = number of individuals in the house - number of children.\n", - "modeling_data['n_working_residents'] = (modeling_data['n_residence_members'] - modeling_data['n_residents_u18']).astype(int)\n", - "\n", - "# Create a binary indicator.\n", - "modeling_data['is_male'] = modeling_data.gender.apply(lambda x: 1 if x==\"Male\" else 0)\n", - "\n", - "# Bin the number of vehicles owned.\n", - "# Drop the observations with (Prefer not to say)\n", - "modeling_data = modeling_data.loc[~modeling_data['n_motor_vehicles'].isin(['Prefer not to say / Prefiero no decir.']), :]\n", - "modeling_data.loc[modeling_data['n_motor_vehicles'].isin(['4+']), 'n_motor_vehicles'] = 4\n", - "modeling_data['n_motor_vehicles'] = modeling_data['n_motor_vehicles'].astype(int)\n", - "\n", - "# Convert the total duration of the trip into minutes.\n", - "modeling_data[['duration']] = modeling_data[['duration']]/60\n", - "\n", - "# Extract start and end latitudes and longitudes.\n", - "modeling_data['start_lat'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][1])\n", - "modeling_data['start_lng'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][0])\n", - "\n", - "modeling_data['end_lat'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][1])\n", - "modeling_data['end_lng'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][0])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Time-related feature engineeering:\n", - "'''\n", - "HOD: hour of day\n", - "DOM: day of month\n", - "MOY: month of year\n", - "'''\n", - "\n", - "def get_HOD(hour, how='sin'):\n", - " if how == 'sin':\n", - " return np.sin(2 * np.pi * (hour/24))\n", - " return np.cos(2 * np.pi * (hour/24))\n", - "\n", - "def get_DOM(day, n_days, how='sin'):\n", - " if how == 'sin':\n", - " return np.sin(2 * np.pi * (day/n_days))\n", - " return np.cos(2 * np.pi * (day/n_days))\n", - "\n", - "def get_MOY(month, how='sin'):\n", - " if how == 'sin':\n", - " return np.sin(2 * np.pi * (month/12))\n", - " return np.cos(2 * np.pi * (month/12))\n", - "\n", - "# Start - sin\n", - "modeling_data['start:sin_HOD'] = modeling_data.apply(lambda x: get_HOD(x['start:hour']), axis=1)\n", - "modeling_data['start:sin_DOM'] = modeling_data.apply(lambda x: get_DOM(x['start:day'], x['start:n_days_in_month']), axis=1)\n", - "modeling_data['start:sin_MOY'] = modeling_data.apply(lambda x: get_MOY(x['start:year']), axis=1)\n", - "\n", - "# Start - cos\n", - "modeling_data['start:cos_HOD'] = modeling_data.apply(lambda x: get_HOD(x['start:hour'], how='cos'), axis=1)\n", - "modeling_data['start:cos_DOM'] = modeling_data.apply(lambda x: get_DOM(x['start:day'], x['start:n_days_in_month'], how='cos'), axis=1)\n", - "modeling_data['start:cos_MOY'] = modeling_data.apply(lambda x: get_MOY(x['start:year'], how='cos'), axis=1)\n", - "\n", - "# End - sin\n", - "modeling_data['end:sin_HOD'] = modeling_data.apply(lambda x: get_HOD(x['end:hour']), axis=1)\n", - "modeling_data['end:sin_DOM'] = modeling_data.apply(lambda x: get_DOM(x['end:day'], x['end:n_days_in_month']), axis=1)\n", - "modeling_data['end:sin_MOY'] = modeling_data.apply(lambda x: get_MOY(x['end:year']), axis=1)\n", - "\n", - "# End - cos\n", - "modeling_data['end:cos_HOD'] = modeling_data.apply(lambda x: get_HOD(x['end:hour'], how='cos'), axis=1)\n", - "modeling_data['end:cos_DOM'] = modeling_data.apply(lambda x: get_DOM(x['end:day'], x['end:n_days_in_month'], how='cos'), axis=1)\n", - "modeling_data['end:cos_MOY'] = modeling_data.apply(lambda x: get_MOY(x['end:year'], how='cos'), axis=1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "modeling_data.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, for every trip, we have the corresponding section mode that covered the longest distance for the trip.\n", - "\n", - "Using this as well as the `available_modes` column:\n", - "\n", - "```language=python\n", - "\n", - " # unique available modes:\n", - " {'Bicycle',\n", - " 'Do not have vehicle ',\n", - " 'Get a ride from a friend or family member',\n", - " 'None',\n", - " 'Public transportation (bus, subway, light rail, etc.)',\n", - " 'Rental car (including Zipcar/ Car2Go)',\n", - " 'Shared bicycle or scooter',\n", - " 'Skateboard',\n", - " 'Taxi (regular taxi, Uber, Lyft, etc)',\n", - " 'Walk/roll'}\n", - "\n", - " # unique section modes:\n", - " {'bicycling', 'bus', 'car', 'no_sensed', 'train', 'walking'}\n", - "\n", - " \n", - "```\n", - "\n", - "What mapping can we establish here? " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def remove_air_or_hsr(df):\n", - "\n", - " df['mark'] = 0\n", - "\n", - " for ix, row in df.iterrows():\n", - " sections = row['section_modes']\n", - " if 'air_or_hsr' in sections:\n", - " df.loc[ix, 'mark'] = 1\n", - " \n", - " df = r(df.loc[df.mark == 0, :])\n", - " df.drop(columns=['mark'], inplace=True)\n", - "\n", - " return df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "modeling_data = remove_air_or_hsr(modeling_data)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "modeling_data.columns" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "importlib.reload(scaffolding)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "results = list()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "modeling_data = modeling_data.loc[:,~modeling_data.columns.duplicated()].copy()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# | [a, b, c] | start_time | end_time |\n", - "# -> | [a, b, c] | [s1, s2, s3] |" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# print(modeling_data.shape[0])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# I manually split the modeling data into chunks of 10000 points at one time.\n", - "# This significantly expedited the processing time. Each chunk takes ~26 minutes to finish.\n", - "# split = modeling_data.loc[70000:, :]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# display(split[['original_user_id', 'cleaned_trip']].head())\n", - "# print(split.shape[0])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# from time import perf_counter\n", - "\n", - "# now = perf_counter()\n", - "# result = scaffolding.get_section_durations(split)\n", - "# end = perf_counter() - now\n", - "\n", - "# print(f\"Took {end/60} minutes to complete\")\n", - "# results.append(result)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# print(len(results))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# final_df = pd.concat(results, axis=0)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# print(modeling_data.shape[0], final_df.shape[0])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# modeling_data.to_csv('../data/modeling_data.csv', index=False)\n", - "# final_df.to_csv('../data/modeling_w_duration.csv', index=False)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# from time import perf_counter\n", - "# importlib.reload(scaffolding)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df = pd.read_csv('../data/modeling_w_duration.csv')\n", - "df.drop_duplicates(inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# df.shape, modeling_data.shape" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "dummy = modeling_data.iloc[50000:, :]\n", - "\n", - "print(dummy.shape)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# now = perf_counter()\n", - "df_modded = scaffolding.get_section_coordinates(dummy)\n", - "# end = perf_counter() - now\n", - "\n", - "# print(f\"Fetched sections in {end/60} minutes\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def verify(locations):\n", - " return locations is not None and len(locations) > 0\n", - "\n", - "\n", - "bools = df_modded.apply(lambda x: verify(x.section_locations_argmax), axis=1)\n", - "print(bools.all())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "results.append(df_modded)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(len(results))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "final_results = pd.concat(results, axis=0)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "final_df = pd.concat([df, final_results['section_locations_argmax']], axis=1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "final_df[['section_modes', 'section_distances', 'section_durations', 'section_locations_argmax']].head()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "final_df.to_csv('../data/final_modeling_data.csv', index=False)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "final_df.section_locations_argmax[0]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "interpreter": { - "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" - }, - "kernelspec": { - "display_name": "emission", - "language": "python", - "name": "emission" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.16" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/viz_scripts/rm_src/time_distance_estimation.ipynb b/viz_scripts/rm_src/time_distance_estimation.ipynb deleted file mode 100644 index 7591030..0000000 --- a/viz_scripts/rm_src/time_distance_estimation.ipynb +++ /dev/null @@ -1,235 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Data loading. Refer to the user_data_preprocessing.ipynb file for details on how user-level features are generated.\n", - "\n", - "df = pd.read_csv('../data/modeling_w_duration.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Drop duplicate rows (if any)\n", - "df.drop_duplicates(inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def compute_argmax(df: pd.DataFrame):\n", - " # Create the two columns.\n", - " df[['section_distance_argmax', 'section_duration_argmax', 'section_mode_argmax']] = None\n", - " rows = list()\n", - "\n", - " for ix, row in df.iterrows():\n", - " parsed_distances = eval(row['section_distances'])\n", - " parsed_durations = eval(row['section_durations'])\n", - " parsed_modes = eval(row['section_modes'])\n", - "\n", - " argmax_ix = np.argmax(parsed_distances)\n", - "\n", - " row['section_distance_argmax'] = parsed_distances[argmax_ix]\n", - " row['section_duration_argmax'] = parsed_durations[argmax_ix]\n", - " row['section_mode_argmax'] = parsed_modes[argmax_ix]\n", - "\n", - " rows.append(row.to_dict())\n", - " \n", - " return pd.DataFrame(rows)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Let's plot the mode-wise durations as a function of distance.\n", - "df_modded = compute_argmax(df)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df_modded.columns" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "analysis = df_modded[['section_mode_argmax', 'section_duration_argmax', 'section_distance_argmax']].copy()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "analysis.head()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from scipy.stats import pearsonr\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.metrics import r2_score\n", - "from sklearn.linear_model import LinearRegression\n", - "from sklearn.preprocessing import StandardScaler\n", - "\n", - "analysis.loc[(analysis.section_mode_argmax == 'bus') | (analysis.section_mode_argmax == 'train'), ['section_mode_argmax']] = 'public_transport'\n", - "\n", - "for mode in analysis.section_mode_argmax.unique():\n", - " mode_df = analysis.loc[(analysis.section_mode_argmax == mode) \n", - " & (analysis.section_duration_argmax >=0) \n", - " & ((analysis.section_distance_argmax >=0)), ['section_duration_argmax', 'section_distance_argmax']]\n", - "\n", - " X = mode_df[['section_distance_argmax']].values * 0.00062\n", - " Y = mode_df[['section_duration_argmax']].values / 60\n", - "\n", - " X_tr, X_te, Y_tr, Y_te = train_test_split(X, Y, test_size=0.2, random_state=42, shuffle=True)\n", - "\n", - " # scaler = StandardScaler()\n", - "\n", - " # X_tr = scaler.fit_transform(X_tr)\n", - " # X_te = scaler.transform(X_te)\n", - "\n", - " # regr = LinearRegression()\n", - " regr = LinearRegression(fit_intercept=True)\n", - " regr.fit(X_tr.reshape(-1,1), Y_tr.reshape(-1,1))\n", - "\n", - " y_tr_pred = regr.predict(X_tr)\n", - " y_te_pred = regr.predict(X_te)\n", - "\n", - " train_r2 = r2_score(y_true=Y_tr.flatten(), y_pred=y_tr_pred.flatten())\n", - " test_r2 = r2_score(y_true=Y_te.flatten(), y_pred=y_te_pred.flatten())\n", - "\n", - " print(mode, train_r2, test_r2)\n", - " print('intercept: ', regr.intercept_[0], 'coeff: ', regr.coef_[0][0])\n", - "\n", - "\n", - "'''\n", - "Previous results:\n", - "\n", - "walking 0.3843977052858275 0.3749466865077252\n", - "bicycling 0.7396768569714562 0.735986721086616\n", - "car 0.5839819702140339 0.5918942114399524\n", - "no_sensed 0.8045590529878717 0.8059202285373765\n", - "public_transport 0.44880904441364 0.6020723455289356\n", - "'''" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from scipy.stats import pearsonr\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.preprocessing import StandardScaler\n", - "from sklearn.metrics import r2_score\n", - "\n", - "\n", - "# Combine bus and train into 'public transport'\n", - "analysis.loc[(analysis.section_mode_argmax == 'bus') | (analysis.section_mode_argmax == 'train'), ['section_mode_argmax']] = 'public_transport'\n", - "\n", - "for mode in analysis.section_mode_argmax.unique():\n", - "\n", - " mode_df = analysis.loc[\n", - " (analysis.section_mode_argmax == mode) & (analysis.section_duration_argmax >= 0) & (analysis.section_distance_argmax >= 0), \n", - " ['section_duration_argmax', 'section_distance_argmax']\n", - " ]\n", - " \n", - "\n", - " X = mode_df[['section_distance_argmax']].values\n", - " Y = mode_df[['section_duration_argmax']].values\n", - "\n", - " scaler = StandardScaler()\n", - "\n", - " X_tr, X_te, Y_tr, Y_te = train_test_split(X, Y, test_size=0.2, random_state=42, shuffle=True)\n", - "\n", - " X_tr = X_tr.flatten()\n", - " X_te = X_te.flatten()\n", - " Y_tr, Y_te = Y_tr.flatten(), Y_te.flatten()\n", - "\n", - " fit = np.polyfit(X_tr, Y_tr.flatten(), 1)\n", - " # Using the fit, predict tr and te.\n", - " y_tr_pred = np.poly1d(fit)(X_tr)\n", - " y_te_pred = np.poly1d(fit)(X_te)\n", - "\n", - " train_r2 = r2_score(y_true=Y_tr, y_pred=y_tr_pred)\n", - " test_r2 = r2_score(y_true=Y_te, y_pred=y_te_pred)\n", - "\n", - " fig, ax = plt.subplots()\n", - " # Plot the testing samples.\n", - " sns.scatterplot(x=X_te, y=Y_te, ax=ax)\n", - " # Plot the line.\n", - " # line = mode_model.intercept_ + (mode_model.coef_[0] * X_te.flatten())\n", - " sns.lineplot(x=X_te, y=y_te_pred, ax=ax)\n", - " plt.show()\n", - "\n", - " print(mode, train_r2, test_r2)" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "ab0c6e94c9422d07d42069ec9e3bb23090f5e156fc0e23cc25ca45a62375bf53" - }, - "kernelspec": { - "display_name": "Python 3.9.16 ('emission')", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.16" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/viz_scripts/rm_src/user_data_preprocessing.ipynb b/viz_scripts/rm_src/user_data_preprocessing.ipynb deleted file mode 100644 index b8a756c..0000000 --- a/viz_scripts/rm_src/user_data_preprocessing.ipynb +++ /dev/null @@ -1,586 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import sys\n", - "import pickle\n", - "import importlib\n", - "\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import pandas as pd\n", - "import seaborn as sns\n", - "\n", - "from pathlib import Path\n", - "from uuid import UUID\n", - "from collections import defaultdict\n", - "\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "emission_path = Path(os.getcwd()).parent.parent / 'my_emission_server' / 'e-mission-server'\n", - "sys.path.append(str(emission_path))\n", - "\n", - "# Also add the home (viz_scripts) to the path\n", - "sys.path.append('../viz_scripts')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import scaffolding\n", - "import emission.core.get_database as edb\n", - "import emission.core.wrapper.entry as ecwe\n", - "import emission.storage.decorations.analysis_timeseries_queries as esda\n", - "import emission.storage.decorations.trip_queries as esdt\n", - "import emission.storage.decorations.timeline as esdl\n", - "import emission.storage.timeseries.abstract_timeseries as esta\n", - "import emission.storage.timeseries.timequery as estt" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "importlib.reload(scaffolding)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def r(df: pd.DataFrame) -> pd.DataFrame:\n", - " return df.reset_index(drop=True, inplace=False)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# (Please run the mapping_dictionaries.ipynb notebook before the next cell block is run)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "with open('../viz_scripts/auxiliary_files/dic_re.pkl', 'rb') as f:\n", - " dic_re = pickle.loads(f.read())\n", - "\n", - "with open('../viz_scripts/auxiliary_files/dic_pur.pkl', 'rb') as f:\n", - " dic_pur = pickle.loads(f.read())\n", - "\n", - "# convert a dictionary to a defaultdict\n", - "dic_re = defaultdict(lambda: 'Other', dic_re)\n", - "dic_pur = defaultdict(lambda: 'Other', dic_pur)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Split UUIDs by program\n", - "program_uuid_map = {}\n", - "for ue in edb.get_uuid_db().find():\n", - " uuid = str(ue['uuid'])\n", - " # uuid = str(ue['uuid'])\n", - " program = ue['user_email'].split(\"_\")[0]\n", - " if program in program_uuid_map.keys():\n", - " program_uuid_map[program].append(uuid)\n", - " else:\n", - " print(f\"Found new program {program}, creating new list\")\n", - " program_uuid_map[program] = []\n", - " program_uuid_map[program].append(uuid)\n", - "\n", - "uuid_program_list = []\n", - "for ue in edb.get_uuid_db().find():\n", - " # uuid = str(ue['uuid'].as_uuid(3))\n", - " uuid = str(ue['uuid'])\n", - " program = ue['user_email'].split(\"_\")[0]\n", - " uuid_program_list.append({\"program\": program, \"opcode\": ue[\"user_email\"], \"user_id\": uuid})" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "uuid_program_df = pd.DataFrame.from_dict(uuid_program_list)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# %%capture\n", - "\n", - "# for program in uuid_program_df.program.unique():\n", - "expanded_ct, file_suffix, quality_text, debug_df = scaffolding.load_viz_notebook_data(None,\n", - " None,\n", - " 'prepilot',\n", - " 'program',\n", - " dic_re,\n", - " dic_pur=dic_pur)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Join to the program df to get each user's program\n", - "# Keep a copy of the user_id column for querying section durations.\n", - "expanded_ct['original_user_id'] = expanded_ct['user_id'].copy()\n", - "expanded_ct['user_id'] = expanded_ct['user_id'].apply(lambda x: str(x))\n", - "expanded_ct = expanded_ct.merge(uuid_program_df, on='user_id')\n", - "expanded_ct['user_id'] = expanded_ct['user_id'].apply(lambda x: str(x).replace(\"-\", \"\"))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Rename the target column.\n", - "expanded_ct.drop(columns=['replaced_mode'], axis='rows', inplace=True)\n", - "expanded_ct['Replaced_mode'] = expanded_ct['Replaced_mode'].fillna('Unlabeled')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# We only wish to focus on Denver data for now.\n", - "\n", - "denver_data = r(expanded_ct.loc[\n", - " (expanded_ct.start_local_dt_timezone == \"America/Denver\") & (expanded_ct.end_local_dt_timezone == \"America/Denver\"), \n", - " :])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Parse the datetime to Denver time.\n", - "denver_data['start_fmt_time'] = pd.to_datetime(denver_data['start_fmt_time'], utc=True).dt.tz_convert('America/Denver')\n", - "\n", - "# Re-compute all the start variables.\n", - "denver_data['start_local_dt_year'] = denver_data['start_fmt_time'].dt.year\n", - "denver_data['start_local_dt_month'] = denver_data['start_fmt_time'].dt.month\n", - "denver_data['start_local_dt_day'] = denver_data['start_fmt_time'].dt.day\n", - "denver_data['start_local_dt_hour'] = denver_data['start_fmt_time'].dt.hour\n", - "denver_data['start_local_dt_weekday'] = denver_data['start_fmt_time'].dt.weekday\n", - "\n", - "## Do the same with the end time.\n", - "denver_data['end_fmt_time'] = pd.to_datetime(denver_data['end_fmt_time'], utc=True).dt.tz_convert('America/Denver')\n", - "\n", - "# Re-compute all the end variables.\n", - "denver_data['end_local_dt_year'] = denver_data['end_fmt_time'].dt.year\n", - "denver_data['end_local_dt_month'] = denver_data['end_fmt_time'].dt.month\n", - "denver_data['end_local_dt_day'] = denver_data['end_fmt_time'].dt.day\n", - "denver_data['end_local_dt_hour'] = denver_data['end_fmt_time'].dt.hour\n", - "denver_data['end_local_dt_weekday'] = denver_data['end_fmt_time'].dt.weekday" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Read the Demographic data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Read the Denver dedmographic info\n", - "survey_data = pd.read_csv('../viz_scripts/Can Do Colorado eBike Program - en.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# column renaming here!\n", - "\n", - "survey_data.rename(\n", - " {\n", - " \"Unique User ID (auto-filled, do not edit)\": \"user_id\",\n", - " \"In which year were you born?\": \"birth_year\",\n", - " \"What is your gender?\": \"gender\",\n", - " \"Do you have a valid driver's license?\": \"has_drivers_license\",\n", - " \"Are you a student?\": \"is_student\",\n", - " \"What is the highest grade or degree that you have completed?\": \"highest_education\",\n", - " \"Do you work for either pay or profit?\": \"is_paid\",\n", - " \"Do you have more than one job?\": \"has_multiple_jobs\",\n", - " \"Do you work full-time or part-time at your primary job?\": \"primary_job_type\",\n", - " \"Which best describes your primary job?\": \"primary_job_description\",\n", - " \"How did you usually get to your primary job last week? \": \"primary_job_commute_mode\",\n", - " \"Thinking about your daily commute to work last week, how many minutes did it usually take to get from home to the primary job/work place?\": \"primary_job_commute_time\",\n", - " \"At your primary job, do you have the ability to set or change your own start time?\": \"is_primary_job_flexible\",\n", - " \"Do you have the option of working from home or an alternate location instead of going into your primary work place?\": \"primary_job_can_wfh\",\n", - " \"How many days per week do you usually work from home or an alternate location?\": \"wfh_days\",\n", - " \"Do you own or rent your place of residence?\": \"residence_ownership_type\",\n", - " \"What is your home type?\": \"residence_type\",\n", - " \"Please identify which category represents your total household income, before taxes, for last year.\": \"income_category\",\n", - " \"Including yourself, how many people live in your home?\": \"n_residence_members\",\n", - " \"How many children under age 18 live in your home?\": \"n_residents_u18\",\n", - " \"Including yourself, how many people have a driver's license in your household?\": \"n_residents_with_license\",\n", - " \"How many motor vehicles are owned, leased, or available for regular use by the people who currently live in your household?\": \"n_motor_vehicles\",\n", - " \"If you were unable to use your household vehicle(s), which of the following options would be available to you to get you from place to place?\": \"available_modes\",\n", - " \"Do you have a medical condition that makes it difficult to travel outside of the home?\": \"has_medical_condition\",\n", - " \"How long have you had this condition?\": \"medical_condition_duration\"\n", - " },\n", - " axis='columns',\n", - " inplace=True\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Now, if we have duplicate users, we'd like to retain the last chronological entry.\n", - "survey_data = survey_data.loc[~((survey_data.user_id.isna())|(survey_data.user_id == \"\")), :]\n", - "\n", - "# timezonoe-aware parsing:\n", - "survey_data['Timestamp'] = survey_data['Timestamp'].str.replace('PDT|PST', '', regex=True)\n", - "survey_data['Timestamp'] = pd.to_datetime(survey_data['Timestamp']).dt.tz_localize('America/Denver')\n", - "\n", - "# Sort by user_id and time, then drop everything but the last entry.\n", - "survey_data.sort_values(by=['user_id', 'Timestamp'], ascending=True, inplace=True, axis='rows')\n", - "survey_data.drop_duplicates(['user_id'], keep='last', inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Merge the trip data with the survey data.\n", - "\n", - "merged_data = denver_data.merge(\n", - " survey_data, left_on='user_id', right_on='user_id'\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Let's start choosing features for modeling.\n", - "\n", - "base_time_features = ['fmt_time', 'local_dt_year', 'local_dt_month', 'local_dt_day', 'local_dt_hour', 'local_dt_weekday']\n", - "time_features = ['start_' + x for x in base_time_features] + ['end_' + x for x in base_time_features]\n", - "\n", - "demographic_features = ['available_modes',\n", - " 'birth_year', 'income_category', 'n_motor_vehicles', 'n_residence_members', 'n_residents_u18', 'gender', \n", - " 'is_student', 'n_residents_with_license']\n", - "\n", - "sensed_features = ['duration', 'distance_miles', 'cleaned_trip', 'start_loc', 'end_loc', 'section_modes', 'section_distances']\n", - "\n", - "modeling_data = merged_data[['user_id', '_id', 'original_user_id', 'cleaned_trip', 'Replaced_mode', 'Mode_confirm'] + time_features + demographic_features + sensed_features].copy()\n", - "\n", - "# Rename columns in-place.\n", - "modeling_data.rename(columns={\n", - " 'start_local_dt_year': 'start:year', 'start_local_dt_month': 'start:month', 'start_local_dt_day': 'start:day', 'start_local_dt_hour': 'start:hour',\n", - " 'end_local_dt_year': 'end:year', 'end_local_dt_month': 'end:month', 'end_local_dt_day': 'end:day', 'end_local_dt_hour': 'end:hour'\n", - " }, inplace=True)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from calendar import monthrange\n", - "\n", - "# Find day of month: use monthrange with (mm, yyyy) args and find how many days that month had (leap years are supported).\n", - "def get_num_days_in_month(yyyy, mm):\n", - " return monthrange(yyyy, mm)[1]\n", - "\n", - "def is_overnight_trip(start_date, end_date):\n", - " return int((end_date - start_date).days > 0)\n", - "\n", - "# get the number of days for the start and end times.\n", - "modeling_data['start:n_days_in_month'] = modeling_data.apply(lambda x: get_num_days_in_month(x['start:year'], x['start:month']), axis=1)\n", - "modeling_data['end:n_days_in_month'] = modeling_data.apply(lambda x: get_num_days_in_month(x['end:year'], x['end:month']), axis=1)\n", - "\n", - "# age = current year - year of birth\n", - "modeling_data['age'] = 2023 - modeling_data['birth_year']\n", - "\n", - "# overnight trips may be more likely taken by car.\n", - "modeling_data['is_overnight_trip'] = modeling_data.apply(lambda x: is_overnight_trip(x.start_fmt_time, x.end_fmt_time), axis=1)\n", - "\n", - "# Number of working individuals in the household = number of individuals in the house - number of children.\n", - "modeling_data['n_working_residents'] = (modeling_data['n_residence_members'] - modeling_data['n_residents_u18']).astype(int)\n", - "\n", - "# Create a binary indicator.\n", - "modeling_data['is_male'] = modeling_data.gender.apply(lambda x: 1 if x==\"Male\" else 0)\n", - "\n", - "# Bin the number of vehicles owned.\n", - "# Drop the observations with (Prefer not to say)\n", - "modeling_data = modeling_data.loc[~modeling_data['n_motor_vehicles'].isin(['Prefer not to say / Prefiero no decir.']), :]\n", - "modeling_data.loc[modeling_data['n_motor_vehicles'].isin(['4+']), 'n_motor_vehicles'] = 4\n", - "modeling_data['n_motor_vehicles'] = modeling_data['n_motor_vehicles'].astype(int)\n", - "\n", - "# Convert the total duration of the trip into minutes.\n", - "modeling_data[['duration']] = modeling_data[['duration']]/60\n", - "\n", - "# Extract start and end latitudes and longitudes.\n", - "modeling_data['start_lat'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][1])\n", - "modeling_data['start_lng'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][0])\n", - "\n", - "modeling_data['end_lat'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][1])\n", - "modeling_data['end_lng'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][0])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from calendar import monthrange\n", - "\n", - "# Find day of month: use monthrange with (mm, yyyy) args and find how many days that month had (leap years are supported).\n", - "def get_num_days_in_month(yyyy, mm):\n", - " return monthrange(yyyy, mm)[1]\n", - "\n", - "def is_overnight_trip(start_date, end_date):\n", - " return int((end_date - start_date).days > 0)\n", - "\n", - "# get the number of days for the start and end times.\n", - "modeling_data['start:n_days_in_month'] = modeling_data.apply(lambda x: get_num_days_in_month(x['start:year'], x['start:month']), axis=1)\n", - "modeling_data['end:n_days_in_month'] = modeling_data.apply(lambda x: get_num_days_in_month(x['end:year'], x['end:month']), axis=1)\n", - "\n", - "# age = current year - year of birth\n", - "modeling_data['age'] = 2023 - modeling_data['birth_year']\n", - "\n", - "# overnight trips may be more likely taken by car.\n", - "modeling_data['is_overnight_trip'] = modeling_data.apply(lambda x: is_overnight_trip(x.start_fmt_time, x.end_fmt_time), axis=1)\n", - "\n", - "# Number of working individuals in the household = number of individuals in the house - number of children.\n", - "modeling_data['n_working_residents'] = (modeling_data['n_residence_members'] - modeling_data['n_residents_u18']).astype(int)\n", - "\n", - "# Create a binary indicator.\n", - "modeling_data['is_male'] = modeling_data.gender.apply(lambda x: 1 if x==\"Male\" else 0)\n", - "\n", - "# Bin the number of vehicles owned.\n", - "# Drop the observations with (Prefer not to say)\n", - "modeling_data = modeling_data.loc[~modeling_data['n_motor_vehicles'].isin(['Prefer not to say / Prefiero no decir.']), :]\n", - "modeling_data.loc[modeling_data['n_motor_vehicles'].isin(['4+']), 'n_motor_vehicles'] = 4\n", - "modeling_data['n_motor_vehicles'] = modeling_data['n_motor_vehicles'].astype(int)\n", - "\n", - "# Convert the total duration of the trip into minutes.\n", - "modeling_data[['duration']] = modeling_data[['duration']]/60\n", - "\n", - "# Extract start and end latitudes and longitudes.\n", - "modeling_data['start_lat'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][1])\n", - "modeling_data['start_lng'] = modeling_data['start_loc'].apply(lambda x: x['coordinates'][0])\n", - "\n", - "modeling_data['end_lat'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][1])\n", - "modeling_data['end_lng'] = modeling_data['end_loc'].apply(lambda x: x['coordinates'][0])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Time-related feature engineeering:\n", - "'''\n", - "HOD: hour of day\n", - "DOM: day of month\n", - "MOY: month of year\n", - "'''\n", - "\n", - "def get_HOD(hour, how='sin'):\n", - " if how == 'sin':\n", - " return np.sin(2 * np.pi * (hour/24))\n", - " return np.cos(2 * np.pi * (hour/24))\n", - "\n", - "def get_DOM(day, n_days, how='sin'):\n", - " if how == 'sin':\n", - " return np.sin(2 * np.pi * (day/n_days))\n", - " return np.cos(2 * np.pi * (day/n_days))\n", - "\n", - "def get_MOY(month, how='sin'):\n", - " if how == 'sin':\n", - " return np.sin(2 * np.pi * (month/12))\n", - " return np.cos(2 * np.pi * (month/12))\n", - "\n", - "# Start - sin\n", - "modeling_data['start:sin_HOD'] = modeling_data.apply(lambda x: get_HOD(x['start:hour']), axis=1)\n", - "modeling_data['start:sin_DOM'] = modeling_data.apply(lambda x: get_DOM(x['start:day'], x['start:n_days_in_month']), axis=1)\n", - "modeling_data['start:sin_MOY'] = modeling_data.apply(lambda x: get_MOY(x['start:year']), axis=1)\n", - "\n", - "# Start - cos\n", - "modeling_data['start:cos_HOD'] = modeling_data.apply(lambda x: get_HOD(x['start:hour'], how='cos'), axis=1)\n", - "modeling_data['start:cos_DOM'] = modeling_data.apply(lambda x: get_DOM(x['start:day'], x['start:n_days_in_month'], how='cos'), axis=1)\n", - "modeling_data['start:cos_MOY'] = modeling_data.apply(lambda x: get_MOY(x['start:year'], how='cos'), axis=1)\n", - "\n", - "# End - sin\n", - "modeling_data['end:sin_HOD'] = modeling_data.apply(lambda x: get_HOD(x['end:hour']), axis=1)\n", - "modeling_data['end:sin_DOM'] = modeling_data.apply(lambda x: get_DOM(x['end:day'], x['end:n_days_in_month']), axis=1)\n", - "modeling_data['end:sin_MOY'] = modeling_data.apply(lambda x: get_MOY(x['end:year']), axis=1)\n", - "\n", - "# End - cos\n", - "modeling_data['end:cos_HOD'] = modeling_data.apply(lambda x: get_HOD(x['end:hour'], how='cos'), axis=1)\n", - "modeling_data['end:cos_DOM'] = modeling_data.apply(lambda x: get_DOM(x['end:day'], x['end:n_days_in_month'], how='cos'), axis=1)\n", - "modeling_data['end:cos_MOY'] = modeling_data.apply(lambda x: get_MOY(x['end:year'], how='cos'), axis=1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, for every trip, we have the corresponding section mode that covered the longest distance for the trip.\n", - "\n", - "Using this as well as the `available_modes` column:\n", - "\n", - "```language=python\n", - "\n", - " # unique available modes:\n", - " {'Bicycle',\n", - " 'Do not have vehicle ',\n", - " 'Get a ride from a friend or family member',\n", - " 'None',\n", - " 'Public transportation (bus, subway, light rail, etc.)',\n", - " 'Rental car (including Zipcar/ Car2Go)',\n", - " 'Shared bicycle or scooter',\n", - " 'Skateboard',\n", - " 'Taxi (regular taxi, Uber, Lyft, etc)',\n", - " 'Walk/roll'}\n", - "\n", - " # unique section modes:\n", - " {'bicycling', 'bus', 'car', 'no_sensed', 'train', 'walking'}\n", - "\n", - " \n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "\"\"\"\n", - "Remove air trips.\n", - "\"\"\"\n", - "def remove_air_or_hsr(df):\n", - "\n", - " df['mark'] = 0\n", - "\n", - " for ix, row in df.iterrows():\n", - " sections = row['section_modes']\n", - " if 'air_or_hsr' in sections:\n", - " df.loc[ix, 'mark'] = 1\n", - " \n", - " df = r(df.loc[df.mark == 0, :])\n", - " df.drop(columns=['mark'], inplace=True)\n", - "\n", - " return df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "modeling_data = remove_air_or_hsr(modeling_data)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Get section durations for trips.\n", - "modeling_data = scaffolding.get_section_durations(modeling_data)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Save the dataframe.\n", - "# final_df.to_csv('../data/modeling_w_duration.csv', index=False)" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "88f8afe72b095c7f825e3358bd97ba362c33037cbe77fe6effd118f9a11a2d38" - }, - "kernelspec": { - "display_name": "Python 3.8.18 ('mnl')", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.18" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/viz_scripts/run_from_host/generate_plots.sh b/viz_scripts/run_from_host/generate_plots.sh deleted file mode 100755 index 789fd1d..0000000 --- a/viz_scripts/run_from_host/generate_plots.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -docker exec em-public-dashboard_notebook-server_1 /bin/bash -c "/usr/src/app/saved-notebooks/docker/generate_plots.sh $*" diff --git a/viz_scripts/run_from_host/update_mappings.sh b/viz_scripts/run_from_host/update_mappings.sh deleted file mode 100755 index a2be9fc..0000000 --- a/viz_scripts/run_from_host/update_mappings.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -docker exec em-public-dashboard_notebook-server_1 /bin/bash -c "/usr/src/app/saved-notebooks/docker/update_mappings.sh $*" diff --git a/viz_scripts/run_replacement_models.ipynb b/viz_scripts/run_replacement_models.ipynb deleted file mode 100644 index 364040c..0000000 --- a/viz_scripts/run_replacement_models.ipynb +++ /dev/null @@ -1,454 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import pandas as pd\n", - "import seaborn as sns\n", - "import sklearn\n", - "from sklearn.model_selection import KFold\n", - "from sklearn.model_selection import train_test_split\n", - "\n", - "from plots import *\n", - "import replacement_models as rm\n", - "import scaffolding\n", - "\n", - "# For reloading modules from Jupyter\n", - "import importlib\n", - "importlib.reload(rm)\n", - "\n", - "sns.set_style(\"whitegrid\")\n", - "sns.set()\n", - "%matplotlib inline\n", - "\n", - "SAVE_DIR = '/plots/'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data = pd.read_csv('./processed_replacement_modeling_data.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data.columns" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "choice_col = 'Replaced_mode_num'\n", - "feature_list = ['Mode_confirm_num',\n", - " 'hhinc_$25,000-$49,999',\n", - " 'hhinc_$50,000-$99,999',\n", - " 'hhinc_Less than $24,999',\n", - " 'purp_Home',\n", - " 'purp_commute',\n", - " 'purp_discretionary',\n", - " 'purp_pudo',\n", - " 'purp_recreation',\n", - " 'purp_transit_transfer',\n", - " 'AGE',\n", - " 'VEH',\n", - " 'HHSIZE',\n", - " 'is_male',\n", - " 'sin_time',\n", - " 'cos_time',\n", - " 'sin_month',\n", - " 'cos_month',\n", - " 'is_weekend',\n", - " 'duration',\n", - " 'distance_miles',\n", - " 'av_car',\n", - " 'av_s_car',\n", - " 'av_ebike',\n", - " 'av_p_micro',\n", - " 'av_s_micro',\n", - " 'av_ridehail',\n", - " 'av_transit',\n", - " 'av_walk']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Set up K-fold cross validation\n", - "kf = KFold(n_splits=3)\n", - "\n", - "# Collect all scores to show at end of modeling\n", - "score_results = {}\n", - "score_results_holdout = {}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Set up holdout users\n", - "all_users = pd.unique(data['user_id'])\n", - "holdout_users = np.random.choice(all_users, 10)\n", - "holdout_data = data[data['user_id'].isin(holdout_users)]\n", - "non_holdout_data = data[~data['user_id'].isin(holdout_users)]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Random Forest" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test on All Users" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Train and test model\n", - "rf, accuracy, f1, confusion = rm.rf(data, choice_col, feature_list, kf)\n", - "\n", - "# Save scores for model comparison\n", - "score_results['rf'] = (np.mean(accuracy), np.mean(f1))\n", - "print(f\"Accuracy: {np.mean(accuracy)}\")\n", - "print(f\"F1: {np.mean(f1)}\")\n", - "\n", - "# Average and plot the confusion matrices\n", - "confusion_mean = np.mean(np.array(confusion), axis=0)\n", - "fig, ax = plt.subplots(figsize=(6,6))\n", - "sns.heatmap(confusion_mean, annot=True, fmt='.1%', cmap='YlGnBu', linewidths=.5, cbar=False).set(title='Random Forest Confusion Matrix', xlabel='Predicted', ylabel='Actual')\n", - "plt.subplots_adjust(bottom=0.25)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test on Holdout Users" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Train and test model\n", - "rf, accuracy, f1, confusion = rm.rf(non_holdout_data, choice_col, feature_list, kf)\n", - "\n", - "holdout_true = holdout_data[choice_col].values\n", - "holdout_pred = rf.predict(holdout_data[feature_list].values)\n", - "\n", - "accuracy = sklearn.metrics.accuracy_score(holdout_true, holdout_pred)\n", - "f1 = sklearn.metrics.f1_score(holdout_true, holdout_pred, average='weighted')\n", - "score_results_holdout['rf'] = (np.mean(accuracy), np.mean(f1))\n", - "\n", - "print(f\"Holdout Accuracy: {accuracy}\")\n", - "print(f\"Holdout F1: {f1}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# GBDT" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test on All Users" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Train and test model\n", - "rf, accuracy, f1, confusion = rm.gbdt(data, choice_col, feature_list, kf)\n", - "\n", - "# Save scores for model comparison\n", - "score_results['gbdt'] = (np.mean(accuracy), np.mean(f1))\n", - "print(f\"Accuracy: {np.mean(accuracy)}\")\n", - "print(f\"F1: {np.mean(f1)}\")\n", - "\n", - "# Average and plot the confusion matrices\n", - "confusion_mean = np.mean(np.array(confusion), axis=0)\n", - "fig, ax = plt.subplots(figsize=(6,6))\n", - "sns.heatmap(confusion_mean, annot=True, fmt='.1%', cmap='YlGnBu', linewidths=.5, cbar=False).set(title='GBDT Confusion Matrix', xlabel='Predicted', ylabel='Actual')\n", - "plt.subplots_adjust(bottom=0.25)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test on Holdout Users" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Train and test model\n", - "gbdt, accuracy, f1, confusion = rm.gbdt(non_holdout_data, choice_col, feature_list, kf)\n", - "\n", - "holdout_true = holdout_data[choice_col].values\n", - "holdout_pred = gbdt.predict(holdout_data[feature_list].values)\n", - "\n", - "accuracy = sklearn.metrics.accuracy_score(holdout_true, holdout_pred)\n", - "f1 = sklearn.metrics.f1_score(holdout_true, holdout_pred, average='weighted')\n", - "score_results_holdout['gbdt'] = (np.mean(accuracy), np.mean(f1))\n", - "\n", - "print(f\"Holdout Accuracy: {accuracy}\")\n", - "print(f\"Holdout F1: {f1}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# SVM" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test on All Users" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Train and test model\n", - "rf, accuracy, f1, confusion = rm.svm(data, choice_col, feature_list, kf)\n", - "\n", - "# Save scores for model comparison\n", - "score_results['svm'] = (np.mean(accuracy), np.mean(f1))\n", - "print(f\"Accuracy: {np.mean(accuracy)}\")\n", - "print(f\"F1: {np.mean(f1)}\")\n", - "\n", - "# Average and plot the confusion matrices\n", - "confusion_mean = np.mean(np.array(confusion), axis=0)\n", - "fig, ax = plt.subplots(figsize=(6,6))\n", - "sns.heatmap(confusion_mean, annot=True, fmt='.1%', cmap='YlGnBu', linewidths=.5, cbar=False).set(title='SVM Confusion Matrix', xlabel='Predicted', ylabel='Actual')\n", - "plt.subplots_adjust(bottom=0.25)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test on Holdout Users" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Train and test model\n", - "svm, accuracy, f1, confusion = rm.svm(non_holdout_data, choice_col, feature_list, kf)\n", - "\n", - "holdout_true = holdout_data[choice_col].values\n", - "holdout_pred = svm.predict(holdout_data[feature_list].values)\n", - "\n", - "accuracy = sklearn.metrics.accuracy_score(holdout_true, holdout_pred)\n", - "f1 = sklearn.metrics.f1_score(holdout_true, holdout_pred, average='weighted')\n", - "score_results_holdout['svm'] = (np.mean(accuracy), np.mean(f1))\n", - "\n", - "print(f\"Holdout Accuracy: {accuracy}\")\n", - "print(f\"Holdout F1: {f1}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# K Nearest Neighbors" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test on All Users" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Train and test model\n", - "knn, accuracy, f1, confusion = rm.knn(data, choice_col, feature_list, kf)\n", - "\n", - "# Save scores for model comparison\n", - "score_results['knn'] = (np.mean(accuracy), np.mean(f1))\n", - "print(f\"Accuracy: {np.mean(accuracy)}\")\n", - "print(f\"F1: {np.mean(f1)}\")\n", - "\n", - "# Average and plot the confusion matrices\n", - "confusion_mean = np.mean(np.array(confusion), axis=0)\n", - "fig, ax = plt.subplots(figsize=(6,6))\n", - "sns.heatmap(confusion_mean, annot=True, fmt='.1%', cmap='YlGnBu', linewidths=.5, cbar=False).set(title='KNN Confusion Matrix', xlabel='Predicted', ylabel='Actual')\n", - "plt.subplots_adjust(bottom=0.25)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test on Holdout Users" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Train and test model\n", - "knn, accuracy, f1, confusion = rm.knn(non_holdout_data, choice_col, feature_list, kf)\n", - "\n", - "holdout_true = holdout_data[choice_col].values\n", - "holdout_pred = knn.predict(holdout_data[feature_list].values)\n", - "\n", - "accuracy = sklearn.metrics.accuracy_score(holdout_true, holdout_pred)\n", - "f1 = sklearn.metrics.f1_score(holdout_true, holdout_pred, average='weighted')\n", - "score_results_holdout['knn'] = (np.mean(accuracy), np.mean(f1))\n", - "\n", - "print(f\"Holdout Accuracy: {accuracy}\")\n", - "print(f\"Holdout F1: {f1}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Model Comparison" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Overall results\n", - "accuracy_all = pd.DataFrame(pd.DataFrame(score_results).iloc[0,:]).reset_index()\n", - "accuracy_all.columns = ['Model','Score']\n", - "accuracy_all['Type'] = 'All'\n", - "f1_all = pd.DataFrame(pd.DataFrame(score_results).iloc[1,:]).reset_index()\n", - "f1_all.columns = ['Model','Score']\n", - "f1_all['Type'] = 'All'\n", - "score_results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Overall results\n", - "accuracy_holdout = pd.DataFrame(pd.DataFrame(score_results_holdout).iloc[0,:]).reset_index()\n", - "accuracy_holdout.columns = ['Model','Score']\n", - "accuracy_holdout['Type'] = 'Holdout'\n", - "f1_holdout = pd.DataFrame(pd.DataFrame(score_results_holdout).iloc[1,:]).reset_index()\n", - "f1_holdout.columns = ['Model','Score']\n", - "f1_holdout['Type'] = 'Holdout'\n", - "score_results_holdout" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "accuracy = pd.concat([accuracy_all, accuracy_holdout])\n", - "f1 = pd.concat([f1_all, f1_holdout])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "sns.barplot(data=accuracy, x='Model', y='Score', hue='Type').set(title='Accuracy')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "sns.barplot(data=f1, x='Model', y='Score', hue='Type').set(title='F1')" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.12" - } - }, - "nbformat": 4, - "nbformat_minor": 1 -} diff --git a/viz_scripts/scaffolding.py b/viz_scripts/scaffolding.py index 4dcccb9..40e0517 100644 --- a/viz_scripts/scaffolding.py +++ b/viz_scripts/scaffolding.py @@ -10,6 +10,7 @@ import emission.core.wrapper.localdate as ecwl import emission.storage.decorations.trip_queries as esdt from pandarallel import pandarallel +from multiprocessing import cpu_count # Module for pretty-printing outputs (e.g. head) to help users @@ -145,35 +146,12 @@ def get_durations(user_id, trip_id): return [] confirmed_trips['section_durations'] = confirmed_trips.parallel_apply( - lambda x: get_durations(x.original_user_id, x.cleaned_trip), axis=1 + lambda x: get_durations(x.user_id, x.cleaned_trip), axis=1 ) return confirmed_trips -def get_section_coordinates(confirmed_trips: pd.DataFrame): - # Initialize pandarallel - pandarallel.initialize(progress_bar=False) - - key = 'analysis/inferred_section' - - def get_coordinates(user_id, trip_id, distances): - sections = esdt.get_sections_for_trip(key = key, - user_id = user_id, trip_id = trip_id) - - if sections and len(sections) > 0 and len(distances) == len(sections): - argmax = np.argmax(distances) - section = sections[argmax] - return section.data.start_loc['coordinates'], section.data.end_loc['coordinates'] - - return [] - - confirmed_trips['section_locations_argmax'] = confirmed_trips.parallel_apply( - lambda x: get_coordinates(x.original_user_id, x.cleaned_trip, x.section_distances), axis=1 - ) - - return confirmed_trips - # CASE 2 of https://github.com/e-mission/em-public-dashboard/issues/69#issuecomment-1256835867 unique_users = lambda df: len(df.user_id.unique()) if "user_id" in df.columns else 0 @@ -185,6 +163,9 @@ def load_viz_notebook_data(year, month, program, study_type, dic_re, dic_pur=Non dic_* = label mappings; if dic_pur is included it will be used to recode trip purpose Pipeline to load and process the data before use in visualization notebooks. + + year = None, month = None, program='prepilot', study_type='program', dict(), dict() + """ # Access database tq = get_time_query(year, month) diff --git a/viz_scripts/tests/TestGetMonthList.py b/viz_scripts/tests/TestGetMonthList.py deleted file mode 100644 index a9690e4..0000000 --- a/viz_scripts/tests/TestGetMonthList.py +++ /dev/null @@ -1,39 +0,0 @@ -import arrow -import unittest - -class TestGetMonthList(unittest.TestCase): - def test_same_month(self): - start_date = arrow.get(2020, 5, 1) - end_date = arrow.get(2020, 5, 1) - month_range = list(arrow.Arrow.range('month', start_date, end_date)) - self.assertEqual(len(month_range), 1) - self.assertEqual([m.year for m in month_range], [2020]) - self.assertEqual([m.month for m in month_range], [5]) - - def test_same_year(self): - start_date = arrow.get(2020, 5, 1) - end_date = arrow.get(2020, 10, 1) - month_range = list(arrow.Arrow.range('month', start_date, end_date)) - self.assertEqual([m.year for m in month_range], [2020] * 6) - self.assertEqual([m.month for m in month_range], list(range(5,11))) - - def test_less_than_twelve_months_spans_two_years(self): - start_date = arrow.get(2020, 7, 1) - end_date = arrow.get(2021, 5, 1) - month_range = list(arrow.Arrow.range('month', start_date, end_date)) - self.assertEqual([m.year for m in month_range[:6]], [2020] * 6) - self.assertEqual([m.year for m in month_range[6:]], [2021] * 5) - self.assertEqual([m.month for m in month_range[:6]], list(range(7, 13))) - self.assertEqual([m.month for m in month_range[6:]], list(range(1, 6))) - - def test_more_than_twelve_months_spans_two_years(self): - start_date = arrow.get(2020, 7, 1) - end_date = arrow.get(2021, 9, 1) - month_range = list(arrow.Arrow.range('month', start_date, end_date)) - self.assertEqual([m.year for m in month_range[:6]], [2020] * 6) - self.assertEqual([m.year for m in month_range[6:]], [2021] * 9) - self.assertEqual([m.month for m in month_range[:6]], list(range(7, 13))) - self.assertEqual([m.month for m in month_range[6:]], list(range(1, 10))) - -if __name__ == '__main__': - unittest.main() diff --git a/viz_scripts/variation_across_individuals.ipynb b/viz_scripts/variation_across_individuals.ipynb deleted file mode 100644 index 2e043f5..0000000 --- a/viz_scripts/variation_across_individuals.ipynb +++ /dev/null @@ -1,263 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "32b25c19", - "metadata": {}, - "outputs": [], - "source": [ - "# This is still exploratory analysis, so it is not converted to work with the cold start changes\n", - "# similar to the other notebooks" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "lyric-montgomery", - "metadata": {}, - "outputs": [], - "source": [ - "year = None\n", - "month = None\n", - "program = None" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "mobile-certificate", - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "from collections import defaultdict\n", - "\n", - "sns.set_style(\"whitegrid\")\n", - "sns.set()\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "existing-tanzania", - "metadata": {}, - "outputs": [], - "source": [ - "import scaffolding \n", - "from plots import *" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "unique-topic", - "metadata": {}, - "outputs": [], - "source": [ - "# Loading mapping dictionaries from mapping_dictionaries notebook\n", - "%store -r dic_ei\n", - "%store -r dic_re\n", - "%store -r dic_pur\n", - "\n", - "# convert a dictionary to a defaultdict\n", - "dic_pur = defaultdict(lambda: 'Other',dic_pur)\n", - "dic_re = defaultdict(lambda: 'Other',dic_re)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "legitimate-ethics", - "metadata": {}, - "outputs": [], - "source": [ - "tq = scaffolding.get_time_query(year, month)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "contrary-poverty", - "metadata": {}, - "outputs": [], - "source": [ - "participant_ct_df = scaffolding.load_all_participant_trips(program, tq)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "international-retention", - "metadata": {}, - "outputs": [], - "source": [ - "labeled_ct = scaffolding.filter_labeled_trips(participant_ct_df)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "dynamic-allowance", - "metadata": {}, - "outputs": [], - "source": [ - "expanded_ct = scaffolding.expand_userinputs(labeled_ct)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "micro-gathering", - "metadata": {}, - "outputs": [], - "source": [ - "expanded_ct.shape" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "sweet-muscle", - "metadata": {}, - "outputs": [], - "source": [ - "expanded_ct = scaffolding.data_quality_check(expanded_ct)\n", - "expanded_ct.shape" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "compact-reader", - "metadata": {}, - "outputs": [], - "source": [ - "## Mapping new labels with dictionaries\n", - "expanded_ct['Trip_purpose']= expanded_ct['purpose_confirm'].map(dic_pur)\n", - "expanded_ct['Mode_confirm']= expanded_ct['mode_confirm'].map(dic_re)\n", - "expanded_ct['Replaced_mode']= expanded_ct['replaced_mode'].map(dic_re)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "studied-oxide", - "metadata": {}, - "outputs": [], - "source": [ - "assert len(expanded_ct[(expanded_ct['Mode_confirm'] == 'Pilot ebike') & (expanded_ct[\"Replaced_mode\"] == \"Pilot ebike\")]) == 0" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "auburn-driving", - "metadata": {}, - "outputs": [], - "source": [ - "# Energy Impact Calculation\n", - "scaffolding.unit_conversions(expanded_ct)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "mental-compact", - "metadata": {}, - "outputs": [], - "source": [ - "# group by user\n", - "all_trip_user_count = participant_ct_df.groupby(\"user_id\")[\"user_id\"].agg([\"count\"])\n", - "all_trip_user_count" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "international-morrison", - "metadata": {}, - "outputs": [], - "source": [ - "# group by user\n", - "labeled_trip_user_count = expanded_ct.groupby(\"user_id\")[\"user_id\"].agg([\"count\"])\n", - "labeled_trip_user_count" - ] - }, - { - "cell_type": "markdown", - "id": "junior-scholar", - "metadata": {}, - "source": [ - "## eBike only" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "sticky-fiber", - "metadata": {}, - "outputs": [], - "source": [ - "data_eb = expanded_ct.query(\"Mode_confirm == 'Pilot ebike'\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "representative-scale", - "metadata": {}, - "outputs": [], - "source": [ - "eb_user_count = data_eb.groupby(\"user_id\")[\"user_id\"].count()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "liked-silver", - "metadata": {}, - "outputs": [], - "source": [ - "compare_df = pd.concat([eb_user_count, labeled_trip_user_count, all_trip_user_count], axis=1)\n", - "compare_df.columns = [\"ebike_trips\", \"labeled_trips\", \"all_trips\"]\n", - "compare_df[\"labeled Trip Pct\"] = (compare_df.labeled_trips * 100) / compare_df.all_trips\n", - "compare_df[\"ebike Trip Pct\"] = (compare_df.ebike_trips * 100) / compare_df.labeled_trips\n", - "compare_df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "comic-audience", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -}