¿Cómo ordenar un marco de datos de Pandas por fecha?

En el mundo real, podemos encontrar conjuntos de datos de cualquier forma que también pueden incluir la fecha dentro de ellos. Estos conjuntos de datos pueden estar presentes en cualquier formato de archivo como .CSV, .xlsx, .txt, etc. Para cargar estos datos dentro de Python, usamos una biblioteca llamada Pandas que nos brinda una gran cantidad de funciones y métodos para jugar con estos datos. Pandas lee estos conjuntos de datos en forma de tramas de datos.

A veces, puede haber una situación en la que el conjunto de datos puede contener atributos relacionados con la fecha y queremos ordenar los registros dentro del marco de datos según los valores de fecha en un orden específico.

En este artículo, aprenderemos cómo podemos ordenar Pandas DataFrame por fecha. Crearé un objeto de marco de datos personalizado que imite un problema del mundo real y este método funcionará universalmente para cualquier marco de datos.

Clasificación por columna única

Para ordenar un DataFrame según la columna que contiene la fecha, seguiremos una serie de pasos, así que sigamos aprendiendo.

Paso 1: cargue o cree un marco de datos que tenga una columna de fecha

Python

# importing package
import pandas as pd
 
# Creating a dataframe that stores records of students taking admission in a college
data = pd.DataFrame({'AdmissionDate': ['2021-01-25','2021-01-22','2021-01-20',
                        '2021-01-18','2021-01-22','2021-01-17','2021-01-21'],
                     'StudentID': [7,5,3,2,6,1,4],
                     'Name': ['Ram','Shyam','Mohan','Sohan','Lucky','Abhinav','Danny'],
                     'Stream':['CSE','ECE','Civil','Mechanical','CSE','IT','EEE']
                   })
# Checking dataframe
print(data)

Producción:

Aquí, se puede ver claramente que nuestro DataFrame contiene una columna llamada ‘AdmissionDate’ que contiene valores de fecha.

Paso 2: convertir el tipo de datos de string en un objeto de fecha y hora.

 Cuando leemos el conjunto de datos, los valores almacenados dentro de la columna ‘AdmissionDate’ se tratan como tipo de datos de string de forma predeterminada. Entonces, necesitamos convertir este objeto de string en un objeto de fecha y hora, para eso usaremos el método .to_datetime() proporcionado por Pandas que se puede hacer como: 

Python

# checking datatype
print(type(data.AdmissionDate[0]))
 
# convert to date
data['AdmissionDate'] = pd.to_datetime(data['AdmissionDate'])
 
# verify datatype
print(type(data.AdmissionDate[0]))

Producción:

<class 'str'>
<class 'pandas._libs.tslibs.timestamps.Timestamp'>

 Paso 3: ordenar el marco de datos según la fecha

Usaremos el método sort_values() para ordenar nuestro conjunto de datos y el atributo que pasaremos dentro de la función es el nombre de la columna con el que queremos ordenar nuestro DataFrame.

Python

data.sort_values(by='AdmissionDate')
print(data)

Producción:

Una cosa a tener en cuenta aquí es que nuestro DataFrame se ordena en orden ascendente de fechas, para ordenar el DataFrame en orden descendente podemos pasar un parámetro adicional dentro de la función sort_values() que establecerá el valor ascendente en False y devolverá el DataFrame en orden descendente .

Python

data.sort_values(by='AdmissionDate',ascending=False)
print(data)

 
 Producción:

Ordenar por varias columnas según la fecha

También podemos ampliar nuestra comprensión para clasificar varias columnas de fecha y hora, en esto, mantenemos un orden de prioridad para clasificar nuestro DataFrame. Echemos un vistazo.

Paso 1: cargue o cree un marco de datos que tenga varias columnas de fecha 

Python

# importing package
import pandas as pd
 
# Creating a DataFrame
data_1 = pd.DataFrame({'Mfg. Date': ['2021-01-25','2021-01-22','2021-01-20','2021-01-18',
                       '2021-01-22','2021-01-17','2021-01-21'],
                       'ProductID': [7,5,3,2,6,1,4],
                       'Product Name': ['Paracetamol','Moov','Volini','Crocin',
                                        'Aciloc','Iodex','Combiflam'],
                       'Expiry Date':['2022-01-25','2023-01-22','2021-05-20','2022-03-18',
                                      '2022-01-22','2021-05-17','2022-01-30']
                       })
 
# Checking dataframe
print(data_1)

 
Producción:

Aquí, se puede ver claramente que nuestro DataFrame contiene dos columnas que tienen fechas, a saber, ‘Mfg. Fecha’ y ‘Fecha de caducidad’.

Paso 2: convertir el tipo de datos de string en un objeto de fecha y hora.

Python

data_1[['Mfg. Date','Expiry Date']] = data_1[['Mfg. Date','Expiry Date']].apply(pd.to_datetime)

 
 Paso 3: ordenar el marco de datos según la fecha 

Python

# sorting DataFrame by giving first priority to Expiry Date and then Mfg. Date
data_1.sort_values(by=['Expiry Date', 'Mfg. Date'])

 
 Producción:

 Aquí, tenemos una lista ordenada en orden ascendente de Fecha de vencimiento según nuestra prioridad.

Publicación traducida automáticamente

Artículo escrito por saurabh48782 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *