我正在编写一个应用程序来跟踪输入电子表格的股票数据。我目前的工作方式是为每个符号调用pandas_datareader.tiingo.TiingoDailyReader
。数据读取器能够获取符号列表,并一次提取这些符号的所有数据。我更喜欢这样,因为我可以进行一次调用,然后查询它返回的数据帧。
我遇到的问题是,当一个符号被摘牌或不存在时,这会导致整个调用失败,从而导致空的数据帧。我通过对照Tiingo支持的符号列表检查所有符号来解决这个问题。然而,这并不完美,因为我遇到过一个支持符号但没有我请求的日期数据的例子。
是否有一种方法可以同时调用所有符号,并让数据读取器跳过这些错误或不返回问题符号的数据?
谢谢,
我认为在运行数据采集之前,您应该检查符号以及开始和结束日期。参考文献来自官方参考文献
import urllib.request
import pandas as pd
import io
url = 'https://apimedia.tiingo.com/docs/tiingo/daily/supported_tickers.zip'
zip_tickers = urllib.request.urlopen(url).read()
zip_tick = io.BytesIO(zip_tickers)
with zipfile.ZipFile(zip_tick) as myzip:
csv_data = myzip.extract('supported_tickers.csv')
df = pd.read_csv(csv_data, sep=',')
df
ticker exchange assetType priceCurrency startDate endDate
0 000001 SHE Stock CNY 2007-08-30 2020-09-11
1 000002 SHE Stock CNY 2000-01-04 2020-09-11
2 000003 SHE Stock CNY NaN NaN
3 000004 SHE Stock CNY 2007-08-31 2020-09-11
4 000005 SHE Stock CNY 2001-01-02 2020-09-11
... ... ... ... ... ... ...
87303 ZZK NYSE ARCA Stock USD 2020-07-22 2020-09-11
87304 ZZLL OTCBB Stock USD 2017-09-26 2020-09-11
87305 ZZLLD OTCBB Stock USD 2017-10-06 2017-10-30
87306 ZZZ NYSE ARCA Stock USD 2014-10-31 2020-09-11
87307 ZZZOF PINK Stock USD 2017-09-22 2020-09-11
87308 rows × 6 columns