pandera.api.checks.Check¶
- class pandera.api.checks.Check(check_fn, groups=None, groupby=None, ignore_na=True, element_wise=False, name=None, error=None, raise_warning=False, n_failure_cases=None, title=None, description=None, statistics=None, strategy=None, **check_kwargs)[source]¶
检查数据对象是否具有某些属性。
对数据对象应用验证函数。
- Parameters:
check_fn (
Callable) –一个用于检查数据对象的函数。对于列或系列模式检查,如果 element_wise 为 True,则此函数应具有签名:
Callable[[pd.Series], Union[pd.Series, bool]],输出系列是一个布尔向量。如果 element_wise 为 False,则此函数应具有以下签名:
Callable[[Any], bool],其中Any是列中的一个元素。对于 DataFrame 模式检查,如果 element_wise=True,fn 应具有签名:
Callable[[pd.DataFrame], Union[pd.DataFrame, pd.Series, bool]],输出的数据框 或系列包含布尔值。如果 element_wise 为 True,fn 将应用于数据框的每一行,具有以下签名
Callable[[pd.Series], bool]其中系列输入是一行数据框。groups (
Union[str,List[str],None]) – 传递给fn 可调用的字典输入将受限于groups指定的组。groupby (
Union[str,List[str],Callable,None]) –如果提供了字符串或字符串列表,这些列将用于分组列系列。如果传递了一个可调用对象,预期的签名是:
Callable[ [pd.DataFrame], pd.core.groupby.DataFrameGroupBy]在
Column检查的情况下,此函数可以访问整个数据框,但Column.name是从此DataFrameGroupby对象中选择的,以便将SeriesGroupBy对象传递给check_fn。指定groupby参数会改变
check_fn的签名为:Callable[[Dict[Union[str, Tuple[str]], pd.Series]], Union[bool, pd.Series]]# noqa其中输入是一个将键映射到列/数据框子集的字典。
ignore_na (
bool) – 如果为 True,在判断检查是否通过或失败时将忽略空值。对于数据框,忽略任何包含空值的行。新版本 0.4.0 中新增element_wise (
bool) – 是否以逐元素的方式应用验证器。如果是bool,则假设所有检查应逐列应用。如果是列表,则元素的数量应与检查的数量相同。raise_warning (
bool) – 如果为 True,抛出一个 SchemaWarning 而不是抛出一个 SchemaError,用于特定检查。这一选项应谨慎使用,在检查失败是信息性的情况下,并且不应停止程序的执行时。check_kwargs – 传递给
check_fn的关键字参数
- Example:
下面的示例使用了
pandas,但适用于任何支持的 dataframe libraries。>>> import pandas as pd >>> import pandera as pa >>> >>> >>> # column checks are vectorized by default >>> check_positive = pa.Check(lambda s: s > 0) >>> >>> # define an element-wise check >>> check_even = pa.Check(lambda x: x % 2 == 0, element_wise=True) >>> >>> # checks can be given human-readable metadata >>> check_with_metadata = pa.Check( ... lambda x: True, ... title="Always passes", ... description="This check always passes." ... ) >>> >>> # specify assertions across categorical variables using `groupby`, >>> # for example, make sure the mean measure for group "A" is always >>> # larger than the mean measure for group "B" >>> check_by_group = pa.Check( ... lambda measures: measures["A"].mean() > measures["B"].mean(), ... groupby=["group"], ... ) >>> >>> # define a wide DataFrame-level check >>> check_dataframe = pa.Check( ... lambda df: df["measure_1"] > df["measure_2"]) >>> >>> measure_checks = [check_positive, check_even, check_by_group] >>> >>> schema = pa.DataFrameSchema( ... columns={ ... "measure_1": pa.Column(int, checks=measure_checks), ... "measure_2": pa.Column(int, checks=measure_checks), ... "group": pa.Column(str), ... }, ... checks=check_dataframe ... ) >>> >>> df = pd.DataFrame({ ... "measure_1": [10, 12, 14, 16], ... "measure_2": [2, 4, 6, 8], ... "group": ["B", "B", "A", "A"] ... }) >>> >>> schema.validate(df)[["measure_1", "measure_2", "group"]] measure_1 measure_2 group 0 10 2 B 1 12 4 B 2 14 6 A 3 16 8 A
请查看 这里 获取更多使用详情。
属性
one_sample_ttesttwo_sample_ttestBACKEND_REGISTRYCHECK_FUNCTION_REGISTRYREGISTERED_CUSTOM_CHECKS方法
- __init__(check_fn, groups=None, groupby=None, ignore_na=True, element_wise=False, name=None, error=None, raise_warning=False, n_failure_cases=None, title=None, description=None, statistics=None, strategy=None, **check_kwargs)[source]¶
对数据对象应用验证函数。
- Parameters:
check_fn (
Callable) –一个用于检查数据对象的函数。对于列或系列模式检查,如果 element_wise 为 True,则此函数应具有签名:
Callable[[pd.Series], Union[pd.Series, bool]],输出系列是一个布尔向量。如果 element_wise 为 False,则此函数应具有以下签名:
Callable[[Any], bool],其中Any是列中的一个元素。对于 DataFrame 模式检查,如果 element_wise=True,fn 应具有签名:
Callable[[pd.DataFrame], Union[pd.DataFrame, pd.Series, bool]],输出的数据框 或系列包含布尔值。如果 element_wise 为 True,fn 将应用于数据框的每一行,具有以下签名
Callable[[pd.Series], bool]其中系列输入是一行数据框。groups (
Union[str,List[str],None]) – 传递给fn 可调用的字典输入将受限于groups指定的组。groupby (
Union[str,List[str],Callable,None]) –如果提供了字符串或字符串列表,这些列将用于分组列系列。如果传递了一个可调用对象,预期的签名是:
Callable[ [pd.DataFrame], pd.core.groupby.DataFrameGroupBy]在
Column检查的情况下,此函数可以访问整个数据框,但Column.name是从此DataFrameGroupby对象中选择的,以便将SeriesGroupBy对象传递给check_fn。指定groupby参数会改变
check_fn的签名为:Callable[[Dict[Union[str, Tuple[str]], pd.Series]], Union[bool, pd.Series]]# noqa其中输入是一个将键映射到列/数据框子集的字典。
ignore_na (
bool) – 如果为 True,则在判断检查是否通过或失败时将忽略空值。对于数据框,忽略任何包含空值的行。 新版本 0.4.0 中新增element_wise (
bool) – 是否以逐元素的方式应用验证器。如果是bool,则假设所有检查应逐列应用。如果是列表,则元素的数量应与检查的数量相同。raise_warning (
bool) – 如果为 True,抛出一个 SchemaWarning 而不是抛出一个 SchemaError,用于特定检查。这一选项应谨慎使用,在检查失败是信息性的情况下,并且不应停止程序的执行时。check_kwargs – 传递给
check_fn的关键字参数
- Example:
下面的示例使用了
pandas,但适用于任何支持的 dataframe libraries。>>> import pandas as pd >>> import pandera as pa >>> >>> >>> # column checks are vectorized by default >>> check_positive = pa.Check(lambda s: s > 0) >>> >>> # define an element-wise check >>> check_even = pa.Check(lambda x: x % 2 == 0, element_wise=True) >>> >>> # checks can be given human-readable metadata >>> check_with_metadata = pa.Check( ... lambda x: True, ... title="Always passes", ... description="This check always passes." ... ) >>> >>> # specify assertions across categorical variables using `groupby`, >>> # for example, make sure the mean measure for group "A" is always >>> # larger than the mean measure for group "B" >>> check_by_group = pa.Check( ... lambda measures: measures["A"].mean() > measures["B"].mean(), ... groupby=["group"], ... ) >>> >>> # define a wide DataFrame-level check >>> check_dataframe = pa.Check( ... lambda df: df["measure_1"] > df["measure_2"]) >>> >>> measure_checks = [check_positive, check_even, check_by_group] >>> >>> schema = pa.DataFrameSchema( ... columns={ ... "measure_1": pa.Column(int, checks=measure_checks), ... "measure_2": pa.Column(int, checks=measure_checks), ... "group": pa.Column(str), ... }, ... checks=check_dataframe ... ) >>> >>> df = pd.DataFrame({ ... "measure_1": [10, 12, 14, 16], ... "measure_2": [2, 4, 6, 8], ... "group": ["B", "B", "A", "A"] ... }) >>> >>> schema.validate(df)[["measure_1", "measure_2", "group"]] measure_1 measure_2 group 0 10 2 B 1 12 4 B 2 14 6 A 3 16 8 A
请查看 这里 获取更多使用详情。
- classmethod between(min_value, max_value, include_min=True, include_max=True, **kwargs)[source]¶
函数
in_range()的别名- Return type:
- classmethod eq(value, **kwargs)[source]¶
等于的别名
equal_to()- Return type:
- classmethod ge(min_value, **kwargs)[source]¶
等于或大于的别名
greater_than_or_equal_to()- Return type:
- classmethod gt(min_value, **kwargs)[source]¶
函数
greater_than()的别名- Return type:
- classmethod in_range(min_value, max_value, include_min=True, include_max=True, **kwargs)[source]¶
确保序列中的所有值都在一个区间内。
两个端点必须与要验证的数据对象的dtype相当。
- classmethod isin(allowed_values, **kwargs)[source]¶
确保系列中仅出现允许的值。
这检查数据对象的所有元素是否属于允许值的元素集合。如果允许值是一个字符串,则元素集合由字符串的所有不同字符组成。因此,只有在允许值中至少出现一次的单个字符才能满足此条件。如果您想检查子字符串,请使用
Check.str_contains()。
- classmethod lt(max_value, **kwargs)[source]¶
的别名为
less_than()- Return type:
- classmethod ne(value, **kwargs)[source]¶
的别名
not_equal_to()- Return type:
- classmethod notin(forbidden_values, **kwargs)[source]¶
确保一些定义的值在一系列中不会出现。
像
Check.isin()这样的检查如果应用于字符串,则操作于单个字符。如果 forbidden_values 是一个字符串,它被理解为禁止字符的集合。任何长度大于 1 的字符串在设计上不能包含在其中。
- classmethod unique_values_eq(values, **kwargs)[source]¶
确保数据对象中的唯一值包含所有值。
注意
与
isin()相比,此检查确保values可迭代中的所有项都包含在系列中。
- __call__(check_obj, column=None)[source]¶
验证 DataFrame 或 Series。
- Parameters:
- Return type:
CheckResult- Returns:
检查结果元组包含:
check_output: 布尔标量,Series或DataFrame指示哪些元素通过了检查。check_passed: 布尔标量,指示检查是否总体通过。checked_object: 被检查的对象本身。根据提供给Check的选项,这将是一系列、数据框,或者如果groupby选项被验证后端支持并指定,则为Dict[str, Series]或Dict[str, DataFrame],其中键是不同的组。failure_cases: 失败的检查对象的子集。