Python 打印栏顺序类别

Python 打印栏顺序类别,python,pandas,plot,categories,Python,Pandas,Plot,Categories,我有一个带有分类变量的数据集,其中包含三个唯一值,“低”、“中”和“高”: 我试图以条形图的形式绘制唯一值的数量。但是,以下代码按[“中”、“低”、“高”的顺序给出了条形图 如何更改绘图中条形图的顺序?以下代码解决了我的问题: df.CatVar.value_counts()[['Low', 'Medium', 'High']].plot(kind="bar") 有两种可能的解决方案-绘图前更改索引的顺序-按或loc: df.CatVar.value_counts().reindex(["Lo

我有一个带有分类变量的数据集,其中包含三个唯一值,“低”、“中”和“高”:

我试图以条形图的形式绘制唯一值的数量。但是,以下代码按[“中”、“低”、“高”的顺序给出了条形图


如何更改绘图中条形图的顺序?

以下代码解决了我的问题:

df.CatVar.value_counts()[['Low', 'Medium', 'High']].plot(kind="bar")

有两种可能的解决方案-绘图前更改
索引的顺序-按或
loc

df.CatVar.value_counts().reindex(["Low", "Medium", "High"]).plot(kind="bar")
或者使用,因此在
值\u计数之后
类别获取订单
参数:

df.CatVar = pd.Categorical(df.CatVar, categories=["Low", "Medium", "High"], ordered=True)
df.CatVar.value_counts(sort=False).plot(kind="bar")

样本

df = pd.DataFrame({'CatVar':['Low','Medium','Low','Low','Medium','High']})
print (df)
   CatVar
0     Low
1  Medium
2     Low
3     Low
4  Medium
5    High

df.CatVar.value_counts().reindex(["Low", "Medium", "High"]).plot(kind="bar")

如果您不介意使用
seaborn
,您可以使用并且它有参数来传递
订单

import seaborn as sns

df = pd.DataFrame({'CatVar':['Low','High','Low','Low','Medium']})
sns.countplot(x='CatVar', data=df, order=['Low', 'Medium', 'High']);

我觉得你的第一个方法和我一样。但由于您的解决方案更详细,并且您的第二个建议是针对特定问题的更好解决方案,因此您赢得了我的“接受此答案”;)@非常感谢,谢谢。我试图在引入最少数量的新库的同时解决这个问题。但是,对于已经使用Seaborn并且正在为类似问题而挣扎的用户,您的解决方案将非常好:)(+1)
df.CatVar = pd.Categorical(df.CatVar, categories=["Low", "Medium", "High"], ordered=True)
df.CatVar.value_counts(sort=False).plot(kind="bar")
df = pd.DataFrame({'CatVar':['Low','Medium','Low','Low','Medium','High']})
print (df)
   CatVar
0     Low
1  Medium
2     Low
3     Low
4  Medium
5    High

df.CatVar.value_counts().reindex(["Low", "Medium", "High"]).plot(kind="bar")
import seaborn as sns

df = pd.DataFrame({'CatVar':['Low','High','Low','Low','Medium']})
sns.countplot(x='CatVar', data=df, order=['Low', 'Medium', 'High']);