0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

如何把Python和Excel兩大數(shù)據(jù)工具進行集成

數(shù)據(jù)分析與開發(fā) ? 來源:Python大數(shù)據(jù)分析 ? 作者:朱衛(wèi)軍 ? 2021-10-12 09:41 ? 次閱讀

這次我們會介紹如何使用xlwings將Python和Excel兩大數(shù)據(jù)工具進行集成,更便捷地處理日常工作。

說起Excel,那絕對是數(shù)據(jù)處理領域王者般的存在,盡管已經(jīng)誕生三十多年了,現(xiàn)在全球仍有7.5億忠實用戶,而作為網(wǎng)紅語言的Python,也僅僅只有700萬的開發(fā)人員。Excel是全世界最流行的編程語言。對,你沒看錯,自從微軟引入了LAMBDA定義函數(shù)后,Excel已經(jīng)可以實現(xiàn)編程語言的算法,因此它是具備圖靈完備性的,和JavaScript、Java、Python一樣。雖然Excel對小規(guī)模數(shù)據(jù)場景來說是剛需利器,但它面對大數(shù)據(jù)時就會有些力不從心。我們知道一張Excel表最多能顯示1048576行和16384列,處理一張幾十萬行的表可能就會有些卡頓,當然你可以使用VBA進行數(shù)據(jù)處理,也可以使用Python來操作Excel。這就是本文要講到的主題,Python的第三方庫-xlwings,它作為Python和Excel的交互工具,讓你可以輕松地通過VBA來調(diào)用Python腳本,實現(xiàn)復雜的數(shù)據(jù)分析。

一、為什么將Python與Excel VBA集成?

VBA作為Excel內(nèi)置的宏語言,幾乎可以做任何事情,包括自動化、數(shù)據(jù)處理、分析建模等等,那為什么要用Python來集成Excel VBA呢?主要有以下三點理由:

1.  如果你對VBA不算精通,你可以直接使用Python編寫分析函數(shù)用于Excel運算,而無需使用VBA;
2.  Python相比VBA運行速度更快,且代碼編寫更簡潔靈活;
3.  Python中有眾多優(yōu)秀的第三方庫,隨用隨取,可以節(jié)省大量代碼時間;

對于Python愛好者來說,pandas、numpy等數(shù)據(jù)科學庫用起來可能已經(jīng)非常熟悉,如果能將它們用于Excel數(shù)據(jù)分析中,那將是如虎添翼。

二、為什么使用xlwings?

Python中有很多庫可以操作Excel,像xlsxwriter、openpyxl、pandas、xlwings等。但相比其他庫,xlwings性能綜合來看幾乎是最優(yōu)秀的,而且xlwings可以實現(xiàn)通過Excel宏調(diào)用Python代碼。

安裝xlwings非常簡單,在命令行通過pip實現(xiàn)快速安裝:

pipinstallxlwings

安裝好xlwings后,接下來需要安裝xlwings的 Excel集成插件,安裝之前需要關閉所有 Excel 應用,不然會報錯。同樣在命令行輸入以下命令:

xlwingsaddininstall

出現(xiàn)下面提示代表集成插件安裝成功。4fbd771a-26b6-11ec-82a8-dac502259ad0.png
xlwings和插件都安裝好后,這時候打開Excel,會發(fā)現(xiàn)工具欄出現(xiàn)一個xlwings的菜單框,代表xlwings插件安裝成功,它起到一個橋梁的作用,為VBA調(diào)用Python腳本牽線搭橋。

另外,如果你的菜單欄還沒有顯示“開發(fā)工具”,那需要把“開發(fā)工具”添加到功能區(qū),因為我們要用到宏。步驟很簡單:1、在"文件"選項卡上,轉(zhuǎn)到"自定義>選項"。2、在“自定義功能區(qū)”和“主選項卡”下,選中“開發(fā)工具”復選框。

菜單欄顯示開發(fā)工具,就可以開始使用宏。如果你還不知道什么是宏,可以暫且把它理解成實現(xiàn)自動化及批量處理的工具。到這一步,前期的準備工作就完成了,接下來就是實戰(zhàn)!

三、玩轉(zhuǎn)xlwings

要想在excel中調(diào)用python腳本,需要寫VBA程序來實現(xiàn),但對于不懂VBA的小伙伴來說就是個麻煩事。但xlwings解決了這個問題,不需要你寫VBA代碼就能直接在excel中調(diào)用python腳本,并將結果輸出到excel表中。xlwings會幫助你創(chuàng)建.xlsm.py兩個文件,在.py文件里寫python代碼,在.xlsm文件里點擊執(zhí)行,就完成了excel與python的交互。怎么創(chuàng)建這兩個文件呢?非常簡單,直接在命令行輸入以下代碼即可:

xlwingsquickstartProjectName

這里的ProjectName可以自定義,是創(chuàng)建后文件的名字。

如果你想把文件創(chuàng)建到指定文件夾里,需要提前將命令行導航到指定目錄。創(chuàng)建好后,在指定文件夾里會出現(xiàn)兩個文件,就是之前說的.xlsm.py文件。

我們打開.xlsm文件,這是一個excel宏文件,xlwings已經(jīng)提前幫你寫好了調(diào)用Python的VBA代碼。按快捷鍵Alt + F11,就能調(diào)出VBA編輯器。

SubSampleCall()
mymodule=Left(ThisWorkbook.Name,(InStrRev(ThisWorkbook.Name,".",-1,vbTextCompare)-1))
RunPython"import"&mymodule&";"&mymodule&".main()"
EndSub

里面這串代碼主要執(zhí)行兩個步驟:
1、在.xlsm文件相同位置查找相同名稱的.py文件2、調(diào)用.py腳本里的main()函數(shù)我們先來看一個簡單的例子,自動在excel表里輸入['a','b','c','d','e']第一步:我們把.py文件里的代碼改成以下形式。

importxlwingsasxw
importpandasaspd


defmain():
wb=xw.Book.caller()
values=['a','b','c','d','e']
wb.sheets[0].range('A1').value=values


@xw.func
defhello(name):
returnf"Hello{name}!"


if__name__=="__main__":
xw.Book("PythonExcelTest.xlsm").set_mock_caller()
main()

然后在.xlsm文件sheet1中創(chuàng)建一個按鈕,并設置默認的宏,變成一個觸發(fā)按鈕。設置好觸發(fā)按鈕后,我們直接點擊它,就會發(fā)現(xiàn)第一行出現(xiàn)了['a','b','c','d','e']。

同樣的,我們可以把鳶尾花數(shù)據(jù)集自動導入到excel中,只需要在.py文件里改動代碼即可,代碼如下:

importxlwingsasxw
importpandasaspd

defmain():
wb=xw.Book.caller()
df=pd.read_csv(r"E:\test\PythonExcelTest\iris.csv")
df['total_length']=df['sepal_length']+df['petal_length']
wb.sheets[0].range('A1').value=df


@xw.func
defhello(name):
returnf"Hello{name}!"


if__name__=="__main__":
xw.Book("PythonExcelTest.xlsm").set_mock_caller()
main()

好了,這就是在excel中調(diào)用Python腳本的全過程,你可以試試其他有趣的玩法,比如實現(xiàn)機器學習算法、文本清洗、數(shù)據(jù)匹配、自動化報告等等。Excel+Python,簡直法力無邊。

責任編輯:haq
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Excel
    +關注

    關注

    4

    文章

    221

    瀏覽量

    55554
  • python
    +關注

    關注

    56

    文章

    4801

    瀏覽量

    84850

原文標題:如何在 Excel 中調(diào)用 Python 腳本,實現(xiàn)數(shù)據(jù)自動化處理

文章出處:【微信號:DBDevs,微信公眾號:數(shù)據(jù)分析與開發(fā)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    適用于Oracle的Devart Excel插件:輕松管理數(shù)據(jù)

    工作簿中的數(shù)據(jù),編輯這些數(shù)據(jù)并將其保存回 Oracle。它使您能夠像使用 Excel 工作表一樣處理 Oracle 數(shù)據(jù),可以輕松進行數(shù)據(jù)
    的頭像 發(fā)表于 01-14 11:11 ?47次閱讀
    適用于Oracle的Devart <b class='flag-5'>Excel</b>插件:輕松管理<b class='flag-5'>數(shù)據(jù)</b>

    如何兩個數(shù)據(jù)返回給調(diào)用函數(shù)

    函數(shù)的處理結果包含兩個數(shù)據(jù),如何兩個數(shù)據(jù)返回給調(diào)用函數(shù)? 第一種,兩個數(shù)據(jù)封裝成一個結構體,函數(shù)返回結構體。 調(diào)用函數(shù)的地方同樣用結構體
    的頭像 發(fā)表于 01-08 10:15 ?71次閱讀

    Devart Excel的附加組件

    Excel 的全部功能用于超過 25 種云應用程序和數(shù)據(jù)庫。 - 將 Microsoft Excel 連接到任何所需數(shù)據(jù)源 - 同時處理多個數(shù)據(jù)
    的頭像 發(fā)表于 01-07 11:40 ?105次閱讀

    使用Python進行串口通信的案例

    當然!以下是一個使用Python進行串口通信的簡單示例。這個示例展示了如何配置串口、發(fā)送數(shù)據(jù)以及接收數(shù)據(jù)。我們將使用 pyserial 庫,這是一個非常流行的用于串口通信的
    的頭像 發(fā)表于 11-22 09:11 ?320次閱讀

    智慧城市與大數(shù)據(jù)的關系

    的建設需要對海量的數(shù)據(jù)資源進行收集、整合、存儲與分析。大數(shù)據(jù)技術的應用,如智能感知、分布式存儲等,使得這些數(shù)據(jù)能夠被高效地處理和利用。 決策支持 : 在智慧城市的建設和運行過程中,
    的頭像 發(fā)表于 10-24 15:27 ?778次閱讀

    IP 地址大數(shù)據(jù)分析如何進行網(wǎng)絡優(yōu)化?

    一、大數(shù)據(jù)分析在網(wǎng)絡優(yōu)化中的作用 1.流量分析 大數(shù)據(jù)分析可以對網(wǎng)絡中的流量進行實時監(jiān)測和分析,了解網(wǎng)絡的使用情況和流量趨勢。通過對流量數(shù)據(jù)的分析,可以發(fā)現(xiàn)網(wǎng)絡中的瓶頸和問題,為網(wǎng)絡優(yōu)
    的頭像 發(fā)表于 10-09 15:32 ?263次閱讀
    IP 地址<b class='flag-5'>大數(shù)據(jù)</b>分析如何<b class='flag-5'>進行</b>網(wǎng)絡優(yōu)化?

    基于Kepware的Hadoop大數(shù)據(jù)應用構建-提升數(shù)據(jù)價值利用效能

    處理超大數(shù)據(jù)集。 Hadoop的生態(tài)系統(tǒng)非常豐富,包括許多相關工具和技術,如Hive、Pig、HBase等,這些工具可以方便地構建復雜的大數(shù)據(jù)應用。Hadoop廣泛應用于各種場景,包括
    的頭像 發(fā)表于 10-08 15:12 ?175次閱讀
    基于Kepware的Hadoop<b class='flag-5'>大數(shù)據(jù)</b>應用構建-提升<b class='flag-5'>數(shù)據(jù)</b>價值利用效能

    使用Python進行Ping測試

    )請求包,然后等待目標主機返回響應包,從而測量網(wǎng)絡的延遲和丟包情況。隨著Python編程語言的廣泛應用,越來越多的網(wǎng)絡工程師開始使用Python進行自動化網(wǎng)絡測試和管理任務。本篇文章將詳細介紹如何使用
    的頭像 發(fā)表于 08-12 17:56 ?561次閱讀
    使用<b class='flag-5'>Python</b><b class='flag-5'>進行</b>Ping測試

    使用CYW20829的BLE進行大數(shù)據(jù)發(fā)送應用,BLE丟失數(shù)據(jù)如何解決?

    我目前正在使用 CYW20829 的 BLE 進行大數(shù)據(jù)發(fā)送應用,我使用的是 FREERTOS(例程 Bluetooth_LE_GATT_Throughput_Server 是我的參考),藍牙被
    發(fā)表于 07-23 07:56

    用pycharm進行python爬蟲的步驟

    以下是使用PyCharm進行Python爬蟲的步驟: 安裝PyCharm和Python 首先,您需要安裝PyCharm和Python。PyCharm是一個流行的
    的頭像 發(fā)表于 07-11 10:11 ?898次閱讀

    數(shù)據(jù)分析的工具有哪些

    數(shù)據(jù)分析是一個涉及收集、處理、分析和解釋數(shù)據(jù)以得出有意義見解的過程。在這個過程中,使用正確的工具至關重要。以下是一些主要的數(shù)據(jù)分析工具,以及
    的頭像 發(fā)表于 07-05 14:54 ?936次閱讀

    使用Python進行自然語言處理

    在探討使用Python進行自然語言處理(NLP)的廣闊領域時,我們首先需要理解NLP的基本概念、其重要性、Python在NLP中的優(yōu)勢,以及如何通過Python實現(xiàn)一些基礎的NLP任務
    的頭像 發(fā)表于 07-04 14:40 ?475次閱讀

    如何使用Python進行神經(jīng)網(wǎng)絡編程

    。 為什么使用Python? Python是一種廣泛使用的高級編程語言,以其易讀性和易用性而聞名。Python擁有強大的庫,如TensorFlow、Keras和PyTorch,這些庫提供了構建和訓練神經(jīng)網(wǎng)絡的
    的頭像 發(fā)表于 07-02 09:58 ?429次閱讀

    大數(shù)據(jù)技術是干嘛的 大數(shù)據(jù)核心技術有哪些

    大數(shù)據(jù)技術是指用來處理和存儲海量、多類型、高速的數(shù)據(jù)的一系列技術和工具?,F(xiàn)如今,大數(shù)據(jù)已經(jīng)滲透到各個行業(yè)和領域,對企業(yè)決策和業(yè)務發(fā)展起到了重要作用。本文將詳細介紹
    的頭像 發(fā)表于 01-31 11:07 ?3646次閱讀

    eda工具軟件有哪些 EDA工具有什么優(yōu)勢

    和預測提供基礎。在進行EDA過程中,使用合適的工具軟件可以顯著提升效率和準確性。本文將介紹幾種常見的EDA工具軟件。 Python和其相關的庫 Py
    的頭像 發(fā)表于 01-30 13:57 ?1192次閱讀