使用 Pandas 从多索引表中绘制特定列

Posted

技术标签:

【中文标题】使用 Pandas 从多索引表中绘制特定列【英文标题】:Plot Specific Column from Multindex Table with Pandas 【发布时间】:2021-04-08 18:39:12 【问题描述】:

我在 pandas 中使用聚合创建了表格,如下所示:

df=df.groupby(['choice mode','required like me']).agg('mean prop like me ':['mean'],'unhappy':['mean'])

>>>                         mplm          unhappy
choice mode         rlm     mean         mean
ba                  0.2     0.651        11
                    0.3     0.561        12
                    0.6     0.721        10
btc                 0.2     0.891        0
                    0.3     0.124        0
                    0.6     0.321        0
btr                 0.2     0.412        12
                    0.3     0.112        34
                    0.6     0.531        31

该表是多索引表。 我想创建两个图表: 图表一:x_axis= rlm, y_axis=mplm mean , 三行 - 每个选择模式一行 图表二:x_axis= rlm, y_axis=unhappy mean , 三行 - 每个选择模式一行

问题是我无法区分 unhappy 和 mplm :

df.unstack(level=0).plot()

如您所见,我得到了 6 行,并且该图具有索引的所有级别。

我想得到两个不同的图表,它们的值是 plm 和 unhappy 值。

我可以通过将原始表切片以具有 onlu plm 或 unhappy 然后进行聚合并降低级别来做到这一点,但我确信有更聪明的方法来做到这一点

【问题讨论】:

【参考方案1】:

你可以unstacklevel=0上的dataframe,然后选择你想要plot的多索引列:

s = df.unstack(level=0)
s[('mplm', 'mean')].plot(), s[('unhappy', 'mean')].plot()

(可选)您可以在level=0 上的unstackingaxis=1drop 上未使用的级别:

s = df.unstack(level=0).droplevel(1, axis=1)
s['mplm'].plot(), s['unhappy'].plot()

【讨论】:

以上是关于使用 Pandas 从多索引表中绘制特定列的主要内容,如果未能解决你的问题,请参考以下文章