Promedio de datos CSV
Estoy intentando procesar los datos por minuto en un formato por hora a partir del siguiente archivo de datos ejemplo:
...
$2021-01-27 14:22:59, 7877479, 8388606, -0.1059374, -17.6280, 26.75315, 17.09192, 85.2, 8.05, 97.63, 1.642691, 1.665497, 12.13, 1.621841, 1.541391
$2021-01-27 14:23:59, 7865387, 8388606, -0.2734679, -19.2070, 25.73683, 17.42454, 85.3, 8.05, 68.57, 1.642685, 1.660315, 9.52, 1.621823, 1.557271
$2021-01-27 14:24:59, 7853363, 8377689, -0.3185322, -2.0235, 24.95236, 17.73101, 84.9, 8.05, 54.95, 1.642676, 1.657235, 7.96, 1.621809, 1.564930
$2021-01-27 14:25:59, 7842250, 8357877, -0.2209551, 10.2949, 24.49805, 18.00294, 85.1, 8.05, 46.31, 1.642646, 1.655068, 6.67, 1.621802, 1.574302
...
El código que tengo hasta ahora para promediar una columna es:
import csv
import pandas as pd
from pandas.io.parsers import read_fwf
dataFile = 'C:fileLoction'
df = pd.read_csv(dataFile)
def readFile():
df['TS'] = pd.to_datetime(df['Timestamp'], format='%Y/%m/%d %H:%M')
df.index = df['TS']
df1 = df.resample('H').mean()
print(df1)
readFile()
Sin embargo, esto no cambia los datos. ¿Alguien puede ayudarme a depurar esto?
davy.ai
Parece que hay algunas cosas que deben ajustarse en el código proporcionado para procesar correctamente el archivo de datos en un formato por hora:
read_fwf()
oread_table()
.El primer carácter de cada línea del archivo de datos no es válido para un archivo CSV y puede causar problemas al leer los datos. Estos caracteres deben eliminarse del archivo antes de intentar leerlo.
El formato especificado en la función
pd.to_datetime()
no coincide con el formato de la marca de tiempo en el archivo de datos. En lugar deformat=r'%Y/%m/%d %H:%M'
, el formato debería serformat='$%Y-%m-%d %H:%M:%S'
para que coincida con el formato de marca de tiempo en el archivo de datos.La función
readFile
en realidad no se está llamando, ya que le faltan los paréntesis al final. Debe serreadFile()
en su lugar.Aquí hay una versión modificada del código que debería procesar correctamente el archivo de datos en un formato por hora:
Este código lee el archivo de datos utilizando el analizador
read_fwf()
y especifica el ancho de las columnas utilizando el parámetrocolspecs
. Luego elimina los caracteres no válidos de la columnaMarca de tiempo
y la convierte a formato de fecha y hora utilizando$%Y-%m-%d %H:%M:%S
como cadena de formato. Se utiliza el métodoresample()
para agregar los datos en intervalos por hora y calcular la media de cada columna. Por último, se llama a la función utilizandoreadFile()
para imprimir el DataFrame resultante.