Je suis nouveau sur python et pandas, et j'ai les DataFrame
suivants.
Comment puis-je tracer le DataFrame
où chaque ModelID
est un tracé séparé, saledate
est l'axe des x et MeanToDate
est l'axe des y?
Tentative
data[40:76].groupby('ModelID').plot()
DataFrame
Vous pouvez faire les tracés en faisant une boucle sur les groupes à partir de groupby
:
import matplotlib.pyplot as plt
for title, group in df.groupby('ModelID'):
group.plot(x='saleDate', y='MeanToDate', title=title)
Voir pour plus d'informations sur le traçage avec pandas dataframes:
http://pandas.pydata.org/pandas-docs/stable/visualization.html
et pour faire une boucle sur un objet groupby:
http://pandas.pydata.org/pandas-docs/stable/groupby.html#iterating-through-groups
Exemple avec agrégation:
Je voulais faire quelque chose comme ceci, si pandas avait une esthétique de couleur comme ggplot:
aggregated = df.groupby(['model', 'training_examples']).aggregate(np.mean)
aggregated.plot(x='training_examples', y='accuracy', label='model')
(colonnes: le modèle est une chaîne, training_examples est un entier, la précision est une décimale)
Mais cela produit juste un gâchis.
Grâce à la réponse de joris, je me suis retrouvé avec:
for index, group in df.groupby(['model']):
group_agg = group.groupby(['training_examples']).aggregate(np.mean)
group_agg.plot(y='accuracy', label=index)
J'ai trouvé que title=
Remplaçait simplement le titre unique de l'intrigue à chaque itération de boucle, mais label=
Fait ce que vous attendez - après exécutant plt.legend()
, bien sûr.