python遍历excel文件并保存为excel文件

匿名 (未验证) 提交于 2019-12-02 22:51:30

            这些天在做深度学习的时候,需要对原始数据进行预处理,所以写下了一些脚本用于对数据处理。源代码如下:

#!/usr/bin/python # -*-coding: utf-8 -*- import xlrd import xlwt import os import numpy as np  filePath = 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'\\' + filepath     list1 = []     list2 = []     list3 = []     list4 = []     for fileName in os.listdir(objectFile):         excelfile = objectFile  + r'\\' + fileName         print(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 = 0     for lis in listAll:         tower_num = 1 + tower_num         matrix = [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.nrows             ncols = data.ncols             matrix[i] = [0] * (nrows - 1)             for m in range(nrows - 1):                 matrix[i][m] = ["0"] * ncols             flag = 0             for 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 + 1                         break                     if (str(data.cell(j, ncols - 1).value) == '\\N') or (float(data.cell(j, ncols - 1).value) < 2.0):                         flag = flag + 1                         break                     if (str(data.cell(j, 2).value) == '\\N' or str(data.cell(j, 3).value) == '\\N'):                         flag = flag + 1                         break                     if ((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 + 1                         break                     if ((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 + 1                         break                     if ((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 + 1                         break                     matrix[i][j - 1 - flag][k] = data.cell(j, k).value             matrix[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 = 1         for 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 + 1         print("我已经将%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")
  1.        我发现我写脚本有一个特点:就是想把一个功能写成函数的形式,然后函数之间相互调用。我觉得我缺乏顺序思想,过程思想,简单的问题不要复杂化
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!