以制表符分隔值的 txt 文件格式存储非常大的数据
Store very huge data in txt file format with Tab Separated values
我正在使用 pd.read_sql()
从 SQL 数据库加载数据集。我试图在一个 excel/csv 文件中存储 1 亿行和 300 列。但是由于1,048,576行的限制而失败了。
所以我尝试使用
存储与 .tsv
文件相同的文件
pd.to_csv("data.txt", header=True, index=False, sep='\t', mode='a')
我没有发现制表符分隔的 txt 文件的限制。
可以去吗,还有其他好的选择吗?
可能不是个好主意。您的限制是您的机器内存,因为 pandas 将所有内容加载到内存中。该大小的数据框不适合。您可能需要更多机器和分布式计算框架,例如 apache spark 或 dask。
或者,根据您要对数据执行的操作,您可能不需要将其加载到内存中。
这里我唯一不确定的是 pandas
内部是如何工作的。除此之外,你的方法完全没问题。 Hadoop 广泛使用 .tsv
格式来存储和处理数据。并且没有“.tsv
文件的限制”之类的东西。一个文件只是一个字节序列。 \t
和 \n
只是字符,没有任何区别。您遇到的限制是由 Microsoft Excel 强加的,而不是由 OS 强加的。例如,很久以前它较低,其他传播 sheet 应用程序可能会施加不同的限制。
如果您 open('your_file.tsv', 'wt')
和 readline
,则只占用 \n
之前的字节。没有其他事情发生。没有允许多少个\t
直到\n
,一个文件中允许多少个\n
这样的事情。它们都只是字节,一个文件可以包含 OS.
允许的字符数
它在不同的 OS 之间有所不同,但是,根据 NTFS vs FAT vs exFAT,NTFS 文件系统的最大文件大小将近 16TB。但实际上,将一个大文件拆分成多个大小合理的文件是个好主意。例如,您可以轻松分发它们。
要处理如此大的数据,您应该采用迭代或分布式方法。例如,Hadoop。
我正在使用 pd.read_sql()
从 SQL 数据库加载数据集。我试图在一个 excel/csv 文件中存储 1 亿行和 300 列。但是由于1,048,576行的限制而失败了。
所以我尝试使用
存储与.tsv
文件相同的文件
pd.to_csv("data.txt", header=True, index=False, sep='\t', mode='a')
我没有发现制表符分隔的 txt 文件的限制。
可以去吗,还有其他好的选择吗?
可能不是个好主意。您的限制是您的机器内存,因为 pandas 将所有内容加载到内存中。该大小的数据框不适合。您可能需要更多机器和分布式计算框架,例如 apache spark 或 dask。
或者,根据您要对数据执行的操作,您可能不需要将其加载到内存中。
这里我唯一不确定的是 pandas
内部是如何工作的。除此之外,你的方法完全没问题。 Hadoop 广泛使用 .tsv
格式来存储和处理数据。并且没有“.tsv
文件的限制”之类的东西。一个文件只是一个字节序列。 \t
和 \n
只是字符,没有任何区别。您遇到的限制是由 Microsoft Excel 强加的,而不是由 OS 强加的。例如,很久以前它较低,其他传播 sheet 应用程序可能会施加不同的限制。
如果您 open('your_file.tsv', 'wt')
和 readline
,则只占用 \n
之前的字节。没有其他事情发生。没有允许多少个\t
直到\n
,一个文件中允许多少个\n
这样的事情。它们都只是字节,一个文件可以包含 OS.
它在不同的 OS 之间有所不同,但是,根据 NTFS vs FAT vs exFAT,NTFS 文件系统的最大文件大小将近 16TB。但实际上,将一个大文件拆分成多个大小合理的文件是个好主意。例如,您可以轻松分发它们。
要处理如此大的数据,您应该采用迭代或分布式方法。例如,Hadoop。