Python 熊猫数据帧中每个周期的一个图
从.csv创建一个数据帧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
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)