Bedingte Expectations

Einführung in Data Quality mit Great Expectations

Davina Moossazadeh

Data Scientist

Was sind bedingte Expectations?

Bedingte Expectations – Expectations für einen Datenausschnitt

Warum? Manche Variablen hängen von Werten anderer Variablen ab

Beispiel:

  • Eine Expectation, dass star_rating in allen Zeilen 0 ist, in denen review_count 0 ist
1 https://docs.greatexpectations.io/docs/core/customize_expectations/expectation_conditions/
Einführung in Data Quality mit Great Expectations

Syntax für bedingte Expectations

Dataset-Expectations können mit zwei zusätzlichen Argumenten in bedingte Expectations umgewandelt werden:

  1. row_condition
    • Boolescher Ausdruck (String), der den Datenausschnitt definiert, auf den die bedingte Expectation angewendet wird
  2. condition_parser
    • String, der die Syntax von row_condition festlegt
Einführung in Data Quality mit Great Expectations

Der Condition Parser

Bei pandas muss dieses Argument auf "pandas" gesetzt werden

expectation = gx.Expect...(
    **kwargs,
    condition_parser="pandas",
    row_condition=...
)
Einführung in Data Quality mit Great Expectations

Die Zeilenbedingung

pandas-Syntax
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")
Great Expectations row_condition
'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")'
Einführung in Data Quality mit Great Expectations

Die Zeilenbedingung

Regeln
  1. Keine einfachen Anführungszeichen innerhalb von

    • row_condition="foo=='Two Two'"
    • row_condition='foo=="Two Two"' Häkchen, das anzeigt, dass die Syntax von `row_condition` im zweiten Aufzählungspunkt korrekt ist.
  2. Keine Zeilenumbrüche innerhalb von

    • row_condition="""
      foo=="Two Two"
      """  
      
    • row_condition='foo=="Two Two"' Häkchen, das anzeigt, dass die Syntax von `row_condition` im zweiten Aufzählungspunkt korrekt ist.
Einführung in Data Quality mit Great Expectations

Beispiel-Expectation: Sternebewertung

Ohne Bedingung
expectation = gx.expectations.\
ExpectColumnValuesToBeBetween(
    column="price_usd",
    max_value=10,
)
validation_results = batch.validate(
    expect=expectation
)
print(validation_results.success)
False
Mit Bedingung
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
Einführung in Data Quality mit Great Expectations

Lass uns üben!

Einführung in Data Quality mit Great Expectations

Preparing Video For Download...