All Projects → pandera-dev → Pandera

pandera-dev / Pandera

Licence: mit
A light-weight, flexible, and expressive pandas data validation library

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Pandera

validada
Another library for defensive data analysis.
Stars: ✭ 29 (-94.27%)
Mutual labels:  validation, data-validation, pandas
Pandasschema
A validation library for Pandas data frames using user-friendly schemas
Stars: ✭ 135 (-73.32%)
Mutual labels:  schema, validation, pandas
Structured Acceptance Test
An open format definition for static analysis tools
Stars: ✭ 10 (-98.02%)
Mutual labels:  schema, validation, testing-tools
Truss
Assertions API for Clojure/Script
Stars: ✭ 239 (-52.77%)
Mutual labels:  schema, validation, assertions
Rdfunit
An RDF Unit Testing Suite
Stars: ✭ 117 (-76.88%)
Mutual labels:  schema, validation, data-validation
objectiv-analytics
Powerful product analytics for data teams, with full control over data & models.
Stars: ✭ 399 (-21.15%)
Mutual labels:  data-validation, pandas-dataframe, data-cleaning
Kotest
Powerful, elegant and flexible test framework for Kotlin with additional assertions, property testing and data driven testing
Stars: ✭ 3,234 (+539.13%)
Mutual labels:  testing-tools, assertions
Data Science Hacks
Data Science Hacks consists of tips, tricks to help you become a better data scientist. Data science hacks are for all - beginner to advanced. Data science hacks consist of python, jupyter notebook, pandas hacks and so on.
Stars: ✭ 273 (-46.05%)
Mutual labels:  pandas, pandas-dataframe
Nonechucks
Deal with bad samples in your dataset dynamically, use Transforms as Filters, and more!
Stars: ✭ 304 (-39.92%)
Mutual labels:  data-processing, data-cleaning
Openapi Cop
A proxy that validates responses and requests against an OpenAPI document.
Stars: ✭ 338 (-33.2%)
Mutual labels:  validation, data-validation
fefe
Validate, sanitize and transform values with proper TypeScript types and zero dependencies.
Stars: ✭ 34 (-93.28%)
Mutual labels:  schema, validation
Jsonschema
An implementation of the JSON Schema specification for Python
Stars: ✭ 3,474 (+586.56%)
Mutual labels:  schema, validation
Karate
Test Automation Made Simple
Stars: ✭ 5,497 (+986.36%)
Mutual labels:  testing-tools, assertions
Validate
Professional data validation for the R environment
Stars: ✭ 268 (-47.04%)
Mutual labels:  validation, data-cleaning
prosto
Prosto is a data processing toolkit radically changing how data is processed by heavily relying on functions and operations with functions - an alternative to map-reduce and join-groupby
Stars: ✭ 54 (-89.33%)
Mutual labels:  pandas, data-processing
Structure
A simple schema/attributes library built on top of modern JavaScript
Stars: ✭ 292 (-42.29%)
Mutual labels:  schema, validation
Joi
The most powerful data validation library for JS
Stars: ✭ 17,989 (+3455.14%)
Mutual labels:  schema, validation
Pyschemes
PySchemes is a library for validating data structures in python
Stars: ✭ 365 (-27.87%)
Mutual labels:  schema, validation
Schema
📐 Validating data structures against a given Schema.
Stars: ✭ 359 (-29.05%)
Mutual labels:  schema, validation
Dataframe Go
DataFrames for Go: For statistics, machine-learning, and data manipulation/exploration
Stars: ✭ 487 (-3.75%)
Mutual labels:  pandas, pandas-dataframe


A data validation library for scientists, engineers, and analysts seeking correctness.


CI Build Documentation Status PyPI version shields.io PyPI license pyOpenSci Project Status: Active – The project has reached a stable, usable state and is being actively developed. Documentation Status codecov PyPI pyversions DOI asv Downloads Downloads

pandas data structures contain information that pandera explicitly validates at runtime. This is useful in production-critical or reproducible research settings. With pandera, you can:

  1. Check the types and properties of columns in a DataFrame or values in a Series.
  2. Perform more complex statistical validation like hypothesis testing.
  3. Seamlessly integrate with existing data analysis/processing pipelines via function decorators.
  4. Define schema models with the class-based API with pydantic-style syntax and validate dataframes using the typing syntax.
  5. Synthesize data from schema objects for property-based testing with pandas data structures.

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

Installing optional functionality:

pip install pandera[hypotheses]  # hypothesis checks
pip install pandera[io]          # yaml/script schema io utilities
pip install pandera[strategies]  # data synthesis strategies
pip install pandera[all]         # all packages

Using conda:

conda install -c conda-forge pandera-core  # core library functionality
conda install -c conda-forge pandera       # pandera with all extensions

Quick Start

import pandas as pd
import pandera as pa


# data to validate
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"]
})

# define schema
schema = pa.DataFrameSchema({
    "column1": pa.Column(int, checks=pa.Check.le(10)),
    "column2": pa.Column(float, checks=pa.Check.lt(-1.2)),
    "column3": pa.Column(str, checks=[
        pa.Check.str_startswith("value_"),
        # define custom checks as functions that take a series as input and
        # outputs a boolean or boolean Series
        pa.Check(lambda s: s.str.split("_", expand=True).shape[1] == 2)
    ]),
})

validated_df = schema(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

Schema Model

pandera also provides an alternative API for expressing schemas inspired by dataclasses and pydantic. The equivalent SchemaModel for the above DataFrameSchema would be:

from pandera.typing import Series

class Schema(pa.SchemaModel):

    column1: Series[int] = pa.Field(le=10)
    column2: Series[float] = pa.Field(lt=-1.2)
    column3: Series[str] = pa.Field(str_startswith="value_")

    @pa.check("column3")
    def column_3_check(cls, series: Series[str]) -> Series[bool]:
        """Check that values have two elements after being split with '_'"""
        return series.str.split("_", expand=True).shape[1] == 2

Schema.validate(df)

Development Installation

git clone https://github.com/pandera-dev/pandera.git
cd pandera
pip install -r requirements-dev.txt
pip install -e .

Tests

pip install pytest
pytest tests

Contributing to pandera GitHub contributors

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

Other tools for data validation

Why pandera?

  • pandas-centric data types, column nullability, and uniqueness are first-class concepts.
  • check_input and check_output decorators enable seamless integration with existing code.
  • Checks provide flexibility and performance by providing access to pandas API by design and offers built-in checks for common data tests.
  • Hypothesis class provides a tidy-first interface for statistical hypothesis testing.
  • Checks and Hypothesis objects support both tidy and wide data validation.
  • Comprehensive documentation on key functionality.

How to Cite

If you use pandera in the context of academic or industry research, please consider citing the paper and/or software package.

Paper

@InProceedings{ niels_bantilan-proc-scipy-2020,
  author    = { {N}iels {B}antilan },
  title     = { pandera: {S}tatistical {D}ata {V}alidation of {P}andas {D}ataframes },
  booktitle = { {P}roceedings of the 19th {P}ython in {S}cience {C}onference },
  pages     = { 116 - 124 },
  year      = { 2020 },
  editor    = { {M}eghann {A}garwal and {C}hris {C}alloway and {D}illon {N}iederhut and {D}avid {S}hupe },
  doi       = { 10.25080/Majora-342d178e-010 }
}

Software Package

DOI

License and Credits

pandera is licensed under the MIT license and is written and maintained by Niels Bantilan ([email protected])

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].