pandera-validation について
panderaでpandas DataFrameを検証するデータエンジニア向けのスキルです。スキーマ検証、エラー収集、クラスベースの型ヒント、PythonおよびYAMLへの出力を伴うスキーマ推論のパターンを提供します。
主な機能
- 01DataFrameのスキーマ検証
- 02検証エラーの収集
- 03クラスベースのスキーマと型ヒント
- 04スキーマ推論とPython・YAML出力
- 05デコレーターによる入出力チェック
活用シーン
- 01ETLワークフローの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 | 重複なし |
| Null 許容 | Column の nullable=True | Null を許容 |
デコレーターを使った検証
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 対応