pandas统计重复值次数的方法实现
本文介绍在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 数据清洗的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









