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:

  • str só pode conter strings (ou missing). Atribuir um valor não string deixa de ser “aceite” por acidente.
  • A sentinela de missing em str é sempre NaN (np.nan), ao contrário do pd.NA associado ao dtype nullable string.
  • 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

Perguntas frequentes

O que muda com o dtype `str` por defeito no pandas 3.0?

Colunas de texto deixam de ser inferidas como object e passam a ser inferidas como str. Isso pode afetar validações de dtype e o tratamento de valores em falta, já que o sentinela passa a ser np.nan.

"O que é Copy-on-Write e por que é que o meu código pode “quebrar”?

Com Copy-on-Write, resultados de indexação/métodos comportam-se como cópias na API do utilizador. Padrões de chained assignment (por exemplo, df['col'][mask] = ...) deixam de funcionar de forma consistente e devem ser reescritos com .loc/.iloc.

O pandas 3.0 funciona com Python 3.10?

Não. O anúncio oficial do lançamento indica que o pandas 3.0.0 suporta Python 3.11 ou superior, pelo que ambientes em 3.10 precisam de ser atualizados antes do upgrade.

Qual é a forma mais segura de atualizar para pandas 3.0?

O projeto recomenda atualizar primeiro para pandas 2.3 e resolver warnings, e só depois migrar para 3.0. Em seguida, execute a suite de testes, procure chained assignment e valide regras de dtype/missing, sobretudo em colunas de texto e datas.

Serviços de carreira

Acompanhamento de carreira personalizado para começar na área de tecnologia. Inclui revisão de currículo, entrevistas simuladas e insights do setor para você apresentar suas novas competências com confiança.