Python 为什么熊猫中的内存使用报告的整数数与对象数据类型相同?
我试图理解熊猫中整数和字符串(对象)数据类型在内存使用方面的差异Python 为什么熊猫中的内存使用报告的整数数与对象数据类型相同?,python,pandas,Python,Pandas,我试图理解熊猫中整数和字符串(对象)数据类型在内存使用方面的差异 import pandas as pd df_int = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'), dtype=int) 正如预期的那样,这需要大约3.2kb的内存,因为每列都是64位整数 In [38]: df_int.info() <class 'pandas.core.frame.DataFrame'>
import pandas as pd
df_int = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'), dtype=int)
正如预期的那样,这需要大约3.2kb的内存,因为每列都是64位整数
In [38]: df_int.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 100 entries, 0 to 99
Data columns (total 4 columns):
A 100 non-null int64
B 100 non-null int64
C 100 non-null int64
D 100 non-null int64
dtypes: int64(4)
memory usage: 3.2 KB
对于使用转换为字符串的整数初始化的数据帧,它几乎是24KB
In [42]: sys.getsizeof(df_str)
Out[42]: 23984
为什么Pandas中的内存使用报告的整数数与字符串数(对象数据类型)相同?在后面,使用'deep'
获取实际值(否则这是一个估计值)
df_str.info(内存使用率='deep')
#
#范围索引:100个条目,0到99
#数据列(共4列):
#100非空对象
#B 100非空对象
#C 100非空对象
#D 100非空对象
#数据类型:对象(4)
#内存使用率:23.3KB
“深刻”的值相当于“深刻反省的真实”。
内存使用情况以人类可读的单位显示(以2为基数表示)。
在没有深入反省的情况下,根据列进行内存估计
假定值占用相同内存的数据类型和行数
对应数据类型的金额。有了深刻的记忆内省
实际内存使用率计算是以
计算资源
回答了我的问题。非常感谢。
In [44]: sys.getsizeof(df_int)
Out[44]: 3304
In [42]: sys.getsizeof(df_str)
Out[42]: 23984
df_str.info(memory_usage='deep')
#<class 'pandas.core.frame.DataFrame'>
#RangeIndex: 100 entries, 0 to 99
#Data columns (total 4 columns):
#A 100 non-null object
#B 100 non-null object
#C 100 non-null object
#D 100 non-null object
#dtypes: object(4)
#memory usage: 23.3 KB