🔍 Wimsey
Wimsey es una biblioteca ligera, flexible y totalmente de código abierto para contratos de datos.
- 🐋 Trae tu propia biblioteca de dataframes: Construido sobre Narwhals para que tus pruebas se realicen de forma nativa en tu propia biblioteca de dataframes (incluyendo Pandas, Polars, Pyspark, Dask, DuckDB, CuDF, Rapids, Arrow y Modin)
- 🎍 Trae tu propio formato de contrato: Escribe contratos en yaml, json o python - ¡el que prefieras!
- 🪶 Ultra Ligero: Diseñado para importaciones rápidas y con una sobrecarga mínima con solo dos dependencias (Narwhals y FSSpec)
- 🥔 API simple y fácil: Baja carga mental con dos funciones simples para probar dataframes, y una dataclass sencilla para resultados.
¿Qué es un contrato de datos?
Además de ser una buena palabra de moda para mencionar en tu próximo evento de datos, los contratos de datos son una buena forma de probar valores de datos en puntos límite. Idealmente, todos los datos serían utilizables cuando los recibes, pero probablemente ya hayas descubierto que no siempre es así.
Un contrato de datos es una expresión de lo que debería ser cierto sobre algunos datos - podríamos querer verificar que las únicas columnas que existen son first_name, last_name y rating, o podríamos querer verificar que rating es un número menor que 10.
Wimsey te permite escribir contratos en json, yaml o python, así se verían las verificaciones anteriores en yaml:
- test: columns_should
be:
- first_name
- last_name
- rating
- column: rating
test: max_should
be_less_than_or_equal_to: 10Wimsey entonces puede ejecutar pruebas para usted de un par de maneras, validate - que lanzará un error si las pruebas fallan, y de lo contrario devolverá su dataframe - y test, que le dará un desglose detallado de éxitos y fallos de pruebas individuales.
Validate está diseñado para funcionar bien con los métodos pipe de polars o pandas como una protección útil:
import polars as pl
import wimseydf = (
pl.read_csv("hopefully_nice_data.csv")
.pipe(wimsey.validate, "tests.json")
.group_by("name").agg(pl.col("value").sum())
)
La prueba es una única llamada a función, que retorna un tipo de dato FinalResult:
import pandas as pd
import wimseydf = pd.read_csv("hopefully_nice_data.csv")
results = wimsey.test(df, "tests.yaml")
if results.success:
print("Yay we have good data! 🥳")
else:
print(f"Oh nooo, something's up! 😭")
print([i for i in results.results if not i.success])
Hoja de ruta, Contribuciones y Comentarios
Wimsey está replicado en github, pero alojado y desarrollado en codeberg. Se aceptan problemas y solicitudes de extracción en ambos.
El enfoque en este momento está en refinar el perfilado y la generación de pruebas, si tienes pruebas o funciones que te serían útiles, ¡no dudes en contactar!
--- Tranlated By Open Ai Tx | Last indexed: 2025-12-10 ---