Pandas: obtenha dias úteis entre a data de início e de término
Você pode usar os seguintes métodos para obter dias úteis em pandas:
Método 1: obtenha dias úteis (excluindo todos os fins de semana)
business_days = pd. bdate_range (' 2022-01-01 ', ' 2022-12-31 ')
Método 2: Obtenha dias úteis (excluindo todos os fins de semana e feriados federais)
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)
Os exemplos a seguir mostram como usar cada método na prática.
Exemplo 1: obtenha dias úteis (exclui todos os finais de semana)
Uma maneira de obter uma lista de dias úteis entre duas datas no pandas é usar a função bdate_range() .
Observe que esta função simplesmente conta o número de dias entre uma data de início e uma data de término, excluindo fins de semana.
Por exemplo, podemos usar a seguinte sintaxe para contar o número de dias úteis entre 01/01/2022 e 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
O objeto denominado business_days contém cada dia útil entre as datas de início e término especificadas.
E usando a função len() , vemos que o número total de dias úteis entre as datas de início e término especificadas é 260 .
Exemplo 2: Obtenha dias úteis (excluindo todos os fins de semana e feriados federais)
Para obter uma lista de dias úteis entre duas datas no pandas que exclua fins de semana e feriados federais, precisamos usar as funções do módulo pandas tseries .
Por exemplo, podemos usar a seguinte sintaxe para contar o número de dias úteis (todos os dias, excluindo fins de semana e feriados) entre 01/01/2022 e 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
O objeto denominado us_business_days contém todos os dias úteis (todos os dias, exceto fins de semana e feriados) entre as datas de início e término especificadas.
E usando a função len() , vemos que o número total de dias úteis entre as datas de início e término especificadas é 250 .
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras operações comuns em pandas:
Como adicionar e subtrair dias de uma data no Pandas
Como converter DateTime em data no Pandas
Como extrair o mês da data no Pandas