mcpField
P
pandera-validation

pandera-validation

github.com/majesticlabs-dev数据与数据库5054 次安装7 周前更新
代码仓库

关于 pandera-validation

面向使用 pandera 校验 pandas DataFrame 的数据工程师。它提供架构校验、错误收集、基于类的类型提示,以及可导出为 Python 和 YAML 的架构推断模式。

主要功能

  1. 01DataFrame 架构校验
  2. 02收集校验错误
  3. 03基于类的架构与类型提示
  4. 04推断架构并导出 Python 和 YAML
  5. 05使用装饰器检查输入与输出

适用场景

  1. 01检查 ETL 流程中的 DataFrame
  2. 02汇总并报告多项校验失败
  3. 03从现有数据推断架构

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/majesticlabs-dev/majestic-marketplace --skill pandera-validation

安装后在 Claude Code 中输入/pandera-validation确认已加载。

附带文件scripts/schemas.py

详细介绍

Pandera 验证

适用对象: 验证 pandas DataFrame 的数据工程师。

目标: 提供用于模式验证和类型检查的 pandera 模式。

脚本

从 scripts/schemas.py 执行模式函数:

from scripts.schemas import (
    create_user_schema,
    create_nullable_schema,
    create_date_range_schema,
    UserSchema,
    validate_with_errors,
    infer_and_export_schema
)

使用示例

基本模式验证
from scripts.schemas import create_user_schema

schema = create_user_schema()
validated_df = schema.validate(df)
收集所有错误
from scripts.schemas import create_user_schema, validate_with_errors

schema = create_user_schema()
validated_df, errors = validate_with_errors(df, schema)

if errors:
    for err in errors:
        print(f"{err['column']}: {err['check']} - {err['failure_case']}")
基于类的模式
from scripts.schemas import UserSchema

# Validate with type hints
UserSchema.validate(df)

# Use as function type hint
def process_users(df: pa.typing.DataFrame[UserSchema]) -> pd.DataFrame:
    return df.query("status == 'active'")
从 DataFrame 推断模式
from scripts.schemas import infer_and_export_schema

schema_export = infer_and_export_schema(df)
print(schema_export['python_code'])  # Python schema definition
print(schema_export['yaml'])         # YAML schema

内置检查参考

检查类型示例描述
数值Check.gt(0)、Check.in_range(0, 100)比较
字符串Check.str_matches(r'pattern')正则匹配
集合成员资格Check.isin(['A', 'B'])允许的值
唯一性Column 上的 unique=True无重复值
可空Column 上的 nullable=True允许空值

基于装饰器的验证

import pandera as pa

@pa.check_output(schema)
def load_data(path: str) -> pd.DataFrame:
    return pd.read_csv(path)

@pa.check_input(schema, "df")
def process_data(df: pd.DataFrame) -> pd.DataFrame:
    return df.assign(processed=True)

@pa.check_io(df=input_schema, out=output_schema)
def transform_data(df: pd.DataFrame) -> pd.DataFrame:
    return df.transform(...)

何时使用 Pandera

使用场景Pandera替代方案
DataFrame 验证✓-
DataFrame 类型提示✓-
ETL 工作流检查✓Great Expectations
记录级验证-Pydantic

依赖项

pandera>=0.18
pandas

评论

支持 Markdown