如何从分层索引的组对象生成绘图,以便获得两条曲线?

时间:2014-06-24 10:23:31

标签: python plot pandas

我已将数据转换如下:

s1 = pd.DataFrame({'soa': [500, -500, -500, -500, 500, 500],
                   'congruent': [True, True, True, False, False, False],
                   'is_correct': [True, True, False, False, False, False],
                   'some_stuff': pd.np.random.rand(6)})
subdf = s1[['congruent', 'soa', 'is_correct']]  # s1 is a DataFrame
m = subdf.groupby(('soa', 'congruent')).mean()

在ipython笔记本中显示m给了我一个非常好的表:

enter image description here

我现在想绘制两条单独的曲线,每条曲线有两个点(-500和500)。一条曲线将是congruent == True的条件,另一条曲线是congruent == False的条件。

我尝试了m.plot(),但我得到一条曲线,每个多索引元组都有一个点:

enter image description here

了解熊猫,我怀疑有一种简单的方法可以解决这个问题 - 任何想法?

提前致谢!

1 个答案:

答案 0 :(得分:0)

好的,经过相当多的讨论后,我有一个解决方案可以做我想要的,虽然我不太明白 它是如何工作的......

s1 = pd.DataFrame({'soa': [500, -500, -500, -500, 500, 500],
               'congruent': [True, True, True, False, False, False],
               'is_correct': [True, True, False, False, False, False],
               'some_stuff': pd.np.random.rand(6)})
subdf = s1[['congruent', 'soa', 'is_correct']]  # s1 is a DataFrame
m = subdf.groupby(('soa', 'congruent')).mean()

m.unstack(level=1)
m.unstack(level=1).plot()

结果显示如下:

enter image description here

枢轴操作仍然让我感到困惑,所以如果有人可以直截了当地说明为什么level=1是正确的论点,我会非常感激。我可以说,level意味着类似将此层次索引级别设置为表格标题