Le paysage de la validation des données en 2025
(aeturrell.com)- Présentation des principaux outils de validation des données actuels (en 2025) et recommandations selon les cas d’usage
- La validation des données consiste à vérifier automatiquement ou semi-automatiquement la qualité des données
- Vérification des types de données, comptage des valeurs manquantes, détection des valeurs anormales
- Il est possible de valider non seulement les lignes d’un dataframe, mais aussi les entrées d’API ou les valeurs soumises via des formulaires
- L’utilisateur peut définir des règles, par exemple qu’une certaine colonne doit contenir des valeurs comprises dans une plage donnée
- En cas d’échec de validation : il est possible de lever une erreur, de générer un rapport de validation, puis de traiter le problème manuellement ou automatiquement
Pourquoi la validation des données est importante
- Les travaux d’analyse des organismes publics se divisent en deux grandes catégories :
- Analyses ad hoc – travaux d’analyse ponctuels
- Production statistique régulière – collecte et traitement réguliers de nouvelles données
- Il est nécessaire de valider les données avant que les erreurs n’affectent les résultats d’analyse
- La validation des données est efficace pour réduire le risque d’erreur et améliorer la précision
Principaux outils de validation des données
1. Great Expectations
-
Outil de validation des données puissant, adapté à un niveau de production
-
Dispose d’un package open source et propose également un service cloud payant
-
Offre des fonctionnalités avancées :
- automatisation possible, par exemple l’envoi de messages Slack en cas d’échec de validation
-
La configuration est complexe et nécessite souvent des compétences en data science
-
Exemple de code :
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}) # Vérifier que les valeurs sont comprises entre 1 et 6 expectation = gx.expectations.ExpectColumnValuesToBeBetween(column="passenger_count", min_value=1, max_value=6) validation_result = batch.validate(expectation)Exemple de configuration d’une alerte Slack en cas d’échec de validation :
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
- Outil de validation des données Python récent, lancé en 2024 (créé par RStudio → Posit)
- Influencé par Great Expectations et propose une syntaxe intuitive
- Prend en charge diverses sources de données comme Polars, Pandas et DuckDB
- Exemple de code :
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() ) - Manque de fonctionnalités d’automatisation des actions de suivi → les actions ultérieures doivent être traitées manuellement
3. Pandera
-
Propose une API similaire à Great Expectations
-
Prend en charge les tests d’hypothèse statistiques
-
Prend en charge diverses sources de données comme Polars, Geopandas et Pyspark
-
Exemple de code :
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) -
Exemple de test d’hypothèse statistique :
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
- Outil de validation fondé sur des dictionnaires, et non sur des dataframes
- Adapté à la validation de données JSON et non structurées
- Peut s’intégrer à des frameworks d’API comme FastAPI
- Exemple de code :
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
- Outil de validation fondé sur des dictionnaires
- Configuration simple basée sur des règles
- Retourne une valeur True/False → ne lève pas d’erreur
- Exemple de code :
from cerberus import Validator schema = {'name': {'type': 'string'}} v = Validator(schema) document = {'name': 'john doe'} v.validate(document) # True
6. jsonschema
- Outil de validation pour les données JSON
- Définition fondée sur un schéma
- Exemple de code :
from jsonschema import validate schema = { "type": "object", "properties": { "price": {"type": "number"}, "name": {"type": "string"} } } validate(instance={"name": "Eggs", "price": 34.99}, schema=schema)
Quel outil utiliser dans le secteur public ?
- Validation de dataframes ou de bases de données :
- usage en système de production → Great Expectations recommandé
- validation simple → Pandera recommandé
- envie d’essayer un outil récent → Pointblank recommandé
- Validation d’API ou d’entrées utilisateur :
- données non structurées → Pydantic recommandé
- Validation JSON simple :
- jsonschema recommandé
- Si une validation très simple suffit :
- Cerberus recommandé
Aucun commentaire pour le moment.