Pandas é a biblioteca central da análise de dados em Python. O DataFrame — a estrutura principal do Pandas — é uma tabela com linhas e colunas, como uma planilha Excel, mas programável. Tudo que você faz manualmente no Excel, você pode automatizar com Pandas.

Instalando e importando

pip install pandas openpyxl
import pandas as pd

Criando um DataFrame

dados = {
    "nome": ["Ana", "Bruno", "Carlos", "Diana"],
    "vendas": [12000, 8500, 19000, 6300],
    "regiao": ["Sul", "Norte", "Sul", "Centro"]
}
df = pd.DataFrame(dados)
print(df)

Lendo arquivos

# Ler CSV:
df = pd.read_csv("vendas.csv", sep=";", encoding="utf-8")
# Para arquivos brasileiros com ; e encoding diferente:
df = pd.read_csv("vendas.csv", sep=";", encoding="latin-1")

# Ler Excel:
df = pd.read_excel("vendas.xlsx", sheet_name="Dados")

Explorando os dados

print(df.shape)      # (linhas, colunas)
print(df.dtypes)     # tipo de cada coluna
print(df.head(5))    # primeiras 5 linhas
print(df.tail(3))    # últimas 3 linhas
print(df.info())     # resumo: tipos, nulos, memória
print(df.describe()) # estatísticas: média, std, min, max...

Acessando dados

# Coluna única:
print(df["nome"])
print(df.nome)      # funciona se o nome não tem espaços

# Múltiplas colunas:
print(df[["nome", "vendas"]])

# Linhas por posição (.iloc):
print(df.iloc[0])    # primeira linha
print(df.iloc[0:3])  # linhas 0 a 2

# Linhas por índice (.loc):
print(df.loc[0])     # linha com índice 0

# Filtro:
print(df[df["vendas"] > 10000])
print(df[df["regiao"] == "Sul"])

Salvando resultados

df.to_csv("resultado.csv", index=False, sep=";", encoding="utf-8-sig")
df.to_excel("resultado.xlsx", index=False, sheet_name="Resultado")

index=False evita que o Pandas salve a coluna de índice numérico no arquivo. encoding="utf-8-sig" garante que acentos apareçam corretamente ao abrir no Excel.

Perguntas frequentes

Pandas suporta arquivos grandes (mais de 1 milhão de linhas)?

Sim, mas o desempenho depende da RAM disponível. Para arquivos muito grandes, use o parâmetro chunksize do read_csv() para processar em pedaços, ou considere bibliotecas como Polars (mais rápida) ou Dask (para processamento paralelo).

Como sei se meu DataFrame tem dados nulos?

df.isnull().sum() retorna o número de nulos por coluna. df.isnull().any() retorna True para colunas que têm algum nulo.