Python 在一个绘图中绘制多个时间序列

Python 在一个绘图中绘制多个时间序列,python,pandas,datetime,time-series,timeserieschart,Python,Pandas,Datetime,Time Series,Timeserieschart,我想在一个绘图中绘制多个时间序列(de列cat中的每个值对应一个时间序列),但还没有向ho这样做。到目前为止,我的代码是: import numpy as np import pandas as pd dat = pd.date_range(start='1/1/2018', end='31/12/2018', freq='H') num = ['A' + str(x).zfill(4) for x in range(len(dat))] cat = np.random.choice(['A'

我想在一个绘图中绘制多个时间序列(de列
cat
中的每个值对应一个时间序列),但还没有向ho这样做。到目前为止,我的代码是:

import numpy as np
import pandas as pd

dat = pd.date_range(start='1/1/2018', end='31/12/2018', freq='H')
num = ['A' + str(x).zfill(4) for x in range(len(dat))]
cat = np.random.choice(['A', 'B', 'C', 'D'], len(dat))

df = pd.DataFrame({'date': dat, 'num': num, 'cat':cat}).set_index('date')

print(df.groupby([pd.Grouper(freq='D'), 'cat']).count().unstack().fillna(0).astype(int))
结果:

           num            
cat          A   B   C   D
date                      
2018-01-01   7   3   5   9
2018-01-02   6   3   6   9
2018-01-03  11   3   8   2
2018-01-04   2   6   5  11
2018-01-05   4   8   4   8
2018-01-06   8   8   3   5
2018-01-07   5   8   6   5
2018-01-08   3   8   5   8
我想用
matplotlib
seaborn
在一个时间序列中绘制不同的类别组合(
cat
),例如(
A
B
在一起或
C
D
在一起),但在de多级索引中“卡住”


有没有关于如何选择不同的列组合并绘制它们的建议?也许有一种更好的方法比
unstack
数据更好。

是的,最好是在列中避免
多索引

df1 = df.groupby([pd.Grouper(freq='D'), 'cat'])['num'].count().unstack(fill_value=0)
或:

然后绘制:

df1[['A','B']].plot()

如果您使用的是pandas
0.24+
,则可以在
上链接.droplevel(0,axis=1)
以消除冗余索引级别
df1[['A','B']].plot()