Olá galera, boa tarde.
Estou aperfeiçoando um modelo de dados para treinar usando Machine Learning, entretanto estou com dificuldade em obter o n dia útil de um mês para armazenar em uma variável com 0 ou 1.
Atualmente eu estou com o modelo de dados abaixo:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from datetime import date, datetime, timezone
feriados = ['2015-01-01','2015-02-17','2015-04-03','2015-04-05','2015-04-21','2015-05-01','2015-06-04','2015-09-07',
'2015-10-12','2015-11-02','2015-11-15','2015-12-25','2016-01-01','2016-02-09','2016-03-25','2016-03-27',
'2016-04-21','2016-05-01','2016-05-26','2016-06-04','2016-09-07','2016-10-12','2016-11-02','2016-11-15',
'2016-12-25','2017-01-01','2017-02-28','2017-04-14','2017-04-16','2017-04-21','2017-05-01','2017-05-26',
'2017-06-15','2017-09-07','2017-10-12','2017-11-02','2017-11-15','2017-12-25','2018-01-01','2018-02-13',
'2018-03-30','2018-04-01','2018-04-21','2018-05-01','2018-05-31','2018-09-07','2018-10-12','2018-11-02',
'2018-11-15','2018-12-25','2019-01-01','2019-03-05','2019-04-19','2019-04-21','2019-05-01','2019-06-20',
'2019-09-07','2019-10-12','2019-11-02','2019-11-15','2019-12-25']
feriados = pd.to_datetime(feriados, format='%Y-%m-%d')
feriados = pd.DataFrame({'data':feriados})
dados = pd.read_csv('./transactions.csv')
dados['data'] = pd.to_datetime(dados['data'], format='%d/%m/%Y')
df = pd.merge(dados, feriados, how='left', on='data', indicator = True)
dados['feriado'] = np.where(df['_merge'] == 'both', 1, 0)
dados['dia'] = (dados['data'].dt.day)
dados['mes'] = (dados['data'].dt.month)
dados['ano'] = (dados['data'].dt.year)
dados['diaDoAno'] = (dados['data'].dt.dayofyear)
dados['diaSemana'] = (dados['data'].dt.dayofweek)
dados['diaUtil'] = ((dados['diaSemana'] < 5) & (dados.feriado == 0))
dados['diaDeProducao'] = (((dados.diaSemana == 1) | (dados.diaSemana == 3)) & dados.diaUtil == True)
dados['segDia5'] = ((dados['data'].dt.dayofweek == 0) & (dados['dia'] == 5) & (dados.feriado == 0))
dados['segDia10'] = ((dados['data'].dt.dayofweek == 0) & (dados['dia'] == 10) & (dados.feriado == 0))
dados['inicioSemana'] = (dados['diaSemana'] < 3)
dados['semanaAno'] = (dados['data'].dt.weekofyear)
#dados['inicioMes'] = (dados['data'].dt.is_month_start)
#dados['fimMes'] = (dados['data'].dt.is_month_end)
Entretanto obter o quinto ou décimo dia útil tem grande valor para o aprendizado de máquina ser refinado.
Alguém passou por esse problema e achou alguma solução fácil?
Obrigado!