Formatando Datas no Python

Lidar com datas é sempre complexo. Já tratamos disso aqui em diversas ocasiões, como por exemplo em Formatando Datas no SAS. Chegou a hora de falar como lidar com esse problemão quando estamos no Python!

Há diversas formas de se deparar com uma data mal formatada no Python. Veja o dataset abaixo, onde criamos quatro campos, sendo três textos e um numérico:

import pandas as pd

dados = {'data_1': ['20191001','20191010', '19991001'],
'data_2': ['01-10-2019', '10-10-2019', '01-10-1999'],
'data_3': ['01oct2019','10oct2019', '01oct1999'],
'data_4':[20191001, 20191010, 19991001]}

df = pd.DataFrame(dados, columns=['data_1','data_2','data_3','data_4'])

Se você quiser checar a tabela:

df

Outra dúvida que você pode ter é se os campos realmente não são datas:

df.dtypes

Bom, já vimos que não temos nenhum campo devidamente formatado. Temos os formatos AAAAMMDD (text0), DD-MM-AAAA, DD-MMM-AAAA e AAAAMMDD (numérico).

Mas veja que fácil, a própria biblioteca pandas possui uma função que faz a conversão que precisamos, chama-se to_datetime:

df['data_1'] = pd.to_datetime(df['data_1'], format="%Y%m%d")

dtypes

Simples, ein? Você só precisou passar a informação do formato em que sua data se encontra. Isso vale para todos os casos:

df['data_2'] = pd.to_datetime(df['data_2'], format="%d-%m-%Y")
df['data_3'] = pd.to_datetime(df['data_3'], format="%d%b%Y")
df['data_4'] = pd.to_datetime(df['data_4'], format="%Y%m%d")
df

Parece que deu certo. Mas para ter certeza:

Ah, mas por que falar de data e não ensinar como extrair uma parte dela, não é mesmo? Se você quiser extrair o mês ou o ano é bem fácil:

df['mes'] = pd.DatetimeIndex(df['data_1']).month
df['ano'] = pd.DatetimeIndex(df['data_1']).year

Às vezes você pode querer uma combinação de ano e mês:

df['mes_ano'] = pd.to_datetime(df['data_1']).dt.to_period('M')

Viu como é tranquilo trabalhar com Pandas?

Gostou dos posts? Deixe um recado aí, um feedback, é bastante importante. Se você tiver Twitter, boas discussões rolam no @EstatSite. Se preferir, você pode entrar em contato comigo pelo formulário em Sobre o Estatsite / Contato.

Forte Abraço e Bons Estudos!

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *