Python标识EXCEL文件中的重复行

本代码分别对指定目录(路径='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文件路径或相对路径更新代码。
'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

将出东方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值