Pandas 3.0 chega com dtype 'str' por defeito e copy-on-write
Atualizado em March 01, 2026 4 minutos de leitura
O pandas 3.0.0, lançado a 21 de janeiro de 2026, muda duas peças centrais do trabalho com DataFrames: texto passa a ser inferido como dtype str por defeito e o Copy-on-Write (CoW) torna-se o comportamento padrão para cópias e vistas. O resultado é uma API mais previsível e menos propensa a efeitos colaterais inesperados em subconjuntos.
A 17 de fevereiro de 2026, o projeto publicou o pandas 3.0.1, um patch release da série 3.0.x com correções de regressões após o major upgrade. Para quem mantém pipelines e notebooks, a atualização é positiva, mas exige revisão das validações de dtype, dos valores em falta e dos padrões de atribuição encadeada.
O que aconteceu
As notas oficiais “What’s new in 3.0.0 (January 21, 2026)” descrevem o pandas 3.0.0 como major release com mudanças incompatíveis e recomendam um caminho de migração: atualizar primeiro para pandas 2.3 e resolver warnings e só depois avançar para 3.0.
O requisito mínimo também subiu: o pandas 3.0.0 suporta Python 3.11 ou superior e aumenta a versão mínima do NumPy para 1.26.0.
A primeira grande mudança é o dtype de texto por defeito. Em pandas anteriores, colunas de texto eram tipicamente object. A partir do pandas 3.0, ao criar Series/DataFrames ou ao ler dados (por exemplo, read_csv()), o pandas passa a inferir strings como dtype: str.
Este dtype é suportado por PyArrow quando pyarrow está instalado, com fallback para object quando não está.
A documentação destaca três implicações:
strsó pode conter strings (ou missing). Atribuir um valor não string deixa de ser “aceite” por acidente.- A sentinela de missing em
stré sempreNaN(np.nan), ao contrário dopd.NAassociado ao dtype nullablestring. - Checks do tipo `series.dtype == object deixam de ser fiáveis para detetar texto.
A segunda mudança é o Copy-on-Write. A regra é simples: qualquer subset ou resultado de um método comporta-se como uma cópia na API do utilizador, mesmo que, internamente, o pandas use vistas para reduzir cópias.
Com isso, “chained assignment” deixa de funcionar e o SettingWithCopyWarning é removido, porque o padrão passa a ser sempre inválido. A opção mode.copy_on_write deixa de ter efeito e está em depreciação.
# Evitar: chained assignment
df["foo"][df["bar"] > 5] = 100
# Preferir: atribuição única e explícita
df.loc[df["bar"] > 5, "foo"] = 100
Além disso, o pandas 3.0 adiciona suporte inicial para pd.col() como sintaxe para expressões (útil em DataFrame.assign()), muda a inferência de unidade em datetime64 e timedelta64 e torna pytz opcional, usando zoneinfo (stdlib) por defeito quando recebe um timezone como string.
Porque é que isto importa
Para quem está a aprender, CoW reduz um tipo de bug difícil: alterar uma Series derivada e, sem querer, modificar o DataFrame original. O resultado é um modelo mental mais direto, com menos “regras escondidas”.
Em ambiente profissional, CoW tende a melhorar code reviews, porque incentiva atribuições atómicas e explícitas com .loc/.iloc em vez de cadeias de indexação.
O dtype str por defeito ajuda a tornar colunas de texto mais consistentes e, quando PyArrow está presente, pode melhorar eficiência de memória e interoperabilidade. Ao mesmo tempo, pode expor dependências antigas: validações que esperavam object, regras de missing que assumiam pd.NA e casts que misturam strings com outros objetos.
As alterações em datetimes são outro ponto prático. Ao fazer parse de strings, o pandas passa a usar microsegundos por defeito (datetime64[us]) e avisa que converter para inteiros pode produzir valores 1000 vezes mais pequenos em casos em que antes eram datetime64[ns]. Para pipelines que escrevem epoch timestamps, isto deve ser testado.
Números-chave
Versões: pandas 3.0.0 (21 de janeiro de 2026); pandas 3.0.1 (17 de fevereiro de 2026).
Runtime: Python 3.11 ou superior.
Dependências: NumPy mínimo 1.26.0; PyArrow mínimo testado 13.0.0.
Strings: dtype: str por defecto; missing sentinel np.nan.
CoW: comportamento padrão e único em pandas 3.0; mode.copy_on_write deixa de ter efeito.
Datetimes: parse de strings por defeito em microsegundos; cast para inteiro pode mudar escala.
Contexto
O pandas vinha a acumular “dívida de usabilidade” em dois temas recorrentes: object como contentor genérico para texto e a ambiguidade entre cópias e vistas. O pandas 3.0 formaliza regras mais consistentes e aproxima-se de práticas que bibliotecas mais recentes promovem, sem mudar a sua filosofia de ferramenta generalista para análise tabular.
O que se segue
Para atualizar com menos risco, siga um roteiro curto:
Garanta Python 3.11+ e NumPy 1.26.0+ em CI e ambientes locais.
Em pandas 2.3, teste o novo dtype de strings antes do salto:
pd.options.future.infer_string = True
Em pandas 2.2, use o modo de aviso para CoW para localizar padrões a corrigir:
pd.options.mode.copy_on_write = "warn"
Elimine chained assignment e normalize operações de datetime (evite astype("int64") sem controlar a unidade).
Depois, avance para a versão patch mais recente da série 3.0.x (por exemplo, 3.0.1, lançada a 17 de fevereiro de 2026) e execute a suite de testes.
Como aprofundar na Code Labs Academy
- Bootcamp de Ciência de Dados e IA: Python, SQL e projetos de dados para consolidar o uso de pandas.
- Cursos gratuitos no Learning Hub: aulas curtas para reforçar fundamentos.
- Workshops gratuitos de tecnologia: prática guiada para fluxos de trabalho reais.
- Portfólio de Python para funções de dados: 9 projetos com conjuntos de dados: ideias de projetos para validar migrações em exemplos concretos.