在分组条形图中绘制 pandas DataFrame 中不同条目数的平均值
Plot the average of different number of entries in a pandas DataFrame in a grouped bar chart
我有这个 csv,其中包含针对某些算法在某些矩阵上测量的时间,每次具有不同数量的 cpu。每个 cpu 都打印了它们的时间,所以我使用的 cpu 越多,我的行数就越多。 (例如,如果我使用 1 cpu 我有一次测量,如果我使用 2 我会有 2 次测量等。上升到 64)
我想做的是在分组条形图中绘制,其中组中的每个条形图都是不同的 'algo' 条目,x 轴是核心数('numtasks' csv) 和 y 轴是该组中所有核心的平均值(例如,对于 2 个核心,这 2 个核心的时间平均值,4 个核心,这 4 个核心的平均值等)。
(编辑:有点像 this)
我尝试使用 pandas 几个小时,使用 pivot()
、mean()
和 concat()
生成结果,但无济于事。
如果有人能给我指出正确的方向,我会很高兴,在此先感谢!
据我了解,这些是您希望堆叠条形图具有的属性。关键步骤是使用 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)
)
输出
我有这个 csv,其中包含针对某些算法在某些矩阵上测量的时间,每次具有不同数量的 cpu。每个 cpu 都打印了它们的时间,所以我使用的 cpu 越多,我的行数就越多。 (例如,如果我使用 1 cpu 我有一次测量,如果我使用 2 我会有 2 次测量等。上升到 64)
我想做的是在分组条形图中绘制,其中组中的每个条形图都是不同的 'algo' 条目,x 轴是核心数('numtasks' csv) 和 y 轴是该组中所有核心的平均值(例如,对于 2 个核心,这 2 个核心的时间平均值,4 个核心,这 4 个核心的平均值等)。
(编辑:有点像 this)
我尝试使用 pandas 几个小时,使用 pivot()
、mean()
和 concat()
生成结果,但无济于事。
如果有人能给我指出正确的方向,我会很高兴,在此先感谢!
据我了解,这些是您希望堆叠条形图具有的属性。关键步骤是使用 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)
)