Как правильно вызывать данные из Alpha Vantage с помощью Python pandas-datareader 0.8

noobs on python здесь.

В настоящее время я использую python pandas-datareader 0.7 для анализа запасов.

С обновлением pandas-datareader 0.8. Он должен иметь возможность получать исторические данные из Alpha Vantage.

Но я действительно не понимаю, как использовать ключ api (в настоящее время используется Yahoo, и ключ не нужен)

Из документации pandas-datareader, Я попробовал тот же код (с моим ключом api, скажем, ABC123, зарегистрированным в альфа-версии), заменив ALPHAVANTAGE_API_KEY на ABC123

    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, чтобы получить данные?


person Max Cheung    schedule 19.10.2019    source источник


Ответы (2)


Привет, тебе нужно использовать программу чтения панд? Ниже приведена функция, которую я написал для простого извлечения исторических цен на акции из 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')
person hklchung    schedule 07.09.2020

Кодos.getenv('ALPHAVANTAGE_API_KEY') сообщает компьютеру захватить переменную среды с именем 'ALPHA_VANTAGE_API_KEY'

Кратковременное исправление - просто заменить код:

От: api_key=os.getenv('ABC123')

To: api_key='ABC123'


Причина, по которой они по умолчанию используют переменную среды, заключается в том, что безопаснее не хранить ключ непосредственно в коде. Вот ссылка для получения дополнительной информации, но самый простой способ настроить ее - запустить:

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

Разумеется, замените ABC123 своим фактическим ключом. Затем перезапустите оболочку / ядро.

person Patrick Collins    schedule 21.10.2019