Пандас сюжет бар категории заказа - PullRequest
0 голосов
/ 27 мая 2018

У меня есть набор данных с категориальной переменной, который содержит три уникальных значения: «низкий», «средний» и «высокий»:

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

Я пытаюсь отобразить число уникальных значений какбар-сюжет.Однако следующий код дает мне столбцы в порядке [«Средний», «Низкий», «Высокий»]

df.CatVar.value_counts().plot(kind="bar")

Как изменить порядок столбцов на графике?

Ответы [ 3 ]

0 голосов
/ 27 мая 2018

Есть 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")

pic

0 голосов
/ 27 мая 2018

Если вы не возражаете против использования 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']);
0 голосов
/ 27 мая 2018

Следующий код решил мою проблему:

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