pandas统计重复值次数的方法实现

追风的人
追风的人
发布时间:2026-10-11| 2人浏览过
原创

本文介绍在pandas中统计DataFrame重复值次数的两种核心方法。通过duplicated()标记重复行,结合布尔索引筛选并统计数量;或利用drop_duplicates()计算去重前后的行数差值。文章包含完整的代码示例与结果解析,帮助快速处理数据清洗中的重复项问题。

利用 duplicated 筛选并统计重复行

在 pandas 中,DataFrame.duplicated() 方法用于检测重复行。默认情况下,该方法会标记所有重复出现的行(包括第一次出现和后续重复)为 True,而仅保留第一次出现的行标记为 False。利用这一特性,我们可以通过布尔索引筛选出所有重复的行,并统计其数量。

首先,构建一个包含重复数据的示例 DataFrame:

from pandas import DataFrame

df = DataFrame({'key1':['a','a','b','b','a','a'],
        'key2':['one','two','one','two','one','one'],
        'data1':[1,2,3,2,1,1],
        })
# 打印数据框
print(df)
#  data1 key1 key2
# 0   1  a one
# 1   2  a two
# 2   3  b one
# 3   2  b two
# 4   1  a one
# 5   1  a one

接着,使用 duplicated() 筛选出重复行:

# 重复项
print(df[df.duplicated()])
#  data1 key1 key2
# 4   1  a one
# 5   1  a one

可以看到,索引为 4 和 5 的行被识别为重复项。若要统计这些重复行的数量,可直接对筛选后的 DataFrame 调用 count() 方法:

# 统计重复值
dup=df[df.duplicated()].count()
print(dup) # 最后两项重复
# data1  2
# key1   2
# key2   2

此外,若需去除重复项仅保留首次出现的记录,可使用取反操作 -df.duplicated():

# 去除重复项
nodup=df[-df.duplicated()]
print(nodup)
#  data1 key1 key2
# 0   1  a one
# 1   2  a two
# 2   3  b one
# 3   2  b two

通过行数差值计算重复元素个数

除了直接筛选,另一种常见的思路是通过比较去重前后的行数差值来统计重复次数。这种方法在关注特定列的重复情况时尤为实用。

核心逻辑如下:

  • duplicated() 方法标记非重复元素为 False,标记重复元素(非首次出现)为 True。
  • drop_duplicates() 删除指定列的相同元素,仅保留首次出现的记录。
  • shape[0] 用于获取 DataFrame 的行数。

具体实现可以通过遍历 duplicated() 的结果进行计数:

count = 0
for i in users_info['user_id'].duplicated():
  if i == True:
    count = count + 1
count

或者,更简洁地利用 drop_duplicates() 计算行数差:

users_info.shape[0] - users_info.drop_duplicates(['user_id']).shape[0]

该公式表示:总行数减去去重后的行数,即为重复出现的次数(不包括首次出现的记录)。

总结

在 pandas 中统计重复值次数,主要依赖 duplicated() 和 drop_duplicates() 两个核心方法。前者适合直接筛选并查看具体重复行,后者结合行数统计适合快速计算重复数量。根据实际需求选择合适的方法,可以有效提升数据清洗的效率。

以上就是 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 算法库。