微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – Pandas:如何用带标签的数据框绘制barchar?

我有以下数据帧df:

             timestamp      objectId  result
0  2015-11-24 09:00:00        Stress       3
1  2015-11-24 09:00:00  Productivity       0
2  2015-11-24 09:00:00     Abilities       4
3  2015-11-24 09:00:00     Challenge       0
4  2015-11-24 10:00:00  Productivity      87
5  2015-11-24 10:00:00     Abilities      84
6  2015-11-24 10:00:00     Challenge      58
7  2015-11-24 10:00:00        Stress      25
8  2015-11-24 11:00:00  Productivity      93
9  2015-11-24 11:00:00     Abilities      93
10 2015-11-24 11:00:00     Challenge      93
11 2015-11-24 11:00:00        Stress      19
12 2015-11-24 12:00:00     Challenge      90
13 2015-11-24 12:00:00     Abilities      96
14 2015-11-24 12:00:00        Stress      94
15 2015-11-24 12:00:00  Productivity      88
16 2015-11-24 13:00:00  Productivity      12
17 2015-11-24 13:00:00     Challenge      17
18 2015-11-24 13:00:00     Abilities      89
19 2015-11-24 13:00:00        Stress      13

我想实现如下

Picture taken from here http://pandas.pydata.org/pandas-docs/stable/visualization.html

的条形图
而不是a,b,c,d在ObjectID列中将有标签,y轴应该对应于列结果,而x轴应该是列时间戳分组的值.

我尝试了几件事,但没有任何效果.这是最接近的,但plot()方法不通过参数进行任何自定义(例如,kind =’bar’不起作用).

groups = df.groupby('objectId')
sgb = groups['result']
sgb.plot()

还有其他想法吗?

解决方法:

@NaderHisham的答案是一个非常简单的解决方案!
但仅作为参考,如果由于某种原因不能使用seaborn,这是一个纯粹的pandas / matplotlib解决方案:

您需要重塑数据,因此不同的objectIds成为列:

In [20]: df.set_index(['timestamp', 'objectId'])['result'].unstack()
Out[20]:
objectId   Abilities  Challenge  Productivity  Stress
timestamp
09:00:00           4          0             0       3
10:00:00          84         58            87      25
11:00:00          93         93            93      19
12:00:00          96         90            88      94
13:00:00          89         17            12      13

如果你制作一个条形图,你会得到所需的结果:

In [24]: df.set_index(['timestamp', 'objectId'])['result'].unstack().plot(kind='bar')
Out[24]: <matplotlib.axes._subplots.Axessubplot at 0xc44a5c0>

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐