我在 pandas_DataReader 和 yfinance 中遇到错误

问题描述 投票:0回答:1

这些是我导入的库

import math
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import pandas_datareader as web
import datetime as dt

import yfinance as yf
from sklearn.preprocessing import MinMaxScaler
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Dense, Dropout, LSTM

这些是发生错误的行

 # load Data
    company = 'fb'
    start = dt.datetime(2012, 1, 1)
    end = dt.datetime(2020, 1, 1)

    df = yf.download(tickers=['^GSPC'], start=start, end=end)
    data = web.DataReader(company, 'yahoo', start, end)

这些是我收到的错误列表:

    C:\ProgramData\Anaconda3\envs\pythonProject\python.exe F:\pythonProject\main.py 
    [*********************100%***********************]  1 of 1 completed
    Traceback (most recent call last):
      File "F:\pythonProject\main.py", line 19, in <module>
        data = web.DataReader(company, 'yahoo', start, end)
      File "C:\Users\Deepanshu\AppData\Roaming\Python\Python310\site-packages\pandas\util\_decorators.py",      line 211, in wrapper
        return func(*args, **kwargs)`your text`
      File "C:\ProgramData\Anaconda3\envs\pythonProject\lib\site-packages\pandas_datareader\data.py", line 379, in DataReader
    ).read()
      File "C:\ProgramData\Anaconda3\envs\pythonProject\lib\site-packages\pandas_datareader\base.py", line 253, in read
        df = self._read_one_data(self.url, params=self._get_params(self.symbols))
      File "C:\ProgramData\Anaconda3\envs\pythonProject\lib\site-packages\pandas_datareader\yahoo\daily.py", line 153, in _read_one_data
        data = j["context"]["dispatcher"]["stores"]["HistoricalPriceStore"]
TypeError: string indices must be integers

    Process finished with exit code 1

这是我编写的预测股票价格的程序。我正在 pycharm IDE 中编写这个程序。我添加了 yfinance 库,但每次运行时都会遇到相同的错误。

python pandas yahoo-finance
1个回答
0
投票

我希望它对你有用。请添加 yf.pdr_override() 来解决问题,fb 是元

import math
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import pandas_datareader.data as web
import datetime as dt

import yfinance as yf

yf.pdr_override() # add this 

df = yf.download(tickers=['^GSPC'], start="2017-01-01", end="2017-04-30")

# fb is meta 
data = web.DataReader('META', start = dt.datetime(2012, 1, 1), end = dt.datetime(2020, 1, 1))
print(df.head(5))
print("=================================")
print(data.head(5))
print()
© www.soinside.com 2019 - 2024. All rights reserved.