Skip to main content

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


Download files

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

Source Distribution

featureforge_studio-0.1.0.tar.gz (24.5 kB view details)

Uploaded Source

Built Distribution

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

featureforge_studio-0.1.0-py3-none-any.whl (34.2 kB view details)

Uploaded Python 3

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

Hashes for featureforge_studio-0.1.0.tar.gz
Algorithm Hash digest
SHA256 27ade58c96fe948dc0340d800be83aab0caf46fe60fa7992aca4f932b02376cd
MD5 8e64c2b8ae127ad530bce8459110f1a1
BLAKE2b-256 302f2dc87fd757d3dbb2588ab1f238d0bac034f20e7c9850cb2eeb70587a579f

See more details on using hashes here.

File details

Details for the file featureforge_studio-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for featureforge_studio-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b317dc4af38ed9dcc0d0dcea4aac3050227c4337748b39b18d5d375abe8e51f4
MD5 739b153372fcc32339a1e95c58678bc0
BLAKE2b-256 1e4f5f82c8b6ddffc502fc0f90ae5420edd128291dcc3a59ca5b52875a5aa757

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page