Pandas: получите количество рабочих дней между датой начала и окончания


Вы можете использовать следующие методы, чтобы получить рабочие дни в пандах:

Способ 1: выберите рабочие дни (исключая все выходные).

 business_days = pd. bdate_range (' 2022-01-01 ', ' 2022-12-31 ')

Способ 2. Получите рабочие дни (исключая все выходные и праздничные дни).

 from pandas. tseries . holiday import USFederalHolidayCalendar
from pandas. tseries . offsets import CustomBusinessDay

#define US business days
us_bus = CustomBusinessDay(calendar=USFederalHolidayCalendar())

#get all business days between certain start and end dates
us_business_days = pd. bdate_range (' 2022-01-01 ', ' 2022-12-31 ', freq=us_bus)

Следующие примеры показывают, как использовать каждый метод на практике.

Пример 1. Получение рабочих дней (исключая все выходные).

Один из способов получить список рабочих дней между двумя датами в pandas — использовать функцию bdate_range() .

Обратите внимание, что эта функция просто подсчитывает количество дней между датой начала и датой окончания, исключая выходные дни.

Например, мы можем использовать следующий синтаксис для подсчета количества рабочих дней с 01.01.2022 по 31.12.2022:

 import pandas as pd

#get all business days between certain start and end dates
business_days = pd. bdate_range (' 2022-01-01 ', ' 2022-12-31 ')

#view first ten business days
print (business_days[0:10])

DatetimeIndex(['2022-01-03', '2022-01-04', '2022-01-05', '2022-01-06',
               '2022-01-07', '2022-01-10', '2022-01-11', '2022-01-12',
               '2022-01-13', '2022-01-14'],
              dtype='datetime64[ns]', freq='B')

#view total number of business days
len (business_days)

260

Объект business_days содержит каждый рабочий день между указанными датами начала и окончания.

И с помощью функции len() мы видим, что общее количество рабочих дней между указанными датами начала и окончания составляет 260 .

Пример 2. Получение рабочих дней (исключая все выходные и праздничные дни).

Чтобы получить список рабочих дней между двумя датами в pandas, исключающий выходные и федеральные праздники, нам нужно использовать функции модуля pandas tseries .

Например, мы можем использовать следующий синтаксис для подсчета количества рабочих дней (все дни, исключая выходные и праздничные дни) между 01.01.2022 и 31.12.2022:

 from pandas. tseries . holiday import USFederalHolidayCalendar
from pandas. tseries . offsets import CustomBusinessDay

#define US business days
us_bus = CustomBusinessDay(calendar=USFederalHolidayCalendar())

#get all business days between certain start and end dates
us_business_days = pd. bdate_range (' 2022-01-01 ', ' 2022-12-31 ', freq=us_bus)

#view first ten business days
print (us_business_days[0:10])

DatetimeIndex(['2022-01-03', '2022-01-04', '2022-01-05', '2022-01-06',
               '2022-01-07', '2022-01-10', '2022-01-11', '2022-01-12',
               '2022-01-13', '2022-01-14'],
              dtype='datetime64[ns]', freq='C')

#view total number of business days
len (us_business_days)

250

Объект с именем us_business_days содержит все рабочие дни (все дни, кроме выходных и праздничных дней) между указанными датами начала и окончания.

И с помощью функции len() мы видим, что общее количество рабочих дней между указанными датами начала и окончания составляет 250 .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:

Как добавить и вычесть дни из даты в Pandas
Как преобразовать DateTime в дату в Pandas
Как извлечь месяц из даты в Pandas

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *