【发布时间】:2021-02-18 12:26:27
【问题描述】:
Pandas 给出了非常奇怪的内存估计。不可能是包含 2 个数字 列表的列与包含 100 个数字 的列占用几乎相同的内存。 Numpy 的nbytes 更有意义(参见下面的示例),但memory_usage 和deep=True 不知道如何处理它?
import pandas as pd
import numpy as np
n_rows = 100000
vecs_1x2 = np.random.random((n_rows, 2))
mats_10x10 = np.random.random((n_rows, 10, 10))
df = pd.DataFrame({'vecs_1x2': list(vecs_1x2), 'mats_10x10': list(mats_10x10)})
print('numpy - vecs_1x2.nbytes: {} Mb'.format(vecs_1x2.nbytes / 1024.**2))
print('numpy - mats_10x10.nbytes: {} Mb'.format(mats_10x10.nbytes / 1024.**2))
print('pandas - df.memory_usage (in Mb):\n{}'.format(df.memory_usage(deep=True, index=False) / 1024.**2))
输出:
numpy - vecs_1x2.nbytes: 1.52587890625 Mb
numpy - mats_10x10.nbytes: 76.2939453125 Mb
pandas - df.memory_usage (in Mb):
mats_10x10 11.444092
vecs_1x2 9.918213
怎么样?!
【问题讨论】:
标签: python pandas numpy memory