在分组条形图中绘制pandas DataFrame 中不同条目数的平均值

时间:2021-01-10 21:11:42

标签: python pandas dataframe data-science

我有这个 csv ,它包含一些算法在某些矩阵上测量的时间,每次都有不同的 CPU 数量。每个 cpu 都会打印它们的时间,所以我使用的 cpu 越多,我拥有的行数就越多。 (例如,如果我使用 1 个 cpu,我有一个测量值,如果我使用 2 个,我将有 2 个测量值等等。直到 64)

我想要做的是在分组条形图中绘制,其中组中的每个条形都是不同的“算法”条目,x 轴是核心数(csv 中的“numtasks”)和 y轴是该组中所有内核的平均值(例如,2 个内核是这 2 个内核的平均时间,4 个内核是这 4 个内核的平均值等)。

(编辑:有点像 this

我尝试在 pivot()mean()concat() 中使用 Pandas 几个小时,但无济于事。

如果有人能指出我正确的方向,我会很高兴,提前致谢!

1 个答案:

答案 0 :(得分:0)

据我所知,这些是您想要在堆积条形图上显示的属性。关键步骤是使用 unstack()droplevel()

调整结果
fig, ax = plt.subplots(1,1, figsize=[10,5],
                      sharey=False, sharex=False, gridspec_kw={"hspace":0.3})


(pd.read_csv("EH3CzHf8.txt")
 .groupby(["algo","numtasks"])["total"].mean()
 .to_frame()
 .unstack(0)
 .droplevel([0], axis=1)
 .plot(ax=ax, kind="bar", stacked=True)
)

输出

enter image description here