Automated feature engineering · Deep Feature Synthesis · relational & time-series data · verified against Featuretools 1.31 (2026)

Featuretools cheat sheet

Featuretools automates feature engineering with Deep Feature Synthesis (DFS): describe your tables and how they relate in an EntitySet, and it generates hundreds of aggregation & transform features by stacking primitives across relationships. It's built for relational and temporal data, and its cutoff-time mechanism produces leakage-safe features for time-series prediction. This sheet targets Featuretools 1.31.

concept & EntitySet relationships DFS primitives time & reuse gotcha most common

Verified 2026-08-24 against the official docs at featuretools.com (Featuretools 1.31) and the alteryx/featuretools repo. Data types are managed by Woodwork; pairs naturally with EvalML/scikit-learn downstream.

Outline

Three steps: build an EntitySet (tables + relationships), run dfs to synthesize features, then reuse the feature definitions on new data — leakage-safely with cutoff times.

Model your data

  1. 1 · Install & the idea
  2. 2 · EntitySet & dataframes
  3. 3 · Relationships

Synthesize

  1. 4 · dfs — the core call
  2. 5 · Primitives
  3. 6 · Depth & stacking

Use

  1. 7 · Cutoff times (no leakage)
  2. 8 · Reuse & select features
  3. 9 · Gotchas
  4. Worth memorizing

Model Your Data

Tables and how they relate — the input to DFS.

1Install & the idea1.31
2EntitySet & dataframesregister tables
3Relationshipsparent → child

Synthesize Features

One call generates the feature matrix.

4dfs — the core callDeep Feature Synthesis
5Primitivesthe building blocks
6Depth & stackingcontrol the explosion

Time & Reuse

Leakage-safe features, and applying them to new data.

7Cutoff times (no leakage)temporal correctness
8Reuse & select featuresproduction
!Common gotchasread before shipping

Worth memorizing

EntitySet → dfs → reuse defstables+relationships, synthesize, apply to new data
agg across relationships, trans within a tableMEAN(transactions.amount) vs MONTH(timestamp)
index + time_index per tableunique key, and the temporal column that enables cutoff times
relationships: (parent, parent_key, child, child_key)no relationship = no cross-table features
dfs returns matrix + defsdefs are reusable recipes, not just data
primitives choose the featureslist_primitives(); agg + trans + groupby_trans
max_depth controls stacking & blowupstart at 2
cutoff_time = no leakageonly pre-cutoff data used; training_window to bound it
calculate_feature_matrix at inferencesame defs = train/serve consistency