新手的股票价格导入问题

Stock price Import issue for a newbie

本周开始 python 的新手。我一直在毫无畏惧地阅读 Datacamp 和其他一些在线资源以及 Python。

我想测试看看我是否可以从互联网上导入一些数据价格和复制代码。由于错误,我无法让它工作:TypeError: string indices must be integers on line 10

import pandas_datareader as pdr #needed to read data from yahoo

#df = pdr.get_data_yahoo('AAPL')
#print (df.Close)

stock =('AAPL')
start_date = '2017-01-01'
end_date = '2017-12-10'

closes = [c['Close'] for c in pdr.get_data_yahoo(stock, start_date, 
end_date)]

for c in closes:
    print (c)

线关闭 = [c.......] 给我一个错误。

关于如何解决这个问题有什么建议吗?我正在开始我的旅程,实际上是在尝试导入 S&P500 过去一年的收盘价,然后将它们保存到 Excel。如果已经有一个片段可以做到这一点并且我可以从中学习,请告诉我。

谢谢大家

调用 get_data_yahoo returns 单个数据帧。

df = pdr.get_data_yahoo(stock, start_date, end_date)
df.head()

                  Open        High         Low       Close   Adj Close  \
Date                                                                     
2017-01-03  115.800003  116.330002  114.760002  116.150002  114.311760   
2017-01-04  115.849998  116.510002  115.750000  116.019997  114.183815   
2017-01-05  115.919998  116.860001  115.809998  116.610001  114.764473   
2017-01-06  116.779999  118.160004  116.470001  117.910004  116.043915   
2017-01-09  117.949997  119.430000  117.940002  118.989998  117.106812   

              Volume  
Date                  
2017-01-03  28781900  
2017-01-04  21118100  
2017-01-05  22193600  
2017-01-06  31751900  
2017-01-09  33561900  

type(df)
pandas.core.frame.DataFrame

与此同时,您正在尝试迭代此返回的数据框。默认情况下,for 循环将遍历列。例如:

for c in df:
    print(c)

Open
High
Low
Close
Adj Close
Volume

当您在列表组合中复制此代码时,c 依次给出每个列名称,str[str] 是无效操作。

综上所述,只需对返回结果进行closes = df['Closes']即可得到Closes列。

我认为您只是想将数据框转储到 Excel 电子表格中。这会让你到达那里。

import pandas as pd
import pandas_datareader as pdr

df = pdr.get_data_yahoo('AAPL')
df.head(2)

Out[12]:
                 Open       High    Low      Close  Adj Close     Volume
Date
2009-12-31  30.447144  30.478571  30.08  30.104286  26.986492   88102700
2010-01-04  30.490000  30.642857  30.34  30.572857  27.406532  123432400

df.to_excel('dump_aapl.xlsx')

如果您只想要关闭列:

df['Close'].to_excel('dump_aapl.xlsx')