为了账号安全,请及时绑定邮箱和手机立即绑定

在 python 和 numpy/pandas 中处理数据

在 python 和 numpy/pandas 中处理数据

猛跑小猪 2022-10-06 19:34:13
所以我开始学习如何在 python 中处理数据。我想加载多个证券。但我有一个错误,由于某种原因我无法修复。有人可以告诉我有什么问题吗?import numpy as npimport pandas as pdfrom pandas_datareader import data as wbimport matplotlib.pyplot as plttickers = ['PG', 'MSFT', 'F', 'GE']mydata = pd.DataFrame()for t in tickers:    mydata[t] = wb.DataReader(t, data_source='yahoo', start = '1955-1-1')
查看完整描述

2 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

您需要在此处进行 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']



查看完整回答
反对 回复 2022-10-06
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

首先,除非绝对必要,否则请不要将信息作为图像共享。请参阅:此链接 现在这是您问题的解决方案。您使用的是“1955”年,但今年的数据可能不可用,或者可能存在其他问题。但是,当您选择正确的年份时,它将起作用。另一件事是将数据作为数据帧返回,因此您不能像字典一样分配它,因此您应该创建一个字典并将所有数据帧存储到其中,而不是创建一个 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


查看完整回答
反对 回复 2022-10-06
  • 2 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信