python用drop_duplicates()函数保留数据集的重复行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python用drop_duplicates()函数保留数据集的重复行相关的知识,希望对你有一定的参考价值。

参考技术A        前两天处理数据的时候,需要得到两个数据的交集数据,所以要去除数据中非重复部分,只保留数据中的重复部分。

       网上看了一下大家的教程,大部分都是教去除重复行,很少有说到仅保留重复行的。所以在这里用drop_duplicates这个去重函数来实现这个功能。

drop_duplicates函数介绍 :

data.drop_duplicates(subset=[‘A’,‘B’],keep=‘first’,inplace=True)

#subset对应的值是列名,表示只考虑这两列,将这两列对应值相同的行进行去重。

默认值为subset=None表示考虑所有列。

keep='first’表示保留第一次出现的重复行,是默认值。

keep另外两个取值为"last"和False,分别表示保留最后一次出现的重复行和去除所有重复行。

inplace=True表示直接在原来的DataFrame上删除重复项,而默认值False表示生成一个副本。

要用函数取得数据集data中的重复列,分三个步骤 :

(提前导入pandas模块)

data0_1 = data.drop_duplicates() #保留第一个重复行

data0_2 = data.drop_duplicates(keep=False) #去除所有重复行

data0_3=pd.concat([data0_1,data0_2]).drop_duplicates(keep=False)

#合并起来再去重,只剩下真的重复行。

举例:data中wangwu行和tony行重复,需要把它们两行取出。

第一步:#保留第一个重复行

第二步:#去除所有重复行

第三步:#合并起来再去重

通过以上步骤实现取出数据中的重复行。

5Python 数据分析-Pandas数据清洗

1、 处理重复数据drop_duplicates函数

#设定一些重复行数据
df.iloc[1] = [0,0,0,0,0,0,0,0]
df.iloc[3] = [0,0,0,0,0,0,0,0]
df.iloc[5] = [0,0,0,0,0,0,0,0]
df.iloc[7] = [0,0,0,0,0,0,0,0]

df.drop_duplicates(keep=\'first\')#keep=\'first\'只保留第一次出现的重复数据,last相反,只保留最后一次出现的重复数据,其他重复数据不保留

2、处理异常数据

自定义一个10行3列(A,B,C)取值范围为0-1的数据源,然后将C列中的值大于其两倍标准差的异常值进行清洗

from pandas import DataFrame
import numpy as np

df = DataFrame(data=np.random.random(size=(10,3)),columns=[\'A\',\'B\',\'C\'])
df.head(10)

#判定异常值的条件
std_twice = df[\'C\'].std()*2
>>>
0.41596053666447336
# 将存有异常值的行进行删除
df[\'C\'] > std_twice
# 将存有异常值的行数据取出
df.loc[df[\'C\'] > std_twice]
# 获取异常值对应的行索引
indexs = df.loc[df[\'C\'] > std_twice].index
df.drop(labels=indexs,axis=0)

以上是关于python用drop_duplicates()函数保留数据集的重复行的主要内容,如果未能解决你的问题,请参考以下文章

Python 去重,统计,lambda函数

[Python]python对csv去除重复行 python 2020.2.11

熊猫:drop_duplicates()。fillna没有填充零

pandas.DataFrame.drop_duplicates

5Python 数据分析-Pandas数据清洗

col.drop_duplicates() 有更快的替代方法吗?