我应该如何阅读和使用~40GB csv的数据进行时间序列预测?

时间:2018-04-16 18:24:02

标签: python pandas csv dask

我有一个~40GB的csv文件,里面有2013-2016年的出租车数据(大约1.05亿行),据此我试图预测2017年的收入。目前,我正在测试随机森林等技术,xgboost和先知。由于内存限制,我只使用了一小部分数据,现在我需要使用所有可用数据进行预测。

为了预测目的,读取所有这些数据的最佳方法是什么?是否适合目的?对于较小的子集,我使用了pandas,我目前正在寻找dask来读取完整的数据。一旦我读入数据,我需要重新安排操作,比如按日期排序,计算某些数据的每日/每周中位数等。即使在使用dask时,也不需要将所有数据保存在内存中进行预测?

1 个答案:

答案 0 :(得分:2)

我将尝试提取我认为是您问题的重要部分:

  

Dask是否可用于重新排序操作,例如按日期排序,计算40GB CSV数据的每日/每周中位数?

简短回答:"是"

Dask旨在以块的形式分解数据,以便您可以在大于可用内存的数据集上实现pandas功能。它只会合理地累积您尝试实现的输出所需的数据。实现了很多pandas API,因此您可以通过对较小数据集上使用的代码进行很少的更改来完成所需的操作

示例,某些列的每周平均值:

import dask.dataframe as dd
df = dd.read_csv(...)  # same keywords as for the pandas variant
df = df.set_index('my_time_column')  
df['my_values'].resample('1w').mean().compute()