pandera.api.pandas.container.DataFrameSchema¶
- class pandera.api.pandas.container.DataFrameSchema(columns=None, checks=None, parsers=None, index=None, dtype=None, coerce=False, strict=False, name=None, ordered=False, unique=None, report_duplicates='all', unique_column_names=False, add_missing_columns=False, title=None, description=None, metadata=None, drop_invalid_rows=False)[source]¶
一个轻量级的 pandas DataFrame 验证器。
与库无关的数据框架模式定义的基础类。
- Parameters:
列 (映射 列名和列架构组件。) – 一个字典,其中键是列名,值是 列对象,指定特定列的数据类型和属性。
检查 (
Union[Check,List[Union[Check,Hypothesis]],None]) – 数据框范围内的检查。索引 – 指定索引的数据类型和属性。
dtype (
可选[任何,无]) – 数据框的datatype。这将覆盖任何列中指定的数据类型。如果指定了字符串,则假定为有效的pandas字符串值之一: http://pandas.pydata.org/pandas-docs/stable/basics.html#dtypes。强制转换 (
bool) – 是否强制验证时的所有列。此设置会覆盖列或索引级别的任何强制设置。对dtype=None的列没有影响。严格 (
Union[bool,Literal[‘filter’]]) – 确保数据框中仅存在架构中定义的所有列。如果设置为‘filter’,只有架构中的列将被传递给验证的数据框。如果设置为filter且架构中定义的列不在数据框中,将抛出错误。ordered (
bool) – 是否验证列的顺序。report_duplicates (
Union[Literal[‘exclude_first’],Literal[‘exclude_last’],Literal[‘all’]]) – 如何报告唯一错误 - exclude_first: 报告除第一个出现外的所有重复项 - exclude_last: 报告除最后一个出现外的所有重复项 - all: (默认)报告所有重复项unique_column_names (
bool) – 列名是否必须唯一。add_missing_columns (
bool) – 添加缺失的列名,如果在列模式中指定了默认值,则使用默认值,如果列可以为空,则使用NaN。drop_invalid_rows (
bool) – 如果为 True,将在验证时删除无效行。
- Raises:
SchemaInitError – 如果无法从参数构建架构
- Examples:
>>> import pandera as pa >>> >>> schema = pa.DataFrameSchema({ ... "str_column": pa.Column(str), ... "float_column": pa.Column(float), ... "int_column": pa.Column(int), ... "date_column": pa.Column(pa.DateTime), ... })
使用pandas API定义检查,该检查接受一个具有以下签名的函数:
pd.Series -> Union[bool, pd.Series],输出系列包含布尔值。>>> schema_withchecks = pa.DataFrameSchema({ ... "probability": pa.Column( ... float, pa.Check(lambda s: (s >= 0) & (s <= 1))), ... ... # check that the "category" column contains a few discrete ... # values, and the majority of the entries are dogs. ... "category": pa.Column( ... str, [ ... pa.Check(lambda s: s.isin(["dog", "cat", "duck"])), ... pa.Check(lambda s: (s == "dog").mean() > 0.5), ... ]), ... })
请查看 这里 获取更多使用详情。
属性
BACKEND_REGISTRYcoerce是否将系列强制转换为指定类型。
dtype获取 dtype 属性。
dtypes一个字典,其中键是列名,值是该列的
DataType。properties获取用于序列化的架构属性。
unique应该共同唯一的列列表。
方法
- static register_default_backends(check_obj_cls)[source]¶
注册默认后端。
此方法在get_backend方法中被调用,以便在验证时加载适当的验证后端,而不是在模式定义时。
该方法需要由模式子类实现。
- validate(check_obj, head=None, tail=None, sample=None, random_state=None, lazy=False, inplace=False)[source]¶
根据模式规范验证数据框。
- Parameters:
- Return type:
- Returns:
验证过的
DataFrame- Raises:
SchemaError – 当
DataFrame违反内置或自定义检查时。- Example:
调用
schema.validate返回数据框。>>> import pandas as pd >>> import pandera as pa >>> >>> df = pd.DataFrame({ ... "probability": [0.1, 0.4, 0.52, 0.23, 0.8, 0.76], ... "category": ["dog", "dog", "cat", "duck", "dog", "dog"] ... }) >>> >>> schema_withchecks = pa.DataFrameSchema({ ... "probability": pa.Column( ... float, pa.Check(lambda s: (s >= 0) & (s <= 1))), ... ... # check that the "category" column contains a few discrete ... # values, and the majority of the entries are dogs. ... "category": pa.Column( ... str, [ ... pa.Check(lambda s: s.isin(["dog", "cat", "duck"])), ... pa.Check(lambda s: (s == "dog").mean() > 0.5), ... ]), ... }) >>> >>> schema_withchecks.validate(df)[["probability", "category"]] probability category 0 0.10 dog 1 0.40 dog 2 0.52 cat 3 0.23 duck 4 0.80 dog 5 0.76 dog
- __call__(dataframe, head=None, tail=None, sample=None, random_state=None, lazy=False, inplace=False)[source]¶
表示
DataFrameSchema.validate()方法的别名。