下面我会详细讲解如何使用 Python 对 Excel 进行查重。
环境准备
- 安装 Python3。
- 安装 openpyxl 库,可以使用指令 “pip install openpyxl” 进行安装。
实现过程
第一步:读取 Excel 文件
使用 openpyxl 库中的 load_workbook 方法可以读取 Excel 文件,并得到一个 Workbook 对象。
from openpyxl import load_workbook
file_path = "example.xlsx"
wb = load_workbook(file_path)
sheet = wb.active
第二步:获取需要查重的列数据
找到需要查重的列数据,循环遍历这个列数据,并把每个单元格的值添加到一个列表中(可以使用列表推导式实现)。
col_duplicate = 2 # 假设需要查找第二列
data_list = [cell.value for cell in sheet.columns[col_duplicate-1]]
第三步:查找重复数据
使用 collections 模块中的 Counter 类可以快速统计各个元素出现的次数,根据其出现次数来判断是否有重复数据。
from collections import Counter
count_dict = Counter(data_list)
duplicate_items = [item for item, count in count_dict.items() if count > 1]
第四步:输出重复数据
找到重复数据后,可以将其输出到控制台或其他文件中。
if duplicate_items:
print("重复数据为:")
for item in duplicate_items:
print(item)
else:
print("没有重复数据")
示例说明
下面给出两个示例:
示例一
假设有一个 sales.xlsx 文件,包含以下数据:
A | B | C | |
---|---|---|---|
1 | Product | Sales | |
2 | A | 100 | |
3 | B | 200 | |
4 | C | 150 | |
5 | A | 80 | |
6 | D | 180 | 需要查找第二列重复项 |
使用上述代码,可以找到第二列中的重复项“100”和“80”。
示例二
假设有一个 students.xlsx 文件,包含以下数据:
A | B | C | D | |
---|---|---|---|---|
1 | 姓名 | 学号 | 性别 | 年龄 |
2 | 小明 | 001 | 男 | 18 |
3 | 小红 | 002 | 女 | 17 |
4 | 小黄 | 003 | 男 | 19 |
5 | 小明 | 004 | 女 | 20 |
6 | 小李 | 005 | 女 | 19 |
7 | 小张 | 006 | 男 | 20 |
8 | 小李 | 007 | 男 | 19 |
9 | 小黄 | 008 | 男 | 18 |
10 | 小王 | 009 | 女 | 18 |
现在需要查找第一列和第二列的重复项,可以在上述代码的基础上稍作修改,将第二列作为主键,并将第一列和第二列合并。
col_duplicate = 2 # 假设需要查找第二列
data_list = ["_".join([str(cell.value) for cell in row if cell.value]) for row in sheet.iter_rows(values_only=True)]
count_dict = Counter(data_list)
duplicate_items = [item.split("_")[1] for item, count in count_dict.items() if count > 1]
if duplicate_items:
print("重复数据为:")
for item in duplicate_items:
print(item)
else:
print("没有重复数据")
这样就可以找到重复的学号了,结果为“007”和“008”。