python自动化报表定时跑_POINTer分享:Python如何做报表自动化
點點寫在前面:
歐陽山東 @我最帥 作為小數點Python第二期的學員又雙叒叕來分享干貨啦!自東哥上次分享完關于咖啡館的分析后,后臺突然冒出各種靈魂拷問,如何學習Python的鴨?還有沒有別的分析案例鴨?這次他給大家帶來一個新分享,關于如何用Python做報表自動化。
記得我在上次分享的時候,說了Python可以實現很多自動化設計,有些還很高端。
當然了,東哥目前的功力,高端的還是做不來,但是簡單的還是可以的。
所以今天我教你做兩個簡單而且實用的自動化,第一,報表生成自動化;第二,郵件發送自動化。
但我想說明的是,并不是所有報表都是需要或者適合做自動化的。
我們做自動化的目的是為了減少工作量,把一些重復性的工作交給程序處理。
在數據分析實踐中,日報,周報,這種頻率性很強的東西,就需要自動化;而那些不同活動的效果數據,每次都不一樣,這樣的做自動化就沒有太大意義。
—1—報表自動化
我還是拿上次那個咖啡館的例子來做案例。數據如下:
如果我想實現下面這個效果,怎么做自動化呢?
如果你每個月或者每周要這樣一張表,而且這張表的數據都放在SQL里或者excel文件里,那么你就要告訴Python,怎么從這些表里做數據,這個做的過程,也就是自動化實現的過程。
解釋一下:同比是指和去年同月相比;環比是指和上個月相比。
1、寫本月(8月)數據代碼
s代表銷售額,t代表銷售量(客流量),k代表件均銷售額。
2、寫上月(7月)數據代碼
3、寫去年(8月)數據代碼
4、將上面三段代碼算出的數據綜合為一張表,然后算出同比環比,且將數據保存為“本月數據同比環比情況”表格到桌面備用,代碼如下:
至此,我們想要的數據已經全部拿到了,以后你想要這樣的表格,稍微改一下然后運行一下這段代碼就好了。
我舉例的這個表格還很簡單,主要是為了演示更清晰,所以還看不出自動化的威力。但是如果是大量的日報數據指標,自動化的便捷就出來了。
所以,是不是很省事呢?
—2—代碼函數化
細心的你,可能此刻已經看出我上面三段代碼幾乎是一模一樣的了,只是改了一下時間而已。
對的,問題就在這里。在Python里,你記住我的一句話,只要涉及到重復的東西,就必然可以優化代碼,這個優化過程,可以用自定義函數來解決。
定義好函數后,你就可以重復用這段函數幫你算數據了。
所以我先定義了一個monthly_data(df)函數用來算每個月的數據,就是黑色方框里的。這樣你想要哪個月的數據,你就用這個月的數據去套用函數就行。
我把函數運行了3次,分別算出本月,上月,去年同月的數據,完整代碼如下:
當然,結果也一模一樣:
你會發現,運用了函數后,代碼可以寫得更少,而且可讀性更強。另外說一嘴,會不會函數編程是區分菜鳥和熟手的重要區別嘍。
—3—郵件自動化
我不知道大家都用的是什么郵箱,反正我一直用的是QQ郵箱。不過不管什么郵箱,自動化流程都是差不多的,下面我用自己的QQ郵箱來做個例子。
這個代碼會用到很多大家并不熟悉的第三方庫,沒辦法,我今天也是弄了很久,百度了很多東西才搞懂的。
不過你不需要為此多費心了,因為我幫你搞通了,你只要按照我的代碼去做,就OK。
首先要在郵箱里進行設置。
紅色方框里的東西打開,這樣可以獲得授權碼用來在Python中執行登錄發送等動作。
好,接下來就是自動化發郵件的代碼實現了。完整代碼如下:
代碼寫好了,運行后,即可收到郵件。
哎,這個過程我其實花了很多時間,中間遇到好幾個bug沒辦法解決,比如設置附件啊,服務器端口啊地址啊,出現了索引錯誤啊,這些都是通過百度一個一個找別人的經驗然后復制代碼試錯最后完成的。
好了,不說了,我們來看看結果吧:
看到沒,紅色方框里的東西都是我在上面代碼中寫好的。所以郵件自動化發送還是很簡單的對不對?
嗯,今天的分享就到這里,我希望以后每周周末都能做個數據分析的小案例分享。大家可以一起玩啊,我還只是小菜鳥。
END
文章作者小數點python數據分析課程第二期學員 @我最帥
更多python數據分析干貨,歡迎關注我們的微信公眾號:POINT小數點數據
總結
以上是生活随笔為你收集整理的python自动化报表定时跑_POINTer分享:Python如何做报表自动化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python线程退出_python子线程
- 下一篇: python通过connect对象连接数