Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Gráfico e renomear colunas

Gráfico não estava saindo certo, o label do preenchimento aparecia como proportion, mudei para percentual, depois para percentuais, mudei os nomes dos campos assim, e deu certo:

df_campo_renomeado = df['Tipo'].value_counts(normalize=True).to_frame(name='Percentual').sort_values('Percentual')
df_campo_renomeado.rename(columns={'Percentual': 'Percentuais'}, inplace=True)
df_campo_renomeado

ax = df_campo_renomeado.plot(kind='bar', figsize=(14, 10), color='green', edgecolor='black',
                        xlabel='Tipos', ylabel='Percentual')
2 respostas
solução!

Olá, Marcelo. Como vai?

Mais uma excelente contribuição! É muito interessante ver como você continuou explorando as formas de customizar esse gráfico para deixá-lo com a semântica perfeita. O fórum ganha muito com esse tipo de registro de soluções.

O seu código está correto e alcançou o objetivo de alterar o rótulo do preenchimento. No entanto, analisando as etapas que você seguiu, quero te mostrar uma otimização de código muito bacana que vai te poupar uma linha de processamento no Pandas e deixar o seu script ainda mais limpo.


Entendendo a redundância no código

No seu script atual, você realiza a troca do nome da coluna em dois momentos seguidos:

# Aqui você já cria o DataFrame definindo o nome da coluna como 'Percentual'
df_campo_renomeado = df['Tipo'].value_counts(normalize=True).to_frame(name='Percentual').sort_values('Percentual')

# Logo na sequência, você usa o .rename() para mudar de 'Percentual' para 'Percentuais'
df_campo_renomeado.rename(columns={'Percentual': 'Percentuais'}, inplace=True)

O que dá para melhorar? O método .to_frame(name='...') aceita qualquer texto que você queira dar para a coluna final de valores de forma direta. Portanto, você pode passar a palavra 'Percentuais' diretamente dentro dele, eliminando a necessidade de chamar a função .rename() na linha de baixo.

O Código Otimizado

Veja como o seu código fica mais direto e elegante mantendo exatamente o mesmo resultado visual no gráfico:

# 1. Cria o DataFrame e já define o nome definitivo da coluna como 'Percentuais'
df_campo_renomeado = df['Tipo'].value_counts(normalize=True).to_frame(name='Percentuais').sort_values('Percentuais')

# 2. Plotagem direta usando o DataFrame otimizado
ax = df_campo_renomeado.plot(kind='bar', figsize=(14, 10), color='green', edgecolor='black',
                            xlabel='Tipos', ylabel='Percentual')

Por que o Pandas antigo mostrava "proportion"?

Essa palavra "proportion" que apareceu no seu teste inicial é o comportamento padrão das versões mais recentes do Pandas (a partir da versão 2.0.0). Antigamente, o método .value_counts() com normalize=True gerava uma coluna com o mesmo nome da série original ('Tipo').

Agora, a biblioteca se modernizou e passou a nomear essa coluna calculada automaticamente como proportion para deixar claro que se trata de uma proporção estatística. Saber dominar o parâmetro name= dentro do .to_frame() ou usar o .rename() é a habilidade exata necessária para sobrescrever esse novo comportamento padrão da ferramenta.

Parabéns por continuar testando e refinando seus códigos até chegar no design ideal!

Espero que possa ter lhe ajudado!

Valeu o feedback