Python: создание базы данных цен закрытия акций из словаря - PullRequest
0 голосов
/ 27 ноября 2018

Я почесал сети, но не могу понять, как делать то, что я хочу.

import pandas as pd
import pandas_datareader.data as pdr
from datetime import datetime

asset_list = ['AAPL', 'FB', 'NFLX']
start = datetime(2018, 11, 1)
end = datetime(2018, 11, 25)

data = pdr.DataReader(asset_list, 'iex', start, end)

Возвращает словарь с ключами, представленными каждой акцией, столбцы для "open", "high", "low", "close" и "volume" и строки для каждой даты между датами начала и окончания.

print(data)

{'AAPL':               open     high     low   close    volume
date                                                 
2018-11-21  179.73  180.270  176.55  176.78  31124210
2018-11-23  174.94  176.595  172.10  172.29  23623972, 'FB':                                   
open    high       low   close    volume
date                                                  
2018-11-21  134.40  137.19  134.1300  134.82  25469735
2018-11-23  133.65  134.50  131.2551  131.73  11886128, 'NFLX':                   
open    high     low   close    volume
date                                                
2018-11-21  274.42  275.34  261.51  262.13  11023037
2018-11-23  260.11  265.50  256.84  258.82   5245123} 

И

type(data)
dict

Что я хочуявляется фреймом данных, в котором столбцы представляют каждую акцию, а строки представляют цену закрытия этих акций для каждой даты между датами начала и окончания.

Примерно так:

Date        stock1      stock2      stock3      stock4
11/25/2013  ClosePrice  ClosePrice  ClosePrice  ClosePrice
11/26/2013  ClosePrice  ClosePrice  ClosePrice  ClosePrice
11/27/2013  ClosePrice  ClosePrice  ClosePrice  ClosePrice
etc...

Извините, еслиоб этом спрашивают неправильно, но это мой самый первый пост, и я новичок во всем этом, поэтому заранее спасибо за терпение и помощь сообщества!

РЕДАКТИРОВАТЬ

Используя приведенный ниже ответ Кевина Фанга (именно это я и хочу) и убедившись, что у меня установлена ​​последняя версия считывателя panda, у меня есть следующий ввод / вывод:

import pandas as pd
import pandas_datareader.data as pdr
from datetime import datetime

asset_list = ['AAPL', 'FB', 'NFLX']
start = datetime(2018, 11, 1)
end = datetime(2018, 11, 25)

data = pdr.DataReader(asset_list, 'iex', start, end)
d = data['close']
d.head(5)

1y

--------------------------------------------------------------------------    
-
KeyError                                  Traceback (most recent call     
last)
<ipython-input-10-d8026b04c184> in <module>()
  4 
  5 data = pdr.DataReader(asset_list, 'iex', start, end)
----> 6 d = data['close']
  7 d.head(5)

KeyError: 'close'

Если кто-нибудь знает, почему это не работает для меня, я будуочень благодарен за помощь!

1 Ответ

0 голосов
/ 27 ноября 2018

Поскольку вы не опубликовали пример своих фреймов данных, моя лучшая ставка на pd.concat

Сначала установите индекс ваших фреймов данных на Date:

df = df.set_index('Date')

Затем нарежьте и объедините кадры данных:

merged = pd.concat([df1['close'], df2['close'], ...], axis=1)

Затем восстановите дату в виде столбца и переименуйте другие столбцы:

merged = merged.reset_index()
merged = merged.rename(columns={'before':'after'})

Если вы могли бы привести минимальный пример, я могу предоставить некоторые подробныерезультаты.

РЕДАКТИРОВАТЬ:

Я попробовал ваш код, и он не дает мне словарь, но огромный массив данных, поэтому после того, как я сделал d = data['close'], я получил такой же, какВаш желаемый вывод:

# after your codes
d = data['close']
d.head(5)
Out[22]: 
Symbols        AAPL     FB     NFLX    TSLA
date                                       
2013-11-27  71.5811  46.49  51.7842  126.94
2013-11-29  72.9066  47.01  52.2571  127.28
2013-12-02  72.2720  47.06  51.9885  124.17
2013-12-03  74.2507  46.73  51.8485  144.70
2013-12-04  74.0774  48.62  50.8957  138.95

d.reset_index().head(5)
Out[23]: 
Symbols        date     AAPL     FB     NFLX    TSLA
0        2013-11-27  71.5811  46.49  51.7842  126.94
1        2013-11-29  72.9066  47.01  52.2571  127.28
2        2013-12-02  72.2720  47.06  51.9885  124.17
3        2013-12-03  74.2507  46.73  51.8485  144.70
4        2013-12-04  74.0774  48.62  50.8957  138.95
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...