pandas 如果API不工作,那么有什么替代方法来解决这个问题并通过df.head()显示数据呢

zpgglvta  于 2023-05-12  发布在  其他
关注(0)|答案(1)|浏览(66)
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import pandas_datareader as data
import yfinance 
start = '2010-01-01'
end = '2019-12-31'

df = data.DataReader('AAPL','yahoo', start, end)
df.head()

我正在解决这个问题,通过使用雅虎,但它是不工作的任何其他方式,通过它,我可以得到现场数据集

fbcarpbf

fbcarpbf1#

按照官方文档中的一个示例查询API,会返回与您的代码相同的错误(见下文)。在source code中,错误发生在YahooDailyReader类的一个名为_read_one_data的方法中(函数从第142行开始);**换句话说,很有可能是软件包被破坏了,如果不是这样,你的代码会工作得很好。**此外,根据pypi上的信息,pandas-datareader已经近2年没有更新了!!
我建议你用另一种方法。yfinance package几周前刚刚更新过。希望这有帮助!
来自pandas-datareader文档的代码:

import pandas_datareader.data as web
import pandas as pd

df = web.DataReader('GE', 'yahoo', start='2019-09-10', end='2019-10-09')

df.head()

给出此错误

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-1-f498884a1d78> in <cell line: 4>()
      2 import pandas as pd
      3 
----> 4 df = web.DataReader('GE', 'yahoo', start='2019-09-10', end='2019-10-09')
      5 
      6 df.head()

3 frames
/usr/local/lib/python3.10/dist-packages/pandas_datareader/yahoo/daily.py in _read_one_data(self, url, params)
    151         try:
    152             j = json.loads(re.search(ptrn, resp.text, re.DOTALL).group(1))
--> 153             data = j["context"]["dispatcher"]["stores"]["HistoricalPriceStore"]
    154         except KeyError:
    155             msg = "No data fetched for symbol {} using {}"

TypeError: string indices must be integers

相关问题