2017-04-21 5 views
1

パンダから10年間データをインポートしたい。しかし、毎シーズンごとに輸入する必要があります。たとえば、2000年から2010年の春のすべてのデータ。何年もの間、パンダを通してデータをインポートする方法はありますか?

私は次のコードを持っていますが、これはシーズンを分けるものではありません。

import pandas_datareader.data as web 
import datetime 
start = datetime.datetime(2000, 1, 1) 
end = datetime.datetime(2010, 1, 1) 
f = web.DataReader("F", 'yahoo', start, end) 

とにかくありますか?

+0

すべてのデータを1つのデータフレームにインポートしてから、シーズンごとに分割します。 – DyZ

答えて

2

あなたは(変更されることが4月30日を通じて多分1月1日)春の数ヶ月をターゲットにしていると仮定すると、あなたは各tupleが与えられたyearためstartend日付を保持している日付tupleslistを作成することができます。たとえば、listの最初の要素は(datetime.datetime(2000, 1, 1, 0, 0), datetime.datetime(2000, 4, 30, 0, 0))となります。これは、日付tuplesのごlistを持っていたら、あなたがそれらを反復処理し、startend日付の組み合わせごとにデータを取り込むことができる2000年

で1月1日から4月30日になります。結果はlistにもなりますが、今度はlistpandas DataFramesになります。これを非常に簡単に連結して、目的のデータセットを得ることができます。以下は作業スクリプトとして機能するはずです:

import pandas_datareader.data as web 
import datetime 
import pandas as pd 


all_dates = [(datetime.datetime(year, 1, 1), datetime.datetime(year, 4, 30)) for year in range(2000, 2011)] 
f = pd.concat([web.DataReader("F", 'yahoo', start, end) for start, end in all_dates], axis=1) 

print(f.tail()) 

#    Close  Volume Adj Close 
# Date          
# 2010-04-26 14.46 123029200.0 11.684445 
# 2010-04-27 13.57 292667400.0 10.965278 
# 2010-04-28 13.25 208023500.0 10.706701 
# 2010-04-29 13.58 110114400.0 10.973358 
# 2010-04-30 13.02 146322900.0 10.520849 

私はこれが役立つことを望みます。

関連する問題