Generate structured EDA notebooks from datasets.
Project description
Hypersonic — EDA Notebook Generator
Build a complete Exploratory Data Analysis notebook in minutes.
Data scientists and ML folks are often evaluated on their EDA chops—but wiring up the same scaffolding each time is repetitive. Hypersonic lets you quick-build a clean, structured Jupyter notebook so you can spend your time on insights, not boilerplate.
- ⚡ Fast: point it at CSV/Parquet/SQLite and get an EDA notebook.
- 🧭 Structured: title/overview, reproducible loading, helper plots, and per-feature sections.
- 🧹 Practical: includes basic string normalization and “check/correct category typos” prompts.
- 🧰 Flexible: use it as a CLI or import as a Python library.
Name inspiration: hypersonic jets—because your EDA should take off quickly.
Installation
Python 3.9+ recommended.
From source (this repo)
# from the repo root
pip install -e .
This installs the console command hy and the hypersonic Python package (distribution name: hypersonic-eda).
Quick Start (CLI)
Basic (CSV)
hy --input data/my_data.csv --output eda.ipynb
With a target column
hy --input data/my_data.csv --target "label" --output eda_label.ipynb
Parquet
hy --input data/my_data.parquet --output eda_parquet.ipynb
SQLite (.db), first table auto-detected
hy --input data/my_database.db --output eda_db.ipynb
SQLite with a specific table
hy --input data/my_database.db --table events --output eda_events.ipynb
Remote files (HTTP/HTTPS)
hy --input "https://example.com/data.csv" --output eda_remote.ipynb
Command-line Options
hy --help
--input(required): CSV/Parquet/SQLite .db (path or URL)--table(optional): Table name if input is SQLite--target(optional): Target column name (excluded from feature loops)--max-cat(default: 30): Max number of categorical features to include--max-num(default: 30): Max number of numeric features to include--output(default: hypersonic_eda.ipynb): Output notebook path
What the Generated Notebook Contains
-
Title & Overview
Source info (path/URL, table, target) and timestamp. -
Data Loading (reproducible)
Handles CSV/Parquet/SQLite; downloads remote files to a temp path for SQLite. -
Dataset Snapshot
A compactdescribe(include="all")view (transposed) of the dataframe. -
Category Text Hygiene
A cell that normalizes string columns (lowercase, trims whitespace, removes stray spaces/underscores/periods).
A Markdown reminder to “carefully check and correct category typos.”
Per-categorical-feature cells that print unique values and counts to help you spot issues. -
Helper Functions
Simple plotting utilities (plot_categorical,plot_numeric) and tabulation helpers. -
Per-Feature Sections
For each categorical feature: a plot cell and a value-counts table.
For each numeric feature: a histogram and a summary-stats table (with IQR fences). -
Notes
Pointers and next-steps you can extend.
Tip: For very long-tail categoricals, consider grouping infrequent classes into “Other” right in the notebook.
Python API
Use Hypersonic programmatically if you prefer.
## Call from Python (optional)
If you want to trigger the CLI from Python:
**A) Use `subprocess` (recommended)**
```python
import subprocess
subprocess.run(["hy", "--input", "data/my_data.csv", "--output", "eda.ipynb"], check=True)
B) Or set sys.argv then call main()
import sys
from hypersonic.hy import main
sys.argv = ["hy", "--input", "data/my_data.csv", "--output", "eda.ipynb"]
main()
Examples
Create a notebook focused on a target, with more features:
hy --input data/train.csv --target Outcome --max-cat 50 --max-num 50 --output eda_outcome.ipynb
Generate EDA for the first table in a remote SQLite DB:
hy --input "https://host/path/data.db" --output eda_db.ipynb
Why this design?
- One file in, one notebook out. Clear contract, low ceremony.
- Reproducibility first. The “Data Loading” cell records exactly how the data was pulled.
- No heavy dependencies. Pure
pandas/matplotlib/nbformat(+requestsfor remote files).
Limitations & Notes
- Extremely wide datasets (thousands of columns) will generate large notebooks—use
--max-cat/--max-numto cap feature counts. - The default string cleaning is intentionally simple; adapt it in the notebook if your domain needs different rules.
- Plots are basic on purpose—tune them to your style post-generation.
- Do not use quotes in Target names
- It does primitive typographic corrctions only in catagorical Text.
Roadmap
- Subcommands for different flows (e.g.,
hypersonic eda target ...) - Optional profiling (timings, memory)
- “Other” binning for long-tail categories
- Skew detection and auto-transform hints
Contributing
Issues and PRs welcome!
Please open an issue with a small sample dataset and the expected behavior.
License
MIT © Krish Ambady
📌 Why Hypersonic-EDA?
Most “auto-EDA” tools today (like YData-Profiling, Sweetviz, AutoViz, DataPrep.EDA) focus on generating static HTML reports or inside-notebook widgets. Those are useful for quick looks—but they don’t give you an editable, reproducible notebook you can extend with your own code.
Hypersonic-EDA is different: it’s a CLI tool that generates a structured Jupyter Notebook (.ipynb) with clear sections for loading, statistics, helper functions, and per-feature plots/tables. This means you don’t just view a report—you start with a clean, living notebook that you can immediately modify, annotate, and share.
Key Differentiators
- Notebook output, not HTML: Produces an editable
.ipynbscaffold with code + markdown. - Source flexibility: Works with CSV, Parquet, and SQLite (local or HTTP URL, with auto-table detection).
- Lightweight & CLI-friendly: Just run
hy --input data.csv --output eda.ipynb. - Built-in data hygiene: Normalizes text columns and prompts you to check/correct categorical typos.
- Balanced defaults: Per-feature plots (categorical + numeric), summary stats, outlier counts, and a notes section ready for domain context.
Comparison
🔍 Comparison with Other Auto-EDA Tools
| Feature / Tool | Hypersonic-EDA | YData Profiling | Sweetviz | AutoViz | DataPrep.EDA |
|---|---|---|---|---|---|
| Output format | Jupyter Notebook (.ipynb) scaffold |
Static HTML/JSON report | Static HTML dashboard | Inline plots / notebook widget | Inline interactive plots |
| CLI usage | ✅ (hy --input …) |
❌ | ⚠️ (only via wrapper, HTML output) | ❌ | ❌ |
| Editable code | ✅ (full notebook you can extend) | ❌ | ❌ | Partial | Partial |
| Input sources | CSV, Parquet, SQLite (local/URL) | CSV, Parquet, DF | CSV, DF | CSV, DF | CSV, Parquet, DF |
| Typo/cleaning guidance | ✅ text normalization + typo-check prompts | ❌ | ❌ | ❌ | ❌ |
| Target column aware | ✅ | ✅ | ✅ | ✅ | ✅ |
| Dependencies | Lightweight (pandas, matplotlib, nbformat, requests) |
Heavier (pandas, matplotlib, visions, phik, …) |
Moderate | Moderate | Moderate |
Project details
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 hypersonic_eda-0.1.2.tar.gz.
File metadata
- Download URL: hypersonic_eda-0.1.2.tar.gz
- Upload date:
- Size: 17.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2105eea1480874f1c90085efa3a6359a5197b195db0f8028be1e981bab66f562
|
|
| MD5 |
23087c01c6ab253e8af52d430acd947b
|
|
| BLAKE2b-256 |
aeea27419929f788454faca356d98060bbc3ceef6511f5880782d353671a5afb
|
File details
Details for the file hypersonic_eda-0.1.2-py3-none-any.whl.
File metadata
- Download URL: hypersonic_eda-0.1.2-py3-none-any.whl
- Upload date:
- Size: 14.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aca9f6afecdb80959b7071404d9079709a372f402557d4421f6e532df678e23f
|
|
| MD5 |
3d5a64ca8bce8fc8e95bf6cd090b7d17
|
|
| BLAKE2b-256 |
2cb39895908b7bd0cab3bc89f6f881a7b9eccc2f251a7909abe87757dba04d06
|