Сообщить об ошибке.

Функция date_range() модуля pandas в Python

Создание DatetimeIndex на основе даты и времени в pandas

Синтаксис:

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')