[英]Pandas memory usage inconsistencies
當我使用Pandas DataFrame時,我有一些內存不一致。
這是我的代碼框架:
import pandas as pd
import numpy as np
columns_dtype = {'A': np.int16, 'B': np.int8, ...}
df = pd.read_csv('my_file.csv', dtype=columns_dtype)
這基本上只是在控制列數據類型的同時用pandas讀取csv文件。 但是,當我在尋找為我的程序分配多少內存時,這些信息似乎並不一致。
信息1:
df.info(memory_usage='deep')
這給出了: memory usage: 482.6 MB
信息2:
import dill, sys
sys.getsizeof(dill.dumps(df))
這給出: 506049782
(所以506 Mb)
信息3:
分配給我的程序的RAM是:1.1 GiB(或1.2 Gb)
其他信息 (但我認為不相關):
my_file.csv的大小是888 Mb(ls -lh)
問題:
因為我只是將我的csv文件加載到Pandas DataFrame對象中,為什么我的程序需要超過1 Gb的RAM而對象大小約為0.5 Gb?
非常感謝
我不打算假裝知道動態內存的深層底層用法來保存Pandas中的數據。 大熊貓在加載大型平面文件時很餓,根據經驗,大熊貓會使用5-10倍的ram作為你加載的文件大小來進行分析。
要避免這些,您可以在加載時分塊數據:
df = pd.load_csv(file_path, chunksize = 30000)
或者如果您正在對列進行分析:
df = pd.load_csv(file_path, usecols = list_of_columns_index)
或兩者!
df = pd.load_csv(file_path, chunksize = 30000, usecols = list_of_columns_index)
希望這有助於加快分析速度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.