我想加载大量的.csv(3.4米行,206K用户)开源数据集从InstaCart https://www.instacart.com/datasets/grocery-shopping-2017加载大型数据集到大熊猫的Python
基本上,我有麻烦了装载orders.csv成熊猫数据帧。我想了解将大文件加载到Pandas/Python中的最佳实践。
我想加载大量的.csv(3.4米行,206K用户)开源数据集从InstaCart https://www.instacart.com/datasets/grocery-shopping-2017加载大型数据集到大熊猫的Python
基本上,我有麻烦了装载orders.csv成熊猫数据帧。我想了解将大文件加载到Pandas/Python中的最佳实践。
最佳选择是以块为单位读取数据,而不是将整个文件加载到内存中。
幸运的是,read_csv
方法接受chunksize
的说法。
for chunk in pd.read_csv(file.csv, chunksize=somesize):
process(chunk)
注意:通过指定chunksize
到read_csv
或read_table
,则返回值将是TextFileReader
类型的iterable
对象:
另见:
如果您的大数据帧可能不适合内存,则dask非常有用。我已经链接到的主页有关于如何创建与pandas相同但可以分发API的dask数据框的示例。
根据您的机器,您可以通过在读取csv文件时指定数据类型来读取它在内存中的全部内容。当熊猫读取csv时,使用的默认数据类型可能不是最好的。使用dtype
您可以指定数据类型。它减少了读入内存的数据帧的大小。