使用 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 从多索引表中绘制特定列的主要内容,如果未能解决你的问题,请参考以下文章

绘制 Pandas 多索引条形图

Pandas DataFrame 图:从 MultiIndex 中为 secondary_y 指定列

难以绘制 Pandas 多索引 DataFrame 或系列

绘制 pandas 多索引 DataFrame,其中一个索引作为 Y 轴,另一个作为 X 轴

在 pandas 多索引数据帧上绘制两个级别的 x_ticklabels [重复]

使用 pandas 进行多索引和绘图