使用pandas dataframe

时间:2017-11-06 02:46:01

标签: python pandas matplotlib pandas-groupby

我有一个pandas数据框,看起来像 enter image description here 其中一列名为标签,只能使用两个可能的值0或1。

我想将标签1和标签0的直方图分别放在其他顶部,如

enter image description here

我可以为其中一个列(名为" MA_CL05")执行此操作,如:

temp = infile.groupby('label')
for k, v in temp:
  if k == 1:
    v.MA_CL05.hist(label='1',figsize=(15,15),bins=25,alpha=1.0,histtype = 'step',lw=4)
  if k == 0:
    v.MA_CL05.hist(label='0',figsize=(15,15),bins=25,alpha=1.0,histtype = 'step',lw=4)
plt.legend(loc=1, prop={'size': 51})
plt.show()

我可以复制并通过这个补丁的所有20列,它会没事的。但是,有没有简单的方法可以一次性绘制这种类型(2)的直方图?

1 个答案:

答案 0 :(得分:1)

您可以添加另一个循环,循环数据框的列并指定要绘制的轴。

fig, axes = plt.subplots(4,5)

for col,ax in zip(infile.columns[2:],axes.flatten()):
    temp = infile.groupby('label')
    for k, v in temp:
        v[col].hist(label=str(k),bins=25,alpha=1.0,histtype = 'step',lw=4, ax=ax)

plt.legend(loc=1, prop={'size': 51})
plt.show()