Example #1
0
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
Example #2
0
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