重复值处理 - 清洗 DataFrame 中的各种重复类型 - Python代码

目录

所有列是否完全重复

指定某一列是否重复

根据多列判断是否重复,防止误删数据

其他数据预处理方法


通过八爪鱼或者火车头等采集器从全网抓取的数据中,总会存在各种各样的重复数据,为保证数据在使用过程中的准确性,总要先进行一番清洗。

所有列是否完全重复

在Pandas中,.duplicated()表示找出重复的行,默认是判断全部列,返回布尔类型的结果。对于完全没有重复的行,返回 False,对于有重复的行,第一次出现的那一行返回 False,其余的返回 True。

与.duplicated()对应的,.drop_duplicates()表示去重,即删除布尔类型为 True的所有行,默认是判断全部列。

import pandas as pd
import numpy as np
from pandas import DataFrame,Series

#读取文件
datafile = u'E:\\pythondata\\tt.xlsx'#文件所在位置,u为防止路径中有中文名称,此处没有,可以省略
data = pd.read_excel(datafile)#datafile是excel文件,所以用read_excel,如果是csv文件则用read_csv
examDf = DataFrame(data)
examDf#输出源数据,直观的查看哪些行是重复的

 

运行结果: 

  name height birthday constellation Blood
0 Jay 175 1979 摩羯座 O
1 Jay 175 1979 摩羯座 O
2 Jolin 156 1980 处女座 A
3 Jolin 156 1980 NaN A
4 Hannah 165 1993 狮子座 B
5 JJ 173 1981 白羊座 O
6 Eason 173 1974 狮子座 O

很明显,第 0 行和第 1 行是完全重复的,开始去重,接着上面的代码,

#去重
print(examDf.duplicated())#判断是否有重复行,重复的显示为TRUE,
examDf.drop_duplicates()#去掉重复行

 

 

指定某一列是否重复

上述的数据中我们可以发现,第 2 行和第 3 行其实都是 Jolin 的信息,那么也是需要去重的。.duplicated()默认是判断全部列,那么加一点东西,就可以判断指定某一列了。

print(examDf.duplicated('name'))#判断name列是否有重复行,重复的显示为TRUE,
examDf.drop_duplicates('name')#去掉重复行

运行结果:

  重复值处理 - 清洗 DataFrame 中的各种重复类型 - Python代码_第1张图片                                    重复值处理 - 清洗 DataFrame 中的各种重复类型 - Python代码_第2张图片

在实际应用中,需要指定的这一列往往是合同号,项目编号这一类的

 

根据多列判断是否重复,防止误删数据

仅仅根据name列判断是否重复,难免会把重名的另一个人的信息误删,比如娱乐圈的杨洋(小鲜肉男)和杨洋(快女),仅根据name判断是否重复的话,肯定会将其中一人的信息判断为重复数据,那么就增加几个判断条件,比如根据姓名,性别,生日三个条件来判断的话,误删的几率就会大大的减少。

import pandas as pd
import numpy as np
from pandas import DataFrame,Series

#读取文件
datafile = u'E:\\pythondata\\tt.xlsx'#文件所在位置,u为防止路径中有中文名称,此处没有,可以省略
data = pd.read_excel(datafile)#datafile是excel文件,所以用read_excel,如果是csv文件则用read_csv
examDf = DataFrame(data)
print(examDf.duplicated(['name','sex','birthday']))#判断name,sex,birthday列是否有重复行,重复的显示为TRUE,
examDf.drop_duplicates(['name','sex','birthday'])#去掉重复行

运行结果:

重复值处理 - 清洗 DataFrame 中的各种重复类型 - Python代码_第3张图片                              重复值处理 - 清洗 DataFrame 中的各种重复类型 - Python代码_第4张图片

 

望指正!

 

其他数据预处理方法

拉格朗日插值法补充缺失值

连续数据离散化(等宽、等频、聚类离散)

数据预处理 - 归一化与标准化

你可能感兴趣的:(数据合并与清洗)