试图创建每月前10个问题的堆积条形图

时间:2013-08-25 17:41:08

标签: python pandas

我有一个堆叠系列,如下所示(日期表示为一个月的整数):

date  issues        size                        
1     issue1        1
      issue2        2
      issue3        1
      issue4        6
      issue5        1
...
8     issue1        1
      issue2        2
      issue3        1
      issue4        6
      issue5        1

我可以通过

绘图来创建堆积条形图
series.unstack().fillna(0)

但是我希望将问题数量限制为每个日期的前10名,因为目前有超过100个。这是我无法弄清楚的部分。任何帮助表示赞赏。

编辑:

以下是我的原始DataFrame的更清晰的内容。

          date  issues
0            1  issue1 
1            1  issue2 
2            1  issue3 
3            1  issue1
4            1  issue3 
5            2  issue1 
6            2  issue2 
7            2  issue3
...

1 个答案:

答案 0 :(得分:1)

您只能按applying to each group一个sort然后head返回大小合适的顶级对象。
在这里,我们只看前两个:

In [11]: top2_by_date = df.groupby('date').apply(lambda x:  x.sort('size', ascending=False).head(2))

In [12]: top2_by_date
Out[12]: 
        date  issues  size
date                      
1    3     1  issue4     6
     1     1  issue2     2
8    8     8  issue4     6
     6     8  issue2     2

很烦我们在索引(as_index=False doesn't stop thisfor now)中有约会。

In [13]: top2_by_date.index =  top2_by_date.index.droplevel(0)

In [14]: top2_by_date
Out[14]: 
   date  issues  size
3     1  issue4     6
1     1  issue2     2
8     8  issue4     6
6     8  issue2     2

使用value_counts使用原始数据(没有尺寸列,您可以一次完成此操作):

In [21]: df.groupby('date').apply(lambda x: x['issues'].value_counts()[:2])
Out[21]: 
date        
1     issue3    2
      issue1    2
2     issue2    1
      issue3    1
dtype: int64

注意:如果存在平局,这将随意挑选。