Usando pandas para visualização de dados: o que funciona e o que não funciona
Acho que muita gente confunde o propósito do pandas aqui. O pandas não foi feito para ser uma ferramenta de ou arte visual. Ele é uma biblioteca de manipulação e análise de dados estruturados. Quando as pessoas falam em "pandas para pintar", normalmente estão querendo gerar gráficos, plots ou visualizações a partir de DataFrames, e nesse sentido o pandas entrega o básico que funciona na maioria dos casos do dia a dia. O jeito mais direto de usar o pandas para criar visualizações é através do método .plot() que vem embutido nos DataFrames e Series. Ele faz uma ponte com o matplotlib por baixo dos panos, então você não precisa importar nada além do pandas para começar. Um exemplo simples seria chamar df.plot(x='data', y='valor') e já ter um gráfico de linhas gerado.
O que você realmente precisa saber antes de usar pandas para pintar gráficos
O problema é que esse método .plot() esconde muita configuração útil. Se você nunca olhou por baixo do capô, provavelmente já passou por aquela situação em que o gráfico ficou tudo espremido num canto porque os eixos não foram ajustados automaticamente. Isso acontece com frequência quando os dados têm escalas muito diferentes entre si. Aqui vai um exemplo prático que eu vi acontecer muito: eu tinha um DataFrame com vendas diárias de produtos variando entre 10 e 500 unidades, e outra coluna com margem de lucro em percentual entre 0 e 5. Quando chamei .plot() sem configuração adicional, a escala da margem ficou quase invisível porque o eixo Y foi dimensionado baseado nos valores maiores de vendas. A solução foi separar em dois subplots ou usar o parâmetro secondary_y=True para criar um segundo eixo Y.
👉 Clique no botão abaixo para saber mais sobre o assunto!
df.plot(x='data', y='vendas', kind='bar')
df.plot(x='data', y='margem', kind='line', secondary_y=True)
Outra coisa que as pessoas não percebem logo de cara: o pandas só suporta nativamente alguns tipos de gráfico. Line, bar, barh, scatter, hexbin, box, area, pie — esses são os principais. Se você precisa de um violin plot ou um heatmap, vai precisar chamar o seaborn ou o matplotlib diretamente. Não adianta insistir que o .plot() vai fazer algo que ele não foi projetado para fazer. Um detalhe técnico importante que quase todo mundo esquece é a questão dos indexes. Quando você plota um DataFrame com múltiplas colunas, o pandas usa o index do DataFrame como eixo X. Se o seu index não estiver ordenado corretamente — o que é comum quando você faz merges ou filtragens — o gráfico pode apresentar linhas cruzadas estranhas ou pontos fora de ordem. Sempre rode um df = df.sort_index() antes de plotar, especialmente com dados temporais.
Para quem está começando, o caminho mais produtivo é dominar primeiro o .plot() do pandas para prototipagem rápida. Ele permite olhar os dados em segundos sem precisar escrever código boilerplate do matplotlib. Mas saiba que em algum momento você vai precisar sair dessa zona de conforto. Gráficos profissionais exigem controle sobre figure size, figure dpi, alinhamento de legendas, formatação de labels dos eixos, e essas coisas você passa a controlar melhor quando estuda o matplotlib por conta própria. Se o seu objetivo é realmente criar visualizações complexas ou publicações acadêmicas, recomendo encarecidamente dar o próximo passo e aprender seaborn sobre matplotlib. O pandas para pintar serve perfeitamente para exploração rápida e dashboards internos simples. Para entregar algo que vá além disso, você vai perceber que a dependência exclusiva do pandas se torna uma limitação clara.
Uma dica prática que pouca gente menciona: você pode customizar fortemente o gráfico final passando um objeto Axes do matplotlib como argumento ax. Isso significa que você começa com a facilidade do pandas e termina com o controle total do matplotlib no mesmo fluxo de código. Algo como ax = plt.subplots(figsize=(12, 6))[1].assign(), e depois df.plot(ax=ax). É assim que eu resolvo a questão dos graficos que ficam muito pequenos ou desalinhados em relatórios automatizados. No fim das contas, o pandas para pintar é uma ferramenta válida dentro do seu escopo. Ele não é perfeito, tem limitações claras, e funciona melhor quando você entende onde ele para e o que vem a seguir. Conhecer esses limites evita frustração e economiza tempo que seria gasto tentado fazer o pandas fazer algo para o qual ele não serve.