Python 绘制多级groupby数据框的条形图
使用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'].计数 我得到了下表: 最初的表格有这样一种结构: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
| 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值,所以当你屏蔽/计数时,它会给你空帧。是的,找到了原因。某些功能具有值,但不提供报警。所以基本上它是按报警分组的,但是结果是空的。谢谢你的帮助,你可以提供一个,也可以看看;否则我看不出有人能在这里给出有用的答案。