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