详解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数据框架中删除重复的内容

    基于两列的Pandas数据框架中删除重复的内容的攻略如下所述: 首先导入必要的库,创建示例数据: import pandas as pd df = pd.DataFrame({ ‘col1’: [‘A’, ‘B’, ‘C’, ‘D’, ‘E’], ‘col2’: [‘W’, ‘X’, ‘X’, ‘Y’, ‘Z’] }) 其中,col1和col2分别代表两个列…

    python-answer 2023年3月27日
    00
  • Python中Dataframe元素为不定长list时的拆分分组

    背景介绍: 在Python中的pandas库中,通过Dataframe对象可以构建一个二维表格,其中每个元素可以是简单的基本数据类型,也可以是列表或数组等复合类型。当Dataframe中某个元素为不定长的列表时,如何对其进行统一的拆分分组操作是一个常见的问题。本文将详细讲解Python中Dataframe的元素为不定长list时的拆分分组方法。 方法一:使用…

    python 2023年6月13日
    00
  • Python pandas之多级索引取值详解

    Python pandas之多级索引取值详解 什么是多级索引 多级索引(MultiIndex)是pandas中用于处理具有分层级别的索引的方法。分层索引可以为数据带来很多好处,比如增强数据的可读性、支持高效的选取和分组运算、支持多维度聚合等等。 在pandas中,多级索引的对象是MultiIndex,它类似于DataFrame和Series的索引,但是可以由…

    python 2023年5月14日
    00
  • 如何利用python批量提取txt文本中所需文本并写入excel

    这里给出如何利用Python批量提取txt文本中所需文本并写入Excel的攻略,共分为五个步骤。 第一步 首先需要安装两个Python库,它们分别是pandas和glob,pandas用于将提取的内容写入Excel,glob用于遍历目标文件夹中的所有文件。 import pandas as pd import glob 第二步 使用glob库来遍历目标文件夹…

    python 2023年5月14日
    00
  • pandas分组排序 如何获取第二大的数据

    要获取Pandas DataFrame中分组后的第二大数据,可以使用以下步骤: 使用groupby()方法按照需要分组的列进行分组。 对每个组使用nlargest()方法获取前两大的数据。 使用reset_index()方法,重置数据框的索引,并将“组”列转换回常规列。 使用sort_values()方法对数据进行排序。 选择第二行,即获取第二大的数据。 下…

    python 2023年5月14日
    00
  • 基于标签的Pandas数据框架索引

    基于标签的索引(Label-based indexing)是Pandas数据框架中一种基于标签或名称的索引方式,其优点在于易于理解和使用,并且不容易产生歧义,因此得到广泛地应用。在本攻略中,我们将详细讲解如何使用基于标签的索引方式来操作Pandas数据框架。以下是我们的操作流程: 选择列标签 在Pandas数据框架中,我们可以通过列标签(也称为列名)来选择数…

    python-answer 2023年3月27日
    00
  • Python+pandas计算数据相关系数的实例

    下面就为大家详细讲解“Python+pandas计算数据相关系数的实例”的完整攻略。 1.前置知识 在进行本文的实例讲解之前,我们需要掌握如下知识点: Python基础语法 pandas数据分析库的基础使用 相关系数的计算方法 2.数据导入 我们将使用一个汽车数据集来进行演示,数据集的下载链接为:https://archive.ics.uci.edu/ml/…

    python 2023年5月14日
    00
  • Pandas使用query()优雅的查询实例

    下面是关于Pandas使用query()优雅的查询实例的完整攻略。 标准的markdown格式文本 什么是Pandas的query()方法 Pandas是Python中常用的数据处理库,它提供了query()方法用于查询数据。query() 方法支持字符串化的查询语句,可以方便的查询DataFrame中的数据。 query()方法的使用 query() 方法…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部