All 25 Dependencies
Every package skrub depends on, ranked by repo health score.
skrub (formerly dirty_cat) is a Python library purpose-built for the unglamorous reality of machine learning with tabular data: columns full of typos, inconsistent date formats, mixed types, and high-cardinality string categories that standard encoders can't handle. Where scikit-learn pipelines stop, skrub picks up, providing a suite of specialized transformers, encoders, and joiners that convert raw, dirty dataframes directly into numeric features ready for any ML estimator.
At its core sits the `TableVectorizer`, a single transformer that automatically inspects each column's dtype and applies the appropriate encoding — one-hot for low-cardinality categories, the novel GapEncoder or MinHashEncoder for dirty strings, `DatetimeEncoder` for temporal columns, and passthrough for numerics. Wrapping a scikit-learn estimator with `tabular_pipeline()` produces a complete, fit-predict pipeline with sensible preprocessing defaults in a single call.
skrub also ships a powerful fuzzy-join system (`Joiner`, `AggJoiner`, `InterpolationJoiner`) that merges dataframes on approximate string or datetime keys rather than requiring exact matches — critical when combining datasets from different sources where entity names are spelled differently. The library's `DataOps` system goes further, enabling declarative computation graphs that embed hyperparameter search spaces directly into data preparation steps, so Optuna or scikit-learn's cross-validation can explore preprocessing choices alongside model hyperparameters.
Built on top of scikit-learn's estimator API, skrub components drop into existing pipelines without friction. It supports both pandas and Polars dataframes through an internal dispatch layer, and ships `TableReport` — a standalone HTML report with interactive plots, association heatmaps, and per-column distributions — for rapid data exploration before any modelling begins.