Converte, diagnostica, perfila e limpa CSV, Excel, JSON e Parquet: nulos, duplicidade, datas inconsistentes e texto que devia ser número, tudo detectado automaticamente. Também entende CSV com ;/cp1252, CPF/CNPJ e valores em R$, nativamente.
pip install datatool-cli
$ datatool info clientes.csv Arquivo: clientes.csv Linhas: 10 Colunas: 6 Tamanho: 711 bytes Problemas encontrados: ⚠ 3 valores nulos em "email" ⚠ 1 linhas duplicadas ⚠ "data_nascimento" contém 4 formatos de data diferentes ⚠ 10 CPFs com dígito verificador inválido ⚠ "idade" está armazenada como texto mas parece numérica Sugestões: 1. Corrigir tipos → datatool clean clientes.csv --fix-types 2. Remover duplicidades → datatool clean clientes.csv --remove-duplicates 3. Normalizar datas → datatool clean clientes.csv --normalize-dates 4. Tratar valores nulos → datatool clean clientes.csv --drop-null $
info e clean abrem o arquivo e apontam os problemas, coluna por coluna, antes de qualquer análise.
O óbvio, automático. Valores nulos, linhas duplicadas (inteiras ou por chave, como um ID) e inconsistência de capitalização ("Porto Alegre" / "PORTO ALEGRE") saem no primeiro diagnóstico.
Texto que devia ser número. --fix-types reconhece tanto 1,234.56 quanto 1.234,56 e converte para o tipo certo, sem confundir milhar com decimal.
Qualquer formato comum. Colunas com dd/mm/yyyy, yyyy-mm-dd e outras variações viram ISO 8601 numa única passada.
Suporte nativo ao Brasil. CSV exportado pelo Excel em português (;, cp1252) é detectado sozinho, e CPF/CNPJ são validados pelo dígito verificador.
O mesmo arquivo, antes e depois de datatool clean clientes.csv --trim --normalize-case --normalize-documents masked --remove-duplicates --key cpf --output limpo.csv.
| nome | cidade | cpf |
|---|---|---|
| " Ana Souza "Ana Souza | PORTO ALEGREPorto Alegre | 52998224725529.982.247-25 |
| "joão pereira "joão pereira | porto alegrePorto Alegre | 12345678909123.456.789-09 |
| Ana Souza | Porto Alegre | 52998224725 |
A terceira linha é uma duplicidade por cpf e some no "depois" — --remove-duplicates mantém só a primeira ocorrência.
$ datatool clean clientes_sujos.csv Arquivo: clientes_sujos.csv Linhas: 20 Colunas: 5 nome 1 registros com espaços extras email 1 valores inválidos telefone 3 formatos diferentes cpf 1 valores duplicados cidade "PORTO ALEGRE" "Porto Alegre" "porto alegre"
Sem flags, clean só diagnostica — nada é gravado até você pedir.
Converte entre CSV, JSON, JSONL, Excel, Parquet, Feather, Avro e SQLite. O formato é inferido pela extensão do arquivo.
datatool convert vendas.xlsx vendas.parquet
Abre um arquivo e aponta nulos, duplicidade, datas inconsistentes e texto que devia ser número.
datatool info clientes.csv
Min, max, média, percentis e outliers nas colunas numéricas; cardinalidade e top valores nas categóricas.
datatool profile vendas.csv --key cpf
Corrige o que o info encontrou: espaços, capitalização, duplicidade, nulos, datas, tipos, CPF/CNPJ.
datatool clean clientes.csv --fix-types --output limpo.csv
--format json troca a saída de texto por um documento versionado — o mesmo diagnóstico, em formato que um jq, um notebook ou um pipeline de CI conseguem ler.
--redact-values tira os valores de célula do relatório sem perder as contagens. Serve para colar a saída num chat de IA ou num ticket sem expor dado de cliente — o log de execução também nunca grava valores.
{
"schema_version": 1,
"command": "info",
"status": "ok",
"file": {
"path": "clientes.csv",
"format": "csv",
"rows": 10,
"columns": 6,
"size_bytes": 711
},
"problems": [
{
"category": "nulls",
"column": "email",
"count": 3,
"count_unit": "values",
"message": "3 valores nulos em \"email\""
},
…
],
"suggestions": [ … ]
}
Claude Code, Claude Desktop, Cursor e outros agentes que falam MCP podem chamar info, profile, clean e convert direto, em vez de escrever código de análise do zero a cada conversa.
Todo caminho de arquivo fica restrito ao diretório passado em --root. redact_values vem ligado por padrão nas ferramentas — diferente do CLI — para valores de célula não trafegarem para o modelo sem pedido explícito.
pip install "datatool-cli[mcp]"
{
"mcpServers": {
"datatool": {
"command": "datatool-mcp",
"args": ["--root", "/caminho/do/projeto"]
}
}
}
Publicado no PyPI como datatool-cli; o comando é datatool. Requer Python 3.10 ou mais novo.
$ pip install datatool-cli $ datatool info clientes.csv