You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pandas-dedupe处理5万条数据加载聚类速度过慢如何优化

pandas-dedupe处理速度优化方案

核心优化点

  • 裁剪冗余字段
    你当前传入的DataFrame有43列,但实际仅4列参与去重计算,pandas-dedupe在处理时会全量加载所有字段数据,额外占用内存和计算资源。传入前仅保留参与去重的列+后续业务需要的主键/关联字段即可,不要传入全量字段,读取文件时也可以通过usecols参数只加载需要的列,同时降低IO耗时。
  • 调整sample_size为固定合理值
    你当前设置的0.05比例对应5万条数据的采样量约2500条,官方测试显示1500-2000条样本已经足够训练出稳定的匹配模型,过多的采样量只会增加训练阶段的计算开销。可以将参数修改为固定整数sample_size=1500,在不影响准确率的前提下降低训练耗时。
  • 显式指定字段匹配类型
    直接传入列名列表时,pandas-dedupe会默认对所有字段使用通用字符串匹配逻辑,你可以根据字段属性指定专属匹配器,既提升匹配准确率,也能减少不必要的特征计算开销。
  • 开启多进程并行计算
    新版本pandas-dedupe支持通过number_of_cores参数指定并行核数,默认仅使用1核,你可以根据设备CPU核数配置,例如8核设备设置number_of_cores=6,可大幅提升聚类阶段的计算速度。
  • 按需调整召回率阈值
    参数recall默认值为0.95,该值越高,聚类阶段需要比对的候选对数量越多,耗时越长。如果业务场景可以接受微小的召回率损失,可将值调整到0.8-0.9区间,能获得非常明显的速度提升。

优化后示例代码

import pandas as pd
import pandas_dedupe as pdd

if __name__ == "__main__":
    # 读取时仅加载需要的列,减少IO和内存开销
    df = pd.read_csv(
        R"filepath.txt", 
        sep="\t", 
        encoding="ISO-8859-1",
        usecols=['id', 'fname', 'lname', 'company', 'email']  # id为后续业务关联用的主键,无主键可只留去重列
    )

    # 显式指定字段类型,配置并行和采样参数
    dedupe = pdd.dedupe_dataframe(
        df,
        field_properties=[
            {'field': 'fname', 'type': 'ShortString'},
            {'field': 'lname', 'type': 'ShortString'},
            {'field': 'company', 'type': 'String'},
            {'field': 'email', 'type': 'Email'}
        ],
        sample_size=1500,
        recall=0.85,
        number_of_cores=6  # 根据自身设备CPU核数调整
    )
    dedupe.to_csv(R"output_filepath.txt", sep="\t", encoding="ISO-8859-1", index=False)

注:如果需要多次运行相同规则的去重任务,可以在第一次训练后保存训练好的模型,后续运行直接加载模型跳过标注和训练步骤,耗时可压缩到几分钟内。

内容的提问来源于stack exchange,提问作者Tyler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:15:06