3

python在这里的菜鸟。

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

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

但我不太明白如何使用 api 密钥(目前使用 yahoo,不需要密钥)

pandas-datareader 的文档中,我通过将 ALPHAVANTAGE_API_KEY 替换为 ABC123 尝试了相同的代码(我的 api 密钥说 ABC123 在 alpha vantage 中注册)

    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 密钥以便获取数据?

4

2 回答 2

3

嘿,你必须使用熊猫数据阅读器吗?下面是我编写的一个函数,用于从 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')
于 2020-09-07T08:38:21.720 回答
2

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

短期修复是只替换代码:

从:api_key=os.getenv('ABC123')

至: api_key='ABC123'


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

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

当然,ABC123用您的实际密钥替换。然后重新启动外壳/内核。

于 2019-10-21T14:25:57.767 回答