Pythonでパンダを使って日次株価データを週次ベースに変換する 質問する

Pythonでパンダを使って日次株価データを週次ベースに変換する 質問する

DataFrame以下のような日次データを保存しています。

Date              Open        High         Low       Close   Volume
2010-01-04   38.660000   39.299999   38.509998   39.279999  1293400   
2010-01-05   39.389999   39.520000   39.029999   39.430000  1261400   
2010-01-06   39.549999   40.700001   39.020000   40.250000  1879800   
2010-01-07   40.090000   40.349998   39.910000   40.090000   836400   
2010-01-08   40.139999   40.310001   39.720001   40.290001   654600   
2010-01-11   40.209999   40.520000   40.040001   40.290001   963600   
2010-01-12   40.160000   40.340000   39.279999   39.980000  1012800   
2010-01-13   39.930000   40.669998   39.709999   40.560001  1773400   
2010-01-14   40.490002   40.970001   40.189999   40.520000  1240600   
2010-01-15   40.570000   40.939999   40.099998   40.450001  1244200   

私がやろうとしているのは、それを週単位のデータに統合することです。グループ化後:

  1. 日付毎週月曜日にする必要があります (この時点で、月曜日が取引日でない場合は休日のシナリオを考慮する必要があり、現在の週の最初の取引日を日付として適用する必要があります)。
  2. 開ける月曜日(または今週の最初の取引日)の始値である必要があります。
  3. 近い金曜日(または今週の最終取引日)の終値になります。
  4. 高い今週の取引日の中で最高値となるはずです。
  5. 低い今週の取引日の中で最も低い安値となるはずです。
  6. ボリューム現在の週の取引日の全取引量の合計になります。

次のようになります:

Date              Open        High         Low       Close   Volume
2010-01-04   38.660000   40.700001   38.509998   40.290001  5925600   
2010-01-11   40.209999   40.970001   39.279999   40.450001  6234600   

現在、私のコード スニペットは以下のとおりですが、日次ベースのデータを予想される週次ベースのデータにマッピングするにはどの関数を使用すればよいでしょうか? よろしくお願いします。

import pandas_datareader.data as web

start = datetime.datetime(2010, 1, 1)
end = datetime.datetime(2016, 12, 31)
f = web.DataReader("MNST", "yahoo", start, end, session=session)
print f

ベストアンサー1

次のようresampleに (週単位)、offset(シフト)、および集計ルールを設定できます。apply

logic = {'Open'  : 'first',
         'High'  : 'max',
         'Low'   : 'min',
         'Close' : 'last',
         'Volume': 'sum'}

offset = pd.offsets.timedelta(days=-6)

f = pd.read_clipboard(parse_dates=['Date'], index_col=['Date'])
f.resample('W', loffset=offset).apply(logic)

取得するため:

                 Open       High        Low      Close   Volume
Date                                                           
2010-01-04  38.660000  40.700001  38.509998  40.290001  5925600
2010-01-11  40.209999  40.970001  39.279999  40.450001  6234600

おすすめ記事