如何将Pandas df优化为ubyte数据类型(0..255(?(默认情况下,整数为int64(
如果我将数据转换为分类类型,df会使用更少的内存吗?
或者优化它的唯一方法是使用NumPy而不是Pandas?
对于范围为0..255的无符号整数数据,可以将内存存储从默认的int64
(8字节(减少到使用uint8
(1字节(。您可以参考本文中的一个示例,其中内存使用量从1.5MB大幅减少到332KB(约五分之一(。
对于分类类型,由于Pandas将分类列存储为对象,因此这种存储不是最优的。其中一个原因是它创建了一个指针列表,指向列中每个值的内存地址。有关详细信息,请参阅本文。
要使用uint8
,您可以在输入数据时执行此操作,例如,在pd.read_csv
调用期间,您使用uint8
类型指定输入列的数据类型。(有关示例,请参阅第一篇文章(。如果您已经加载了数据,并且希望将数据帧列转换为使用uint8
,则可以使用语法类似.astype('uint8')
的Series.astype()
或DataFrame.astype()
函数。