frictionless
Data management framework for Python that provides functionality to describe, extract, validate, and transform tabular data
What it is and what it does
Frictionless is a data management framework that treats tabular data validation and transformation as a first-class concern. It lets you infer or define schemas for your data, read from diverse sources (CSV, XLS, JSON, SQL, HTTP, FTP, S3), validate against those schemas with detailed error reporting, and apply transformations via a pipeline interface. The framework is built on the Frictionless Standards and emphasizes low memory consumption even for large datasets.
You typically use it when you need to ensure data quality before processing—describing metadata, catching structural problems (missing cells, duplicate headers, blank rows), and extracting clean data into a unified tabular format. It provides both a Python API and a command-line interface, making it suitable for scripted data pipelines, ETL workflows, and data quality checks in larger systems.
Use it for:
- Validate CSV or tabular files for structural errors and schema compliance before loading into a database
- Infer and document metadata schemas for datasets to establish data quality baselines
- Extract and normalize data from mixed sources (CSV, JSON, SQL, cloud storage) into a consistent format
- Build automated data quality checks into ETL pipelines with detailed validation reports
- Transform and clean tabular datasets using the pipeline interface before downstream processing
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Frictionless provides a unified Python framework to describe, extract, validate, and transform tabular data across multiple file formats and sources, with built-in schema support and comprehensive validation reporting.
Yes. Frictionless is actively maintained, has no known vulnerabilities, carries a permissive MIT license, and solves a real problem—validating and transforming tabular data at scale. Its low install friction and broad format support make it a practical choice for data pipelines. Install it if you work with CSV, JSON, SQL, or other tabular data and need reliable validation and extraction.
Install
frictionless on PyPI
pip
pip install frictionlessuv
uv add frictionlesspoetry
poetry add frictionlessInstalling frictionless
Before you install
Low friction installation with a pure-Python wheel distribution. The package maintains active development (last commit 2026-07-28) and is classified as Production/Stable. Its 19 runtime dependencies are all widely-used, established libraries.
License in practice
MIT license (permissive) means you can use this in commercial and proprietary projects with minimal restrictions, provided you include the license notice.
Quickstart
pip install frictionless
from frictionless import validate
report = validate('data.csv')
print(report)
Verify before relying
- Whether the framework's performance on 'big data' meets your specific throughput or latency requirements
- Which SQL databases and cloud storage services are supported beyond the mentioned HTTP, FTP, and S3
- Whether custom checks and formats require significant boilerplate or are straightforward to implement
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.8) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 19 — attrs, chardet, humanize, isodate, jinja2, jsonschema, marko, petl, pydantic, python-dateutil, python-slugify, pyyaml, requests, rfc3986, simpleeval, tabulate, typer, typing-extensions, validators |
| Maintenance | actively maintained — 123 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 1,127,128/month — #4,324 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: frictionless-5.19.0-py3-none-any.whl
Keywords: data package, data validation, frictionless data, json schema, json table schema, open data, tabular data package
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
tableschemaValidates, infers, and works with tabular data…
permissive · top 15,000 on PyPI
tableschema-to-templateConverts a Frictionless Table Schema into an…
permissive · top 15,000 on PyPI
tabulatorReads and writes tabular data in multiple…
permissive · top 15,000 on PyPI
datapackageProvides classes and utilities to create, load,…
permissive · top 15,000 on PyPI
csvwReads, writes, and validates tabular data…
permissive · top 5,000 on PyPI
followthemoneyProvides a pragmatic data model and validation…
permissive · top 15,000 on PyPI
dataflows-tabulatorReads and writes tabular data in multiple…
permissive · top 15,000 on PyPI
py-markdown-tableGenerates formatted markdown tables from lists…
permissive · top 5,000 on PyPI
PTablePTable formats tabular data into visually…
permissive · top 15,000 on PyPI
pandas-schemaValidates pandas DataFrames against…
permissive · top 15,000 on PyPI