13.10. Processamento e Limpeza de Dados com Pandas: Trabalho com Datas e Horários

O trabalho com datas e horários é uma parte fundamental da análise de dados. Em muitos conjuntos de dados, as informações temporais são cruciais para a realização de análises como séries temporais, estudos de sazonalidade, e tendências ao longo do tempo. No Python, a biblioteca Pandas oferece ferramentas robustas para manipular esses tipos de dados. Este capítulo abordará como você pode processar e limpar dados de datas e horários usando Pandas.

Compreensão dos Tipos de Dados Temporais

Antes de começarmos a manipular datas e horários, é importante entender os tipos de dados temporais disponíveis em Pandas:

  • Timestamp: Representa um ponto específico no tempo.
  • DatetimeIndex: Um array de Timestamps, frequentemente usado como índice em um DataFrame ou Series.
  • Period: Representa um intervalo de tempo.
  • PeriodIndex: Um array de Periods, também usado como índice.
  • Timedelta: Representa a diferença de tempo entre dois pontos no tempo.

Conversão de Strings para Datetime

Em muitos conjuntos de dados, as datas e horários vêm como strings. Para trabalhar com esses dados, primeiro precisamos convertê-los para o tipo Timestamp. Isso pode ser feito com a função pd.to_datetime(). Esta função é bastante flexível e pode interpretar uma grande variedade de formatos de data e hora.


import pandas as pd

# Exemplo de conversão de string para datetime
data_series = pd.Series(['2023-01-01', '2023-01-02', '2023-01-03'])
data_series = pd.to_datetime(data_series)

Se você estiver lidando com um formato de data e hora mais exótico, pode usar o argumento format para especificar exatamente como a data e hora devem ser interpretadas:


# Exemplo de conversão com formato específico
data_series = pd.Series(['01-01-2023', '02-01-2023', '03-01-2023'])
data_series = pd.to_datetime(data_series, format='%d-%m-%Y')

Trabalhando com Datas e Horários em DataFrames

Em um DataFrame, muitas vezes queremos converter uma ou mais colunas para o tipo datetime. Podemos fazer isso durante a leitura de um arquivo CSV/Excel com a opção parse_dates, ou depois de carregar o DataFrame usando pd.to_datetime().


# Conversão durante a leitura de um arquivo CSV
df = pd.read_csv('data.csv', parse_dates=['date_column'])

# Conversão após a leitura do DataFrame
df['date_column'] = pd.to_datetime(df['date_column'])

Seleção e Filtragem de Dados Temporais

Com as datas convertidas para datetime, você pode facilmente filtrar e selecionar dados baseados no tempo. Por exemplo, para selecionar todas as entradas de um determinado ano, mês ou dia, você pode usar a propriedade dt junto com condições booleanas:


# Selecionando dados de um determinado ano
df_2023 = df[df['date_column'].dt.year == 2023]

# Filtrando por um mês específico
df_january = df[df['date_column'].dt.month == 1]

Operações com Datas e Horários

Pandas permite realizar operações matemáticas com datas. Por exemplo, você pode adicionar ou subtrair dias de uma data:


# Adicionando 10 dias a uma coluna de datas
df['date_column'] += pd.Timedelta(days=10)

# Subtraindo 5 horas de uma coluna de horários
df['time_column'] -= pd.Timedelta(hours=5)

Da mesma forma, você pode calcular a diferença entre duas datas e obter um Timedelta:


# Calculando a diferença entre duas datas
df['difference'] = df['date_column'] - pd.to_datetime('2023-01-01')

Agrupamento e Resample de Dados Temporais

Para análises de séries temporais, muitas vezes é necessário agrupar dados por períodos de tempo. Isso pode ser feito com o método groupby() ou resample(), que é especificamente projetado para dados temporais:


# Agrupando por ano e calculando a média
df.groupby(df['date_column'].dt.year).mean()

# Reamostrando os dados para obter a soma mensal
df.resample('M', on='date_column').sum()

Tratando Dados Faltantes em Séries Temporais

Em séries temporais, muitas vezes encontramos dados faltantes. Pandas oferece métodos como fillna(), bfill() e ffill() para tratar esses casos:


# Preenchendo dados faltantes com o valor anterior
df['column'].fillna(method='ffill')

# Preenchendo dados faltantes com o valor seguinte
df['column'].fillna(method='bfill')

Conclusão

Trabalhar com datas e horários em Pandas é essencial para uma análise de dados eficaz e precisa. Compreender como converter, filtrar, e manipular esses dados permite que você extraia insights significativos e realize análises temporais complexas. A biblioteca Pandas fornece um conjunto de ferramentas poderosas que facilitam essas tarefas, tornando o Python uma escolha excelente para processamento e limpeza de dados temporais.

Praticar essas técnicas com conjuntos de dados reais irá solidificar seu entendimento e habilidade em lidar com datas e horários, abrindo portas para uma análise de dados mais profunda e informativa.

Agora responda o exercício sobre o conteúdo:

Qual das seguintes afirmações sobre o trabalho com datas e horários usando a biblioteca Pandas em Python é correta?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Imagem do artigo Processamento e Limpeza de Dados com Pandas: Normalização de Textos

Próxima página do Ebook Gratuito:

58Processamento e Limpeza de Dados com Pandas: Normalização de Textos

5 minutos

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto