es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Limpieza de datos en un marco de datos de Pandas basado en la marca de tiempo

Necesito ayuda para limpiar los datos que aparecen durante un corto período de tiempo utilizando Pandas.

“Cuando los datos aparecen durante una duración corta < 5 minutos, quiero eliminar esos datos del marco de datos, de lo contrario, mantenerlos en el marco de datos”. En la figura 1, tanto en la parte amarilla como en la azul, hay datos de etiqueta durante más de 5 minutos. Por lo tanto, quiero mantener esos datos en el marco de datos. Sin embargo, en la parte verde, hay datos de etiqueta durante 1 minuto, que es menos de 5 minutos. Por lo tanto, quiero eliminarlos del marco de datos. Entonces, ¿cómo puedo codificar ese requisito de limpieza de datos en Python utilizando la biblioteca de paquetes de Pandas?

Figura 1: Enlace a la imagen

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para eliminar los datos que aparecen durante un corto período de tiempo (<5mins) utilizando Pandas, se pueden seguir los siguientes pasos:

    1. Convertir los datos de tiempo al formato datetime utilizando la función pd.to_datetime().
    2. Ordenar el marco de datos por la columna de datetime utilizando la función df.sort_values().
    3. Calcular la diferencia de tiempo entre filas consecutivas utilizando la función df.diff().
    4. Crear una máscara booleana para las filas donde la diferencia de tiempo sea menor a 5 minutos.
    5. Utilizar la máscara booleana para filtrar las filas donde la diferencia de tiempo sea menor a 5 minutos utilizando la función df.loc[].

    Aquí está el código de muestra para lograr esto:

    import pandas as pd

    cargar los datos en un marco de datos de pandas

    df = pd.read_csv(‘data.csv’)

    convertir los datos de tiempo al formato datetime

    df[‘time’] = pd.to_datetime(df[‘time’])

    ordenar el marco de datos por la columna de datetime

    df.sort_values(by=’time’, inplace=True)

    calcular la diferencia de tiempo entre filas consecutivas

    time_diff = df[‘time’].diff()

    crear una máscara booleana para las filas donde la diferencia de tiempo sea menor a 5 minutos

    mask = time_diff.dt.total_seconds() < 300

    utilizar la máscara booleana para filtrar las filas donde la diferencia de tiempo sea menor a 5 minutos

    cleaned_df = df.loc[~mask]

    En este código, data.csv es el archivo de entrada que contiene los datos. El marco de datos resultante cleaned_df tendrá los datos donde la etiqueta aparece por más de 5 minutos, y se eliminarán los datos donde la etiqueta aparece por menos de 5 minutos.

Comments are closed.