Python:模糊规则匹配,Excel束手无策,Python一键搞定!

我是智能取经人 2024-08-03 09:54:52

摘要: 还在为Excel中的模糊匹配和规则匹配头疼吗?Python自动化办公来拯救你的工作效率!跟随我们的粉丝朋友和朋友快递公司地址匹配的故事,一起见证Python如何轻松实现模糊匹配,释放你的双手!

引言

在数据的海洋中,全体打工人都面临着Excel数据处理的挑战。Excel的Vlookup函数在精确匹配上表现出色,但面对模糊匹配和按规则匹配时却显得无能为力。近期一位微信公众号粉丝在文章后面留言,寻求一种能够快速、准确进行模糊匹配的方法。今天,我们就来揭秘如何利用Python自动化办公工具,解决这一难题。

1.粉丝的挑战和我朋友的窘境

一位粉丝朋友在微信公众号文章后面上言:“斗胆提一个问题,A1单元格内容是‘数海丹心最棒无敌是多么寂寞’,B1单元格内容是‘数海丹心最棒’。A列的内容是全称,B列的内容是其中几个关键字,如何进行匹配,如超过相同的5个字即返回A列对应的内容。”

这与我之前为朋友小李做过的一个python自动化项目需求不谋而合:小李在一家快递公司做数据分析师,当时他遇到了一个极其棘手的问题:因为操作失误,数据表里的详细配送地址和地址所在的市不是一一匹配的,我猜想应该是有人在做排序时应该选择"扩展选定区域"而错选成了"以当前选定区域排序"总之造成的结果就是小李拿到的几万行数据省份、市区与详细配送地址是错误的对应关系。这就需要在关键词列省直辖市和市匹配上全称列详细地址列

2.Excel Vlookup函数的局限

小李之前的做法是:

使用Vlookup函数进行精确匹配,用上通配符等工具仍未成功。面对模糊匹配,手动检查和比对,需要耗费几天时间且容易出错。3.Python自动化的解决方案

我为小李提供了一个Python脚本,能够自动进行模糊匹配。脚本的逻辑是:对于A列【详细地址】的全称和B列【市】的关键词,计算两者之间相同字符的数量。如果在B列的关键词中找到与A列全称相同字符的数量大于3,则认为匹配成功,并返回A列中对应的全称。

import pandas as pd# from jieba import posseg # 用于中文分词def chinese_char_count(some_string): return len([c for c in some_string if c >= '\u4e00'])def match_by_similarity(df, full_col, kw_col, len_threshold=3): result_list = [] for index, row in df.iterrows(): keywords = row[kw_col] print(keywords) keyword_words = [w for w in keywords] # print(keyword_words) for index1, row1 in df.iterrows(): full_name = row1[full_col] # print(full_name) # 对中文进行分词 full_name_words = [w for w in full_name] # 计算相同字数 common_words = set(full_name_words) & set(keyword_words) # print(common_words) if chinese_char_count(''.join(common_words)) >= len_threshold: print(common_words) df.at[index, 'Matched'] = full_name break else: df.at[index, 'Matched'] = "没有匹配到" return df# 读取Excel文件df = pd.read_excel('test3.xlsx')# 执行模糊匹配data = match_by_similarity(df, "详细地址", "市")print(data)4.效果展示

使用我们的脚本,小李现在可以在几秒钟内完成之前需要几天的工作。这个自动化脚本不仅提高了效率,还减少了因手动操作导致的错误。市区信息和详细地址信息完全匹配上了。

结语

Python自动化不仅仅是编程技巧的展示,更是一种工作方式的革新。它能够帮助我们从重复性劳动中解放出来,让我们有更多时间去做更有创造性的工作。小李的故事和快递公司的实际应用案例证明了自动化的力量,希望他们的经历能够激励更多的人去探索和利用Python自动化办公的无限可能。

如果你也像小李一样,面临着数据分析的苦恼,或者对Python脚本的编写有任何疑问,欢迎在评论区留言,我们将为你提供一对一的技术支持!

本文为原创技术文章,转载请标明出处。如果你喜欢本文,别忘了点赞、转发和关注我们的公众号,获取更多技术干货!

数海丹心

大数据和人工智能知识分享与应用

132篇原创内容

公众号

0 阅读:0

我是智能取经人

简介:感谢大家的关注