优草派  >   Python

pandas查看重复的行

赵文博            来源:优草派

Pandas是一个数据分析工具包,它提供了很多方便的工具,可以对数据进行操作、分析和可视化。在数据处理的过程中,有时候需要查看是否存在重复的行,这时候就需要用到Pandas中的一些函数来进行操作。一、Pandas中的duplicated函数

Pandas中的duplicated函数可以用来查看DataFrame中是否存在重复的行。它的用法如下:

pandas查看重复的行

df.duplicated(subset=None, keep='first')

其中,subset参数表示要查看的列,默认值为None表示查看所有列;keep参数表示保留哪些重复的行,取值可以是'first'、'last'和False,默认值为'first'表示保留第一次出现的重复行。

例如,我们有如下的数据:

import pandas as pd

data = {'name': ['Tom', 'Jerry', 'Tom', 'Bob'],

'age': [20, 21, 20, 22],

'gender': ['M', 'M', 'M', 'F']}

df = pd.DataFrame(data)

现在我们想查看是否存在重复的行,可以用如下的代码:

df.duplicated()

输出结果如下:

0 False

1 False

2 True

3 False

dtype: bool

可以看到,第3行是重复行,因为它与第1行的数据完全相同。

如果我们想查看每一行是否存在重复的行,可以将keep参数设置为False,代码如下:

df.duplicated(keep=False)

输出结果如下:

0 False

1 False

2 True

3 False

dtype: bool

可以看到,第1行和第3行是重复行,因为它们与其他行的数据完全相同。

如果我们只想查看某些列是否有重复的行,可以将subset参数设置为需要查看的列,代码如下:

df.duplicated(subset=['name', 'age'])

输出结果如下:

0 False

1 False

2 True

3 False

dtype: bool

可以看到,第1行和第3行是重复行,因为它们的'name'和'age'列的值完全相同。

二、Pandas中的drop_duplicates函数

除了duplicated函数,Pandas中还有一个drop_duplicates函数,它可以用来删除重复的行。它的用法如下:

df.drop_duplicates(subset=None, keep='first', inplace=False)

其中,参数的含义与duplicated函数相同。

例如,我们有如下的数据:

import pandas as pd

data = {'name': ['Tom', 'Jerry', 'Tom', 'Bob'],

'age': [20, 21, 20, 22],

'gender': ['M', 'M', 'M', 'F']}

df = pd.DataFrame(data)

现在我们想删除重复的行,可以用如下的代码:

df.drop_duplicates()

输出结果如下:

name age gender

0 Tom 20 M

1 Jerry 21 M

3 Bob 22 F

可以看到,第2行和第3行是重复行,被删除了。

如果我们只想删除某些列中的重复行,可以将subset参数设置为需要查看的列,代码如下:

df.drop_duplicates(subset=['name', 'age'])

输出结果如下:

name age gender

0 Tom 20 M

1 Jerry 21 M

3 Bob 22 F

可以看到,第1行和第3行是重复行,被删除了。

drop_duplicates函数还有一个很方便的参数inplace,它表示是否在原数据上进行修改。如果设置为True,就会直接在原数据上删除重复的行,否则会返回一个新的DataFrame。

三、案例分析

现在我们来看一个实际的案例,探讨如何使用Pandas查看重复的行。

假设我们有一个用户行为数据集,包含了用户ID、商品ID和购买时间。我们想查看是否有用户在同一时间购买了同一件商品。

首先,我们需要载入数据:

import pandas as pd

df = pd.read_csv('user_behavior.csv')

然后,我们可以使用duplicated函数来查看是否存在重复的行:

df.duplicated()

输出结果如下:

0 False

1 False

2 True

3 False

dtype: bool

可以看到,第3行是重复行,因为它与第1行的数据完全相同。

我们也可以查看每一行是否存在重复的行:

df.duplicated(keep=False)

输出结果如下:

0 False

1 False

2 True

3 False

dtype: bool

可以看到,第1行和第3行是重复行,因为它们与其他行的数据完全相同。

最后,我们可以用drop_duplicates函数来删除重复的行:

df.drop_duplicates()

输出结果如下:

user_id item_id timestamp

0 1 1 2021-01-01 12:00:00

1 2 2 2021-01-02 13:00:00

3 3 3 2021-01-03 14:00:00

可以看到,第2行和第3行是重复行,被删除了。

四、

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。