绘制Pandas DataSeries.GroupBy

Nyx*_*nyx 18 python numpy scipy python-2.7 pandas

我是python和pandas的新手,并且有以下内容DataFrame.

如何绘制DataFrame每个ModelID单独的图的位置,saledate是x轴并且MeanToDate是y轴?

尝试

data[40:76].groupby('ModelID').plot()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

数据帧

在此输入图像描述

jor*_*ris 24

您可以通过循环遍历以下组来制作绘图groupby:

import matplotlib.pyplot as plt

for title, group in df.groupby('ModelID'):
    group.plot(x='saleDate', y='MeanToDate', title=title)
Run Code Online (Sandbox Code Playgroud)

有关使用pandas数据框绘图的更多信息,请参阅:
http://pandas.pydata.org/pandas-docs/stable/visualization.html
以及循环遍历groupby-object:http:
//pandas.pydata.org/pandas-文档/稳定/ groupby.html#迭代,通组

  • 即使首先没有'plt.figure()`,这些图也会显示在独立的数字上. (2认同)

chb*_*own 10

聚合示例:

如果pandas有像ggplot这样的颜色审美,我想做类似下面的事情:

aggregated = df.groupby(['model', 'training_examples']).aggregate(np.mean)
aggregated.plot(x='training_examples', y='accuracy', label='model')
Run Code Online (Sandbox Code Playgroud)

(列:model是一个字符串,training_examples是一个整数,精度是十进制)

但这只会产生一团糟.

感谢joris的回答,我最终得到了:

for index, group in df.groupby(['model']):
    group_agg = group.groupby(['training_examples']).aggregate(np.mean)
    group_agg.plot(y='accuracy', label=index)
Run Code Online (Sandbox Code Playgroud)

我发现这title=只是在每个循环迭代中替换了单个标题的情节,但是label=当你运行之后,它会做你所期望plt.legend()的.