成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何用Python增強(qiáng)Excel,減少處理復(fù)雜數(shù)據(jù)的痛苦?

開發(fā) 后端
Excel既是一種祝福,也是一種詛咒。當(dāng)涉及到足夠小的數(shù)據(jù)和足夠簡(jiǎn)單的操作時(shí),Excel是王道。然而,一旦發(fā)現(xiàn)自己在努力走出這些區(qū)域,它就會(huì)變成一種痛苦。

 Excel既是一種祝福,也是一種詛咒。

[[315780]]

當(dāng)涉及到足夠小的數(shù)據(jù)和足夠簡(jiǎn)單的操作時(shí),Excel是王道。然而,一旦發(fā)現(xiàn)自己在努力走出這些區(qū)域,它就會(huì)變成一種痛苦。

當(dāng)然,可以使用ExcelVBA來解決這些問題,但是在2020年,幸運(yùn)的你不必這么做了!

如果有辦法把Excel和Python集成在一起,Excel……就會(huì)插上翅膀!

現(xiàn)在有了。一個(gè)名為xlwings的python庫(kù)允許用戶通過VBA調(diào)用python腳本并在兩者之間傳遞數(shù)據(jù)。

為什么要將Python與ExcelVBA集成?

事實(shí)上,用戶可以在VBA中做任何事情。所以,如果是這樣,為什么要使用Python?嗯,有很多原因。

1.在Excel中可以創(chuàng)建自定義函數(shù),而不必學(xué)習(xí)VBA(如果讀者還不知道的話)

2.用戶對(duì)Excel很滿意

3.使用Python可以顯著加快數(shù)據(jù)操作

4.在Python中,幾乎所有東西都有庫(kù)(機(jī)器學(xué)習(xí)、數(shù)據(jù)科學(xué)等)

5.因?yàn)槟憧梢?!!

準(zhǔn)備使用xlwings

要做的第一件事,和想使用的任何新庫(kù)一樣,就是安裝它。這是非常容易做到的;有了這兩個(gè)命令,很快就能準(zhǔn)備就緒。所以,把命令輸入終端: 

  1. pipinstall xlwings 

下載并安裝庫(kù)后,需要安裝Excel集成部分。確保已關(guān)閉所有Excel實(shí)例和任何終端類型: 

  1. xlwings addin install 

假設(shè)沒有遇到錯(cuò)誤,應(yīng)該能夠繼續(xù)。然而,在Win10 的 Excel2016上,人們經(jīng)常會(huì)看到以下錯(cuò)誤: 

  1. xlwings0.17.0 
  2. [Errno 2] No such file or directory:'C:\\Users\\costa\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART\\\xlwings.xlam' 
  3.  

如果走運(yùn)地遇到了上述錯(cuò)誤,需要做的就是創(chuàng)建丟失的目錄。通過使用mkdir命令,可以很容易地做到這一點(diǎn)。就筆者而言,筆者做到了: 

  1. mkdirC:\\Users\\costa\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART 

假設(shè)excel與python庫(kù)的集成安裝成功,則可以立即注意到excel的主要區(qū)別: 

如何用Python增強(qiáng)Excel,減少處理復(fù)雜數(shù)據(jù)的痛苦?

為xlwings啟用用戶定義函數(shù)

首先,需要加載Excel加載項(xiàng)。點(diǎn)擊Alt,L,H,然后導(dǎo)航到上面的目錄來加載插件。完成后,應(yīng)該能夠看到以下內(nèi)容: 

如何用Python增強(qiáng)Excel,減少處理復(fù)雜數(shù)據(jù)的痛苦?

最后,需要啟用對(duì)VBA工程對(duì)象模型的信任訪問。可以通過導(dǎo)航到“文件>選項(xiàng)>信任中心>信任中心設(shè)置>宏設(shè)置”來執(zhí)行此操作:

xlwings入門

從Excel到Python(Python到Excel)有兩種主要方式。第一種是直接從VBA調(diào)用Python腳本,另一種是通過用戶定義的函數(shù)。快速看一下兩者。

為了避免任何混淆,每次都能正確設(shè)置,xlwings提供了創(chuàng)建Excel電子表格的功能,準(zhǔn)備就緒。下面來使用這個(gè)功能。使用終端,導(dǎo)航到喜歡的目錄并鍵入: 

  1. xlwingsquickstart ProjectName 

把這稱之為MyFirstPythonXL。上面的命令將在預(yù)先導(dǎo)航的目錄中創(chuàng)建一個(gè)新文件夾,其中包含一個(gè)Excel工作表和一個(gè)python文件。 

如何用Python增強(qiáng)Excel,減少處理復(fù)雜數(shù)據(jù)的痛苦?

打開.xlsm文件時(shí),可以立即注意到一個(gè)名為xlwings.conf的新Excel工作表。如果要覆蓋xlwings的默認(rèn)設(shè)置,只需重命名此工作表并刪除起始下劃線。這樣,準(zhǔn)備工作就完成了,下面開始使用xlwings。

VBA到Python

在開始編碼之前,首先確保我們都在同一頁(yè)上。要打開ExcelVBA編輯器,請(qǐng)按Alt+F11。這將返回以下屏幕: 

如何用Python增強(qiáng)Excel,減少處理復(fù)雜數(shù)據(jù)的痛苦?

帶xlwings的VBA編輯器

這里關(guān)鍵要注意的是,此代碼將執(zhí)行以下操作:

1.在與電子表格相同的位置查找Python腳本

2.查找與電子表格同名的Python腳本(但擴(kuò)展名為.py)

3.從Python腳本調(diào)用函數(shù)“main()”

言歸正傳,來看看幾個(gè)使用的實(shí)例。

例1:在Excel之外操作,并返回輸出

在本例中,將看到如何在Excel之外執(zhí)行操作,但隨后將結(jié)果返回到電子表格中。這可以有無限多的用例。

從CSV文件中獲取數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行修改,然后將輸出傳遞給Excel。這一操作很簡(jiǎn)單:

首先,VBA代碼:

它與默認(rèn)設(shè)置完全保持不變。

然后,Python代碼: 

  1. importxlwings as xw 
  2. import pandas as pddef main(): 
  3.     wb = xw.Book.caller() 
  4.     df =pd.read_csv(r'C:\temp\TestData.csv'
  5.     df['total_length'] =  df['sepal_length_(cm)'] +df['petal_length_(cm)'
  6.     wb.sheets[0].range('A1').value = df 

結(jié)果如下: 

如何用Python增強(qiáng)Excel,減少處理復(fù)雜數(shù)據(jù)的痛苦?

示例2:使用Excel輸入來驅(qū)動(dòng)操作

在本例中,從Excel讀取輸入,用Python對(duì)其進(jìn)行處理,然后將結(jié)果傳遞回Excel。

更具體地說,要讀一個(gè)問候語(yǔ),一個(gè)名字和一個(gè)文件位置,在那里可以找到笑話。然后,Python腳本將從文件中隨機(jī)抽取一行,并返回一個(gè)笑話。

首先,VBA代碼:

它與默認(rèn)設(shè)置完全保持不變。

然后,Python代碼: 

  1. importxlwings as xw 
  2. import randomdef random_line(afile): 
  3.     line = next(afile) 
  4.     for num, aline in enumerate(afile,2): 
  5.       if random.randrange(num): continue 
  6.       line = aline 
  7.     return line 
  8. 'Function from: stackoverflowdef main(): 
  9.     wb = xw.Book.caller() 
  10.     listloc =str(wb.sheets[0].range('B3').value) 
  11.     fhandle = open(listloc, encoding ='utf-8')wb.sheets[0].range('A5').value = wb.sheets[0].range('B2').value + ' ' +wb.sheets[0].range('B1').value + ' here is a joke for you' 
  12.     wb.sheets[0].range('A6').value =random_line(fhandle) 

結(jié)果為: 

如何用Python增強(qiáng)Excel,減少處理復(fù)雜數(shù)據(jù)的痛苦?

帶xlwigs的用戶定義函數(shù)

用與以前幾乎相同的方式更改python文件中的代碼。為了將某些內(nèi)容轉(zhuǎn)換為Excel用戶定義函數(shù),我們只需在函數(shù)所在的行之前包含“@xw.func”:

Python代碼: 

  1. importxlwings as xw@xw.func 
  2. def joke(x): 
  3.     wb = xw.Book.caller() 
  4.     fhandle = open(r'C:\Temp\list.csv'
  5.     for i, line in enumerate(fhandle): 
  6.         if i == x: 
  7.             return(line) 

結(jié)果是: 

如何用Python增強(qiáng)Excel,減少處理復(fù)雜數(shù)據(jù)的痛苦?

如果你和小芯一樣,更喜歡使用Python而不是VBA,但又需要使用電子表格,這個(gè)工具是你的不二選擇,你可以把它當(dāng)作一個(gè)漂亮的小型數(shù)據(jù)庫(kù)。

 

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2023-04-07 14:04:52

增強(qiáng)分析人工智能

2024-04-03 07:46:41

PythonReduce函數(shù)工具

2020-10-29 06:02:44

PythonPandasExcel

2024-11-14 08:00:00

Python迭代器

2023-04-21 16:06:33

2010-07-13 13:27:13

Perl復(fù)雜數(shù)據(jù)結(jié)構(gòu)

2020-12-10 10:46:23

PythonExcel圖片

2025-05-19 08:28:00

2023-08-02 08:47:55

聚合框架MongoDB

2016-12-02 19:40:41

數(shù)據(jù)分析

2016-11-28 15:21:54

谷歌大數(shù)據(jù)

2024-01-09 07:34:28

Rust架構(gòu)語(yǔ)言

2011-07-13 14:02:42

OracleExcel

2017-07-20 21:06:44

PythonExcelSQL

2022-07-14 07:12:09

PythonPandasVBA

2020-07-10 09:49:53

數(shù)據(jù)清理數(shù)據(jù)分析查找異常

2021-03-04 13:40:57

Python文件代碼

2024-09-23 10:00:00

代碼Python

2017-12-06 15:46:31

深度學(xué)習(xí)結(jié)構(gòu)化數(shù)據(jù)NLP

2011-12-31 09:24:29

減少PUE數(shù)據(jù)中心
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲天堂网站 | 亚洲激情一区二区三区 | 国产精品视频在线观看 | 女生羞羞网站 | 亚洲精品久久久一区二区三区 | 久草在线中文888 | 欧美精品在线免费观看 | 国产日韩精品视频 | 9久久精品 | 国产精品成人一区二区三区 | 国产成人一区二区三区电影 | 日韩国产精品一区二区三区 | 91精品国产一区二区三区香蕉 | 国产精品区二区三区日本 | 毛片一级片 | 精品在线一区二区三区 | 人操人人 | 一区二区在线不卡 | av片毛片 | 亚洲精品福利视频 | www亚洲精品 | 亚洲一区二区视频在线观看 | 一级黄色播放 | 成人免费观看网站 | 国产乱码精品一区二三赶尸艳谈 | 91久久久久久久久久久久久 | 国产伦一区二区三区四区 | 久久久久综合 | 国产精品视频网址 | 亚洲国产免费 | 91麻豆精品一区二区三区 | 中文字幕 国产 | 国产精品无 | 国产精品成人一区二区三区夜夜夜 | 精品一区二区三区在线视频 | 亚洲成人自拍 | 亚洲国产精品久久 | 一级特黄色毛片 | 日韩av一二三区 | 日韩欧美国产成人一区二区 | 久久毛片 |