首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试从Morningstar下载股票价格数据时出错

尝试从Morningstar下载股票价格数据时出错
EN

Stack Overflow用户
提问于 2018-05-05 20:43:13
回答 1查看 291关注 0票数 0
代码语言:javascript
复制
    import math
    import pandas_datareader.data as web
    import matplotlib.pyplot as plot
    from datetime import datetime
    from matplotlib import style


    style.use('ggplot')

    import csv

    with open('sp500const.csv', newline='') as File:  
    reader = csv.reader(File)
    dataa=[]
    for i in reader:
      dataa.extend(i)

    Dates=[]
    Prices=[]
    Tick=[]
    for stock in dataa[2:100]:
       for year in range(2010,2019):
          if year==2012:  
            start = datetime(year,5,1)
            end=datetime(year,5,1)
            f = web.DataReader(stock, 'morningstar', start, end)
            temp=f['Close']
            Prices.append(float(temp))
            Dates.append(end.strftime('%m/%d/%Y'))
           Tick.append(stock)
         elif year==2013:
            start=datetime(year,5,3)
            end=datetime(year,5,3)
            f = web.DataReader(stock, 'morningstar', start, end)
            temp=f['Close']
            Prices.append(float(temp))
            Dates.append(end.strftime('%m/%d/%Y'))
            Tick.append(stock)
         elif year==2014:
            start=datetime(year,5,5)
            end=datetime(year,5,5)
            f = web.DataReader(stock, 'morningstar', start, end)
            temp=f['Close']
            Prices.append(float(temp))
            Dates.append(end.strftime('%m/%d/%Y'))
            Tick.append(stock)
         else:
            start=datetime(year,5,4)
            end=datetime(year,5,4)
            f = web.DataReader(stock, 'morningstar', start, end)
            temp=f['Close']
            Prices.append(float(temp))
            Dates.append(end.strftime('%m/%d/%Y'))
            Tick.append(stock)


    #datetime(Year,Month,Days)

    x=[Tick,Dates,Prices]
    z=[list(i) for i in zip(*x)]
    print(z)

我想下载标准普尔500指数成份股公司的数据,其股票代码在sp500const.csv fileTickers中,据wikipedia.com报道,其日期为2011-2018年。当我更改要下载的报价器的数量时(例如,在现在的代码中,我希望下载报价器的股票价格dataa2:100)。当我选择例如data2:4时,代码可以完美地工作。我得到以下错误:

回溯(最近一次调用):

代码语言:javascript
复制
File "<ipython-input-5-5592627b16bf>", line 44, in <module>
    f = web.DataReader(stock, 'morningstar', start, end)

  File "C:\Users\coxs\Miniconda3\lib\site-packages\pandas_datareader\data.py", line 391, in DataReader
    session=session, interval="d").read()

  File "C:\Users\coxs\Miniconda3\lib\site-packages\pandas_datareader\mstar\daily.py", line 219, in read
    df = self._dl_mult_symbols(symbols=symbols)

  File "C:\Users\coxs\Miniconda3\lib\site-
packages\pandas_datareader\mstar\daily.py", line 126, in _dl_mult_symbols
    jsondata=jsondata)

  File "C:\Users\coxs\Miniconda3\lib\site-packages\pandas_datareader\mstar\daily.py", line 164, in _restruct_json

 volumes = jsondata["VolumeList"]["Datapoints"]

TypeError: 'NoneType' object is not subscriptable
EN

回答 1

Stack Overflow用户

发布于 2018-06-13 06:55:17

使用"try“"except”语句。这应该可以避免返回错误和停止循环。但是,问题应该是来自API输出,所以您将会丢失数据。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50189575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档