Python

Pandasで大規模データセットに対してメモリを効率的に使う

Pandasは中小規模のデータセットに対して非常に効果的なデータ分析ツールですが、大規模データセットを処理する際にはメモリの使用量や処理速度が問題となります。
この記事では、Pandasを使用して大規模データセットを効果的に処理し、メモリを最適に使うためのテクニックを紹介します!

メモリ使用量の確認

データのメモリ使用量を理解することから始めましょう。
info()メソッドを使用して、DataFrameがどれだけのメモリを消費しているかを確認しましょう。
とりあえずサンプルのデータを読み込みす。一旦15万行くらい、50列の適当なデータです。

メモリ使用量は57.9MBみたいです。

データ型の変更

Pandasでは列のデータ型がデフォルトで推測されますが、これを手動で調整することでメモリの使用量を減らすことが可能です。たとえば、小さい範囲の整数値のみを扱う場合、データ型をint64からint32へ変更することで、メモリ消費を削減できます。

2列だけデータ型を変えることで1MBほど変わりました。
ただし、データ型を変更する際は、情報の損失がないかを確認することが重要ですのでそこは注意してください。

チャンク処理

大規模なデータセットを一度にメモリに読み込む代わりに、チャンクとして小分けにして処理することでメモリ効率を向上させることができます。
read_csv()などのメソッドでchunksizeパラメータを設定し、データを分割して読み込んでみましょう。
とりあえず今のCSVは15万行ちょっとなので、これを5万行ごとに分割してしょりしてみましょう。

一度に全てを処理するのは難しくても、いくつかに分けて処理をすることはできますね!

不要な列の削除

こちらは単純です。使わない列は消しましょうということです!

53.3MBまで減りました。ちょっと消すだけでも変わりますね!意外と使わない列って多かったりしますから、不要であれば消しましょう。

まとめ

こんな感じでチャンクに分けたり、データ型を変えたり、使わない列を削除したりすれば、少しではありますが使用するメモリを減らせます。

おすすめ記事

1

こんにちわ、サトシです。33歳です。 今回は、データサイエンティストの3年間に3社で働いた僕が、データサイエンティストとしての転職活動についてまとめて書きたいと思います。 これまでSE→博士研究員→ポ ...

2

お疲れさまです! 久しぶりの更新になってしまいましたが、僕が未経験からデータサイエンティストになるまでの転職活動の全記録を書き残しておきたいと思います。 僕は博士号を取得後に研究員として仕事をしていま ...

3

こんにちわ、サトシです。 今回は、企業でデータサイエンティストとして働いていた僕が、フリーランスとしてどのような手順で独立していったかについて書いていきたいと思います。 僕はSIer SE→博士過程→ ...

-Python

S