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) – 是否验证列的顺序。

  • unique (Union[str, List[str], None]) – 应共同唯一的列列表。

  • 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。

  • 标题 (可选[str, None]) – 一个可供人类阅读的模式标签。

  • 描述 (可选[str, None]) – 一个任意的模式文本描述。

  • 元数据 (可选[字典, ]) – 一个可选的键值数据。

  • 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_REGISTRY

coerce

是否将系列强制转换为指定类型。

dtype

获取 dtype 属性。

dtypes

一个字典,其中键是列名,值是该列的 DataType

properties

获取用于序列化的架构属性。

unique

应该共同唯一的列列表。

方法

example(size=None, n_regex_columns=1)[source]

生成特定大小的示例。

Parameters:

size (可选[int, None]) – 生成的 DataFrame 中的元素数量。

Return type:

DataFrame

Returns:

pandas 数据框对象。

static register_default_backends(check_obj_cls)[source]

注册默认后端。

此方法在get_backend方法中被调用,以便在验证时加载适当的验证后端,而不是在模式定义时。

该方法需要由模式子类实现。

strategy(*, size=None, n_regex_columns=1)[source]

创建一个 hypothesis 策略来生成一个 DataFrame。

Parameters:
  • size (可选[int, None]) – 生成的元素数量

  • n_regex_columns (int) – 生成的正则列的数量。

Returns:

生成 pandas DataFrame 对象的一种策略。

validate(check_obj, head=None, tail=None, sample=None, random_state=None, lazy=False, inplace=False)[source]

根据模式规范验证数据框。

Parameters:
  • check_obj (pd.DataFrame) – 要验证的数据框。

  • head (可选[int, None]) – 验证前 n 行。与 tailsample 重叠的行会被去重。

  • tail (可选[整型, ]) – 验证最后 n 行。与 headsample 重叠的行将被去重。

  • 示例 (可选[int, None]) – 验证 n 行的随机样本。与 头部尾部 交叠的行会被去重。

  • random_state (可选[int, ]) – sample 参数的随机种子。

  • 懒惰 (bool) – 如果为 True,懒惰地对数据框进行所有验证检查,并引发一个 SchemaErrors。否则,立即抛出第一个出现的 SchemaError

  • inplace (bool) – 如果为 True,则对验证对象应用强制转换,否则创建数据的副本。

Return type:

DataFrame

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()方法的别名。

Parameters:
  • dataframe (pd.DataFrame) – 需要验证的数据框。

  • head (int) – 验证前 n 行。与 tailsample 重叠的行会被去重。

  • tail (int) – 验证最后 n 行。与 headsample 重叠的行会被去重。

  • 示例 (可选[int, None]) – 验证 n 行的随机样本。与 头部尾部 交叠的行会被去重。

  • random_state (可选[int, ]) – sample 参数的随机种子。

  • 懒惰 (bool) – 如果为 True,懒惰地对数据框进行所有验证检查,并引发一个 SchemaErrors。否则,立即抛出第一个出现的 SchemaError

  • inplace (bool) – 如果为 True,则对验证对象应用强制转换,否则创建数据的副本。

Return type:

~T数据对象