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知识。