pandas duplicated函数(pandas处理重复值)41

作者 : 慕源网 本文共2307个字,预计阅读时间需要6分钟 发布时间: 2021-12-9 共266人阅读

pandas duplicated函数

在本文中,我们将讨论一个非常流行的问题,即如何在 Pandas dataframe中查找和删除重复值/记录。Python 中的 Pandas 模块为我们提供了一些内置函数,例如用于查找重复值的 dataframe.duplicated() 和用于删除重复值的 dataframe.drop_duplicates()。我们将在后续章节中详细讨论这些功能以及其他功能。

本文是Python Pandas教程系列的一部分,您可以点击Python Pandas使用教程查看所有。

pandas duplicated函数(pandas处理重复值)41

语法和参数:

dataframe.duplicated() 函数的基本语法如下:

dataframe.duplicated(subset = ‘column_name’, keep = {‘last’, ‘first’, ‘false’)
参数: subse : 列标签或标签序列,可选

仅考虑某些列来标识重复项,默认情况下使用所有列

keep : {'first','last',False},默认为’first'

first:将重复项标记True为第一次出现的除外。

last:将重复项标记True为最后一次除外。

False:将所有重复项标记为True。

返回 Series

subse参数是可选的。了解了用于查找重复记录的 dataframe.duplicated() 函数后,让我们讨论 dataframe.drop_duplicates() 以删除dataframe中的重复值。

dataframe.drop_duplicates() 函数的基本语法类似于duplicated() 函数。它可以写成如下:

dataframe.drop_duplicates(subset = ‘column_name’, keep =  {‘last’, ‘first’, ‘false’}, inplace = {‘True’, ‘False’})

例子

现在我们已经讨论了用于处理 Pandas 中重复记录的函数的语法和参数。但是没有一些实际的例子,学习是不完整的,所以让我们根据这些功能尝试一些例子。为此,我们必须首先创建一个包含重复记录的dataframe。您可以为此使用以下dataframe。

代码:

#importing pandas
import pandas as pd
#input data
data = {'Country': ['India','India','USA','USA','UK','Germany','India','Germany', 'USA', 'China', 'Japan'],
'Personality': ['Sachin Tendulkar','Sania Mirza','Serena Williams','Venus Willians',
'Morgan Freeman','Michael Schumacher','Priyanka Chopra','Michael Schumacher',
'Serena Williams','Jack Ma','Sakamoto Ryoma'] }
#create a dataframe from the data
df = pd.DataFrame(data, columns = ['Country','Personality'])
#print dataframe
df

给定代码片段的输出将是一个名为“df”的数据框,如下所示:

pandas duplicated函数(pandas处理重复值)41

dataframe的重复值

我们可以清楚地看到dataframe中有几个重复的值。

1. pandas处理重复值

为了在 Pandas 中找到重复值,我们使用 df.duplicated() 函数。该函数返回一系列布尔值,描述记录是否重复。

df.duplicated()

pandas duplicated函数(pandas处理重复值)41

 

默认情况下,它将整个记录视为输入,并且值根据其随后出现的情况被标记为重复项,即第一个值不标记为重复项,但之后的其他值标记为重复项。

2. 查找特定列中的重复值

在前面的例子中,我们使用了不带任何参数的duplicated() 函数。在这里,我们使用带有subse参数的函数来查找国家/地区列中的重复值。

df.duplicated(subset = 'Country')

pandas duplicated函数(pandas处理重复值)41

 

3. 在特定列中查找重复值并将最后一次出现标记为不重复。

df.duplicated(subset = 'Country', keep = 'last')

pandas duplicated函数(pandas处理重复值)41

4. 查找整个数据集中重复记录的数量。

为了找到值的总数,我们可以对duplicated()函数得到的结果进行求和运算,如下所示。

df.duplicated().sum()

pandas duplicated函数(pandas处理重复值)41

 

 5. 查找特定列中重复值的总数。

df.duplicated(subset='Country').sum()

pandas duplicated函数(pandas处理重复值)41

6. pandas drop_duplicates的用法

df.drop_duplicates(keep = 'first')

pandas duplicated函数(pandas处理重复值)41

 

该函数已成功删除记录号。7 和 8 是重复的。我们应该注意 drop_duplicates() 函数默认情况下不会进行就地更改。也就是说,不会从原始dataframe中删除记录。从下图可以看出。

df

pandas duplicated函数(pandas处理重复值)41

 

原始dataframe与重复记录相同。为了保存对原始dataframe的更改,我们必须使用一个 inplace 参数,如下一个示例所示。

7. 就地删除数据集中的重复记录。

df.drop_duplicates(keep = 'first', inplace = True)
df

pandas duplicated函数(pandas处理重复值)41

结论

对于大型数据集,查找和删除重复值似乎是一项艰巨的任务。但是 Pandas 通过为我们提供一些内置函数,例如用于查找重复值的 dataframe.duplicated() 和用于删除重复值的 dataframe.drop_duplicates() ,让pandas处理重复值这件事变得简单


慕源网 » pandas duplicated函数(pandas处理重复值)41

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录