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