每当我处理具有以前从未遇到过的奇怪扩展的数据集时,我通常会用记事本打开它们,以查看数据的外观,然后再使用 pandas 分析它们。但是这个数据集(link),它的扩展名为 .tr (我想代表跟踪文件),由于其巨大的大小(这就是错误消息所说的),记事本不支持。
我应该使用哪个软件来打开跟踪文件?还有一种安全的方法可以将文件分割成更小的部分,因为我通常将我的数据上传到 kaggle 并在他们的内核上工作。
我不确定这是否是正确的发布位置,如果不是,请在删除帖子之前将我指向正确的位置。
每当我处理具有以前从未遇到过的奇怪扩展的数据集时,我通常会用记事本打开它们,以查看数据的外观,然后再使用 pandas 分析它们。但是这个数据集(link),它的扩展名为 .tr (我想代表跟踪文件),由于其巨大的大小(这就是错误消息所说的),记事本不支持。
我应该使用哪个软件来打开跟踪文件?还有一种安全的方法可以将文件分割成更小的部分,因为我通常将我的数据上传到 kaggle 并在他们的内核上工作。
我不确定这是否是正确的发布位置,如果不是,请在删除帖子之前将我指向正确的位置。
此文件应该是一个纯文本文件,其中n行和m列由制表符分隔。这是另一个小得多的文件,他们提供下载并声称它具有相同的数据格式。
由于文件太大而无法放入内存,您可以使用数据格式 HDF5。这将允许您加载数据集的切片,而无需将整个文件加载到内存中。但是,首先,您需要将文件转换为 .h5 文件。这可以通过h5py来完成。
我现在把下面的代码放在一起。它逐行读取文本文件并将每一行写入 .h5 文件。它适用于他们提供下载的较小文件。但是,我还没有在更大的文件上测试它。如果你试一试,请告诉我进展如何。
import h5py
import numpy as np
N_COLS = 3 # adjust to your number of columns
n_rows_dataset = 1000
file = h5py.File('/path/to/your/output.h5', 'w')
dataset = file.create_dataset(
'my_dataset',
(n_rows_dataset, N_COLS),
chunks=(5, N_COLS),
maxshape=(None, N_COLS))
current_row = 0
# this does not load the whole file but creates an iterator instead
for line in open("/path/to/the/large/file"):
if current_row == n_rows_dataset-1:
n_rows_dataset = n_rows_dataset + 1000
dataset.resize((n_rows_dataset, N_COLS))
dset[current_row] = np.fromstring(line, sep=" ", dtype=np.float64)
current_row += 1
注意:您可以通过打印文件的第一行来找出数据集的列数:
i = 0
for line in open("/path/to/the/large/file"):
print(line)
i += 1
if i >= 5:
break
如果您只想通过基本的 GUI + 搜索以文本形式查看非常大的文件,我建议您使用glogg。它就是为此目的而设计的。
在将大文件拆分成多个小文件时,您可以参考这些针对 Windows或Unix 命令的解决方案,并使用最适合您的方法。