此处是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密钥,以便可以获取数据?
答案 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
替换为您的实际密钥。然后重新启动外壳程序/内核。