M↗O MESTRE DOS DADOS ← Machine Learning

Guia de estudo · Dados e Python

Antes de modelar,
entenda os dados.

Análise Exploratória de Dados, ou AED, é investigar um conjunto de dados para compreender sua estrutura, qualidade, padrões e limitações. Ela transforma uma tabela desconhecida em perguntas melhores, hipóteses verificáveis e decisões sobre o próximo passo.

Exemplo guiado: passageiros do Titanic · OpenML 40945 ↗

O CAMINHO DA AED01 — 05
  1. 01PerguntaO que precisamos decidir?
  2. 02EstruturaO que cada linha representa?
  3. 03QualidadeO que falta ou parece errado?
  4. 04PadrõesComo os grupos diferem?
  5. 05Próximo passoO que investigar ou corrigir?

Explorar não é provar causalidade. É descobrir onde vale investigar.

01 / POR QUE FAZER

Uma boa AED evita que a primeira resposta seja a errada.

Antes de treinar um modelo ou construir um painel, você precisa saber se os dados representam a pergunta de negócio.

ENTENDER

O que há na base?

Grão de cada linha, período, origem, colunas, tipos, categorias e possíveis chaves. Exemplo: uma linha é um passageiro ou uma viagem?

CONFIAR COM CRITÉRIO

O que pode distorcer?

Dados ausentes, erros de digitação, duplicações reais ou aparentes, seleção da amostra e variáveis disponíveis somente depois do evento.

ORIENTAR

O que fazemos agora?

Definir tratamento, novas coletas, segmentações e hipóteses. Um gráfico útil termina em uma pergunta ou ação, não só em uma figura.

Exemplo fora do Titanic

Se a receita caiu, compare volume, preço, devoluções, regiões e datas. Uma média geral pode esconder que a queda ocorreu apenas em um canal ou começou após uma mudança no processo de pedidos.

02 / O QUE ANALISAR

Seis lentes para olhar os dados.

Use a sequência como checklist. Volte etapas sempre que surgir uma inconsistência.

01

Contexto e unidade

Defina a pergunta, o período e o que representa cada linha. Verifique se há documentação e se as colunas foram criadas antes ou depois do resultado.

02

Estrutura e tipos

Conte linhas e colunas; identifique números, datas, textos e categorias. Um código de classe pode ser numérico, mas continua sendo uma categoria.

03

Qualidade

Meça ausências, valores impossíveis, categorias inconsistentes e duplicatas com uma chave de negócio. Diferencie zero, vazio e “não se aplica”.

04

Distribuições

Examine frequências, mediana, dispersão e extremos. Histogramas e boxplots revelam assimetria e pontos que merecem investigação.

05

Relações e grupos

Compare segmentos, taxas e intervalos. Observe tamanho dos grupos; uma taxa alta em um grupo minúsculo pode enganar.

06

Limites e próximos passos

Registre hipóteses, decisões de limpeza, possíveis vieses e o que a base não permite afirmar. Correlação ou diferença entre grupos não prova causa.

03 / KIT PYTHON

Os comandos que mais resolvem no começo.

Com pandas, comece pela pergunta e use cada comando para respondê-la. No notebook, todos aparecem no mesmo fluxo.

PerguntaComandoO que observar
Como é a base?df.shape, df.head(), df.info()Tamanho, amostra, tipos e contagem de não nulos.
Quanto falta?df.isna().mean().mul(100)Percentual ausente por coluna; investigue se a falta tem padrão.
Quais os resumos?df.describe(include="all").TCentro, dispersão, frequências e categorias dominantes.
Como se distribui?df["sex"].value_counts(dropna=False)Classes raras, desequilíbrio e valores ausentes.
Há repetição?df.duplicated().sum()Linhas iguais; confirme a chave antes de remover.
Como os grupos diferem?df.groupby("sex", observed=True)["survived"].agg(["size", "mean"])Tamanho do grupo e taxa de sobrevivência.
Qual a taxa em cada classe?pd.crosstab(df["pclass"], df["survived"], normalize="index")Percentuais calculados dentro de cada classe.
Há valores extremos?df["fare"].quantile([.25, .5, .75, .95])Mediana versus cauda; extremo não é automaticamente erro.

Para a AED, a saída precisa de interpretação: mean() ignora ausentes e size conta linhas; count conta apenas valores não nulos na coluna analisada.

04 / CASO GUIADO

Titanic: uma pergunta simples abre muitas outras.

O conjunto OpenML 40945 ↗ tem 1.309 registros e é usado em um exemplo oficial do scikit-learn ↗. Ele é baixado pelo scikit-learn; não é um dataset embutido como Iris. A primeira execução requer internet.

PERGUNTA DE PARTIDA

Como a sobrevivência variou entre grupos de passageiros?

Comece com classe, sexo registrado, idade e tarifa. Depois pergunte se há valores ausentes, tamanhos de grupo diferentes e variáveis registradas após o naufrágio.

  • survived: 0 ou 1, o desfecho observado.
  • pclass: 1, 2 ou 3; trate como classe, não como medida contínua.
  • age e fare: distribuições numéricas.
  • sex e embarked: categorias para comparação.
import pandas as pd
from sklearn.datasets import fetch_openml

base = fetch_openml(data_id=40945, as_frame=True)
df = base.frame[[
    "survived", "pclass", "sex", "age",
    "fare", "embarked"
]].copy()
df["survived"] = pd.to_numeric(df["survived"])

print(df.shape)
print(df.isna().mean().mul(100).round(1))
print(df.groupby("sex", observed=True)
        ["survived"].agg(["size", "mean"]))
Cuidado com versões diferentes. Muitos tutoriais usam a base de 891 linhas associada à competição do Kaggle. O notebook desta página usa os 1.309 registros do OpenML; percentuais e ausências podem diferir. Não misture resultados sem conferir a fonte.

05 / ESCOLHA O GRÁFICO

Visualizar é comparar com intenção.

O gráfico certo depende do tipo de variável e da pergunta. Veja as escolhas reproduzidas no notebook.

UMA VARIÁVEL NUMÉRICA

Histograma

Mostra a forma da distribuição de idade ou tarifa. Compare concentração, assimetria e caudas antes de escolher apenas a média.

COMPARAÇÃO DE GRUPOS

Barras de taxa

Compare proporções por classe ou sexo. Mostre também o número de pessoas em cada grupo para evitar leitura exagerada.

DISPERSÃO E EXTREMOS

Boxplot

Resume mediana, quartis e extremos de tarifas. Investigue valores raros antes de classificá-los como erro.

import matplotlib.pyplot as plt

df["age"].dropna().hist(bins=20)
plt.xlabel("Idade")
plt.ylabel("Passageiros")
plt.title("Distribuição de idade")
plt.show()

Evite conclusões causais: diferenças entre grupos podem refletir outras variáveis, regras de embarque, contexto histórico ou registros incompletos. AED descreve o observado e produz hipóteses.

06 / MÃO NA MASSA

Execute a AED inteira no Jupyter.

O notebook carrega os dados por fetch_openml, confere estrutura e qualidade, calcula resumos e taxas e produz histogramas, barras, boxplots, mapa de ausências e correlações. Termine registrando suas interpretações.

ARQUIVO · .IPYNB

Análise Exploratória: Titanic

Python + pandas + scikit-learn + matplotlib. Compatível com Jupyter e Google Colab. A primeira execução precisa de internet para buscar o OpenML.

Baixar notebook ↓
01Baixe o arquivo .ipynb.
02Abra no Colab ↗ ou no Jupyter.
03Execute as células na ordem e responda aos desafios.

Antes de concluir, responda:

Uma idade ausente deve ser preenchida com a média?

Não automaticamente. Primeiro quantifique as ausências e veja se se concentram em algum grupo. O tratamento depende do objetivo; para um modelo, ajuste qualquer imputação apenas nos dados de treino.

Uma taxa de sobrevivência diferente entre classes prova que a classe causou a diferença?

Não. A AED mostra associação no conjunto observado. Para falar de causa, seria necessário um desenho de análise que trate confundimento e vieses.

Devo remover toda linha duplicada?

Não. Duas pessoas podem compartilhar os mesmos valores das colunas selecionadas. Antes de excluir, identifique uma chave confiável e o significado de cada registro.

07 / LEITURA COMPLEMENTAR

Continue a investigação.

Documentação oficial para aprofundar os comandos e páginas do site para seguir estudando.