seaborn barplot 用于比较具有两行的数据框中的值

seaborn barplot to compare values from a dataframe with two rows

我有一个看起来像这样的数据框。

      - X_1     - X_2     - X3      - ....
0     - float64 - float64 - float64 - ...
1     - ...

示例:df=pd.DataFrame({"X_1": [4, 2], "X_2": [2, 3], "X_3": [1, 1]})

在我的例子中,有两行和几十列。 我正在尝试制作一个条形图,它并排显示索引 0 和 1 处的值,从最大到最小,按索引 0 排序。例如,

      |
      |  0
value |  0         1
      |  0 1     0 1
      |  0 1     0 1     0 1
      _______________________
         X_1     X_2     X_3

当我尝试 运行 下面的命令时,出现了几个不同的错误。

我运行这个: order=df.sort_values(df.iloc[0], ascending=False).df.columns

然后得到这个: AttributeError: 'list' object has no attribute 'sort_values

如果我只是忽略排序,我试试这个: sns.barplot(df, x=df.columns, y=df.values)

我明白了:ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我怀疑我需要重塑我的 dataFrame 以使其更友好。 我认为可能有效的形状如下所示。

Category - Y_1     - Y2
X_1      - float64 - float64
X_2      - float64 - float64
X_3      - float64 - float64
...

然后,我想我可以像打击一样成功地进行排序和绘图。

订单。 order=df.sort_values(Y_1, ascending=False).Category Plot. sns.barplot(df, x=df.Category, y=df.columns~'Category')

我的问题是: 如何从我的数据框中获取所需的图(如上图所示)? 我概述了一些我认为我在那里的领导,但这可能是完全错误的指导。 如果您有任何想法,请告诉我。 谢谢你!

你可以这样做:

df.T.plot.bar()

这会给你(使用你问题中定义的df):