Expectativas condicionales

Introducción a la calidad de datos con Great Expectations

Davina Moossazadeh

Data Scientist

¿Qué son las expectativas condicionales?

Expectativas condicionales: expectativas para un subconjunto de datos

¿Por qué? Porque algunas variables dependen de los valores de otras

Por ejemplo:

  • Una Expectation de que la columna star_rating sea 0 en todas las filas con review_count igual a 0
1 https://docs.greatexpectations.io/docs/core/customize_expectations/expectation_conditions/
Introducción a la calidad de datos con Great Expectations

Sintaxis de expectativas condicionales

Las Dataset Expectations pueden volverse condicionales con dos argumentos extra:

  1. row_condition
    • cadena booleana que define el subconjunto al que aplicar la Expectation condicional
  2. condition_parser
    • cadena que define la sintaxis de row_condition
Introducción a la calidad de datos con Great Expectations

El analizador de condiciones

Al usar expectativas condicionales con pandas, este argumento debe ser "pandas"

expectation = gx.Expect...(
    **kwargs,
    condition_parser="pandas",
    row_condition=...
)
Introducción a la calidad de datos con Great Expectations

La condición de fila

Sintaxis de 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 en 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")'
Introducción a la calidad de datos con Great Expectations

La condición de fila

Reglas
  1. No uses comillas simples dentro

    • row_condition="foo=='Two Two'"
    • row_condition='foo=="Two Two"' Marca de verificación que indica que la sintaxis de `row_condition` en el segundo punto es correcta.
  2. No uses saltos de línea dentro de

    • row_condition="""
      foo=="Two Two"
      """  
      
    • row_condition='foo=="Two Two"' Marca de verificación que indica que la sintaxis de `row_condition` en el segundo punto es correcta.
Introducción a la calidad de datos con Great Expectations

Ejemplo de Expectation: valoración por estrellas

Sin condición
expectation = gx.expectations.\
ExpectColumnValuesToBeBetween(
    column="price_usd",
    max_value=10,
)
validation_results = batch.validate(
    expect=expectation
)
print(validation_results.success)
False
Condicional
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
Introducción a la calidad de datos con Great Expectations

¡Vamos a practicar!

Introducción a la calidad de datos con Great Expectations

Preparing Video For Download...