python - 如何为每个组创建堆积条

标签 python pandas bar-chart stacked-bar-chart

我有以下数据集:

SessionId    Query
   1           a   
   1           b
   2           a
   3           b
   3           b
   3           c
   3           a

我想显示一个堆积条形图,其中每个 session 都有一个条形图,并且条形图将由它具有的每个查询 的不同颜色组成,堆叠大小将在每个 session 中的查询数量的大小。

我试过这样的:

result = data.groupby('SessionId').apply(
   lambda group: (
      group.groupby('Query').apply(
         lambda queryGroup: (
            queryGroup.count()
         )                
      )
   )
 ) 

但它在表中给出了一个奇怪的表

最佳答案

crosstab如果我正确理解您的问题,应该可以完成这项工作:

import pandas as pd

data = pd.DataFrame({'SessionId': [1, 1, 2, 3, 3, 3, 3], 
                     'Query': ['a', 'b', 'a', 'b', 'b', 'c', 'a']})

pd.crosstab(data.SessionId, data.Query).plot.barh(stacked=True)

enter image description here

关于python - 如何为每个组创建堆积条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37301217/

相关文章:

ios - 在iOS中绘制简单的条形图,而无需使用Coreplot

python - 如何合并两个包含具有相同签名的方法的Python类?

python - 如何有效地搜索DataFrame中的值并将其放入另一个DataFrame中

python - 在 Python 中建模 4-D 数据(带时间戳)

python - 某些列的唯一值,DF pandas

android - 如何删除条形图图例

python - 使用 numpy masked array 和 imshow 绘制分割的彩色图像

python - 我如何知道是否可以禁用 SQLALCHEMY_TRACK_MODIFICATIONS?

python - 为什么 str 在 Python 中没有 __radd__ 方法?

r - 分类变量的频率密度条形图