2012-03-24 9 views
1

パンダのメモリオーバーヘッドができるだけ低くなるように、パンダの設定やパッチ適用に興味があります。実験では、2つのnumpy配列を作成しました。各配列には、5,000万のuint32値が含まれています。これらの配列をnumpy形式で格納するには、200 + 200 = 400MBが必要です。配列の1つをSeriesオブジェクト(index = None)にラップすると、〜600Mバイトのメモリが消費されます。 2つの配列をDataFrameオブジェクト(index = None)にラップすると、メモリ要件は〜1600 Mバイトになります。SeriesおよびDataFrameオブジェクトにはどのような余分なデータが格納されていますか?

追加メモリ要件は、シリーズストレージの場合は#rows * 8バイト、DataFrameストレージの場合は#rows *(#columns + 1)* 8バイトとなります。追加のデータが、元のnumpy配列とともに、SeriesおよびDataFrameオブジェクトに正確に格納されていることを説明できますか?

答えて

1

余分な記憶域は、行インデックスが64ビット整数として格納されているためです。あなたのユースケースのこのメモリ使用の問題に対処するための未解決の問題があります:https://github.com/pydata/pandas/issues/939

関連する問題