条形图分组熊猫

时间:2017-03-23 09:06:28

标签: python pandas dataframe

我有关于绘制分组DataFrame数据的问题。

数据如下:

data =

index    taste    food

0        good     cheese
1        bad      tomato
2        worse    tomato
3        worse    cheese
4        good     meat
5        good     meat
6        bad      cheese
7        worse    tomato
8        worse    tomato
9        good     cheese
10       worse    meat
11       good     meat

我想要做的是制作一个条形图,每个品味类别为x轴(好的,坏的,更差的)以及每种口味类别中每种食物类型的百分比分布为条形。

所以,看看例如品尝类别worse我们有:3 tomato,1 cheese和1 meat。总共有3 + 1 + 1 = 5种食物类型,因此:

3/5 = 60%tomato, 1/5 = 20%cheese和 1/5 = 20%meat

到目前为止,我尝试使用GroupByagg之类的内容:

df_1 = data.groupby(['taste', 'food']).agg({'taste' : 'count'})
df_2 = df_1.groupby(level=0).apply(lambda x: 100 * x / float(x.sum()))

似乎产生了我想要的结果:

              taste
taste food         
bad   cheese   50.0
      tomato   50.0
good  cheese   40.0
      meat     60.0
worse cheese   20.0
      meat     20.0
      tomato   60.0

但现在我被困在如何实际绘制这个!

在Excel中,它看起来像:

enter image description here

1 个答案:

答案 0 :(得分:0)

我似乎找到了一个例子:

making a stacked barchart in pandas

充分做到:

Meta