熊猫:聚合列

时间:2016-05-27 15:18:49

标签: python pandas matplotlib dataframe

在python pandas中,我创建了一个数据帧,每年有一个值和两个子类 - 即参数三元组的一个度量标准

import pandas, requests, numpy
import matplotlib.pyplot as plt

df

       Metric    Tag_1  Tag_2  year
0     5770832  FOOBAR1  name1  2008
1     7526436  FOOBAR1    xyz  2008
2    33972652  FOOBAR1  name1  2009
3    17491416  FOOBAR1    xyz  2009
...
16    6602920  baznar2  name1  2008
17       6608  baznar2    xyz  2008
...
30  142102944  baznar2  name1  2015
31          0  baznar2    xyz  2015

我想制作一个条形图,其中指标为y值,超过x =(年,Tag_1,Tag_2),主要按年份排序,其次为tag_1,并根据tag_1对条形图进行着色。像

这样的东西
(2008,FOOBAR,name1)   --> 5770832  *RED*
(2008,baznar2,name1)  --> 6602920  *BLUE*
(2008,FOOBAR,xyz)     --> 7526436  *RED*
(2008,baznar2,xyz)    --> ...      *BLUE*
(2008,FOOBAR,name1)   --> ...      *RED*

我尝试从像

这样的列分组开始
df.plot.bar(x=['year','tag_1','tag_2']

但尚未找到将选择分隔为彼此相邻的两个条形集的方法。

2 个答案:

答案 0 :(得分:1)

这应该可以帮助你:

weave connect <IP>

enter image description here

答案 1 :(得分:0)

你也可以这样做:

fig, ax = plt.subplots()
df.groupby(['year', 'Tag_1', 'Tag_2']).sum().plot.barh(color=['r','b'], ax=ax)
fig.tight_layout()
plt.show()

PS如果不喜欢科学记谱法你可以摆脱它:

ax.get_xaxis().get_major_formatter().set_scientific(False)

enter image description here