【问题标题】:Reading large csv files python and panda读取大型 csv 文件 python 和 panda
【发布时间】:2020-08-20 19:39:27
【问题描述】:

我有这个 Python 服务器,它连接到 sftp 服务器,并拉取 CSV 文件(在 nodeJS 服务器中运行一个 For 循环,每次都有不同的连接出现) 在那个 Python 服务器中——我正在用 panda 读取 CSV 文件——就像这样

        file = sftp.open(latestfile)
        check = pd.read_csv(file).to_csv()

最后,我返回 check 与 CSV 文件数据 inisde - 然后我在 nodeJS 服务器中解析。 这个过程非常顺利,我设法通过这种方式获得了大量数据——但是当他试图读取一个大的 CSV 文件(22MB)时,我的 Python 服务器真的崩溃了 我在网上搜索并尝试使用块和 .modin 库和 dask.dataframe 来解决它,但每次我尝试使用其中一种方法时,我都无法正确读取文件内容(.to_csv 部分) 我现在真的迷路了,因为我无法让它工作(可能有比这更大的文件)

【问题讨论】:

  • 澄清一下,服务器“真的崩溃”是什么意思?发生了什么?
  • @ApplePie 两台服务器都在亚马逊实例上运行,现在它被冻结,我无法访问它,在日志中我看到它停止工作,因为 python 服务器获取了一些 CSV 文件所以我连接到那个 SFTP 存储库并下载了文件。我在本地运行该进程,当服务器尝试读取该文件时出现此错误 - [CRITICAL] WORKER TIMEOUT (pid:11) 亚马逊实例仍然没有响应。

标签: python python-3.x pandas


【解决方案1】:

这是一种处理大型 csv 文件的方法。它允许您一次处理多组块。您可以根据自己的要求进行修改(例如通过 sftp 等)。

小例子

import pandas as pd
chunksize = 10 ** 4
for chunk in pd.read_csv(latestfile, chunksize=chunksize):
    process(chunk.to_csv())

【讨论】:

  • 问题是我需要发送整个文件内容。我在做什么?
  • 我只能在这个块处理结束时返回它
  • 还有一件事 - 我得到错误未定义进程(未定义变量)
猜你喜欢
  • 2021-09-02
  • 1970-01-01
  • 1970-01-01
  • 2016-11-09
  • 1970-01-01
  • 1970-01-01
  • 2016-11-29
  • 2016-04-26
  • 1970-01-01
相关资源
最近更新 更多