熊猫多层次分组

时间:2019-09-05 12:30:08

标签: python pandas pandas-groupby

我想创建一个多层次的表,尽管没有嵌套的依赖关系。我希望我的屏幕截图可以阐明我的意思:

print (df)
  Country   Type data
0     Ger     VW   oo
1     Ita  Skoda   kk
2     Ger  Skoda   oo
3     Ita     VW   ik

最上面是我的数据的表示形式,最下面是我希望获得的结果。数字是发生的总数。

下一步是将其可视化。

数据帧称为cleaned_df

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

使用DataFrame.melt进行整形,并MultiIndex Series添加GroupBy.size

s = df[['Country', 'Type']].melt(var_name='a', value_name='b').groupby(['a','b']).size()
print (s)
a        b    
Country  Ger      2
         Ita      2
Type     Skoda    2
         VW       2
dtype: int64

但是为了可视化应该更好:

s1 = df.groupby(['Country','Type']).size()
print (s1)
Country  Type 
Ger      Skoda    1
         VW       1
Ita      Skoda    1
         VW       1
dtype: int64

s1.unstack().plot.bar()

s1.unstack(0).plot.bar()