Python pandas找出、删除重复的数据实例
本文详解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找出删除重复数据内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









