# pandera

> A light-weight and flexible data validation and testing tool for statistical data objects.

- **URL**: https://www.freshcrate.ai/projects/pandera
- **Author**: pypi
- **Category**: Frameworks
- **Latest version**: `0.31.1` (2026-04-21)
- **License**: non-standard
- **Source**: https://github.com/pandera-dev/pandera
- **Homepage**: https://pypi.org/project/pandera/
- **Language**: Python
- **GitHub**: 4,310 stars, 393 forks
- **Registry**: pypi (`pandera`)
- **Tags**: `data-structures`, `pandas`, `pypi`, `validation`

## Description

<br>
<div align="center"><a href="https://www.union.ai/pandera"><img src="docs/source/_static/pandera-banner.png" width="400"></a></div>

<h1 align="center">
  The Open-source Framework for Dataset Validation
</h1>

<p align="center">
  📊 🔎 ✅
</p>

<p align="center">
  <i>Data validation for scientists, engineers, and analysts seeking correctness.</i>
</p>

<br>


[![CI Build](https://img.shields.io/github/actions/workflow/status/unionai-oss/pandera/ci-tests.yml?branch=main&label=tests&style=for-the-badge)](https://github.com/unionai-oss/pandera/actions/workflows/ci-tests.yml?query=branch%3Amain)
[![Documentation Status](https://readthedocs.org/projects/pandera/badge/?version=stable&style=for-the-badge)](https://pandera.readthedocs.io/en/stable/?badge=stable)
[![PyPI version shields.io](https://img.shields.io/pypi/v/pandera.svg?style=for-the-badge)](https://pypi.org/project/pandera/)
[![PyPI license](https://img.shields.io/pypi/l/pandera.svg?style=for-the-badge)](https://pypi.python.org/pypi/)
[![pyOpenSci](https://go.union.ai/pandera-pyopensci-badge)](https://github.com/pyOpenSci/software-review/issues/12)
[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://img.shields.io/badge/repo%20status-Active-Green?style=for-the-badge)](https://www.repostatus.org/#active)
[![Documentation Status](https://readthedocs.org/projects/pandera/badge/?version=latest&style=for-the-badge)](https://pandera.readthedocs.io/en/latest/?badge=latest)
[![codecov](https://img.shields.io/codecov/c/github/unionai-oss/pandera?style=for-the-badge)](https://codecov.io/gh/unionai-oss/pandera)
[![PyPI pyversions](https://img.shields.io/pypi/pyversions/pandera.svg?style=for-the-badge)](https://pypi.python.org/pypi/pandera/)
[![DOI](https://img.shields.io/badge/DOI-10.5281/zenodo.3385265-blue?style=for-the-badge)](https://doi.org/10.5281/zenodo.3385265)
[![asv](http://img.shields.io/badge/benchmarked%20by-asv-green.svg?style=for-the-badge)](https://pandera-dev.github.io/pandera-asv-logs/)
[![Total Downloads](https://img.shields.io/pepy/dt/pandera?style=for-the-badge&color=blue)](https://pepy.tech/project/pandera)
[![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/pandera?style=for-the-badge)](https://anaconda.org/conda-forge/pandera)
[![Slack](https://img.shields.io/badge/Slack-4A154B?logo=slack&logoColor=fff&style=for-the-badge)](https://flyte-org.slack.com/archives/C08FDTY2X3L)

Pandera is a [Union.ai](https://union.ai/blog-post/pandera-joins-union-ai) open
source project that provides a flexible and expressive API for performing data
validation on dataframe-like objects. The goal of Pandera is to make data
processing pipelines more readable and robust with statistically typed
dataframes.

## Install

Pandera supports [multiple dataframe libraries](https://pandera.readthedocs.io/en/stable/supported_libraries.html), including [pandas](http://pandas.pydata.org), [polars](https://docs.pola.rs/), [pyspark](https://spark.apache.org/docs/latest/api/python/index.html), and more. To validate `pandas` DataFrames, install Pandera with the `pandas` extra:

**With `pip`:**

```
pip install 'pandera[pandas]'
```

**With `uv`:**

```
uv pip install 'pandera[pandas]'
```

**With `conda`:**

```
conda install -c conda-forge pandera-pandas
```

## Get started

First, create a dataframe:

```python
import pandas as pd
import pandera.pandas as pa

# data to validate
df = pd.DataFrame({
    "column1": [1, 2, 3],
    "column2": [1.1, 1.2, 1.3],
    "column3": ["a", "b", "c"],
})
```

Validate the data using the object-based API:

```python
# define a schema
schema = pa.DataFrameSchema({
    "column1": pa.Column(int, pa.Check.ge(0)),
    "column2": pa.Column(float, pa.Check.lt(10)),
    "column3": pa.Column(
        str,
        [
            pa.Check.isin([*"abc"]),
            pa.Check(lambda series: series.str.len() == 1),
        ]
    ),
})

print(schema.validate(df))
#    column1  column2 column3
# 0        1      1.1       a
# 1        2      1.2       b
# 2        3      1.3       c
```

Or validate the data using the class-based API:

```python
# define a schema
class Schema(pa.DataFrameModel):
    column1: int = pa.Field(ge=0)
    column2: float = pa.Field(lt=10)
    column3: str = pa.Field(isin=[*"abc"])

    @pa.check("column3")
    def custom_check(cls, series: pd.Series) -> pd.Series:
        return series.str.len() == 1

print(Schema.validate(df))
#    column1  column2 column3
# 0        1      1.1       a
# 1        2      1.2       b
# 2        3      1.3       c
```


> [!WARNING]
> Pandera `v0.24.0` introduces the `pandera.pandas` module, which is now the
> (highly) recommended way of defining `DataFrameSchema`s and `DataFrameModel`s
> for `pandas` data structures like `DataFrame`s. Defining a dataframe schema from
> the top-level `pandera` module will produce a `FutureWarning`:
>
> ```python
> import pandera as pa
>
> schema = pa.DataFrameSchema({"col": pa.Column(s

## Recent releases

| Version | Date | Urgency | Changes |
| --- | --- | --- | --- |
| `0.31.1` | 2026-04-21 | Low | Imported from PyPI (0.31.1) |
| `v0.31.1` | 2026-04-15 | High | ## What's Changed * Fix pandera[polars] import without pandas by @cosmicBboy in https://github.com/unionai-oss/pandera/pull/2291   **Full Changelog**: https://github.com/unionai-oss/pandera/compare/v0.31.0...v0.31.1 |
| `v0.31.1` | 2026-04-15 | Medium | ## What's Changed * Fix pandera[polars] import without pandas by @cosmicBboy in https://github.com/unionai-oss/pandera/pull/2291   **Full Changelog**: https://github.com/unionai-oss/pandera/compare/v0.31.0...v0.31.1 |
| `v0.31.1` | 2026-04-15 | Medium | ## What's Changed * Fix pandera[polars] import without pandas by @cosmicBboy in https://github.com/unionai-oss/pandera/pull/2291   **Full Changelog**: https://github.com/unionai-oss/pandera/compare/v0.31.0...v0.31.1 |
| `v0.31.1` | 2026-04-15 | Medium | ## What's Changed * Fix pandera[polars] import without pandas by @cosmicBboy in https://github.com/unionai-oss/pandera/pull/2291   **Full Changelog**: https://github.com/unionai-oss/pandera/compare/v0.31.0...v0.31.1 |
| `v0.31.1` | 2026-04-15 | Medium | ## What's Changed * Fix pandera[polars] import without pandas by @cosmicBboy in https://github.com/unionai-oss/pandera/pull/2291   **Full Changelog**: https://github.com/unionai-oss/pandera/compare/v0.31.0...v0.31.1 |
| `v0.31.1` | 2026-04-15 | Medium | ## What's Changed * Fix pandera[polars] import without pandas by @cosmicBboy in https://github.com/unionai-oss/pandera/pull/2291   **Full Changelog**: https://github.com/unionai-oss/pandera/compare/v0.31.0...v0.31.1 |
| `v0.31.1` | 2026-04-15 | Medium | ## What's Changed * Fix pandera[polars] import without pandas by @cosmicBboy in https://github.com/unionai-oss/pandera/pull/2291   **Full Changelog**: https://github.com/unionai-oss/pandera/compare/v0.31.0...v0.31.1 |
| `v0.31.1` | 2026-04-15 | Medium | ## What's Changed * Fix pandera[polars] import without pandas by @cosmicBboy in https://github.com/unionai-oss/pandera/pull/2291   **Full Changelog**: https://github.com/unionai-oss/pandera/compare/v0.31.0...v0.31.1 |
| `v0.31.1` | 2026-04-15 | Medium | ## What's Changed * Fix pandera[polars] import without pandas by @cosmicBboy in https://github.com/unionai-oss/pandera/pull/2291   **Full Changelog**: https://github.com/unionai-oss/pandera/compare/v0.31.0...v0.31.1 |

## Citation

- HTML: https://www.freshcrate.ai/projects/pandera
- Markdown: https://www.freshcrate.ai/projects/pandera.md
- Dependencies JSON: https://www.freshcrate.ai/api/projects/pandera/deps

_Generated by freshcrate.ai. Indexes pypi releases for AI-agent ecosystem packages._
