quinta-feira, 10 de dezembro de 2020

Obtenha a hora de um timestamp no pandas

Vamos ver como extrair a hora de um timestamp no Pandas, com a ajuda de vários exemplos.

Exemplo 1: pandas.timestamp.now() leva o fuso horário como entrada e retorna o objeto timestamp atual desse fuso horário

# importa o módulo pandas
import pandas as pd

# timestamp corrente
date = pd.Timestamp.now()
print("Corrente Timestamp: ", date)

# extrai as horas do timestamp 
frame = date.hour
print("Hora: ", frame)

Resultado:

Corrente Timestamp:  2020-12-09 08:49:59.531299
Hora:  8

Exemplo 2: pandas.timestamp() é usado por DateTimeIndex de um fuso horário específico. Pega ano, mês, dia, hora e fuso horário como entrada e retorna DateTimeIndex desse fuso horário.

# importa o módulo pandas
import pandas as pd

# timestamp corrente
date = pd.Timestamp(year=2020, month=7, day=21,
                    hour=6, minute=30, second=44,
                    tz='US/Pacific')
print("Timestamp: ", date)

# extrai a hora do timestamp
print("Hour: ", date.hour)

Resultado:

Timestamp:  2020-07-21 06:30:44-07:00
Hour:  6

Exemplo 3: Pegue a entrada como um intervalo de timestamp usando pandas.dt_range() e pandas.series() para converter em um array de timestamp.

# importa o módulo pandas
import pandas as pd

# cria seis datas entre o periodo de seis horas
dates = pd.Series(pd.date_range('2019-8-5 10:23:05', periods= 6, freq='H'))

# converte num dicionário
frame = pd.DataFrame(dict(givenDate=dates))

# extri horas do timestamp
frame['hourOfTimestamp'] = frame['givenDate'].dt.hour
print(frame)

Resultado:

            givenDate  hourOfTimestamp
0 2019-08-05 10:23:05               10
1 2019-08-05 11:23:05               11
2 2019-08-05 12:23:05               12
3 2019-08-05 13:23:05               13
4 2019-08-05 14:23:05               14
5 2019-08-05 15:23:05               15

Exemplo 4: Use o atributo object.hour para retornar a hora da data e hora nos dados do objeto Series fornecido.

# importa o módulo pandas
import pandas as pd

dates = pd.Series(['2015-01-11 09:20', '2019-4-8 11:31', '2018-12-22 10:10',  
                   '2011-4-2 04:25', '2017-1-6 03:51'])   
  
# atribui um nome as Series
seriesName = ['T1', 'T2', 'T3', 'T4', 'T5']

# atribui um index para cada timestamp 
dates.index = seriesName

dates = pd.to_datetime(dates)

# extrai as horas dp Timestamp
rs = dates.dt.hour
print(rs)

Resultado:

T1     9
T2    11
T3    10
T4     4
T5     3
dtype: int64

Exemplo 5: Ler dados de um timespamp de um arquivo csv e obter horas de cada timestamp.
Você pode baixar o arquivo csv aqui.

# importa o módulo pandas
import pandas as pd

# lê os dados do arquivo datahora.csv
frame = pd.read_csv(r'datahora.csv')
print("Valores de datahora.csv: ")
print(frame.head())

frame['DataHora'] = frame['DataHora'].astype('datetime64[ns]')

# extrai horas de Timestamp   
print("Horas: ")
# Acessa o conteúdo da coluna 'DataHora'
# como um atributo do dataframe
print(frame.DataHora.dt.hour.head())

Resultado:

Valores de datahora.csv:
    DataHora           Cidade
0  2010-08-02 13:06:00        São Paulo
1  2020-07-11 21:50:43   Belo Horizonte
2  2010-09-12 22:58:00          Vitória
3  2019-11-03 03:00:29        Fortaleza
4  2009-01-12 09:54:09           Manaus
Horas:
0    13
1    21
2    22
3     3
4     9
Name: DataHora, dtype: int64

Artigo escrito por tanvi_jain e traduzido por Acervo Lima de Get the Hour from timestamp in Pandas.

0 comentários:

Postar um comentário