一、 Excel 與 Python 的交互關系
Excel 作爲全世界使用最廣泛的工具,基本等價于辦公室表格表格必備工具。但是對于其VBA的編程則是相對蹩腳~
Python作爲大數據和人工智能的開發語言,擁有衆多成型的工具庫,特別是使用最廣泛的的 Pandas,以及SK-Learn 等算法模型包。(當然,在Excel裏面調用Python TensorFlow實現AI的功能,應該就說不過去的啦~)。
但是,Excel 中怎麽調用 Python,在Excel中也能夠玩Python的算法和模型——是對衆多Excel用戶的賦能。其中,xlwings——則爲基于 Excel 調用 Python提供了完美的支持!
三、 xlwings的安裝與使用
xlwings 的中文官方文檔:https://docs.xlwings.org/zh_CN/latest/installation.html
3.1 xlwings 的安裝:pip install xlwings
或者
conda install xlwings
3.2 xlwings 的使用
xlwings 的使用分爲兩個場景: 一個是以 Python爲主,直接通過 xlwings 控制Excel的各種數值和運算;另外一種情況就是以Excel爲主,通過xlwings 調用Python標准庫,得到結果之後再返回Excel。
3.2.1 以Python爲主,通過 xlwings 控制Excel
如果你在ipython/python交互模式下,同時你打開了一個Excel表格.可以簡單地對當前活動進行操作,以及獲取單元格信息。
>>> import xlwings as xw #A1單元格輸入”DataClubs” >>> xw.Range(‘A1’).value = ‘DataClubs’ #獲取A1單元格的值 >>> xw.Range(‘A1’).value ‘DataClubs’
可以讀取Numpy數組和Pandas的DataFrames數組,填充到單元格。同時也很容易從表格中按自己的方式讀取數組。
Sub HelloWorld() RunPython (“import hello; hello.world()”) End Sub
Matplotlib圖標也可以作爲圖片顯示在Excel中
>>> import matplotlib.pyplot as plt >>> fig = plt.figure() >>> plt.plot([1, 2, 3, 4, 5]) [<matplotlib.lines.Line2D at XXXXXX>] >>> wb = xw.Book() >>> wb.sheets[0].pictures.add(fig, name=’MyPlot’, update=True) <Picture ‘MyPlot’ in <Sheet [Workbook4]Sheet1>>
3.2.2 以Excel爲主,通過 xlwings 調用Python標准庫——Excel宏和UDFs函數的方式
首先,通過Excel的的查看代碼,定義以下的函數——需要注意的是函數的名稱和路徑直接影響下一步中對應的 Python文件的名稱和具體的函數名稱
import xlwings as xw @xw.func def hello(name): return ‘Hello {0}’.format(name)
然後,基于以上定義的函數中對應的hello文件名稱,以及對應的world的函數名稱確定,調用 Python的文件名和函數名即可。具體如下:
# hello.py import numpy as np import xlwings as xw
def world(): wb = xw.Book.caller() wb.sheets[0].range(‘A1’).value = ‘Hello World!’
另外, 也可以直接按照以下的方式定義用戶自定義函數(UDFs)——該種情況,在財務報表的分析中可以根據實際情況進行相對標准的定義。(注意,此時的關鍵詞是:@xw.func)
import xlwings as xw @xw.func def hello(name): return ‘Hello {0}’.format(name)
四、 Excel + Python 獲取的中國股票數據的案例
以下是通過 xlwings 實現的,基于Excel調用 Python 獲取的各種股票數據,進而達到玩數據的相關過程。