一本正经胡说八道的猫
什么是去重呢?
简单来说,数据去重指的是删除重复数据。在一个数字文件集合中,找出重复的数据并将其删除,只保存唯一的数据单元。在我们的数据预处理过程中,这是一项我们经常需要进行的操作。
去重有哪些好处?
- 节省存储空间
- 提升写入性能
- 提高模型精度
Excel,有个删除重复项功能,但以我微薄的知识,发现只可以删除所有列重复的值才可以匹配删除,如果我定义,某只排查几列相同的值的重复行,保留其中一行数据,Excel就不太行了。
这时候pandas出手了。
在pandas中如何使用drop_duplicates进行去重
- 函数体及主要参数
函数体:
df.drop_duplicates(subset=['A','B'],keep='first',inplace=True)
主要参数:
subset: 输入要进行去重的列名,默认为None
keep: 可选参数有三个:‘first’、 ‘last’、 False, 默认值 ‘first’。其中,
first表示: 保留第一次出现的重复行,删除后面的重复行。
last表示: 删除重复项,保留最后一次出现。
False表示: 删除所有重复项。
inplace:布尔值,默认为False,是否直接在原数据上删除重复项或删除重复项后返回副本。
- 实例操作
import numpy as np
import pandas as pd
df = pd.DataFrame({'Country':[1,1,2,12,34,23,45,34,23,12,2,3,4,1],
'Income':[1,1,2,10000, 10000, 5000, 5002, 40000, 50000, 8000, 5000,3000,15666,1],
'Age':[1,1,2,50, 43, 34, 40, 25, 25, 45, 32,12,32,1],
'group':[1,1,2,'a','b','s','d','f','g','h','a','d','a',1]})
df

df.shape
(14, 4)
- 对整个数据表进行去重处理
df.drop_duplicates(inplace=True)
df

数据表默认使用‘first’参数 保留了第一次出现的重复行,因此,第1行和第13行数据被删除了。
注意了~
大家看数据表中的索引,在我们使用drop_duplicates删除重复行时,重复行相对应的索引值也是被默认删除掉的,也就是说,索引值已经发生了变化。
那我们该如何解决这个问题呢?
答案是要将索引重置,这样后面再次使用才不会因为索引不存在而报错。
重置索引的方法是:reset_index
reset_index,默认(drop = False),当我们指定(drop = True)时,则不会保留原来的index,会直接使用重置后的索引。
df.reset_index(drop=True)

- 对指定的数据列进行去重:
同时对'Age’列和'group'列进行去重,保留最后出现的一行
df.drop_duplicates(subset=['Age','group'],keep='last')
image.png
网友评论