Embora o Matplotlib seja a ferramenta base para visualização em Python, ele opera em um nível relativamente baixo, exigindo a manipulação manual de componentes como eixos, legendas e rótulos. O Pandas simplifica esse processo ao oferecer métodos integrados que aproveitam os rótulos de linhas e colunas de Series e DataFrames para gerar gráficos complexos com poucas linhas de código.
Para os exemplos a seguir, considere as seguintes importações padrão:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
Gráficos de Linha
O método plot é a ferramenta principal tanto para Series quanto para DataFrames. Por padrão, ele gera gráficos de linha, utilizando o índice do objeto para o eixo X.
# Criando uma série temporal simulada
serie_dados = pd.Series(np.random.randn(20).cumsum(), index=np.arange(0, 200, 10))
serie_dados.plot(style='r--')
plt.show()
O comportamento do gráfico pode ser personalizado através de diversos parâmetros. Abaixo, os principais argumentos aceitos pelo método plot:
| Parâmetro | Descrição |
|---|---|
label |
Define o nome que aparecerá na legenda. |
ax |
Objeto de subplot do matplotlib onde o gráfico será desenhado. |
style |
String de estilo (ex: 'ko--' para linha tracejada preta com marcadores). |
alpha |
Nível de transparência (de 0 a 1). |
kind |
Especifica o tipo de gráfico ('line', 'bar', 'barh', 'kde', 'hist'). |
use_index |
Booleano que define se o índice será usado como rótulo do eixo X. |
grid |
Ativa ou desativa as linhas de grade do gráfico. |
Em um DataFrame, o método plot desenha uma linha separada para cada coluna, gerando automaticamente uma legenda para distingui-las.
# Plotagem de múltiplas colunas em um DataFrame
df_financeiro = pd.DataFrame(np.random.randn(15, 3).cumsum(0),
columns=['Ativo A', 'Ativo B', 'Ativo C'],
index=np.arange(0, 150, 10))
df_financeiro.plot(title="Evolução de Ativos")
plt.show()
Gráficos de Barras
Ao definir kind='bar' (vertical) ou kind='barh' (horizontal), o Pandas transforma os índices em rótulos de categoria. Em DataFrames, os valores de cada linha são agrupados visualmente.
fig, eixos = plt.subplots(2, 1)
dados_categorias = pd.Series(np.random.rand(8), index=list('ABCDEFGH'))
# Gráfico de barras vertical
dados_categorias.plot(kind='bar', ax=eixos[0], color='blue', alpha=0.6)
# Gráfico de barras horizontal
dados_categorias.plot(kind='barh', ax=eixos[1], color='green', alpha=0.6)
plt.show()
Para visualização de proporções compostas, o parâmetro stacked=True permite criar gráficos de barras empilhadas, onde os valores das colunas são acumulados em uma única barra por linha.
df_vendas = pd.DataFrame(np.random.rand(5, 3),
index=['Loja 1', 'Loja 2', 'Loja 3', 'Loja 4', 'Loja 5'],
columns=['Eletrônicos', 'Moda', 'Home'])
df_vendas.plot(kind='bar', stacked=True, title="Vendas por Categoria")
plt.show()
Histogramas e Gráficos de Densidade
Histogramas são essenciais para entender a distribuição de frequência de um conjunto de dados. Eles dividem os valores em intervalos (bins) e contam as ocorrências em cada um.
# Gerando um histograma simples
amostra = pd.Series(np.random.randn(500))
amostra.hist(bins=30, color='gray')
plt.show()
Já os gráficos de densidade (KDE - Kernel Density Estimate) estimam a distribuição de probabilidade contínua que gerou os dados observados. É comum plotar ambos juntos para uma aálise mais robusta.
# Concatenando duas distribuições normais para criar um gráfico bimodal
dist1 = np.random.normal(0, 1, size=300)
dist2 = np.random.normal(8, 2, size=300)
valores = pd.Series(np.concatenate([dist1, dist2]))
# Plotando histograma normalizado com KDE sobreposto
valores.hist(bins=80, alpha=0.4, color='orange', density=True)
valores.plot(kind='kde', style='b-')
plt.show()
Gráficos de Dispersão e Matirzes de Dispersão
O gráfico de dispersão (scatter plot) é ideal para identificar correlações entre duas variáveis numéricas. O Pandas utiliza a integração com o Matplotlib para facilitar essa visualização.
df_metricas = pd.DataFrame(np.random.rand(50, 2), columns=['Metrica_X', 'Metrica_Y'])
plt.scatter(df_metricas['Metrica_X'], df_metricas['Metrica_Y'])
plt.xlabel('Variável Independente')
plt.ylabel('Variável Dependente')
plt.show()
Para análise exploratória de múltiplas variáveis simultaneamente, a função scatter_matrix gera uma grade de gráficos comparando todos os pares de variáveis no DataFrame, podendo incluir histogramas ou KDEs na diagonal principal.
from pandas.plotting import scatter_matrix
df_multivariavel = pd.DataFrame(np.random.randn(100, 3), columns=['Var1', 'Var2', 'Var3'])
scatter_matrix(df_multivariavel, diagonal='kde', color='purple', alpha=0.4, figsize=(8, 8))
plt.show()