Skip to main content

A developer-first Python toolkit for data quality profiling, validation, and interactive HTML reports.

Project description

python data quality kit

pydqkit is a lightweight, developer-first Python toolkit for data quality profiling, data validation, sanity check and interactive HTML visualization.

It helps data engineers and analysts quickly understand the structure, completeness, and patterns of tabular datasets, without requiring any external platforms or services.


Features

  • Column-level data profiling
    • Null and non-null statistics
    • Distinct and duplicate counts
    • Length analysis (minimum, maximum, average)
  • Pattern discovery for string, datetime, and boolean columns
  • Type inference (numeric, string, boolean, datetime)
  • Interactive, self-contained HTML profiling reports
  • Designed for exploratory analysis and debugging workflows

Installation

pip install pydqkit

Quick Start

import pandas as pd
from pydqkit.profiling import profile_dataframe
from pydqkit.viz import profile_to_html

df = pd.DataFrame({
    "id": ["AB123456", "CD654321", None, "EF000001"],
    "age": [25, 30, None, 40],
    "score": [88.5, 92.0, 79.5, 85.0],
    "date": ["2025-01-01", "2025-01-02", None, "2025-01-04"],
    "flag": [True, True, False, True],
})

profile = profile_dataframe(df, dataset_name="demo")

html = profile_to_html(profile)
with open("profile_report.html", "w", encoding="utf-8") as f:
    f.write(html)

Open profile_report.html in your browser to explore the interactive profiling report.


What the Profiling Report Shows

For each column, the report includes:

Completeness

  • Proportion of non-null and null values (visual bar and percentages)

Value Statistics

  • Distinct count and duplicate count

Type Information

  • Inferred profile type and suggested logical type

Length Metrics

  • Minimum length (reported as 0 if missing values exist)
  • Maximum and average length

Pattern Summary

  • Common structural patterns inferred from values

Top Values

  • Most frequent values with counts and percentages

The report is designed to be readable at a glance while still exposing enough detail for debugging and validation.


Design Philosophy

pydqkit is intentionally:

Developer-first

Optimized for notebooks, scripts, and local inspection.

Platform-independent

No cloud services, no accounts, no metadata dependencies.

Explainable

Metrics and visual elements are designed to be interpretable rather than opaque.

The project follows conventions commonly used in enterprise data quality tools, but is implemented as a standalone Python library.


License

This project is released under the MIT License.
See the LICENSE file for details.

The author reserves the right to relicense future versions.


Disclaimer

This project is an independent open-source toolkit and is not affiliated with, endorsed by, or associated with Informatica or any other commercial data quality platform.


Contributing

Contributions are welcome.

By submitting a pull request, you agree that your contributions will be licensed under the same license as this project.

See CONTRIBUTING.md for details.


Roadmap (Tentative)

  • Rule-based data quality checks
  • Column-level and cell-level validation
  • Support for multiple rule definitions:
    • Regular expressions
    • SQL-based rules
    • Plain-language rule specifications
  • Data engineering quality checks (schema, type, and pipeline sanity)
  • Machine learning data sanity checks (distribution drift, outliers)
  • Column comparison across datasets
  • Cell level data quality check
  • Export profiling reports to multiple formats (HTML, PDF, Excel)
  • Configurable thresholds and validation summaries

Author

Niki Zheng, Luqun Li

Project details


Download files

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

Source Distribution

pydqkit-1.0.0.tar.gz (40.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydqkit-1.0.0-py3-none-any.whl (26.0 kB view details)

Uploaded Python 3

File details

Details for the file pydqkit-1.0.0.tar.gz.

File metadata

  • Download URL: pydqkit-1.0.0.tar.gz
  • Upload date:
  • Size: 40.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for pydqkit-1.0.0.tar.gz
Algorithm Hash digest
SHA256 2a2d840ca91be1385c6b8f241bc4a33f477ec4b0e0181aefd16f28ce9a0eb806
MD5 64ad9a2deb246a644d822e57d4216c46
BLAKE2b-256 cb07d82d7eb8c90d674fe535d02562462cb4b7bd7ccd605608f3c7fbaf362cc6

See more details on using hashes here.

File details

Details for the file pydqkit-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: pydqkit-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 26.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for pydqkit-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2d5b330ea59b3694d96fb09e67e7e7017565a2c4cd505fbad65df5ba41eaedd1
MD5 3a07834ce5bf41ca256010212feae4c8
BLAKE2b-256 4ae0423b72073c51da92e989b8123d062eb8b60ba10b03d988c388cad094c147

See more details on using hashes here.

Supported by

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