Python

Como Manipular Datas no Pandas

Escrito por Erick Faria · 3 min. >
Manipular Datas no Pandas

Neste post, vamos explorar como manipular datas no Pandas, uma biblioteca Python amplamente utilizada para análise de dados. Manipular datas é uma tarefa comum em muitas análises de dados, especialmente ao trabalhar com séries temporais. Vamos criar um DataFrame de exemplo e abordar várias técnicas para trabalhar com datas no Pandas.

O que é Manipulação de Datas?

Manipulação de datas envolve trabalhar com dados temporais, como datas e horários, para realizar diversas operações, incluindo extração de partes da data, agregação por períodos de tempo, e cálculos entre datas. O Pandas fornece ferramentas poderosas para essas tarefas, tornando o trabalho com datas eficiente e intuitivo.

Manipular Datas no Pandas

Criando um DataFrame com Datas

Vamos começar criando um DataFrame simples que contém uma coluna de datas:

# Manipular Datas no Pandas
import pandas as pd

data = {
    'Data': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04'],
    'Valor': [100, 200, 150, 300]
}

df = pd.DataFrame(data)

Convertendo Strings para Datas

Para manipular datas corretamente, precisamos converter as strings de datas para o tipo datetime do Pandas:

# Manipular Datas no Pandas
df['Data'] = pd.to_datetime(df['Data'])

Extraindo Partes da Data

Podemos extrair partes específicas da data, como o ano, mês e dia, usando atributos do objeto datetime:

# Manipular Datas no Pandas
df['Ano'] = df['Data'].dt.year
df['Mes'] = df['Data'].dt.month
df['Dia'] = df['Data'].dt.day

Filtrando Dados por Data

Para filtrar o DataFrame por uma data específica ou por um intervalo de datas:

  • Filtrar por uma data específica:
# Manipular Datas no Pandas
df[df['Data'] == '2023-01-02']
  • Filtrar por um intervalo de datas:
# Manipular Datas no Pandas
df[(df['Data'] >= '2023-01-02') & (df['Data'] <= '2023-01-03')]

Calculando Diferenças Entre Datas

Podemos calcular a diferença entre datas usando a operação de subtração, que retorna um objeto Timedelta:

# Manipular Datas no Pandas
df['Dif_Dias'] = df['Data'] - df['Data'].shift(1)

Manipulação Avançada de Datas

Trabalhando com Intervalos de Tempo

O Pandas facilita a criação e manipulação de intervalos de tempo. Vamos criar um intervalo de datas usando a função date_range:

intervalo = pd.date_range(start='2023-01-01', end='2023-01-10', freq='D')

Isso cria uma DatetimeIndex com datas diárias entre 1 de janeiro de 2023 e 10 de janeiro de 2023. Podemos usar este intervalo para criar um DataFrame:

df_intervalo = pd.DataFrame(intervalo, columns=['Data'])
df_intervalo['Valor'] = range(1, len(df_intervalo) + 1)

Mudando Frequências de Dados

Às vezes, é necessário mudar a frequência dos dados. Por exemplo, converter dados diários em dados mensais:

df_mensal = df.set_index('Data').resample('M').sum()

O inverso também é possível, onde podemos desagregar dados mensais para diários:

df_diario = df_mensal.resample('D').pad()

Trabalhando com Datas e Horas

O Pandas também suporta operações com datas e horas. Vamos adicionar uma coluna de horas ao nosso DataFrame de exemplo:

df['Hora'] = ['10:00', '11:00', '12:00', '13:00']
df['Data_Hora'] = pd.to_datetime(df['Data'] + ' ' + df['Hora'])

Agora podemos extrair partes específicas da hora:

df['Hora'] = df['Data_Hora'].dt.hour
df['Minuto'] = df['Data_Hora'].dt.minute

Diferença Entre Datas e Horas

Para calcular a diferença entre duas colunas de datas e horas, podemos simplesmente subtraí-las:

df['Dif_Horas'] = df['Data_Hora'] - df['Data_Hora'].shift(1)

Deslocando Datas

O Pandas permite deslocar datas facilmente, o que é útil para criar lags ou leads em séries temporais:

df['Data_Ant'] = df['Data'].shift(1)
df['Data_Prox'] = df['Data'].shift(-1)

Manipulando Feriados e Fins de Semana

Para excluir fins de semana e feriados de uma análise, podemos usar a biblioteca pandas.tseries.holiday:

from pandas.tseries.holiday import USFederalHolidayCalendar

cal = USFederalHolidayCalendar()
feriados = cal.holidays(start='2023-01-01', end='2023-12-31')

df['Dia_Util'] = ~df['Data'].isin(feriados) & (df['Data'].dt.weekday < 5)

Resample: Agregando Dados por Períodos de Tempo

A função resample permite agregar dados por diferentes períodos de tempo. Por exemplo, para calcular a soma dos valores por mês:

df.set_index('Data').resample('M').sum()

Para mais informações sobre como utilizar o Pandas para análise de dados, confira outros conteúdos no meu blog:

Considerações Finais

Espero que este guia tenha sido útil para aprender como manipular datas no Pandas. A prática é essencial para dominar essas técnicas, então encorajo você a experimentar e aplicar esses métodos em seus próprios projetos de análise de dados.

Para aprimorar suas habilidades com o Pandas e se tornar mais eficiente na manipulação de dados, é importante também fortalecer sua compreensão em Python. Recomendamos o livro “Fundamentos em Python: Para Iniciantes em Programação e Computação”, disponível na Amazon, que oferece uma introdução abrangente ao Python.

Junte-se à nossa comunidade no Twitter e inscreva-se no nosso canal do YouTube para acessar mais tutoriais, dicas e recursos. Continue praticando e explorando novas maneiras de manipular dados com o Pandas, e fique atento para mais guias e tutoriais que compartilharemos.

Escrito por Erick Faria
Engenheiro de Dados com Ph.D. em Geografia e experiência em análise espacial e geoprocessamento. Expertise em processamento de grandes volumes de dados geoespaciais, imagens de satélite e dados de mercado, utilizando ferramentas como Spark, Databricks e Google Earth Engine. Experiência em projetos de mercado de carbono, modelos preditivos para investimentos agrícolas e liderança de projetos de dados em saúde pública. Habilidades em Python, R, SQL e diversas ferramentas de engenharia de dados. Profile