2 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個贊
您需要在此處進(jìn)行 2 個修復(fù):1) 1955 年對于此數(shù)據(jù)源來說為時過早,請嘗試 1971 年或更高版本。2)您的數(shù)據(jù)來自wb.DataReader(t, data_source='yahoo', start = '1971-1-1')
具有多個系列的數(shù)據(jù)框,因此您不能將其保存到 mydata[t] 作為單個系列。在其他答案中使用字典或僅保存收盤價: mydata[t] = pdr.data.DataReader(t, data_source='yahoo', start = '2010-1-1')['Close']

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個贊
首先,除非絕對必要,否則請不要將信息作為圖像共享。請參閱:此鏈接 現(xiàn)在這是您問題的解決方案。您使用的是“1955”年,但今年的數(shù)據(jù)可能不可用,或者可能存在其他問題。但是,當(dāng)您選擇正確的年份時,它將起作用。另一件事是將數(shù)據(jù)作為數(shù)據(jù)幀返回,因此您不能像字典一樣分配它,因此您應(yīng)該創(chuàng)建一個字典并將所有數(shù)據(jù)幀存儲到其中,而不是創(chuàng)建一個 DataFram。
這是改進(jìn)的代碼仔細(xì)選擇年份
import numpy as np
import pandas as pd
from pandas_datareader import data as wb
import matplotlib.pyplot as plt
from datetime import datetime as dt
tickers = ['PG', 'MSFT', 'F', 'GE']
mydata = {}
for t in tickers:
mydata[t] = wb.DataReader(t, data_source='yahoo',start=dt(2019, 1, 1), end=dt.now())
輸出
mydata['PG']
High Low Open Close Volume Adj Close
Date
2018-12-31 92.180000 91.150002 91.629997 91.919998 7239500.0 88.877655
2019-01-02 91.389999 89.930000 91.029999 91.279999 9843900.0 88.258835
2019-01-03 92.500000 90.379997 90.940002 90.639999 9820200.0 87.640022
2019-01-04 92.489998 90.370003 90.839996 92.489998 10565700.0 89.428787
添加回答
舉報