我有以下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_1
和Cat_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
的总数。
最后是否为分组或叠加的条形图并不重要。
请查看附图中的更直观的想法: