10

約 20,000,000 行と 4 列の大規模なデータセットを処理しています。残念ながら、私のマシンで利用可能なメモリ (~16GB) は十分ではありません。

例 (時刻は午前 0 時からの秒数):

           Date   Time   Price     Vol
0      20010102  34222  51.750  227900
1      20010102  34234  51.750    5600
2      20010102  34236  51.875   14400

次に、データセットを適切な時系列オブジェクトに変換します。

                         Date   Time   Price     Vol
2001-01-02 09:30:22  20010102  34222  51.750  227900
2001-01-02 09:30:34  20010102  34234  51.750    5600
2001-01-02 09:30:36  20010102  34236  51.875   14400
2001-01-02 09:31:03  20010102  34263  51.750    2200

メモリを解放するために、冗長な日付と時刻の列を削除したいと思います。メソッドで実行します.drop()が、メモリは解放されません。私も後で電話をかけようとしましgc.collect()たが、それも役に立ちませんでした。

これは、説明したアクションを処理するために呼び出すコードです。delパーツはメモリを解放しますが、パーツは解放しませんdrop

# Store date and time components
m, s = divmod(data.Time.values, 60)
h, m = divmod(m, 60)
s, m, h = pd.Series(np.char.mod('%02d', s)), pd.Series(np.char.mod('%02d', m)), pd.Series(np.char.mod('%02d', h))

# Set time series index
data = data.set_index(pd.to_datetime(data.Date.reset_index(drop=True).apply(str) + h + m + s, format='%Y%m%d%H%M%S'))

# Remove redundant information
del s, m, h
data.drop('Date', axis=1, inplace=True)
data.drop('Time', axis=1, inplace=True)

pandas データ フレームからメモリを解放するにはどうすればよいですか?

4

1 に答える 1