idx = pandas.date_range(start=None, end=None, periods=None, freq=None, tz=None, normalize=False, name=None, inclusive='both', *, unit=None, **kwargs)
start
: левая граница для генерации дат. (str
или datetime.datetime()
)end
: правая граница для генерации дат. (str
или datetime.datetime()
)periods
: количество периодов для генерации. (int
)freq
: временной период, может иметь кратные значения, например '5Н'
. (str
(по умолчанию 'D'
), datetime.timedelta
, pandas.Timedelta
или pandas.tseries.offsets.DateOffset
).tz
: имя часового пояса для возврата локализованного DatetimeIndex
, например 'Asia/Hong_Kong'
. По умолчанию результирующий DatetimeIndex
не учитывает часовой пояс, если не передаются типы даты и времени с учетом часового пояса. (str
или tzinfo
)normalize
: нормализует даты начала/окончания до полуночи, прежде чем создавать диапазон дат. (bool
, по умолчанию False
)name
: имя результирующего DatetimeIndex
. (str
, по умолчанию None
)inclusive
: включает/исключает границы. Устанавливает каждую границу как закрытую или открытую. ('both'
, 'neither'
, 'left'
, 'right'
, по умолчанию 'both'
)unit
: желаемая единица измерения результата. Может принимать значения: 'D'
,'s'
,'ms'
,'us'
,'ns'
(str
, по умолчанию None
) **kwargs
: Для совместимости. Не влияет на результат.DatetimeIndex
.Функция pandas.date_range()
модуля pandas
возвращает DatetimeIndex
с фиксированной частотой.
Другими словами, функция pandas.date_range()
возвращает диапазон равномерно распределенных временных точек (где разница между любыми двумя соседними точками определяется заданной частотой periods
) таким образом, чтобы все они удовлетворяли условию start <[=] x <[=] end
, где start
и end
являются, соответственно, первой и последней временными точками в этом диапазоне, которые попадают на границу аргумента freq
(если заданы в виде строки временного интервала) или которые действительны для freq
(если заданы в виде pandas.tseries.offsets.DateOffset
).
Если точно не указано одно из значений start
, end
или freq
, этот отсутствующий параметр может быть вычислен с учетом периодов periods
, количества временных шагов в диапазоне.
Следующие четыре примера генерируют один и тот же DatetimeIndex
, но различаются сочетанием начала, окончания и периодов.
Укажем начало и конец периода с частотой по умолчанию 1 день.
>>> pd.date_range(start='1/1/2018', end='1/08/2018') # DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04', # '2018-01-05', '2018-01-06', '2018-01-07', '2018-01-08'], # dtype='datetime64[ns]', freq='D')
Укажем начало и конец периода с частотой по умолчанию 1 день (с учетом часового пояса).
>>> pd.date_range( ... start=pd.to_datetime("1/1/2023").tz_localize("Europe/Moscow"), ... end=pd.to_datetime("1/08/2023").tz_localize("Europe/Moscow"), ... ) # DatetimeIndex(['2023-01-01 00:00:00+03:00', '2023-01-02 00:00:00+03:00', # '2023-01-03 00:00:00+03:00', '2023-01-04 00:00:00+03:00', # '2023-01-05 00:00:00+03:00', '2023-01-06 00:00:00+03:00', # '2023-01-07 00:00:00+03:00', '2023-01-08 00:00:00+03:00'], # dtype='datetime64[ns, Europe/Moscow]', freq='D')
Укажем начальную дату и количество периодов в днях (по умолчанию).
>>> pd.date_range(start='1/1/2023', periods=8) # DatetimeIndex(['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', # '2023-01-05', '2023-01-06', '2023-01-07', '2023-01-08'], # dtype='datetime64[ns]', freq='D')
Укажем начальную и конечную даты, а также периоды. Частота генерируется автоматически (линейно).
>>> pd.date_range(start='2023-04-24', end='2023-04-27', periods=3) # DatetimeIndex(['2023-04-24 00:00:00', '2023-04-25 12:00:00', # '2023-04-27 00:00:00'], # dtype='datetime64[ns]', freq=None)
Изменяем freq
(периодичность) на 'M'
(периодичность на конец месяца).
>>> pd.date_range(start='1/1/2023', periods=5, freq='M') # DatetimeIndex(['2023-01-31', '2023-02-28', '2023-03-31', '2023-04-30', # '2023-05-31'], # dtype='datetime64[ns]', freq='M')
Теперь частота генерации дат '3M'
.
>>> pd.date_range(start='1/1/2023', periods=5, freq='3M') # DatetimeIndex(['2023-01-31', '2023-04-30', '2023-07-31', '2023-10-31', # '2024-01-31'], # dtype='datetime64[ns]', freq='3M')
Укажем аргумент tz
, для установки часового пояса.
>>> pd.date_range(start='1/1/2023', periods=5, tz='Asia/Tokyo') # DatetimeIndex(['2023-01-01 00:00:00+09:00', '2023-01-02 00:00:00+09:00', # '2023-01-03 00:00:00+09:00', '2023-01-04 00:00:00+09:00', # '2023-01-05 00:00:00+09:00'], # dtype='datetime64[ns, Asia/Tokyo]', freq='D')
Аргумент inclusive
определяет, включать ли начальную и конечную даты. Значение по умолчанию 'both'
включает граничные точки на обоих датах. Принимает: both
, neither
, left
, right
, по умолчанию both
.
>>> pd.date_range(start='2023-01-01', end='2023-01-04', inclusive="both") # DatetimeIndex(['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04'], # dtype='datetime64[ns]', freq='D')
Используем inclusive='left'
, для исключения конечной даты, если она попадает на границу.
>>> pd.date_range(start='2023-01-01', end='2023-01-04', inclusive='left') # DatetimeIndex(['2023-01-01', '2023-01-02', '2023-01-03'], dtype='datetime64[ns]', freq='D')
Указываем желаемую единицу измерения результата unit="s"
(секунда), может быть ('D'
,'s'
,'ms'
,'us'
,'ns'
)
>>> pd.date_range(start="2023-01-01", periods=10, freq="100AS", unit="s") # DatetimeIndex(['2023-01-01', '2123-01-01', '2223-01-01', '2323-01-01', # '2423-01-01', '2523-01-01', '2623-01-01', '2723-01-01', # '2823-01-01', '2923-01-01'], # dtype='datetime64[s]', freq='100AS-JAN')