Bird
Raised Fist0
Pandasdata~20 mins

Feature engineering basics in Pandas - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
πŸŽ–οΈ
Feature Engineering Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of creating a new feature by combining columns
What is the output DataFrame after running this code that creates a new feature by combining two columns?
Pandas
import pandas as pd

df = pd.DataFrame({
    'height_cm': [170, 180, 160],
    'weight_kg': [70, 80, 60]
})
df['bmi'] = df['weight_kg'] / ((df['height_cm'] / 100) ** 2)
print(df)
A{'height_cm': [170, 180, 160], 'weight_kg': [70, 80, 60], 'bmi': [24.22, 24.69, 23.44]}
B{'height_cm': [170, 180, 160], 'weight_kg': [70, 80, 60], 'bmi': [24.22, 24.69, 23.44, 25.0]}
C{'height_cm': [170, 180, 160], 'weight_kg': [70, 80, 60]}
DSyntaxError
Attempts:
2 left
πŸ’‘ Hint
Calculate BMI as weight divided by height in meters squared.
❓ data_output
intermediate
1:30remaining
Number of unique categories after encoding
After applying one-hot encoding to the 'color' column, how many new columns are created?
Pandas
import pandas as pd

df = pd.DataFrame({'color': ['red', 'blue', 'green', 'blue', 'red']})
df_encoded = pd.get_dummies(df, columns=['color'])
print(df_encoded.columns.tolist())
A2
B4
C5
D3
Attempts:
2 left
πŸ’‘ Hint
Count unique values in the 'color' column.
πŸ”§ Debug
advanced
2:00remaining
Identify the error in feature scaling code
What error does this code raise when trying to scale a feature using Min-Max scaling?
Pandas
import pandas as pd

df = pd.DataFrame({'score': [10, 20, 30, 40, 50]})
min_val = df['score'].min()
max_val = df['score'].max()
df['scaled'] = (df['score'] - min_val) / (max_val - min_val)
print(df)
ATypeError
BNo error, but scaling is incorrect
CKeyError
DZeroDivisionError
Attempts:
2 left
πŸ’‘ Hint
Check the formula for Min-Max scaling carefully.
❓ visualization
advanced
2:30remaining
Interpret the histogram of a newly created feature
Given this code that creates a new feature 'age_group' and plots its histogram, what will the histogram show?
Pandas
import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'age': [15, 22, 37, 45, 52, 67, 70]})
df['age_group'] = pd.cut(df['age'], bins=[0, 18, 35, 60, 100], labels=['Child', 'Young Adult', 'Adult', 'Senior'])
df['age_group'].value_counts().plot(kind='bar')
plt.show()
ABar chart with counts: Child=1, Young Adult=2, Adult=2, Senior=2
BBar chart with counts: Child=0, Young Adult=2, Adult=3, Senior=2
CBar chart with counts: Child=1, Young Adult=1, Adult=2, Senior=3
DBar chart with counts: Child=1, Young Adult=1, Adult=3, Senior=2
Attempts:
2 left
πŸ’‘ Hint
Check which ages fall into each bin range.
πŸš€ Application
expert
3:00remaining
Choosing the best feature transformation for skewed data
You have a feature with a highly skewed distribution. Which transformation is most appropriate to reduce skewness before modeling?
AApply a logarithmic transformation (log(x + 1))
BApply a Min-Max scaling
CApply one-hot encoding
DApply standardization (z-score scaling)
Attempts:
2 left
πŸ’‘ Hint
Think about transformations that reduce skewness, not just scale data.

Practice

(1/5)
1. What is the main purpose of feature engineering in pandas?
easy
A. To create new useful columns from existing data
B. To delete unnecessary rows from the dataset
C. To change the data type of columns
D. To visualize data using charts

Solution

  1. Step 1: Understand feature engineering definition

    Feature engineering means creating new columns that help models learn better.
  2. 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.
  3. Final Answer:

    To create new useful columns from existing data -> Option A
  4. Quick Check:

    Feature engineering = create new columns [OK]
Hint: Feature engineering = making new columns from old data [OK]
Common Mistakes:
  • Confusing feature engineering with data cleaning
  • Thinking it only changes data types
  • Mixing it up with data visualization
2. Which of the following is the correct way to create a new column total as sum of columns 2a and 2b in a pandas DataFrame df?
easy
A. df['total'] <- df['2a'] + df['2b']
B. df.total = df.2a + df.2b
C. df['total'] == df['2a'] + df['2b']
D. df['total'] = df['2a'] + df['2b']

Solution

  1. Step 1: Recall pandas syntax for new column

    Use df['new_col'] = expression to create new columns.
  2. 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.
  3. Final Answer:

    df['total'] = df['2a'] + df['2b'] -> Option D
  4. Quick Check:

    New column = df['col'] = ... [OK]
Hint: Use df['col'] = ... to add new columns [OK]
Common Mistakes:
  • Using == instead of = for assignment
  • Using <- which is not Python syntax
  • Accessing columns without brackets
3. Given the DataFrame 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'])
medium
A. [child, young_adult, young_adult, adult]
B. [child, child, young_adult, adult]
C. [child, young_adult, adult, adult]
D. [child, young_adult, adult, young_adult]

Solution

  1. Step 1: Understand pd.cut bins and labels

    Bins: 0-18 = child, 18-35 = young_adult, 35-60 = adult.
  2. Step 2: Assign each age to bin

    15 -> child, 22 -> young_adult, 37 -> adult, 45 -> adult.
  3. Final Answer:

    [child, young_adult, adult, adult] -> Option C
  4. Quick Check:

    Age 37 and 45 fall in adult bin [OK]
Hint: Match values to bins to find labels [OK]
Common Mistakes:
  • Misunderstanding bin edges (inclusive/exclusive)
  • Assigning wrong labels to ages
  • Confusing order of labels
4. What is wrong with this code to create a new column year from a datetime column date in DataFrame df?
df['year'] = df['date'].year
medium
A. There is no error; the code is correct
B. You must use dt.year to access year from datetime column
C. You should use df.year = df.date.year instead
D. The column date must be converted to string first

Solution

  1. Step 1: Recall how to extract year from datetime column

    Use df['date'].dt.year to get year from pandas datetime column.
  2. Step 2: Identify error in code

    Code uses df['date'].year which is invalid; .year is not attribute of Series.
  3. Final Answer:

    You must use dt.year to access year from datetime column -> Option B
  4. Quick Check:

    Use df['date'].dt.year for datetime year [OK]
Hint: Use .dt accessor for datetime column parts [OK]
Common Mistakes:
  • Using .year directly on Series instead of .dt.year
  • Converting datetime to string unnecessarily
  • Assigning to df.year instead of df['year']
5. You have a DataFrame 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?
hard
A. df['bmi'] = df['weight_kg'] / (df['height_cm'] / 100) ** 2
B. df['bmi'] = df['weight_kg'] / df['height_cm'] ** 2 / 10000
C. df['bmi'] = df['weight_kg'] * (df['height_cm'] / 100) ** 2
D. df['bmi'] = df['weight_kg'] / (df['height_cm'] * 100) ** 2

Solution

  1. Step 1: Convert height from cm to meters

    Height in meters = height_cm / 100.
  2. Step 2: Apply BMI formula correctly

    BMI = weight_kg / (height_m)^2 = weight_kg / (height_cm / 100)^2.
  3. Step 3: Check each option

    df['bmi'] = df['weight_kg'] / (df['height_cm'] / 100) ** 2 matches formula exactly. Others have wrong operations or units.
  4. Final Answer:

    df['bmi'] = df['weight_kg'] / (df['height_cm'] / 100) ** 2 -> Option A
  5. Quick Check:

    BMI formula with height in meters = weight / heightΒ² [OK]
Hint: Divide height_cm by 100 before squaring for BMI [OK]
Common Mistakes:
  • Forgetting to convert cm to meters
  • Multiplying instead of dividing
  • Incorrect order of operations
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard