用python对excel查重

  • Post category:Python

下面我会详细讲解如何使用 Python 对 Excel 进行查重。

环境准备

  1. 安装 Python3。
  2. 安装 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”。