c调用python gensim包_Jupyter Notebooks嵌入Excel并使用Python替代VBA宏
以前,Excel和Python Jupyter Notebook之間我們只能選擇一個(gè)。但是現(xiàn)在隨著PyXLL-Jupyter軟件包的推出,可以將兩者一起使用。
在本文中,我將向你展示如何設(shè)置在Excel中運(yùn)行的Jupyter Notebook。在這兩者之間共享數(shù)據(jù),甚至可以從Excel工作簿調(diào)用Jupyter筆記本中編寫的Python函數(shù)!
開(kāi)始
首先,要在Excel中運(yùn)行Python代碼,你需要使用PyXLL包。PyXLL使我們可以將Python集成到Excel中,并使用Python代替VBA。要安裝PyXLL Excel加載項(xiàng)“ pip install pyxll”,然后使用PyXLL命令行工具安裝Excel的加載項(xiàng):
?>> pip install pyxll>> pyxll install安裝完P(guān)yXLL Excel插件,下一步就是安裝PyXLL -jupyter軟件包。該軟件包提供了PyXLL和Jupyter之間的鏈接,因此我們可以在Excel內(nèi)使用Jupyter筆記本。
使用pip安裝pyxll-jupyter包:
?>> pip install pyxll-jupyter一旦安裝了PyXLL Excel加載項(xiàng)和PyXLL-Jupyter軟件包后,啟動(dòng)Excel將在PyXLL選項(xiàng)卡中看到一個(gè)新的“ Jupyter”按鈕。
單擊此按鈕可在Excel工作簿的側(cè)面板中打開(kāi)Jupyter筆記本。該面板是Excel界面的一部分,可以通過(guò)拖放操作取消停靠或停靠在其他位置。
在Jupyter面板中,你可以選擇一個(gè)現(xiàn)有的筆記本或創(chuàng)建一個(gè)新的筆記本。要?jiǎng)?chuàng)建一個(gè)新的筆記本,請(qǐng)選擇“新建”按鈕,然后選擇“ Python 3”。
如何使用
現(xiàn)在,你已經(jīng)在Excel中運(yùn)行了完整的Jupyter筆記本!但是,這有什么好處呢?這比在Excel外部運(yùn)行筆記本更好?
好了,現(xiàn)在你可以使用Excel處理數(shù)據(jù),并使用Python處理相同的數(shù)據(jù)。將Excel用作用于組織和可視化數(shù)據(jù)的交互式操作,無(wú)縫切換到Python以使用更復(fù)雜的功能。
將Jupyter筆記本用作草稿板,以試用Python代碼。在Jupyter筆記本上完全用Python編寫Excel函數(shù),并進(jìn)行實(shí)時(shí)測(cè)試。開(kāi)發(fā)完一個(gè)有用的可重用函數(shù)后,將其添加到PyXLL Python項(xiàng)目中。這樣你每次使用Excel時(shí)都可以使用相同的函數(shù)。
在本文的其余部分,我將向你展示如何:
使用Jupyter筆記本在Excel和Python之間共享數(shù)據(jù)
在筆記本上寫Excel工作表函數(shù)(udf)
腳本Excel與Python代替VBA
從Excel獲取數(shù)據(jù)到Python
因?yàn)镻yXLL在與Excel相同的進(jìn)程中運(yùn)行Python,所以用Python訪問(wèn)Excel數(shù)據(jù)以及在Python和Excel之間快速調(diào)用。
為了使事情盡可能簡(jiǎn)單,pyxll-jupyter包附帶了一些IPython“魔法”函數(shù),可以在你的Jupyter筆記本中使用。
% xl_get
excel sheet 與 Pandas DataFrames 同步
使用魔術(shù)函數(shù)“%xl_get”來(lái)獲取Python中當(dāng)前的Excel選擇。在Excel中創(chuàng)建數(shù)據(jù)表, 選擇左上角(或整個(gè)范圍),然后在Jupyter筆記本中輸入“%xl_get”,瞧!Excel表現(xiàn)在是pandas DataFrame。
%xl_get魔術(shù)函數(shù)有幾個(gè)選項(xiàng):
? -c或--cell。傳遞單元格的地址以獲取值,例如%xl_get --cell A1:D5。 -t或--type。指定獲取值時(shí)要使用的數(shù)據(jù)類型,例如%xl_get --type numpy_array。 -x或--no-auto-resize。僅獲取選定范圍或給定范圍的數(shù)據(jù)。不要擴(kuò)展到包括周圍的數(shù)據(jù)范圍。PyXLL還有其他與Excel交互以將數(shù)據(jù)讀入Python的方式。“%xl_get”魔術(shù)功能只是使事情變得更簡(jiǎn)單!當(dāng)Jupyter筆記本在Excel中運(yùn)行時(shí),所有其他方法(例如,使用XLCell類,Excel的COM API甚至xlwings)仍然可用。
提示:可以為魔術(shù)函數(shù)的結(jié)果分配一個(gè)變量!例如,嘗試“ df =%xl_get”。
將Python中的數(shù)據(jù)移回Excel
從Python到Excel的另一種傳輸方式也可以正常工作。無(wú)論你是使用Python加載數(shù)據(jù)集并將其傳輸?shù)紼xcel工作簿,還是通過(guò)Excel處理數(shù)據(jù)集并希望將結(jié)果返回Excel,從Python復(fù)制數(shù)據(jù)到Excel都很容易。
?%xl_set魔術(shù)函數(shù)“%xl_set”獲取一個(gè)Python對(duì)象并將其寫入Excel。在Excel中是否有想要的數(shù)據(jù)框“ df”?只需使用“%xl_set df”,它將被寫入Excel中的當(dāng)前選擇。
與%xl_get一樣,%xl_set也具有一系列選項(xiàng)來(lái)控制其行為。你甚至可以使用PyXLL的單元格格式設(shè)置功能在將結(jié)果寫入Excel的同時(shí)自動(dòng)應(yīng)用格式設(shè)置。
?-c或--cell。將值寫入的單元格地址,例如%xl_set VALUE --cell A1。-t或--type。將值寫入Excel時(shí)要使用的數(shù)據(jù)類型說(shuō)明符,例如%xl_set VALUE --type dataframe 。-f或--formatter。PyXLL單元格格式化程序?qū)ο?#xff0c;例如%xl_set VALUE --formatter DataFrameFormatter()。請(qǐng)參閱單元格格式。-x或--no-auto-resize。不要自動(dòng)調(diào)整范圍大小以適合數(shù)據(jù)。僅將值寫入當(dāng)前選擇或指定范圍。與%xl_get一樣,%xl_set只是一個(gè)快捷方式,你可能已與PyXLL一起使用的所有其他寫回Excel的方式仍然可以在Jupyter筆記本中使用。
在Excel中使用Python圖(matplotlib / plotly等)
關(guān)于數(shù)據(jù)處理的一大優(yōu)點(diǎn)是可用的功能強(qiáng)大的繪圖程序包。例如df.plot()
PyXLL集成了所有主要的繪圖庫(kù),因此你也可以在Excel中充分利用它們。這包括matplotlib(由pandas使用),plotly,bokeh和altair。
?%xl_plot使用“%xl_plot”在Excel中繪制任何Python圖表。從一個(gè)受支持的繪圖庫(kù)中向其傳遞任何圖形對(duì)象,或使用最后一個(gè)pyplot圖形。使用pandas plot的效果也很好,例如。%xl_plot df.plot(kind='scatter').
%xl_plot魔術(shù)函數(shù)具有一些選項(xiàng)來(lái)控制其工作方式:
? -n或--name。Excel中圖片對(duì)象的名稱。如果使用已經(jīng)存在的圖片名稱,則該圖片將被替換。 -c或--cell。用作新圖片位置的單元格地址。如果圖片已經(jīng)存在,則無(wú)效。 -w或--width。Excel中圖片的寬度(以磅為單位)。如果更新現(xiàn)有圖片,則無(wú)效。 -h或--height。Excel中圖片的高度(以磅為單位)。如果更新現(xiàn)有圖片,則無(wú)效。%xl_plot是pyxll.plot函數(shù)的快捷方式。
從Excel調(diào)用Python函數(shù)
你可以直接從Excel工作簿中調(diào)用Python函數(shù),而不是在Excel和Jupyter之間不斷移動(dòng)數(shù)據(jù)然后運(yùn)行一些Python代碼
PyXLL的主要用例之一是用Python編寫自定義Excel工作表函數(shù)(或“ UDF”)。這用于在使用Python函數(shù)構(gòu)建的Excel中構(gòu)建模型,這些函數(shù)當(dāng)然可以使用其他Python庫(kù)(例如pandas和scipy)。
你也可以在Jupyter筆記本中編寫Excel工作表函數(shù)。這是在不離開(kāi)Excel即可使用Python IDE的情況下嘗試想法的絕佳方法。
自己試試吧。編寫一個(gè)簡(jiǎn)單的函數(shù),然后將“ pyxll.xl_func”修飾符添加到你的函數(shù)中:
?from pyxll import xl_func@xl_funcdef test_func(a, b, c): ? # This function can be called from Excel! ? return (a * b) + c輸入代碼并在Jupyter中運(yùn)行單元格后,即可立即從Excel工作簿中調(diào)用Python函數(shù)。
不只是簡(jiǎn)單的功能。你可以將整個(gè)數(shù)據(jù)范圍作為pandas DataFrames傳遞給函數(shù),并返回任何Python類型,包括numpy數(shù)組和DataFrames!你可以通過(guò)給@xl_func裝飾器一個(gè)參數(shù)字符串來(lái)告訴PyXLL期望什么類型。
例如,嘗試以下方法:
?from pyxll import xl_func# The "signature" tells PyXLL how to convert the arguments# and returned value.@xl_func("dataframe df: dataframe", auto_resize=True)def df_describe(df): ? # 'df' is a pandas DataFrame built from the range passed ? # to this function. ? desc = df.describe() ? ? ? # 'desc' is a new DataFrame, which PyXLL will convert to ? # a range of values when returning to Excel. ? return desc現(xiàn)在,你可以編寫復(fù)雜的Python函數(shù)來(lái)進(jìn)行數(shù)據(jù)轉(zhuǎn)換和分析,Excel中如何調(diào)用或排序這些函數(shù)。更改輸入會(huì)導(dǎo)致調(diào)用函數(shù),并且計(jì)算出的輸出會(huì)實(shí)時(shí)更新,這與你期望的一樣!
在Excel中使用Python而不是VBA的腳本
你是否知道在VBA中可以執(zhí)行的所有操作也可以在Python中完成?編寫VBA時(shí)將使用Excel對(duì)象模型,但是Python也提供相同的API。
在Excel中運(yùn)行的Jupyter筆記本中,可以使用整個(gè)Excel對(duì)象模型,因此你可以使用與Excel VBA編輯器中完全相同的方式編寫Excel腳本。
由于PyXLL在Excel進(jìn)程內(nèi)運(yùn)行Python,因此從Python調(diào)用Excel不會(huì)對(duì)性能造成任何影響。也可以從外部Python進(jìn)程調(diào)用Excel,但這通常要慢得多。在Excel中運(yùn)行Jupyter筆記本也使一切變得更加便捷!
使用PyXLL的xl_app函數(shù)獲取“ Excel.Application”對(duì)象,該對(duì)象等效于VBA中的Application對(duì)象。嘗試進(jìn)行諸如獲取當(dāng)前選擇和更改單元格內(nèi)部顏色之類的操作。弄清楚如何使用Excel對(duì)象模型進(jìn)行操作的一種好方法是記錄VBA宏,然后將該宏轉(zhuǎn)換為Python!PyXLL文檔頁(yè)面Python作為VBA的替代品提供了一些有關(guān)如何做到這一點(diǎn)的技巧。
總結(jié)
Python是VBA的強(qiáng)大替代品。使用PyXLL,你可以完全用Python編寫功能齊全的Excel加載項(xiàng)。Excel是一種出色的交互式計(jì)算工具。添加Python和Jupyter將Excel提升到一個(gè)全新的水平。
使用Jupyter筆記本編寫的代碼可以輕松地重構(gòu)為獨(dú)立的Python包,以創(chuàng)建Excel工具包來(lái)為直觀的工作簿和儀表板提供動(dòng)力。任何Excel用戶都將能夠利用使用PyXLL編寫的Python工具,而無(wú)需任何Python知識(shí)。
最后 PyXLL的官網(wǎng)地址:https://www.pyxll.com/blog/python-jupyter-notebooks-in-excel/
作者:Tony Roberts
原文地址:https://towardsdatascience.com/python-jupyter-notebooks-in-excel-5ab34fc6439
deephub翻譯組
總結(jié)
以上是生活随笔為你收集整理的c调用python gensim包_Jupyter Notebooks嵌入Excel并使用Python替代VBA宏的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 新买的笔记本电脑怎么分盘_别再吐槽游戏本
- 下一篇: linux cached释放_正点原子L