← Back to archive

Repo of the Day

alteryx/featuretools: An open source python library for automated feature engineering

Published: Nov 10, 2026

Open repository ↗

An open source python library for automated feature engineering - alteryx/featuretools

Summary

Featuretools is an open-source Python library for automated feature engineering, particularly when the signals needed for a model are spread across related tables. Its Deep Feature Synthesis (DFS) workflow takes an entity set and a target dataframe, then returns a feature matrix and corresponding feature definitions for use as machine-learning input.

What it is useful for

Featuretools is useful when manually creating model inputs means repeatedly writing counts, sums, modes, ranges, date parts, and aggregates over relationships. In the README’s mock customer example, the data contains customers, sessions, and timestamped transactions. Running DFS for the customers target produces one row per customer and columns such as COUNT(transactions), SUM(transactions.amount), MODE(sessions.device), MIN(transactions.amount), MAX(transactions.amount), and YEAR(join_date), including multi-level aggregates across sessions.

It also fits workflows that need a reusable feature-generation step rather than a one-off notebook transformation. The documented “Predict Next Purchase” demo works from a multi-table dataset of three million Instacart orders, generates features for a next-purchase model, and shows a Dask-based path for a large dataset. If built-in primitives do not cover a needed operation, the project supports defining custom primitives.

Keep the boundaries in view: Premium and NLP primitives are separate add-ons, and Dask must be installed separately to run DFS with njobs > 1. For schemas and use cases beyond the mock data, the README directs readers to the Deep Feature Synthesis documentation.

How engineers can use it

Install the core package with:

python -m pip install featuretools

Or with Conda:

conda install -c conda-forge featuretools

A quick start can follow the README’s example:

import featuretools as ft

es = ft.demo.load_mock_customer(return_entityset=True)
feature_matrix, features_defs = ft.dfs(
    entityset=es,
    target_dataframe_name="customers",
)

Engineers can inspect es.plot() to understand the demo relationships, then inspect feature_matrix and features_defs to see which columns were produced. In a real pipeline, the returned matrix supplies model input while the definitions record how those features were generated.

For parallel DFS runs using multiple jobs, the README specifically documents:

python -m pip install "featuretools[dask]"

For custom feature logic, use the documented custom-primitive workflow. The repository also points to development instructions, usage support, and a next-purchase demo for extending the example into an applied project.