【问题标题】:Plotting bar graph by month - matplotlib按月绘制条形图 - matplotlib
【发布时间】:2018-12-09 05:35:50
【问题描述】:

我有一个格式如下的数据集:

Date        A   B   C
01/04/2012  2   5   Y
05/04/2012  3   4   Y
06/05/2012  7   6   Y
09/05/2012  8   2   N
11/05/2012  1   4   Y
15/06/2012  5   4   Y

随着更多的行继续。

我想绘制一个条形图,底部轴上的日期转换为仅显示月份(即 4 月、5 月、7 月),然后在 y 轴上我想要 A 和 B 列总和的平均值因此,4 月份将是 7(两个实例共 14 个),5 月将是 9.33(3 个实例共 28 个)。

我真的很困惑如何做到这一点,我不想创建另一个汇总 A 和 B 的列。

【问题讨论】:

    标签: python pandas matplotlib


    【解决方案1】:

    您可以在month_name 上使用groupby,然后在mean+eval 上使用:

    df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
    df.groupby([df['Date'].dt.month_name()], sort=False).mean().eval('A+B')\
      .plot(kind='bar')
    


    print(df.groupby([df['Date'].dt.month_name()], sort=False).mean().eval('A+B'))
    Date
    April    7.000000
    May      9.333333
    June     9.000000
    dtype: float64
    

    【讨论】:

    • 谢谢,效果很好,但有一个小问题,因为飞蛾按字母顺序出现,但我希望它们按月顺序排列。
    猜你喜欢
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 2018-03-10
    • 2018-11-26
    • 1970-01-01
    • 2022-11-10
    • 2017-06-30
    • 1970-01-01
    相关资源
    最近更新 更多