处理重复数据
程序员文章站
2022-03-06 21:33:29
...
我们获取的数据往往会存在一些重复数据,重复数据会对统计结果产生影响,也会误导决策人员的决策。
那么对DataFrame的重复项判断及删除重复项是对数据整理的基本要求。
-
判断数据是否有重复项 df.duplicated()
df.duplicated(self,subset=None,keep='first')
-
可通过 drop_duplicates() 移除重复项
df.drop_duplicates(subset=['A','B'],keep='first',inplace=True)
>>参数解释
-
subset:列标签或标签序列,可选,仅考虑某些列来标识重复项,默认情况下使用所有列
-
keep:{'first','last',False},默认为'first'
first: 只保留第一次出现的组合
last: 保留最后一次出现的组合
False: 将所有重复项标记为True
-
inplace:为True时表示直接在原来的DataFrame上删除重复项
>>>举例说明
d = {'Name':['Newton', 'Galilei', 'Einstein', 'Feynman', 'Newton', 'Maxwell', 'Galilei'],
'Age':[26, 30, 28, 28, 26, 39, 40],
'Score':[90, 80, 90, 100, 90, 70, 90]}
df = pd.DataFrame(d,columns=['Name','Age','Score'])
df
>>>df.duplicated()返回一组bool值,用于筛选重复值/非重复值,反映的是每行是否存在重复
df.duplicated()
>>>df.drop_duplicates()返回的是DataFrame,内容是duplicated返回数组中False的部分
df.drop_duplicates()
Duplicated()和drop_duplicates()方法是以默认的方式判断全部的列(上面的例子中是看三个变量Name、Age、Score是否都是重复出现)
-
也可以对特定列进行重复项判断
df.duplicated('Age',keep='last')
df.duplicated(['Age','Score'])
-
对特定列进行重复项移除
df.drop_duplicates('Age',keep='last')
>>>为了能够得到最直接的结果,可以使用any函数,该函数表示的是在多个条件判断中,只要一个条件为True,则any函数的结果就为True.正如结果所示,any函数的运用返回True值,说明该数据集是存在重复观测的
df.duplicated().any()
>>>查看每列的重复率
df[df.duplicated()].count()/df.count()