处理 python 和 numpy/pandas 中的数据
Work with data in python and numpy/pandas
所以我开始学习如何使用 python 中的数据。我想加载多种证券。但是我有一个错误,由于某种原因我无法修复。谁能告诉我问题出在哪里?
import numpy as np
import pandas as pd
from pandas_datareader import data as wb
import matplotlib.pyplot as plt
tickers = ['PG', 'MSFT', 'F', 'GE']
mydata = pd.DataFrame()
for t in tickers:
mydata[t] = wb.DataReader(t, data_source='yahoo', start = '1955-1-1')
首先,除非绝对必要,否则请不要以图片形式分享信息。
参见:this link
现在这里是您的问题的解决方案。您使用的是“1955”年,但今年的数据可能不可用,或者可能存在其他一些问题。但是当你 select 正确的年份时它就会起作用。另一件事是 returns 数据作为数据帧,所以你不能像字典一样分配它,所以你应该制作一个字典并将所有数据帧存储到其中,而不是制作一个 DataFram。
这里是改进代码慎选年份
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
这里需要 2 个修复:
1) 1955 年对于这个数据源来说太早了,试试 1971 年或以后的。
2) 来自 wb.DataReader(t, data_source='yahoo', start = '1971-1-1')
的数据来自多个系列的数据帧,因此您不能将其作为单个系列保存到 mydata[t]。使用其他答案中的字典或仅保存收盘价:
mydata[t] = pdr.data.DataReader(t, data_source='yahoo', start = '2010-1-1')['Close']
所以我开始学习如何使用 python 中的数据。我想加载多种证券。但是我有一个错误,由于某种原因我无法修复。谁能告诉我问题出在哪里?
import numpy as np
import pandas as pd
from pandas_datareader import data as wb
import matplotlib.pyplot as plt
tickers = ['PG', 'MSFT', 'F', 'GE']
mydata = pd.DataFrame()
for t in tickers:
mydata[t] = wb.DataReader(t, data_source='yahoo', start = '1955-1-1')
首先,除非绝对必要,否则请不要以图片形式分享信息。 参见:this link 现在这里是您的问题的解决方案。您使用的是“1955”年,但今年的数据可能不可用,或者可能存在其他一些问题。但是当你 select 正确的年份时它就会起作用。另一件事是 returns 数据作为数据帧,所以你不能像字典一样分配它,所以你应该制作一个字典并将所有数据帧存储到其中,而不是制作一个 DataFram。
这里是改进代码慎选年份
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
这里需要 2 个修复:
1) 1955 年对于这个数据源来说太早了,试试 1971 年或以后的。
2) 来自 wb.DataReader(t, data_source='yahoo', start = '1971-1-1')
的数据来自多个系列的数据帧,因此您不能将其作为单个系列保存到 mydata[t]。使用其他答案中的字典或仅保存收盘价:
mydata[t] = pdr.data.DataReader(t, data_source='yahoo', start = '2010-1-1')['Close']