熊猫内存使用情况不一致

问题描述 投票:6回答:1

我有,当我使用的是熊猫数据帧一些内存不一致。

这里是我的代码框架:

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,?

非常感谢

python pandas memory
1个回答
0
投票

我不会假装知道深层次的使用动态内存的大熊猫来保存数据。大熊猫是饿的时候,它加载大型平面文件,作为一个经验法则,熊猫会用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)

希望这有助于加快您的分析。

© www.soinside.com 2019 - 2024. All rights reserved.