Python 绘制多级groupby数据框的条形图

Python 绘制多级groupby数据框的条形图,python,pandas,matplotlib,charts,Python,Pandas,Matplotlib,Charts,使用groupby方法 df=Al[[‘连接名称’、‘UAS-RS’、‘SES-RS’、‘OFS-RS’、‘ES-RS’、‘BBE-RS’、‘日期’、‘报警类型’]] cols=['连接名称','日期','报警类型'] df.maskdf==0,np.nan.groupbycols[['UAS-RS','SES-RS','OFS-RS','ES-RS','BBE-RS'].计数 我得到了下表: 最初的表格有这样一种结构: | ConName | Date | Alarm

使用groupby方法

df=Al[[‘连接名称’、‘UAS-RS’、‘SES-RS’、‘OFS-RS’、‘ES-RS’、‘BBE-RS’、‘日期’、‘报警类型’]] cols=['连接名称','日期','报警类型'] df.maskdf==0,np.nan.groupbycols[['UAS-RS','SES-RS','OFS-RS','ES-RS','BBE-RS'].计数 我得到了下表:

最初的表格有这样一种结构:

       | ConName |   Date   | Alarm | ETH1 | ETH2 | ETH 3|
       | AR21    | 25-01-19 |  AL1  |   1  |   0  |   3  |  
       | AR22    | 25-01-19 |  AL2  |   0  |   0  |   1  |
       | AR23    | 26-01-19 |  AL1  |   1  |   1  |   0  |  
       | AR21    | 26-01-19 |  AL2  |   0  |   1  |   0  |  
问题 我想为每个连接名构建条形图,描述两种报警类型之间的功能分布

我得到的是: 所需输出: 我的上一个代码仅用于构建一个连接名称的绘图: 对于df中的日期[df['Connection Name']=='AR-CY18 A2.5G-RTA33']['date']: df.maskdf==0,np.nan.groupby'Alarm Type'[['UAS-RS','SES-RS','OFS-RS','ES-RS','BBE-RS']].count.plotkind='bar',stacked=True,subplot=True 此外,问题是,该脚本在第77个绘图上按日期构建了多个绘图,并具有相同的输出

我做错了什么?取消堆栈unstack.plot.barh也没有帮助


欢迎提供任何线索。

康纳姆,看起来你正试图为每个日期绘制一个情节。下面是我要做的:

for (dt, con), d in df.groupby(['Date','ConName'], group_keys=False):
    fig,ax = plt.subplots()
    d.groupby('Alarm')[['ETH1','ETH2']].count().plot.bar(ax=ax)
    ax.set_title(con)
输出将是如下所示的几个图,其中2是conName:


这是有道理的。但由于某些原因,每当我试图在循环中按报警分组时,我都会得到一个错误,即“DataFrame”为空:没有要打印的数字数据,我不完全理解其来源。可能是因为日期的一个组合,conName具有所有0值,所以当你屏蔽/计数时,它会给你空帧。是的,找到了原因。某些功能具有值,但不提供报警。所以基本上它是按报警分组的,但是结果是空的。谢谢你的帮助,你可以提供一个,也可以看看;否则我看不出有人能在这里给出有用的答案。