【问题标题】:Plotting a Pandas DataSeries.GroupBy绘制 Pandas DataSeries.GroupBy
【发布时间】:2013-04-28 21:00:19
【问题描述】:

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

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

尝试

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

数据帧

【问题讨论】:

    标签: python python-2.7 numpy scipy pandas


    【解决方案1】:

    您可以通过循环遍历来自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
    并用于循环分组对象:
    http://pandas.pydata.org/pandas-docs/stable/groupby.html#iterating-through-groups

    【讨论】:

    【解决方案2】:

    聚合示例:

    如果 pandas 具有 ggplot 之类的色彩美学,我想做类似以下的事情:

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

    (columns:model是字符串,training_examples是整数,accuracy是小数)

    但这只会造成混乱。

    感谢 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() 之后,当然.

    【讨论】:

      猜你喜欢
      • 2015-10-29
      • 2021-04-06
      • 2015-02-04
      • 2017-03-07
      • 1970-01-01
      • 1970-01-01
      • 2019-06-12
      • 2018-06-16
      • 2012-07-23
      相关资源
      最近更新 更多