如何使用python快速修改Excel表单中的大量数据
python修改Excel中的内容进阶加速版
前面有一篇文章讲到了使用python处理Excel中的数据文件,即修改Excel中的数据,但是那个版本的代码跑点小规模、小数据量的excel还行,一旦数据量达到万条级别,代码运行会非常慢!因此,特意对之前的代码进行了优化,大幅的提升了代码的运行速率。
1、修改思路
首先是使用库的区别:操作Excel数据一般常用的两个库是Openpyxl和Pandas,
- Openpyxl是一个用于读写Excel文件的Python库。它可以让你创建、修改和处理Excel文件,包括读取、写入、复制、剪切、替换等操作。Openpyxl可以处理xlsx、xlsm、xltx、xltm等Excel文件格式,并提供了丰富的API来进行数据操作和样式设置。
- Pandas是一个用于数据分析和数据处理的Python库。它提供了强大的数据结构和数据操作功能,特别是对于结构化数据的处理非常方便。Pandas可以读取和写入多种文件格式,包括Excel、CSV、JSON等。在数据处理方面,Pandas可以进行数据筛选、排序、聚合、合并等多种操作,并且支持处理缺失值和处理时间序列数据等常见问题。
总结来说,Openpyxl主要用于Excel文件的读写和操作,而Pandas则更适用于数据分析和数据处理。Openpyxl提供了更底层的操作,可以直接对Excel文件进行读写和样式设置,而Pandas则提供了更高层次的数据操作接口,方便处理和分析结构化数据。两者在功能和应用场景上有所区别,选择使用哪一个库取决于具体的需求和任务。
代码展示
使用openpyxl进行数据操作
import openpyxl# 打开Excel文件
workbook = openpyxl.load_workbook('变量信息.xlsx')# 选择要操作的工作表
worksheet = workbook.active# 遍历每一行
for row in worksheet.iter_rows():# 获取该行的第一个单元格的值cell_value = row[1].value# 如果该行的字符串以X开头,则将X替换为BJ1并拼接后续字符串,同时保存数据if cell_value and str(cell_value).startswith('X' or '1'):new_value = 'BJ1' + str(cell_value)[1:]row[1].value = new_valueworkbook.save('001.xlsx')print(new_value)if cell_value and str(cell_value).startswith('0'):new_value = 'BJ0' + str(cell_value)[1:]row[1].value = new_valueworkbook.save('001.xlsx')if cell_value and str(cell_value).startswith('9'):new_value = 'BJ9' + str(cell_value)[1:]row[1].value = new_valueworkbook.save('001.xlsx')# 否则遍历下一行else:continue
处理数据不会改变原先的数据格式和数据类型,但是运行速率较差
使用Pandas库进行数据修改
import pandas as pd# 读取Excel文件
df = pd.read_excel('KIC.xlsx')# 遍历每一行
for i, row in df.iterrows():# 获取该行的第一个单元格的值cell_value = row[1]# 如果该行的字符串以X或1开头,则将X或1替换为BJ1并拼接后续字符串if cell_value and str(cell_value).startswith(('X', '1')):new_value = 'BJ1' + str(cell_value)[1:]df.at[i, 'Column2'] = new_valueelif cell_value and str(cell_value).startswith('0'):new_value = 'BJ0' + str(cell_value)[1:]df.at[i, 'Column2'] = new_valueelif cell_value and str(cell_value).startswith('9'):new_value = 'BJ9' + str(cell_value)[1:]df.at[i, 'Column2'] = new_value# 将修改后的数据保存到新的Excel文件中
df.to_excel('KIC01.xlsx', index=False)
使用Pandas操作Excel数据运行速率非常快,但是会破坏Excel文件原先的文件格式
2、最终改进
要提升代码的运行速度,可以考虑以下几个方面的优化:
- 使用批量写入数据:在当前代码中,每次修改单元格后都会保存一次文件,这会导致频繁的磁盘操作,影响性能。可以将修改的数据先存储在一个临时的数据结构中,然后一次性写入到Excel文件中。
- 使用列表推导式或生成器表达式替代循环:使用列表推导式或生成器表达式可以提供更高效的迭代方式,避免使用显式的循环。这样可以减少迭代次数,提升代码的执行速度。
下面是修改后的代码示例:
import openpyxl# 打开Excel文件
workbook = openpyxl.load_workbook('KIC.xlsx')# 选择要操作的工作表
worksheet = workbook.active# 创建一个临时列表,用于存储修改后的数据
new_data = []# 遍历每一行
for row in worksheet.iter_rows():# 获取该行的第一个单元格的值cell_value = row[1].value# 如果该行的字符串以X开头,则将X替换为BJ1并拼接后续字符串,同时保存数据if cell_value and str(cell_value).startswith(('X', '1')):new_value = 'BJ1' + str(cell_value)[1:]elif cell_value and str(cell_value).startswith('0'):new_value = 'BJ0' + str(cell_value)[1:]elif cell_value and str(cell_value).startswith('9'):new_value = 'BJ9' + str(cell_value)[1:]else:# 如果不需要修改,则直接保存原始数据new_value = cell_value# 将修改后的数据添加到临时列表中new_data.append(new_value)# 将修改后的数据一次性写入Excel文件
for index, value in enumerate(new_data, start=1):worksheet.cell(row=index, column=2, value=value)# 保存修改后的Excel文件
workbook.save('KIC04.xlsx')
通过以上优化,代码将会更高效地执行,并提升运行速度。
相关文章:
如何使用python快速修改Excel表单中的大量数据
python修改Excel中的内容进阶加速版 前面有一篇文章讲到了使用python处理Excel中的数据文件,即修改Excel中的数据,但是那个版本的代码跑点小规模、小数据量的excel还行,一旦数据量达到万条级别,代码运行会非常慢!因此&…...
✔ ★【备战实习(面经+项目+算法)】 10.27学习
✔ ★【备战实习(面经项目算法)】 坚持完成每天必做如何找到好工作1. 科学的学习方法(专注!效率!记忆!心流!)2. 每天认真完成必做项,踏实学习技术 认真完成每天必做&…...
视频分辨率/帧率/码率选择参考
1. 视频码率与分辨率的参考表 1080*720的分辨率,用5000K左右; 720*576的分辨率,用3500K左右; 640*480的分辨率,用1500K左右。 2. 计算公式 基本算法:码率(kb…...
LeetCode75——Day18
文章目录 一、题目二、题解 一、题目 1732. Find the Highest Altitude There is a biker going on a road trip. The road trip consists of n 1 points at different altitudes. The biker starts his trip on point 0 with altitude equal 0. You are given an integer …...
Java NIO 高并发开发
Java NIO 高并发开发 前言 Java NIO(New I/O)相比于传统的Java I/O(BIO)在高并发开发方面具有以下优势: 非阻塞模式:Java NIO使用非阻塞的I/O操作,允许一个线程管理多个通道(Channe…...
8.循环神经网络
#pic_center R 1 R_1 R1 R 2 R^2 R2 目录 知识框架No.1 序列模型一、序列模型二、D2L代码注意点三、QA No.2 文本预处理一、D2L代码注意点二、QA No.3 语言模型一、语言模型二、D2L代码注意点三、QA No.4 循环神经网络 RNN一、RNN二、QA No.5 循环神经网络 RNN 的实现一、从零…...
[C++随想录] map和set的使用
map和set的使用 set初始化finderasecountlower_bound && upper_boundequal_ range mapinsert[ ]运算符 multiset && multimap set — — key模拟 map — — key_value模型 set 初始化 void set_test1() {set<int>s;s.insert(10);s.insert(12);s.insert(…...
公网IP怎么设置?公网ip有哪些优点和缺点?
随着互联网的普及,越来越多的人开始关注网络安全和隐私保护。其中,公网IP的设置成为了一个备受关注的话题。本文将详细介绍公网IP的设置方法以及公网IP的优点和缺点。 一、公网IP设置方法 1. 路由器设置 在家庭或企业网络中,路由器通常是最重…...
蓝桥杯第 2 场算法双周赛 第2题 铺地板【算法赛】c++ 数学思维
题目 铺地板https://www.lanqiao.cn/problems/5887/learning/?contest_id145 问题描述 小蓝家要装修了,小蓝爸爸买来了很多块(你可以理解为数量无限)2323 规格的地砖,小蓝家的地板是 nm 规格的,小蓝想问你…...
APScheduler-调度器 BackgroundScheduler
当你有主程序需要执行,让定时任务在后台执行时,可以用BackgroundScheduler from apscheduler.schedulers.background import BackgroundScheduler import time # 仅运行定时任务 scheduler BackgroundScheduler() # interval example, 间隔执行,…...
浅谈UI自动化测试
随着软件行业的不断发展,建立一个完善的自动化测试体系变得至关重要。目前,自动化测试主要涵盖接口自动化测试和UI自动化测试两个主要领域。就目前而言,企业在UI自动化测试方面的覆盖率仍然相对较低。 接口自动化测试可以模拟和执行应用程序…...
golang 工程组件 grpc-gateway—yaml定义http规则,和自定义实现网关路由
yaml定义http规则,和自定义实现网关路由 proto定义http规则总归是麻烦的,因为proto文件还是定义消息,grpc接口好一些。配置http规则有更好的方式。我们可以使用yaml文件定义接口的http规则。 同时有些接口不是只是让网关转发这么简单 有时需…...
在NLP中一下常见的任务,可以用作baseline;MRPC,CoLA,STS-B,RTE
1.MRPC(Microsoft Research Paraphrase Corpus)任务 是一个用于文本匹配和相似度判断的任务。在MRPC任务中,给定一对句子,模型需要判断它们是否是语义上等价的。MRPC任务的训练集和测试集由约5700对英语句子组成。每个句子对都有…...
【计算机网络笔记】Cookie技术
系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…...
在虚拟环境中,通过pip安装tensorflow
目录 激活python虚拟环境,更新pip 通过pip 安装tensorflow 确定python版本: 编辑安装tensorflow: 编辑 为什么使用pip安装tensorflow? 激活python虚拟环境,更新pip 命令为python -m pip install --upgrade pip 通过pip 安装tensorf…...
【Django restframework】django跨域问题,解决PUT/PATCH/DELETE用ajax请求无法提交数据的问题
【Django restframework】django跨域问题,解决PUT/PATCH/DELETE用ajax请求无法提交数据的问题 1 问题描述: 我用restframework(ModelSerializerGenericApiView)开发了一组符合RestFul接口标准的接口,这意味着它将支持客户端发来的GET、POST、…...
神经网络与深度学习第四章前馈神经网络习题解答
[习题4-1] 对于一个神经元 ,并使用梯度下降优化参数时,如果输入恒大于0,其收敛速度会比零均值化的输入更慢。 首先看一下CSDN的解释: 如果输入x恒大于0,使用sigmoid作为激活函数的神经元的输出值将会处于饱和状态&a…...
Go 语言操作 MongoDb
文章目录 连接数据库插入数据库插入一条数据批量插入数据 查询数据用 BSON 进行复合查询聚合查询 更新数据删除数据 连接数据库 package mainimport ("context""go.mongodb.org/mongo-driver/mongo""go.mongodb.org/mongo-driver/mongo/options"…...
UE4/5 竖排文字文本
方法一、使用多行文本组件 新建一个Widget Blueprint 添加Text 或者 Editable Text(Multi-Line) 、TextBox(Multi-Line) 组件。 添加文字,调整字号,调整成竖排文字。 在Wrapping (换行)面板中 : 勾选 Auto Wrap te…...
centos jdk 安装
1、oracle官网下载jdk8 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 2、楼主用的以前下载好的安装包jdk-8u111-linux-x64.gz。下载后使用工具如Xftp将安装包上传到/opt目录下,这里随便什么目录都行,并解压安装包。 c…...
D3KeyHelper:暗黑3玩家的智能按键助手,告别重复操作疲劳
D3KeyHelper:暗黑3玩家的智能按键助手,告别重复操作疲劳 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 你是否曾在《暗黑破坏…...
HarmonyOS ArkTS DateUtil 日期增减与日历计算完整指南
文章目录 背景一、引言二、日期增减方法详解使用示例 三、日历计算方法详解四、Demo 演示:日期增减结果展示五、Demo 演示:月历视图完整实现六、日历视图关键点解析为什么要填充前置空格?getLastDayOfMonth 的实现技巧 七、小结 背景 近期发现…...
Taotoken平台快速获取APIKey并开始你的第一个Python调用示例
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken平台快速获取APIKey并开始你的第一个Python调用示例 1. 准备工作:注册与登录 要开始使用Taotoken,…...
从RD、CS到WK:一文讲透SAR主流成像算法的演进与选型实战
从RD、CS到WK:SAR成像算法选型实战指南 当无人机掠过灾区上空,或卫星扫描地球表面时,合成孔径雷达(SAR)正通过电磁波穿透云层和黑暗,将地面信息转化为高分辨率图像。而决定图像质量的关键,在于工…...
独立开发者如何利用Taotoken Token Plan,以更低成本启动AI项目
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 独立开发者如何利用Taotoken Token Plan,以更低成本启动AI项目 对于独立开发者或小型团队而言,启动一个集成…...
航空发动机叶片三维扫描-诺斯顿
航空发动机叶片作为发动机的核心动力部件,其精度与性能直接决定发动机的推力、燃油效率及运行安全性,三维扫描技术作为航空制造领域的核心数字化手段,已广泛应用于叶片全生命周期的多个关键环节。其应用涵盖叶片研发设计阶段的逆向工程&#…...
3分钟搞定专业短视频!Pixelle-Video终极AI创作指南
3分钟搞定专业短视频!Pixelle-Video终极AI创作指南 【免费下载链接】Pixelle-Video 🚀 AI 全自动短视频引擎 | AI Fully Automated Short Video Engine 项目地址: https://gitcode.com/GitHub_Trending/pi/Pixelle-Video 还在为视频制作发愁吗&am…...
Lovable内部工具开发方法论(从需求黑洞到用户自发推广的完整闭环)
更多请点击: https://kaifayun.com 第一章:Lovable内部工具开发方法论(从需求黑洞到用户自发推广的完整闭环) Lovable 方法论的核心不是交付功能,而是培育“工具依赖感”——当一线工程师在凌晨三点调试线上问题时&am…...
开源吉他谱编辑神器TuxGuitar:从新手到专业编曲的完整指南
开源吉他谱编辑神器TuxGuitar:从新手到专业编曲的完整指南 【免费下载链接】tuxguitar Open source guitar tablature editor 项目地址: https://gitcode.com/gh_mirrors/tu/tuxguitar 想要免费创作专业的吉他乐谱吗?TuxGuitar这款开源吉他谱编辑…...
D3KeyHelper终极指南:5分钟掌握暗黑3技能自动化
D3KeyHelper终极指南:5分钟掌握暗黑3技能自动化 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper D3KeyHelper是一款专为《暗黑破坏神3》玩…...
