Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Ordernar DataFrame por data

Boa tarde. Quis fazer observações em um arquivo csv de dados publicos do estado de São Paulo sobre casos de covid. Porem nesses estudos obtive uma dúvida... Existe uma coluna no meu DataFrame com um campo de datas Meu objetivo é ter o DataFrame ordenado por ele. Em cima dessa coluna eu tentei metodos como dados.sort_values('data'), porém a data não ordena de forma crescente. Também transformei a coluna em uma lista mas ambos os metoso sort() e sort(reverse = True) também nã funcionam. Existe a possibilidade de ordenar colunas de datas como esta, com datas inseridas ?

Vou inserir uma imagem de exemplo Obrigado.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade ![Insira aqui a descrição dessa imagem para ajudar na acessibilidade]

1 resposta
solução!

Boas Vitor! Tudo bem? Espero que sim.

Nesse caso, o pd.sort_values não funciona pois a coluna datahora é para o Pandas uma string, e não uma data. E portanto ordena essa coluna como se fosse uma string e não como um datetime.

Entretanto, existe uma maneira bastante eficiente de resolve isso, através da função pd.to_datetime que transforma uma coluna de strings em datetimes.

Criei um DataFrame fictício para usar de exemplo:

dados = pd.DataFrame()
datas = ['28/02/2020', '04/03/2020', '07/03/2020']
vendas = [137, 238, 159]
dados['data'] = datas
dados['vendas'] = vendas

Temos um DataFrame da seguinte forma:

datavendas
028/02/2020137
104/03/2020238
207/03/2020159

Entretanto, se consultarmos os tipos das colunas, através da dados.dtypes, obteremos:

data      object
vendas     int64

Data é um objeto pois é assim que as strings são representadas no DataFrame.

Para transforma-las em datetimes, usaremos a função pd.to_datetime(), que recebe uma Series e um formato e gera um objeto datetime a partir dessas informações. Veja o código abaixo:

dados.data = pd.to_datetime(dados.data, format='%d/%m/%Y')

O format refere-se a como a data está indicada, sendo %d o dia, %m o mês e %Y o ano com 4 dígitos.

Agora, a coluna data é composta por datetimes e podemos realizar a ordenação por valores:

dados.sort_values('data')

que retorna:

datavendas
104/03/2020238
207/03/2020159
028/02/2020137

Espero ter ajudado! Bons Estudos!!