Skip to main content
Yanked

This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 0.1.0 instead.
Reason given by maintainers: Syntax error in profiler.py, fixed in 0.1.2

dqengine-py

A Python engine for profiling and analyzing data quality.

Overview

dqengine-py is a lightweight Python package for exploring datasets and evaluating their quality through automated profiling and reporting.

It is designed to make it easier to understand the structure and quality of a dataset before using it for analysis, machine learning, or other data-driven applications.

Built with Polars for fast DataFrame operations and designed to be extensible as the project grows.

Features

  • Dataset profiling with Polars
  • Automatic data quality analysis
  • Detection and analysis of missing data
  • Column type analysis
  • Numerical and categorical column analysis
  • Constant column detection
  • Duplicate row detection
  • Duplicate column detection
  • Inconsistent categorical value detection
  • Date column detection
  • Invalid date detection
  • Outlier detection using the IQR method
  • Correlation analysis
  • Overall data quality scoring
  • HTML quality reports
  • JSON quality reports
  • Simple Python API
  • Designed to be extensible as the project grows

Installation

Install the latest release from PyPI:

pip install dqengine-py

Usage

Import DatasetProfiler from dqengine:

from dqengine import DatasetProfiler

Create a profiler using the path to your CSV dataset:

profiler = DatasetProfiler("data.csv")

Load and profile the dataset:

profiler.load_csv()
results = profiler.profile()

The profiler analyzes the dataset and returns the results as a Python dictionary.

Reports

dqengine-py supports generating data quality reports in different formats:

  • Terminal output for quick inspection
  • HTML for human-readable reports
  • JSON for programmatic use

Example:

from dqengine import DatasetProfiler
from dqengine.report import QualityReport


profiler = DatasetProfiler("data.csv")

profiler.load_csv()
results = profiler.profile()

report = QualityReport(results)

report.generate()
report.to_json("quality_report.json")
report.to_html("quality_report.html")

The generated files are:

quality_report.html
quality_report.json

The HTML report provides a visual overview of the dataset's quality, while the JSON report is useful when the results need to be processed by another program.

Example Workflow

A typical workflow looks like this:

CSV Dataset
    |
    v
DatasetProfiler
    |
    v
Polars DataFrame
    |
    v
Data Quality Analysis
    |
    +------> Missing Data Analysis
    |
    +------> Column Analysis
    |
    +------> Duplicate Detection
    |
    +------> Category Analysis
    |
    +------> Date Analysis
    |
    +------> Outlier Detection
    |
    +------> Correlation Analysis
    |
    +------> Quality Score
    |
    v
QualityReport
    |
    +------> Terminal
    |
    +------> HTML
    |
    +------> JSON

Analysis

The profiler currently analyzes several aspects of dataset quality.

Missing Values

Detects missing values in each column and calculates the percentage of missing values.

Duplicate Rows

Detects duplicate rows in the dataset and reports the total number found.

Constant Columns

Identifies columns containing only one unique value.

Inconsistent Categories

Detects categorical values that differ in formatting but represent the same normalized value.

For example:

Addis Ababa
addis ababa
ADDIS ABABA

Duplicate Columns

Detects columns containing identical data.

Date Analysis

Attempts to identify date columns and detects invalid date values.

Outliers

Detects numerical outliers using the Interquartile Range (IQR) method.

Correlations

Identifies strongly correlated numerical column pairs.

Quality Score

Calculates an overall data quality score based on detected issues.

The score is represented on a scale from:

0 - 100

Requirements

  • Python 3.12+
  • Polars

Project Status

dqengine-py is currently in the early development stage.

The current 0.1.0 release focuses on establishing the core profiling and reporting functionality.

Future versions will expand the analysis capabilities, improve the reporting system, and introduce additional data quality checks.

Development

Clone the repository:

git clone https://github.com/rcodes-ix/dqengine.git
cd dqengine

Create a virtual environment:

python -m venv .venv

Activate it on Linux/macOS:

source .venv/bin/activate

Install the project in editable mode:

pip install -e .

Project Structure

dqengine/
├── src/
│   └── dqengine/
│       ├── __init__.py
│       ├── profiler.py
│       └── report.py
├── .github/
│   └── workflows/
│       └── release.yml
├── .gitignore
├── LICENSE
├── README.md
└── pyproject.toml

License

This project is licensed under the MIT License.

See the LICENSE file for more information.

Download files

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

Source Distribution

dqengine_py-0.1.1.tar.gz (11.0 kB view details)

Uploaded Source

Built Distribution

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

dqengine_py-0.1.1-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file dqengine_py-0.1.1.tar.gz.

File metadata

  • Download URL: dqengine_py-0.1.1.tar.gz
  • Upload date:
  • Size: 11.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for dqengine_py-0.1.1.tar.gz
Algorithm Hash digest
SHA256 57ea0d4c9381ce435fee7dbe028861e71a959d1ff964a7169adf4eaa07df240e
MD5 11700f4ae17adf9a3a76da987e430e42
BLAKE2b-256 a449a26a0c0cf18318b3c5da1b4c32f2e8f780dcfd82faec8c1591635b1da2a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for dqengine_py-0.1.1.tar.gz:

Publisher: release.yml on rcodes-ix/dqengine

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dqengine_py-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: dqengine_py-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 9.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for dqengine_py-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5096316128e533a063f0f0ae74f284d30ffa2cff9637a628dc73994e236895c2
MD5 140e2b10769e6bae0de51bb951aeca27
BLAKE2b-256 58289668e32b457aa91d4c6666bf9cf10238b0e5b485270ead3b6176055571e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for dqengine_py-0.1.1-py3-none-any.whl:

Publisher: release.yml on rcodes-ix/dqengine

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page