删除重复的行

重要

对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习

从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。

ML 工作室(经典)文档即将停用,将来可能不会更新。

从数据集中删除重复行

类别: 数据转换/操作

注意

适用于:仅限机器学习 Studio (经典)

可在 Azure 机器学习设计器中获取类似的拖放模块。

模块概述

本文介绍如何使用机器学习 Studio 中的 "删除重复行" 模块 (经典) ,从数据集中删除可能的重复项。

例如,假设数据看上去如下所示,其中包含了多个患者记录。

PatientID Initials 性别 Age 入院时间
1 F.M. M 53 一月
2 F.A.M. M 53 一月
3 F.A.M. M 24 一月
3 F.M. M 24 二月
4 F.M. M 23 二月
F.M. M 23
5 F.A.M. M 53

显然,这个示例有多个列,其中可能有重复的数据。 它们是否确实是重复项取决于你对数据的了解。

  • 例如,你可能知道许多患者具有相同的姓名。 不使用任何姓名列消除重复项,仅使用“ID”列进行消除。 这样,无论患者是否具有相同的姓名,都只会筛选出具有重复 ID 值的行。

  • 或者,你可以决定在 ID 字段中允许重复,并使用字段的其他组合来查找唯一记录,如名字、姓氏、年龄和性别。

若要设置用于判断行是否重复的条件,请将一列或一组列指定为键。 仅当两行的所有键列中的值相等时,才会将两行视为重复。

运行该模块时,它将创建一个候选数据集,并返回一组在指定列集中没有重复项的行。

重要

源数据集不会更改;此模块创建一个新的数据集,该数据集是根据指定条件排除了重复项而筛选出来的。

如何使用“删除重复行”

  1. 向试验中添加模块。 可以在“数据转换”、“操作”下找到“删除重复行”模板 。

  2. 连接要检查其是否有重复行的数据集。

  3. 在“属性”窗格的“键列选择筛选器表达式”下,单击“启动列选择器”,选择用于标识重复项的列 。

    在此上下文中,“键”并不表示唯一标识符。 使用“列选择器”选择的所有列都指定为“键列”。 所有未选定的列都被视为非键列。 所选择的作为键的列的组合确定了记录的唯一性。 (将其视为使用多个相等联接的 SQL 语句。 )

    示例:

    • “我想要确保 ID 是唯一的”:仅选择“ID”列。
    • “我想要确保名字、姓氏和 ID 的组合是唯一的”:选中所有三个列。
  4. 使用“保留第一个重复行”复选框指示在找到重复项时要返回的行:

    • 如果选择此选项,则返回第一行,丢弃其他行。
    • 如果取消选择此选项,则最后一个重复行将保留在结果中,而丢弃其他行。

    有关如何处理 missinng 值的信息,请参阅 技术说明 部分。

  5. 运行试验,或单击模块并选择 " 运行所选项"。

  6. 若要查看结果,请右键单击该模块,选择“结果数据集”,然后单击“可视化”

提示

如果结果难以理解,或者想要排除某些列,则可以使用选择数据集中的列模块来删除列。

示例

若要查看如何使用此模块的示例,请参阅 Azure AI 库

  • 乳腺癌症检测删除重复行 用于在添加特征列后合并训练和测试数据集。

  • 电影建议:使用 " 删除重复行 " 以确保每个电影只有一个用户 评级

  • Twitter 情绪分析删除重复行 仅适用于 "ID" 和 "受欢迎程度" 列,以确保每个电影只有一个 序号排名 值。 换句话说,电影不能同时为1和3,因此即使用户对影片进行了不同的排名,也会使用单个值。

技术说明

本部分包含实现详情、使用技巧和常见问题解答。

实现详细信息

该模块的工作原理是循环遍历输入数据集的所有行。 它收集到候选输出数据集中首次显示键列值的唯一组合的所有行。

独立于行进行过滤的结果将被保留列数组类型。 你不能通过过滤掉无效的值而强制该数组为特定的数据类型;列数组类型取决于列中的所有值。 在过滤缺失值时,此限制也适用。

用于比较数据值的算法是哈希强制的。

缺少值

输入数据集可能在非键列和键列中缺少值。 这些规则适用于缺失值:

  • 缺失值被视为键列中的有效值。 这两个键中都可以存在缺失值。

  • 在稀疏数据集中,仅当缺失值等于稀疏值的默认表示形式时,才将其视为相等。

  • 在键列中,缺失值被视为等于其他缺失值,但不等于非缺失值。

预期输入

名称 类型 说明
数据集 数据表 输入数据集

模块参数

名称 范围 类型 默认 说明
键列选择过滤表达式 any ColumnSelection 选择搜索重复项时要使用的键列。
保留第一个重复行 any 布尔 指示是否要保留一组重复项的第一行并放弃其他行。 如果为 False,则保留所遇到的最后一个重复行。

输出

名称 类型 说明
结果数据集 数据表 过滤的数据集

例外

异常 描述
错误 0003 如果一个或多个输入数据集为 null 或为空,则会发生异常。
错误 0020 如果传递给模块的某些数据集中的列数太少,则会发生异常。
错误 0017 如果一个或多个指定列具有当前模块不支持的类型,则会发生异常。

有关特定于工作室和经典 (模块) 的列表,请参阅机器学习代码

有关 API 异常的列表,请参阅机器学习 REST API代码

另请参阅

操作
A-Z 模块列表