搜尋
首頁後端開發Python教學Python Vaex如何實現快速分析100G大數據量

pandas處理大數據的限制

現在的數據科學比賽提供的數據量越來越大,動不動幾十個G,甚至上百G,這就要考驗機器性能和數據處理能力。

Python中的pandas是大家常用的資料處理工具,能應付較大資料集(千萬行級別),但當資料量達到十億百億行級別,pandas處理起來就有點力不從心了,可以說非常的慢。

這裡面會有電腦記憶體等效能的因素,但pandas本身的資料處理機制(依賴記憶體)也限制了它處理大數據的能力。

當然pandas可以透過chunk分批讀取數據,但這樣的劣勢在於數據處理較複雜,每一步分析都會消耗記憶體和時間。

下面用pandas讀取3.7個G的資料集(hdf5格式),該資料集共有4列、1億行,並且計算第一行的平均值。我的電腦CPU是i7-8550U,記憶體8G,看看這個載入和運算過程需要花費多少時間。

資料集:

Python Vaex如何實現快速分析100G大數據量

使用pandas讀取並計算:

Python Vaex如何實現快速分析100G大數據量

##看上面的過程,載入數據花了15秒,平均值計算花了3.5秒,總共18.5秒。

這裡用的是hdf5文件,hdf5是一種文件儲存格式,相比較csv更適合儲存大數據量,壓縮程度高,而且讀取、寫入也更快。

換上今天的主角vaex,讀同樣的數據,做同樣的平均值計算,需要花多少時間呢?

使用vaex讀取並計算:

Python Vaex如何實現快速分析100G大數據量

檔案讀取用了9ms,可以忽略不計,平均值計算用了1s,總共1s。

同樣是讀取1億行的hdfs資料集,為什麼pandas需要十幾秒,而vaex耗費時間接近0呢?

這裡主要是因為pandas把資料讀取到了記憶體中,然後用於處理和計算。而vaex只會對資料進行記憶體映射,而不是真的讀取資料到記憶體中,這個和spark的懶載入是一樣的,在使用的時候 才會去加載,宣告的時候不載入。

所以說不管載入多大的數據,10GB、100GB...對vaex來說都是瞬間搞定。美中不足的是,vaex的懶加載只支援HDF5, Apache Arrow,Parquet, FITS等文件,不支援csv等文字文件,因為文字文件沒辦法進行記憶體映射。

可能有的小夥伴不太理解記憶體映射,下面放一段解釋,具體要弄清楚還得自行摸索:

記憶體映射是指硬碟上檔案的位置與行程邏輯位址空間中一塊大小相同的區域之間的一一對應。這種對應關係純屬是邏輯上的概念,物理上是不存在的,原因是流程的邏輯位址空間本身就是不存在的。在記憶體映射的過程中,並沒有實際的資料拷貝,檔案沒有被載入內存,只是邏輯上被放入了內存,具體到程式碼,就是建立並初始化了相關的資料結構(struct address_space)。

什麼是vaex

前面比較了vaex和pandas處理大數據的速度,vaex優勢明顯。雖然能力出眾,不比pandas家喻戶曉,vaex還是個剛出圈的新人。

vaex同樣是基於python的資料處理第三方函式庫,使用

pip就可以安裝。

官網對vaex的介紹可以總結為三點:

  • vaex是一個用處理、展示資料的資料表工具,類似pandas;

  • vaex採取內存映射、惰性計算,不佔用內存,適合處理大數據;

  • #vaex可以在百億級數據集上進行秒級的統計分析與視覺化展示;

vaex的優點在於:

  • 效能:處理大量數據,109 行/秒;

  • #惰性:快速計算,不佔用內存;

  • 零內存複製:在進行過濾/轉換/計算時,不複製內存,在需要時進行流式傳輸;

  • 視覺化:內含視覺化元件;

  • API:類似pandas,擁有豐富的資料處理與運算函數;

  • 可互動:配合Jupyter notebook使用,靈活的互動視覺化;

安裝vaex

使用pip或conda進行安裝:

Python Vaex如何實現快速分析100G大數據量

讀取資料

vaex支援讀取hdf5、csv、parquet等文件,使用read方法。 hdf5可以惰性讀取,而csv只能讀到記憶體。

Python Vaex如何實現快速分析100G大數據量

vaex資料讀取函數:

Python Vaex如何實現快速分析100G大數據量

資料處理

有時候我們需要對資料進行各種各樣的轉換、篩選、計算等,pandas的每一步處理都會消耗內存,而且時間成本高。除非說使用鍊式處理,但那樣過程就很不清晰。

vaex則全過程都是零記憶體。因為它的處理過程只是產生expression(表達式),表達式是邏輯表示,不會執行,只有到了最後的生成結果階段才會執行。而且整個過程資料是串流,不會產生記憶體積壓。

Python Vaex如何實現快速分析100G大數據量

可以看到上面有篩選和計算兩個過程,都沒有複製內存,這裡採用了延遲計算,也就是惰性機制。如果每個過程都真實計算,消耗記憶體不說,單是時間成本就很大。

vaex的統計計算函數:

Python Vaex如何實現快速分析100G大數據量

視覺化展示

vaex還可以進行快速視覺化展示,即使是數百億的數據集,依然能秒出圖。

Python Vaex如何實現快速分析100G大數據量

vaex視覺化函數:

Python Vaex如何實現快速分析100G大數據量

#結論

vaex有點類似spark和pandas的結合體,數據量越大越能體現它的優勢。只要你的硬碟能裝下多大數據,它就能快速分析這些數據。

vaex還在快速發展中,整合了越來越多pandas的功能,它在github上的star數是5k,成長潛力巨大。

附:hdf5資料集產生程式碼(4列1億行資料)

import pandas as pd
import vaex
df = pd.DataFrame(np.random.rand(100000000,4),columns=['col_1','col_2','col_3','col_4'])
df.to_csv('example.csv',index=False)
vaex.read('example.csv',convert='example1.hdf5')

#注意這裡不要用pandas直接產生hdf5,其格式會與vaex不相容。

以上是Python Vaex如何實現快速分析100G大數據量的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:亿速云。如有侵權,請聯絡admin@php.cn刪除
Python:遊戲,Guis等Python:遊戲,Guis等Apr 13, 2025 am 12:14 AM

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

Python vs.C:申請和用例Python vs.C:申請和用例Apr 12, 2025 am 12:01 AM

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時的Python計劃:一種現實的方法2小時的Python計劃:一種現實的方法Apr 11, 2025 am 12:04 AM

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python:探索其主要應用程序Python:探索其主要應用程序Apr 10, 2025 am 09:41 AM

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

您可以在2小時內學到多少python?您可以在2小時內學到多少python?Apr 09, 2025 pm 04:33 PM

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?Apr 02, 2025 am 07:18 AM

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python 3.6加載Pickle文件報錯"__builtin__"模塊未找到怎麼辦?Python 3.6加載Pickle文件報錯"__builtin__"模塊未找到怎麼辦?Apr 02, 2025 am 07:12 AM

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)