如何在 python 中处理大型数据集?

数据挖掘 机器学习 数据挖掘 数据集
2022-02-14 08:20:12

出于培训目的,为了开始使用 python 进行机器学习和数据分析,我在一个非常小的数据集(20000 行,600MB)上工作。但是从几天开始,我决定走得更远,所以我下载了一个 1Go 的大数据集。

我想做一些分析并对其应用机器学习,所以我尝试在 jupiter nootebook 中使用 pyhton 读取 csv 文件,并且 3 个多小时后该文件仍在加载。

所以我想知道当您必须使用大型数据集时要遵循的最佳实践/流程是什么?

2个回答

在探索更复杂的工具(如 Spark 或 Dask)之前,一种选择是以块的形式读取数据,而不是加载整个文件。例如,如果您使用的是 pandas,则该read_csv方法接受chunksize参数。

主要思想是,通常您需要做的是将每个块减少到更小的东西,仅包含您需要的部分(某些类的一些平均值/计数/总和等)并相应地存储系列/数组/字典等.

喀拉斯

如果您使用的是 Keras,则有一个生成数据的类Sequence 。您需要实现数据的生成方式。在您的情况下,您读取文件几行,然后返回这些行。

这样,您将能够更快地使用数据,因为您不需要一次读取所有数据(整个 .csv 文件)。这通常称为分块读取数据。

同样的数据读取过程也可以在其他框架(TF,Pytorch,...)中实现。

纯 Python

如果你真的想在纯 Python 中分块读取数据,你可以yield在 Python 中使用语句。更多关于yield并且generators可以在这里这里找到。