【发布时间】:2021-11-20 17:52:18
【问题描述】:
我有一个看起来像这样的数据框。
- 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')
我的问题是: 如何从我的数据框中获得所需的图(如上图所示)? 我概述了一些我认为我在那里领导的东西,但这可能完全没有指导意义。 如果您有任何想法,请告诉我。 谢谢!
【问题讨论】:
-
sns.barplot(data=df.reset_index().melt(id_vars='index'), x='variable', y='value', hue='index')使用 seaborn,重置索引以用作hue的列,并使用.melt转换为长格式。 Plot
标签: python pandas dataframe seaborn visualization