← retour aux snippets

Pandera: schémas pour DataFrames

valider types, plages et contraintes au runtime

python validation #pandera#validation#schema

Pandera: schémas pour DataFrames

objectif

Expliquer et montrer comment valider types, plages et contraintes au runtime.

code minimal

import pandas as pd
import pandera as pa
from pandera import Column, DataFrameSchema, Check

schema = DataFrameSchema({
    "age": Column(pa.Int64, Check.in_range(0, 120), nullable=False),
    "email": Column(pa.String, Check.str_matches(r"^[^@]+@[^@]+\.[^@]+$"))
})

df = pd.DataFrame({"age":[10, 25, 300], "email":["a@x.io","bad","c@x.io"]})
try:
    schema.validate(df, lazy=True)
except pa.errors.SchemaErrors as e:
    print(len(e.failure_cases))

utilisation

# corriger puis revalider
df.loc[2, "age"] = 30
df.loc[1, "email"] = "b@x.io"
schema.validate(df)

variante(s) utile(s)

# schéma orienté objet
class Users(pa.SchemaModel):
    age: pa.typing.Series[int] = pa.Field(ge=0, le=120)
    email: pa.typing.Series[str] = pa.Field(str_matches=r"^[^@]+@[^@]+\.[^@]+$")
# Users.validate(df)

notes

  • lazy=True agrège les erreurs au lieu d’échouer au premier écart.
  • Utilisez SchemaModel pour l’intégration avec type hints.