Skip to content

Instantly share code, notes, and snippets.

@Fabiocke
Created September 3, 2022 00:56
Show Gist options
  • Select an option

  • Save Fabiocke/0884d4ad412d3c6027856e57ee1bd287 to your computer and use it in GitHub Desktop.

Select an option

Save Fabiocke/0884d4ad412d3c6027856e57ee1bd287 to your computer and use it in GitHub Desktop.
import pandas as pd
from datetime import datetime, timedelta
from functools import cache
# Busca a lista de feriados no site da anbima
# O decorador salva a lista para não precisar fazer a requisição a todo momento
@cache
def feriados():
df = pd.read_excel('http://www.anbima.com.br/feriados/arqs/feriados_nacionais.xls')
return [i for i in df['Data'] if isinstance(i, datetime)]
# Retorna a quantidade de dias úteis entre duas datas
# O formato de input é YYYY-MM-DD
def dias_uteis(start, end):
lista_feriados = feriados()
# transforma em datetime
start = datetime.strptime(start.replace('-',''), '%Y%m%d')
end = datetime.strptime(end.replace('-',''), '%Y%m%d')
# gera a lista de dias entre duas datas
dias = [start+timedelta(i) for i in range((end-start).days+1)]
# exclui os feriados e finais de semana
dus = [d for d in dias if d.weekday() not in (5, 6) and d not in lista_feriados]
return len(dus)-1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment