📖 Scenario: You work in a small business that tracks daily sales. You want to create a list of dates to analyze sales data for a specific period.
🎯 Goal: Create a date range using pandas date_range function to generate daily dates between two given dates.
📋 What You'll Learn
Use pandas library
Create a date range from a start date to an end date
Store the date range in a variable
Print the date range
💡 Why This Matters
🌍 Real World
Businesses often need to analyze data over specific time periods. Creating date ranges helps organize and prepare data for daily, weekly, or monthly reports.
💼 Career
Data analysts and scientists frequently generate date ranges to filter, group, or visualize time series data in their work.
Progress0 / 4 steps
1
Import pandas and create start and end date strings
Import the pandas library as pd. Then create two string variables: start_date with value '2024-01-01' and end_date with value '2024-01-07'.
Pandas
Hint
Use import pandas as pd to import pandas. Assign the dates as strings to variables start_date and end_date.
2
Create a date range variable using pd.date_range
Create a variable called dates that uses pd.date_range with start_date and end_date as arguments to generate daily dates.
Pandas
Hint
Use pd.date_range(start=start_date, end=end_date) to create the date range.
3
Check the type and length of the date range
Use a print statement to display the type of dates using type(dates) and the length of dates using len(dates).
Pandas
Hint
Use print(type(dates)) and print(len(dates)) to check the object and how many dates it contains.
4
Print the full date range
Print the variable dates to display all the dates in the range.
Pandas
Hint
Use print(dates) to show all the dates in the range.
Practice
(1/5)
1. What does the pandas.date_range function primarily do?
easy
A. Converts strings to datetime objects
B. Calculates the difference between two dates
C. Creates a sequence of dates between specified start and end points
D. Sorts dates in ascending order
Solution
Step 1: Understand the purpose of date_range
date_range generates a list of dates based on start, end, or periods parameters.
Step 2: Compare with other options
Options B, C, and D describe different date operations, not date sequence creation.
Final Answer:
Creates a sequence of dates between specified start and end points -> Option C
Quick Check:
date_range = sequence of dates [OK]
Hint: Remember: date_range makes date lists, not calculations [OK]
Common Mistakes:
Confusing date_range with date difference functions
Thinking it converts strings to dates
Assuming it sorts dates instead of creating them
2. Which of the following is the correct syntax to create a date range from January 1, 2023 to January 5, 2023 using pandas?
easy
A. pd.date_range('2023-01-01', start='2023-01-05')
B. pd.date_range(start='2023-01-01', end='2023-01-05')
C. pd.date_range('2023-01-01', periods=3)
D. pd.date_range(end='2023-01-01', start='2023-01-05')
Solution
Step 1: Check parameter names and order
The correct syntax uses named parameters start and end with date strings.
Step 2: Validate each option
A: pd.date_range('2023-01-01', start='2023-01-05') mixes positional start and named start, causing TypeError (multiple values for start). B: pd.date_range(start='2023-01-01', end='2023-01-05') correctly uses named start and end to create dates Jan 1-5. C: pd.date_range('2023-01-01', periods=3) creates only 3 dates (Jan 1-3), not up to Jan 5. D: pd.date_range(end='2023-01-01', start='2023-01-05') reverses start and end (start > end), producing empty range.
Final Answer:
pd.date_range(start='2023-01-01', end='2023-01-05') -> Option B
Quick Check:
Use start= and end= for clarity [OK]
Hint: Use named parameters start= and end= for clear date ranges [OK]
Common Mistakes:
Swapping start and end parameters
Omitting parameter names causing confusion
Using periods without specifying start or end
3. What will be the output of the following code?
import pandas as pd
rng = pd.date_range(start='2023-01-01', periods=3, freq='D')
print(list(rng))
medium
A. Error: freq parameter not recognized
B. [Timestamp('2023-01-01 00:00:00'), Timestamp('2023-01-01 00:00:00'), Timestamp('2023-01-01 00:00:00')]
C. [Timestamp('2023-01-01 00:00:00'), Timestamp('2023-01-03 00:00:00'), Timestamp('2023-01-05 00:00:00')]
D. [Timestamp('2023-01-01 00:00:00'), Timestamp('2023-01-02 00:00:00'), Timestamp('2023-01-03 00:00:00')]
Solution
Step 1: Understand parameters used
start='2023-01-01', periods=3 means 3 dates starting from Jan 1, 2023. freq='D' means daily frequency.
Step 2: Generate dates based on parameters
Dates will be Jan 1, Jan 2, and Jan 3, each at midnight (00:00:00).
Final Answer:
[Timestamp('2023-01-01 00:00:00'), Timestamp('2023-01-02 00:00:00'), Timestamp('2023-01-03 00:00:00')] -> Option D
Quick Check:
periods=3 with daily freq = 3 consecutive days [OK]
Hint: periods + freq='D' creates consecutive daily dates [OK]
Common Mistakes:
Assuming freq='D' means hourly or monthly
Confusing periods with end date
Expecting repeated same date
4. The following code throws an error. What is the mistake?
import pandas as pd
rng = pd.date_range(start='2023-01-01', end='2023-01-05', periods=3)
print(rng)
medium
A. The freq parameter is missing
B. The start date format is incorrect
C. The code is correct and should not throw an error
D. You cannot use both end and periods together
Solution
Step 1: Analyze parameters used
The code uses start, end, and periods together but omits freq.
Step 2: Understand pandas.date_range rules
When both start, end, and periods are given, freq must be specified to determine spacing. Without freq, pandas throws an error.
Final Answer:
The freq parameter is missing -> Option A
Quick Check:
freq needed when start, end, and periods all set [OK]
Hint: Specify freq when using start, end, and periods together [OK]
Common Mistakes:
Thinking periods and end cannot be combined
Assuming date format is wrong
Believing code runs without freq
5. You want to create a date range for every Monday in March 2023. Which code snippet correctly achieves this?
hard
A. pd.date_range(start='2023-03-06', end='2023-03-27', freq='W-MON')
B. pd.date_range(start='2023-03-01', periods=4, freq='W')
C. pd.date_range(start='2023-03-01', end='2023-03-31', freq='W')
D. pd.date_range(start='2023-03-01', end='2023-03-31', freq='M')
Solution
Step 1: Identify Mondays in March 2023
Mondays in March 2023 are 6th, 13th, 20th, and 27th.
Step 2: Check each option's frequency and date range
A: pd.date_range(start='2023-03-01', end='2023-03-31', freq='W') uses freq='W' (defaults to W-SUN), producing Sundays Mar 5,12,19,26. B: pd.date_range(start='2023-03-01', periods=4, freq='W') uses Sunday weeks with fixed 4 periods, not Mondays. C: pd.date_range(start='2023-03-06', end='2023-03-27', freq='W-MON') starts on first Monday (Mar 6), ends on last (Mar 27), correctly lists all 4 Mondays. D: pd.date_range(start='2023-03-01', end='2023-03-31', freq='M') uses month-end frequency, not weekly Mondays.
Final Answer:
pd.date_range(start='2023-03-06', end='2023-03-27', freq='W-MON') -> Option A
Quick Check:
freq='W-MON' with correct start/end picks Mondays [OK]
Hint: Use freq='W-MON' and start on first Monday [OK]
Common Mistakes:
Using freq='W' which defaults to Sunday
Starting date not aligned with Monday
Using freq='M' which selects month ends
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.