Python 如何在hist命令中更改绘图顺序
我试图为一个数据帧绘制一组直方图,该数据帧有25列,分别命名为Python 如何在hist命令中更改绘图顺序,python,pandas,matplotlib,Python,Pandas,Matplotlib,我试图为一个数据帧绘制一组直方图,该数据帧有25列,分别命名为“Feature\u 1”、“Feature\u 2”、“Feature\u 25”。当我使用df.hist()时,它会按名称对各个直方图进行排序,以便按以下顺序绘制:“Feature_1”、“Feature_10”、“Feature_11”…“Feature_2”、“Feature_20”… 这不是我需要的 如何更改排序顺序?传递columns参数不会更改任何内容 我通过直接使用matplotlib解决了这个问题,但这不是每次需要绘
“Feature\u 1”、“Feature\u 2”、“Feature\u 25”
。当我使用df.hist()
时,它会按名称对各个直方图进行排序,以便按以下顺序绘制:“Feature_1”、“Feature_10”、“Feature_11”…“Feature_2”、“Feature_20”…
这不是我需要的
如何更改排序顺序?传递columns参数不会更改任何内容
我通过直接使用matplotlib解决了这个问题,但这不是每次需要绘制多个直方图时我都愿意做的。您可以使用单个列重复调用hist。不确定这是否满足您的所有需要
import pandas as pd
df = pd.DataFrame({'a':[1,1,1,1,3],
'b':[1,1,2,1,3],
'c':[2,2,2,1,3],
})
df[['c']].hist()
df[['a']].hist()
df[['b']].hist()
只需按照您希望的顺序遍历列列表
my_list = ['c','a','b']
for each in my_list:
df[[each]].hist()
尝试将列索引分类,然后使用sort_列打印为True
将熊猫作为pd导入
df=pd.DataFrame({'a':[1,2],'b':[30,10]})
df.columns=pd.CategoricalIndex(['b','a'],ordered=True)
df.plot.hist(sort_columns=True,subplot=True)
您可以使用带有自定义排序键的df.reindex\u axis提前对列进行排序。然后列可以按照您想要的顺序排列。例如:
df = pd.DataFrame({'Feature_1':[1,2,3],'Feature_10':[1,2,3],'Feature_2':[2,3,4]})
print df
df = df.reindex_axis(sorted(df.columns, key=lambda a: int(a.split('_')[1])), axis=1)
print df
给你
Feature_1 Feature_10 Feature_2
0 1 1 2
1 2 2 3
2 3 3 4
Feature_1 Feature_2 Feature_10
0 1 2 1
1 2 3 2
2 3 4 3
然后绘制直方图
df.plot.hist(sort_columns=False, subplots=True)
虽然很烦人,但您能否重命名列
Feature\u 01
,Feature\u 02
,..?虽然这可以解决此特定情况下的问题,但当我们有多个名称无序的列时,通常无法解决此问题。不幸的是,此问题已硬编码到pandas.DataFrame.hist
中。show如果您的列是可排序的,它将使用vanillasorted(columns)
对它们进行排序。似乎没有关键字来更改此行为。嗯……谢谢。我明白了。不知道这种行为有什么好处。