融化大熊猫的大数据框架

时间:2020-01-22 13:36:29

标签: python pandas dask melt

我有一个3GB的数据集,其中有40k行和60k列,Pandas无法读取,我想根据当前索引融化文件。

当前文件如下:

enter image description here

第一列是索引,我想基于该索引来融化所有文件。 我尝试了熊猫和黄昏,但是在读取大文件时它们全部都崩溃了。

您有什么建议吗? 谢谢

1 个答案:

答案 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