一.前言

最近刚好在练手一个数据挖掘的项目,众所周知,数据挖掘中比较重要的一步为数据清洗,而对重复数据的处理也是数据清洗中经常碰到的一项。本文将仅介绍如何利用Pandas来清除重复数据(主要指重复行),话不多说请看下文。

二.具体介绍

2.1. 导入Pandas库

pandas是python的核心数据分析库,你可以把它理解为python版的excel,倘若你还没有安装相应的库,请查询相关教程进行安装,导入pandas的代码为:

import pandas as pd

2.2. DataFrame.duplicated和DataFrame.drop_duplicates

2.2.1. duplicated函数

duplicated函数的功能为:Return boolean Series denoting duplicate rows,即返回一个标识重复行的布尔类型的数组(Series),其中重复行将标识为true,而非重复行将标识为false。
要介绍该函数的功能,首先我随意创建一个DataFrame对象,该对象的数据如下:

对应的创建代码为

import pandas as pd#利用字典创建DataFrame对象
animal={'class':['mammal','reptile','bird','mammal','bird','bird','reptile','mammal'],'name':['humans','lizard','dove','monkey','dove','dove','snake','monkey'],'max_speed':[42.5,56,130,79.6,130,130,66.6,79.6]}
df = pd.DataFrame(animal)

应用duplicated函数便可以得到对应的bool数组,对应的代码行为

print(df.duplicated())
'''
对应的运行结果为0    False1    False2    False3    False4     True5     True6    False7     Truedtype: bool
'''

当然,在应用该函数时,我们可以为其指定参数,其原型为DataFrame.duplicated(self,subset,keep),其中:

  • subset参数用来指定用来识别重复的列标签/列标签序列,当未指定时默认比较整行的所有列来判别是否重复;
  • keep参数用来指定如何标记重复行,它的值有三个:first,last,False。当选择first时,重复行中除了第一次出现的全部标记为True;当选择last时,重复行中除最后一次出现的全部标记为True;当选择False时,所有重复行都将标记为True。

上述参数的代码示例为

#指定subset为class
print(df.duplicated('class'))
'''
对应的运行结果0    False1    False2    False3     True4     True5     True6     True7     Truedtype: bool
'''#指定subset为class,name
print(df.duplicated(['class','name']))
'''
对应的运行结果0    False1    False2    False3    False4     True5     True6    False7     Truedtype: bool
'''#指定keep为last
print(df.duplicated(subset=['class','name'],keep='last'))
'''
对应的运行结果0    False1    False2     True3     True4     True5    False6    False7    Falsedtype: bool
'''

drop_duplicates函数

该函数的作用为:Return DataFrame with duplicate rows removed.即返回一个重复行被移除了的表,该函数的原型为:drop_duplicates(self,subset,keep,inplace),其中:

  • subset参数的功能和duplicated函数类似;
  • keep参数也与duplicated函数类似,不同的是:在duplicated函数中该函数是决定该标记哪些重复行,而这里是决定该删除那些重复行;
  • inplace参数是决定在本对象直接删除重复行(inplace=True, 需显示指定),还是返回一个本对象的副本并删除了对应的重复行(inplace=False, 为默认情况)。

由于subset,keep参数的功能与duplicated参数功能类似,因此这里不做详细演示,下面将展示参数inplace参数在不同情况下代码和运行结果:

#inplace=False时的错误用法,这种情况df并未改变,同时又未获取到对应的副本
df.drop_duplicates()
print(df)
'''
运行结果为class    name  max_speed0   mammal  humans       42.51  reptile  lizard       56.02     bird    dove      130.03   mammal  monkey       79.64     bird    dove      130.05     bird    dove      130.06  reptile   snake       66.67   mammal  monkey       79.6'''#inplace=False时的正确用法
df_copy=df.drop_duplicates()
print(df_copy)
'''
运行结果为class    name  max_speed0   mammal  humans       42.51  reptile  lizard       56.02     bird    dove      130.03   mammal  monkey       79.66  reptile   snake       66.6
'''#inplace=True的情况
df.drop_duplicates(inplace=True)
print(df)
'''
运行结果为class    name  max_speed0   mammal  humans       42.51  reptile  lizard       56.02     bird    dove      130.03   mammal  monkey       79.66  reptile   snake       66.6'''

三.总结

利用Pandas中的这两个函数你可以清除数据中的重复行,或者加以指定参数你也可以指定删除数据中某项/某几项中重复的数据,总而言之,Pandas大法好!

利用Pandas来清除重复数据相关推荐

  1. 成功解决利用pandas输出DataFrame格式数据表时没有最左边的索引编号(我去,这个问题折腾了我半个多小时)

    成功解决利用pandas输出DataFrame格式数据表时没有最左边的索引编号(我去,这个问题折腾了我半个多小时) 导读:首先,关于这个问题,博主想骂街,经过各种查询,没找到类似问题,然后博主自己不断 ...

  2. 3.4 利用Pandas进行数据清洗和数据规整化

    本文章是3.4.3.5的内容,如果想要源代码和数据可以看以下链接: https://download.csdn.net/download/Ahaha_biancheng/83338868 文章目录 3 ...

  3. SQL查询重复数据和清除重复数据

    选择重复,消除重复和选择出序列  有例表:emp  emp_no   name    age          001            Tom      17           002     ...

  4. 【pandas】查找重复数据 df.duplicated() 、删除重复数据 df.drop_duplicates()

    数据准备 import pandas as pdtrain = pd.read_csv(r"../input/titanic/train.csv") train.head() 查看 ...

  5. 利用Excel函数对 重复数据进行编号解决方法

    效果要求: 问题描述: 根据不同的类别(含重复数据)进行不同的编号排序,如上图所示 用法: sumproduct 在Sumproduct函数的适用范围,在给定的几组数组中,然后把数组间对应的元素相乘, ...

  6. 利用sql语句删除重复数据

    记录原因: 昨天遇到一个问题:需要写一个sql语句删除重复数据.当时解决的办法,是先查询出重复的数据id,然后再单独写删除语句进行删除.今天想了想应该还是有其他办法解决的,研究了下可以通过一条语句就能 ...

  7. 利用pandas读取Excel文件数据

    说明 pandas能帮助我们在Python 代码中直接读取Excel 文件数据. 但只有pandas是不行的,会报错: ImportError: Missing optional dependency ...

  8. 利用pandas读取SQL Sever数据表

    python的pandas库读取SQL sever有两种方法.一种使用pymssql,另一种使用sqlalchemy.这里只是将数据库中的表读取为DataFrame,不进行修改等表操作. 目录 pyt ...

  9. Python 利用pandas 获取Excel重复记录

    在EXCEL处理大量记录的时候,用EXCEL排序处理比较费劲,EXCEL程序动不动就无响应了,用pands处理: # We will use data structures and data anal ...

最新文章

  1. -le: unary operator expected_【AFM+STM-LE】超经典:研究单分子化学反应引起的光发射ACS Nano...
  2. map怎么转化dto_阿里面试:为什么Map桶中个数超过8才转为红黑树
  3. Django之ModelForm使用
  4. 7-1 特殊a串数列求和 (20 分)
  5. tp3.2.3php环境要求,TP3.2.3开发手册
  6. Anaconda spyder下载第三方包
  7. JS中uibModal服务
  8. 源中瑞区块链baas服务平台搭建系统
  9. Python之面向对象
  10. unity3d 地面印花_Unity3D 中的贴花效果 – 苍白的茧
  11. yunos的工程模式
  12. 我的面试题. 业务抽象能力测试.
  13. pandas学习之drop和dropna篇
  14. T100——q查询,子母查询(汇总——明细)练习笔记
  15. 在linux中使用vi 打开文件时,能显示行号
  16. STC8单片机1T模式跑RTX51
  17. 大数据分析-第二章 大数据平台
  18. 一起DIY四轴飞行器(三)添加实时操作系统--freeRTOS
  19. 熵(Entropy) 条件熵 (Conditional Entropy) 相对熵(Relative Entropy)- 学习笔记
  20. yii2中发送手机号验证码

热门文章

  1. Oracle客户端绿色版
  2. 这些免费的网络工程师资源网站,收藏起来,一年省下好几个W
  3. PyTorch Geometric安装
  4. 轻薄本新基准 — Yoga 14s 锐龙测评
  5. 借助VCP6-DCV证明虚拟化技能
  6. 全国市场监管公共服务平台返回体相关加密
  7. 立创EDA导出PCB封装到Cadence17.4(需要Altium)
  8. python学习日记3月18
  9. LAS模型及相关论文进展
  10. 985太卷?这些被戏称为“984.5”的宝藏院校,行业认可度极高!