【问题标题】:Loading large dataset into Pandas Python将大型数据集加载到 Pandas Python 中
【发布时间】:2017-11-16 10:06:53
【问题描述】:

我想从 InstaCart https://www.instacart.com/datasets/grocery-shopping-2017 加载大型 .csv(340 万行,206k 用户)开源数据集

基本上,我无法将 orders.csv 加载到 Pandas DataFrame 中。我想学习将大文件加载到 Pandas/Python 中的最佳实践。

【问题讨论】:

    标签: python csv pandas


    【解决方案1】:

    最好的选择是以块的形式读取数据,而不是将整个文件加载到内存中

    幸运的是,read_csv 方法接受 chunksize 参数。

    for chunk in pd.read_csv(file.csv, chunksize=somesize):
        process(chunk)
    

    注意:通过将chunksize 指定为read_csvread_table,返回值将是iterable 类型的TextFileReader 对象:

    另见:

    【讨论】:

    • 如果我需要加载整个数据集 (~70GB),因为我需要应用 SVD 或 PCA 之类的东西怎么办?
    【解决方案2】:

    当您有可能无法放入内存的大数据帧时,dask 非常有用。我链接到的主页上有关于如何创建与 pandas 具有相同 API 但可以分发的 dask 数据框的示例。

    【讨论】:

      【解决方案3】:

      根据您的机器,您可以通过在读取 csv 文件时指定数据类型来读取内存中的所有数据。当 pandas 读取 csv 时,使用的默认数据类型可能不是最好的。使用dtype,您可以指定数据类型。它减少了读入内存的数据帧的大小。

      【讨论】:

        猜你喜欢
        • 2021-11-12
        • 1970-01-01
        • 2017-02-08
        • 1970-01-01
        • 1970-01-01
        • 2023-03-17
        • 2018-04-13
        • 2020-07-21
        • 2019-07-28
        相关资源
        最近更新 更多