一次处理excel中,原计划是借助excel中自带的工具进行处理,然而看到需要处理的列要达到30+,后来放弃了,用Python处理或许是一个不错的选择。

需求:

表格中每一列数据都是一个随机值,但是已知该列对应的标准区间,eg:20<x<40是正常区间,超出这一区间就是非正常区间,需要将落在正常区间的数据标记为0,落在非正常区间的数据标记为1。另外还有一种情况,eg:x<50是正常区间,超过50就是非法区间。

我的数据字典放在了sheet2中,首先去读取sheet2中的标准:

def readSheet2(ExcelFullName):
wb = load_workbook(ExcelFullName) sheets = wb.sheetnames
print (sheets)
mysheet = sheets[1] #获取sheet2的信息
ws = wb[mysheet] for i in range(2,29):
mydata[ws.cell(row=i, column=1).value] = ws.cell(row=i, column=3).value print (mydata)

读出的标准放在了字典中:

{'AST': '15-40', 'ALT': '9-50', 'GGT': '10-60', 'ALP': '45-125', 'ALB': '40-55', 'TB': '3.5-23.5', 'DB': '0.5-6.5', 'IB': '1.0-17', 'XT': '3.9-6.3', 'GYSZ': '0.4-1.8', 'DGC': '3.6-6.2', 'GMDZDB': '0.8-1.5', 'DMDZDB': '0.5-3.36', 'PT': '11.0-14.0', 'NXMYHDD': '70-50', 'WBC': '3.5-9.5', 'RBC': '4.3-5.8', 'HB': '130-175', 'PLT': '125-350', 'BDL': '0-20', 'HBsAg': '<1.0', 'HBsAb': '<10.0', 'HBeAg': '<1.0', 'HBeAb': '>1.0', 'HBcAb': '>1.0', 'AFP': '0-20', 'PIVK': '0-40'}

使用上面读出的标准对sheet1的数据进行处理。

# 按照sheet2的信息逐列处理sheet1
def readSheet1(ExcelFullName):
wb = load_workbook(ExcelFullName) sheets = wb.sheetnames
mysheet = sheets[0] # 获取sheet1的信息
ws = wb[mysheet] for i in range(27, 56):
if ws.cell(row=1, column=i).value in mydata:
#print(i)
print(ws.cell(row=1, column=i).value)
str = mydata[ws.cell(row=1, column=i).value]
if str[0]!='<' and str[0]!='>':
str = mydata[ws.cell(row=1, column=i).value]
str1 = str.split('-')
a = float(str1[0])
b = float(str1[1])
#c = a + b
#print(c)
for j in range(2,218):
if ws.cell(row=j, column=i).value != None:
if float(ws.cell(row=j, column=i).value) >=a and float(ws.cell(row=j, column=i).value) <=b:
ws.cell(row=j, column=i).value = 0
else:
ws.cell(row=j, column=i).value = 1 else:
op = str[0]
opnum = float(str[1:])
#print(opnum)
if op == '<':
for j in range(2, 218):
if ws.cell(row=j, column=i).value != None:
if float(ws.cell(row=j, column=i).value) < opnum:
ws.cell(row=j, column=i).value = 0
else:
ws.cell(row=j, column=i).value = 1
else:
for j in range(2, 218):
if ws.cell(row=j, column=i).value != None:
if float(ws.cell(row=j, column=i).value) > opnum:
ws.cell(row=j, column=i).value = 0
else:
ws.cell(row=j, column=i).value = 1 wb.save('balances.xlsx')

上述是两种处理方式,最后将数据保存在balances.xlsx文件中。

主函数如下:

if __name__ == '__main__':

    # 需进行两次读excel与一次写excel
excelPath = "C:/Users/Halo/Desktop/ml/"
excelName = "info.xlsx"
ExcelFullName= os.path.join(excelPath,excelName) # 存储sheet2中的信息,用于后续比较
# mydata = {'AST': '15-40', 'ALT': '9-50', 'GGT': '10-60', 'ALP': '45-125', 'ALB': '40-55', 'TB': '3.5-23.5', 'DB': '0.5-6.5', 'IB': '1.0-17', 'XT': '3.9-6.3', 'GYSZ': '0.4-1.8', 'DGC': '3.6-6.2', 'GMDZDB': '0.8-1.5', 'DMDZDB': '0.5-3.36', 'PT': '11.0-14.0', 'NXMYHDD': '70-50', 'WBC': '3.5-9.5', 'RBC': '4.3-5.8', 'HB': '130-175', 'PLT': '125-350', 'BDL': '0-20', 'HBsAg': '<1.0', 'HBsAb': '<10.0', 'HBeAg': '<1.0', 'HBeAb': '>1.0', 'HBcAb': '>1.0', 'AFP': '0-20', 'PIVK': '0-40'} # 1.读取sheet2中需要处理的参数
readSheet2(ExcelFullName) # 2.读取根据Sheet2中内容找到Sheet1中对应的列中的内容并进行处理
readSheet1(ExcelFullName)

后续再进行补充。

借助openpyxl处理excel的更多相关文章

  1. python openpyxl 操作 excel

    初识与安装 Openpyxl is a Python library for reading and writing Excel 2010 xlsx/xlsm/xltx/xltm files. 安装 ...

  2. Python使用openpyxl读写excel文件

    Python使用openpyxl读写excel文件 这是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装.如果使用Aanconda,应该自带了. 读取E ...

  3. python用openpyxl操作excel

    python操作excel方法 1)自身有Win32 COM操作office但讲不清楚,可能不支持夸平台,linux是否能用不清楚,其他有专业处理模块,如下 2)xlrd:(读excel)表,xlrd ...

  4. python使用 openpyxl包 excel读取与写入

    '''### 写入操作 ###from openpyxl import Workbook#实例化对象wb=Workbook()#创建表ws1=wb.create_sheet('work',0) #默认 ...

  5. 用python从符合一定格式的txt文档中逐行读取数据并按一定规则写入excel(openpyxl支持Excel 2007 .xlsx格式)

    前几天接到一个任务,从gerrit上通过ssh命令获取一些commit相关的数据到文本文档中,随后将这些数据存入Excel中.数据格式如下图所示 观察上图可知,存在文本文档中的数据符合一定的格式,通过 ...

  6. 【转发】Python使用openpyxl读写excel文件

    Python使用openpyxl读写excel文件 这是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装.如果使用Aanconda,应该自带了. 读取E ...

  7. Python3使用openpyxl读写Excel文件

    Python中常用的操作Excel的三方包有xlrd,xlwt和openpyxl等,xlrd支持读取.xls和.xlsx格式的Excel文件,只支持读取,不支持写入.xlwt只支持写入.xls格式的文 ...

  8. Python 使用openpyxl导出Excel表格的时候,使用save()保存到指定路径

    在使用openpyxl导出Excel表格的使用,如何指定导出的路径呢. 使用sava(filename),会保存到当前执行文件的路径下. 使用sava("/tmp/{}.xlsx" ...

  9. 使用openpyxl创建excel,设置不显示网格线

    最近在学openpyxl,想设置excel不显示网格线,试了好多种方法都不行,最后发现可以通过修改views文件来实现. 文件路径:虚拟目录\Lib\site-packages\openpyxl\wo ...

随机推荐

  1. 【大数据作业十】分布式文件系统HDFS 练习

    作业要求来自: https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3292 利用Shell命令与HDFS进行交互 以”./bin/dfs ...

  2. a标签伪类选择器+过度模块

    a标签的伪类选择器 1.什么是a标签的伪类选择器?a标签的伪类选择器是专门用来修改a标签不同状态的样式的. 2.格式: 1):link 修改从未被访问过状态下的样式. 2):visited 修改被访问 ...

  3. Python plot_surface(Axes3D)方法:绘制3D图形

    3D 图形需要的数据与等高线图基本相同:X.Y 数据决定坐标点,Z 轴数据决定 X.Y 坐标点对应的高度.与等高线图使用等高线来代表高度不同,3D 图形将会以更直观的形式来表示高度. 为了绘制 3D ...

  4. Unity3D特效入门教学视频教程合集

    目录 大小25GB,Mp4格式,语言:中文 扫码时备注或说明中留下邮箱 付款后如未回复请至https://shop135452397.taobao.com/ 联系店主

  5. 还在用难用的AssetBundle?快来运用Unity新的可寻址资源系统,助力游戏开发

    Unity Addressables可寻址资源系统是一个强大的Unity资源包,它能够帮助解决游戏开发中最重要的一些挑战:高效率和轻松的内容管理. 在管理游戏资源时,往往很难维持好的标准,从而避免让项 ...

  6. Vue.js实现tab切换效果

    利用Vue实现简易tab切换效果 1.1 在我们平时浏览网站的时候,经常看到的特效有图片轮播.导航子菜单的隐藏.tab标签的切换等等.这段时间学习了vue后,开始要写出一些简单的特效. 1.2 实现思 ...

  7. CentOS7.4安装ipython

    摘自:https://www.jianshu.com/p/aa93a0341c82 使用pip3安装ipython及其依赖包:pip3 install ipython在 .bashrc文件中添加环境变 ...

  8. Unreal Engine 4 中的 UI 优化技巧

    转自:https://mp.weixin.qq.com/s/bybEHM9tF-jBPxxqXfrPOQ## Unreal Open Day 2017 活动上 Epic Games 开发者支持工程师郭 ...

  9. Navicat 8 For Mysql 数据库的导出与加载

    方便断断续续的数据库实验课,避免每次都要重新写入数据,可使用Navicat的数据库导出功能 数据库的导出 1.选择要导出的数据库,右键点击“转存SQL文件”选项. 2.填写文件名字,选择位置,点击“保 ...

  10. KMP操作大全与kuangbin kmp套题题解

    先搬运,比赛后整理 https://blog.csdn.net/vaeloverforever/article/details/82024957