python pandas yahoo data ETF

Я хотел бы получить некоторые данные ETF от Yahoo Finance, используя pandas.

Если я зайду на веб-сайт Yahoo Finance, я смогу найти отдельные ETF (например, C001).

Однако, если я попытаюсь получить данные с помощью python pandas, я ничего не получу.

df = pd.io.data.DataReader('C001','yahoo',start=datetime(2010,1,1), end=date.today())

Код работает нормально, если я использую «AAP» вместо «C001».

Есть ли что-то очевидное, что я делаю неправильно? Есть ли причина, по которой «yahoo» работает, а тикерные символы ETF — нет?

Заранее большое спасибо.


person fabee    schedule 30.01.2015    source источник
comment
Второй аргумент — это источник данных, поэтому, если вам нужны данные от Yahoo, это должно быть 'yahoo' (это может быть, например, также google или fred)   -  person joris    schedule 30.01.2015
comment
Спасибо, как глупо. Однако это все еще не решает проблему.   -  person fabee    schedule 30.01.2015


Ответы (1)


Я заметил, что на Yahoo Finance есть несколько тикеров для C001 (C001.f,c001.de и так далее).

я использовал часть своего кода (который также включает символ тикера), и с C001F (или всем остальным) он работал нормально.

 import datetime
 import pandas as pd
 from pandas import DataFrame
 from pandas.io.data import DataReader
 symbols_list = ['C001.F']

 symbols=[]
 for ticker in symbols_list: 
     r = DataReader(ticker, "yahoo",
               start=datetime.datetime(20140, 01, 01))
     # add a symbol column
     r['Symbol'] = ticker
     symbols.append(r)
 # concatenate all the dfs
 df = pd.concat(symbols)

 print (df)

Результат таков:

              Open    High     Low   Close  Volume  Adj Close  Symbol
Date                                                                 
2010-01-12   60.40   60.40   59.10   59.13    5100      59.13  C001.F
2010-01-13   59.30   59.81   59.30   59.81    3300      59.81  C001.F
2010-01-14   59.93   59.93   59.58   59.90     400      59.90  C001.F
2010-01-15   59.81   60.04   58.46   58.54    3400      58.54  C001.F
2010-01-18   58.93   59.09   58.91   59.09    4100      59.09  C001.F
2010-01-19   58.70   59.52   58.48   59.52   16700      59.52  C001.F
2010-01-20   59.39   59.52   58.42   58.46   89300      58.46  C001.F
2010-01-21   58.71   58.83   56.94   57.08   11800      57.08  C001.F
2010-01-22   57.19   57.19   56.17   56.17   14200      56.17  C001.F
2010-01-25   56.32   56.83   56.16   56.21   45700      56.21  C001.F
2010-01-26   55.72   56.60   55.71   56.60    4200      56.60  C001.F
2010-01-27   56.06   56.53   55.92   56.22     300      56.22  C001.F

Это то, чего вы хотели добиться? (если вам не нужен тикер символа, не используйте строки после #добавить символ...) и измените print df на print r. Я использую тикер символов, потому что мне нужно видеть символы, когда я получаю несколько тикеров

person Andrea    schedule 30.01.2015
comment
Привет Андреа, это в значительной степени то, что я хотел. Дополнительная буква обозначает место, где акции были проданы. Большое спасибо. - person fabee; 30.01.2015