使用 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】:你可以unstack
level=0
上的dataframe,然后选择你想要plot
的多索引列:
s = df.unstack(level=0)
s[('mplm', 'mean')].plot(), s[('unhappy', 'mean')].plot()
(可选)您可以在level=0
上的unstacking
上axis=1
上drop
上未使用的级别:
s = df.unstack(level=0).droplevel(1, axis=1)
s['mplm'].plot(), s['unhappy'].plot()
【讨论】:
以上是关于使用 Pandas 从多索引表中绘制特定列的主要内容,如果未能解决你的问题,请参考以下文章
Pandas DataFrame 图:从 MultiIndex 中为 secondary_y 指定列
绘制 pandas 多索引 DataFrame,其中一个索引作为 Y 轴,另一个作为 X 轴