O panorama da validação de dados em 2025
(aeturrell.com)- Explicação das principais ferramentas de validação de dados no momento atual (2025) e recomendações por cenário
- Validação de dados (verificação de validade) é o processo de verificar automaticamente ou semiautomaticamente a qualidade dos dados
- Verificação de tipos de dados, contagem de valores ausentes, detecção de valores anormais
- É possível validar não apenas linhas de dataframes, mas também entradas de APIs ou valores enviados por formulários
- O usuário pode definir regras, como exigir que os valores de uma determinada coluna estejam dentro de um intervalo específico
- Em caso de falha na validação: é possível gerar um erro, criar um relatório de validação e então tratar o caso manual ou automaticamente
Por que a validação de dados é importante
- O trabalho analítico em órgãos públicos se divide em dois tipos:
- Análise ad hoc – trabalho analítico pontual
- Geração periódica de estatísticas – coleta e processamento regulares de novos dados
- É necessário validar os dados antes que erros impactem os resultados da análise
- A validação de dados é eficaz para reduzir o risco de erros e aumentar a precisão
Principais ferramentas de validação de dados
1. Great Expectations
-
Ferramenta poderosa de validação de dados em nível de produção
-
Possui pacote open source e também oferece serviço de nuvem pago
-
Oferece recursos avançados:
- É possível automatizar ações, como envio de mensagens no Slack em caso de falha na validação
-
A configuração é complexa e muitas vezes exige conhecimento em ciência de dados
-
Código de exemplo:
import great_expectations as gx import pandas as pd context = gx.get_context() df = pd.read_csv("https://raw.githubusercontent.com/great-expectations/gx_tutorials/…;) data_source = context.data_sources.add_pandas("pandas") data_asset = data_source.add_dataframe_asset(name="pd dataframe asset") batch_definition = data_asset.add_batch_definition_whole_dataframe("batch definition") batch = batch_definition.get_batch(batch_parameters={"dataframe": df}) # Valida se o valor está entre 1 e 6 expectation = gx.expectations.ExpectColumnValuesToBeBetween(column="passenger_count", min_value=1, max_value=6) validation_result = batch.validate(expectation)Exemplo de configuração de alerta no Slack em caso de falha na validação:
from gx.actions import SlackNotificationAction, UpdateDataDocsAction action_list = [ SlackNotificationAction( name="send_slack_notification_on_failed_expectations", slack_token="${validation_notification_slack_webhook}", slack_channel="${validation_notification_slack_channel}", notify_on="failure", show_failed_expectations=True, ), UpdateDataDocsAction(name="update_all_data_docs"), ]
2. Pointblank
- Ferramenta mais recente de validação de dados em Python, lançada em 2024 (criada pela Posit, ex-RStudio)
- Foi influenciada pelo Great Expectations e oferece uma sintaxe intuitiva
- Suporta várias fontes de dados, como Polars, Pandas e DuckDB
- Código de exemplo:
import pointblank as pb validation = ( pb.Validate(data=pb.load_dataset(dataset="small_table")) .col_vals_gt(columns="d", value=100) .col_vals_le(columns="c", value=5) .col_exists(columns=["date", "date_time"]) .interrogate() ) - Falta de recursos para automatizar ações posteriores → as etapas seguintes precisam ser tratadas manualmente
3. Pandera
-
Oferece uma API semelhante à do Great Expectations
-
Suporta testes de hipóteses estatísticas
-
Suporta várias fontes de dados, como Polars, Geopandas e Pyspark
-
Código de exemplo:
import pandas as pd import pandera as pa df = pd.DataFrame({ "column1": [1, 4, 0, 10, 9], "column2": [-1.3, -1.4, -2.9, -10.1, -20.4], "column3": ["value_1", "value_2", "value_3", "value_2", "value_1"], }) schema = pa.DataFrameSchema({ "column1": pa.Column(int, checks=pa.Check.le(10)), "column2": pa.Column(float, checks=pa.Check.lt(-1.2)), "column3": pa.Column(str, checks=[ pa.Check.str_startswith("value_"), pa.Check(lambda s: s.str.split("_", expand=True).shape[1] == 2) ]), }) validated_df = schema(df) -
Exemplo de teste de hipótese estatística:
from scipy import stats schema = pa.DataFrameSchema({ "height_in_feet": pa.Column(float, [ pa.Hypothesis.two_sample_ttest( sample1="M", sample2="F", groupby="sex", relationship="greater_than", alpha=0.05, equal_var=True ) ]), "sex": pa.Column(str) }) schema.validate(df)
4. Pydantic
- Ferramenta de validação baseada em dicionários, não em dataframes
- Adequada para validação de JSON e dados não estruturados
- Pode ser integrada a frameworks de API como FastAPI
- Código de exemplo:
from pydantic import BaseModel, PositiveInt from datetime import datetime class User(BaseModel): id: int name: str = 'John Doe' signup_ts: datetime | None tastes: dict[str, PositiveInt] external_data = { 'id': 123, 'signup_ts': '2019-06-01 12:22', 'tastes': {'wine': 9, 'cheese': 7, 'cabbage': '1'} } user = User(**external_data)
5. Cerberus
- Ferramenta de validação baseada em dicionários
- Configuração simples baseada em regras
- Retorna valores True/False → não lança erro
- Código de exemplo:
from cerberus import Validator schema = {'name': {'type': 'string'}} v = Validator(schema) document = {'name': 'john doe'} v.validate(document) # True
6. jsonschema
- Ferramenta de validação de dados JSON
- Definição baseada em esquema
- Código de exemplo:
from jsonschema import validate schema = { "type": "object", "properties": { "price": {"type": "number"}, "name": {"type": "string"} } } validate(instance={"name": "Eggs", "price": 34.99}, schema=schema)
Qual ferramenta usar no setor público
- Validação de dataframes ou bancos de dados:
- Uso em sistemas de produção → recomendação: Great Expectations
- Validação simples → recomendação: Pandera
- Testar uma ferramenta mais nova → recomendação: Pointblank
- Validação de APIs ou entrada de usuários:
- Dados não estruturados → recomendação: Pydantic
- Validação simples de JSON:
- recomendação: jsonschema
- Se precisar de validação simples:
- recomendação: Cerberus
Ainda não há comentários.