详解pandas最常用的3种去重方法

yizhihongxing

删除重复数据是数据分析中经常会遇到的一个问题。通过数据去重,不仅可以节省内存空间,提高写入性能,还可以提升数据集的精确度,使得数据集不受重复数据的影响。

Pandas 中,可以使用 drop_duplicates() 方法来删除 DataFrame 中的重复行。该方法默认删除所有列值都相同的行,也可以指定列进行去重。

下面是一些常用的去重方法:

  1. drop_duplicates():删除 DataFrame 中的重复行。
  2. duplicated():返回一个布尔型 Series,指示每行是否为重复行。
  3. dropna():删除缺失值。

下面是这些方法的详细说明和示例:

drop_duplicates()

drop_duplicates() 方法返回一个去重后的 DataFrame。

语法:

DataFrame.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False)

参数说明:

  • subset:可选,指定要考虑去重的列,默认为所有列。可以传递一个或多个列的名称或索引来进行去重。
  • keep:可选,指定删除哪些重复项。默认值为 "first",表示删除所有重复项,除了第一个。如果设置为 "last",则保留最后一个重复项,并删除其余重复项。如果设置为 False,则删除所有重复项。
  • inplace:可选,指示是否直接修改原始 DataFrame。如果设置为 True,则修改 DataFrame 并返回 None。
  • ignore_index:可选,指示是否重置索引。如果设置为 True,则重置索引。

举个例子:

import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 2, 3, 4],
    'B': ['a', 'b', 'b', 'c', 'd']
})

df.drop_duplicates()  # 默认去除所有列相同的行

# 指定列去重
df.drop_duplicates(subset='A')  # 去除 A 列相同的行

# 指定多列去重
df.drop_duplicates(subset=['A', 'B'])  # 去除 A、B 列相同的行

duplicated()

duplicated() 方法返回一个布尔型 Series,指示每行是否为重复行。如果行是重复的,则为 True,否则为 False。

语法:

DataFrame.duplicated(subset=None, keep='first')

参数说明:

  • subset:可选,指定要考虑去重的列,默认为所有列。可以传递一个或多个列的名称或索引来进行去重。
  • keep:可选,指定删除哪些重复项。默认值为 "first",表示删除所有重复项,除了第一个。如果设置为 "last",则保留最后一个重复项,并删除其余重复项。如果设置为 False,则删除所有重复项。

示例:


import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 2, 3, 4],
    'B': ['a', 'b', 'b', 'c', 'd']
})

df.duplicated()  # 返回一个布尔型 Series,指示每行是否为重复行

dropna()

dropna()是pandas中用于删除缺失值(NaN)的方法,可以对数据进行清洗。该方法默认删除所有包含缺失值的行或列,也可以根据指定条件进行删除。

语法为:

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

各参数含义如下:

  • axis:指定删除的行或列,0表示删除行,1表示删除列,默认为0。
  • how:指定删除方式,取值为‘any’和‘all’,‘any’表示只要有缺失值就删除该行或列,‘all’表示所有值都是缺失值才删除该行或列,默认为‘any’。
  • thresh:指定每行或每列中最少非空值的数量,如果不足该数量,则删除该行或列。默认为None,表示不使用该参数。
  • subset:指定删除时要考虑的列,仅在axis=0时有效。可以传递列标签或列标签的列表。默认为None,表示使用所有列。
  • inplace:指定是否在原数据上进行修改,默认为False,表示不修改原数据,返回一个新数据。

下面是一个示例,演示如何使用dropna()方法删除数据中的缺失值:

import pandas as pd
import numpy as np

# 构造包含缺失值的数据
df = pd.DataFrame({'A': [1, 2, np.nan, 4],
                   'B': [5, np.nan, 7, 8],
                   'C': [9, 10, 11, np.nan]})

# 删除所有包含缺失值的行
df1 = df.dropna()

# 删除所有包含缺失值的列
df2 = df.dropna(axis=1)

# 保留至少有两个非空值的行
df3 = df.dropna(thresh=2)

# 仅对‘A’列和‘B’列进行删除
df4 = df.dropna(subset=['A', 'B'])

print(df)
print(df1)
print(df2)
print(df3)
print(df4)

输出结果如下:

     A    B     C
0  1.0  5.0   9.0
1  2.0  NaN  10.0
2  NaN  7.0  11.0
3  4.0  8.0   NaN

     A    B    C
0  1.0  5.0  9.0

Empty DataFrame
Columns: []
Index: [0, 1, 2, 3]

     A    B     C
0  1.0  5.0   9.0
1  2.0  NaN  10.0
3  4.0  8.0   NaN

     A    B     C
0  1.0  5.0   9.0
3  4.0  8.0   NaN

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解pandas最常用的3种去重方法 - Python技术站

(3)
上一篇 2023年3月5日
下一篇 2023年3月5日

相关文章

  • Python Pandas多种添加行列数据方法总结

    添加行数据方法总结 Pandas提供了多种添加行数据的方法,常见的方法有如下几种: df.loc[len(df)] = Series/Array:在df的最后一行添加一条Series/Array数据。 df.append(Series/Dict/DF):在df的最后一行添加一条Series/Dict/DF数据。 df.loc[n] = Series/Arra…

    python 2023年5月14日
    00
  • Python 使用Pandas.drop()从DataFrame中删除行/列

    下面我将为您详细讲解Python使用Pandas.drop()从DataFrame中删除行/列的完整攻略。 1. Pandas.drop()简介 Pandas是一个Python的数据分析库,可以用于处理和分析各种结构化的数据,其中Pandas.drop()是一个删除行/列的函数。Pandas.drop()的具体使用方法如下: DataFrame.drop(l…

    python-answer 2023年3月27日
    00
  • Pandas – 查找两个数据帧之间的差异

    背景介绍 我们在进行数据分析时,有时需要比较两个数据帧之间的差异。Pandas提供了许多方法来实现这个目标,今天我们将介绍其中的两种方法:merge和compare。通过本篇文章的学习,你将会掌握两种方法的使用和相应的应用场景。 merge方法 merge方法可以通过连接两个数据帧并将它们作为一个整体来找出两个数据帧之间的差异。我们先来看一下这个方法的语法:…

    python-answer 2023年3月27日
    00
  • Pandas DataFrame数据的更改、插入新增的列和行的方法

    Pandas是Python中最常用的数据处理和分析库之一。其中,DataFrame是Pandas中最重要的数据类型之一,它可以看作是Excel表格的 Python 版本。在这个表格中,我们可以对数据进行增删改查的操作。 下面,我将详细讲解Pandas中DataFrame数据更改、插入新增的列和行的方法: DataFrame数据更改 Pandas中DataFr…

    python 2023年5月14日
    00
  • 如何在使用Pandas读取csv文件时跳过行

    在使用 Pandas 读取 CSV 文件时,我们经常需要跳过一些行,例如 CSV 文件的头部描述信息。在 Pandas 中,我们可以使用 skiprows 参数来指定需要跳过的行数。 以下是跳过 CSV 文件前两行的示例代码: import pandas as pd # 读取 CSV 文件,跳过前两行 df = pd.read_csv(‘example.cs…

    python-answer 2023年3月27日
    00
  • 获取一个给定的数据框架的前3行

    获取一个给定的数据框架的前3行有以下几种方法: 方法一:使用head()函数 head()函数是基础的R函数之一,可以用来查看数据框架中前n行的数据,默认情况下n=6。 示例代码: #创建一个数据框架 df <- data.frame(Name=c("A", "B", "C", "D…

    python-answer 2023年3月27日
    00
  • pandas归一化与反归一化操作实现

    一、Pandas归一化操作实现 在Pandas中我们可以使用sklearn模块中的MinMaxScaler类进行归一化。其具体步骤如下: 1.导入Pandas模块和sklearn模块。其中sklearn.preprocessing模块中提供了MinMaxScaler类用于归一化操作。 import pandas as pd from sklearn.prep…

    python 2023年5月14日
    00
  • 如何在Pandas中比较两列

    在Pandas中比较两列,可以通过以下步骤完成: 1. 导入pandas模块并读取数据 在开始之前,需要导入pandas模块。同时,还需要准备一份含有需要比较的两列数据的数据集。这里我们以读取CSV文件作为例子,读取的文件名为“data.csv”。 import pandas as pd df = pd.read_csv(‘data.csv’) 2. 创建新…

    python-answer 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部