![Python+Office:轻松实现Python办公自动化](https://wfqqreader-1252317822.image.myqcloud.com/cover/834/40107834/b_40107834.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
4.1 重复值的处理
4.1.1 Excel重复值的处理
Excel是处理数据时使用比较频繁的软件之一,有时我们需要删除重复数据,只保留一条数据,这时最简单的方法就是使用Excel自带的“删除重复值”功能。
具体操作如下:首先选择全部数据,然后单击“数据”选项卡中的“删除重复值”按钮,弹出“删除重复值”对话框,如图4-1所示。单击“确定”按钮,Excel会删除所有重复数据,并弹出提示信息对话框,再单击“确定”按钮即可。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt006_1.jpg?sign=1739136278-1NWZ8U5DIdwZrcbXv8tuc1rHUxYDRNGQ-0-513d0a26edebe67e04e60812960cf98f)
图4-1 “删除重复值”对话框
4.1.2 Python重复值的检测
在介绍使用Pandas库处理重复数据之前,先创建一个关于4名学生学习成绩的数据集,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt006_2.jpg?sign=1739136278-mguSml6te9s04V0TZ1ttfNE0auQcJ1Vg-0-e403c8c4b00731f8ca955f1416da8723)
运行上述代码,创建的数据集如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt006_3.jpg?sign=1739136278-AmuMoXHGZ9aj2SV99EVthwgxaXJNRyes-0-16d78c22ec8c99fe770bdcd1a45a5a04)
索引的is_unique属性可以判断它的值是否是唯一的,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt006_4.jpg?sign=1739136278-emFQiwL3SmJLyYsEahWtL1TRD7E1o53j-0-aed5dc19f3f8479bce0391b9cd318de1)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt006_5.jpg?sign=1739136278-aaA4b1J5fqeaZg56MpZBHW83YHR6mb5s-0-23ccdada1e4c023b6b0b55cb9bbdb866)
判断重复数据记录,duplicated()函数的返回值是一个布尔型,表示各行是否是重复行,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt006_6.jpg?sign=1739136278-Q1KCuYraiNNiYc757D80430dp95XS34C-0-ecec3270984975c59d37f038d58e2eee)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt006_7.jpg?sign=1739136278-3R67somrOhqj1McpnDIxZv7AOhpRPxCK-0-0a5c282c3fc4ca2e707ee0406441367c)
4.1.3 Python重复值的处理
下面删除数据集中数值相同的记录,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt006_8.jpg?sign=1739136278-H6z6smF7aMRB7ok5G9Jmj66eRcXdEhp7-0-324e552134c2521790c0888866ec281c)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt006_9.jpg?sign=1739136278-Qf4Bs8bBFJcPzvYhcgK2i8s4FXeq6uPg-0-2b67634bbf16434b462ad2c3e1a34467)
在默认情况下,会判断全部列,也可以指定某一列或几列。例如,我们需要删除数据记录中某列数值相同的记录,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt006_10.jpg?sign=1739136278-QMbG8eYoCQQqSQsvotwGAVsx8XTla1ni-0-f134d1cbff4d4de254b7d73c2c6210ad)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt006_11.jpg?sign=1739136278-tVGblPH5akkNjk5f6fjFUv0Ol8bh9Kgw-0-9804ffbaa9bde865afda3541ed22030e)
还可以删除数据记录中某几列数值相同的记录,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt006_12.jpg?sign=1739136278-ZbARYZbO89v7w8vzyQIqRu8zxl0E3M8G-0-eb16f8620ae06abd00acec26b0cbab1b)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt006_13.jpg?sign=1739136278-Kp4EXRRpZb85rV1zurow00oI0OV09faO-0-3c2cc6d94b341d4cbdf34ff2b1813b7a)
duplicated()函数和drop_duplicates()函数默认保留的是第一次出现的值,但是也可以通过设置参数keep='last',保留最后一次出现的值,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt006_14.jpg?sign=1739136278-5I2ZXAn6ftMJ6HmzRtcrSotm4oHWxHJF-0-51661435c473913d5ce56435fcc8b076)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt006_15.jpg?sign=1739136278-pIkULpcFx6qwWdQH5U5ocqvJShYzoWMS-0-d7a329d1496d0ced2ac9edd8480a65ce)
例如,删除score数据集中李四考试成绩中的重复值,并保留最后一次出现的值,由于数学和化学的成绩都是90分,所以只保留化学成绩,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt006_16.jpg?sign=1739136278-6nnlNyBBN6rf3JOdJby2jtBIpW2252c2-0-09cd27f2e8af1daba18e3b2f634895e3)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt006_17.jpg?sign=1739136278-U77zQEJZMUm4YjRsYQDLXmZJU7OtydK9-0-990ca44cbe585c29548d6bf34ae3ef55)