数据清洗:重复值识别和处理方法

数据清洗:重复值识别和处理方法,第1张

重复值识别

数据集中的重复值包括以下两种情况:

  • 数据值完全相同的多条数据记录;
  • 数据主体相同但匹配到的唯一属性值不同。

示例如下:

# 导入pandas库
import pandas as pd  

# 生成重复数据,data1和data3完全相同
data1 = ['a', 3]
data2 = ['b', 2]
data3 = ['a', 3]
data4 = ['c', 2]
df = pd.DataFrame([data1, data2, data3, data4], columns=['col1', 'col2'])
print(df)

 查看重复数据:

#df.duplicated()方法中有两个参数subset和keep。
#subset:要判断是否重复的列。可以指定某个列或多个列。默认使用全部列。
#keep:表示重复时不标记为True的规则。可指定为first(除第一个重复值外均标记为True)、last(除最后一个重复值外均标记为True)和False(重复值全部标记为True)。默认使用first。

print(df.duplicated())   # 默认使用全部列,除第一个重复值外均标记为True
print(df.duplicated(keep='last'))   # 默认使用全部列,除最后一个重复值外均标记为True
print(df.duplicated(keep=False))    # 默认使用全部列,重复值全部标记为True

print(df.duplicated(['col2']))          # 默认使用col2列,除第一个重复值外均标记为True
print(df.duplicated(['col1', 'col2']))  # 默认使用col1和col2列,除第一个重复值外均标记为True
去重处理

去重是重复值处理的主要方法,只保留唯一数据记录。

 去重处理:

#df.drop_duplicates() 中参数subset和keep用法和df.duplicated()一致

print(df.drop_duplicates())      # 判断所有列值重复的记录,保留重复的第一个值
print(df.drop_duplicates(keep='last'))       # 判断所有列值重复的记录,保留重复的最后一个值
print(df.drop_duplicates(keep=False))        # 判断所有列值重复的记录,删除所有重复的值

print(df.drop_duplicates(['col2']))          # 判断col2列值重复的记录,保留重复的第一个值
print(df.drop_duplicates(['col1', 'col2']))  # 判断col1、col2列值重复的记录,保留重复的第一个值

以下任意一种场景都不宜直接去重:

  • 重复的记录用于分析演变规律。通过重复的记录可以知道数据的演变情况。
  • 重复的记录用于样本不均衡处理。在样本不均衡的分类问题中,可能会采用随机过采样方法简单复制少样本的数据,就会导致重复的记录。
  • 重复的记录用于检测业务规则问题。重复数据可能意味着重大运营规则问题,尤其当这些重复值出现在业务场景中,例如:重复的订单、重复的充值、重复的预约项、重复的出库申请等。

注意:除了Pandas可用来做重复值识别和处理外,也可以使用Numpy中的unique()方法,该方法返回其参数数组中所有不同的值,也可以使用Python自带的内置函数set方法,该方法返回唯一元素的集合。

参考资料:《Python数据分析与数据化运营》宋天龙

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/756623.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-30
下一篇 2022-04-30

发表评论

登录后才能评论

评论列表(0条)

保存