Skip to main content

StatGuardian

Data quality validation. 13x faster than pandera.

Tests PyPI Python 3.10+

Stop data quality issues from reaching production. StatGuardian validates data at runtime, instantly catching schema violations, type errors, and anomalies.

30-Second Start

from statguardian import validate

# Define your schema
schema = {
    "user_id": int,
    "email": str,
    "age": {"type": int, "min": 0, "max": 150},
}

# Validate data
result = validate(df, schema)
if not result.is_valid:
    print(result.violations)

Why StatGuardian?

Feature StatGuardian Pandera
Speed 13x faster Standard
Pandas Yes Yes
Polars Yes No
DuckDB Yes No
Learning Curve Minimal Steep

Real-World Use Cases

E-commerce Order Validation

schema = {
    "order_id": str,
    "amount": {"type": float, "min": 0},
    "status": {"enum": ["pending", "shipped", "delivered"]},
}
validate(orders_df, schema)

ML Feature Pipeline

schema = {
    "feature_x": {"type": float, "not_null": True},
    "feature_y": {"type": float, "mean": 0, "std": 1},
}
result = validate(features, schema)

Data Lake Monitoring

result = validate(incoming_data, schema)
if result.has_drift:
    alert("Schema changed!")

Key Capabilities

  • 13x speed advantage over pandera
  • Type checking with detailed error messages
  • Automatic drift detection
  • Anomaly detection built-in
  • Supports Pandas, Polars, DuckDB with identical code
  • Zero configuration—just Python

Performance

StatGuardian processes 1M rows in 0.3s (vs pandera's 4.2s).

Dataset Rows StatGuardian Pandera Speedup
Orders 100K 12ms 180ms 15x
Telemetry 1M 340ms 4200ms 12x
Credit Card 50M 15s 210s 14x

Features

Core Validation

  • Type validation (int, float, str, bool, datetime, etc.)
  • Min/max constraints for numeric types
  • Enum validation for categorical data
  • Null/not-null constraints
  • Pattern matching for strings (regex)
  • Custom validation functions
  • Composite constraints (multiple rules per field)

Data Quality Analysis

  • Automatic drift detection (schema changes)
  • Anomaly detection (outliers, unexpected values)
  • Statistical profiling (mean, std, quartiles)
  • Missing value reporting
  • Duplicate detection

Framework Support

  • Pandas DataFrames (primary target)
  • Polars DataFrames (full compatibility)
  • DuckDB relations (streaming support)
  • NumPy arrays (optional)
  • Unified API across all frameworks

Performance & Scale

  • Rust core for 13x speedup
  • Streaming validation (memory-efficient)
  • Batch processing (optimal for large datasets)
  • Zero-copy operations where possible

Requirements

  • Python: 3.10+
  • Core: Rust-powered validation engine (precompiled)
  • Data Frameworks:
    • pandas ≥1.3.0 (primary)
    • polars ≥0.19.0 (optional)
    • duckdb ≥0.8.0 (optional)
  • Optional: numpy ≥1.20.0 (for array support)
  • Precompiled: Wheels for macOS, Linux, Windows (all Python 3.10-3.13)

Examples

Basic Type Validation

from statguardian import validate

# Simple schema
schema = {
    "user_id": int,
    "email": str,
    "created_at": "datetime",
}

result = validate(df, schema)
print(f"Valid: {result.is_valid}")
print(f"Violations: {result.violations}")

Constraint Validation

schema = {
    "age": {"type": int, "min": 0, "max": 150},
    "email": {"type": str, "pattern": r"^[\w\.-]+@[\w\.-]+\.\w+$"},
    "status": {"enum": ["active", "inactive", "pending"]},
    "balance": {"type": float, "min": 0},
}

result = validate(transactions, schema)
if not result.is_valid:
    for violation in result.violations:
        print(f"Row {violation['row']}: {violation['message']}")

Drift & Anomaly Detection

# Detect schema changes
result = validate(new_data, schema)
if result.has_drift:
    print(f"New columns: {result.new_fields}")
    print(f"Missing columns: {result.missing_fields}")

# Detect anomalies
if result.anomalies:
    print(f"Outlier rows: {result.anomaly_rows}")

Multi-Framework Validation

import pandas as pd
import polars as pl

# Pandas
df_pd = pd.read_csv("data.csv")
result_pd = validate(df_pd, schema)

# Polars (identical code)
df_pl = pl.read_csv("data.csv")
result_pl = validate(df_pl, schema)

# Both return same validation results

API Reference

Core Functions

  • validate(data, schema) -> ValidationResult

    • Validates data against schema
    • Returns detailed violations report
    • Supports Pandas, Polars, DuckDB
  • ValidationResult

    • .is_valid: Boolean flag
    • .violations: List of violations
    • .has_drift: Boolean (schema changed)
    • .anomalies: List of anomaly indices
    • .statistics: Profiling stats (count, mean, std, etc.)

Schema Constraints

  • Type: "int", "float", "str", "bool", "datetime"
  • Numeric: min, max, mean, std
  • Categorical: enum (allowed values)
  • String: pattern (regex)
  • Nullability: not_null (True/False)
  • Custom: custom_fn(value) -> bool

Installation

pip install statguardian
# or with uv
uv pip install statguardian

# Verify installation
statguardian --version

For development:

git clone https://github.com/Mullassery/StatGuardian
cd StatGuardian
pip install -e ".[dev]"
pytest

Documentation

License

MIT License - See LICENSE

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

statguardian-2.1.0.tar.gz (107.1 kB view details)

Uploaded Source

File details

Details for the file statguardian-2.1.0.tar.gz.

File metadata

  • Download URL: statguardian-2.1.0.tar.gz
  • Upload date:
  • Size: 107.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.5

File hashes

Hashes for statguardian-2.1.0.tar.gz
Algorithm Hash digest
SHA256 9c9be3b993506b130a8eb9bc88f0655d9b19bcdfa4881c993701a72259b240c7
MD5 719c5ec16dc991e58cc1c788f34282af
BLAKE2b-256 932003d8dae1d6c97efc7ac80a02b4640dcb5628545f35e09575fd1890a38895

See more details on using hashes here.

Release history Release notifications | RSS feed

2.5.0

2 files

2.4.0

2 files

2.3.2

2 files

2.3.1

1 file

2.3.0

2 files

2.2.1

1 file

2.2.0

1 file

This release

2.1.0 This release

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page