Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.memory_usage方法的使用。

DataFrame.memory_usage(index=True, deep=False)[source]

返回每列的内存使用情况(以字节为单位)。

内存使用情况可以选择包括索引和对象 dtype元素的贡献。

默认情况下,此值显示在DataFrame.info中。可以通过设置pandas.options.display.memory_usage=False 来取消这种情况。

参数

index : bool,默认为True

指定是否在返回的Series中包括DataFrame索引的内存使用情况。

如果index=True索引的内存使用率在输出中的第一项。

deep : bool,默认为False

如果为True,则通过询问对象 dtype

来深入了解数据 的系统级内存消耗,

并将其包含在返回值中。

返回值

sizes : Series

一个Series,其索引是原始列名,

其值是每列的内存使用量(以字节为单位)。

例子

>>> dtypes = ['int64', 'float64', 'complex128', 'object', 'bool']
>>> data = dict([(t, np.ones(shape=5000).astype(t))
... for t in dtypes])
>>> df = pd.DataFrame(data)
>>> df.head()
int64 float64 complex128 object bool
0 1 1.0 (1+0j) 1 True
1 1 1.0 (1+0j) 1 True
2 1 1.0 (1+0j) 1 True
3 1 1.0 (1+0j) 1 True
4 1 1.0 (1+0j) 1 True
>>> df.memory_usage()
Index 80
int64 40000
float64 40000
complex128 80000
object 40000
bool 5000
dtype: int64
>>> df.memory_usage(index=False)
int64 40000
float64 40000
complex128 80000
object 40000
bool 5000
dtype: int64

默认情况下,将忽略对象 dtype列的内存占用量:

>>> df.memory_usage(deep=True)
Index 80
int64 40000
float64 40000
complex128 80000
object 160000
bool 5000
dtype: int64

使用分类法可有效存储具有许多重复值的object-dtype列

>>> df['object'].astype('category').memory_usage(deep=True)
5168