Espérances conditionnelles

Introduction à la qualité des données avec Great Expectations

Davina Moossazadeh

Data Scientist

Qu'est-ce qu'une espérance conditionnelle ?

Espérances conditionnelles – Espérances pour un sous-ensemble des données

Pourquoi ? Parce que certaines variables dépendent des valeurs d'autres variables

Par exemple :

  • Une espérance où la colonne star_rating vaut 0 pour toutes les lignes où review_count vaut 0
1 https://docs.greatexpectations.io/docs/core/customize_expectations/expectation_conditions/
Introduction à la qualité des données avec Great Expectations

Syntaxe des espérances conditionnelles

Les espérances sur un ensemble de données peuvent devenir conditionnelles avec deux arguments supplémentaires :

  1. row_condition
    • une chaîne d'expression booléenne qui définit le sous-ensemble de données auquel appliquer l'espérance conditionnelle
  2. condition_parser
    • une chaîne qui définit la syntaxe de row_condition
Introduction à la qualité des données avec Great Expectations

L'analyseur de condition

Avec pandas, ce paramètre doit être réglé à "pandas"

expectation = gx.Expect...(
    **kwargs,
    condition_parser="pandas",
    row_condition=...
)
Introduction à la qualité des données avec Great Expectations

La condition sur les lignes

Syntaxe pandas
df["foo"] == 'Two Two'
df["foo"].notNull()
df["foo"] <= datetime.date(2023, 3, 13)
(df["foo"] < 5) & (df["foo"] >= 3.14)

df["foo"].str.startswith("bar")
row_condition dans Great Expectations
'foo == "Two Two"'
'foo.notNull()'
'foo <= datetime.date(2023, 3, 13)'
'(foo > 5) & (foo <= 3.14)'
'foo > 5 and foo <= 3.14'
'foo.str.startswith("bar")'
Introduction à la qualité des données avec Great Expectations

La condition sur les lignes

Règles
  1. N'utilisez pas de guillemets simples à l'intérieur

    • row_condition="foo=='Two Two'"
    • row_condition='foo=="Two Two"' Coche indiquant que la syntaxe de `row_condition` du deuxième point est correcte.
  2. N'utilisez pas de sauts de ligne à l'intérieur

    • row_condition="""
      foo=="Two Two"
      """  
      
    • row_condition='foo=="Two Two"' Coche indiquant que la syntaxe de `row_condition` du deuxième point est correcte.
Introduction à la qualité des données avec Great Expectations

Exemple d'espérance : cote par étoiles

Aucune condition
expectation = gx.expectations.\
ExpectColumnValuesToBeBetween(
    column="price_usd",
    max_value=10,
)
validation_results = batch.validate(
    expect=expectation
)
print(validation_results.success)
False
Conditionnelle
expectation = gx.expectations.\
ExpectColumnValuesToBeBetween(
    column="price_usd",
    max_value=10,
    condition_parser='pandas',
    row_condition='mark_price_usd < 10',
)
validation_results = batch.validate(
    expect=expectation
)
print(validation_results.success)
True
Introduction à la qualité des données avec Great Expectations

Passons à la pratique !

Introduction à la qualité des données avec Great Expectations

Preparing Video For Download...