I am new to python and pandas, and have the following
How can I plot the
DataFrame where each
ModelID is a separate plot,
saledate is the x-axis and
MeanToDate is the y-axis?
You can make the plots by looping over the groups from
import matplotlib.pyplot as plt for title, group in df.groupby('ModelID'): group.plot(x='saleDate', y='MeanToDate', title=title)
See for more information on plotting with pandas dataframes:
and for looping over a groupby-object:
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.