Построить pandas-данные из Alpha Vantage

#pandas #matplotlib #alpha-vantage

#панды #matplotlib #альфа-преимущество

Вопрос:

Я только что установил модуль alpha_vantage в дополнение к pandas и получил api-ключ и т. Д. Теперь я хочу построить данные som относительно запаса. Написано в модуле readme (см. Здесь) вот как вы это делаете:

 from alpha_vantage.timeseries import TimeSeries

import matplotlib.pyplot as plt

ts = TimeSeries(key='YOUR_API_KEY', output_format='pandas')
data, meta_data = ts.get_intraday(symbol='MSFT',interval='1min', outputsize='full')
data['4. close'].plot()
plt.title('Intraday Times Series for the MSFT stock (1 min)')
plt.show()
 

Но когда я пишу то же самое в своем проекте с моим собственным api-ключом, я получаю эту ошибку:

   File "C:UsersaugbiPycharmProjectsDjangoProsjektmainviews.py", line 159, in <module>
  data['4. close'].plot()
  TypeError: tuple indices must be integers or slices, not str
 

Я распечатал данные, поэтому вы можете увидеть формат здесь (верхняя строка — результат data.index:

 index: <built-in method index of tuple object at 0x0F7CBC28>
(                     1. open  2. high   3. low  4. close  5. volume
date
2021-01-04 19:55:00  3179.94  3183.45  3179.94   3183.45     1317.0
2021-01-04 19:50:00  3179.00  3180.00  3178.26   3178.26      851.0
2021-01-04 18:52:00  3178.11  3178.11  3178.11   3178.11      648.0
2021-01-04 18:15:00  3177.00  3177.00  3177.00   3177.00      505.0
2021-01-04 18:09:00  3177.00  3177.00  3177.00   3177.00      224.0
...                      ...      ...      ...       ...        ...
2020-12-22 07:40:00  3212.78  3212.78  3212.78   3212.78      703.0
2020-12-22 07:34:00  3210.00  3210.00  3210.00   3210.00      755.0
2020-12-22 07:27:00  3208.19  3208.19  3208.19   3208.19      510.0
2020-12-22 07:14:00  3204.00  3204.00  3204.00   3204.00      216.0
2020-12-22 07:08:00  3204.00  3204.00  3204.00   3204.00      167.0
 

Мой собственный код здесь:

 ts2 = TimeSeries(key='ALPA_KEY', output_format='pandas')
data = ts2.get_intraday(symbol='AMZN',interval='1min', outputsize='full')
print("index:", data.index)
print(data)
data['4. close'].plot()
plt.title('Intraday Times Series for the AMZN stock (1 min)')
plt.show()
 

Мое желание — построить «4. Столбец «Закрытие» и, если возможно, соответствующие времена. Эти данные представляют собой стоимость акций Amazon за 1 день.

Заранее большое вам спасибо!

Ответ №1:

У меня был APIKEY Alpah-Vantage, поэтому я использовал следующий код для проверки. Он не вернулся с ошибкой, как вы просили. Когда я проверил выходной формат, это был не обычный формат pandas, а расширенный формат.

 data
(                     1. open  2. high   3. low  4. close  5. volume
 date                                                               
 2021-01-04 19:55:00  3179.94  3183.45  3179.94   3183.45     1317.0
 2021-01-04 19:50:00  3179.00  3180.00  3178.26   3178.26      851.0
 2021-01-04 18:52:00  3178.11  3178.11  3178.11   3178.11      648.0
 2021-01-04 18:15:00  3177.00  3177.00  3177.00   3177.00      505.0
 2021-01-04 18:09:00  3177.00  3177.00  3177.00   3177.00      224.0
 ...                      ...      ...      ...       ...        ...
 2020-12-22 07:40:00  3212.78  3212.78  3212.78   3212.78      703.0
 2020-12-22 07:34:00  3210.00  3210.00  3210.00   3210.00      755.0
 2020-12-22 07:27:00  3208.19  3208.19  3208.19   3208.19      510.0
 2020-12-22 07:14:00  3204.00  3204.00  3204.00   3204.00      216.0
 2020-12-22 07:08:00  3204.00  3204.00  3204.00   3204.00      167.0
 
 [3440 rows x 5 columns],
 {'1. Information': 'Intraday (1min) open, high, low, close prices and volume',
  '2. Symbol': 'AMZN',
  '3. Last Refreshed': '2021-01-04 19:55:00',
  '4. Interval': '1min',
  '5. Output Size': 'Full size',
  '6. Time Zone': 'US/Eastern'})
 

Из этого формата можно получить обычный фрейм данных с данными [0], поэтому можно создать график. Ниже приведен код для получения графика.

 data[0]
    1. open     2. high     3. low  4. close    5. volume
date                    
2021-01-04 19:55:00     3179.94     3183.45     3179.94     3183.45     1317.0
2021-01-04 19:50:00     3179.00     3180.00     3178.26     3178.26     851.0
2021-01-04 18:52:00     3178.11     3178.11     3178.11     3178.11     648.0
2021-01-04 18:15:00     3177.00     3177.00     3177.00     3177.00     505.0
2021-01-04 18:09:00     3177.00     3177.00     3177.00     3177.00     224.0

ts2 = TimeSeries(key=api_key, output_format='pandas')
data = ts2.get_intraday(symbol='AMZN',interval='1min', outputsize='full')
print("index:", data.index)
print(data)
data[0]['4. close'].plot()
plt.title('Intraday Times Series for the AMZN stock (1 min)')
plt.show()

 

введите описание изображения здесь