An open API service indexing awesome lists of open source software.

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.

Awesome Lists containing this project

README

          


wizcraft-banner



WizCraft - CLI tool that simplifies the process of data pre-processing | Product Hunt

[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
[![CI](https://github.com/Pinak-Datta/wiz-craft/actions/workflows/ci.yml/badge.svg)](https://github.com/Pinak-Datta/wiz-craft/actions/workflows/ci.yml)

[![Downloads](https://static.pepy.tech/personalized-badge/wiz-craft?period=total&units=international_system&left_color=brightgreen&right_color=orange&left_text=Downloads)](https://pepy.tech/project/wiz-craft)

![PyPI - Version](https://img.shields.io/pypi/v/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
```


wizcraft-cli_welcome

## 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


data_description_preview

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


null_data_preview

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


one_hot_encode_preview

1. Identify and list categorical columns.
2. Perform one-hot encoding on categorical columns.

### Feature Scaling


scaling_preview

1. Normalize (Min-Max scaling) or standardize (Standard Scaler) numerical columns.

### Save Preprocessed Dataset


save_preview

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**