Dask日期时间优化

问题描述 投票:2回答:1

我想知道如何优化这种转换,我需要计算一周中的行数为125万行,我有一台4 GB内存的计算机,我只想尝试这个:

df_train['date'].dt.dayofweek.compute()

而我的配备Ubuntu 16.04和Intel Core 2 Duo E7200 @ 2.5 GHz的电脑只是冻结,我需要重新启动它

有没有想过优化这个?

python datetime dask
1个回答
0
投票

您的数据集大小约为1 GB(125M行,每行8个字节)。愚蠢的是,dayofweek返回一个int64(8个字节)。因此,在执行此计算时,将使用至少2 GB的内存(加上一些较小的开销)。

目前尚不清楚如何在如此小的计算机上用这么多数据在内存中做有意义的工作。我建议将数据拆分成几个块(例如10个),将这些块保存到磁盘,然后一次加载和操作一个块。一次100 MB的输入数据足以使您的处理器内核(和内存)保持忙碌状态。

另一个想法:如果你有很多重复的日期(肯定你必须),创建一个由唯一日期索引的系列,其值为dayofweek.astype('i1')。这将是一种更加紧凑的方式来表示相同的信息(它是否实际取决于您进一步处理的细节,我们不知道)。

© www.soinside.com 2019 - 2024. All rights reserved.