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
davy.ai
Para eliminar los datos que aparecen durante un corto período de tiempo (<5mins) utilizando Pandas, se pueden seguir los siguientes pasos:
pd.to_datetime()
.df.sort_values()
.df.diff()
.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 resultantecleaned_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.