【问题标题】:Reading large text files with Pandas [duplicate]使用 Pandas 读取大型文本文件 [重复]
【发布时间】:2014-06-18 03:54:25
【问题描述】:

我一直在尝试使用 read_csv 函数使用 Pandas 读取一些大型文本文件(大小约为 1.4GB - 2GB),但无济于事。以下是我正在使用的版本:

  • Python 2.7.6
  • Anaconda 1.9.2(64 位)(默认,2013 年 11 月 11 日,10:49:15)[MSC v.1500 64 位 (AMD64)]
  • IPython 1.1.0
  • 熊猫 0.13.1

我尝试了以下方法:

df = pd.read_csv(data.txt')

它使 Ipython 崩溃并显示一条消息:Kernel died, restarting。

然后我尝试使用迭代器:

tp = pd.read_csv('data.txt', iterator = True, chunksize=1000)

再次,我收到了 Kernel died, restarting 错误。

有什么想法吗?或者任何其他方式来读取大文本文件?

谢谢!

【问题讨论】:

  • 我的机器上没有出现这个错误,我的配置与你的相似。你有多少 RAM 内存?在我的机器上,Python 需要大约 5GB 的峰值才能使用 pd.read_csv() 读取 2.9 GB 的 csv
  • @SaulloCastro 我的机器安装了 8GB。它应该能够处理这样的文件大小,因为大多数已安装的 RAM 都可用,我没有运行其他任何东西。

标签: python csv pandas ipython large-files


【解决方案1】:

在发布此问题一段时间后,here 提供了类似问题的解决方案。基本上,它建议通过执行以下操作来读取chunks 中的文件:

chunksize = 10 ** 6  # number of rows per chunk
for chunk in pd.read_csv(filename, chunksize=chunksize):
    process(chunk)

您应该根据您机器的能力指定chunksize 参数(即确保它可以处理该块)。

【讨论】:

  • 什么是10 ** 6,请各位小白们赐教??此外,这并没有给出将块存储到数据帧中并在之后连接所有此类数据帧的解决方案。
  • 将 10 提升到 6 次方是直观的。什么是KB,MB,文件中的行,是什么???
  • 这里可能会提到一个更具解释性和有用的链接:pythondata.com/working-large-csv-files-python
  • 哦,对不起,没有让你完全正确。它是每个块的行数。
  • 我建议您检查目标欺骗问题,因为它为您提供相关且有用的信息 :) 也感谢您的链接,会检查一下
猜你喜欢
  • 2019-08-10
  • 2020-08-20
  • 2014-11-15
  • 2023-02-20
  • 2014-12-05
相关资源
最近更新 更多