我有,当我使用的是熊猫数据帧一些内存不一致。
这里是我的代码框架:
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)
这基本上只是读一个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吉布(或1.2 GB)
附加信息(但我不认为这是相关的):
my_file.csv文件的大小为888 MB(LS -lh)
问题:
由于我刚装我的csv文件成熊猫数据帧的对象,为什么我的程序需要的RAM超过1 GB,而对象大小约为0.5GB,?
非常感谢
我不会假装知道深层次的使用动态内存的大熊猫来保存数据。大熊猫是饿的时候,它加载大型平面文件,作为一个经验法则,熊猫会用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)
希望这有助于加快您的分析。