def __prep_data__(self, d): onez = np.ones((1, 11)) features = pd.DataFrame(onez) date = api.get_correct_date(d['time']) # use weather data to transform and insert monthly circular data sm, cm = h.Helpers.trans([date.month], 12, h.Helpers.transform_unit) features.insert(1, 'sin_month', sm) features.insert(2, 'cos_month', cm) # use weather data to transform and insert hourly data sh, ch = h.Helpers.trans([date.hour], 24, h.Helpers.transform_unit) features.insert(3, 'sin_hour', sh) features.insert(4, 'cos_hour', ch) # use either weather or parent averages to transform and insert if 'windBearing' in d: sw, cw = h.Helpers.trans(d['windBearing'], -999, h.Helpers.transformWind) else: sw, cw = DataClass.get_avg('sin_wind_dir'), DataClass.get_avg( 'cos_wind_dir') features.insert(5, 'sin_wind_dir', sw) features.insert(6, 'cos_wind_dir', cw) def eval_instance(api_feature_name, dad_feature_name, api_data=d, dad=DataClass): if api_feature_name in api_data: ready = super(WeatherInstance, self).scale_new_val(dad_feature_name, api_data[api_feature_name]) else: ready = dad.get_avg(self, dad_feature_name) return ready features.insert( 7, 'wind_speed_mph', eval_instance(api_feature_name='windSpeed', dad_feature_name='wind_speed_mph')) features.insert(8, 'temperature_f', eval_instance('temperature', 'temperature_f')) features.insert(9, 'pressure_mb', eval_instance('pressure', 'pressure_mb')) features.insert( 10, 'visibility_mi', eval_instance(api_feature_name='visibility', dad_feature_name='visibility_mi')) return features
def print_one_day_of_weather_data(year, month, day, max_rows, file_to_write): url = api.get_url() + ',' + year + '-' + month + '-' + day + 'T00:00:00' parsed_json = api.get_and_load_data(url) all_obs = parsed_json['hourly']['data'] null = 'null' # if we reach the end of the observations for n in range(0, len(all_obs)): # or we exceed the max rows desired if n > max_rows: return 0 else: b = all_obs[n] time = b['time'] temperature = b.get('temperature', null) visibility = b.get('visibility', null) pressure = b.get('pressure', null) windSpeed = b.get('windSpeed', null) windBearing = b.get('windBearing', null) humidity = b.get('humidity', null) date_data = api.get_correct_date(time) year = date_data.year month = date_data.month day = date_data.day hour = date_data.hour params = [ time, year, month, day, hour, temperature, windSpeed, windBearing, humidity, visibility, pressure ] # print params with open(file_to_write, 'a') as csvfile: w = csv.writer(csvfile, quoting=csv.QUOTE_ALL) w.writerow(params) csvfile.close()
def print_one_day_of_weather_data(year, month, day, max_rows, file_to_write): url = api.get_url() + ',' + year + '-' + month + '-' + day + 'T00:00:00' parsed_json = api.get_and_load_data(url) all_obs = parsed_json['hourly']['data'] null = 'null' # if we reach the end of the observations for n in range(0, len(all_obs)): # or we exceed the max rows desired if n > max_rows: return 0 else: b = all_obs[n] time = b['time'] temperature = b.get('temperature', null) visibility = b.get('visibility', null) pressure = b.get('pressure', null) windSpeed = b.get('windSpeed', null) windBearing = b.get('windBearing', null) humidity = b.get('humidity', null) date_data = api.get_correct_date(time) year = date_data.year month = date_data.month day = date_data.day hour = date_data.hour params = [time, year, month, day, hour, temperature, windSpeed, windBearing, humidity, visibility, pressure] # print params with open(file_to_write, 'a') as csvfile: w = csv.writer(csvfile, quoting=csv.QUOTE_ALL) w.writerow(params) csvfile.close()
def __prep_data__(self, d): onez = np.ones((1, 11)) features = pd.DataFrame(onez) date = api.get_correct_date(d['time']) # use weather data to transform and insert monthly circular data sm, cm = h.Helpers.trans([date.month], 12, h.Helpers.transform_unit) features.insert(1, 'sin_month', sm) features.insert(2, 'cos_month', cm) # use weather data to transform and insert hourly data sh, ch = h.Helpers.trans([date.hour], 24, h.Helpers.transform_unit) features.insert(3, 'sin_hour', sh) features.insert(4, 'cos_hour', ch) # use either weather or parent averages to transform and insert if 'windBearing' in d: sw, cw = h.Helpers.trans(d['windBearing'], -999, h.Helpers.transformWind) else: sw, cw = DataClass.get_avg('sin_wind_dir'), DataClass.get_avg('cos_wind_dir') features.insert(5, 'sin_wind_dir', sw) features.insert(6, 'cos_wind_dir', cw) def eval_instance(api_feature_name, dad_feature_name, api_data=d, dad=DataClass): if api_feature_name in api_data: ready = super(WeatherInstance, self).scale_new_val(dad_feature_name, api_data[api_feature_name]) else: ready = dad.get_avg(self, dad_feature_name) return ready features.insert(7, 'wind_speed_mph', eval_instance(api_feature_name='windSpeed', dad_feature_name='wind_speed_mph')) features.insert(8, 'temperature_f', eval_instance('temperature', 'temperature_f')) features.insert(9, 'pressure_mb', eval_instance('pressure', 'pressure_mb')) features.insert(10, 'visibility_mi', eval_instance(api_feature_name='visibility', dad_feature_name='visibility_mi')) return features
import sys from api import api api = api() sys.path.insert(0, '../data_tools/weather_instance') from weather_instance import * parsed_json = api.get_and_load_data(api.get_url()) c = parsed_json['currently'] date = api.get_correct_date(c['time']) def now_weather_readable(): first_line = c['summary'] + "\n\n" h = "Relative humidity: " + str(c.get('humidity', 'NaN')) + "\n" a = "Air pressure (mb): " + str(c.get('pressure', 'NaN')) + "\n" t = "Temperature (F): " + str(c.get('temperature', 'NaN')) + "\n" wd = "Wind Direction (deg): " + str(c.get('windBearing', 'NaN')) + "\n" ws = "Wind Speed (mph): " + str(c.get('windSpeed', 'NaN')) + "\n" return first_line + h + a + t + wd + ws def raw_on(): x = WeatherInstance(weather_d=c, path_and_name_to_parent='../Data/wp_remove_null_2014.csv') return x.get_features()
import sys from api import api api = api() sys.path.insert(0, '../data_tools/weather_instance') from weather_instance import * parsed_json = api.get_and_load_data(api.get_url()) c = parsed_json['currently'] date = api.get_correct_date(c['time']) def now_weather_readable(): # print(c) first_line = c['summary'] + "\n\n" h = "Relative humidity: " + str(c.get('humidity', 'NaN')) + "\n" a = "Air pressure (mb): " + str(c.get('pressure', 'NaN')) + "\n" t = "Temperature (F): " + str(c.get('temperature', 'NaN')) + "\n" wd = "Wind Direction (deg): " + str(c.get('windBearing', 'NaN')) + "\n" ws = "Wind Speed (mph): " + str(c.get('windSpeed', 'NaN')) + "\n" vi = "visibility: " + str(c.get('visibility', 'NaN')) + "\n" return first_line + h + a + t + wd + ws + vi def raw_on(): x = WeatherInstance( weather_d=c, path_and_name_to_parent='../Data/wp_remove_null_2014.csv') return x.get_features()