Python3,使用openpyxl进行excel数据对比,反手一个赞。

news2025/1/11 5:40:46

openpyxl技能

  • 1、引言
  • 2、代码实战
    • 2.1 安装
    • 2.2 代码实战
      • 2.2.1 思路
      • 2.2.2 代码示例
  • 3、总结

1、引言

小屌丝:鱼哥,我最近在对搞数据对比,你有什么便捷的方法?
小鱼:斗胆问一句,数据量多少?
小屌丝:不多不多,几万条吧。
小鱼:确定几万条?
小屌丝:多了也不敢说啊。
小鱼:但说无妨
小屌丝:那这是你说的哈, 有一组数据是890W条数据
小鱼:奈斯,真棒,完美,超爽。
小屌丝:你很兴奋啊。
小鱼:不啊,我就喜欢看你被虐的样子。
小屌丝:别闹, 正儿八经的,相对比数据。
小鱼:好吧,那你说下,你想如何对比?
小屌丝:openpyxl怎么能先对比一列,然后根据这列为基准去对比该行?
小鱼:真棒,我会,但是我不想说
小屌丝:最近咱俩是不是没去洗澡了。
小鱼:额… 你有门票?
小屌丝:你告诉我怎么实现,我就有门票。
小鱼:君子一言。
小屌丝:澡堂见。
在这里插入图片描述

2、代码实战

2.1 安装

当然,涉及到第三方库, 老规矩,安装走起。

pip install openpyxl

然后就是等待着安装。

其它安装方式,直接看这两篇:

  • Python3,选择Python自动安装第三方库,从此跟pip说拜拜!!
  • Python3:我低调的只用一行代码,就导入Python所有库!

安装完成,我们就可以进行代码编写了。

2.2 代码实战

2.2.1 思路

在写代码前,我们要捋清楚思路, 总共分四步:

  • 1、读取excel表格数据,并将数据保存在一个列表中。
  • 2、调用 merge_cells 函数,将需要对比的两列数据作为参数传入,并设置参数 merge_cells 为 True,表示要对齐两列数据。
  • 3、循环遍历列表中的每一行数据,对比该行与对齐列的数据是否一致,如果不一致则记录下来。
  • 4、循环结束后,找到记录中不一致的行,将不一致的数据用新列表的形式保存起来即可。

捋清思路后,我们就开始下一步操作:撸代码。

2.2.2 代码示例

# -*- coding:utf-8 -*-
# @Time   : 2023-05-25
# @Author : Carl_DJ

'''
实现功能:
	使用openpyxl对excel表中的数据进行对比
'''
import openpyxl

# 读取excel表格数据,并将数据保存在一个列表中
data = []
with openpyxl.load_workbook('example.xlsx') as wb:
    sheet = wb['Sheet1']
    for row in sheet.iter_rows(min_row=2, values_only=True):
        row_data = []
        for cell in row:
            if cell.value is not None:
                row_data.append(cell.value)
        data.append(row_data)

# 对比需要对齐的两列数据
merged_data = []
for row_data in data:
    # 设置参数,两列数据对齐
    merge_cells = True
    for col_idx in range(len(row_data[0])):
        col_data = row_data[col_idx]
        for col_idx_2 in range(len(col_data)):
            if col_data[col_idx_2] != col_data[col_idx_2 + 1]:
                merge_cells = False
                break
    if merge_cells:
        # 循环遍历列表中的每一行数据,对比该行与对齐列的数据是否一致
        for cell_idx in range(len(col_data)):
            cell_data = col_data[cell_idx]
            for row_idx in range(len(merged_data)):
                if cell_data == merged_data[row_idx][cell_idx]:
                    # 如果一致,则将不一致的数据用新列表的形式保存起来
                    merged_data[row_idx][cell_idx] = [cell_data]
                    break

3、总结

今天主要使用openpyxl对excel表中的数据进行对比。
在实际的工作中,这种数据对比很常见,用好python,让你的工作量递减。
我是小鱼

  • CSDN 博客专家
  • 阿里云 专家博主
  • 51CTO 博客专家
  • 51认证讲师
  • 认证金牌面试官
  • 职场面试培训规划师

关注我,带你学习更多更有趣的Python知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/582452.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

lammps教程:Ovito计算RDF方法

本文介绍ovito分析rdf的方法以及参数设置。 专栏已经介绍过多种rdf的计算方法。 如:在in文件中计算rdf: lammps案例:液体平衡态rdf计算模拟练习 编程后处理计算rdf: lammps后处理:python ovito编程计算不同原子对…

Linux运维必备的13款实用工具,你用过吗?

本文介绍几款 Linux 运维比较实用的工具,希望对 Linux 管理员有所帮助。 1、查看进程占用带宽情况-Nethogs Nethogs 是一个终端下的网络流量监控工具可以直观的显示每个进程占用的带宽。 下载:http://sourceforge.net/projects/nethogs/files/nethogs…

Vue+SpringBoot,一款企业级的进销存管理系统,星标2.7k

介绍 Finer 进销存系统是一款面向中小企业的管理软件,基于十多年的中小企业管理经验,由ERP领域的资深专家分析设计;基于J2EE快速开发平台Jeecg-Boot开发,前后端分离架构SpringBoot2.x、Ant Design&Vue、Mybatis-plus、Shiro、…

从零开始搭建属于自己的物联网平台(二)实现基于订阅发布的消息总线

实现基于订阅发布的消息总线 往期链接实现的功能及形式功能设计及代码实现生产者使用redis实现生产者 消费者使用redis实现消费者 配套Subscribe注解实现BeanPostProcessor监听所有的bean创建 EventBus对象 往期链接 从零开始搭建属于自己的物联网平台(一&#xff…

测试类型(单元、集成、系统或手动测试)

测试类型(单元、集成、系统或手动测试) 单元测试 单元是系统的单个组件,例如类或单个方法。孤立地测试单元称为单元测试。 优点:速度快/易控/易写 缺点:缺乏现实性/无法捕获所有错误(例如与其他组件或服务的交互) 单元…

40. 组合总和 II

40. 组合总和 II 回溯 去重

springboot+vue+java旅行旅游景点酒店预订出行订票系统eaog5

线上旅行信息管理系统要求实现以下功能: a.景点管理,展示景点的基础信息,介绍等信息。 b.酒店管理,展示酒店的基础信息,介绍等信息。 c.评价管理,可以查看景点或酒店的相关评价信息,客户消费完,…

Vue3+express实现动态编辑element-plus组件tag标签和select下拉框

需求是利用element-plusd的组件标签tag去实现增加部门的种类,效果图如下: ①在系统设置中添加/删减对应的部门 ②在部门下拉框中弹出自己设置的部门 实现的思路是:通过系统设置中的部门设置增删部门,更新数据库中的部门设置字段…

【Vue2.0源码学习】虚拟DOM篇-Vue中的DOM-更新子节点

文章目录 1. 前言2. 更新子节点3. 创建子节点4. 删除子节点5. 更新子节点6. 移动子节点7. 回到源码8. 总结 1. 前言 在上一篇文章中,我们了解了Vue中的patch过程,即DOM-Diff算法。并且知道了在patch过程中基本会干三件事,分别是:…

小型流水线模型的制作

1. 功能说明 本文示例将实现R327a样机——一款5工序的小型流水线模型,包含铸锭送料、传送、搬运、模拟加工、码垛5个工序。 2. 结构说明 小型流水线主要是由铸锭送料结构、传送机构、搬运机构、模拟加工机构、码垛机构5部分组成。 3. 电子硬件 在这个示例中&#xf…

Qt文件系统源码分析—第七篇QFileSelector

深度 本文主要分析Windows平台,Mac、Linux暂不涉及 本文只分析到Win32 API/Windows Com组件/STL库函数层次,再下层代码不做探究 本文QT版本5.15.2 类关系图 QTemporaryFile继承QFile QFile、QSaveFile继承QFileDevice QFileDevice继承QIODevice Q…

【SpringMVC】| 一文带你搞定SpringMVC的@RequestMapping注解

目录 环境搭建 Request注解的功能 1. RequestMapping注解的位置 2、RequestMapping注解的【value】属性 3、RequestMapping注解的【method】属性 4、RequestMapping注解的【params】属性(了解) 5、RequestMapping注解的【headers】属性&#xff0…

Attention 和 Transformer

本文参考d2l,搭配知识点和代码,助力一口气搞懂Transformer,参考: chapter_attention-mechanisms-and-transformers https://d2l.ai/chapter_attention-mechanisms-and-transformers/index.html 目录如下: x.1 Queri…

项目复盘四步:怎么做才有成效?这些关键点不可忽略

在项目管理中,及时复盘是非常重要的,因为只有通过反思和分析,才能找到差距存在的原因。 复盘分析的第一步是回顾目标 因为目标是工作开展的关键。在执行项目的过程中,要始终朝着所设定的目标去努力实现。计划和现实会存在偏差&…

超详细Zookeeper+Kafka+ELK集群部署

一、Zookeeper 概述 1、Zookeeper 定义 Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。 2、Zookeeper 工作机制 Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理…

AutoCV第九课:ML基础

目录 矩阵运算前言1. 矩阵乘法和求导总结 矩阵运算 前言 手写AI推出的全新保姆级从零手写自动驾驶CV课程,链接。记录下个人学习笔记,仅供自己参考。 本次课程主要学习矩阵运算的基础,考虑使用矩阵来表达多个线性回归模型。 课程大纲可看下面…

多元回归预测 | Matlab龙格算法(RUN)优化最小二乘支持向量机回归预测,RUN-LSSVM回归预测,多变量输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab龙格算法(RUN)优化最小二乘支持向量机回归预测,RUN-LSSVM回归预测,多变量输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码 %--…

注意力机制(一)SE模块(Squeeze-and-Excitation Networks)论文总结和代码实现

Squeeze-and-Excitation Networks(压缩和激励网络) 论文地址:Squeeze-and-Excitation Networks 论文中文版:Squeeze-and-Excitation Networks_中文版 代码地址:GitHub - hujie-frank/SENet: Squeeze-and-Excitation Ne…

git 文件恢复与项目还原:008

1. 【文件恢复】:将文件恢复到上一次提交的状态 注意:新建且没有提交的文件无法使用文件恢复 命令: git checkout -- 文件名假如我们的一开始是这样的,这是没有报错的状态文件 然后我添加了一段内容, 比如我添加这段内…

做外贸算运费的时候需不需要多算一些

看到一个网友在一篇文章下留言说:客户算运费的时候需不需要多算一些 听公司老员工说给客户算运费要多加20% 这样合适吗 我个人感觉有点离谱。 那我们就这个话题,谈一谈运费是否要多加一些呢?为什么要多加一些? 首先,要…