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

标签 python pandas csv dask

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

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

最佳答案

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

is Dask useful for rearranging operations like sorting them by date, computing the daily/weekly medians of 40GB of CSV data?

简短回答:"is"

Dask 旨在将数据分成 block ,以便您可以在大于可用内存的数据集上实现 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()

关于python - 我应该如何读取和使用 ~40GB csv 中的数据进行时间序列预测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49863921/

相关文章:

python - 如何使用python自动重命名txt文件

python - Count 满足条件的序列总数,无 for 循环

python - Pandas 拆分和追加

python - 基于列表、python 的 csv 中的新列

r - 在 read.csv 中指定 colClasses

java - 线程库的无锁实现

python - 如何在python中将ndarray转换为系列

python - 将列添加到 pandas 数据框中,从其他列中的列表中获取值

python - 生成每列的出现次数,但相对于另一列?

python - 将 csv 文件导入 Python 中的矩阵/数组