簡體   English   中英

Pandas內存使用不一致

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM