Plotting a Pandas DataSeries.GroupBy
You can make the plots by looping over the groups from groupby
:
import matplotlib.pyplot as pltfor title, group in df.groupby('ModelID'): group.plot(x='saleDate', y='MeanToDate', title=title)
See for more information on plotting with pandas dataframes:
http://pandas.pydata.org/pandas-docs/stable/visualization.html
and for looping over a groupby-object:
http://pandas.pydata.org/pandas-docs/stable/groupby.html#iterating-through-groups
Example with aggregation:
I wanted to do something like the following, if pandas had a colour aesthetic like ggplot:
aggregated = df.groupby(['model', 'training_examples']).aggregate(np.mean)aggregated.plot(x='training_examples', y='accuracy', label='model')
(columns: model is a string, training_examples is an integer, accuracy is a decimal)
But that just produces a mess.
Thanks to joris's answer, I ended up with:
for index, group in df.groupby(['model']): group_agg = group.groupby(['training_examples']).aggregate(np.mean) group_agg.plot(y='accuracy', label=index)
I found that title=
was just replacing the single title of the plot on each loop iteration, but label=
does what you'd expect -- after running plt.legend()
, of course.