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

相关新闻

最新新闻

C++与Python图像处理混合编程:PyBind11实战与性能优化

C++与Python图像处理混合编程:PyBind11实战与性能优化

1. 项目概述:为什么要在图像处理中混合C与Python?在图像处理和计算机视觉领域,我们常常面临一个经典的“两难”选择:是追求极致的执行效率,还是拥抱快速的开发迭代?C以其无与伦比的性能和对硬件底层的直接操…

2026/7/16 5:00:30
巧用ADC分压网络:单线实现多按键检测的硬件设计精要

巧用ADC分压网络:单线实现多按键检测的硬件设计精要

1. 为什么需要单线多按键检测方案在嵌入式系统开发中,按键是最基础的人机交互元件。传统方案中,每个独立按键都需要占用一个GPIO引脚,当按键数量较多时(比如遥控器、控制面板等场景),会快速耗尽宝贵的IO资源…

2026/7/16 5:00:30
模式识别与机器学习:从理论到实践的十大核心算法精解

模式识别与机器学习:从理论到实践的十大核心算法精解

1. 主成分分析(PCA):数据降维的瑞士军刀第一次接触PCA时,我被它神奇的降维能力震撼到了。想象你手里有一份包含100个特征的数据集,每个特征都像是一个观察角度,但太多角度反而让人眼花缭乱。PCA就像个聪明的…

2026/7/16 5:00:30
C++自定义光标开发指南:从原理到跨平台实践

C++自定义光标开发指南:从原理到跨平台实践

1. 项目概述:为什么我们需要自定义光标?在图形界面开发中,光标是用户与程序交互最直接的视觉反馈。默认的箭头、手型、I型光标虽然通用,但在特定应用场景下,它们往往显得力不从心,甚至会影响用户体验和产品…

2026/7/16 5:00:30
VR渲染性能优化:SMP Assist API单通道多视图渲染原理解析与实践

VR渲染性能优化:SMP Assist API单通道多视图渲染原理解析与实践

1. 项目概述:为什么VR渲染需要SMP Assist API?如果你做过VR开发,或者对实时渲染性能优化有追求,那你一定对“单帧渲染两次”这个痛点深有体会。在VR世界里,为了给用户的左眼和右眼分别提供有视差的图像以形成立体感&am…

2026/7/16 5:00:30
C++实现高效十进制转十六进制:原理、方案与性能优化实战

C++实现高效十进制转十六进制:原理、方案与性能优化实战

1. 项目概述与核心价值在嵌入式开发、底层驱动调试、网络协议分析甚至是逆向工程中,我们经常需要和各种“原始数据”打交道。这些数据在内存里、在日志里、在抓包工具里,常常以十六进制(HEX)的形式呈现。比如,你从单片…

2026/7/16 4:55:30

月新闻