pythonExcel大數據
㈠ python導入excel數據
這次我們會介紹如何使用xlwings將Python和Excel兩大數據工具進行集成,更便捷地處理日常工作。
說起Excel,那絕對是數據處理領域王者般的存在,盡管已經誕生三十多年了,現在全球仍有7.5億忠實用戶,而作為網紅語言的Python,也僅僅只有700萬的開發人員。
Excel是全世界最流行的編程語言。對,你沒看錯,自從微軟引入了LAMBDA定義函數後,Excel已經可以實現編程語言的演算法,因此它是具備圖靈完備性的,和javaScript、Java、Python一樣。
雖然Excel對小規模數據場景來說是剛需利器,但它面對大數據時就會有些力不從心。
我們知道一張Excel表最多能顯示1048576行和16384列,處理一張幾十萬行的表可能就會有些卡頓,當然你可以使用VBA進行數據處理,也可以使用Python來操作Excel。
這就是本文要講到的主題,Python的第三方庫-xlwings,它作為Python和Excel的交互工具,讓你可以輕松地通過VBA來調用Python腳本,實現復雜的數據分析。
比如說自動導入數據:
或者隨機匹配文本:
一、為什麼將Python與Excel VBA集成?
VBA作為Excel內置的宏語言,幾乎可以做任何事情,包括自動化、數據處理、分析建模等等,那為什麼要用Python來集成Excel VBA呢?主要有以下三點理由:
如果你對VBA不算精通,你可以直接使用Python編寫分析函數用於Excel運算,而無需使用VBA;Python相比VBA運行速度更快,且代碼編寫更簡潔靈活;Python中有眾多優秀的第三方庫,隨用隨取,可以節省大量代碼時間;
對於Python愛好者來說,pandas、numpy等數據科學庫用起來可能已經非常熟悉,如果能將它們用於Excel數據分析中,那將是如虎添翼。
二、為什麼使用xlwings?
Python中有很多庫可以操作Excel,像xlsxwriter、openpyxl、pandas、xlwings等。
但相比其他庫,xlwings性能綜合來看幾乎是最優秀的,而且xlwings可以實現通過Excel宏調用Python代碼。
圖片來自早起Python
xlwings的入門使用這里不多做講解,如果大家還不了解,先看看我之前寫的入門介紹: xlwings,讓excel飛起來!
安裝xlwings非常簡單,在命令行通過pip實現快速安裝:
pip install python
安裝好xlwings後,接下來需要安裝xlwings的 Excel集成插件,安裝之前需要關閉所有 Excel 應用,不然會報錯。
同樣在命令行輸入以下命令:
xlwings addin install
出現下面提示代表集成插件安裝成功。
xlwings和插件都安裝好後,這時候打開Excel,會發現工具欄出現一個xlwings的菜單框,代表xlwings插件安裝成功,它起到一個橋梁的作用,為VBA調用Python腳本牽線搭橋。
另外,如果你的菜單欄還沒有顯示「開發工具」,那需要把「開發工具」添加到功能區,因為我們要用到宏。
步驟很簡單:
1、在"文件"選項卡上,轉到"自定義選項"。
2、在「自定義功能區」和「主選項卡」下,選中「開發工具」復選框。
菜單欄顯示開發工具,就可以開始使用宏。
如果你還不知道什麼是宏,可以暫且把它理解成實現自動化及批量處理的工具。
到這一步,前期的准備工作就完成了,接下來就是實戰!
三、玩轉xlwings
要想在excel中調用python腳本,需要寫VBA程序來實現,但對於不懂VBA的小夥伴來說就是個麻煩事。
但xlwings解決了這個問題,不需要你寫VBA代碼就能直接在excel中調用python腳本,並將結果輸出到excel表中。
xlwings會幫助你創建.xlsm和.py兩個文件,在.py文件里寫python代碼,在.xlsm文件里點擊執行,就完成了excel與python的交互。
怎麼創建這兩個文件呢?非常簡單,直接在命令行輸入以下代碼即可:
xlwings quickstart ProjectName
這里的ProjectName可以自定義,是創建後文件的名字。
如果你想把文件創建到指定文件夾里,需要提前將命令行導航到指定目錄。
創建好後,在指定文件夾里會出現兩個文件,就是之前說的.xlsm和.py文件。
我們打開.xlsm文件,這是一個excel宏文件,xlwings已經提前幫你寫好了調用Python的VBA代碼。
按快捷鍵Alt F11,就能調出VBA編輯器。
裡面這串代碼主要執行兩個步驟:
1、在.xlsm文件相同位置查找相同名稱的.py文件
2、調用.py腳本里的main()函數
我們先來看一個簡單的例子,自動在excel表裡輸入
第一步: 我們把.py文件里的代碼改成以下形式。
import xlwings as xwimport pandas as pddef main(): wb = xw.Book.caller() values =
wb.sheets
.range('A1').value = [email protected] hello(name): return f"Hello {name}!"if __name__ == "__main__": xw.Book("PythonExcelTest.xlsm").set_mock_caller() main()
然後在.xlsm文件sheet1中創建一個按鈕,並設置默認的宏,變成一個觸發按鈕。
設置好觸發按鈕後,我們直接點擊它,就會發現第一行出現了
。
同樣的,我們可以把鳶尾花數據集自動導入到excel中,只需要在.py文件里改動代碼即可,代碼如下:
import xlwings as xwimport pandas as pddef main(): wb = xw.Book.caller() df = pd.read_csv(r"E:\test\PythonExcelTest\iris.csv") df
= df
df
wb.sheets
.range('A1').value = [email protected] hello(name): return f"Hello {name}!"if __name__ == "__main__": xw.Book("PythonExcelTest.xlsm").set_mock_caller() main()
好了,這就是在excel中調用Python腳本的全過程,你可以試試其他有趣的玩法,比如實現機器學習演算法、文本清洗、數據匹配、自動化報告等等。
Excel Python,簡直法力無邊。
㈡ Python 適合大數據量的處理嗎
python可以處理大數據,python處理大數據不一定是最優的選擇。適合大數據處理。而不是大數據量處理。 如果大數據量處理,需要採用並用結構,比如在hadoop上使用python,或者是自己做的分布式處理框架。
python的優勢不在於運行效率,而在於開發效率和高可維護性。針對特定的問題挑選合適的工具,本身也是一項技術能力。
Python處理數據的優勢(不是處理大數據):
1. 異常快捷的開發速度,代碼量巨少
2. 豐富的數據處理包,不管正則也好,html解析啦,xml解析啦,用起來非常方便
3. 內部類型使用成本巨低,不需要額外怎麼操作(java,c++用個map都很費勁)
4. 公司中,很大量的數據處理工作工作是不需要面對非常大的數據的
5. 巨大的數據不是語言所能解決的,需要處理數據的框架(hadoop, mpi)雖然小眾,但是python還是有處理大數據的框架的,或者一些框架也支持python。
(2)pythonExcel大數據擴展閱讀:
Python處理數據缺點:
Python處理大數據的劣勢:
1、python線程有gil,通俗說就是多線程的時候只能在一個核上跑,浪費了多核伺服器。在一種常見的場景下是要命的:並發單元之間有巨大的數據共享或者共用(例如大dict)。
多進程會導致內存吃緊,多線程則解決不了數據共享的問題,單獨的寫一個進程之間負責維護讀寫這個數據不僅效率不高而且麻煩
2、python執行效率不高,在處理大數據的時候,效率不高,這是真的,pypy(一個jit的python解釋器,可以理解成腳本語言加速執行的東西)能夠提高很大的速度,但是pypy不支持很多python經典的包,例如numpy。
3. 絕大部分的大公司,用java處理大數據不管是環境也好,積累也好,都會好很多。
參考資料來源:網路-Python