Pandas去重函数:drop_duplicates()

“去重”通过字面意思不难理解,就是删除重复的数据。在一个数据集中,找出重复的数据删并将其删除,最终只保存一个唯一存在的数据项,这就是数据去重的整个过程。删除重复数据是数据分析中经常会遇到的一个问题。通过数据去重,不仅可以节省内存空间,提高写入性能,还可以提升数据集的精确度,使得数据集不受重复数据的影响。

Panda DataFrame 对象提供了一个数据去重的函数
drop_duplicates(),本节对该函数的用法做详细介绍。

函数格式

drop_duplicates()函数的语法格式如下:

df.drop_duplicates(subset=['A','B','C'],keep='first',inplace=True)

参数说明如下:

subset:表示要进去重的列名,默认为 None。

keep:有三个可选参数,分别是 first、last、False,默认为 first,表示只保留第一次出现的重复项,删除其余重复项,last 表示只保留最后一次出现的重复项,False 则表示删除所有重复项。

inplace:布尔值参数,默认为 False 表示删除重复项后返回一个副本,若为 Ture 则表示直接在原数据上删除重复项。

实际应用

首先创建一个包含有重复值的 DataFrame 对象,如下所示:

import pandas as pd
data={'A':[1,0,1,1],'B':[0,2,5,0],'C':[4,0,4,4],'D':[1,0,1,1]
}
df=pd.DataFrame(data=data)
print(df)

输出结果:

  A B C D
0 1 0 4 1
1 0 2 0 0
2 1 5 4 1
3 1 0 4 1

1) 默认保留第一次出现的重复项

import pandas as pd
data={'A':[1,0,1,1],'B':[0,2,5,0],'C':[4,0,4,4],'D':[1,0,1,1]
}
df=pd.DataFrame(data=data)
#默认保留第一次出现的重复项
df.drop_duplicates()

输出结果:

  A B C D
0 1 0 4 1
1 0 2 0 0
2 1 5 4 1

2) keep=False删除所有重复项

import pandas as pd
data={'A':[1,0,1,1],'B':[0,2,5,0],'C':[4,0,4,4],'D':[1,0,1,1]
}
df=pd.DataFrame(data=data)
#默认保留第一次出现的重复项
df.drop_duplicates(keep=False)

输出结果:

  A B C D
1 0 2 0 0
2 1 5 4 1

3) 根据指定列标签去重

import pandas as pd
data={'A':[1,3,3,3],'B':[0,1,2,0],'C':[4,5,4,4],'D':[3,3,3,3]
}
df=pd.DataFrame(data=data)
#去除所有重复项,对于B列来说两个0是重复项
df.drop_duplicates(subset=['B'],keep=False)
#简写,省去subset参数
#df.drop_duplicates(['B'],keep=False)
print(df)

输出结果:

  A B C D
1 3 1 5 3
2 3 2 4 3

从上述示例可以看出,删除重复项后,行标签使用的数字是原来的,并没有从 0 重新开始,那么我们应该怎么从 0 重置索引呢?Pandas 提供的 reset_index() 函数会直接使用重置后的索引。如下所示:

import pandas as pddata={'A':[1,3,3,3],'B':[0,1,2,0],'C':[4,5,4,4],'D':[3,3,3,3]
}
df=pd.DataFrame(data=data)
#去除所有重复项,对于B来说两个0是重复项
df=df.drop_duplicates(subset=['B'],keep=False)
#重置索引,从0重新开始
df.reset_index(drop=True)

输出结果:

  A B C D
0 3 1 5 3
1 3 2 4 3

4) 指定多列同时去重

创建一个 DataFrame 对象,如下所示:

import numpy as np
import pandas as pd
df = pd.DataFrame({'Country ID':[1,1,2,12,34,23,45,34,23,12,2,3,4,1],'Age':[12,12,15,18, 19, 25, 21, 25, 25, 18, 25,12,32,18],'Group ID':['a','z','c','a','b','s','d','a','b','s','a','d','a','f']})
#last只保留最后一个重复项
df.drop_duplicates(['Age','Group ID'],keep='last')

输出结果:

  Country ID Age Group ID
0   1         12      a
1   1         12      z
2   2         15      c
3   3         18      a
4   4         19      b
5   3         25      s
6   4         21      d
8   2         25      b
9   1         18      s
10  2         25      a
11  3         12      d
12  4         32      a
13  1         18      f

上述数据集中,第 7 行、第 10 行对应的列标签数据相同,我们使用参数值“last”保留最后一个重复项,也就是第 10 行数据。

Pandas去重函数:drop_duplicates()相关推荐

  1. pandas去重函数

    pandas.DataFrame.duplicated duplicated api DataFrame.duplicated(subset=None, keep=first) 返回布尔类型的Seri ...

  2. python数据去重的函数_python pandas dataframe 去重函数的具体使用

    今天笔者想对pandas中的行进行去重操作,找了好久,才找到相关的函数 先看一个小例子 from pandas import Series, DataFrame data = DataFrame({' ...

  3. python数据去重的函数_python去重函数是什么

    数据去重可以使用duplicated()和drop_duplicates()两个方法. DataFrame.duplicated(subset = None,keep ='first')返回boole ...

  4. csv去重 python_python去重函数是什么

    数据去重可以使用duplicated()和drop_duplicates()两个方法. DataFrame.duplicated(subset = None,keep ='first')返回boole ...

  5. 『Python核心技术与实战』pandas.DataFrame()函数介绍

    pandas.DataFrame()函数介绍! 文章目录 一. 创建DataFrame 1.1. numpy创建 1.2. 直接创建 1.3. 字典创建 1.4. Series和DataFrame 二 ...

  6. python pandas 去重_Pandas 数据框增、删、改、查、去重、抽样基本操作方法

    怎么使用Python中Pandas库Resample,实现重采样,按照时间,比如原采样间隔为100ms,数据为[0,10,20,30,40],那么重采样#python中的pandas库主要有DataF ...

  7. series去重_python去重函数是什么

    数据去重可以使用duplicated()和drop_duplicates()两个方法. DataFrame.duplicated(subset = None,keep ='first')返回boole ...

  8. Pandas快速入门之第三节使用pandas去重、合并、已经统计出现次数

    前言: 本节主要参考的连接有, https://blog.csdn.net/brucewong0516/article/details/82707492 本节主要介绍如何使用pandas去重.合并.以 ...

  9. Pandas-去重函数drop_duplicates()详解

    Panda DataFrame 对象提供了一个数据去重的函数 drop_duplicates(),本节对该函数的用法做详细介绍. 格式介绍 drop_duplicates()函数的语法格式如下: da ...

最新文章

  1. 腾讯面试:打家劫舍 III
  2. python实现滑动窗口平均_数据流滑动窗口平均值 · sliding window average from data stream...
  3. springboot 按钮权限验证_SpringBoot中实现Shiro控制ThymeLeaf界面按钮级权限控制
  4. 万方数据知识平台 TFHpple +Xpath解析
  5. axios 使用步骤很简单,首先在前端项目中,引入 axios:
  6. python面向对象程序设计实训学生自我总结_Python面向对象程序设计示例小结
  7. 新款iPhone SE预购好于预期,新款iPhone SE Plus可能要因此延迟了
  8. SPOJ QTREE
  9. Sql Server 列转行 Pivot使用
  10. jQuery mobile网格布局
  11. linux 怎么添加文件类型,如何在Linux/Unix上添加基于文件类型的文件扩展名?
  12. Linux 入门必备命令
  13. 手把手教你架构3D引擎高级篇系列一
  14. 什么是慢查询?如何优化?
  15. Sketch for UX Design Sketch UX设计教程 Lynda课程中文字幕
  16. mongoDB百度脑图总结
  17. 数据分析两场NBA比赛结果!大数据+NBA=?
  18. SQL进阶教程——自连接的用法(第二章)
  19. on conflict的用法
  20. 使用python爬取妹子图片

热门文章

  1. Photoshop 课程中项目选择与知识拓展设计
  2. 图的深度遍历和广度遍历算法
  3. 公平锁和非公平锁介绍
  4. 找工作的小技巧(雕虫小技),刚参加工作的小伙伴可以看看
  5. n1 openwrt 挂载u盘_openwrt 自动挂载U盘、移动硬盘
  6. 该死的单元测试,写起来到底有多痛?
  7. MySQL 添加和删除索引
  8. docx行间距怎么设置_word行距怎么设置,word行间距怎么调整?
  9. python初中文化好学吗_工作三年却被实习生抢了饭碗,学会Python到底有多吃香?...
  10. 【imessage相册脚本源码】苹果群发头部添加合并id