影刀RPA 数据去重实战:找出Excel中的重复记录

发布时间:2026/9/12 15:12:10

影刀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前过滤掉关键字段为空的行。总结数据去重的关键是定义什么叫重复。完全相同最简单直接处理按关键字段去重要考虑保留哪条模糊匹配要人工确认。无论如何都要保留重复记录的备份万一删错了还能找回来。
延伸阅读

更多相关文章

2026/8/30 14:44:48

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

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

2026/9/11 3:26:28

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

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

2026/9/11 21:48:30

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

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

2026/9/12 15:10:47

ESP32-S3 N16R8开发实战:Flash/PSRAM配置与PlatformIO避坑指南

1. 为什么选 ESP32-S3 N16R8?不是参数堆砌,而是真实开发场景的硬需求 你手上刚拆封那块印着“ESP32-S3-N16R8”的小板子,背面丝印清晰写着 16MB PSRAM 8MB Flash——这串数字不是厂商炫技的广告语,而是你在做 USB 摄像头、Micro-…

2026/9/12 15:10:47

SEO关键词研究:从工具到实战的完整指南

1. SEO关键词研究的底层逻辑2003年我刚入行时,搜索引擎优化还停留在"堆砌关键词"的野蛮生长阶段。如今算法迭代了上百个版本,但关键词研究始终是SEO的基石。真正专业的关键词研究不是简单地统计搜索量,而是要理解用户意图与商业价值…

2026/9/12 15:10:47

差分探头匹配电容选型原理与高速信号实测调优指南

1. 差分探头匹配电容:为什么它不是“随便找个瓷片就能用”的小零件? 差分探头匹配电容——这六个字,听起来像实验室角落里不起眼的配件标签,但在我拆过37支不同品牌差分探头、调坏过11块高速PCB板、被示波器上诡异的振铃波形折磨到…

2026/9/12 15:05:46

AI全栈应用开发实战:从架构设计到工程落地的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/12 2:05:33

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/12 3:55:12

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/12 10:09:03

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/12 0:04:17

MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现

简介:本资源是一份面向智能优化算法研究者与MATLAB初学者的仿生智能算法实践代码包,聚焦于长鼻浣熊优化算法(COA)的多策略改进与性能验证。针对传统COA易陷局部最优、收敛精度不足等问题,作者融合Circle映射初始化提升…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 JavaWeb 的校园一卡通管理系统的设计与实现 基于 JavaWeb 的校园卡业务管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 Java 的图书馆借阅管理平台的搭建与实现 基于 Java 的图书馆综合管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/12 6:37:43

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码