关于 pandera-validation
面向使用 pandera 校验 pandas DataFrame 的数据工程师。它提供架构校验、错误收集、基于类的类型提示,以及可导出为 Python 和 YAML 的架构推断模式。
主要功能
- 01DataFrame 架构校验
- 02收集校验错误
- 03基于类的架构与类型提示
- 04推断架构并导出 Python 和 YAML
- 05使用装饰器检查输入与输出
适用场景
- 01检查 ETL 流程中的 DataFrame
- 02汇总并报告多项校验失败
- 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