Python标识EXCEL文件中的重复行

您所在的位置:网站首页 两个表格重复数据标记 Python标识EXCEL文件中的重复行

Python标识EXCEL文件中的重复行

2024-06-04 16:37| 来源: 网络整理| 查看: 265

本代码分别对指定目录(路径='G:\\Xct\\python')下的EXCEL文件:文件01.xlsx和文件02.xls进行重复行标记,这样便于在EXCEL中用“自动筛选”的功能将重复行和非重复行过滤出来,是要删除,还是要修改,随你便。之所以没有直接删除,是考虑到:实际工作中,删除数据还是要谨慎起事,看一眼再处理,总是好的。

大家如果需要,可自行修改如下代码中的路径和文件名为自己的。

代码主要涉及到pandas数据分析包各种方法的使用,还有collections容器集合的调用。

我是个python初学者,所以在代码中啰哩吧嗦地添加了许多注释,以帮助自己学习或复习,请大家不要见怪,其实去年注释,代码没那么长的。

还有,我英文不好,所以在代码中,能用中文的绝不用鸟语,请习惯英文的亲见谅。

如下是全部代码,有用得着的亲尽管复制去吧:

(记得改“路径”和“文件01”、“文件02”为自己的文件哦)

#在命令行下安装pandas库,如果没安装过的话 #pip install pandas ''' Pandas是python的一个数据分析包,是为解决数据分析任务而创建的。 它提供了大量能使我们快速便捷地处理数据的函数和方法。 ''' #切换工作目录 import os 路径='G:\\Xct\\python' os.chdir(路径) #定义要处理的文件 文件01='有重复的名单.xlsx' 文件02='不重复的名单.xlsx' '''代码1:标记同一张EXCEL表格中的重复行''' # 导入pandas库 import pandas as 数据分析包 # 加载数据,.read_excel(文件)方法用于打开EXCEL文件,支持xls,xlsx 数据文件 = 数据分析包.read_excel(文件01) #----------------------------------------------------- # 找出重复行 重复行 = 数据文件[数据文件.duplicated(keep='first')] #pandas.duplicated()用于查找和标记重复值。 # 它返回一个布尔值的数组,指示每个元素是否为重复项。 #语法: # pandas.duplicated(subset=None, keep=’first’) #subset: 可选,用于标识重复项的列名或列名列表。默认情况下,它比较整个行。 #keep: 可选,标记重复项的方式。如果为’first’,表示第一个出现的项 # 不会被标记为重复;如果为’last’,则最后出现的项不会被标记为重复; # 如果为False,则所有重复项都会标记为True。默认为’first’。 #----------------------------------------------------- # 标记重复行 数据文件.loc[重复行.index, '重复'] = '是' #pandas 的 .loc() 方法是一个用于选择行和列的函数, # 通过行索引 “Index” 中的具体值来取行数据(如取"Index"为"A"的行) # 在数据帧名称后面跟上 .loc[],然后在方括号内输入行和列的标签, # 标签可以是整数、字符串或布尔值。 #----------------------------------------------------- # 将标记后的数据保存到新的Excel文件 数据文件.to_excel('标记重复行.xlsx', index=False) # pandas 的.to_excel方法将整张工作表复制到新文件中, # 并按.loc()方法的规定进行标记(包含原表所有行、列,并新增一列, # 列名为“重复”,在该列中,将重复行标记 “是” # index=false为不写入索引 #------------------------------------------------------------------------------------------- '''代码2:标记不同表格的重复行''' # 导入pandas库 import pandas as 数据分析包 from collections import defaultdict #collections是python的标准库,是一个容器的集合。 #其中defaultdict:默认字典,用于解决使用字典时,如果key不存在, # defaultdict容器会自动返回我们预先设置的默认值。 # 注意:defaultdict传入的默认值可以是一个数据类型也可以是一个方法。 # 读取所有Excel文件的数据 数据字典 = defaultdict(list) #defaultdict(list)构建一个默认值为list的字典 for 文件名 in [文件01, 文件02]: #用循环分别读取两个EXCEL文件 数据文件 = 数据分析包.read_excel(文件名) #分别将两个文件作为元素写到“数据字典”中 数据字典[文件名] = 数据文件 # 找出所有表格中的重复行 重复行 = [] for 文件名, 数据文件 in 数据字典.items(): #字典.items()方法是python字典的内建函数,会返回列表 重复行.extend(数据文件[数据文件.duplicated(keep='first')]) #extend() 函数用于在列表末尾一次性追加另一个序列中的多个值 # 即:用新列表扩展原来的列表 #以上语句的作用是:将有重复行的EXCEL表格直接追加到“重复行” #列表中 # 对两个文件进行标记重复行 for 文件名, 数据文件 in 数据字典.items(): # 字典.items()方法是python字典的内建函数,会返回列表 # 上句的作用就是: # 用循环的方法分别从“数据字典”中读取两个EXCEL文件 #并赋值给变量“文件名”和“数据文件” 数据文件['重复'] = 数据分析包.Series('否', index=数据文件.index) #.Series方法由一组数据及与之相关的数据索引组成, # 即:一组带索引的数组 # 如果不指明索引,series会默认使用从0开始的数据标签。 #以上语句作用:在“数据文件”的末尾新增一列,列名为“重复”, #各行默认值为“否”(不重复) 数据文件.loc[数据文件.duplicated(keep='first'), '重复'] = '是' #如果该行是重复行,则在“重复”列标记为“是”(重复) # 将标记后的数据保存到新的Excel文件中,名字后面添加 '_做了重复标记.xlsx 数据文件.to_excel(文件名.split('.')[0] + '_做了重复标记.xlsx', index=False) ''' 请注意,这些代码只能根据Excel表格中的内容进行比较, 不能通过文件名或绝对路径来确定是否是相同的文件。 因此,在使用这些代码时,请确保文件名唯一并且文件内容正确。 另外,请使用合适的Excel文件路径或相对路径更新代码。 '''



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3