后来交接的同事告诉我,她用的Excel的 vlookup 函数,当匹配不上的时候,就手工搜索……
然后……我……
就这样,经历了噩梦般的几个月……
等到了2022年年初,看到了 Python办公自动化,应该在理论上能替我处理所有事情(生孩子应该不行~~)
那我为什么不试着用Python去替我完成工作呢?
走了一些弯路,但胜过原地踏步
我的第一步是从数据清洗开始的。(当然那时并不知道这个叫数据清洗)先把刚才说的那个70M的Excel导成csv,去掉了其中不必要的格式、样式、对象等。然后我想统一一下各个数据的标准名称,刚才说了,由于经手的人太多,同一个数据,怎么表述的都有,几十万的数据量,人工交叉比对的话显然是不现实的。(后来才知道了笛卡尔积这个词)我第一步先使用了Excel自身的去重功能,将所有的供货商名称进行了一个去重,剩下了大概5000个左右的名称。然后,作为一个懒人,我肯定不会用人工去比对了。Python有一个库,叫做fuzzywuzzy,用它来进行模糊匹配。
from fuzzywuzzy import fuzz
print( fuzz.ratio("内容1", "内容2"))
会输出一个0——100的数字,数字越大代表这两个内容越相似。
所以我就写了一个循环,把这5000多个项目里面,匹配度超过70%以上的数据组都筛了出来,再去Excel里面手工替换(没办法,那时候还不会操作Excel)
然后整理了一下各个行列的位置,这样我就有了一个相对准确的数据源。
后来思考了一下,把数据存在Excel里面不是个长久之计啊,毕竟几十万数据呢,就想把数据导入到数据库里。大学时候考过计算机二级的Access(当然,虽然我考过,但是没考过……),就想导入Access,可是那个Python库没弄明白,硬是读不出来,就卡死了。
后来想到,之前自己从网上下载的某某私服的一键端里,有个MySQL数据库的一键启动方式,试了试居然能用,就把那个MySQL程序整个拷出来、清干净,作为了我的数据库。(当时想学怎么自己配置MySQL来着,没研究明白……这个数据库也就是我们现在提供的MySQL数据库的前身,当然了,我们现在提供的是重新制作的无毒的船新版本)
然后就是使用Navicat导入Excel,使用pymysql库进行读取,这样,咱也是趁数据库的人了~
接下来,就是要进行数据分析了,由于当时没学会pandas,数据透视图的效果死活做不出来,不得已,只好新建N个列表,用一堆if…else… ,把同类数据存入同一个列表中,求和,求平均值之类的(笨办法也是办法,能抓住耗子就是好猫,先把程序跑起来能用就好)
分析出了结果,要写入excel了,但是由于没有研究明白怎么进行追加写入(xlutils库各种限定太多了……),只好使用xlwt把数据写到一个空Excel中,然后手工把一整片复制粘贴过去……反正也是解决了……能用了……
因为每天的仓库返回的数据还要向数据库里追加,就写了个录入程序,先用xlrd读取、然后fuzzywuzzy模糊匹配、最后pymysql写入。
这时候,我的工作已由每天七八个小时,进化到了每天4小时左右。(这一部分代码就不贴了,祖传代码向来被称为屎山,这些代码也是简陋的过分的那种……)
走上杂务工作的快车道
当你实现一部分的工作自动化以后,你就会走上一个“工作自由”的快车道,因为你有更多的时间能用来研究如何去更高效的完成余下的那堆工作,然后,每天工作的时间就会越来越短。
为什么上文中我有那么多括号写的各种搞不定?因为没时间啊!
现在好了,每天的工作时间已经被我砍了一半了,那么我就可以思考,如何解决各类的技术问题。
我学会了Excel的各种库,比如xlrd、xlwt、xlsxwriter、openpyxl、xlwings、win32com,能根据自己的需要选择需要用的库;还学会了同属Office系列的python-docx和python-pptx,开始尝试自动制作Word和PPT;学会了自动发邮件的stmp库、zmail库;学会了能操作微信发消息的itchat;学了爬虫、学了解压缩、学了调整图片大小、学了Word转pdf等等等等很多库或者功能。
随着学习,每天的工作时间越来越短……
现在,我每天的工作,只需要十分钟,最快记录四分钟,就能完成。
每天上班,第一件事,优雅的运行一个py文件,一堆import后面,只有
就完成了日常工作,然后就是需要打印,手签,送各领导审阅的过程了。
一个保守的、传统的、几十年都不会起一丝波澜的国有企业,硬生生被我干出来了一个IT岗,升职加薪都已达成。
后续的思考
现在,我能极快的完成每天的工作,而后就是大片的学习思考的时间。如今,
我已经,把数据库移到了一台淘汰下来的办公电脑上,又用另外一台热备,作为公共联网数据库;
我已经,用pyqt写了一个带gui的数据输出软件,所有同事都可以自由输出数据进行分析了;
我已经,用pandas、matplotlib写了一个自动生成数据分析图片的软件,再做月报、周报什么的汇报材料,不用再通过Excel手工作图了;
我已经,用pandas、matplotlib配合pyqt写了一个入库分析软件,大家输入时间段和限定条件后一键进行数据分析了,不会有同事老找我要数据了;
我已经,用xlrd、python-docx写了一个合同生成器,旺季采购的同事不用焦头烂额的改合同了;
我已经,用numpy配合pyqt做了一个购销存平衡软件,可以让领导们在决策时通过拖动滑块就可以实时展现不同购、销情况下库存情况了;
我已经,用爬虫配合pymysql写了一个实时粮价获取数据库,告别了浏览网页逐行复制价格的方式;
那么,你呢?是每天继续做着重复的工作,还是从工作中解放自己,去拥抱更大的世界呢。
关于Python的技术储备
如果你是准备学习Python或者正在学习,下面这些你应该能用得上:
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。
四、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
五、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!