当前位置: 首页 > 知识库问答 >
问题:

如何在Python dataframe中读取数据而不进行级联?

晏炳
2023-03-14

我想读文件f(文件大小:85GB)的块到一个数据帧。建议使用以下代码。

chunksize = 5
TextFileReader = pd.read_csv(f, chunksize=chunksize)

但是,这段代码给了我TextFileReader,而不是DataFrame。而且,由于内存限制,我不想将这些块串联起来以将TextFileReader转换为dataframe。请指教。

共有1个答案

罗淮晨
2023-03-14

当您正在尝试处理85GB的CSV文件时,如果您试图通过将其分解成块并将其转换为数据帧来读取所有的数据,那么它肯定会达到内存限制。你可以尝试用不同的方法来解决这个问题。在这种情况下,可以对数据使用筛选操作。例如,如果数据集中有600列,而您只对50列感兴趣。尝试只从文件中读取50列。这样你会节省很多内存。在读取行时处理行。如果需要首先过滤数据,请使用生成器函数。yield使一个函数成为生成器函数,这意味着在您开始对其进行循环之前,它不会执行任何工作。

有关生成器函数的更多信息:读取一个巨大的.csv文件

有关高效过滤,请参阅:https://codereview.stackExchange.com/questions/88885/Efficient-filter-a-large-100gb-csv-file-v3

用于处理较小的数据集:

方法1:将reader对象直接转换为dataframe:

full_data = pd.concat(TextFileReader, ignore_index=True)

为了避免索引的两面性,有必要在concat函数中添加参数ignore index。

df=TextFileReader.get_chunk(3)

for chunk in TextFileReader:
    print(chunk)

来源:http://pandas.pydata.org/pandas-docs/stable/io.html#io-chunking

df=pd.dataframe(TextFileReader.get_chunk(1))

这将把一个块转换为数据帧。

number_of_chunks=0

for chunk in TextFileReader:
   number_of_chunks=number_of_chunks+1 


print(number_of_chunks)
 类似资料:
  • 本文向大家介绍如何在Python对Excel进行读取,包括了如何在Python对Excel进行读取的使用技巧和注意事项,需要的朋友参考一下   在python自动化中,经常会遇到对数据文件的操作,比如添加多名员工,但是直接将员工数据写在python文件中,不但工作量大,要是以后再次遇到类似批量数据操作还会写在python文件中吗?   应对这一问题,可以将数据写excel文件,针对excel 文件

  • 问题内容: 我正在编写我的第一个烧瓶应用程序。我正在处理文件上传,基本上我想要的是读取上传文件的数据/内容而不保存它,然后将其打印在结果页面上。是的,我假设用户始终上传一个文本文件。 这是我正在使用的简单上传功能: 现在,我正在保存文件,但是我需要的是一个’a’变量来包含文件的内容/数据。 问题答案: 包含字段。该对象必须扩展IO或文件对象,因此它必须包含read和其他类似方法。还扩展了strea

  • 我需要分离读/写PostgreSQL实例。我有一个写复制副本和几个读复制副本。 QUKUS支持添加多个数据源,但尚不清楚如何让Panache/HiberNate为不同的查询选择合适的数据源。 问:如何配置 Quarkus 以使用不同的数据源进行读/写访问?

  • ap.getSessionData(OPTION | keys | key, CALLBACK) 读取会话级数据。可用于页面间传递数据。 可直接传入一个数组作为 OPTION.keys,或直接传入一个字符串,作为 OPTION.keys 数组中的某一个 key。 OPTION 参数说明 名称 类型 必填 描述 keys String Array 是 要读取的数据的 key CALLBACK 参数说

  • 在Spring Boot留档中,它指出命令行上提供的以开头的值被转换为系统属性。 https://docs.spring.io/spring-boot/docs/1.5.19.RELEASE/reference/htmlsingle/#boot-features-external-config-command-line-args 默认情况下,SpringApplication会将任何命令行选项参数