Automated Exploratory Data Analysis for Professional BI Reporting
Installation | Quick Start | Features | API Reference | Ecosystem
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
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.
pip install autoedaFor PDF report generation:
pip install autoeda[pdf]For development:
git clone https://github.com/Arasoul/AutoEDA.git
cd AutoEDA
pip install -e ".[dev]"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"] # ReportResultfrom autoeda import DataProfiler
profile = DataProfiler().profile(df)
profile.health_score.overall # 87
profile.health_score.label # "Good"from autoeda import Analytics
stats = Analytics().analyse(df, profile)
stats.pearson.n_significant # 3
stats.normality.tests # Shapiro-Wilk, D'Agostino, KSHistograms, KDE, boxplots, violin plots, count plots, scatter plots, pair plots, bubble charts, correlation heatmaps, missing value heatmaps, outlier visualization, time series.
from autoeda import InsightEngine
engine = InsightEngine()
result = engine.generate(df, profile, stats)
result.executive_summary.narrative # Executive summary textfrom autoeda import ReportGenerator
gen = ReportGenerator()
paths = gen.generate(profile, stats, figures, insights)
paths.html # Consulting-firm-quality HTML reportfrom 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)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
AutoEDA(config)— Create pipelineAutoEDA.run(df)— Execute full EDA pipeline
DataProfiler(config).profile(df)— Generate DatasetProfile
Analytics(config).analyse(df, profile)— Run statistical analyses
Visualization(config).generate_all(df, profile, stats)— Generate figures
InsightEngine(config).generate(df, profile, stats, figures)— Generate insights
ReportGenerator(config).generate(profile, stats, figures, insights)— Generate reports
build_eda_result(df, profile, state, upstream_ref)— BuildEDAResult
python -m pytest tests/ -v
python -m pytest tests/ --cov=autoeda --cov-report=term-missing- 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
MIT License - see LICENSE for details.
Ahmed - GitHub