从包含pandas数据框内的多个标签的多个类别创建分组/堆积条形图

时间:2018-04-24 10:40:03

标签: python pandas dataframe plot

我有以下pandas数据框(df)[只是完整数据框的摘录]:

   Name    Cat_1    Cat_2
0   foo        P    Apples, Pears, Cats
1   bar     R, M    Apples
2   bla        E    Pears
3   blu        F    Cats, Pears
4   boo        G    Apples, Pears
5   faa     P, E    Apples, Cats

我想创建从Cat_1Cat_2构建的条形图。 这些列包含多个标记,必须用于绘图。

目前,我正在运行这个简单的代码来绘制Cat_1

import pandas as pd
from matplotlib import pyplot as plt

fig, ax = plt.subplots(figsize = (4,4))
s = df["Cat_1"].str.split(", ", expand = True).stack()
s.value_counts().plot(kind = 'bar', ax = ax)

这为Cat_1中的每个不同标签返回一个漂亮的条形图,允许多个分配(按预期)。

可以将相同的内容应用于Cat_2并获取具有相应标签的单独图表。

但是,我想要一个首先由Cat_1“堆叠”的图,然后计算Cat_2的值。

我想一种想到这个的方法是构建一个如下所示的嵌套字典:

{"P": {"Apples": 2, "Pears": 1, "Cats": 2}, "R": {"Apples": 1}, ....}

但同时跟踪Cat_1的总数。

最后是否为分组或叠加的条形图并不重要。

请查看附图中的更直观的想法:

enter image description here

1 个答案:

答案 0 :(得分:1)

如果我理解正确,这应该会让你非常接近。

componentDidMount

Example Output