Pandera
A flexible and expressive pandas validation library.
pandas data structures hide a lot of information, and explicitly
validating them at runtime in production-critical or reproducible research
settings is a good idea. pandera enables users to:
- Check the types and properties of columns in a
DataFrameor values in aSeries. - Perform more complex statistical validation like hypothesis testing.
- Seamlessly integrate with existing data analysis/processing pipelines via function decorators.
pandera provides a flexible and expressive API for performing data validation
on tidy (long-form) and wide data to make data processing pipelines more
readable and robust.
Documentation
The official documentation is hosted on ReadTheDocs: https://pandera.readthedocs.io
Install
Using pip:
pip install pandera
Using conda:
conda install -c cosmicbboy pandera
Example Usage
DataFrameSchema
import pandas as pd
import pandera as pa
from pandera import Column, DataFrameSchema, Check
# validate columns
schema = DataFrameSchema({
# the check function expects a series argument and should output a boolean
# or a boolean Series.
"column1": Column(pa.Int, Check(lambda s: s <= 10)),
"column2": Column(pa.Float, Check(lambda s: s < -1.2)),
# you can provide a list of validators
"column3": Column(pa.String, [
Check(lambda s: s.str.startswith("value_")),
Check(lambda s: s.str.split("_", expand=True).shape[1] == 2)
]),
})
# alternatively, you can pass strings representing the legal pandas datatypes:
# http://pandas.pydata.org/pandas-docs/stable/basics.html#dtypes
schema = DataFrameSchema({
"column1": Column("int64", Check(lambda s: s <= 10)),
...
})
df = pd.DataFrame({
"column1": [1, 4, 0, 10, 9],
"column2": [-1.3, -1.4, -2.9, -10.1, -20.4],
"column3": ["value_1", "value_2", "value_3", "value_2", "value_1"]
})
validated_df = schema.validate(df)
print(validated_df)
# column1 column2 column3
# 0 1 -1.3 value_1
# 1 4 -1.4 value_2
# 2 0 -2.9 value_3
# 3 10 -10.1 value_2
# 4 9 -20.4 value_1
Development Installation
git clone https://github.com/pandera-dev/pandera.git
cd pandera
pip install -r requirements.txt
pip install -e .
Tests
pip install pytest
pytest tests
Contributing to pandera 
All contributions, bug reports, bug fixes, documentation improvements, enhancements and ideas are welcome.
A detailed overview on how to contribute can be found in the contributing guide on GitHub.
Issues
Go here to submit feature requests or bugfixes.
Other Data Validation Libraries
Here are a few other alternatives for validating Python data structures.
Generic Python object data validation
pandas-specific data validation
Why pandera?
pandas-centric data types, column nullability, and uniqueness are first-class concepts.check_inputandcheck_outputdecorators enable seamless integration with existing code.Checks provide flexibility and performance by providing access topandasAPI by design.Hypothesisclass provides a tidy-first interface for statistical hypothesis testing.Checks andHypothesisobjects support both tidy and wide data validation.- Comprehensive documentation on key functionality.
Citation Information
@misc{niels_bantilan_2019_3385266,
author = {Niels Bantilan and
Nigel Markey and
Riccardo Albertazzi and
chr1st1ank},
title = {pandera-dev/pandera: 0.2.0 pre-release 1},
month = sep,
year = 2019,
doi = {10.5281/zenodo.3385266},
url = {https://doi.org/10.5281/zenodo.3385266}
}
Metadata
Release files for pandera 0.2.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| pandera-0.2.4.tar.gz | 20.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pandera-0.2.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 52.4 kB
Release files / pandera-0.2.4.tar.gz
| Download URL | pandera-0.2.4.tar.gz |
|---|---|
| Size | 20.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
288e4be03e5072612bbc58623e224d5b915b80913f8fa359cb01c1e9b95afa86
|
|
BLAKE2b-256 checksum How to use checksums |
793943a26e43c26b5653564487b219f3f67112e363344437bab91443be517c1d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.1
|
Release files / pandera-0.2.4-py3-none-any.whl
| Download URL | pandera-0.2.4-py3-none-any.whl |
|---|---|
| Size | 31.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c0eb77bff00bf36cae1f6a71e84260619aae0d64c7c3d57d6ec143152daad04e
|
|
BLAKE2b-256 checksum How to use checksums |
24e4c8858b7dd002f268a0da962ed16eaa2213c2da019b4b52906b7f5892d259
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.1
|
Security for pandera 0.2.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.