Bird
Raised Fist0
Data Analysis Pythondata~10 mins

Extracting date components (year, month, day) in Data Analysis Python - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Extracting date components (year, month, day)
Start with date column
↓
Extract year from date
↓
Extract month from date
↓
Extract day from date
↓
Store or display extracted components
We start with a date column, then extract year, month, and day one by one, and finally store or show these parts.
Execution Sample
Data Analysis Python
import pandas as pd

df = pd.DataFrame({'date': pd.to_datetime(['2024-06-01', '2023-12-25'])})
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df['day'] = df['date'].dt.day
print(df)
This code creates a table with dates and adds columns for year, month, and day extracted from those dates.
Execution Table
StepActionInputOutput/Result
1Create DataFrame with date column['2024-06-01', '2023-12-25']DataFrame with 'date' column of datetime type
2Extract year from 'date'2024-06-01, 2023-12-25[2024, 2023] stored in 'year' column
3Extract month from 'date'2024-06-01, 2023-12-25[6, 12] stored in 'month' column
4Extract day from 'date'2024-06-01, 2023-12-25[1, 25] stored in 'day' column
5Print DataFrameDataFrame with 'date', 'year', 'month', 'day'Shows table with all columns and values
💡 All date components extracted and stored; DataFrame ready for use.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4Final
dfNonedate column with ['2024-06-01', '2023-12-25']Added 'year' column [2024, 2023]Added 'month' column [6, 12]Added 'day' column [1, 25]DataFrame with 'date', 'year', 'month', 'day' columns
Key Moments - 2 Insights
Why do we use .dt before year, month, and day?
The .dt accessor tells pandas we want to work with datetime properties of the column. Without it, pandas won't know to extract date parts. See execution_table step 2-4.
What happens if the 'date' column is not in datetime format?
Extraction will fail or give errors because .dt only works on datetime types. You must convert strings to datetime first, as done in step 1.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table at step 3, what values are stored in the 'month' column?
A[2024, 2023]
B[6, 12]
C[1, 25]
D['2024-06-01', '2023-12-25']
💡 Hint
Check the 'Output/Result' column for step 3 in the execution_table.
At which step does the DataFrame get the 'day' column added?
AStep 2
BStep 3
CStep 4
DStep 5
💡 Hint
Look for the action 'Extract day from date' in the execution_table.
If the 'date' column was not converted to datetime, what would happen when extracting year?
AExtraction gives an error or wrong result
BYear column will be all zeros
CExtraction works normally
DMonth column will be extracted instead
💡 Hint
Refer to key_moments about the importance of datetime type for .dt accessor.
Concept Snapshot
Extract year, month, day from a datetime column using pandas:
Use df['date'].dt.year, .dt.month, .dt.day
Make sure 'date' is datetime type first
Adds new columns with extracted parts
Useful for time-based analysis
Full Transcript
We start with a DataFrame containing a date column. We convert the date strings to datetime type so pandas can understand them. Then, using the .dt accessor, we extract the year, month, and day parts from each date. These parts are stored in new columns in the DataFrame. Finally, we print the DataFrame to see all columns together. This process helps us break down dates into useful pieces for analysis.

Practice

(1/5)
1. What does the dt.year attribute do when applied to a pandas datetime column?
easy
A. Converts the dates to string format
B. Extracts the month part from each date in the column
C. Extracts the day part from each date in the column
D. Extracts the year part from each date in the column

Solution

  1. Step 1: Understand pandas datetime attributes

    The dt accessor allows extraction of date parts like year, month, day from datetime columns.
  2. Step 2: Identify what dt.year extracts

    dt.year specifically extracts the year component from each datetime value.
  3. Final Answer:

    Extracts the year part from each date in the column -> Option D
  4. Quick Check:

    dt.year = year extraction [OK]
Hint: Remember: dt.year extracts year, dt.month extracts month [OK]
Common Mistakes:
  • Confusing dt.year with dt.month or dt.day
  • Thinking dt.year converts to string
  • Using dt.year on non-datetime columns
2. Which of the following is the correct syntax to extract the month from a pandas datetime column named date_col?
easy
A. date_col.dt.month
B. date_col.month()
C. date_col['month']
D. month(date_col)

Solution

  1. Step 1: Recall pandas datetime accessor usage

    To extract date parts, use the dt accessor followed by the attribute without parentheses.
  2. Step 2: Identify correct syntax for month extraction

    The correct syntax is date_col.dt.month. Parentheses are not used because it's an attribute, not a method.
  3. Final Answer:

    date_col.dt.month -> Option A
  4. Quick Check:

    Use dt.month attribute, no parentheses [OK]
Hint: Use .dt.month without parentheses to get month [OK]
Common Mistakes:
  • Adding parentheses like date_col.month()
  • Trying to access month as a dictionary key
  • Using a function month() without import
3. Given the following code, what will be the output?
import pandas as pd

dates = pd.Series(pd.to_datetime(['2023-01-15', '2022-12-31', '2024-07-04']))
months = dates.dt.month
print(months.tolist())
medium
A. [1, 12, 7]
B. [15, 31, 4]
C. [2023, 2022, 2024]
D. ['Jan', 'Dec', 'Jul']

Solution

  1. Step 1: Understand the input dates and extraction

    The dates are '2023-01-15', '2022-12-31', and '2024-07-04'. Extracting dt.month gets the month numbers: 1, 12, and 7.
  2. Step 2: Convert the extracted months to list

    The tolist() method converts the pandas Series to a Python list: [1, 12, 7].
  3. Final Answer:

    [1, 12, 7] -> Option A
  4. Quick Check:

    Months extracted = [1, 12, 7] [OK]
Hint: dt.month returns month numbers as integers [OK]
Common Mistakes:
  • Confusing day with month values
  • Expecting month names instead of numbers
  • Using dt.day instead of dt.month
4. The following code throws an error. What is the main issue?
import pandas as pd

dates = pd.Series(['2023-01-15', '2022-12-31'])
years = dates.dt.year
print(years)
medium
A. print statement syntax is incorrect
B. dt.year is not a valid attribute
C. dates is not converted to datetime type before using dt accessor
D. dates should be a list, not a pandas Series

Solution

  1. Step 1: Check the data type of dates

    The dates Series contains strings, not datetime objects.
  2. Step 2: Understand dt accessor requirements

    The dt accessor works only on datetime dtype Series. Without conversion, it raises an error.
  3. Final Answer:

    dates is not converted to datetime type before using dt accessor -> Option C
  4. Quick Check:

    Convert strings to datetime before dt.year [OK]
Hint: Always convert to datetime before using dt attributes [OK]
Common Mistakes:
  • Forgetting pd.to_datetime conversion
  • Assuming dt.year works on string Series
  • Misreading error as syntax problem
5. You have a DataFrame df with a datetime column 'order_date'. You want to add three new columns: 'year', 'month', and 'day' extracted from 'order_date'. Which code correctly does this?
hard
A. df['year'] = df['order_date'].year df['month'] = df['order_date'].month df['day'] = df['order_date'].day
B. df['year'] = df['order_date'].dt.year df['month'] = df['order_date'].dt.month df['day'] = df['order_date'].dt.day
C. df['year'] = df['order_date'].apply(lambda x: x.year) df['month'] = df['order_date'].apply(lambda x: x.month) df['day'] = df['order_date'].apply(lambda x: x.day)
D. df['year'] = df['order_date'].str.year df['month'] = df['order_date'].str.month df['day'] = df['order_date'].str.day

Solution

  1. Step 1: Confirm datetime column usage

    To extract date parts efficiently, use the dt accessor on the datetime column.
  2. Step 2: Check each option's method

    df['year'] = df['order_date'].dt.year df['month'] = df['order_date'].dt.month df['day'] = df['order_date'].dt.day uses dt.year, dt.month, and dt.day correctly. df['year'] = df['order_date'].year df['month'] = df['order_date'].month df['day'] = df['order_date'].day tries to access attributes directly on Series, which fails. df['year'] = df['order_date'].apply(lambda x: x.year) df['month'] = df['order_date'].apply(lambda x: x.month) df['day'] = df['order_date'].apply(lambda x: x.day) works but is slower due to apply. df['year'] = df['order_date'].str.year df['month'] = df['order_date'].str.month df['day'] = df['order_date'].str.day incorrectly uses str accessor.
  3. Final Answer:

    df['year'] = df['order_date'].dt.year df['month'] = df['order_date'].dt.month df['day'] = df['order_date'].dt.day -> Option B
  4. Quick Check:

    Use .dt accessor for vectorized date extraction [OK]
Hint: Use .dt.year, .dt.month, .dt.day for fast extraction [OK]
Common Mistakes:
  • Accessing year/month/day directly on Series
  • Using .str accessor on datetime columns
  • Using apply unnecessarily slowing code
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