Creating Date Ranges¶
The pd.date_range() function generates sequences of dates with various frequencies and options.
Basic date_range¶
Generate date sequences.
1. With Periods¶
import pandas as pd
dates = pd.date_range('2025-01-01', periods=6)
print(dates)
DatetimeIndex(['2025-01-01', '2025-01-02', '2025-01-03', '2025-01-04',
'2025-01-05', '2025-01-06'],
dtype='datetime64[ns]', freq='D')
2. With End Date¶
dates = pd.date_range(start='2025-01-01', end='2025-01-10')
3. Specify Start and Periods¶
dates = pd.date_range(start='2025-01-01', periods=10, freq='D')
Frequency Options¶
Control the interval between dates.
1. Common Frequencies¶
pd.date_range('2025-01-01', periods=5, freq='D') # Daily
pd.date_range('2025-01-01', periods=5, freq='W') # Weekly
pd.date_range('2025-01-01', periods=5, freq='M') # Month end
pd.date_range('2025-01-01', periods=5, freq='Y') # Year end
2. Business Frequencies¶
pd.date_range('2025-01-01', periods=5, freq='B') # Business days
pd.date_range('2025-01-01', periods=5, freq='BM') # Business month end
pd.date_range('2025-01-01', periods=5, freq='BQ') # Business quarter end
3. Intraday Frequencies¶
pd.date_range('2025-01-01', periods=5, freq='H') # Hourly
pd.date_range('2025-01-01', periods=5, freq='T') # Minute
pd.date_range('2025-01-01', periods=5, freq='S') # Second
Using with DataFrames¶
Create time-indexed DataFrames.
1. As Index¶
import numpy as np
dates = pd.date_range('2025-01-01', periods=6)
df = pd.DataFrame(
np.random.randn(6, 4),
index=dates,
columns=list('ABCD')
)
print(df)
2. As Column¶
df = pd.DataFrame({
'date': pd.date_range('2025-01-01', periods=5),
'value': [100, 101, 102, 103, 104]
})
3. Set as Index¶
df = df.set_index('date')
Period Ranges¶
Alternative to DatetimeIndex for periods.
1. period_range¶
periods = pd.period_range('2025-01', periods=6, freq='M')
print(periods)
PeriodIndex(['2025-01', '2025-02', '2025-03', '2025-04', '2025-05', '2025-06'],
dtype='period[M]')
2. Month Periods¶
months = pd.period_range('2025-01', '2025-12', freq='M')
3. Quarter Periods¶
quarters = pd.period_range('2025Q1', periods=4, freq='Q')
Practical Examples¶
Common date range patterns.
1. Trading Days¶
# US trading days for 2025
trading_days = pd.date_range('2025-01-01', '2025-12-31', freq='B')
2. Monthly Data Points¶
# End of each month
month_ends = pd.date_range('2025-01-31', periods=12, freq='M')
3. Specific Time Intervals¶
# Every 6 hours
timestamps = pd.date_range('2025-01-01', periods=24, freq='6H')