pandas目录

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

  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 对象,如下所示:

Example:创建数据

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
"""

Example:默认保留第一次出现的重复项

print(df.drop_duplicates()) #默认保留第一次出现的重复项
"""
A B C D
0 1 0 4 1
1 0 2 0 0
2 1 5 4 1
"""

Example: keep=False 删除所有重复项

print(df.drop_duplicates(keep=False)) #keep=False删除所有重复项
"""
A B C D
1 0 2 0 0
2 1 5 4 1
"""

Example:去除所有重复项,对于 B 列来说两个 0 是重复项

print(df.drop_duplicates(subset=['B'],keep=False))#去除所有重复项,对于B列来说两个0是重复项
"""
A B C D
1 0 2 0 0
2 1 5 4 1
"""

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

Example:

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=df.drop_duplicates(subset=['B'],keep=False)
print(df)
print('-------------')
#重置索引,从0重新开始
print(df.reset_index(drop=True))
"""
A B C D
1 3 1 5 3
2 3 2 4 3
-------------
A B C D
0 3 1 5 3
1 3 2 4 3
"""

Example:指定多列同时去重

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

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']})
print(df)
"""
Country ID Age Group ID
0 1 12 a
1 1 12 z
2 2 15 c
3 12 18 a
4 34 19 b
5 23 25 s
6 45 21 d
7 34 25 a
8 23 25 b
9 12 18 s
10 2 25 a
11 3 12 d
12 4 32 a
13 1 18 f
"""
#last只保留最后一个重复项
print(df.drop_duplicates(['Age','Country ID'],keep='last'))
"""
Country ID Age Group ID
1 1 12 z
2 2 15 c
4 34 19 b
6 45 21 d
7 34 25 a
8 23 25 b
9 12 18 s
10 2 25 a
11 3 12 d
12 4 32 a
13 1 18 f
"""

Lesson11——Pandas去重函数:drop_duplicates()的更多相关文章

  1. 【转载】pandas常用函数

    原文链接:https://www.cnblogs.com/rexyan/p/7975707.html 一.import语句 import pandas as pd import numpy as np ...

  2. pandas 常用函数整理

    pandas常用函数整理,作为个人笔记. 仅标记函数大概用途做索引用,具体使用方式请参照pandas官方技术文档. 约定 from pandas import Series, DataFrame im ...

  3. unique() 去重函数

    unique()函数是一个去重函数,STL中unique的函数 unique的功能是去除相邻的重复元素(只保留一个), 还有一个容易忽视的特性是它并不真正把重复的元素删除.他是c++中的函数, 所以头 ...

  4. Pandas的函数应用、层级索引、统计计算

    1.Pandas的函数应用 1.apply 和 applymap 1. 可直接使用NumPy的函数 示例代码: # Numpy ufunc 函数 df = pd.DataFrame(np.random ...

  5. pandas常用函数之shift

    shift函数是对数据进行移动的操作,假如现在有一个DataFrame数据df,如下所示: index value1 A 0 B 1 C 2 D 3 那么如果执行以下代码: df.shift() 就会 ...

  6. pandas常用函数之diff

    diff函数是用来将数据进行某种移动之后与原数据进行比较得出的差异数据,举个例子,现在有一个DataFrame类型的数据df,如下: index value1 A 0 B 1 C 2 D 3 如果执行 ...

  7. 西安电子科技大学第16届程序设计竞赛 F Operating System (unique() 去重函数)

    链接:https://www.nowcoder.com/acm/contest/107/F来源:牛客网 Operating System 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ ...

  8. unique(去重函数)

    去重排序(unique函数的使用) 2013年05月30日 11:05:45 阅读数:9689更多 个人分类: 字符串处理  出处:http://www.cnblogs.com/QQbai/archi ...

  9. python pandas字符串函数详解(转)

     pandas字符串函数详解(转)——原文连接见文章末尾 在使用pandas框架的DataFrame的过程中,如果需要处理一些字符串的特性,例如判断某列是否包含一些关键字,某列的字符长度是否小于3等等 ...

随机推荐

  1. JS获取树的父节点及祖先节点

    主体函数 export function findAllParent (node, tree, parentNodes = [], index = 0) { if (!node || node.fid ...

  2. Spark-寒假-实验1

    (1)切换到目录 /usr/bin: $ cd /usr/bin (2)查看目录/usr/local 下所有的文件: $cd /usr/local $ls   (3)进入/usr 目录,创建一个名为 ...

  3. 【刷题-LeetCode】264. Ugly Number II

    Ugly Number II Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose ...

  4. 发现一个现象:golang中大量的go出新协程,必然在GC统计中出现1ms以上的GC延迟

    结论:协程池还是有必要的,能够有效减小GC的压力. 我的某个服务,为了方(tou)便(lan),一些异步处理的场合直接go出协程来处理. 服务中使用这样的代码来统计GC的延迟: var mem run ...

  5. C# Reflection反射机制

    一.反射 什么是反射 .Net的应用程序由几个部分:'程序集(Assembly)'.'模块(Module)'.'类型(class)'组成: 反射提供一种编程的方式,让程序员可以在程序运行期获得这几个组 ...

  6. VueRouter学习01-基本使用

    ## 基本使用: 1. 创建一个`VueRouter`对象:`new VueRouter()`. 2. 在`VueRouter`中,需要传递一个`routes`参数.这个参数是一个数组类型,数组中存储 ...

  7. Centos配置yum本地源最简单的办法

    有关centos配置yum本地源的方法 一.前提 先连接镜像 然后在命令行输入如下命令 mount /dev/sr0 /mnt cd /etc/yum.repos.d/ ls 之后会看到如下的界面 二 ...

  8. 手把手教你用Strace诊断问题

    手把手教你用Strace诊断问题 发表于2015-10-16 早些年,如果你知道有个 strace 命令,就很牛了,而现在大家基本都知道 strace 了,如果你遇到性能问题求助别人,十有八九会建议你 ...

  9. 使用gige2500万相机时遇见的问题(条纹以及取图过久)

    1.确保网卡支持1g全双工: 2.确保安装了MVTec GigE Vision Streaming Filter(使用halcon接口的情况下) 3.确保机台的杀毒软件开放了相机的网络监控功能

  10. 「SDWC2018 Day1」网格

    题目当中有三条限制,我们来逐一考虑.对于第一条限制,每次走动的增加量 \(x_i \le M_x, y_i \le M_y\),可以发现一共走的步数是确定的,那么就相当于解这样两个方程组: \[x_1 ...