Blog

Postado em em 5 de dezembro de 2023

Feriados e Dias Úteis no Python – Obtenha Automaticamente!

Aprenda como utilizar feriados e dias úteis no Python de maneira eficiente para qualquer país ou região que você precise usar em seu projeto.

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Feriados e Dias Úteis no Python – Obtenha Automaticamente!

É bastante comum utilizarmos a biblioteca Datetime ao lidar com datas em Python. No entanto, já precisou trabalhar com feriados e dias úteis no Python, seja para um projeto pessoal ou da sua empresa?

Se já teve essa experiência, sabe que, em alguns casos, pode ser um tanto complicado, especialmente ao lidar com diferentes regiões. Torna-se inviável ter que buscar uma lista de feriados de cada região sempre que iniciar um novo projeto.

Pensando nisso, nesta aula, você aprenderá como obter feriados e dias úteis no Python utilizando a biblioteca Holidays e também o Pandas Market Calendars. Essas duas bibliotecas tornarão muito mais fácil obter informações sobre feriados e dias úteis para diferentes países e regiões.

Então, faça o download do material disponível na aula e vamos aprender a usar essas bibliotecas para obter automaticamente os feriados e dias úteis no Python!

Como Funcionam Feriados e Dias Úteis no Python

Quando estamos lidando com datas em Python, é comum utilizarmos a biblioteca Datetime, que consegue identificar se um dia é da semana ou um final de semana.

No entanto, a Datetime não consegue identificar feriados de diferentes regiões e países. Se estiver trabalhando com mais de um país, isso pode se tornar um problema trabalhoso de contornar.

Algumas abordagens para lidar com isso incluem consultar uma API ou criar uma lista com os feriados de cada região, garantindo que esses feriados sejam considerados.

No entanto, existem bibliotecas que podem automatizar esse processo para nós.

Biblioteca Holidays

Uma dessas bibliotecas é a Holidays. Com ela, podemos pegar uma sequência de dias e determinar quais são os feriados dentro desse intervalo.

O primeiro passo é instalar essa biblioteca. No terminal do seu editor de código, execute o comando:

pip install holidays

Ou, se estiver utilizando um Jupyter Notebook, execute na célula:

!pip install holidays

Importando e Usando a Biblioteca Holidays

Com a biblioteca instalada, podemos importá-la para o nosso código e começar a utilizá-la.

Vamos pegar como exemplo apenas os feriados do Brasil. Para isso, basta criar um objeto chamado feriados utilizando a função country_holidays, passando como argumento o código do país para o qual desejamos obter os feriados.

import holidays

feriados = holidays.country_holidays("BR")

Se dermos print nesse objeto, teremos como resposta:

holidays.country_holidays

Observe que Entre essas informações, temos “expand”: True. Isso significa que temos uma lista de informações dentro do objeto feriado, com os feriados do Brasil. No entanto, para visualizarmos esses feriados, precisamos passar para ele uma data específica.

import holidays

feriados = holidays.country_holidays("BR")
print(feriados["2024-01-01":"2024-12-31"])

Como resultado, teremos uma lista de objetos datetime com as datas dos feriados no Brasil para o ano de 2024.

 lista de objetos datetime

Se quisermos visualizar melhor essas datas, podemos iterar sobre essa lista em um loop for e imprimir cada feriado individualmente.

import holidays

feriados = holidays.country_holidays("BR")
feriados_2024 = feriados["2024-01-01":"2024-12-31"]

for feriado in feriados_2024:
    print(feriado)
Visualizando os feriados

Pegar Feriados de uma Região Específica

Já vimos como obter os feriados de um país específico, mas a biblioteca holidays também permite buscar feriados por regiões específicas.

Para isso, basta passarmos para a função country_holidays o argumento subdiv com o código da região (subdivisão) desejada.

Por exemplo, para pegarmos os feriados que ocorrerão no estado do Rio de Janeiro no ano de 2024, basta adicionarmos o argumento subdiv=”RJ”.

import holidays

feriados = holidays.country_holidays("BR", subdiv="RJ")
feriados_2024 = feriados["2024-01-01":"2024-12-31"]

for feriado in feriados_2024:
    print(feriado)
Feriados do RJ

Perceba que agora, além dos feriados nacionais, temos nessa lista os feriados estaduais. Tanto é que, se compararmos a lista de feriados nacionais, teremos novas datas sendo exibidas. No entanto, os feriados municipais não estão incluídos.

Calendário da Bolsa de Valores (pandas_market_calendars)

Existe outra opção interessante, a biblioteca pandas_market_calendars, especialmente criada para integração com o Pandas.

Embora não seja especificamente para trabalhar com feriados e dias úteis no Python, ela trata dos dias em que a bolsa de valores está operando. Assim como a biblioteca holidays, é possível obter informações de diversas bolsas de valores ao redor do mundo.

Para instalá-la, basta executar o seguinte código:

pip install pandas_market_calendars

Ou, se estiver utilizando um Jupyter Notebook:

!pip install pandas_market_calendars

Na documentação dessa biblioteca, encontramos uma lista com todos os calendários disponíveis da bolsa de valores e seus respectivos nomes para utilizarmos em nossos códigos.

lista com todos os calendários disponíveis da bolsa de valores

Para utilizarmos essa biblioteca, podemos importá-la para o nosso código com o alias de mcal.

import pandas_market_calendars as mcal

Em seguida, podemos criar o nosso calendário, passando para a função get_calendar o nome (name) da bolsa de valores desejada. Neste exemplo, utilizaremos a BMF, que é a Bolsa de Mercadorias e Futuros, disponível nessa biblioteca.

import pandas_market_calendars as mcal

calendario = mcal.get_calendar("BMF")

O calendário criado será um objeto que representa o calendário de negociação da BMF.

import pandas_market_calendars as mcal

calendario = mcal.get_calendar("BMF")
display(calendario)
Visualização do calendário da bolsa de valores

Para visualizarmos o cronograma de negociação da BMF, precisamos utilizar a função schedule e especificar um intervalo de datas, neste caso, de 1º de janeiro de 2024 até 31 de dezembro de 2024.

Se você estiver utilizando o Jupyter Notebook ou sua extensão para o VSCode, poderá utilizar o display para visualizar essas informações como um DataFrame do Pandas. Caso contrário, poderá utilizar um simples print.

import pandas_market_calendars as mcal

calendario = mcal.get_calendar("BMF")
dias_negociacao_2024 = calendario.schedule(start_date="2024-01-01", end_date="2024-12-31")

display(dias_negociacao_2024)
Visualizando o dataframe dias_negociacao_2024

Assim, teremos um DataFrame com os horários de abertura e fechamento do mercado de ações. No entanto, observe que o horário exibido está no fuso horário UTC. No Brasil, utilizamos o UTC -3, então, ao invés de ser 13h da tarde, seria às 10h da manhã a abertura.

Você pode tratar esse DataFrame corrigindo o horário, mas essa base já te permite identificar os dias de operação das bolsas de valores ao redor do mundo.

Conclusão – Feriados e Dias Úteis no Python – Obtenha Automaticamente!

Nesta aula, você aprendeu como utilizar as bibliotecas Holidays e Pandas Market Calendars para obter informações sobre feriados e dias úteis no Python.

Com a biblioteca Holidays, exploramos a exibição de feriados de um país e região específica dentro do Python.

Já com a Pandas Market Calendars, você aprendeu a criar um DataFrame que apresenta os dias de funcionamento e operação das bolsas de valores ao redor do mundo.

Essas são duas aplicações que podem ser extremamente úteis para o desenvolvimento de automações e análises de dados, especialmente quando se considera regiões e países diferentes.

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?