Visualização de Dados: Dominando as Funções de Plotagem do Pandas

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()

Tags: pandas matplotlib Python data-visualization data-science

Publicado em 7-16 16:38