Разделите разные DataFrames на том же рисунке
У меня есть файл температуры с многолетними температурными записями в формате, указанном ниже:
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
Каждый год имеет разные числа, время записей, поэтому теги datetime pandas все разные.
Я хочу построить разные данные за один год для сравнения. Ось X - от января до декабря, ось Y - температура. Как мне это сделать?
Ответы
Ответ 1
Хотя ответ Чанга объясняет, как много раз рисовать на одном рисунке, в этом случае вам может быть лучше в этом случае с помощью groupby
и unstack
ing:
(Предположим, что у вас есть это в dataframe, с индексом datetime уже)
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()
Ответ 2
Try:
ax = df1.plot()
df2.plot(ax=ax)
Ответ 3
Если у вас работает ноутбук Jupyter/Ipython и возникают проблемы с использованием;
ax = df1.plot()
df2.plot(ax=ax)
Запустите команду внутри одной и той же ячейки! По какой-то причине это не работает, когда они разделяются на последовательные ячейки. По крайней мере для меня.
Ответ 4
Чтобы сделать это для нескольких фреймов данных, вы можете сделать для них цикл:
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)