Я довольно новичок в 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
и X="CONTEXT"
.Единственный способ, которым я знаю, как этого добиться, это нарезать и объединять так:
IN:
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
OUT:
CONTEXT COUNT A COUNT B
0 1 100 111
1 0 50 55
И затем построить новыйобычный кадр данных:
stacked_df.plot(kind='bar', stacked=True, x="CONTEXT")
output
Но это кажется слишком сложным для того, что кажется довольно простой задачей.Есть ли лучший способ сделать это?