El panorama de la validación de datos en 2025
(aeturrell.com)- Explicación de las principales herramientas de validación de datos en el momento actual (2025) y recomendaciones según el caso
- La validación de datos es el proceso de verificar automática o semiautomáticamente la calidad de los datos
- Verificación de tipos de datos, conteo de valores faltantes, detección de valores anómalos
- Es posible validar no solo filas de dataframes, sino también valores de entrada de APIs o envíos de formularios
- El usuario puede definir reglas como que los valores de una columna específica deben estar dentro de cierto rango
- Si la validación falla: se puede generar un error o crear un reporte de validación para procesarlo manual o automáticamente
Por qué es importante la validación de datos
- El trabajo de análisis en organismos públicos se divide en dos tipos:
- Análisis ad hoc – trabajo de análisis de una sola vez
- Generación periódica de estadísticas – recopilación y procesamiento regular de nuevos datos
- Es necesario validar los datos antes de que los errores afecten los resultados del análisis
- La validación de datos es efectiva para reducir el riesgo de errores y aumentar la precisión
Principales herramientas de validación de datos
1. Great Expectations
-
Potente herramienta de validación de datos de nivel production-grade
-
Tiene un paquete de código abierto y también ofrece un servicio cloud de pago
-
Ofrece funciones avanzadas:
- Permite automatizaciones como enviar mensajes a Slack cuando falla la validación
-
La configuración es compleja y a menudo requiere conocimientos de ciencia de datos
-
Código de ejemplo:
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}) # Validar que el valor esté entre 1 y 6 expectation = gx.expectations.ExpectColumnValuesToBeBetween(column="passenger_count", min_value=1, max_value=6) validation_result = batch.validate(expectation)Ejemplo de configuración de alerta en Slack cuando falla la validación:
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
- La herramienta más reciente de validación de datos en Python, lanzada en 2024 (creada por RStudio → Posit)
- Está influida por Great Expectations y ofrece una sintaxis intuitiva
- Soporta múltiples fuentes de datos como Polars, Pandas y DuckDB
- Código de ejemplo:
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() ) - Carece de funciones de automatización para acciones posteriores → las acciones posteriores deben manejarse manualmente
3. Pandera
-
Ofrece una API similar a Great Expectations
-
Soporta funciones de pruebas de hipótesis estadísticas
-
Soporta múltiples fuentes de datos como Polars, Geopandas y Pyspark
-
Código de ejemplo:
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) -
Ejemplo de prueba de hipótesis estadí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
- Herramienta de validación basada en diccionarios, no en dataframes
- Adecuada para validar JSON y datos no estructurados
- Se puede integrar con frameworks de API como FastAPI
- Código de ejemplo:
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
- Herramienta de validación basada en diccionarios
- Configuración simple basada en reglas
- Devuelve valores True/False → no lanza errores
- Código de ejemplo:
from cerberus import Validator schema = {'name': {'type': 'string'}} v = Validator(schema) document = {'name': 'john doe'} v.validate(document) # True
6. jsonschema
- Herramienta de validación de datos JSON
- Definición basada en esquemas
- Código de ejemplo:
from jsonschema import validate schema = { "type": "object", "properties": { "price": {"type": "number"}, "name": {"type": "string"} } } validate(instance={"name": "Eggs", "price": 34.99}, schema=schema)
Qué herramienta usar en el sector público
- Validación de dataframes o bases de datos:
- Uso en sistemas de producción → se recomienda Great Expectations
- Validación simple → se recomienda Pandera
- Probar una herramienta nueva → se recomienda Pointblank
- Validación de APIs o entradas de usuario:
- Datos no estructurados → se recomienda Pydantic
- Validación simple de JSON:
- Se recomienda jsonschema
- Si se necesita una validación sencilla:
- Se recomienda Cerberus
Aún no hay comentarios.