Las diferentes regiones siguen diferentes convenciones de fechas (AAAA-MM-DD, AAAA-DD-MM, DD/MM/AA, etc.). Es difícil trabajar con tales strings en los datos. La función to_datetime() de Pandas permite convertir la fecha y la hora en formato de string a datetime64. Este tipo de datos ayuda a extraer características de fecha y hora que van desde ‘año’ a ‘microsegundos’.
Para filtrar filas en función de las fechas, primero formatee las fechas en el marco de datos al tipo datetime64. Luego use la función DataFrame.loc[] y DataFrame.query[] del paquete Pandas para especificar una condición de filtro. Como resultado, adquiera el subconjunto de datos, es decir, el DataFrame filtrado. Veamos algunos ejemplos del mismo.
Usaremos un marco de datos de muestra que consiste en la cantidad de publicaciones en un día específico. Convierta la fecha en los datos de muestra al tipo datetime64 de la siguiente manera.
Python
# Import Pandas package import pandas as pd # Create a sample dataframe df = pd.DataFrame({'num_posts': [4, 6, 3, 9, 1, 14, 2, 5, 7, 2], 'date' : ['2020-08-09', '2020-08-25', '2020-09-05', '2020-09-12', '2020-09-29', '2020-10-15', '2020-11-21', '2020-12-02', '2020-12-10', '2020-12-18']}) # Convert the date to datetime64 df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d') # Display dataframe df
Ejemplo 1:
Filtre datos basados en fechas usando la función DataFrame.loc[] , la función loc[] se usa para acceder a un grupo de filas y columnas de un DataFrame a través de etiquetas o una array booleana. En este ejemplo, la declaración condicional en loc[] devuelve una array booleana con valor True si la fila cumple la condición (la fecha está entre el 1 y el 15 de septiembre) y valor False en caso contrario. Luego, la función loc[] devuelve solo aquellas filas que tienen valores verdaderos.
Python3
# Import Pandas package import pandas as pd # Create a sample dataframe df = pd.DataFrame({'num_posts': [4, 6, 3, 9, 1, 14, 2, 5, 7, 2], 'date': ['2020-08-09', '2020-08-25', '2020-09-05', '2020-09-12', '2020-09-29', '2020-10-15', '2020-11-21', '2020-12-02', '2020-12-10', '2020-12-18']}) # Convert the date to datetime64 df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d') # Filter data between two dates filtered_df = df.loc[(df['date'] >= '2020-09-01') & (df['date'] < '2020-09-15')] # Display filtered_df
Producción:
Ejemplo 2:
Utilice DateTimeIndex(dt) para acceder a atributos de fecha y hora separados, como año, mes, día, día de la semana, horas, minutos, segundos, microsegundos, etc. como una condición en la función loc[] de la siguiente manera.
Nota: Los valores de fecha deben estar en formato datetime64.
Python3
# Import Pandas package import pandas as pd # Create a sample dataframe df = pd.DataFrame({'num_posts': [4, 6, 3, 9, 1, 14, 2, 5, 7, 2], 'date': ['2020-08-09', '2020-08-25', '2020-09-05', '2020-09-12', '2020-09-29', '2020-10-15', '2020-11-21', '2020-12-02', '2020-12-10', '2020-12-18']}) # Convert the date to datetime64 df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d') # Filter data between two dates filtered_df = df.loc[(df['date'] >= '2020-09-01') & (df['date'] < '2020-09-15')] # Display print("\nPosts in December:") print(filtered_df) # Filter data for specific weekday (tuesday) filtered_df = df.loc[df['date'].dt.weekday == 2] # Display print("\nPosts on all Tuesdays:") print(filtered_df)
Producción:
Ejemplo 3:
Filtre los datos en función de las fechas utilizando la función DataFrame.query() . La función query() filtra un Pandas DataFrame y selecciona filas especificando una condición entre comillas. Como se muestra a continuación, la condición dentro de query() es seleccionar los datos con fechas en el mes de agosto (se especifica el rango de fechas). Las columnas del DataFrame se colocan en el espacio de nombres de consulta de forma predeterminada, por lo que se puede acceder a la columna de fecha sin indexación (simplemente especifique el nombre de la columna).
Python3
# Import Pandas package import pandas as pd # Create a sample dataframe df = pd.DataFrame({'num_posts': [4, 6, 3, 9, 1, 14, 2, 5, 7, 2], 'date': ['2020-08-09', '2020-08-25', '2020-09-05', '2020-09-12', '2020-09-29', '2020-10-15', '2020-11-21', '2020-12-02', '2020-12-10', '2020-12-18']}) # Convert the date to datetime64 df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d') # Filter data between two dates filtered_df = df.query("date >= '2020-08-01' \ and date < '2020-09-01'") # Display filtered_df
Producción:
Publicación traducida automáticamente
Artículo escrito por akshisaxena y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA