Aspettative condizionali

Introduzione alla Data Quality con Great Expectations

Davina Moossazadeh

Data Scientist

Cosa sono le Aspettative condizionali?

Aspettative condizionali - Aspettative per un sottoinsieme dei dati

Perché? Perché alcune variabili dipendono dai valori di altre variabili

Per esempio:

  • Un'Expectation che il valore della colonna star_rating sia 0 per tutte le righe con valore 0 in review_count
1 https://docs.greatexpectations.io/docs/core/customize_expectations/expectation_conditions/
Introduzione alla Data Quality con Great Expectations

Sintassi per le Aspettative condizionali

Le Dataset Expectations possono diventare Aspettative condizionali con due argomenti aggiuntivi:

  1. row_condition
    • stringa booleana che definisce il sottoinsieme di dati a cui applicare l'Aspettativa condizionale
  2. condition_parser
    • stringa che definisce la sintassi di row_condition
Introduzione alla Data Quality con Great Expectations

Il condition parser

Quando usi Aspettative condizionali con pandas, imposta questo argomento su "pandas"

expectation = gx.Expect...(
    **kwargs,
    condition_parser="pandas",
    row_condition=...
)
Introduzione alla Data Quality con Great Expectations

La condizione di riga

Sintassi 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")
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")'
Introduzione alla Data Quality con Great Expectations

La condizione di riga

Regole
  1. Non usare apici singoli dentro

    • row_condition="foo=='Two Two'"
    • row_condition='foo=="Two Two"' Segno di spunta che indica che la sintassi di `row_condition` nel secondo punto elenco è corretta.
  2. Non usare interruzioni di riga dentro

    • row_condition="""
      foo=="Two Two"
      """  
      
    • row_condition='foo=="Two Two"' Segno di spunta che indica che la sintassi di `row_condition` nel secondo punto elenco è corretta.
Introduzione alla Data Quality con Great Expectations

Esempio di Expectation: valutazione stellare

Nessuna condizione
expectation = gx.expectations.\
ExpectColumnValuesToBeBetween(
    column="price_usd",
    max_value=10,
)
validation_results = batch.validate(
    expect=expectation
)
print(validation_results.success)
False
Condizionale
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
Introduzione alla Data Quality con Great Expectations

Ayo berlatih!

Introduzione alla Data Quality con Great Expectations

Preparing Video For Download...