NumPy: Data e Hora
Última atualização: 2026-08-26
1. O que Você Aprenderá
- ❶ Criando arrays datetime64
- ❷ Aritmética de datas e durações
- ❸ Funções de dias úteis
- ❹ Extraindo componentes de data (ano, mês, dia)
2. Conceitos-Chave
import numpy as np
# Criando arrays de datas
dates = np.array(['2024-01-01', '2024-02-01', '2024-03-01'], dtype='datetime64')
print(dates) # ['2024-01-01' '2024-02-01' '2024-03-01']
# Aritmética de datas
print(dates + np.arange(3)) # adicionar dias
# Intervalo de datas
range_dates = np.arange('2024-01-01', '2024-01-10', dtype='datetime64')
print(range_dates)
# Extrair componentes
print(dates.astype('datetime64[Y]')) # ano
print(dates.astype('datetime64[M]')) # mês
> **Output:** Execute o NumPy 2.x em seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem o NumPy pré-instalado — instale-o localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.
▶ Exemplo: Criando intervalos de datas (Dificuldade ⭐)
import numpy as np
# Intervalo diário
days = np.arange('2024-01-01', '2024-01-11', dtype='datetime64')
print("Diário:", days)
# Intervalo mensal
months = np.arange('2024-01', '2024-07', dtype='datetime64[M]')
print("Mensal:", months)
# Intervalo horário
hours = np.arange('2024-01-01', '2024-01-02', dtype='datetime64[h]')
print("Horário:", hours)
Output:
TEXT 📖 Somente leituraDiário: ['2024-01-01' '2024-01-02' '2024-01-03' '2024-01-04' '2024-01-05' '2024-01-06' '2024-01-07' '2024-01-08' '2024-01-09' '2024-01-10'] Mensal: ['2024-01' '2024-02' '2024-03' '2024-04' '2024-05' '2024-06'] Horário: ['2024-01-01T00' '2024-01-01T01' '2024-01-01T02' '2024-01-01T03' '2024-01-01T04' '2024-01-01T05' '2024-01-01T06' '2024-01-01T07' '2024-01-01T08' '2024-01-01T09' '2024-01-01T10' '2024-01-01T11' '2024-01-01T12' '2024-01-01T13' '2024-01-01T14' '2024-01-01T15' '2024-01-01T16' '2024-01-01T17' '2024-01-01T18' '2024-01-01T19' '2024-01-01T20' '2024-01-01T21' '2024-01-01T22' '2024-01-01T23']
▶ Exemplo: Aritmética de datas (Dificuldade ⭐⭐)
import numpy as np
start = np.array('2024-01-15', dtype='datetime64')
# Adicionar dias
print("Início:", start)
print("+7 dias:", start + 7)
print("+30 dias:", start + 30)
print("-5 dias:", start - 5)
# Diferença entre datas
d1 = np.array('2024-01-01', dtype='datetime64')
d2 = np.array('2024-12-31', dtype='datetime64')
delta = d2 - d1
print("Dias em 2024:", delta)
# Extrair componentes
date = np.array('2024-07-04', dtype='datetime64')
print("Ano:", date.astype('datetime64[Y]'))
print("Mês:", date.astype('datetime64[M]'))
Output:
TEXT 📖 Somente leituraInício: 2024-01-15 +7 dias: 2024-01-22 +30 dias: 2024-02-14 -5 dias: 2024-01-10 Dias em 2024: 365 days Ano: 2024 Mês: 2024-07
▶ Exemplo: Cálculos de dias úteis (Dificuldade ⭐⭐)
import numpy as np
start = np.datetime64('2024-01-01')
end = np.datetime64('2024-01-31')
# Contar dias úteis
bd = np.busday_count(start, end)
print(f"Dias úteis em Jan 2024: {bd}")
# Encontrar o próximo dia útil
print("Próximo dia útil após 2024-01-05:", np.busday_offset('2024-01-05', 0, roll='forward'))
# Intervalo de dias úteis
biz_days = np.busday_offset('2024-01-01', np.arange(10))
print("Primeiros 10 dias úteis de 2024:", biz_days)
Output:
TEXT 📖 Somente leituraDias úteis em Jan 2024: 22 Próximo dia útil após 2024-01-05: 2024-01-08 Primeiros 10 dias úteis de 2024: ['2024-01-01' '2024-01-02' '2024-01-03' '2024-01-04' '2024-01-05' '2024-01-08' '2024-01-09' '2024-01-10' '2024-01-11' '2024-01-12']
P: Qual é a diferença entre datetime64 e o datetime do Python? R: datetime64 é um inteiro de 64 bits de largura fixa representando tempo, tornando-o rápido e eficiente em memória. O datetime do Python é um objeto completo com mais flexibilidade, mas maior sobrecarga.
P: Qual é a resolução do datetime64? R: Depende da unidade —
datetime64[Y](ano),datetime64[M](mês),datetime64[D](dia),datetime64[h](hora),datetime64[ms](milissegundo),datetime64[ns](nanossegundo).
P: Como computo dias úteis? R: Use
np.busday_count(start, end)para contar dias úteis entre duas datas, enp.busday_offsetpara encontrar o dia útil mais próximo.
❓ Perguntas Frequentes
P: O que é a coisa mais importante a lembrar? R: As operações do NumPy são vetorizadas — evite loops Python para melhor desempenho.
P: Onde posso aprender mais? R: Consulte a documentação oficial do NumPy em numpy.org para referências detalhadas e tópicos avançados.
P: Isso funciona com o NumPy 2.x? R: Sim — todos os exemplos são compatíveis com o NumPy 2.x. Algumas APIs mais antigas (como np.random.seed) ainda são suportadas, mas as alternativas modernas são recomendadas.
📖 Resumo
- Arrays datetime64 armazenam datas/horas como inteiros de 64 bits — rápidos e compactos
np.arangecom dtype datetime64 cria intervalos de datas- Aritmética: some/subtraia inteiros para deslocar pela unidade datetime
astypeextrai componentes: ano, mês, dia, etc.- Funções de dias úteis:
busday_count,busday_offset
📝 Exercícios
-
Básico (Dificuldade ⭐): Crie um array com todas as datas de Janeiro de 2024. Imprima as primeiras 5 e as últimas 5 datas.
-
Intermediário (Dificuldade ⭐⭐): Crie um intervalo de datas de 2024-01-01 a 2024-12-31. Extraia o mês de cada data e conte quantas datas caem em cada mês.
-
Desafio (Dificuldade ⭐⭐⭐): Compute o número de dias úteis entre 2024-01-01 e 2024-12-31. Compare com o número total de dias calendário.