woodwork
a data typing library for machine learning
What it is and what it does
Woodwork is a data typing library that extends pandas DataFrames with a semantic layer for machine learning. It lets you assign logical types (Integer, Categorical, DateTime, NaturalLanguage, etc.) and semantic tags to columns, then query and filter your data based on those annotations. The library automatically infers types from underlying data when you don't specify them, and it stores metadata alongside your DataFrame for use in downstream ML workflows.
The package is designed as a common typing namespace for Featuretools and EvalML, so if you're using those tools, Woodwork provides a standardized way to communicate data structure and meaning. It depends on pandas, scikit-learn, scipy, numpy, python-dateutil, and importlib-resources—all standard data-science libraries—so installation is straightforward. The project is maintained by Alteryx but has not seen active development since mid-2024.
Use it for:
- Annotate DataFrame columns with logical types and semantic tags before passing data to Featuretools for automated feature engineering.
- Store and communicate column metadata (e.g., which columns are numeric, categorical, or contain personal names) for reproducible ML pipelines.
- Filter and select DataFrame subsets by logical type or semantic tag without manual column name lists.
- Standardize data typing across multiple DataFrames in a machine learning project to ensure consistent downstream processing.
- Integrate with EvalML for automated machine learning workflows that rely on consistent column type information.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Woodwork adds a typing layer to pandas DataFrames, letting you annotate columns with logical types and semantic tags for use in machine learning workflows and data science tools.
Yes, if you are using Featuretools or EvalML and need a standardized way to annotate and manage DataFrame column types. The low install friction and permissive license make it a straightforward addition. However, be aware that the project is aging—last release was May 2024 and there have been no commits since September 2025—so verify compatibility with your current versions of pandas and scikit-learn before relying on it for new projects.
Install
woodwork on PyPI
pip
pip install woodworkuv
uv add woodworkpoetry
poetry add woodworkInstalling woodwork
Before you install
Low install friction with 6 common runtime dependencies (pandas, scikit-learn, scipy, numpy, python-dateutil, importlib-resources). Maintenance status is aging—last release was in May 2024 and no commits since September 2025, suggesting the project is stable but not actively developed.
License in practice
BSD 3-Clause License is permissive; you can use, modify, and distribute Woodwork freely in commercial and private projects as long as you retain the license notice and disclaimer.
Quickstart
import pandas as pd
import woodwork as ww
df = pd.read_csv('data.csv')
df.ww.init(name='my_data')
df.ww.set_types(logical_types={'col_name': 'Integer', 'category_col': 'Categorical'})
filtered = df.ww.select(include=['numeric'])
Verify before relying
- Whether the aging maintenance status (last release May 2024, no commits since Sept 2025) affects compatibility with recent pandas or scikit-learn versions.
- Whether Woodwork's integration with Featuretools and EvalML remains current given the maintenance gap.
Package facts
| License | BSD 3-Clause License Copyright (c) 2019, Alteryx, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following… (full text in the JSON record) (permissive) |
| Python support | supports the current Python release (<4,>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 6 — pandas, scikit-learn, python-dateutil, scipy, importlib-resources, numpy |
| Maintenance | aging — 822 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 170,445/month — #10,394 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: woodwork-0.31.0-py3-none-any.whl
Keywords: data science, machine learning, typing
Tags
More Software Development packages
Provides backported and experimental type hints…
permissive · top 100 on PyPI
numpyNumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
distlibDistlib provides low-level packaging utilities…
permissive · top 1,000 on PyPI
semantic-link-functions-holidaysAdds semantic functions to FabricDataFrame that…
permissive · top 15,000 on PyPI
visionsVisions defines and detects semantic data types…
permissive · top 5,000 on PyPI
semantic-link-functions-phonenumbersAdds phone number validation as a semantic…
permissive · top 15,000 on PyPI
sklearn-pandasBridges pandas DataFrames and scikit-learn by…
permissive · top 15,000 on PyPI
awkward-pandasExtends pandas DataFrames to store and…
permissive · top 15,000 on PyPI
pandas-summaryExtends pandas' describe() function to provide…
permissive · top 15,000 on PyPI
featuretoolsFeaturetools automates feature engineering for…
permissive · top 15,000 on PyPI
Pint-PandasPint-Pandas adds physical unit support to…
permissive · top 15,000 on PyPI
pandaspandas provides fast, flexible data structures…
permissive · top 100 on PyPI
datacompyDataComPy compares two DataFrames across…
permissive · top 5,000 on PyPI