持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第23天,点击查看活动详情
1.什么是重复数据?
通常情况下,在对第一次处理的数据或连接多个数据等操作时,都会对其中是否包含重复数据进行确认。与离群值一样,重复数据也会由于各种原因存在于数据中。即可能是输入错误导致的重复数据,也可能是单纯的数据存在重复的情况。包含同样数值的数据在机器学习的建模或数据分析时会带来错误,因此处理重复数据也需要十分谨慎。
2.DataFrame对象的创建
import numpy as np
import pandas as pd
val=[[8,7,6,],[8,7,6],[8,7,6]]
df=pd.DataFrame(val,index=list('edf'),columns=list('abc'))
df
接下来,将使用duplicated方法对重复数据进行检测。duplicated方法会将重复行返回为True,其余行返回为False的bool类型值的Series对象。Series对象的索引标签分配的是原始DataFrame对象的索引标签。默认值first会将第一次出现的重复数据之外的重复数据作为True返回。
df.duplicated(keep='first')
3.subset参数
subset参数只会使用特定列的值对重复数据进行检测。下面将使用loc属性修改DataFrame对象df的列b行f的值,并对subset参数的操作进行确认。在keep参数中指定False,会返回将所有的重复数据表示为True的Series对象。我们可以将其跟duplicated方法进行比对
df.loc['f','b']=5
df.duplicated(subset='a',keep=False)
df.duplicated(subset='b',keep=False)
从下列结果可以看到,由于列a和列b的索引标签e与d行的值是重复的,因此返回的是True,而f行并不是重复值,因此返回的是False.
4.重复数据的删除
在执行处理时,必须考虑是否将重复数据删除。通常情况下,由于数据的输入错误而产生的重复数据是要删除的,但是还存在那种,不是输入错误,只是单纯地存在重复数据的情况。
与duplicated方法一样,drop_dulicated方法也提供了keep参数。drop_duplicates方法会返回将重复数据删除后的DataFrame对象。e行和d行的值是重复的,如果指定keep=‘first’.则只会将d行从DataFrame中删除。
df.drop_duplicates(keep='last')
df.drop_duplicates(keep=False)
4.1drop_duplicates方法的subset参数
Series对象和Index对象也提供了drop_duplicates方法。
df['b'].drop_duplicates(keep='first')
对于第一次处理的数据需要确认其中是否包含重复数据,而重复数据的处理方法则需要慎重考虑。