devnotes.

Feature Creation

Feature creation builds new columns from existing data. The best ideas usually come from domain knowledge.

1. Combining features

import pandas as pd
import numpy as np

df = pd.read_csv("Titanic-Dataset.csv")

df["FamilySize"] = df["SibSp"] + df["Parch"] + 1
df["IsAlone"] = (df["FamilySize"] == 1).astype(int)
df["FarePerPerson"] = df["Fare"] / df["FamilySize"]

2. Extracting information from text

Titles like Mr, Mrs, Miss and Master are hidden inside the Name column and are strong predictors of survival.

df["Title"] = df["Name"].str.extract(r",\s*([^\.]+)\.", expand=False).str.strip()

rare = df["Title"].value_counts()[lambda s: s < 10].index
df["Title"] = df["Title"].replace(rare, "Rare")     # group very rare titles together
print(df["Title"].value_counts())

3. Date-time features

A raw timestamp is not very useful; its parts often are.

orders = pd.DataFrame({"order_date": pd.to_datetime(["2026-01-15 09:30", "2026-06-20 21:10"])})

orders["year"] = orders["order_date"].dt.year
orders["month"] = orders["order_date"].dt.month
orders["dayofweek"] = orders["order_date"].dt.dayofweek       # Monday = 0
orders["is_weekend"] = (orders["dayofweek"] >= 5).astype(int)
orders["hour"] = orders["order_date"].dt.hour

# cyclical encoding
orders["hour_sin"] = np.sin(2 * np.pi * orders["hour"] / 24)
orders["hour_cos"] = np.cos(2 * np.pi * orders["hour"] / 24)

Cyclical encoding tells the model that hour 23 is close to hour 0, which plain integers cannot express.

4. Aggregation features

Summarize groups: average, count, min, max per group.

df["ClassMeanFare"] = df.groupby("Pclass")["Fare"].transform("mean")
df["FareVsClass"] = df["Fare"] - df["ClassMeanFare"]

5. Flag (indicator) features

df["HasCabin"] = df["Cabin"].notnull().astype(int)
df["Age_missing"] = df["Age"].isnull().astype(int)
df["IsChild"] = (df["Age"] < 12).astype(int)

6. Domain-specific ratios

DomainEngineered feature
FinanceDebt-to-income ratio, credit utilization
HealthBMI = weight / height²
E-commerceAverage order value, days since last purchase
Real estatePrice per square foot, age of building
GeographyDistance to city center

Tips

  • Start with features a human expert would naturally look at.
  • Compute group statistics (groupby) from the training set only, otherwise the target or test information may leak in.
  • Keep track of how every feature is created so you can repeat it in production.
Feature Creation - Feature Engineering | Data Preparation | DevNotes