为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

胡说叔叔 2019-10-28 09:53:15
我有一个具有多年温度记录的温度文件,格式如下:2012-04-12,16:13:09,20.62012-04-12,17:13:09,20.92012-04-12,18:13:09,20.62007-05-12,19:13:09,5.42007-05-12,20:13:09,20.62007-05-12,20:13:09,20.62005-08-11,11:13:09,20.62005-08-11,11:13:09,17.52005-08-13,07:13:09,20.62006-04-13,01:13:09,20.6每年的记录数量和时间都不同,因此熊猫的datetimeindices都不同。我想在同一图中绘制不同年份的数据以进行比较。X轴为1月至12月,Y轴为温度。我应该怎么做呢?
查看完整描述

3 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

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


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


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()


查看完整回答
反对 回复 2019-10-28
?
绝地无双

TA贡献1946条经验 获得超4个赞

如果您正在运行Jupyter / Ipython笔记本并且在使用时遇到问题;


ax = df1.plot()


df2.plot(ax=ax)


在同一单元格内运行命令!由于某些原因,当它们分成顺序的单元格时,它将无法工作。至少对我来说。


查看完整回答
反对 回复 2019-10-28
?
BIG阳

TA贡献1859条经验 获得超6个赞

要对多个数据框执行此操作,可以对其进行for循环:


fig = plt.figure(num=None, figsize=(10, 8))

ax = dict_of_dfs['FOO'].column.plot()

for BAR in dict_of_dfs.keys():

    if BAR == 'FOO':

        pass

    else:

        dict_of_dfs[BAR].column.plot(ax=ax)


查看完整回答
反对 回复 2019-10-28
  • 3 回答
  • 0 关注
  • 339 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信