标签:Python与Excel,pandas
在Excel中,我们可以通过单击功能区“数据”选项卡上的“删除重复项”按钮“轻松”删除表中的重复项。确实很容易!然而,当数据集太大,或者电子表格中有公式时,这项操作有时会变得很慢。因此,我们将探讨如何使用Python从数据表中删除重复项,它超级简单、快速、灵活。
图1
准备用于演示的数据框架
可以到完美Excel社群下载示例Excel电子表格以便于进行后续操作。首先,让我们将电子表格加载到Python中。
import pandas as pd
df = pd.read_excel(‘D:\用户-1.xlsx’)
图2
快速观察上述小表格:
删除重复值
根据你试图实现的目标,我们可以使用不同的方法删除重复项。最常见的两种情况是:从整个表中删除重复项或从列中查找唯一值。我们将了解如何使用不同的技术处理这两种情况。
从整个表中删除重复项
Python提供了一个方法.drop_duplicates()可以帮助我们轻松删除重复项!此方法包含以下参数:
图3
在上面的代码中,我们选择不传递任何参数,这意味着我们检查所有列是否存在重复项。唯一完全重复的记录是记录#5,它被丢弃了。因此,保留了第一个重复的值。
图4
这一次,我们输入了一个列名“用户姓名”,并告诉pandas保留最后一个的重复值。现在pandas将在“用户姓名”列中检查重复项,并相应地删除它们。记录#1和3被删除,因为它们是该列中的第一个重复值。
现在让我们检查原始数据框架。它没有改变!这是因为我们将参数inplace留空,默认情况下其值为False。如果我们指定inplace=True,那么原始的df将替换为新的数据框架,并删除重复项。
图5
在列表或数据表列中查找唯一值
有时,我们希望在数据框架列的列表中查找唯一值。在这种情况下,我们不会使用drop_duplicate()。我的意思是,虽然我们可以这样做,但是有更好的方法找到唯一值。
pandas Series vs pandas数据框架
对于Excel用户来说,很容易记住他们之间的差异。数据框架是一个表或工作表,而pandas Series是该表/表中的一列。换句话说,数据框架由各种系列组成。
pandas Series方法.unique()
pandas Series有一个.unique()方法;然而,pandas Dataframe没有此方法。
当我们对pandas Series对象调用.unique()时,它将返回该列中唯一元素的列表。
图6
在pandas Dataframe上调用.unique()时,我们将收到一条错误消息,因为数据框架上上不存在此方法!
图7
Python集
获取唯一值的另一种方法是使用Python中的数据结构set,集(set)基本上是一组唯一项的集合。由于集只包含唯一项,如果我们将重复项传递到集中,这些重复项将自动删除。
图8
下面是一个示例。
我们的列(或pandas Series)包含两个重复值,”Mary Jane”和”Jean Grey”。通过将该列转换为一个集,我们可以有效地删除重复项!