Python中處理大型資料集而不會耗盡記憶體的方式推薦
使用pandas的最大問題之一是大型資料集的解析器需要很長時間才能讀取資料。也許這裡有一些很酷的提示可以提供幫助!
如果缺少 CPU,您的程式執行速度較慢;如果缺少記憶體,您的程式會崩潰。
但是您可以在 Python 中處理大於 RAM 的資料集,正如您將在以下系列文章中學習的那樣。
程式碼結構
- 複製資料很浪費,修改資料很危險複製資料會浪費記憶體,修改/修改資料會導致錯誤。瞭解如何在 Python 中實現兩者之間的折衷:隱藏的可變性。
- 緊貼記憶體:Python 函式呼叫如何增加記憶體使用Python 將自動釋放未使用的物件。有時函式呼叫會意外地將物件保留在記憶體中;瞭解原因,以及如何解決它。
- 巨大的記憶體開銷:Python 中的數字以及 NumPy 如何提供幫助在 Python 中儲存整數或浮點數會產生巨大的記憶體開銷。瞭解原因以及 NumPy 如何讓事情變得更好。
- 物件過多:減少 Python 例項的記憶體開銷 Python 中的物件有很大的記憶體開銷。瞭解原因以及如何處理:避免使用 dicts、更少的物件等等。
資料管理技術
- 估計和建模資料處理的記憶體需求瞭解如何根據輸入大小測量和建模 Python 資料處理批處理作業的記憶體使用情況。
- 當您的資料不適合記憶體時:基本技術您可以使用四種基本技術來處理不適合記憶體的資料:花錢、壓縮、分塊和索引。
Pandas
- 測量 Pandas DataFrame 的記憶體使用情況瞭解如何準確測量 Pandas DataFrame 或 Series 的記憶體使用情況。
- 減少 Pandas 記憶體使用 #1:無失真壓縮使用更少的記憶體將大型 CSV 或其他資料載入到 Pandas 中,使用刪除列、較小的數字 dtypes、分類和稀疏列等技術。
- 減少 Pandas 記憶體使用 #2:有失真壓縮透過刪除不那麼重要的細節或資料來減少 Pandas 記憶體使用。
- 減少 Pandas 記憶體使用 #3:分塊讀取透過載入然後分塊處理檔案來減少 Pandas 記憶體使用,而不是一次全部處理。
- 使用 Pandas 和 SQLite 的大型資料集的快速子集您有大量資料,並且您只想將部分資料作為 Pandas 資料幀載入到記憶體中。一種簡單的方法:透過 SQLite 資料庫進行索引。
- 將 SQL 資料載入到 Pandas 中而不會耗盡記憶體Pandas 可以從 SQL 查詢中載入資料,但結果可能會佔用太多記憶體。瞭解如何批次處理資料,並進一步減少記憶體使用量。
- 使用 Pandas 1.3 的新字串 dtype 節省記憶體 在 Pandas中儲存字串會佔用大量記憶體,但使用 Pandas 1.3,您可以獲得更新、更高效的選項。
- 從分塊到並行:使用 Dask 更快的 Pandas瞭解 Dask 如何透過並行化加速 Pandas 資料處理,並透過透明分塊減少記憶體使用。
NumPy
- 透過無失真壓縮減少 NumPy 記憶體使用量 透過選擇較小的 dtype 和使用稀疏陣列來減少 NumPy 記憶體使用量。
- NumPy 檢視:節省記憶體、洩漏記憶體和細微的錯誤NumPy 透明地使用記憶體檢視作為節省記憶體的一種方式。但是你需要了解它們是如何工作的,這樣你就不會洩漏記憶體,或者錯誤地修改資料。
- 從磁碟載入 NumPy 陣列:mmap() 與 Zarr/HDF5如果您的 NumPy 陣列大於記憶體,您可以使用 mmap() 或非常相似的 Zarr 和 HDF5 檔案格式從磁碟透明地載入它。
- mmap() 寫入時複製技巧:減少陣列副本的記憶體使用 複製 NumPy 陣列並修改它會使記憶體使用加倍。但是透過使用作業系統的 mmap() 呼叫,您只需為修改的內容付費。
測量記憶體使用情況
- 在 Python 中測量記憶體使用情況:這很棘手!測量 Python 程式的記憶體使用情況並不像您想象的那麼簡單。學習兩種技術,以及它們之間的權衡。
- Fil:面向資料科學家和科學家的新 Python 記憶體分析器Fil 是一個 Python 記憶體分析器,專為滿足執行資料處理管道的資料科學家和科學家的需求而設計。
- 使用 Fil 分析器除錯 Python 記憶體不足崩潰 除錯 Python 記憶體不足崩潰可能很棘手。瞭解 Fil 記憶體分析器如何幫助您找到記憶體使用情況。
- 死亡,快和慢:Python 中的記憶體不足崩潰 Python 記憶體不足問題可以透過多種方式表現出來:由於交換導致的緩慢、崩潰、MemoryError、segfaults、kill -9。
- 使用 Fil 分析器除錯 Python 伺服器記憶體洩漏當您的 Python 伺服器發生記憶體洩漏時,Fil 記憶體分析器可以幫助您發現錯誤程式碼。
相關文章
- 處理大型資料集而不會耗盡記憶體的方式推薦記憶體
- 記憶體耗盡後Redis會發生什麼記憶體Redis
- 共享記憶體段未釋放導致資料庫記憶體被耗盡記憶體資料庫
- 耗盡實體記憶體觀查swap記憶體
- kswapd 耗盡系統記憶體 kscand 耗盡系統cpu的解決記憶體
- 解決 SQL Server 耗盡記憶體的情況SQLServer記憶體
- 避免PHP-FPM記憶體洩漏導致記憶體耗盡PHP記憶體
- PHP大量資料迴圈時記憶體耗盡問題的解決方案PHP記憶體
- 如何解決PHP裡大量資料迴圈時記憶體耗盡的問題PHP記憶體
- Spark在處理資料的時候,會將資料都載入到記憶體再做處理嗎?Spark記憶體
- kubernetes排程之資源耗盡處理配置
- 鐳射雷達常用的資料處理軟體推薦
- 故障分析 | MySQL 耗盡主機記憶體一例分析MySql記憶體
- Python多程式處理:如何將大量資料放入有限記憶體Python記憶體
- 6種方式處理機器學習中不平衡的資料集 - svpino機器學習
- phpexcel 處理大量資料時記憶體溢位PHPExcel記憶體溢位
- ETL中後設資料處理的方式
- 電影推薦系統資料預處理
- Java 18 如何改進處理大型物件回收的記憶體碎片問題? -Java物件記憶體
- JavaScript 中的記憶體洩漏以及如何處理JavaScript記憶體
- JavaScript中的記憶體洩漏以及如何處理JavaScript記憶體
- 【GoLang】GoLang 錯誤處理 -- 官方推薦方式 示例Golang
- 巨耗記憶體的寫法:記憶體
- 如何修復“您的系統已耗盡應用程式記憶體”錯誤記憶體
- react router為什麼推薦使用browserHistory而不推薦hashHistory?React
- 頂尖調查記者的資料處理與視覺化利器推薦視覺化
- C#中處理JSON資料的方式C#JSON
- 【故障公告】redis記憶體耗盡造成部落格後臺無法儲存Redis記憶體
- 使用記憶體NewSQL資料平臺來處理實時資料流的三個好處記憶體SQL
- 記憶體中的資料儲存記憶體
- 大型資料集處理之道:深入瞭解Hadoop及MapReduce原理Hadoop
- 記憶體分配問題處理記憶體
- 推薦幾個不錯的Python資源Python
- 幾個例子理解不同資料型別的堆疊記憶體處理資料型別記憶體
- 幾百萬資料放入記憶體不會把系統撐爆嗎?記憶體
- Linux記憶體不足的處理方法Linux記憶體
- crond不斷喚起sendmail導致資源耗盡的排查AI
- Python記憶體資料庫/引擎Python記憶體資料庫