Python 熊猫数据帧中每个周期的一个图

Python 熊猫数据帧中每个周期的一个图,python,pandas,dataframe,matplotlib,Python,Pandas,Dataframe,Matplotlib,从.csv创建一个数据帧 dfi = pd.read_csv('dfi.csv') dfi['date'] = pd.to_datetime(dfi['date']) dfi = dfi.set_index('date') dfi Out[181]: value date 2019-09-19 a 2019-09-19 a 2019-09-25 b 2019-09-11 a 2019-09-19 a

从.csv创建一个数据帧

dfi = pd.read_csv('dfi.csv')
dfi['date'] = pd.to_datetime(dfi['date'])
dfi = dfi.set_index('date')

dfi
Out[181]: 
           value
date            
2019-09-19     a
2019-09-19     a
2019-09-25     b
2019-09-11     a
2019-09-19     a
         ...
2019-09-19     a
2019-09-11     a
2019-09-19     a
2019-09-16     a
2019-09-11     a

[100 rows x 1 columns]
我可以绘出每个值的发生情况

dfi['value'].value_counts().plot.bar()

我还可以通过这样做得到每个周期的计数

dfi.to_period(myPeriod).groupby('date')['value'].value_counts()
Out[183]: 
date                   value
2019-09-09/2019-09-15  a        32
2019-09-16/2019-09-22  a        49
                       b         1
                       d         1
2019-09-23/2019-09-29  a        11
                       b         3
                       d         2
                       c         1
Name: value, dtype: int64
但我无法获得每个时期的绘图。我自然的猜测是

dfi.to_period(myPeriod).groupby('date')['value'].value_counts().plot.bar()

将类别替换为(期间、值)

如何为每个时段获取一个直方图?

您可以将值放入交叉表中,并在plot函数中使用
子批次
参数,如第三个示例所示:

您可以将值输入交叉表,并在绘图函数中使用
子绘图
参数,如第三个示例所示:

dfi.to_period("W").groupby('date')['value'].value_counts().unstack(0).plot.bar(subplots=True, legend=None, rot=0)