Skip to content

Repository files navigation

AutoEDA

Python 3.11+ Tests License: MIT Version automation-core

Automated Exploratory Data Analysis for Professional BI Reporting

Installation | Quick Start | Features | API Reference | Ecosystem


Overview

AutoEDA is a production-quality Python package that performs end-to-end exploratory data analysis and generates executive-ready reports in HTML, PDF, and Markdown.

With one line of code, you get:

  • Dataset profiling with variable classification and health scoring
  • Statistical analysis including correlation, normality, hypothesis tests, and confidence intervals
  • 12 visualization types — histograms, KDE, boxplots, scatterplots, heatmaps, and more
  • Business insights with severity ratings, traceable source metrics, and actionable recommendations
  • Professional HTML reports with 11 sections, KPI cards, color-coded tables, and inline charts

Ecosystem

AutoEDA is the second component of a modular data analysis ecosystem:

Component Purpose Version
DataPrepToolkit Data preprocessing, cleaning, validation v1.1.0
AutoEDA Exploratory data analysis, visualization v1.0.0
AutoAnalytics Statistical analysis, modelling v1.0.0
AutoBI Dashboard generation, BI export v1.0.0
automation-core Shared contracts and serialization v0.1.0

Contract flow: AutoEDA consumes PreprocessingResult (via UpstreamReference) and produces EDAResult for downstream packages.

Installation

pip install autoeda

For PDF report generation:

pip install autoeda[pdf]

For development:

git clone https://github.com/Arasoul/AutoEDA.git
cd AutoEDA
pip install -e ".[dev]"

Quick Start

import pandas as pd
from autoeda import AutoEDA

df = pd.read_csv("your_data.csv")
results = AutoEDA().run(df)

results["profile"]         # DatasetProfile
results["statistics"]      # StatisticalAnalysis
results["figures"]         # VisualizationResult
results["insights"]        # InsightResult
results["report_paths"]    # ReportResult

Features

Dataset Profiling

from autoeda import DataProfiler

profile = DataProfiler().profile(df)
profile.health_score.overall  # 87
profile.health_score.label    # "Good"

Statistical Analysis

from autoeda import Analytics

stats = Analytics().analyse(df, profile)
stats.pearson.n_significant   # 3
stats.normality.tests          # Shapiro-Wilk, D'Agostino, KS

12 Visualization Types

Histograms, KDE, boxplots, violin plots, count plots, scatter plots, pair plots, bubble charts, correlation heatmaps, missing value heatmaps, outlier visualization, time series.

Business Insights

from autoeda import InsightEngine

engine = InsightEngine()
result = engine.generate(df, profile, stats)
result.executive_summary.narrative  # Executive summary text

Professional Reports

from autoeda import ReportGenerator

gen = ReportGenerator()
paths = gen.generate(profile, stats, figures, insights)
paths.html     # Consulting-firm-quality HTML report

Contract Adapter

from autoeda.contracts import build_eda_result
from autoeda._internal.models import RuntimeEDAState

state = RuntimeEDAState()
state.add_insight("Revenue is normally distributed")

result = build_eda_result(df, profile, state=state, upstream_ref=prep_ref)

Architecture

AutoEDA/
├── src/autoeda/
│   ├── __init__.py          # Public API + AutoEDA pipeline
│   ├── _version.py          # __version__ = "1.0.0"
│   ├── contracts.py         # build_eda_result adapter
│   └── _internal/
│       ├── __init__.py
│       ├── config.py        # AutoEDAConfig
│       ├── exceptions.py    # Custom exception hierarchy
│       ├── utils.py         # Delegates to automation_core.utils
│       ├── models.py        # RuntimeEDAState
│       ├── profiler.py      # DataProfiler, HealthScore
│       ├── analytics.py     # Analytics, correlations, normality
│       ├── visualization.py # Visualization, 12 figure types
│       ├── insight_engine.py# InsightEngine, insights
│       └── report_generator.py  # ReportGenerator, HTML/PDF/Markdown
├── tests/                   # 265 unit tests
├── pyproject.toml
├── LICENSE
└── README.md

API Reference

AutoEDA (Pipeline)

  • AutoEDA(config) — Create pipeline
  • AutoEDA.run(df) — Execute full EDA pipeline

DataProfiler

  • DataProfiler(config).profile(df) — Generate DatasetProfile

Analytics

  • Analytics(config).analyse(df, profile) — Run statistical analyses

Visualization

  • Visualization(config).generate_all(df, profile, stats) — Generate figures

InsightEngine

  • InsightEngine(config).generate(df, profile, stats, figures) — Generate insights

ReportGenerator

  • ReportGenerator(config).generate(profile, stats, figures, insights) — Generate reports

Contract

  • build_eda_result(df, profile, state, upstream_ref) — Build EDAResult

Testing

python -m pytest tests/ -v
python -m pytest tests/ --cov=autoeda --cov-report=term-missing

Requirements

  • Python 3.11+
  • pandas >= 2.0.0
  • numpy >= 1.24.0
  • scipy >= 1.11.0
  • matplotlib >= 3.7.0
  • seaborn >= 0.13.0
  • jinja2 >= 3.1.0
  • automation-core >= 0.1.0

License

MIT License - see LICENSE for details.

Author

Ahmed - GitHub

About

Production-ready automated exploratory data analysis toolkit with profiling, statistical analysis, visualization, business insights, and professional HTML/PDF reporting.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages