【发布时间】:2017-11-16 10:06:53
【问题描述】:
我想从 InstaCart https://www.instacart.com/datasets/grocery-shopping-2017 加载大型 .csv(340 万行,206k 用户)开源数据集
基本上,我无法将 orders.csv 加载到 Pandas DataFrame 中。我想学习将大文件加载到 Pandas/Python 中的最佳实践。
【问题讨论】:
我想从 InstaCart https://www.instacart.com/datasets/grocery-shopping-2017 加载大型 .csv(340 万行,206k 用户)开源数据集
基本上,我无法将 orders.csv 加载到 Pandas DataFrame 中。我想学习将大文件加载到 Pandas/Python 中的最佳实践。
【问题讨论】:
最好的选择是以块的形式读取数据,而不是将整个文件加载到内存中。
幸运的是,read_csv 方法接受 chunksize 参数。
for chunk in pd.read_csv(file.csv, chunksize=somesize):
process(chunk)
注意:通过将chunksize 指定为read_csv 或read_table,返回值将是iterable 类型的TextFileReader 对象:
另见:
【讨论】:
当您有可能无法放入内存的大数据帧时,dask 非常有用。我链接到的主页上有关于如何创建与 pandas 具有相同 API 但可以分发的 dask 数据框的示例。
【讨论】:
根据您的机器,您可以通过在读取 csv 文件时指定数据类型来读取内存中的所有数据。当 pandas 读取 csv 时,使用的默认数据类型可能不是最好的。使用dtype,您可以指定数据类型。它减少了读入内存的数据帧的大小。
【讨论】: