1. ホーム
  2. python

[解決済み] 異なるDataFrameを同じ図にプロットする

2022-08-14 14:20:28

質問

何年分もの気温の記録を持つ、以下のような形式の温度ファイルがあります。

2012-04-12,16:13:09,20.6
2012-04-12,17:13:09,20.9
2012-04-12,18:13:09,20.6
2007-05-12,19:13:09,5.4
2007-05-12,20:13:09,20.6
2007-05-12,20:13:09,20.6
2005-08-11,11:13:09,20.6
2005-08-11,11:13:09,17.5
2005-08-13,07:13:09,20.6
2006-04-13,01:13:09,20.6

年ごとに数字、記録の時刻が違うので、pandasのdatetimeindicesは全部違う。

比較のために、異なる年のデータを同じ図にプロットしたい。X軸は1月から12月まで、Y軸は温度です。どのようにすればよいでしょうか?

どのように解決するのですか?

Changさんの回答では、同じ図に複数回プロットする方法が説明されていますが、この場合は groupby unstack になっています。

(すでにdatetimeインデックスを持つdataframeにこれがあると仮定して)

In [1]: df
Out[1]:
            value  
datetime                         
2010-01-01      1  
2010-02-01      1  
2009-01-01      1  

# create additional month and year columns for convenience
df['Month'] = map(lambda x: x.month, df.index)
df['Year'] = map(lambda x: x.year, df.index)    

In [5]: df.groupby(['Month','Year']).mean().unstack()
Out[5]:
       value      
Year    2009  2010
Month             
1          1     1
2        NaN     1

これでプロットしやすくなりました(各年を別々の線として)。

df.groupby(['Month','Year']).mean().unstack().plot()