我有一个3GB的数据集,其中有40k行和60k列,Pandas无法读取,我想根据当前索引融化文件。
当前文件如下:
第一列是索引,我想基于该索引来融化所有文件。 我尝试了熊猫和黄昏,但是在读取大文件时它们全部都崩溃了。
您有什么建议吗? 谢谢
答案 0 :(得分:1)
您需要使用pandas的chunksize
属性。例如参见How to read a 6 GB csv file with pandas。
您将一次处理N行,而不会加载整个数据帧。 N
将取决于您的计算机:如果N为低,它将花费更少的内存,但是会增加运行时间,并且会增加IO负载。
# create an object reading your file 100 rows at a time
reader = pd.read_csv( 'bigfile.tsv', sep='\t', header=None, chunksize=100 )
# process each chunk at a time
for chunk in file:
result = chunk.melt()
# export the results into a new file
result.to_csv( 'bigfile_melted.tsv', header=None, sep='\t', mode='a' )
此外,如果您使用整数,则可以将dtype=np.int32
的参数read_csv
用于dtype=np.float32
,如果不需要精度,则可以使用 QObject::connect(&serialPort, &QSerialPort::readyRead, [&]() {
standardOutput << "Recieved: " << serialPort.readAll() << endl;
});
来更快地处理数据。
注意:这里有一些内存使用示例:Using Chunksize in Pandas。