一尘不染

在同一图中绘制不同的数据框

python

我有一个具有多年温度记录的温度文件,格式如下:

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

每年的记录数量和时间不同,因此熊猫的datetimeindices都不同。

我想在同一图中绘制不同年份的数据以进行比较。X轴为1月至12月,Y轴为温度。我应该怎么做呢?


阅读 177

收藏
2021-01-20

共1个答案

一尘不染

尽管Chang的答案说明了如何在同一图形上多次绘制,但是在这种情况下,使用agroupbyunstacking可能会更好:

(假设您已经在数据框中使用了日期时间索引)

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()
2021-01-20