Noções Básicas de Análise de Dados
10 exemplos para você começar com Análise de Dados - 7 básicos e 3 intermediários.
Busque em todas as páginas da documentação
10 exemplos para você começar com Análise de Dados - 7 básicos e 3 intermediários.
uv pip install "pandas>=2.2" "numpy>=2.0" "pyarrow>=18"Crie um array numérico homogêneo e execute matemática vetorizada.
import numpy as np
sales = np.array([120, 340, 280, 410], dtype=np.int32)
bonus = sales * 0.1
print(bonus.dtype, bonus.sum())dtype controla memória e precisão - escolha-o deliberadamente.Relacionado: Arrays NumPy - dtypes e broadcasting
Encapsule dados rotulados em estruturas pandas.
import pandas as pd
revenue = pd.Series([120, 340, 280], index=["Jan", "Fev", "Mar"], name="revenue")
df = pd.DataFrame({"region": ["East", "West", "East"], "revenue": revenue.values})
print(df.dtypes)Series é uma única coluna com um índice.DataFrame é uma tabela de Series alinhadas compartilhando o mesmo índice..dtypes revela se as colunas são numéricas, de string ou categóricas.Relacionado: pandas Series & DataFrames - construção e seleção
Carregue um arquivo e analise-o antes de transformar.
import pandas as pd
from io import StringIO
csv = "date,region,revenue\n2025-01-01,East,120\n2025-01-02,West,340\n"
df = pd.read_csv(StringIO(csv), parse_dates=["date"])
print(df.info())
print(df.isna().sum())parse_dates armazena datas/horas como dtypes corretos, não strings.info() mostra contagens não nulas e uso de memória.Relacionado: Limpeza e Transformação de Dados - valores ausentes e dtypes
Use indexação baseada em rótulo e em posição.
import pandas as pd
df = pd.DataFrame({"region": ["East", "West", "East"], "revenue": [120, 340, 280]})
east = df.loc[df["region"] == "East", ["region", "revenue"]]
first_row = df.iloc[0].loc seleciona por rótulos; .iloc seleciona por posição inteira..copy() se for mutar.Relacionado: pandas Series & DataFrames - regras de indexação
Remova ou preencha lacunas explicitamente.
import pandas as pd
import numpy as np
df = pd.DataFrame({"revenue": [120, np.nan, 280]})
filled = df["revenue"].fillna(df["revenue"].median())
dropped = df.dropna(subset=["revenue"])fillna com uma estatística é aceitável para exploração; documente a política para produção.dropna remove linhas - verifique se você não está enviesando agregações.Int64) quando você precisa de inteiros com NA.Relacionado: Limpeza e Transformação de Dados - correções de dtype
Resuma por categoria com split-apply-combine.
import pandas as pd
df = pd.DataFrame({"region": ["East", "West", "East"], "revenue": [120, 340, 280]})
summary = (
df.groupby("region", observed=True)["revenue"]
.agg(["sum", "mean", "count"])
.reset_index()
)groupby divide linhas, aplica uma função por grupo e combina resultados.observed=True pula níveis categóricos não utilizados no pandas 2.x..reset_index() transforma a chave de grupo de volta em uma coluna normal.Relacionado: GroupBy & Agregação - tabelas pivotantes
Combine conjuntos de dados em uma chave compartilhada.
import pandas as pd
orders = pd.DataFrame({"order_id": [1, 2], "region": ["East", "West"]})
revenue = pd.DataFrame({"order_id": [1, 2], "amount": [120, 340]})
merged = orders.merge(revenue, on="order_id", how="inner", validate="one_to_one")how="inner" mantém apenas chaves correspondentes - documente o que você descarta.validate detecta junções acidentais de um-para-muitos precocemente.Relacionado: Junções & Mesclagens - detecção de duplicatas
Agregue dados diários para totais mensais.
import pandas as pd
idx = pd.date_range("2025-01-01", periods=90, freq="D", tz="UTC")
df = pd.DataFrame({"revenue": range(90)}, index=idx)
monthly = df["revenue"].resample("ME").sum().resample."ME" é a frequência de fim de mês no pandas moderno.Relacionado: Séries Temporais - janelas deslizantes e fusos horários
Adie o trabalho e deixe o planejador de consultas otimizar I/O.
import polars as pl
lf = pl.scan_parquet("sales.parquet")
result = (
lf.filter(pl.col("region") == "East")
.group_by("month")
.agg(pl.col("revenue").sum().alias("total"))
.collect()
)
print(result).collect() executa o plano - mantenha a lógica preguiçosa até precisar de dados materializados.Relacionado: Polars - padrões de avaliação preguiçosa
Reduza um frame largo antes que ele esgote a RAM.
import pandas as pd
df = pd.read_csv("large.csv", dtype={"region": "category", "units": "int32"})
df["revenue"] = pd.to_numeric(df["revenue"], downcast="float")
print(df.memory_usage(deep=True).sum() / 1e6, "MB")category armazena strings repetidas uma vez - ideal para colunas de baixa cardinalidade.downcast escolhe o menor dtype numérico que se ajusta aos seus valores.memory_usage(deep=True) após cada carga pesada.Relacionado: Desempenho e Memória - chunking e Arrow
Versões da Stack: Esta página foi escrita para Python 3.14.0 (estável 3.14, manutenção 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+, e uv 0.6+.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026