2017-12-21 6 views
0

今週のpythonで始まった初心者の初心者。私はDatacampといくつかの他のオンラインリソースとPythonを恐れなく読んでいます。株価初心者のためのインポート問題

インターネットからいくつかのデータ価格とコピーされたコードをインポートできるかどうか試してみたかったのです。私はそれがエラーのために動作させることはできません:TypeError例外:文字列のインデックスはライン上の整数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に保存しようとしています。既にこれを行うスニペットがあり、私が学ぶことができる場合は、私に知らせてください。

ありがとうございます。

+0

をあなたは –

答えて

1

get_data_yahooを呼び出すと、単一のデータフレームが返されます。

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列を取得するだけで十分です。

+0

感謝を見ているエラーメッセージを投稿してください! S&P 500の過去3年間の終値をダウンロードしたい場合は、ループを実行してDataFrameに追加する必要がありますか? get_data_yahoo以外のYahooへの呼び出しがあり、これは500株のリストの終値のx日間を返しますか? – Confusedxx

+0

@ConfusedxxこのAPIに関する私の知識はここで終わります...あなたは新しい質問をしたいかもしれません。がんばろう! –

0

私はあなたが単に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')