Interactive EDA and feature engineering studio for reproducible ML preprocessing workflows
Project description
FeatureForge Studio
FeatureForge Studio is an interactive EDA and feature-engineering workspace for machine learning preprocessing. It gives you a Streamlit app for visual workflows and an importable Python library for scripts, notebooks, and reusable preprocessing pipelines.
Install name:
featureforge-studio
Import name:featureforge
Highlights
- Upload CSV datasets and inspect schema, missing values, duplicates, memory usage, and column types.
- Generate smart data-quality warnings for missingness, skew, high cardinality, duplicate rows, and likely ID columns.
- Explore data with interactive Plotly charts: histograms, boxplots, count plots, scatter plots, correlation heatmaps, and missing-value views.
- Queue preprocessing steps for imputation, scaling, encoding, and outlier handling.
- Export cleaned datasets, transformation config JSON, preprocessing code, and transformation reports.
- Use the same backend logic from Python via
featureforge.
Installation
Install from a local wheel:
pip install dist/featureforge_studio-0.1.0-py3-none-any.whl
For local development:
git clone https://github.com/aarush07/featureforge.git
cd featureforge/featureforge
python3 -m venv .venv
source .venv/bin/activate
pip install -e .[dev]
After publishing to PyPI:
pip install featureforge-studio
Run The App
From an installed package:
featureforge-app
From the repository:
cd featureforge
streamlit run app.py
If the default Streamlit port is busy:
streamlit run app.py --server.port 8502
Library Usage
import pandas as pd
from featureforge import ProfilingEngine, TransformationManager
df = pd.DataFrame(
{
"age": [21, None, 35],
"city": ["Pune", "Delhi", None],
"salary": [40000, 52000, 61000],
}
)
profile = ProfilingEngine().generate_summary(df)
steps = [
{
"id": "missing_values_1",
"type": "missing_values",
"method": "median",
"columns": ["age"],
"params": {},
"label": "Missing Values - median",
},
{
"id": "encoding_2",
"type": "encoding",
"method": "onehot",
"columns": ["city"],
"params": {"handle_unknown": "ignore"},
"label": "Encoding - onehot",
},
]
processed_df, metadata = TransformationManager().apply_steps(df, steps)
Core API
DatasetManager: CSV loading, column cleanup, basic validation.ProfilingEngine: dataset summaries, missing-value tables, type detection, smart warnings, optional ydata-profiling reports.EDAEngine: Plotly figure generation from declarative chart configs.TransformationManager: validates and applies transformation queues.PipelineBuilder: builds sklearn preprocessing pipelines from transformation config.CodeGenerator: exports standalone sklearn preprocessing code.ExportEngine: creates CSV, JSON, Python, and Markdown export payloads.
Supported Transformations
| Area | Methods |
|---|---|
| Missing values | mean, median, mode, constant, drop rows |
| Scaling | StandardScaler, MinMaxScaler, RobustScaler |
| Encoding | OneHotEncoder, OrdinalEncoder, label-style category codes |
| Outliers | IQR filtering, Z-score filtering |
Build A Distributable Package
python -m pip install build twine
python -m build
This creates:
dist/featureforge_studio-0.1.0-py3-none-any.whl
dist/featureforge_studio-0.1.0.tar.gz
Publish To PyPI
First test the package on TestPyPI:
twine upload --repository testpypi dist/*
Then publish to PyPI:
twine upload dist/*
Note: the PyPI name featureforge is already taken by another project, so this package uses the distribution name featureforge-studio while keeping the clean import name featureforge.
Development
Run tests:
pytest -q
Rebuild after metadata changes:
rm -rf dist build *.egg-info
python -m build
License
MIT License. See LICENSE.
Project details
Release history Release notifications | RSS feed
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 featureforge_studio-0.1.0.tar.gz.
File metadata
- Download URL: featureforge_studio-0.1.0.tar.gz
- Upload date:
- Size: 24.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27ade58c96fe948dc0340d800be83aab0caf46fe60fa7992aca4f932b02376cd
|
|
| MD5 |
8e64c2b8ae127ad530bce8459110f1a1
|
|
| BLAKE2b-256 |
302f2dc87fd757d3dbb2588ab1f238d0bac034f20e7c9850cb2eeb70587a579f
|
File details
Details for the file featureforge_studio-0.1.0-py3-none-any.whl.
File metadata
- Download URL: featureforge_studio-0.1.0-py3-none-any.whl
- Upload date:
- Size: 34.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b317dc4af38ed9dcc0d0dcea4aac3050227c4337748b39b18d5d375abe8e51f4
|
|
| MD5 |
739b153372fcc32339a1e95c58678bc0
|
|
| BLAKE2b-256 |
1e4f5f82c8b6ddffc502fc0f90ae5420edd128291dcc3a59ca5b52875a5aa757
|