为什么 df.info() 和 df.dtypes.memory_usage(deep=True) 结果之间存在差异?

问题描述

我正在尝试对形状为 ~ A - (24482319,33) 和 B - (12029240,165) 的两个相当大的数据集进行 pd.merge。尽管我有 32 个 RAM、Core-i9、带有 2TB SSD 的戴尔 XPS、pandas 内存操作,但这会引发内存错误。优化数据类型后,我尝试检查数据集的相应大小(使用 df.info())和内存使用情况(df.dtypes.memory_usage(deep=True))。结果如下:

df 尺寸 内存使用
A 3.1+ GB 6,531
B 6.0+ GB 34,154

详细信息如下:

**A.info()**
-----------
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 24482319 entries,0 to 24482318
Columns: 33 entries,MSISDN to GSM_DECILE
dtypes: category(9),datetime64[ns](3),float32(19),float64(1),object(1)
memory usage: 3.1+ GB

**B.info()**
-----------
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 12029240 entries,0 to 12029239
Columns: 165 entries,MSISDN to MFS_DECILE
dtypes: category(6),datetime64[ns](4),float32(103),int16(25),int8(26),object(1)
memory usage: 6.0+ GB

我相信数据帧 B 是这里的罪魁祸首(即导致内存中操作 pd.merge 失败)所以我的问题是:为什么当 A 为〜它的大小的 2 倍?如何减少内存使用量?

谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)