Date feature extraction helps us get useful parts from dates, like year or month, to understand patterns in data better.
Date feature extraction in Data Analysis Python
df['new_feature'] = df['date_column'].dt.feature_name
Use .dt to access date parts from a pandas datetime column.
Common features: year, month, day, weekday, hour, quarter.
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df['weekday'] = df['date'].dt.weekday
df['quarter'] = df['date'].dt.quarter
This code creates a table with dates, converts them to date type, then adds new columns for year, month, weekday, and quarter.
import pandas as pd # Create sample data with dates data = {'date': ['2023-01-15', '2023-04-20', '2023-07-10', '2023-10-05']} df = pd.DataFrame(data) # Convert 'date' column to datetime type df['date'] = pd.to_datetime(df['date']) # Extract year, month, weekday, and quarter df['year'] = df['date'].dt.year df['month'] = df['date'].dt.month df['weekday'] = df['date'].dt.weekday df['quarter'] = df['date'].dt.quarter print(df)
Make sure your date column is in datetime format before extracting features.
Weekday numbers start at 0 for Monday, which helps in grouping by weekdays.
Quarter divides the year into four parts: Jan-Mar (1), Apr-Jun (2), Jul-Sep (3), Oct-Dec (4).
Date feature extraction breaks down dates into parts like year, month, and day.
It helps find patterns and group data by time periods.
Use pandas .dt accessor to get these features easily.
Practice
dt.year attribute do when applied to a pandas datetime column?Solution
Step 1: Understand pandas datetime accessor
Thedtaccessor allows extraction of date parts from datetime columns.Step 2: Identify what
dt.yearextractsdt.yearextracts the year component from each datetime value.Final Answer:
Extracts the year part from each date in the column -> Option AQuick Check:
dt.year = year extraction [OK]
- Confusing dt.year with dt.day or dt.month
- Thinking dt.year converts dates to strings
- Assuming dt.year calculates date differences
df['date']?Solution
Step 1: Recall pandas datetime accessor usage
To extract date parts, pandas requires thedtaccessor before the attribute.Step 2: Identify correct syntax for month extraction
The correct syntax isdf['date'].dt.month. Other options are invalid methods or missingdt.Final Answer:
df['date'].dt.month -> Option BQuick Check:
Use dt.month to get month [OK]
- Omitting .dt accessor
- Using non-existent methods like get_month()
- Trying to extract with extract('month')
import pandas as pd
dates = pd.to_datetime(['2023-01-15', '2023-07-04', '2023-12-31'])
df = pd.DataFrame({'date': dates})
df['day_of_week'] = df['date'].dt.dayofweek
print(df['day_of_week'].tolist())Solution
Step 1: Convert dates to day of week numbers
Usingdt.dayofweek, Monday=0 ... Sunday=6. Dates: 2023-01-15 is Sunday (6), 2023-07-04 is Tuesday (1), 2023-12-31 is Sunday (6).Step 2: List the dayofweek values
The list is [6, 1, 6].Final Answer:
[6, 1, 6] -> Option DQuick Check:
Sunday=6, Tuesday=1, Sunday=6 [OK]
- Confusing dayofweek with weekday names
- Assuming Sunday=0 instead of 6
- Mixing up dayofweek and day_name()
df['timestamp']?
df['hour'] = df['timestamp'].hour
Solution
Step 1: Check pandas datetime attribute access
Datetime properties require thedtaccessor to access parts like hour.Step 2: Identify missing .dt in code
The code usesdf['timestamp'].hourwhich is invalid; it should bedf['timestamp'].dt.hour.Final Answer:
Missing .dt accessor before .hour -> Option AQuick Check:
Use .dt.hour to extract hour [OK]
- Trying to access .hour directly on Series
- Converting datetime to string unnecessarily
- Using .time.hour which is invalid in pandas
df with a datetime column 'order_date'. You want to create a new column 'is_weekend' that is True if the order was placed on Saturday or Sunday, and False otherwise. Which code snippet correctly achieves this?Solution
Step 1: Understand dayofweek values for weekend
In pandas,dt.dayofweekreturns 0 for Monday through 6 for Sunday. Weekend days are 5 (Saturday) and 6 (Sunday).Step 2: Check which code correctly marks weekend
df['is_weekend'] = df['order_date'].dt.dayofweek >= 5 usesdf['order_date'].dt.dayofweek >= 5, which is True for 5 and 6, correctly marking weekends. Other options use invalid syntax or incorrect logic.Final Answer:
df['is_weekend'] = df['order_date'].dt.dayofweek >= 5 -> Option CQuick Check:
Weekend days are dayofweek >= 5 [OK]
- Using 'in' without vectorized methods
- Using 'or' instead of bitwise operators
- Confusing dayofweek numbers or names
Ready to prove it?
Pass the test and this pattern moves unknown
