Extracting date components (year, month, day) in Data Analysis Python - Time & Space Complexity
We want to understand how the time to extract year, month, and day from dates changes as the data grows.
How does the work increase when we have more dates to process?
Analyze the time complexity of the following code snippet.
import pandas as pd
dates = pd.Series(pd.date_range('2023-01-01', periods=1000))
# Extract year, month, day
years = dates.dt.year
months = dates.dt.month
days = dates.dt.day
This code creates a list of dates and extracts the year, month, and day parts from each date.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Extracting each date component from every date in the list.
- How many times: Once for each date, repeated for year, month, and day extraction.
As the number of dates increases, the work to extract components grows directly with it.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 30 (10 dates x 3 components) |
| 100 | About 300 (100 dates x 3 components) |
| 1000 | About 3000 (1000 dates x 3 components) |
Pattern observation: The operations increase in a straight line as input size grows.
Time Complexity: O(n)
This means the time to extract date parts grows directly with the number of dates.
[X] Wrong: "Extracting year, month, and day all together takes three times longer than extracting just one."
[OK] Correct: Internally, these extractions often happen together efficiently, so the time grows mostly with the number of dates, not multiplied by the number of components.
Understanding how simple operations scale with data size helps you explain your code's efficiency clearly and confidently.
"What if we extracted date components from a filtered subset of dates instead of the whole list? How would the time complexity change?"