https://github.com/pinak-datta/wiz-craft
A CLI-based dataset preprocessing tool for machine learning tasks. Features include data exploration, null value handling, one-hot encoding, and feature scaling, and download the modified dataset effortlessly.
https://github.com/pinak-datta/wiz-craft
cli cli-app dataset machine-learning preprocessing
Last synced: 1 day ago
JSON representation
A CLI-based dataset preprocessing tool for machine learning tasks. Features include data exploration, null value handling, one-hot encoding, and feature scaling, and download the modified dataset effortlessly.
- Host: GitHub
- URL: https://github.com/pinak-datta/wiz-craft
- Owner: Pinak-Datta
- License: mit
- Created: 2023-08-06T03:36:00.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2026-06-25T14:48:14.000Z (19 days ago)
- Last Synced: 2026-06-25T16:06:21.928Z (19 days ago)
- Topics: cli, cli-app, dataset, machine-learning, preprocessing
- Language: Python
- Homepage: https://pypi.org/project/wiz-craft/
- Size: 93.8 KB
- Stars: 16
- Watchers: 1
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
[](https://opensource.org/licenses/MIT)
[](https://github.com/Pinak-Datta/wiz-craft/actions/workflows/ci.yml)
[](https://pepy.tech/project/wiz-craft)

# WizCraft - CLI-Based Dataset Preprocessing Tool
WizCraft is a beginner-friendly Command Line Interface (CLI) tool for preparing tabular datasets for machine learning. It helps you inspect a CSV, diagnose data quality issues, handle missing values, encode categorical columns, scale numeric features, save a cleaned dataset, and export replayable preprocessing recipes.
**[Try the tool online here](https://replit.com/@PinakDatta/DataWiz)**
**Check out the [Contribution Guide](https://github.com/Pinak-Datta/wiz-craft/blob/main/CONTRIBUTING.md) if you want to contribute to this project**
## Table of Contents
- [Features](#features)
- [Getting Started](#getting-started)
- [Installation](#installation)
- [Dataset Doctor](#dataset-doctor)
- [Tasks](#tasks)
- [Data Description](#data-description)
- [Handle Null Values](#handle-null-values)
- [Encode Categorical Values](#encode-categorical-values)
- [Feature Scaling](#feature-scaling)
- [Save Preprocessed Dataset](#save-preprocessed-dataset)
- [Replayable Recipes](#replayable-recipes)
- [Roadmap](#roadmap)
- [Contributing to the Project](#contribute-to-the-project)
## Features
- Load and preprocess your dataset effortlessly through a Command Line Interface (CLI).
- View dataset statistics, null value counts, and perform data imputation.
- Encode categorical variables using one-hot encoding.
- Normalize and standardize numerical features for better model performance.
- Download the preprocessed dataset with your desired modifications.
- Save preprocessing recipes and replay them on future CSV files.
- Audit datasets with `wizcraft doctor`, detect modeling risks, and generate suggested cleaning recipes.
## Getting Started
### Installation
Install WizCraft from PyPI:
```bash
pip install wiz-craft
```
Start the interactive CLI with a CSV file:
```bash
wizcraft dataset.csv
```
You can also launch WizCraft and choose a CSV from the current directory:
```bash
wizcraft
```
WizCraft can still be used from Python:
```python
from wizcraft.preprocess import Preprocess
wiz_obj = Preprocess(csv_file="dataset.csv")
wiz_obj.start()
```
Follow the on-screen prompts to select the target variable and perform preprocessing tasks.
Audit a dataset and generate a suggested recipe:
```bash
wizcraft doctor train.csv --target Survived --write-recipe recipe.json
```
Export the same audit as JSON or HTML:
```bash
wizcraft doctor train.csv --target Survived --json report.json --html report.html
```
Replay a saved recipe on another CSV:
```bash
wizcraft apply new-data.csv --recipe cleaned.recipe.json --out new-data-clean.csv
```
## Dataset Doctor
`wizcraft doctor` audits a CSV and surfaces common machine-learning data quality issues before you start modeling:
```bash
wizcraft doctor train.csv --target Survived
```
The doctor currently checks for:
- Column types, including numeric, categorical, datetime, text-like, ID-like, and mostly-empty columns
- Missing values
- Duplicate rows
- ID-like columns
- Constant and near-constant columns
- Categorical columns that need encoding
- Date/datetime columns that may need feature extraction
- Numeric outliers using the IQR rule
- Imbalanced target columns
- Likely modeling task: binary classification, multiclass classification, or regression
- Possible target leakage from suspicious names or highly target-correlated numeric columns
You can write a suggested recipe and apply it later:
```bash
wizcraft doctor train.csv --target Survived --write-recipe recipe.json
wizcraft apply train.csv --recipe recipe.json --out train-clean.csv
```
You can also use Doctor output in automation:
```bash
wizcraft doctor train.csv --target Survived --format json
wizcraft doctor train.csv --target Survived --html report.html
```
## Features Available
### Data Description
1. View statistics and properties of numeric columns.
2. Explore unique values and statistics of categorical columns.
3. Display a snapshot of the dataset.
### Handle Null Values
1. Show NULL value counts in each column.
2. Remove specific columns or fill NULL values with mean, median, mode, or K-nearest neighbors.
### Encode Categorical Values
1. Identify and list categorical columns.
2. Perform one-hot encoding on categorical columns.
### Feature Scaling
1. Normalize (Min-Max scaling) or standardize (Standard Scaler) numerical columns.
### Save Preprocessed Dataset
1. Download the modified dataset with applied preprocessing steps.
2. Save a replayable `.recipe.json` file for the same preprocessing flow.
## Replayable Recipes
WizCraft can now save the preprocessing steps you perform interactively. A recipe is a small JSON file that can be applied again later:
```bash
wizcraft apply raw-data.csv --recipe cleaned.recipe.json --out cleaned-data.csv
```
Recipes currently support:
- Removing columns
- Filling null values with mean, median, mode, or K-nearest neighbors
- One-hot encoding categorical columns
- Normalizing or standardizing numeric columns
## Roadmap
WizCraft is being rebuilt around three ideas: a friendly first-time CLI, dataset health checks, and repeatable preprocessing recipes.
Current priorities:
- Non-interactive commands for automation and notebooks.
- Exportable scikit-learn preprocessing pipelines.
- Cleaner terminal tables, validation, and error messages.
- Example datasets, tutorials, and good first issues for new contributors.
See [ROADMAP.md](ROADMAP.md) for the full direction.
## Contributing to the Project
**Check out the [Contribution Guide](https://github.com/Pinak-Datta/wiz-craft/blob/main/CONTRIBUTING.md) if you want to contribute to this project**