Skip to main content

🛠️ EazyDataFix

PyPI version Python Versions License Downloads GitHub Release GitHub Stars

A modern Python library for data quality assessment, validation, and automated data cleaning.

EazyDataFix helps data analysts, data scientists, machine learning engineers, and ETL developers quickly identify data quality issues and generate professional reports with just a few lines of code.


🌐 Documentation

📚 Documentation Website

https://eazydatafix.com

📖 API Reference

https://eazydatafix.com/docs


🚀 Quick Links


✨ Features

  • 📊 Data Quality Assessment
  • ✅ Missing Value Detection
  • 🔍 Duplicate Detection
  • ✔️ Data Validation
  • 🧹 Data Consistency Checks
  • 🎯 Data Accuracy Checks
  • ⏱️ Timeliness Checks
  • 💡 Intelligent Recommendations
  • 📄 Console Report
  • 🌐 HTML Report
  • 📑 PDF Report
  • 📈 Excel Report
  • 📋 CSV Report
  • 📦 JSON Report
  • 📝 Markdown Report
  • 🧭 Deterministic EDA Planning and Execution
  • 🤖 Deterministic Agentic EDA Orchestration
  • 📊 Reproducible Agentic EDA Reports and PNG Visualisations

Installation

EazyDataFix supports Python 3.10–3.13.

pip install eazydatafix

For Parquet support:

pip install eazydatafix[parquet]

Core APIs

import eazydatafix as edf

edf.profile(...)

edf.assess(...)

edf.assess_ai_readiness(...)

edf.eda(...)

edf.plan_eda(...)

edf.execute_eda(...)

edf.run_agentic_eda(...)

edf.export_agentic_eda_report(...)

edf.fix(...)

edf.prepare(...)

edf.analysis_ready(...)

Quick Start

import eazydatafix as edf

report = edf.assess("employees.csv")

report.summary()

report.to_html()

report.to_pdf()

report.to_excel()

report.to_json()

report.to_csv()

report.to_markdown()

Deterministic EDA

Generate a structured exploratory data analysis result without using an LLM.

import eazydatafix as edf

eda_result = edf.eda("employees.csv")

print(eda_result.shape)
print(eda_result.semantic_roles)
print(eda_result.identifier_columns)
print(eda_result.datetime_columns)
print(eda_result.numeric_statistics)
print(eda_result.categorical_summaries)
print(eda_result.observations)
print(eda_result.recommendations)

edf.eda(...) accepts pandas DataFrames, CSV, Excel, JSON, and Parquet files through the existing EazyDataFix datasource system.

EDA deterministically classifies columns as numeric measures, categorical dimensions, identifiers, datetimes, or booleans. Identifier, datetime, and boolean columns are excluded from numeric statistics and correlations.


Deterministic EDA Planner

Build a reproducible follow-up analysis plan from an existing EDAResult.

import eazydatafix as edf

eda_result = edf.eda("employees.csv")
plan = edf.plan_eda(eda_result)

for step in plan.selected_steps:
    print(step.name, step.priority, step.reason)

for step in plan.skipped_steps:
    print(step.name, step.reason)

print(plan.warnings)
print(plan.deterministic_summary)

The planner uses semantic roles and statistics from EDAResult to explain why each supported analysis is selected or skipped. It does not call an LLM.


Deterministic EDA Executor

Execute selected plan steps through deterministic analysis handlers.

import eazydatafix as edf

execution = edf.execute_eda("employees.csv")

for step in execution.executed_steps:
    print(step.name, step.status, step.output)

print(execution.execution_order)
print(execution.warnings)
print(execution.deterministic_summary)

edf.execute_eda(...) automatically creates the EDAResult and EDAPlan when they are not supplied. Existing results and plans can be reused explicitly:

eda_result = edf.eda("employees.csv")
plan = edf.plan_eda(eda_result)
execution = edf.execute_eda(
    "employees.csv",
    result=eda_result,
    plan=plan,
)

Execution results can be converted to a JSON-ready dictionary with execution.to_dict(). Selected steps record success or failure; planned skips remain visible with skipped status.


Deterministic Agentic EDA

Run dataset understanding, planning, execution, and traceable follow-up decision generation as one reproducible workflow.

import json

import eazydatafix as edf

config = edf.AgenticEDAConfig(
    correlation_threshold=0.85,
    outlier_iqr_multiplier=1.5,
    class_imbalance_threshold=0.80,
)
workflow = edf.run_agentic_eda("employees.csv", config=config)

print(workflow.overall_status)
print(workflow.priority_findings)
print(workflow.follow_up_actions)
print(workflow.recommended_visualisations)
print(workflow.unresolved_questions)

json_output = json.dumps(workflow.to_dict(), indent=2)

Every action, visualisation, question, and finding identifies its source execution step, target columns, priority, reason, and prerequisites. The orchestrator is deterministic, does not mutate DataFrames, and does not use an LLM. Visualisation recommendations and unresolved questions can be disabled, and recommendation counts can be bounded with AgenticEDAConfig.


Agentic EDA Reports

Convert an existing AgenticEDAResult into reproducible HTML and JSON report artifacts. Markdown is available as an optional format.

import eazydatafix as edf

workflow = edf.run_agentic_eda("employees.csv")

report = edf.export_agentic_eda_report(
    workflow,
    dataset="employees.csv",  # Optional: enables honest raw-data charts.
    output_dir="eda-report",
    formats=["html", "json", "markdown"],
)

print(report.generated_files)
print(report.generated_visualisations)
print(report.skipped_visualisations)
print(report.status)

Without dataset, charts supported by structured execution outputs—such as missing values, categorical distributions, correlations, and datetime frequencies—are still generated. Histograms and box plots are explicitly recorded as skipped unless a matching dataset is supplied. The dataset is validated against the workflow and copied; the workflow and caller DataFrame are never mutated.

Example output:

eda-report/
├── agentic-eda-report.html
├── agentic-eda-report.json
├── agentic-eda-report.md
└── visualisations/
    ├── 01-missing-value-chart-phone-salary.png
    ├── 02-bar-chart-department.png
    └── 03-time-series-line-chart-joining-date.png

Report filenames, section order, chart filenames, JSON key ordering, and artifact tracking are deterministic. Existing known artifact files are overwritten predictably; unrelated files in the output directory are preserved.


Example Console Output

======================================================================
                       🛠️ EASY DATA FIX REPORT
======================================================================

Overall Score : 90.37

Grade         : A

Completeness  : 96.97%

Uniqueness    : 100.00%

Validity      : 55.00%

Consistency   : 100.00%

Accuracy      : 100.00%

Timeliness    : 100.00%

Supported Quality Dimensions

Dimension Status
Completeness
Uniqueness
Validity
Consistency
Accuracy
Timeliness

Report Formats

EazyDataFix can generate reports in multiple formats.

report.summary()

report.to_html()

report.to_pdf()

report.to_excel()

report.to_json()

report.to_csv()

report.to_markdown()

Supported Data Sources

EazyDataFix accepts datasets in a variety of formats.

Both edf.assess(...) and edf.fix(...) work with:

  • Pandas DataFrame
  • CSV files
  • Excel files (.xlsx / .xls)
  • JSON files
  • Parquet files

Loading is handled by the modular eazydatafix.datasources package, allowing custom data source plugins.

import pandas as pd

from eazydatafix.datasources import (
    DataSource,
    default_registry,
)


class TSVDataSource(DataSource):

    name = "tsv"

    def can_load(self, source):
        from pathlib import Path
        return isinstance(source, Path) and source.suffix.lower() == ".tsv"

    def load(self, source):
        return pd.read_csv(source, sep="\t")


default_registry.register(TSVDataSource())

# edf.assess(...) and edf.fix(...) now support TSV files.

Why EazyDataFix?

EazyDataFix is designed to make data quality assessment simple and accessible.

Whether you're validating datasets before machine learning, preparing ETL pipelines, or cleaning business reports, EazyDataFix provides a consistent way to measure and improve data quality with minimal code.


Roadmap

✅ Completed

  • Assessment Engine
  • Validation Engine
  • Recommendation Engine
  • Reporting Engine
  • Auto Fix Foundation

🚀 Coming Soon

  • Data Profiling
  • CLI Support
  • Streamlit Dashboard
  • SQL Support
  • Apache Spark Support
  • Interactive Charts
  • AI Recommendations

Contributing

Contributions are always welcome.

Feel free to:

  • ⭐ Star the repository
  • 🐛 Report bugs
  • 💡 Suggest features
  • 🔧 Submit pull requests

GitHub Repository:

https://github.com/suneelprojects/eazydatafix

Documentation:

https://eazydatafix.com


License

MIT License


Made with ❤️ by Suneel Kumar Kola

🌐 https://eazydatafix.com

Download files

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

Source Distribution

eazydatafix-0.3.0.tar.gz (91.2 kB view details)

Uploaded Source

Built Distribution

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

eazydatafix-0.3.0-py3-none-any.whl (120.6 kB view details)

Uploaded Python 3

File details

Details for the file eazydatafix-0.3.0.tar.gz.

File metadata

  • Download URL: eazydatafix-0.3.0.tar.gz
  • Upload date:
  • Size: 91.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.5

File hashes

Hashes for eazydatafix-0.3.0.tar.gz
Algorithm Hash digest
SHA256 0f693599c94683b8786a8ac0c582a92afc5f579936734cd690ce5ec44f349654
MD5 b497085e18a31f7ee65c7d4e950df1b9
BLAKE2b-256 a5d48607112395b3bd27d5bc87f47636d809357f3ac0d7ab21f55b7e37bb41e4

See more details on using hashes here.

File details

Details for the file eazydatafix-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: eazydatafix-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 120.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.5

File hashes

Hashes for eazydatafix-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7e4f4d91a54bccf3e27af3f94b01b5b4e21a76ed40c6c8734a72319594f05a0c
MD5 923074815777d62b259c2f6835fc0ecb
BLAKE2b-256 e91956b92e3fe6aaa50cde8ea4e764dd249e8a8babb01986dd1edc936ae54e2b

See more details on using hashes here.

Release history Release notifications | RSS feed

1.4.0

2 files

1.0.0

2 files

0.5.0

2 files

0.4.0

2 files

This release

0.3.0 This release

2 files

0.2.1

2 files

0.2.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