Preprocesamiento de datos de aprendizaje automático: combinación de tablas y visualización de datos

Limpieza de datos: combinación de tablas y agregar marca de tiempo

extraer el nombre del archivo

Leer el nombre del tipo de archivo especificado

nombre de archivo separado

names = os.listdir(path)
for name in names:
    index = name.rfind('.')
    name = name[:index]
    print(name)
    flag = name.split('_')

inserte la descripción de la imagen aquí
El formulario original se muestra en la figura anterior, sin encabezado.

Agregue columnas a la tabla y escriba la información especificada en las columnas

definir encabezado

fusionar tabla

总程序:
import os
import pandas as pd


path = os.getcwd()
names = os.listdir(path)
for name in names:
    index = name.rfind('.')
    csv = name[index:]
    if(csv =='.csv'):  #由于文件夹中有其他文件,进行筛选,否则转化为dataframe时报错
        df = pd.read_csv(name,header=None,names=['temp','tempavg','tempmax','tempmin'])# 注意这里增加表头的方式!!
#        df.columns=['temp','tempavg','tempmax','tempmin']  #增加表头,否则下一步添加列时不方便
        name_new = name[:index]
        flag = name_new.split('_')
        print(flag)
        time = flag[2]
        series = flag[1]
        df['time'] = time
        df['series'] = series
        df.to_csv(name,index=False)  #保存更改,注意不需要自动添加索引!

for name in names:
    index = name.rfind('.')
    csv = name[index:]
    if(csv =='.csv'):  #由于文件夹中有其他文件,进行筛选,否则转化为dataframe时报错
        print(csv)
        df = pd.read_csv(name)
        df.to_csv('allok.csv',encoding="utf_8_sig",header=False,index=False,mode='a+')

df = pd.read_csv('allok.csv',header=None,names=['temp','tempavg','tempmax','tempmin','time','series'])# 定义合并好的表格名字
df.to_csv('allok.csv',index=True)

problema de índice de índice

Los índices para las adiciones predeterminadas no están basados ​​en 1

df.index = np.arange(1, len(df))

Los datos exportados son demasiado largos para convertirlos en notación científica

inserte la descripción de la imagen aquí
Debido a que los datos exportados son demasiado largos, se ha convertido en una notación científica, lo que provocó el redondeo al fusionar las tablas más tarde... ¡
Así que agregue df['time'] = str(time)+'\t'
inserte la descripción de la imagen aquí
una solución exitosa!

Actualización de la tabla de fusión (expansión y fusión de filas y columnas de funciones)

Estilo de tabla original: (decenas de miles de tablas de este tipo deben fusionarse) inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
Después de la fusión, se convierte en una tabla total con valores medios y máximos separados de cada parámetro

path = os.getcwd()
names = os.listdir(path)
i = 0
for name in names:
    index = name.rfind('.')
    csv = name[index:]
    if(csv =='.csv'):  #由于文件夹中有其他文件,进行筛选,否则转化为dataframe时报错
        df = pd.read_csv(name)
        for index,row in df.iterrows():
            feature_name = row[0]
            feature_avg = feature_name+'_avg'
            feature_min = feature_name+'_min'
            feature_max = feature_name+'_max'
            df[feature_avg] = str(row[1])+'\t'
            df[feature_max] = str(row[2])+'\t'
            df[feature_min] = str(row[3])+'\t'#防止科学计数
        data =df.iloc[:1,4:] #定位表格
        if(i == 0):
            data.to_csv('gather_operate.csv',encoding="utf_8_sig",header =True,index = False ,mode='a+')
        else:
            data.to_csv('gather_operate.csv',encoding="utf_8_sig",header =False,index = False ,mode='a+')
        i=i+1

Extraiga el nombre del archivo en la tabla y guárdelo en el directorio principal

import os,sys
import xlwt

path = os.getcwd()
dirs = os.listdir(path)

write =xlwt.Workbook()
sheet = write.add_sheet('sheet_name')
i = 0

for file in dirs:
    if os.path.splitext(file)[1]=='.csv':
        sheet.write(i,0,file)
        i+=1
print(i)
write.save('../file_name.xls')

Aparecen caracteres chinos ilegibles cuando los pandas escriben un archivo en formato csv

df.to_csv("cnn_predict_result.csv",encoding="utf_8_sig")

Migrar encabezados de tabla al fusionar tablas en lotes

i = 0
for name in names:
    index = name.rfind('.')
    csv = name[index:]
    if(csv =='.csv'):  #由于文件夹中有其他文件,进行筛选,否则转化为dataframe时报错
        if(i==0):
            print("header")
            df = pd.read_csv(name)
            df.to_csv('特征值数据汇总.csv',encoding="utf_8_sig",header=True,index=False,mode='a+')#拼接第一个表格时保留表头
        else:
            print(csv)
            df = pd.read_csv(name)
            df.to_csv('特征值数据汇总.csv',encoding="utf_8_sig",header=False,index=False,mode='a+')
        i=i+1

La cadena de la tabla de salida de Pandas es demasiado larga para cambiarla a notación científica

El método de cambiar directamente el formato de celda en Internet, el archivo se cierra y luego se abre sigue siendo el mismo.
Más tarde, leí un artículo
df['time']=[' %i' % i for i in df[' time']] seleccione Agregar / t a la columna que se va a modificar. Según tengo entendido, debe agregar un carácter. Use
inserte la descripción de la imagen aquí
Excel para ordenar

Visualización

Datos en el dominio del tiempo de la vibración de las aspas del ventilador

Supongo que te gusta

Origin blog.csdn.net/weixin_54594861/article/details/120005349
Recomendado
Clasificación