gpt4 book ai didi

python - Pandas 内存使用不一致

转载 作者:太空狗 更新时间:2023-10-30 00:18:30 24 4
gpt4 key购买 nike

我在使用 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')

给出:内存使用: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 中保存数据的深层用途。 Pandas 在加载大型平面文件时会很饿,根据经验,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)

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

关于python - Pandas 内存使用不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52162257/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com