Oczekiwania warunkowe

Wprowadzenie do jakości danych z Great Expectations

Davina Moossazadeh

Data Scientist

Czym są oczekiwania warunkowe?

Oczekiwania warunkowe — oczekiwania dotyczące podzbioru danych

Dlaczego? Niektóre zmienne zależą od wartości innych zmiennych

Na przykład:

  • Oczekiwanie, że wartość kolumny star_rating wynosi 0 dla wszystkich wierszy z wartością 0 w kolumnie review_count
1 https://docs.greatexpectations.io/docs/core/customize_expectations/expectation_conditions/
Wprowadzenie do jakości danych z Great Expectations

Składnia oczekiwań warunkowych

Oczekiwania dotyczące zbioru danych można przekształcić w oczekiwania warunkowe za pomocą dwóch dodatkowych argumentów:

  1. row_condition
    • wyrażenie logiczne w postaci ciągu znaków definiujące podzbiór danych, do którego stosuje się oczekiwanie warunkowe
  2. condition_parser
    • ciąg znaków definiujący składnię row_condition
Wprowadzenie do jakości danych z Great Expectations

Analizator warunków

Przy użyciu oczekiwań warunkowych z pandas ten argument musi być ustawiony na "pandas"

expectation = gx.Expect...(
    **kwargs,
    condition_parser="pandas",
    row_condition=...
)
Wprowadzenie do jakości danych z Great Expectations

Warunek wiersza

Składnia 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 w 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")'
Wprowadzenie do jakości danych z Great Expectations

Warunek wiersza

Zasady
  1. Nie używać pojedynczych cudzysłowów wewnątrz

    • row_condition="foo=='Two Two'"
    • row_condition='foo=="Two Two"' Znacznik wyboru wskazujący, że składnia `row_condition` w drugim punkcie jest poprawna.
  2. Nie używać podziałów wiersza wewnątrz

    • row_condition="""
      foo=="Two Two"
      """  
      
    • row_condition='foo=="Two Two"' Znacznik wyboru wskazujący, że składnia `row_condition` w drugim punkcie jest poprawna.
Wprowadzenie do jakości danych z Great Expectations

Przykładowe oczekiwanie: ocena gwiazdkowa

Bez warunku
expectation = gx.expectations.\
ExpectColumnValuesToBeBetween(
    column="price_usd",
    max_value=10,
)
validation_results = batch.validate(
    expect=expectation
)
print(validation_results.success)
False
Z warunkiem
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
Wprowadzenie do jakości danych z Great Expectations

Czas na ćwiczenia!

Wprowadzenie do jakości danych z Great Expectations

Preparing Video For Download...