J'ai un fichier de température avec des enregistrements de température de nombreuses années, dans un format comme ci-dessous:
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
Chaque année a des numéros différents, l'heure des enregistrements, donc les pandas datetimeindices sont tous différents.
Je veux tracer les données de l'année différente dans le même chiffre pour la comparaison. L'axe des X est compris entre janvier et décembre, l'axe des Y est la température. Comment devrais-je m'y prendre?
Bien que la réponse de Chang explique comment tracer plusieurs fois le même chiffre sur le même graphique, dans ce cas, il serait peut-être préférable d'utiliser un groupby
et unstack
ing:
(En supposant que cela se trouve dans le cadre de données, avec déjà l'index 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
Maintenant, il est facile de tracer (chaque année sur une ligne séparée):
df.groupby(['Month','Year']).mean().unstack().plot()
Essayer:
ax = df1.plot()
df2.plot(ax=ax)
Si vous utilisez un bloc-notes Jupyter/Ipython en cours d’exécution et que vous rencontrez des problèmes d’utilisation;
ax = df1.plot()
df2.plot(ax=ax)
Exécutez la commande à l'intérieur de la même cellule! Cela ne fonctionnera pas, pour une raison quelconque, quand ils sont séparés en cellules séquentielles. Pour moi au moins.
Pour ce faire pour plusieurs images, vous pouvez effectuer une boucle for sur elles:
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)