尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
影刀RPA 数据去重实战:找出Excel中的重复记录
title: “影刀RPA 数据去重实战找出Excel中的重复记录”date: 2026-07-01author: 林焱影刀RPA 数据去重实战找出Excel中的重复记录从多个系统导出的数据同一条记录可能出现多次。手动查重靠肉眼或COUNTIF公式数据一大效率极低。用影刀Pandas几十万条数据几秒内完成去重还能告诉你哪里有重复。什么情况用什么必须做去重的场景多系统导出的数据合并后同一客户/订单出现多次Excel操作失误行数据被复制粘贴导致重复爬虫采集了多次重复URL/商品数据堆积CRM里同一联系人创建了多个账号手机号相同但名字写法不同不需要去重的场景数据本身就允许重复如每天的日志记录只有一条数据怎么做拼多多店群自动化报活动上架方法1完全相同的行去重最简单【影刀操作】添加【读取Excel】指令文件路径C:\数据\原始数据.xlsx保存结果变量用于Python处理添加【Python】指令importpandasaspd dfpd.read_excel(rC:\数据\原始数据.xlsx)original_countlen(df)print(f原始数据{original_count}行)# 完全重复的行去掉所有列都相同才算重复df_dedupdf.drop_duplicates()removed_countoriginal_count-len(df_dedup)print(f删除重复行{removed_count}行)print(f去重后{len(df_dedup)}行)# 保存去重结果df_dedup.to_excel(rC:\数据\去重后数据.xlsx,indexFalse)yda.set_variable(removed_count,removed_count)方法2按关键字段去重更常用实际业务中重复通常是指某个关键字段相同比如订单号相同就算重复。【影刀操作】添加【Python】指令importpandasaspd dfpd.read_excel(rC:\数据\订单数据.xlsx)# 按订单号去重保留最新的那条假设按日期排序df_sorteddf.sort_values(下单时间,ascendingFalse)df_dedupdf_sorted.drop_duplicates(subset[订单号],# 只按订单号判断重复keepfirst# 保留第一条排序后的最新一条)df_dedupdf_dedup.sort_values(下单时间)# 恢复时间顺序# 找出被删除的重复记录duplicate_maskdf_sorted.duplicated(subset[订单号],keepfirst)duplicate_recordsdf_sorted[duplicate_mask]print(f重复订单数{len(duplicate_records)})print(f涉及订单号{duplicate_records[订单号].unique().tolist()[:10]})# 保存去重结果df_dedup.to_excel(rC:\数据\去重订单.xlsx,indexFalse)# 保存重复记录供人工审查iflen(duplicate_records)0:duplicate_records.to_excel(rC:\数据\重复记录审查.xlsx,indexFalse)print(f重复记录已保存请人工检查C:\\数据\\重复记录审查.xlsx)方法3模糊去重相似但不完全相同客户名写法不一致“张三和张 三”、“北京科技有限公司和北京科技(有限公司)”——这种需要模糊匹配。【影刀操作】添加【Python】指令importpandasaspdfromfuzzywuzzyimportfuzz,processimportre dfpd.read_excel(rC:\数据\客户数据.xlsx)defnormalize_company_name(name):标准化公司名称ifnotisinstance(name,str):return# 去除空格、括号变体、常见后缀namename.strip()namere.sub(r[\s\(\)·•],,name)namename.replace(,).replace(,)namere.sub(r(有限责任公司|有限公司|股份有限公司|公司)$,,name)returnname df[标准化名称]df[公司名称].apply(normalize_company_name)# 找出相似度85的公司名companiesdf[标准化名称].unique().tolist()similar_pairs[]fori,companyinenumerate(companies):ifnotcompany:continuematchesprocess.extract(company,companies[i1:],limit3,scorerfuzz.ratio)formatch_name,scoreinmatches:ifscore85andcompany!match_name:similar_pairs.append({公司A:company,公司B:match_name,相似度:score})ifsimilar_pairs:similar_dfpd.DataFrame(similar_pairs)similar_df.sort_values(相似度,ascendingFalse,inplaceTrue)similar_df.to_excel(rC:\数据\疑似重复公司.xlsx,indexFalse)print(f发现{len(similar_pairs)}对疑似重复公司请人工确认)else:print(未发现疑似重复的公司名)方法4多条件组合去重联系人去重姓名手机号都相同才算重复或者任意一个相同也算。【影刀操作】importpandasaspd dfpd.read_excel(rC:\数据\联系人.xlsx)# 规则1姓名手机号都相同 → 明确重复rule1_dupdf[df.duplicated(subset[姓名,手机号],keepFalse)]# 规则2手机号相同但姓名不同 → 疑似重复可能同一人名字录入不同phone_dupdf[df.duplicated(subset[手机号],keepFalse)]name_diff_phone_samephone_dup[phone_dup.duplicated(subset[手机号],keepFalse)~phone_dup.duplicated(subset[姓名,手机号],keepFalse)]print(f明确重复姓名手机均同{len(rule1_dup)}条)print(f疑似重复手机相同名字不同{len(name_diff_phone_same)}条)# 自动删除明确重复保留疑似重复供人工审查df_cleandf.drop_duplicates(subset[姓名,手机号],keepfirst)df_clean.to_excel(rC:\数据\联系人_去重.xlsx,indexFalse)name_diff_phone_same.to_excel(rC:\数据\疑似重复_待确认.xlsx,indexFalse)有什么坑坑1保留哪条的标准不统一同一订单有两条记录一条金额是1000元一条是1001元保留哪条解决方法先确认业务规则保留最新的保留金额大的保留数据完整的在drop_duplicates的sort_values里体现。TEMU店群矩阵自动化运营核价报活动坑2去重后行数对不上去重前1000行去重后只有500行疑似误删。解决方法永远先保存重复记录到单独文件便于核查不要只输出去重后的数据。坑3模糊去重误判北京联通和北京移动相似度可能85但完全是两家公司。解决方法模糊去重只输出疑似重复清单不自动删除必须人工确认后再清理。坑4NaN值当作相同处理有些字段是空值NaN多条NaN会被判断为重复行被删除。解决方法去重前先处理空值或者在drop_duplicates前过滤掉关键字段为空的行。总结数据去重的关键是定义什么叫重复。完全相同最简单直接处理按关键字段去重要考虑保留哪条模糊匹配要人工确认。无论如何都要保留重复记录的备份万一删错了还能找回来。
RELATED

相关推荐

美团开发岗高频算法题清单

美团开发岗高频算法题清单

美团开发岗的算法难度整体不一定最卷,但有一个很鲜明的特点:题目很贴近后台开发常见的数据结构能力。 也就是说,美团更像是在通过算法题看你是不是一个扎实的后台工程师,而不是单纯看你刷了多少偏题怪题。 美团算法面试特点 偏经…

📅 2026/11/4 0:50:13
国产PLC通信避坑:C#解决信捷PLC数据丢包与断线重连实战

国产PLC通信避坑:C#解决信捷PLC数据丢包与断线重连实战

前言:国产PLC的"隐形门槛" 在工控圈子里,西门子、三菱的通信库被研究得透透的,随便搜一下就是现成的轮子。但当你接手一个使用信捷XC/XD系列PLC的项目时,往往会发现:文档少、社区小、坑还特别多。 去年我们给…

📅 2026/10/8 5:20:59
C#上位机+ONNX Runtime:毫秒级AI视觉缺陷检测系统落地指南

C#上位机+ONNX Runtime:毫秒级AI视觉缺陷检测系统落地指南

前言:当"算法Demo"撞上"产线节拍" 在工业视觉圈子里,有一个心照不宣的共识:算法工程师交付的Python Demo和现场实际运行的C#上位机之间,隔着一道巨大的工程鸿沟。 我见过太多这样的项目:算法团队…

📅 2026/10/2 6:51:30
MORE NEWS

更多资讯

📰

uniapp海外游戏分发工程:PG电子集成与Switch卡带区域适配

简介:这是一套面向海外游戏业务开发者的全栈前端解决方案,基于UniApp框架实现跨平台兼容,专为构建海外游戏交易平台、手游下载站及Switch游戏卡带销售系统设计。资源包含完整可二次开发的前端源码(非编译后产物)&#…

📰

Qoder NEXT:智能代码补全工具的技术解析与应用

1. 项目概述Qoder NEXT作为新一代智能编程辅助工具,其核心突破在于通过深度优化代码补全算法,将AI生成代码的开发者采纳率提升了65%。这个数字背后代表着编程效率的实质性飞跃——开发者不再需要花费大量时间在重复性代码编写和机械性调试上,…

📰

32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统…

📰

从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你…

📰

AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年…

📰

Go并发调度器MPG模型与工作窃取算法解析

1. Go并发调度器的设计哲学Go语言最引以为傲的特性就是其原生支持的并发模型。与传统的线程池方案不同,Go的并发调度器采用了一种称为MPG模型的独特设计。这种设计源于Rob Pike等人对现代多核处理器架构的深刻理解——当CPU核心数量越来越多时,基于操作系…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬