Pandas中的堆积条形图具有最大值而不是求和

时间:2017-01-04 22:18:44

标签: python pandas matplotlib statistics

我试图复制excel数据透视表中完成的工作。我有3个变量(空闲时间,总时间和客户)。我想制作一个堆叠(重叠)的条形图,但不是所有变量的总和。

例如:if ..

Total_time = 10
Idle_time = 3

我希望条形图显示每个客户的空闲时间和总时间的最大值。

到目前为止,当我尝试使用stacked = True时,它只会叠加Total&空闲时间并创建一个最大值为10 + 3 = 13的条形图。我希望两个单独的条彼此重叠,其中一个条最大值为10,另一个条最大值为3。

data = df.pivot_table(df,index=['Customer'], aggfunc=np.sum)
ax = data[['Total time [hours]', 'Idle time [hours]']].plot.bar(stacked=True)
ax.set_ylabel("Miles")
ax.set_title("Total Miles Per Customer")

plt.show()

我已经上传了excel版本和pandas版本的屏幕截图,以便进一步说明。

Excel Image

Excel Image

Pandas Image

Pandas Image

提前致谢。

更新:请使用以下解决方案。

1 个答案:

答案 0 :(得分:2)

一个简单的解决方案是将它们与最后的空闲时间分开绘制

df['Total time [hours]'].plot.bar(color='r')
df['Idle time [hours]'].plot.bar(color='b')

另一个解决方案是创建一个新列,该列等于总时间减去空闲时间,然后执行堆积条形图。您可以从那里重命名列

df['Extra_Time'] = df['Total time [hours]'] - df['Idle time [hours]']
data[['Idle time [hours]', 'Extra_Time']].plot.bar(stacked=True)