这些天在做深度学习的时候,需要对原始数据进行预处理,所以写下了一些脚本用于对数据处理。源代码如下:
#!/usr/bin/python
# -*-coding: utf-8 -*-
import xlrd
import xlwt
import os
import numpy as npfilePath = u'E:\\one_year\\合并数据\\冷塔'
fileDir = os.listdir(filePath)
#files = []
#fileSavePath = u'E:\\one_year\\合并数据\\冷冻水泵\\5'
biaotou1 = ['湿球温度(℃)A', '1#冷却塔冷却水进水温度(℃)', '1#冷却塔1#风机变频反馈', '1#冷却塔2#风机变频反馈', '1#板换冷却水水流量(M3/H)', '2#板换冷却侧水流量(M3/H)','3#板换冷却水水流量(M3/H)', '4#板换冷却侧水流量(M3/H)','1#冷水机组冷却水流量(M3/H)', '2#冷水机组冷却水流量(M3/H)', '3#冷水机组冷却水流量(M3/H)', '4#冷水机组冷却水流量(M3/H)','1#冷却塔冷却水出水温度(℃)', '冷却塔组CT-R-1']
biaotou2 = ['湿球温度(℃)A', '2#冷却塔冷却水进水温度(℃)', '2#冷却塔1#风机变频反馈', '2#冷却塔2#风机变频反馈', '1#板换冷却水水流量(M3/H)', '2#板换冷却侧水流量(M3/H)','3#板换冷却水水流量(M3/H)', '4#板换冷却侧水流量(M3/H)','1#冷水机组冷却水流量(M3/H)', '2#冷水机组冷却水流量(M3/H)', '3#冷水机组冷却水流量(M3/H)', '4#冷水机组冷却水流量(M3/H)','2#冷却塔冷却水出水温度(℃)', '冷却塔组CT-R-2']
biaotou3 = ['湿球温度(℃)A', '3#冷却塔冷却水进水温度(℃)', '3#冷却塔1#风机变频反馈', '3#冷却塔2#风机变频反馈', '1#板换冷却水水流量(M3/H)', '2#板换冷却侧水流量(M3/H)','3#板换冷却水水流量(M3/H)', '4#板换冷却侧水流量(M3/H)','1#冷水机组冷却水流量(M3/H)', '2#冷水机组冷却水流量(M3/H)', '3#冷水机组冷却水流量(M3/H)', '4#冷水机组冷却水流量(M3/H)','3#冷却塔冷却水出水温度(℃)', '冷却塔组CT-R-3']
biaotou4 = ['湿球温度(℃)A', '4#冷却塔冷却水进水温度(℃)', '4#冷却塔1#风机变频反馈', '4#冷却塔2#风机变频反馈', '1#板换冷却水水流量(M3/H)', '2#板换冷却侧水流量(M3/H)','3#板换冷却水水流量(M3/H)', '4#板换冷却侧水流量(M3/H)','1#冷水机组冷却水流量(M3/H)', '2#冷水机组冷却水流量(M3/H)', '3#冷水机组冷却水流量(M3/H)', '4#冷水机组冷却水流量(M3/H)','4#冷却塔冷却水出水温度(℃)', '冷却塔组CT-R-4']
biaotou = []
biaotou.append(biaotou1)
biaotou.append(biaotou2)
biaotou.append(biaotou3)
biaotou.append(biaotou4)for filepath in fileDir: ###解决中文乱码问题objectFile = filePath + r'\\' + filepathlist1 = []list2 = []list3 = []list4 = []for fileName in os.listdir(objectFile):excelfile = objectFile + r'\\' + fileNameprint(fileName)if int(fileName[6:7]) == 1:list1.append(excelfile)if int(fileName[6:7]) == 2:list2.append(excelfile)if int(fileName[6:7]) == 3:list3.append(excelfile)if int(fileName[6:7]) == 4:list4.append(excelfile)listAll = []listAll.append(list1)listAll.append(list2)listAll.append(list3)listAll.append(list4)tower_num = 0for lis in listAll:tower_num = 1 + tower_nummatrix = [None] * len(lis)for i in range(len(lis)):fname = lis[i]print(fname)excelFile = xlrd.open_workbook(fname)try:data = excelFile.sheet_by_name("MySheet")except:print("在文件%s中没有找到sheet1,读取文件数据失败,要不你换换表格的名字?" % fname)nrows = data.nrowsncols = data.ncolsmatrix[i] = [0] * (nrows - 1)for m in range(nrows - 1):matrix[i][m] = ["0"] * ncolsflag = 0for j in range(1, nrows):for k in range(0, ncols):# print(str(data.cell(j, k).value))if (str(data.cell(j, k).value) == '\\N')or(str(data.cell(j, k).value) == (str(0.0))):flag = flag + 1breakif (str(data.cell(j, ncols - 1).value) == '\\N') or (float(data.cell(j, ncols - 1).value) < 2.0):flag = flag + 1breakif (str(data.cell(j, 2).value) == '\\N' or str(data.cell(j, 3).value) == '\\N'):flag = flag + 1breakif ((float(data.cell(j, 2).value) + float(data.cell(j, 3).value)) > 50.0)and (float(data.cell(j, ncols - 1).value) < 12.0):flag = flag + 1breakif ((float(data.cell(j, 2).value) + float(data.cell(j, 3).value)) < 10.0) and (float(data.cell(j, ncols - 1).value) > 3.0):flag = flag + 1breakif ((float(data.cell(j, 2).value) + float(data.cell(j, 3).value)) < 50.0) and (float(data.cell(j, ncols - 1).value) < 5.0):flag = flag + 1breakmatrix[i][j - 1 - flag][k] = data.cell(j, k).valuematrix[i] = np.delete(matrix[i], np.s_[(nrows - flag - 1):nrows], axis=0)#print(matrix)fileExcel = xlwt.Workbook()sheet = fileExcel.add_sheet("MySheet")# 下面是把表头写上for i in range(0, len(biaotou[tower_num - 1])):sheet.write(0, i, biaotou[tower_num - 1][i])# 求和前面的文件一共写了多少行zh = 1for i in range(len(lis)):for j in range(len(matrix[i])):for k in range(len(matrix[i][j])):sheet.write(zh, k, matrix[i][j][k])zh = zh + 1print("我已经将%d个文件合并成1个文件")fileSavePath = os.path.dirname(objectFile) + r'\\' +'0_'+ filepath + '月'print(fileSavePath + r'\\'+ str(tower_num) + "#lengta.xlsx")if not os.path.exists(fileSavePath): ###创建月份文件夹os.makedirs(fileSavePath)fileExcel.save(fileSavePath + r'\\'+ str(tower_num) + "#lengta.xlsx")
- 我发现我写脚本有一个特点:就是想把一个功能写成函数的形式,然后函数之间相互调用。我觉得我缺乏顺序思想,过程思想,简单的问题不要复杂化