Python 使用熊猫分组数据的堆叠条形图

Python 使用熊猫分组数据的堆叠条形图,python,pandas,plot,Python,Pandas,Plot,假设我有pandasdataframe,它有很多特性,我对其中两个感兴趣。我将它们称为feature1和feature2 feature1可以有三个可能的值。 feature2可以有两个可能的值 我需要按feature1分组的条形图,并按feature2每个值的行数进行堆叠。(因此将有三个堆栈,每个堆栈具有两个条) 如何做到这一点 目前我有 import pandas as pd df = pd.read_csv('data.csv') df['feature1'][df['feature2']

假设我有
pandas
dataframe,它有很多特性,我对其中两个感兴趣。我将它们称为
feature1
feature2

feature1
可以有三个可能的值。
feature2
可以有两个可能的值

我需要按
feature1
分组的条形图,并按
feature2
每个值的行数进行堆叠。(因此将有三个堆栈,每个堆栈具有两个条)

如何做到这一点

目前我有

import pandas as pd
df = pd.read_csv('data.csv')
df['feature1'][df['feature2'] == 0].value_counts().plot(kind='bar',label='0')
df['feature1'][df['feature2'] == 1].value_counts().plot(kind='bar',label='1')

但这并不是我真正想要的,因为它不堆叠它们。

我不知道如何在matplotlib(熊猫默认绘图库)中执行此操作,但如果您愿意尝试其他绘图库,则使用Bokeh很容易

这里有一个例子

import pandas as pd
from bokeh.charts import Bar, output_file, show
x = pd.DataFrame({"gender": ["m","f","m","f","m","f"],
                  "enrolments": [500,20,100,342,54,47],
                  "class": ["comp-sci", "comp-sci",
                            "psych", "psych",
                            "history", "history"]})

bar = Bar(x, values='enrolments', label='class', stack='gender',
         title="Number of students enrolled per class",
         legend='top_right',bar_width=1.0)
output_file("myPlot.html")
show(bar)

此外,我还找到了另一种方法(与熊猫一起):

df.groupby(['feature1','feature2']).size().unstack().plot(kind='bar',stacked=True)

资料来源:

大小为该分组生成一个具有简单行计数的列,它生成y轴的值。取消堆叠生成matplotlib创建堆叠条形图所需的行和列信息

基本上需要

>>> s
one  a   1.0
     b   2.0
two  a   3.0
     b   4.0
并生产:

>>> s.unstack(level=-1)
     a   b
one  1.0  2.0
two  3.0  4.0

stacked
中的参数怎么样?
stacked
也不起作用,不是你想要的吗@jeanrjc有点,但不完全是。我需要的情节,如在给定的答案。谢谢!正是我需要的
bokeh.charts
已弃用并已删除。您有其他选择吗?
size()
unstack()
有什么作用?谢谢,简单又干净!