首页 文章

Matplotlib甚至频率按月条形图分类

提问于
浏览
0

我想创建一个条形图,其中 x-axis 表示月份,条形图的高度与输入到本月日期列表中的天数成比例 . 我想动态更新列表,然后程序应该在扩展此列表时更新图表 .

我可以创建一个日期列表如下:

import matplotlib.pyplot as plt
import datetime

dates =  [datetime.date(2015,01,05),
          datetime.date(2015,01,18),
          datetime.date(2015,01,25),
          datetime.date(2015,02,18),
          datetime.date(2015,03,07),
          datetime.date(2015,03,27),]

如果我运行脚本,我希望看到类似的东西:

enter image description here

这是我手动绘制的 .

我知道可以使用循环来运行日期列表,如果日期的月份对应等,则使用if语句手动汇总日期 . 但我希望在python / matplotlib中有一些更自动化的方法 .

1 回答

  • 2

    您可以使用pandas:

    import pandas as pd
    import datetime
    
    dates =  [datetime.date(2015,01,05),
              datetime.date(2015,01,18),
              datetime.date(2015,01,25),
              datetime.date(2015,02,18),
              datetime.date(2015,03,07),
              datetime.date(2015,03,27),]
    
    df = pd.DataFrame({'dates':dates})
    df.dates = pd.to_datetime(df.dates)
    
    df.groupby(df.dates.dt.month).count().plot(kind='bar')
    

    得到:

    enter image description here

    df.dates.dt.month 正在获得每个月的月份 . 你可以用同样的方式按天,年等分组 .

相关问题