熊猫情节酒吧订单类别

时间:2018-05-27 15:29:40

标签: python pandas plot categories

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

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")

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

3 个答案:

答案 0 :(得分:5)

有两种可能的解决方案 - 在reindexindex之前更改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_countscategories参数获取订单后:

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")

pic

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

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

import seaborn as sns

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