40. Data Preprocessing for Machine Learning (Missing Values, Scaling, Encoding)
40.4 Simple Encoding (get_dummies)
Why. Models need numbers. “Pune” is text. Encoding turns categories into columns or codes.
What. Beginner-friendly: pandas.get_dummies (one-hot style) for a few cities. Each city becomes a 0/1 column. For many categories, other encoders exist later — start simple.
How.
One-hot a city column
- Keep a small list of cities.
- Call
get_dummies. - Align train/test columns (
reindex) so test has the same dummy columns as train.
import pandas as pd
train = pd.DataFrame({"city": ["Pune", "Nashik", "Pune", "Mumbai"], "litres": [120, 90, 150, 200]})
test = pd.DataFrame({"city": ["Nashik", "Pune"], "litres": [100, 130]})
train_X = pd.get_dummies(train, columns=["city"])
test_X = pd.get_dummies(test, columns=["city"])
test_X = test_X.reindex(columns=train_X.columns, fill_value=0)
print(train_X)
print(test_X)
What you should see. Columns like city_Pune. Test rows line up with train columns even if a city is missing in that batch.
Fictional data
City lists are teaching samples, not a live warehouse extract.