Pandas date_range: Как Создать Диапазон Дат в Pandas
В этом уроке мы глубоко погрузимся в один из самых необходимых и универсальных инструментов библиотеки Pandas — функцию date_range
. Независимо от того, только ли вы начинаете изучать мощь Pandas или уже являетесь опытным пользователем, эта функция определенно должна быть в вашем арсенале Python. Это расширит ваши возможности работы с датами и временем в Pandas.
Овладение функцией date_range в Pandas откроет перед вами мир возможностей для анализа временных рядов. По завершении этого урока вы не только научитесь использовать функцию date_range на полную мощность, но и сможете создавать пользовательские диапазоны дат с указанными частотами, интервалами и периодами для различных реальных приложений.
Наденьте шапочку знаний и пристегнитесь, вас ждет захватывающее путешествие в удивительный мир Pandas и функции date
Оглавление
Функция диапазона дат Pandas
Давайте посмотрим на функцию date_range Pandas, доступную в Pandas. Функция предоставляет большое количество различных параметров и аргументов по умолчанию.
Прежде чем продолжить, давайте немного подробнее рассмотрим эти параметры. Важно отметить, что для работы функции должно быть указано ровно три из следующих четырех параметров: start=
, end=
, periods=
, and freq=
.
start
Левая граница для генерации дат
None
string or datetime-like
end
Правильная граница для генерации дат
None
string or datetime-like
periods
Количество периодов для генерации
None
int
freq
Частоты, используемые для генерации диапазонов
‘D
‘
string or Dateoffset
tz
Имя часового пояса для значений даты и времени с учетом часового пояса.
None
string or timezone info
normalize
Следует ли нормализовать даты начала и окончания до полуночи перед созданием диапазона дат.
False
boolean
name
Имя результирующего DatetimeIndex
None
string
inclusive
Какие границы включить
'both'
{“both”, “neither”, “left”, “right”}
Функция заменила предыдущий параметр closed=
на гораздо более мощный параметр inclusive=
в январе 2022 года в версии 1.4.
Давайте теперь перейдем к созданию нашего первого диапазона дат с использованием функции date_range()
в Pandas.
Создание простого диапазона дат с помощью Pandas date_range
Самый простой тип диапазона дат, который мы можем создать с помощью функции date_range()
в Pandas, - это указать начальную дату, конечную дату и частоту (которая по умолчанию установлена как “D” для дней). Давайте посмотрим, как мы можем создать диапазон дат, который включает в себя дни с 1 июля 2023 года по 7 июля 2023 года:
В указанном выше блоке кода мы создаем объект диапазона дат Pandas с использованием функции pd.date_range()
. В этом случае мы передали только два аргумента, соответствующие параметрам start=
и end=
. По умолчанию функция будет использовать частоту 'D'
, что означает разделение каждого значения по дням.
Давайте изучим этот объект dates
немного подробнее, распечатав его тип:
При осмотре типа объекта можно увидеть, что он возвращает DatetimeIndex
. Это означает, что Pandas создает очень производительный объект.
Давайте рассмотрим некоторые другие типы диапазонов дат, которые мы можем создать, настраивая используемые частоты.
Создание диапазонов дат с настраиваемыми частотами в Pandas
В Pandas по умолчанию используется частота 'D'
, что означает, что каждый элемент находится на расстоянии одного дня друг от друга. Однако мы также можем указать наши собственные частоты, используя строку частот. В таблице ниже приведены некоторые важные строки частот. Это аналогично извлечению частей даты из даты в Pandas.
B
частота рабочих дней
C
пользовательская частота рабочих дней
D
частота календарных дней
W
еженедельная частота
M
частота окончания месяца
SM
частота окончания полумесяца (15-е число и конец месяца)
BM
частота окончания рабочего месяца
BH
частота рабочих часов
H
почасовая частота
T, min
поминутная частота
Давайте посмотрим, как мы можем создать диапазон дат, используя функцию Pandas date_range(), где значения делятся по полумесячной частоте. Создадим диапазон дат с 1 июля 2023 г. по 31 сентября 2023 г.:
В указанном выше блоке кода мы установили начальную и конечную даты с 1 июля 2023 года по 31 сентября 2023 года. Мы использовали частоту дважды в месяц, которая выбирает 15-е число месяца и последний день месяца. Из-за этого 1 июля игнорируется. Более подробную информацию о пользовательских строках частоты можно найти в официальной документации
Использование кратного пользовательской частоты в Pandas date_range
Мы можем пойти еще дальше, указав кратность пользовательской частоты. Например, если мы хотим создать диапазон дат, который пропускает каждый второй день, мы можем использовать freq='2D'
. Давайте посмотрим, как мы можем воспроизвести наш предыдущий пример с этой частотой:
В указанном выше блоке кода мы использовали частоту '2D'
, что обозначает двухдневный интервал. Это означает, что мы начинаем с первого указанного дня, затем генерируем каждый второй день до окончания. Этот процесс гораздо проще, чем добавление дат к дате в Pandas
Создание диапазонов дат с определенными периодами
До сих пор мы рассматривали использование начальных и конечных дат при создании диапазона дат. Это означает, что Pandas определяет, сколько значений включить. Мы также можем указать количество значений, которые нужно сгенерировать, используя параметр periods=
Давайте посмотрим, как мы можем создать диапазон дат, который будет содержать пять значений между 1 и 20 июля 2023 года:
В приведенном выше блоке кода мы указали три параметра: start
, end
и periods
. Поскольку мы не указали параметр freq=
, Pandas самостоятельно решает, какую частоту использовать!
Аналогично, мы можем не указывать конец диапазона дат, что позволяет нам определять периоды и частоту. Давайте рассмотрим это в следующем разделе.
Создание диапазонов дат с определенными периодами и периодичностью
Функция date_range()
библиотеки Pandas требует указания трех из четырех параметров: start=
, end=
, periods=
, и freq=
. Это позволяет опустить параметр end=
, тем самым задать начальное значение, частоту и количество периодов.
Давайте посмотрим, как это может выглядеть:
В указанном выше блоке кода мы указали, что хотим создать диапазон дат, содержащий только рабочие дни, начиная с 1 июля 2023 года на протяжении пяти периодов. Поскольку 1 июля 2023 года выпадает на субботу, диапазон на самом деле начинается с 3 июля 2023 года.
Изменение границ диапазона дат Pandas
По умолчанию функция date_range
в Pandas будет включать в себя как начальную, так и конечную даты диапазона. Это связано с тем, что в Pandas используется параметр inclusive='both'
. Мы можем передать следующие параметры, чтобы изменить это поведение:
“both”, который включает оба значения
“neither”, что исключает оба значения
“left”, который включает только левое значение
“right”, который включает только правильное значение
Давайте посмотрим, как мы можем опустить оба значения, повторив наш первый пример:
В приведенном выше примере мы использовали ежедневную частоту с 1 по 7 июля 2023 года. Однако мы изменили параметр inclusive=
так, чтобы оба конца диапазона были исключены. Из-за этого начальное и конечное значения были исключены.
Включение часовых поясов при создании диапазона дат Pandas
По умолчанию, значения в диапазоне дат Pandas не содержат информации о часовом поясе, что означает отсутствие данных о часовом поясе. Мы можем указать конкретный часовой пояс, используя имя желаемого часового пояса. Например, давайте укажем часовой пояс восточного побережья США, передав 'US/Eastern'
в качестве часового пояса.
Чтобы указать часовой пояс, используйте параметр tz=
. Давайте посмотрим, как это выглядит ниже:
Видно, что значения в результирующем диапазоне дат теперь включают информацию о часовом поясе, специфическую для часового пояса США/Восточный.
Изменение имени индекса диапазона дат Pandas
В этом последнем разделе мы рассмотрим, как изменить имя результирующего индекса. Поскольку функция date_range()
в Pandas возвращает объект в стиле индекса, это изменит структуру данных. Давайте посмотрим, как мы можем указать имя индекса, используя параметр name=
В приведенном выше примере мы видим, что атрибут name=
теперь также включен в диапазон дат. Когда мы создаем DataFrame с этим, эта метка также применяется к индексу. Давайте посмотрим, как это выглядит:
В приведенном выше DataFrame видно, что индекс теперь имеет название, 'Date'
Заключение: создание диапазонов дат с помощью Pandas
В заключение мы успешно рассмотрели основы функции Pandas date_range, подробно остановились на ее многочисленных применениях и настройках, которые позволяют нам с легкостью решать широкий спектр задач, связанных с временными рядами. Мы исследовали всё, начиная от создания пользовательских диапазонов дат с заданными частотами и периодами, и заканчивая детальной настройкой часовых поясов и имен индексов для лучшего соответствия нашим требованиям.
Вы можете узнать больше о функции, посетив официальную документацию.
Last updated