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

df.CatVar.value_counts()
Out[93]:
Medium    35832
Low       25311
High      12527
Name: CatVar, dtype: int64

我试图将唯一值的数量绘制为条形图。但是,下面的代码按[[Medium](低),[Low](低),[High](高)]的顺序显示条形
df.CatVar.value_counts().plot(kind="bar")

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

最佳答案

有2种可能的解决方案-在绘图之前更改index的顺序-通过 reindex loc:

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

或使用 ordered categorical ,因此在value_counts通过categories参数获得顺序后:
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")

python -  Pandas 情节栏订购类别-LMLPHP

关于python - Pandas 情节栏订购类别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50553698/

10-10 14:30