terça-feira, 20 de abril de 2021

Python - Trabalhando com data e hora usando pandas

Ao trabalhar com dados, encontrar dados de séries temporais é muito comum. O pandas é uma ferramenta muito útil para trabalhar com dados de séries temporais.

O pandas fornece um conjunto diferente de ferramentas com as quais podemos realizar todas as tarefas necessárias com dados de data e hora. Vamos tentar entender com os exemplos discutidos abaixo.

Código #1: crie um dataframe de datas

import pandas as pd

# Cria um DatetimeIndex com 10 linhas
# 3 cada linha tem um incremento de uma hora
# com relação a linha anterior 
data = pd.date_range('1/1/2011', periods=10, freq='H')

print(data)

Saída:

DatetimeIndex(['2011-01-01 00:00:00', '2011-01-01 01:00:00', 
               '2011-01-01 02:00:00', '2011-01-01 03:00:00', 
               '2011-01-01 04:00:00', '2011-01-01 05:00:00', 
               '2011-01-01 06:00:00', '2011-01-01 07:00:00', 
               '2011-01-01 08:00:00', '2011-01-01 09:00:00'],
              dtype='datetime64[ns]', freq='H')

Código #2: Cria um intervalo de datas e mostra os recursos básicos

import pandas as pd

# Obtem a data atual
x = pd.Timestamp.now()

# mostra o mês e o ano atual
print(x.month, x.year)

Saída:

4 2021

Os recursos de data e hora podem ser divididos em duas categorias. A primeira, momentos de um período, e a segunda, o tempo decorrido desde um determinado período. Esses recursos podem ser muito úteis para entender os padrões nos dados.

Divida uma determinada data em recursos:

  • pandas.Series.dt.year retorna o ano da data e hora.
  • pandas.Series.dt.month retorna o mês da data e hora.
  • pandas.Series.dt.day retorna o dia da hora e data.
  • pandas.Series.dt.hour retorna a hora da data e hora.
  • pandas.Series.dt.minute retorna o minuto da data e hora.

Consulte todas as propriedades de data e hora a partir daqui.

Código #3: divida os dados e o tempo em recursos separados

import pandas as pd

# Cria um DataFrame com 72 linhas
# (72 períodos)
rng = pd.DataFrame()
rng['date'] = pd.date_range('1/1/2011', periods=72, freq='H')

# Imprime os cinco primeiros elementos no formato dd-mm-yy 00:00:00
print(rng[:5])

# Crie colunas para ano, mês, dia, hora e minuto
rng['year'] = rng['date'].dt.year
rng['month'] = rng['date'].dt.month
rng['day'] = rng['date'].dt.day
rng['hour'] = rng['date'].dt.hour
rng['minute'] = rng['date'].dt.minute

# mostra as primeiras 3 linhas do DataFrame
print(rng.head(3))

Saída:

                 date
0 2011-01-01 00:00:00
1 2011-01-01 01:00:00
2 2011-01-01 02:00:00
3 2011-01-01 03:00:00
4 2011-01-01 04:00:00
                 date  year  month  day  hour  minute
0 2011-01-01 00:00:00  2011      1    1     0       0
1 2011-01-01 01:00:00  2011      1    1     1       0
2 2011-01-01 02:00:00  2011      1    1     2       0

Código #4: para obter a hora atual, use pandas.Timestamp.now() e, a seguir, converta a data e hora em data e hora e acesse diretamente o ano, mês ou dia.

import pandas as pd

# Input present datetime using Timestamp
t = pd.Timestamp.now()

print(t)

Saída:

2021-04-20 16:28:22.972406

Vamos analisar este problema em um conjunto de dados real uforeports.

import pandas as pd

# Lê um arquivo csv a partir de uma url
df = pd.read_csv('http://bit.ly/uforeports')

print(df.head())

Saída:

                   City Colors Reported Shape Reported State             Time
0                Ithaca             NaN       TRIANGLE    NY   6/1/1930 22:00
1           Willingboro             NaN          OTHER    NJ  6/30/1930 20:00
2               Holyoke             NaN           OVAL    CO  2/15/1931 14:00
3               Abilene             NaN           DISK    KS   6/1/1931 13:00
4  New York Worlds Fair             NaN          LIGHT    NY  4/18/1933 19:00
# converte a coluna Time para o formato datatime
df['Time'] = pd.to_datetime(df.Time)

print(df.head())

Saída:

                   City Colors Reported Shape Reported State                Time
0                Ithaca             NaN       TRIANGLE    NY 1930-06-01 22:00:00
1           Willingboro             NaN          OTHER    NJ 1930-06-30 20:00:00
2               Holyoke             NaN           OVAL    CO 1931-02-15 14:00:00
3               Abilene             NaN           DISK    KS 1931-06-01 13:00:00
4  New York Worlds Fair             NaN          LIGHT    NY 1933-04-18 19:00:00
# Lê um arquivo csv a partir de uma url
df = pd.read_csv('http://bit.ly/uforeports')

# converte a coluna Time para o formato datatime
df['Time'] = pd.to_datetime(df.Time)

# Mostra apenas as horas de cada elemento datetime
print(df.Time.dt.hour.head())

Saída:

0    22
1    20
2    14
3    13
4    19
Name: Time, dtype: int64

Artigo escrito por aakarsha_chugh e traduzido por Acervolima de Python | Working with date and time using Pandas.

Licença

0 comentários:

Postar um comentário