我应该如何读取和使用 ~40GB csv 中的数据进行时间序列预测?
How should I read and use data from a ~40GB csv for time series prediction?
我有一个约 40GB 的 csv 文件,其中包含 2013 年至 2016 年的出租车出行数据(约 1.05 亿行),我试图使用它来预测 2017 年的收入。目前,我正在测试诸如以下的技术随机森林、xgboost 和 Prophet。由于内存限制,我只处理了一小部分数据,现在我需要使用所有可用数据进行预测。
为了预测目的读取所有这些数据的最佳方式是什么:dask 是否符合目的?对于较小的子集,我使用了 pandas,目前我正在研究 dask 以读取完整数据。读入数据后,我需要进行重新排列操作,例如按日期排序、计算某些数据的 daily/weekly 中位数等。即使在使用 dask 时,是否也不需要保留所有数据在内存中进行预测?
我将尝试提取我认为是您问题的重要部分的内容:
is Dask useful for rearranging operations like sorting them by date, computing the daily/weekly medians of 40GB of CSV data?
简答:"yes"
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()
我有一个约 40GB 的 csv 文件,其中包含 2013 年至 2016 年的出租车出行数据(约 1.05 亿行),我试图使用它来预测 2017 年的收入。目前,我正在测试诸如以下的技术随机森林、xgboost 和 Prophet。由于内存限制,我只处理了一小部分数据,现在我需要使用所有可用数据进行预测。
为了预测目的读取所有这些数据的最佳方式是什么:dask 是否符合目的?对于较小的子集,我使用了 pandas,目前我正在研究 dask 以读取完整数据。读入数据后,我需要进行重新排列操作,例如按日期排序、计算某些数据的 daily/weekly 中位数等。即使在使用 dask 时,是否也不需要保留所有数据在内存中进行预测?
我将尝试提取我认为是您问题的重要部分的内容:
is Dask useful for rearranging operations like sorting them by date, computing the daily/weekly medians of 40GB of CSV data?
简答:"yes"
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()