首页 > 解决方案 > 从 pandas 数据透视表中绘制前 n 个指标

问题描述

在熊猫数据框中,如果我基于列创建数据透视和绘图,我如何限制基于聚合函数绘制的列数。

例子,

假设我有一个数据框枢轴作为

         sum                        
name     'a'     'b'     'c'     'd'
key                                 
1          1       2       3       4
2          1       2       3       4
3          1       2       3     nan

我绘制为

在此处输入图像描述

现在,我只想根据平均值绘制前 (2) 列,这样只有“c”和“d”显示抑制“a”和“d”。

如何使用熊猫实现这一目标?

输入数据框和绘图

from io import StringIO
import pandas as pd

TESTDATA = StringIO("""name;key;value
    'a';1;1
    'a';2;1
    'a';3;1
    'b';1;2
    'b';2;2
    'b';3;2
    'c';1;3
    'c';2;3
    'c';3;3
    'd';1;4
    'd';2;4
    """)
df = pd.read_csv(TESTDATA, sep=";")
pivot = pd.pivot_table(df, index='key', columns='name', values='value',aggfunc=[np.sum])
pivot.plot()

标签: pythonpandaspivot-table

解决方案


您可以找到mean,然后使用pivot查找nlargestn=2然后使用.loc[],仅选择这些列并绘制:

pivot.loc[:,pivot.mean().nlargest(2).index].plot()
#or pivot[pivot.mean().nlargest(2).index].plot()

在此处输入图像描述


推荐阅读