Feature engineering helps us create new useful data from existing data. This makes it easier for computers to learn and find patterns.
Feature engineering basics in Pandas
import pandas as pd # Create new feature by combining columns DataFrame['new_feature'] = DataFrame['col1'] + DataFrame['col2'] # Create feature by applying a function DataFrame['new_feature'] = DataFrame['col'].apply(function) # Create feature from date column DataFrame['year'] = DataFrame['date_col'].dt.year
You can create new columns by simple math or functions.
Date columns can be split into year, month, day easily with pandas.
import pandas as pd data = {'age': [25, 32, 47], 'income': [50000, 60000, 80000]} df = pd.DataFrame(data) df['age_income'] = df['age'] * df['income']
import pandas as pd data = {'date': pd.to_datetime(['2020-01-01', '2021-06-15'])} df = pd.DataFrame(data) df['year'] = df['date'].dt.year df['month'] = df['date'].dt.month
import pandas as pd def categorize_income(x): if x < 60000: return 'low' else: return 'high' data = {'income': [50000, 70000, 40000]} df = pd.DataFrame(data) df['income_level'] = df['income'].apply(categorize_income)
This program shows how to create new features by combining columns, extracting date parts, and categorizing numeric data.
import pandas as pd # Sample data data = { 'age': [22, 35, 58, 45], 'salary': [30000, 60000, 80000, 50000], 'join_date': pd.to_datetime(['2019-01-01', '2018-05-15', '2020-07-30', '2017-12-10']) } df = pd.DataFrame(data) # Create new feature: age times salary df['age_salary'] = df['age'] * df['salary'] # Extract year from join_date df['join_year'] = df['join_date'].dt.year # Categorize salary def salary_category(salary): return 'High' if salary > 55000 else 'Low' df['salary_cat'] = df['salary'].apply(salary_category) print(df)
Feature engineering can greatly improve model results but requires understanding your data.
Always check new features for errors or unexpected values.
Try simple features first before complex transformations.
Feature engineering means creating new useful columns from existing data.
It helps models learn better by giving clearer information.
Common methods include combining columns, extracting date parts, and categorizing values.
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
