如何使用Python pandas-datareader 0.8从Alpha Vantage正确调用数据

时间:2019-10-19 04:15:36

标签: python pandas-datareader alphavantage

此处是python上的菜鸟。

我目前正在使用python pandas-datareader 0.7进行一些库存分析。

随着pandas-datareader 0.8的更新。它应该能够从Alpha Vantage中获取历史数据。

但是我不太了解如何使用api密钥(目前使用yahoo,不需要密钥)

documentation of pandas-datareader中,我用ABC123替换了ALPHAVANTAGE_API_KEY,尝试了相同的代码(我的api密钥说ABC123已在alpha有利位置注册)

    import os

    from datetime import datetime

    import pandas_datareader.data as web

    df = web.DataReader("AAPL", "av-daily", start=datetime(2017, 2, 9),end=datetime(2017, 5, 24),api_key=os.getenv('ABC123')) 

    print(df)

我希望它会输出历史数据。
但它说“ DataReader()收到了意外的关键字参数'api_key'”

如何正确使用api密钥,以便可以获取数据?

2 个答案:

答案 0 :(得分:1)

嘿,您必须使用pandas datareader吗?下面是我编写的用于轻松从Alpha Vantage中提取历史股价的函数。您要做的就是插入您的符号和令牌。有关提取Alpha Vantage数据的更多功能,请随时查看我的链接:https://github.com/hklchung/StockPricePredictor/blob/master/2020/alphavantage_funcs.py

def request_stock_price_hist(symbol, token, sample = False):
    if sample == False:
        q_string = 'https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol={}&outputsize=full&apikey={}'
    else:
        q_string = 'https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol={}&apikey={}'

    print("Retrieving stock price data from Alpha Vantage (This may take a while)...")
    r = requests.get(q_string.format(symbol, token))
    print("Data has been successfully downloaded...")
    date = []
    colnames = list(range(0, 7))
    df = pd.DataFrame(columns = colnames)
    print("Sorting the retrieved data into a dataframe...")
    for i in tqdm(r.json()['Time Series (Daily)'].keys()):
        date.append(i)
        row = pd.DataFrame.from_dict(r.json()['Time Series (Daily)'][i], orient='index').reset_index().T[1:]
        df = pd.concat([df, row], ignore_index=True)
    df.columns = ["open", "high", "low", "close", "adjusted close", "volume", "dividend amount", "split cf"]
    df['date'] = date
    return df

使用上述功能的方式如下:

df = request_stock_price_hist('IBM', 'REPLACE_YOUR_TOKEN')
df.to_csv('output.csv')

答案 1 :(得分:0)

代码os.getenv('ALPHAVANTAGE_API_KEY')告诉计算机获取名为“ ALPHA_VANTAGE_API_KEY”的环境变量

短期解决方案是仅替换代码:

发件人:api_key=os.getenv('ABC123')

收件人:api_key='ABC123'


它们默认为环境变量的原因是,不直接将密钥存储在代码中会更安全。这是link的更多信息,但是最简单的设置方法是运行:

cd 
echo "export ALPHAVANTAGE_API_KEY=\"ABC123\"" >> .bash_profile

当然可以将ABC123替换为您的实际密钥。然后重新启动外壳程序/内核。