Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como criar uma query por data?

Tenho uma base de dados, a qual descreve o momento de início de vários eventos. Preciso saber como faço para fazer uma query pelo horário desses eventos para determinar se foram diurnos ou noturnos. o formato da data está assim: dd/mm/aaaa hh:mm.

1 resposta
solução!

Boas Edgard! Tudo Bem? Espero que sim!

Para ajudar a resolver o seu problema, fiz alguns testes com a seguinte base de dados que eu criei:

dados = pd.DataFrame()
data_hora = '01/02/2000 14:30', '05/04/2000 21:30', '07/12/2000 10:30', '30/10/2000 20:24'
evento = 'saque', 'transferencia', 'PIX', 'saque'
dados['data_hora'] = data_hora
dados['evento'] = evento
dados

Que resulta em:

data_horaevento
001/02/2000 14:30saque
105/04/2000 21:30transferencia
207/12/2000 10:30PIX
330/10/2000 20:24saque

Agora, para trabalhar tranquilamente com as datas e horas, vou transformar a coluna data_hora de uma string, como está agora, para um formato adequado. Para isso, vamos fazer:

dados.data_hora = pd.to_datetime(dados.data_hora)
Veja como nossos dados mudaram:
data_horaevento
02000-01-02 14:30:00saque
12000-05-04 21:30:00transferencia
22000-07-12 10:30:00PIX
32000-10-30 20:24:00saque

Podemos acessar o objeto e extrair o horário, veja:

dados.data_hora[0].time() # --> Retorna datetime.time(14, 30)

e

dados.data_hora[0].time().hour # -- retorna 14

Agora, basta fazer uma função que acesse o horário e o classifique como diurno ou noturno, eu fiz isso de forma arbitrária, definindo que qualquer hora a partir das 18, ou seja, >=18 é noturno.

def define_diurno_noturno(data_hora):
    if data_hora.time().hour >= 18:
        return 'noturno'
    else:
        return  'diurno'

Vamos fazer um teste com a função:

define_diurno_noturno(dados.data_hora[0]) # --> retorna 'diurno'
Vamos criar uma nova coluna `período` usando o `map()` com a função que acabamos de criar:
dados['periodo'] = dados.data_hora.map(define_diurno_noturno)

Que retorna:

data_horaeventoperiodo
001/02/2000 14:30saquediurno
105/04/2000 21:30transferencianoturno
207/12/2000 10:30PIXdiurno
330/10/2000 20:24saquenoturno

Espero ter ajudado! Bons Estudos!