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.
0 comentários:
Postar um comentário