excel
和jupyter notebok
都是我每天必用的工具,而且兩個工具經常協同工作,一直以來工作效率也還算不錯。但說實在,畢竟是兩個工具,使用的時候肯定會有一些切換的成本。
最近,在逛github突然發現了一款神器「pyxll-jupyter」,它可以完美將jupyter notebook
嵌入到excel中!是的,你沒聽錯,使用它我們就可在excel
中執行jupyter notebook
,呼叫python函式,實現資料共享。
首先,想要在excel中執行python**,需要安裝pyxll
外掛程式。pyxll
可以將python整合到excel中,用python
替代vba
。
先用 pip 安裝pyxll
。
pip install pyxll
然後再用pyxll
獨特的命令列工具安裝excel外掛程式。
>> pyxll install
安裝好了pyxll
在 excel中的外掛程式,下一步就是安裝pyxll-jupyter
軟體包了。使用pip安裝pyxll-jupyter
軟體包:
pip install pyxll-jupyter
安裝完畢後,啟動excel,將在pyxll
選項卡中看到乙個新的jupyter
按鈕。
單擊此按鈕可在excel工作簿的側面板中開啟jupyter notebook。該面板是excel介面的一部分,可以通過拖放操作取消停靠或停靠在其他位置。
在jupyter面板中,你可以選擇乙個現有的notebook或建立乙個新的notebook。建立乙個新的notebook,選擇新建按鈕,然後選擇python 3
。
這樣做有什麼用處呢?
比如,我們要將資料從excel匯入python。
由於excel和python已經在同一程序中執行了,所以在python中訪問excel資料以及在python和excel之間切換非常快。
更牛x的是,pyxll-jupyter
還單獨附帶了一些ipython
魔法函式,輸入後一鍵即可完成同步。
將python中的資料移到excel,也是同理,非常簡單。無論是使用python先載入資料集,再傳輸到excel,還是其它形式,從python複製資料到excel非常容易。
當然,%xl_get
和%xl_set
都附帶引數選項可以自定義匯入匯出規則。
pyxll
的另一大用處就是它整合了幾乎所有主流的視覺化包,因此我們可以在excel中利用這些視覺化包隨意繪圖,包括matplotlib
、plotly
、bokeh
和altair
等。
同樣,使用魔法函式%xl_plot
在excel中可以繪製任何的python圖。任何乙個受支援的視覺化包也可進行繪圖然後傳遞圖形物件到excel中,比如上圖中使用pandas的繪圖效果就很好。
%xl_plot df.plot(kind='scatter')
使用excel離不開函式,而當我們需要一些複雜功能時,自帶函式未必能滿足我們的需求。
函式寫好後,還可將其新增到pyxll python
專案中。這樣以後每次都可以復用實現相同功能,簡直不要太香!
from pyxll import xl_func
@xl_func
def test_func(a, b, c):
return (a * b) + c
比如,輸入以上**在jupyter
中執行後,python函式將立即可被excel工作簿呼叫。
不只是簡單的函式,還可以將整個資料作為pandas
的dataframes
傳給函式,並返回任何的python型別,比如numpy array
、dataframes
,甚至還可以通過給@xl_func
裝飾器乙個簽名字串來告訴pyxll輸出什麼型別。例如,以下函式:
from pyxll import xl_func
# 裝飾器簽名告訴 pyxll 如何轉換函式引數和返回的值
@xl_func("dataframe df: dataframe", auto_resize=true)
def df_describe(df):
# df 是乙個從資料集裡建立的 pandas dataframe 傳遞給函式
desc = df.describe()
# desc 是新的 dataframe(pyxll轉換為一組值並返回給excel所建立的)
return desc
現在可以編寫複雜的python函式來進行資料轉換和分析,但是可以協調在excel中如何呼叫或排序這些函式。更改輸入會導致呼叫函式,並且計算出的輸出會實時更新,這與我們期望的一樣。
vba指令碼所需的功能函式,在python中均有相同的api。這對於熟悉python但不熟悉vba的同學絕對是個好訊息。
官網還給出了和vba功能一樣的api說明文件。
jupyter notebook
在excel中執行,整個excel物件都可用,所有操作就像在vba
編輯器中編寫excel
指令碼一模一樣。
由於pyxll
在excel程序內執行python ,因此從python呼叫excel不會對效能造成任何影響。當然,也可以從外部python程序呼叫excel,但這通常要慢很多。在excel中執行jupyter notebook
,一切變得就不一樣了!
下圖中嘗試將當前選擇單元格更改顏色。
pyxll
將完美融合python
和excel
,實現了以下功能,為**資料處理提公升乙個全新的高度。
不得不說這個工具是真的香,喜愛python的同學可以不用學習vba了,python指令碼打天下。
在Yii中直接使用sql
在yii中直接使用sql,是建立在php擴充套件pdo的基礎之上。使用前,確保pdo已安裝 一 建立連線 1,查詢 query 方式一 最簡潔 sql select a.id,b.name,parts type,parts model,partmanufacturer,number,confirm ...
在Yii中直接使用sql
在yii中直接使用sql,是建立在php擴充套件pdo的基礎之上。使用前,確保pdo已安裝 一 建立連線 其中db是在.config main.php中配置的 二 使用sql 1,查詢 query 方式一 最簡潔 方式二 主要區別在查詢動作。可拆分為兩步 datareader command que...
chrome中直接使用import
現在我們在開發專案時都是基於構建工具 像webpack 上進行開發,所以在使用import時得心應手。但今天在chrome中直接使用import時,發現不知道如何使用?chrome中直接使用import 三個條件 瀏覽器版本需要支援,瀏覽器的支援情況 使用 注意 引入路徑不能省略檔案字尾 這個與在構...