用 Python 自動化辦公,我與大神之間的差距一下就拉小了

我想介紹一下我是如何從每天工作8小時,進(jìn)化成每天工作10分鐘的,以下不涉及太多的技術(shù)細(xì)節(jié)。

0.先自我介紹一下:

我不是程序員,大學(xué)學(xué)的也不是IT專業(yè)。

我在一個主要業(yè)務(wù)是成品糧交易的企業(yè)工作,我的崗位的主要工作就是制作各類數(shù)據(jù)統(tǒng)計報表、臺賬、數(shù)據(jù)圖表等等,反正就是各類日報,每天都要做一遍,此外還有什么周報月報什么的……這個崗位之前的同事,每天至少要花3.5到4個小時去折騰Excel,使用數(shù)據(jù)透視圖、vlookup、其他各類函數(shù)去做出一份內(nèi)含3000多個數(shù)據(jù)的日報。如果領(lǐng)導(dǎo)臨時安排什么工作的話,那就要加班從浩如煙海的數(shù)據(jù)里找領(lǐng)導(dǎo)要的東西了。

1.噩夢開始時:

我剛接手工作時,我們有一個巨大的,達(dá)70多M的Excel文件,每次公司配發(fā)的破電腦打開就需要小二十分鐘,里面存著我們近十年的采購的每一車的詳細(xì)信息……然后里面的數(shù)據(jù)格式還都是混亂的,

打個比方,比如我們有個供貨商全名叫:ABCD有限責(zé)任公司,

那么這個Excel中會存有

AB公司、

AB有限公司、

CD有限責(zé)任公司、

CD責(zé)任有限公司、

ACBD有限公司

ABD公司

等等等等名字

在我第一天看到這個Excel的時候

后來交接的同事告訴我,她用的Excel的 vlookup 函數(shù),當(dāng)匹配不上的時候,就手工搜索……

然后……我……

就這樣,經(jīng)歷了噩夢般的幾個月……

等到了2017年年初,看到一個詞:

圖靈完備。

一個圖靈完備的語言理論上能解決任何算法。

|

|

V

顯然,Python是一種圖靈完備的語言。

|

|

V

那Python應(yīng)該在理論上能替我處理所有事情(生孩子應(yīng)該不行~~)

|

|

V

我為什么不試著用Python去替我完成工作呢?

2.走了一些彎路,但勝過原地踏步

我的第一步是從數(shù)據(jù)清洗開始的。(當(dāng)然那時并不知道這個叫數(shù)據(jù)清洗)

先把剛才說的那個70M的Excel導(dǎo)成csv,去掉了其中不必要的格式、樣式、對象等。

然后我想統(tǒng)一一下各個數(shù)據(jù)的標(biāo)準(zhǔn)名稱,剛才說了,由于經(jīng)手的人太多,同一個數(shù)據(jù),怎么表述的都有,幾十萬的數(shù)據(jù)量,人工交叉比對的話顯然是不現(xiàn)實(shí)的。(后來才知道了笛卡爾積這個詞)

我第一步先使用了Excel自身的去重功能,將所有的供貨商名稱進(jìn)行了一個去重,剩下了大概5000個左右的名稱。

然后,作為一個懶人,我肯定不會用人工去比對了。

Python有一個庫,叫做fuzzywuzzy,用它來進(jìn)行模糊匹配。

from fuzzywuzzy import fuzz

print( fuzz.ratio("內(nèi)容1", "內(nèi)容2"))

會輸出一個0——100的數(shù)字,數(shù)字越大代表這兩個內(nèi)容越相似。

所以我就寫了一個循環(huán),把這5000多個項目里面,匹配度超過70%以上的數(shù)據(jù)組都篩了出來,再去Excel里面手工替換(沒辦法,那時候還不會操作Excel)

然后整理了一下各個行列的位置,這樣我就有了一個相對準(zhǔn)確的數(shù)據(jù)源。

后來思考了一下,把數(shù)據(jù)存在Excel里面不是個長久之計啊,畢竟幾十萬數(shù)據(jù)呢,就想把數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫里。大學(xué)時候考過計算機(jī)二級的Access(當(dāng)然,雖然我考過,但是沒考過……),就想導(dǎo)入Access,可是那個Python庫沒弄明白,硬是讀不出來,就卡死了。

后來想到,之前自己從網(wǎng)上下載的某某私服的一鍵端里,有個MySQL數(shù)據(jù)庫的一鍵啟動方式,試了試居然能用,就把那個MySQL程序整個拷出來、清干凈,作為了我的數(shù)據(jù)庫。(當(dāng)時想學(xué)怎么自己配置MySQL來著,沒研究明白……這個數(shù)據(jù)庫也就是我們現(xiàn)在提供的MySQL數(shù)據(jù)庫的前身,當(dāng)然了,我們現(xiàn)在提供的是重新制作的無毒的船新版本)

然后就是使用Navicat導(dǎo)入Excel,使用pymysql庫進(jìn)行讀取,這樣,咱也是趁數(shù)據(jù)庫的人了~

接下來,就是要進(jìn)行數(shù)據(jù)分析了,由于當(dāng)時沒學(xué)會pandas,數(shù)據(jù)透視圖的效果死活做不出來,不得已,只好新建N個列表,用一堆if...else... ,把同類數(shù)據(jù)存入同一個列表中,求和,求平均值之類的(笨辦法也是辦法,能抓住耗子就是好貓,先把程序跑起來能用就好

分析出了結(jié)果,要寫入excel了,但是由于沒有研究明白怎么進(jìn)行追加寫入(xlutils庫各種限定太多了……),只好使用xlwt把數(shù)據(jù)寫到一個空Excel中,然后手工把一整片復(fù)制粘貼過去……反正也是解決了……能用了……

因?yàn)槊刻斓膫}庫返回的數(shù)據(jù)還要向數(shù)據(jù)庫里追加,就寫了個錄入程序,先用xlrd讀取、然后fuzzywuzzy模糊匹配、最后pymysql寫入。

這時候,我的工作已由每天七八個小時,進(jìn)化到了每天4小時左右。

(這一部分代碼就不貼了,祖?zhèn)鞔a向來被稱為屎山,這些代碼也是簡陋的過分的那種……)

3.走上雜務(wù)工作的快車道

羅伯特·清琦寫的那本《富爸爸窮爸爸》提出過一個概念,當(dāng)你實(shí)現(xiàn)財務(wù)自由以后,你的財富積累就會走上良性循環(huán)的快車道,你的就會越來越容易提高被動收入。

同理,當(dāng)你實(shí)現(xiàn)一部分的工作自動化以后,你就會走上一個“工作自由”的快車道,因?yàn)槟阌懈嗟臅r間能用來研究如何去更高效的完成余下的那堆工作,然后,每天工作的時間就會越來越短。

為什么上文中我有那么多括號寫的各種搞不定?因?yàn)闆]時間啊!

現(xiàn)在好了,每天的工作時間已經(jīng)被我砍了一半了,那么我就可以思考,如何解決各類的技術(shù)問題。

我學(xué)會了Excel的各種庫,比如xlrd、xlwt、xlsxwriter、openpyxl、xlwings、win32com,能根據(jù)自己的需要選擇需要用的庫;還學(xué)會了同屬Office系列的python-docx和python-pptx,開始嘗試自動制作Word和PPT;學(xué)會了自動發(fā)郵件的stmp庫、zmail庫;學(xué)會了能操作微信發(fā)消息的itchat;學(xué)了爬蟲、學(xué)了解壓縮、學(xué)了調(diào)整圖片大小、學(xué)了Word轉(zhuǎn)pdf等等等等很多庫或者功能。上班時間已經(jīng)很累了,但是我還是學(xué)歷很多,其中的艱辛確實(shí)難以外道。不過有個可以交流的空間是很不錯的,如果有想跟我交流的,可以加我當(dāng)時學(xué)習(xí)的QQ群一起學(xué)習(xí)進(jìn)步啊,639+584+010,可以一起學(xué)習(xí)進(jìn)步啊~

隨著學(xué)習(xí),每天的工作時間越來越短……

現(xiàn)在,我每天的工作,只需要十分鐘,最快記錄四分鐘,就能完成。

每天上班,第一件事,優(yōu)雅的運(yùn)行一個py文件,一堆import后面,只有

這樣就完成了日常工作,然后就是需要打印,手簽,送各領(lǐng)導(dǎo)審閱的過程了。

一個保守的、傳統(tǒng)的、幾十年都不會起一絲波瀾的國有企業(yè),硬生生被我干出來了一個IT崗,升職加薪都已達(dá)成。

4、后續(xù)的思考

現(xiàn)在,我能極快的完成每天的工作,而后就是大片的學(xué)習(xí)思考的時間。

如今,我已經(jīng),把數(shù)據(jù)庫移到了一臺淘汰下來的辦公電腦上,又用另外一臺熱備,作為公共聯(lián)網(wǎng)數(shù)據(jù)庫;

我已經(jīng),用pyqt寫了一個帶gui的數(shù)據(jù)輸出軟件,所有同事都可以自由輸出數(shù)據(jù)進(jìn)行分析了;

我已經(jīng),用pandas、matplotlib寫了一個自動生成數(shù)據(jù)分析圖片的軟件,再做月報、周報什么的匯報材料,不用再通過Excel手工作圖了;

我已經(jīng),用pandas、matplotlib配合pyqt寫了一個入庫分析軟件,大家輸入時間段和限定條件后一鍵進(jìn)行數(shù)據(jù)分析了,不會有同事老找我要數(shù)據(jù)了;

我已經(jīng),用xlrd、python-docx寫了一個合同生成器,旺季采購的同事不用焦頭爛額的改合同了;

我已經(jīng),用numpy配合pyqt做了一個購銷存平衡軟件,可以讓領(lǐng)導(dǎo)們在決策時通過拖動滑塊就可以實(shí)時展現(xiàn)不同購、銷情況下庫存情況了;

我已經(jīng),用爬蟲配合pymysql寫了一個實(shí)時糧價獲取數(shù)據(jù)庫,告別了瀏覽網(wǎng)頁逐行復(fù)制價格的方式;

未來,我計劃做一個公司內(nèi)部網(wǎng)站,把之前的所有C/S架構(gòu)的軟件都改成B/S。

未來,我計劃做一個數(shù)據(jù)駕駛艙,供領(lǐng)導(dǎo)決策使用。

未來,我計劃做一個訪客人臉識別,方便在重要客戶進(jìn)大門以后提醒領(lǐng)導(dǎo)到門口迎接。

未來,我計劃做一個更智能的爬蟲,能在網(wǎng)上自動收集市場信息。

未來,我計劃做一個更智能的進(jìn)銷存平衡軟件,能使用最優(yōu)化進(jìn)行購銷平衡計算。

未來,我計劃做一套發(fā)票管理系統(tǒng)給財務(wù)、一套物料管理系統(tǒng)給物資、一套工資系統(tǒng)給HR……

那么,你的未來,是每天繼續(xù)做著重復(fù)的工作,還是從工作中解放自己,去擁抱更大的世界呢。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容