21

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

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

试图

data[40:76].groupby('ModelID').plot()

在此处输入图像描述

数据框

在此处输入图像描述

4

2 回答 2

32

您可以通过遍历来自的组来制作图groupby

import matplotlib.pyplot as plt

for title, group in df.groupby('ModelID'):
    group.plot(x='saleDate', y='MeanToDate', title=title)

有关使用 pandas 数据帧进行绘图的更多信息,请参阅:http:
//pandas.pydata.org/pandas-docs/stable/visualization.html
以及在 groupby-object 上循环:http:
//pandas.pydata.org/pandas- docs/stable/groupby.html#iterating-through-groups

于 2013-05-04T18:05:32.577 回答
10

聚合示例:

如果熊猫有像ggplot这样的色彩美学,我想做如下的事情:

aggregated = df.groupby(['model', 'training_examples']).aggregate(np.mean)
aggregated.plot(x='training_examples', y='accuracy', label='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)

我发现这title=只是在每次循环迭代中替换了绘图的单个标题,但label=确实符合您的预期——当然是运行之后plt.legend()

于 2014-03-13T03:49:28.663 回答