2016-11-11 14 views
2

私は既にPandasデータフレームにデータを読み込んでいます。Pythonは、データフレームの毎日のデータを毎月および四半期ごとに集計します

例:

Date  Price 
2012/12/02 141.25 
2012/12/05 132.64 
2012/12/06 132.11 
2012/12/21 141.64              
2012/12/25 143.19 
2012/12/31 139.66 
2013/01/05 145.11 
2013/01/06 145.99 
2013/01/07 145.97 
2013/01/11 145.11 
2013/01/12 145.99 
2013/01/24 145.97 
2013/02/23 145.11 
2013/03/24 145.99 
2013/03/28 145.97 
2013/04/28 145.97 
2013/05/24 145.97 
2013/06/23 145.11 
2013/07/24 145.99 
2013/08/28 145.97 
2013/09/28 145.97 

ちょうど2列、1がデータであり、もう1つは価格です。

データをグループ化または再サンプリングする方法は、2013年から毎月および四半期ごとに開始されますか?

月:

Date  Price 
2013/01/01 Monthly total 
2013/02/01 Monthly total 
2013/03/01 Monthly total 
2013/04/01 Monthly total 
2013/05/01 Monthly total 
2013/06/01 Monthly total 
2013/07/01 Monthly total 
2013/08/01 Monthly total 
2013/09/01 Monthly total 

四半期:

Date  Price 
2013/01/01 Quarterly total 
2013/04/01 Quarterly total 
2013/07/01 Quarterly total 

月次及び四半期データは、月の最初の日から開始する必要がありますが、元のデータフレームに月のデータの最初の日であることに注意してください毎月の有効な1日のデータ量が異なる可能性があります。元データフレームは2012年から2013年までのデータを持っている。また、私は私が

result1 = df.groupby([lambda x: x.year, lambda x: x.month], axis=1).sum() 

のようなものを試してみましたが、動作しません。2013年

の初めから月次や四半期ごとのデータを必要としています。

ありがとうございました!

答えて

6

まず日時インデックスにあなたの日付列を変換:

df.Date = pd.to_datetime(df.Date) 
df.set_index('Date', inplace=True) 

その後resampleを使用しています。オフセットエイリアスのリストはpandas documentationです。以下のために、月の再サンプリングの開始MSを使用し、四半期のQS

df.resample('QS').sum() 
Out[46]: 
       Price 
Date    
2012-10-01 830.49 
2013-01-01 1311.21 
2013-04-01 437.05 
2013-07-01 437.93 

df.resample('MS').sum() 
Out[47]: 
      Price 
Date    
2012-12-01 830.49 
2013-01-01 874.14 
2013-02-01 145.11 
2013-03-01 291.96 
2013-04-01 145.97 
2013-05-01 145.97 
2013-06-01 145.11 
2013-07-01 145.99 
2013-08-01 145.97 
2013-09-01 145.97 
+0

ファンタスティック!!私はgroupby関数、ラムダ式で2日間苦労した...ありがとう! – Windtalker

+0

これを与えると、重複した日付があると、df.set_indexはまだ動作しますか?または、重複データのデータを最初に処理する必要がありますか? – Windtalker

+0

それは問題ではありません、試してみて、サンプルの日付を変更して偽装を取得すると、すべてが期待どおりに動作することがわかります。 – Boud