欢迎大家来到IT世界,在知识的湖畔探索吧!
摘要: 还在为Excel中的模糊匹配和规则匹配头疼吗?Python自动化办公来拯救你的工作效率!跟随我们的粉丝朋友和朋友快递公司地址匹配的故事,一起见证Python如何轻松实现模糊匹配,释放你的双手!
引言
在数据的海洋中,全体打工人都面临着Excel数据处理的挑战。Excel的Vlookup函数在精确匹配上表现出色,但面对模糊匹配和按规则匹配时却显得无能为力。近期一位微信公众号粉丝在文章后面留言,寻求一种能够快速、准确进行模糊匹配的方法。今天,我们就来揭秘如何利用Python自动化办公工具,解决这一难题。
1.粉丝的挑战和我朋友的窘境
一位粉丝朋友在微信公众号文章后面上言:“斗胆提一个问题,A1单元格内容是‘数海丹心最棒无敌是多么寂寞’,B1单元格内容是‘数海丹心最棒’。A列的内容是全称,B列的内容是其中几个关键字,如何进行匹配,如超过相同的5个字即返回A列对应的内容。”
欢迎大家来到IT世界,在知识的湖畔探索吧!
这与我之前为朋友小李做过的一个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)
欢迎大家来到IT世界,在知识的湖畔探索吧!
欢迎大家来到IT世界,在知识的湖畔探索吧!
4.效果展示
使用我们的脚本,小李现在可以在几秒钟内完成之前需要几天的工作。这个自动化脚本不仅提高了效率,还减少了因手动操作导致的错误。市区信息和详细地址信息完全匹配上了。
结语
Python自动化不仅仅是编程技巧的展示,更是一种工作方式的革新。它能够帮助我们从重复性劳动中解放出来,让我们有更多时间去做更有创造性的工作。小李的故事和快递公司的实际应用案例证明了自动化的力量,希望他们的经历能够激励更多的人去探索和利用Python自动化办公的无限可能。
如果你也像小李一样,面临着数据分析的苦恼,或者对Python脚本的编写有任何疑问,欢迎在评论区留言,我们将为你提供一对一的技术支持!
本文为原创技术文章,转载请标明出处。如果你喜欢本文,别忘了点赞、转发和关注我们的公众号,获取更多技术干货!
数海丹心
大数据和人工智能知识分享与应用
132篇原创内容
公众号
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/127968.html