CodeGym /Cursos /Python SELF PT /Arredondamento de tempo e seu uso em relatórios para faci...

Arredondamento de tempo e seu uso em relatórios para facilitar a análise

Python SELF PT
Nível 40 , Lição 4
Disponível

1. Arredondamento de tempo: por que e pra quê?

Por mais importante que seja a precisão, há momentos em que você precisa arredondar o tempo. Imagina só: você tá analisando um monte de dados e cada segundo conta. Mas pra quê segundos no relatório, se minutos ou até horas já bastam? Arredondar deixa os dados mais simples e fáceis de entender, sem perder as infos importantes.

Exemplos de uso do arredondamento de tempo:

  • Análise de séries temporais: ao analisar dados de semanas ou meses, você não precisa de segundos ou minutos. Horas ou dias já são suficientes.
  • Criação de relatórios: torne seus relatórios mais simples arredondando o tempo para a hora ou dia mais próximo, deixando mais legível.
  • Otimização de performance: reduzir dados redundantes pode acelerar muito a análise.

2. Como arredondar tempo no Python?

O Python tem um jeito bem simples e prático pra trabalhar com arredondamento de tempo. É aqui que entra a classe datetime e seus métodos.

Arredondando para os minutos ou horas mais próximos

Pra começar, vamos arredondar um objeto de tempo para os minutos mais próximos. Olha só:

Python
from datetime import datetime, timedelta

# Digamos que temos uma data e hora
now = datetime.now()

# Arredondando para os 10 minutos mais próximos
def round_time_to_nearest_minute(dt, interval):
    discard = timedelta(minutes=dt.minute % interval,
                        seconds=dt.second,
                        microseconds=dt.microsecond)
    dt -= discard
    if discard >= timedelta(minutes=interval/2):
        dt += timedelta(minutes=interval)
    return dt

rounded_time = round_time_to_nearest_minute(now, 10)
print(f"Hora atual: {now}")
print(f"Hora arredondada pros 10 minutos mais próximos: {rounded_time}")
    
    

Aqui usamos o método timedelta pra lidar com os intervalos. A função round_time_to_nearest_minute permite arredondar o tempo pro intervalo mais próximo de 10 minutos. Você pode mudar o intervalo pra outro valor também.

Arredondando para as horas mais próximas

E se você quiser arredondar para a hora mais próxima? É bem parecido com o exemplo anterior, só muda um pouquinho:

Python

# Arredondando para a hora mais próxima
def round_time_to_nearest_hour(dt):
    discard = timedelta(minutes=dt.minute % 60,
                        seconds=dt.second,
                        microseconds=dt.microsecond)
    dt -= discard
    if discard >= timedelta(minutes=30):
        dt += timedelta(hours=1)
    return dt

rounded_hour = round_time_to_nearest_hour(now)
print(f"Hora arredondada para a hora mais próxima: {rounded_hour}")
    
    

3. Exemplos reais de uso em relatórios e análise de dados

Agora que temos nossas datas e horas arredondadas, vamos falar sobre como essas habilidades podem ser usadas na prática.

Exemplo 1: Relatórios de tempo no trabalho

Imagina que você tá desenvolvendo um sistema de controle de horas trabalhadas. Arredondar o tempo trabalhado para os 15 minutos mais próximos ajuda a criar relatórios e calcular salários de forma mais simples.

Python
# Função pra arredondar tempo pro controle de horas trabalhadas
def round_time_for_work_log(dt, interval=15):
    return round_time_to_nearest_minute(dt, interval)

start_time = datetime.strptime('08:05:30', '%H:%M:%S')
end_time = datetime.strptime('17:38:45', '%H:%M:%S')

rounded_start_time = round_time_for_work_log(start_time)
rounded_end_time = round_time_for_work_log(end_time)

print(f"Início: {rounded_start_time.time()}")
print(f"Fim: {rounded_end_time.time()}")
    
    

Exemplo 2: Análise de atividade do usuário

Se você tá monitorando a atividade dos usuários num site, arredondar o tempo para a hora mais próxima pode ajudar a criar relatórios mais claros, sem detalhes desnecessários.

Python

    # Arredondando os timestamps de atividade dos usuários
user_activity = [
    datetime(2023, 10, 15, 14, 22), 
    datetime(2023, 10, 15, 14, 47), 
    datetime(2023, 10, 15, 15, 5)
]

rounded_activity = [round_time_to_nearest_hour(activity) for activity in user_activity]
print("Timestamps de atividade dos usuários arredondados:", rounded_activity)
    
    

Facilitando a análise de séries temporais

Quando você joga todas as suas séries temporais na análise, dá pra perceber como o arredondamento ajuda a simplificar. Os gráficos ficam menos poluídos e os parâmetros mais fáceis de interpretar.

Possíveis erros e como evitá-los

Durante o trabalho com arredondamento de tempo, você pode encontrar alguns erros comuns. Um deles é não entender bem como funciona a lógica do arredondamento. Certifique-se de configurar o intervalo e o formato do tempo corretamente. Também, cuide pra não sobrescrever os dados originais caso você precise deles de novo.

Pra gerenciar o arredondamento com precisão, sempre verifique se o timedelta tá calculando o intervalo certinho e se os dados de entrada estão no formato correto.

1
Pesquisa/teste
Trabalhando com a biblioteca schedule, nível 40, lição 4
Indisponível
Trabalhando com a biblioteca schedule
Trabalhando com a biblioteca schedule
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION