Feature engineering basics in Pandas - Time & Space Complexity
When creating new features from data, it is important to know how the time to do this grows as the data gets bigger.
We want to understand how the work needed changes when we add more rows or columns.
Analyze the time complexity of the following code snippet.
import pandas as pd
n = 10 # Example value for n
df = pd.DataFrame({
'A': range(1, n+1),
'B': range(n, 0, -1)
})
df['C'] = df['A'] + df['B']
df['D'] = df['A'] * 2
This code creates two new columns by adding and multiplying existing columns for each row.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Adding and multiplying values for each row in the DataFrame.
- How many times: Once per row, so n times where n is the number of rows.
As the number of rows grows, the number of operations grows roughly the same amount.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 20 (2 operations per row) |
| 100 | About 200 |
| 1000 | About 2000 |
Pattern observation: The work grows directly with the number of rows.
Time Complexity: O(n)
This means the time to create new features grows in a straight line as the data size grows.
[X] Wrong: "Creating new features takes the same time no matter how big the data is."
[OK] Correct: Each row needs to be processed, so more rows mean more work and more time.
Understanding how feature creation scales helps you explain your data preparation steps clearly and shows you know how to handle bigger datasets.
"What if we created new features using pairs of rows instead of single rows? How would the time complexity change?"
Practice
Solution
Step 1: Understand feature engineering definition
Feature engineering means creating new columns that help models learn better.Step 2: Compare options with definition
Only To create new useful columns from existing data matches the purpose of creating new useful columns from existing data.Final Answer:
To create new useful columns from existing data -> Option AQuick Check:
Feature engineering = create new columns [OK]
- Confusing feature engineering with data cleaning
- Thinking it only changes data types
- Mixing it up with data visualization
total as sum of columns 2a and 2b in a pandas DataFrame df?Solution
Step 1: Recall pandas syntax for new column
Use df['new_col'] = expression to create new columns.Step 2: Check each option
df['total'] = df['2a'] + df['2b'] uses correct syntax. df.total = df.2a + df.2b misses brackets, A uses wrong operator, D uses comparison operator.Final Answer:
df['total'] = df['2a'] + df['2b'] -> Option DQuick Check:
New column = df['col'] = ... [OK]
- Using == instead of = for assignment
- Using <- which is not Python syntax
- Accessing columns without brackets
df below, what will be the output of df['age_group'] after this code?import pandas as pd
df = pd.DataFrame({'age': [15, 22, 37, 45]})
df['age_group'] = pd.cut(df['age'], bins=[0, 18, 35, 60], labels=['child', 'young_adult', 'adult'])Solution
Step 1: Understand pd.cut bins and labels
Bins: 0-18 = child, 18-35 = young_adult, 35-60 = adult.Step 2: Assign each age to bin
15 -> child, 22 -> young_adult, 37 -> adult, 45 -> adult.Final Answer:
[child, young_adult, adult, adult] -> Option CQuick Check:
Age 37 and 45 fall in adult bin [OK]
- Misunderstanding bin edges (inclusive/exclusive)
- Assigning wrong labels to ages
- Confusing order of labels
year from a datetime column date in DataFrame df?df['year'] = df['date'].year
Solution
Step 1: Recall how to extract year from datetime column
Use df['date'].dt.year to get year from pandas datetime column.Step 2: Identify error in code
Code uses df['date'].year which is invalid; .year is not attribute of Series.Final Answer:
You must usedt.yearto access year from datetime column -> Option BQuick Check:
Use df['date'].dt.year for datetime year [OK]
- Using .year directly on Series instead of .dt.year
- Converting datetime to string unnecessarily
- Assigning to df.year instead of df['year']
df with columns height_cm and weight_kg. You want to create a new feature bmi using the formula bmi = weight_kg / (height_m)^2, where height in meters is height_cm divided by 100. Which code correctly creates the bmi column?Solution
Step 1: Convert height from cm to meters
Height in meters = height_cm / 100.Step 2: Apply BMI formula correctly
BMI = weight_kg / (height_m)^2 = weight_kg / (height_cm / 100)^2.Step 3: Check each option
df['bmi'] = df['weight_kg'] / (df['height_cm'] / 100) ** 2 matches formula exactly. Others have wrong operations or units.Final Answer:
df['bmi'] = df['weight_kg'] / (df['height_cm'] / 100) ** 2 -> Option AQuick Check:
BMI formula with height in meters = weight / height² [OK]
- Forgetting to convert cm to meters
- Multiplying instead of dividing
- Incorrect order of operations
Ready to prove it?
Pass the test and this pattern moves unknown
