Skip to main content

Automatic DataFrame cleaning: nulls, duplicates, types, outliers.

Project description

🧹 dfclean

Limpieza automática de DataFrames: nulos, duplicados, tipos y outliers — con una API fluent compatible con scikit-learn.

PyPI CI Python Licencia: MIT Abrir en Colab


¿Qué es dfclean?

dfclean resuelve el problema más repetitivo del análisis de datos: limpiar un DataFrame antes de poder usarlo. En lugar de escribir decenas de líneas de pandas manualmente, defines un pipeline declarativo en una sola expresión encadenada.

from dfclean import CleanPipeline

df_limpio = (
    CleanPipeline(verbose=True)
    .standardize_columns()
    .replace_empty_strings()
    .drop_duplicates()
    .drop_high_null_columns(threshold=0.6)
    .impute_nulls(strategy="smart")
    .fix_types()
    .remove_outliers(method="iqr", treatment="clip")
    .fit_transform(df_sucio)
)

Instalación

pip install dfclean

Con soporte para Isolation Forest y LOF (requiere scikit-learn):

pip install "dfclean[ml]"

Características principales

Módulo Descripción
CleanPipeline API fluent encadenable, compatible con sklearn (fit / transform)
NullImputer 7 estrategias: smart, mean, median, mode, ffill, bfill, drop_rows
OutlierDetector IQR, Z-score, Isolation Forest, LOF — con tratamiento clip, remove o nan
TypeHandler Detecta fechas, numéricos y categorías; downcast automático para ahorrar memoria
DataFrameSchema Validación declarativa por columna: rangos, valores permitidos, renombrar
CleanReport Reporte antes/después en texto, dict, JSON y HTML

Guía de uso

Pipeline completo

import pandas as pd
from dfclean import CleanPipeline

df = pd.read_csv("datos_sucios.csv")

pipeline = (
    CleanPipeline(verbose=True)
    .standardize_columns()               # Normaliza nombres a snake_case
    .replace_empty_strings()             # "" y "  " se convierten en NaN
    .drop_duplicates()                   # Elimina filas duplicadas
    .drop_constant_columns()             # Elimina columnas con un solo valor
    .drop_high_null_columns(threshold=0.6)   # Elimina cols con >60% nulos
    .impute_nulls(strategy="smart")          # Mediana para numéricos, moda para categóricos
    .fix_types()                         # Detecta fechas, categorías y numéricos
    .remove_outliers(method="iqr", treatment="clip")  # Recorta outliers
    .memory_optimize()                   # Downcast para ahorrar RAM
)

df_limpio = pipeline.fit_transform(df)
pipeline.report()

Reutilizar en datos de prueba (estilo scikit-learn)

pipeline.fit(df_entrenamiento)
df_prueba_limpio = pipeline.transform(df_prueba)

Reporte HTML

pipeline.report_.save_html("reporte_limpieza.html")

Schema declarativo por columna

from dfclean import ColumnSchema, DataFrameSchema

schema = DataFrameSchema({
    "edad":   ColumnSchema(dtype="float64", min_value=0, max_value=120, nullable=False),
    "status": ColumnSchema(allowed_values=["activo", "inactivo"]),
    "email":  ColumnSchema(required=True, rename="correo"),
})

df_validado = schema.apply(df)
print(schema.validation_report())

Resumen de outliers

from dfclean import OutlierDetector

det = OutlierDetector(method="iqr", treatment="clip")
print(det.outlier_summary(df))

Docker

# Ejecutar pruebas
docker compose run tests

# Demo interactivo
docker compose run demo

Desarrollo local

git clone https://github.com/tamaraschnaas/dfclean.git
cd dfclean
pip install -e ".[dev]"
pytest tests/ -v

Estructura del proyecto

dfclean/
├── dfclean/
│   ├── pipeline.py       # CleanPipeline — API principal
│   ├── imputers.py       # NullImputer
│   ├── detectors.py      # OutlierDetector
│   ├── type_handler.py   # TypeHandler
│   ├── schema.py         # DataFrameSchema
│   ├── reporter.py       # CleanReport
│   └── cleaner.py        # Helpers estáticos
├── tests/                # Suite de pruebas con pytest
├── notebooks/            # Tutorial interactivo en Google Colab
├── .github/workflows/    # CI + publicación automática a PyPI
└── docker-compose.yml

Licencia

MIT © tamaraschnaas

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

dfclean_pipe-0.1.0.tar.gz (12.5 kB view details)

Uploaded Source

Built Distribution

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

dfclean_pipe-0.1.0-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file dfclean_pipe-0.1.0.tar.gz.

File metadata

  • Download URL: dfclean_pipe-0.1.0.tar.gz
  • Upload date:
  • Size: 12.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for dfclean_pipe-0.1.0.tar.gz
Algorithm Hash digest
SHA256 18f4a52bf816217e5eedd5386970696dab0674b2b2d59c9f4563ab58ef7e1d41
MD5 b9dfb15a90e4a7abe27061c395504e79
BLAKE2b-256 5045d70445ab585f8631aad2a3f1934dc886e497e7d94f052b6c687832c17c1d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dfclean_pipe-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for dfclean_pipe-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6bc2c3759acac261fd83d794c3c2328a179dc9036dc3afa3f80056c2b232aaaa
MD5 0f48b54c8241168a4019ea007cd37593
BLAKE2b-256 36d67722da315ea1b19aa07bf01000a904f95cb066ed8f1b3536723527e23daf

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