Pandas: отримайте робочі дні між початковою та кінцевою датою


Ви можете використовувати такі методи, щоб отримати робочі дні в 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() .

Зауважте, що ця функція просто підраховує кількість днів між датою початку та датою завершення, за винятком вихідних.

Наприклад, ми можемо використати такий синтаксис, щоб підрахувати кількість робочих днів між 1/1/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 .

Наприклад, ми можемо використати такий синтаксис, щоб підрахувати кількість робочих днів (усі дні, за винятком вихідних і свят) між 1/1/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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *