堆叠条形图按包含字符串值的特定列计数

2024-04-29 04:41:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用seaborn获得一个条形图,其中我的数据按列MONTH计数

sns.catplot(x = 'MONTH',kind="count",data=df)

我现在想要得到的是一个堆叠条形图,其中数据由另一列TASKTYPE计数。此列中的条目是字符串

我的数据框如下所示:

MONTH TASKTYPE
09/19 A
09/19 B
10/19 B
10/19 B
01/20 A

现在我想得到一个堆叠条形图,其中MONTH在x轴上,count在y轴上,条形图按TASKTYPE堆叠。我想我可以用熊猫做类似的事情

我怎么能这样做


Tags: 数据字符串dfdatacount条目seaborn事情
2条回答
df.groupby('MONTH')['TASKTYPE'].value_counts().unstack().plot.bar(stacked=True)

用matplotlib就可以直接看到。只需先确定数据的形状即可。转换为日期并返回到字符串以获得所需的订单

df = pd.read_csv(io.StringIO("""MONTH TASKTYPE
09/19 A
09/19 B
10/19 B
10/19 B
01/20 A"""), sep="\s+")

(df
 .assign(m=pd.to_datetime("28/"+df["MONTH"]))
 .groupby(["m","TASKTYPE"])["TASKTYPE"].count().to_frame()
 .unstack(0)
 .droplevel(0, axis=1)
 .T
  .assign(MONTH=lambda dfa: dfa.index.strftime("%m/%y"))
  .set_index("MONTH")
 .plot(kind="bar", stacked=True)
)

enter image description here

相关问题 更多 >