新手的股票价格导入问题
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')
本周开始 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')