たなブログ 教養を高めて生涯資産を増やすブログ(`・ω・´)

【Python Coding】pandasを使って数値型データを抽出&圧縮

PR Pythonを学ぶ

こんにちは、TAKです。
今回はpythonのpandasを用いて、「数値型データ」を操作する方法を解説していきます。

具体的には、以下3つの方法を順に紹介していきたいと思います。

① データフレームの「データ型」を確認する方法
② 「特定のデータ型」を抽出する方法
③ 「数値型データ」を圧縮する方法

【こんな人に読んで欲しい記事です】

● pandasでデータフレーム化した後、「データ型」を確認出来るようになりたい方

● データフレームから「数値型」データのカラム(列)を抽出出来るようになりたい方

● データサイズを小さくするため、「int64型」や「float64型」を圧縮したい方

【pandas】データフレームの「データ型」を確認する方法

必要ライブラリのインポート(共通)

今回はpandasだけインポートしておけばOKです

今回はpandasだけあれば十分なので、インポートしておきます。
ファイルの読込やデータ型の確認・変換方法などに用いていきます。

CSVファイルの読込(共通)

手元にあるcsvファイルを適当に選んでファイル読込を実行してみてください。
僕はKaggleコンペで持っていたデータサイズの大きいcsvファイルを使います。

約680万行のデータから構成される膨大なCSVファイルです。

カラムごとのデータ型を確認する

読み込んだファイルを使って、データ型を確認していきましょう。
確認する方法や好みは色々あるでしょうが、ここでは2つ簡単に紹介します。

一つ目は、`df.into()`を用いて読み込んだデータフレーム全体の雰囲気をつかむ方法です。

赤枠で囲った部分でカラムごとのデータ型が確認出来ます。

二つ目は、`df.dtypes`を用いて、カラムごとのデータ型だけを確認する方法です。

infoで得た情報と同じ結果が得られました。こっちの方がコンパクトな感じ。

今回扱っているデータフレームは4つの特徴量(カラム)を持っていて、そのうち2つが「int64」「float64」になっていることがわかりますね。今回はデータ容量の削減も視野に入れているので、この2つのカラムを中心に扱っていくことにします。

【pandas】データフレームから「数値型」の列を抽出する方法

データ型を変換する前に、一つ使える方法を紹介しておきましょう。
それは、特定のデータ型を抽出する方法です。

今回のデータフレームに限った話ではありませんが、どんなデータでも色んな特徴量(カラム)を持っていて、そのデータ型がすべて一緒ということは通常ありえないですよね。今回のように、特定のデータ型を対象に処理をしたいようなニーズもあるので、紹介しておきます。

特定のデータ型を指定する方法は`df.select_dtypes()`になります。
引数includeにデータ型を指定してあれば、対象となるカラムの抽出が可能です。

今回は、「数値型データ」である「int型」と「float型」のカラムを抽出しています。

`df.select_dtypes`で「int64」「float64」を抽出しています。

この方法を使いつつ、次からデータ型の変換作業をしていきます。

【pandas】数値型データ(int64/float64)を圧縮する方法

「int64」と「float64」を変換する

では実際に、「int64」と「float64」を対象にデータサイズを圧縮していきます。
と、その前に重要なポイントが一つ。

それは、「int64」や「float64」は「容量の大きいデータ型」であり、データを読み込んだ時はデフォルトでどのようなデータでも読み込めるように「int64」「float64」になっているということです。

numpyで紹介されているdata typeより引用

つまり、「int64」や「float64」が含まれている場合、データ容量を小さくする余地があるということです。今回僕が扱っているような膨大なcsvファイルに出くわした時には、容量の削減が必須になるので覚えておきましょう。

具体的にデータ型を変換する方法としては、`pd.to_numeric()`を使います。
これを用いることで、値を保持できる最小のデータ型に「数値」のままで変換してくれます。

赤枠部分がポイント

この処理をした結果、最終的にカラムのデータ型が変換されたのがわかるかと思います。
「int64」が「int16」に変換され、「float64」が「float32」に変換されていますね。

この変換処理によって、結果的にどのくらいデータサイズを圧縮できたのか確認していきます。

データ型変換後の「データサイズ」を確認する

データサイズの確認方法については以前の記事で紹介しているので、今一つわからない方はそちらを参考にしてみてください。

まずデータサイズを確認しておきましょう。

約208.8 MBあるのがわかります。

次に、先ほどの自作関数にデータサイズを確認するコードを付け加えます。

こちらも赤枠部分がポイント

その結果、データ型を変換したことで、データサイズが約65.2 MBも削減されたことがわかりますね。
このようにしてデータを軽くする前処理は、モデル構築してデータを訓練させるフェーズで活きてくるので、テクニックの一つとして抑えておきましょう。

さいごに

今回はpythonのpandasを用いて、データ型の確認方法や抽出・圧縮方法を中心に見てきました。

アルゴリズムの選択やモデル手法に目が行きがちですが、そもそも扱う対象データにも目を向けることが大切なので、前処理のテクニックとしても使ってみてください。

では今回はこのへんで。