Python pandas找出、删除重复的数据实例

Alice
Alice
发布时间:2026-10-12| 2人浏览过
原创

本文详解pandas中处理重复数据的两个核心方法:duplicated()与drop_duplicates()。通过DataFrame、Series及Index三种对象的示例,解析subset与keep参数的具体行为,并演示如何根据品牌或全部列识别重复项,以及如何直接删除重复数据以完成数据清洗。

前言

在使用pandas进行数据处理时,遇到数据重复的情况十分常见。关键步骤在于如何准确找出这些重复数据以分析其成因,或直接将其删除。pandas提供了便捷的工具:duplicated()用于识别,drop_duplicates()用于删除。

一、duplicated()

duplicated()方法适用于DataFrame、Series和Index三种对象。具体调用方式分别为pandas.DataFrame.duplicated、pandas.Series.duplicated和pandas.Index.duplicated。前两者的返回值是包含布尔值的Series,而Index.duplicated()返回的是包含布尔值的numpy.ndarray。

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

subset:默认为None,指定用于判断重复的列名或列名列表。

keep:默认为'first',定义如何处理重复项的标记方式。

  • first:除第一次出现的记录外,其余重复项标记为True。
  • last:除最后一次出现的记录外,其余重复项标记为True。
  • False:所有重复出现的项均标记为True,无论是否为首次出现。

Series.duplicated(keep='first')

keep:参数含义与DataFrame.duplicated中的keep一致。

Index.duplicated(keep='first')

keep:参数含义与DataFrame.duplicated中的keep一致。

例子:

import pandas as pd
df = pd.DataFrame({
    'brand': ['Yum Yum', 'Yum Yum', 'Indomie', 'Indomie', 'Indomie'],
    'style': ['cup', 'cup', 'cup', 'pack', 'pack'],
    'rating': [4, 4, 3.5, 15, 5]
})
df

brand style rating 0 Yum Yum cup 4.0 1 Yum Yum cup 4.0 2 Indomie cup 3.5 3 Indomie pack 15.0 4 Indomie pack 5.0

df.duplicated()

0 False 1 True 2 False 3 False 4 False dtype: bool

df.duplicated(keep='last')

0 True 1 False 2 False 3 False 4 False dtype: bool

df.duplicated(keep=False)

0 True 1 True 2 False 3 False 4 False dtype: bool

df.duplicated(subset=['brand'])

0 False 1 True 2 False 3 True 4 True dtype: bool

关于Index的重复标记:

df = df.set_index('brand')
df

style rating brand Yum Yum cup 4.0 Yum Yum cup 4.0 Indomie cup 3.5 Indomie pack 15.0 Indomie pack 5.0

df.index.duplicated()
array([False,  True, False,  True,  True])

二、drop_duplicates()

与duplicated()类似,drop_duplicates()直接执行删除重复值的操作。下文主要介绍其具有不同含义的参数。

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

  • subset:含义与duplicated()中的subset相同。
  • keep:含义与duplicated()中的keep相同。
  • inplace:与其他pandas函数的inplace参数一致,用于选择是修改现有数据还是返回新的DataFrame。

Series.drop_duplicates()相比Series.duplicated()多出一个inplace参数,含义同上。Index.drop_duplicates()与Index.duplicated()参数相同,此处不再赘述。以下是示例:

df = pd.DataFrame({
    'brand': ['Yum Yum', 'Yum Yum', 'Indomie', 'Indomie', 'Indomie'],
    'style': ['cup', 'cup', 'cup', 'pack', 'pack'],
    'rating': [4, 4, 3.5, 15, 5]
})
df

brand style rating 0 Yum Yum cup 4.0 1 Yum Yum cup 4.0 2 Indomie cup 3.5 3 Indomie pack 15.0 4 Indomie pack 5.0

df.drop_duplicates()

brand style rating 0 Yum Yum cup 4.0 2 Indomie cup 3.5 3 Indomie pack 15.0 4 Indomie pack 5.0

df.drop_duplicates(inplace = True)

df

brand style rating 0 Yum Yum cup 4.0 2 Indomie cup 3.5 3 Indomie pack 15.0 4 Indomie pack 5.0

总结

pandas拥有众多实用功能,但系统性地学习所有功能并不现实。最佳方式是在实际项目中不断发现、积累并记录这些技巧。

到此这篇关于Python pandas找出、删除重复数据的文章就介绍到这了,更多相关pandas找出删除重复数据内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。