def load_isd_inventory(bucket_name): """ Load the isd_inventory into a dataframe if it already exists. If it doesn't exist, download it from NOAA. """ s3 = boto3.resource('s3') try: inventory = StringIO(s3.Object(bucket_name, 'isd-inventory.csv') .get()['Body'].read()) is_from_NOAA = False except botocore.exceptions.ClientError: # Get the current isd-inventory from NOAA's ftp server inventory = robust_get_from_NOAA_ftp( '/pub/data/noaa/', 'isd-inventory.csv') is_from_NOAA = True inventory = pd.read_csv( inventory, dtype={col: str for col in ['ID', 'USAF', 'WBAN', 'YEAR']}) if is_from_NOAA: """" Add new columns & initialize download records to date before NOAA ftp server existed """ inventory.insert(0, 'ID', inventory['USAF']+'-'+inventory['WBAN']) inventory['Station-Year'] = inventory['ID']+'-'+inventory['YEAR'] inventory['Last_Updated'] = pd.to_datetime(0) else: inventory['Last_Updated'] = pd.to_datetime(inventory['Last_Updated']) inventory.set_index('Station-Year', inplace=True) inventory = organize_inventory_cols(inventory) return inventory
def make_output(): user_inp = {} # stock label entry is what's in the input.html file, field entered by user] user_inp['stock_label'] = request.form['stock_label_entry'] user_inp['month'] = request.form['month_entry'] payload = { 'function': 'TIME_SERIES_DAILY', 'symbol': user_inp['stock_label'], 'outputsize': 'full', 'apikey': apikey, 'datatype': 'csv' } df = rq.get('https://www.alphavantage.co/query', params=payload) df = StringIO(df.text) df = read_csv(df) df.timestamp = to_datetime(df.timestamp) df = df.set_index('timestamp', drop=False) date_filter = to_datetime(user_inp['month']) year_month_filter = str(date_filter.year) + '-' + str(date_filter.month) df_f = df.loc[year_month_filter] df_f_close = df_f.loc[:, ['timestamp', 'close']] fig = figure( x_axis_type="datetime", x_axis_label='date', y_axis_label='closing price', title='Stock Closing Price of ' + user_inp['stock_label'] + ' Over ' + user_inp['month'], ) fig.line('timestamp', 'close', source=df_f) output_html = file_html(fig, CDN, 'output plot') return output_html