如何从df.groupby('feature')['label']。value_counts()中绘制堆叠的条形图

时间:2019-08-17 11:08:31

标签: python pandas matplotlib seaborn

我得到一个df.groupby('feature')['label'].value_counts(),如下:

X_train.groupby('reqrealip_by_pkgname_count')['label'].value_counts()

22052                       1.0      15390
                            0.0       4512
22179                       1.0      15419
                            0.0       4644
22215                       1.0      15514
                            0.0       4619
22231                       1.0      15505
                            0.0       4604
22249                       1.0      15562
                            0.0       4678
22304                       1.0      15632
                            0.0       4642
22331                       1.0      15551
                            0.0       4680
22364                       1.0      15618
                            0.0       4689
22367                       1.0      15537
                            0.0       4715
22394                       1.0      15650
                            0.0       4627
22584                       0.0      12630
                            1.0       7644
26040                       1.0      21339
                            0.0       2266
32176                       1.0      27082
                            0.0       2014

我想以这种方式绘制堆积的条形图。
但是此图中每个条形的高度都不相等。
如果不介意的话,谁能帮我绘制这种堆积的条形图?
预先感谢。

stacked barplot

1 个答案:

答案 0 :(得分:1)

Series.unstackDataFrame.plot.bar一起使用:

s = X_train.groupby('reqrealip_by_pkgname_count')['label'].value_counts()

如果需要规范化,请将参数normalize添加到Series.value_counts并乘以100

s=X_train.groupby('reqrealip_by_pkgname_count')['label'].value_counts(normalize=True).mul(100)

s.unstack().plot.bar(stacked=True)

或者:

s.unstack(0).plot.bar(stacked=True)