• Lesson11——Pandas去重函数:drop_duplicates()


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

     

  • 相关阅读:
    在Eclipse中写第一个hibernate小例子
    [转载]mysql 学习笔记
    hibernate.cfg.xml 配置(摘录)
    j2ee笔试题目
    J2EE综合—Struts常见错误的全面汇总
    在Eclipse中写第一个hibernate小例子
    j2ee笔试题目
    hibernate.cfg.xml 配置(摘录)
    [转载]mysql 学习笔记
    J2EE综合—Struts常见错误的全面汇总
  • 原文地址:https://www.cnblogs.com/BlairGrowing/p/15915248.html
Copyright © 2020-2023  润新知