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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57ea0d4c9381ce435fee7dbe028861e71a959d1ff964a7169adf4eaa07df240e
|
|
| MD5 |
11700f4ae17adf9a3a76da987e430e42
|
|
| BLAKE2b-256 |
a449a26a0c0cf18318b3c5da1b4c32f2e8f780dcfd82faec8c1591635b1da2a6
|
Provenance
The following attestation bundles were made for dqengine_py-0.1.1.tar.gz:
Publisher:
release.yml on rcodes-ix/dqengine
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dqengine_py-0.1.1.tar.gz -
Subject digest:
57ea0d4c9381ce435fee7dbe028861e71a959d1ff964a7169adf4eaa07df240e - Sigstore transparency entry: 2788184234
- Sigstore integration time:
-
Permalink:
rcodes-ix/dqengine@e602b60d7b0e88db23b0be425aa630a5a54d6ca5 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/rcodes-ix
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e602b60d7b0e88db23b0be425aa630a5a54d6ca5 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5096316128e533a063f0f0ae74f284d30ffa2cff9637a628dc73994e236895c2
|
|
| MD5 |
140e2b10769e6bae0de51bb951aeca27
|
|
| BLAKE2b-256 |
58289668e32b457aa91d4c6666bf9cf10238b0e5b485270ead3b6176055571e6
|
Provenance
The following attestation bundles were made for dqengine_py-0.1.1-py3-none-any.whl:
Publisher:
release.yml on rcodes-ix/dqengine
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dqengine_py-0.1.1-py3-none-any.whl -
Subject digest:
5096316128e533a063f0f0ae74f284d30ffa2cff9637a628dc73994e236895c2 - Sigstore transparency entry: 2788184238
- Sigstore integration time:
-
Permalink:
rcodes-ix/dqengine@e602b60d7b0e88db23b0be425aa630a5a54d6ca5 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/rcodes-ix
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e602b60d7b0e88db23b0be425aa630a5a54d6ca5 -
Trigger Event:
push
-
Statement type: