【问题标题】:Reading a big csv file into dataframe将一个大的 csv 文件读入数据框
【发布时间】:2020-05-02 12:32:01
【问题描述】:

我有一个大型 csv 文件(13 GB),我希望将其读入 Python 中的数据框。所以我使用:

txt = pd.read_csv(r'...file.csv', sep=';', encoding="UTF-8", iterator = True, chunksize=1000)

它工作得很好,但数据包含在 pandas.io.parsers.TextFileReader 类型中,我想将它放入数据框中,以便操作数据。 p>

我设法获取数据样本,作为数据框使用:

txt.get_chunk(300)

但我希望将所有数据都放在一个数据框中。所以,我尝试了:

for df1 in txt:
df.append(df1)

我也试过了:

df2 = pd.concat([chunk for chunk in txt])

也没有用。 有人可以帮帮我吗?

提前致谢!

【问题讨论】:

  • 你想要一个完整的 13 GB 文件到单个变量数据帧吗?
  • 只要去掉chunksize 参数,那么txt 将是一个DataFrame。 chunksize 参数适用于无法将所有内容都放入内存而需要单独处理更易于管理的部分的情况。

标签: pandas csv parsing stringio


【解决方案1】:

尝试看看这个answer,特别是dask read_csv 可以解决问题。

【讨论】:

    【解决方案2】:

    您可以在读取文件时使用“nrows”参数将部分数据放入变量中。

    txt = pd.read_csv(r'...file.csv', sep=';', encoding="UTF-8", nrows=1000)

    但是,在这种情况下,您必须更喜欢使用更大的实例来处理大量数据。您还可以通过设置 dask 来使用多个实例。

    【讨论】:

    • 这比chunksize 选项差得多,因为要获得接下来的 1000 行,您需要重新读取整个文件才能找到您的位置。 chunksize 参数要聪明得多,本质上是给你一个你用尽的发电机。
    猜你喜欢
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 2023-01-23
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多