所以你想要做的就是所谓的堆栈条形图(至少我这么称呼它)。我认为Bokeh 有一种直观的方式来可视化这个条形图。这个原理同样适用于 Pandas plot 和 Seaborn。
散景库
在这里,我展示了一个带有两个标签 a 和 b 的简单数据框示例。您可以告诉您要堆叠在v1 上,在这种情况下是每个标签的类。在这种情况下,我们将有 1、0 类。并且值对应于我们想要堆叠的值,在这种情况下是v2。
显示条形图的代码sn-p如下
import pandas as pd
from bokeh.charts import Bar, output_file, show
df = pd.DataFrame([['a', 0, 1],
['a', 1, 2],
['b', 0, 2],
['b', 1, 3]],
columns=['name', 'v1', 'v2'])
bar = Bar(df, stack='v1', values='v2', label='name')
output_file("bar.html")
show(bar)
熊猫库
对于 Pandas,您可以改用 groupby 和 sum。在这里,我们将按列 name 和 v1 分组,然后总结列 v2。之后,我们可以堆叠使用plot 方法来绘制条形图。
df_agg = df.groupby(['name', 'v1'])['v2'].sum().unstack()
df_agg.plot(kind='bar', stacked=True)