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

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

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日

相关文章

  • Pandas中join和merge的区别是什么

    Pandas中join和merge都是用来将两个或多个数据集按照某些列或索引进行合并的函数。它们的主要区别如下: join是通过索引进行合并,而merge是通过列进行合并。 join只能用于两个数据集的合并,而merge可以合并两个或多个数据集。 join默认情况下是按照左连接进行合并,而merge默认情况下是按照内连接进行合并。 下面通过具体例子来演示jo…

    python-answer 2023年3月27日
    00
  • 在Pandas DataFrame中应用if条件的方法

    当我们需要根据某些条件对Pandas DataFrame中的数据进行筛选或操作时,就需要使用到if条件语句。在Pandas DataFrame中应用if条件有多种方法,下面分别介绍其中的两种常用方法,包括: 使用DataFrame的loc方法结合条件语句进行操作; 使用Pandas函数中的where方法结合条件语句进行操作。 方法1. 使用DataFrame…

    python-answer 2023年3月27日
    00
  • pandas 数据类型转换的实现

    当我们在处理数据时,经常会遇到相同数据类型不一致的问题,这时候就需要进行数据类型的转换。pandas提供了丰富的数据类型转换方法来解决这个问题。 一、基础方法 pandas中的数据类型转换基本方法是astype()。用法如下: df[‘column_name’] = df[‘column_name’].astype(‘new_data_type’) 这里的c…

    python 2023年5月14日
    00
  • 在某些列上合并两个Pandas DataFrames

    在Pandas中合并两个DataFrame可以使用merge函数。下面提供一个完整的攻略以及实例说明: 1. 根据特定列合并 假设我们有两个DataFrame,一个是购物清单,另一个是购物明细,它们共同拥有一个列“购物编号”,我们想要将其合并为一个DataFrame。 购物清单DataFrame: 购物编号 用户名 日期 1 张三 2021-01-01 2 …

    python-answer 2023年3月27日
    00
  • 如何使用Python中的Pandas按特定列合并两个csv文件

    要使用Python中的Pandas按特定列合并两个csv文件,需要完成以下步骤: 导入必要的Python库:pandas和numpy。 import pandas as pd import numpy as np 读取两个csv文件。假设文件名分别为’A.csv’和’B.csv’,并且两个文件含有相同的列名’key’。 df_a = pd.read_csv(…

    python-answer 2023年3月27日
    00
  • pandas DataFrame.shift()函数的具体使用

    pandas提供了许多函数来处理数据集,其中shift()函数就是其中一个非常常用的函数,用于对DataFrame在行方向或列方向上进行位移操作。本篇攻略将详细讲解pandas的shift()函数的具体使用方法,包括函数参数、返回值、使用示例等。 函数参数 shift()函数有如下主要参数: periods: 整数,指定位移的距离,正数表示向下移动,负数表示…

    python 2023年5月14日
    00
  • 五个Pandas 实战案例带你分析操作数据

    五个Pandas 实战案例带你分析操作数据的完整攻略 Pandas 是 Python 数据分析中重要的第三方库之一,它提供了高效灵活的数据操作和分析工具,被广泛用于数据清洗、数据可视化等领域,特别适用于结构化和标签型数据。 本篇攻略将介绍五个Pandas实战案例来带你分析操作数据。这些案例将涉及到 Pandas 常用的数据处理、分析和可视化方法,能够帮助你快…

    python 2023年5月14日
    00
  • 检查Pandas数据框架中的NaN

    在 Pandas 中,NaN 是指 Not a Number,代表缺失值或无效值。检查 Pandas 数据框架中的 NaN 是数据预处理中重要的一步。下面介绍如何进行完整的 NaN 检查: 1. 查看数据框架中的缺失值 可以使用 isnull() 或 isna() 函数查看数据框架中缺失值的情况。这两个函数的作用相同,都返回一个布尔型数组,表示数据框架中缺失…

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