pandas處理大數據的限制
現在的數據科學比賽提供的數據量越來越大,動不動幾十個G,甚至上百G,這就要考驗機器性能和數據處理能力。
Python中的pandas是大家常用的資料處理工具,能應付較大資料集(千萬行級別),但當資料量達到十億百億行級別,pandas處理起來就有點力不從心了,可以說非常的慢。
這裡面會有電腦記憶體等效能的因素,但pandas本身的資料處理機制(依賴記憶體)也限制了它處理大數據的能力。
當然pandas可以透過chunk分批讀取數據,但這樣的劣勢在於數據處理較複雜,每一步分析都會消耗記憶體和時間。
下面用pandas讀取3.7個G的資料集(hdf5格式),該資料集共有4列、1億行,並且計算第一行的平均值。我的電腦CPU是i7-8550U,記憶體8G,看看這個載入和運算過程需要花費多少時間。
資料集:
使用pandas讀取並計算:
pip就可以安裝。
- vaex是一個用處理、展示資料的資料表工具,類似pandas;
- vaex採取內存映射、惰性計算,不佔用內存,適合處理大數據;
- #vaex可以在百億級數據集上進行秒級的統計分析與視覺化展示;
- 效能:處理大量數據,109 行/秒;
- #惰性:快速計算,不佔用內存;
- 零內存複製:在進行過濾/轉換/計算時,不複製內存,在需要時進行流式傳輸;
- 視覺化:內含視覺化元件;
- API:類似pandas,擁有豐富的資料處理與運算函數;
- 可互動:配合Jupyter notebook使用,靈活的互動視覺化;
資料處理
有時候我們需要對資料進行各種各樣的轉換、篩選、計算等,pandas的每一步處理都會消耗內存,而且時間成本高。除非說使用鍊式處理,但那樣過程就很不清晰。
vaex則全過程都是零記憶體。因為它的處理過程只是產生expression(表達式),表達式是邏輯表示,不會執行,只有到了最後的生成結果階段才會執行。而且整個過程資料是串流,不會產生記憶體積壓。
可以看到上面有篩選和計算兩個過程,都沒有複製內存,這裡採用了延遲計算,也就是惰性機制。如果每個過程都真實計算,消耗記憶體不說,單是時間成本就很大。
vaex的統計計算函數:
視覺化展示
vaex還可以進行快速視覺化展示,即使是數百億的數據集,依然能秒出圖。
vaex視覺化函數:
#結論
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中文網其他相關文章!

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

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

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

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

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

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

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

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

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