我对pandas和matplotlib相当陌生,我不确定实现以下目标的正确方法:
我有以下(示例)数据so_df
:
IN:
import pandas as pd
so_df = pd.DataFrame({
"CATEGORY" : ["A", "B", "A", "B"],
"CONTEXT" : [ 1 , 1 , 0 , 0],
"COUNT" : [100, 111, 50 , 55]
})
so_df
OUT:
CATEGORY CONTEXT COUNT
0 A 1 100
1 B 1 111
2 A 0 50
3 B 0 55
现在,我想用y="COUNT"
和CATEGORY
的{{1}}创建一个stacked bar-plot。
我知道如何实现这一目标的唯一方法是像这样进行切片和合并:
IN:
X="CONTEXT"
OUT:
cat_a_df = so_df[so_df["CATEGORY"] == "A"] \
.rename(columns={"COUNT" : "COUNT A"}) \
.loc[:,["CONTEXT", "COUNT A"]]
cat_b_df = so_df[so_df["CATEGORY"] == "B"] \
.rename(columns={"COUNT" : "COUNT B"}) \
.loc[:,["CONTEXT", "COUNT B"]]
stacked_df = cat_a_df.merge(cat_b_df, on="CONTEXT")
stacked_df
然后照常绘制新数据框:
CONTEXT COUNT A COUNT B
0 1 100 111
1 0 50 55
但是对于看起来很简单的任务来说,这似乎变得很复杂。 有更好的方法吗?