Olá, Marcelo. Como vai?
Excelente observação! Você teve uma visão analítica fantástica e muito madura sobre a construção de gráficos para análise exploratória de dados.
Você está coberto de razão: exibir o rótulo da legenda como "Tipo" quando o gráfico na verdade está mapeando a distribuição percentual das proporções gera uma ambiguidade visual que pode confundir o usuário final. Modificar o nome da coluna no DataFrame para Percentual antes de realizar a plotagem resolve esse problema de semântica de forma elegante e correta.
Para agregar ainda mais valor à sua solução e explicar o comportamento da biblioteca que você mencionou, vamos analisar o que mudou nos bastidores do Pandas e do Matplotlib:
Por que o Pandas coloca o nome da coluna na legenda?
Por padrão, quando chamamos o método .plot(kind='bar') diretamente de um DataFrame, o Pandas utiliza o nome das colunas para montar automaticamente a legenda da área colorida (os elementos geométricos).
No código antigo do curso, a estrutura do value_counts(normalize=True).to_frame() gerava um DataFrame onde a coluna de valores herdava o nome original da série ('Tipo'). Com as atualizações mais recentes da biblioteca, essa vinculação ficou ainda mais rígida. Ao fazer o ajuste manual utilizando o parâmetro name='Percentual':
df_percentual_tipo = df['Tipo'].value_counts(normalize=True).to_frame(name='Percentual').sort_values('Percentual')
Você alterou o metadado da coluna. Assim, o Pandas lê o novo nome e gera a legenda correta de forma automatizada, poupando linhas extras de código de formatação.
Duas Dicas Avançadas para Deixar o seu Gráfico ainda Melhor
Como o seu objetivo é tornar o gráfico o mais claro e legível possível, separei duas sugestões de acabamento que conversam perfeitamente com a sua linha de raciocínio:
1. Exibir o Eixo Y em Formato de Porcentagem (%)
Como o parâmetro normalize=True devolve os valores como frações decimais (ex: 0.15, 0.42), o eixo Y do seu gráfico está exibindo esses números brutos. Para que o leitor entenda o gráfico de imediato, podemos importar o módulo de formatação do Matplotlib (PercentFormatter) para converter o eixo automaticamente para o formato de porcentagem real (ex: 15%, 42%).
2. Remover a Legenda Desnecessária
Repare que o seu gráfico possui apenas uma única barra por categoria (é um gráfico univariado). Quando temos apenas uma cor de barra no gráfico inteiro e o título do eixo Y já diz "Percentual", a caixinha flutuante da legenda se torna redundante. Podemos desativá-la com legend=False.
Veja como o seu código de plotagem fica aplicando essas boas práticas de visualização de dados:
import matplotlib.ticker as mtick
# 1. Seu ajuste perfeito no DataFrame
df_percentual_tipo = df['Tipo'].value_counts(normalize=True).to_frame(name='Percentual').sort_values('Percentual')
# 2. Plotagem refinada (adicionado o legend=False)
ax = df_percentual_tipo.plot(kind='bar', figsize=(14, 10), color='green', edgecolor='black',
xlabel='Tipos', ylabel='Percentual', legend=False)
# 3. Ajuste de acabamento: transforma o eixo Y em porcentagem real (ex: 20%)
ax.yaxis.set_major_formatter(mtick.PercentFormatter(1.0))
Modificar o código para acompanhar as evoluções das ferramentas e focar na clareza da comunicação dos dados é o que define um bom Cientista de Dados. Parabéns pelo senso crítico e por compartilhar essa excelente solução com a comunidade do fórum!
Espero que possa ter lhe ajudado!