Olá Adriana! Tudo bem com você?
Tem como realizar essa ordenação dentro do próprio método .countplot()
com o parâmetro order, que de acordo com a documentação é a:
"Ordem para plotar os níveis categóricos, caso contrário, os níveis são inferidos dos objetos de dados."
Então para esse parâmetro devemos passar a ordem dos estados em ordem decrescente. Fazemos isso da seguinte forma:
order=dados[st].value_counts().index
O método .value_counts()
já retorna a ordem dos estados que tem mais ocorrência para os estados que tem menos ocorrências, como queremos apenas saber quais estados são, pegamos o índices com o .index
.
O código completo fica da seguinte forma:
def plot_perc(st,dados):
plt.figure(figsize=(20,8))
g = sns.countplot(x= st,data=dados,
order=dados[st].value_counts().index,
orient='h')
g.set_ylabel('Contagem',fontsize=17)
sizes = []
for p in g.patches:
height = p.get_height()
sizes.append(height)
g.text(p.get_x() + p.get_width()/1.6,
height+200,
'{:1.2f}%'.format(height/116581*100),
ha = 'center',va='bottom',fontsize=12)
g.set_ylim(0,max(sizes)*1.1)
A documentação do método .value_counts()
pode ser encontrada nesse link.
Espero ter ajudado, mas se ainda persistir alguma dúvida estou sempre à disposição.
:)
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!