Metadata-Version: 2.4
Name: easyclean
Version: 0.1.0
Summary: Fast, simple, chainable data cleaning for pandas DataFrames
Author-email: Your Name <you@example.com>
License: MIT
Project-URL: Homepage, https://github.com/yourusername/easyclean
Project-URL: Issues, https://github.com/yourusername/easyclean/issues
Keywords: data cleaning,pandas,data analysis,preprocessing,etl
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pandas>=1.3
Requires-Dist: numpy>=1.20
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"
Dynamic: license-file

# easyclean

Fast, simple, chainable data cleaning for pandas DataFrames — built for data
analysts who want clean data in a few lines instead of a wall of boilerplate.

## Install

```bash
pip install easyclean
```

## Quick start

```python
import pandas as pd
from easyclean import clean

df = pd.read_csv("messy_data.csv")
df_clean = clean(df)
```

`clean()` standardizes column names, strips whitespace, drops duplicate rows,
infers proper dtypes, and fills missing values — in one call.

## Chainable API (for more control)

```python
from easyclean import Cleaner

cleaner = Cleaner(df)
result = (
    cleaner
    .standardize_columns()
    .strip_strings()
    .drop_duplicates()
    .handle_missing(strategy="median")
    .infer_dtypes()
    .remove_outliers()
    .df
)

print(cleaner.report())
```

Example report output:

```
EasyClean Report
=================
Original shape: (1000, 8)
Final shape:    (974, 8)
Missing values: 42 -> 0

Steps applied:
  - Standardized column names (3 renamed)
  - Stripped whitespace from text columns
  - Dropped 12 duplicate row(s)
  - Handled missing values (strategy='median'): 42 value(s) filled/removed
  - Inferred dtypes (2 column(s) converted)
  - Removed 14 outlier row(s) (IQR factor=1.5)
```

## Functions

| Function | What it does |
|---|---|
| `clean(df)` | One-liner full pipeline |
| `standardize_column_names(df)` | Lowercase, strip, snake_case columns |
| `strip_whitespace(df)` | Trim whitespace in text columns |
| `drop_duplicate_rows(df)` | Remove exact duplicate rows |
| `handle_missing(df, strategy=...)` | Fill/drop missing values (`"auto"`, `"mean"`, `"median"`, `"mode"`, `"drop"`, `"value"`) |
| `infer_dtypes(df)` | Convert numeric-looking text columns to numbers |
| `detect_outliers_iqr(df)` | Boolean mask of IQR-based outliers |
| `remove_outliers_iqr(df)` | Drop IQR-based outlier rows |

## License

MIT
