Python中你不知道的小工具:如何用Python寫VBA
強烈希望招小編!強烈希望招小編!強烈希望招小編!重要的事情說三遍!主要是排版和對錯別字的檢查,當然還有督促我快寫。有酬謝。歡迎留言。
首先要向各位觀眾老爺道歉,小弟前兩個月的時間一直在準備面試,面了Captial One、GoldmanSach、Bloomberg等等,實在無暇顧及寫公眾號,本著不粗製爛造、寧可不寫也不亂寫的原則,畢竟本公眾號旨在教大家實實在在的Python,並不是那些為了盈利的公眾號,這兒拆一點、那兒借一點,亂七八糟的。既然現在新工作已落定,要給大家好好寫公眾號了。一些觀眾老爺反映要講一些數據結構,我以後也會穿插著講一些,但實話實說,小弟的數據結構水平也僅是業餘水平,並沒有到登峰造極的高度。
今天我們來聊一聊VBA和Python。
我們之前介紹過Python作為一個interpreter(解釋器),理論上是能兼并任何語言的,於是有了numpy里用C定義的array等數據類型,和一系列用C定義的操作來改善Python作為一個編程語言在運行速度上的短版。現實的學習工作中,我們需要大量的使用Excel去呈現數據,Excel作為一個所見即所得的可視化軟體,也有VBA這樣的編程工具去做重複性的工作。那麼既然Python可以解釋C/JS等語言,VBA呢?答案是當然的。掌握這項技能,在以後的工作中可以省去大量的時間。
今天我們以Pandas中ExcelWriter為例來闡述一下如何用Python去產成Excel文件以及用Python編寫VBA。Data Source一般都是從Database里直接取得,這裡我們以示例為目的,所以就造了一些數據。我們將重點來說兩方面:1、如何用ExcelWriter將數據寫入Excel;2、如何用ExcelWriter寫VBA,進行畫圖。
Python interact with Excel
—
How to use ExcelWriter to write?
首先我們先看如何將數據寫入Excel。產生單一的CSV文件是非常簡單的,通常用df.to_csv()就行了,但如果要將很多數據寫入Excel的不同Sheets,就要用ExcelWriter了,咱們先看造的數據:
具體寫入Excel的步驟如下:
我們首先創立了一個ExcelWriter Object, engine 的選向是xlsxwriter,在內存中建立一個空的ExcelFile,存在指定的地址,然後我們將造的兩個dataframe放入writer里,給予sheetname,完全類比於to_excel方程的使用。我們就能產生如下的表格:
How to create chart in Excel via Python
然後我們將在Python中使用VBA去畫圖的部分,畫出來的圖如下:
當然不是在Excel中點點點做的圖,具體的代碼如下:
首先我們需要建立一個可以insert 進入Excel的chart的object,這個就需要用ExcelWriter().book.add_chart()的方程了,然後我們就開始了VBA,大家可以看到,所有的命名都和Excel中相同,包括add_series、set_y_axis、set_x_axis、set_title等,還有mionr_tick_type啊等等都一樣,設置形式都是用dictionary。在設置完chart object之後,需要用ExcelWriter去選定要寫入的sheet,然後在這個sheet object中用insert_chart()的功能,就可以把做好的插入到這個sheet中。需要說明的是:
1、『categories』:[『one』,1,3,6,3]的含義:one就是sheet的名字,接下來幾個數分別是row start index, column start index, row end index, column end index,就如同在excel中選框一樣,說明左上角和右下角就行了。
2、Worksheet.insert(『E1』,chart1)的含義:E1即chart1插入的位置,E1即excel中的E1格子。
那麼有人會問,我寫了這麼複雜的方程,還不如我在Excel里點幾下來得快。當然,如果你只畫一個圖的時候,點起來就行,但是,如果碰到如下這種情況呢?恐怕點起來得一天吧!
但用代碼,只需要寫一個造chart的方程,用一個loop就好了!感興趣的同學可以到咱們的github里去下載相應的代碼,主要注意使用的結構,即如何用function寫出高效率代碼。
※python 抓取開源中國上閱讀數大於 1000 的優質文章
※pandas創始人手把手教你利用Python進行數據分析
TAG:Python |