Python pandas找出、删除重复的数据实例

目录
  • 前言
  • 一、duplicated()
  • 二、drop_duplicates()
  • 总结

前言

当我们使用pandas处理数据的时候,经常会遇到数据重复的问题,如何找出重复数据进而分析重复原因,或者如何直接删除重复的数据是一个关键的步骤,pandas提供了很方便的方法:duplicated()和drop_duplicates()。

一、duplicated()

duplicated()可以被用在DataFrame的三种情况下,分别是pandas.DataFrame.duplicated、pandas.Series.duplicated和pandas.Index.duplicated。他们的用法都类似,前两个会返回一个布尔值的Series,最后一个会返回一个布尔值的numpy.ndarray。

DataFrame.duplicated(subset=None, keep=‘first’)

subset:默认为None,需要标记重复的标签或标签序列

keep:默认为‘first’,如何标记重复标签

  • first:将除第一次出现以外的重复数据标记为True
  • last:将除最后一次出现以外的重复数据标记为True
  • False:将所有重复的项都标记为True(不管是不是第一次出现)

Series.duplicated(keep=‘first’)

keep:与DataFrame.duplicated的keep相同

Index.duplicated(keep=‘first’)

keep:与DataFrame.duplicated的keep相同

例子:

import pandas as pd
df = pd.DataFrame({
    'brand': ['Yum Yum', 'Yum Yum', 'Indomie', 'Indomie', 'Indomie'],
    'style': ['cup', 'cup', 'cup', 'pack', 'pack'],
    'rating': [4, 4, 3.5, 15, 5]
})
df

brand style  rating
0  Yum Yum   cup     4.0
1  Yum Yum   cup     4.0
2  Indomie   cup     3.5
3  Indomie  pack    15.0
4  Indomie  pack     5.0

df.duplicated()

0    False
1     True
2    False
3    False
4    False
dtype: bool

df.duplicated(keep='last')

0     True
1    False
2    False
3    False
4    False
dtype: bool

df.duplicated(keep=False)

0     True
1     True
2    False
3    False
4    False
dtype: bool

df.duplicated(subset=['brand'])

0    False
1     True
2    False
3     True
4     True
dtype: bool

关于Index的重复标记:

df = df.set_index('brand')
df

style  rating
brand                
Yum Yum   cup     4.0
Yum Yum   cup     4.0
Indomie   cup     3.5
Indomie  pack    15.0
Indomie  pack     5.0

df.index.duplicated()
array([False,  True, False,  True,  True])

二、drop_duplicates()

与duplicated()类似,drop_duplicates()是直接把重复值给删掉。下面只会介绍一些含义不同的参数。

DataFrame.drop_duplicates(subset=None, keep=‘first’, inplace=False)

  • subset:与duplicated()中相同
  • keep:与duplicated()中相同
  • inplace:与pandas其他函数的inplace相同,选择是修改现有数据还是返回新的数据

Series.drop_duplicates()相比Series.duplicated()也是多了一个inplace参数,和上诉介绍一样,Index.drop_duplicates()与Index.duplicated()参数相同就不做赘述。下面是例子:

df = pd.DataFrame({
    'brand': ['Yum Yum', 'Yum Yum', 'Indomie', 'Indomie', 'Indomie'],
    'style': ['cup', 'cup', 'cup', 'pack', 'pack'],
    'rating': [4, 4, 3.5, 15, 5]
})
df

brand style  rating
0  Yum Yum   cup     4.0
1  Yum Yum   cup     4.0
2  Indomie   cup     3.5
3  Indomie  pack    15.0
4  Indomie  pack     5.0

df.drop_duplicates()

brand style  rating
0  Yum Yum   cup     4.0
2  Indomie   cup     3.5
3  Indomie  pack    15.0
4  Indomie  pack     5.0

df.drop_duplicates(inplace = True)

df

brand style  rating
0  Yum Yum   cup     4.0
2  Indomie   cup     3.5
3  Indomie  pack    15.0
4  Indomie  pack     5.0

总结

有剩余无,pandas有很多好用的库,但是系统学下来很不现实,都是在实际项目中不断的发现、积累、记录下来。

到此这篇关于Python pandas找出、删除重复数据的文章就介绍到这了,更多相关pandas找出删除重复数据内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Pandas标记删除重复记录的方法

    Pandas提供了duplicated.Index.duplicated.drop_duplicates函数来标记及删除重复记录 duplicated函数用于标记Series中的值.DataFrame中的记录行是否是重复,重复为True,不重复为False pandas.DataFrame.duplicated(self, subset=None, keep='first') pandas.Series.duplicated(self, keep='first') 其中参数解释如下: subse

  • pandas DataFrame 删除重复的行的实现方法

    1. 建立一个DataFrame C=pd.DataFrame({'a':['dog']*3+['fish']*3+['dog'],'b':[10,10,12,12,14,14,10]}) 2. 判断是否有重复项 用duplicated( )函数判断 C.duplicated() 3.  有重复项,则可以用drop_duplicates()移除重复项 C.drop_duplicates() 4. Duplicated( )和drop_duplicates( )方法是以默认的方式判断全部的列(上面

  • Python pandas找出、删除重复的数据实例

    目录 前言 一.duplicated() 二.drop_duplicates() 总结 前言 当我们使用pandas处理数据的时候,经常会遇到数据重复的问题,如何找出重复数据进而分析重复原因,或者如何直接删除重复的数据是一个关键的步骤,pandas提供了很方便的方法:duplicated()和drop_duplicates(). 一.duplicated() duplicated()可以被用在DataFrame的三种情况下,分别是pandas.DataFrame.duplicated.panda

  • 使用Python+wxpy 找出微信里把你删除的好友实例

    之前看到好友在发各种"群发"来检验对方是不是把自己删除了,好吧,其实那个没啥用处. 所以决定自己动手做一个 百度了一下,检测是否被删除,总结出大概网上的一些方法 第一种方法: 拉群法 就是拉一定数量的人进群,再审查群里的人是否和拉进群的名单相对,缺失的即已经将你删除(因为删除了你的人你无法拉入群聊),然后再移除这一批好友,再拉进来另一批,这样只要不发信息,也不会对你的好友产生困扰. 但是.... 这个方法是好几年前的了,web微信已经把拉群这个功能去掉了,所以在使用wxpy的add_m

  • python pandas数据处理之删除特定行与列

    目录 dropna() 方法过滤任何含有缺失值的行 方法一:dropna() 其他参数解析 方法二:替换并删除,Python pandas 如果某列值为空,过滤删除所在行数据 总结 dropna() 方法过滤任何含有缺失值的行 pandas.DataFrame里,如果一行数据有任意值为空,则过滤掉整行,这时候使用dropna()方法是合适的.下面的案例,任意列只要有一个为空数据,则整行都干掉.但是我们常常遇到的情况,是根据一个指标(一列)数据的情况,去过滤行数据,类似Excel里面的过滤漏斗,怎

  • Python datacompy 找出两个DataFrames不同的地方

    本篇博客解决在两个几乎完全相同的DataFrame当中如何找出不相同的元素,并使用datacompy直观的显示出来. x表: 让x1和x2都是x的副本,则此时x1和x2的值是相同: x1=x.copy() x2=x.copy() 将其中x2的一个数据赋值为2000 x2.loc['罗梓烜']['20220125']=2000 x1[x1==x2].head(25) # 如何对不相等的数据进行纠正 此时可以看到下图这个数据是NaN值,说明对于这个数据来说x1和x2是不相同的 x1[x1==x2].

  • Python找出最小的K个数实例代码

    题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 这个题目完成的思路有很多,很多排序算法都可以完成既定操作,关键是复杂度性的考虑.以下几种思路当是笔者抛砖引玉,如果读者有兴趣可以自己再使用其他方法一一尝试. 思路1:利用冒泡法 临近的数字两两进行比较,按照从小到大的顺序进行交换,如果前面的值比后面的大,则交换顺序.这样一趟过去后,最小的数字被交换到了第一位:然后是次小的交换到了第二位,...,依次直到第k个数,停

  • Mysql删除重复的数据 Mysql数据去重复

    MySQL数据库中查询重复数据 select * from employee group by emp_name having count (*)>1; Mysql  查询可以删除的重复数据 select t1.* from employee t1 where (t1.emp_name) in (select t4.emp_name from (select t2.emp_name from employee t2 group by t2.emp_name having count(*)>1)

  • python中找出numpy array数组的最值及其索引方法

    在list列表中,max(list)可以得到list的最大值,list.index(max(list))可以得到最大值对应的索引 但在numpy中的array没有index方法,取而代之的是where,其又是list没有的 首先我们可以得到array在全局和每行每列的最大值(最小值同理) >>> a = np.arange(9).reshape((3,3)) >>> a array([[0, 1, 2], [9, 4, 5], [6, 7, 8]]) >>&

  • Python实现找出数组中第2大数字的方法示例

    本文实例讲述了Python实现找出数组中第2大数字的方法.分享给大家供大家参考,具体如下: 题目比较简单直接看实现即可,具体的注释在代码中都有: #!usr/bin/env python #encoding:utf-8 ''''' __Author__:沂水寒城 功能:找出数组中第2大的数字 ''' def find_Second_large_num(num_list): ''''' 找出数组中第2大的数字 ''' #直接排序,输出倒数第二个数即可 tmp_list=sorted(num_lis

  • shell脚本操作mysql数据库删除重复的数据

    由于之前的业务,造成数据库上产生了脏数据,写个脚本删除重复的数据.由于是开发测试环境,所以选择任意删除相同uid中的一条.由于每次执行只删除重复数据的一条,需要重复执行,如果本轮没有数据被删就OK #!/bin/sh # delete all company's duplicate uid MYSQL_BIN_PATH=/data/mysql/server/mysql_3306/bin MYSQL_SOCK_PATH=/data/mysql/server/mysql_3306/tmp DBUSE

  • Python Dict找出value大于某值或key大于某值的所有项方式

    对于一个Dict: test_dict = {1:5, 2:4, 3:3, 4:2, 5:1} 想要求key值大于等于3的所有项: print({k:v for k, v in test_dict.items() if k>=3}) 得到 {3: 3, 4: 2, 5: 1} 想要求value值大于等于3的所有项: print({k:v for k, v in test_dict.items() if v>=3}) {1: 5, 2: 4, 3: 3} 如果想要求k或者v某一个就取一个即可:

随机推荐