條件式 Expectation

Great Expectations 資料品質入門

Davina Moossazadeh

Data Scientist

什麼是條件式 Expectation?

條件式 Expectation-只對資料子集套用的 Expectation

為什麼?因為有些變數會依賴其他變數的值。

例如:

  • 一個 Expectation:對所有 review_count0 的列,欄位 star_rating 的值必須是 0
1 https://docs.greatexpectations.io/docs/core/customize_expectations/expectation_conditions/
Great Expectations 資料品質入門

條件式 Expectation 的語法

將資料集層級的 Expectation 轉成條件式 Expectation,需要多加兩個引數:

  1. row_condition
    • 布林運算式字串,定義要套用條件式 Expectation 的資料子集。
  2. condition_parser
    • 指定 row_condition 語法的字串。
Great Expectations 資料品質入門

condition parser

在 pandas 中實作條件式 Expectation 時,這個引數必須設為 "pandas"

expectation = gx.Expect...(
    **kwargs,
    condition_parser="pandas",
    row_condition=...
)
Great Expectations 資料品質入門

row condition

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")'
Great Expectations 資料品質入門

row condition

規則
  1. 內文不要用單引號。

    • row_condition="foo=='Two Two'"
    • row_condition='foo=="Two Two"' 核取記號,表示第二個項目的 `row_condition` 語法正確。
  2. 內文不要有斷行。

    • row_condition="""
      foo=="Two Two"
      """  
      
    • row_condition='foo=="Two Two"' 核取記號,表示第二個項目的 `row_condition` 語法正確。
Great Expectations 資料品質入門

Expectation 範例:star rating

無條件
expectation = gx.expectations.\
ExpectColumnValuesToBeBetween(
    column="price_usd",
    max_value=10,
)
validation_results = batch.validate(
    expect=expectation
)
print(validation_results.success)
False
加上條件
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
Great Expectations 資料品質入門

一起來練習吧!

Great Expectations 資料品質入門

Preparing Video For Download...