尝试获取雅虎财经数据并设置为数据帧时出错



当我尝试用于获取雅虎财经数据并设置为数据帧的循环时,我得到KeyError:Date.当我从未来的导入部门运行时,我也遇到了问题。任何人都可以帮忙。

import pandas as pd
from pandas import Series,DataFrame
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('whitegrid')
%matplotlib inline
from pandas_datareader import data
from datetime import datetime
tech_list = ['APPL','GOOG','MSFT','AMZN']
end = datetime.now()
start = datetime(end.year -1, end.month, end.day)
for stock in tech_list:
    globals()[stock] = data.DataReader(stock,'yahoo',start,end)

当我从未来的导入部门输入时,出现错误

File "<ipython-input-19-69af1e1068cd>", line 4
SyntaxError: from __future__ imports must occur at the beginning of the file

当我键入 for 循环以获取雅虎财经数据并设置为数据帧时

for stock in tech_list:
    globals()[stock] = data.DataReader(stock,'yahoo',start,end)

我收到此错误

KeyError                                  Traceback (most recent call last)
F:Anaconda3Anacondalibsite-packagespandascoreindexesbase.py in get_loc(self, key, method, tolerance)
   2656             try:
-> 2657                 return self._engine.get_loc(key)
   2658             except KeyError:
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
KeyError: 'Date'
During handling of the above exception, another exception occurred:
KeyError                                  Traceback (most recent call last)
<ipython-input-23-6054597c5f52> in <module>
      1 for stock in tech_list:
----> 2     globals()[stock] = data.DataReader(stock,'yahoo',start,end)
F:Anaconda3Anacondalibsite-packagespandas_datareaderdata.py in DataReader(name, data_source, start, end, retry_count, pause, session, access_key)
    308                                 adjust_price=False, chunksize=25,
    309                                 retry_count=retry_count, pause=pause,
--> 310                                 session=session).read()
    311 
    312     elif data_source == "google":
F:Anaconda3Anacondalibsite-packagespandas_datareaderbase.py in read(self)
    208         if isinstance(self.symbols, (compat.string_types, int)):
    209             df = self._read_one_data(self.url,
--> 210                                      params=self._get_params(self.symbols))
    211         # Or multiple symbols, (e.g., ['GOOG', 'AAPL', 'MSFT'])
    212         elif isinstance(self.symbols, DataFrame):
F:Anaconda3Anacondalibsite-packagespandas_datareaderyahoodaily.py in _read_one_data(self, url, params)
    140         prices.columns = [col.capitalize() for col in prices.columns]
    141         prices['Date'] = to_datetime(
--> 142             to_datetime(prices['Date'], unit='s').dt.date)
    143 
    144         if 'Data' in prices.columns:
F:Anaconda3Anacondalibsite-packagespandascoreframe.py in __getitem__(self, key)
   2925             if self.columns.nlevels > 1:
   2926                 return self._getitem_multilevel(key)
-> 2927             indexer = self.columns.get_loc(key)
   2928             if is_integer(indexer):
   2929                 indexer = [indexer]
F:Anaconda3Anacondalibsite-packagespandascoreindexesbase.py in get_loc(self, key, method, tolerance)
   2657                 return self._engine.get_loc(key)
   2658             except KeyError:
-> 2659                 return self._engine.get_loc(self._maybe_cast_indexer(key))
   2660         indexer = self.get_indexer([key], method=method, tolerance=tolerance)
   2661         if indexer.ndim > 1 or indexer.size > 1:
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
KeyError: 'Date'

错误是因为您正在寻找错误的股票。对于苹果来说,它是AAPL,而不是APPL

import pandas as pd
from pandas_datareader import data
from datetime import datetime
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('whitegrid')
%matplotlib inline

tech_list = ['AAPL','GOOG','MSFT','AMZN']
end = datetime.now()
start = datetime(end.year -1, end.month, end.day)
stocks = {}
for stock in tech_list:
    #storing each dataframe in as a key value pair or else it will
    #overwrite the stock variable even if you define it as global var
    stocks[stock] = data.DataReader(stock,'yahoo',start,end)

最新更新